fix(deps): update all dependencies #21

Open
kjuulh wants to merge 1 commits from renovate/all into main
Owner

This PR contains the following updates:

Package Type Update Change
anyhow dependencies patch 1.0.86 -> 1.0.95
axum dependencies patch 0.7.5 -> 0.7.9
chrono workspace.dependencies patch 0.4.38 -> 0.4.39
leptos dependencies minor 0.6.12 -> 0.7.2
leptos_axum dependencies minor 0.6.12 -> 0.7.2
leptos_dom dependencies minor 0.6.12 -> 0.7.2
leptos_meta dependencies minor 0.6.12 -> 0.7.2
leptos_router dependencies minor 0.6.12 -> 0.7.2
serde_json dependencies patch 1.0.120 -> 1.0.134
thiserror dependencies major 1 -> 2
tokio (source) dependencies minor 1.38.0 -> 1.42.0
tower dependencies minor 0.4.13 -> 0.5.0
tower-http dependencies minor 0.5.2 -> 0.6.0
uuid workspace.dependencies minor 1.9.1 -> 1.11.0

Release Notes

dtolnay/anyhow (anyhow)

v1.0.95

Compare Source

v1.0.94

Compare Source

  • Documentation improvements

v1.0.93

Compare Source

  • Update dev-dependencies to thiserror v2

v1.0.92

Compare Source

  • Support Rust 1.82's &raw const and &raw mut syntax inside ensure! (#​390)

v1.0.91

Compare Source

  • Ensure OUT_DIR is left with deterministic contents after build script execution (#​388)

v1.0.90

Compare Source

  • Documentation improvements

v1.0.89

Compare Source

  • Make anyhow::Error's UnwindSafe and RefUnwindSafe impl consistently available between versions of Rust newer and older than 1.72 (#​386)

v1.0.88

Compare Source

  • Documentation improvements

v1.0.87

Compare Source

  • Support more APIs, including Error::new and Error::chain, in no-std mode on Rust 1.81+ (#​383)
tokio-rs/axum (axum)

v0.7.9: axum - v0.7.9

Compare Source

  • fixed: Avoid setting content-length before middleware (#​3031)

v0.7.8: axum - v0.7.8

Compare Source

  • fixed: Skip SSE incompatible chars of serde_json::RawValue in Event::json_data (#​2992)
  • added: Add method_not_allowed_fallback to set a fallback when a path matches but there is no handler for the given HTTP method (#​2903)
  • added: Add MethodFilter::CONNECT, routing::connect[_service]
    and MethodRouter::connect[_service] (#​2961)
  • added: Add NoContent as a self-described shortcut for StatusCode::NO_CONTENT (#​2978)

v0.7.7: axum - v0.7.7

Compare Source

  • change: Remove manual tables of content from the documentation, since
    rustdoc now generates tables of content in the sidebar (#​2921)

v0.7.6: axum - v0.7.6

Compare Source

  • change: Avoid cloning Arc during deserialization of Path
  • added: axum::serve::Serve::tcp_nodelay and axum::serve::WithGracefulShutdown::tcp_nodelay (#​2653)
  • added: Router::has_routes function (#​2790)
  • change: Update tokio-tungstenite to 0.23 (#​2841)
  • added: Serve::local_addr and WithGracefulShutdown::local_addr functions (#​2881)
chronotope/chrono (chrono)

v0.4.39: 0.4.39

Compare Source

What's Changed

leptos-rs/leptos (leptos)

v0.7.2

Compare Source

If you're migrating from 0.6 to 0.7, please see the 0.7.0 release notes here.

This is a small patch release including a couple of bugfixes, importantly to the hydration of static text nodes on nightly.

What's Changed
New Contributors

Full Changelog: https://github.com/leptos-rs/leptos/compare/v0.7.1...v0.7.2

v0.7.1

Compare Source

If you're migrating from 0.6 to 0.7, please see the 0.7.0 release notes here.

This is just a small patch release, two weeks after the 0.7.0 release, geared toward fixing in bugs and filling in API holes since then.

What's Changed
New Contributors

Full Changelog: https://github.com/leptos-rs/leptos/compare/v0.7.0...v0.7.1

v0.7.0

Compare Source

At long last, as the culmination of more than a year of work, the 0.7 release has arrived!

0.7 is a nearly-complete rewrite of the internals of the framework, with the following goals:

  • maintain backwards compatibility for as much user application code as possible
  • improve the async story and fix Suspense edge cases and limitations
  • reduce WASM binary size
  • reduce HTML size
  • faster HTML rendering
  • allow signals to be sent across threads
  • enhance the ergonomics of things like prop spreading and accessing the HTML shell of your application
  • build the foundation for future work
    • reactive stores to make nested reactivity more pleasant
    • client-side routing with islands and state preservation
    • integrating with native UI toolkits to create desktop applications
Getting Started

0.7 works with the current cargo-leptos version. If you want to start exploring, there are starter templates for Axum and Actix. Each template is only three files. They show some of the boilerplate differences; for more details, see below.

Axum: cargo leptos new --git https://github.com/leptos-rs/start-axum (repo)
Actix: cargo leptos new --git https://github.com/leptos-rs/start-actix (repo)

New Features
.await on resources and async in <Suspense/>

Currently, create_resource allows you to synchronously access the value of some async data as either None or Some(_). However, it requires that you always access it this way. This has some drawbacks:

  • requires that you null-check every piece of data
  • makes it difficult for one resource to wait for another resource to load

Now, you can .await a resource, and you can use async blocks within a <Suspense/> via the Suspend wrapper, which makes it easier to chain two resources:

let user = Resource::new(|| (), |_| user_id());
let posts = Resource::new(
    // resources still manually track dependencies (necessary for hydration)
    move || user.get(),
    move |_| async move {
        // but you can .await a resource inside another
        let user = user.await?;
        get_posts(user).await
    },
);

view! {
    <Suspense>
        // you can `.await` resources to avoid dealing with the `None` state
        <p>"User ID: " {move || Suspend::new(async move {
            match user.await {
                // ...
            }
        })}</p>
        // or you can still use .get() to access resources in things like component props
        <For
            each=move || posts.get().and_then(Result::ok).unwrap_or_default()
            key=|post| post.id
            let:post
        >
            // ...
        </For>
    </Suspense>
}
Reference-counted signal types

One of the awkward edge cases of current Leptos is that our Copy arena for signals makes it possible to leak memory if you have a collection of nested signals and do not dispose them. (See 0.6 example.) 0.7 exposes ArcRwSignal, ArcReadSignal, etc., which are Clone but not Copy and manage their memory via reference counting, but can easily be converted into the copyable RwSignal etc. This makes working with nested signal correctly much easier, without sacrificing ergonomics meaningfully. See the 0.7 counters example for more.

.read() and .write() on signals

You can now use .read() and .write() to get immutable and mutable guards for the value of a signal, which will track/update appropriately: these work like .with() and .update() but without the extra closure, or like .get() but without cloning.

let long_vec = RwSignal::new(vec![42; 1000]);
let short_vec = RwSignal::new(vec![13; 2]);
// bad: clones both Vecs
let bad_len = move || long_vec.get().len() + short_vec.get().len();
// ugly: awkward nested syntax (or a macro)
let ugly_len = move || long_vec.with(|long| short_vec.with(|short| long.len() + short.len()));
// readable but doesn't clone
let good_len = move || long_vec.read().len() + short_vec.read().len();

These should always be used for short periods of time, not stored somewhere for longer-term use, just like any guard or lock, or you can cause deadlocks or panics.

Custom HTML shell

The HTML document "shell" for server rendering is currently hardcoded as part of the server integrations, limiting your ability to customize it. Now you simply include it as part of your application, which also means that you can customize things like teh <title> without needing to use leptos_meta.

pub fn shell(options: LeptosOptions) -> impl IntoView {
    view! {
        <!DOCTYPE html>
        <html lang="en">
            <head>
                <meta charset="utf-8"/>
                <meta name="viewport" content="width=device-width, initial-scale=1"/>
                <AutoReload options=options.clone() />
                <HydrationScripts options/>
                <MetaTags/>
            </head>
            <body>
                <App/>
            </body>
        </html>
    }
}
Enhanced attribute spreading

Any valid attribute can now be spread onto any component, allowing you to extend the UI created by a component however you want. This works through multiple components: for example, if you spread attributes onto a Suspense they will be passed through to whatever it returns.

// attributes that are spread onto a component will be applied to *all* elements returned as part of
// the component's view. to apply attributes to a subset of the component, pass them via a component prop
<ComponentThatTakesSpread
    // the class:, style:, prop:, on: syntaxes work just as they do on elements
    class:foo=true
    style:font-weight="bold"
    prop:cool=42
    on:click=move |_| alert("clicked ComponentThatTakesSpread")
    // props are passed as they usually are on components
    some_prop=13
    // to pass a plain HTML attribute, prefix it with attr:
    attr:id="foo"
    // or, if you want to include multiple attributes, rather than prefixing each with
    // attr:, you can separate them from component props with the spread {..}
    {..} // everything after this is treated as an HTML attribute
    title="ooh, a title!"
    {..spread_onto_component}
/>
Improved <ProtectedRoute/>

The current ProtectedRoute component is not great: it checks the condition once, synchronously, on navigation, and so it doesn't respond to changes and can't easily be used with async data. The new ProtectedRoute is reactive and uses Suspense so you can use resources or reactive data. There are examples of this now in router and ssr_modes_axum.

Two-way binding with bind: syntax

Two-way binding allows you to pass signals directly to inputs, rather than separately managing prop:value and on:input to sync the signals to the inputs.

// You can use `RwSignal`s
let is_awesome = RwSignal::new(true);
let sth = RwSignal::new("one".to_string());

// And you can use split signals
let (text, set_text) = signal("Hello world".to_string());

view! {
    // Use `bind:checked` and a `bool` signal for a checkbox
    <input type="checkbox" bind:checked=is_awesome />

    // Use `bind:group` and `String` for radio inputs
    <input type="radio" value="one" bind:group=sth />
    <input type="radio" value="two" bind:group=sth />
    <input type="radio" value="trhee" bind:group=sth />

    // Use `bind:value` and `String` for everything else
    <input type="text" bind:value=(text, set_text) />
    <textarea bind:value=(text, set_text) />
}
Reactive Stores

Stores are a new reactive primitive that allow you to reactively access deeply-nested fields in a struct without needing to create signals inside signals; rather, you can use plain data types, annotated with #[derive(Store)], and then access fields with reactive getters/setters.

Updating one subfield of a Store does not trigger effects only listening to a sibling field; listening to one field of a store does not track the sibling fields.

Stores are most useful for nested data structures, so a succinct example is difficult, but the stores example shows a complete use case.

Support the View Transition API for router animations

The Routes/FlatRoutes component now have a transition prop. Setting this to true will cause the router to use the browser's View Transition API during navigation. You can control animations during navigation using CSS classes. Which animations are used can be controlled using classes that the router will set on the <html> element: .routing-progress while navigating, .router-back during a back navigation, and .router-outlet-{n} for the depth of the outlet that is being changed (0 for the root page changing, 1 for the first Outlet, etc.) The router example uses this API.

Note: View Transitions are not supported on all browsers, but have been accepted as a standard and can be polyfilled. Using a built-in browser API is much better in the long term than our bug-prone and difficult-to-maintain custom implementation.

Breaking Changes
Imports

I'm reorganizing the module structure to improve docs and discoverability. We will still have a prelude that can be used for glob imports of almost everything that's currently exported from the root.

- use leptos::*;
+ use leptos::prelude::*;

Likewise, the router exposes things via leptos_router::components and leptos_router::hooks. rust-analyzer can help fix imports fairly well.

I'm hoping for feedback on the new module structure, whether it makes sense, and any improvements. I have not done too much work to sort through the reexports, look at how docs look, etc. yet.

Naming

We're migrating away from create_ naming toward more idiomatic Rust naming patterns:

  • create_signal to signal (like channel)
  • create_rw_signal to RwSignal::new()
  • etc.

I've left some of the current functions in, marked deprecated; others may have been missed, but should be easy to find via docs.rs.

Type erasure and view types

One of the major changes in this release is replacing the View enum with statically-typed views, which is where most of the binary size savings come from. If you need to branch and return one of several types, you can either use one of the Either enums in leptos::either, or you can use .into_any() to erase the type. Generally speaking the compiler can do its job better if you maintain more type information so the Either types should be preferred, but AnyView is not bad to use when needed.

// Either
if some_condition {
    Either::Left(view! { <p>"Foo"</p> })
} else {
    Either::Right("Bar")
}

// .into_any()
if some_condition {
    view! { <p>"Foo"</p> }.into_any()
} else {
    "Bar".into_any()
}
Boilerplate

There have been changes to the SSR and hydration boilerplate, which include (but aren't limited to)

  • get_configuration is sync (remove the .await)
  • you provide the app shell
  • .leptos_routes no longer takes LeptosOptions as an argument
  • use leptos::mount::hydrate_body (hydration) instead of leptos::mount::mount_to_body (which is now CSR-specific)
  • ... and probably more

Check the starter templates for a good setup.

Route definitions

The patterns for route definition have changed in several ways.

  • fallback is now a required prop on <Routes/>, rather than an optional prop on <Router/>
  • If you do not need nested routes, there is now a <FlatRoutes/> component that optimizes for this case
  • If you use nested routes, any routes with children should be <ParentRoute/>
  • Route paths are defined with static types, rather than strings: path="foo" becomes path=StaticSegment("foo"), and there are path=":id" becomes path=ParamSegment("id"), path="posts/:id" becomes path=(StaticSegment("posts"), ParamSegment("id")), and so on. There is a path!() macro that will do this for you: i.e., it will expand path!("/foo/:id") to path=(StaticSegment("foo"), ParamSegment("id")).

See the router and hackernews examples.

Send/Sync signals

By default, the data held in reactive primitives (signals, memos, effects) must be safe to send across threads. For non-threadsafe types, there is a "storage" generic on signal types. This defaults to SyncStorage, but you can optionally specify LocalStorage instead. Many APIs have _local() alternatives to enable this.

let (foo, bar) = signal("baz");
// error: `std::rc::Rc<&str>` cannot be shared between threads safely
// let (foo, bar) = signal(Rc::new("baz"));
let (foo, bar) = signal_local(Rc::new("baz"));
let qux = RwSignal::new("baz");
// error: `std::rc::Rc<&str>` cannot be shared between threads safely
// let qux = RwSignal::new(Rc::new("baz"));
let qux = RwSignal::new_local(Rc::new("baz"));
Custom IntoView and IntoAttribute implementations

If you currently have implementations of IntoView or IntoAttribute for custom data types, in a way that allows you to use them directly in the view, you should replace those with implementations of IntoRender and IntoAttributeValue, respectively. See this PR for examples.

Minor Breaking Changes
  • The Await component now takes a plain Future for its future prop rather than a Fn() -> Future, because it uses an optimized resource implementation
  • Views for arbitrary data types can now be added by implementing IntoRender rather than IntoView (see discussion in #​3062)
  • ParamsMap supports multiple values per key (which is supported by query strings), so the API now differentiates between inserting a new value for the same key and replacing the value, and between getting one value and getting all values for a key
  • The Stylesheet component no longer automatically works with the file hashing feature of cargo-leptos. You can use HashedStylesheet and pass it the appropriate props instead.
  • A number of components previously had props that existed only to pass an HTML attribute down to the element they create. (For example, an <A> component with a class prop that set the class on the <a> element.) These have been replaced by the new attribute-spreading API, to reduce complexity of the components themselves.
  • LeptosOptions now uses Arc<str> for its fields that were formerly String, so that it is less expensive to clone. In practice, this usually only means using &field or field.as_ref() in a few places that require &str, and so on.
  • experimental-islands feature renamed to islands
  • The batch function no longer exists: all updates now exhibit the batching behavior that was previously opt-in via batch
  • Recursive components now need to be boxed/type-erased, to allow the compiler to calculate the size of the view tree correctly. You can do this by simply adding .into_any() at the end of the component that you are going to use recursively.
  • Signal<T> no longer directly implements From<Fn() -> T>, which allows it to implement From<T> and therefore to be a more useful replacement for MaybeSignal<T>, for a prop that is "some T or any signal that returns T." To convert a closure into a Signal<_> you can call Signal::derive() explicitly. I know this makes the ergonomics of using the Signal<_> wrapper slightly worse, but it adds additional expressiveness by supporting plain T. (If you want to keep the old behavior, consider taking impl Fn() -> T as a prop if you are using nightly, where all the signals as well as closures implement this trait.)
Miscellaneous

I'm sure there are a bunch of small and larger changes I have not mentioned above. By the time of final release, help compiling a total list of breaking changes/migration guide would be much appreciated. At present, the starter templates and the examples directory in the PR can provide a pretty comprehensive set of changes.

On storing views in signals...

There's a pattern I've seen many use that I do not particularly like, but accidentally enabled through the way APIs happened to be (or needed to be) designed in Leptos 0.1-0.6, in which a user stores some view in a signal and then reads it somewhere else. This was possible because View needed to be Clone for internal reasons. Some users used this to create custom control flow: for example, you could create a global "header view" signal, and then update it from leaf components by storing a new view in it.

I'd consider this a bit of an antipattern, for a couple reasons:

  1. Ideally the application is designed so that data flows through the reactive graph, and the view is defined declaratively at the "leaves" of the application by components that take that reactive data
  2. More practically, DOM elements are Clone but in a surprising way: you can clone the reference to a DOM node, but that is a shallow, not a deep clone, and if you use it in multiple places by .get()ing the signal more than once, it will only appear in the last location

In the statically-typed view tree, views are not necessarily cloneable (including the AnyView type), so they can't easily be stored in a signal.

However, it is possible to achieve a similar goal by using a "reactive channel" pattern instead:

let count = RwSignal::new(0);

let trigger = ArcTrigger::new();
let (tx, rx) = std::sync::mpsc::channel();

let on_click = {
    let trigger = trigger.clone();
    move |_| {
        leptos::logging::log!("clicked");
        *count.write() += 1;
        tx.send(if *count.read() % 2 == 0 {
            view! { <p>"An even paragraph"</p> }.into_any()
        } else {
            view! { <span>"An odd span"</span> }.into_any()
        })
        .unwrap();
        trigger.trigger();
    }
};

view! {
    <div>
        <button on:click=on_click>"Update view"</button>
        {move || {
            trigger.track();
            rx.try_recv().unwrap_or_else(|_| view! {
                <p>"Click the button once to begin."</p>
            }.into_any())
        }}
    </div>
}

Send the views through a channel means they do not need to be cloned, and won't be used in more than once place (avoiding the edge cases of 2 above.) Each time you send a view through the channel, simply trigger the trigger.

v0.6.15

Compare Source

Belated release notes for 0.6.15. This was a quick patch release to incorporate two changes, one to improve rust-analyzer support and the other to switch from the unmaintained proc-macro-error to proc-macro-error2 per RUSTSEC.

What's Changed
  • 0.6] fix: Rust-Analyzer hover information / redundant spans by [@&#8203;chrisp60](https://github.com/chrisp60) in https://github.com/leptos-rs/leptos/pull/2840
    
  • leptos 0.6: Switch to proc-macro-error2 to address unmaintained security advisory. by @​azriel91 in https://github.com/leptos-rs/leptos/pull/2935

Full Changelog: https://github.com/leptos-rs/leptos/compare/v0.6.14...v0.6.15

v0.6.14

Compare Source

Hello everyone, The biggest change in this update is to handle wasm-bindgen 0.2.93 and web_sys 0.3.70 Thanks to @​sabify and @​maccesch for those PRs. As always, let us know if there's issues.

What's Changed
New Contributors

Full Changelog: https://github.com/leptos-rs/leptos/compare/v0.6.13...v0.6.14

v0.6.13

Compare Source

This release mostly includes a series of small bugfixes (see below), but also includes a fix for the annoying issues we'd been having with rust-analyzer (#​2527).

What's Changed
New Contributors

Full Changelog: https://github.com/leptos-rs/leptos/compare/v0.6.12...v0.6.13

serde-rs/json (serde_json)

v1.0.134

Compare Source

  • Add RawValue associated constants for literal null, true, false (#​1221, thanks @​bheylin)

v1.0.133

Compare Source

  • Implement From<[T; N]> for serde_json::Value (#​1215)

v1.0.132

Compare Source

  • Improve binary size and compile time for JSON array and JSON object deserialization by about 50% (#​1205)
  • Improve performance of JSON array and JSON object deserialization by about 8% (#​1206)

v1.0.131

Compare Source

  • Implement Deserializer and IntoDeserializer for Map<String, Value> and &Map<String, Value> (#​1135, thanks @​swlynch99)

v1.0.130

Compare Source

  • Support converting and deserializing Number from i128 and u128 (#​1141, thanks @​druide)

v1.0.129

Compare Source

v1.0.128

Compare Source

v1.0.127

Compare Source

v1.0.126

Compare Source

  • Improve string parsing on targets that use 32-bit pointers but also have fast 64-bit integer arithmetic, such as aarch64-unknown-linux-gnu_ilp32 and x86_64-unknown-linux-gnux32 (#​1182, thanks @​CryZe)

v1.0.125

Compare Source

v1.0.124

Compare Source

v1.0.123

Compare Source

v1.0.122

Compare Source

  • Support using json! in no-std crates (#​1166)

v1.0.121

Compare Source

dtolnay/thiserror (thiserror)

v2.0.9

Compare Source

  • Work around missing_inline_in_public_items clippy restriction being triggered in macro-generated code (#​404)

v2.0.8

Compare Source

  • Improve support for macro-generated derive(Error) call sites (#​399)

v2.0.7

Compare Source

  • Work around conflict with #[deny(clippy::allow_attributes)] (#​397, thanks @​zertosh)

v2.0.6

Compare Source

  • Suppress deprecation warning on generated From impls (#​396)

v2.0.5

Compare Source

  • Prevent deprecation warning on generated impl for deprecated type (#​394)

v2.0.4

Compare Source

v2.0.3

Compare Source

  • Support the same Path field being repeated in both Debug and Display representation in error message (#​383)
  • Improve error message when a format trait used in error message is not implemented by some field (#​384)

v2.0.2

Compare Source

  • Fix hang on invalid input inside #[error(...)] attribute (#​382)

v2.0.1

Compare Source

  • Support errors that contain a dynamically sized final field (#​375)
  • Improve inference of trait bounds for fields that are interpolated multiple times in an error message (#​377)

v2.0.0

Compare Source

Breaking changes

  • Referencing keyword-named fields by a raw identifier like {r#type} inside a format string is no longer accepted; simply use the unraw name like {type} (#​347)

    This aligns thiserror with the standard library's formatting macros, which gained support for implicit argument capture later than the release of this feature in thiserror 1.x.

    #[derive(Error, Debug)]
    #[error("... {type} ...")]  // Before: {r#type}
    pub struct Error {
        pub r#type: Type,
    }
    
  • Trait bounds are no longer inferred on fields whose value is shadowed by an explicit named argument in a format message (#​345)

    // Before: impl<T: Octal> Display for Error<T>
    // After: impl<T> Display for Error<T>
    #[derive(Error, Debug)]
    #[error("{thing:o}", thing = "...")]
    pub struct Error<T> {
        thing: T,
    }
    
  • Tuple structs and tuple variants can no longer use numerical {0} {1} access at the same time as supplying extra positional arguments for a format message, as this makes it ambiguous whether the number refers to a tuple field vs a different positional arg (#​354)

    #[derive(Error, Debug)]
    #[error("ambiguous: {0} {}", $N)]
    //                  ^^^ Not allowed, use #[error("... {0} {n}", n = $N)]
    pub struct TupleError(i32);
    
  • Code containing invocations of thiserror's derive(Error) must now have a direct dependency on the thiserror crate regardless of the error data structure's contents (#​368, #​369, #​370, #​372)

Features

  • Support disabling thiserror's standard library dependency by disabling the default "std" Cargo feature: thiserror = { version = "2", default-features = false } (#​373)

  • Support using r#source as field name to opt out of a field named "source" being treated as an error's Error::source() (#​350)

    #[derive(Error, Debug)]
    #[error("{source} ==> {destination}")]
    pub struct Error {
        r#source: char,
        destination: char,
    }
    
    let error = Error { source: 'S', destination: 'D' };
    
  • Infinite recursion in a generated Display impl now produces an unconditional_recursion warning (#​359)

    #[derive(Error, Debug)]
    #[error("??? {self}")]
    pub struct Error;
    
  • A new attribute #[error(fmt = path::to::myfmt)] can be used to write formatting logic for an enum variant out-of-line (#​367)

    #[derive(Error, Debug)]
    pub enum Error {
        #[error(fmt = demo_fmt)]
        Demo { code: u16, message: Option<String> },
    }
    
    fn demo_fmt(code: &u16, message: &Option<String>, formatter: &mut fmt::Formatter) -> fmt::Result {
        write!(formatter, "{code}")?;
        if let Some(msg) = message {
            write!(formatter, " - {msg}")?;
        }
        Ok(())
    }
    
  • Enums with an enum-level format message are now able to have individual variants that are transparent to supersede the enum-level message (#​366)

    #[derive(Error, Debug)]
    #[error("my error {0}")]
    pub enum Error {
        Json(#[from] serde_json::Error),
        Yaml(#[from] serde_yaml::Error),
        #[error(transparent)]
        Other(#[from] anyhow::Error),
    }
    

v1.0.69

Compare Source

v1.0.68

Compare Source

  • Handle incomplete expressions more robustly in format arguments, such as while code is being typed (#​341, #​344)

v1.0.67

Compare Source

v1.0.66

Compare Source

  • Improve compile error on malformed format attribute (#​327)

v1.0.65

Compare Source

  • Ensure OUT_DIR is left with deterministic contents after build script execution (#​325)

v1.0.64

Compare Source

v1.0.63

Compare Source

  • Documentation improvements

v1.0.62

Compare Source

  • Support referring to nested tuple struct fields inside #[error("…", …)] attribute (#​309)
tokio-rs/tokio (tokio)

v1.42.0: Tokio v1.42.0

Compare Source

1.42.0 (Dec 3rd, 2024)

Added
  • io: add AsyncFd::{try_io, try_io_mut} (#​6967)
Fixed
  • io: avoid ptr->ref->ptr roundtrip in RegistrationSet (#​6929)
  • runtime: do not defer yield_now inside block_in_place (#​6999)
Changes
  • io: simplify io readiness logic (#​6966)
Documented
  • net: fix docs for tokio::net::unix::{pid_t, gid_t, uid_t} (#​6791)
  • time: fix a typo in Instant docs (#​6982)

v1.41.1: Tokio v1.41.1

Compare Source

1.41.1 (Nov 7th, 2024)

Fixed
  • metrics: fix bug with wrong number of buckets for the histogram (#​6957)
  • net: display net requirement for net::UdpSocket in docs (#​6938)
  • net: fix typo in TcpStream internal comment (#​6944)

v1.41.0: Tokio v1.41.0

Compare Source

1.41.0 (Oct 22th, 2024)

Added
Added (unstable)
  • metrics: add H2 Histogram option to improve histogram granularity (#​6897)
  • metrics: rename some histogram apis (#​6924)
  • runtime: add LocalRuntime (#​6808)
Changed
  • runtime: box futures larger than 16k on release mode (#​6826)
  • sync: add #[must_use] to Notified (#​6828)
  • sync: make watch cooperative (#​6846)
  • sync: make broadcast::Receiver cooperative (#​6870)
  • task: add task size to tracing instrumentation (#​6881)
  • wasm: enable cfg_fs for wasi target (#​6822)
Fixed
  • net: fix regression of abstract socket path in unix socket (#​6838)
Documented
  • io: recommend OwnedFd with AsyncFd (#​6821)
  • io: document cancel safety of AsyncFd methods (#​6890)
  • macros: render more comprehensible documentation for join and try_join (#​6814, #​6841)
  • net: fix swapped examples for TcpSocket::set_nodelay and TcpSocket::nodelay (#​6840)
  • sync: document runtime compatibility (#​6833)

v1.40.0: Tokio v1.40.0

Compare Source

1.40.0 (August 30th, 2024)

Added
  • io: add util::SimplexStream (#​6589)
  • process: stabilize Command::process_group (#​6731)
  • sync: add {TrySendError,SendTimeoutError}::into_inner (#​6755)
  • task: add JoinSet::join_all (#​6784)
Added (unstable)
  • runtime: add Builder::{on_task_spawn, on_task_terminate} (#​6742)
Changed
  • io: use vectored io for write_all_buf when possible (#​6724)
  • runtime: prevent niche-optimization to avoid triggering miri (#​6744)
  • sync: mark mpsc types as UnwindSafe (#​6783)
  • sync,time: make Sleep and BatchSemaphore instrumentation explicit roots (#​6727)
  • task: use NonZeroU64 for task::Id (#​6733)
  • task: include panic message when printing JoinError (#​6753)
  • task: add #[must_use] to JoinHandle::abort_handle (#​6762)
  • time: eliminate timer wheel allocations (#​6779)
Documented
  • docs: clarify that [build] section doesn't go in Cargo.toml (#​6728)
  • io: clarify zero remaining capacity case (#​6790)
  • macros: improve documentation for select! (#​6774)
  • sync: document mpsc channel allocation behavior (#​6773)

v1.39.3: Tokio v1.39.3

Compare Source

1.39.3 (August 17th, 2024)

This release fixes a regression where the unix socket api stopped accepting the abstract socket namespace. (#​6772)

v1.39.2: Tokio v1.39.2

Compare Source

1.39.2 (July 27th, 2024)

This release fixes a regression where the select! macro stopped accepting expressions that make use of temporary lifetime extension. (#​6722)

v1.39.1: Tokio v1.39.1

Compare Source

1.39.1 (July 23rd, 2024)

This release reverts "time: avoid traversing entries in the time wheel twice" because it contains a bug. (#​6715)

v1.39.0: Tokio v1.39.0

Compare Source

1.39.0 (July 23rd, 2024)

  • This release bumps the MSRV to 1.70. (#​6645)
  • This release upgrades to mio v1. (#​6635)
  • This release upgrades to windows-sys v0.52 (#​6154)
Added
  • io: implement AsyncSeek for Empty (#​6663)
  • metrics: stabilize num_alive_tasks (#​6619, #​6667)
  • process: add Command::as_std_mut (#​6608)
  • sync: add watch::Sender::same_channel (#​6637)
  • sync: add {Receiver,UnboundedReceiver}::{sender_strong_count,sender_weak_count} (#​6661)
  • sync: implement Default for watch::Sender (#​6626)
  • task: implement Clone for AbortHandle (#​6621)
  • task: stabilize consume_budget (#​6622)
Changed
  • io: improve panic message of ReadBuf::put_slice() (#​6629)
  • io: read during write in copy_bidirectional and copy (#​6532)
  • runtime: replace num_cpus with available_parallelism (#​6709)
  • task: avoid stack overflow when passing large future to block_on (#​6692)
  • time: avoid traversing entries in the time wheel twice (#​6584)
  • time: support IntoFuture with timeout (#​6666)
  • macros: support IntoFuture with join! and select! (#​6710)
Fixed
  • docs: fix docsrs builds with the fs feature enabled (#​6585)
  • io: only use short-read optimization on known-to-be-compatible platforms (#​6668)
  • time: fix overflow panic when using large durations with Interval (#​6612)
Added (unstable)
  • macros: allow unhandled_panic behavior for #[tokio::main] and #[tokio::test] (#​6593)
  • metrics: add spawned_tasks_count (#​6114)
  • metrics: add worker_park_unpark_count (#​6696)
  • metrics: add worker thread id (#​6695)
Documented
  • io: update tokio::io::stdout documentation (#​6674)
  • macros: typo fix in join.rs and try_join.rs (#​6641)
  • runtime: fix typo in unhandled_panic (#​6660)
  • task: document behavior of JoinSet::try_join_next when all tasks are running (#​6671)

v1.38.1: Tokio v1.38.1

Compare Source

1.38.1 (July 16th, 2024)

This release fixes the bug identified as (#​6682), which caused timers not
to fire when they should.

Fixed
  • time: update wake_up while holding all the locks of sharded time wheels (#​6683)
tower-rs/tower (tower)

v0.5.2: tower 0.5.2

Compare Source

Added
  • util: Add BoxCloneSyncService which is a Clone + Send + Sync boxed Service (#​777)
  • util: Add BoxCloneSyncServiceLayer which is a Clone + Send + Sync boxed Layer (#​802)

v0.5.1: tower 0.5.1

Compare Source

  • Fix minimum version of tower-layer dependency (#​787)

v0.5.0: tower 0.5.0

Compare Source

Fixed
  • util: BoxService is now Sync (#​702)
Changed
  • util: Removed deprecated ServiceExt::ready_and method and ReadyAnd
    future (#​652)
  • retry: Breaking Change retry::Policy::retry now accepts &mut Req and &mut Res instead of the previous mutable versions. This
    increases the flexibility of the retry policy. To update, update your method signature to include mut for both parameters. (#​584)
  • retry: Breaking Change Change Policy to accept &mut self (#​681)
  • retry: Add generic backoff utilities (#​685)
  • retry: Add Budget trait. This allows end-users to implement their own budget and bucket implementations. (#​703)
  • reconnect: Breaking Change Remove unused generic parameter from Reconnect::new (#​755)
  • ready-cache: Allow iteration over ready services (#​700)
  • discover: Implement Clone for Change (#​701)
  • util: Add a BoxCloneServiceLayer (#​708)
  • rng: use a simpler random 2-sampler (#​716)
  • filter: Derive Clone for AsyncFilterLayer (#​731)
  • general: Update IndexMap (#​741)
  • MSRV: Increase MSRV to 1.63.0 (#​741)
tower-rs/tower-http (tower-http)

v0.6.2

Compare Source

Changed:
  • CompressionBody<B> now propagates B's size hint in its http_body::Body
    implementation, if compression is disabled (#​531)
    • this allows a content-length to be included in an HTTP message with this
      body for those cases
New Contributors

Full Changelog: https://github.com/tower-rs/tower-http/compare/tower-http-0.6.1...tower-http-0.6.2

v0.6.1: v0.6.1

Compare Source

Fixed
  • decompression: reuse scratch buffer to significantly reduce allocations and improve performance (#​521)
New Contributors

v0.6.0: v0.6.0

Compare Source

Changed:
  • body module is disabled except for catch-panic, decompression-*, fs, or limit features (BREAKING) (#​477)
  • Update to tower 0.5 (#​503)
Fixed
  • fs: Precompression of static files now supports files without a file extension (#​507)
uuid-rs/uuid (uuid)

v1.11.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/1.10.0...1.11.0

v1.10.0

Compare Source

Deprecations

This release deprecates and renames the following functions:

  • Builder::from_rfc4122_timestamp -> Builder::from_gregorian_timestamp
  • Builder::from_sorted_rfc4122_timestamp -> Builder::from_sorted_gregorian_timestamp
  • Timestamp::from_rfc4122 -> Timestamp::from_gregorian
  • Timestamp::to_rfc4122 -> Timestamp::to_gregorian

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/1.9.1...1.10.0


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [anyhow](https://github.com/dtolnay/anyhow) | dependencies | patch | `1.0.86` -> `1.0.95` | | [axum](https://github.com/tokio-rs/axum) | dependencies | patch | `0.7.5` -> `0.7.9` | | [chrono](https://github.com/chronotope/chrono) | workspace.dependencies | patch | `0.4.38` -> `0.4.39` | | [leptos](https://github.com/leptos-rs/leptos) | dependencies | minor | `0.6.12` -> `0.7.2` | | [leptos_axum](https://github.com/leptos-rs/leptos) | dependencies | minor | `0.6.12` -> `0.7.2` | | [leptos_dom](https://github.com/leptos-rs/leptos) | dependencies | minor | `0.6.12` -> `0.7.2` | | [leptos_meta](https://github.com/leptos-rs/leptos) | dependencies | minor | `0.6.12` -> `0.7.2` | | [leptos_router](https://github.com/leptos-rs/leptos) | dependencies | minor | `0.6.12` -> `0.7.2` | | [serde_json](https://github.com/serde-rs/json) | dependencies | patch | `1.0.120` -> `1.0.134` | | [thiserror](https://github.com/dtolnay/thiserror) | dependencies | major | `1` -> `2` | | [tokio](https://tokio.rs) ([source](https://github.com/tokio-rs/tokio)) | dependencies | minor | `1.38.0` -> `1.42.0` | | [tower](https://github.com/tower-rs/tower) | dependencies | minor | `0.4.13` -> `0.5.0` | | [tower-http](https://github.com/tower-rs/tower-http) | dependencies | minor | `0.5.2` -> `0.6.0` | | [uuid](https://github.com/uuid-rs/uuid) | workspace.dependencies | minor | `1.9.1` -> `1.11.0` | --- ### Release Notes <details> <summary>dtolnay/anyhow (anyhow)</summary> ### [`v1.0.95`](https://github.com/dtolnay/anyhow/releases/tag/1.0.95) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.94...1.0.95) - Add [`Error::from_boxed`](https://docs.rs/anyhow/1/anyhow/struct.Error.html#method.from_boxed) ([#&#8203;401](https://github.com/dtolnay/anyhow/issues/401), [#&#8203;402](https://github.com/dtolnay/anyhow/issues/402)) ### [`v1.0.94`](https://github.com/dtolnay/anyhow/releases/tag/1.0.94) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.93...1.0.94) - Documentation improvements ### [`v1.0.93`](https://github.com/dtolnay/anyhow/releases/tag/1.0.93) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.92...1.0.93) - Update dev-dependencies to `thiserror` v2 ### [`v1.0.92`](https://github.com/dtolnay/anyhow/releases/tag/1.0.92) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.91...1.0.92) - Support Rust 1.82's `&raw const` and `&raw mut` syntax inside `ensure!` ([#&#8203;390](https://github.com/dtolnay/anyhow/issues/390)) ### [`v1.0.91`](https://github.com/dtolnay/anyhow/releases/tag/1.0.91) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.90...1.0.91) - Ensure OUT_DIR is left with deterministic contents after build script execution ([#&#8203;388](https://github.com/dtolnay/anyhow/issues/388)) ### [`v1.0.90`](https://github.com/dtolnay/anyhow/releases/tag/1.0.90) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.89...1.0.90) - Documentation improvements ### [`v1.0.89`](https://github.com/dtolnay/anyhow/releases/tag/1.0.89) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.88...1.0.89) - Make anyhow::Error's `UnwindSafe` and `RefUnwindSafe` impl consistently available between versions of Rust newer and older than 1.72 ([#&#8203;386](https://github.com/dtolnay/anyhow/issues/386)) ### [`v1.0.88`](https://github.com/dtolnay/anyhow/releases/tag/1.0.88) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.87...1.0.88) - Documentation improvements ### [`v1.0.87`](https://github.com/dtolnay/anyhow/releases/tag/1.0.87) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.86...1.0.87) - Support more APIs, including `Error::new` and `Error::chain`, in no-std mode on Rust 1.81+ ([#&#8203;383](https://github.com/dtolnay/anyhow/issues/383)) </details> <details> <summary>tokio-rs/axum (axum)</summary> ### [`v0.7.9`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.7.9): axum - v0.7.9 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.7.8...axum-v0.7.9) - **fixed:** Avoid setting content-length before middleware ([#&#8203;3031]) [#&#8203;3031]: https://github.com/tokio-rs/axum/pull/3031 ### [`v0.7.8`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.7.8): axum - v0.7.8 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.7.7...axum-v0.7.8) - **fixed:** Skip SSE incompatible chars of `serde_json::RawValue` in `Event::json_data` ([#&#8203;2992]) - **added:** Add `method_not_allowed_fallback` to set a fallback when a path matches but there is no handler for the given HTTP method ([#&#8203;2903]) - **added:** Add `MethodFilter::CONNECT`, `routing::connect[_service]` and `MethodRouter::connect[_service]` ([#&#8203;2961]) - **added:** Add `NoContent` as a self-described shortcut for `StatusCode::NO_CONTENT` ([#&#8203;2978]) [#&#8203;2903]: https://github.com/tokio-rs/axum/pull/2903 [#&#8203;2961]: https://github.com/tokio-rs/axum/pull/2961 [#&#8203;2978]: https://github.com/tokio-rs/axum/pull/2978 [#&#8203;2992]: https://github.com/tokio-rs/axum/pull/2992 ### [`v0.7.7`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.7.7): axum - v0.7.7 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.7.6...axum-v0.7.7) - **change**: Remove manual tables of content from the documentation, since rustdoc now generates tables of content in the sidebar ([#&#8203;2921]) [#&#8203;2921]: https://github.com/tokio-rs/axum/pull/2921 ### [`v0.7.6`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.7.6): axum - v0.7.6 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.7.5...axum-v0.7.6) - **change:** Avoid cloning `Arc` during deserialization of `Path` - **added:** `axum::serve::Serve::tcp_nodelay` and `axum::serve::WithGracefulShutdown::tcp_nodelay` ([#&#8203;2653]) - **added:** `Router::has_routes` function ([#&#8203;2790]) - **change:** Update tokio-tungstenite to 0.23 ([#&#8203;2841]) - **added:** `Serve::local_addr` and `WithGracefulShutdown::local_addr` functions ([#&#8203;2881]) [#&#8203;2653]: https://github.com/tokio-rs/axum/pull/2653 [#&#8203;2790]: https://github.com/tokio-rs/axum/pull/2790 [#&#8203;2841]: https://github.com/tokio-rs/axum/pull/2841 [#&#8203;2881]: https://github.com/tokio-rs/axum/pull/2881 </details> <details> <summary>chronotope/chrono (chrono)</summary> ### [`v0.4.39`](https://github.com/chronotope/chrono/releases/tag/v0.4.39): 0.4.39 [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.38...v0.4.39) #### What's Changed - [#&#8203;1577](https://github.com/chronotope/chrono/issues/1577): Changed years_since documentation to match its implementation by [@&#8203;Taxalo](https://github.com/Taxalo) in https://github.com/chronotope/chrono/pull/1578 - Remove obsolete weird feature guard by [@&#8203;djc](https://github.com/djc) in https://github.com/chronotope/chrono/pull/1582 - Fix format::strftime docs link by [@&#8203;frederikhors](https://github.com/frederikhors) in https://github.com/chronotope/chrono/pull/1581 - Fix micros (optional) limit in and_hms_micro_opt by [@&#8203;qrilka](https://github.com/qrilka) in https://github.com/chronotope/chrono/pull/1584 - Update windows-bindgen requirement from 0.56 to 0.57 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/chronotope/chrono/pull/1589 - native/date: Improve DelayedFormat doc re Panics by [@&#8203;behnam-oneschema](https://github.com/behnam-oneschema) in https://github.com/chronotope/chrono/pull/1590 - Fix typo in rustdoc of `from_timestamp_nanos()` by [@&#8203;sgoll](https://github.com/sgoll) in https://github.com/chronotope/chrono/pull/1591 - Update windows-bindgen requirement from 0.57 to 0.58 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/chronotope/chrono/pull/1594 - docs: document century cutoff for %y by [@&#8203;MarcoGorelli](https://github.com/MarcoGorelli) in https://github.com/chronotope/chrono/pull/1598 - Checked `NaiveWeek` methods by [@&#8203;bragov4ik](https://github.com/bragov4ik) in https://github.com/chronotope/chrono/pull/1600 - Impl serde::Serialize and serde::Deserialize for TimeDelta by [@&#8203;Awpteamoose](https://github.com/Awpteamoose) in https://github.com/chronotope/chrono/pull/1599 - Derive `PartialEq`,`Eq`,`Hash`,`Copy` and `Clone` on `NaiveWeek` by [@&#8203;DSeeLP](https://github.com/DSeeLP) in https://github.com/chronotope/chrono/pull/1618 - Support ohos tzdata since ver.oh35 by [@&#8203;MirageLyu](https://github.com/MirageLyu) in https://github.com/chronotope/chrono/pull/1613 - Use Formatter::pad (instead of write_str) for Weekdays by [@&#8203;horazont](https://github.com/horazont) in https://github.com/chronotope/chrono/pull/1621 - Fix typos by [@&#8203;szepeviktor](https://github.com/szepeviktor) in https://github.com/chronotope/chrono/pull/1623 - Fix comment. by [@&#8203;khuey](https://github.com/khuey) in https://github.com/chronotope/chrono/pull/1624 - chore: add `#[inline]` to `num_days` by [@&#8203;CommanderStorm](https://github.com/CommanderStorm) in https://github.com/chronotope/chrono/pull/1627 - fix typo by [@&#8203;futreall](https://github.com/futreall) in https://github.com/chronotope/chrono/pull/1633 - Update mod.rs by [@&#8203;donatik27](https://github.com/donatik27) in https://github.com/chronotope/chrono/pull/1638 </details> <details> <summary>leptos-rs/leptos (leptos)</summary> ### [`v0.7.2`](https://github.com/leptos-rs/leptos/releases/tag/v0.7.2) [Compare Source](https://github.com/leptos-rs/leptos/compare/v0.7.1...v0.7.2) **If you're migrating from 0.6 to 0.7, please see the 0.7.0 release notes [here](https://github.com/leptos-rs/leptos/releases/tag/v0.7.0).** This is a small patch release including a couple of bugfixes, importantly to the hydration of static text nodes on `nightly`. ##### What's Changed - Update elements.rs to include `popovertarget` and `popovertargetaction` for the `<button>` element by [@&#8203;Figments](https://github.com/Figments) in https://github.com/leptos-rs/leptos/pull/3379 - fix(ci): missing glib in ci by [@&#8203;sabify](https://github.com/sabify) in https://github.com/leptos-rs/leptos/pull/3376 - docs: showcase let syntax in for_loop by [@&#8203;purung](https://github.com/purung) in https://github.com/leptos-rs/leptos/pull/3383 - Add `From<ArcStore<T>>` for `Store<T, S>` by [@&#8203;mscofield0](https://github.com/mscofield0) in https://github.com/leptos-rs/leptos/pull/3389 - fix: correct span for `let:` syntax (closes [#&#8203;3387](https://github.com/leptos-rs/leptos/issues/3387)) by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/3391 - fix(ci): add missing glib for semver checks by [@&#8203;sabify](https://github.com/sabify) in https://github.com/leptos-rs/leptos/pull/3393 - fix: correct hydration position for static text nodes in `nightly` (closes [#&#8203;3395](https://github.com/leptos-rs/leptos/issues/3395)) by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/3396 ##### New Contributors - [@&#8203;Figments](https://github.com/Figments) made their first contribution in https://github.com/leptos-rs/leptos/pull/3379 **Full Changelog**: https://github.com/leptos-rs/leptos/compare/v0.7.1...v0.7.2 ### [`v0.7.1`](https://github.com/leptos-rs/leptos/releases/tag/v0.7.1) [Compare Source](https://github.com/leptos-rs/leptos/compare/v0.7.0...v0.7.1) **If you're migrating from 0.6 to 0.7, please see the 0.7.0 release notes [here](https://github.com/leptos-rs/leptos/releases/tag/v0.7.0).** This is just a small patch release, two weeks after the 0.7.0 release, geared toward fixing in bugs and filling in API holes since then. ##### What's Changed - fix: prevent multiple location headers on redirect ([#&#8203;3298](https://github.com/leptos-rs/leptos/issues/3298)) by [@&#8203;veigaribo](https://github.com/veigaribo) in https://github.com/leptos-rs/leptos/pull/3311 - Remove the Send requirement on a local Action's future (fixes [#&#8203;3309](https://github.com/leptos-rs/leptos/issues/3309)) by [@&#8203;rjmac](https://github.com/rjmac) in https://github.com/leptos-rs/leptos/pull/3310 - fix: wait for blocking resources before sending subsequent chunks (closes [#&#8203;3280](https://github.com/leptos-rs/leptos/issues/3280)) by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/3282 - chore: fix typo by [@&#8203;mahdi739](https://github.com/mahdi739) in https://github.com/leptos-rs/leptos/pull/3320 - chore(deps): bump postcard from 1.0.10 to 1.1.1 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/leptos-rs/leptos/pull/3319 - chore(deps): bump wasm-bindgen-futures from 0.4.45 to 0.4.47 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/leptos-rs/leptos/pull/3318 - chore(deps): bump js-sys from 0.3.72 to 0.3.74 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/leptos-rs/leptos/pull/3306 - chore(deps): bump bytes from 1.8.0 to 1.9.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/leptos-rs/leptos/pull/3297 - chore(deps): bump url from 2.5.3 to 2.5.4 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/leptos-rs/leptos/pull/3291 - chore(deps): bump tracing from 0.1.40 to 0.1.41 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/leptos-rs/leptos/pull/3294 - chore(deps): bump wasm-bindgen from 0.2.95 to 0.2.97 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/leptos-rs/leptos/pull/3317 - chore(deps): bump rkyv from 0.8.8 to 0.8.9 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/leptos-rs/leptos/pull/3290 - chore(deps): bump hyper from 1.5.0 to 1.5.1 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/leptos-rs/leptos/pull/3265 - chore(deps): bump rustls from 0.23.16 to 0.23.18 in the cargo group across 1 directory by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/leptos-rs/leptos/pull/3289 - fix: correctly swap `Vec<_>` in the DOM (closes [#&#8203;3321](https://github.com/leptos-rs/leptos/issues/3321)) by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/3324 - fix: correctly support `!Send` Actix APIs in server functions by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/3326 - fix: correctly mount/unmount hydrated static text nodes in nightly mode (closes [#&#8203;3334](https://github.com/leptos-rs/leptos/issues/3334)) by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/3336 - feat: add `scroll` prop to `<A/>` component to control scrolling behavior (closes [#&#8203;2666](https://github.com/leptos-rs/leptos/issues/2666)) by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/3333 - Increase number of branch arms for `either!` macro by [@&#8203;bicarlsen](https://github.com/bicarlsen) in https://github.com/leptos-rs/leptos/pull/3337 - Fix a doc typo and one broken intra-doc link by [@&#8203;FreezyLemon](https://github.com/FreezyLemon) in https://github.com/leptos-rs/leptos/pull/3341 - fix: nested keyed fields in stores (closes [#&#8203;3338](https://github.com/leptos-rs/leptos/issues/3338)) by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/3344 - fix: don't try to hydrate inside `<noscript>` (closes [#&#8203;3360](https://github.com/leptos-rs/leptos/issues/3360)) by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/3363 - feat : implemented actix multipart by [@&#8203;sutantodadang](https://github.com/sutantodadang) in https://github.com/leptos-rs/leptos/pull/3361 - Minor typo fix in `ToChildren::to_children` docs. by [@&#8203;bicarlsen](https://github.com/bicarlsen) in https://github.com/leptos-rs/leptos/pull/3352 - TypedChildrenFn impl Clone trait by [@&#8203;redforks](https://github.com/redforks) in https://github.com/leptos-rs/leptos/pull/3349 - Opt in locations in release mode with --cfg locations by [@&#8203;zakstucke](https://github.com/zakstucke) in https://github.com/leptos-rs/leptos/pull/3281 - fix docs by [@&#8203;mscofield0](https://github.com/mscofield0) in https://github.com/leptos-rs/leptos/pull/3350 - Referential context: with_context and update_context by [@&#8203;zakstucke](https://github.com/zakstucke) in https://github.com/leptos-rs/leptos/pull/3279 - fix: Implement PatchField for `usize` by [@&#8203;marcuswhybrow](https://github.com/marcuswhybrow) in https://github.com/leptos-rs/leptos/pull/3346 - Fix memo check behavior by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/3356 - feat: AttributeInterceptor component to allow passing attributes to other elements by [@&#8203;paul-hansen](https://github.com/paul-hansen) in https://github.com/leptos-rs/leptos/pull/3340 - docs: clarify `Signal::derive()` behavior by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/3351 - fix: rebuilding of `InertElement` (closes [#&#8203;3368](https://github.com/leptos-rs/leptos/issues/3368)) by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/3370 - chore: reenable `cargo-semver-checks` on PRs by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/3375 - Implement signal.into_inner() by [@&#8203;stefnotch](https://github.com/stefnotch) in https://github.com/leptos-rs/leptos/pull/3343 - Implement IntoSplitSignal for Field. by [@&#8203;fiadliel](https://github.com/fiadliel) in https://github.com/leptos-rs/leptos/pull/3364 ##### New Contributors - [@&#8203;veigaribo](https://github.com/veigaribo) made their first contribution in https://github.com/leptos-rs/leptos/pull/3311 - [@&#8203;FreezyLemon](https://github.com/FreezyLemon) made their first contribution in https://github.com/leptos-rs/leptos/pull/3341 - [@&#8203;sutantodadang](https://github.com/sutantodadang) made their first contribution in https://github.com/leptos-rs/leptos/pull/3361 - [@&#8203;redforks](https://github.com/redforks) made their first contribution in https://github.com/leptos-rs/leptos/pull/3349 - [@&#8203;mscofield0](https://github.com/mscofield0) made their first contribution in https://github.com/leptos-rs/leptos/pull/3350 - [@&#8203;marcuswhybrow](https://github.com/marcuswhybrow) made their first contribution in https://github.com/leptos-rs/leptos/pull/3346 - [@&#8203;fiadliel](https://github.com/fiadliel) made their first contribution in https://github.com/leptos-rs/leptos/pull/3364 **Full Changelog**: https://github.com/leptos-rs/leptos/compare/v0.7.0...v0.7.1 ### [`v0.7.0`](https://github.com/leptos-rs/leptos/releases/tag/v0.7.0) [Compare Source](https://github.com/leptos-rs/leptos/compare/v0.6.15...v0.7.0) At long last, as the culmination of more than a year of work, the 0.7 release has arrived! 0.7 is a nearly-complete rewrite of the internals of the framework, with the following goals: - maintain backwards compatibility for as much user application code as possible - improve the async story and fix Suspense edge cases and limitations - reduce WASM binary size - reduce HTML size - faster HTML rendering - allow signals to be sent across threads - enhance the ergonomics of things like prop spreading and accessing the HTML shell of your application - build the foundation for future work - reactive stores to make nested reactivity more pleasant - client-side routing with islands and state preservation - integrating with native UI toolkits to create desktop applications ##### Getting Started 0.7 works with the current `cargo-leptos` version. If you want to start exploring, there are starter templates for Axum and Actix. Each template is only three files. They show some of the boilerplate differences; for more details, see below. Axum: `cargo leptos new --git https://github.com/leptos-rs/start-axum` ([repo](https://github.com/leptos-rs/start-axum)) Actix: `cargo leptos new --git https://github.com/leptos-rs/start-actix` ([repo](https://github.com/leptos-rs/start-actix)) ##### New Features ##### `.await` on resources and `async` in `<Suspense/>` Currently, `create_resource` allows you to synchronously access the value of some async data as either `None` or `Some(_)`. However, it requires that you *always* access it this way. This has some drawbacks: - requires that you null-check every piece of data - makes it difficult for one resource to wait for another resource to load Now, you can `.await` a resource, and you can use `async` blocks within a `<Suspense/>` via the `Suspend` wrapper, which makes it easier to chain two resources: ```rust let user = Resource::new(|| (), |_| user_id()); let posts = Resource::new( // resources still manually track dependencies (necessary for hydration) move || user.get(), move |_| async move { // but you can .await a resource inside another let user = user.await?; get_posts(user).await }, ); view! { <Suspense> // you can `.await` resources to avoid dealing with the `None` state <p>"User ID: " {move || Suspend::new(async move { match user.await { // ... } })}</p> // or you can still use .get() to access resources in things like component props <For each=move || posts.get().and_then(Result::ok).unwrap_or_default() key=|post| post.id let:post > // ... </For> </Suspense> } ``` ##### Reference-counted signal types One of the awkward edge cases of current Leptos is that our `Copy` arena for signals makes it possible to leak memory if you have a collection of nested signals and do not dispose them. ([See 0.6 example](https://github.com/leptos-rs/leptos/blob/c53fc67d382616f84b6d28b663a3d24fb56debf9/examples/counters/src/lib.rs#L92-L102).) 0.7 exposes `ArcRwSignal`, `ArcReadSignal`, etc., which are `Clone` but not `Copy` and manage their memory via reference counting, but can easily be converted into the copyable `RwSignal` etc. This makes working with nested signal correctly much easier, without sacrificing ergonomics meaningfully. See the [0.7 `counters` example](https://github.com/leptos-rs/leptos/blob/leptos\_0.7/examples/counters/src/lib.rs) for more. ##### `.read()` and `.write()` on signals You can now use `.read()` and `.write()` to get immutable and mutable guards for the value of a signal, which will track/update appropriately: these work like `.with()` and `.update()` but without the extra closure, or like `.get()` but without cloning. ```rust let long_vec = RwSignal::new(vec![42; 1000]); let short_vec = RwSignal::new(vec![13; 2]); // bad: clones both Vecs let bad_len = move || long_vec.get().len() + short_vec.get().len(); // ugly: awkward nested syntax (or a macro) let ugly_len = move || long_vec.with(|long| short_vec.with(|short| long.len() + short.len())); // readable but doesn't clone let good_len = move || long_vec.read().len() + short_vec.read().len(); ``` > These should always be used for short periods of time, not stored somewhere for longer-term use, just like any guard or lock, or you can cause deadlocks or panics. ##### Custom HTML shell The HTML document "shell" for server rendering is currently hardcoded as part of the server integrations, limiting your ability to customize it. Now you simply include it as part of your application, which also means that you can customize things like teh `<title>` without needing to use `leptos_meta`. ```rust pub fn shell(options: LeptosOptions) -> impl IntoView { view! { <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <AutoReload options=options.clone() /> <HydrationScripts options/> <MetaTags/> </head> <body> <App/> </body> </html> } } ``` ##### Enhanced attribute spreading Any valid attribute can now be spread onto any component, allowing you to extend the UI created by a component however you want. This works through multiple components: for example, if you spread attributes onto a `Suspense` they will be passed through to whatever it returns. ```xml // attributes that are spread onto a component will be applied to *all* elements returned as part of // the component's view. to apply attributes to a subset of the component, pass them via a component prop <ComponentThatTakesSpread // the class:, style:, prop:, on: syntaxes work just as they do on elements class:foo=true style:font-weight="bold" prop:cool=42 on:click=move |_| alert("clicked ComponentThatTakesSpread") // props are passed as they usually are on components some_prop=13 // to pass a plain HTML attribute, prefix it with attr: attr:id="foo" // or, if you want to include multiple attributes, rather than prefixing each with // attr:, you can separate them from component props with the spread {..} {..} // everything after this is treated as an HTML attribute title="ooh, a title!" {..spread_onto_component} /> ``` ##### Improved `<ProtectedRoute/>` The current `ProtectedRoute` component is not great: it checks the condition once, synchronously, on navigation, and so it doesn't respond to changes and can't easily be used with async data. The new `ProtectedRoute` is reactive and uses Suspense so you can use resources or reactive data. There are examples of this now in [`router`](https://github.com/leptos-rs/leptos/tree/leptos\_0.7/examples/router) and [`ssr_modes_axum`](https://github.com/leptos-rs/leptos/tree/leptos\_0.7/examples/ssr_modes_axum). ##### Two-way binding with `bind:` syntax Two-way binding allows you to pass signals directly to inputs, rather than separately managing `prop:value` and `on:input` to sync the signals to the inputs. ```rust // You can use `RwSignal`s let is_awesome = RwSignal::new(true); let sth = RwSignal::new("one".to_string()); // And you can use split signals let (text, set_text) = signal("Hello world".to_string()); view! { // Use `bind:checked` and a `bool` signal for a checkbox <input type="checkbox" bind:checked=is_awesome /> // Use `bind:group` and `String` for radio inputs <input type="radio" value="one" bind:group=sth /> <input type="radio" value="two" bind:group=sth /> <input type="radio" value="trhee" bind:group=sth /> // Use `bind:value` and `String` for everything else <input type="text" bind:value=(text, set_text) /> <textarea bind:value=(text, set_text) /> } ``` ##### Reactive Stores Stores are a new reactive primitive that allow you to reactively access deeply-nested fields in a struct without needing to create signals inside signals; rather, you can use plain data types, annotated with `#[derive(Store)]`, and then access fields with reactive getters/setters. Updating one subfield of a `Store` does not trigger effects only listening to a sibling field; listening to one field of a store does not track the sibling fields. Stores are most useful for nested data structures, so a succinct example is difficult, but the [`stores`](https://github.com/leptos-rs/leptos/blob/main/examples/stores/src/lib.rs) example shows a complete use case. ##### Support the View Transition API for router animations The `Routes`/`FlatRoutes` component now have a `transition` prop. Setting this to `true` will cause the router to use the browser's View Transition API during navigation. You can control animations during navigation using CSS classes. Which animations are used can be controlled using classes that the router will set on the `<html>` element: `.routing-progress` while navigating, `.router-back` during a back navigation, and `.router-outlet-{n}` for the depth of the outlet that is being changed (`0` for the root page changing, `1` for the first `Outlet`, etc.) The [`router` example](https://github.com/leptos-rs/leptos/tree/main/examples/router) uses this API. > Note: View Transitions are not supported on all browsers, but have been accepted as a standard and can be [polyfilled](https://github.com/demarketed/view-transitions-polyfill). Using a built-in browser API is much better in the long term than our bug-prone and difficult-to-maintain custom implementation. ##### Breaking Changes ##### Imports I'm reorganizing the module structure to improve docs and discoverability. We will still have a prelude that can be used for glob imports of almost everything that's currently exported from the root. ```diff - use leptos::*; + use leptos::prelude::*; ``` Likewise, the router exposes things via `leptos_router::components` and `leptos_router::hooks`. rust-analyzer can help fix imports fairly well. I'm hoping for feedback on the new module structure, whether it makes sense, and any improvements. I have not done too much work to sort through the reexports, look at how docs look, etc. yet. ##### Naming We're migrating away from `create_` naming toward more idiomatic Rust naming patterns: - `create_signal` to `signal` (like `channel`) - `create_rw_signal` to `RwSignal::new()` - etc. I've left some of the current functions in, marked deprecated; others may have been missed, but should be easy to find [via docs.rs](https://docs.rs/leptos/0.7.0-alpha/leptos). ##### Type erasure and view types One of the major changes in this release is replacing the `View` enum with statically-typed views, which is where most of the binary size savings come from. If you need to branch and return one of several types, you can either use one of the `Either` enums in `leptos::either`, or you can use `.into_any()` to erase the type. Generally speaking the compiler can do its job better if you maintain more type information so the `Either` types should be preferred, but `AnyView` is not bad to use when needed. ```rust // Either if some_condition { Either::Left(view! { <p>"Foo"</p> }) } else { Either::Right("Bar") } // .into_any() if some_condition { view! { <p>"Foo"</p> }.into_any() } else { "Bar".into_any() } ``` ##### Boilerplate There have been changes to the SSR and hydration boilerplate, which include (but aren't limited to) - `get_configuration` is sync (remove the `.await`) - you provide the app shell - `.leptos_routes` no longer takes `LeptosOptions` as an argument - use `leptos::mount::hydrate_body` (hydration) instead of `leptos::mount::mount_to_body` (which is now CSR-specific) - ... and probably more Check the starter templates for a good setup. ##### Route definitions The patterns for route definition have changed in several ways. - `fallback` is now a required prop on `<Routes/>`, rather than an optional prop on `<Router/>` - If you do not need nested routes, there is now a `<FlatRoutes/>` component that optimizes for this case - If you use nested routes, any routes with children should be `<ParentRoute/>` - Route paths are defined with static types, rather than strings: `path="foo"` becomes `path=StaticSegment("foo")`, and there are `path=":id"` becomes `path=ParamSegment("id")`, `path="posts/:id"` becomes `path=(StaticSegment("posts"), ParamSegment("id"))`, and so on. There is a `path!()` macro that will do this for you: i.e., it will expand `path!("/foo/:id")` to `path=(StaticSegment("foo"), ParamSegment("id"))`. See the `router` and `hackernews` examples. ##### `Send`/`Sync` signals By default, the data held in reactive primitives (signals, memos, effects) must be safe to send across threads. For non-threadsafe types, there is a "storage" generic on signal types. This defaults to `SyncStorage`, but you can optionally specify `LocalStorage` instead. Many APIs have `_local()` alternatives to enable this. ```rust let (foo, bar) = signal("baz"); // error: `std::rc::Rc<&str>` cannot be shared between threads safely // let (foo, bar) = signal(Rc::new("baz")); let (foo, bar) = signal_local(Rc::new("baz")); let qux = RwSignal::new("baz"); // error: `std::rc::Rc<&str>` cannot be shared between threads safely // let qux = RwSignal::new(Rc::new("baz")); let qux = RwSignal::new_local(Rc::new("baz")); ``` ##### Custom `IntoView` and `IntoAttribute` implementations If you currently have implementations of `IntoView` or `IntoAttribute` for custom data types, in a way that allows you to use them directly in the view, you should replace those with implementations of `IntoRender` and `IntoAttributeValue`, respectively. See [this PR](https://github.com/leptos-rs/leptos/pull/3062) for examples. ##### Minor Breaking Changes - The `Await` component now takes a plain `Future` for its `future` prop rather than a `Fn() -> Future`, because it uses an optimized resource implementation - Views for arbitrary data types can now be added by implementing `IntoRender` rather than `IntoView` (see discussion in [#&#8203;3062](https://github.com/leptos-rs/leptos/issues/3062)) - `ParamsMap` supports multiple values per key (which is supported by query strings), so the API now differentiates between inserting a new value for the same key and replacing the value, and between getting one value and getting all values for a key - The `Stylesheet` component no longer automatically works with the file hashing feature of `cargo-leptos`. You can use `HashedStylesheet` and pass it the appropriate props instead. - A number of components previously had props that existed only to pass an HTML attribute down to the element they create. (For example, an `<A>` component with a `class` prop that set the `class` on the `<a>` element.) These have been replaced by the new attribute-spreading API, to reduce complexity of the components themselves. - `LeptosOptions` now uses `Arc<str>` for its fields that were formerly `String`, so that it is less expensive to clone. In practice, this usually only means using `&field` or `field.as_ref()` in a few places that require `&str`, and so on. - `experimental-islands` feature renamed to `islands` - The `batch` function no longer exists: all updates now exhibit the batching behavior that was previously opt-in via `batch` - Recursive components now need to be boxed/type-erased, to allow the compiler to calculate the size of the view tree correctly. You can do this by simply adding `.into_any()` at the end of the component that you are going to use recursively. - `Signal<T>` no longer directly implements `From<Fn() -> T>`, which allows it to implement `From<T>` and therefore to be a more useful replacement for `MaybeSignal<T>`, for a prop that is "some `T` or any signal that returns `T`." To convert a closure into a `Signal<_>` you can call `Signal::derive()` explicitly. I know this makes the ergonomics of using the `Signal<_>` wrapper slightly worse, but it adds additional expressiveness by supporting plain `T`. (If you want to keep the old behavior, consider taking `impl Fn() -> T` as a prop if you are using nightly, where all the signals as well as closures implement this trait.) ##### Miscellaneous I'm sure there are a bunch of small and larger changes I have not mentioned above. By the time of final release, help compiling a total list of breaking changes/migration guide would be much appreciated. At present, the starter templates and the `examples` directory in the PR can provide a pretty comprehensive set of changes. ##### On storing views in signals... There's a pattern I've seen many use that I do not particularly like, but accidentally enabled through the way APIs happened to be (or needed to be) designed in Leptos 0.1-0.6, in which a user stores some view in a signal and then reads it somewhere else. This was possible because `View` needed to be `Clone` for internal reasons. Some users used this to create custom control flow: for example, you could create a global "header view" signal, and then update it from leaf components by storing a new view in it. I'd consider this a bit of an antipattern, for a couple reasons: 1. Ideally the application is designed so that data flows through the reactive graph, and the view is defined declaratively at the "leaves" of the application by components that take that reactive data 2. More practically, DOM elements are `Clone` but in a surprising way: you can clone the reference to a DOM node, but that is a shallow, not a deep clone, and if you use it in multiple places by `.get()`ing the signal more than once, it will only appear in the last location In the statically-typed view tree, views are not necessarily cloneable (including the `AnyView` type), so they can't easily be stored in a signal. However, it is possible to achieve a similar goal by using a "reactive channel" pattern instead: ```rust let count = RwSignal::new(0); let trigger = ArcTrigger::new(); let (tx, rx) = std::sync::mpsc::channel(); let on_click = { let trigger = trigger.clone(); move |_| { leptos::logging::log!("clicked"); *count.write() += 1; tx.send(if *count.read() % 2 == 0 { view! { <p>"An even paragraph"</p> }.into_any() } else { view! { <span>"An odd span"</span> }.into_any() }) .unwrap(); trigger.trigger(); } }; view! { <div> <button on:click=on_click>"Update view"</button> {move || { trigger.track(); rx.try_recv().unwrap_or_else(|_| view! { <p>"Click the button once to begin."</p> }.into_any()) }} </div> } ``` Send the views through a channel means they do not need to be cloned, and won't be used in more than once place (avoiding the edge cases of 2 above.) Each time you send a view through the channel, simply trigger the trigger. ### [`v0.6.15`](https://github.com/leptos-rs/leptos/releases/tag/v0.6.15) [Compare Source](https://github.com/leptos-rs/leptos/compare/v0.6.14...v0.6.15) Belated release notes for 0.6.15. This was a quick patch release to incorporate two changes, one to improve rust-analyzer support and the other to switch from the unmaintained `proc-macro-error` to `proc-macro-error2` per [RUSTSEC](https://rustsec.org/advisories/RUSTSEC-2024-0370.html). ##### What's Changed - \[0.6] fix: Rust-Analyzer hover information / redundant spans by [@&#8203;chrisp60](https://github.com/chrisp60) in https://github.com/leptos-rs/leptos/pull/2840 - leptos 0.6: Switch to `proc-macro-error2` to address unmaintained security advisory. by [@&#8203;azriel91](https://github.com/azriel91) in https://github.com/leptos-rs/leptos/pull/2935 **Full Changelog**: https://github.com/leptos-rs/leptos/compare/v0.6.14...v0.6.15 ### [`v0.6.14`](https://github.com/leptos-rs/leptos/releases/tag/v0.6.14) [Compare Source](https://github.com/leptos-rs/leptos/compare/v0.6.13...v0.6.14) Hello everyone, The biggest change in this update is to handle wasm-bindgen 0.2.93 and web_sys 0.3.70 Thanks to [@&#8203;sabify](https://github.com/sabify) and [@&#8203;maccesch](https://github.com/maccesch) for those PRs. As always, let us know if there's issues. ##### What's Changed - fix: untrack children in Portal to avoid re-triggering it accidentally (closes [#&#8203;2693](https://github.com/leptos-rs/leptos/issues/2693)) by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/2713 - chore: fix some comments by [@&#8203;renshuncui](https://github.com/renshuncui) in https://github.com/leptos-rs/leptos/pull/2712 - Mnior: As of rust1.80: cargo clippy now reports doc indentation issues. by [@&#8203;martinfrances107](https://github.com/martinfrances107) in https://github.com/leptos-rs/leptos/pull/2728 - chore(ci): update nightly by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/2755 - chore: update gloo-net and reqwest to http 1.0 (closes [#&#8203;2688](https://github.com/leptos-rs/leptos/issues/2688)) (leptos 0.6) by [@&#8203;sabify](https://github.com/sabify) in https://github.com/leptos-rs/leptos/pull/2751 - fix: update `wasm-bindgen` and `web-sys` for leptos 0.6 by [@&#8203;sabify](https://github.com/sabify) in https://github.com/leptos-rs/leptos/pull/2830 ##### New Contributors - [@&#8203;renshuncui](https://github.com/renshuncui) made their first contribution in https://github.com/leptos-rs/leptos/pull/2712 **Full Changelog**: https://github.com/leptos-rs/leptos/compare/v0.6.13...v0.6.14 ### [`v0.6.13`](https://github.com/leptos-rs/leptos/releases/tag/v0.6.13) [Compare Source](https://github.com/leptos-rs/leptos/compare/v0.6.12...v0.6.13) This release mostly includes a series of small bugfixes (see below), but also includes a fix for the annoying issues we'd been having with rust-analyzer ([#&#8203;2527](https://github.com/leptos-rs/leptos/issues/2527)). ##### What's Changed - Fix failing CI by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/2611 - fix: extract dyn_bindings impl into DynBindings trait by [@&#8203;Upbolt](https://github.com/Upbolt) in https://github.com/leptos-rs/leptos/pull/2619 - docs: remove duplicated code block in example of For by [@&#8203;tversteeg](https://github.com/tversteeg) in https://github.com/leptos-rs/leptos/pull/2622 - fix: try_with should not panic on disposed resources (closes [#&#8203;2620](https://github.com/leptos-rs/leptos/issues/2620)) by [@&#8203;otopetrik](https://github.com/otopetrik) in https://github.com/leptos-rs/leptos/pull/2621 - fix `rkyv` feature interaction with Axum integration by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/2631 - style: simplify string interpolation by [@&#8203;hamirmahal](https://github.com/hamirmahal) in https://github.com/leptos-rs/leptos/pull/2626 - Russian book branch: Translating titles of sections in SUMMARY by [@&#8203;solweo](https://github.com/solweo) in https://github.com/leptos-rs/leptos/pull/2542 - docs: Add docs for `ToChildren` by [@&#8203;spencewenski](https://github.com/spencewenski) in https://github.com/leptos-rs/leptos/pull/2643 - book_ru: SUMMARY.md by [@&#8203;kakserpom](https://github.com/kakserpom) in https://github.com/leptos-rs/leptos/pull/2648 - fix: ensure everything is disposed of consistently by [@&#8203;Giovanni-Tably](https://github.com/Giovanni-Tably) in https://github.com/leptos-rs/leptos/pull/2639 - Server function streaming with serializable types by [@&#8203;ealmloff](https://github.com/ealmloff) in https://github.com/leptos-rs/leptos/pull/2623 - fix: do not unescape / and other route characters when following a link by [@&#8203;gbj](https://github.com/gbj) in https://github.com/leptos-rs/leptos/pull/2651 - feat: Add Compression to Hacker News w/ Islands Example by [@&#8203;Th3Whit3Wolf](https://github.com/Th3Whit3Wolf) in https://github.com/leptos-rs/leptos/pull/2613 - docs: generate link to definition by [@&#8203;chrisp60](https://github.com/chrisp60) in https://github.com/leptos-rs/leptos/pull/2656 - Fix of [#&#8203;2652](https://github.com/leptos-rs/leptos/issues/2652) by [@&#8203;domwst](https://github.com/domwst) in https://github.com/leptos-rs/leptos/pull/2653 - Fixed several warnings in check pipeline by [@&#8203;domwst](https://github.com/domwst) in https://github.com/leptos-rs/leptos/pull/2654 - add impl IntoStyle for Style by [@&#8203;alfatm](https://github.com/alfatm) in https://github.com/leptos-rs/leptos/pull/2682 - Remove unnecessary 'static lifetime from argument in Style::as_value_string() by [@&#8203;alfatm](https://github.com/alfatm) in https://github.com/leptos-rs/leptos/pull/2683 - fix: move lint rules outside of quote_spanned by [@&#8203;Ar4ys](https://github.com/Ar4ys) in https://github.com/leptos-rs/leptos/pull/2709 ##### New Contributors - [@&#8203;otopetrik](https://github.com/otopetrik) made their first contribution in https://github.com/leptos-rs/leptos/pull/2621 - [@&#8203;hamirmahal](https://github.com/hamirmahal) made their first contribution in https://github.com/leptos-rs/leptos/pull/2626 - [@&#8203;spencewenski](https://github.com/spencewenski) made their first contribution in https://github.com/leptos-rs/leptos/pull/2643 - [@&#8203;kakserpom](https://github.com/kakserpom) made their first contribution in https://github.com/leptos-rs/leptos/pull/2648 - [@&#8203;Th3Whit3Wolf](https://github.com/Th3Whit3Wolf) made their first contribution in https://github.com/leptos-rs/leptos/pull/2613 - [@&#8203;domwst](https://github.com/domwst) made their first contribution in https://github.com/leptos-rs/leptos/pull/2653 - [@&#8203;alfatm](https://github.com/alfatm) made their first contribution in https://github.com/leptos-rs/leptos/pull/2682 **Full Changelog**: https://github.com/leptos-rs/leptos/compare/v0.6.12...v0.6.13 </details> <details> <summary>serde-rs/json (serde_json)</summary> ### [`v1.0.134`](https://github.com/serde-rs/json/releases/tag/v1.0.134) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.133...v1.0.134) - Add `RawValue` associated constants for literal `null`, `true`, `false` ([#&#8203;1221](https://github.com/serde-rs/json/issues/1221), thanks [@&#8203;bheylin](https://github.com/bheylin)) ### [`v1.0.133`](https://github.com/serde-rs/json/releases/tag/v1.0.133) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.132...v1.0.133) - Implement From<\[T; N]> for serde_json::Value ([#&#8203;1215](https://github.com/serde-rs/json/issues/1215)) ### [`v1.0.132`](https://github.com/serde-rs/json/releases/tag/v1.0.132) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.131...v1.0.132) - Improve binary size and compile time for JSON array and JSON object deserialization by about 50% ([#&#8203;1205](https://github.com/serde-rs/json/issues/1205)) - Improve performance of JSON array and JSON object deserialization by about 8% ([#&#8203;1206](https://github.com/serde-rs/json/issues/1206)) ### [`v1.0.131`](https://github.com/serde-rs/json/releases/tag/v1.0.131) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.130...v1.0.131) - Implement Deserializer and IntoDeserializer for `Map<String, Value>` and `&Map<String, Value>` ([#&#8203;1135](https://github.com/serde-rs/json/issues/1135), thanks [@&#8203;swlynch99](https://github.com/swlynch99)) ### [`v1.0.130`](https://github.com/serde-rs/json/releases/tag/v1.0.130) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.129...v1.0.130) - Support converting and deserializing `Number` from i128 and u128 ([#&#8203;1141](https://github.com/serde-rs/json/issues/1141), thanks [@&#8203;druide](https://github.com/druide)) ### [`v1.0.129`](https://github.com/serde-rs/json/releases/tag/v1.0.129) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.128...v1.0.129) - Add [`serde_json::Map::sort_keys`](https://docs.rs/serde_json/1/serde_json/struct.Map.html#method.sort_keys) and [`serde_json::Value::sort_all_objects`](https://docs.rs/serde_json/1/serde_json/enum.Value.html#method.sort_all_objects) ([#&#8203;1199](https://github.com/serde-rs/json/issues/1199)) ### [`v1.0.128`](https://github.com/serde-rs/json/releases/tag/v1.0.128) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.127...v1.0.128) - Support serializing maps containing 128-bit integer keys to serde_json::Value ([#&#8203;1188](https://github.com/serde-rs/json/issues/1188), thanks [@&#8203;Mrreadiness](https://github.com/Mrreadiness)) ### [`v1.0.127`](https://github.com/serde-rs/json/releases/tag/v1.0.127) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.126...v1.0.127) - Add more removal methods to OccupiedEntry ([#&#8203;1179](https://github.com/serde-rs/json/issues/1179), thanks [@&#8203;GREsau](https://github.com/GREsau)) ### [`v1.0.126`](https://github.com/serde-rs/json/releases/tag/v1.0.126) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.125...v1.0.126) - Improve string parsing on targets that use 32-bit pointers but also have fast 64-bit integer arithmetic, such as aarch64-unknown-linux-gnu_ilp32 and x86\_64-unknown-linux-gnux32 ([#&#8203;1182](https://github.com/serde-rs/json/issues/1182), thanks [@&#8203;CryZe](https://github.com/CryZe)) ### [`v1.0.125`](https://github.com/serde-rs/json/releases/tag/v1.0.125) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.124...v1.0.125) - Speed up \uXXXX parsing and improve handling of unpaired surrogates when deserializing to bytes ([#&#8203;1172](https://github.com/serde-rs/json/issues/1172), [#&#8203;1175](https://github.com/serde-rs/json/issues/1175), thanks [@&#8203;purplesyringa](https://github.com/purplesyringa)) ### [`v1.0.124`](https://github.com/serde-rs/json/releases/tag/v1.0.124) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.123...v1.0.124) - Fix a bug in processing string escapes in big-endian architectures ([#&#8203;1173](https://github.com/serde-rs/json/issues/1173), thanks [@&#8203;purplesyringa](https://github.com/purplesyringa)) ### [`v1.0.123`](https://github.com/serde-rs/json/releases/tag/v1.0.123) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.122...v1.0.123) - Optimize string parsing by applying SIMD-within-a-register: 30.3% improvement on [twitter.json](https://github.com/miloyip/nativejson-benchmark/blob/v1.0.0/data/twitter.json) from 613 MB/s to 799 MB/s ([#&#8203;1161](https://github.com/serde-rs/json/issues/1161), thanks [@&#8203;purplesyringa](https://github.com/purplesyringa)) ### [`v1.0.122`](https://github.com/serde-rs/json/releases/tag/v1.0.122) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.121...v1.0.122) - Support using `json!` in no-std crates ([#&#8203;1166](https://github.com/serde-rs/json/issues/1166)) ### [`v1.0.121`](https://github.com/serde-rs/json/releases/tag/v1.0.121) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.120...v1.0.121) - Optimize position search in error path ([#&#8203;1160](https://github.com/serde-rs/json/issues/1160), thanks [@&#8203;purplesyringa](https://github.com/purplesyringa)) </details> <details> <summary>dtolnay/thiserror (thiserror)</summary> ### [`v2.0.9`](https://github.com/dtolnay/thiserror/releases/tag/2.0.9) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.8...2.0.9) - Work around `missing_inline_in_public_items` clippy restriction being triggered in macro-generated code ([#&#8203;404](https://github.com/dtolnay/thiserror/issues/404)) ### [`v2.0.8`](https://github.com/dtolnay/thiserror/releases/tag/2.0.8) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.7...2.0.8) - Improve support for macro-generated `derive(Error)` call sites ([#&#8203;399](https://github.com/dtolnay/thiserror/issues/399)) ### [`v2.0.7`](https://github.com/dtolnay/thiserror/releases/tag/2.0.7) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.6...2.0.7) - Work around conflict with #\[deny(clippy::allow_attributes)] ([#&#8203;397](https://github.com/dtolnay/thiserror/issues/397), thanks [@&#8203;zertosh](https://github.com/zertosh)) ### [`v2.0.6`](https://github.com/dtolnay/thiserror/releases/tag/2.0.6) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.5...2.0.6) - Suppress deprecation warning on generated From impls ([#&#8203;396](https://github.com/dtolnay/thiserror/issues/396)) ### [`v2.0.5`](https://github.com/dtolnay/thiserror/releases/tag/2.0.5) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.4...2.0.5) - Prevent deprecation warning on generated impl for deprecated type ([#&#8203;394](https://github.com/dtolnay/thiserror/issues/394)) ### [`v2.0.4`](https://github.com/dtolnay/thiserror/releases/tag/2.0.4) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.3...2.0.4) - Eliminate needless_lifetimes clippy lint in generated `From` impls ([#&#8203;391](https://github.com/dtolnay/thiserror/issues/391), thanks [@&#8203;matt-phylum](https://github.com/matt-phylum)) ### [`v2.0.3`](https://github.com/dtolnay/thiserror/releases/tag/2.0.3) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.2...2.0.3) - Support the same Path field being repeated in both Debug and Display representation in error message ([#&#8203;383](https://github.com/dtolnay/thiserror/issues/383)) - Improve error message when a format trait used in error message is not implemented by some field ([#&#8203;384](https://github.com/dtolnay/thiserror/issues/384)) ### [`v2.0.2`](https://github.com/dtolnay/thiserror/releases/tag/2.0.2) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.1...2.0.2) - Fix hang on invalid input inside #\[error(...)] attribute ([#&#8203;382](https://github.com/dtolnay/thiserror/issues/382)) ### [`v2.0.1`](https://github.com/dtolnay/thiserror/releases/tag/2.0.1) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.0...2.0.1) - Support errors that contain a dynamically sized final field ([#&#8203;375](https://github.com/dtolnay/thiserror/issues/375)) - Improve inference of trait bounds for fields that are interpolated multiple times in an error message ([#&#8203;377](https://github.com/dtolnay/thiserror/issues/377)) ### [`v2.0.0`](https://github.com/dtolnay/thiserror/releases/tag/2.0.0) [Compare Source](https://github.com/dtolnay/thiserror/compare/1.0.69...2.0.0) #### Breaking changes - Referencing keyword-named fields by a raw identifier like `{r#type}` inside a format string is no longer accepted; simply use the unraw name like `{type}` ([#&#8203;347](https://github.com/dtolnay/thiserror/issues/347)) This aligns thiserror with the standard library's formatting macros, which gained support for implicit argument capture later than the release of this feature in thiserror 1.x. ```rust #[derive(Error, Debug)] #[error("... {type} ...")] // Before: {r#type} pub struct Error { pub r#type: Type, } ``` - Trait bounds are no longer inferred on fields whose value is shadowed by an explicit named argument in a format message ([#&#8203;345](https://github.com/dtolnay/thiserror/issues/345)) ```rust // Before: impl<T: Octal> Display for Error<T> // After: impl<T> Display for Error<T> #[derive(Error, Debug)] #[error("{thing:o}", thing = "...")] pub struct Error<T> { thing: T, } ``` - Tuple structs and tuple variants can no longer use numerical `{0}` `{1}` access at the same time as supplying extra positional arguments for a format message, as this makes it ambiguous whether the number refers to a tuple field vs a different positional arg ([#&#8203;354](https://github.com/dtolnay/thiserror/issues/354)) ```rust #[derive(Error, Debug)] #[error("ambiguous: {0} {}", $N)] // ^^^ Not allowed, use #[error("... {0} {n}", n = $N)] pub struct TupleError(i32); ``` - Code containing invocations of thiserror's `derive(Error)` must now have a direct dependency on the `thiserror` crate regardless of the error data structure's contents ([#&#8203;368](https://github.com/dtolnay/thiserror/issues/368), [#&#8203;369](https://github.com/dtolnay/thiserror/issues/369), [#&#8203;370](https://github.com/dtolnay/thiserror/issues/370), [#&#8203;372](https://github.com/dtolnay/thiserror/issues/372)) #### Features - Support disabling thiserror's standard library dependency by disabling the default "std" Cargo feature: `thiserror = { version = "2", default-features = false }` ([#&#8203;373](https://github.com/dtolnay/thiserror/issues/373)) - Support using `r#source` as field name to opt out of a field named "source" being treated as an error's `Error::source()` ([#&#8203;350](https://github.com/dtolnay/thiserror/issues/350)) ```rust #[derive(Error, Debug)] #[error("{source} ==> {destination}")] pub struct Error { r#source: char, destination: char, } let error = Error { source: 'S', destination: 'D' }; ``` - Infinite recursion in a generated Display impl now produces an `unconditional_recursion` warning ([#&#8203;359](https://github.com/dtolnay/thiserror/issues/359)) ```rust #[derive(Error, Debug)] #[error("??? {self}")] pub struct Error; ``` - A new attribute `#[error(fmt = path::to::myfmt)]` can be used to write formatting logic for an enum variant out-of-line ([#&#8203;367](https://github.com/dtolnay/thiserror/issues/367)) ```rust #[derive(Error, Debug)] pub enum Error { #[error(fmt = demo_fmt)] Demo { code: u16, message: Option<String> }, } fn demo_fmt(code: &u16, message: &Option<String>, formatter: &mut fmt::Formatter) -> fmt::Result { write!(formatter, "{code}")?; if let Some(msg) = message { write!(formatter, " - {msg}")?; } Ok(()) } ``` - Enums with an enum-level format message are now able to have individual variants that are `transparent` to supersede the enum-level message ([#&#8203;366](https://github.com/dtolnay/thiserror/issues/366)) ```rust #[derive(Error, Debug)] #[error("my error {0}")] pub enum Error { Json(#[from] serde_json::Error), Yaml(#[from] serde_yaml::Error), #[error(transparent)] Other(#[from] anyhow::Error), } ``` ### [`v1.0.69`](https://github.com/dtolnay/thiserror/releases/tag/1.0.69) [Compare Source](https://github.com/dtolnay/thiserror/compare/1.0.68...1.0.69) - Backport [2.0.2](https://github.com/dtolnay/thiserror/releases/tag/2.0.2) fixes ### [`v1.0.68`](https://github.com/dtolnay/thiserror/releases/tag/1.0.68) [Compare Source](https://github.com/dtolnay/thiserror/compare/1.0.67...1.0.68) - Handle incomplete expressions more robustly in format arguments, such as while code is being typed ([#&#8203;341](https://github.com/dtolnay/thiserror/issues/341), [#&#8203;344](https://github.com/dtolnay/thiserror/issues/344)) ### [`v1.0.67`](https://github.com/dtolnay/thiserror/releases/tag/1.0.67) [Compare Source](https://github.com/dtolnay/thiserror/compare/1.0.66...1.0.67) - Improve expression syntax support inside format arguments ([#&#8203;335](https://github.com/dtolnay/thiserror/issues/335), [#&#8203;337](https://github.com/dtolnay/thiserror/issues/337), [#&#8203;339](https://github.com/dtolnay/thiserror/issues/339), [#&#8203;340](https://github.com/dtolnay/thiserror/issues/340)) ### [`v1.0.66`](https://github.com/dtolnay/thiserror/releases/tag/1.0.66) [Compare Source](https://github.com/dtolnay/thiserror/compare/1.0.65...1.0.66) - Improve compile error on malformed format attribute ([#&#8203;327](https://github.com/dtolnay/thiserror/issues/327)) ### [`v1.0.65`](https://github.com/dtolnay/thiserror/releases/tag/1.0.65) [Compare Source](https://github.com/dtolnay/thiserror/compare/1.0.64...1.0.65) - Ensure OUT_DIR is left with deterministic contents after build script execution ([#&#8203;325](https://github.com/dtolnay/thiserror/issues/325)) ### [`v1.0.64`](https://github.com/dtolnay/thiserror/releases/tag/1.0.64) [Compare Source](https://github.com/dtolnay/thiserror/compare/1.0.63...1.0.64) - Exclude derived impls from coverage instrumentation ([#&#8203;322](https://github.com/dtolnay/thiserror/issues/322), thanks [@&#8203;oxalica](https://github.com/oxalica)) ### [`v1.0.63`](https://github.com/dtolnay/thiserror/releases/tag/1.0.63) [Compare Source](https://github.com/dtolnay/thiserror/compare/1.0.62...1.0.63) - Documentation improvements ### [`v1.0.62`](https://github.com/dtolnay/thiserror/releases/tag/1.0.62) [Compare Source](https://github.com/dtolnay/thiserror/compare/1.0.61...1.0.62) - Support referring to nested tuple struct fields inside `#[error("…", …)]` attribute ([#&#8203;309](https://github.com/dtolnay/thiserror/issues/309)) </details> <details> <summary>tokio-rs/tokio (tokio)</summary> ### [`v1.42.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.42.0): Tokio v1.42.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.41.1...tokio-1.42.0) ### 1.42.0 (Dec 3rd, 2024) ##### Added - io: add `AsyncFd::{try_io, try_io_mut}` ([#&#8203;6967]) ##### Fixed - io: avoid `ptr->ref->ptr` roundtrip in RegistrationSet ([#&#8203;6929]) - runtime: do not defer `yield_now` inside `block_in_place` ([#&#8203;6999]) ##### Changes - io: simplify io readiness logic ([#&#8203;6966]) ##### Documented - net: fix docs for `tokio::net::unix::{pid_t, gid_t, uid_t}` ([#&#8203;6791]) - time: fix a typo in `Instant` docs ([#&#8203;6982]) [#&#8203;6791]: https://github.com/tokio-rs/tokio/pull/6791 [#&#8203;6929]: https://github.com/tokio-rs/tokio/pull/6929 [#&#8203;6966]: https://github.com/tokio-rs/tokio/pull/6966 [#&#8203;6967]: https://github.com/tokio-rs/tokio/pull/6967 [#&#8203;6982]: https://github.com/tokio-rs/tokio/pull/6982 [#&#8203;6999]: https://github.com/tokio-rs/tokio/pull/6999 ### [`v1.41.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.41.1): Tokio v1.41.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.41.0...tokio-1.41.1) ### 1.41.1 (Nov 7th, 2024) ##### Fixed - metrics: fix bug with wrong number of buckets for the histogram ([#&#8203;6957]) - net: display `net` requirement for `net::UdpSocket` in docs ([#&#8203;6938]) - net: fix typo in `TcpStream` internal comment ([#&#8203;6944]) [#&#8203;6957]: https://github.com/tokio-rs/tokio/pull/6957 [#&#8203;6938]: https://github.com/tokio-rs/tokio/pull/6938 [#&#8203;6944]: https://github.com/tokio-rs/tokio/pull/6944 ### [`v1.41.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.41.0): Tokio v1.41.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.40.0...tokio-1.41.0) ### 1.41.0 (Oct 22th, 2024) ##### Added - metrics: stabilize `global_queue_depth` ([#&#8203;6854], [#&#8203;6918]) - net: add conversions for unix `SocketAddr` ([#&#8203;6868]) - sync: add `watch::Sender::sender_count` ([#&#8203;6836]) - sync: add `mpsc::Receiver::blocking_recv_many` ([#&#8203;6867]) - task: stabilize `Id` apis ([#&#8203;6793], [#&#8203;6891]) ##### Added (unstable) - metrics: add H2 Histogram option to improve histogram granularity ([#&#8203;6897]) - metrics: rename some histogram apis ([#&#8203;6924]) - runtime: add `LocalRuntime` ([#&#8203;6808]) ##### Changed - runtime: box futures larger than 16k on release mode ([#&#8203;6826]) - sync: add `#[must_use]` to `Notified` ([#&#8203;6828]) - sync: make `watch` cooperative ([#&#8203;6846]) - sync: make `broadcast::Receiver` cooperative ([#&#8203;6870]) - task: add task size to tracing instrumentation ([#&#8203;6881]) - wasm: enable `cfg_fs` for `wasi` target ([#&#8203;6822]) ##### Fixed - net: fix regression of abstract socket path in unix socket ([#&#8203;6838]) ##### Documented - io: recommend `OwnedFd` with `AsyncFd` ([#&#8203;6821]) - io: document cancel safety of `AsyncFd` methods ([#&#8203;6890]) - macros: render more comprehensible documentation for `join` and `try_join` ([#&#8203;6814], [#&#8203;6841]) - net: fix swapped examples for `TcpSocket::set_nodelay` and `TcpSocket::nodelay` ([#&#8203;6840]) - sync: document runtime compatibility ([#&#8203;6833]) [#&#8203;6793]: https://github.com/tokio-rs/tokio/pull/6793 [#&#8203;6808]: https://github.com/tokio-rs/tokio/pull/6808 [#&#8203;6810]: https://github.com/tokio-rs/tokio/pull/6810 [#&#8203;6814]: https://github.com/tokio-rs/tokio/pull/6814 [#&#8203;6821]: https://github.com/tokio-rs/tokio/pull/6821 [#&#8203;6822]: https://github.com/tokio-rs/tokio/pull/6822 [#&#8203;6826]: https://github.com/tokio-rs/tokio/pull/6826 [#&#8203;6828]: https://github.com/tokio-rs/tokio/pull/6828 [#&#8203;6833]: https://github.com/tokio-rs/tokio/pull/6833 [#&#8203;6836]: https://github.com/tokio-rs/tokio/pull/6836 [#&#8203;6838]: https://github.com/tokio-rs/tokio/pull/6838 [#&#8203;6840]: https://github.com/tokio-rs/tokio/pull/6840 [#&#8203;6841]: https://github.com/tokio-rs/tokio/pull/6841 [#&#8203;6846]: https://github.com/tokio-rs/tokio/pull/6846 [#&#8203;6854]: https://github.com/tokio-rs/tokio/pull/6854 [#&#8203;6867]: https://github.com/tokio-rs/tokio/pull/6867 [#&#8203;6868]: https://github.com/tokio-rs/tokio/pull/6868 [#&#8203;6870]: https://github.com/tokio-rs/tokio/pull/6870 [#&#8203;6881]: https://github.com/tokio-rs/tokio/pull/6881 [#&#8203;6890]: https://github.com/tokio-rs/tokio/pull/6890 [#&#8203;6891]: https://github.com/tokio-rs/tokio/pull/6891 [#&#8203;6897]: https://github.com/tokio-rs/tokio/pull/6897 [#&#8203;6918]: https://github.com/tokio-rs/tokio/pull/6918 [#&#8203;6924]: https://github.com/tokio-rs/tokio/pull/6924 ### [`v1.40.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.40.0): Tokio v1.40.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.39.3...tokio-1.40.0) ### 1.40.0 (August 30th, 2024) ##### Added - io: add `util::SimplexStream` ([#&#8203;6589]) - process: stabilize `Command::process_group` ([#&#8203;6731]) - sync: add `{TrySendError,SendTimeoutError}::into_inner` ([#&#8203;6755]) - task: add `JoinSet::join_all` ([#&#8203;6784]) ##### Added (unstable) - runtime: add `Builder::{on_task_spawn, on_task_terminate}` ([#&#8203;6742]) ##### Changed - io: use vectored io for `write_all_buf` when possible ([#&#8203;6724]) - runtime: prevent niche-optimization to avoid triggering miri ([#&#8203;6744]) - sync: mark mpsc types as `UnwindSafe` ([#&#8203;6783]) - sync,time: make `Sleep` and `BatchSemaphore` instrumentation explicit roots ([#&#8203;6727]) - task: use `NonZeroU64` for `task::Id` ([#&#8203;6733]) - task: include panic message when printing `JoinError` ([#&#8203;6753]) - task: add `#[must_use]` to `JoinHandle::abort_handle` ([#&#8203;6762]) - time: eliminate timer wheel allocations ([#&#8203;6779]) ##### Documented - docs: clarify that `[build]` section doesn't go in Cargo.toml ([#&#8203;6728]) - io: clarify zero remaining capacity case ([#&#8203;6790]) - macros: improve documentation for `select!` ([#&#8203;6774]) - sync: document mpsc channel allocation behavior ([#&#8203;6773]) [#&#8203;6589]: https://github.com/tokio-rs/tokio/pull/6589 [#&#8203;6724]: https://github.com/tokio-rs/tokio/pull/6724 [#&#8203;6727]: https://github.com/tokio-rs/tokio/pull/6727 [#&#8203;6728]: https://github.com/tokio-rs/tokio/pull/6728 [#&#8203;6731]: https://github.com/tokio-rs/tokio/pull/6731 [#&#8203;6733]: https://github.com/tokio-rs/tokio/pull/6733 [#&#8203;6742]: https://github.com/tokio-rs/tokio/pull/6742 [#&#8203;6744]: https://github.com/tokio-rs/tokio/pull/6744 [#&#8203;6753]: https://github.com/tokio-rs/tokio/pull/6753 [#&#8203;6755]: https://github.com/tokio-rs/tokio/pull/6755 [#&#8203;6762]: https://github.com/tokio-rs/tokio/pull/6762 [#&#8203;6773]: https://github.com/tokio-rs/tokio/pull/6773 [#&#8203;6774]: https://github.com/tokio-rs/tokio/pull/6774 [#&#8203;6779]: https://github.com/tokio-rs/tokio/pull/6779 [#&#8203;6783]: https://github.com/tokio-rs/tokio/pull/6783 [#&#8203;6784]: https://github.com/tokio-rs/tokio/pull/6784 [#&#8203;6790]: https://github.com/tokio-rs/tokio/pull/6790 ### [`v1.39.3`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.39.3): Tokio v1.39.3 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.39.2...tokio-1.39.3) ### 1.39.3 (August 17th, 2024) This release fixes a regression where the unix socket api stopped accepting the abstract socket namespace. ([#&#8203;6772]) [#&#8203;6772]: https://github.com/tokio-rs/tokio/pull/6772 ### [`v1.39.2`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.39.2): Tokio v1.39.2 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.39.1...tokio-1.39.2) ### 1.39.2 (July 27th, 2024) This release fixes a regression where the `select!` macro stopped accepting expressions that make use of temporary lifetime extension. ([#&#8203;6722]) [#&#8203;6722]: https://github.com/tokio-rs/tokio/pull/6722 ### [`v1.39.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.39.1): Tokio v1.39.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.39.0...tokio-1.39.1) ### 1.39.1 (July 23rd, 2024) This release reverts "time: avoid traversing entries in the time wheel twice" because it contains a bug. ([#&#8203;6715]) [#&#8203;6715]: https://github.com/tokio-rs/tokio/pull/6715 ### [`v1.39.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.39.0): Tokio v1.39.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.38.1...tokio-1.39.0) ### 1.39.0 (July 23rd, 2024) - This release bumps the MSRV to 1.70. ([#&#8203;6645]) - This release upgrades to mio v1. ([#&#8203;6635]) - This release upgrades to windows-sys v0.52 ([#&#8203;6154]) ##### Added - io: implement `AsyncSeek` for `Empty` ([#&#8203;6663]) - metrics: stabilize `num_alive_tasks` ([#&#8203;6619], [#&#8203;6667]) - process: add `Command::as_std_mut` ([#&#8203;6608]) - sync: add `watch::Sender::same_channel` ([#&#8203;6637]) - sync: add `{Receiver,UnboundedReceiver}::{sender_strong_count,sender_weak_count}` ([#&#8203;6661]) - sync: implement `Default` for `watch::Sender` ([#&#8203;6626]) - task: implement `Clone` for `AbortHandle` ([#&#8203;6621]) - task: stabilize `consume_budget` ([#&#8203;6622]) ##### Changed - io: improve panic message of `ReadBuf::put_slice()` ([#&#8203;6629]) - io: read during write in `copy_bidirectional` and `copy` ([#&#8203;6532]) - runtime: replace `num_cpus` with `available_parallelism` ([#&#8203;6709]) - task: avoid stack overflow when passing large future to `block_on` ([#&#8203;6692]) - time: avoid traversing entries in the time wheel twice ([#&#8203;6584]) - time: support `IntoFuture` with `timeout` ([#&#8203;6666]) - macros: support `IntoFuture` with `join!` and `select!` ([#&#8203;6710]) ##### Fixed - docs: fix docsrs builds with the fs feature enabled ([#&#8203;6585]) - io: only use short-read optimization on known-to-be-compatible platforms ([#&#8203;6668]) - time: fix overflow panic when using large durations with `Interval` ([#&#8203;6612]) ##### Added (unstable) - macros: allow `unhandled_panic` behavior for `#[tokio::main]` and `#[tokio::test]` ([#&#8203;6593]) - metrics: add `spawned_tasks_count` ([#&#8203;6114]) - metrics: add `worker_park_unpark_count` ([#&#8203;6696]) - metrics: add worker thread id ([#&#8203;6695]) ##### Documented - io: update `tokio::io::stdout` documentation ([#&#8203;6674]) - macros: typo fix in `join.rs` and `try_join.rs` ([#&#8203;6641]) - runtime: fix typo in `unhandled_panic` ([#&#8203;6660]) - task: document behavior of `JoinSet::try_join_next` when all tasks are running ([#&#8203;6671]) [#&#8203;6114]: https://github.com/tokio-rs/tokio/pull/6114 [#&#8203;6154]: https://github.com/tokio-rs/tokio/pull/6154 [#&#8203;6532]: https://github.com/tokio-rs/tokio/pull/6532 [#&#8203;6584]: https://github.com/tokio-rs/tokio/pull/6584 [#&#8203;6585]: https://github.com/tokio-rs/tokio/pull/6585 [#&#8203;6593]: https://github.com/tokio-rs/tokio/pull/6593 [#&#8203;6608]: https://github.com/tokio-rs/tokio/pull/6608 [#&#8203;6612]: https://github.com/tokio-rs/tokio/pull/6612 [#&#8203;6619]: https://github.com/tokio-rs/tokio/pull/6619 [#&#8203;6621]: https://github.com/tokio-rs/tokio/pull/6621 [#&#8203;6622]: https://github.com/tokio-rs/tokio/pull/6622 [#&#8203;6626]: https://github.com/tokio-rs/tokio/pull/6626 [#&#8203;6629]: https://github.com/tokio-rs/tokio/pull/6629 [#&#8203;6635]: https://github.com/tokio-rs/tokio/pull/6635 [#&#8203;6637]: https://github.com/tokio-rs/tokio/pull/6637 [#&#8203;6641]: https://github.com/tokio-rs/tokio/pull/6641 [#&#8203;6645]: https://github.com/tokio-rs/tokio/pull/6645 [#&#8203;6660]: https://github.com/tokio-rs/tokio/pull/6660 [#&#8203;6661]: https://github.com/tokio-rs/tokio/pull/6661 [#&#8203;6663]: https://github.com/tokio-rs/tokio/pull/6663 [#&#8203;6666]: https://github.com/tokio-rs/tokio/pull/6666 [#&#8203;6667]: https://github.com/tokio-rs/tokio/pull/6667 [#&#8203;6668]: https://github.com/tokio-rs/tokio/pull/6668 [#&#8203;6671]: https://github.com/tokio-rs/tokio/pull/6671 [#&#8203;6674]: https://github.com/tokio-rs/tokio/pull/6674 [#&#8203;6692]: https://github.com/tokio-rs/tokio/pull/6692 [#&#8203;6695]: https://github.com/tokio-rs/tokio/pull/6695 [#&#8203;6696]: https://github.com/tokio-rs/tokio/pull/6696 [#&#8203;6709]: https://github.com/tokio-rs/tokio/pull/6709 [#&#8203;6710]: https://github.com/tokio-rs/tokio/pull/6710 ### [`v1.38.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.38.1): Tokio v1.38.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.38.0...tokio-1.38.1) ### 1.38.1 (July 16th, 2024) This release fixes the bug identified as ([#&#8203;6682]), which caused timers not to fire when they should. ##### Fixed - time: update `wake_up` while holding all the locks of sharded time wheels ([#&#8203;6683]) [#&#8203;6682]: https://github.com/tokio-rs/tokio/pull/6682 [#&#8203;6683]: https://github.com/tokio-rs/tokio/pull/6683 </details> <details> <summary>tower-rs/tower (tower)</summary> ### [`v0.5.2`](https://github.com/tower-rs/tower/releases/tag/tower-0.5.2): tower 0.5.2 [Compare Source](https://github.com/tower-rs/tower/compare/tower-0.5.1...tower-0.5.2) ##### Added - **util**: Add `BoxCloneSyncService` which is a `Clone + Send + Sync` boxed `Service` ([#&#8203;777](https://github.com/tower-rs/tower/issues/777)) - **util**: Add `BoxCloneSyncServiceLayer` which is a `Clone + Send + Sync` boxed `Layer` ([#&#8203;802](https://github.com/tower-rs/tower/issues/802)) ### [`v0.5.1`](https://github.com/tower-rs/tower/releases/tag/tower-0.5.1): tower 0.5.1 [Compare Source](https://github.com/tower-rs/tower/compare/tower-0.5.0...tower-0.5.1) - Fix minimum version of `tower-layer` dependency ([#&#8203;787]) [#&#8203;787]: https://github.com/tower-rs/tower/pull/787 ### [`v0.5.0`](https://github.com/tower-rs/tower/releases/tag/tower-0.5.0): tower 0.5.0 [Compare Source](https://github.com/tower-rs/tower/compare/tower-0.4.13...tower-0.5.0) ##### Fixed - **util**: `BoxService` is now `Sync` ([#&#8203;702]) ##### Changed - **util**: Removed deprecated `ServiceExt::ready_and` method and `ReadyAnd` future ([#&#8203;652]) - **retry**: **Breaking Change** `retry::Policy::retry` now accepts `&mut Req` and `&mut Res` instead of the previous mutable versions. This increases the flexibility of the retry policy. To update, update your method signature to include `mut` for both parameters. ([#&#8203;584]) - **retry**: **Breaking Change** Change Policy to accept \&mut self ([#&#8203;681]) - **retry**: Add generic backoff utilities ([#&#8203;685]) - **retry**: Add Budget trait. This allows end-users to implement their own budget and bucket implementations. ([#&#8203;703]) - **reconnect**: **Breaking Change** Remove unused generic parameter from `Reconnect::new` ([#&#8203;755]) - **ready-cache**: Allow iteration over ready services ([#&#8203;700]) - **discover**: Implement `Clone` for Change ([#&#8203;701]) - **util**: Add a BoxCloneServiceLayer ([#&#8203;708]) - **rng**: use a simpler random 2-sampler ([#&#8203;716]) - **filter**: Derive `Clone` for `AsyncFilterLayer` ([#&#8203;731]) - **general**: Update IndexMap ([#&#8203;741]) - **MSRV**: Increase MSRV to 1.63.0 ([#&#8203;741]) [#&#8203;702]: https://github.com/tower-rs/tower/pull/702 [#&#8203;652]: https://github.com/tower-rs/tower/pull/652 [#&#8203;584]: https://github.com/tower-rs/tower/pull/584 [#&#8203;681]: https://github.com/tower-rs/tower/pull/681 [#&#8203;685]: https://github.com/tower-rs/tower/pull/685 [#&#8203;703]: https://github.com/tower-rs/tower/pull/703 [#&#8203;755]: https://github.com/tower-rs/tower/pull/755 [#&#8203;700]: https://github.com/tower-rs/tower/pull/700 [#&#8203;701]: https://github.com/tower-rs/tower/pull/701 [#&#8203;708]: https://github.com/tower-rs/tower/pull/708 [#&#8203;716]: https://github.com/tower-rs/tower/pull/716 [#&#8203;731]: https://github.com/tower-rs/tower/pull/731 [#&#8203;741]: https://github.com/tower-rs/tower/pull/741 </details> <details> <summary>tower-rs/tower-http (tower-http)</summary> ### [`v0.6.2`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.6.2) [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.6.1...tower-http-0.6.2) ##### Changed: - `CompressionBody<B>` now propagates `B`'s size hint in its `http_body::Body` implementation, if compression is disabled ([#&#8203;531]) - this allows a `content-length` to be included in an HTTP message with this body for those cases [#&#8203;531]: https://github.com/tower-rs/tower-http/pull/531 ##### New Contributors - [@&#8203;musicinmybrain](https://github.com/musicinmybrain) made their first contribution in https://github.com/tower-rs/tower-http/pull/524 - [@&#8203;SabrinaJewson](https://github.com/SabrinaJewson) made their first contribution in https://github.com/tower-rs/tower-http/pull/531 **Full Changelog**: https://github.com/tower-rs/tower-http/compare/tower-http-0.6.1...tower-http-0.6.2 ### [`v0.6.1`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.6.1): v0.6.1 [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.6.0...tower-http-0.6.1) ##### Fixed - **decompression:** reuse scratch buffer to significantly reduce allocations and improve performance ([#&#8203;521]) [#&#8203;521]: https://github.com/tower-rs/tower-http/pull/521 ##### New Contributors - [@&#8203;magurotuna](https://github.com/magurotuna) made their first contribution in https://github.com/tower-rs/tower-http/pull/521 ### [`v0.6.0`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.6.0): v0.6.0 [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.5.2...tower-http-0.6.0) ##### Changed: - `body` module is disabled except for `catch-panic`, `decompression-*`, `fs`, or `limit` features (BREAKING) ([#&#8203;477]) - Update to `tower` 0.5 ([#&#8203;503]) ##### Fixed - **fs:** Precompression of static files now supports files without a file extension ([#&#8203;507]) [#&#8203;477]: https://github.com/tower-rs/tower-http/pull/477 [#&#8203;503]: https://github.com/tower-rs/tower-http/pull/503 [#&#8203;507]: https://github.com/tower-rs/tower-http/pull/507 </details> <details> <summary>uuid-rs/uuid (uuid)</summary> ### [`v1.11.0`](https://github.com/uuid-rs/uuid/releases/tag/1.11.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/1.10.0...1.11.0) #### What's Changed - Upgrade zerocopy to 0.8 by [@&#8203;yotamofek](https://github.com/yotamofek) in https://github.com/uuid-rs/uuid/pull/771 - Prepare for 1.11.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/772 #### New Contributors - [@&#8203;yotamofek](https://github.com/yotamofek) made their first contribution in https://github.com/uuid-rs/uuid/pull/771 **Full Changelog**: https://github.com/uuid-rs/uuid/compare/1.10.0...1.11.0 ### [`v1.10.0`](https://github.com/uuid-rs/uuid/releases/tag/1.10.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/1.9.1...1.10.0) #### Deprecations This release deprecates and renames the following functions: - `Builder::from_rfc4122_timestamp` -> `Builder::from_gregorian_timestamp` - `Builder::from_sorted_rfc4122_timestamp` -> `Builder::from_sorted_gregorian_timestamp` - `Timestamp::from_rfc4122` -> `Timestamp::from_gregorian` - `Timestamp::to_rfc4122` -> `Timestamp::to_gregorian` #### What's Changed - Use const identifier in uuid macro by [@&#8203;Vrajs16](https://github.com/Vrajs16) in https://github.com/uuid-rs/uuid/pull/764 - Rename most methods referring to RFC4122 by [@&#8203;Mikopet](https://github.com/Mikopet) / [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/765 - prepare for 1.10.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/uuid-rs/uuid/pull/766 #### New Contributors - [@&#8203;Vrajs16](https://github.com/Vrajs16) made their first contribution in https://github.com/uuid-rs/uuid/pull/764 **Full Changelog**: https://github.com/uuid-rs/uuid/compare/1.9.1...1.10.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjQuMyIsInVwZGF0ZWRJblZlciI6IjM3LjQyNC4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
kjuulh added 1 commit 2024-08-21 22:45:04 +02:00
fix(deps): update all dependencies
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is failing
015c678056
kjuulh force-pushed renovate/all from 582a54742e to 015c678056 2024-08-21 22:45:04 +02:00 Compare
kjuulh force-pushed renovate/all from 015c678056 to c3495ba899 2024-08-22 00:19:31 +02:00 Compare
kjuulh force-pushed renovate/all from c3495ba899 to 46b3a4df99 2024-08-22 01:21:22 +02:00 Compare
kjuulh force-pushed renovate/all from 46b3a4df99 to 40fe7b8130 2024-08-23 22:31:03 +02:00 Compare
kjuulh force-pushed renovate/all from 40fe7b8130 to 5c941d649a 2024-08-23 23:48:39 +02:00 Compare
kjuulh force-pushed renovate/all from 5c941d649a to a5426e1abb 2024-08-30 10:16:03 +02:00 Compare
kjuulh force-pushed renovate/all from a5426e1abb to d3bd47bd0b 2024-09-05 02:17:17 +02:00 Compare
kjuulh force-pushed renovate/all from d3bd47bd0b to 09230833e8 2024-09-07 02:17:32 +02:00 Compare
kjuulh force-pushed renovate/all from 09230833e8 to dfa6d1dbb1 2024-09-08 06:18:27 +02:00 Compare
kjuulh force-pushed renovate/all from dfa6d1dbb1 to 354dab77a8 2024-09-12 02:19:30 +02:00 Compare
kjuulh force-pushed renovate/all from 354dab77a8 to 07c12ac894 2024-09-15 06:17:57 +02:00 Compare
kjuulh force-pushed renovate/all from 07c12ac894 to 7f12f8ab9e 2024-09-20 02:26:22 +02:00 Compare
kjuulh force-pushed renovate/all from 7f12f8ab9e to 6a7c3adea5 2024-09-21 02:33:00 +02:00 Compare
kjuulh force-pushed renovate/all from 6a7c3adea5 to a0ee22de08 2024-09-23 02:20:01 +02:00 Compare
kjuulh force-pushed renovate/all from a0ee22de08 to 30dfab299e 2024-09-28 02:24:01 +02:00 Compare
kjuulh force-pushed renovate/all from 30dfab299e to 16038e4dd8 2024-10-10 06:20:10 +02:00 Compare
kjuulh force-pushed renovate/all from 16038e4dd8 to 919a226980 2024-10-11 06:19:47 +02:00 Compare
kjuulh force-pushed renovate/all from 919a226980 to 13f5eee250 2024-10-17 02:22:04 +02:00 Compare
kjuulh force-pushed renovate/all from 13f5eee250 to a6b99677c3 2024-10-18 02:22:27 +02:00 Compare
kjuulh force-pushed renovate/all from a6b99677c3 to 2fd917ab57 2024-10-19 02:21:14 +02:00 Compare
kjuulh force-pushed renovate/all from 2fd917ab57 to e1d8bec029 2024-10-20 02:22:25 +02:00 Compare
kjuulh force-pushed renovate/all from e1d8bec029 to eadb3f1561 2024-10-23 02:23:06 +02:00 Compare
kjuulh force-pushed renovate/all from eadb3f1561 to e5e3d0f193 2024-11-01 02:23:05 +01:00 Compare
kjuulh force-pushed renovate/all from e5e3d0f193 to e56e283bbb 2024-11-02 02:21:26 +01:00 Compare
kjuulh force-pushed renovate/all from e56e283bbb to 296e1362ea 2024-11-04 02:18:01 +01:00 Compare
kjuulh force-pushed renovate/all from 296e1362ea to a979ce5433 2024-11-05 02:18:44 +01:00 Compare
kjuulh force-pushed renovate/all from a979ce5433 to 648034060e 2024-11-06 06:17:23 +01:00 Compare
kjuulh force-pushed renovate/all from 648034060e to d700343117 2024-11-07 02:19:12 +01:00 Compare
kjuulh force-pushed renovate/all from d700343117 to 3a146195cb 2024-11-08 02:19:22 +01:00 Compare
kjuulh force-pushed renovate/all from 3a146195cb to 977501fca5 2024-11-16 02:21:20 +01:00 Compare
kjuulh force-pushed renovate/all from 977501fca5 to e3ece89a82 2024-11-17 02:19:27 +01:00 Compare
kjuulh force-pushed renovate/all from e3ece89a82 to 12d9d44feb 2024-11-17 06:19:22 +01:00 Compare
kjuulh force-pushed renovate/all from 12d9d44feb to 75e08c6829 2024-11-30 06:39:03 +01:00 Compare
kjuulh force-pushed renovate/all from 75e08c6829 to 81de5f1fb6 2024-12-01 02:22:14 +01:00 Compare
Author
Owner

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path Cargo.toml --package leptos@0.6.12 --precise 0.7.2
    Updating crates.io index
error: failed to select a version for `leptos`.
    ... required by package `como_web v0.1.0 (/tmp/renovate/repos/gitea/kjuulh/como-web)`
versions that meet the requirements `*` are: 0.7.2

the package `como_web` depends on `leptos`, with features: `serde` but `leptos` does not have these features.
 It has a required dependency with that name, but only optional dependencies can be used as features.


failed to select a version for `leptos` which could resolve this conflict

### ⚠️ Artifact update problem Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is. ♻ Renovate will retry this branch, including artifacts, only when one of the following happens: - any of the package files in this branch needs updating, or - the branch becomes conflicted, or - you click the rebase/retry checkbox if found above, or - you rename this PR's title to start with "rebase!" to trigger it manually The artifact failure details are included below: ##### File name: Cargo.lock ``` Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path Cargo.toml --package leptos@0.6.12 --precise 0.7.2 Updating crates.io index error: failed to select a version for `leptos`. ... required by package `como_web v0.1.0 (/tmp/renovate/repos/gitea/kjuulh/como-web)` versions that meet the requirements `*` are: 0.7.2 the package `como_web` depends on `leptos`, with features: `serde` but `leptos` does not have these features. It has a required dependency with that name, but only optional dependencies can be used as features. failed to select a version for `leptos` which could resolve this conflict ```
kjuulh force-pushed renovate/all from 81de5f1fb6 to 46947b78bf 2024-12-01 06:21:35 +01:00 Compare
kjuulh force-pushed renovate/all from 46947b78bf to 4e35906107 2024-12-02 02:41:52 +01:00 Compare
kjuulh force-pushed renovate/all from 4e35906107 to c3916e6cdd 2024-12-02 06:30:11 +01:00 Compare
kjuulh force-pushed renovate/all from c3916e6cdd to b69f6d6040 2024-12-07 06:21:56 +01:00 Compare
kjuulh force-pushed renovate/all from b69f6d6040 to b78ddf47c4 2024-12-11 02:30:20 +01:00 Compare
kjuulh force-pushed renovate/all from b78ddf47c4 to 88577417bd 2024-12-12 02:22:13 +01:00 Compare
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
This pull request can be merged automatically.
You are not authorized to merge this pull request.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/all:renovate/all
git checkout renovate/all
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: kjuulh/como-web#21
No description provided.