Update all non-major dependencies #209

Open
andras wants to merge 1 commit from renovate/all into main
Owner

This PR contains the following updates:

Package Type Update Change
@cspell/dict-en-gb (source) devDependencies patch 5.0.19 → 5.0.38
anyhow dependencies patch 1.0.100 → 1.0.104
axum dependencies minor 0.7.4 → 0.8.0
axum-extra dependencies minor 0.9.6 → 0.12.0
axum_typed_multipart dependencies minor 0.11.0 → 0.16.0
base64 dependencies minor 0.22.1 → 0.23.0
chrono dependencies patch 0.4.41 → 0.4.45
clap dependencies minor 4.5.38 → 4.6.7
concurrently devDependencies patch 9.2.1 → 9.2.5
cspell (source) devDependencies minor 9.3.2 → 9.8.0
eslint (source) devDependencies minor 9.38.0 → 9.39.5
eslint-plugin-unused-imports devDependencies minor 4.1.4 → 4.4.1
futures (source) dependencies patch 0.3.31 → 0.3.34
log dependencies patch 0.4.28 → 0.4.35
minimatch devDependencies minor 10.0.1 → 10.2.6
npm-check-updates devDependencies minor 19.1.1 → 19.6.6
obsidian (source) devDependencies minor 1.11.0 → 1.14.4
prettier (source) devDependencies minor 3.6.2 → 3.9.10
rand (source) dependencies minor 0.9.0 → 0.10.0
reconcile-text devDependencies minor ^0.8.0 → ^0.14.0
reconcile-text devDependencies minor ^0.11.0 → ^0.14.0
reconcile-text (source) dependencies minor 0.8.0 → 0.14.0
regex dependencies minor 1.12.2 → 1.13.1
rust (source, changelog) toolchain minor 1.89.0 → 1.99.1
rust (source, changelog) uses-with minor 1.92.0 → 1.99.1
rust (source) stage minor 1.91-slim-trixie → 1.99-slim-trixie
serde (source) dependencies patch 1.0.228 → 1.0.229
serde_json dependencies patch 1.0.145 → 1.0.154
sqlx dependencies minor 0.8.6 → 0.9.0
thiserror dependencies patch 2.0.17 → 2.0.21
tokio (source) dependencies minor 1.48.0 → 1.54.1
tower-http dependencies minor 0.6.1 → 0.7.0
tracing (source) dependencies patch 0.1.41 → 0.1.44
tracing-subscriber (source) dependencies patch 0.3.20 → 0.3.23
tslib (source) devDependencies minor 2.8.1 → 2.9.1
typescript (source) devDependencies minor 5.8.3 → 5.9.3
typescript-eslint (source) devDependencies minor 8.41.0 → 8.72.1
uuid dependencies minor 1.16.0 → 1.29.0
vue (source) devDependencies patch 3.5.24 → 3.5.44

Release Notes

streetsidesoftware/cspell-dicts (@​cspell/dict-en-gb)

v5.0.38

Compare Source

Updates and Bug Fixes
Dependencies

v5.0.36

Compare Source

Updates and Bug Fixes
Dependencies

v5.0.35

Compare Source

Updates and Bug Fixes
  • use the unmodified GPL-3.0 and LGPL-3.0 license text (#​5874) (8806309)

v5.0.34

Compare Source

Updates and Bug Fixes

v5.0.33

Compare Source

Updates and Bug Fixes
  • be able to track change to the English dictionaries (#​5716) (75bd0c3)
  • Revert the changes to the English dictionaries. Too many changes were made that caused downstream issues. The next step is to evaluate what exactly changed before updating the dictionaries. (5e24b94)
Dependencies

v5.0.32

Compare Source

Updates and Bug Fixes
Dependencies

v5.0.31

Compare Source

Updates and Bug Fixes
Dependencies

v5.0.30

Compare Source

Updates and Bug Fixes
Dependencies

v5.0.29

Compare Source

Updates and Bug Fixes
Dependencies

v5.0.27

Compare Source

Updates and Bug Fixes
Dependencies

v5.0.26

Compare Source

Updates and Bug Fixes
Dependencies

v5.0.25

Compare Source

Dependencies

v5.0.24

Compare Source

Dependencies

v5.0.23

Compare Source

Updates and Bug Fixes
Dependencies

v5.0.22

Compare Source

Dependencies

v5.0.21

Compare Source

Dependencies

v5.0.20

Compare Source

Updates and Bug Fixes
Dependencies
dtolnay/anyhow (anyhow)

v1.0.104

Compare Source

  • Update syn dev-dependency to version 3

v1.0.103

Compare Source

  • Fix Stacked Borrows violation (UB) in Error::downcast_mut (#​451, #​452)

v1.0.102

Compare Source

v1.0.101

Compare Source

tokio-rs/axum (axum)

v0.8.9

Compare Source

  • added: WebSocketUpgrade::{requested_protocols, set_selected_protocol} for more flexible subprotocol selection (#​3597)
  • changed: Update minimum rust version to 1.80 (#​3620)
  • fixed: Set connect endpoint on correct field in MethodRouter (#​3656)
  • fixed: Return specific error message when multipart body limit is exceeded (#​3611)

v0.8.8: axum v0.8.8

Compare Source

  • Clarify documentation for Router::route_layer (#​3567)

v0.8.7: axum v0.8.7

Compare Source

  • Relax implicit Send / Sync bounds on RouterAsService, RouterIntoService (#​3555)
  • Make it easier to visually scan for default features (#​3550)
  • Fix some documentation typos

v0.8.6

Compare Source

v0.8.5: axum v0.8.5

Compare Source

  • fixed: Reject JSON request bodies with trailing characters after the JSON document (#​3453)
  • added: Implement OptionalFromRequest for Multipart (#​3220)
  • added: Getter methods Location::{status_code, location}
  • added: Support for writing arbitrary binary data into server-sent events (#​3425)]
  • added: middleware::ResponseAxumBodyLayer for mapping response body to axum::body::Body (#​3469)
  • added: impl FusedStream for WebSocket (#​3443)
  • changed: The sse module and Sse type no longer depend on the tokio feature (#​3154)
  • changed: If the location given to one of Redirects constructors is not a valid header value, instead of panicking on construction, the IntoResponse impl now returns an HTTP 500, just like Json does when serialization fails (#​3377)
  • changed: Update minimum rust version to 1.78 (#​3412)

v0.8.4: axum v0.8.4

Compare Source

  • added: Router::reset_fallback (#​3320)
  • added: WebSocketUpgrade::selected_protocol (#​3248)
  • fixed: Panic location for overlapping method routes (#​3319)
  • fixed: Don't leak a tokio task when using serve without graceful shutdown (#​3129)

v0.8.3: axum v0.8.3

Compare Source

  • added: Implement From<Bytes> for Message (#​3273)
  • added: Implement OptionalFromRequest for Json (#​3142)
  • added: Implement OptionalFromRequest for Extension (#​3157)
  • added: Allow setting the read buffer capacity of WebSocketUpgrade (#​3178)
  • changed: Improved code size / compile time of dependent crates (#​3285, #​3294)

v0.8.2: axum v0.8.2

Yanked from crates.io due to unforeseen breaking change, see #​3190 for details


  • added: Implement OptionalFromRequest for Json (#​3142)
  • added: Implement OptionalFromRequest for Extension (#​3157)
  • changed: Make the status function of rejections a const function, such
    as JsonRejection, QueryRejection and PathRejection (#​3168)

v0.8.0: axum v0.8.0

Compare Source

since rc.1

  • breaking: axum::extract::ws::Message now uses Bytes in place of Vec<u8>,
    and a new Utf8Bytes type in place of String, for its variants (#​3078)
  • breaking: Remove OptionalFromRequestParts impl for Query (#​3088)
  • changed: Upgraded tokio-tungstenite to 0.26 (#​3078)
  • changed: Query/Form: Use serde_path_to_error to report fields that failed to parse (#​3081)

full changelog

You can also read the blog post on tokio

Note: there are further relevant changes in axum-core's changelog

  • breaking: Upgrade matchit to 0.8, changing the path parameter syntax from /:single and /*many to /{single} and /{*many}; the old syntax produces a panic to avoid silent change in behavior (#​2645)
  • breaking: Require Sync for all handlers and services added to Router and MethodRouter (#​2473)
  • breaking: The tuple and tuple_struct Path extractor deserializers now check that the number of parameters matches the tuple length exactly (#​2931)
  • breaking: Move Host extractor to axum-extra (#​2956)
  • breaking: Remove WebSocket::close. Users should explicitly send close messages themselves. (#​2974)
  • breaking: Make serve generic over the listener and IO types (#​2941)
  • breaking: Remove Serve::tcp_nodelay and WithGracefulShutdown::tcp_nodelay.
    See serve::ListenerExt for an API that let you set arbitrary TCP stream properties. (#​2941)
  • breaking: Option<Path<T>> no longer swallows all error conditions,
    instead rejecting the request in many cases; see its documentation for details (#​2475)
  • breaking: axum::extract::ws::Message now uses Bytes in place of Vec<u8>,
    and a new Utf8Bytes type in place of String, for its variants (#​3078)
  • fixed: Skip SSE incompatible chars of serde_json::RawValue in Event::json_data (#​2992)
  • fixed: Don't panic when array type is used for path segment (#​3039)
  • fixed: Avoid setting content-length before middleware.
    This allows middleware to add bodies to requests without needing to manually set content-length (#​2897)
  • change: Update minimum rust version to 1.75 (#​2943)
  • changed: Upgraded tokio-tungstenite to 0.26 (#​3078)
  • changed: Query/Form: Use serde_path_to_error to report fields that failed to parse (#​3081)
  • 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 NoContent as a self-described shortcut for StatusCode::NO_CONTENT (#​2978)
  • added: Add support for WebSockets over HTTP/2. They can be enabled by changing get(ws_endpoint) handlers to any(ws_endpoint) (#​2894)
  • added: Add MethodFilter::CONNECT, routing::connect[_service] and MethodRouter::connect[_service] (#​2961)
  • added: Extend FailedToDeserializePathParams::kind enum with (ErrorKind::DeserializeError). This new variant captures both key, value, and message from named path parameters parse errors, instead of only deserialization error message in ErrorKind::Message. (#​2720)
murar8/axum_typed_multipart (axum_typed_multipart)

v0.16.8

Compare Source

What's Changed

Full Changelog: https://github.com/murar8/axum_typed_multipart/compare/0.16.7...0.16.8

v0.16.7

Compare Source

What's Changed

Full Changelog: https://github.com/murar8/axum_typed_multipart/compare/0.16.6...0.16.7

v0.16.6

Compare Source

What's Changed

Full Changelog: https://github.com/murar8/axum_typed_multipart/compare/0.16.5...0.16.6

v0.16.5

Compare Source

What's Changed

Full Changelog: https://github.com/murar8/axum_typed_multipart/compare/0.16.4...0.16.5

v0.16.4

Compare Source

What's Changed

Full Changelog: https://github.com/murar8/axum_typed_multipart/compare/0.16.3...0.16.4

v0.16.3

Compare Source

What's Changed

Full Changelog: https://github.com/murar8/axum_typed_multipart/compare/0.16.2...0.16.3

v0.16.2

What's Changed

Full Changelog: https://github.com/murar8/axum_typed_multipart/compare/0.16.0...0.16.2

v0.16.0

Compare Source

What's Changed

Full Changelog: https://github.com/murar8/axum_typed_multipart/compare/0.15.1...0.16.0

v0.15.1

What's Changed

Full Changelog: https://github.com/murar8/axum_typed_multipart/compare/0.14.0...0.15.1

v0.14.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/murar8/axum_typed_multipart/compare/0.13.2...0.14.0

v0.13.2

Compare Source

What's Changed

Full Changelog: https://github.com/murar8/axum_typed_multipart/compare/0.13.1...0.13.2

v0.13.1

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/murar8/axum_typed_multipart/compare/0.13.0...0.13.1

v0.13.0

Compare Source

What's Changed

Full Changelog: https://github.com/murar8/axum_typed_multipart/compare/0.12.2...0.13.0

v0.12.2

Compare Source

What's Changed

Full Changelog: https://github.com/murar8/axum_typed_multipart/compare/0.12.1...0.12.2

v0.12.1

Compare Source

What's Changed

Full Changelog: https://github.com/murar8/axum_typed_multipart/compare/0.11.2...0.12.1

marshallpierce/rust-base64 (base64)

v0.23.1

Compare Source

  • Make the tests build again on non-SIMD architectures

v0.23.0

Compare Source

  • Added more consts for preconfigured configs and engines
  • Make DecodeError::InvalidLastSymbol more clear by including the decoded value
  • Added SIMD-accelerated engines behind the default-on simd-unsafe feature: Simd picks the best
    instruction set at runtime (AVX2 on x86_64, NEON on aarch64) and falls back to the scalar
    GeneralPurpose engine, while Avx2 and Neon target one instruction set with no runtime
    detection and work in no_std. The engines support the standard and URL-safe alphabets.
  • Update MSRV to 1.71.0
  • Add support for custom padding symbols
chronotope/chrono (chrono)

v0.4.45: 0.4.45

Compare Source

What's Changed

v0.4.44: 0.4.44

Compare Source

What's Changed

v0.4.43: 0.4.43

Compare Source

What's Changed

v0.4.42: 0.4.42

Compare Source

What's Changed

clap-rs/clap (clap)

v4.6.7

Compare Source

Features
  • (derive) Add #[command(defer = <bool>)] attribute to opt-in to lazy initialisation of subcommands

v4.6.6

Compare Source

Features
  • Add Command::get_overridden_usage

v4.6.5

Compare Source

Fixes
  • (help) Correctly mark which value_names are optional with num_args

v4.6.4

Compare Source

Internal
  • Update to syn v3

v4.6.3

Compare Source

Fixes
  • (derive) Allow "literal".function() as attribute values

v4.6.2

Compare Source

Fixes
  • (help) Say alias when there is only one

v4.6.1

Compare Source

Fixes
  • (derive) Ensure rebuilds happen when an read env variable is changed

v4.6.0

Compare Source

Compatibility
  • Update MSRV to 1.85

v4.5.61

Compare Source

Internal
  • Update dependencies

v4.5.60

Compare Source

Fixes
  • (help) Quote empty default values, possible values

v4.5.59

Compare Source

Fixes
  • Command::ignore_errors no longer masks help/version on subcommands

v4.5.58

Compare Source

v4.5.57

Compare Source

Fixes
  • Regression from 4.5.55 where having an argument with .value_terminator("--") caused problems with an argument with .last(true)

v4.5.56

Compare Source

Fixes
  • On conflict error, don't show conflicting arguments in the usage

v4.5.55

Compare Source

Fixes
  • Fix inconsistency in precedence between positionals with a value_terminator("--") and escapes (--) where ./foo -- bar means the first arg is empty, rather than escaping future args

v4.5.54

Compare Source

Fixes
  • (help) Move [default] to its own paragraph when PossibleValue::help is present in --help

v4.5.53

Compare Source

Features
  • Add default_values_if, default_values_ifs

v4.5.52

Compare Source

Fixes
  • Don't panic when args_conflicts_with_subcommands conflicts with an ArgGroup

v4.5.51

Compare Source

Fixes
  • (help) Correctly calculate padding for short flags that take a value
  • (help) Don't panic on short flags using ArgAction::Count

v4.5.50

Compare Source

Features
  • Accept Cow where String and &str are accepted

v4.5.49

Compare Source

Fixes
  • (help) Correctly wrap when ANSI escape codes are present

v4.5.48

Compare Source

Documentation
  • Add a new CLI Concepts document as another way of framing clap
  • Expand the typed_derive cookbook entry

v4.5.47

Compare Source

Features
  • Added impl FromArgMatches for ()
  • Added impl Args for ()
  • Added impl Subcommand for ()
  • Added impl FromArgMatches for Infallible
  • Added impl Subcommand for Infallible
Fixes
  • (derive) Update runtime error text to match clap

v4.5.46

Compare Source

Features
  • Expose StyledStr::push_str

v4.5.45

Compare Source

Fixes
  • (unstable-v5) ValueEnum variants now use the full doc comment, not summary, for PossibleValue::help

v4.5.44

Compare Source

Features
  • Add Command::mut_subcommands

v4.5.43

Compare Source

Fixes
  • (help) In long help, list Possible Values before defaults, rather than after, for a more consistent look

v4.5.42

Compare Source

Fixes
  • Include subcommand visible long aliases in --help

v4.5.41

Compare Source

Features
  • Add Styles::context and Styles::context_value to customize the styling of [default: value] like notes in the --help

v4.5.40

Compare Source

Features
  • Support quoted ids in arg!() macro (e.g. arg!("check-config": ...))

v4.5.39

Compare Source

Fixes
  • (help) Show short flag aliases before long
  • (help) Merge the short and long flag alias lists
open-cli-tools/concurrently (concurrently)

v9.2.5

Compare Source

What's Changed

Full Changelog: https://github.com/open-cli-tools/concurrently/compare/v9.2.4...v9.2.5

v9.2.4

Compare Source

Full Changelog: https://github.com/open-cli-tools/concurrently/compare/v9.2.3...v9.2.4

v9.2.3

Compare Source

streetsidesoftware/cspell (cspell)

v9.8.0

Compare Source

Features
feat: make flatpack diff friendly (#​8680)
feat: make flatpack diff friendly (#​8680)

v9.7.0

Compare Source

Features
feat: Substitution Part 4 - enable substitutions during document check (#​8630)
feat: Substitution Part 4 - enable substitutions during document check (#​8630)

v9.6.4

Compare Source

Fixes
fix: add --no-dictionary option to lint command (#​8514)
fix: add --no-dictionary option to lint command (#​8514)

v9.6.3

Compare Source

Fixes
fix: Add `engines` setting (#​8491)
fix: Add engines setting (#​8491)

v9.6.2

Compare Source

Fixes
fix: Conditionally compress and build bTrie (#​8437)
fix: Conditionally compress and build bTrie (#​8437)

v9.6.1

Compare Source

Fixes
fix: Move performance monitoring into its own package (#​8431)
fix: Move performance monitoring into its own package (#​8431)

v9.6.0

Compare Source

Features
feat: ESLint-plugin -- Distinguish between Forbidden, Misspelled, and Unknown words. (#​8337)
feat: ESLint-plugin -- Distinguish between Forbidden, Misspelled, and Unknown words. (#​8337)

v9.4.0

Compare Source

Features
feat: Add option to skip large files (#​8040)
feat: Add option to skip large files (#​8040)

New command line option: --max-file-size <value>
The value can be <number>[units], number with optional units.
Supported units:

  • K, KB - value * 1024
  • M, MB - value * 2^20
  • G, GB - value * 2^30

There is also a new setting called maxFileSize. At the moment, it only takes numbers in bytes.

This allows for setting a global value and overrides based upon glob settings.

Note: the command line value will override any value found in the configuration files.


Fixes
fix: turn off gpg when publishing for now (#​8104)
fix: turn off gpg when publishing for now (#​8104)

fix: Turnoff signing for now (#​8102)
fix: Turnoff signing for now (#​8102)

fix: Sign tags and commits when publishing (#​8096)
fix: Sign tags and commits when publishing (#​8096)

fix: Clean up verbose output (#​8053)
fix: Clean up verbose output (#​8053)

fix: allow string based maxFileSize (#​8047)
fix: allow string based maxFileSize (#​8047)
  • Support allowing string based maxFileSize in config files.
  • Report the number of skipped files.

Dictionary Updates
fix: Workflow Bot -- Update Dictionaries (main) (#​8091)
fix: Workflow Bot -- Update Dictionaries (main) (#​8091)
eslint/eslint (eslint)

v9.39.5

Compare Source

Bug Fixes
Documentation
Chores
  • 458205f chore: update @eslint/eslintrc and @eslint/js for v9.39.5 (#​21077) (Francesco Trotta)
  • 202117b chore: package.json update for @​eslint/js release (Jenkins)
  • d9eb6ed test: disable warning for vm.constants.USE_MAIN_CONTEXT_DEFAULT_LOADER (#​21074) (Francesco Trotta)
  • 7b431a7 chore: override re2 dependency for @metascraper/helpers (#​21068) (Milos Djermanovic)
  • daf7791 chore: pin fflate@​0.8.2 (#​20895) (Milos Djermanovic)
  • daee8ba ci: use pnpm in eslint-flat-config-utils type integration test (#​20829) (Milos Djermanovic)
  • 116d4be ci: unpin Node.js 25.x in CI (#​20619) (Copilot)

v9.39.4

Compare Source

Bug Fixes

Documentation

Chores

v9.39.3

Compare Source

Bug Fixes

  • 791bf8d fix: restore TypeScript 4.0 compatibility in types (#​20504) (sethamus)

Chores

v9.39.2

Compare Source

Bug Fixes

  • 5705833 fix: warn when eslint-env configuration comments are found (#​20381) (sethamus)

Chores

v9.39.1

Compare Source

Bug Fixes

  • 650753e fix: Only pass node to JS lang visitor methods (#​20283) (Nicholas C. Zakas)

Documentation

  • 51b51f4 docs: add a section on when to use extends vs cascading (#​20268) (Tanuj Kanti)
  • b44d426 docs: Update README (GitHub Actions Bot)

Chores

v9.39.0

Compare Source

Features

  • cc57d87 feat: update error loc to key in no-dupe-class-members (#​20259) (Tanuj Kanti)
  • 126552f feat: update error location in for-direction and no-dupe-args (#​20258) (Tanuj Kanti)
  • 167d097 feat: update complexity rule to highlight only static block header (#​20245) (jaymarvelz)

Bug Fixes

Documentation

  • d3e81e3 docs: Always recommend to include a files property (#​20158) (Percy Ma)
  • 0f0385f docs: use consistent naming recommendation (#​20250) (Alex M. Spieslechner)
  • a3b1456 docs: Update README (GitHub Actions Bot)
  • cf5f2dd docs: fix correct tag of no-useless-constructor (#​20255) (Tanuj Kanti)
  • 10b995c docs: add TS options and examples for nofunc in no-use-before-define (#​20249) (Tanuj Kanti)
  • 2584187 docs: remove repetitive word in comment (#​20242) (reddaisyy)
  • 637216b docs: update CLI flags migration instructions (#​20238) (jaymarvelz)
  • e7cda3b docs: Update README (GitHub Actions Bot)
  • 7b9446f docs: handle empty flags sections on the feature flags page (#​20222) (sethamus)

Chores

sweepline/eslint-plugin-unused-imports (eslint-plugin-unused-imports)

v4.4.1

Compare Source

No significant changes

    View changes on GitHub

v4.3.0

Compare Source

v4.2.0

Compare Source

rust-lang/futures-rs (futures)

v0.3.34

Compare Source

v0.3.33

Compare Source

  • Fix ReadLine's soundness issue regarding to exception safety. (#​3020)
  • Fix unsound Send impl for IterPinRef and Iter. (#​3003)
  • Fix stacked borrows violation in compat01as03 implementation. (#​3012)
  • Fix memory leak in FuturesUnordered::IntoIter. (#​3005)
  • Add portable-atomic-alloc feature and use it in FuturesUnordered. (#​3007)
  • Re-export alloc::task::Wake. (#​3010)
  • Update spin to 0.12. (#​3014)

v0.3.32

Compare Source

  • Bump MSRV of utility crates to 1.71. (#​2989)
  • Soft-deprecate ready! macro in favor of std::task::ready! added in Rust 1.64 (#​2925)
  • Soft-deprecate pin_mut! macro in favor of std::pin::pin! added in Rust 1.68 (#​2929)
  • Add FuturesOrdered::clear (#​2927)
  • Add mpsc::*Receiver::recv (#​2947)
  • Add mpsc::*Receiver::try_recv and deprecate mpsc::*Receiver::::try_next (#​2944)
  • Implement FusedStream for sink::With (#​2948)
  • Add no_std support for shared (#​2868)
  • Make Mutex::new() const (#​2956)
  • Add #[clippy::has_significant_drop] to guards (#​2967)
  • Remove dependency to pin-utils (#​2929)
  • Remove dependency on num_cpus (#​2946)
  • Performance improvements (#​2983)
  • Documentation improvements (#​2925, #​2926, #​2940, #​2971)
rust-lang/log (log)

v0.4.35

Compare Source

This release doesn't include source changes. It verifies log's new CI/CD processes.

Other
  • rework CI/CD to align with Rust project standards

v0.4.34

Compare Source

v0.4.33

Compare Source

v0.4.32

Compare Source

What's Changed
  • Support Value -> string conversions with kv + std features instead of kv_std by @​tisonkun in #​729

Full Changelog: https://github.com/rust-lang/log/compare/0.4.31...0.4.32

v0.4.31

Compare Source

What's Changed
  • Support Value -> string conversions with kv + std features instead of kv_std by @​tisonkun in #​729

Full Changelog: https://github.com/rust-lang/log/compare/0.4.31...0.4.32

v0.4.30

Compare Source

What's Changed
New Contributors

Full Changelog: https://github.com/rust-lang/log/compare/0.4.30...0.4.31

v0.4.29

Compare Source

What's Changed
New Contributors

Full Changelog: https://github.com/rust-lang/log/compare/0.4.29...0.4.30

Notable Changes
  • MSRV is bumped to 1.71.0 in #​723
isaacs/minimatch (minimatch)

v10.2.6

Compare Source

v10.2.5

Compare Source

v10.2.4

Compare Source

v10.2.3

Compare Source

v10.2.2

Compare Source

v10.2.1

Compare Source

v10.2.0

Compare Source

v10.1.3

Compare Source

v10.1.2

Compare Source

v10.1.1

Compare Source

v10.1.0

Compare Source

v10.0.3

Compare Source

v10.0.2

Compare Source

raineorshine/npm-check-updates (npm-check-updates)

v19.6.6

Compare Source

Auto Cooldown

The cooldown option is now automatically applied from the respective package manager's config:

  • npm - min-release-age (#​1632)
  • yarn - npmMinimalAgeGate (excluding npmPreapprovedPackages) (#​1643)
  • pnpm - minimumReleaseAge (excluding minimumReleaseAgeExclude) (#​1639)

Why is this a breaking change?

Other changes
New Contributors

Full Changelog: https://github.com/raineorshine/npm-check-updates/compare/v19.6.6...v20.0.0

v19.6.5

Compare Source

Full Changelog: https://github.com/raineorshine/npm-check-updates/compare/v19.6.5...v19.6.6

v19.6.3

Compare Source

What's Changed
New Contributors

Full Changelog: https://github.com/raineorshine/npm-check-updates/compare/v19.6.3...v19.6.5

v19.6.2

Compare Source

Full Changelog: https://github.com/raineorshine/npm-check-updates/compare/v19.6.2...v19.6.3

v19.6.1

Compare Source

What's Changed

Full Changelog: https://github.com/raineorshine/npm-check-updates/compare/v19.6.1...v19.6.2

v19.6.0

Compare Source

What's Changed

Full Changelog: https://github.com/raineorshine/npm-check-updates/compare/v19.6.0...v19.6.1

v19.5.0

Compare Source

What's Changed
  • Display link to compare the changes between package versions (--format diff) by @​diegocr in #​1602
New Contributors

Full Changelog: https://github.com/raineorshine/npm-check-updates/compare/v19.5.0...v19.6.0

v19.4.1

Compare Source

What's Changed
  • feat(homepage): Add --format homepage option to print homepage.

e.g.

$ ncu --format homepage
...
 mocha                      ^11.7.2  →   ^11.7.5    https://mochajs.org/
 npm-registry-fetch         ^19.0.0  →   ^19.1.1
 prettier                   ^3.6.2  →    ^3.8.1     https://prettier.io
...

Full Changelog: https://github.com/raineorshine/npm-check-updates/compare/v19.4.1...v19.5.0

v19.4.0

Compare Source

What's Changed
  • Fixed a small cooldown regression with number types in the ncurc

Full Changelog: https://github.com/raineorshine/npm-check-updates/compare/v19.4.0...v19.4.1

v19.3.2

Compare Source

What's Changed
New Contributors

Full Changelog: https://github.com/raineorshine/npm-check-updates/compare/v19.3.2...v19.4.0

v19.3.1

Compare Source

What's Changed
  • docs: close code tag instead of reopening another one by @​sod in #​1588
  • fix(tests): resolve EBUSY errors on Windows by retrying directory removal by @​Zamiell in #​1590
New Contributors

Full Changelog: https://github.com/raineorshine/npm-check-updates/compare/v19.3.1...v19.3.2

v19.3.0

Compare Source

What's Changed

Full Changelog: https://github.com/raineorshine/npm-check-updates/compare/v19.3.0...v19.3.1

v19.2.1

Compare Source

What's Changed

Full Changelog: https://github.com/raineorshine/npm-check-updates/compare/v19.2.1...v19.3.0

v19.2.0

Compare Source

Full Changelog: https://github.com/raineorshine/npm-check-updates/compare/v19.2.0...v19.2.1

v19.1.2

Compare Source

What's Changed
New Contributors

Full Changelog: https://github.com/raineorshine/npm-check-updates/compare/v19.1.2...v19.2.0

obsidianmd/obsidian-api (obsidian)

v1.14.4

Compare Source

v1.13.1

Compare Source

v1.13.0

Compare Source

v1.12.3

Compare Source

v1.12.2

Compare Source

v1.12.0

Compare Source

v1.11.4

Compare Source

prettier/prettier (prettier)

v3.9.10

Compare Source

diff

Markdown: Update micromark-extension-gfm-table to fix the table parse issue on performance (#​20266 by @​fisker)

See micromark/micromark-extension-gfm-table@4f43ead for details.

v3.9.9

Compare Source

diff

Markdown: Fix text with $ been incorrectly parsed as math syntax (#​20140 by @​fisker)
<!-- Input -->
**Uses $FOO** from `a.sh` and `b.sh`, plus `$BAR` from `c.sh`, before anything else runs here.

<!-- Prettier 3.9.8 -->
**Uses $FOO** from `a.sh` and `b.sh`, plus `$BAR`from`c.sh`, before anything else runs here.

<!-- Prettier 3.9.9 -->
**Uses $FOO** from `a.sh` and `b.sh`, plus `$BAR` from `c.sh`, before anything else runs here.

v3.9.8

Compare Source

diff

Markdown: Don't let Liquid objects interrupt paragraphs (#​20087 by @​seiyab)
<!-- Input -->
If `module` is not a [`WebAssembly.Module`](/en-US/docs/WebAssembly/Reference/JavaScript_interface/Module) object instance, a
{{jsxref("TypeError")}} is thrown.

<!-- Prettier 3.9.7 -->
If `module` is not a [`WebAssembly.Module`](/en-US/docs/WebAssembly/Reference/JavaScript_interface/Module) object instance, a

{{jsxref("TypeError")}} is thrown.

<!-- Prettier 3.9.8 -->
If `module` is not a [`WebAssembly.Module`](/en-US/docs/WebAssembly/Reference/JavaScript_interface/Module) object instance, a
{{jsxref("TypeError")}} is thrown.

v3.9.7

Compare Source

diff

Markdown: Prevent indentation drift in list-item code blocks (#​19647, #​19990 by @​Austin1serb, @​giaBaoJS)
<!-- Input -->
- [x] short first line.

      second paragraph at six spaces that wraps
      onto another line here.

<!-- Prettier 3.9.6 -->
- [x] short first line.

      second paragraph at six spaces that wraps
          onto another line here.

<!-- Prettier 3.9.7 -->
- [x] short first line.

      second paragraph at six spaces that wraps
      onto another line here.
JavaScript: Fix embedded template literal idempotency (#​19725 by @​fisker)
// Input
const foo = html`
            <div>${getText({
            value,
            })}</div>
`;

// Prettier 3.9.6 (first format)
const foo = html`
  <div>
    ${getText({
              value,
            })}
  </div>
`;

// Prettier 3.9.6 (second format)
const foo = html`
  <div>
    ${getText({
      value,
    })}
  </div>
`;

// Prettier 3.9.7
const foo = html`
  <div>
    ${getText({
      value,
    })}
  </div>
`;
Markdown: Preserve Liquid blocks after Markdown tables (#​19730 by @​wanxiankai, @​seiyab)
<!-- Input -->
| Argument | Type |
| -------- | ---- |
{% set default_params = {
    "model": ["str"],
} %}

<!-- Prettier 3.9.6 -->
| Argument                  | Type |
| ------------------------- | ---- |
| {% set default_params = { |

    "model": ["str"],

} %}

<!-- Prettier 3.9.7 -->
| Argument | Type |
| -------- | ---- |
{% set default_params = {
    "model": ["str"],
} %}
Markdown: Preserve single tildes in Markdown (#​19739 by @​lazerg)

Since 3.9.0, single-tilde spans like H~2~O were rewritten to double tildes, turning subscript syntax into strike-through. Only double tildes are treated that way now, matching GitHub.

<!-- Input -->
H~2~O

<!-- Prettier 3.9.6 -->
H~~2~~O

<!-- Prettier 3.9.7 -->
H~2~O
Markdown: Fix Markdown blockquote containing > characters (#​19802 by @​seiyab)
<!-- Input -->
> **test**\>

<!-- Prettier 3.9.6 -->
> **test**>\>

<!-- Prettier 3.9.7 -->
> **test**\>
Markdown: Strip blockquote markers from a setext heading's continuation lines (#​19878 by @​Kjubikstronk)

A setext heading spanning multiple lines inside a blockquote kept the > marker of its continuation lines as literal text.

<!-- Input -->
> Multi
> Line
> ===

<!-- Prettier 3.9.6 -->
> Multi > Line
> ===

<!-- Prettier 3.9.7 -->
> Multi
> Line
> ===
Markdown: Fix HTML block indentation drift in markdown list items (#​19987 by @​lazerg)
<!-- Input -->
1. Enable images:

    <p align="center">
      <img alt="example">
    </p>

<!-- Prettier 3.9.6 (--tab-width=4) -->
1. Enable images:

     <p align="center">
       <img alt="example">
     </p>

<!-- Prettier 3.9.7 (--tab-width=4) -->
1. Enable images:

    <p align="center">
      <img alt="example">
    </p>
Angular: Support @boundary error boundaries (#​20014 by @​Yahiro025)
<!-- Input -->
@boundary {
<complex-chart [data]="data"/>
}
@error (let err) {
<p>{{err.message}}</p>
}

<!-- Prettier 3.9.6 -->
SyntaxError: Unexpected character "EOF" (Do you have an unescaped "{" in your template? Use "{{ '{' }}") to escape it.) (6:1)

<!-- Prettier 3.9.7 -->
@boundary {
  <complex-chart [data]="data" />
} @error (let err) {
  <p>{{ err.message }}</p>
}

v3.9.6

Compare Source

diff

TypeScript: Preserve quotes for methods named new (#​19621 by @​kovsu)
// Input
interface Container {
  "new"(id: string): number;
}

// Prettier 3.9.5
interface Container {
  new(id: string): number;
}

// Prettier 3.9.6
interface Container {
  "new"(id: string): number;
}
TypeScript: Support import defer (#​19624, #​19675 by @​fisker)
// Input
import defer * as foo from "foo";

// Prettier 3.9.5
import * as foo from "foo";

// Prettier 3.9.6
import defer * as foo from "foo";
JavaScript: Added a new official plugin @prettier/plugin-yuku (#​19628, #​19629 by @​fisker)

@prettier/plugin-yuku is powered by Yuku (A high-performance JavaScript/TypeScript compiler toolchain written in Zig).

This plugin includes two new parsers: yuku (JavaScript syntax) and yuku-ts (TypeScript syntax).

To use this plugin:

  1. Install the plugin:

    yarn add --dev prettier @prettier/plugin-yuku
    
  2. Add it to your .prettierrc:

    plugins:
      - "@prettier/plugin-yuku"
    

Due to package size limitations, this plugin is not bundled with the main prettier package and must be installed separately.

For more information, check the package homepage.

Big thanks to @​arshad-yaseen for his excellent work.

v3.9.5

Compare Source

diff

Markdown: Cap ordered list mark at 999,999,999 (#​19351 by @​tats-u)

CommonMark parsers only support ordered list item numbers up to 999,999,999.

With this change, Prettier now caps the ordered list item number at 999,999,999 to ensure that the output is correctly parsed as an ordered list by CommonMark parsers. Numbers larger than 999,999,999 are not parsed as list item numbers and are left unchanged in the output:

<!-- Input -->
999999998. text
999999998. text
999999998. text
999999998. text

1234567890123456789012) text

<!-- Prettier 3.9.4 -->
999999998. text
999999999. text
1000000000. text
1000000001. text

1234567890123456789012) text

<!-- Prettier 3.9.5 -->
999999998. text
999999999. text
999999999. text
999999999. text

1234567890123456789012) text

Do not remove <> from an inline link or image with an empty URL and a title, as this removal would change its interpretation.

<!-- Input -->
[link](<> "title")

<!-- Prettier 3.9.4 -->
[link]( "title")

<!-- Prettier 3.9.5 -->
[link](<> "title")
Less: Remove extra spaces after [ in map lookups (#​19503 by @​kovsu)
// Input
.foo {
  color: #theme[ primary];
  color: #theme[@name];
  color: #theme[@@name];
}

// Prettier 3.9.4
.foo {
  color: #theme[ primary];
  color: #theme[ @name];
  color: #theme[ @@name];
}

// Prettier 3.9.5
.foo {
  color: #theme[primary];
  color: #theme[@name];
  color: #theme[@@name];
}
CSS: Prevent addition space in type() with + (#​19516 by @​bigandy)

This fixes the addition space before + in CSS type() declaration. For example type(<number>+) was being converted into type(<number> +) which is invalid CSS and does not work.

/* Input */
div {
  border-radius: attr(br type(<length>+));
}

/* Prettier 3.9.4 */
div {
  border-radius: attr(br type(<length> +));
}

/* Prettier 3.9.5 */
div {
  border-radius: attr(br type(<length>+));
}
Less: Remove spaces between merge markers and colons (#​19517 by @​kovsu)
// Input
a {
  box-shadow  +  : 0 0 1px #&#8203;000;
}

// Prettier 3.9.4
a {
  box-shadow+  : 0 0 1px #&#8203;000;
}

// Prettier 3.9.5
a {
  box-shadow+: 0 0 1px #&#8203;000;
}
<!-- Input -->
[[Foo:Bar]]

<!-- Prettier 3.9.4 -->
[[Foo]]

<!-- Prettier 3.9.5 -->
[[Foo:Bar]]
TypeScript: Fix comments being dropped on shorthand type import/export specifiers (#​19565 by @​kirkwaiblinger)
// Input
export { type /* comment */ T } from "foo";
import { type /* comment */ T } from "foo";

// Prettier 3.9.4
Error: Comment "comment" was not printed. Please report this error!

// Prettier 3.9.5
export { type /* comment */ T } from "foo";
import { type /* comment */ T } from "foo";
Miscellaneous: Preserving comments' placement property (#​19567 by @​Janther)

Prettier@​3.9.0 deleted an undocumented property on comments, which was already used by plugins, comment.placement is now available again after comment attach.

Flow: Stop enforcing empty module declaration to break (#​19568 by @​fisker)
// Input
declare module "foo" {}

// Prettier 3.9.4
declare module "foo" {
}

// Prettier 3.9.5
declare module "foo" {}
Angular: Support expression for exhaustive typechecking (#​19571 by @​fisker)
<!-- Input -->
@switch (state.mode) {
  @default never(state);
}

<!-- Prettier 3.9.4 -->
@switch (state.mode) {
  @default never;
}

<!-- Prettier 3.9.5 -->
@switch (state.mode) {
  @default never(state);
}
TypeScript: Ignore comments inside mapped type when checking type parameter comments (#​19572 by @​fisker)
// Input
foo<{
  // comment
  [key in keyof Foo]: number
}>();

// Prettier 3.9.4
foo<
  {
    // comment
    [key in keyof Foo]: number;
  }
>();

// Prettier 3.9.5
foo<{
  // comment
  [key in keyof Foo]: number;
}>();
Less: Fix adjacent block comments being corrupted (#​19574 by @​kovsu)
// Input
/* a *//* b */
/* a */* {
  color: red;
}

// Prettier 3.9.4
/* a */
/* b */
/* a * {
  color: red;
}

// Prettier 3.9.5
/* a */ /* b */
/* a */
* {
  color: red;
}
JavaScript: Handle dangling comments in SwitchStatement (#​19581 by @​fisker)
// Input
switch (foo) {
 // comment
}

// Prettier 3.9.4
switch (
  foo
  // comment
) {
}

// Prettier 3.9.5
switch (foo) {
  // comment
}
TypeScript: Remove space in comment-only object type (#​19583 by @​fisker)
// Input
var foo = {
  /* comment */
};
type Foo = {
  /* comment */
};

// Prettier 3.9.4
var foo = {/* comment */};
type Foo = { /* comment */ };

// Prettier 3.9.5
var foo = {/* comment */};
type Foo = {/* comment */};

v3.9.4

Compare Source

diff

Angular: Format @content(name) -> @content (name) to align with other block syntax (#​19499 by @​fisker)
<!-- Input -->
<FancyButton [label]="title">
  @content (icon) {
    <span>Icon!</span>
  }
  @content (description) {
    <span>Description text</span>
  }
  <span>Other children</span>
</FancyButton>

<!-- Prettier 3.9.3 -->
<FancyButton [label]="title">
  @content(icon) {
    <span>Icon!</span>
  }
  @content(description) {
    <span>Description text</span>
  }
  <span>Other children</span>
</FancyButton>

<!-- Prettier 3.9.4 -->
<FancyButton [label]="title">
  @content (icon) {
    <span>Icon!</span>
  }
  @content (description) {
    <span>Description text</span>
  }
  <span>Other children</span>
</FancyButton>

v3.9.3

Compare Source

diff

Markdown: Fix unexpected removal of characters in liquid syntax (#​19489 by @​seiyab)
// Input
<!-- Input -->
{{ page.title
}} text

<!-- Prettier 3.9.1 -->
{{ page.title
 text

<!-- Prettier 3.9.3 -->
{{ page.title
}} text
TypeScript: Allow decorators to be used with declare on class fields (#​19492 by @​evoactivity)

Extensively used within the Ember ecosystem, decorators with declare on class fields will ignore the babel parser error and allow Prettier to format the code without breaking it.

// Input
export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
  @service declare server: ServerService;
}

// Prettier 3.9.1
// SyntaxError: Decorators can't be used with a declare field. (2:3)
//  1 | export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
//> 2 |   @service declare server: ServerService;
//    |   ^
//  3 | }

// Prettier 3.9.3
export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
  @service declare server: ServerService;
}

v3.9.2

Compare Source

v3.9.1

Compare Source

diff

Markdown: Update micromark-extension-gfm-table to fix the table parse issue on performance (#​20266 by @​fisker)

See micromark/micromark-extension-gfm-table@4f43ead for details.

v3.9.0

Compare Source

diff

🔗 Release Notes

v3.8.5

Compare Source

diff

Flow: Support readonly as a variance annotation (#​19022 by @​marcoww6)

Flow now accepts readonly as a property variance annotation, equivalent to + (covariant/read-only).

// Input
type T = {
  readonly foo: string,
};

// Prettier 3.8.4
SyntaxError

// Prettier 3.8.5
type T = {
  readonly foo: string,
};

v3.8.4

Compare Source

diff

Markdown: Fix blank lines between list items and nested sub-lists being removed in Markdown/MDX (#​17746 by @​byplayer)

Prettier was removing blank lines between list items and their nested sub-lists, converting loose lists into tight lists and changing their semantic meaning.

<!-- Input -->
- a

  - b

- c

  - d

<!-- Prettier 3.8.3 -->
- a
  - b
- c
  - d

<!-- Prettier 3.8.4 -->
- a

  - b

- c

  - d

v3.8.3

Compare Source

diff

SCSS: Prevent trailing comma in if() function (#​18471 by @​kovsu)
// Input
$value: if(sass(false): 1; else: -1);

// Prettier 3.8.2
$value: if(
  sass(false): 1; else: -1,
);

// Prettier 3.8.3
$value: if(sass(false): 1; else: -1);

v3.8.2

Compare Source

diff

Angular: Support Angular v21.2 (#​18722, #​19034 by @​fisker)

Exhaustive typechecking with @default never;

<!-- Input -->
@switch (foo) {
  @case (1) {}
  @default never;
}

<!-- Prettier 3.8.1 -->
SyntaxError: Incomplete block "default never". If you meant to write the @ character, you should use the "&#&#8203;64;" HTML entity instead. (3:3)

<!-- Prettier 3.8.2 -->
@switch (foo) {
  @case (1) {}
  @default never;
}

arrow function and instanceof expressions.

<!-- Input -->
@let fn = (a) =>        a?    1:2;

{{ fn ( a         instanceof b)}}

<!-- Prettier 3.8.1 -->
@let fn = (a) =>        a?    1:2;

{{ fn ( a         instanceof b)}}

<!-- Prettier 3.8.2 -->
@let fn = (a) => (a ? 1 : 2);

{{ fn(a instanceof b) }}

v3.8.1

Compare Source

diff

Include available printers in plugin type declarations (#​18706 by @​porada)
// Input
import * as prettierPluginEstree from "prettier/plugins/estree";

// Prettier 3.8.0
// Property 'printers' does not exist on type 'typeof import("prettier/plugins/estree")'. ts(2339)
prettierPluginEstree.printers.estree; //=> any

// Prettier 3.8.1
prettierPluginEstree.printers.estree; //=> Printer
prettierPluginEstree.printers["estree-json"]; //=> Printer

v3.8.0

Compare Source

diff

🔗 Release Notes

v3.7.4

Compare Source

diff

LWC: Avoid quote around interpolations (#​18383 by @​kovsu)
<!-- Input -->
<div foo={bar}>   </div>

<!-- Prettier 3.7.3 (--embedded-language-formatting off) -->
<div foo="{bar}"></div>

<!-- Prettier 3.7.4 (--embedded-language-formatting off) -->
<div foo={bar}></div>
TypeScript: Fix comment inside union type gets duplicated (#​18393 by @​fisker)
// Input
type Foo = (/** comment */ a | b) | c;

// Prettier 3.7.3
type Foo = /** comment */ (/** comment */ a | b) | c;

// Prettier 3.7.4
type Foo = /** comment */ (a | b) | c;
TypeScript: Fix unstable comment print in union type comments (#​18395 by @​fisker)
// Input
type X = (A | B) & (
  // comment
  A | B
);

// Prettier 3.7.3 (first format)
type X = (A | B) &
  (// comment
  A | B);

// Prettier 3.7.3 (second format)
type X = (
  | A
  | B // comment
) &
  (A | B);

// Prettier 3.7.4
type X = (A | B) &
  // comment
  (A | B);

v3.7.3

Compare Source

diff

API: Fix prettier.getFileInfo() change that breaks VSCode extension (#​18375 by @​fisker)

An internal refactor accidentally broke the VSCode extension plugin loading.

v3.7.2

Compare Source

diff

JavaScript: Fix string print when switching quotes (#​18351 by @​fisker)
// Input
console.log("A descriptor\\'s .kind must be \"method\" or \"field\".")

// Prettier 3.7.1
console.log('A descriptor\\'s .kind must be "method" or "field".');

// Prettier 3.7.2
console.log('A descriptor\\\'s .kind must be "method" or "field".');
JavaScript: Preserve quote for embedded HTML attribute values (#​18352 by @​kovsu)
// Input
const html = /* HTML */ ` <div class="${styles.banner}"></div> `;

// Prettier 3.7.1
const html = /* HTML */ ` <div class=${styles.banner}></div> `;

// Prettier 3.7.2
const html = /* HTML */ ` <div class="${styles.banner}"></div> `;
TypeScript: Fix comment in empty type literal (#​18364 by @​fisker)
// Input
export type XXX = {
  // tbd
};

// Prettier 3.7.1
export type XXX = { // tbd };

// Prettier 3.7.2
export type XXX = {
  // tbd
};

v3.7.1

Compare Source

diff

API: Fix performance regression in doc printer (#​18342 by @​fisker)

Prettier 3.7.0 can be very slow when formatting big files, the regression has been fixed.

v3.7.0

Compare Source

diff

🔗 Release Notes

rust-random/rand (rand)

v0.10.3

Compare Source

Fixes
  • Fix WeightedIndex panic when the sum of float weights is infinite; return Error::Overflow instead (#​1808)
  • Fix spurious Error::NonFinite from Uniform::new_inclusive on large finite float ranges such as 0.0..=f64::MAX (#​1821)
  • Fix possible panic due to sampling a deserialized Uniform<char> (#​1831)
Changes
  • Report exact remaining lengths from WeightedIndex::weights() and reduce overhead when reading weights (#​1838)

v0.10.2

Compare Source

Fixes
  • Fix possible memory safety violation due to deserialization of UniformChar from bad source (#​1790)
Changes
  • Document required output order of fn partial_shuffle and apply #[must_use] (#​1769)
  • Avoid usage of unsafe in contexts where non-local memory corruption could invalidate contract (#​1791)

v0.10.1

Compare Source

This release includes a fix for a soundness bug; see #​1763.

Changes
  • Document panic behavior of make_rng and add #[track_caller] (#​1761)
  • Deprecate feature log (#​1763)

v0.10.0

Compare Source

Changes
  • The dependency on rand_chacha has been replaced with a dependency on chacha20. This changes the implementation behind StdRng, but the output remains the same. There may be some API breakage when using the ChaCha-types directly as these are now the ones in chacha20 instead of rand_chacha (#​1642).
  • Rename fns IndexedRandom::choose_multiple -> sample, choose_multiple_array -> sample_array, choose_multiple_weighted -> sample_weighted, struct SliceChooseIter -> IndexedSamples and fns IteratorRandom::choose_multiple -> sample, choose_multiple_fill -> sample_fill (#​1632)
  • Use Edition 2024 and MSRV 1.85 (#​1653)
  • Let Fill be implemented for element types, not sliceable types (#​1652)
  • Fix OsError::raw_os_error on UEFI targets by returning Option<usize> (#​1665)
  • Replace fn TryRngCore::read_adapter(..) -> RngReadAdapter with simpler struct RngReader (#​1669)
  • Remove fns SeedableRng::from_os_rng, try_from_os_rng (#​1674)
  • Remove Clone support for StdRng, ReseedingRng (#​1677)
  • Use postcard instead of bincode to test the serde feature (#​1693)
  • Avoid excessive allocation in IteratorRandom::sample when amount is much larger than iterator size (#​1695)
  • Rename os_rng -> sys_rng, OsRng -> SysRng, OsError -> SysError (#​1697)
  • Rename Rng -> RngExt as upstream rand_core has renamed RngCore -> Rng (#​1717)
Additions
  • Add fns IndexedRandom::choose_iter, choose_weighted_iter (#​1632)
  • Pub export Xoshiro128PlusPlus, Xoshiro256PlusPlus prngs (#​1649)
  • Pub export ChaCha8Rng, ChaCha12Rng, ChaCha20Rng behind chacha feature (#​1659)
  • Fn rand::make_rng() -> R where R: SeedableRng (#​1734)
Removals

v0.9.5

Compare Source

What's Changed

Full Changelog: https://github.com/rust-random/rand/compare/0.9.4...0.9.5

v0.9.4

Compare Source

Fixes

Full Changelog: https://github.com/rust-random/rand/compare/0.9.3...0.9.4

v0.9.3

Compare Source

This release back-ports a fix from v0.10. See also [#​1763].

Changes

Full Changelog: https://github.com/rust-random/rand/compare/0.9.2...0.9.3

v0.9.2

Compare Source

Deprecated
  • Deprecate rand::rngs::mock module and StepRng generator ([#​1634])
Additions
  • Enable WeightedIndex<usize> (de)serialization ([#​1646])

v0.9.1

Compare Source

Security and unsafe
  • Revise "not a crypto library" policy again (#​1565)
  • Remove zerocopy dependency from rand (#​1579)
Fixes
  • Fix feature simd_support for recent nightly rust (#​1586)
Changes
  • Allow fn rand::seq::index::sample_weighted and fn IndexedRandom::choose_multiple_weighted to return fewer than amount results (#​1623), reverting an undocumented change ([#​1382]) to the previous release.
Additions
  • Add rand::distr::Alphabetic distribution. (#​1587)
  • Re-export rand_core (#​1604)
rust-lang/regex (regex)

v1.13.1

Compare Source

===================
This is a release that fixes a bug where incorrect regex match offsets could be
reported. Note that this doesn't impact whether a match occurs or not, just
where it occurs. The match offsets are still valid for slicing, they just may
not refer to the correct leftmost-first match. See
#​1364 for (many) more details.

Bug fixes:

  • #​1354:
    Fixes previously unsound reverse suffix and inner optimizations.

v1.13.0

Compare Source

===================
This release includes a new API, a regex! macro, for lazy compilation of
a regex from a string literal. If you use regexes a lot, it's likely you've
already written one exactly like it. The new macro can be used like this:

use regex::regex;

fn is_match(line: &str) -> bool {
    // The regex will be compiled approximately once and reused automatically.
    // This avoids the footgun of using `Regex::new` here, which would
    // guarantee that it would be compiled every time this routine is called.
    // This would likely make this routine much slower than it needs to be.
    regex!(r"bar|baz").is_match(line)
}

let hay = "\
path/to/foo:54:Blue Harvest
path/to/bar:90:Something, Something, Something, Dark Side
path/to/baz:3:It's a Trap!
";

let matches = hay.lines().filter(|line| is_match(line)).count();
assert_eq!(matches, 2);

Improvements:

  • #​709:
    Add a new regex! macro for efficient and automatic reuse of a compiled regex.

v1.12.4

Compare Source

===================
This release includes a performance optimization for compilation of regexes
with very large character classes.

Improvements:

  • #​1308:
    Avoid re-canonicalizing the entire interval set when pushing new class ranges.

v1.12.3

Compare Source

===================
This release excludes some unnecessary things from the archive published to
crates.io. Specifically, fuzzing data and various shell scripts are now
excluded. If you run into problems, please file an issue.

Improvements:

  • #​1319:
    Switch from a Cargo exclude list to an include list, and exclude some
    unnecessary stuff.
rust-lang/rust (rust)

v1.99.1

Compare Source

===========================

v1.99.0

Compare Source

==========================

Language

Compiler

Platform Support

Refer to Rust's platform support page
for more information on Rust's tiered platform support.

Libraries

Stabilized APIs

Cargo

  • Add a new built-in profile debug. This is a preparation for transitioning the dev profile away from debugging to give a saner default for faster development iterations. Currently there is no difference between dev and debug profiles. docs #​17214
  • Workspace members on edition 2024 or later can now override an inherited workspace dependency's default-features field. For example, serde = { workspace = true, default-features = false } now turns off default features even when the workspace definition enables them. On earlier editions, default-features = false is ignored with a warning. (RFC 3945) #​17126

See also the full Cargo changelog

Rustdoc

Compatibility Notes

Internal Changes

These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.

v1.98.1

Compare Source

===========================

v1.98.0

Compare Source

==========================

Language

Platform Support

Refer to Rust's platform support page
for more information on Rust's tiered platform support.

Libraries

Stabilized APIs

Compatibility Notes

v1.97.1

Compare Source

==========================

  • rustc: Fix miscompilation in LLVM optimization
    This backports an LLVM submodule bump to include the LLVM-side fix and a
    revert of the rustc change that is one known trigger for the bug. The rustc
    side revert should not be strictly necessary but is done out of abundance of caution.

v1.97.0

Compare Source

==========================

Language

Platform Support

Refer to Rust's platform support page
for more information on Rust's tiered platform support.

Stabilized APIs

These previously stable APIs are now stable in const contexts:

Cargo

Rustdoc

Compatibility Notes

v1.96.1

Compare Source

===========================

v1.96.0

Compare Source

==========================

Language

Compiler

Libraries

Stabilized APIs

Cargo

Rustdoc

Compatibility Notes

Internal Changes

These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.

v1.95.0

Compare Source

===========================

Language

Compiler

Platform Support

Refer to Rust's platform support page
for more information on Rust's tiered platform support.

Libraries

Stabilized APIs

These previously stable APIs are now stable in const contexts:

Rustdoc

Compatibility Notes

Internal Changes

These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.

v1.94.1

Compare Source

===========================

v1.94.0

Compare Source

==========================

Language

Compiler

Libraries

Stabilized APIs

Cargo

Rustdoc

Compatibility Notes

Internal Changes

These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.

v1.93.1

Compare Source

===========================

v1.93.0

Compare Source

==========================

Language

Compiler

Platform Support

Refer to Rust's platform support page
for more information on Rust's tiered platform support.

Libraries

Stabilized APIs

Cargo

Rustdoc

Compatibility Notes

v1.92.0

Compare Source

==========================

Language

Compiler

Libraries

Stabilized APIs

These previously stable APIs are now stable in const contexts:

Cargo

Rustdoc

Compatibility Notes

v1.91.1

Compare Source

===========================

v1.91.0

Compare Source

==========================

Language

Compiler

Platform Support

Refer to Rust's platform support page
for more information on Rust's tiered platform support.

Libraries

Stabilized APIs

These previously stable APIs are now stable in const contexts:

Cargo

  • 🎉 Stabilize build.build-dir.
    This config sets the directory where intermediate build artifacts are stored.
    These artifacts are produced by Cargo and rustc during the build process.
    End users usually won't need to interact with them, and the layout inside
    build-dir is an implementation detail that may change without notice.
    (config doc)
    (build cache doc)
    #​15833
    #​15840
  • The --target flag and the build.target configuration can now take literal
    "host-tuple" string, which will internally be substituted by the host
    machine's target triple.
    #​15838
    #​16003
    #​16032

Rustdoc

Compatibility Notes

Cargo compatibility notes:

  • cargo publish no longer keeps .crate tarballs as final build artifacts
    when build.build-dir is set. These tarballs were previously included due to
    an oversight and are now treated as intermediate artifacts.
    To get .crate tarballs as final artifacts, use cargo package.
    In a future version, this change will apply regardless of build.build-dir.
    #​15910
  • Adjust Cargo messages to match rustc diagnostic style.
    This changes some of the terminal colors used by Cargo messages.
    #​15928
  • Tools and projects relying on the
    internal details of Cargo's build-dir
    may not work for users changing their build-dir layout.
    For those doing so, we'd recommend proactively testing these cases
    particularly as we are considering changing the default location of the build-dir in the future
    (cargo#16147).
    If you can't migrate off of Cargo's internal details,
    we'd like to learn more about your use case as we prepare to change the layout of the build-dir
    (cargo#15010).

Internal Changes

These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.

v1.90.0

Compare Source

===========================

Language

Compiler

Platform Support

Refer to Rust's platform support page
for more information on Rust's tiered platform support.

Libraries

Stabilized APIs

These previously stable APIs are now stable in const contexts:

Cargo

Rustdoc

Compatibility Notes

serde-rs/serde (serde)

v1.0.229

Compare Source

  • Update to syn 3
serde-rs/json (serde_json)

v1.0.154

Compare Source

v1.0.153

Compare Source

v1.0.152

Compare Source

v1.0.151

Compare Source

v1.0.150

Compare Source

v1.0.149

Compare Source

  • Align arbitrary_precision number strings with zmij's formatting (#​1306, thanks @​b41sh)

v1.0.148

Compare Source

  • Update zmij dependency to 1.0

v1.0.147

Compare Source

  • Switch float-to-string algorithm from Ryū to Żmij for better f32 and f64 serialization performance (#​1304)

v1.0.146

Compare Source

launchbadge/sqlx (sqlx)

v0.9.0

Compare Source

Important Announcements
New Github Organization

Shortly after this release is published, the SQLx repository will be transferred to a new GitHub organization:
https://github.com/transact-rs/

This is because SQLx has not been owned or maintained by LaunchBadge, LLC. for a few years now, and has since been
informally transferred to the collective ownership of its principal authors. Moving the repository to a new
organization makes this change more clear, and also allows for potentially inviting outside collaborators.

Cargo.lock Removed from Tracking

The Cargo.lock has been removed from tracking in Git. CI should now always test with the latest versions of
all dependencies by default, alongside our pass that checks with cargo generate-lockfile -Z minimal-versions.

This should eliminate the need for any PRs that update dependencies to also update Cargo.lock or
contend with an endless stream of merge conflicts against it.

N.B. cargo install --locked sqlx-cli will no longer work. However, cargo install sqlx-cli has always
used the latest dependencies by default, ignoring the lockfile, so most users should not be affected. For users
requiring reproducible builds, consider maintaining your own lockfile instead; historically, we only ran cargo update
sporadically, so relying on SQLx's lockfile offered few guarantees anyway.

See the manual page for cargo install for details.

Breaking

As per our MSRV policy, the supported Rust version for this release cycle is 1.94.0.

  • [#​3383]: feat: create sqlx.toml format [[@​abonander]]
    • SQLx and sqlx-cli now support per-crate configuration files (sqlx.toml)
    • New functionality includes, but is not limited to:
      • Rename DATABASE_URL for a crate (for multi-database workspaces)
      • Set global type overrides for the macros (supporting custom types)
      • Rename or relocate the _sqlx_migrations table (for multiple crates using the same database)
      • Set characters to ignore when hashing migrations (e.g. ignore whitespace)
    • More to be implemented in future releases.
    • Enable feature sqlx-toml to use.
    • Guide: see sqlx::_config module in documentation.
    • Reference: [Link]
    • Examples (written for Postgres but can be adapted to other databases; PRs welcome!):
      • Multiple databases using DATABASE_URL renaming and global type overrides: [Link]
      • Multi-tenant database using _sqlx_migrations renaming and multiple schemas: [Link]
      • Force use of chrono when time is enabled (e.g. when using tower-sessions-sqlx-store): [Link]
        • Forcing bigdecimal when rust_decimal is enabled is also shown, but problems with chrono/time are more common.
    • Breaking changes:
      • Significant changes to the Migrate trait
      • sqlx::migrate::resolve_blocking() is now #[doc(hidden)] and thus SemVer-exempt.
  • [#​3486]: fix(logs): Correct spelling of aquired_after_secs tracing field [[@​iamjpotts]]
    • Breaking behavior change: implementations parsing tracing logs from SQLx will need to update the spelling.
  • [#​3495]: feat(postgres): remove lifetime from PgAdvisoryLockGuard [[@​bonsairobo]]
  • [#​3526]: Return &mut Self from the migrator set_ methods [[@​nipunn1313]]
    • Minor breaking change: Migrator::set_ignore_missing and set_locking now return &mut Self instead of &Self
      which may break code in rare circumstances.
  • [#​3541]: Postgres: force generic plan for better nullability inference. [[@​joeydewaal]]
    • Breaking change: may alter the output of the query!() macros for certain queries in Postgres.
  • [#​3613]: fix: RawSql lifetime issues [[@​abonander]]
    • Breaking change: adds DB type parameter to all methods of RawSql
  • [#​3670]: Bump ipnetwork to v0.21.1 [[@​BeauGieskens]]
  • [#​3674]: Implement Decode, Encode and Type for Box, Arc, Cow and Rc [[@​joeydewaal]]
    • Breaking change: impl Decode for Cow now always decodes Cow::Owned, lifetime is unlinked
    • See this discussion for motivation: #​3674 (comment)
  • [#​3723]: Add SqlStr [[@​joeydewaal]]
    • Breaking change: all query*() functions now take impl SqlSafeStr
      which is only implemented for &'static str and AssertSqlSafe.
      For all others, wrap in AssertSqlSafe(<query>).
    • This, along with [#​3960], finally allows returning owned queries as the type will be Query<'static, DB>.
    • SqlSafeStr trait is deliberately similar to std::panic::UnwindSafe,
      serving as a speedbump to warn users about naïvely building queries with format!()
      while allowing a workaround for advanced usage that is easy to spot on code review.
  • [#​3800]: Escape PostgreSQL Options [[@​V02460]]
    • Breaking behavior change: options passed to PgConnectOptions::options() are now automatically escaped.
      Manual escaping of options is no longer necessary and may cause incorrect behavior.
  • [#​3821]: Groundwork for 0.9.0-alpha.1 [[@​abonander]]
    • Increased MSRV to 1.86 and set rust-version
    • Deleted deprecated combination runtime+TLS features (e.g. runtime-tokio-native-tls)
    • Deleted re-export of unstable TransactionManager trait in sqlx.
      • Not technically a breaking change because it's #[doc(hidden)],
        but it will break SeaORM if not proactively fixed.
  • [#​3924]: breaking(mysql): assume all non-binary collations compatible with str [[@​abonander]]
    • Text (or text-like) columns which previously were inferred to be Vec<u8> will be inferred to be String
      (this should ultimately fix more code than it breaks).
    • SET NAMES utf8mb4 COLLATE utf8_general_ci is no longer sent by default; instead, SET NAMES utf8mb4 is sent to
      allow the server to select the appropriate default collation (since this is version- and configuration-dependent).
    • MySqlConnectOptions::charset() and ::collation() now imply ::set_names(true) because they don't do anything otherwise.
    • Setting charset doesn't change what's sent in the Protocol::HandshakeResponse41 packet as that normally only
      matters for error messages before SET NAMES is sent.
      The default collation if set_names = false is utf8mb4_general_ci.
    • See this comment for details.
    • Incidental breaking change: RawSql::fetch_optional() now returns sqlx::Result<Option<DB::Row>>
      instead of sqlx::Result<DB::Row>. Whoops.
  • [#​3928]: breaking(sqlite): libsqlite3-sys versioning, feature flags, safety changes [[@​abonander]]
    • SemVer policy changes: libsqlite3-sys version is now specified using a range.
      The maximum of the range may now be increased in any backwards-compatible release.
      The minimum of the range may only be increased in major releases.
      If you have libsqlite3-sys in your dependencies, Cargo should choose a compatible version automatically.
      If otherwise unconstrained, Cargo should choose the latest version supported.
    • SQLite extension loading (including through the new sqlx-toml feature) is now unsafe.
    • Added new non-default features corresponding to conditionally compiled SQLite APIs:
      • sqlite-deserialize enabling SqliteConnection::serialize() and SqliteConnection::deserialize()
      • sqlite-load-extension enabling SqliteConnectOptions::extension() and ::extension_with_entrypoint()
      • sqlite-unlock-notify enables internal use of sqlite3_unlock_notify()
    • SqliteValue and SqliteValueRef changes:
      • The sqlite3_value* interface reserves the right to be stateful.
        Without protection, any call could theoretically invalidate values previously returned, leading to dangling pointers.
      • SqliteValue is now !Sync and SqliteValueRef is !Send to prevent data races from concurrent accesses.
        • Instead, clone or wrap the SqliteValue in Mutex, or convert the SqliteValueRef to an owned value.
      • SqliteValue and any derived SqliteValueRefs now internally track if that value has been used to decode a
        borrowed &[u8] or &str and errors if it's used to decode any other type.
      • This is not expected to affect the vast majority of usages, which should only decode a single type
        per SqliteValue/SqliteValueRef.
      • See new docs on SqliteValue for details.
  • [#​3949]: Postgres: move PgLTree::from to From<Vec<PgLTreeLabel>> implementation [[@​JerryQ17]]
  • [#​3957]: refactor(sqlite): do not borrow bound values, delete lifetime on SqliteArguments [[@​iamjpotts]]
  • [#​3958]: refactor(any): Remove lifetime parameter from AnyArguments [[@​iamjpotts]]
  • [#​3960]: refactor(core): Remove lifetime parameter from Arguments trait [[@​iamjpotts]]
  • [#​3993]: Unescape PostgreSQL passfile password [[@​V02460]]
    • Previously, .pgpass file handling did not process backslash-escapes in the password part.
      Now it does, which may change what password is sent to the server.
  • [#​4008]: make #[derive(sqlx::Type)] automatically generate impl PgHasArrayType by default for newtype structs [[@​papaj-na-wrotkach]]
    • Manual implementations of PgHasArrayType for newtypes will conflict with the generated one.
      Delete the manual impl or add #[sqlx(no_pg_array)] where conflicts occur.
  • [#​4077]: breaking: make offline optional to allow building without serde [[@​CathalMullan]]
  • [#​4094]: Bump bit-vec to v0.8 [[@​zennozenith]]
  • [#​4142]: feat(mysql): add mysql-rsa feature for non-TLS RSA auth [[@​dertin]]
    • Connections requiring RSA password encryption now need to enable the mysql-rsa feature
      or an error will be generated at runtime. RSA encryption is only used for plaintext (non-TLS) connections.
  • [#​4255]: breaking(any+mysql): correctly convert text and blob types to AnyTypeInfo [[@​abonander]]
Added
Changed
Fixed
dtolnay/thiserror (thiserror)

v2.0.21

Compare Source

  • Fix parsing of generic unit variants in display expressions (#​459)

v2.0.20

Compare Source

  • Suppress redundant_field_names clippy lint in generated code (#​454)

v2.0.19

Compare Source

  • Update to syn 3

v2.0.18

Compare Source

tokio-rs/tokio (tokio)

v1.54.1: Tokio v1.54.1

Compare Source

1.54.1 (October 21st, 2026)
Fixed
  • time: revert "remove the runtime handle from timers" (#​8692)

v1.54.0: Tokio v1.54.0

Compare Source

1.54.0 (October 19th, 2026)

The 1.54.0 release includes all changes up to 1.53.3.

The MSRV is increased to 1.85. (#​8514)

Added
  • fs: add File::set_times, File::set_modified, and fs::FileTimes (#​8504)
  • net: implement Default for named_pipe::{ClientOptions, ServerOptions} (#​8378)
  • runtime: add Builder::max_io_events_per_busy_tick (#​8410)
  • runtime: stabilize tokio::runtime::worker_index() (#​8431)
  • sync: add SemaphorePermit::semaphore() (#​8482)
  • sync: add blocking_acquire methods to Semaphore (#​8269)
  • sync: add watch::Receiver::is_closed (#​8481)
  • wasm: support JSPI for Emscripten target (#​8285, #​8627)
  • wasm: support the wasm32-unknown-emscripten target (#​8281, #​8422, #​8528, #​8628)
Changed
  • fs: reject zero in File::set_max_buf_size (#​8449)
  • io: make copy_buf cooperative (#​8459)
  • io: panic when BufReader or BufStream is created with zero capacity (#​8494)
  • io: panic when in-memory pipe is created with zero capacity (#​8397)
  • io: reject zero buffer size in copy_bidirectional_with_sizes (#​8454)
  • io: support vectored writes in Sink (#​8663)
  • net: start UnixStream::pair and UnixDatagram::pair sockets as writable (#​8444)
  • net: start accepted sockets as readable and writable (#​8435)
  • net: support UCred on Fuchsia (#​8257)
  • process: use mio::unix::pipe for Unix child stdio (#​8603)
  • runtime: cache-pad the shared injection queue and idle state (#​8622)
  • runtime: decide auto-boxing of spawned futures at monomorphization time (#​8414)
  • runtime: make enable_io available whenever rt is enabled (#​8387)
  • runtime: move block_in_place setup into a non-generic function (#​8315)
  • runtime: move the multi-thread inject queue to its own mutex (#​8382)
  • runtime: panic when max_io_events_per_tick is zero (#​8476)
  • runtime: suggest .await in nested block_on panic message (#​8501)
  • sync: avoid atomic reader count in broadcast slots (#​8357)
  • sync: use acquire/release orderings in Notify (#​8325)
  • time: remove the runtime handle from timers (#​8458)
Fixed
  • fs: restore File internal state when op fails (#​8291)
  • io: complete zero-length memory stream operations immediately (#​8323)
  • io: flush the writer when the reader stalls in copy_buf (#​8424)
  • io: keep the shutdown bit when clearing readiness (#​8435)
  • io: preserve the full ScheduledIo tick in readiness events (#​8331)
  • io: read lines as bytes so a partial line survives an I/O error (#​8400)
  • io: retry on ErrorKind::Interrupted in more I/O operations (#​8417, #​8432, #​8448, #​8453, #​8455, #​8460)
  • io: use spawn_mandatory_blocking for stdout and stderr (#​8506)
  • io: wait for pending operations before BufReader seeks (#​8599)
  • net: close CreateFileW handle on SetNamedPipeHandleState failure (#​8418)
  • net: fix peer credentials on NetBSD (#​8589)
  • net: saturate TcpSocket and UnixSocket listen backlog (#​8511)
  • net: treat ENOTCONN as success in UnixStream::shutdown (#​8526)
  • runtime: allow building with --all-features without tokio_unstable (#​8401)
  • runtime: avoid overflow in shutdown_timeout() (#​8497)
  • runtime: fix spawn_blocking hang when only scheduler workers exist (#​8408)
  • runtime: fix misleading signal driver panic message (#​8419)
  • sync: preserve FIFO lock order when coop budget is exhausted (#​8371)
  • sync: use usize for permit count in SemaphorePermit (#​8405)
  • time: avoid interval deadline overflow (#​8385)
  • time: handle wrapped top-level timer-wheel slots (#​8334)
Unstable
  • fs: fall back when io_uring has no IO driver (#​8165)
  • metrics: cap log histogram precision (#​8496)
  • runtime: add an opt-in sharded spawn_blocking queue (#​8337)
  • runtime: expose schedule latency in task hooks (#​8282)
  • taskdump: fix idle bookkeeping when a task dump wakes parked workers (#​8372)
  • taskdump: skip non-idle tasks during taskdumps (#​8568)
Documented
  • docs: fix stray braces and broken links in rustdoc (#​8605)
  • fs: document cancellation behavior of tokio::fs (#​8265)
  • net: add Safety docs for named pipe from_raw_handle (#​8378)
  • net: document that TcpStream::connect returns only the last error (#​8421)
  • runtime: add error documentation for runtime::Builder (#​8297)
  • runtime: link available_parallelism in worker count docs (#​8625)
  • sync: clarify panic behavior of broadcast::channel() (#​8420)
  • sync: fix typo in Semaphore documentation (#​8521)

v1.53.3: Tokio v1.53.3

Compare Source

1.53.3 (October 13th, 2026)
Added
  • io: add AsyncFd::register and AsyncFd::register_with_interest (#​8587)
Changed
  • io: deprecate AsyncFd::{new, with_interest, try_new, try_with_interest} (#​8587)
Fixed
  • io: wake and drop DuplexStream wakers outside the lock (#​8618)
  • macros: avoid unreachable_code in join! and try_join! for Infallible (#​8518)
  • runtime: fix paused time auto-advancing when I/O wakes a task on current_thread (#​8595)
  • sync: wake waiters outside the lock when closing a semaphore (#​8529)
  • test: fix several flaky tests (#​8196, #​8427, #​8609)
Fixed (unstable)
  • rt: keep io_uring op alive when submission fails after push (#​8185)

v1.53.2: Tokio v1.53.2

Compare Source

1.53.2 (October 3rd, 2026)
Fixed
  • fs: handle integer overflow in buffered relative seek (#​8574)
  • io: revert "always cleanup AsyncFd registration list on deregister" (#​8540)
  • process: unregister Windows wait before closing child handle (#​8564)
  • rt: drop blocking pool mutex before shutting down rejected task (#​8562)
  • sync: fix mpsc index wraparound in block reclamation (#​8546)
  • sync: forget mpsc Permit before sending value (#​8560)
  • sync: validate MAX_PERMITS in Semaphore::acquire (#​8548)
  • sync: wake broadcast Sender::closed outside mutex (#​8558)
  • task: drop replaced waker outside lock in JoinSet (#​8554)
  • time: drop timer lock before dropping waker in clear_entry (#​8552)
  • time: expire timers directly on shutdown without rotating wheel (#​8570)
Fixed (unstable)
  • fs: clamp io_uring read length to u32::MAX (#​8572)
  • rt: ignore current_thread task dumps from other runtimes (#​8544)
  • rt: preserve io_uring context if a completion waker panics (#​8566)
  • sync: fix semaphore use-after-free and permit leak on tracing panic (#​8542)
  • taskdump: restore deferred leaf wakes during capture (#​8445)
  • time: drop stored waker when cancelling alt timer entry (#​8550)

v1.53.1: Tokio v1.53.1

Compare Source

1.53.1 (July 20th, 2026)
Fixed
  • signal: restore MSRV by removing OnceLock::wait from the Windows handler (#​8300)
Fixed (unstable)
  • time: fix alt timer cancellation and insertion race (#​8252)
Documented
  • runtime: remove dead link definition in Runtime::block_on (#​8301)

v1.53.0: Tokio v1.53.0

Compare Source

1.53.0 (July 17th, 2026)
Added
  • fs: implement From<OwnedFd> and From<OwnedHandle> for File (#​8266)
  • metrics: add task schedule latency metric (#​7986)
  • net: add SocketAddr methods to Unix sockets (#​8144)
Changed
  • io: add #[inline] to IO trait impls for in-memory types (#​8242)
  • net: implement UCred::pid on FreeBSD (#​8086)
  • net: support Nuttx target os (#​8259)
  • signal: refactor global variables on Windows (#​8231)
  • sync: mpsc::{Receiver,UnboundedReceiver} now drops waker on drop, even if there are still senders (#​8095)
  • taskdump: support taskdumps on s390x (#​8192)
  • time: add #[track_caller] to timeout_at() (#​8077)
  • time: consolidate mutex locks on spurious poll (#​8124)
  • time: defer waker clone on spurious poll (#​8107)
  • time: move lazy-registration state into Sleep (#​8132)
  • tracing: remove unnecessary span clone (#​8126)
Fixed
  • io: do not treat zero-length reads as EOF in Chain (#​8251)
  • net: use getpeereid for QNX peer credentials (#​8270)
  • runtime: avoid illegal state in FastRand (#​8078)
  • sync: wake mpsc receiver when a queued reserve[_many] returns permits (#​8260)
  • taskdump: skip double wake on Trace::capture/Trace::trace_with (#​8043)
  • time: avoid stack overflow in runtime constructor (#​8093)
  • time (alt timer): ensure timers stay in the same runtime after .reset() (#​8169)
IO uring (unstable)
  • fs: use io-uring for fs::try_exists (#​8080)
  • fs: use io-uring for renaming files (#​7800)
  • rt: flush io-uring CQE in case of CQE overflow (#​8277)
Documented
  • docs: clarify cancel safety wording (#​8181)
  • fs: clarify create_dir_all succeeds if path exists (#​8149)
  • io: add warning about stdout reordering with multiple handles (#​8276)
  • net: document pipe try_read*/try_write* readiness behavior (#​8032)
  • runtime: document interaction with fork() (#​8202)
  • sync: clarify broadcast lagging semantics (#​8239)
  • sync: document memory ordering guarantees for Semaphore (#​8119)
  • task: explain why yield_now defers its waker (#​8254)
  • time: add panic docs to timeout_at() (#​8077)
  • time: fix reversed poll order in timeout doc (#​8214)

v1.52.4: Tokio v1.52.4

Compare Source

1.52.4 (July 16th, 2026)
Fixed
  • runtime: don't skip the driver when before_park schedules work (#​8222)
Fixed (unstable)
  • taskdump: remove crate disambiguators from output (#​8264)

v1.52.3: Tokio v1.52.3

Compare Source

1.52.3 (May 8th, 2026)
Fixed
  • sync: fix underflow in mpsc channel len() (#​8062)
  • sync: notify receivers in mpsc OwnedPermit::release() method (#​8075)
  • sync: require that an RwLock has max_readers != 0 (#​8076)
  • sync: return Empty from try_recv() when mpsc is closed with outstanding permits (#​8074)

v1.52.2: Tokio v1.52.2

Compare Source

1.52.2 (May 4th, 2026)

This release reverts the LIFO slot stealing change introduced in 1.51.0 (#​7431), due to its performance impact. (#​8100)

v1.52.1: Tokio v1.52.1

Compare Source

1.52.1 (April 16th, 2026)
Fixed

v1.52.0: Tokio v1.52.0

Compare Source

1.52.0 (April 14th, 2026)

Added

  • io: AioSource::register_borrowed for I/O safety support (#​7992)
  • net: add try_io function to unix::pipe sender and receiver types (#​8030)

Added (unstable)

  • runtime: Builder::enable_eager_driver_handoff setting enable eager hand off of the I/O and time drivers before polling tasks (#​8010)
  • taskdump: add trace_with() for customized task dumps (#​8025)
  • taskdump: allow impl FnMut() in trace_with instead of just fn() (#​8040)
  • fs: support io_uring in AsyncRead for File (#​7907)

Changed

  • runtime: improve spawn_blocking scalability with sharded queue (#​7757)
  • runtime: use compare_exchange_weak() in worker queue (#​8028)

Fixed

  • runtime: overflow second half of tasks when local queue is filled instead of first half (#​8029)

Documented

  • docs: fix typo in oneshot::Sender::send docs (#​8026)
  • docs: hide #[tokio::main] attribute in the docs of sync::watch (#​8035)
  • net: add docs on ConnectionRefused errors with UDP sockets (#​7870)

v1.51.6: Tokio v1.51.6

Compare Source

1.51.6 (October 13th, 2026)
Added
  • io: add AsyncFd::register and AsyncFd::register_with_interest (#​8587)
Changed
  • io: deprecate AsyncFd::{new, with_interest, try_new, try_with_interest} (#​8587)
Fixed
  • io: wake and drop DuplexStream wakers outside the lock (#​8618)
  • macros: avoid unreachable_code in join! and try_join! for Infallible (#​8518)
  • runtime: fix paused time auto-advancing when I/O wakes a task on current_thread (#​8595)
  • sync: wake waiters outside the lock when closing a semaphore (#​8529)
  • test: fix several flaky tests (#​8196, #​8427, #​8609)

v1.51.5: Tokio v1.51.5

Compare Source

1.51.5 (October 3rd, 2026)
Fixed
  • fs: handle integer overflow in buffered relative seek (#​8574)
  • io: revert "always cleanup AsyncFd registration list on deregister" (#​8540)
  • process: unregister Windows wait before closing child handle (#​8564)
  • rt: drop blocking pool mutex before shutting down rejected task (#​8562)
  • sync: fix mpsc index wraparound in block reclamation (#​8546)
  • sync: forget mpsc Permit before sending value (#​8560)
  • sync: validate MAX_PERMITS in Semaphore::acquire (#​8548)
  • sync: wake broadcast Sender::closed outside mutex (#​8558)
  • task: drop replaced waker outside lock in JoinSet (#​8554)
  • time: drop timer lock before dropping waker in clear_entry (#​8552)
  • time: expire timers directly on shutdown without rotating wheel (#​8570)
Fixed (unstable)
  • rt: ignore current_thread task dumps from other runtimes (#​8544)
  • rt: preserve io_uring context if a completion waker panics (#​8566)
  • sync: fix semaphore use-after-free and permit leak on tracing panic (#​8542)
  • time: drop stored waker when cancelling alt timer entry (#​8550)

v1.51.4: Tokio v1.51.4

Compare Source

1.51.4 (July 16th, 2026)
Fixed
  • runtime: don't skip the driver when before_park schedules work (#​8222)

v1.51.3: Tokio v1.51.3

Compare Source

1.51.3 (May 8th, 2026)
Fixed
  • sync: fix underflow in mpsc channel len() (#​8062)
  • sync: notify receivers in mpsc OwnedPermit::release() method (#​8075)
  • sync: require that an RwLock has max_readers != 0 (#​8076)
  • sync: return Empty from try_recv() when mpsc is closed with outstanding permits (#​8074)

v1.51.2: Tokio v1.51.1

Compare Source

1.51.2 (May 4th, 2026)

This release reverts the LIFO slot stealing change introduced in 1.51.0 (#​7431), due to its performance impact. (#​8100)

v1.51.1: Tokio v1.51.1

Compare Source

1.51.1 (April 8th, 2026)

Fixed
  • sync: fix semaphore reopens after forget (#​8021)
  • net: surface errors from SO_ERROR on recv for UDP sockets on Linux (#​8001)
Fixed (unstable)
  • metrics: fix worker_local_schedule_count test (#​8008)
  • rt: do not leak fd when cancelling io_uring open operation (#​7983)

v1.51.0: Tokio v1.51.0

Compare Source

1.51.0 (April 3rd, 2026)
Added
  • net: implement get_peer_cred on Hurd (#​7989)
  • runtime: add tokio::runtime::worker_index() (#​7921)
  • runtime: add runtime name (#​7924)
  • runtime: stabilize LocalRuntime (#​7557)
  • wasm: add wasm32-wasip2 networking support (#​7933)
Changed
  • runtime: steal tasks from the LIFO slot (#​7431)
Fixed
  • docs: do not show "Available on non-loom only." doc label (#​7977)
  • macros: improve overall macro hygiene (#​7997)
  • sync: fix notify_waiters priority in Notify (#​7996)
  • sync: fix panic in Chan::recv_many when called with non-empty vector on closed channel (#​7991)

v1.50.0: Tokio v1.50.0

Compare Source

1.50.0 (Mar 3rd, 2026)
Added
  • net: add TcpStream::set_zero_linger (#​7837)
  • rt: add is_rt_shutdown_err (#​7771)
Changed
  • io: add optimizer hint that memchr returns in-bounds pointer (#​7792)
  • io: implement vectored writes for write_buf (#​7871)
  • runtime: panic when event_interval is set to 0 (#​7838)
  • runtime: shorten default thread name to fit in Linux limit (#​7880)
  • signal: remember the result of SetConsoleCtrlHandler (#​7833)
  • signal: specialize windows Registry (#​7885)
Fixed
  • io: always cleanup AsyncFd registration list on deregister (#​7773)
  • macros: remove (most) local use declarations in tokio::select! (#​7929)
  • net: fix GET_BUF_SIZE constant for target_os = "android" (#​7889)
  • runtime: avoid redundant unpark in current_thread scheduler (#​7834)
  • runtime: don't park in current_thread if before_park defers waker (#​7835)
  • io: fix write readiness on ESP32 on short writes (#​7872)
  • runtime: wake deferred tasks before entering block_in_place (#​7879)
  • sync: drop rx waker when oneshot receiver is dropped (#​7886)
  • runtime: fix double increment of num_idle_threads on shutdown (#​7910, #​7918, #​7922)
Unstable
  • fs: check for io-uring opcode support (#​7815)
  • runtime: avoid lock acquisition after uring init (#​7850)
Documented
  • docs: update outdated unstable features section (#​7839)
  • io: clarify the behavior of AsyncWriteExt::shutdown() (#​7908)
  • io: explain how to flush stdout/stderr (#​7904)
  • io: fix incorrect and confusing AsyncWrite documentation (#​7875)
  • rt: clarify the documentation of Runtime::spawn (#​7803)
  • rt: fix missing quotation in docs (#​7925)
  • runtime: correct the default thread name in docs (#​7896)
  • runtime: fix event_interval doc (#​7932)
  • sync: clarify RwLock fairness documentation (#​7919)
  • sync: clarify that recv returns None once closed and no more messages (#​7920)
  • task: clarify when to use spawn_blocking vs dedicated threads (#​7923)
  • task: doc that task drops before JoinHandle completion (#​7825)
  • signal: guarantee that listeners never return None (#​7869)
  • task: fix task module feature flags in docs (#​7891)
  • task: fix two typos (#​7913)
  • task: improve the docs of Builder::spawn_local (#​7828)
  • time: add docs about auto-advance and when to use sleep (#​7858)
  • util: fix typo in docs (#​7926)

v1.49.0: Tokio v1.49.0

Compare Source

1.49.0 (January 3rd, 2026)
Added
  • net: add support for TCLASS option on IPv6 (#​7781)
  • runtime: stabilize runtime::id::Id (#​7125)
  • task: implement Extend for JoinSet (#​7195)
  • task: stabilize the LocalSet::id() (#​7776)
Changed
  • net: deprecate {TcpStream,TcpSocket}::set_linger (#​7752)
Fixed
  • macros: fix the hygiene issue of join! and try_join! (#​7766)
  • runtime: revert "replace manual vtable definitions with Wake" (#​7699)
  • sync: return TryRecvError::Disconnected from Receiver::try_recv after Receiver::close (#​7686)
  • task: remove unnecessary trait bounds on the Debug implementation (#​7720)
Unstable
  • fs: handle EINTR in fs::write for io-uring (#​7786)
  • fs: support io-uring with tokio::fs::read (#​7696)
  • runtime: disable io-uring on EPERM (#​7724)
  • time: add alternative timer for better multicore scalability (#​7467)
Documented
  • docs: fix a typos in bounded.rs and park.rs (#​7817)
  • io: add SyncIoBridge cross-references to copy and copy_buf (#​7798)
  • io: doc that AsyncWrite does not inherit from std::io::Write (#​7705)
  • metrics: clarify that num_alive_tasks is not strongly consistent (#​7614)
  • net: clarify the cancellation safety of the TcpStream::peek (#​7305)
  • net: clarify the drop behavior of unix::OwnedWriteHalf (#​7742)
  • net: clarify the platform-dependent backlog in TcpSocket docs (#​7738)
  • runtime: mention LocalRuntime in new_current_thread docs (#​7820)
  • sync: add missing period to mpsc::Sender::try_send docs (#​7721)
  • sync: clarify the cancellation safety of oneshot::Receiver (#​7780)
  • sync: improve the docs for the errors of mpsc (#​7722)
  • task: add example for spawn_local usage on local runtime (#​7689)
tower-rs/tower-http (tower-http)

v0.7.1

Compare Source

Added

  • fs: add ServeDir::redirect_to_trailing_slash() to serve directory indexes directly instead of first redirecting to the trailing-slash path. The redirect remains the default (#​728)
  • fs: add ignore_multi_range_requests() to ServeDir and ServeFile, serving the full representation when a request asks for multiple byte ranges. The existing 416 Range Not Satisfiable response remains the default (#​727)
  • request-id: the constructors and accessors on the request-id layers, services, and RequestId are now const fn, so they can be used in const context (#​716)

Changed

  • fs: the minimum http-range-header requirement is now 0.4.2 (#​661)

Fixed

  • behavioral change: fs: make ServeDir::try_call propagate expected filesystem
    I/O errors when no fallback is configured, as documented, instead of converting
    them to 404 Not Found responses (#​718)
  • decompression: don't end the body when a data frame with no remaining bytes
    arrives after the decompressor reports end-of-stream. Trailers following such a
    frame were dropped and could not be recovered (#​722)
  • decompression: return a body error when a data frame with remaining bytes
    arrives after the decompressor reports end-of-stream, rather than silently
    truncating. This regressed in 0.7.0 (#​712)
  • fs: multipart range requests are now rejected before range validation, so
    they consistently return 416 Range Not Satisfiable with a
    Cannot serve multipart range requests body instead of a generic
    unsatisfiable-range response (#​661)
  • fs: range error responses no longer carry representation headers such as
    Content-Type and Content-Encoding (#​727)
  • set-header: SetMultipleResponseHeadersLayer and SetMultipleResponseHeader
    are now Clone regardless of the response body type, matching the fix applied
    to the request-side types in 0.7.0 (#​714)

All the changes

New Contributors

v0.7.0

Compare Source

Changes since 0.6.11

Added

  • csrf: add cross-site request forgery (CSRF) protection middleware, porting the cross-origin protection scheme introduced in Go 1.25 (#​699)

    use tower::ServiceBuilder;
    use tower_http::csrf::CsrfLayer;
    
    // Rejects cross-origin state-changing requests using `Sec-Fetch-Site`,
    // an `Origin` allow-list, and an `Origin`/`Host` fallback. No per-request
    // token state required.
    let layer = CsrfLayer::new().add_trusted_origin("https://example.com")?;
    
    let service = ServiceBuilder::new().layer(layer).service_fn(handler);
    
  • timeout: add DeadlineBody for non-resetting body timeouts, applied via the new RequestBodyDeadlineLayer and ResponseBodyDeadlineLayer (#​688)

    Unlike TimeoutBody, which resets its deadline on every frame, DeadlineBody caps the total time of a body transfer. A slow client trickling one byte at a time never trips an idle timeout but will trip a deadline.

    use std::time::Duration;
    use tower::ServiceBuilder;
    use tower_http::timeout::RequestBodyDeadlineLayer;
    
    // Abort the request body transfer after 30s total, regardless of how
    // frequently data arrives.
    let service = ServiceBuilder::new()
        .layer(RequestBodyDeadlineLayer::new(Duration::from_secs(30)))
        .service_fn(handler);
    
  • fs: add strong ETag support to ServeDir, including If-Match and If-None-Match precondition handling per RFC 9110. 304 Not Modified responses now carry the ETag and Last-Modified validators (#​691)

  • fs: add a Backend trait to make ServeDir work with non-filesystem sources (e.g. embedded assets or object storage). The default TokioBackend preserves existing behavior. Use ServeDir::with_backend() to plug in custom implementations (#​684)

    use tower_http::services::fs::ServeDir;
    
    // `MyBackend` implements `tower_http::services::fs::Backend`.
    // The default `ServeDir::new()` continues to use `TokioBackend` (local FS).
    let service = ServeDir::with_backend("assets", MyBackend::new());
    
  • fs: add html_as_default_extension option to ServeDir, appending .html when the request path has no extension (#​519)

  • fs: add redirect_path_prefix option to ServeDir, prepending a prefix on trailing-slash redirects so the service can be mounted under a sub-path (#​486)

  • validate-request: add ValidateRequestHeaderLayer::has_header_value() to reject requests when a header does not have an expected value (#​360)

  • body: UnsyncBoxBody::new() constructor and From<ServeFileSystemResponseBody> conversion to avoid double-boxing when combining ServeDir responses with other body types (#​537)

  • limit: implement Default for limit::ResponseBody when the wrapped body also implements Default (#​679)

Changed

  • breaking: compression: the middleware now handles the * wildcard and identity;q=0 in Accept-Encoding per RFC 9110 §12.5.3. Requests that previously fell back to identity (e.g. *;q=0 or identity;q=0 with no other acceptable encoding) now receive a 406 Not Acceptable response. Clients that explicitly reject all encodings without listing an alternative will see different behavior. (#​693)

  • breaking: compression: upgrade the SizeAbove predicate threshold from u16 to u64, allowing minimum sizes above 64 KiB (#​704)

  • breaking: remove the implicit no-op tokio and async-compression features. These were kept as no-op features in 0.6.x for backwards compatibility after the switch to dep: syntax in #​642. Downstream crates that activate tower-http/tokio or tower http/async-compression should remove those feature entries; the underlying dependencies are still pulled in transitively by the features that need them (e.g. compression-gzip, fs, timeout). (#​628)

  • breaking: trace/classify: include the gRPC error message in tracing output. GrpcCode and GrpcFailureClass are now #[non_exhaustive], and GrpcStatus is exported from the classify module (#​422)

  • breaking: follow-redirect: FollowRedirect now forwards request Extensions to redirected requests instead of dropping them. The Standard policy drops extensions on cross-origin redirections (same-origin keeps them). Opt out with FollowRedirectLayer::preserve_extensions(false); keep specific types with FilterCredentials::allow_extension::<T>() or all of them with keep_all_extensions(). (#​706)

    use tower_http::follow_redirect::FollowRedirectLayer;
    
    // 0.7.0 forwards request `Extensions` across redirects by default.
    // Restore the previous behavior (drop all extensions) with:
    let layer = FollowRedirectLayer::new().preserve_extensions(false);
    
  • breaking: follow-redirect: header and extension filtering is now cumulative. A value a policy drops on one hop is no longer replayed on later hops, so FilterCredentials no longer re-sends Cookie/Authorization to a same-origin target reached after cross-origin hop. Custom Policy::on_request impls now see the previous hop's filtered request, not the original. (#​706)

  • trace: DefaultOnRequest, DefaultOnResponse, DefaultOnFailure, and DefaultOnEos now explicitly parent their tracing events to the request span rather than relying on the ambient span context. This fixes intermittent cases where events could appear without their request span attached (#​690)

  • cors: relax the Vary header defaults (#​674)

  • MSRV bumped from 1.64 to 1.65 (#​684)

Fixed

  • fs: ServeDir and ServeFile now emit a Vary: Accept-Encoding response
    header when precompressed serving is configured, ensuring caches correctly
    distinguish between compressed and uncompressed variants (#​692)
  • breaking: services: reject a trailing slash for file paths. File requests with a trailing slash now return 404 Not Found instead of serving the file (#​678)
  • fs: fix ServeDir stripping the file extension when serving with identity encoding (#​686)
  • compression: forward trailers from the inner body after compression finishes, fixing dropped gRPC status trailers (#​685)
  • trace: fire on_eos when the inner body reports is_end_stream with a precise content-length (#​687)
  • on-early-drop: suppress the early-drop guard when is_end_stream is reported after a data frame (#​687)
  • set-header: make SetMultipleRequestHeaders and SetMultipleResponseHeaders Clone for non-Clone HTTP bodies (#​703)

Thanks

New Contributors

v0.6.11

Compare Source

Added

  • set-header: add SetMultipleResponseHeadersLayer and
    SetMultipleResponseHeader for setting multiple response headers at once.
    Supports overriding, appending, and if_not_present modes. Header
    values can be fixed or computed dynamically via closures (#​672)

    use http::{Response, header::{self, HeaderValue}};
    use http_body::Body as _;
    use tower_http::set_header::response::SetMultipleResponseHeadersLayer;
    
    let layer = SetMultipleResponseHeadersLayer::overriding(vec![
        (header::X_FRAME_OPTIONS, HeaderValue::from_static("DENY")).into(),
        (header::CONTENT_LENGTH, |res: &Response<MyBody>| {
            res.body().size_hint().exact()
                .map(|size| HeaderValue::from_str(&size.to_string()).unwrap())
        }).into(),
    ]);
    
  • set-header: add SetMultipleRequestHeadersLayer and
    SetMultipleRequestHeaders for setting multiple request headers at once,
    mirroring the response-side API (#​677)

  • classify: add From<i32> and From<NonZeroI32> impls for GrpcCode.
    Unrecognized status codes map to GrpcCode::Unknown (#​506)

Changed

  • compression: compress application/grpc-web responses. Previously all
    application/grpc* content types were excluded from compression; now only
    application/grpc (non-web) is excluded (#​408)

Fixed

  • fs: fix ServeDir returning 500 instead of 405 for non-GET/HEAD requests
    when call_fallback_on_method_not_allowed is enabled but no fallback service
    is configured (#​587)
  • fs: remove duplicate cfg attribute on is_reserved_dos_name (#​675)

All PRs

New Contributors

Full Changelog: https://github.com/tower-rs/tower-http/compare/tower-http-0.6.10...tower-http-0.6.11

v0.6.10

Compare Source

Added

  • follow-redirect: expose Attempt::method() and Attempt::previous_method()
    so redirect policies can react to method changes across redirects (e.g.
    POST to GET on 301/303) (#​559)

Fixed

  • Restore tokio and async-compression as no-op features. These will be
    removed next breaking release (#​667)

What's Changed

New Contributors

Full Changelog: https://github.com/tower-rs/tower-http/compare/tower-http-0.6.9...tower-http-0.6.10

v0.6.9

Compare Source

Added:

  • on-early-drop: middleware that detects when a response future or response
    body is dropped before completion (#​636)

    Two events get hooks: the response future being dropped before
    the inner service produces a response, and the response body being
    dropped before reaching end-of-stream.

    Install custom callbacks with OnEarlyDropLayer::builder():

    use http::Request;
    use tower_http::on_early_drop::{OnBodyDropFn, OnEarlyDropLayer};
    
    let layer = OnEarlyDropLayer::builder()
        .on_future_drop(|req: &Request<()>| {
            let uri = req.uri().clone();
            move || eprintln!("future dropped for {}", uri)
        })
        .on_body_drop(OnBodyDropFn::new(|req: &Request<()>| {
            let uri = req.uri().clone();
            move |parts: &http::response::Parts| {
                let status = parts.status;
                move || eprintln!("body dropped for {} status {}", uri, status)
            }
        }));
    

    Or route both events through a trace::OnFailure hook with
    EarlyDropsAsFailures. Place this layer inside a TraceLayer so the
    emitted events inherit the request span:

    use tower::ServiceBuilder;
    use tower_http::on_early_drop::{OnEarlyDropLayer, EarlyDropsAsFailures};
    use tower_http::trace::{DefaultOnFailure, TraceLayer};
    
    let stack = ServiceBuilder::new()
        .layer(TraceLayer::new_for_http())
        .layer(OnEarlyDropLayer::new(
            EarlyDropsAsFailures::new(DefaultOnFailure::default()),
        ));
    
  • fs: make AsyncReadBody::with_capacity public (#​415)

Changed:

  • The implicit async-compression feature is removed (#​642)
  • The implicit tokio feature is removed (#​628)
  • fs: no longer auto-enables the tracing crate feature; enable tracing
    explicitly to restore error logging on ServeDir IO failures (#​614)

Fixed

  • trace: restore failure classification at end-of-stream (#​483)
  • follow-redirect: support unicode URLs (swaps iri-string dep for
    url) (#​646)
  • fs: reject reserved Windows DOS device names (CON, COM1, etc.) in
    ServeDir (#​663)

All the PRs

New Contributors

Full Changelog: https://github.com/tower-rs/tower-http/compare/tower-http-0.6.8...tower-http-0.6.9

v0.6.8

Compare Source

Fixed

  • Disable multiple_members in Gzip decoder, since HTTP context only uses one
    member. (#​621)

What's Changed

New Contributors

Full Changelog: https://github.com/tower-rs/tower-http/compare/tower-http-0.6.7...tower-http-0.6.8

v0.6.7

Compare Source

Added

  • TimeoutLayer::with_status_code(status) to define the status code returned
    when timeout is reached. (#​599)

Deprecated

  • auth::require_authorization is too basic for real-world. (#​591)
  • TimeoutLayer::new() should be replaced with
    TimeoutLayer::with_status_code(). (Previously was
    StatusCode::REQUEST_TIMEOUT) (#​599)

Fixed

  • on_eos is now called even for successful responses. (#​580)
  • ServeDir: call fallback when filename is invalid (#​586)
  • decompression will not fail when body is empty (#​618)

New Contributors

Full Changelog: https://github.com/tower-rs/tower-http/compare/tower-http-0.6.6...tower-http-0.6.7

v0.6.6

Compare Source

Fixed

  • compression: fix panic when looking in vary header (#​578)

New Contributors

Full Changelog: https://github.com/tower-rs/tower-http/compare/tower-http-0.6.5...tower-http-0.6.6

v0.6.5

Compare Source

Added

  • normalize_path: add append_trailing_slash() mode (#​547)

Fixed

  • redirect: remove payload headers if redirect changes method to GET (#​575)
  • compression: avoid setting vary: accept-encoding if already set (#​572)

New Contributors

Full Changelog: https://github.com/tower-rs/tower-http/compare/tower-http-0.6.4...tower-http-0.6.5

v0.6.4: tower-http 0.6.4

Compare Source

Added

  • decompression: Support HTTP responses containing multiple ZSTD frames (#​548)
  • The ServiceExt trait for chaining layers onto an arbitrary http service just
    like ServiceBuilderExt allows for ServiceBuilder (#​563)

Fixed

  • Remove unnecessary trait bounds on S::Error for Service impls of
    RequestBodyTimeout<S> and ResponseBodyTimeout<S> (#​533)
  • compression: Respect is_end_stream (#​535)
  • Fix a rare panic in fs::ServeDir (#​553)
  • Fix invalid content-lenght of 1 in response to range requests to empty
    files (#​556)
  • In AsyncRequireAuthorization, use the original inner service after it is
    ready, instead of using a clone (#​561)

v0.6.3: tower-http 0.6.3

Compare Source

This release was yanked because its definition of ServiceExt was quite unhelpful, in a way that's very unlikely that anybody would start depending on within the small timeframe before this was yanked, but that was technically breaking to change.

tokio-rs/tracing (tracing)

v0.1.44: tracing 0.1.44

Compare Source

Fixed
Changed
  • tracing-core: updated to 0.1.36 (#​3440)

v0.1.43: tracing 0.1.43

Compare Source

Important

The previous release 0.1.42 was yanked because #​3382 was a breaking change.
See further details in #​3424. This release contains all the changes from that
version, plus a revert for the problematic part of the breaking PR.

Fixed
  • Revert "make valueset macro sanitary" (#​3425)

v0.1.42: tracing 0.1.42

Compare Source

Important

The Span::record_all method has been removed from the documented API. It
was always unsuable via the documented API as it requried a ValueSet which
has no publically documented constructors. The method remains, but should not
be used outside of tracing macros.

Added
  • attributes: Support constant expressions as instrument field names (#​3158)
  • Add record_all! macro for recording multiple values in one call (#​3227)
  • core: Improve code generation at trace points significantly (#​3398)
Changed
  • tracing-core: updated to 0.1.35 (#​3414)
  • tracing-attributes: updated to 0.1.31 (#​3417)
Fixed
  • Fix "name / parent" variant of event! (#​2983)
  • Remove 'r#' prefix from raw identifiers in field names (#​3130)
  • Fix perf regression when release_max_level_* not set (#​3373)
  • Use imported instead of fully qualified path (#​3374)
  • Make valueset macro sanitary (#​3382)
Documented
  • core: Add missing dyn keyword in Visit documentation code sample (#​3387)
Microsoft/tslib (tslib)

v2.9.1: tslib 2.9.1

Compare Source

What's Changed

Full Changelog: https://github.com/microsoft/tslib/compare/v2.8.1...v2.9.1

microsoft/TypeScript (typescript)

v5.9.3: TypeScript 5.9.3

Compare Source

Note: this tag was recreated to point at the correct commit. The npm package contained the correct content.

For release notes, check out the release announcement

Downloads are available on:

v5.9.2: TypeScript 5.9

Compare Source

Note: this tag was recreated to point at the correct commit. The npm package contained the correct content.

For release notes, check out the release announcement

Downloads are available on:

typescript-eslint/typescript-eslint (typescript-eslint)

v8.72.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.72.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.71.2

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.71.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.71.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.70.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.70.0

Compare Source

🩹 Fixes
  • eslint-plugin: [no-deprecated] report deprecated imported values used in object shorthand properties (#​12780)
❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.69.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.68.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.67.0

Compare Source

🚀 Features
  • typescript-eslint: export basic globs for using tseslint (#​12105)
❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.66.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.65.0

Compare Source

🚀 Features
  • add warning when TS 7 is detected (#​12529)
❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.64.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.63.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.62.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.62.0

Compare Source

🚀 Features
  • remove redundant package.json "files" (#​12444)
❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.61.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.61.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.60.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.60.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.59.4

Compare Source

🩹 Fixes
  • typescript-eslint: export Compatible* types from typescript-eslint to resolve pnpm TS error (#​12340)
❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.59.3

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.59.2

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.59.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.59.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.58.2

Compare Source

🩹 Fixes
  • remove tsbuildinfo cache file from published packages (#​12187)
❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.58.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.58.0

Compare Source

🚀 Features
❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.57.2

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.57.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.57.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.56.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.56.0

Compare Source

🚀 Features
❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.55.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.54.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.53.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.53.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.52.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.51.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.50.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.50.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.49.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.48.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.48.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.47.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.46.4

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.46.3

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.46.2

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.46.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.46.0

Compare Source

🚀 Features
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.45.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.44.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.44.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.43.0

Compare Source

🩹 Fixes
  • eslint-plugin: [no-deprecated] should report deprecated exports and reexports (#​11359)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.42.0

Compare Source

🚀 Features
🩹 Fixes
  • typescript-eslint: handle non-normalized windows paths produced by jiti (#​11546)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

uuid-rs/uuid (uuid)

v1.29.0

Compare Source

What's Changed

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.28.0...v1.29.0

v1.28.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.27.0...v1.28.0

v1.27.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.26.1...v1.27.0

v1.26.1

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.26.0...v1.26.1

v1.26.0

Compare Source

What's Changed

Full Changelog: https://github.com/uuid-rs/uuid/compare/1.25.0...v1.26.0

v1.25.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.24.1...1.25.0

v1.24.1

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.24.0...v1.24.1

v1.24.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.23.5...v1.24.0

v1.23.5

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.23.4...v1.23.5

v1.23.4

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.23.3...v1.23.4

v1.23.3

Compare Source

What's Changed

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.23.2...v1.23.3

v1.23.2

Compare Source

What's Changed

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.23.1...v1.23.2

v1.23.1

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.23.0...v1.23.1

v1.23.0

Compare Source

What's Changed

New Contributors

Special thanks

@​meng-xu-cs raised a series of bugs against the timestamp logic in uuid using automated tooling. The issues themselves were reasonably and responsibly presented and the end result is a better uuid library for everyone. Thanks!

Deprecations

This release includes the following deprecations:

  • Context: Renamed to ContextV1
  • Timestamp::from_gregorian: Renamed to Timestamp::from_gregorian_time

Change to Version::Max

Version::Max's u8 representation has changed from 0xff to 0x0f to match the value returned by Uuid::get_version_num.

Change to Uuid::get_version for the max UUID

Uuid::get_version will only return Some(Version::Max) if the UUID is actually the max UUID (all bytes are 0xff). Previously it would return Some if only the version field was 0x0f. This change matches the behaviour of the nil UUID, which only returns Some(Version::Nil) if the UUID is the nil UUID (all bytes are 0x00).

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.22.0...v1.23.0

v1.22.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.21.0...v1.22.0

v1.21.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.20.0...v1.21.0

v1.20.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.19.0...v1.20.0

v1.19.0

Compare Source

What's Changed

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.18.1...v1.19.0

v1.18.1

Compare Source

What's Changed

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.18.0...v1.18.1

v1.18.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.17.0...v1.18.0

v1.17.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/uuid-rs/uuid/compare/v1.16.0...v1.17.0

vuejs/core (vue)

v3.5.44

Compare Source

Bug Fixes

v3.5.43

Compare Source

Bug Fixes

v3.5.42

Compare Source

Bug Fixes

v3.5.41

Compare Source

Bug Fixes

v3.5.40

Compare Source

Bug Fixes

v3.5.39

Compare Source

Bug Fixes

v3.5.38

Compare Source

v3.5.37

Compare Source

v3.5.36

Compare Source

Bug Fixes

v3.5.35

Compare Source

Bug Fixes
Performance Improvements

v3.5.34

Compare Source

Bug Fixes

v3.5.33

Compare Source

Bug Fixes

v3.5.32

Compare Source

Bug Fixes
Reverts

v3.5.31

Compare Source

Bug Fixes

v3.5.30

Compare Source

Bug Fixes

v3.5.29

Compare Source

Bug Fixes

v3.5.28

Compare Source

Bug Fixes

v3.5.27

Compare Source

Bug Fixes

v3.5.26

Compare Source

Bug Fixes
Performance Improvements

v3.5.25

Compare Source

Bug Fixes

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ 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 Mend Renovate CLI.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [@cspell/dict-en-gb](https://github.com/streetsidesoftware/cspell-dicts/blob/main/dictionaries/en_GB#readme) ([source](https://github.com/streetsidesoftware/cspell-dicts/tree/HEAD/dictionaries/en_GB)) | devDependencies | patch | [`5.0.19` → `5.0.38`](https://renovatebot.com/diffs/npm/@cspell%2fdict-en-gb/5.0.19/5.0.38) | | [anyhow](https://github.com/dtolnay/anyhow) | dependencies | patch | `1.0.100` → `1.0.104` | | [axum](https://github.com/tokio-rs/axum) | dependencies | minor | `0.7.4` → `0.8.0` | | [axum-extra](https://github.com/tokio-rs/axum) | dependencies | minor | `0.9.6` → `0.12.0` | | [axum_typed_multipart](https://github.com/murar8/axum_typed_multipart) | dependencies | minor | `0.11.0` → `0.16.0` | | [base64](https://github.com/marshallpierce/rust-base64) | dependencies | minor | `0.22.1` → `0.23.0` | | [chrono](https://github.com/chronotope/chrono) | dependencies | patch | `0.4.41` → `0.4.45` | | [clap](https://github.com/clap-rs/clap) | dependencies | minor | `4.5.38` → `4.6.7` | | [concurrently](https://github.com/open-cli-tools/concurrently) | devDependencies | patch | [`9.2.1` → `9.2.5`](https://renovatebot.com/diffs/npm/concurrently/9.2.1/9.2.5) | | [cspell](https://cspell.org/) ([source](https://github.com/streetsidesoftware/cspell/tree/HEAD/packages/cspell)) | devDependencies | minor | [`9.3.2` → `9.8.0`](https://renovatebot.com/diffs/npm/cspell/9.3.2/9.8.0) | | [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | devDependencies | minor | [`9.38.0` → `9.39.5`](https://renovatebot.com/diffs/npm/eslint/9.38.0/9.39.5) | | [eslint-plugin-unused-imports](https://github.com/sweepline/eslint-plugin-unused-imports) | devDependencies | minor | [`4.1.4` → `4.4.1`](https://renovatebot.com/diffs/npm/eslint-plugin-unused-imports/4.1.4/4.4.1) | | [futures](https://rust-lang.github.io/futures-rs) ([source](https://github.com/rust-lang/futures-rs)) | dependencies | patch | `0.3.31` → `0.3.34` | | [log](https://github.com/rust-lang/log) | dependencies | patch | `0.4.28` → `0.4.35` | | [minimatch](https://github.com/isaacs/minimatch) | devDependencies | minor | [`10.0.1` → `10.2.6`](https://renovatebot.com/diffs/npm/minimatch/10.0.1/10.2.6) | | [npm-check-updates](https://github.com/raineorshine/npm-check-updates) | devDependencies | minor | [`19.1.1` → `19.6.6`](https://renovatebot.com/diffs/npm/npm-check-updates/19.1.1/19.6.6) | | [obsidian](https://obsidian.md) ([source](https://github.com/obsidianmd/obsidian-api)) | devDependencies | minor | [`1.11.0` → `1.14.4`](https://renovatebot.com/diffs/npm/obsidian/1.11.0/1.14.4) | | [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | devDependencies | minor | [`3.6.2` → `3.9.10`](https://renovatebot.com/diffs/npm/prettier/3.6.2/3.9.10) | | [rand](https://rust-random.github.io/book) ([source](https://github.com/rust-random/rand)) | dependencies | minor | `0.9.0` → `0.10.0` | | [reconcile-text](https://schmelczer.dev/reconcile/) | devDependencies | minor | [`^0.8.0` → `^0.14.0`](https://renovatebot.com/diffs/npm/reconcile-text/0.8.0/0.14.1) | | [reconcile-text](https://schmelczer.dev/reconcile/) | devDependencies | minor | [`^0.11.0` → `^0.14.0`](https://renovatebot.com/diffs/npm/reconcile-text/0.11.0/0.14.1) | | [reconcile-text](https://schmelczer.dev/reconcile) ([source](https://git.schmelczer.dev/andras/reconcile)) | dependencies | minor | `0.8.0` → `0.14.0` | | [regex](https://github.com/rust-lang/regex) | dependencies | minor | `1.12.2` → `1.13.1` | | [rust](https://rust-lang.org/) ([source](https://github.com/rust-lang/rust), [changelog](https://github.com/rust-lang/rust/blob/main/RELEASES.md)) | toolchain | minor | `1.89.0` → `1.99.1` | | [rust](https://rust-lang.org/) ([source](https://github.com/rust-lang/rust), [changelog](https://github.com/rust-lang/rust/blob/main/RELEASES.md)) | uses-with | minor | `1.92.0` → `1.99.1` | | [rust](https://hub.docker.com/_/rust) ([source](https://github.com/rust-lang/docker-rust)) | stage | minor | `1.91-slim-trixie` → `1.99-slim-trixie` | | [serde](https://serde.rs) ([source](https://github.com/serde-rs/serde)) | dependencies | patch | `1.0.228` → `1.0.229` | | [serde_json](https://github.com/serde-rs/json) | dependencies | patch | `1.0.145` → `1.0.154` | | [sqlx](https://github.com/launchbadge/sqlx) | dependencies | minor | `0.8.6` → `0.9.0` | | [thiserror](https://github.com/dtolnay/thiserror) | dependencies | patch | `2.0.17` → `2.0.21` | | [tokio](https://tokio.rs) ([source](https://github.com/tokio-rs/tokio)) | dependencies | minor | `1.48.0` → `1.54.1` | | [tower-http](https://github.com/tower-rs/tower-http) | dependencies | minor | `0.6.1` → `0.7.0` | | [tracing](https://tokio.rs) ([source](https://github.com/tokio-rs/tracing)) | dependencies | patch | `0.1.41` → `0.1.44` | | [tracing-subscriber](https://tokio.rs) ([source](https://github.com/tokio-rs/tracing)) | dependencies | patch | `0.3.20` → `0.3.23` | | [tslib](https://www.typescriptlang.org/) ([source](https://github.com/Microsoft/tslib)) | devDependencies | minor | [`2.8.1` → `2.9.1`](https://renovatebot.com/diffs/npm/tslib/2.8.1/2.9.1) | | [typescript](https://www.typescriptlang.org/) ([source](https://github.com/microsoft/TypeScript)) | devDependencies | minor | [`5.8.3` → `5.9.3`](https://renovatebot.com/diffs/npm/typescript/5.8.3/5.9.3) | | [typescript-eslint](https://typescript-eslint.io/packages/typescript-eslint) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint)) | devDependencies | minor | [`8.41.0` → `8.72.1`](https://renovatebot.com/diffs/npm/typescript-eslint/8.41.0/8.72.1) | | [uuid](https://github.com/uuid-rs/uuid) | dependencies | minor | `1.16.0` → `1.29.0` | | [vue](https://vuejs.org/) ([source](https://github.com/vuejs/core)) | devDependencies | patch | [`3.5.24` → `3.5.44`](https://renovatebot.com/diffs/npm/vue/3.5.24/3.5.44) | --- ### Release Notes <details> <summary>streetsidesoftware/cspell-dicts (@&#8203;cspell/dict-en-gb)</summary> ### [`v5.0.38`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5038-2026-10-21) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.36...@cspell/dict-en-gb@5.0.38) ##### Updates and Bug Fixes - **en_shared:** add "misplacements" ([#&#8203;5939](https://github.com/streetsidesoftware/cspell-dicts/issues/5939)) ([f06259d](https://github.com/streetsidesoftware/cspell-dicts/commit/f06259d7339a8aedba32cf6c2b666a3cfb5287cd)) ##### Dependencies - The following workspace dependencies were updated - devDependencies - [@&#8203;cspell/dict-en-shared](https://github.com/cspell/dict-en-shared) bumped to 1.0.58 ### [`v5.0.36`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5036-2026-10-13) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.35...@cspell/dict-en-gb@5.0.36) ##### Updates and Bug Fixes - set the locale on language dictionaries ([#&#8203;5893](https://github.com/streetsidesoftware/cspell-dicts/issues/5893)) ([f0f71eb](https://github.com/streetsidesoftware/cspell-dicts/commit/f0f71eb4db767756a8a1b9d0e26925dbe3b1ca96)) ##### Dependencies - The following workspace dependencies were updated - devDependencies - [@&#8203;cspell/dict-en-shared](https://github.com/cspell/dict-en-shared) bumped to 1.0.56 ### [`v5.0.35`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5035-2026-10-05) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.34...@cspell/dict-en-gb@5.0.35) ##### Updates and Bug Fixes - use the unmodified GPL-3.0 and LGPL-3.0 license text ([#&#8203;5874](https://github.com/streetsidesoftware/cspell-dicts/issues/5874)) ([8806309](https://github.com/streetsidesoftware/cspell-dicts/commit/8806309b8c376b6bbd0a99020889d1585eb32597)) ### [`v5.0.34`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5034-2026-09-12) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.33...@cspell/dict-en-gb@5.0.34) ##### Updates and Bug Fixes - Use single quote for apostrophe ([#&#8203;5724](https://github.com/streetsidesoftware/cspell-dicts/issues/5724)) ([79df2b4](https://github.com/streetsidesoftware/cspell-dicts/commit/79df2b40f46f2b864acf36da44db12a837d9a8d8)) ### [`v5.0.33`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5033-2026-09-12) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.32...@cspell/dict-en-gb@5.0.33) ##### Updates and Bug Fixes - be able to track change to the English dictionaries ([#&#8203;5716](https://github.com/streetsidesoftware/cspell-dicts/issues/5716)) ([75bd0c3](https://github.com/streetsidesoftware/cspell-dicts/commit/75bd0c35a5d0ddf703fad2362a4a28339fd3814f)) - Revert the changes to the English dictionaries. Too many changes were made that caused downstream issues. The next step is to evaluate what exactly changed before updating the dictionaries. ([5e24b94](https://github.com/streetsidesoftware/cspell-dicts/commit/5e24b940df0188deb361cf806b55efd5a14cb396)) ##### Dependencies - The following workspace dependencies were updated - devDependencies - [@&#8203;cspell/aoo-mozilla-en-dict](https://github.com/cspell/aoo-mozilla-en-dict) bumped to 1.0.13 ### [`v5.0.32`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5032-2026-09-11) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.31...@cspell/dict-en-gb@5.0.32) ##### Updates and Bug Fixes - Update English Dictionary sources ([#&#8203;5691](https://github.com/streetsidesoftware/cspell-dicts/issues/5691)) ([d2e1ce1](https://github.com/streetsidesoftware/cspell-dicts/commit/d2e1ce1942976a8d3e8f166c43ba844426a85ae1)) ##### Dependencies - The following workspace dependencies were updated - devDependencies - [@&#8203;cspell/aoo-mozilla-en-dict](https://github.com/cspell/aoo-mozilla-en-dict) bumped to 1.0.12 ### [`v5.0.31`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5031-2026-08-26) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.30...@cspell/dict-en-gb@5.0.31) ##### Updates and Bug Fixes - Workflow Bot -- Build Dictionaries ([#&#8203;5661](https://github.com/streetsidesoftware/cspell-dicts/issues/5661)) ([f9d857d](https://github.com/streetsidesoftware/cspell-dicts/commit/f9d857dc9724a3cdb2b60c617458d2554257501a)) ##### Dependencies - The following workspace dependencies were updated - devDependencies - [@&#8203;cspell/dict-en-shared](https://github.com/cspell/dict-en-shared) bumped to 1.0.55 ### [`v5.0.30`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5030-2026-07-12) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.29...@cspell/dict-en-gb@5.0.30) ##### Updates and Bug Fixes - add unsynchronized/unsynchronised to en_shared ([#&#8203;5535](https://github.com/streetsidesoftware/cspell-dicts/issues/5535)) ([d7789ca](https://github.com/streetsidesoftware/cspell-dicts/commit/d7789caf1ea7e5b92f1af52ed27e28712fd43c75)) - Workflow Bot -- Build Dictionaries ([#&#8203;5556](https://github.com/streetsidesoftware/cspell-dicts/issues/5556)) ([2a88c52](https://github.com/streetsidesoftware/cspell-dicts/commit/2a88c52b51113929dd263926d2dceacf183b3c4d)) ##### Dependencies - The following workspace dependencies were updated - devDependencies - [@&#8203;cspell/aoo-mozilla-en-dict](https://github.com/cspell/aoo-mozilla-en-dict) bumped to 1.0.11 - [@&#8203;cspell/dict-en-shared](https://github.com/cspell/dict-en-shared) bumped to 1.0.54 ### [`v5.0.29`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5029-2026-05-23) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.27...@cspell/dict-en-gb@5.0.29) ##### Updates and Bug Fixes - Workflow Bot -- Build Dictionaries ([#&#8203;5461](https://github.com/streetsidesoftware/cspell-dicts/issues/5461)) ([f78477c](https://github.com/streetsidesoftware/cspell-dicts/commit/f78477cb486d41ace7d5ed1d07de80252e93ebba)) ##### Dependencies - The following workspace dependencies were updated - devDependencies - [@&#8203;cspell/dict-en-shared](https://github.com/cspell/dict-en-shared) bumped to 1.0.53 ### [`v5.0.27`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5027-2026-03-24) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.26...@cspell/dict-en-gb@5.0.27) ##### Updates and Bug Fixes - Workflow Bot -- Build Dictionaries ([#&#8203;5372](https://github.com/streetsidesoftware/cspell-dicts/issues/5372)) ([d63a09b](https://github.com/streetsidesoftware/cspell-dicts/commit/d63a09b2e927ca5b8be7202bb2359e668f8fd9bf)) ##### Dependencies - The following workspace dependencies were updated - devDependencies - [@&#8203;cspell/dict-en-shared](https://github.com/cspell/dict-en-shared) bumped to 1.0.51 ### [`v5.0.26`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5026-2026-03-22) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.25...@cspell/dict-en-gb@5.0.26) ##### Updates and Bug Fixes - Workflow Bot -- Build Dictionaries ([#&#8203;5365](https://github.com/streetsidesoftware/cspell-dicts/issues/5365)) ([ecdb6f1](https://github.com/streetsidesoftware/cspell-dicts/commit/ecdb6f1e46b9f1c742fb7006e59e88b20d4bfe5b)) ##### Dependencies - The following workspace dependencies were updated - devDependencies - [@&#8203;cspell/dict-en-shared](https://github.com/cspell/dict-en-shared) bumped to 1.0.50 ### [`v5.0.25`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5025-2026-03-09) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.24...@cspell/dict-en-gb@5.0.25) ##### Dependencies - The following workspace dependencies were updated - devDependencies - [@&#8203;cspell/aoo-mozilla-en-dict](https://github.com/cspell/aoo-mozilla-en-dict) bumped to 1.0.9 ### [`v5.0.24`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5024-2026-03-02) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.23...@cspell/dict-en-gb@5.0.24) ##### Dependencies - The following workspace dependencies were updated - devDependencies - [@&#8203;cspell/aoo-mozilla-en-dict](https://github.com/cspell/aoo-mozilla-en-dict) bumped to 1.0.8 ### [`v5.0.23`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5023-2026-02-08) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.22...@cspell/dict-en-gb@5.0.23) ##### Updates and Bug Fixes - Workflow Bot -- Build Dictionaries ([#&#8203;5235](https://github.com/streetsidesoftware/cspell-dicts/issues/5235)) ([b066f3d](https://github.com/streetsidesoftware/cspell-dicts/commit/b066f3df2b58a7cd5a86bcad64e87aeed57f5a86)) ##### Dependencies - The following workspace dependencies were updated - devDependencies - [@&#8203;cspell/dict-en-shared](https://github.com/cspell/dict-en-shared) bumped to 1.0.49 ### [`v5.0.22`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5022-2026-02-01) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.21...@cspell/dict-en-gb@5.0.22) ##### Dependencies - The following workspace dependencies were updated - devDependencies - [@&#8203;cspell/aoo-mozilla-en-dict](https://github.com/cspell/aoo-mozilla-en-dict) bumped to 1.0.7 ### [`v5.0.21`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5021-2026-01-03) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.20...@cspell/dict-en-gb@5.0.21) ##### Dependencies - The following workspace dependencies were updated - devDependencies - [@&#8203;cspell/aoo-mozilla-en-dict](https://github.com/cspell/aoo-mozilla-en-dict) bumped to 1.0.6 ### [`v5.0.20`](https://github.com/streetsidesoftware/cspell-dicts/blob/HEAD/dictionaries/en_GB/CHANGELOG.md#5020-2025-12-13) [Compare Source](https://github.com/streetsidesoftware/cspell-dicts/compare/@cspell/dict-en-gb@5.0.19...@cspell/dict-en-gb@5.0.20) ##### Updates and Bug Fixes - Workflow Bot -- Build Dictionaries ([#&#8203;5037](https://github.com/streetsidesoftware/cspell-dicts/issues/5037)) ([c4b91d1](https://github.com/streetsidesoftware/cspell-dicts/commit/c4b91d112eb1e7c772295f4295ed2d26fa8019e0)) ##### Dependencies - The following workspace dependencies were updated - devDependencies - [@&#8203;cspell/dict-en-shared](https://github.com/cspell/dict-en-shared) bumped to 1.0.48 </details> <details> <summary>dtolnay/anyhow (anyhow)</summary> ### [`v1.0.104`](https://github.com/dtolnay/anyhow/releases/tag/1.0.104) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.103...1.0.104) - Update `syn` dev-dependency to version 3 ### [`v1.0.103`](https://github.com/dtolnay/anyhow/releases/tag/1.0.103) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.102...1.0.103) - Fix Stacked Borrows violation (UB) in `Error::downcast_mut` ([#&#8203;451](https://github.com/dtolnay/anyhow/issues/451), [#&#8203;452](https://github.com/dtolnay/anyhow/issues/452)) ### [`v1.0.102`](https://github.com/dtolnay/anyhow/releases/tag/1.0.102) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.101...1.0.102) - Remove backtrace dependency ([#&#8203;438](https://github.com/dtolnay/anyhow/issues/438), [#&#8203;439](https://github.com/dtolnay/anyhow/issues/439), [#&#8203;440](https://github.com/dtolnay/anyhow/issues/440), [#&#8203;441](https://github.com/dtolnay/anyhow/issues/441), [#&#8203;442](https://github.com/dtolnay/anyhow/issues/442)) ### [`v1.0.101`](https://github.com/dtolnay/anyhow/releases/tag/1.0.101) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.100...1.0.101) - Add #\[inline] to anyhow::Ok helper ([#&#8203;437](https://github.com/dtolnay/anyhow/issues/437), thanks [@&#8203;Ibitier](https://github.com/Ibitier)) </details> <details> <summary>tokio-rs/axum (axum)</summary> ### [`v0.8.9`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.8.9) [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.8.8...axum-v0.8.9) - **added:** `WebSocketUpgrade::{requested_protocols, set_selected_protocol}` for more flexible subprotocol selection ([#&#8203;3597]) - **changed:** Update minimum rust version to 1.80 ([#&#8203;3620]) - **fixed:** Set connect endpoint on correct field in MethodRouter ([#&#8203;3656]) - **fixed:** Return specific error message when multipart body limit is exceeded ([#&#8203;3611]) [#&#8203;3597]: https://github.com/tokio-rs/axum/pull/3597 [#&#8203;3620]: https://github.com/tokio-rs/axum/pull/3620 [#&#8203;3656]: https://github.com/tokio-rs/axum/pull/3656 [#&#8203;3611]: https://github.com/tokio-rs/axum/pull/3611 ### [`v0.8.8`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.8.8): axum v0.8.8 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.8.7...axum-v0.8.8) - Clarify documentation for `Router::route_layer` ([#&#8203;3567]) [#&#8203;3567]: https://github.com/tokio-rs/axum/pull/3567 ### [`v0.8.7`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.8.7): axum v0.8.7 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.8.6...axum-v0.8.7) - Relax implicit `Send` / `Sync` bounds on `RouterAsService`, `RouterIntoService` ([#&#8203;3555]) - Make it easier to visually scan for default features ([#&#8203;3550]) - Fix some documentation typos [#&#8203;3550]: https://github.com/tokio-rs/axum/pull/3550 [#&#8203;3555]: https://github.com/tokio-rs/axum/pull/3555 ### [`v0.8.6`](https://github.com/tokio-rs/axum/compare/axum-v0.8.5...axum-v0.8.6) [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.8.5...axum-v0.8.6) ### [`v0.8.5`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.8.5): axum v0.8.5 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.8.4...axum-v0.8.5) - **fixed:** Reject JSON request bodies with trailing characters after the JSON document ([#&#8203;3453]) - **added:** Implement `OptionalFromRequest` for `Multipart` ([#&#8203;3220]) - **added:** Getter methods `Location::{status_code, location}` - **added:** Support for writing arbitrary binary data into server-sent events ([#&#8203;3425])] - **added:** `middleware::ResponseAxumBodyLayer` for mapping response body to `axum::body::Body` ([#&#8203;3469]) - **added:** `impl FusedStream for WebSocket` ([#&#8203;3443]) - **changed:** The `sse` module and `Sse` type no longer depend on the `tokio` feature ([#&#8203;3154]) - **changed:** If the location given to one of `Redirect`s constructors is not a valid header value, instead of panicking on construction, the `IntoResponse` impl now returns an HTTP 500, just like `Json` does when serialization fails ([#&#8203;3377]) - **changed:** Update minimum rust version to 1.78 ([#&#8203;3412]) [#&#8203;3154]: https://github.com/tokio-rs/axum/pull/3154 [#&#8203;3220]: https://github.com/tokio-rs/axum/pull/3220 [#&#8203;3377]: https://github.com/tokio-rs/axum/pull/3377 [#&#8203;3412]: https://github.com/tokio-rs/axum/pull/3412 [#&#8203;3425]: https://github.com/tokio-rs/axum/pull/3425 [#&#8203;3443]: https://github.com/tokio-rs/axum/pull/3443 [#&#8203;3453]: https://github.com/tokio-rs/axum/pull/3453 [#&#8203;3469]: https://github.com/tokio-rs/axum/pull/3469 ### [`v0.8.4`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.8.4): axum v0.8.4 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.8.3...axum-v0.8.4) - **added:** `Router::reset_fallback` ([#&#8203;3320]) - **added:** `WebSocketUpgrade::selected_protocol` ([#&#8203;3248]) - **fixed:** Panic location for overlapping method routes ([#&#8203;3319]) - **fixed:** Don't leak a tokio task when using `serve` without graceful shutdown ([#&#8203;3129]) [#&#8203;3319]: https://github.com/tokio-rs/axum/pull/3319 [#&#8203;3320]: https://github.com/tokio-rs/axum/pull/3320 [#&#8203;3248]: https://github.com/tokio-rs/axum/pull/3248 [#&#8203;3129]: https://github.com/tokio-rs/axum/pull/3129 ### [`v0.8.3`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.8.3): axum v0.8.3 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.8.2...axum-v0.8.3) - **added:** Implement `From<Bytes>` for `Message` ([#&#8203;3273]) - **added:** Implement `OptionalFromRequest` for `Json` ([#&#8203;3142]) - **added:** Implement `OptionalFromRequest` for `Extension` ([#&#8203;3157]) - **added:** Allow setting the read buffer capacity of `WebSocketUpgrade` ([#&#8203;3178]) - **changed:** Improved code size / compile time of dependent crates ([#&#8203;3285], [#&#8203;3294]) [#&#8203;3273]: https://github.com/tokio-rs/axum/pull/3273 [#&#8203;3142]: https://github.com/tokio-rs/axum/pull/3142 [#&#8203;3157]: https://github.com/tokio-rs/axum/pull/3157 [#&#8203;3178]: https://github.com/tokio-rs/axum/pull/3178 [#&#8203;3285]: https://github.com/tokio-rs/axum/pull/3285 [#&#8203;3294]: https://github.com/tokio-rs/axum/pull/3294 ### [`v0.8.2`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.8.2): axum v0.8.2 Yanked from crates.io due to unforeseen breaking change, see [#&#8203;3190](https://github.com/tokio-rs/axum/issues/3190) for details *** - **added:** Implement `OptionalFromRequest` for `Json` ([#&#8203;3142]) - **added:** Implement `OptionalFromRequest` for `Extension` ([#&#8203;3157]) - **changed:** Make the `status` function of rejections a `const` function, such as `JsonRejection`, `QueryRejection` and `PathRejection` ([#&#8203;3168]) [#&#8203;3142]: https://github.com/tokio-rs/axum/pull/3142 [#&#8203;3157]: https://github.com/tokio-rs/axum/pull/3157 [#&#8203;3168]: https://github.com/tokio-rs/axum/pull/3168 ### [`v0.8.0`](https://github.com/tokio-rs/axum/releases/tag/axum-v0.8.0): axum v0.8.0 [Compare Source](https://github.com/tokio-rs/axum/compare/axum-v0.7.9...axum-v0.8.0) #### since rc.1 <details> - **breaking:** `axum::extract::ws::Message` now uses `Bytes` in place of `Vec<u8>`, and a new `Utf8Bytes` type in place of `String`, for its variants ([#&#8203;3078]) - **breaking:** Remove `OptionalFromRequestParts` impl for `Query` ([#&#8203;3088]) - **changed:** Upgraded `tokio-tungstenite` to 0.26 ([#&#8203;3078]) - **changed:** Query/Form: Use `serde_path_to_error` to report fields that failed to parse ([#&#8203;3081]) </details> #### full changelog *You can also read the blog post on [tokio](https://tokio.rs/blog/2025-01-01-announcing-axum-0-8-0)* *Note: there are further relevant changes in [axum-core's changelog](https://github.com/tokio-rs/axum/releases/tag/axum-core-v0.5.0)* - **breaking:** Upgrade matchit to 0.8, changing the path parameter syntax from `/:single` and `/*many` to `/{single}` and `/{*many}`; the old syntax produces a panic to avoid silent change in behavior ([#&#8203;2645]) - **breaking:** Require `Sync` for all handlers and services added to `Router` and `MethodRouter` ([#&#8203;2473]) - **breaking:** The tuple and tuple_struct `Path` extractor deserializers now check that the number of parameters matches the tuple length exactly ([#&#8203;2931]) - **breaking:** Move `Host` extractor to `axum-extra` ([#&#8203;2956]) - **breaking:** Remove `WebSocket::close`. Users should explicitly send close messages themselves. ([#&#8203;2974]) - **breaking:** Make `serve` generic over the listener and IO types ([#&#8203;2941]) - **breaking:** Remove `Serve::tcp_nodelay` and `WithGracefulShutdown::tcp_nodelay`. See `serve::ListenerExt` for an API that let you set arbitrary TCP stream properties. ([#&#8203;2941]) - **breaking:** `Option<Path<T>>` no longer swallows all error conditions, instead rejecting the request in many cases; see its documentation for details ([#&#8203;2475]) - **breaking:** `axum::extract::ws::Message` now uses `Bytes` in place of `Vec<u8>`, and a new `Utf8Bytes` type in place of `String`, for its variants ([#&#8203;3078]) - **fixed:** Skip SSE incompatible chars of `serde_json::RawValue` in `Event::json_data` ([#&#8203;2992]) - **fixed:** Don't panic when array type is used for path segment ([#&#8203;3039]) - **fixed:** Avoid setting `content-length` before middleware. This allows middleware to add bodies to requests without needing to manually set `content-length` ([#&#8203;2897]) - **change:** Update minimum rust version to 1.75 ([#&#8203;2943]) - **changed:** Upgraded `tokio-tungstenite` to 0.26 ([#&#8203;3078]) - **changed:** Query/Form: Use `serde_path_to_error` to report fields that failed to parse ([#&#8203;3081]) - **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 `NoContent` as a self-described shortcut for `StatusCode::NO_CONTENT` ([#&#8203;2978]) - **added:** Add support for WebSockets over HTTP/2. They can be enabled by changing `get(ws_endpoint)` handlers to `any(ws_endpoint)` ([#&#8203;2894]) - **added:** Add `MethodFilter::CONNECT`, `routing::connect[_service]` and `MethodRouter::connect[_service]` ([#&#8203;2961]) - **added:** Extend `FailedToDeserializePathParams::kind` enum with (`ErrorKind::DeserializeError`). This new variant captures both `key`, `value`, and `message` from named path parameters parse errors, instead of only deserialization error message in `ErrorKind::Message`. ([#&#8203;2720]) [#&#8203;2475]: https://github.com/tokio-rs/axum/pull/2475 [#&#8203;2897]: https://github.com/tokio-rs/axum/pull/2897 [#&#8203;2903]: https://github.com/tokio-rs/axum/pull/2903 [#&#8203;2894]: https://github.com/tokio-rs/axum/pull/2894 [#&#8203;2956]: https://github.com/tokio-rs/axum/pull/2956 [#&#8203;2961]: https://github.com/tokio-rs/axum/pull/2961 [#&#8203;2974]: https://github.com/tokio-rs/axum/pull/2974 [#&#8203;2978]: https://github.com/tokio-rs/axum/pull/2978 [#&#8203;2992]: https://github.com/tokio-rs/axum/pull/2992 [#&#8203;2720]: https://github.com/tokio-rs/axum/pull/2720 [#&#8203;3039]: https://github.com/tokio-rs/axum/pull/3039 [#&#8203;2941]: https://github.com/tokio-rs/axum/pull/2941 [#&#8203;2473]: https://github.com/tokio-rs/axum/pull/2473 [#&#8203;2645]: https://github.com/tokio-rs/axum/pull/2645 [#&#8203;2931]: https://github.com/tokio-rs/axum/pull/2931 [#&#8203;2943]: https://github.com/tokio-rs/axum/pull/2943 [#&#8203;3078]: https://github.com/tokio-rs/axum/pull/3078 [#&#8203;3081]: https://github.com/tokio-rs/axum/pull/3081 [#&#8203;3088]: https://github.com/tokio-rs/axum/pull/3088 </details> <details> <summary>murar8/axum_typed_multipart (axum_typed_multipart)</summary> ### [`v0.16.8`](https://github.com/murar8/axum_typed_multipart/releases/tag/0.16.8) [Compare Source](https://github.com/murar8/axum_typed_multipart/compare/0.16.7...0.16.8) #### What's Changed - ci: update checks and coverage workflow by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;140](https://github.com/murar8/axum_typed_multipart/pull/140) - fix: remove obsolete rkyv audit ignore by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;142](https://github.com/murar8/axum_typed_multipart/pull/142) **Full Changelog**: <https://github.com/murar8/axum_typed_multipart/compare/0.16.7...0.16.8> ### [`v0.16.7`](https://github.com/murar8/axum_typed_multipart/releases/tag/0.16.7) [Compare Source](https://github.com/murar8/axum_typed_multipart/compare/0.16.6...0.16.7) #### What's Changed - build(deps): bump actions/checkout from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;130](https://github.com/murar8/axum_typed_multipart/pull/130) - build(deps): bump codecov/codecov-action from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;129](https://github.com/murar8/axum_typed_multipart/pull/129) - build(deps): bump actions/setup-python from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;131](https://github.com/murar8/axum_typed_multipart/pull/131) - chore: update syn to 3.0.3 and darling to 0.24.0 by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;134](https://github.com/murar8/axum_typed_multipart/pull/134) - refactor(macros): remove proc-macro-error2 dependency by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;135](https://github.com/murar8/axum_typed_multipart/pull/135) **Full Changelog**: <https://github.com/murar8/axum_typed_multipart/compare/0.16.6...0.16.7> ### [`v0.16.6`](https://github.com/murar8/axum_typed_multipart/releases/tag/0.16.6) [Compare Source](https://github.com/murar8/axum_typed_multipart/compare/0.16.5...0.16.6) #### What's Changed - refactor: implement FromMeta for RenameCase by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;121](https://github.com/murar8/axum_typed_multipart/pull/121) - refactor(macros): improve error spans with darling native errors by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;122](https://github.com/murar8/axum_typed_multipart/pull/122) - test(macros): add trybuild tests for compile-time error messages by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;123](https://github.com/murar8/axum_typed_multipart/pull/123) - build(deps): bump codecov/codecov-action from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;124](https://github.com/murar8/axum_typed_multipart/pull/124) - fix(macros): emit fully-qualified paths in derive output by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;127](https://github.com/murar8/axum_typed_multipart/pull/127) **Full Changelog**: <https://github.com/murar8/axum_typed_multipart/compare/0.16.5...0.16.6> ### [`v0.16.5`](https://github.com/murar8/axum_typed_multipart/releases/tag/0.16.5) [Compare Source](https://github.com/murar8/axum_typed_multipart/compare/0.16.4...0.16.5) #### What's Changed - build(deps): bump actions/setup-python from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;112](https://github.com/murar8/axum_typed_multipart/pull/112) - build(deps): bump actions/checkout from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;114](https://github.com/murar8/axum_typed_multipart/pull/114) - build(deps): update darling requirement from 0.20.3 to 0.21.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;113](https://github.com/murar8/axum_typed_multipart/pull/113) - build(deps): update darling requirement from 0.21.3 to 0.23.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;117](https://github.com/murar8/axum_typed_multipart/pull/117) - refactor(test_helper): remove reqwest wrappers by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;119](https://github.com/murar8/axum_typed_multipart/pull/119) **Full Changelog**: <https://github.com/murar8/axum_typed_multipart/compare/0.16.4...0.16.5> ### [`v0.16.4`](https://github.com/murar8/axum_typed_multipart/releases/tag/0.16.4) [Compare Source](https://github.com/murar8/axum_typed_multipart/compare/0.16.3...0.16.4) #### What's Changed - build(deps): bump actions/checkout from 4 to 5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;111](https://github.com/murar8/axum_typed_multipart/pull/111) - feat([#&#8203;106](https://github.com/murar8/axum_typed_multipart/issues/106))!: add state support to multipart extraction by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;109](https://github.com/murar8/axum_typed_multipart/pull/109) **Full Changelog**: <https://github.com/murar8/axum_typed_multipart/compare/0.16.3...0.16.4> ### [`v0.16.3`](https://github.com/murar8/axum_typed_multipart/releases/tag/0.16.3) [Compare Source](https://github.com/murar8/axum_typed_multipart/compare/0.16.2...0.16.3) #### What's Changed - [#&#8203;107](https://github.com/murar8/axum_typed_multipart/issues/107): improve bool parsing by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;108](https://github.com/murar8/axum_typed_multipart/pull/108) **Full Changelog**: <https://github.com/murar8/axum_typed_multipart/compare/0.16.2...0.16.3> ### [`v0.16.2`](https://github.com/murar8/axum_typed_multipart/releases/tag/0.16.2) #### What's Changed - fix([#&#8203;104](https://github.com/murar8/axum_typed_multipart/issues/104)): assign defaults after required field checks by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;105](https://github.com/murar8/axum_typed_multipart/pull/105) **Full Changelog**: <https://github.com/murar8/axum_typed_multipart/compare/0.16.0...0.16.2> ### [`v0.16.0`](https://github.com/murar8/axum_typed_multipart/releases/tag/0.16.0) [Compare Source](https://github.com/murar8/axum_typed_multipart/compare/0.15.1...0.16.0) #### What's Changed - build(deps): update utoipa-rapidoc requirement from 5.0.1 to 6.0.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;99](https://github.com/murar8/axum_typed_multipart/pull/99) - chore(deps): remove default axum features by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;102](https://github.com/murar8/axum_typed_multipart/pull/102) - feat: remove default size limits by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;103](https://github.com/murar8/axum_typed_multipart/pull/103) **Full Changelog**: <https://github.com/murar8/axum_typed_multipart/compare/0.15.1...0.16.0> ### [`v0.15.1`](https://github.com/murar8/axum_typed_multipart/releases/tag/0.15.1) #### What's Changed - feat: axum 0.8 support by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;98](https://github.com/murar8/axum_typed_multipart/pull/98) **Full Changelog**: <https://github.com/murar8/axum_typed_multipart/compare/0.14.0...0.15.1> ### [`v0.14.0`](https://github.com/murar8/axum_typed_multipart/releases/tag/0.14.0) [Compare Source](https://github.com/murar8/axum_typed_multipart/compare/0.13.2...0.14.0) #### What's Changed - build(deps): bump codecov/codecov-action from 4 to 5 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;91](https://github.com/murar8/axum_typed_multipart/pull/91) - feat: add TryFromChunks impl for chrono_0_4::NaiveDate by [@&#8203;SimonErm](https://github.com/SimonErm) in [#&#8203;94](https://github.com/murar8/axum_typed_multipart/pull/94) - feat: add TryFromChunks impl for rust_decimal_1::Decimal by [@&#8203;SimonErm](https://github.com/SimonErm) in [#&#8203;93](https://github.com/murar8/axum_typed_multipart/pull/93) #### New Contributors - [@&#8203;SimonErm](https://github.com/SimonErm) made their first contribution in [#&#8203;94](https://github.com/murar8/axum_typed_multipart/pull/94) **Full Changelog**: <https://github.com/murar8/axum_typed_multipart/compare/0.13.2...0.14.0> ### [`v0.13.2`](https://github.com/murar8/axum_typed_multipart/releases/tag/0.13.2) [Compare Source](https://github.com/murar8/axum_typed_multipart/compare/0.13.1...0.13.2) #### What's Changed - chore(deps): update ci by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;87](https://github.com/murar8/axum_typed_multipart/pull/87) - build(deps): update thiserror requirement from 1.0.7 to 2.0.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;89](https://github.com/murar8/axum_typed_multipart/pull/89) **Full Changelog**: <https://github.com/murar8/axum_typed_multipart/compare/0.13.1...0.13.2> ### [`v0.13.1`](https://github.com/murar8/axum_typed_multipart/releases/tag/0.13.1) [Compare Source](https://github.com/murar8/axum_typed_multipart/compare/0.13.0...0.13.1) #### What's Changed - Minimal utoipa example with file upload by [@&#8203;mattdavis90](https://github.com/mattdavis90) in [#&#8203;85](https://github.com/murar8/axum_typed_multipart/pull/85) #### New Contributors - [@&#8203;mattdavis90](https://github.com/mattdavis90) made their first contribution in [#&#8203;85](https://github.com/murar8/axum_typed_multipart/pull/85) **Full Changelog**: <https://github.com/murar8/axum_typed_multipart/compare/0.13.0...0.13.1> ### [`v0.13.0`](https://github.com/murar8/axum_typed_multipart/releases/tag/0.13.0) [Compare Source](https://github.com/murar8/axum_typed_multipart/compare/0.12.2...0.13.0) #### What's Changed - chore(deps): update proc-macro-error to proc-macro-error2 by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;83](https://github.com/murar8/axum_typed_multipart/pull/83) - feat: gate TryFromChunks implementations by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;84](https://github.com/murar8/axum_typed_multipart/pull/84) **Full Changelog**: <https://github.com/murar8/axum_typed_multipart/compare/0.12.2...0.13.0> ### [`v0.12.2`](https://github.com/murar8/axum_typed_multipart/releases/tag/0.12.2) [Compare Source](https://github.com/murar8/axum_typed_multipart/compare/0.12.1...0.12.2) #### What's Changed - docs: add validation example by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;80](https://github.com/murar8/axum_typed_multipart/pull/80) **Full Changelog**: <https://github.com/murar8/axum_typed_multipart/compare/0.12.1...0.12.2> ### [`v0.12.1`](https://github.com/murar8/axum_typed_multipart/releases/tag/0.12.1) [Compare Source](https://github.com/murar8/axum_typed_multipart/compare/0.11.2...0.12.1) #### What's Changed - build(deps): update tower requirement from 0.4.13 to 0.5.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;76](https://github.com/murar8/axum_typed_multipart/pull/76) - some cleanup by [@&#8203;murar8](https://github.com/murar8) in [#&#8203;77](https://github.com/murar8/axum_typed_multipart/pull/77) **Full Changelog**: <https://github.com/murar8/axum_typed_multipart/compare/0.11.2...0.12.1> </details> <details> <summary>marshallpierce/rust-base64 (base64)</summary> ### [`v0.23.1`](https://github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0231) [Compare Source](https://github.com/marshallpierce/rust-base64/compare/v0.23.0...v0.23.1) - Make the tests build again on non-SIMD architectures ### [`v0.23.0`](https://github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0230) [Compare Source](https://github.com/marshallpierce/rust-base64/compare/v0.22.1...v0.23.0) - Added more consts for preconfigured configs and engines - Make DecodeError::InvalidLastSymbol more clear by including the decoded value - Added SIMD-accelerated engines behind the default-on `simd-unsafe` feature: `Simd` picks the best instruction set at runtime (AVX2 on `x86_64`, NEON on `aarch64`) and falls back to the scalar `GeneralPurpose` engine, while `Avx2` and `Neon` target one instruction set with no runtime detection and work in `no_std`. The engines support the standard and URL-safe alphabets. - Update MSRV to 1.71.0 - Add support for custom padding symbols </details> <details> <summary>chronotope/chrono (chrono)</summary> ### [`v0.4.45`](https://github.com/chronotope/chrono/releases/tag/v0.4.45): 0.4.45 [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.44...v0.4.45) #### What's Changed - fix(tz): reject TZ offset hour of 24 to avoid FixedOffset overflow by [@&#8203;SAY-5](https://github.com/SAY-5) in [#&#8203;1787](https://github.com/chronotope/chrono/pull/1787) - tz_data: fix tzdata locations on Android by [@&#8203;caruschalalamove](https://github.com/caruschalalamove) in [#&#8203;1789](https://github.com/chronotope/chrono/pull/1789) ### [`v0.4.44`](https://github.com/chronotope/chrono/releases/tag/v0.4.44): 0.4.44 [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.43...v0.4.44) #### What's Changed - docs: match MSRV with `Cargo.toml` contents by [@&#8203;coryan](https://github.com/coryan) in [#&#8203;1772](https://github.com/chronotope/chrono/pull/1772) - Add track_caller to non-deprecated functions by [@&#8203;svix-jplatte](https://github.com/svix-jplatte) in [#&#8203;1774](https://github.com/chronotope/chrono/pull/1774) ### [`v0.4.43`](https://github.com/chronotope/chrono/releases/tag/v0.4.43): 0.4.43 [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.42...v0.4.43) #### What's Changed - Install extra components for lint workflow by [@&#8203;djc](https://github.com/djc) in [#&#8203;1741](https://github.com/chronotope/chrono/pull/1741) - Upgrade windows-bindgen to 0.64 by [@&#8203;djc](https://github.com/djc) in [#&#8203;1742](https://github.com/chronotope/chrono/pull/1742) - Improve windows-bindgen setup by [@&#8203;djc](https://github.com/djc) in [#&#8203;1744](https://github.com/chronotope/chrono/pull/1744) - Drop stabilized feature doc_auto_cfg by [@&#8203;djc](https://github.com/djc) in [#&#8203;1745](https://github.com/chronotope/chrono/pull/1745) - Faster RFC 3339 parsing by [@&#8203;djc](https://github.com/djc) in [#&#8203;1748](https://github.com/chronotope/chrono/pull/1748) - Update windows-bindgen requirement from 0.64 to 0.65 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1751](https://github.com/chronotope/chrono/pull/1751) - add `NaiveDate::abs_diff` by [@&#8203;Kinrany](https://github.com/Kinrany) in [#&#8203;1752](https://github.com/chronotope/chrono/pull/1752) - Add feature gated defmt support. by [@&#8203;pebender](https://github.com/pebender) in [#&#8203;1747](https://github.com/chronotope/chrono/pull/1747) - Drop deny lints, eager Debug impls are a mixed blessing by [@&#8203;djc](https://github.com/djc) in [#&#8203;1753](https://github.com/chronotope/chrono/pull/1753) - chore: minor improvement for docs by [@&#8203;spuradage](https://github.com/spuradage) in [#&#8203;1756](https://github.com/chronotope/chrono/pull/1756) - Added doctest for the NaiveDate years_since function by [@&#8203;LucasBou](https://github.com/LucasBou) in [#&#8203;1755](https://github.com/chronotope/chrono/pull/1755) - Prepare 0.4.43 by [@&#8203;djc](https://github.com/djc) in [#&#8203;1765](https://github.com/chronotope/chrono/pull/1765) - Update copyright year to 2026 in LICENSE.txt by [@&#8203;taozui472](https://github.com/taozui472) in [#&#8203;1767](https://github.com/chronotope/chrono/pull/1767) ### [`v0.4.42`](https://github.com/chronotope/chrono/releases/tag/v0.4.42): 0.4.42 [Compare Source](https://github.com/chronotope/chrono/compare/v0.4.41...v0.4.42) #### What's Changed - Add fuzzer for DateTime::parse_from_str by [@&#8203;tyler92](https://github.com/tyler92) in [#&#8203;1700](https://github.com/chronotope/chrono/pull/1700) - Fix wrong amount of micro/milliseconds by [@&#8203;nmlt](https://github.com/nmlt) in [#&#8203;1703](https://github.com/chronotope/chrono/pull/1703) - Add warning about MappedLocalTime and wasm by [@&#8203;lutzky](https://github.com/lutzky) in [#&#8203;1702](https://github.com/chronotope/chrono/pull/1702) - Fix incorrect parsing of fixed-length second fractions by [@&#8203;chris-leach](https://github.com/chris-leach) in [#&#8203;1705](https://github.com/chronotope/chrono/pull/1705) - Fix cfgs for `wasm32-linux` support by [@&#8203;arjunr2](https://github.com/arjunr2) in [#&#8203;1707](https://github.com/chronotope/chrono/pull/1707) - Fix OpenHarmony's `tzdata` parsing by [@&#8203;ldm0](https://github.com/ldm0) in [#&#8203;1679](https://github.com/chronotope/chrono/pull/1679) - Convert NaiveDate to/from days since unix epoch by [@&#8203;findepi](https://github.com/findepi) in [#&#8203;1715](https://github.com/chronotope/chrono/pull/1715) - Add `?Sized` bound to related methods of `DelayedFormat::write_to` by [@&#8203;Huliiiiii](https://github.com/Huliiiiii) in [#&#8203;1721](https://github.com/chronotope/chrono/pull/1721) - Add `from_timestamp_secs` method to `DateTime` by [@&#8203;jasonaowen](https://github.com/jasonaowen) in [#&#8203;1719](https://github.com/chronotope/chrono/pull/1719) - Migrate to core::error::Error by [@&#8203;benbrittain](https://github.com/benbrittain) in [#&#8203;1704](https://github.com/chronotope/chrono/pull/1704) - Upgrade to windows-bindgen 0.63 by [@&#8203;djc](https://github.com/djc) in [#&#8203;1730](https://github.com/chronotope/chrono/pull/1730) - strftime: simplify error handling by [@&#8203;djc](https://github.com/djc) in [#&#8203;1731](https://github.com/chronotope/chrono/pull/1731) </details> <details> <summary>clap-rs/clap (clap)</summary> ### [`v4.6.7`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#467---2026-09-14) [Compare Source](https://github.com/clap-rs/clap/compare/v4.6.6...v4.6.7) ##### Features - *(derive)* Add `#[command(defer = <bool>)]` attribute to opt-in to lazy initialisation of subcommands ### [`v4.6.6`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#466---2026-08-06) [Compare Source](https://github.com/clap-rs/clap/compare/v4.6.5...v4.6.6) ##### Features - Add `Command::get_overridden_usage` ### [`v4.6.5`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#465---2026-07-31) [Compare Source](https://github.com/clap-rs/clap/compare/v4.6.4...v4.6.5) ##### Fixes - *(help)* Correctly mark which `value_names` are optional with `num_args` ### [`v4.6.4`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#464---2026-07-21) [Compare Source](https://github.com/clap-rs/clap/compare/v4.6.3...v4.6.4) ##### Internal - Update to syn v3 ### [`v4.6.3`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#463---2026-07-20) [Compare Source](https://github.com/clap-rs/clap/compare/v4.6.2...v4.6.3) ##### Fixes - *(derive)* Allow `"literal".function()` as attribute values ### [`v4.6.2`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#462---2026-07-15) [Compare Source](https://github.com/clap-rs/clap/compare/v4.6.1...v4.6.2) ##### Fixes - *(help)* Say `alias` when there is only one ### [`v4.6.1`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#461---2026-04-15) [Compare Source](https://github.com/clap-rs/clap/compare/v4.6.0...v4.6.1) ##### Fixes - *(derive)* Ensure rebuilds happen when an read env variable is changed ### [`v4.6.0`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#460---2026-03-12) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.61...v4.6.0) ##### Compatibility - Update MSRV to 1.85 ### [`v4.5.61`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4561---2026-03-12) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.60...v4.5.61) ##### Internal - Update dependencies ### [`v4.5.60`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4560---2026-02-19) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.59...v4.5.60) ##### Fixes - *(help)* Quote empty default values, possible values ### [`v4.5.59`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4559---2026-02-16) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.58...v4.5.59) ##### Fixes - `Command::ignore_errors` no longer masks help/version on subcommands ### [`v4.5.58`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4558---2026-02-11) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.57...v4.5.58) ### [`v4.5.57`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4557---2026-02-03) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.56...v4.5.57) ##### Fixes - Regression from 4.5.55 where having an argument with `.value_terminator("--")` caused problems with an argument with `.last(true)` ### [`v4.5.56`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4556---2026-01-29) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.55...v4.5.56) ##### Fixes - On conflict error, don't show conflicting arguments in the usage ### [`v4.5.55`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4555---2026-01-27) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.54...v4.5.55) ##### Fixes - Fix inconsistency in precedence between positionals with a `value_terminator("--")` and escapes (`--`) where `./foo -- bar` means the first arg is empty, rather than escaping future args ### [`v4.5.54`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4554---2026-01-02) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.53...v4.5.54) ##### Fixes - *(help)* Move `[default]` to its own paragraph when `PossibleValue::help` is present in `--help` ### [`v4.5.53`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4553---2025-11-19) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.52...v4.5.53) ##### Features - Add `default_values_if`, `default_values_ifs` ### [`v4.5.52`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4552---2025-11-17) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.51...v4.5.52) ##### Fixes - Don't panic when `args_conflicts_with_subcommands` conflicts with an `ArgGroup` ### [`v4.5.51`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4551---2025-10-29) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.50...v4.5.51) ##### Fixes - *(help)* Correctly calculate padding for short flags that take a value - *(help)* Don't panic on short flags using `ArgAction::Count` ### [`v4.5.50`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4550---2025-10-20) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.49...v4.5.50) ##### Features - Accept `Cow` where `String` and `&str` are accepted ### [`v4.5.49`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4549---2025-10-13) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.48...v4.5.49) ##### Fixes - *(help)* Correctly wrap when ANSI escape codes are present ### [`v4.5.48`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4548---2025-09-19) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.47...v4.5.48) ##### Documentation - Add a new CLI Concepts document as another way of framing clap - Expand the `typed_derive` cookbook entry ### [`v4.5.47`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4547---2025-09-02) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.46...v4.5.47) ##### Features - Added `impl FromArgMatches for ()` - Added `impl Args for ()` - Added `impl Subcommand for ()` - Added `impl FromArgMatches for Infallible` - Added `impl Subcommand for Infallible` ##### Fixes - *(derive)* Update runtime error text to match `clap` ### [`v4.5.46`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4546---2025-08-26) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.45...v4.5.46) ##### Features - Expose `StyledStr::push_str` ### [`v4.5.45`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4545---2025-08-12) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.44...v4.5.45) ##### Fixes - *(unstable-v5)* `ValueEnum` variants now use the full doc comment, not summary, for `PossibleValue::help` ### [`v4.5.44`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4544---2025-08-11) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.43...v4.5.44) ##### Features - Add `Command::mut_subcommands` ### [`v4.5.43`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4543---2025-08-06) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.42...v4.5.43) ##### Fixes - *(help)* In long help, list Possible Values before defaults, rather than after, for a more consistent look ### [`v4.5.42`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4542---2025-07-30) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.41...v4.5.42) ##### Fixes - Include subcommand visible long aliases in `--help` ### [`v4.5.41`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4541---2025-07-09) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.40...v4.5.41) ##### Features - Add `Styles::context` and `Styles::context_value` to customize the styling of `[default: value]` like notes in the `--help` ### [`v4.5.40`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4540---2025-06-09) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.39...v4.5.40) ##### Features - Support quoted ids in `arg!()` macro (e.g. `arg!("check-config": ...)`) ### [`v4.5.39`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4539---2025-05-27) [Compare Source](https://github.com/clap-rs/clap/compare/v4.5.38...v4.5.39) ##### Fixes - *(help)* Show short flag aliases before long - *(help)* Merge the short and long flag alias lists </details> <details> <summary>open-cli-tools/concurrently (concurrently)</summary> ### [`v9.2.5`](https://github.com/open-cli-tools/concurrently/releases/tag/v9.2.5) [Compare Source](https://github.com/open-cli-tools/concurrently/compare/v9.2.4...v9.2.5) #### What's Changed - deps: update shell-quote to 1.12.0 by [@&#8203;Abicodexi](https://github.com/Abicodexi) and [@&#8203;Mayvis](https://github.com/Mayvis) in [#&#8203;622](https://github.com/open-cli-tools/concurrently/pull/622) **Full Changelog**: <https://github.com/open-cli-tools/concurrently/compare/v9.2.4...v9.2.5> ### [`v9.2.4`](https://github.com/open-cli-tools/concurrently/releases/tag/v9.2.4) [Compare Source](https://github.com/open-cli-tools/concurrently/compare/v9.2.3...v9.2.4) - upgrade shell-quote to 1.9.0 - [#&#8203;597](https://github.com/open-cli-tools/concurrently/issues/597), [#&#8203;600](https://github.com/open-cli-tools/concurrently/issues/600) **Full Changelog**: <https://github.com/open-cli-tools/concurrently/compare/v9.2.3...v9.2.4> ### [`v9.2.3`](https://github.com/open-cli-tools/concurrently/releases/tag/v9.2.3) [Compare Source](https://github.com/open-cli-tools/concurrently/compare/v9.2.1...v9.2.3) - Address [vulnerability in `shell-quote`](https://app.snyk.io/vuln/SNYK-JS-SHELLQUOTE-16799355) - [#&#8203;591](https://github.com/open-cli-tools/concurrently/issues/591), [#&#8203;596](https://github.com/open-cli-tools/concurrently/issues/596) </details> <details> <summary>streetsidesoftware/cspell (cspell)</summary> ### [`v9.8.0`](https://github.com/streetsidesoftware/cspell/blob/HEAD/packages/cspell/CHANGELOG.md#v980-2026-03-30) [Compare Source](https://github.com/streetsidesoftware/cspell/compare/v9.7.0...v9.8.0) ##### Features <details> <summary>feat: make flatpack diff friendly (<a href="https://github.com/streetsidesoftware/cspell/pull/8680">#&#8203;8680</a>)</summary> ##### feat: make flatpack diff friendly ([#&#8203;8680](https://github.com/streetsidesoftware/cspell/pull/8680)) ### [`v9.7.0`](https://github.com/streetsidesoftware/cspell/blob/HEAD/packages/cspell/CHANGELOG.md#v970-2026-02-23) [Compare Source](https://github.com/streetsidesoftware/cspell/compare/v9.6.4...v9.7.0) ##### Features <details> <summary>feat: Substitution Part 4 - enable substitutions during document check (<a href="https://github.com/streetsidesoftware/cspell/pull/8630">#&#8203;8630</a>)</summary> ##### feat: Substitution Part 4 - enable substitutions during document check ([#&#8203;8630](https://github.com/streetsidesoftware/cspell/pull/8630)) ### [`v9.6.4`](https://github.com/streetsidesoftware/cspell/blob/HEAD/packages/cspell/CHANGELOG.md#v964-2026-02-04) [Compare Source](https://github.com/streetsidesoftware/cspell/compare/v9.6.3...v9.6.4) ##### Fixes <details> <summary>fix: add --no-dictionary option to lint command (<a href="https://github.com/streetsidesoftware/cspell/pull/8514">#&#8203;8514</a>)</summary> ##### fix: add --no-dictionary option to lint command ([#&#8203;8514](https://github.com/streetsidesoftware/cspell/pull/8514)) ### [`v9.6.3`](https://github.com/streetsidesoftware/cspell/blob/HEAD/packages/cspell/CHANGELOG.md#v963-2026-02-02) [Compare Source](https://github.com/streetsidesoftware/cspell/compare/v9.6.2...v9.6.3) ##### Fixes <details> <summary>fix: Add `engines` setting (<a href="https://github.com/streetsidesoftware/cspell/pull/8491">#&#8203;8491</a>)</summary> ##### fix: Add `engines` setting ([#&#8203;8491](https://github.com/streetsidesoftware/cspell/pull/8491)) ### [`v9.6.2`](https://github.com/streetsidesoftware/cspell/blob/HEAD/packages/cspell/CHANGELOG.md#v962-2026-01-26) [Compare Source](https://github.com/streetsidesoftware/cspell/compare/v9.6.1...v9.6.2) ##### Fixes <details> <summary>fix: Conditionally compress and build bTrie (<a href="https://github.com/streetsidesoftware/cspell/pull/8437">#&#8203;8437</a>)</summary> ##### fix: Conditionally compress and build bTrie ([#&#8203;8437](https://github.com/streetsidesoftware/cspell/pull/8437)) ### [`v9.6.1`](https://github.com/streetsidesoftware/cspell/blob/HEAD/packages/cspell/CHANGELOG.md#v961-2026-01-25) [Compare Source](https://github.com/streetsidesoftware/cspell/compare/v9.6.0...v9.6.1) ##### Fixes <details> <summary>fix: Move performance monitoring into its own package (<a href="https://github.com/streetsidesoftware/cspell/pull/8431">#&#8203;8431</a>)</summary> ##### fix: Move performance monitoring into its own package ([#&#8203;8431](https://github.com/streetsidesoftware/cspell/pull/8431)) ### [`v9.6.0`](https://github.com/streetsidesoftware/cspell/blob/HEAD/packages/cspell/CHANGELOG.md#v960-2026-01-12) [Compare Source](https://github.com/streetsidesoftware/cspell/compare/v9.4.0...v9.6.0) ##### Features <details> <summary>feat: ESLint-plugin -- Distinguish between Forbidden, Misspelled, and Unknown words. (<a href="https://github.com/streetsidesoftware/cspell/pull/8337">#&#8203;8337</a>)</summary> ##### feat: ESLint-plugin -- Distinguish between Forbidden, Misspelled, and Unknown words. ([#&#8203;8337](https://github.com/streetsidesoftware/cspell/pull/8337)) ### [`v9.4.0`](https://github.com/streetsidesoftware/cspell/blob/HEAD/packages/cspell/CHANGELOG.md#v940-2025-12-01) [Compare Source](https://github.com/streetsidesoftware/cspell/compare/v9.3.2...v9.4.0) ##### Features <details> <summary>feat: Add option to skip large files (<a href="https://github.com/streetsidesoftware/cspell/pull/8040">#&#8203;8040</a>)</summary> ##### feat: Add option to skip large files ([#&#8203;8040](https://github.com/streetsidesoftware/cspell/pull/8040)) New command line option: `--max-file-size <value>` The value can be `<number>[units]`, number with optional units. Supported units: - `K`, `KB` - value \* 1024 - `M`, `MB` - value \* 2^20 - `G`, `GB` - value \* 2^30 There is also a new setting called `maxFileSize`. At the moment, it only takes numbers in bytes. This allows for setting a global value and overrides based upon glob settings. Note: the command line value will override any value found in the configuration files. *** </details> ##### Fixes <details> <summary>fix: turn off gpg when publishing for now (<a href="https://github.com/streetsidesoftware/cspell/pull/8104">#&#8203;8104</a>)</summary> ##### fix: turn off gpg when publishing for now ([#&#8203;8104](https://github.com/streetsidesoftware/cspell/pull/8104)) *** </details> <details> <summary>fix: Turnoff signing for now (<a href="https://github.com/streetsidesoftware/cspell/pull/8102">#&#8203;8102</a>)</summary> ##### fix: Turnoff signing for now ([#&#8203;8102](https://github.com/streetsidesoftware/cspell/pull/8102)) *** </details> <details> <summary>fix: Sign tags and commits when publishing (<a href="https://github.com/streetsidesoftware/cspell/pull/8096">#&#8203;8096</a>)</summary> ##### fix: Sign tags and commits when publishing ([#&#8203;8096](https://github.com/streetsidesoftware/cspell/pull/8096)) *** </details> <details> <summary>fix: Clean up verbose output (<a href="https://github.com/streetsidesoftware/cspell/pull/8053">#&#8203;8053</a>)</summary> ##### fix: Clean up verbose output ([#&#8203;8053](https://github.com/streetsidesoftware/cspell/pull/8053)) *** </details> <details> <summary>fix: allow string based maxFileSize (<a href="https://github.com/streetsidesoftware/cspell/pull/8047">#&#8203;8047</a>)</summary> ##### fix: allow string based maxFileSize ([#&#8203;8047](https://github.com/streetsidesoftware/cspell/pull/8047)) - Support allowing string based maxFileSize in config files. - Report the number of skipped files. *** </details> ##### Dictionary Updates <details> <summary>fix: Workflow Bot -- Update Dictionaries (main) (<a href="https://github.com/streetsidesoftware/cspell/pull/8091">#&#8203;8091</a>)</summary> ##### fix: Workflow Bot -- Update Dictionaries (main) ([#&#8203;8091](https://github.com/streetsidesoftware/cspell/pull/8091)) </details> <details> <summary>eslint/eslint (eslint)</summary> ### [`v9.39.5`](https://github.com/eslint/eslint/releases/tag/v9.39.5) [Compare Source](https://github.com/eslint/eslint/compare/v9.39.4...v9.39.5) ##### Bug Fixes - [`253be16`](https://github.com/eslint/eslint/commit/253be16a79a4c78eec4e0eb461b574d60dbf6b11) fix: handle unavailable require cache (backport of [#&#8203;20812](https://github.com/eslint/eslint/issues/20812) to v9.x) ([#&#8203;21065](https://github.com/eslint/eslint/issues/21065)) (Eric) ##### Documentation - [`74930ed`](https://github.com/eslint/eslint/commit/74930edd1ce0d246819edc72705101ec271da50b) docs: switch build to Node.js 24 ([#&#8203;20894](https://github.com/eslint/eslint/issues/20894)) (Milos Djermanovic) - [`eaec8bb`](https://github.com/eslint/eslint/commit/eaec8bb6b1ca4b36985ee0222c457d4730d47a20) docs: Add ESLint v9.x EOL notice ([#&#8203;20828](https://github.com/eslint/eslint/issues/20828)) (Milos Djermanovic) ##### Chores - [`458205f`](https://github.com/eslint/eslint/commit/458205f7d7a4769f32bec006eecc45c6a71be16a) chore: update `@eslint/eslintrc` and `@eslint/js` for v9.39.5 ([#&#8203;21077](https://github.com/eslint/eslint/issues/21077)) (Francesco Trotta) - [`202117b`](https://github.com/eslint/eslint/commit/202117be549534715d687f988e17f29e1dcd0622) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins) - [`d9eb6ed`](https://github.com/eslint/eslint/commit/d9eb6edcc93c1319ff1d2bb9aeb6d7d47bd73a79) test: disable warning for `vm.constants.USE_MAIN_CONTEXT_DEFAULT_LOADER` ([#&#8203;21074](https://github.com/eslint/eslint/issues/21074)) (Francesco Trotta) - [`7b431a7`](https://github.com/eslint/eslint/commit/7b431a7b19c345b8db56040b1888a3b531c3e64c) chore: override `re2` dependency for `@metascraper/helpers` ([#&#8203;21068](https://github.com/eslint/eslint/issues/21068)) (Milos Djermanovic) - [`daf7791`](https://github.com/eslint/eslint/commit/daf77911de33be163503c6568ccb159741f4b018) chore: pin fflate\@&#8203;0.8.2 ([#&#8203;20895](https://github.com/eslint/eslint/issues/20895)) (Milos Djermanovic) - [`daee8ba`](https://github.com/eslint/eslint/commit/daee8ba3082afbc94d3b69ddc129d4dc664716f2) ci: use pnpm in `eslint-flat-config-utils` type integration test ([#&#8203;20829](https://github.com/eslint/eslint/issues/20829)) (Milos Djermanovic) - [`116d4be`](https://github.com/eslint/eslint/commit/116d4bec7c0ddaeaa75f92fb1271a4ab70d24ce3) ci: unpin Node.js 25.x in CI ([#&#8203;20619](https://github.com/eslint/eslint/issues/20619)) (Copilot) ### [`v9.39.4`](https://github.com/eslint/eslint/releases/tag/v9.39.4) [Compare Source](https://github.com/eslint/eslint/compare/v9.39.3...v9.39.4) #### Bug Fixes - [`f18f6c8`](https://github.com/eslint/eslint/commit/f18f6c8ae92a1bcfc558f48c0bd863ea94067459) fix: update dependency minimatch to ^3.1.5 ([#&#8203;20564](https://github.com/eslint/eslint/issues/20564)) (Milos Djermanovic) - [`a3c868f`](https://github.com/eslint/eslint/commit/a3c868f6ef103c1caff9d15f744f9ebd995e872f) fix: update dependency [@&#8203;eslint/eslintrc](https://github.com/eslint/eslintrc) to ^3.3.4 ([#&#8203;20554](https://github.com/eslint/eslint/issues/20554)) (Milos Djermanovic) - [`234d005`](https://github.com/eslint/eslint/commit/234d005da6cd3c924f359e3783fbf565a3c047c3) fix: minimatch security vulnerability patch for v9.x ([#&#8203;20549](https://github.com/eslint/eslint/issues/20549)) (Andrej Beles) - [`b1b37ee`](https://github.com/eslint/eslint/commit/b1b37eecaa033d2e390e1d8f1d6e68d0f5ff3a6a) fix: update `ajv` to `6.14.0` to address security vulnerabilities ([#&#8203;20538](https://github.com/eslint/eslint/issues/20538)) (루밀LuMir) #### Documentation - [`4675152`](https://github.com/eslint/eslint/commit/46751526037682f8b42abcfb3e06d19213719347) docs: add deprecation notice partial ([#&#8203;20520](https://github.com/eslint/eslint/issues/20520)) (Milos Djermanovic) #### Chores - [`b8b4eb1`](https://github.com/eslint/eslint/commit/b8b4eb15901c1bd6ef40d2589da4ae75795c0f6e) chore: update dependencies for ESLint v9.39.4 ([#&#8203;20596](https://github.com/eslint/eslint/issues/20596)) (Francesco Trotta) - [`71b2f6b`](https://github.com/eslint/eslint/commit/71b2f6b628b76157b4a2a296cb969dc56abb296c) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins) - [`1d16c2f`](https://github.com/eslint/eslint/commit/1d16c2fa3998440ae7b0f6e2612935bd6b0ded1d) ci: pin Node.js 25.6.1 ([#&#8203;20563](https://github.com/eslint/eslint/issues/20563)) (Milos Djermanovic) ### [`v9.39.3`](https://github.com/eslint/eslint/releases/tag/v9.39.3) [Compare Source](https://github.com/eslint/eslint/compare/v9.39.2...v9.39.3) #### Bug Fixes - [`791bf8d`](https://github.com/eslint/eslint/commit/791bf8d7e76ce7ab8c88cb8982658823da4eff27) fix: restore TypeScript 4.0 compatibility in types ([#&#8203;20504](https://github.com/eslint/eslint/issues/20504)) (sethamus) #### Chores - [`8594a43`](https://github.com/eslint/eslint/commit/8594a436c22a0167fe3c2c4109bbdb04e519a014) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)@9.39.3 ([#&#8203;20529](https://github.com/eslint/eslint/issues/20529)) (Milos Djermanovic) - [`9ceef92`](https://github.com/eslint/eslint/commit/9ceef92fbd3d1298d9a00483f86897834b88acac) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins) - [`af498c6`](https://github.com/eslint/eslint/commit/af498c63b9ca065223a425a85afabdcc8451e69b) chore: ignore `/docs/v9.x` in link checker ([#&#8203;20453](https://github.com/eslint/eslint/issues/20453)) (Milos Djermanovic) ### [`v9.39.2`](https://github.com/eslint/eslint/releases/tag/v9.39.2) [Compare Source](https://github.com/eslint/eslint/compare/v9.39.1...v9.39.2) #### Bug Fixes - [`5705833`](https://github.com/eslint/eslint/commit/57058331946568164449c5caabe2cf206e4fb5d9) fix: warn when `eslint-env` configuration comments are found ([#&#8203;20381](https://github.com/eslint/eslint/issues/20381)) (sethamus) #### Build Related - [`506f154`](https://github.com/eslint/eslint/commit/506f1549a64aa65bdddc75c71cb62f0ab94b5a23) build: add .scss files entry to knip ([#&#8203;20391](https://github.com/eslint/eslint/issues/20391)) (Milos Djermanovic) #### Chores - [`7ca0af7`](https://github.com/eslint/eslint/commit/7ca0af7f9f89dd4a01736dae01931c45d528171b) chore: upgrade to `@eslint/js@9.39.2` ([#&#8203;20394](https://github.com/eslint/eslint/issues/20394)) (Francesco Trotta) - [`c43ce24`](https://github.com/eslint/eslint/commit/c43ce24ff0ce073ec4ad691cd5a50171dfe6cf1e) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins) - [`4c9858e`](https://github.com/eslint/eslint/commit/4c9858e47bb9146cf20f546a562bc58a9ee3dae1) ci: add `v9.x-dev` branch ([#&#8203;20382](https://github.com/eslint/eslint/issues/20382)) (Milos Djermanovic) ### [`v9.39.1`](https://github.com/eslint/eslint/releases/tag/v9.39.1) [Compare Source](https://github.com/eslint/eslint/compare/v9.39.0...v9.39.1) #### Bug Fixes - [`650753e`](https://github.com/eslint/eslint/commit/650753ee3976784343ceb40170619dab1aa9fe0d) fix: Only pass node to JS lang visitor methods ([#&#8203;20283](https://github.com/eslint/eslint/issues/20283)) (Nicholas C. Zakas) #### Documentation - [`51b51f4`](https://github.com/eslint/eslint/commit/51b51f4f1ce82ef63264c4e45d9ef579bcd73f8e) docs: add a section on when to use extends vs cascading ([#&#8203;20268](https://github.com/eslint/eslint/issues/20268)) (Tanuj Kanti) - [`b44d426`](https://github.com/eslint/eslint/commit/b44d42699dcd1729b7ecb50ca70e4c1c17f551f1) docs: Update README (GitHub Actions Bot) #### Chores - [`92db329`](https://github.com/eslint/eslint/commit/92db329211c8da5ce8340a4d4c05ce9c12845381) chore: update `@eslint/js` version to 9.39.1 ([#&#8203;20284](https://github.com/eslint/eslint/issues/20284)) (Francesco Trotta) - [`c7ebefc`](https://github.com/eslint/eslint/commit/c7ebefc9eaf99b76b30b0d3cf9960807a47367c4) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins) - [`61778f6`](https://github.com/eslint/eslint/commit/61778f6ca33c0f63962a91d6a75a4fa5db9f47d2) chore: update eslint-config-eslint dependency [@&#8203;eslint/js](https://github.com/eslint/js) to ^9.39.0 ([#&#8203;20275](https://github.com/eslint/eslint/issues/20275)) (renovate\[bot]) - [`d9ca2fc`](https://github.com/eslint/eslint/commit/d9ca2fcd9ad63331bfd329a69534e1ff04f231e8) ci: Add rangeStrategy to eslint group in renovate config ([#&#8203;20266](https://github.com/eslint/eslint/issues/20266)) (唯然) - [`009e507`](https://github.com/eslint/eslint/commit/009e5076ff5a4bd845f55e17676e3bb88f47c280) test: fix version tests for ESLint v10 ([#&#8203;20274](https://github.com/eslint/eslint/issues/20274)) (Milos Djermanovic) ### [`v9.39.0`](https://github.com/eslint/eslint/releases/tag/v9.39.0) [Compare Source](https://github.com/eslint/eslint/compare/v9.38.0...v9.39.0) #### Features - [`cc57d87`](https://github.com/eslint/eslint/commit/cc57d87a3f119e9d39c55e044e526ae067fa31ce) feat: update error loc to key in `no-dupe-class-members` ([#&#8203;20259](https://github.com/eslint/eslint/issues/20259)) (Tanuj Kanti) - [`126552f`](https://github.com/eslint/eslint/commit/126552fcf35da3ddcefa527db06dabc54c04041c) feat: update error location in `for-direction` and `no-dupe-args` ([#&#8203;20258](https://github.com/eslint/eslint/issues/20258)) (Tanuj Kanti) - [`167d097`](https://github.com/eslint/eslint/commit/167d0970d3802a66910e9820f31dcd717fab0b2a) feat: update `complexity` rule to highlight only static block header ([#&#8203;20245](https://github.com/eslint/eslint/issues/20245)) (jaymarvelz) #### Bug Fixes - [`15f5c7c`](https://github.com/eslint/eslint/commit/15f5c7c168d0698683943f51dd617f14a5e6815c) fix: forward traversal `step.args` to visitors ([#&#8203;20253](https://github.com/eslint/eslint/issues/20253)) (jaymarvelz) - [`5a1a534`](https://github.com/eslint/eslint/commit/5a1a534e877f7c4c992885867f923df307c3929d) fix: allow JSDoc comments in object-shorthand rule ([#&#8203;20167](https://github.com/eslint/eslint/issues/20167)) (Nitin Kumar) - [`e86b813`](https://github.com/eslint/eslint/commit/e86b813eb660f1a5adc8e143a70d9b683cd12362) fix: Use more types from [@&#8203;eslint/core](https://github.com/eslint/core) ([#&#8203;20257](https://github.com/eslint/eslint/issues/20257)) (Nicholas C. Zakas) - [`927272d`](https://github.com/eslint/eslint/commit/927272d1f0d5683b029b729d368a96527f283323) fix: correct `Scope` typings ([#&#8203;20198](https://github.com/eslint/eslint/issues/20198)) (jaymarvelz) - [`37f76d9`](https://github.com/eslint/eslint/commit/37f76d9c539bb6fc816fedb7be4486b71a58620a) fix: use `AST.Program` type for Program node ([#&#8203;20244](https://github.com/eslint/eslint/issues/20244)) (Francesco Trotta) - [`ae07f0b`](https://github.com/eslint/eslint/commit/ae07f0b3334ebd22ae2e7b09bca5973b96aa9768) fix: unify timing report for concurrent linting ([#&#8203;20188](https://github.com/eslint/eslint/issues/20188)) (jaymarvelz) - [`b165d47`](https://github.com/eslint/eslint/commit/b165d471be6062f4475b972155b02654a974a0e9) fix: correct `Rule` typings ([#&#8203;20199](https://github.com/eslint/eslint/issues/20199)) (jaymarvelz) - [`fb97cda`](https://github.com/eslint/eslint/commit/fb97cda70d87286a7dbd2457f578ef578d6905e8) fix: improve error message for missing fix function in suggestions ([#&#8203;20218](https://github.com/eslint/eslint/issues/20218)) (jaymarvelz) #### Documentation - [`d3e81e3`](https://github.com/eslint/eslint/commit/d3e81e30ee6be5a21151b7a17ef10a714b6059c0) docs: Always recommend to include a files property ([#&#8203;20158](https://github.com/eslint/eslint/issues/20158)) (Percy Ma) - [`0f0385f`](https://github.com/eslint/eslint/commit/0f0385f1404dcadaba4812120b1ad02334dbd66a) docs: use consistent naming recommendation ([#&#8203;20250](https://github.com/eslint/eslint/issues/20250)) (Alex M. Spieslechner) - [`a3b1456`](https://github.com/eslint/eslint/commit/a3b145609ac649fac837c8c0515cbb2a9321ca40) docs: Update README (GitHub Actions Bot) - [`cf5f2dd`](https://github.com/eslint/eslint/commit/cf5f2dd58dd98084a21da04fe7b9054b9478d552) docs: fix correct tag of `no-useless-constructor` ([#&#8203;20255](https://github.com/eslint/eslint/issues/20255)) (Tanuj Kanti) - [`10b995c`](https://github.com/eslint/eslint/commit/10b995c8e5473de8d66d3cd99d816e046f35e3ec) docs: add TS options and examples for `nofunc` in `no-use-before-define` ([#&#8203;20249](https://github.com/eslint/eslint/issues/20249)) (Tanuj Kanti) - [`2584187`](https://github.com/eslint/eslint/commit/2584187e4a305ea7a98e1a5bd4dca2a60ad132f8) docs: remove repetitive word in comment ([#&#8203;20242](https://github.com/eslint/eslint/issues/20242)) (reddaisyy) - [`637216b`](https://github.com/eslint/eslint/commit/637216bd4f2aae7c928ad04a4e40eecffb50c9e5) docs: update CLI flags migration instructions ([#&#8203;20238](https://github.com/eslint/eslint/issues/20238)) (jaymarvelz) - [`e7cda3b`](https://github.com/eslint/eslint/commit/e7cda3bdf1bdd664e6033503a3315ad81736b200) docs: Update README (GitHub Actions Bot) - [`7b9446f`](https://github.com/eslint/eslint/commit/7b9446f7cc2054aa2cdf8e6225f4ac15a03671a8) docs: handle empty flags sections on the feature flags page ([#&#8203;20222](https://github.com/eslint/eslint/issues/20222)) (sethamus) #### Chores - [`dfe3c1b`](https://github.com/eslint/eslint/commit/dfe3c1b2034228765c48c8a445554223767dd16d) chore: update `@eslint/js` version to 9.39.0 ([#&#8203;20270](https://github.com/eslint/eslint/issues/20270)) (Francesco Trotta) - [`2375a6d`](https://github.com/eslint/eslint/commit/2375a6de8263393c129d41cac1b407b40111a73c) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins) - [`a1f4e52`](https://github.com/eslint/eslint/commit/a1f4e52d67c94bef61edd1607dcd130047c1baf0) chore: update `@eslint` dependencies ([#&#8203;20265](https://github.com/eslint/eslint/issues/20265)) (Francesco Trotta) - [`c7d3229`](https://github.com/eslint/eslint/commit/c7d32298482752eeac9fb46378d4f1ea095f3836) chore: update dependency [@&#8203;eslint/core](https://github.com/eslint/core) to ^0.17.0 ([#&#8203;20256](https://github.com/eslint/eslint/issues/20256)) (renovate\[bot]) - [`27549bc`](https://github.com/eslint/eslint/commit/27549bc774c7c2dc5c569070a3e87c62f602bf7d) chore: update fuzz testing to not error if code sample minimizer fails ([#&#8203;20252](https://github.com/eslint/eslint/issues/20252)) (Milos Djermanovic) - [`a1370ee`](https://github.com/eslint/eslint/commit/a1370ee40e9d8e0e41843f3278cd745fc1ad543f) ci: bump actions/setup-node from 5 to 6 ([#&#8203;20230](https://github.com/eslint/eslint/issues/20230)) (dependabot\[bot]) - [`9e7fad4`](https://github.com/eslint/eslint/commit/9e7fad4a1867709060686d03e0ec1d0d69671cfb) chore: add script to auto-generate eslint:recommended configuration ([#&#8203;20208](https://github.com/eslint/eslint/issues/20208)) (唯然) </details> <details> <summary>sweepline/eslint-plugin-unused-imports (eslint-plugin-unused-imports)</summary> ### [`v4.4.1`](https://github.com/sweepline/eslint-plugin-unused-imports/releases/tag/v4.4.1) [Compare Source](https://github.com/sweepline/eslint-plugin-unused-imports/compare/v4.3.0...v4.4.1) *No significant changes* #####     [View changes on GitHub](https://github.com/sweepline/eslint-plugin-unused-imports/compare/v4.4.0...v4.4.1) ### [`v4.3.0`](https://github.com/sweepline/eslint-plugin-unused-imports/compare/v4.2.0...v4.3.0) [Compare Source](https://github.com/sweepline/eslint-plugin-unused-imports/compare/v4.2.0...v4.3.0) ### [`v4.2.0`](https://github.com/sweepline/eslint-plugin-unused-imports/compare/v4.1.4...v4.2.0) [Compare Source](https://github.com/sweepline/eslint-plugin-unused-imports/compare/v4.1.4...v4.2.0) </details> <details> <summary>rust-lang/futures-rs (futures)</summary> ### [`v0.3.34`](https://github.com/rust-lang/futures-rs/blob/HEAD/CHANGELOG.md#0334---2026-08-11) [Compare Source](https://github.com/rust-lang/futures-rs/compare/0.3.33...0.3.34) - Preserve cloned waker identity. ([#&#8203;3032](https://github.com/rust-lang/futures-rs/issues/3032)) - Updato `syn` to 3. ([#&#8203;3028](https://github.com/rust-lang/futures-rs/issues/3028)) ### [`v0.3.33`](https://github.com/rust-lang/futures-rs/blob/HEAD/CHANGELOG.md#0333---2026-07-18) [Compare Source](https://github.com/rust-lang/futures-rs/compare/0.3.32...0.3.33) - Fix `ReadLine`'s soundness issue regarding to exception safety. ([#&#8203;3020](https://github.com/rust-lang/futures-rs/issues/3020)) - Fix unsound `Send` impl for `IterPinRef` and `Iter`. ([#&#8203;3003](https://github.com/rust-lang/futures-rs/issues/3003)) - Fix stacked borrows violation in `compat01as03` implementation. ([#&#8203;3012](https://github.com/rust-lang/futures-rs/issues/3012)) - Fix memory leak in `FuturesUnordered::IntoIter`. ([#&#8203;3005](https://github.com/rust-lang/futures-rs/issues/3005)) - Add `portable-atomic-alloc` feature and use it in `FuturesUnordered`. ([#&#8203;3007](https://github.com/rust-lang/futures-rs/issues/3007)) - Re-export `alloc::task::Wake`. ([#&#8203;3010](https://github.com/rust-lang/futures-rs/issues/3010)) - Update `spin` to 0.12. ([#&#8203;3014](https://github.com/rust-lang/futures-rs/issues/3014)) ### [`v0.3.32`](https://github.com/rust-lang/futures-rs/blob/HEAD/CHANGELOG.md#0332---2026-02-15) [Compare Source](https://github.com/rust-lang/futures-rs/compare/0.3.31...0.3.32) - Bump MSRV of utility crates to 1.71. ([#&#8203;2989](https://github.com/rust-lang/futures-rs/issues/2989)) - Soft-deprecate `ready!` macro in favor of `std::task::ready!` added in Rust 1.64 ([#&#8203;2925](https://github.com/rust-lang/futures-rs/issues/2925)) - Soft-deprecate `pin_mut!` macro in favor of `std::pin::pin!` added in Rust 1.68 ([#&#8203;2929](https://github.com/rust-lang/futures-rs/issues/2929)) - Add `FuturesOrdered::clear` ([#&#8203;2927](https://github.com/rust-lang/futures-rs/issues/2927)) - Add `mpsc::*Receiver::recv` ([#&#8203;2947](https://github.com/rust-lang/futures-rs/issues/2947)) - Add `mpsc::*Receiver::try_recv` and deprecate `mpsc::*Receiver::::try_next` ([#&#8203;2944](https://github.com/rust-lang/futures-rs/issues/2944)) - Implement `FusedStream` for `sink::With` ([#&#8203;2948](https://github.com/rust-lang/futures-rs/issues/2948)) - Add `no_std` support for `shared` ([#&#8203;2868](https://github.com/rust-lang/futures-rs/issues/2868)) - Make `Mutex::new()` const ([#&#8203;2956](https://github.com/rust-lang/futures-rs/issues/2956)) - Add `#[clippy::has_significant_drop]` to guards ([#&#8203;2967](https://github.com/rust-lang/futures-rs/issues/2967)) - Remove dependency to `pin-utils` ([#&#8203;2929](https://github.com/rust-lang/futures-rs/issues/2929)) - Remove dependency on `num_cpus` ([#&#8203;2946](https://github.com/rust-lang/futures-rs/issues/2946)) - Performance improvements ([#&#8203;2983](https://github.com/rust-lang/futures-rs/issues/2983)) - Documentation improvements ([#&#8203;2925](https://github.com/rust-lang/futures-rs/issues/2925), [#&#8203;2926](https://github.com/rust-lang/futures-rs/issues/2926), [#&#8203;2940](https://github.com/rust-lang/futures-rs/issues/2940), [#&#8203;2971](https://github.com/rust-lang/futures-rs/issues/2971)) </details> <details> <summary>rust-lang/log (log)</summary> ### [`v0.4.35`](https://github.com/rust-lang/log/blob/HEAD/CHANGELOG.md#0435---2026-10-30) [Compare Source](https://github.com/rust-lang/log/compare/0.4.34...v0.4.35) This release doesn't include source changes. It verifies `log`'s new CI/CD processes. ##### Other - rework CI/CD to align with Rust project standards ### [`v0.4.34`](https://github.com/rust-lang/log/blob/HEAD/CHANGELOG.md#0434---2026-08-22) [Compare Source](https://github.com/rust-lang/log/compare/0.4.33...0.4.34) ### [`v0.4.33`](https://github.com/rust-lang/log/blob/HEAD/CHANGELOG.md#0433---2026-06-20) [Compare Source](https://github.com/rust-lang/log/compare/0.4.32...0.4.33) ### [`v0.4.32`](https://github.com/rust-lang/log/blob/HEAD/CHANGELOG.md#0432---2026-06-04) [Compare Source](https://github.com/rust-lang/log/compare/0.4.31...0.4.32) ##### What's Changed - Support `Value` -> string conversions with `kv` + `std` features instead of `kv_std` by [@&#8203;tisonkun](https://github.com/tisonkun) in [#&#8203;729](https://github.com/rust-lang/log/pull/729) **Full Changelog**: <https://github.com/rust-lang/log/compare/0.4.31...0.4.32> ### [`v0.4.31`](https://github.com/rust-lang/log/blob/HEAD/CHANGELOG.md#0432---2026-06-04) [Compare Source](https://github.com/rust-lang/log/compare/0.4.30...0.4.31) ##### What's Changed - Support `Value` -> string conversions with `kv` + `std` features instead of `kv_std` by [@&#8203;tisonkun](https://github.com/tisonkun) in [#&#8203;729](https://github.com/rust-lang/log/pull/729) **Full Changelog**: <https://github.com/rust-lang/log/compare/0.4.31...0.4.32> ### [`v0.4.30`](https://github.com/rust-lang/log/blob/HEAD/CHANGELOG.md#0431---2026-06-02) [Compare Source](https://github.com/rust-lang/log/compare/0.4.29...0.4.30) ##### What's Changed - Leverage static str key when possible by [@&#8203;tisonkun](https://github.com/tisonkun) in [#&#8203;727](https://github.com/rust-lang/log/pull/727) ##### New Contributors - [@&#8203;Isvane](https://github.com/Isvane) made their first contribution in [#&#8203;726](https://github.com/rust-lang/log/pull/726) **Full Changelog**: <https://github.com/rust-lang/log/compare/0.4.30...0.4.31> ### [`v0.4.29`](https://github.com/rust-lang/log/blob/HEAD/CHANGELOG.md#0430---2026-05-21) [Compare Source](https://github.com/rust-lang/log/compare/0.4.28...0.4.29) ##### What's Changed - Support capturing of `std::net` types by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;724](https://github.com/rust-lang/log/pull/724) ##### New Contributors - [@&#8203;V0ldek](https://github.com/V0ldek) made their first contribution in [#&#8203;720](https://github.com/rust-lang/log/pull/720) - [@&#8203;woodruffw](https://github.com/woodruffw) made their first contribution in [#&#8203;723](https://github.com/rust-lang/log/pull/723) **Full Changelog**: <https://github.com/rust-lang/log/compare/0.4.29...0.4.30> ##### Notable Changes - MSRV is bumped to 1.71.0 in [#&#8203;723](https://github.com/rust-lang/log/pull/723) </details> <details> <summary>isaacs/minimatch (minimatch)</summary> ### [`v10.2.6`](https://github.com/isaacs/minimatch/compare/v10.2.5...v10.2.6) [Compare Source](https://github.com/isaacs/minimatch/compare/v10.2.5...v10.2.6) ### [`v10.2.5`](https://github.com/isaacs/minimatch/compare/v10.2.4...v10.2.5) [Compare Source](https://github.com/isaacs/minimatch/compare/v10.2.4...v10.2.5) ### [`v10.2.4`](https://github.com/isaacs/minimatch/compare/v10.2.3...v10.2.4) [Compare Source](https://github.com/isaacs/minimatch/compare/v10.2.3...v10.2.4) ### [`v10.2.3`](https://github.com/isaacs/minimatch/compare/v10.2.2...v10.2.3) [Compare Source](https://github.com/isaacs/minimatch/compare/v10.2.2...v10.2.3) ### [`v10.2.2`](https://github.com/isaacs/minimatch/compare/v10.2.1...v10.2.2) [Compare Source](https://github.com/isaacs/minimatch/compare/v10.2.1...v10.2.2) ### [`v10.2.1`](https://github.com/isaacs/minimatch/compare/v10.2.0...v10.2.1) [Compare Source](https://github.com/isaacs/minimatch/compare/v10.2.0...v10.2.1) ### [`v10.2.0`](https://github.com/isaacs/minimatch/compare/v10.1.3...v10.2.0) [Compare Source](https://github.com/isaacs/minimatch/compare/v10.1.3...v10.2.0) ### [`v10.1.3`](https://github.com/isaacs/minimatch/compare/v10.1.2...v10.1.3) [Compare Source](https://github.com/isaacs/minimatch/compare/v10.1.2...v10.1.3) ### [`v10.1.2`](https://github.com/isaacs/minimatch/compare/v10.1.1...v10.1.2) [Compare Source](https://github.com/isaacs/minimatch/compare/v10.1.1...v10.1.2) ### [`v10.1.1`](https://github.com/isaacs/minimatch/compare/v10.1.0...v10.1.1) [Compare Source](https://github.com/isaacs/minimatch/compare/v10.1.0...v10.1.1) ### [`v10.1.0`](https://github.com/isaacs/minimatch/compare/v10.0.3...v10.1.0) [Compare Source](https://github.com/isaacs/minimatch/compare/v10.0.3...v10.1.0) ### [`v10.0.3`](https://github.com/isaacs/minimatch/compare/v10.0.2...v10.0.3) [Compare Source](https://github.com/isaacs/minimatch/compare/v10.0.2...v10.0.3) ### [`v10.0.2`](https://github.com/isaacs/minimatch/compare/v10.0.1...v10.0.2) [Compare Source](https://github.com/isaacs/minimatch/compare/v10.0.1...v10.0.2) </details> <details> <summary>raineorshine/npm-check-updates (npm-check-updates)</summary> ### [`v19.6.6`](https://github.com/raineorshine/npm-check-updates/blob/HEAD/CHANGELOG.md#2000---2026-03-31) [Compare Source](https://github.com/raineorshine/npm-check-updates/compare/v19.6.5...v19.6.6) ##### Auto Cooldown The cooldown option is now automatically applied from the respective package manager's config: - **npm** - `min-release-age` ([#&#8203;1632](https://github.com/raineorshine/npm-check-updates/issues/1632)) - **yarn** - `npmMinimalAgeGate` (excluding `npmPreapprovedPackages`) ([#&#8203;1643](https://github.com/raineorshine/npm-check-updates/issues/1643)) - **pnpm** - `minimumReleaseAge` (excluding `minimumReleaseAgeExclude`) ([#&#8203;1639](https://github.com/raineorshine/npm-check-updates/issues/1639)) Why is this a breaking change? - If you use any of the above configs, npm-check-updates will automatically exclude releases that do not exceed the specified minimum age as described in <https://github.com/raineorshine/npm-check-updates#cooldown>. - Otherwise, you don't need to do anything. ##### Other changes - Bump strip-ansi from 7.1.2 to 7.2.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1620](https://github.com/raineorshine/npm-check-updates/pull/1620) - Bump lodash and [@&#8203;types/lodash](https://github.com/types/lodash) by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1615](https://github.com/raineorshine/npm-check-updates/pull/1615) - Bump [@&#8203;typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/eslint-plugin) from 8.44.1 to 8.57.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1619](https://github.com/raineorshine/npm-check-updates/pull/1619) - Bump hosted-git-info from 9.0.0 to 9.0.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1622](https://github.com/raineorshine/npm-check-updates/pull/1622) - Bump glob and markdownlint-cli by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1625](https://github.com/raineorshine/npm-check-updates/pull/1625) - update dependencies; fix vulnerabilities by [@&#8203;onemen](https://github.com/onemen) in [#&#8203;1630](https://github.com/raineorshine/npm-check-updates/pull/1630) - Potential fix for code scanning alert no. 13: Incomplete string escaping or encoding by [@&#8203;raineorshine](https://github.com/raineorshine) in [#&#8203;1640](https://github.com/raineorshine/npm-check-updates/pull/1640) ##### New Contributors - [@&#8203;onemen](https://github.com/onemen) made their first contribution in [#&#8203;1630](https://github.com/raineorshine/npm-check-updates/pull/1630) - [@&#8203;Copilot](https://github.com/Copilot) made their first contribution in [#&#8203;1632](https://github.com/raineorshine/npm-check-updates/pull/1632) **Full Changelog**: <https://github.com/raineorshine/npm-check-updates/compare/v19.6.6...v20.0.0> ### [`v19.6.5`](https://github.com/raineorshine/npm-check-updates/blob/HEAD/CHANGELOG.md#1966---2026-03-26) [Compare Source](https://github.com/raineorshine/npm-check-updates/compare/v19.6.3...v19.6.5) **Full Changelog**: <https://github.com/raineorshine/npm-check-updates/compare/v19.6.5...v19.6.6> ### [`v19.6.3`](https://github.com/raineorshine/npm-check-updates/blob/HEAD/CHANGELOG.md#1965---2026-03-16) [Compare Source](https://github.com/raineorshine/npm-check-updates/compare/v19.6.2...v19.6.3) ##### What's Changed - fix(pnpm): fallback from pnpm.cmd to pnpm on Windows for non-standard installs by [@&#8203;terminalchai](https://github.com/terminalchai) in [#&#8203;1606](https://github.com/raineorshine/npm-check-updates/pull/1606) ##### New Contributors - [@&#8203;terminalchai](https://github.com/terminalchai) made their first contribution in [#&#8203;1606](https://github.com/raineorshine/npm-check-updates/pull/1606) **Full Changelog**: <https://github.com/raineorshine/npm-check-updates/compare/v19.6.3...v19.6.5> ### [`v19.6.2`](https://github.com/raineorshine/npm-check-updates/blob/HEAD/CHANGELOG.md#1963---2026-02-27) [Compare Source](https://github.com/raineorshine/npm-check-updates/compare/v19.6.1...v19.6.2) **Full Changelog**: <https://github.com/raineorshine/npm-check-updates/compare/v19.6.2...v19.6.3> ### [`v19.6.1`](https://github.com/raineorshine/npm-check-updates/blob/HEAD/CHANGELOG.md#1962---2026-02-26) [Compare Source](https://github.com/raineorshine/npm-check-updates/compare/v19.6.0...v19.6.1) ##### What's Changed - fix: fix overwrites pnpm-workspace.yaml and .yarnrc.yml into json by [@&#8203;MKruschke](https://github.com/MKruschke) in [#&#8203;1589](https://github.com/raineorshine/npm-check-updates/pull/1589) **Full Changelog**: <https://github.com/raineorshine/npm-check-updates/compare/v19.6.1...v19.6.2> ### [`v19.6.0`](https://github.com/raineorshine/npm-check-updates/blob/HEAD/CHANGELOG.md#1961---2026-02-26) [Compare Source](https://github.com/raineorshine/npm-check-updates/compare/v19.5.0...v19.6.0) ##### What's Changed - Swap diff service. by [@&#8203;diegocr](https://github.com/diegocr) in [#&#8203;1603](https://github.com/raineorshine/npm-check-updates/pull/1603) **Full Changelog**: <https://github.com/raineorshine/npm-check-updates/compare/v19.6.0...v19.6.1> ### [`v19.5.0`](https://github.com/raineorshine/npm-check-updates/blob/HEAD/CHANGELOG.md#1960---2026-02-26) [Compare Source](https://github.com/raineorshine/npm-check-updates/compare/v19.4.1...v19.5.0) ##### What's Changed - Display link to compare the changes between package versions (--format diff) by [@&#8203;diegocr](https://github.com/diegocr) in [#&#8203;1602](https://github.com/raineorshine/npm-check-updates/pull/1602) ##### New Contributors - [@&#8203;diegocr](https://github.com/diegocr) made their first contribution in [#&#8203;1602](https://github.com/raineorshine/npm-check-updates/pull/1602) **Full Changelog**: <https://github.com/raineorshine/npm-check-updates/compare/v19.5.0...v19.6.0> ### [`v19.4.1`](https://github.com/raineorshine/npm-check-updates/blob/HEAD/CHANGELOG.md#1950---2026-02-24) [Compare Source](https://github.com/raineorshine/npm-check-updates/compare/v19.4.0...v19.4.1) ##### What's Changed - feat(homepage): Add `--format homepage` option to print homepage. e.g. ```sh $ ncu --format homepage ... mocha ^11.7.2 → ^11.7.5 https://mochajs.org/ npm-registry-fetch ^19.0.0 → ^19.1.1 prettier ^3.6.2 → ^3.8.1 https://prettier.io ... ``` **Full Changelog**: <https://github.com/raineorshine/npm-check-updates/compare/v19.4.1...v19.5.0> ### [`v19.4.0`](https://github.com/raineorshine/npm-check-updates/blob/HEAD/CHANGELOG.md#1941---2026-02-19) [Compare Source](https://github.com/raineorshine/npm-check-updates/compare/v19.3.2...v19.4.0) ##### What's Changed - Fixed a small `cooldown` regression with number types in the ncurc **Full Changelog**: <https://github.com/raineorshine/npm-check-updates/compare/v19.4.0...v19.4.1> ### [`v19.3.2`](https://github.com/raineorshine/npm-check-updates/blob/HEAD/CHANGELOG.md#1940---2026-02-18) [Compare Source](https://github.com/raineorshine/npm-check-updates/compare/v19.3.1...v19.3.2) ##### What's Changed - feat(cooldown): support cooldown strings like "7d", "12h", "30m" by [@&#8203;aversini](https://github.com/aversini) in [#&#8203;1598](https://github.com/raineorshine/npm-check-updates/pull/1598) ##### New Contributors - [@&#8203;aversini](https://github.com/aversini) made their first contribution in [#&#8203;1598](https://github.com/raineorshine/npm-check-updates/pull/1598) **Full Changelog**: <https://github.com/raineorshine/npm-check-updates/compare/v19.3.2...v19.4.0> ### [`v19.3.1`](https://github.com/raineorshine/npm-check-updates/blob/HEAD/CHANGELOG.md#1932---2026-01-26) [Compare Source](https://github.com/raineorshine/npm-check-updates/compare/v19.3.0...v19.3.1) ##### What's Changed - docs: close code tag instead of reopening another one by [@&#8203;sod](https://github.com/sod) in [#&#8203;1588](https://github.com/raineorshine/npm-check-updates/pull/1588) - fix(tests): resolve EBUSY errors on Windows by retrying directory removal by [@&#8203;Zamiell](https://github.com/Zamiell) in [#&#8203;1590](https://github.com/raineorshine/npm-check-updates/pull/1590) ##### New Contributors - [@&#8203;sod](https://github.com/sod) made their first contribution in [#&#8203;1588](https://github.com/raineorshine/npm-check-updates/pull/1588) **Full Changelog**: <https://github.com/raineorshine/npm-check-updates/compare/v19.3.1...v19.3.2> ### [`v19.3.0`](https://github.com/raineorshine/npm-check-updates/blob/HEAD/CHANGELOG.md#1931---2026-01-05) [Compare Source](https://github.com/raineorshine/npm-check-updates/compare/v19.2.1...v19.3.0) ##### What's Changed - fix(catalog): use the right yarn config name by [@&#8203;MKruschke](https://github.com/MKruschke) in [#&#8203;1586](https://github.com/raineorshine/npm-check-updates/pull/1586) **Full Changelog**: <https://github.com/raineorshine/npm-check-updates/compare/v19.3.0...v19.3.1> ### [`v19.2.1`](https://github.com/raineorshine/npm-check-updates/blob/HEAD/CHANGELOG.md#1930---2026-01-04) [Compare Source](https://github.com/raineorshine/npm-check-updates/compare/v19.2.0...v19.2.1) ##### What's Changed - feat: support yarn catalogs by [@&#8203;MKruschke](https://github.com/MKruschke) in [#&#8203;1582](https://github.com/raineorshine/npm-check-updates/pull/1582) - Fixed default catalog behavior. - See discussion here: [#&#8203;1582 (comment)](https://github.com/raineorshine/npm-check-updates/pull/1582#pullrequestreview-3613957102) - If you think this is wrong, please open an issue. **Full Changelog**: <https://github.com/raineorshine/npm-check-updates/compare/v19.2.1...v19.3.0> ### [`v19.2.0`](https://github.com/raineorshine/npm-check-updates/blob/HEAD/CHANGELOG.md#1921---2026-01-02) [Compare Source](https://github.com/raineorshine/npm-check-updates/compare/v19.1.2...v19.2.0) **Full Changelog**: <https://github.com/raineorshine/npm-check-updates/compare/v19.2.0...v19.2.1> ### [`v19.1.2`](https://github.com/raineorshine/npm-check-updates/blob/HEAD/CHANGELOG.md#1920---2025-12-10) [Compare Source](https://github.com/raineorshine/npm-check-updates/compare/v19.1.1...v19.1.2) ##### What's Changed - Add [--format dep](https://github.com/raineorshine/npm-check-updates/issues/166#issuecomment-3638071061) - Add interactive mode keyboard controls to docs by [@&#8203;jsoref](https://github.com/jsoref) in [#&#8203;1577](https://github.com/raineorshine/npm-check-updates/pull/1577) - Spelling by [@&#8203;jsoref](https://github.com/jsoref) in [#&#8203;1578](https://github.com/raineorshine/npm-check-updates/pull/1578) ##### New Contributors - [@&#8203;jsoref](https://github.com/jsoref) made their first contribution in [#&#8203;1577](https://github.com/raineorshine/npm-check-updates/pull/1577) **Full Changelog**: <https://github.com/raineorshine/npm-check-updates/compare/v19.1.2...v19.2.0> </details> <details> <summary>obsidianmd/obsidian-api (obsidian)</summary> ### [`v1.14.4`](https://github.com/obsidianmd/obsidian-api/compare/28a6b8607927249cb549ab3053f5f36f9287aab8...1087bb073fa88bfad5fba88d9f500072827abecb) [Compare Source](https://github.com/obsidianmd/obsidian-api/compare/28a6b8607927249cb549ab3053f5f36f9287aab8...1087bb073fa88bfad5fba88d9f500072827abecb) ### [`v1.13.1`](https://github.com/obsidianmd/obsidian-api/compare/2e88986ef3348e501d390afddcdfa08e132eb2f2...28a6b8607927249cb549ab3053f5f36f9287aab8) [Compare Source](https://github.com/obsidianmd/obsidian-api/compare/2e88986ef3348e501d390afddcdfa08e132eb2f2...28a6b8607927249cb549ab3053f5f36f9287aab8) ### [`v1.13.0`](https://github.com/obsidianmd/obsidian-api/compare/d5b94f56e3a909396ae05941e67ddb51a167180d...2e88986ef3348e501d390afddcdfa08e132eb2f2) [Compare Source](https://github.com/obsidianmd/obsidian-api/compare/d5b94f56e3a909396ae05941e67ddb51a167180d...2e88986ef3348e501d390afddcdfa08e132eb2f2) ### [`v1.12.3`](https://github.com/obsidianmd/obsidian-api/compare/e238b2c6c8d9f0e33a41ece381e5083ef0755eb1...d5b94f56e3a909396ae05941e67ddb51a167180d) [Compare Source](https://github.com/obsidianmd/obsidian-api/compare/e238b2c6c8d9f0e33a41ece381e5083ef0755eb1...d5b94f56e3a909396ae05941e67ddb51a167180d) ### [`v1.12.2`](https://github.com/obsidianmd/obsidian-api/compare/43e3ecf1045a8cdff39c53d74c46f66ad081a4c3...e238b2c6c8d9f0e33a41ece381e5083ef0755eb1) [Compare Source](https://github.com/obsidianmd/obsidian-api/compare/43e3ecf1045a8cdff39c53d74c46f66ad081a4c3...e238b2c6c8d9f0e33a41ece381e5083ef0755eb1) ### [`v1.12.0`](https://github.com/obsidianmd/obsidian-api/compare/e30998d580abffad28cc9f370d2f4defbfa2081b...43e3ecf1045a8cdff39c53d74c46f66ad081a4c3) [Compare Source](https://github.com/obsidianmd/obsidian-api/compare/e30998d580abffad28cc9f370d2f4defbfa2081b...43e3ecf1045a8cdff39c53d74c46f66ad081a4c3) ### [`v1.11.4`](https://github.com/obsidianmd/obsidian-api/compare/644caf98e0e7ad8bd079e76a7514d194dd125786...e30998d580abffad28cc9f370d2f4defbfa2081b) [Compare Source](https://github.com/obsidianmd/obsidian-api/compare/644caf98e0e7ad8bd079e76a7514d194dd125786...e30998d580abffad28cc9f370d2f4defbfa2081b) </details> <details> <summary>prettier/prettier (prettier)</summary> ### [`v3.9.10`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#3910) [Compare Source](https://github.com/prettier/prettier/compare/3.9.9...3.9.10) [diff](https://github.com/prettier/prettier/compare/3.9.9...3.9.10) ##### Markdown: Update `micromark-extension-gfm-table` to fix the table parse issue on performance ([#&#8203;20266](https://github.com/prettier/prettier/pull/20266) by [@&#8203;fisker](https://github.com/fisker)) See [micromark/micromark-extension-gfm-table@`4f43ead`](https://github.com/micromark/micromark-extension-gfm-table/commit/4f43ead37b786bc531d924530d4ab4c714886267) for details. ### [`v3.9.9`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#399) [Compare Source](https://github.com/prettier/prettier/compare/3.9.8...3.9.9) [diff](https://github.com/prettier/prettier/compare/3.9.8...3.9.9) ##### Markdown: Fix text with `$` been incorrectly parsed as math syntax ([#&#8203;20140](https://github.com/prettier/prettier/pull/20140) by [@&#8203;fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```md <!-- Input --> **Uses $FOO** from `a.sh` and `b.sh`, plus `$BAR` from `c.sh`, before anything else runs here. <!-- Prettier 3.9.8 --> **Uses $FOO** from `a.sh` and `b.sh`, plus `$BAR`from`c.sh`, before anything else runs here. <!-- Prettier 3.9.9 --> **Uses $FOO** from `a.sh` and `b.sh`, plus `$BAR` from `c.sh`, before anything else runs here. ``` ### [`v3.9.8`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#398) [Compare Source](https://github.com/prettier/prettier/compare/3.9.7...3.9.8) [diff](https://github.com/prettier/prettier/compare/3.9.7...3.9.8) ##### Markdown: Don't let Liquid objects interrupt paragraphs ([#&#8203;20087](https://github.com/prettier/prettier/pull/20087) by [@&#8203;seiyab](https://github.com/seiyab)) <!-- prettier-ignore --> ```markdown <!-- Input --> If `module` is not a [`WebAssembly.Module`](/en-US/docs/WebAssembly/Reference/JavaScript_interface/Module) object instance, a {{jsxref("TypeError")}} is thrown. <!-- Prettier 3.9.7 --> If `module` is not a [`WebAssembly.Module`](/en-US/docs/WebAssembly/Reference/JavaScript_interface/Module) object instance, a {{jsxref("TypeError")}} is thrown. <!-- Prettier 3.9.8 --> If `module` is not a [`WebAssembly.Module`](/en-US/docs/WebAssembly/Reference/JavaScript_interface/Module) object instance, a {{jsxref("TypeError")}} is thrown. ``` ### [`v3.9.7`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#397) [Compare Source](https://github.com/prettier/prettier/compare/3.9.6...3.9.7) [diff](https://github.com/prettier/prettier/compare/3.9.6...3.9.7) ##### Markdown: Prevent indentation drift in list-item code blocks ([#&#8203;19647](https://github.com/prettier/prettier/pull/19647), [#&#8203;19990](https://github.com/prettier/prettier/pull/19990) by [@&#8203;Austin1serb](https://github.com/Austin1serb), [@&#8203;giaBaoJS](https://github.com/giaBaoJS)) <!-- prettier-ignore --> ```markdown <!-- Input --> - [x] short first line. second paragraph at six spaces that wraps onto another line here. <!-- Prettier 3.9.6 --> - [x] short first line. second paragraph at six spaces that wraps onto another line here. <!-- Prettier 3.9.7 --> - [x] short first line. second paragraph at six spaces that wraps onto another line here. ``` ##### JavaScript: Fix embedded template literal idempotency ([#&#8203;19725](https://github.com/prettier/prettier/pull/19725) by [@&#8203;fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```jsx // Input const foo = html` <div>${getText({ value, })}</div> `; // Prettier 3.9.6 (first format) const foo = html` <div> ${getText({ value, })} </div> `; // Prettier 3.9.6 (second format) const foo = html` <div> ${getText({ value, })} </div> `; // Prettier 3.9.7 const foo = html` <div> ${getText({ value, })} </div> `; ``` ##### Markdown: Preserve Liquid blocks after Markdown tables ([#&#8203;19730](https://github.com/prettier/prettier/pull/19730) by [@&#8203;wanxiankai](https://github.com/wanxiankai), [@&#8203;seiyab](https://github.com/seiyab)) <!-- prettier-ignore --> ```markdown <!-- Input --> | Argument | Type | | -------- | ---- | {% set default_params = { "model": ["str"], } %} <!-- Prettier 3.9.6 --> | Argument | Type | | ------------------------- | ---- | | {% set default_params = { | "model": ["str"], } %} <!-- Prettier 3.9.7 --> | Argument | Type | | -------- | ---- | {% set default_params = { "model": ["str"], } %} ``` ##### Markdown: Preserve single tildes in Markdown ([#&#8203;19739](https://github.com/prettier/prettier/pull/19739) by [@&#8203;lazerg](https://github.com/lazerg)) Since 3.9.0, single-tilde spans like `H~2~O` were rewritten to double tildes, turning subscript syntax into strike-through. Only double tildes are treated that way now, matching GitHub. <!-- prettier-ignore --> ```markdown <!-- Input --> H~2~O <!-- Prettier 3.9.6 --> H~~2~~O <!-- Prettier 3.9.7 --> H~2~O ``` ##### Markdown: Fix Markdown blockquote containing `>` characters ([#&#8203;19802](https://github.com/prettier/prettier/pull/19802) by [@&#8203;seiyab](https://github.com/seiyab)) <!-- prettier-ignore --> ```md <!-- Input --> > **test**\> <!-- Prettier 3.9.6 --> > **test**>\> <!-- Prettier 3.9.7 --> > **test**\> ``` ##### Markdown: Strip blockquote markers from a setext heading's continuation lines ([#&#8203;19878](https://github.com/prettier/prettier/pull/19878) by [@&#8203;Kjubikstronk](https://github.com/Kjubikstronk)) A setext heading spanning multiple lines inside a blockquote kept the `>` marker of its continuation lines as literal text. <!-- prettier-ignore --> ```md <!-- Input --> > Multi > Line > === <!-- Prettier 3.9.6 --> > Multi > Line > === <!-- Prettier 3.9.7 --> > Multi > Line > === ``` ##### Markdown: Fix HTML block indentation drift in markdown list items ([#&#8203;19987](https://github.com/prettier/prettier/pull/19987) by [@&#8203;lazerg](https://github.com/lazerg)) <!-- prettier-ignore --> ```markdown <!-- Input --> 1. Enable images: <p align="center"> <img alt="example"> </p> <!-- Prettier 3.9.6 (--tab-width=4) --> 1. Enable images: <p align="center"> <img alt="example"> </p> <!-- Prettier 3.9.7 (--tab-width=4) --> 1. Enable images: <p align="center"> <img alt="example"> </p> ``` ##### Angular: Support `@boundary` error boundaries ([#&#8203;20014](https://github.com/prettier/prettier/pull/20014) by [@&#8203;Yahiro025](https://github.com/Yahiro025)) <!-- prettier-ignore --> ```html <!-- Input --> @boundary { <complex-chart [data]="data"/> } @error (let err) { <p>{{err.message}}</p> } <!-- Prettier 3.9.6 --> SyntaxError: Unexpected character "EOF" (Do you have an unescaped "{" in your template? Use "{{ '{' }}") to escape it.) (6:1) <!-- Prettier 3.9.7 --> @boundary { <complex-chart [data]="data" /> } @error (let err) { <p>{{ err.message }}</p> } ``` ### [`v3.9.6`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#396) [Compare Source](https://github.com/prettier/prettier/compare/3.9.5...3.9.6) [diff](https://github.com/prettier/prettier/compare/3.9.5...3.9.6) ##### TypeScript: Preserve quotes for methods named `new` ([#&#8203;19621](https://github.com/prettier/prettier/pull/19621) by [@&#8203;kovsu](https://github.com/kovsu)) <!-- prettier-ignore --> ```tsx // Input interface Container { "new"(id: string): number; } // Prettier 3.9.5 interface Container { new(id: string): number; } // Prettier 3.9.6 interface Container { "new"(id: string): number; } ``` ##### TypeScript: Support `import defer` ([#&#8203;19624](https://github.com/prettier/prettier/pull/19624), [#&#8203;19675](https://github.com/prettier/prettier/pull/19675) by [@&#8203;fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```tsx // Input import defer * as foo from "foo"; // Prettier 3.9.5 import * as foo from "foo"; // Prettier 3.9.6 import defer * as foo from "foo"; ``` ##### JavaScript: Added a new official plugin `@prettier/plugin-yuku` ([#&#8203;19628](https://github.com/prettier/prettier/pull/19628), [#&#8203;19629](https://github.com/prettier/prettier/pull/19629) by [@&#8203;fisker](https://github.com/fisker)) `@prettier/plugin-yuku` is powered by [Yuku](https://yuku.fyi/) (A high-performance JavaScript/TypeScript compiler toolchain written in Zig). This plugin includes two new parsers: `yuku` (JavaScript syntax) and `yuku-ts` (TypeScript syntax). **To use this plugin:** 1. Install the plugin: ```bash yarn add --dev prettier @prettier/plugin-yuku ``` 2. Add it to your `.prettierrc`: ```yaml plugins: - "@prettier/plugin-yuku" ``` Due to package size limitations, this plugin is not bundled with the main prettier package and must be installed separately. For more information, check [the package homepage](https://github.com/prettier/prettier/tree/main/packages/plugin-yuku). Big thanks to [@&#8203;arshad-yaseen](https://github.com/arshad-yaseen) for his excellent work. ### [`v3.9.5`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#395) [Compare Source](https://github.com/prettier/prettier/compare/3.9.4...3.9.5) [diff](https://github.com/prettier/prettier/compare/3.9.4...3.9.5) ##### Markdown: Cap ordered list mark at 999,999,999 ([#&#8203;19351](https://github.com/prettier/prettier/pull/19351) by [@&#8203;tats-u](https://github.com/tats-u)) CommonMark parsers only support ordered list item numbers up to 999,999,999. With this change, Prettier now caps the ordered list item number at 999,999,999 to ensure that the output is correctly parsed as an ordered list by CommonMark parsers. Numbers larger than 999,999,999 are not parsed as list item numbers and are left unchanged in the output: <!-- prettier-ignore --> ```markdown <!-- Input --> 999999998. text 999999998. text 999999998. text 999999998. text 1234567890123456789012) text <!-- Prettier 3.9.4 --> 999999998. text 999999999. text 1000000000. text 1000000001. text 1234567890123456789012) text <!-- Prettier 3.9.5 --> 999999998. text 999999999. text 999999999. text 999999999. text 1234567890123456789012) text ``` ##### Markdown: Avoid corrupting empty link with title ([#&#8203;19487](https://github.com/prettier/prettier/pull/19487) by [@&#8203;andersk](https://github.com/andersk)) Do not remove `<>` from an inline link or image with an empty URL and a title, as this removal would change its interpretation. <!-- prettier-ignore --> ```md <!-- Input --> [link](<> "title") <!-- Prettier 3.9.4 --> [link]( "title") <!-- Prettier 3.9.5 --> [link](<> "title") ``` ##### Less: Remove extra spaces after `[` in map lookups ([#&#8203;19503](https://github.com/prettier/prettier/pull/19503) by [@&#8203;kovsu](https://github.com/kovsu)) <!-- prettier-ignore --> ```less // Input .foo { color: #theme[ primary]; color: #theme[@name]; color: #theme[@@name]; } // Prettier 3.9.4 .foo { color: #theme[ primary]; color: #theme[ @name]; color: #theme[ @@name]; } // Prettier 3.9.5 .foo { color: #theme[primary]; color: #theme[@name]; color: #theme[@@name]; } ``` ##### CSS: Prevent addition space in `type()` with `+` ([#&#8203;19516](https://github.com/prettier/prettier/pull/19516) by [@&#8203;bigandy](https://github.com/bigandy)) This fixes the addition space before `+` in CSS `type()` declaration. For example `type(<number>+)` was being converted into `type(<number> +)` which is invalid CSS and does not work. <!-- prettier-ignore --> ```css /* Input */ div { border-radius: attr(br type(<length>+)); } /* Prettier 3.9.4 */ div { border-radius: attr(br type(<length> +)); } /* Prettier 3.9.5 */ div { border-radius: attr(br type(<length>+)); } ``` ##### Less: Remove spaces between merge markers and colons ([#&#8203;19517](https://github.com/prettier/prettier/pull/19517) by [@&#8203;kovsu](https://github.com/kovsu)) <!-- prettier-ignore --> ```less // Input a { box-shadow + : 0 0 1px #&#8203;000; } // Prettier 3.9.4 a { box-shadow+ : 0 0 1px #&#8203;000; } // Prettier 3.9.5 a { box-shadow+: 0 0 1px #&#8203;000; } ``` ##### Markdown: Preserve wiki links with aliases ([#&#8203;19527](https://github.com/prettier/prettier/pull/19527) by [@&#8203;kovsu](https://github.com/kovsu)) <!-- prettier-ignore --> ```markdown <!-- Input --> [[Foo:Bar]] <!-- Prettier 3.9.4 --> [[Foo]] <!-- Prettier 3.9.5 --> [[Foo:Bar]] ``` ##### TypeScript: Fix comments being dropped on shorthand `type` import/export specifiers ([#&#8203;19565](https://github.com/prettier/prettier/pull/19565) by [@&#8203;kirkwaiblinger](https://github.com/kirkwaiblinger)) <!-- prettier-ignore --> ```tsx // Input export { type /* comment */ T } from "foo"; import { type /* comment */ T } from "foo"; // Prettier 3.9.4 Error: Comment "comment" was not printed. Please report this error! // Prettier 3.9.5 export { type /* comment */ T } from "foo"; import { type /* comment */ T } from "foo"; ``` ##### Miscellaneous: Preserving comments' `placement` property ([#&#8203;19567](https://github.com/prettier/prettier/pull/19567) by [@&#8203;Janther](https://github.com/Janther)) Prettier\@&#8203;3.9.0 deleted an undocumented property on comments, which was already used by plugins, `comment.placement` is now available again after comment attach. ##### Flow: Stop enforcing empty module declaration to break ([#&#8203;19568](https://github.com/prettier/prettier/pull/19568) by [@&#8203;fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```flow // Input declare module "foo" {} // Prettier 3.9.4 declare module "foo" { } // Prettier 3.9.5 declare module "foo" {} ``` ##### Angular: Support expression for exhaustive typechecking ([#&#8203;19571](https://github.com/prettier/prettier/pull/19571) by [@&#8203;fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```html <!-- Input --> @switch (state.mode) { @default never(state); } <!-- Prettier 3.9.4 --> @switch (state.mode) { @default never; } <!-- Prettier 3.9.5 --> @switch (state.mode) { @default never(state); } ``` ##### TypeScript: Ignore comments inside mapped type when checking type parameter comments ([#&#8203;19572](https://github.com/prettier/prettier/pull/19572) by [@&#8203;fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```tsx // Input foo<{ // comment [key in keyof Foo]: number }>(); // Prettier 3.9.4 foo< { // comment [key in keyof Foo]: number; } >(); // Prettier 3.9.5 foo<{ // comment [key in keyof Foo]: number; }>(); ``` ##### Less: Fix adjacent block comments being corrupted ([#&#8203;19574](https://github.com/prettier/prettier/pull/19574) by [@&#8203;kovsu](https://github.com/kovsu)) <!-- prettier-ignore --> ```less // Input /* a *//* b */ /* a */* { color: red; } // Prettier 3.9.4 /* a */ /* b */ /* a * { color: red; } // Prettier 3.9.5 /* a */ /* b */ /* a */ * { color: red; } ``` ##### JavaScript: Handle dangling comments in `SwitchStatement` ([#&#8203;19581](https://github.com/prettier/prettier/pull/19581) by [@&#8203;fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```jsx // Input switch (foo) { // comment } // Prettier 3.9.4 switch ( foo // comment ) { } // Prettier 3.9.5 switch (foo) { // comment } ``` ##### TypeScript: Remove space in comment-only object type ([#&#8203;19583](https://github.com/prettier/prettier/pull/19583) by [@&#8203;fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```tsx // Input var foo = { /* comment */ }; type Foo = { /* comment */ }; // Prettier 3.9.4 var foo = {/* comment */}; type Foo = { /* comment */ }; // Prettier 3.9.5 var foo = {/* comment */}; type Foo = {/* comment */}; ``` ### [`v3.9.4`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#394) [Compare Source](https://github.com/prettier/prettier/compare/3.9.3...3.9.4) [diff](https://github.com/prettier/prettier/compare/3.9.3...3.9.4) ##### Angular: Format `@content(name)` -> `@content (name)` to align with other block syntax ([#&#8203;19499](https://github.com/prettier/prettier/pull/19499) by [@&#8203;fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```html <!-- Input --> <FancyButton [label]="title"> @content (icon) { <span>Icon!</span> } @content (description) { <span>Description text</span> } <span>Other children</span> </FancyButton> <!-- Prettier 3.9.3 --> <FancyButton [label]="title"> @content(icon) { <span>Icon!</span> } @content(description) { <span>Description text</span> } <span>Other children</span> </FancyButton> <!-- Prettier 3.9.4 --> <FancyButton [label]="title"> @content (icon) { <span>Icon!</span> } @content (description) { <span>Description text</span> } <span>Other children</span> </FancyButton> ``` ### [`v3.9.3`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#393) [Compare Source](https://github.com/prettier/prettier/compare/3.9.2...3.9.3) [diff](https://github.com/prettier/prettier/compare/3.9.1...3.9.3) ##### Markdown: Fix unexpected removal of characters in liquid syntax ([#&#8203;19489](https://github.com/prettier/prettier/pull/19489) by [@&#8203;seiyab](https://github.com/seiyab)) <!-- prettier-ignore --> ```md // Input <!-- Input --> {{ page.title }} text <!-- Prettier 3.9.1 --> {{ page.title text <!-- Prettier 3.9.3 --> {{ page.title }} text ``` ##### TypeScript: Allow decorators to be used with declare on class fields ([#&#8203;19492](https://github.com/prettier/prettier/pull/19492) by [@&#8203;evoactivity](https://github.com/evoactivity)) Extensively used within the Ember ecosystem, decorators with `declare` on class fields will ignore the babel parser error and allow Prettier to format the code without breaking it. <!-- prettier-ignore --> ```ts // Input export default class ProjectStatusComponent extends Component<ProjectStatusSig> { @service declare server: ServerService; } // Prettier 3.9.1 // SyntaxError: Decorators can't be used with a declare field. (2:3) // 1 | export default class ProjectStatusComponent extends Component<ProjectStatusSig> { //> 2 | @service declare server: ServerService; // | ^ // 3 | } // Prettier 3.9.3 export default class ProjectStatusComponent extends Component<ProjectStatusSig> { @service declare server: ServerService; } ``` ### [`v3.9.2`](https://github.com/prettier/prettier/compare/3.9.1...3.9.2) [Compare Source](https://github.com/prettier/prettier/compare/3.9.1...3.9.2) ### [`v3.9.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#3910) [Compare Source](https://github.com/prettier/prettier/compare/3.9.0...3.9.1) [diff](https://github.com/prettier/prettier/compare/3.9.9...3.9.10) ##### Markdown: Update `micromark-extension-gfm-table` to fix the table parse issue on performance ([#&#8203;20266](https://github.com/prettier/prettier/pull/20266) by [@&#8203;fisker](https://github.com/fisker)) See [micromark/micromark-extension-gfm-table@`4f43ead`](https://github.com/micromark/micromark-extension-gfm-table/commit/4f43ead37b786bc531d924530d4ab4c714886267) for details. ### [`v3.9.0`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#390) [Compare Source](https://github.com/prettier/prettier/compare/3.8.5...3.9.0) [diff](https://github.com/prettier/prettier/compare/3.8.5...3.9.0) 🔗 [Release Notes](https://prettier.io/blog/2026/06/27/3.9.0) ### [`v3.8.5`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#385) [Compare Source](https://github.com/prettier/prettier/compare/3.8.4...3.8.5) [diff](https://github.com/prettier/prettier/compare/3.8.4...3.8.5) ##### Flow: Support `readonly` as a variance annotation ([#&#8203;19022](https://github.com/prettier/prettier/pull/19022) by [@&#8203;marcoww6](https://github.com/marcoww6)) Flow now accepts `readonly` as a property variance annotation, equivalent to `+` (covariant/read-only). <!-- prettier-ignore --> ```jsx // Input type T = { readonly foo: string, }; // Prettier 3.8.4 SyntaxError // Prettier 3.8.5 type T = { readonly foo: string, }; ``` ### [`v3.8.4`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#384) [Compare Source](https://github.com/prettier/prettier/compare/3.8.3...3.8.4) [diff](https://github.com/prettier/prettier/compare/3.8.3...3.8.4) ##### Markdown: Fix blank lines between list items and nested sub-lists being removed in Markdown/MDX ([#&#8203;17746](https://github.com/prettier/prettier/pull/17746) by [@&#8203;byplayer](https://github.com/byplayer)) Prettier was removing blank lines between list items and their nested sub-lists, converting loose lists into tight lists and changing their semantic meaning. <!-- prettier-ignore --> ```markdown <!-- Input --> - a - b - c - d <!-- Prettier 3.8.3 --> - a - b - c - d <!-- Prettier 3.8.4 --> - a - b - c - d ``` ### [`v3.8.3`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#383) [Compare Source](https://github.com/prettier/prettier/compare/3.8.2...3.8.3) [diff](https://github.com/prettier/prettier/compare/3.8.2...3.8.3) ##### SCSS: Prevent trailing comma in `if()` function ([#&#8203;18471](https://github.com/prettier/prettier/pull/18471) by [@&#8203;kovsu](https://github.com/kovsu)) <!-- prettier-ignore --> ```scss // Input $value: if(sass(false): 1; else: -1); // Prettier 3.8.2 $value: if( sass(false): 1; else: -1, ); // Prettier 3.8.3 $value: if(sass(false): 1; else: -1); ``` ### [`v3.8.2`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#382) [Compare Source](https://github.com/prettier/prettier/compare/3.8.1...3.8.2) [diff](https://github.com/prettier/prettier/compare/3.8.1...3.8.2) ##### Angular: Support Angular v21.2 ([#&#8203;18722](https://github.com/prettier/prettier/pull/18722), [#&#8203;19034](https://github.com/prettier/prettier/pull/19034) by [@&#8203;fisker](https://github.com/fisker)) Exhaustive typechecking with `@default never;` <!-- prettier-ignore --> ```html <!-- Input --> @switch (foo) { @case (1) {} @default never; } <!-- Prettier 3.8.1 --> SyntaxError: Incomplete block "default never". If you meant to write the @ character, you should use the "&#&#8203;64;" HTML entity instead. (3:3) <!-- Prettier 3.8.2 --> @switch (foo) { @case (1) {} @default never; } ``` `arrow function` and `instanceof` expressions. <!-- prettier-ignore --> ```html <!-- Input --> @let fn = (a) => a? 1:2; {{ fn ( a instanceof b)}} <!-- Prettier 3.8.1 --> @let fn = (a) => a? 1:2; {{ fn ( a instanceof b)}} <!-- Prettier 3.8.2 --> @let fn = (a) => (a ? 1 : 2); {{ fn(a instanceof b) }} ``` ### [`v3.8.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#381) [Compare Source](https://github.com/prettier/prettier/compare/3.8.0...3.8.1) [diff](https://github.com/prettier/prettier/compare/3.8.0...3.8.1) ##### Include available `printers` in plugin type declarations ([#&#8203;18706](https://github.com/prettier/prettier/pull/18706) by [@&#8203;porada](https://github.com/porada)) <!-- prettier-ignore --> ```ts // Input import * as prettierPluginEstree from "prettier/plugins/estree"; // Prettier 3.8.0 // Property 'printers' does not exist on type 'typeof import("prettier/plugins/estree")'. ts(2339) prettierPluginEstree.printers.estree; //=> any // Prettier 3.8.1 prettierPluginEstree.printers.estree; //=> Printer prettierPluginEstree.printers["estree-json"]; //=> Printer ``` ### [`v3.8.0`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#380) [Compare Source](https://github.com/prettier/prettier/compare/3.7.4...3.8.0) [diff](https://github.com/prettier/prettier/compare/3.7.4...3.8.0) 🔗 [Release Notes](https://prettier.io/blog/2026/01/14/3.8.0) ### [`v3.7.4`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#374) [Compare Source](https://github.com/prettier/prettier/compare/3.7.3...3.7.4) [diff](https://github.com/prettier/prettier/compare/3.7.3...3.7.4) ##### LWC: Avoid quote around interpolations ([#&#8203;18383](https://github.com/prettier/prettier/pull/18383) by [@&#8203;kovsu](https://github.com/kovsu)) <!-- prettier-ignore --> ```html <!-- Input --> <div foo={bar}> </div> <!-- Prettier 3.7.3 (--embedded-language-formatting off) --> <div foo="{bar}"></div> <!-- Prettier 3.7.4 (--embedded-language-formatting off) --> <div foo={bar}></div> ``` ##### TypeScript: Fix comment inside union type gets duplicated ([#&#8203;18393](https://github.com/prettier/prettier/pull/18393) by [@&#8203;fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```tsx // Input type Foo = (/** comment */ a | b) | c; // Prettier 3.7.3 type Foo = /** comment */ (/** comment */ a | b) | c; // Prettier 3.7.4 type Foo = /** comment */ (a | b) | c; ``` ##### TypeScript: Fix unstable comment print in union type comments ([#&#8203;18395](https://github.com/prettier/prettier/pull/18395) by [@&#8203;fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```tsx // Input type X = (A | B) & ( // comment A | B ); // Prettier 3.7.3 (first format) type X = (A | B) & (// comment A | B); // Prettier 3.7.3 (second format) type X = ( | A | B // comment ) & (A | B); // Prettier 3.7.4 type X = (A | B) & // comment (A | B); ``` ### [`v3.7.3`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#373) [Compare Source](https://github.com/prettier/prettier/compare/3.7.2...3.7.3) [diff](https://github.com/prettier/prettier/compare/3.7.2...3.7.3) ##### API: Fix `prettier.getFileInfo()` change that breaks VSCode extension ([#&#8203;18375](https://github.com/prettier/prettier/pull/18375) by [@&#8203;fisker](https://github.com/fisker)) An internal refactor accidentally broke the VSCode extension plugin loading. ### [`v3.7.2`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#372) [Compare Source](https://github.com/prettier/prettier/compare/3.7.1...3.7.2) [diff](https://github.com/prettier/prettier/compare/3.7.1...3.7.2) ##### JavaScript: Fix string print when switching quotes ([#&#8203;18351](https://github.com/prettier/prettier/pull/18351) by [@&#8203;fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```jsx // Input console.log("A descriptor\\'s .kind must be \"method\" or \"field\".") // Prettier 3.7.1 console.log('A descriptor\\'s .kind must be "method" or "field".'); // Prettier 3.7.2 console.log('A descriptor\\\'s .kind must be "method" or "field".'); ``` ##### JavaScript: Preserve quote for embedded HTML attribute values ([#&#8203;18352](https://github.com/prettier/prettier/pull/18352) by [@&#8203;kovsu](https://github.com/kovsu)) <!-- prettier-ignore --> ```tsx // Input const html = /* HTML */ ` <div class="${styles.banner}"></div> `; // Prettier 3.7.1 const html = /* HTML */ ` <div class=${styles.banner}></div> `; // Prettier 3.7.2 const html = /* HTML */ ` <div class="${styles.banner}"></div> `; ``` ##### TypeScript: Fix comment in empty type literal ([#&#8203;18364](https://github.com/prettier/prettier/pull/18364) by [@&#8203;fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```tsx // Input export type XXX = { // tbd }; // Prettier 3.7.1 export type XXX = { // tbd }; // Prettier 3.7.2 export type XXX = { // tbd }; ``` ### [`v3.7.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#371) [Compare Source](https://github.com/prettier/prettier/compare/3.7.0...3.7.1) [diff](https://github.com/prettier/prettier/compare/3.7.0...3.7.1) ##### API: Fix performance regression in doc printer ([#&#8203;18342](https://github.com/prettier/prettier/pull/18342) by [@&#8203;fisker](https://github.com/fisker)) Prettier 3.7.0 can be very slow when formatting big files, the regression has been fixed. ### [`v3.7.0`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#370) [Compare Source](https://github.com/prettier/prettier/compare/3.6.2...3.7.0) [diff](https://github.com/prettier/prettier/compare/3.6.2...3.7.0) 🔗 [Release Notes](https://prettier.io/blog/2025/11/27/3.7.0) </details> <details> <summary>rust-random/rand (rand)</summary> ### [`v0.10.3`](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#0103--2026-09-20) [Compare Source](https://github.com/rust-random/rand/compare/0.10.2...0.10.3) ##### Fixes - Fix `WeightedIndex` panic when the sum of float weights is infinite; return `Error::Overflow` instead ([#&#8203;1808]) - Fix spurious `Error::NonFinite` from `Uniform::new_inclusive` on large finite float ranges such as `0.0..=f64::MAX` ([#&#8203;1821]) - Fix possible panic due to sampling a deserialized `Uniform<char>` ([#&#8203;1831]) ##### Changes - Report exact remaining lengths from `WeightedIndex::weights()` and reduce overhead when reading weights ([#&#8203;1838]) [#&#8203;1808]: https://github.com/rust-random/rand/pull/1808 [#&#8203;1821]: https://github.com/rust-random/rand/pull/1821 [#&#8203;1831]: https://github.com/rust-random/rand/pull/1831 [#&#8203;1838]: https://github.com/rust-random/rand/pull/1838 ### [`v0.10.2`](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#0102--2026-07-02) [Compare Source](https://github.com/rust-random/rand/compare/0.10.1...0.10.2) ##### Fixes - Fix possible memory safety violation due to deserialization of `UniformChar` from bad source ([#&#8203;1790]) ##### Changes - Document required output order of fn `partial_shuffle` and apply `#[must_use]` ([#&#8203;1769]) - Avoid usage of `unsafe` in contexts where non-local memory corruption could invalidate contract ([#&#8203;1791]) [#&#8203;1769]: https://github.com/rust-random/rand/pull/1769 [#&#8203;1790]: https://github.com/rust-random/rand/pull/1790 [#&#8203;1791]: https://github.com/rust-random/rand/pull/1791 ### [`v0.10.1`](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#0101--2026-02-11) [Compare Source](https://github.com/rust-random/rand/compare/0.10.0...0.10.1) This release includes a fix for a soundness bug; see [#&#8203;1763]. ##### Changes - Document panic behavior of `make_rng` and add `#[track_caller]` ([#&#8203;1761]) - Deprecate feature `log` ([#&#8203;1763]) [#&#8203;1761]: https://github.com/rust-random/rand/pull/1761 [#&#8203;1763]: https://github.com/rust-random/rand/pull/1763 ### [`v0.10.0`](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#0100---2026-02-08) [Compare Source](https://github.com/rust-random/rand/compare/0.9.5...0.10.0) ##### Changes - The dependency on `rand_chacha` has been replaced with a dependency on `chacha20`. This changes the implementation behind `StdRng`, but the output remains the same. There may be some API breakage when using the ChaCha-types directly as these are now the ones in `chacha20` instead of `rand_chacha` ([#&#8203;1642]). - Rename fns `IndexedRandom::choose_multiple` -> `sample`, `choose_multiple_array` -> `sample_array`, `choose_multiple_weighted` -> `sample_weighted`, struct `SliceChooseIter` -> `IndexedSamples` and fns `IteratorRandom::choose_multiple` -> `sample`, `choose_multiple_fill` -> `sample_fill` ([#&#8203;1632]) - Use Edition 2024 and MSRV 1.85 ([#&#8203;1653]) - Let `Fill` be implemented for element types, not sliceable types ([#&#8203;1652]) - Fix `OsError::raw_os_error` on UEFI targets by returning `Option<usize>` ([#&#8203;1665]) - Replace fn `TryRngCore::read_adapter(..) -> RngReadAdapter` with simpler struct `RngReader` ([#&#8203;1669]) - Remove fns `SeedableRng::from_os_rng`, `try_from_os_rng` ([#&#8203;1674]) - Remove `Clone` support for `StdRng`, `ReseedingRng` ([#&#8203;1677]) - Use `postcard` instead of `bincode` to test the serde feature ([#&#8203;1693]) - Avoid excessive allocation in `IteratorRandom::sample` when `amount` is much larger than iterator size ([#&#8203;1695]) - Rename `os_rng` -> `sys_rng`, `OsRng` -> `SysRng`, `OsError` -> `SysError` ([#&#8203;1697]) - Rename `Rng` -> `RngExt` as upstream `rand_core` has renamed `RngCore` -> `Rng` ([#&#8203;1717]) ##### Additions - Add fns `IndexedRandom::choose_iter`, `choose_weighted_iter` ([#&#8203;1632]) - Pub export `Xoshiro128PlusPlus`, `Xoshiro256PlusPlus` prngs ([#&#8203;1649]) - Pub export `ChaCha8Rng`, `ChaCha12Rng`, `ChaCha20Rng` behind `chacha` feature ([#&#8203;1659]) - Fn `rand::make_rng() -> R where R: SeedableRng` ([#&#8203;1734]) ##### Removals - Removed `ReseedingRng` ([#&#8203;1722]) - Removed unused feature "nightly" ([#&#8203;1732]) - Removed feature `small_rng` ([#&#8203;1732]) [#&#8203;1632]: https://github.com/rust-random/rand/pull/1632 [#&#8203;1642]: https://github.com/rust-random/rand/pull/1642 [#&#8203;1649]: https://github.com/rust-random/rand/pull/1649 [#&#8203;1652]: https://github.com/rust-random/rand/pull/1652 [#&#8203;1653]: https://github.com/rust-random/rand/pull/1653 [#&#8203;1659]: https://github.com/rust-random/rand/pull/1659 [#&#8203;1665]: https://github.com/rust-random/rand/pull/1665 [#&#8203;1669]: https://github.com/rust-random/rand/pull/1669 [#&#8203;1674]: https://github.com/rust-random/rand/pull/1674 [#&#8203;1677]: https://github.com/rust-random/rand/pull/1677 [#&#8203;1693]: https://github.com/rust-random/rand/pull/1693 [#&#8203;1695]: https://github.com/rust-random/rand/pull/1695 [#&#8203;1697]: https://github.com/rust-random/rand/pull/1697 [#&#8203;1717]: https://github.com/rust-random/rand/pull/1717 [#&#8203;1722]: https://github.com/rust-random/rand/pull/1722 [#&#8203;1732]: https://github.com/rust-random/rand/pull/1732 [#&#8203;1734]: https://github.com/rust-random/rand/pull/1734 ### [`v0.9.5`](https://github.com/rust-random/rand/releases/tag/0.9.5) [Compare Source](https://github.com/rust-random/rand/compare/0.9.4...0.9.5) #### What's Changed - rand v0.9.5: backport [#&#8203;1790](https://github.com/rust-random/rand/issues/1790) by [@&#8203;dhardy](https://github.com/dhardy) in [#&#8203;1803](https://github.com/rust-random/rand/pull/1803) **Full Changelog**: <https://github.com/rust-random/rand/compare/0.9.4...0.9.5> ### [`v0.9.4`](https://github.com/rust-random/rand/releases/tag/0.9.4) [Compare Source](https://github.com/rust-random/rand/compare/0.9.3...0.9.4) ##### Fixes - Fix doc build ([#&#8203;1766]) [#&#8203;1766]: https://github.com/rust-random/rand/pull/1766 **Full Changelog**: <https://github.com/rust-random/rand/compare/0.9.3...0.9.4> ### [`v0.9.3`](https://github.com/rust-random/rand/releases/tag/0.9.3) [Compare Source](https://github.com/rust-random/rand/compare/0.9.2...0.9.3) This release back-ports a fix from v0.10. See also \[[#&#8203;1763](https://github.com/rust-random/rand/issues/1763)]. ##### Changes - Deprecate feature `log` ([#&#8203;1764](https://github.com/rust-random/rand/issues/1764)) - Replace usages of `doc_auto_cfg` ([#&#8203;1764](https://github.com/rust-random/rand/issues/1764)) **Full Changelog**: <https://github.com/rust-random/rand/compare/0.9.2...0.9.3> ### [`v0.9.2`](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#092---2025-07-20) [Compare Source](https://github.com/rust-random/rand/compare/0.9.1...0.9.2) ##### Deprecated - Deprecate `rand::rngs::mock` module and `StepRng` generator (\[[#&#8203;1634](https://github.com/rust-random/rand/issues/1634)]) ##### Additions - Enable `WeightedIndex<usize>` (de)serialization (\[[#&#8203;1646](https://github.com/rust-random/rand/issues/1646)]) ### [`v0.9.1`](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#091---2025-04-17) [Compare Source](https://github.com/rust-random/rand/compare/0.9.0...0.9.1) ##### Security and unsafe - Revise "not a crypto library" policy again ([#&#8203;1565]) - Remove `zerocopy` dependency from `rand` ([#&#8203;1579]) ##### Fixes - Fix feature `simd_support` for recent nightly rust ([#&#8203;1586]) ##### Changes - Allow `fn rand::seq::index::sample_weighted` and `fn IndexedRandom::choose_multiple_weighted` to return fewer than `amount` results ([#&#8203;1623]), reverting an undocumented change (\[[#&#8203;1382](https://github.com/rust-random/rand/issues/1382)]) to the previous release. ##### Additions - Add `rand::distr::Alphabetic` distribution. ([#&#8203;1587]) - Re-export `rand_core` ([#&#8203;1604]) [#&#8203;1565]: https://github.com/rust-random/rand/pull/1565 [#&#8203;1579]: https://github.com/rust-random/rand/pull/1579 [#&#8203;1586]: https://github.com/rust-random/rand/pull/1586 [#&#8203;1587]: https://github.com/rust-random/rand/pull/1587 [#&#8203;1604]: https://github.com/rust-random/rand/pull/1604 [#&#8203;1623]: https://github.com/rust-random/rand/pull/1623 [#&#8203;1634]: https://github.com/rust-random/rand/pull/1634 [#&#8203;1646]: https://github.com/rust-random/rand/pull/1646 </details> <details> <summary>rust-lang/regex (regex)</summary> ### [`v1.13.1`](https://github.com/rust-lang/regex/blob/HEAD/CHANGELOG.md#1131-2026-07-15) [Compare Source](https://github.com/rust-lang/regex/compare/1.13.0...1.13.1) \=================== This is a release that fixes a bug where incorrect regex match offsets could be reported. Note that this doesn't impact whether a match occurs or not, just where it occurs. The match offsets are still valid for slicing, they just may not refer to the correct leftmost-first match. See [#&#8203;1364](https://github.com/rust-lang/regex/pull/1364) for (many) more details. Bug fixes: - [#&#8203;1354](https://github.com/rust-lang/regex/issues/1354): Fixes previously unsound reverse suffix and inner optimizations. ### [`v1.13.0`](https://github.com/rust-lang/regex/blob/HEAD/CHANGELOG.md#1130-2026-07-09) [Compare Source](https://github.com/rust-lang/regex/compare/1.12.4...1.13.0) \=================== This release includes a new API, a `regex!` macro, for lazy compilation of a regex from a string literal. If you use regexes a lot, it's likely you've already written one exactly like it. The new macro can be used like this: ```rust use regex::regex; fn is_match(line: &str) -> bool { // The regex will be compiled approximately once and reused automatically. // This avoids the footgun of using `Regex::new` here, which would // guarantee that it would be compiled every time this routine is called. // This would likely make this routine much slower than it needs to be. regex!(r"bar|baz").is_match(line) } let hay = "\ path/to/foo:54:Blue Harvest path/to/bar:90:Something, Something, Something, Dark Side path/to/baz:3:It's a Trap! "; let matches = hay.lines().filter(|line| is_match(line)).count(); assert_eq!(matches, 2); ``` Improvements: - [#&#8203;709](https://github.com/rust-lang/regex/issues/709): Add a new `regex!` macro for efficient and automatic reuse of a compiled regex. ### [`v1.12.4`](https://github.com/rust-lang/regex/blob/HEAD/CHANGELOG.md#1124-2026-06-09) [Compare Source](https://github.com/rust-lang/regex/compare/1.12.3...1.12.4) \=================== This release includes a performance optimization for compilation of regexes with very large character classes. Improvements: - [#&#8203;1308](https://github.com/rust-lang/regex/pull/1308): Avoid re-canonicalizing the entire interval set when pushing new class ranges. ### [`v1.12.3`](https://github.com/rust-lang/regex/blob/HEAD/CHANGELOG.md#1123-2026-02-03) [Compare Source](https://github.com/rust-lang/regex/compare/1.12.2...1.12.3) \=================== This release excludes some unnecessary things from the archive published to crates.io. Specifically, fuzzing data and various shell scripts are now excluded. If you run into problems, please file an issue. Improvements: - [#&#8203;1319](https://github.com/rust-lang/regex/pull/1319): Switch from a Cargo `exclude` list to an `include` list, and exclude some unnecessary stuff. </details> <details> <summary>rust-lang/rust (rust)</summary> ### [`v1.99.1`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1991-2026-10-15) [Compare Source](https://github.com/rust-lang/rust/compare/1.99.0...1.99.1) \=========================== <a id="1.99.1"></a> - [library: fix missing symbol `wcslen` on UEFI and embedded targets](https://github.com/rust-lang/rust/issues/163614) - [rustc: fix miscompilation of FFI `bool` return values on x86_64](https://github.com/rust-lang/rust/issues/163911) - [rust-lld: add the rpath for `libLLVM` on macOS](https://github.com/rust-lang/rust/issues/163947) ### [`v1.99.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1990-2026-10-01) [Compare Source](https://github.com/rust-lang/rust/compare/1.98.1...1.99.0) \========================== <a id="1.99.0-Language"></a> ## Language - [Add allow-by-default `raw_borrows_via_references` lint that checks for references that decay immediately into raw borrows](https://github.com/rust-lang/rust/pull/138230) - [Extend `unconditional_panic` lint to function calls that panic when the chunks/windows size is zero](https://github.com/rust-lang/rust/pull/153563) - [Stabilize C-variadic function definitions](https://github.com/rust-lang/rust/pull/155697) - [Stabilize the ability to use `#[unsafe(naked)]` functions to define C-variadic functions (`#![feature(c_variadic_naked_functions)]`).](https://github.com/rust-lang/rust/pull/159746) - [Trait methods are now resolved on an adjusted never type (producing a FCW)](https://github.com/rust-lang/rust/pull/156047) - [Coerce from inference variables to trait objects if the inference variable is related via subtyping to a type that is known to be `Sized`](https://github.com/rust-lang/rust/pull/157820) - [Stabilize `#[my_macro] mod foo;`](https://github.com/rust-lang/rust/pull/157857). This allows outlined modules (`mod foo;`) anywhere in the body of a custom attribute or derive macro. - [Fix the `overflowing_literals` lint with repeated negation](https://github.com/rust-lang/rust/pull/158302). For instance, it will now no longer lint on `--128_i8`, which is already detected by the `arithmetic_overflow` lint. - [Add POSIX symbols to the `invalid_runtime_symbol_definitions` and `suspicious_runtime_symbol_definitions` lints](https://github.com/rust-lang/rust/pull/158522) - [Lint unused `#[path]` attributes on inline modules](https://github.com/rust-lang/rust/pull/158835) - [Enable `unreachable_cfg_select_predicates` lint as part of `unused` lint group](https://github.com/rust-lang/rust/pull/159179) - [Stabilize passing 128-bit integers via vector registers with `asm!` on x86](https://github.com/rust-lang/rust/pull/159525) - [Explicitly document that some allocations are allowed to grow in-place (but none are allowed to shrink)](https://github.com/rust-lang/rust/pull/159729) - We now [guarantee](https://github.com/rust-lang/rust/pull/159730) that the contents of an `UnsafeCell` can be accessed without going through `get` - [The `invalid_reference_casting` lint was adjusted accordingly](https://github.com/rust-lang/rust/pull/159960) - [Account for globally enabled target features in `global_asm!`](https://github.com/rust-lang/rust/pull/160594) - [Warn if an invalid `doc` attribute is used on a macro invocation](https://github.com/rust-lang/rust/pull/161003) <a id="1.99.0-Compiler"></a> ## Compiler - [Convert `-Ctarget-cpu` into a target-modifier for AVR, AMDGCN and NVPTX](https://github.com/rust-lang/rust/pull/150732) - [Enable `static_position_independent_executables` on all gnu targets](https://github.com/rust-lang/rust/pull/158510) - When providing a suggestion about a missing method, rustc now prefers an exactly matching name from a [doc alias attribute](https://doc.rust-lang.org/rustdoc/advanced-features.html#add-aliases-for-an-item-in-documentation-search) over a similarity search from other method names. If your new users sometimes expect a method under a different name, adding a doc alias will now help them find it via rustc suggestions, in addition to helping them find it via rustdoc search: [When suggesting method names, prefer *exact* doc aliases over similar names](https://github.com/rust-lang/rust/pull/160369) <a id="1.99.0-Platform-Support"></a> ## Platform Support - [Promote `riscv64-unknown-linux-musl` to Tier 2 with host tools](https://github.com/rust-lang/rust/pull/158766) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. [platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html <a id="1.99.0-Libraries"></a> ## Libraries - Iteration on `RangeInclusive` (`a..=b` ranges) is now [optimized better in some circumstances](https://github.com/rust-lang/rust/pull/155114). As a side effect of this, the behavior of `RangeInclusive` values that has already been exhausted (as an iterator) has changed. For example, the return values of `start()` and `end()` on such ranges may return different values, and using such ranges as slice indexes may have different behavior. These behaviors were not guaranteed to be stable, so these changes are considered to not be breaking changes. - [Relax `transmute_copy` to accept `?Sized` types](https://github.com/rust-lang/rust/pull/155989) - [Update `transmute_copy` to use a non-unwinding panic](https://github.com/rust-lang/rust/pull/155989) - [Don't escape U+FF9E and U+FF9F in `escape_debug_ext`](https://github.com/rust-lang/rust/pull/158057) - [Re-export `core::fmt::NumBuffer` in `alloc` (and `std`)](https://github.com/rust-lang/rust/pull/161430) <a id="1.99.0-Stabilized-APIs"></a> ## Stabilized APIs - [`IntoIterator` for `Box<[T; N]>`](https://doc.rust-lang.org/stable/std/iter/trait.IntoIterator.html#impl-IntoIterator-for-Box%3C%5BT;+N%5D,+A%3E) - [`IntoIterator` for `&Box<[T; N]>`](https://doc.rust-lang.org/stable/std/iter/trait.IntoIterator.html#impl-IntoIterator-for-%26Box%3C%5BT;+N%5D,+A%3E) - [`IntoIterator` for `&mut Box<[T; N]>`](https://doc.rust-lang.org/stable/std/iter/trait.IntoIterator.html#impl-IntoIterator-for-%26mut+Box%3C%5BT;+N%5D,+A%3E) - [`VecDeque::retain_back`](https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.retain_back) - [`core::ffi::VaList`](https://doc.rust-lang.org/stable/core/ffi/struct.VaList.html) - [`Box::into_non_null`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.into_non_null) - [`Box::from_non_null`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.from_non_null) - [`Vec::into_parts`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.into_parts) - [`Vec::from_parts`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.from_parts) - [`core::mem::size_of_val_raw`](https://doc.rust-lang.org/stable/core/mem/fn.size_of_val_raw.html) - [`core::mem::align_of_val_raw`](https://doc.rust-lang.org/stable/core/mem/fn.align_of_val_raw.html) - [`core::alloc::Layout::for_value_raw`](https://doc.rust-lang.org/stable/core/alloc/struct.Layout.html#method.for_value_raw) - [`String::from_utf8_lossy_owned`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf8_lossy_owned) - [`string::FromUtf8Error::into_utf8_lossy`](https://doc.rust-lang.org/stable/std/string/struct.FromUtf8Error.html#method.into_utf8_lossy) - [`FusedIterator for StepBy<I>`](https://doc.rust-lang.org/stable/std/iter/struct.StepBy.html#impl-FusedIterator-for-StepBy%3CI%3E) - [`std::fs::set_times`](https://doc.rust-lang.org/stable/std/fs/fn.set_times.html) - [`std::fs::set_times_nofollow`](https://doc.rust-lang.org/stable/std/fs/fn.set_times_nofollow.html) - [`<LocalKey<Cell<T>>>::update`](https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.update) <a id="1.99.0-Cargo"></a> ## Cargo - Add a new built-in profile `debug`. This is a preparation for transitioning the `dev` profile away from debugging to give a saner default for faster development iterations. Currently there is no difference between `dev` and `debug` profiles. [docs](https://doc.rust-lang.org/nightly/cargo/reference/profiles.html#debug-1) [#&#8203;17214](https://github.com/rust-lang/cargo/pull/17214) - Workspace members on edition 2024 or later can now override an inherited workspace dependency's `default-features` field. For example, `serde = { workspace = true, default-features = false }` now turns off default features even when the workspace definition enables them. On earlier editions, `default-features = false` is ignored with a warning. ([RFC 3945](https://github.com/rust-lang/rfcs/pull/3945)) [#&#8203;17126](https://github.com/rust-lang/cargo/pull/17126) See also the [full Cargo changelog](https://doc.rust-lang.org/nightly/cargo/CHANGELOG.html#cargo-199-2026-10-01) <a id="1.99.0-Rustdoc"></a> ## Rustdoc - [Add new `unused_footnote_definition` rustdoc lint](https://github.com/rust-lang/rust/pull/137858) - Smarter filtering of trait impls yields performance improvements of 20% on average and up to 40% on some real-world crates. ([1](https://github.com/rust-lang/rust/pull/159623), [2](https://github.com/rust-lang/rust/pull/159721), [3](https://github.com/rust-lang/rust/pull/159779), [4](https://github.com/rust-lang/rust/pull/159854), [5](https://github.com/rust-lang/rust/pull/159091)) <a id="1.99.0-Compatibility-Notes"></a> ## Compatibility Notes - [Fully deprecate the legacy integral modules](https://github.com/rust-lang/rust/pull/146882). For example, `std::i32::MAX` should be accessed via `i32::MAX` instead. - [Upgrade `no_mangle_generic_items` into hard error](https://github.com/rust-lang/rust/pull/154585) - [The `Pin::new_unchecked` has had its safety invariants changed slightly](https://github.com/rust-lang/rust/pull/156935) - [Do not promote references to extern statics](https://github.com/rust-lang/rust/pull/157641) - [Ensure that the inferred types of `let` patterns typecheck](https://github.com/rust-lang/rust/pull/157841) - [hermit/fs: Return `unsupported()` instead of `from_raw_os_error(22)`](https://github.com/rust-lang/rust/pull/158247) - [Fixed a bug where `#[repr(simd)]` was accidentally allowed on macro invocations on stable Rust](https://github.com/rust-lang/rust/pull/158523) - [Abort const-eval when there are generics in the type of the value being produced](https://github.com/rust-lang/rust/pull/159504) - [Attributes not applying to anything are now an error in code blocks in doc comments](https://github.com/rust-lang/rust/pull/159849) - [`Box::leak`: tell people to avoid unleaking](https://github.com/rust-lang/rust/pull/160323) - [PowerPC inline ASM: Fix scalar floats being in the wrong vector lane on little endian](https://github.com/rust-lang/rust/pull/160441) - [Do not take `doc(cfg())` into account when filtering doctests](https://github.com/rust-lang/rust/pull/159014) - [Infer anonymous lifetimes in the types of associated consts as `'static`](https://github.com/rust-lang/rust/pull/156508) - Macros that expand to a semicolon now produce a warning lint (`semicolon_in_expressions_from_non_local_macros`) even when the macro comes from another crate. Previously, such warnings only appeared for macros from the same crate, to avoid showing warnings that can't be fixed locally; however, this masked problems, as integration tests from the crate providing the macro get compiled as a separate crate, so tests often wouldn't reveal this issue. If you encounter a lint like this, please make sure to report it to the crate providing the macro so they can fix it; don't just silence it in your own crate. - [`semicolon_in_expressions_from_macros`: Lint on non-local macros too](https://github.com/rust-lang/rust/pull/159222) - [Split non-local `semicolon_in_expressions_from_macros` into a separate lint](https://github.com/rust-lang/rust/pull/159700) - In Cargo, incremental compilation is now disabled by default when running in CI. CI is detected via the `CI` environment variable. [#&#8203;17220](https://github.com/rust-lang/cargo/pull/17220) - [The Rust Reference no longer recommends using a single pattern to match a union alongside another value, such as in a manually-written tagged union](https://github.com/rust-lang/reference/pull/2303). This was because it was found that such code would, in some circumstances, result in the compiler reading the contents of the union before checking if the rest of the scrutinee matches the rest of the pattern. This can cause undefined behavior in code similar to what the reference previously recommended. <a id="1.99.0-Internal-Changes"></a> ## Internal Changes These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools. - [Update to LLVM 23](https://github.com/rust-lang/rust/pull/158734) ### [`v1.98.1`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1981-2026-09-03) [Compare Source](https://github.com/rust-lang/rust/compare/1.98.0...1.98.1) \=========================== <a id="1.98.1"></a> - [rustc: fix miscompilation in generating vtables](https://github.com/rust-lang/rust/issues/161441) ### [`v1.98.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1980-2026-08-20) [Compare Source](https://github.com/rust-lang/rust/compare/1.97.1...1.98.0) \========================== <a id="1.98.0-Language"></a> ## Language - [Allow shortening lifetime of `&mut` when unsize-coercing, even in an invariant position.](https://github.com/rust-lang/rust/pull/149219) For example, you can now coerce a `Cell<&'long mut i32>` to a `Cell<&'short mut dyn Send>`. Such shortenings were already previously allowed when coercing a `&mut` to a `&`, or coercing a `&` to a `&`. - [Add deny-by-default `invalid_runtime_symbol_definitions` lint and warn-by-default `suspicious_runtime_symbol_definitions` lint](https://github.com/rust-lang/rust/pull/155521) - The lints currently specifically targets `core` runtime symbols like `memcmp`, `memset`, `strlen`, ... and is planned to be expanded in the next few releases. - [Add warn-by-default `c_void_returns` lint to check `core::ffi::c_void` as a return type](https://github.com/rust-lang/rust/pull/156379) <a id="1.98.0-Platform-Support"></a> ## Platform Support - [Add `powerpc64-unknown-linux-gnuelfv2` as Tier 3](https://github.com/rust-lang/rust/pull/144220) - [Add `aarch64-unknown-linux-pauthtest` as Tier 3 target](https://github.com/rust-lang/rust/pull/155722) - [Promote `thumbv7a-none-eabi` to Tier 2](https://github.com/rust-lang/rust/pull/155763) - [Promote `thumbv7a-none-eabihf` to Tier 2](https://github.com/rust-lang/rust/pull/155763) - [Promote `thumbv7r-none-eabi` to Tier 2](https://github.com/rust-lang/rust/pull/155763) - [Promote `thumbv7r-none-eabihf` to Tier 2](https://github.com/rust-lang/rust/pull/155763) - [Promote `thumbv8r-none-eabihf` to Tier 2](https://github.com/rust-lang/rust/pull/155763) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. [platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html <a id="1.98.0-Libraries"></a> ## Libraries - [Change `Location<'_>` lifetime to `'static` in `Panic[Hook]Info`](https://github.com/rust-lang/rust/pull/146561) - [Document panic in `RangeInclusive::from(legacy::RangeInclusive)`](https://github.com/rust-lang/rust/pull/155421) - [Document that `ManuallyDrop`'s `Box` interaction has been fixed](https://github.com/rust-lang/rust/pull/155750) - [Stabilize LoongArch CRC Intrinsics](https://github.com/rust-lang/rust/issues/156908) - [The `derive` macro is available at `{core,std}::derive`.](https://github.com/rust-lang/rust/issues/154645) This was previously [unintentionally stabilized in 1.96](https://github.com/rust-lang/rust/issues/159856), but is now [explicitly accepted](https://github.com/rust-lang/rust/issues/154645) as a stabilized API. - Please note that the MSRV for `{core,std}::derive` will be 1.96, and not 1.98. <a id="1.98.0-Stabilized-APIs"></a> ## Stabilized APIs - [`str::substr_range`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.substr_range) - [`[T]::subslice_range`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.subslice_range) - [`core::fmt::NumBuffer`](https://doc.rust-lang.org/stable/core/fmt/struct.NumBuffer.html) - [`<{integer}>::format_into`](https://doc.rust-lang.org/stable/core/primitive.usize.html#method.format_into) - [`Send/Sync for std::process::CommandArgs`](https://doc.rust-lang.org/stable/std/process/struct.CommandArgs.html#impl-Send-for-CommandArgs%3C'a%3E) - [`{fN}::algebraic_add`](https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_add) - [`{fN}::algebraic_sub`](https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_sub) - [`{fN}::algebraic_mul`](https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_mul) - [`{fN}::algebraic_div`](https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_div) - [`{fN}::algebraic_rem`](https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_rem) - [`NonZero<{integer}>::from_str_radix`](https://doc.rust-lang.org/stable/core/num/struct.NonZero.html#method.from_str_radix-4) - [`String::from_utf16le`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16le) - [`String::from_utf16le_lossy`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16le_lossy) - [`String::from_utf16be`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16be) - [`String::from_utf16be_lossy`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16be_lossy) - [`[T]::strip_circumfix`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.strip_circumfix) - [`str::strip_circumfix`](https://doc.rust-lang.org/stable/core/primitive.str.html#method.strip_circumfix) - [`Atomic<T>::from_mut`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.Atomic.html#method.from_mut) - [`Atomic<T>::get_mut_slice`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.Atomic.html#method.get_mut_slice) - [`Atomic<T>::from_mut_slice`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.Atomic.html#method.from_mut_slice) - [`std::range::legacy`](https://doc.rust-lang.org/stable/std/range/legacy/index.html) - [`bool::ok_or`](https://doc.rust-lang.org/stable/std/primitive.bool.html#method.ok_or) - [`bool::ok_or_else`](https://doc.rust-lang.org/stable/std/primitive.bool.html#method.ok_or_else) - [`Option::map_or_default`](https://doc.rust-lang.org/stable/std/option/enum.Option.html#method.map_or_default) - [`Result::map_or_default`](https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.map_or_default) - [`Box::as_ptr`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.as_ptr) - [`Box::as_mut_ptr`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.as_mut_ptr) - [`Path::is_empty`](https://doc.rust-lang.org/stable/std/path/struct.Path.html#method.is_empty) - [`PathBuf::into_string`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.into_string) - [`arch::{arm,aarch64}::vdot*`: NEON dot product intrinsics](https://github.com/rust-lang/rust/issues/117224) <a id="1.98.0-Compatibility-Notes"></a> ## Compatibility Notes - [If fully elided, lifetime bounds of trait object types may now resolve differently or even get rejected in very specific niche scenarios](https://github.com/rust-lang/rust/pull/129543) - [Error in more cases of ambiguous imports](https://github.com/rust-lang/rust/pull/145108) - [Switch the destructors implementation for thread locals on Windows to use Fiber Local Storage (FLS)](https://github.com/rust-lang/rust/pull/148799) - [Convert some cases of the `ambiguous_glob_imports` lint into a hard error](https://github.com/rust-lang/rust/pull/149195) - [Where-bounds of the form `Type = Type` and `Type == Type` are no longer syntactically allowed](https://github.com/rust-lang/rust/pull/153513) - [Ensure Send/Sync is not implemented for std::env::Vars{,Os}](https://github.com/rust-lang/rust/pull/155153) - [Fix that in some attributes, arguments were not properly rejected](https://github.com/rust-lang/rust/pull/155193) - [`repr(transparent)` is now more strict about which fields have "trivial" layout and hence can be ignored: `repr(C)` types, types with private fields, and `#[non_exhaustive]` types are no longer considered "trivial"](https://github.com/rust-lang/rust/pull/155299) - [Correctly check whether types have equal size in `transmute()` when some `repr` attributes are involved.](https://github.com/rust-lang/rust/pull/155418) - [More characters are escaped when printing strings and chars](https://github.com/rust-lang/rust/pull/155527) - [Implement fast path for `derive(PartialOrd)` when deriving `Ord`](https://github.com/rust-lang/rust/pull/155598) This can break crates in practice where a type's PartialOrd and Ord impls were inconsistent with each other. - [Add temporary scope to `assert_eq` and `assert_ne`](https://github.com/rust-lang/rust/pull/155739) - Closed a hole in the pattern matching [structural equality](https://doc.rust-lang.org/reference/patterns.html#constant-patterns) check, preventing cases where a match of a constant would be allowed, despite disagreeing with a manually written `PartialEq` implementation, when a `derive(PartialEq)` implementation for that type also exists. - [On Emscripten the WASM exception handling ABI is now unconditionally used](https://github.com/rust-lang/rust/pull/156928) The `-Zemscripten-wasm-eh=false` flag to switch back to JS exceptions has been removed. - [The UNSAFE_CODE lint is now consistently emitted for all unsafe attributes](https://github.com/rust-lang/rust/pull/157201) - [Solaris: remove `File::lock` implementation, it has the wrong semantics (return "unsupported" instead)](https://github.com/rust-lang/rust/pull/157509) - [Windows-gnu targets now specify baseline tools versions](https://github.com/rust-lang/rust/pull/158020) - [rustfmt now discovers module files that are defined in `cfg_select!`](https://github.com/rust-lang/rust/pull/158372) This may cause more code to be formatted which was previously ignored. ### [`v1.97.1`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1971-2026-07-16) [Compare Source](https://github.com/rust-lang/rust/compare/1.97.0...1.97.1) \========================== <a id="1.97.1"></a> - [rustc: Fix miscompilation in LLVM optimization](https://github.com/rust-lang/rust/issues/159035) This backports an LLVM submodule bump to include the LLVM-side fix and a revert of the rustc change that is one known trigger for the bug. The rustc side revert should not be strictly necessary but is done out of abundance of caution. ### [`v1.97.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1970-2026-07-09) [Compare Source](https://github.com/rust-lang/rust/compare/1.96.1...1.97.0) \========================== <a id="1.97.0-Language"></a> ## Language - [Consider `Result<T, Uninhabited>` and `ControlFlow<Uninhabited, T>` to be equivalent to `T` for must use lint](https://github.com/rust-lang/rust/pull/148214) - [Add allow-by-default `dead_code_pub_in_binary` lint for unused pub items in binary crates](https://github.com/rust-lang/rust/pull/149509) - [Stabilize the `div32`, `lam-bh`, `lamcas`, `ld-seq-sa` and `scq` target features](https://github.com/rust-lang/rust/pull/154510) - [Stabilize `cfg(target_has_atomic_primitive_alignment)`](https://github.com/rust-lang/rust/pull/155006) - [Allow trailing `self` in imports in more cases](https://github.com/rust-lang/rust/pull/155137) <a id="1.97.0-Platform-Support"></a> ## Platform Support - [nvptx64-nvidia-cuda: drop support for old architectures and old ISAs](https://github.com/rust-lang/rust/pull/152443) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. [platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html <a id="1.97.0-Stabilized-APIs"></a> ## Stabilized APIs - [`Default for RepeatN`](https://doc.rust-lang.org/stable/std/iter/struct.RepeatN.html#impl-Default-for-RepeatN%3CA%3E) - [`Copy for ffi::FromBytesUntilNulError`](https://doc.rust-lang.org/stable/std/ffi/struct.FromBytesUntilNulError.html#impl-Copy-for-FromBytesUntilNulError) - [`Send for std::fs::File` on UEFI](https://github.com/rust-lang/rust/pull/154003) - [`<{integer}>::isolate_highest_one`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.isolate_highest_one) - [`<{integer}>::isolate_lowest_one`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.isolate_lowest_one) - [`<{integer}>::highest_one`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.highest_one) - [`<{integer}>::lowest_one`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.lowest_one) - [`<{integer}>::bit_width`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.bit_width) - [`NonZero<{integer}>::isolate_highest_one`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.isolate_highest_one) - [`NonZero<{integer}>::isolate_lowest_one`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.isolate_lowest_one) - [`NonZero<{integer}>::highest_one`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.highest_one) - [`NonZero<{integer}>::lowest_one`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.lowest_one) - [`NonZero<{integer}>::bit_width`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.bit_width) These previously stable APIs are now stable in const contexts: - [`char::is_control`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_control) <a id="1.97.0-Cargo"></a> ## Cargo - [Stabilize `build.warnings` config.](https://github.com/rust-lang/cargo/pull/16796) This controls how lint warnings from local packages are treated. Useful for enforcing a warning-free build in CI, replacing `-Dwarnings`. [docs](https://doc.rust-lang.org/nightly/cargo/reference/config.html#buildwarnings) - [Stabilize `resolver.lockfile-path` config.](https://github.com/rust-lang/cargo/pull/16694) This allows specifying the path to the lockfile to use when resolving dependencies. Useful when working with read-only source directories. [docs](https://doc.rust-lang.org/nightly/cargo/reference/config.html#resolverlockfile-path) - [cargo-clean: Error when `--target-dir` doesn't look like a Cargo target directory.](https://github.com/rust-lang/cargo/pull/16712) This prevents accidental deletion of non-target directories. - [Add `-m` shorthand for `--manifest-path`](https://github.com/rust-lang/cargo/pull/16858) - [Remove `curl` dependency from `crates-io` crate](https://github.com/rust-lang/cargo/pull/16936) <a id="1.97.0-Rustdoc"></a> ## Rustdoc - [Stabilize `--emit` flag](https://github.com/rust-lang/rust/pull/146220) - [Stabilize `--remap-path-prefix`](https://github.com/rust-lang/rust/pull/155307) <a id="1.97.0-Compatibility-Notes"></a> ## Compatibility Notes - [Emit a future-compatibility warning when relying on `f32: From<{float}>` to constrain `{float}`](https://github.com/rust-lang/rust/pull/139087) - [Rust will use the v0 symbol mangling scheme by default.](https://github.com/rust-lang/rust/pull/151994) This may cause some tools (such as debuggers or profilers, especially with old versions) to fail to demangle symbols emitted by Rust. It may also cause the formatting of text in backtraces to change. - [Prevent deref coercions in `pin!`, in order to prevent unsoundness.](https://github.com/rust-lang/rust/pull/153457) The most likely case where this might impact users is: writing `pin!(x)` where `x` has type `&mut T` will now always correctly produce a value of type `Pin<&mut &mut T>`, instead of sometimes allowing a coercion that produces a value of type `Pin<&mut T>`. This coercion was previously incorrectly allowed since Rust 1.88.0. - [Deprecate `std::char` constants and functions](https://github.com/rust-lang/rust/pull/153873) - [Warn on linker output by default](https://github.com/rust-lang/rust/pull/153968) - [Remove hidden `f64` methods which have been deprecated since 1.0](https://github.com/rust-lang/rust/pull/153975) - [report the `varargs_without_pattern` lint in deps](https://github.com/rust-lang/rust/pull/154599) - [Forbid passing generic arguments to module path segments even if the module reexports a generic enum variant](https://github.com/rust-lang/rust/pull/154971) - [Error on invalid macho `link_section` specifier](https://github.com/rust-lang/rust/pull/155065) - The encoding of certain `enum`s [have changed](https://github.com/rust-lang/rust/pull/155473). This is not a breaking change, as it only applies to `enum`s without layout guarantees, but is noted here as we've seen people impacted from having made assumptions about the layout algorithm. - [Error on `#[export_name = "..."]` where the name is empty](https://github.com/rust-lang/rust/pull/155515) - [Syntactically reject tuple index shorthands in struct patterns](https://github.com/rust-lang/rust/pull/155698) - [validate `#[link_name = "..."]` & `#[link(name = "...")]` parameters](https://github.com/rust-lang/rust/pull/155817) - On Windows, after calling `shutdown` on a socket to shut down the write side, attempting to write to the socket will now produce a `BrokenPipe` error rather than `Other`. [Map `WSAESHUTDOWN` to `io::ErrorKind::BrokenPipe`](https://github.com/rust-lang/rust/pull/156063) ### [`v1.96.1`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1961-2026-06-30) [Compare Source](https://github.com/rust-lang/rust/compare/1.96.0...1.96.1) \=========================== <a id="1.96.1"></a> - [Cargo: fix timeout/retry behavior](https://github.com/rust-lang/cargo/pull/17131) - [Cargo: apply patches for CVE-2025-15661, CVE-2026-55199, and CVE-2026-55200 to libssh2](https://github.com/rust-lang/cargo/pull/17140) - [rustc: fix miscompilation in MIR optimization](https://github.com/rust-lang/rust/pull/158214) ### [`v1.96.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1960-2026-05-28) [Compare Source](https://github.com/rust-lang/rust/compare/1.95.0...1.96.0) \========================== <a id="1.96.0-Language"></a> ## Language - [Allow passing `expr` metavariable to `cfg`](https://github.com/rust-lang/rust/pull/146961) - [Always coerce never types in tuple expressions](https://github.com/rust-lang/rust/pull/147834) - [Avoid incorrect inference guidance of function arguments in rare cases](https://github.com/rust-lang/rust/pull/150316) - [Support s390x vector registers in inline assembly](https://github.com/rust-lang/rust/pull/154184) - [Allow using constants of type `ManuallyDrop` as patterns (fixing a regression introduced in 1.94.0)](https://github.com/rust-lang/rust/pull/154891) <a id="1.96.0-Compiler"></a> ## Compiler - [Enable link relaxation feature for LoongArch Linux targets](https://github.com/rust-lang/rust/pull/153427) - [Update `riscv64gc-unknown-fuchsia` baseline to RVA22 + vector](https://github.com/rust-lang/rust/pull/155072) <a id="1.96.0-Libraries"></a> ## Libraries - [Support iterating over ranges of `NonZero` integers](https://github.com/rust-lang/rust/pull/127534) - [refactor 'valid for read/write' definition: exclude null; add that as an exception on individual methods instead](https://github.com/rust-lang/rust/pull/152615) - [Fix SGX delayed host lookup via ToSocketAddr](https://github.com/rust-lang/rust/pull/152851) <a id="1.96.0-Stabilized-APIs"></a> ## Stabilized APIs - [`assert_matches!`](https://doc.rust-lang.org/stable/std/macro.assert_matches.html) - [`debug_assert_matches!`](https://doc.rust-lang.org/stable/std/macro.debug_assert_matches.html) - [`From<T> for AssertUnwindSafe<T>`](https://doc.rust-lang.org/stable/std/panic/struct.AssertUnwindSafe.html#impl-From%3CT%3E-for-AssertUnwindSafe%3CT%3E) - [`From<T> for LazyCell<T, F>`](https://doc.rust-lang.org/stable/std/cell/struct.LazyCell.html#impl-From%3CT%3E-for-LazyCell%3CT,+F%3E) - [`From<T> for LazyLock<T, F>`](https://doc.rust-lang.org/stable/std/sync/struct.LazyLock.html#impl-From%3CT%3E-for-LazyLock%3CT,+F%3E) - [`core::range::RangeToInclusive`](https://doc.rust-lang.org/stable/core/range/struct.RangeToInclusive.html) - [`core::range::RangeToInclusiveIter`](https://doc.rust-lang.org/stable/core/range/struct.RangeToInclusiveIter.html) - [`core::range::RangeFrom`](https://doc.rust-lang.org/stable/core/ops/struct.RangeFrom.html) - [`core::range::RangeFromIter`](https://doc.rust-lang.org/stable/core/ops/struct.RangeFromIter.html) - [`core::range::Range`](https://doc.rust-lang.org/stable/std/range/struct.Range.html) - [`core::range::RangeIter`](https://doc.rust-lang.org/stable/std/range/struct.RangeIter.html) <a id="1.96.0-Cargo"></a> ## Cargo - [Allow a dependency to specify both a git repository and an alternate registry.](https://github.com/rust-lang/cargo/pull/16810/) Just like with crates.io, the git repository will be used locally, but the registry version will be used when published. - [Added `target.'cfg(..)'.rustdocflags` support in configuration.](https://github.com/rust-lang/cargo/pull/16846) - Fixed [CVE-2026-5222](https://blog.rust-lang.org/2026/05/25/cve-2026-5222/) and [CVE-2026-5223](https://blog.rust-lang.org/2026/05/25/cve-2026-5223/). <a id="1.96-Rustdoc"></a> ## Rustdoc - [Deprecation notes are now rendered like any other documentation](https://github.com/rust-lang/rust/pull/149931). Previously they used the css `white-space: pre-wrap;` property and stripped any `<p>` elements from the rendered html, however this caused issues and unintuitive behavior. The new behavior should be more predictable, however some multi-line deprecation notes will now be rendered as as single lines. If this is undesirable, you can use the standard markdown method of forcing a linebreak, which is two spaces followed by a newline (`"\n"`). - [Don't emit rustdoc `missing_doc_code_examples` lint on impl items](https://github.com/rust-lang/rust/pull/154048) - [Separate methods and associated functions in sidebar](https://github.com/rust-lang/rust/pull/154644) <a id="1.96.0-Compatibility-Notes"></a> ## Compatibility Notes - [Fix layout of `#[repr(Int)]` enums in some edge cases involving fields of uninhabited zero-sized types](https://github.com/rust-lang/rust/pull/146989) - [Prevent unsize-coercing into `Pin<Foo>` where `Foo` doesn't implement `Deref`. Some such coercions were previously allowed, but produce a type with no useful public API.](https://github.com/rust-lang/rust/pull/149218) - [rustc: Stop passing `--allow-undefined` on wasm targets](https://github.com/rust-lang/rust/pull/149868) - [Gate the accidentally stabilized `#![reexport_test_harness_main]` attribute](https://github.com/rust-lang/rust/pull/152210) - [Error on return-position-impl-trait-in-traits whose types are too private](https://github.com/rust-lang/rust/pull/152543) - [Report the `uninhabited_static` lint in dependencies and make it deny-by-default](https://github.com/rust-lang/rust/pull/152853) - [Distributed builds now contain non-split debuginfo for windows-gnu](https://github.com/rust-lang/rust/pull/152870) This appears to improve the quality of backtraces. This change has no effect on the defaults for the output of rustc/cargo on these targets. - [Check const generic arguments are correctly typed in more positions](https://github.com/rust-lang/rust/pull/152931) - [Remove `-Csoft-float`](https://github.com/rust-lang/rust/pull/152973) - [Importing structs with `::{self [as name]}`, e.g., `struct S {}; use S::{self as Other};`, is now no longer permitted because `{self}` imports require a module parent.](https://github.com/rust-lang/rust/pull/152996) - [For `export_name`, `link_name`, and `link_section` attributes, if multiple of the same attribute is present, the first one now takes precedence.](https://github.com/rust-lang/rust/pull/153041) - [Update the minimum external LLVM to 21](https://github.com/rust-lang/rust/pull/153684) - On `avr` targets, C's `double` type is 32-bit by default, so [change `c_double` to `f32` on `avr` targets to match](https://github.com/rust-lang/rust/pull/154647). This is a breaking change, but necessary to make `c_double` match C's double. - [`BTreeMap::append()` was optimized, which may now cause panics for types with incorrect `Ord` impls](https://github.com/rust-lang/rust/pull/153107) <a id="1.96.0-Internal-Changes"></a> ## Internal Changes These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools. - [JSON targets: `aarch64` softfloat targets now have to have `rustc_abi` set to `"softfloat"`](https://github.com/rust-lang/rust/pull/152941) - [target specs: stricter checks for LLVM ABI values, and correlate that with `cfg(target_abi)`](https://github.com/rust-lang/rust/pull/153769) ### [`v1.95.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1950-2026-04-16) [Compare Source](https://github.com/rust-lang/rust/compare/1.94.1...1.95.0) \=========================== <a id="1.95-Language"></a> ## Language - [Stabilize `if let` guards on match arms](https://github.com/rust-lang/rust/pull/141295) - [`irrefutable_let_patterns` lint no longer lints on let chains](https://github.com/rust-lang/rust/pull/146832) - [Support importing path-segment keywords with renaming](https://github.com/rust-lang/rust/pull/146972) - [Stabilize inline assembly for PowerPC and PowerPC64](https://github.com/rust-lang/rust/pull/147996) - [const-eval: be more consistent in the behavior of padding during typed copies](https://github.com/rust-lang/rust/pull/148967) - [Const blocks are no longer evaluated to determine if expressions involving fallible operations can implicitly be constant-promoted.](https://github.com/rust-lang/rust/pull/150557). Expressions whose ability to implicitly be promoted would depend on the result of a const block are no longer implicitly promoted. - [Make operational semantics of pattern matching independent of crate and module](https://github.com/rust-lang/rust/pull/150681) <a id="1.95-Compiler"></a> ## Compiler - [Stabilize `--remap-path-scope` for controlling the scoping of how paths get remapped in the resulting binary](https://github.com/rust-lang/rust/pull/147611) - [Apply patches for CVE-2026-6042 and CVE-2026-40200 to vendored musl](https://github.com/rust-lang/rust/pull/155171) <a id="1.95-Platform-Support"></a> ## Platform Support - [Promote `powerpc64-unknown-linux-musl` to Tier 2 with host tools](https://github.com/rust-lang/rust/pull/149962) - [Promote `aarch64-apple-tvos` to Tier 2](https://github.com/rust-lang/rust/pull/152021) - [Promote `aarch64-apple-tvos-sim` to Tier 2](https://github.com/rust-lang/rust/pull/152021) - [Promote `aarch64-apple-watchos` to Tier 2](https://github.com/rust-lang/rust/pull/152021) - [Promote `aarch64-apple-watchos-sim` to Tier 2](https://github.com/rust-lang/rust/pull/152021) - [Promote `aarch64-apple-visionos` to Tier 2](https://github.com/rust-lang/rust/pull/152021) - [Promote `aarch64-apple-visionos-sim` to Tier 2](https://github.com/rust-lang/rust/pull/152021) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. [platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html <a id="1.95-Libraries"></a> ## Libraries - [`thread::scope`: document how join interacts with TLS destructors](https://github.com/rust-lang/rust/pull/149482) - [Speed up `str::contains` on aarch64 targets with `neon` target feature enabled by default](https://github.com/rust-lang/rust/pull/152176) <a id="1.95-Stabilized-APIs"></a> ## Stabilized APIs - [`MaybeUninit<[T; N]>: From<[MaybeUninit<T>; N]>`](https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-From%3CMaybeUninit%3C%5BT;+N%5D%3E%3E-for-%5BMaybeUninit%3CT%3E;+N%5D) - [`MaybeUninit<[T; N]>: AsRef<[MaybeUninit<T>; N]>`](https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-AsRef%3C%5BMaybeUninit%3CT%3E;+N%5D%3E-for-MaybeUninit%3C%5BT;+N%5D%3E) - [`MaybeUninit<[T; N]>: AsRef<[MaybeUninit<T>]>`](https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-AsRef%3C%5BMaybeUninit%3CT%3E%5D%3E-for-MaybeUninit%3C%5BT;+N%5D%3E) - [`MaybeUninit<[T; N]>: AsMut<[MaybeUninit<T>; N]>`](https://doc.rust-lang.org/beta/std/mem/union.MaybeUninit.html#impl-AsMut%3C%5BMaybeUninit%3CT%3E;+N%5D%3E-for-MaybeUninit%3C%5BT;+N%5D%3E) - [`MaybeUninit<[T; N]>: AsMut<[MaybeUninit<T>]>`](https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-AsMut%3C%5BMaybeUninit%3CT%3E%5D%3E-for-MaybeUninit%3C%5BT;+N%5D%3E) - [`[MaybeUninit<T>; N]: From<MaybeUninit<[T; N]>>`](https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-From%3C%5BMaybeUninit%3CT%3E;+N%5D%3E-for-MaybeUninit%3C%5BT;+N%5D%3E) - [`Cell<[T; N]>: AsRef<[Cell<T>; N]>`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#impl-AsRef%3C%5BCell%3CT%3E;+N%5D%3E-for-Cell%3C%5BT;+N%5D%3E) - [`Cell<[T; N]>: AsRef<[Cell<T>]>`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#impl-AsRef%3C%5BCell%3CT%3E%5D%3E-for-Cell%3C%5BT;+N%5D%3E) - [`Cell<[T]>: AsRef<[Cell<T>]>`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#impl-AsRef%3C%5BCell%3CT%3E%5D%3E-for-Cell%3C%5BT%5D%3E) - [`bool: TryFrom<{integer}>`](https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-TryFrom%3Cu128%3E-for-bool) - [`AtomicPtr::update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.update) - [`AtomicPtr::try_update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.try_update) - [`AtomicBool::update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicBool.html#method.update) - [`AtomicBool::try_update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicBool.html#method.try_update) - [`AtomicIn::update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicIsize.html#method.update) - [`AtomicIn::try_update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicIsize.html#method.try_update) - [`AtomicUn::update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicUsize.html#method.update) - [`AtomicUn::try_update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicUsize.html#method.try_update) - [`cfg_select!`](https://doc.rust-lang.org/stable/std/macro.cfg_select.html) - [`mod core::range`](https://doc.rust-lang.org/stable/core/range/index.html) - [`core::range::RangeInclusive`](https://doc.rust-lang.org/stable/core/range/struct.RangeInclusive.html) - [`core::range::RangeInclusiveIter`](https://doc.rust-lang.org/stable/core/range/struct.RangeInclusiveIter.html) - [`core::hint::cold_path`](https://doc.rust-lang.org/stable/core/hint/fn.cold_path.html) - [`<*const T>::as_ref_unchecked`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.as_ref_unchecked) - [`<*mut T>::as_ref_unchecked`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.as_ref_unchecked-1) - [`<*mut T>::as_mut_unchecked`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.as_mut_unchecked) - [`Vec::push_mut`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.push_mut) - [`Vec::insert_mut`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.insert_mut) - [`VecDeque::push_front_mut`](https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.push_front_mut) - [`VecDeque::push_back_mut`](https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.push_back_mut) - [`VecDeque::insert_mut`](https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.insert_mut) - [`LinkedList::push_front_mut`](https://doc.rust-lang.org/stable/std/collections/struct.LinkedList.html#method.push_front_mut) - [`LinkedList::push_back_mut`](https://doc.rust-lang.org/stable/std/collections/struct.LinkedList.html#method.push_back_mut) - [`Layout::dangling_ptr`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.dangling_ptr) - [`Layout::repeat`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.repeat) - [`Layout::repeat_packed`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.repeat_packed) - [`Layout::extend_packed`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.extend_packed) - [`core::arch::aarch64::__jcvt`](https://doc.rust-lang.org/stable/core/arch/aarch64/fn.__jcvt.html) These previously stable APIs are now stable in const contexts: - [`fmt::from_fn`](https://doc.rust-lang.org/stable/std/fmt/fn.from_fn.html) - [`ControlFlow::is_break`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.is_break) - [`ControlFlow::is_continue`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.is_continue) <a id="1.95-Rustdoc"></a> ## Rustdoc - [In search results, rank unstable items lower](https://github.com/rust-lang/rust/pull/149460) - [Add new "hide deprecated items" setting in rustdoc](https://github.com/rust-lang/rust/pull/151091) <a id="1.95-Compatibility-Notes"></a> ## Compatibility Notes - [Array coercions may now result in less inference constraints than before](https://github.com/rust-lang/rust/pull/140283) - Importing `$crate` without renaming, i.e. `use $crate::{self};`, is now no longer permitted due to stricter error checking for `self` imports. - [const-eval: be more consistent in the behavior of padding during typed copies.](https://github.com/rust-lang/rust/pull/148967) In very rare cases, this may cause compilation errors due to bytes from parts of a pointer ending up in the padding bytes of a `const` or `static`. - [A future-incompatibility warning lint `ambiguous_glob_imported_traits` is now reported when using an ambiguously glob imported trait](https://github.com/rust-lang/rust/pull/149058) - [Check lifetime bounds of types mentioning only type parameters](https://github.com/rust-lang/rust/pull/149389) - [Report more visibility-related ambiguous import errors](https://github.com/rust-lang/rust/pull/149596) - [Deprecate `Eq::assert_receiver_is_total_eq` and emit future compatibility warnings on manual impls](https://github.com/rust-lang/rust/pull/149978) - [powerpc64: Use the ELF ABI version set in target spec instead of guessing](https://github.com/rust-lang/rust/pull/150468) (fixes the ELF ABI used by the OpenBSD target) - Matching on a `#[non_exhaustive]` enum [now reads the discriminant, even if the enum has only one variant](https://github.com/rust-lang/rust/pull/150681). This can cause closures to capture values that they previously wouldn't. - `mut ref` and `mut ref mut` patterns, part of the unstable [Match Ergonomics 2024 RFC](https://github.com/rust-lang/rust/issues/123076), were accidentally allowed on stable within struct pattern field shorthand. These patterns are now correctly feature-gated as unstable in this position. - [Add future-compatibility warning for derive helper attributes which conflict with built-in attributes](https://github.com/rust-lang/rust/pull/151152) - [JSON target specs](https://doc.rust-lang.org/rustc/targets/custom.html) have been destabilized and now require `-Z unstable-options` to use. Previously, they could not be used without the standard library, which has no stable build mechanism. In preparation for the `build-std` project adding that support, JSON target specs are being proactively gated to ensure they remain unstable even if `build-std` is stabilized. Cargo now includes the `-Z json-target-spec` CLI flag to automatically pass `-Z unstable-options` to the compiler when needed. See [#&#8203;150151](https://github.com/rust-lang/rust/pull/150151), [#&#8203;151534](https://github.com/rust-lang/rust/pull/150151), and [rust-lang/cargo#16557](https://github.com/rust-lang/cargo/pull/16557). - [The arguments of `#[feature]` attributes on invalid targets are now checked](https://github.com/rust-lang/rust/issues/153764) <a id="1.95-Internal-Changes"></a> ## Internal Changes These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools. - [Update to LLVM 22](https://github.com/rust-lang/rust/pull/150722) ### [`v1.94.1`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1941-2026-03-26) [Compare Source](https://github.com/rust-lang/rust/compare/1.94.0...1.94.1) \=========================== <a id="1.94.1"></a> - [Fix `std::thread::spawn` on wasm32-wasip1-threads](https://github.com/rust-lang/rust/pull/153634) - [Remove new methods added to `std::os::windows::fs::OpenOptionsExt`](https://github.com/rust-lang/rust/pull/153491) The new methods were unstable, but the trait itself is not sealed and so cannot be extended with non-default methods. - [Clippy: fix ICE in `match_same_arms`](https://github.com/rust-lang/rust-clippy/pull/16685) - [Cargo: update tar to 0.4.45](https://github.com/rust-lang/cargo/pull/16769) This resolves CVE-2026-33055 and CVE-2026-33056. Users of crates.io are not affected. See [blog](https://blog.rust-lang.org/2026/03/21/cve-2026-33056/) for more details. ### [`v1.94.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1960-2026-05-28) [Compare Source](https://github.com/rust-lang/rust/compare/1.93.1...1.94.0) \========================== <a id="1.96.0-Language"></a> ## Language - [Allow passing `expr` metavariable to `cfg`](https://github.com/rust-lang/rust/pull/146961) - [Always coerce never types in tuple expressions](https://github.com/rust-lang/rust/pull/147834) - [Avoid incorrect inference guidance of function arguments in rare cases](https://github.com/rust-lang/rust/pull/150316) - [Support s390x vector registers in inline assembly](https://github.com/rust-lang/rust/pull/154184) - [Allow using constants of type `ManuallyDrop` as patterns (fixing a regression introduced in 1.94.0)](https://github.com/rust-lang/rust/pull/154891) <a id="1.96.0-Compiler"></a> ## Compiler - [Enable link relaxation feature for LoongArch Linux targets](https://github.com/rust-lang/rust/pull/153427) - [Update `riscv64gc-unknown-fuchsia` baseline to RVA22 + vector](https://github.com/rust-lang/rust/pull/155072) <a id="1.96.0-Libraries"></a> ## Libraries - [Support iterating over ranges of `NonZero` integers](https://github.com/rust-lang/rust/pull/127534) - [refactor 'valid for read/write' definition: exclude null; add that as an exception on individual methods instead](https://github.com/rust-lang/rust/pull/152615) - [Fix SGX delayed host lookup via ToSocketAddr](https://github.com/rust-lang/rust/pull/152851) <a id="1.96.0-Stabilized-APIs"></a> ## Stabilized APIs - [`assert_matches!`](https://doc.rust-lang.org/stable/std/macro.assert_matches.html) - [`debug_assert_matches!`](https://doc.rust-lang.org/stable/std/macro.debug_assert_matches.html) - [`From<T> for AssertUnwindSafe<T>`](https://doc.rust-lang.org/stable/std/panic/struct.AssertUnwindSafe.html#impl-From%3CT%3E-for-AssertUnwindSafe%3CT%3E) - [`From<T> for LazyCell<T, F>`](https://doc.rust-lang.org/stable/std/cell/struct.LazyCell.html#impl-From%3CT%3E-for-LazyCell%3CT,+F%3E) - [`From<T> for LazyLock<T, F>`](https://doc.rust-lang.org/stable/std/sync/struct.LazyLock.html#impl-From%3CT%3E-for-LazyLock%3CT,+F%3E) - [`core::range::RangeToInclusive`](https://doc.rust-lang.org/stable/core/range/struct.RangeToInclusive.html) - [`core::range::RangeToInclusiveIter`](https://doc.rust-lang.org/stable/core/range/struct.RangeToInclusiveIter.html) - [`core::range::RangeFrom`](https://doc.rust-lang.org/stable/core/ops/struct.RangeFrom.html) - [`core::range::RangeFromIter`](https://doc.rust-lang.org/stable/core/ops/struct.RangeFromIter.html) - [`core::range::Range`](https://doc.rust-lang.org/stable/std/range/struct.Range.html) - [`core::range::RangeIter`](https://doc.rust-lang.org/stable/std/range/struct.RangeIter.html) <a id="1.96.0-Cargo"></a> ## Cargo - [Allow a dependency to specify both a git repository and an alternate registry.](https://github.com/rust-lang/cargo/pull/16810/) Just like with crates.io, the git repository will be used locally, but the registry version will be used when published. - [Added `target.'cfg(..)'.rustdocflags` support in configuration.](https://github.com/rust-lang/cargo/pull/16846) - Fixed [CVE-2026-5222](https://blog.rust-lang.org/2026/05/25/cve-2026-5222/) and [CVE-2026-5223](https://blog.rust-lang.org/2026/05/25/cve-2026-5223/). <a id="1.96-Rustdoc"></a> ## Rustdoc - [Deprecation notes are now rendered like any other documentation](https://github.com/rust-lang/rust/pull/149931). Previously they used the css `white-space: pre-wrap;` property and stripped any `<p>` elements from the rendered html, however this caused issues and unintuitive behavior. The new behavior should be more predictable, however some multi-line deprecation notes will now be rendered as as single lines. If this is undesirable, you can use the standard markdown method of forcing a linebreak, which is two spaces followed by a newline (`"\n"`). - [Don't emit rustdoc `missing_doc_code_examples` lint on impl items](https://github.com/rust-lang/rust/pull/154048) - [Separate methods and associated functions in sidebar](https://github.com/rust-lang/rust/pull/154644) <a id="1.96.0-Compatibility-Notes"></a> ## Compatibility Notes - [Fix layout of `#[repr(Int)]` enums in some edge cases involving fields of uninhabited zero-sized types](https://github.com/rust-lang/rust/pull/146989) - [Prevent unsize-coercing into `Pin<Foo>` where `Foo` doesn't implement `Deref`. Some such coercions were previously allowed, but produce a type with no useful public API.](https://github.com/rust-lang/rust/pull/149218) - [rustc: Stop passing `--allow-undefined` on wasm targets](https://github.com/rust-lang/rust/pull/149868) - [Gate the accidentally stabilized `#![reexport_test_harness_main]` attribute](https://github.com/rust-lang/rust/pull/152210) - [Error on return-position-impl-trait-in-traits whose types are too private](https://github.com/rust-lang/rust/pull/152543) - [Report the `uninhabited_static` lint in dependencies and make it deny-by-default](https://github.com/rust-lang/rust/pull/152853) - [Distributed builds now contain non-split debuginfo for windows-gnu](https://github.com/rust-lang/rust/pull/152870) This appears to improve the quality of backtraces. This change has no effect on the defaults for the output of rustc/cargo on these targets. - [Check const generic arguments are correctly typed in more positions](https://github.com/rust-lang/rust/pull/152931) - [Remove `-Csoft-float`](https://github.com/rust-lang/rust/pull/152973) - [Importing structs with `::{self [as name]}`, e.g., `struct S {}; use S::{self as Other};`, is now no longer permitted because `{self}` imports require a module parent.](https://github.com/rust-lang/rust/pull/152996) - [For `export_name`, `link_name`, and `link_section` attributes, if multiple of the same attribute is present, the first one now takes precedence.](https://github.com/rust-lang/rust/pull/153041) - [Update the minimum external LLVM to 21](https://github.com/rust-lang/rust/pull/153684) - On `avr` targets, C's `double` type is 32-bit by default, so [change `c_double` to `f32` on `avr` targets to match](https://github.com/rust-lang/rust/pull/154647). This is a breaking change, but necessary to make `c_double` match C's double. - [`BTreeMap::append()` was optimized, which may now cause panics for types with incorrect `Ord` impls](https://github.com/rust-lang/rust/pull/153107) <a id="1.96.0-Internal-Changes"></a> ## Internal Changes These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools. - [JSON targets: `aarch64` softfloat targets now have to have `rustc_abi` set to `"softfloat"`](https://github.com/rust-lang/rust/pull/152941) - [target specs: stricter checks for LLVM ABI values, and correlate that with `cfg(target_abi)`](https://github.com/rust-lang/rust/pull/153769) ### [`v1.93.1`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1931-2026-02-12) [Compare Source](https://github.com/rust-lang/rust/compare/1.93.0...1.93.1) \=========================== <a id="1.93.1"></a> - [Don't try to recover keyword as non-keyword identifier](https://github.com/rust-lang/rust/pull/150590), fixing an ICE that especially [affected rustfmt](https://github.com/rust-lang/rustfmt/issues/6739). - [Fix `clippy::panicking_unwrap` false-positive on field access with implicit deref](https://github.com/rust-lang/rust-clippy/pull/16196). - [Revert "Update wasm-related dependencies in CI"](https://github.com/rust-lang/rust/pull/152259), fixing file descriptor leaks on the `wasm32-wasip2` target. ### [`v1.93.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1930-2026-01-22) [Compare Source](https://github.com/rust-lang/rust/compare/1.92.0...1.93.0) \========================== <a id="1.93.0-Language"></a> ## Language - [Stabilize several s390x `vector`-related target features and the `is_s390x_feature_detected!` macro](https://github.com/rust-lang/rust/pull/145656) - [Stabilize declaration of C-style variadic functions for the `system` ABI](https://github.com/rust-lang/rust/pull/145954) - [Emit error when using some keyword as a `cfg` predicate](https://github.com/rust-lang/rust/pull/146978) - [Stabilize `asm_cfg`](https://github.com/rust-lang/rust/pull/147736) - [During const-evaluation, support copying pointers byte-by-byte](https://github.com/rust-lang/rust/pull/148259) - [LUB coercions now correctly handle function item types, and functions with differing safeties](https://github.com/rust-lang/rust/pull/148602) - [Allow `const` items that contain mutable references to `static` (which is *very* unsafe, but not *always* UB)](https://github.com/rust-lang/rust/pull/148746) - [Add warn-by-default `const_item_interior_mutations` lint to warn against calls which mutate interior mutable `const` items](https://github.com/rust-lang/rust/pull/148407) - [Add warn-by-default `function_casts_as_integer` lint](https://github.com/rust-lang/rust/pull/141470) <a id="1.93.0-Compiler"></a> ## Compiler - [Stabilize `-Cjump-tables=bool`](https://github.com/rust-lang/rust/pull/145974). The flag was previously called `-Zno-jump-tables`. <a id="1.93.0-Platform-Support"></a> ## Platform Support - [Promote `riscv64a23-unknown-linux-gnu` to Tier 2 (without host tools)](https://github.com/rust-lang/rust/pull/148435) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. [platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html <a id="1.93.0-Libraries"></a> ## Libraries - [Stop internally using `specialization` on the `Copy` trait as it is unsound in the presence of lifetime dependent `Copy` implementations. This may result in some performance regressions as some standard library APIs may now call `Clone::clone` instead of performing bitwise copies](https://github.com/rust-lang/rust/pull/135634) - [Allow the global allocator to use thread-local storage and `std::thread::current()`](https://github.com/rust-lang/rust/pull/144465) - [Make `BTree::append` not update existing keys when appending an entry which already exists](https://github.com/rust-lang/rust/pull/145628) - [Don't require `T: RefUnwindSafe` for `vec::IntoIter<T>: UnwindSafe`](https://github.com/rust-lang/rust/pull/145665) <a id="1.93.0-Stabilized-APIs"></a> ## Stabilized APIs - [`<[MaybeUninit<T>]>::assume_init_drop`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.assume_init_drop) - [`<[MaybeUninit<T>]>::assume_init_ref`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.assume_init_ref) - [`<[MaybeUninit<T>]>::assume_init_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.assume_init_mut) - [`<[MaybeUninit<T>]>::write_copy_of_slice`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.write_copy_of_slice) - [`<[MaybeUninit<T>]>::write_clone_of_slice`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.write_clone_of_slice) - [`String::into_raw_parts`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.into_raw_parts) - [`Vec::into_raw_parts`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.into_raw_parts) - [`<iN>::unchecked_neg`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unchecked_neg) - [`<iN>::unchecked_shl`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unchecked_shl) - [`<iN>::unchecked_shr`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unchecked_shr) - [`<uN>::unchecked_shl`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unchecked_shl) - [`<uN>::unchecked_shr`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unchecked_shr) - [`<[T]>::as_array`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_array) - [`<[T]>::as_mut_array`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_mut_array) - [`<*const [T]>::as_array`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.as_array) - [`<*mut [T]>::as_mut_array`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.as_mut_array) - [`VecDeque::pop_front_if`](https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.pop_front_if) - [`VecDeque::pop_back_if`](https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.pop_back_if) - [`Duration::from_nanos_u128`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.from_nanos_u128) - [`char::MAX_LEN_UTF8`](https://doc.rust-lang.org/stable/std/primitive.char.html#associatedconstant.MAX_LEN_UTF8) - [`char::MAX_LEN_UTF16`](https://doc.rust-lang.org/stable/std/primitive.char.html#associatedconstant.MAX_LEN_UTF16) - [`std::fmt::from_fn`](https://doc.rust-lang.org/stable/std/fmt/fn.from_fn.html) - [`std::fmt::FromFn`](https://doc.rust-lang.org/stable/std/fmt/struct.FromFn.html) <a id="1.93.0-Cargo"></a> ## Cargo - [Enable CARGO_CFG_DEBUG_ASSERTIONS in build scripts based on profile](https://github.com/rust-lang/cargo/pull/16160/) - [In `cargo tree`, support long forms for `--format` variables](https://github.com/rust-lang/cargo/pull/16204/) - [Add `--workspace` to `cargo clean`](https://github.com/rust-lang/cargo/pull/16263/) <a id="1.93.0-Rustdoc"></a> ## Rustdoc - [Remove `#![doc(document_private_items)]`](https://github.com/rust-lang/rust/pull/146495) - [Include attribute and derive macros in search filters for "macros"](https://github.com/rust-lang/rust/pull/148176) - [Include extern crates in search filters for `import`](https://github.com/rust-lang/rust/pull/148301) - [Validate usage of crate-level doc attributes](https://github.com/rust-lang/rust/pull/149197). This means if any of `html_favicon_url`, `html_logo_url`, `html_playground_url`, `issue_tracker_base_url`, or `html_no_source` either has a missing value, an unexpected value, or a value of the wrong type, rustdoc will emit the deny-by-default lint `rustdoc::invalid_doc_attributes`. <a id="1.93.0-Compatibility-Notes"></a> ## Compatibility Notes - [Introduce `pin_v2` into the builtin attributes namespace](https://github.com/rust-lang/rust/pull/139751) - [Update bundled musl to 1.2.5](https://github.com/rust-lang/rust/pull/142682) - [On Emscripten, the unwinding ABI used when compiling with `panic=unwind` was changed from the JS exception handling ABI to the wasm exception handling ABI.](https://github.com/rust-lang/rust/pull/147224) If linking C/C++ object files with Rust objects, `-fwasm-exceptions` must be passed to the linker now. On nightly Rust, it is possible to get the old behavior with `-Zwasm-emscripten-eh=false -Zbuild-std`, but it will be removed in a future release. - The `#[test]` attribute, used to define tests, was previously ignored in various places where it had no meaning (e.g on trait methods or types). Putting the `#[test]` attribute in these places is no longer ignored, and will now result in an error; this may also result in errors when generating rustdoc. [Error when `test` attribute is applied to structs](https://github.com/rust-lang/rust/pull/147841) - Cargo now sets the `CARGO_CFG_DEBUG_ASSERTIONS` environment variable in more situations. This will cause crates depending on `static-init` versions 1.0.1 to 1.0.3 to fail compilation with "failed to resolve: use of unresolved module or unlinked crate `parking_lot`". See [the linked issue](https://github.com/rust-lang/rust/issues/150646#issuecomment-3718964342) for details. - [User written types in the `offset_of!` macro are now checked to be well formed.](https://github.com/rust-lang/rust/issues/150465/) - `cargo publish` no longer emits `.crate` files as a final artifact for user access when the `build.build-dir` config is unset - [Upgrade the `deref_nullptr` lint from warn-by-default to deny-by-default](https://github.com/rust-lang/rust/pull/148122) - [Add future-incompatibility warning for `...` function parameters without a pattern outside of `extern` blocks](https://github.com/rust-lang/rust/pull/143619) - [Introduce future-compatibility warning for `repr(C)` enums whose discriminant values do not fit into a `c_int` or `c_uint`](https://github.com/rust-lang/rust/pull/147017) - [Introduce future-compatibility warning against ignoring `repr(C)` types as part of `repr(transparent)`](https://github.com/rust-lang/rust/pull/147185) ### [`v1.92.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1920-2025-12-11) [Compare Source](https://github.com/rust-lang/rust/compare/1.91.1...1.92.0) \========================== <a id="1.92.0-Language"></a> ## Language - [Document `MaybeUninit` representation and validity](https://github.com/rust-lang/rust/pull/140463) - [Allow `&raw [mut | const]` for union field in safe code](https://github.com/rust-lang/rust/pull/141469) - [Prefer item bounds of associated types over where-bounds for auto-traits and `Sized`](https://github.com/rust-lang/rust/pull/144064) - [Do not materialize `X` in `[X; 0]` when `X` is unsizing a const](https://github.com/rust-lang/rust/pull/145277) - [Support combining `#[track_caller]` and `#[no_mangle]` (requires every declaration specifying `#[track_caller]` as well)](https://github.com/rust-lang/rust/pull/145724) - [Make never type lints `never_type_fallback_flowing_into_unsafe` and `dependency_on_unit_never_type_fallback` deny-by-default](https://github.com/rust-lang/rust/pull/146167) - [Allow specifying multiple bounds for same associated item, except in trait objects](https://github.com/rust-lang/rust/pull/146593) - [Slightly strengthen higher-ranked region handling in coherence](https://github.com/rust-lang/rust/pull/146725) - [The `unused_must_use` lint no longer warns on `Result<(), Uninhabited>` (for instance, `Result<(), !>`), or `ControlFlow<Uninhabited, ()>`](https://github.com/rust-lang/rust/pull/147382). This avoids having to check for an error that can never happen. <a id="1.92.0-Compiler"></a> ## Compiler - [Make `mips64el-unknown-linux-muslabi64` link dynamically](https://github.com/rust-lang/rust/pull/146858) - [Remove current code for embedding command-line args in PDB](https://github.com/rust-lang/rust/pull/147022) Command-line information is typically not needed by debugging tools, and the removed code was causing problems for incremental builds even on targets that don't use PDB debuginfo. <a id="1.92.0-Libraries"></a> ## Libraries - [Specialize `Iterator::eq{_by}` for `TrustedLen` iterators](https://github.com/rust-lang/rust/pull/137122) - [Simplify `Extend` for tuples](https://github.com/rust-lang/rust/pull/138799) - [Added details to `Debug` for `EncodeWide`](https://github.com/rust-lang/rust/pull/140153). - [`iter::Repeat::last`](https://github.com/rust-lang/rust/pull/147258) and [`count`](https://github.com/rust-lang/rust/pull/146410) will now panic, rather than looping infinitely. <a id="1.92.0-Stabilized-APIs"></a> ## Stabilized APIs - [`NonZero<u{N}>::div_ceil`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.div_ceil) - [`Location::file_as_c_str`](https://doc.rust-lang.org/stable/std/panic/struct.Location.html#method.file_as_c_str) - [`RwLockWriteGuard::downgrade`](https://doc.rust-lang.org/stable/std/sync/struct.RwLockWriteGuard.html#method.downgrade) - [`Box::new_zeroed`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.new_zeroed) - [`Box::new_zeroed_slice`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.new_zeroed_slice) - [`Rc::new_zeroed`](https://doc.rust-lang.org/stable/std/rc/struct.Rc.html#method.new_zeroed) - [`Rc::new_zeroed_slice`](https://doc.rust-lang.org/stable/std/rc/struct.Rc.html#method.new_zeroed_slice) - [`Arc::new_zeroed`](https://doc.rust-lang.org/stable/std/sync/struct.Arc.html#method.new_zeroed) - [`Arc::new_zeroed_slice`](https://doc.rust-lang.org/stable/std/sync/struct.Arc.html#method.new_zeroed_slice) - [`btree_map::Entry::insert_entry`](https://doc.rust-lang.org/stable/std/collections/btree_map/enum.Entry.html#method.insert_entry) - [`btree_map::VacantEntry::insert_entry`](https://doc.rust-lang.org/stable/std/collections/btree_map/struct.VacantEntry.html#method.insert_entry) - [`impl Extend<proc_macro::Group> for proc_macro::TokenStream`](https://doc.rust-lang.org/stable/proc_macro/struct.TokenStream.html#impl-Extend%3CGroup%3E-for-TokenStream) - [`impl Extend<proc_macro::Literal> for proc_macro::TokenStream`](https://doc.rust-lang.org/stable/proc_macro/struct.TokenStream.html#impl-Extend%3CLiteral%3E-for-TokenStream) - [`impl Extend<proc_macro::Punct> for proc_macro::TokenStream`](https://doc.rust-lang.org/stable/proc_macro/struct.TokenStream.html#impl-Extend%3CPunct%3E-for-TokenStream) - [`impl Extend<proc_macro::Ident> for proc_macro::TokenStream`](https://doc.rust-lang.org/stable/proc_macro/struct.TokenStream.html#impl-Extend%3CIdent%3E-for-TokenStream) These previously stable APIs are now stable in const contexts: - [`<[_]>::rotate_left`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.rotate_left) - [`<[_]>::rotate_right`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.rotate_right) <a id="1.92.0-Cargo"></a> ## Cargo - [Added a new chapter](https://github.com/rust-lang/cargo/issues/16119) to the Cargo book, ["Optimizing Build Performance"](https://doc.rust-lang.org/stable/cargo/guide/build-performance.html). <a id="1.92.0-Rustdoc"></a> ## Rustdoc - [If a trait item appears in rustdoc search, hide the corresponding impl items](https://github.com/rust-lang/rust/pull/145898). Previously a search for "last" would show both `Iterator::last` as well as impl methods like `std::vec::IntoIter::last`. Now these impl methods will be hidden, freeing up space for inherent methods like `BTreeSet::last`. - [Relax rules for identifiers in search](https://github.com/rust-lang/rust/pull/147860). Previously you could only search for identifiers that were valid in rust code, now searches only need to be valid as part of an identifier. For example, you can now perform a search that starts with a digit. <a id="1.92.0-Compatibility-Notes"></a> ## Compatibility Notes - [Fix backtraces with `-C panic=abort` on Linux by generating unwind tables by default](https://github.com/rust-lang/rust/pull/143613). Build with `-C force-unwind-tables=no` to keep omitting unwind tables. * As part of the larger effort refactoring compiler built-in attributes and their diagnostics, [the future-compatibility lint `invalid_macro_export_arguments` is upgraded to deny-by-default and will be reported in dependencies too.](https://github.com/rust-lang/rust/pull/143857) * [Update the minimum external LLVM to 20](https://github.com/rust-lang/rust/pull/145071) * [Prevent downstream `impl DerefMut for Pin<LocalType>`](https://github.com/rust-lang/rust/pull/145608) * [Don't apply temporary lifetime extension rules to the arguments of non-extended `pin!` and formatting macros](https://github.com/rust-lang/rust/pull/145838) ### [`v1.91.1`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1911-2025-11-10) [Compare Source](https://github.com/rust-lang/rust/compare/1.91.0...1.91.1) \=========================== <a id="1.91.1"></a> - [Enable file locking support in illumos](https://github.com/rust-lang/rust/pull/148322). This fixes Cargo not locking the build directory on illumos. - [Fix `wasm_import_module` attribute cross-crate](https://github.com/rust-lang/rust/pull/148363). This fixes linker errors on WASM targets. ### [`v1.91.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1910-2025-10-30) [Compare Source](https://github.com/rust-lang/rust/compare/1.90.0...1.91.0) \========================== <a id="1.91.0-Language"></a> ## Language - [Lower pattern bindings in the order they're written and base drop order on primary bindings' order](https://github.com/rust-lang/rust/pull/143764) - [Stabilize declaration of C-style variadic functions for `sysv64`, `win64`, `efiapi`, and `aapcs` ABIs](https://github.com/rust-lang/rust/pull/144066). This brings these ABIs in line with the C ABI: variadic functions can be declared in extern blocks but not defined. - [Add `dangling_pointers_from_locals` lint to warn against dangling pointers from local variables](https://github.com/rust-lang/rust/pull/144322) - [Upgrade `semicolon_in_expressions_from_macros` from warn to deny](https://github.com/rust-lang/rust/pull/144369) - [Stabilize LoongArch32 inline assembly](https://github.com/rust-lang/rust/pull/144402) - [Add warn-by-default `integer_to_ptr_transmutes` lint against integer-to-pointer transmutes](https://github.com/rust-lang/rust/pull/144531) - [Stabilize `sse4a` and `tbm` target features](https://github.com/rust-lang/rust/pull/144542) - [Add `target_env = "macabi"` and `target_env = "sim"` cfgs](https://github.com/rust-lang/rust/pull/139451) as replacements for the `target_abi` cfgs with the same values. <a id="1.91.0-Compiler"></a> ## Compiler - [Don't warn on never-to-any `as` casts as unreachable](https://github.com/rust-lang/rust/pull/144804) <a id="1.91.0-Platform-Support"></a> ## Platform Support - [Promote `aarch64-pc-windows-gnullvm` and `x86_64-pc-windows-gnullvm` to Tier 2 with host tools.](https://github.com/rust-lang/rust/pull/143031) Note: llvm-tools and MSI installers are missing but will be added in future releases. - [Promote `aarch64-pc-windows-msvc` to Tier 1](https://github.com/rust-lang/rust/pull/145682) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. [platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html <a id="1.91.0-Libraries"></a> ## Libraries - [Print thread ID in panic message](https://github.com/rust-lang/rust/pull/115746) - [Fix overly restrictive lifetime in `core::panic::Location::file` return type](https://github.com/rust-lang/rust/pull/132087) - [Guarantee parameter order for `_by()` variants of `min` / `max`/ `minmax` in `std::cmp`](https://github.com/rust-lang/rust/pull/139357) - [Document assumptions about `Clone` and `Eq` traits](https://github.com/rust-lang/rust/pull/144330/) - [`std::thread`: Return error if setting thread stack size fails](https://github.com/rust-lang/rust/pull/144210) This used to panic within the standard library. <a id="1.91.0-Stabilized-APIs"></a> ## Stabilized APIs - [`Path::file_prefix`](https://doc.rust-lang.org/stable/std/path/struct.Path.html#method.file_prefix) - [`AtomicPtr::fetch_ptr_add`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_ptr_add) - [`AtomicPtr::fetch_ptr_sub`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_ptr_sub) - [`AtomicPtr::fetch_byte_add`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_byte_add) - [`AtomicPtr::fetch_byte_sub`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_byte_sub) - [`AtomicPtr::fetch_or`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_or) - [`AtomicPtr::fetch_and`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_and) - [`AtomicPtr::fetch_xor`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_xor) - [`{integer}::strict_add`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_add) - [`{integer}::strict_sub`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_sub) - [`{integer}::strict_mul`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_mul) - [`{integer}::strict_div`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_div) - [`{integer}::strict_div_euclid`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_div_euclid) - [`{integer}::strict_rem`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_rem) - [`{integer}::strict_rem_euclid`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_rem_euclid) - [`{integer}::strict_neg`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_neg) - [`{integer}::strict_shl`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_shl) - [`{integer}::strict_shr`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_shr) - [`{integer}::strict_pow`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_pow) - [`i{N}::strict_add_unsigned`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_add_unsigned) - [`i{N}::strict_sub_unsigned`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_sub_unsigned) - [`i{N}::strict_abs`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_abs) - [`u{N}::strict_add_signed`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_add_signed) - [`u{N}::strict_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_sub_signed) - [`PanicHookInfo::payload_as_str`](https://doc.rust-lang.org/stable/std/panic/struct.PanicHookInfo.html#method.payload_as_str) - [`core::iter::chain`](https://doc.rust-lang.org/stable/core/iter/fn.chain.html) - [`u{N}::checked_signed_diff`](https://doc.rust-lang.org/stable/std/primitive.u16.html#method.checked_signed_diff) - [`core::array::repeat`](https://doc.rust-lang.org/stable/core/array/fn.repeat.html) - [`PathBuf::add_extension`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.add_extension) - [`PathBuf::with_added_extension`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.with_added_extension) - [`Duration::from_mins`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.from_mins) - [`Duration::from_hours`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.from_hours) - [`impl PartialEq<str> for PathBuf`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#impl-PartialEq%3Cstr%3E-for-PathBuf) - [`impl PartialEq<String> for PathBuf`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#impl-PartialEq%3CString%3E-for-PathBuf) - [`impl PartialEq<str> for Path`](https://doc.rust-lang.org/stable/std/path/struct.Path.html#impl-PartialEq%3Cstr%3E-for-Path) - [`impl PartialEq<String> for Path`](https://doc.rust-lang.org/stable/std/path/struct.Path.html#impl-PartialEq%3CString%3E-for-Path) - [`impl PartialEq<PathBuf> for String`](https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-PartialEq%3CPathBuf%3E-for-String) - [`impl PartialEq<Path> for String`](https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-PartialEq%3CPath%3E-for-String) - [`impl PartialEq<PathBuf> for str`](https://doc.rust-lang.org/stable/std/primitive.str.html#impl-PartialEq%3CPathBuf%3E-for-str) - [`impl PartialEq<Path> for str`](https://doc.rust-lang.org/stable/std/primitive.str.html#impl-PartialEq%3CPath%3E-for-str) - [`Ipv4Addr::from_octets`](https://doc.rust-lang.org/stable/std/net/struct.Ipv4Addr.html#method.from_octets) - [`Ipv6Addr::from_octets`](https://doc.rust-lang.org/stable/std/net/struct.Ipv6Addr.html#method.from_octets) - [`Ipv6Addr::from_segments`](https://doc.rust-lang.org/stable/std/net/struct.Ipv6Addr.html#method.from_segments) - [`impl<T> Default for Pin<Box<T>> where Box<T>: Default, T: ?Sized`](https://doc.rust-lang.org/stable/std/default/trait.Default.html#impl-Default-for-Pin%3CBox%3CT%3E%3E) - [`impl<T> Default for Pin<Rc<T>> where Rc<T>: Default, T: ?Sized`](https://doc.rust-lang.org/stable/std/default/trait.Default.html#impl-Default-for-Pin%3CRc%3CT%3E%3E) - [`impl<T> Default for Pin<Arc<T>> where Arc<T>: Default, T: ?Sized`](https://doc.rust-lang.org/stable/std/default/trait.Default.html#impl-Default-for-Pin%3CArc%3CT%3E%3E) - [`Cell::as_array_of_cells`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.as_array_of_cells) - [`u{N}::carrying_add`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.carrying_add) - [`u{N}::borrowing_sub`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.borrowing_sub) - [`u{N}::carrying_mul`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.carrying_mul) - [`u{N}::carrying_mul_add`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.carrying_mul_add) - [`BTreeMap::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeMap.html#method.extract_if) - [`BTreeSet::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeSet.html#method.extract_if) - [`impl Debug for windows::ffi::EncodeWide<'_>`](https://doc.rust-lang.org/stable/std/os/windows/ffi/struct.EncodeWide.html#impl-Debug-for-EncodeWide%3C'_%3E) - [`str::ceil_char_boundary`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.ceil_char_boundary) - [`str::floor_char_boundary`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.floor_char_boundary) - [`impl Sum for Saturating<u{N}>`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Sum-for-Saturating%3Cu32%3E) - [`impl Sum<&Self> for Saturating<u{N}>`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Sum%3C%26Saturating%3Cu32%3E%3E-for-Saturating%3Cu32%3E) - [`impl Product for Saturating<u{N}>`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Product-for-Saturating%3Cu32%3E) - [`impl Product<&Self> for Saturating<u{N}>`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Product%3C%26Saturating%3Cu32%3E%3E-for-Saturating%3Cu32%3E) These previously stable APIs are now stable in const contexts: - [`<[T; N]>::each_ref`](https://doc.rust-lang.org/stable/std/primitive.array.html#method.each_ref) - [`<[T; N]>::each_mut`](https://doc.rust-lang.org/stable/std/primitive.array.html#method.each_mut) - [`OsString::new`](https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.new) - [`PathBuf::new`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.new) - [`TypeId::of`](https://doc.rust-lang.org/stable/std/any/struct.TypeId.html#method.of) - [`ptr::with_exposed_provenance`](https://doc.rust-lang.org/stable/std/ptr/fn.with_exposed_provenance.html) - [`ptr::with_exposed_provenance_mut`](https://doc.rust-lang.org/stable/std/ptr/fn.with_exposed_provenance_mut.html) <a id="1.91.0-Cargo"></a> ## Cargo - 🎉 Stabilize `build.build-dir`. This config sets the directory where intermediate build artifacts are stored. These artifacts are produced by Cargo and rustc during the build process. End users usually won't need to interact with them, and the layout inside `build-dir` is an implementation detail that may change without notice. ([config doc](https://doc.rust-lang.org/stable/cargo/reference/config.html#buildbuild-dir)) ([build cache doc](https://doc.rust-lang.org/stable/cargo/reference/build-cache.html)) [#&#8203;15833](https://github.com/rust-lang/cargo/pull/15833) [#&#8203;15840](https://github.com/rust-lang/cargo/pull/15840) - The `--target` flag and the `build.target` configuration can now take literal `"host-tuple"` string, which will internally be substituted by the host machine's target triple. [#&#8203;15838](https://github.com/rust-lang/cargo/pull/15838) [#&#8203;16003](https://github.com/rust-lang/cargo/pull/16003) [#&#8203;16032](https://github.com/rust-lang/cargo/pull/16032) <a id="1.91.0-Rustdoc"></a> ## Rustdoc - [In search results, rank doc aliases lower than non-alias items with the same name](https://github.com/rust-lang/rust/pull/145100) - [Raw pointers now work in type-based search like references](https://github.com/rust-lang/rust/pull/145731). This means you can now search for things like `*const u8 ->`, and additionally functions that take or return raw pointers will now display their signature properly in search results. <a id="1.91.0-Compatibility-Notes"></a> ## Compatibility Notes - [Always require coroutine captures to be drop-live](https://github.com/rust-lang/rust/pull/144156) - [Apple: Always pass SDK root when linking with `cc`, and pass it via `SDKROOT` env var](https://github.com/rust-lang/rust/pull/131477). This should fix linking issues with `rustc` running inside Xcode. Libraries in `/usr/local/lib` may no longer be linked automatically, if you develop or use a crate that relies on this, you should explicitly set `cargo::rustc-link-search=/usr/local/lib` in a `build.rs` script. - [Relaxed bounds in associated type bound position like in `TraitRef<AssocTy: ?Sized>` are now correctly forbidden](https://github.com/rust-lang/rust/pull/135331) - [Add unstable `#[sanitize(xyz = "on|off")]` built-in attribute that shadows procedural macros with the same name](https://github.com/rust-lang/rust/pull/142681) - [Fix the drop checker being more permissive for bindings declared with let-else](https://github.com/rust-lang/rust/pull/143028) - [Be more strict when parsing attributes, erroring on many invalid attributes](https://github.com/rust-lang/rust/pull/144689) - [Error on invalid `#[should_panic]` attributes](https://github.com/rust-lang/rust/pull/143808) - [Error on invalid `#[link]` attributes](https://github.com/rust-lang/rust/pull/143193) - [Mark all deprecation lints in name resolution as deny-by-default and also report in dependencies](https://github.com/rust-lang/rust/pull/143929) - The lint `semicolon_in_expressions_from_macros`, for `macro_rules!` macros in expression position that expand to end in a semicolon (`;`), is now deny-by-default. It was already warn-by-default, and a future compatibility warning (FCW) that warned even in dependencies. This lint will become a hard error in the future. - [Trait impl modifiers (e.g., `unsafe`, `!`, `default`) in inherent impls are no longer syntactically valid](https://github.com/rust-lang/rust/pull/144386) - [Start reporting future breakage for `ill_formed_attribute_input` in dependencies](https://github.com/rust-lang/rust/pull/144544) - [Restrict the scope of temporaries created by the macros `pin!`, `format_args!`, `write!`, and `writeln!` in `if let` scrutinees in Rust Edition 2024.](https://github.com/rust-lang/rust/pull/145342) This applies [Rust Edition 2024's `if let` temporary scope rules](https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html) to these temporaries, which previously could live past the `if` expression regardless of Edition. - [Invalid numeric literal suffixes in tuple indexing, tuple struct indexing, and struct field name positions are now correctly rejected](https://github.com/rust-lang/rust/pull/145463) - [Closures marked with the keyword `static` are now syntactically invalid](https://github.com/rust-lang/rust/pull/145604) - [Shebangs inside `--cfg` and `--check-cfg` arguments are no longer allowed](https://github.com/rust-lang/rust/pull/146211) - [Add future incompatibility lint for temporary lifetime shortening in Rust 1.92](https://github.com/rust-lang/rust/pull/147056) Cargo compatibility notes: - `cargo publish` no longer keeps `.crate` tarballs as final build artifacts when `build.build-dir` is set. These tarballs were previously included due to an oversight and are now treated as intermediate artifacts. To get `.crate` tarballs as final artifacts, use `cargo package`. In a future version, this change will apply regardless of `build.build-dir`. [#&#8203;15910](https://github.com/rust-lang/cargo/pull/15910) - Adjust Cargo messages to match rustc diagnostic style. This changes some of the terminal colors used by Cargo messages. [#&#8203;15928](https://github.com/rust-lang/cargo/pull/15928) - Tools and projects relying on the [internal details of Cargo's `build-dir`](https://doc.rust-lang.org/cargo/reference/build-cache.html) may not work for users changing their `build-dir` layout. For those doing so, we'd recommend proactively testing these cases particularly as we are considering changing the default location of the `build-dir` in the future ([cargo#16147](https://github.com/rust-lang/cargo/issues/16147)). If you can't migrate off of Cargo's internal details, we'd like to learn more about your use case as we prepare to change the layout of the `build-dir` ([cargo#15010](https://github.com/rust-lang/cargo/issues/15010)). <a id="1.91.0-Internal-Changes"></a> ## Internal Changes These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools. - [Update to LLVM 21](https://github.com/rust-lang/rust/pull/143684) ### [`v1.90.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1900-2025-09-18) [Compare Source](https://github.com/rust-lang/rust/compare/1.89.0...1.90.0) \=========================== <a id="1.90-Language"></a> ## Language - [Split up the `unknown_or_malformed_diagnostic_attributes` lint](https://github.com/rust-lang/rust/pull/140717). This lint has been split up into four finer-grained lints, with `unknown_or_malformed_diagnostic_attributes` now being the lint group that contains these lints: 1. `unknown_diagnostic_attributes`: unknown to the current compiler 2. `misplaced_diagnostic_attributes`: placed on the wrong item 3. `malformed_diagnostic_attributes`: malformed attribute syntax or options 4. `malformed_diagnostic_format_literals`: malformed format string literal - [Allow constants whose final value has references to mutable/external memory, but reject such constants as patterns](https://github.com/rust-lang/rust/pull/140942) - [Allow volatile access to non-Rust memory, including address 0](https://github.com/rust-lang/rust/pull/141260) <a id="1.90-Compiler"></a> ## Compiler - [Use `lld` by default on `x86_64-unknown-linux-gnu`](https://github.com/rust-lang/rust/pull/140525). - [Tier 3 `musl` targets now link dynamically by default](https://github.com/rust-lang/rust/pull/144410). Affected targets: - `mips64-unknown-linux-muslabi64` - `powerpc64-unknown-linux-musl` - `powerpc-unknown-linux-musl` - `powerpc-unknown-linux-muslspe` - `riscv32gc-unknown-linux-musl` - `s390x-unknown-linux-musl` - `thumbv7neon-unknown-linux-musleabihf` <a id="1.90-Platform-Support"></a> ## Platform Support - [Demote `x86_64-apple-darwin` to Tier 2 with host tools](https://github.com/rust-lang/rust/pull/145252) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. [platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html <a id="1.90-Libraries"></a> ## Libraries - [Stabilize `u*::{checked,overflowing,saturating,wrapping}_sub_signed`](https://github.com/rust-lang/rust/issues/126043) - [Allow comparisons between `CStr`, `CString`, and `Cow<CStr>`](https://github.com/rust-lang/rust/pull/137268) - [Remove some unsized tuple impls since unsized tuples can't be constructed](https://github.com/rust-lang/rust/pull/138340) - [Set `MSG_NOSIGNAL` for `UnixStream`](https://github.com/rust-lang/rust/pull/140005) - [`proc_macro::Ident::new` now supports `$crate`.](https://github.com/rust-lang/rust/pull/141996) - [Guarantee the pointer returned from `Thread::into_raw` has at least 8 bytes of alignment](https://github.com/rust-lang/rust/pull/143859) <a id="1.90-Stabilized-APIs"></a> ## Stabilized APIs - [`u{n}::checked_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.checked_sub_signed) - [`u{n}::overflowing_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.overflowing_sub_signed) - [`u{n}::saturating_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.saturating_sub_signed) - [`u{n}::wrapping_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.wrapping_sub_signed) - [`impl Copy for IntErrorKind`](https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Copy-for-IntErrorKind) - [`impl Hash for IntErrorKind`](https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Hash-for-IntErrorKind) - [`impl PartialEq<&CStr> for CStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3C%26CStr%3E-for-CStr) - [`impl PartialEq<CString> for CStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCString%3E-for-CStr) - [`impl PartialEq<Cow<CStr>> for CStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CStr) - [`impl PartialEq<&CStr> for CString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3C%26CStr%3E-for-CString) - [`impl PartialEq<CStr> for CString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCStr%3E-for-CString) - [`impl PartialEq<Cow<CStr>> for CString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CString) - [`impl PartialEq<&CStr> for Cow<CStr>`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3C%26CStr%3E-for-Cow%3C'_,+CStr%3E) - [`impl PartialEq<CStr> for Cow<CStr>`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCStr%3E-for-Cow%3C'_,+CStr%3E) - [`impl PartialEq<CString> for Cow<CStr>`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCString%3E-for-Cow%3C'_,+CStr%3E) These previously stable APIs are now stable in const contexts: - [`<[T]>::reverse`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.reverse) - [`f32::floor`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.floor) - [`f32::ceil`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.ceil) - [`f32::trunc`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.trunc) - [`f32::fract`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract) - [`f32::round`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round) - [`f32::round_ties_even`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round_ties_even) - [`f64::floor`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.floor) - [`f64::ceil`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.ceil) - [`f64::trunc`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.trunc) - [`f64::fract`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.fract) - [`f64::round`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round) - [`f64::round_ties_even`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round_ties_even) <a id="1.90-Cargo"></a> ## Cargo - [Add `http.proxy-cainfo` config for proxy certs](https://github.com/rust-lang/cargo/pull/15374/) - [Use `gix` for `cargo package`](https://github.com/rust-lang/cargo/pull/15534/) - [feat(publish): Stabilize multi-package publishing](https://github.com/rust-lang/cargo/pull/15636/) <a id="1.90-Rustdoc"></a> ## Rustdoc - [Add ways to collapse all impl blocks](https://github.com/rust-lang/rust/pull/141663). Previously the "Summary" button and "-" keyboard shortcut would never collapse `impl` blocks, now they do when shift is held - [Display unsafe attributes with `unsafe()` wrappers](https://github.com/rust-lang/rust/pull/143662) <a id="1.90-Compatibility-Notes"></a> ## Compatibility Notes - [Use `lld` by default on `x86_64-unknown-linux-gnu`](https://github.com/rust-lang/rust/pull/140525). See also <https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/>. - [Make `core::iter::Fuse`'s `Default` impl construct `I::default()` internally as promised in the docs instead of always being empty](https://github.com/rust-lang/rust/pull/140985) - [Set `MSG_NOSIGNAL` for `UnixStream`](https://github.com/rust-lang/rust/pull/140005) This may change program behavior but results in the same behavior as other primitives (e.g., stdout, network sockets). Programs relying on signals to terminate them should update handling of sockets to handle errors on write by exiting. - [On Unix `std::env::home_dir` will use the fallback if the `HOME` environment variable is empty](https://github.com/rust-lang/rust/pull/141840) - We now [reject unsupported `extern "{abi}"`s consistently in all positions](https://github.com/rust-lang/rust/pull/142134). This primarily affects the use of implementing traits on an `extern "{abi}"` function pointer, like `extern "stdcall" fn()`, on a platform that doesn't support that, like aarch64-unknown-linux-gnu. Direct usage of these unsupported ABI strings by declaring or defining functions was already rejected, so this is only a change for consistency. - [const-eval: error when initializing a static writes to that static](https://github.com/rust-lang/rust/pull/143084) - [Check that the `proc_macro_derive` macro has correct arguments when applied to the crate root](https://github.com/rust-lang/rust/pull/143607) </details> <details> <summary>serde-rs/serde (serde)</summary> ### [`v1.0.229`](https://github.com/serde-rs/serde/releases/tag/v1.0.229) [Compare Source](https://github.com/serde-rs/serde/compare/v1.0.228...v1.0.229) - Update to syn 3 </details> <details> <summary>serde-rs/json (serde_json)</summary> ### [`v1.0.154`](https://github.com/serde-rs/json/releases/tag/v1.0.154) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.153...v1.0.154) - Support preserve_order in no_std builds ([#&#8203;1333](https://github.com/serde-rs/json/issues/1333), thanks [@&#8203;razmser](https://github.com/razmser)) ### [`v1.0.153`](https://github.com/serde-rs/json/releases/tag/v1.0.153) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.152...v1.0.153) - Report invalid UTF-8 at the first bad byte ([#&#8203;1345](https://github.com/serde-rs/json/issues/1345), thanks [@&#8203;00200200](https://github.com/00200200)) ### [`v1.0.152`](https://github.com/serde-rs/json/releases/tag/v1.0.152) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.151...v1.0.152) - Preserve sign of `-0` in arbitrary_precision mode ([#&#8203;1346](https://github.com/serde-rs/json/issues/1346), thanks [@&#8203;yuxi-liu-wired](https://github.com/yuxi-liu-wired)) - Fix comparison of large non-integer values with f32::INFINITY ([#&#8203;1347](https://github.com/serde-rs/json/issues/1347), thanks [@&#8203;yuxi-liu-wired](https://github.com/yuxi-liu-wired)) ### [`v1.0.151`](https://github.com/serde-rs/json/releases/tag/v1.0.151) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.150...v1.0.151) - Add RawValue::from_string_unchecked ([#&#8203;1331](https://github.com/serde-rs/json/issues/1331), thanks [@&#8203;WonderLawrence](https://github.com/WonderLawrence)) ### [`v1.0.150`](https://github.com/serde-rs/json/releases/tag/v1.0.150) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.149...v1.0.150) - Reject non-string enum object keys ([#&#8203;1324](https://github.com/serde-rs/json/issues/1324), thanks [@&#8203;puneetdixit200](https://github.com/puneetdixit200)) ### [`v1.0.149`](https://github.com/serde-rs/json/releases/tag/v1.0.149) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.148...v1.0.149) - Align arbitrary_precision number strings with zmij's formatting ([#&#8203;1306](https://github.com/serde-rs/json/issues/1306), thanks [@&#8203;b41sh](https://github.com/b41sh)) ### [`v1.0.148`](https://github.com/serde-rs/json/releases/tag/v1.0.148) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.147...v1.0.148) - Update `zmij` dependency to 1.0 ### [`v1.0.147`](https://github.com/serde-rs/json/releases/tag/v1.0.147) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.146...v1.0.147) - Switch float-to-string algorithm from Ryū to Żmij for better f32 and f64 serialization performance ([#&#8203;1304](https://github.com/serde-rs/json/issues/1304)) ### [`v1.0.146`](https://github.com/serde-rs/json/releases/tag/v1.0.146) [Compare Source](https://github.com/serde-rs/json/compare/v1.0.145...v1.0.146) - Set fast_arithmetic=64 for riscv64 ([#&#8203;1305](https://github.com/serde-rs/json/issues/1305), thanks [@&#8203;Xeonacid](https://github.com/Xeonacid)) </details> <details> <summary>launchbadge/sqlx (sqlx)</summary> ### [`v0.9.0`](https://github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#090---2026-05-06) [Compare Source](https://github.com/launchbadge/sqlx/compare/v0.8.6...v0.9.0) ##### Important Announcements ##### New Github Organization Shortly after this release is published, the SQLx repository will be transferred to a new GitHub organization: <https://github.com/transact-rs/> This is because SQLx has not been owned or maintained by LaunchBadge, LLC. for a few years now, and has since been informally transferred to the collective ownership of its principal authors. Moving the repository to a new organization makes this change more clear, and also allows for potentially inviting outside collaborators. ##### `Cargo.lock` Removed from Tracking The `Cargo.lock` has been removed from tracking in Git. CI should now always test with the latest versions of all dependencies by default, alongside our pass that checks with `cargo generate-lockfile -Z minimal-versions`. This should eliminate the need for any PRs that update dependencies to also update `Cargo.lock` or contend with an endless stream of merge conflicts against it. **N.B.** `cargo install --locked sqlx-cli` will no longer work. However, `cargo install sqlx-cli` has *always* used the latest dependencies by default, ignoring the lockfile, so most users should not be affected. For users requiring reproducible builds, consider maintaining your own lockfile instead; historically, we only ran `cargo update` sporadically, so relying on SQLx's lockfile offered few guarantees anyway. See [the manual page for `cargo install`][man-cargo-install] for details. ##### Breaking As per our [MSRV policy](FAQ.md#MSRV), the supported Rust version for this release cycle is [`1.94.0`](https://doc.rust-lang.org/stable/releases.html#version-1940-2026-03-05). - \[[#&#8203;3383]]: feat: create `sqlx.toml` format \[\[[@&#8203;abonander](https://github.com/abonander)]] - SQLx and `sqlx-cli` now support per-crate configuration files (`sqlx.toml`) - New functionality includes, but is not limited to: - Rename `DATABASE_URL` for a crate (for multi-database workspaces) - Set global type overrides for the macros (supporting custom types) - Rename or relocate the `_sqlx_migrations` table (for multiple crates using the same database) - Set characters to ignore when hashing migrations (e.g. ignore whitespace) - More to be implemented in future releases. - Enable feature `sqlx-toml` to use. - `sqlx-cli` has it enabled by default, but `sqlx` does **not**. - Default features of library crates can be hard to completely turn off because of [feature unification], so it's better to keep the default feature set as limited as possible. [This is something we learned the hard way.][preferred-crates] - Guide: see `sqlx::_config` module in documentation. - Reference: \[[Link](sqlx-core/src/config/reference.toml)] - Examples (written for Postgres but can be adapted to other databases; PRs welcome!): - Multiple databases using `DATABASE_URL` renaming and global type overrides: \[[Link](examples/postgres/multi-database)] - Multi-tenant database using `_sqlx_migrations` renaming and multiple schemas: \[[Link](examples/postgres/multi-tenant)] - Force use of `chrono` when `time` is enabled (e.g. when using `tower-sessions-sqlx-store`): \[[Link][preferred-crates]] - Forcing `bigdecimal` when `rust_decimal` is enabled is also shown, but problems with `chrono`/`time` are more common. - **Breaking changes**: - Significant changes to the `Migrate` trait - `sqlx::migrate::resolve_blocking()` is now `#[doc(hidden)]` and thus SemVer-exempt. - \[[#&#8203;3486]]: fix(logs): Correct spelling of aquired_after_secs tracing field \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - Breaking behavior change: implementations parsing `tracing` logs from SQLx will need to update the spelling. - \[[#&#8203;3495]]: feat(postgres): remove lifetime from `PgAdvisoryLockGuard` \[\[[@&#8203;bonsairobo](https://github.com/bonsairobo)]] - \[[#&#8203;3526]]: Return \&mut Self from the migrator set\_ methods \[\[[@&#8203;nipunn1313](https://github.com/nipunn1313)]] - Minor breaking change: `Migrator::set_ignore_missing` and `set_locking` now return `&mut Self` instead of `&Self` which may break code in rare circumstances. - \[[#&#8203;3541]]: Postgres: force generic plan for better nullability inference. \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - Breaking change: may alter the output of the `query!()` macros for certain queries in Postgres. - \[[#&#8203;3613]]: fix: `RawSql` lifetime issues \[\[[@&#8203;abonander](https://github.com/abonander)]] - Breaking change: adds `DB` type parameter to all methods of `RawSql` - \[[#&#8203;3670]]: Bump ipnetwork to v0.21.1 \[\[[@&#8203;BeauGieskens](https://github.com/BeauGieskens)]] - \[[#&#8203;3674]]: Implement `Decode`, `Encode` and `Type` for `Box`, `Arc`, `Cow` and `Rc` \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - Breaking change: `impl Decode for Cow` now always decodes `Cow::Owned`, lifetime is unlinked - See this discussion for motivation: [#&#8203;3674 (comment)](https://github.com/launchbadge/sqlx/pull/3674#discussion_r2008611502) - \[[#&#8203;3723]]: Add SqlStr \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - Breaking change: all `query*()` functions now take `impl SqlSafeStr` which is only implemented for `&'static str` and `AssertSqlSafe`. For all others, wrap in `AssertSqlSafe(<query>)`. - This, along with \[[#&#8203;3960]], finally allows returning owned queries as the type will be `Query<'static, DB>`. - `SqlSafeStr` trait is deliberately similar to `std::panic::UnwindSafe`, serving as a speedbump to warn users about naïvely building queries with `format!()` while allowing a workaround for advanced usage that is easy to spot on code review. - \[[#&#8203;3800]]: Escape PostgreSQL Options \[\[[@&#8203;V02460](https://github.com/V02460)]] - Breaking behavior change: options passed to `PgConnectOptions::options()` are now automatically escaped. Manual escaping of options is no longer necessary and may cause incorrect behavior. - \[[#&#8203;3821]]: Groundwork for 0.9.0-alpha.1 \[\[[@&#8203;abonander](https://github.com/abonander)]] - Increased MSRV to 1.86 and set rust-version - Deleted deprecated combination runtime+TLS features (e.g. `runtime-tokio-native-tls`) - Deleted re-export of unstable `TransactionManager` trait in `sqlx`. - Not technically a breaking change because it's `#[doc(hidden)]`, but [it *will* break SeaORM][seaorm-2600] if not proactively fixed. - \[[#&#8203;3924]]: breaking(mysql): assume all non-binary collations compatible with `str` \[\[[@&#8203;abonander](https://github.com/abonander)]] - Text (or text-like) columns which previously were inferred to be `Vec<u8>` will be inferred to be `String` (this should ultimately fix more code than it breaks). - `SET NAMES utf8mb4 COLLATE utf8_general_ci` is no longer sent by default; instead, `SET NAMES utf8mb4` is sent to allow the server to select the appropriate default collation (since this is version- and configuration-dependent). - `MySqlConnectOptions::charset()` and `::collation()` now imply `::set_names(true)` because they don't do anything otherwise. - Setting `charset` doesn't change what's sent in the `Protocol::HandshakeResponse41` packet as that normally only matters for error messages before `SET NAMES` is sent. The default collation if `set_names = false` is `utf8mb4_general_ci`. - See [this comment](https://github.com/launchbadge/sqlx/blob/388c424f486bf20542a8a37d296dbcf86bb6dffd/sqlx-mysql/src/collation.rs#L1-L37) for details. - Incidental breaking change: `RawSql::fetch_optional()` now returns `sqlx::Result<Option<DB::Row>>` instead of `sqlx::Result<DB::Row>`. Whoops. - \[[#&#8203;3928]]: breaking(sqlite): `libsqlite3-sys` versioning, feature flags, safety changes \[\[[@&#8203;abonander](https://github.com/abonander)]] - SemVer policy changes: `libsqlite3-sys` version is now specified using a range. The maximum of the range may now be increased in any backwards-compatible release. The minimum of the range may only be increased in major releases. If you have `libsqlite3-sys` in your dependencies, Cargo should choose a compatible version automatically. If otherwise unconstrained, Cargo should choose the latest version supported. - SQLite extension loading (including through the new `sqlx-toml` feature) is now `unsafe`. - Added new **non-default** features corresponding to conditionally compiled SQLite APIs: - `sqlite-deserialize` enabling `SqliteConnection::serialize()` and `SqliteConnection::deserialize()` - `sqlite-load-extension` enabling `SqliteConnectOptions::extension()` and `::extension_with_entrypoint()` - `sqlite-unlock-notify` enables internal use of `sqlite3_unlock_notify()` - `SqliteValue` and `SqliteValueRef` changes: - The [`sqlite3_value*` interface](https://www.sqlite.org/c3ref/value_blob.html) reserves the right to be stateful. Without protection, any call could theoretically invalidate values previously returned, leading to dangling pointers. - `SqliteValue` is now `!Sync` and `SqliteValueRef` is `!Send` to prevent data races from concurrent accesses. - Instead, clone or wrap the `SqliteValue` in `Mutex`, or convert the `SqliteValueRef` to an owned value. - `SqliteValue` and any derived `SqliteValueRef`s now internally track if that value has been used to decode a borrowed `&[u8]` or `&str` and errors if it's used to decode any other type. - This is not expected to affect the vast majority of usages, which should only decode a single type per `SqliteValue`/`SqliteValueRef`. - See new docs on `SqliteValue` for details. - \[[#&#8203;3949]]: Postgres: move `PgLTree::from` to `From<Vec<PgLTreeLabel>>` implementation \[\[[@&#8203;JerryQ17](https://github.com/JerryQ17)]] - \[[#&#8203;3957]]: refactor(sqlite): do not borrow bound values, delete lifetime on `SqliteArguments` \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3958]]: refactor(any): Remove lifetime parameter from AnyArguments \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3960]]: refactor(core): Remove lifetime parameter from Arguments trait \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3993]]: Unescape PostgreSQL passfile password \[\[[@&#8203;V02460](https://github.com/V02460)]] - Previously, `.pgpass` file handling did not process backslash-escapes in the password part. Now it does, which may change what password is sent to the server. - \[[#&#8203;4008]]: make `#[derive(sqlx::Type)]` automatically generate `impl PgHasArrayType` by default for newtype structs \[\[[@&#8203;papaj-na-wrotkach](https://github.com/papaj-na-wrotkach)]] - Manual implementations of PgHasArrayType for newtypes will conflict with the generated one. Delete the manual impl or add `#[sqlx(no_pg_array)]` where conflicts occur. - \[[#&#8203;4077]]: breaking: make `offline` optional to allow building without `serde` \[\[[@&#8203;CathalMullan](https://github.com/CathalMullan)]] - \[[#&#8203;4094]]: Bump bit-vec to v0.8 \[\[[@&#8203;zennozenith](https://github.com/zennozenith)]] - \[[#&#8203;4142]]: feat(mysql): add mysql-rsa feature for non-TLS RSA auth \[\[[@&#8203;dertin](https://github.com/dertin)]] - Connections requiring RSA password encryption now need to enable the `mysql-rsa` feature or an error will be generated at runtime. RSA encryption is only used for plaintext (non-TLS) connections. - \[[#&#8203;4255]]: breaking(any+mysql): correctly convert text and blob types to `AnyTypeInfo` \[\[[@&#8203;abonander](https://github.com/abonander)]] ##### Added - \[[#&#8203;3641]]: feat(Postgres): support nested domain types \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3651]]: Add PgBindIter for encoding and use it as the implementation encoding &\[T] \[\[[@&#8203;tylerhawkes](https://github.com/tylerhawkes)]] - \[[#&#8203;3675]]: feat: implement Encode, Decode, Type for `Arc<str>` and `Arc<[u8]>` (and `Rc` equivalents) \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3791]]: Smol+async global executor 1.80 dev \[\[[@&#8203;martin-kolarik](https://github.com/martin-kolarik)]] - Adds `runtime-smol` and `runtime-async-global-executor` features to replace usages of the deprecated `async-std` crate. - \[[#&#8203;3859]]: Add more JsonRawValue encode/decode impls. \[\[[@&#8203;Dirbaio](https://github.com/Dirbaio)]] - \[[#&#8203;3881]]: CLi: made cli-lib modules publicly available for other crates \[\[[@&#8203;silvestrpredko](https://github.com/silvestrpredko)]] - \[[#&#8203;3889]]: Compile-time support for external drivers \[\[[@&#8203;bobozaur](https://github.com/bobozaur)]] - \[[#&#8203;3917]]: feat(sqlx.toml): support SQLite extensions in macros and sqlx-cli \[\[[@&#8203;djarb](https://github.com/djarb)]] - \[[#&#8203;3918]]: Feature: Add exclusion violation error kind \[\[[@&#8203;barskern](https://github.com/barskern)]] - \[[#&#8203;3971]]: Allow single-field named structs to be transparent \[\[[@&#8203;Xiretza](https://github.com/Xiretza)]] - \[[#&#8203;4015]]: feat(sqlite): `no_tx` migration support \[\[[@&#8203;AlexTMjugador](https://github.com/AlexTMjugador)]] - \[[#&#8203;4020]]: Add `Migrator::with_migrations()` constructor \[\[[@&#8203;xb284524239](https://github.com/xb284524239)]] - \[[#&#8203;3846]]: Add the possibility to skip migrations \[\[[@&#8203;Dosenpfand](https://github.com/Dosenpfand)]] - \[[#&#8203;4107]]: Add SQLite extension entrypoint config to `sqlx.toml`, update SQLite extension example \[\[[@&#8203;supleed2](https://github.com/supleed2)]] - \[[#&#8203;4118]]: \[postgres] Display line number in error message \[\[[@&#8203;mousetail](https://github.com/mousetail)]] - \[[#&#8203;4123]]: feat: add `Json::into_inner()` \[\[[@&#8203;chrxn1c](https://github.com/chrxn1c)]] - \[[#&#8203;4153]]: Add on unimplemented diagnostic to `SqlStr` \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;4167]]: add sqlite serialize/deserialize example \[\[[@&#8203;mattrighetti](https://github.com/mattrighetti)]] - \[[#&#8203;4228]]: sqlx-postgres: Make `PgNotification` struct clone \[\[[@&#8203;michaelvanstraten](https://github.com/michaelvanstraten)]] ##### Changed - \[[#&#8203;3525]]: Remove unnecessary boxfutures \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3867]]: sqlx-postgres: Bump etcetera to 0.10.0 \[\[[@&#8203;miniduikboot](https://github.com/miniduikboot)]] - \[[#&#8203;3709]]: chore: replace once_cell `OnceCell`/`Lazy` with std `OnceLock`/`LazyLock` \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - \[[#&#8203;3890]]: feat: Unify `Debug` implementations across `PgRow`, `MySqlRow` and `SqliteRow` \[\[[@&#8203;davidcornu](https://github.com/davidcornu)]] - \[[#&#8203;3911]]: chore: upgrade async-io to v2.4.1 \[\[[@&#8203;zebrapurring](https://github.com/zebrapurring)]] - \[[#&#8203;3938]]: Move `QueryLogger` back \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3956]]: chore(sqlite): Remove unused test of removed git2 feature \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3962]]: Give SQLX_OFFLINE_DIR from environment precedence in macros \[\[[@&#8203;psionic-k](https://github.com/psionic-k)]] - \[[#&#8203;3968]]: chore(ci): Add timeouts to ci jobs \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;4002]]: sqlx-postgres(tests): cleanup 2 unit tests. \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;4022]]: refactor: tweaks after [#&#8203;3791](https://github.com/launchbadge/sqlx/issues/3791) \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;4257]]: Prefer to give real data to `.bind()` in `README.md` \[\[[@&#8203;sobolevn](https://github.com/sobolevn)]] - \[[#&#8203;4042]]: Update to webpki-roots 1 \[\[[@&#8203;tottoto](https://github.com/tottoto)]] - \[[#&#8203;4072]]: chore: update hashlink to v0.11.0 \[\[[@&#8203;anmolitor](https://github.com/anmolitor)]] - \[[#&#8203;4143]]: Bump whoami to v2 \[\[[@&#8203;tisonkun](https://github.com/tisonkun)]] - \[[#&#8203;4161]]: sqlx-sqlite: relax libsqlite3-sys constraint to allow 0.36.x \[\[[@&#8203;darioAnongba](https://github.com/darioAnongba)]] - \[[#&#8203;4173]]: ci: check direct minimal versions \[\[[@&#8203;ricochet](https://github.com/ricochet)]] - Note: reverted in 0.9.0 release but still listed for contributor credit. See end of PR thread for details. - \[[#&#8203;4189]]: Bump flume to 0.12.0 \[\[[@&#8203;opoplawski](https://github.com/opoplawski)]] - \[[#&#8203;4223]]: test(sqlite): add regression test for ORDER BY + LIMIT nullability ([#&#8203;4147](https://github.com/launchbadge/sqlx/issues/4147)) \[\[[@&#8203;barry3406](https://github.com/barry3406)]] - \[[#&#8203;4230]]: chore: Update to cargo_metadata 0.23 \[\[[@&#8203;tottoto](https://github.com/tottoto)]] - \[[#&#8203;4233]]: Change reference to dotenvy \[\[[@&#8203;graemer957](https://github.com/graemer957)]] - \[[#&#8203;4235]]: chore: Update to validator 0.20 \[\[[@&#8203;tottoto](https://github.com/tottoto)]] - \[[#&#8203;4253]]: chore: update example to axum 0.8 \[\[[@&#8203;tottoto](https://github.com/tottoto)]] - Release PR: - Upgraded all Rust-Crypto crates, `rand` - Upgraded `etcetera` to `0.11.0` - Increased max of `libsqlite3-sys` version range to `<0.38.0` ##### Fixed - \[[#&#8203;3840]]: Fix docs.rs build of sqlx-sqlite \[\[[@&#8203;gferon](https://github.com/gferon)]] - \[[#&#8203;3848]]: fix(macros): don't mutate environment variables \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3856]]: fix(macros): slightly improve unsupported type error message \[\[[@&#8203;dyc3](https://github.com/dyc3)]] - \[[#&#8203;3857]]: fix(mysql): validate parameter count for prepared statements \[\[[@&#8203;cvzx](https://github.com/cvzx)]] - \[[#&#8203;3861]]: Fix NoHostnameTlsVerifier for rustls 0.23.24 and above \[\[[@&#8203;elichai](https://github.com/elichai)]] - \[[#&#8203;3863]]: Use unnamed statement in pg when not persistent \[\[[@&#8203;ThomWright](https://github.com/ThomWright)]] - \[[#&#8203;3874]]: Further reduce dependency on `futures` and `futures-util` \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - \[[#&#8203;3886]]: fix: use Executor::fetch in QueryAs::fetch \[\[[@&#8203;bobozaur](https://github.com/bobozaur)]] - \[[#&#8203;3910]]: feat(ok): add correct handling of ok packets in MYSQL implementation \[\[[@&#8203;0xfourzerofour](https://github.com/0xfourzerofour)]] - \[[#&#8203;3914]]: fix: regenerate test certificates \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3915]]: fix: spec_error is used by try_from derive \[\[[@&#8203;saiintbrisson](https://github.com/saiintbrisson)]] - \[[#&#8203;3919]]: fix\[sqlx-postgres]: do a checked_mul to prevent panic'ing \[\[[@&#8203;nhatcher-frequenz](https://github.com/nhatcher-frequenz)]] - \[[#&#8203;3923]]: sqlx-mysql: Fix bug in cleanup test db's. \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3950]]: chore: Fix warnings for custom postgres\_## cfg flags \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3952]]: `Pool.close`: close all connections before returning \[\[[@&#8203;jpmelos](https://github.com/jpmelos)]] - \[[#&#8203;3975]]: fix documentation for rustls native root certificates \[\[[@&#8203;2ndDerivative](https://github.com/2ndDerivative)]] - \[[#&#8203;3977]]: refactor(ci): Use separate job for postgres ssl auth tests \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3980]]: Correctly `ROLLBACK` transaction when dropped during `BEGIN`. \[\[[@&#8203;kevincox](https://github.com/kevincox)]] - \[[#&#8203;3981]]: SQLite: fix transaction level accounting with bad custom command. \[\[[@&#8203;kevincox](https://github.com/kevincox)]] - \[[#&#8203;3986]]: chore(core): Fix docstring for Query::try_bind \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3987]]: chore(deps): Resolve deprecation warning for chrono Date and ymd methods \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3988]]: refactor(sqlite): Resolve duplicate test target warning for macros.rs \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3989]]: chore(deps): Set default-features=false on sqlx in workspace.dependencies \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3991]]: fix(sqlite): regression when decoding nulls \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;4006]]: PostgreSQL SASL – run SHA256 in a blocking executor \[\[[@&#8203;ThomWright](https://github.com/ThomWright)]] - \[[#&#8203;4007]]: fix(compose): use OS-assigned ports for all conatiners \[\[[@&#8203;papaj-na-wrotkach](https://github.com/papaj-na-wrotkach)]] - \[[#&#8203;4009]]: Drop cached db connections in macros upon hitting an error \[\[[@&#8203;swlynch99](https://github.com/swlynch99)]] - \[[#&#8203;4024]]: fix(sqlite) Migrate revert with no-transaction \[\[[@&#8203;Dosenpfand](https://github.com/Dosenpfand)]] - \[[#&#8203;4027]]: native tls handshake: build TlsConnector in blocking threadpool \[\[[@&#8203;daviduebler](https://github.com/daviduebler)]] - \[[#&#8203;4053]]: fix(macros): smarter `.env` loading, caching, and invalidation \[\[[@&#8203;abonander](https://github.com/abonander)]] - Additional credit to \[\[[@&#8203;AlexTMjugador](https://github.com/AlexTMjugador)]] (\[[#&#8203;4018]]) and \[\[[@&#8203;Diggsey](https://github.com/Diggsey)]] (\[[#&#8203;4039]]) for their proposed solutions which served as a useful comparison. - \[[#&#8203;4068]]: Fix typo in migration example from 'uesrs' to 'users' \[\[[@&#8203;squidpickles](https://github.com/squidpickles)]] - \[[#&#8203;4069]]: fix some spelling issues \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;4086]]: fix(mysql): Work around for Issue [#&#8203;2206](https://github.com/launchbadge/sqlx/issues/2206) (ColumnNotFound error when querying) \[\[[@&#8203;duelafn](https://github.com/duelafn)]] - \[[#&#8203;4088]]: (Fix) Handle nullability of SQLite rowid alias columns \[\[[@&#8203;Lege19](https://github.com/Lege19)]] - \[[#&#8203;4100]]: postgres: update pgpass path on windows \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;4134]]: fix CI: replace removed macOS runner, deprecated use of `Command::cargo_bin()` \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;4136]]: Ensure Deterministic Migration Order \[\[[@&#8203;aoengin](https://github.com/aoengin)]] - \[[#&#8203;4158]]: Fix panic in JSONB decoder on invalid version byte \[\[[@&#8203;jrey8343](https://github.com/jrey8343)]] - \[[#&#8203;4165]]: sqlx-postgres: fix correct operator precedence in byte length check \[\[[@&#8203;cuiweixie](https://github.com/cuiweixie)]] - \[[#&#8203;4171]]: fix(postgres): remove home crate in favor of std::env::home_dir \[\[[@&#8203;ricochet](https://github.com/ricochet)]] - \[[#&#8203;4172]]: fix(sqlx-cli): bump openssl minimum to 0.10.46 \[\[[@&#8203;ricochet](https://github.com/ricochet)]] - \[[#&#8203;4176]]: fix(mysql): return error instead of panic on truncated OK packet \[\[[@&#8203;cvzx](https://github.com/cvzx)]] - \[[#&#8203;4199]]: fix(postgres): make advisory lock cancel safe \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;4201]]: Fix SCRAM password `SASLprep` \[\[[@&#8203;var4yn](https://github.com/var4yn)]] - \[[#&#8203;4202]]: fix: replace from_utf8_unchecked with from_utf8_lossy in SqliteError \[\[[@&#8203;joaquinhuigomez](https://github.com/joaquinhuigomez)]] - \[[#&#8203;4203]]: fix: use sqlite3_value_text for REGEXP to match SQLite coercion \[\[[@&#8203;joaquinhuigomez](https://github.com/joaquinhuigomez)]] - \[[#&#8203;4219]]: sqlite: lossily coerce invalid UTF-8 in custom collation callback \[\[[@&#8203;joaquinhuigomez](https://github.com/joaquinhuigomez)]] - \[[#&#8203;4221]]: fix: replace `from_utf8_unchecked` with `from_utf8` in SQLite column name handling \[\[[@&#8203;barry3406](https://github.com/barry3406)]] - \[[#&#8203;4226]]: fix(postgres): use non-prepared statements for metadata queries \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;4227]]: fix(macros-core): update unstable proc_macro APIs for recent nightly \[\[[@&#8203;barry3406](https://github.com/barry3406)]] - \[[#&#8203;4234]]: fix: Use correct path in error when failing to create tmp dir in prepare \[\[[@&#8203;Miesvanderlippe](https://github.com/Miesvanderlippe)]] - \[[#&#8203;4245]]: fix(mysql): repair caching_sha2_password fast-auth path \[\[[@&#8203;altmannmarcelo](https://github.com/altmannmarcelo)]] - \[[#&#8203;4251]]: fix(tls): potential deadlock in `StdSocket::poll_ready()` \[\[[@&#8203;abonander](https://github.com/abonander)]] [seaorm-2600]: https://github.com/SeaQL/sea-orm/issues/2600 [feature unification]: https://doc.rust-lang.org/cargo/reference/features.html#feature-unification [preferred-crates]: examples/postgres/preferred-crates [man-cargo-install]: https://doc.rust-lang.org/cargo/commands/cargo-install.html#dealing-with-the-lockfile [#&#8203;3821]: https://github.com/launchbadge/sqlx/pull/3821 [#&#8203;3383]: https://github.com/launchbadge/sqlx/pull/3383 [#&#8203;3486]: https://github.com/launchbadge/sqlx/pull/3486 [#&#8203;3495]: https://github.com/launchbadge/sqlx/pull/3495 [#&#8203;3525]: https://github.com/launchbadge/sqlx/pull/3525 [#&#8203;3526]: https://github.com/launchbadge/sqlx/pull/3526 [#&#8203;3541]: https://github.com/launchbadge/sqlx/pull/3541 [#&#8203;3613]: https://github.com/launchbadge/sqlx/pull/3613 [#&#8203;3641]: https://github.com/launchbadge/sqlx/pull/3641 [#&#8203;3651]: https://github.com/launchbadge/sqlx/pull/3651 [#&#8203;3670]: https://github.com/launchbadge/sqlx/pull/3670 [#&#8203;3674]: https://github.com/launchbadge/sqlx/pull/3674 [#&#8203;3675]: https://github.com/launchbadge/sqlx/pull/3675 [#&#8203;3709]: https://github.com/launchbadge/sqlx/pull/3709 [#&#8203;3723]: https://github.com/launchbadge/sqlx/pull/3723 [#&#8203;3791]: https://github.com/launchbadge/sqlx/pull/3791 [#&#8203;3800]: https://github.com/launchbadge/sqlx/pull/3800 [#&#8203;3821]: https://github.com/launchbadge/sqlx/pull/3821 [#&#8203;3840]: https://github.com/launchbadge/sqlx/pull/3840 [#&#8203;3848]: https://github.com/launchbadge/sqlx/pull/3848 [#&#8203;3856]: https://github.com/launchbadge/sqlx/pull/3856 [#&#8203;3857]: https://github.com/launchbadge/sqlx/pull/3857 [#&#8203;3859]: https://github.com/launchbadge/sqlx/pull/3859 [#&#8203;3861]: https://github.com/launchbadge/sqlx/pull/3861 [#&#8203;3863]: https://github.com/launchbadge/sqlx/pull/3863 [#&#8203;3867]: https://github.com/launchbadge/sqlx/pull/3867 [#&#8203;3874]: https://github.com/launchbadge/sqlx/pull/3874 [#&#8203;3881]: https://github.com/launchbadge/sqlx/pull/3881 [#&#8203;3886]: https://github.com/launchbadge/sqlx/pull/3886 [#&#8203;3889]: https://github.com/launchbadge/sqlx/pull/3889 [#&#8203;3890]: https://github.com/launchbadge/sqlx/pull/3890 [#&#8203;3910]: https://github.com/launchbadge/sqlx/pull/3910 [#&#8203;3911]: https://github.com/launchbadge/sqlx/pull/3911 [#&#8203;3914]: https://github.com/launchbadge/sqlx/pull/3914 [#&#8203;3915]: https://github.com/launchbadge/sqlx/pull/3915 [#&#8203;3917]: https://github.com/launchbadge/sqlx/pull/3917 [#&#8203;3918]: https://github.com/launchbadge/sqlx/pull/3918 [#&#8203;3919]: https://github.com/launchbadge/sqlx/pull/3919 [#&#8203;3923]: https://github.com/launchbadge/sqlx/pull/3923 [#&#8203;3924]: https://github.com/launchbadge/sqlx/pull/3924 [#&#8203;3928]: https://github.com/launchbadge/sqlx/pull/3928 [#&#8203;3938]: https://github.com/launchbadge/sqlx/pull/3938 [#&#8203;3949]: https://github.com/launchbadge/sqlx/pull/3949 [#&#8203;3950]: https://github.com/launchbadge/sqlx/pull/3950 [#&#8203;3952]: https://github.com/launchbadge/sqlx/pull/3952 [#&#8203;3956]: https://github.com/launchbadge/sqlx/pull/3956 [#&#8203;3957]: https://github.com/launchbadge/sqlx/pull/3957 [#&#8203;3958]: https://github.com/launchbadge/sqlx/pull/3958 [#&#8203;3960]: https://github.com/launchbadge/sqlx/pull/3960 [#&#8203;3962]: https://github.com/launchbadge/sqlx/pull/3962 [#&#8203;3968]: https://github.com/launchbadge/sqlx/pull/3968 [#&#8203;3971]: https://github.com/launchbadge/sqlx/pull/3971 [#&#8203;3975]: https://github.com/launchbadge/sqlx/pull/3975 [#&#8203;3977]: https://github.com/launchbadge/sqlx/pull/3977 [#&#8203;3980]: https://github.com/launchbadge/sqlx/pull/3980 [#&#8203;3981]: https://github.com/launchbadge/sqlx/pull/3981 [#&#8203;3986]: https://github.com/launchbadge/sqlx/pull/3986 [#&#8203;3987]: https://github.com/launchbadge/sqlx/pull/3987 [#&#8203;3988]: https://github.com/launchbadge/sqlx/pull/3988 [#&#8203;3989]: https://github.com/launchbadge/sqlx/pull/3989 [#&#8203;3991]: https://github.com/launchbadge/sqlx/pull/3991 [#&#8203;4002]: https://github.com/launchbadge/sqlx/pull/4002 [#&#8203;4006]: https://github.com/launchbadge/sqlx/pull/4006 [#&#8203;4007]: https://github.com/launchbadge/sqlx/pull/4007 [#&#8203;4008]: https://github.com/launchbadge/sqlx/pull/4008 [#&#8203;4009]: https://github.com/launchbadge/sqlx/pull/4009 [#&#8203;4015]: https://github.com/launchbadge/sqlx/pull/4015 [#&#8203;4018]: https://github.com/launchbadge/sqlx/pull/4018 [#&#8203;4020]: https://github.com/launchbadge/sqlx/pull/4020 [#&#8203;4022]: https://github.com/launchbadge/sqlx/pull/4022 [#&#8203;4024]: https://github.com/launchbadge/sqlx/pull/4024 [#&#8203;4027]: https://github.com/launchbadge/sqlx/pull/4027 [#&#8203;4039]: https://github.com/launchbadge/sqlx/pull/4039 [#&#8203;4053]: https://github.com/launchbadge/sqlx/pull/4053 [#&#8203;3846]: https://github.com/launchbadge/sqlx/pull/3846 [#&#8203;3993]: https://github.com/launchbadge/sqlx/pull/3993 [#&#8203;4042]: https://github.com/launchbadge/sqlx/pull/4042 [#&#8203;4068]: https://github.com/launchbadge/sqlx/pull/4068 [#&#8203;4069]: https://github.com/launchbadge/sqlx/pull/4069 [#&#8203;4072]: https://github.com/launchbadge/sqlx/pull/4072 [#&#8203;4077]: https://github.com/launchbadge/sqlx/pull/4077 [#&#8203;4086]: https://github.com/launchbadge/sqlx/pull/4086 [#&#8203;4088]: https://github.com/launchbadge/sqlx/pull/4088 [#&#8203;4094]: https://github.com/launchbadge/sqlx/pull/4094 [#&#8203;4100]: https://github.com/launchbadge/sqlx/pull/4100 [#&#8203;4107]: https://github.com/launchbadge/sqlx/pull/4107 [#&#8203;4118]: https://github.com/launchbadge/sqlx/pull/4118 [#&#8203;4123]: https://github.com/launchbadge/sqlx/pull/4123 [#&#8203;4134]: https://github.com/launchbadge/sqlx/pull/4134 [#&#8203;4136]: https://github.com/launchbadge/sqlx/pull/4136 [#&#8203;4142]: https://github.com/launchbadge/sqlx/pull/4142 [#&#8203;4143]: https://github.com/launchbadge/sqlx/pull/4143 [#&#8203;4153]: https://github.com/launchbadge/sqlx/pull/4153 [#&#8203;4158]: https://github.com/launchbadge/sqlx/pull/4158 [#&#8203;4161]: https://github.com/launchbadge/sqlx/pull/4161 [#&#8203;4165]: https://github.com/launchbadge/sqlx/pull/4165 [#&#8203;4167]: https://github.com/launchbadge/sqlx/pull/4167 [#&#8203;4171]: https://github.com/launchbadge/sqlx/pull/4171 [#&#8203;4172]: https://github.com/launchbadge/sqlx/pull/4172 [#&#8203;4173]: https://github.com/launchbadge/sqlx/pull/4173 [#&#8203;4176]: https://github.com/launchbadge/sqlx/pull/4176 [#&#8203;4189]: https://github.com/launchbadge/sqlx/pull/4189 [#&#8203;4199]: https://github.com/launchbadge/sqlx/pull/4199 [#&#8203;4201]: https://github.com/launchbadge/sqlx/pull/4201 [#&#8203;4202]: https://github.com/launchbadge/sqlx/pull/4202 [#&#8203;4203]: https://github.com/launchbadge/sqlx/pull/4203 [#&#8203;4219]: https://github.com/launchbadge/sqlx/pull/4219 [#&#8203;4221]: https://github.com/launchbadge/sqlx/pull/4221 [#&#8203;4223]: https://github.com/launchbadge/sqlx/pull/4223 [#&#8203;4226]: https://github.com/launchbadge/sqlx/pull/4226 [#&#8203;4227]: https://github.com/launchbadge/sqlx/pull/4227 [#&#8203;4228]: https://github.com/launchbadge/sqlx/pull/4228 [#&#8203;4230]: https://github.com/launchbadge/sqlx/pull/4230 [#&#8203;4233]: https://github.com/launchbadge/sqlx/pull/4233 [#&#8203;4234]: https://github.com/launchbadge/sqlx/pull/4234 [#&#8203;4235]: https://github.com/launchbadge/sqlx/pull/4235 [#&#8203;4245]: https://github.com/launchbadge/sqlx/pull/4245 [#&#8203;4251]: https://github.com/launchbadge/sqlx/pull/4251 [#&#8203;4253]: https://github.com/launchbadge/sqlx/pull/4253 [#&#8203;4255]: https://github.com/launchbadge/sqlx/pull/4255 [#&#8203;4257]: https://github.com/launchbadge/sqlx/pull/4257 </details> <details> <summary>dtolnay/thiserror (thiserror)</summary> ### [`v2.0.21`](https://github.com/dtolnay/thiserror/releases/tag/2.0.21) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.20...2.0.21) - Fix parsing of generic unit variants in display expressions ([#&#8203;459](https://github.com/dtolnay/thiserror/issues/459)) ### [`v2.0.20`](https://github.com/dtolnay/thiserror/releases/tag/2.0.20) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.19...2.0.20) - Suppress redundant_field_names clippy lint in generated code ([#&#8203;454](https://github.com/dtolnay/thiserror/issues/454)) ### [`v2.0.19`](https://github.com/dtolnay/thiserror/releases/tag/2.0.19) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.18...2.0.19) - Update to syn 3 ### [`v2.0.18`](https://github.com/dtolnay/thiserror/releases/tag/2.0.18) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.17...2.0.18) - Make compatible with project-level `needless_lifetimes = "forbid"` ([#&#8203;443](https://github.com/dtolnay/thiserror/issues/443), thanks [@&#8203;LucaCappelletti94](https://github.com/LucaCappelletti94)) </details> <details> <summary>tokio-rs/tokio (tokio)</summary> ### [`v1.54.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.54.1): Tokio v1.54.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.54.0...tokio-1.54.1) ##### 1.54.1 (October 21st, 2026) ##### Fixed - time: revert "remove the runtime handle from timers" ([#&#8203;8692]) [#&#8203;8692]: https://github.com/tokio-rs/tokio/pull/8692 ### [`v1.54.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.54.0): Tokio v1.54.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.53.3...tokio-1.54.0) ##### 1.54.0 (October 19th, 2026) The 1.54.0 release includes all changes up to 1.53.3. The MSRV is increased to 1.85. ([#&#8203;8514]) ##### Added - fs: add `File::set_times`, `File::set_modified`, and `fs::FileTimes` ([#&#8203;8504]) - net: implement `Default` for `named_pipe::{ClientOptions, ServerOptions}` ([#&#8203;8378]) - runtime: add `Builder::max_io_events_per_busy_tick` ([#&#8203;8410]) - runtime: stabilize `tokio::runtime::worker_index()` ([#&#8203;8431]) - sync: add `SemaphorePermit::semaphore()` ([#&#8203;8482]) - sync: add `blocking_acquire` methods to `Semaphore` ([#&#8203;8269]) - sync: add `watch::Receiver::is_closed` ([#&#8203;8481]) - wasm: support JSPI for Emscripten target ([#&#8203;8285], [#&#8203;8627]) - wasm: support the `wasm32-unknown-emscripten` target ([#&#8203;8281], [#&#8203;8422], [#&#8203;8528], [#&#8203;8628]) ##### Changed - fs: reject zero in `File::set_max_buf_size` ([#&#8203;8449]) - io: make `copy_buf` cooperative ([#&#8203;8459]) - io: panic when `BufReader` or `BufStream` is created with zero capacity ([#&#8203;8494]) - io: panic when in-memory pipe is created with zero capacity ([#&#8203;8397]) - io: reject zero buffer size in `copy_bidirectional_with_sizes` ([#&#8203;8454]) - io: support vectored writes in `Sink` ([#&#8203;8663]) - net: start `UnixStream::pair` and `UnixDatagram::pair` sockets as writable ([#&#8203;8444]) - net: start accepted sockets as readable and writable ([#&#8203;8435]) - net: support `UCred` on Fuchsia ([#&#8203;8257]) - process: use `mio::unix::pipe` for Unix child stdio ([#&#8203;8603]) - runtime: cache-pad the shared injection queue and idle state ([#&#8203;8622]) - runtime: decide auto-boxing of spawned futures at monomorphization time ([#&#8203;8414]) - runtime: make `enable_io` available whenever `rt` is enabled ([#&#8203;8387]) - runtime: move `block_in_place` setup into a non-generic function ([#&#8203;8315]) - runtime: move the multi-thread inject queue to its own mutex ([#&#8203;8382]) - runtime: panic when `max_io_events_per_tick` is zero ([#&#8203;8476]) - runtime: suggest `.await` in nested `block_on` panic message ([#&#8203;8501]) - sync: avoid atomic reader count in broadcast slots ([#&#8203;8357]) - sync: use acquire/release orderings in `Notify` ([#&#8203;8325]) - time: remove the runtime handle from timers ([#&#8203;8458]) ##### Fixed - fs: restore `File` internal state when op fails ([#&#8203;8291]) - io: complete zero-length memory stream operations immediately ([#&#8203;8323]) - io: flush the writer when the reader stalls in `copy_buf` ([#&#8203;8424]) - io: keep the shutdown bit when clearing readiness ([#&#8203;8435]) - io: preserve the full `ScheduledIo` tick in readiness events ([#&#8203;8331]) - io: read lines as bytes so a partial line survives an I/O error ([#&#8203;8400]) - io: retry on `ErrorKind::Interrupted` in more I/O operations ([#&#8203;8417], [#&#8203;8432], [#&#8203;8448], [#&#8203;8453], [#&#8203;8455], [#&#8203;8460]) - io: use `spawn_mandatory_blocking` for stdout and stderr ([#&#8203;8506]) - io: wait for pending operations before `BufReader` seeks ([#&#8203;8599]) - net: close `CreateFileW` handle on `SetNamedPipeHandleState` failure ([#&#8203;8418]) - net: fix peer credentials on NetBSD ([#&#8203;8589]) - net: saturate `TcpSocket` and `UnixSocket` listen backlog ([#&#8203;8511]) - net: treat `ENOTCONN` as success in `UnixStream::shutdown` ([#&#8203;8526]) - runtime: allow building with `--all-features` without `tokio_unstable` ([#&#8203;8401]) - runtime: avoid overflow in `shutdown_timeout()` ([#&#8203;8497]) - runtime: fix `spawn_blocking` hang when only scheduler workers exist ([#&#8203;8408]) - runtime: fix misleading signal driver panic message ([#&#8203;8419]) - sync: preserve FIFO lock order when coop budget is exhausted ([#&#8203;8371]) - sync: use `usize` for permit count in `SemaphorePermit` ([#&#8203;8405]) - time: avoid interval deadline overflow ([#&#8203;8385]) - time: handle wrapped top-level timer-wheel slots ([#&#8203;8334]) ##### Unstable - fs: fall back when `io_uring` has no IO driver ([#&#8203;8165]) - metrics: cap log histogram precision ([#&#8203;8496]) - runtime: add an opt-in sharded `spawn_blocking` queue ([#&#8203;8337]) - runtime: expose schedule latency in task hooks ([#&#8203;8282]) - taskdump: fix idle bookkeeping when a task dump wakes parked workers ([#&#8203;8372]) - taskdump: skip non-idle tasks during taskdumps ([#&#8203;8568]) ##### Documented - docs: fix stray braces and broken links in rustdoc ([#&#8203;8605]) - fs: document cancellation behavior of `tokio::fs` ([#&#8203;8265]) - net: add Safety docs for named pipe `from_raw_handle` ([#&#8203;8378]) - net: document that `TcpStream::connect` returns only the last error ([#&#8203;8421]) - runtime: add error documentation for `runtime::Builder` ([#&#8203;8297]) - runtime: link `available_parallelism` in worker count docs ([#&#8203;8625]) - sync: clarify panic behavior of `broadcast::channel()` ([#&#8203;8420]) - sync: fix typo in `Semaphore` documentation ([#&#8203;8521]) [#&#8203;8165]: https://github.com/tokio-rs/tokio/pull/8165 [#&#8203;8257]: https://github.com/tokio-rs/tokio/pull/8257 [#&#8203;8265]: https://github.com/tokio-rs/tokio/pull/8265 [#&#8203;8269]: https://github.com/tokio-rs/tokio/pull/8269 [#&#8203;8281]: https://github.com/tokio-rs/tokio/pull/8281 [#&#8203;8282]: https://github.com/tokio-rs/tokio/pull/8282 [#&#8203;8285]: https://github.com/tokio-rs/tokio/pull/8285 [#&#8203;8291]: https://github.com/tokio-rs/tokio/pull/8291 [#&#8203;8297]: https://github.com/tokio-rs/tokio/pull/8297 [#&#8203;8315]: https://github.com/tokio-rs/tokio/pull/8315 [#&#8203;8323]: https://github.com/tokio-rs/tokio/pull/8323 [#&#8203;8325]: https://github.com/tokio-rs/tokio/pull/8325 [#&#8203;8331]: https://github.com/tokio-rs/tokio/pull/8331 [#&#8203;8334]: https://github.com/tokio-rs/tokio/pull/8334 [#&#8203;8337]: https://github.com/tokio-rs/tokio/pull/8337 [#&#8203;8357]: https://github.com/tokio-rs/tokio/pull/8357 [#&#8203;8371]: https://github.com/tokio-rs/tokio/pull/8371 [#&#8203;8372]: https://github.com/tokio-rs/tokio/pull/8372 [#&#8203;8378]: https://github.com/tokio-rs/tokio/pull/8378 [#&#8203;8382]: https://github.com/tokio-rs/tokio/pull/8382 [#&#8203;8385]: https://github.com/tokio-rs/tokio/pull/8385 [#&#8203;8387]: https://github.com/tokio-rs/tokio/pull/8387 [#&#8203;8397]: https://github.com/tokio-rs/tokio/pull/8397 [#&#8203;8400]: https://github.com/tokio-rs/tokio/pull/8400 [#&#8203;8401]: https://github.com/tokio-rs/tokio/pull/8401 [#&#8203;8405]: https://github.com/tokio-rs/tokio/pull/8405 [#&#8203;8408]: https://github.com/tokio-rs/tokio/pull/8408 [#&#8203;8410]: https://github.com/tokio-rs/tokio/pull/8410 [#&#8203;8414]: https://github.com/tokio-rs/tokio/pull/8414 [#&#8203;8417]: https://github.com/tokio-rs/tokio/pull/8417 [#&#8203;8418]: https://github.com/tokio-rs/tokio/pull/8418 [#&#8203;8419]: https://github.com/tokio-rs/tokio/pull/8419 [#&#8203;8420]: https://github.com/tokio-rs/tokio/pull/8420 [#&#8203;8421]: https://github.com/tokio-rs/tokio/pull/8421 [#&#8203;8422]: https://github.com/tokio-rs/tokio/pull/8422 [#&#8203;8424]: https://github.com/tokio-rs/tokio/pull/8424 [#&#8203;8431]: https://github.com/tokio-rs/tokio/pull/8431 [#&#8203;8432]: https://github.com/tokio-rs/tokio/pull/8432 [#&#8203;8435]: https://github.com/tokio-rs/tokio/pull/8435 [#&#8203;8444]: https://github.com/tokio-rs/tokio/pull/8444 [#&#8203;8448]: https://github.com/tokio-rs/tokio/pull/8448 [#&#8203;8449]: https://github.com/tokio-rs/tokio/pull/8449 [#&#8203;8453]: https://github.com/tokio-rs/tokio/pull/8453 [#&#8203;8454]: https://github.com/tokio-rs/tokio/pull/8454 [#&#8203;8455]: https://github.com/tokio-rs/tokio/pull/8455 [#&#8203;8458]: https://github.com/tokio-rs/tokio/pull/8458 [#&#8203;8459]: https://github.com/tokio-rs/tokio/pull/8459 [#&#8203;8460]: https://github.com/tokio-rs/tokio/pull/8460 [#&#8203;8476]: https://github.com/tokio-rs/tokio/pull/8476 [#&#8203;8481]: https://github.com/tokio-rs/tokio/pull/8481 [#&#8203;8482]: https://github.com/tokio-rs/tokio/pull/8482 [#&#8203;8494]: https://github.com/tokio-rs/tokio/pull/8494 [#&#8203;8496]: https://github.com/tokio-rs/tokio/pull/8496 [#&#8203;8497]: https://github.com/tokio-rs/tokio/pull/8497 [#&#8203;8501]: https://github.com/tokio-rs/tokio/pull/8501 [#&#8203;8504]: https://github.com/tokio-rs/tokio/pull/8504 [#&#8203;8506]: https://github.com/tokio-rs/tokio/pull/8506 [#&#8203;8511]: https://github.com/tokio-rs/tokio/pull/8511 [#&#8203;8514]: https://github.com/tokio-rs/tokio/pull/8514 [#&#8203;8521]: https://github.com/tokio-rs/tokio/pull/8521 [#&#8203;8526]: https://github.com/tokio-rs/tokio/pull/8526 [#&#8203;8528]: https://github.com/tokio-rs/tokio/pull/8528 [#&#8203;8568]: https://github.com/tokio-rs/tokio/pull/8568 [#&#8203;8589]: https://github.com/tokio-rs/tokio/pull/8589 [#&#8203;8599]: https://github.com/tokio-rs/tokio/pull/8599 [#&#8203;8603]: https://github.com/tokio-rs/tokio/pull/8603 [#&#8203;8605]: https://github.com/tokio-rs/tokio/pull/8605 [#&#8203;8622]: https://github.com/tokio-rs/tokio/pull/8622 [#&#8203;8625]: https://github.com/tokio-rs/tokio/pull/8625 [#&#8203;8627]: https://github.com/tokio-rs/tokio/pull/8627 [#&#8203;8628]: https://github.com/tokio-rs/tokio/pull/8628 [#&#8203;8663]: https://github.com/tokio-rs/tokio/pull/8663 ### [`v1.53.3`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.53.3): Tokio v1.53.3 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.53.2...tokio-1.53.3) ##### 1.53.3 (October 13th, 2026) ##### Added - io: add `AsyncFd::register` and `AsyncFd::register_with_interest` ([#&#8203;8587]) ##### Changed - io: deprecate `AsyncFd::{new, with_interest, try_new, try_with_interest}` ([#&#8203;8587]) ##### Fixed - io: wake and drop `DuplexStream` wakers outside the lock ([#&#8203;8618]) - macros: avoid `unreachable_code` in `join!` and `try_join!` for `Infallible` ([#&#8203;8518]) - runtime: fix paused time auto-advancing when I/O wakes a task on `current_thread` ([#&#8203;8595]) - sync: wake waiters outside the lock when closing a semaphore ([#&#8203;8529]) - test: fix several flaky tests ([#&#8203;8196], [#&#8203;8427], [#&#8203;8609]) ##### Fixed (unstable) - rt: keep `io_uring` op alive when submission fails after push ([#&#8203;8185]) [#&#8203;8185]: https://github.com/tokio-rs/tokio/pull/8185 [#&#8203;8196]: https://github.com/tokio-rs/tokio/pull/8196 [#&#8203;8427]: https://github.com/tokio-rs/tokio/pull/8427 [#&#8203;8518]: https://github.com/tokio-rs/tokio/pull/8518 [#&#8203;8529]: https://github.com/tokio-rs/tokio/pull/8529 [#&#8203;8587]: https://github.com/tokio-rs/tokio/pull/8587 [#&#8203;8595]: https://github.com/tokio-rs/tokio/pull/8595 [#&#8203;8609]: https://github.com/tokio-rs/tokio/pull/8609 [#&#8203;8618]: https://github.com/tokio-rs/tokio/pull/8618 ### [`v1.53.2`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.53.2): Tokio v1.53.2 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.53.1...tokio-1.53.2) ##### 1.53.2 (October 3rd, 2026) ##### Fixed - fs: handle integer overflow in buffered relative seek ([#&#8203;8574]) - io: revert "always cleanup `AsyncFd` registration list on deregister" ([#&#8203;8540]) - process: unregister Windows wait before closing child handle ([#&#8203;8564]) - rt: drop blocking pool mutex before shutting down rejected task ([#&#8203;8562]) - sync: fix mpsc index wraparound in block reclamation ([#&#8203;8546]) - sync: forget mpsc `Permit` before sending value ([#&#8203;8560]) - sync: validate `MAX_PERMITS` in `Semaphore::acquire` ([#&#8203;8548]) - sync: wake broadcast `Sender::closed` outside mutex ([#&#8203;8558]) - task: drop replaced waker outside lock in `JoinSet` ([#&#8203;8554]) - time: drop timer lock before dropping waker in `clear_entry` ([#&#8203;8552]) - time: expire timers directly on shutdown without rotating wheel ([#&#8203;8570]) ##### Fixed (unstable) - fs: clamp `io_uring` read length to `u32::MAX` ([#&#8203;8572]) - rt: ignore `current_thread` task dumps from other runtimes ([#&#8203;8544]) - rt: preserve `io_uring` context if a completion waker panics ([#&#8203;8566]) - sync: fix semaphore use-after-free and permit leak on tracing panic ([#&#8203;8542]) - taskdump: restore deferred leaf wakes during capture ([#&#8203;8445]) - time: drop stored waker when cancelling alt timer entry ([#&#8203;8550]) [#&#8203;8445]: https://github.com/tokio-rs/tokio/pull/8445 [#&#8203;8572]: https://github.com/tokio-rs/tokio/pull/8572 [#&#8203;8540]: https://github.com/tokio-rs/tokio/pull/8540 [#&#8203;8542]: https://github.com/tokio-rs/tokio/pull/8542 [#&#8203;8544]: https://github.com/tokio-rs/tokio/pull/8544 [#&#8203;8546]: https://github.com/tokio-rs/tokio/pull/8546 [#&#8203;8548]: https://github.com/tokio-rs/tokio/pull/8548 [#&#8203;8550]: https://github.com/tokio-rs/tokio/pull/8550 [#&#8203;8552]: https://github.com/tokio-rs/tokio/pull/8552 [#&#8203;8554]: https://github.com/tokio-rs/tokio/pull/8554 [#&#8203;8558]: https://github.com/tokio-rs/tokio/pull/8558 [#&#8203;8560]: https://github.com/tokio-rs/tokio/pull/8560 [#&#8203;8562]: https://github.com/tokio-rs/tokio/pull/8562 [#&#8203;8564]: https://github.com/tokio-rs/tokio/pull/8564 [#&#8203;8566]: https://github.com/tokio-rs/tokio/pull/8566 [#&#8203;8570]: https://github.com/tokio-rs/tokio/pull/8570 [#&#8203;8574]: https://github.com/tokio-rs/tokio/pull/8574 ### [`v1.53.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.53.1): Tokio v1.53.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.53.0...tokio-1.53.1) ##### 1.53.1 (July 20th, 2026) ##### Fixed - signal: restore MSRV by removing `OnceLock::wait` from the Windows handler ([#&#8203;8300]) ##### Fixed (unstable) - time: fix alt timer cancellation and insertion race ([#&#8203;8252]) ##### Documented - runtime: remove dead link definition in Runtime::block_on ([#&#8203;8301]) [#&#8203;8252]: https://github.com/tokio-rs/tokio/pull/8252 [#&#8203;8300]: https://github.com/tokio-rs/tokio/pull/8300 [#&#8203;8301]: https://github.com/tokio-rs/tokio/pull/8301 ### [`v1.53.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.53.0): Tokio v1.53.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.52.4...tokio-1.53.0) ##### 1.53.0 (July 17th, 2026) ##### Added - fs: implement `From<OwnedFd>` and `From<OwnedHandle>` for `File` ([#&#8203;8266]) - metrics: add task schedule latency metric ([#&#8203;7986]) - net: add `SocketAddr` methods to Unix sockets ([#&#8203;8144]) ##### Changed - io: add `#[inline]` to IO trait impls for in-memory types ([#&#8203;8242]) - net: implement UCred::pid on FreeBSD ([#&#8203;8086]) - net: support Nuttx target os ([#&#8203;8259]) - signal: refactor global variables on Windows ([#&#8203;8231]) - sync: `mpsc::{Receiver,UnboundedReceiver}` now drops waker on drop, even if there are still senders ([#&#8203;8095]) - taskdump: support taskdumps on s390x ([#&#8203;8192]) - time: add `#[track_caller]` to `timeout_at()` ([#&#8203;8077]) - time: consolidate mutex locks on spurious poll ([#&#8203;8124]) - time: defer waker clone on spurious poll ([#&#8203;8107]) - time: move lazy-registration state into `Sleep` ([#&#8203;8132]) - tracing: remove unnecessary span clone ([#&#8203;8126]) ##### Fixed - io: do not treat zero-length reads as EOF in `Chain` ([#&#8203;8251]) - net: use getpeereid for QNX peer credentials ([#&#8203;8270]) - runtime: avoid illegal state in `FastRand` ([#&#8203;8078]) - sync: wake mpsc receiver when a queued `reserve[_many]` returns permits ([#&#8203;8260]) - taskdump: skip double wake on `Trace::capture`/`Trace::trace_with` ([#&#8203;8043]) - time: avoid stack overflow in runtime constructor ([#&#8203;8093]) - time (alt timer): ensure timers stay in the same runtime after `.reset()` ([#&#8203;8169]) ##### IO uring (unstable) - fs: use io-uring for `fs::try_exists` ([#&#8203;8080]) - fs: use io-uring for renaming files ([#&#8203;7800]) - rt: flush io-uring CQE in case of CQE overflow ([#&#8203;8277]) ##### Documented - docs: clarify cancel safety wording ([#&#8203;8181]) - fs: clarify `create_dir_all` succeeds if path exists ([#&#8203;8149]) - io: add warning about stdout reordering with multiple handles ([#&#8203;8276]) - net: document pipe `try_read*`/`try_write*` readiness behavior ([#&#8203;8032]) - runtime: document interaction with fork() ([#&#8203;8202]) - sync: clarify broadcast lagging semantics ([#&#8203;8239]) - sync: document memory ordering guarantees for Semaphore ([#&#8203;8119]) - task: explain why `yield_now` defers its waker ([#&#8203;8254]) - time: add panic docs to `timeout_at()` ([#&#8203;8077]) - time: fix reversed poll order in timeout doc ([#&#8203;8214]) [#&#8203;7800]: https://github.com/tokio-rs/tokio/pull/7800 [#&#8203;7986]: https://github.com/tokio-rs/tokio/pull/7986 [#&#8203;8032]: https://github.com/tokio-rs/tokio/pull/8032 [#&#8203;8043]: https://github.com/tokio-rs/tokio/pull/8043 [#&#8203;8077]: https://github.com/tokio-rs/tokio/pull/8077 [#&#8203;8078]: https://github.com/tokio-rs/tokio/pull/8078 [#&#8203;8080]: https://github.com/tokio-rs/tokio/pull/8080 [#&#8203;8086]: https://github.com/tokio-rs/tokio/pull/8086 [#&#8203;8093]: https://github.com/tokio-rs/tokio/pull/8093 [#&#8203;8095]: https://github.com/tokio-rs/tokio/pull/8095 [#&#8203;8107]: https://github.com/tokio-rs/tokio/pull/8107 [#&#8203;8119]: https://github.com/tokio-rs/tokio/pull/8119 [#&#8203;8124]: https://github.com/tokio-rs/tokio/pull/8124 [#&#8203;8126]: https://github.com/tokio-rs/tokio/pull/8126 [#&#8203;8132]: https://github.com/tokio-rs/tokio/pull/8132 [#&#8203;8144]: https://github.com/tokio-rs/tokio/pull/8144 [#&#8203;8149]: https://github.com/tokio-rs/tokio/pull/8149 [#&#8203;8169]: https://github.com/tokio-rs/tokio/pull/8169 [#&#8203;8181]: https://github.com/tokio-rs/tokio/pull/8181 [#&#8203;8192]: https://github.com/tokio-rs/tokio/pull/8192 [#&#8203;8193]: https://github.com/tokio-rs/tokio/pull/8193 [#&#8203;8202]: https://github.com/tokio-rs/tokio/pull/8202 [#&#8203;8214]: https://github.com/tokio-rs/tokio/pull/8214 [#&#8203;8231]: https://github.com/tokio-rs/tokio/pull/8231 [#&#8203;8239]: https://github.com/tokio-rs/tokio/pull/8239 [#&#8203;8242]: https://github.com/tokio-rs/tokio/pull/8242 [#&#8203;8251]: https://github.com/tokio-rs/tokio/pull/8251 [#&#8203;8254]: https://github.com/tokio-rs/tokio/pull/8254 [#&#8203;8259]: https://github.com/tokio-rs/tokio/pull/8259 [#&#8203;8260]: https://github.com/tokio-rs/tokio/pull/8260 [#&#8203;8266]: https://github.com/tokio-rs/tokio/pull/8266 [#&#8203;8270]: https://github.com/tokio-rs/tokio/pull/8270 [#&#8203;8276]: https://github.com/tokio-rs/tokio/pull/8276 [#&#8203;8277]: https://github.com/tokio-rs/tokio/pull/8277 ### [`v1.52.4`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.52.4): Tokio v1.52.4 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.52.3...tokio-1.52.4) ##### 1.52.4 (July 16th, 2026) ##### Fixed - runtime: don't skip the driver when `before_park` schedules work ([#&#8203;8222]) ##### Fixed (unstable) - taskdump: remove crate disambiguators from output ([#&#8203;8264]) [#&#8203;8264]: https://github.com/tokio-rs/tokio/pull/8264 [#&#8203;8222]: https://github.com/tokio-rs/tokio/pull/8222 ### [`v1.52.3`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.52.3): Tokio v1.52.3 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.52.2...tokio-1.52.3) ##### 1.52.3 (May 8th, 2026) ##### Fixed - sync: fix underflow in mpsc channel `len()` ([#&#8203;8062]) - sync: notify receivers in mpsc `OwnedPermit::release()` method ([#&#8203;8075]) - sync: require that an `RwLock` has `max_readers != 0` ([#&#8203;8076]) - sync: return `Empty` from `try_recv()` when mpsc is closed with outstanding permits ([#&#8203;8074]) [#&#8203;8062]: https://github.com/tokio-rs/tokio/pull/8062 [#&#8203;8074]: https://github.com/tokio-rs/tokio/pull/8074 [#&#8203;8075]: https://github.com/tokio-rs/tokio/pull/8075 [#&#8203;8076]: https://github.com/tokio-rs/tokio/pull/8076 ### [`v1.52.2`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.52.2): Tokio v1.52.2 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.52.1...tokio-1.52.2) ##### 1.52.2 (May 4th, 2026) This release reverts the LIFO slot stealing change introduced in 1.51.0 ([#&#8203;7431]), due to [its performance impact][#&#8203;8065]. ([#&#8203;8100]) [#&#8203;7431]: https://github.com/tokio-rs/tokio/pull/7431 [#&#8203;8065]: https://github.com/tokio-rs/tokio/pull/8065 [#&#8203;8100]: https://github.com/tokio-rs/tokio/pull/8100 ### [`v1.52.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.52.1): Tokio v1.52.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.52.0...tokio-1.52.1) ##### 1.52.1 (April 16th, 2026) ##### Fixed - runtime: revert [#&#8203;7757] to fix [a regression][#&#8203;8056] that causes `spawn_blocking` to hang ([#&#8203;8057]) [#&#8203;7757]: https://github.com/tokio-rs/tokio/pull/7757 [#&#8203;8056]: https://github.com/tokio-rs/tokio/pull/8056 [#&#8203;8057]: https://github.com/tokio-rs/tokio/pull/8057 ### [`v1.52.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.52.0): Tokio v1.52.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.51.6...tokio-1.52.0) ### 1.52.0 (April 14th, 2026) #### Added - io: `AioSource::register_borrowed` for I/O safety support ([#&#8203;7992]) - net: add `try_io` function to `unix::pipe` sender and receiver types ([#&#8203;8030]) #### Added (unstable) - runtime: `Builder::enable_eager_driver_handoff` setting enable eager hand off of the I/O and time drivers before polling tasks ([#&#8203;8010]) - taskdump: add `trace_with()` for customized task dumps ([#&#8203;8025]) - taskdump: allow `impl FnMut()` in `trace_with` instead of just `fn()` ([#&#8203;8040]) - fs: support `io_uring` in `AsyncRead` for `File` ([#&#8203;7907]) #### Changed - runtime: improve `spawn_blocking` scalability with sharded queue ([#&#8203;7757]) - runtime: use `compare_exchange_weak()` in worker queue ([#&#8203;8028]) #### Fixed - runtime: overflow second half of tasks when local queue is filled instead of first half ([#&#8203;8029]) #### Documented - docs: fix typo in `oneshot::Sender::send` docs ([#&#8203;8026]) - docs: hide #\[tokio::main] attribute in the docs of `sync::watch` ([#&#8203;8035]) - net: add docs on `ConnectionRefused` errors with UDP sockets ([#&#8203;7870]) [#&#8203;7757]: https://github.com/tokio-rs/tokio/pull/7757 [#&#8203;7870]: https://github.com/tokio-rs/tokio/pull/7870 [#&#8203;7907]: https://github.com/tokio-rs/tokio/pull/7907 [#&#8203;7992]: https://github.com/tokio-rs/tokio/pull/7992 [#&#8203;8010]: https://github.com/tokio-rs/tokio/pull/8010 [#&#8203;8025]: https://github.com/tokio-rs/tokio/pull/8025 [#&#8203;8026]: https://github.com/tokio-rs/tokio/pull/8026 [#&#8203;8028]: https://github.com/tokio-rs/tokio/pull/8028 [#&#8203;8029]: https://github.com/tokio-rs/tokio/pull/8029 [#&#8203;8030]: https://github.com/tokio-rs/tokio/pull/8030 [#&#8203;8035]: https://github.com/tokio-rs/tokio/pull/8035 [#&#8203;8040]: https://github.com/tokio-rs/tokio/pull/8040 ### [`v1.51.6`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.51.6): Tokio v1.51.6 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.51.5...tokio-1.51.6) ##### 1.51.6 (October 13th, 2026) ##### Added - io: add `AsyncFd::register` and `AsyncFd::register_with_interest` ([#&#8203;8587]) ##### Changed - io: deprecate `AsyncFd::{new, with_interest, try_new, try_with_interest}` ([#&#8203;8587]) ##### Fixed - io: wake and drop `DuplexStream` wakers outside the lock ([#&#8203;8618]) - macros: avoid `unreachable_code` in `join!` and `try_join!` for `Infallible` ([#&#8203;8518]) - runtime: fix paused time auto-advancing when I/O wakes a task on `current_thread` ([#&#8203;8595]) - sync: wake waiters outside the lock when closing a semaphore ([#&#8203;8529]) - test: fix several flaky tests ([#&#8203;8196], [#&#8203;8427], [#&#8203;8609]) [#&#8203;8196]: https://github.com/tokio-rs/tokio/pull/8196 [#&#8203;8427]: https://github.com/tokio-rs/tokio/pull/8427 [#&#8203;8518]: https://github.com/tokio-rs/tokio/pull/8518 [#&#8203;8529]: https://github.com/tokio-rs/tokio/pull/8529 [#&#8203;8587]: https://github.com/tokio-rs/tokio/pull/8587 [#&#8203;8595]: https://github.com/tokio-rs/tokio/pull/8595 [#&#8203;8609]: https://github.com/tokio-rs/tokio/pull/8609 [#&#8203;8618]: https://github.com/tokio-rs/tokio/pull/8618 ### [`v1.51.5`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.51.5): Tokio v1.51.5 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.51.4...tokio-1.51.5) ##### 1.51.5 (October 3rd, 2026) ##### Fixed - fs: handle integer overflow in buffered relative seek ([#&#8203;8574]) - io: revert "always cleanup `AsyncFd` registration list on deregister" ([#&#8203;8540]) - process: unregister Windows wait before closing child handle ([#&#8203;8564]) - rt: drop blocking pool mutex before shutting down rejected task ([#&#8203;8562]) - sync: fix mpsc index wraparound in block reclamation ([#&#8203;8546]) - sync: forget mpsc `Permit` before sending value ([#&#8203;8560]) - sync: validate `MAX_PERMITS` in `Semaphore::acquire` ([#&#8203;8548]) - sync: wake broadcast `Sender::closed` outside mutex ([#&#8203;8558]) - task: drop replaced waker outside lock in `JoinSet` ([#&#8203;8554]) - time: drop timer lock before dropping waker in `clear_entry` ([#&#8203;8552]) - time: expire timers directly on shutdown without rotating wheel ([#&#8203;8570]) ##### Fixed (unstable) - rt: ignore `current_thread` task dumps from other runtimes ([#&#8203;8544]) - rt: preserve `io_uring` context if a completion waker panics ([#&#8203;8566]) - sync: fix semaphore use-after-free and permit leak on tracing panic ([#&#8203;8542]) - time: drop stored waker when cancelling alt timer entry ([#&#8203;8550]) [#&#8203;8540]: https://github.com/tokio-rs/tokio/pull/8540 [#&#8203;8542]: https://github.com/tokio-rs/tokio/pull/8542 [#&#8203;8544]: https://github.com/tokio-rs/tokio/pull/8544 [#&#8203;8546]: https://github.com/tokio-rs/tokio/pull/8546 [#&#8203;8548]: https://github.com/tokio-rs/tokio/pull/8548 [#&#8203;8550]: https://github.com/tokio-rs/tokio/pull/8550 [#&#8203;8552]: https://github.com/tokio-rs/tokio/pull/8552 [#&#8203;8554]: https://github.com/tokio-rs/tokio/pull/8554 [#&#8203;8558]: https://github.com/tokio-rs/tokio/pull/8558 [#&#8203;8560]: https://github.com/tokio-rs/tokio/pull/8560 [#&#8203;8562]: https://github.com/tokio-rs/tokio/pull/8562 [#&#8203;8564]: https://github.com/tokio-rs/tokio/pull/8564 [#&#8203;8566]: https://github.com/tokio-rs/tokio/pull/8566 [#&#8203;8570]: https://github.com/tokio-rs/tokio/pull/8570 [#&#8203;8574]: https://github.com/tokio-rs/tokio/pull/8574 ### [`v1.51.4`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.51.4): Tokio v1.51.4 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.51.3...tokio-1.51.4) ##### 1.51.4 (July 16th, 2026) ##### Fixed - runtime: don't skip the driver when `before_park` schedules work ([#&#8203;8222]) [#&#8203;8222]: https://github.com/tokio-rs/tokio/pull/8222 ### [`v1.51.3`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.51.3): Tokio v1.51.3 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.51.2...tokio-1.51.3) ##### 1.51.3 (May 8th, 2026) ##### Fixed - sync: fix underflow in mpsc channel `len()` ([#&#8203;8062]) - sync: notify receivers in mpsc `OwnedPermit::release()` method ([#&#8203;8075]) - sync: require that an `RwLock` has `max_readers != 0` ([#&#8203;8076]) - sync: return `Empty` from `try_recv()` when mpsc is closed with outstanding permits ([#&#8203;8074]) [#&#8203;8062]: https://github.com/tokio-rs/tokio/pull/8062 [#&#8203;8074]: https://github.com/tokio-rs/tokio/pull/8074 [#&#8203;8075]: https://github.com/tokio-rs/tokio/pull/8075 [#&#8203;8076]: https://github.com/tokio-rs/tokio/pull/8076 ### [`v1.51.2`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.51.2): Tokio v1.51.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.51.1...tokio-1.51.2) ##### 1.51.2 (May 4th, 2026) This release reverts the LIFO slot stealing change introduced in 1.51.0 ([#&#8203;7431]), due to [its performance impact][#&#8203;8065]. ([#&#8203;8100]) [#&#8203;7431]: https://github.com/tokio-rs/tokio/pull/7431 [#&#8203;8065]: https://github.com/tokio-rs/tokio/pull/8065 [#&#8203;8100]: https://github.com/tokio-rs/tokio/pull/8100 ### [`v1.51.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.51.1): Tokio v1.51.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.51.0...tokio-1.51.1) ### 1.51.1 (April 8th, 2026) ##### Fixed - sync: fix semaphore reopens after forget ([#&#8203;8021]) - net: surface errors from `SO_ERROR` on `recv` for UDP sockets on Linux ([#&#8203;8001]) ##### Fixed (unstable) - metrics: fix `worker_local_schedule_count` test ([#&#8203;8008]) - rt: do not leak fd when cancelling io_uring open operation ([#&#8203;7983]) [#&#8203;7983]: https://github.com/tokio-rs/tokio/pull/7983 [#&#8203;8001]: https://github.com/tokio-rs/tokio/pull/8001 [#&#8203;8008]: https://github.com/tokio-rs/tokio/pull/8008 [#&#8203;8021]: https://github.com/tokio-rs/tokio/pull/8021 ### [`v1.51.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.51.0): Tokio v1.51.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.50.0...tokio-1.51.0) ##### 1.51.0 (April 3rd, 2026) ##### Added - net: implement `get_peer_cred` on Hurd ([#&#8203;7989]) - runtime: add `tokio::runtime::worker_index()` ([#&#8203;7921]) - runtime: add runtime name ([#&#8203;7924]) - runtime: stabilize `LocalRuntime` ([#&#8203;7557]) - wasm: add wasm32-wasip2 networking support ([#&#8203;7933]) ##### Changed - runtime: steal tasks from the LIFO slot ([#&#8203;7431]) ##### Fixed - docs: do not show "Available on non-loom only." doc label ([#&#8203;7977]) - macros: improve overall macro hygiene ([#&#8203;7997]) - sync: fix `notify_waiters` priority in `Notify` ([#&#8203;7996]) - sync: fix panic in `Chan::recv_many` when called with non-empty vector on closed channel ([#&#8203;7991]) [#&#8203;7431]: https://github.com/tokio-rs/tokio/pull/7431 [#&#8203;7557]: https://github.com/tokio-rs/tokio/pull/7557 [#&#8203;7921]: https://github.com/tokio-rs/tokio/pull/7921 [#&#8203;7924]: https://github.com/tokio-rs/tokio/pull/7924 [#&#8203;7933]: https://github.com/tokio-rs/tokio/pull/7933 [#&#8203;7977]: https://github.com/tokio-rs/tokio/pull/7977 [#&#8203;7989]: https://github.com/tokio-rs/tokio/pull/7989 [#&#8203;7991]: https://github.com/tokio-rs/tokio/pull/7991 [#&#8203;7996]: https://github.com/tokio-rs/tokio/pull/7996 [#&#8203;7997]: https://github.com/tokio-rs/tokio/pull/7997 ### [`v1.50.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.50.0): Tokio v1.50.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.49.0...tokio-1.50.0) ##### 1.50.0 (Mar 3rd, 2026) ##### Added - net: add `TcpStream::set_zero_linger` ([#&#8203;7837]) - rt: add `is_rt_shutdown_err` ([#&#8203;7771]) ##### Changed - io: add optimizer hint that `memchr` returns in-bounds pointer ([#&#8203;7792]) - io: implement vectored writes for `write_buf` ([#&#8203;7871]) - runtime: panic when `event_interval` is set to 0 ([#&#8203;7838]) - runtime: shorten default thread name to fit in Linux limit ([#&#8203;7880]) - signal: remember the result of `SetConsoleCtrlHandler` ([#&#8203;7833]) - signal: specialize windows `Registry` ([#&#8203;7885]) ##### Fixed - io: always cleanup `AsyncFd` registration list on deregister ([#&#8203;7773]) - macros: remove (most) local `use` declarations in `tokio::select!` ([#&#8203;7929]) - net: fix `GET_BUF_SIZE` constant for `target_os = "android"` ([#&#8203;7889]) - runtime: avoid redundant unpark in current_thread scheduler ([#&#8203;7834]) - runtime: don't park in `current_thread` if `before_park` defers waker ([#&#8203;7835]) - io: fix write readiness on ESP32 on short writes ([#&#8203;7872]) - runtime: wake deferred tasks before entering `block_in_place` ([#&#8203;7879]) - sync: drop rx waker when oneshot receiver is dropped ([#&#8203;7886]) - runtime: fix double increment of `num_idle_threads` on shutdown ([#&#8203;7910], [#&#8203;7918], [#&#8203;7922]) ##### Unstable - fs: check for io-uring opcode support ([#&#8203;7815]) - runtime: avoid lock acquisition after uring init ([#&#8203;7850]) ##### Documented - docs: update outdated unstable features section ([#&#8203;7839]) - io: clarify the behavior of `AsyncWriteExt::shutdown()` ([#&#8203;7908]) - io: explain how to flush stdout/stderr ([#&#8203;7904]) - io: fix incorrect and confusing `AsyncWrite` documentation ([#&#8203;7875]) - rt: clarify the documentation of `Runtime::spawn` ([#&#8203;7803]) - rt: fix missing quotation in docs ([#&#8203;7925]) - runtime: correct the default thread name in docs ([#&#8203;7896]) - runtime: fix `event_interval` doc ([#&#8203;7932]) - sync: clarify RwLock fairness documentation ([#&#8203;7919]) - sync: clarify that `recv` returns `None` once closed and no more messages ([#&#8203;7920]) - task: clarify when to use `spawn_blocking` vs dedicated threads ([#&#8203;7923]) - task: doc that task drops before `JoinHandle` completion ([#&#8203;7825]) - signal: guarantee that listeners never return `None` ([#&#8203;7869]) - task: fix task module feature flags in docs ([#&#8203;7891]) - task: fix two typos ([#&#8203;7913]) - task: improve the docs of `Builder::spawn_local` ([#&#8203;7828]) - time: add docs about auto-advance and when to use sleep ([#&#8203;7858]) - util: fix typo in docs ([#&#8203;7926]) [#&#8203;7771]: https://github.com/tokio-rs/tokio/pull/7771 [#&#8203;7773]: https://github.com/tokio-rs/tokio/pull/7773 [#&#8203;7792]: https://github.com/tokio-rs/tokio/pull/7792 [#&#8203;7803]: https://github.com/tokio-rs/tokio/pull/7803 [#&#8203;7815]: https://github.com/tokio-rs/tokio/pull/7815 [#&#8203;7825]: https://github.com/tokio-rs/tokio/pull/7825 [#&#8203;7828]: https://github.com/tokio-rs/tokio/pull/7828 [#&#8203;7833]: https://github.com/tokio-rs/tokio/pull/7833 [#&#8203;7834]: https://github.com/tokio-rs/tokio/pull/7834 [#&#8203;7835]: https://github.com/tokio-rs/tokio/pull/7835 [#&#8203;7837]: https://github.com/tokio-rs/tokio/pull/7837 [#&#8203;7838]: https://github.com/tokio-rs/tokio/pull/7838 [#&#8203;7839]: https://github.com/tokio-rs/tokio/pull/7839 [#&#8203;7850]: https://github.com/tokio-rs/tokio/pull/7850 [#&#8203;7858]: https://github.com/tokio-rs/tokio/pull/7858 [#&#8203;7869]: https://github.com/tokio-rs/tokio/pull/7869 [#&#8203;7871]: https://github.com/tokio-rs/tokio/pull/7871 [#&#8203;7872]: https://github.com/tokio-rs/tokio/pull/7872 [#&#8203;7875]: https://github.com/tokio-rs/tokio/pull/7875 [#&#8203;7879]: https://github.com/tokio-rs/tokio/pull/7879 [#&#8203;7880]: https://github.com/tokio-rs/tokio/pull/7880 [#&#8203;7885]: https://github.com/tokio-rs/tokio/pull/7885 [#&#8203;7886]: https://github.com/tokio-rs/tokio/pull/7886 [#&#8203;7889]: https://github.com/tokio-rs/tokio/pull/7889 [#&#8203;7891]: https://github.com/tokio-rs/tokio/pull/7891 [#&#8203;7896]: https://github.com/tokio-rs/tokio/pull/7896 [#&#8203;7904]: https://github.com/tokio-rs/tokio/pull/7904 [#&#8203;7908]: https://github.com/tokio-rs/tokio/pull/7908 [#&#8203;7910]: https://github.com/tokio-rs/tokio/pull/7910 [#&#8203;7913]: https://github.com/tokio-rs/tokio/pull/7913 [#&#8203;7918]: https://github.com/tokio-rs/tokio/pull/7918 [#&#8203;7919]: https://github.com/tokio-rs/tokio/pull/7919 [#&#8203;7920]: https://github.com/tokio-rs/tokio/pull/7920 [#&#8203;7922]: https://github.com/tokio-rs/tokio/pull/7922 [#&#8203;7923]: https://github.com/tokio-rs/tokio/pull/7923 [#&#8203;7925]: https://github.com/tokio-rs/tokio/pull/7925 [#&#8203;7926]: https://github.com/tokio-rs/tokio/pull/7926 [#&#8203;7929]: https://github.com/tokio-rs/tokio/pull/7929 [#&#8203;7932]: https://github.com/tokio-rs/tokio/pull/7932 ### [`v1.49.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.49.0): Tokio v1.49.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.48.0...tokio-1.49.0) ##### 1.49.0 (January 3rd, 2026) ##### Added - net: add support for `TCLASS` option on IPv6 ([#&#8203;7781]) - runtime: stabilize `runtime::id::Id` ([#&#8203;7125]) - task: implement `Extend` for `JoinSet` ([#&#8203;7195]) - task: stabilize the `LocalSet::id()` ([#&#8203;7776]) ##### Changed - net: deprecate `{TcpStream,TcpSocket}::set_linger` ([#&#8203;7752]) ##### Fixed - macros: fix the hygiene issue of `join!` and `try_join!` ([#&#8203;7766]) - runtime: revert "replace manual vtable definitions with Wake" ([#&#8203;7699]) - sync: return `TryRecvError::Disconnected` from `Receiver::try_recv` after `Receiver::close` ([#&#8203;7686]) - task: remove unnecessary trait bounds on the `Debug` implementation ([#&#8203;7720]) ##### Unstable - fs: handle `EINTR` in `fs::write` for io-uring ([#&#8203;7786]) - fs: support io-uring with `tokio::fs::read` ([#&#8203;7696]) - runtime: disable io-uring on `EPERM` ([#&#8203;7724]) - time: add alternative timer for better multicore scalability ([#&#8203;7467]) ##### Documented - docs: fix a typos in `bounded.rs` and `park.rs` ([#&#8203;7817]) - io: add `SyncIoBridge` cross-references to `copy` and `copy_buf` ([#&#8203;7798]) - io: doc that `AsyncWrite` does not inherit from `std::io::Write` ([#&#8203;7705]) - metrics: clarify that `num_alive_tasks` is not strongly consistent ([#&#8203;7614]) - net: clarify the cancellation safety of the `TcpStream::peek` ([#&#8203;7305]) - net: clarify the drop behavior of `unix::OwnedWriteHalf` ([#&#8203;7742]) - net: clarify the platform-dependent backlog in `TcpSocket` docs ([#&#8203;7738]) - runtime: mention `LocalRuntime` in `new_current_thread` docs ([#&#8203;7820]) - sync: add missing period to `mpsc::Sender::try_send` docs ([#&#8203;7721]) - sync: clarify the cancellation safety of `oneshot::Receiver` ([#&#8203;7780]) - sync: improve the docs for the `errors` of mpsc ([#&#8203;7722]) - task: add example for `spawn_local` usage on local runtime ([#&#8203;7689]) [#&#8203;7125]: https://github.com/tokio-rs/tokio/pull/7125 [#&#8203;7195]: https://github.com/tokio-rs/tokio/pull/7195 [#&#8203;7305]: https://github.com/tokio-rs/tokio/pull/7305 [#&#8203;7467]: https://github.com/tokio-rs/tokio/pull/7467 [#&#8203;7614]: https://github.com/tokio-rs/tokio/pull/7614 [#&#8203;7686]: https://github.com/tokio-rs/tokio/pull/7686 [#&#8203;7689]: https://github.com/tokio-rs/tokio/pull/7689 [#&#8203;7696]: https://github.com/tokio-rs/tokio/pull/7696 [#&#8203;7699]: https://github.com/tokio-rs/tokio/pull/7699 [#&#8203;7705]: https://github.com/tokio-rs/tokio/pull/7705 [#&#8203;7720]: https://github.com/tokio-rs/tokio/pull/7720 [#&#8203;7721]: https://github.com/tokio-rs/tokio/pull/7721 [#&#8203;7722]: https://github.com/tokio-rs/tokio/pull/7722 [#&#8203;7724]: https://github.com/tokio-rs/tokio/pull/7724 [#&#8203;7738]: https://github.com/tokio-rs/tokio/pull/7738 [#&#8203;7742]: https://github.com/tokio-rs/tokio/pull/7742 [#&#8203;7752]: https://github.com/tokio-rs/tokio/pull/7752 [#&#8203;7766]: https://github.com/tokio-rs/tokio/pull/7766 [#&#8203;7776]: https://github.com/tokio-rs/tokio/pull/7776 [#&#8203;7780]: https://github.com/tokio-rs/tokio/pull/7780 [#&#8203;7781]: https://github.com/tokio-rs/tokio/pull/7781 [#&#8203;7786]: https://github.com/tokio-rs/tokio/pull/7786 [#&#8203;7798]: https://github.com/tokio-rs/tokio/pull/7798 [#&#8203;7817]: https://github.com/tokio-rs/tokio/pull/7817 [#&#8203;7820]: https://github.com/tokio-rs/tokio/pull/7820 </details> <details> <summary>tower-rs/tower-http (tower-http)</summary> ### [`v0.7.1`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.7.1) [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.7.0...tower-http-0.7.1) #### Added - `fs`: add `ServeDir::redirect_to_trailing_slash()` to serve directory indexes directly instead of first redirecting to the trailing-slash path. The redirect remains the default ([#&#8203;728]) - `fs`: add `ignore_multi_range_requests()` to `ServeDir` and `ServeFile`, serving the full representation when a request asks for multiple byte ranges. The existing `416 Range Not Satisfiable` response remains the default ([#&#8203;727]) - `request-id`: the constructors and accessors on the request-id layers, services, and `RequestId` are now `const fn`, so they can be used in const context ([#&#8203;716]) #### Changed - `fs`: the minimum `http-range-header` requirement is now 0.4.2 ([#&#8203;661]) #### Fixed - **behavioral change:** `fs`: make `ServeDir::try_call` propagate expected filesystem I/O errors when no fallback is configured, as documented, instead of converting them to `404 Not Found` responses ([#&#8203;718]) - `decompression`: don't end the body when a data frame with no remaining bytes arrives after the decompressor reports end-of-stream. Trailers following such a frame were dropped and could not be recovered ([#&#8203;722]) - `decompression`: return a body error when a data frame with remaining bytes arrives after the decompressor reports end-of-stream, rather than silently truncating. This regressed in 0.7.0 ([#&#8203;712]) - `fs`: multipart range requests are now rejected before range validation, so they consistently return `416 Range Not Satisfiable` with a `Cannot serve multipart range requests` body instead of a generic unsatisfiable-range response ([#&#8203;661]) - `fs`: range error responses no longer carry representation headers such as `Content-Type` and `Content-Encoding` ([#&#8203;727]) - `set-header`: `SetMultipleResponseHeadersLayer` and `SetMultipleResponseHeader` are now `Clone` regardless of the response body type, matching the fix applied to the request-side types in 0.7.0 ([#&#8203;714]) [#&#8203;661]: https://github.com/tower-rs/tower-http/pull/661 [#&#8203;712]: https://github.com/tower-rs/tower-http/pull/712 [#&#8203;714]: https://github.com/tower-rs/tower-http/pull/714 [#&#8203;716]: https://github.com/tower-rs/tower-http/pull/716 [#&#8203;718]: https://github.com/tower-rs/tower-http/pull/718 [#&#8203;722]: https://github.com/tower-rs/tower-http/pull/722 [#&#8203;727]: https://github.com/tower-rs/tower-http/pull/727 [#&#8203;728]: https://github.com/tower-rs/tower-http/pull/728 #### All the changes - chore(deps): bump actions/checkout from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;708](https://github.com/tower-rs/tower-http/pull/708) - fix(compression): reject non-empty data frames after codec is EOF by [@&#8203;seanmonstar](https://github.com/seanmonstar) in [#&#8203;712](https://github.com/tower-rs/tower-http/pull/712) - Remove Clone derivations from SetMultipleResponseHeader\* types by [@&#8203;skeet70](https://github.com/skeet70) in [#&#8203;714](https://github.com/tower-rs/tower-http/pull/714) - feat(request-id): Allow request-id constructor in const context by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;716](https://github.com/tower-rs/tower-http/pull/716) - fs: Avoid unnecessary conversions between SystemTime and HttpDate by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;717](https://github.com/tower-rs/tower-http/pull/717) - fs: Use HeaderValue::is_empty to check for empty values by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;720](https://github.com/tower-rs/tower-http/pull/720) - fs: Use HeaderValue::to_str for date headers by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;721](https://github.com/tower-rs/tower-http/pull/721) - chore(deps): bump taiki-e/install-action from 2 to 2.85.4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;715](https://github.com/tower-rs/tower-http/pull/715) - chore(deps): bump taiki-e/install-action from 2.85.4 to 2.85.12 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;723](https://github.com/tower-rs/tower-http/pull/723) - docs(example)/custom future with multiple bodies by [@&#8203;Reza-Darius](https://github.com/Reza-Darius) in [#&#8203;711](https://github.com/tower-rs/tower-http/pull/711) - fix(decompression): don't end the body on an empty data frame by [@&#8203;clemenslosbichler-cloud](https://github.com/clemenslosbichler-cloud) in [#&#8203;722](https://github.com/tower-rs/tower-http/pull/722) - Propagate ServeDir::try_call I/O errors by [@&#8203;Boulea7](https://github.com/Boulea7) in [#&#8203;718](https://github.com/tower-rs/tower-http/pull/718) - ci: Update to cargo-check-external-types 0.5.0 by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;724](https://github.com/tower-rs/tower-http/pull/724) - fix: reject multipart ranges before validation by [@&#8203;shblue21](https://github.com/shblue21) in [#&#8203;661](https://github.com/tower-rs/tower-http/pull/661) - chore(deps): bump taiki-e/install-action from 2.85.12 to 2.86.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;726](https://github.com/tower-rs/tower-http/pull/726) - feat(services): configure directory redirects by [@&#8203;BreezeDelegate](https://github.com/BreezeDelegate) in [#&#8203;728](https://github.com/tower-rs/tower-http/pull/728) - Allow ignoring unsupported multi-range requests by [@&#8203;BreezeDelegate](https://github.com/BreezeDelegate) in [#&#8203;727](https://github.com/tower-rs/tower-http/pull/727) - chore(deps): bump taiki-e/install-action from 2.86.3 to 2.86.8 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;730](https://github.com/tower-rs/tower-http/pull/730) - chore(release): prepare 0.7.1 by [@&#8203;jlizen](https://github.com/jlizen) in [#&#8203;729](https://github.com/tower-rs/tower-http/pull/729) #### New Contributors - [@&#8203;skeet70](https://github.com/skeet70) made their first contribution in [#&#8203;714](https://github.com/tower-rs/tower-http/pull/714) - [@&#8203;Reza-Darius](https://github.com/Reza-Darius) made their first contribution in [#&#8203;711](https://github.com/tower-rs/tower-http/pull/711) - [@&#8203;clemenslosbichler-cloud](https://github.com/clemenslosbichler-cloud) made their first contribution in [#&#8203;722](https://github.com/tower-rs/tower-http/pull/722) - [@&#8203;Boulea7](https://github.com/Boulea7) made their first contribution in [#&#8203;718](https://github.com/tower-rs/tower-http/pull/718) - [@&#8203;shblue21](https://github.com/shblue21) made their first contribution in [#&#8203;661](https://github.com/tower-rs/tower-http/pull/661) - [@&#8203;BreezeDelegate](https://github.com/BreezeDelegate) made their first contribution in [#&#8203;728](https://github.com/tower-rs/tower-http/pull/728) ### [`v0.7.0`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.7.0) [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.6.11...tower-http-0.7.0) [Changes since 0.6.11](https://github.com/tower-rs/tower-http/compare/tower-http-0.6.11...tower-http-0.7.0) #### Added - `csrf`: add cross-site request forgery (CSRF) protection middleware, porting the cross-origin protection scheme introduced in Go 1.25 ([#&#8203;699]) ```rust use tower::ServiceBuilder; use tower_http::csrf::CsrfLayer; // Rejects cross-origin state-changing requests using `Sec-Fetch-Site`, // an `Origin` allow-list, and an `Origin`/`Host` fallback. No per-request // token state required. let layer = CsrfLayer::new().add_trusted_origin("https://example.com")?; let service = ServiceBuilder::new().layer(layer).service_fn(handler); ``` - `timeout`: add `DeadlineBody` for non-resetting body timeouts, applied via the new `RequestBodyDeadlineLayer` and `ResponseBodyDeadlineLayer` ([#&#8203;688]) Unlike `TimeoutBody`, which resets its deadline on every frame, `DeadlineBody` caps the total time of a body transfer. A slow client trickling one byte at a time never trips an idle timeout but will trip a deadline. ```rust use std::time::Duration; use tower::ServiceBuilder; use tower_http::timeout::RequestBodyDeadlineLayer; // Abort the request body transfer after 30s total, regardless of how // frequently data arrives. let service = ServiceBuilder::new() .layer(RequestBodyDeadlineLayer::new(Duration::from_secs(30))) .service_fn(handler); ``` - `fs`: add strong `ETag` support to `ServeDir`, including `If-Match` and `If-None-Match` precondition handling per RFC 9110. `304 Not Modified` responses now carry the `ETag` and `Last-Modified` validators ([#&#8203;691]) - `fs`: add a `Backend` trait to make `ServeDir` work with non-filesystem sources (e.g. embedded assets or object storage). The default `TokioBackend` preserves existing behavior. Use `ServeDir::with_backend()` to plug in custom implementations ([#&#8203;684]) ```rust use tower_http::services::fs::ServeDir; // `MyBackend` implements `tower_http::services::fs::Backend`. // The default `ServeDir::new()` continues to use `TokioBackend` (local FS). let service = ServeDir::with_backend("assets", MyBackend::new()); ``` - `fs`: add `html_as_default_extension` option to `ServeDir`, appending `.html` when the request path has no extension ([#&#8203;519]) - `fs`: add `redirect_path_prefix` option to `ServeDir`, prepending a prefix on trailing-slash redirects so the service can be mounted under a sub-path ([#&#8203;486]) - `validate-request`: add `ValidateRequestHeaderLayer::has_header_value()` to reject requests when a header does not have an expected value ([#&#8203;360]) - `body`: `UnsyncBoxBody::new()` constructor and `From<ServeFileSystemResponseBody>` conversion to avoid double-boxing when combining `ServeDir` responses with other body types ([#&#8203;537]) - `limit`: implement `Default` for `limit::ResponseBody` when the wrapped body also implements `Default` ([#&#8203;679]) #### Changed - **breaking:** `compression`: the middleware now handles the `*` wildcard and `identity;q=0` in Accept-Encoding per RFC 9110 §12.5.3. Requests that previously fell back to identity (e.g. `*;q=0` or `identity;q=0` with no other acceptable encoding) now receive a 406 Not Acceptable response. Clients that explicitly reject all encodings without listing an alternative will see different behavior. ([#&#8203;693]) - **breaking:** `compression`: upgrade the `SizeAbove` predicate threshold from `u16` to `u64`, allowing minimum sizes above 64 KiB ([#&#8203;704]) - **breaking:** remove the implicit no-op `tokio` and `async-compression` features. These were kept as no-op features in 0.6.x for backwards compatibility after the switch to `dep:` syntax in [#&#8203;642]. Downstream crates that activate `tower-http/tokio` or `tower http/async-compression` should remove those feature entries; the underlying dependencies are still pulled in transitively by the features that need them (e.g. `compression-gzip`, `fs`, `timeout`). ([#&#8203;628]) - **breaking:** `trace`/`classify`: include the gRPC error message in tracing output. `GrpcCode` and `GrpcFailureClass` are now `#[non_exhaustive]`, and `GrpcStatus` is exported from the `classify` module ([#&#8203;422]) - **breaking:** `follow-redirect`: `FollowRedirect` now forwards request `Extensions` to redirected requests instead of dropping them. The `Standard` policy drops extensions on cross-origin redirections (same-origin keeps them). Opt out with `FollowRedirectLayer::preserve_extensions(false)`; keep specific types with `FilterCredentials::allow_extension::<T>()` or all of them with `keep_all_extensions()`. ([#&#8203;706]) ```rust use tower_http::follow_redirect::FollowRedirectLayer; // 0.7.0 forwards request `Extensions` across redirects by default. // Restore the previous behavior (drop all extensions) with: let layer = FollowRedirectLayer::new().preserve_extensions(false); ``` - **breaking:** `follow-redirect`: header and extension filtering is now cumulative. A value a policy drops on one hop is no longer replayed on later hops, so `FilterCredentials` no longer re-sends `Cookie`/`Authorization` to a same-origin target reached after cross-origin hop. Custom `Policy::on_request` impls now see the previous hop's filtered request, not the original. ([#&#8203;706]) - `trace`: `DefaultOnRequest`, `DefaultOnResponse`, `DefaultOnFailure`, and `DefaultOnEos` now explicitly parent their tracing events to the request span rather than relying on the ambient span context. This fixes intermittent cases where events could appear without their request span attached ([#&#8203;690]) - `cors`: relax the `Vary` header defaults ([#&#8203;674]) - MSRV bumped from 1.64 to 1.65 ([#&#8203;684]) #### Fixed - `fs`: `ServeDir` and `ServeFile` now emit a `Vary: Accept-Encoding` response header when precompressed serving is configured, ensuring caches correctly distinguish between compressed and uncompressed variants ([#&#8203;692]) - **breaking:** `services`: reject a trailing slash for file paths. File requests with a trailing slash now return `404 Not Found` instead of serving the file ([#&#8203;678]) - `fs`: fix `ServeDir` stripping the file extension when serving with identity encoding ([#&#8203;686]) - `compression`: forward trailers from the inner body after compression finishes, fixing dropped gRPC status trailers ([#&#8203;685]) - `trace`: fire `on_eos` when the inner body reports `is_end_stream` with a precise content-length ([#&#8203;687]) - `on-early-drop`: suppress the early-drop guard when `is_end_stream` is reported after a data frame ([#&#8203;687]) - `set-header`: make `SetMultipleRequestHeaders` and `SetMultipleResponseHeaders` `Clone` for non-`Clone` HTTP bodies ([#&#8203;703]) [#&#8203;360]: https://github.com/tower-rs/tower-http/pull/360 [#&#8203;422]: https://github.com/tower-rs/tower-http/pull/422 [#&#8203;486]: https://github.com/tower-rs/tower-http/pull/486 [#&#8203;519]: https://github.com/tower-rs/tower-http/pull/519 [#&#8203;537]: https://github.com/tower-rs/tower-http/pull/537 [#&#8203;628]: https://github.com/tower-rs/tower-http/pull/628 [#&#8203;642]: https://github.com/tower-rs/tower-http/pull/642 [#&#8203;674]: https://github.com/tower-rs/tower-http/pull/674 [#&#8203;678]: https://github.com/tower-rs/tower-http/pull/678 [#&#8203;679]: https://github.com/tower-rs/tower-http/pull/679 [#&#8203;684]: https://github.com/tower-rs/tower-http/pull/684 [#&#8203;685]: https://github.com/tower-rs/tower-http/pull/685 [#&#8203;686]: https://github.com/tower-rs/tower-http/pull/686 [#&#8203;687]: https://github.com/tower-rs/tower-http/pull/687 [#&#8203;688]: https://github.com/tower-rs/tower-http/pull/688 [#&#8203;690]: https://github.com/tower-rs/tower-http/pull/690 [#&#8203;691]: https://github.com/tower-rs/tower-http/pull/691 [#&#8203;692]: https://github.com/tower-rs/tower-http/pull/692 [#&#8203;693]: https://github.com/tower-rs/tower-http/pull/693 [#&#8203;699]: https://github.com/tower-rs/tower-http/pull/699 [#&#8203;703]: https://github.com/tower-rs/tower-http/pull/703 [#&#8203;704]: https://github.com/tower-rs/tower-http/pull/704 [#&#8203;706]: https://github.com/tower-rs/tower-http/pull/706 #### Thanks - [@&#8203;jlizen](https://github.com/jlizen) - [@&#8203;seun-ja](https://github.com/seun-ja) - [@&#8203;Oliboy50](https://github.com/Oliboy50) ##### New Contributors - [@&#8203;muhamadazmy](https://github.com/muhamadazmy) made their first contribution in [#&#8203;679](https://github.com/tower-rs/tower-http/pull/679) - [@&#8203;Isvane](https://github.com/Isvane) made their first contribution in [#&#8203;678](https://github.com/tower-rs/tower-http/pull/678) - [@&#8203;xiaoyawei](https://github.com/xiaoyawei) made their first contribution in [#&#8203;422](https://github.com/tower-rs/tower-http/pull/422) - [@&#8203;dependabot](https://github.com/dependabot)\[bot] made their first contribution in [#&#8203;696](https://github.com/tower-rs/tower-http/pull/696) - [@&#8203;its-the-shrimp](https://github.com/its-the-shrimp) made their first contribution in [#&#8203;519](https://github.com/tower-rs/tower-http/pull/519) - [@&#8203;yawn](https://github.com/yawn) made their first contribution in [#&#8203;699](https://github.com/tower-rs/tower-http/pull/699) - [@&#8203;Jesse-Bakker](https://github.com/Jesse-Bakker) made their first contribution in [#&#8203;703](https://github.com/tower-rs/tower-http/pull/703) - [@&#8203;junghwan16](https://github.com/junghwan16) made their first contribution in [#&#8203;705](https://github.com/tower-rs/tower-http/pull/705) - [@&#8203;claraphyll](https://github.com/claraphyll) made their first contribution in [#&#8203;486](https://github.com/tower-rs/tower-http/pull/486) ### [`v0.6.11`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.6.11) [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.6.10...tower-http-0.6.11) #### Added - `set-header`: add `SetMultipleResponseHeadersLayer` and `SetMultipleResponseHeader` for setting multiple response headers at once. Supports `overriding`, `appending`, and `if_not_present` modes. Header values can be fixed or computed dynamically via closures ([#&#8203;672]) ```rust use http::{Response, header::{self, HeaderValue}}; use http_body::Body as _; use tower_http::set_header::response::SetMultipleResponseHeadersLayer; let layer = SetMultipleResponseHeadersLayer::overriding(vec![ (header::X_FRAME_OPTIONS, HeaderValue::from_static("DENY")).into(), (header::CONTENT_LENGTH, |res: &Response<MyBody>| { res.body().size_hint().exact() .map(|size| HeaderValue::from_str(&size.to_string()).unwrap()) }).into(), ]); ``` - `set-header`: add `SetMultipleRequestHeadersLayer` and `SetMultipleRequestHeaders` for setting multiple request headers at once, mirroring the response-side API ([#&#8203;677]) - `classify`: add `From<i32>` and `From<NonZeroI32>` impls for `GrpcCode`. Unrecognized status codes map to `GrpcCode::Unknown` ([#&#8203;506]) #### Changed - `compression`: compress `application/grpc-web` responses. Previously all `application/grpc*` content types were excluded from compression; now only `application/grpc` (non-web) is excluded ([#&#8203;408]) #### Fixed - `fs`: fix `ServeDir` returning 500 instead of 405 for non-GET/HEAD requests when `call_fallback_on_method_not_allowed` is enabled but no fallback service is configured ([#&#8203;587]) - `fs`: remove duplicate `cfg` attribute on `is_reserved_dos_name` ([#&#8203;675]) [#&#8203;408]: https://github.com/tower-rs/tower-http/pull/408 [#&#8203;506]: https://github.com/tower-rs/tower-http/pull/506 [#&#8203;587]: https://github.com/tower-rs/tower-http/pull/587 [#&#8203;672]: https://github.com/tower-rs/tower-http/pull/672 [#&#8203;675]: https://github.com/tower-rs/tower-http/pull/675 [#&#8203;677]: https://github.com/tower-rs/tower-http/pull/677 #### All PRs - ci: fix flaky encoding test, add nightly stress test job by [@&#8203;jlizen](https://github.com/jlizen) in [#&#8203;670](https://github.com/tower-rs/tower-http/pull/670) - ci: use static timeout in stress-test workflow by [@&#8203;jlizen](https://github.com/jlizen) in [#&#8203;671](https://github.com/tower-rs/tower-http/pull/671) - Fix serve_dir method not allowed handling when no fallback is configured by [@&#8203;soerenmeier](https://github.com/soerenmeier) in [#&#8203;587](https://github.com/tower-rs/tower-http/pull/587) - Do compress grpc-web responses by [@&#8203;bouk](https://github.com/bouk) in [#&#8203;408](https://github.com/tower-rs/tower-http/pull/408) - add From<i32> impl for GrpcCode by [@&#8203;gshipilov](https://github.com/gshipilov) in [#&#8203;506](https://github.com/tower-rs/tower-http/pull/506) - feat(set_header): refactor and improve multiple header middleware by [@&#8203;seun-ja](https://github.com/seun-ja) in [#&#8203;672](https://github.com/tower-rs/tower-http/pull/672) - Remove duplicate cfg attribute for is_reserved_dos_name by [@&#8203;GlenDC](https://github.com/GlenDC) in [#&#8203;675](https://github.com/tower-rs/tower-http/pull/675) - feat: set multiple request header by [@&#8203;seun-ja](https://github.com/seun-ja) in [#&#8203;677](https://github.com/tower-rs/tower-http/pull/677) - chore: release 0.6.11 by [@&#8203;jlizen](https://github.com/jlizen) in [#&#8203;673](https://github.com/tower-rs/tower-http/pull/673) #### New Contributors - [@&#8203;gshipilov](https://github.com/gshipilov) made their first contribution in [#&#8203;506](https://github.com/tower-rs/tower-http/pull/506) - [@&#8203;seun-ja](https://github.com/seun-ja) made their first contribution in [#&#8203;672](https://github.com/tower-rs/tower-http/pull/672) **Full Changelog**: <https://github.com/tower-rs/tower-http/compare/tower-http-0.6.10...tower-http-0.6.11> ### [`v0.6.10`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.6.10) [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.6.9...tower-http-0.6.10) #### Added - `follow-redirect`: expose `Attempt::method()` and `Attempt::previous_method()` so redirect policies can react to method changes across redirects (e.g. POST to GET on 301/303) ([#&#8203;559]) #### Fixed - Restore `tokio` and `async-compression` as no-op features. These will be removed next breaking release ([#&#8203;667]) [#&#8203;559]: https://github.com/tower-rs/tower-http/pull/559 [#&#8203;667]: https://github.com/tower-rs/tower-http/pull/667 #### What's Changed - fix: restore tokio and async-compression as no-op features by [@&#8203;jlizen](https://github.com/jlizen) in [#&#8203;667](https://github.com/tower-rs/tower-http/pull/667) - fix gate-ing of atomic64 in tests by [@&#8203;alexanderkjall](https://github.com/alexanderkjall) in [#&#8203;607](https://github.com/tower-rs/tower-http/pull/607) - follow_redirect: expose previous and next request methods by [@&#8203;lucab](https://github.com/lucab) in [#&#8203;559](https://github.com/tower-rs/tower-http/pull/559) - chore: release tower-http 0.6.10 by [@&#8203;jlizen](https://github.com/jlizen) in [#&#8203;669](https://github.com/tower-rs/tower-http/pull/669) #### New Contributors - [@&#8203;lucab](https://github.com/lucab) made their first contribution in [#&#8203;559](https://github.com/tower-rs/tower-http/pull/559) **Full Changelog**: <https://github.com/tower-rs/tower-http/compare/tower-http-0.6.9...tower-http-0.6.10> ### [`v0.6.9`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.6.9) [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.6.8...tower-http-0.6.9) #### Added: - `on-early-drop`: middleware that detects when a response future or response body is dropped before completion ([#&#8203;636]) Two events get hooks: the response future being dropped before the inner service produces a response, and the response body being dropped before reaching end-of-stream. Install custom callbacks with `OnEarlyDropLayer::builder()`: ```rust use http::Request; use tower_http::on_early_drop::{OnBodyDropFn, OnEarlyDropLayer}; let layer = OnEarlyDropLayer::builder() .on_future_drop(|req: &Request<()>| { let uri = req.uri().clone(); move || eprintln!("future dropped for {}", uri) }) .on_body_drop(OnBodyDropFn::new(|req: &Request<()>| { let uri = req.uri().clone(); move |parts: &http::response::Parts| { let status = parts.status; move || eprintln!("body dropped for {} status {}", uri, status) } })); ``` Or route both events through a `trace::OnFailure` hook with `EarlyDropsAsFailures`. Place this layer inside a `TraceLayer` so the emitted events inherit the request span: ```rust use tower::ServiceBuilder; use tower_http::on_early_drop::{OnEarlyDropLayer, EarlyDropsAsFailures}; use tower_http::trace::{DefaultOnFailure, TraceLayer}; let stack = ServiceBuilder::new() .layer(TraceLayer::new_for_http()) .layer(OnEarlyDropLayer::new( EarlyDropsAsFailures::new(DefaultOnFailure::default()), )); ``` - `fs`: make `AsyncReadBody::with_capacity` public ([#&#8203;415]) #### Changed: - The implicit `async-compression` feature is removed ([#&#8203;642]) - The implicit `tokio` feature is removed ([#&#8203;628]) - `fs`: no longer auto-enables the `tracing` crate feature; enable `tracing` explicitly to restore error logging on `ServeDir` IO failures ([#&#8203;614]) #### Fixed - `trace`: restore failure classification at end-of-stream ([#&#8203;483]) - `follow-redirect`: support unicode URLs (swaps `iri-string` dep for `url`) ([#&#8203;646]) - `fs`: reject reserved Windows DOS device names (`CON`, `COM1`, etc.) in `ServeDir` ([#&#8203;663]) [#&#8203;415]: https://github.com/tower-rs/tower-http/pull/415 [#&#8203;483]: https://github.com/tower-rs/tower-http/pull/483 [#&#8203;614]: https://github.com/tower-rs/tower-http/pull/614 [#&#8203;628]: https://github.com/tower-rs/tower-http/pull/628 [#&#8203;636]: https://github.com/tower-rs/tower-http/pull/636 [#&#8203;642]: https://github.com/tower-rs/tower-http/pull/642 [#&#8203;646]: https://github.com/tower-rs/tower-http/pull/646 [#&#8203;663]: https://github.com/tower-rs/tower-http/pull/663 #### All the PRs - ci: update deny action to v2 by [@&#8203;seanmonstar](https://github.com/seanmonstar) in [#&#8203;627](https://github.com/tower-rs/tower-http/pull/627) - chore: improve code comments clarity by [@&#8203;xibeiyoumian](https://github.com/xibeiyoumian) in [#&#8203;626](https://github.com/tower-rs/tower-http/pull/626) - ci: Update to actions/checkout v6 by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;629](https://github.com/tower-rs/tower-http/pull/629) - ci: msrv resolver by [@&#8203;seanmonstar](https://github.com/seanmonstar) in [#&#8203;635](https://github.com/tower-rs/tower-http/pull/635) - chore: Remove resolved cargo-deny config by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;631](https://github.com/tower-rs/tower-http/pull/631) - ci: Update to cargo-check-external-types 0.4.0 by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;633](https://github.com/tower-rs/tower-http/pull/633) - examples: Use typed default value clap config by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;634](https://github.com/tower-rs/tower-http/pull/634) - examples: Disable unused reqwest feature by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;632](https://github.com/tower-rs/tower-http/pull/632) - examples: Update to reqwest 0.13 by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;640](https://github.com/tower-rs/tower-http/pull/640) - Fix clippy warnings in warp-key-value-store example by [@&#8203;jplatte](https://github.com/jplatte) in [#&#8203;637](https://github.com/tower-rs/tower-http/pull/637) - ci: Use Swatinem/rust-cache\@&#8203;v2 to cache by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;644](https://github.com/tower-rs/tower-http/pull/644) - ci: Remove unused working-directory config by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;645](https://github.com/tower-rs/tower-http/pull/645) - Use cargo-deny graph config by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;639](https://github.com/tower-rs/tower-http/pull/639) - Fix: follow redirect unicode in [#&#8203;646](https://github.com/tower-rs/tower-http/pull/646) - doc: remove mention of deprecated bearer method in lib.rs comment by [@&#8203;VojtaStanek](https://github.com/VojtaStanek) in [#&#8203;641](https://github.com/tower-rs/tower-http/pull/641) - Allow Unicode-3.0 license by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;648](https://github.com/tower-rs/tower-http/pull/648) - fix(docs): typo by [@&#8203;carlocorradini](https://github.com/carlocorradini) in [#&#8203;649](https://github.com/tower-rs/tower-http/pull/649) - fix: remove unused GzEncoder import in decompression in [#&#8203;647](https://github.com/tower-rs/tower-http/pull/647) - docs: update Example server in [#&#8203;652](https://github.com/tower-rs/tower-http/pull/652) - Don't automatically enable tracing for fs feature by [@&#8203;ginnyTheCat](https://github.com/ginnyTheCat) in [#&#8203;614](https://github.com/tower-rs/tower-http/pull/614) - examples: Remove unnecessary trait bound by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;651](https://github.com/tower-rs/tower-http/pull/651) - Remove implicit async-compression feature by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;642](https://github.com/tower-rs/tower-http/pull/642) - fix clippy warnings by [@&#8203;alexanderkjall](https://github.com/alexanderkjall) in [#&#8203;659](https://github.com/tower-rs/tower-http/pull/659) - Check for reserved DOS names by [@&#8203;Darksonn](https://github.com/Darksonn) in [#&#8203;663](https://github.com/tower-rs/tower-http/pull/663) - enable clippy for tower-http and fix current issues by [@&#8203;GlenDC](https://github.com/GlenDC) in [#&#8203;407](https://github.com/tower-rs/tower-http/pull/407) - chore: remove implicit tokio feature by [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer) in [#&#8203;628](https://github.com/tower-rs/tower-http/pull/628) - trace: adds back call to classify_eos on trailers by [@&#8203;markdingram](https://github.com/markdingram) in [#&#8203;483](https://github.com/tower-rs/tower-http/pull/483) - Make AsyncReadBody::with_capacity public by [@&#8203;bouk](https://github.com/bouk) in [#&#8203;415](https://github.com/tower-rs/tower-http/pull/415) - examples: Use axum::body::to_bytes by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;650](https://github.com/tower-rs/tower-http/pull/650) - ci: Remove unnecessary protoc setup by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;665](https://github.com/tower-rs/tower-http/pull/665) - feat(on-early-drop): Add middleware for client early drop detection by [@&#8203;fbergero](https://github.com/fbergero) in [#&#8203;636](https://github.com/tower-rs/tower-http/pull/636) - chore: release tower-http 0.6.9 by [@&#8203;jlizen](https://github.com/jlizen) in [#&#8203;666](https://github.com/tower-rs/tower-http/pull/666) #### New Contributors - [@&#8203;xibeiyoumian](https://github.com/xibeiyoumian) made their first contribution in [#&#8203;626](https://github.com/tower-rs/tower-http/pull/626) - [@&#8203;VojtaStanek](https://github.com/VojtaStanek) made their first contribution in [#&#8203;641](https://github.com/tower-rs/tower-http/pull/641) - [@&#8203;carlocorradini](https://github.com/carlocorradini) made their first contribution in [#&#8203;649](https://github.com/tower-rs/tower-http/pull/649) - [@&#8203;ginnyTheCat](https://github.com/ginnyTheCat) made their first contribution in [#&#8203;614](https://github.com/tower-rs/tower-http/pull/614) - [@&#8203;alexanderkjall](https://github.com/alexanderkjall) made their first contribution in [#&#8203;659](https://github.com/tower-rs/tower-http/pull/659) - [@&#8203;Darksonn](https://github.com/Darksonn) made their first contribution in [#&#8203;663](https://github.com/tower-rs/tower-http/pull/663) - [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer) made their first contribution in [#&#8203;628](https://github.com/tower-rs/tower-http/pull/628) - [@&#8203;bouk](https://github.com/bouk) made their first contribution in [#&#8203;415](https://github.com/tower-rs/tower-http/pull/415) - [@&#8203;fbergero](https://github.com/fbergero) made their first contribution in [#&#8203;636](https://github.com/tower-rs/tower-http/pull/636) - [@&#8203;jlizen](https://github.com/jlizen) made their first contribution in [#&#8203;666](https://github.com/tower-rs/tower-http/pull/666) **Full Changelog**: <https://github.com/tower-rs/tower-http/compare/tower-http-0.6.8...tower-http-0.6.9> ### [`v0.6.8`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.6.8) [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.6.7...tower-http-0.6.8) #### Fixed - Disable `multiple_members` in Gzip decoder, since HTTP context only uses one member. ([#&#8203;621]) [#&#8203;621]: https://github.com/tower-rs/tower-http/pull/621 #### What's Changed - Disable `multiple_members` option for gzip decoder by [@&#8203;ducaale](https://github.com/ducaale) in [#&#8203;621](https://github.com/tower-rs/tower-http/pull/621) - ci: Pin tracing in MSRV job by [@&#8203;ducaale](https://github.com/ducaale) in [#&#8203;622](https://github.com/tower-rs/tower-http/pull/622) - ci: Switch cargo-public-api-crates to cargo-check-external-types by [@&#8203;tottoto](https://github.com/tottoto) in [#&#8203;613](https://github.com/tower-rs/tower-http/pull/613) - Remove deprecated annotations and Refactor From implementations by [@&#8203;sinder38](https://github.com/sinder38) in [#&#8203;608](https://github.com/tower-rs/tower-http/pull/608) - v0.6.8 by [@&#8203;seanmonstar](https://github.com/seanmonstar) in [#&#8203;624](https://github.com/tower-rs/tower-http/pull/624) #### New Contributors - [@&#8203;sinder38](https://github.com/sinder38) made their first contribution in [#&#8203;608](https://github.com/tower-rs/tower-http/pull/608) **Full Changelog**: <https://github.com/tower-rs/tower-http/compare/tower-http-0.6.7...tower-http-0.6.8> ### [`v0.6.7`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.6.7) [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.6.6...tower-http-0.6.7) #### Added - `TimeoutLayer::with_status_code(status)` to define the status code returned when timeout is reached. ([#&#8203;599]) #### Deprecated - `auth::require_authorization` is too basic for real-world. ([#&#8203;591]) - `TimeoutLayer::new()` should be replaced with `TimeoutLayer::with_status_code()`. (Previously was `StatusCode::REQUEST_TIMEOUT`) ([#&#8203;599]) #### Fixed - `on_eos` is now called even for successful responses. ([#&#8203;580]) - `ServeDir`: call fallback when filename is invalid ([#&#8203;586]) - `decompression` will not fail when body is empty ([#&#8203;618]) [#&#8203;580]: https://github.com/tower-rs/tower-http/pull/580 [#&#8203;586]: https://github.com/tower-rs/tower-http/pull/586 [#&#8203;591]: https://github.com/tower-rs/tower-http/pull/591 [#&#8203;599]: https://github.com/tower-rs/tower-http/pull/599 [#&#8203;618]: https://github.com/tower-rs/tower-http/pull/618 #### New Contributors - [@&#8203;mladedav](https://github.com/mladedav) made their first contribution in [#&#8203;580](https://github.com/tower-rs/tower-http/pull/580) - [@&#8203;aryaveersr](https://github.com/aryaveersr) made their first contribution in [#&#8203;586](https://github.com/tower-rs/tower-http/pull/586) - [@&#8203;soerenmeier](https://github.com/soerenmeier) made their first contribution in [#&#8203;588](https://github.com/tower-rs/tower-http/pull/588) - [@&#8203;gjabell](https://github.com/gjabell) made their first contribution in [#&#8203;591](https://github.com/tower-rs/tower-http/pull/591) - [@&#8203;FalkWoldmann](https://github.com/FalkWoldmann) made their first contribution in [#&#8203;599](https://github.com/tower-rs/tower-http/pull/599) - [@&#8203;ducaale](https://github.com/ducaale) made their first contribution in [#&#8203;618](https://github.com/tower-rs/tower-http/pull/618) **Full Changelog**: <https://github.com/tower-rs/tower-http/compare/tower-http-0.6.6...tower-http-0.6.7> ### [`v0.6.6`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.6.6) [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.6.5...tower-http-0.6.6) #### Fixed - compression: fix panic when looking in vary header ([#&#8203;578]) [#&#8203;578]: https://github.com/tower-rs/tower-http/pull/578 #### New Contributors - [@&#8203;sulami](https://github.com/sulami) made their first contribution in [#&#8203;578](https://github.com/tower-rs/tower-http/pull/578) **Full Changelog**: <https://github.com/tower-rs/tower-http/compare/tower-http-0.6.5...tower-http-0.6.6> ### [`v0.6.5`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.6.5) [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.6.4...tower-http-0.6.5) #### Added - normalize_path: add `append_trailing_slash()` mode ([#&#8203;547]) #### Fixed - redirect: remove payload headers if redirect changes method to GET ([#&#8203;575]) - compression: avoid setting `vary: accept-encoding` if already set ([#&#8203;572]) [#&#8203;547]: https://github.com/tower-rs/tower-http/pull/547 [#&#8203;572]: https://github.com/tower-rs/tower-http/pull/572 [#&#8203;575]: https://github.com/tower-rs/tower-http/pull/575 #### New Contributors - [@&#8203;daalfox](https://github.com/daalfox) made their first contribution in [#&#8203;547](https://github.com/tower-rs/tower-http/pull/547) - [@&#8203;mherrerarendon](https://github.com/mherrerarendon) made their first contribution in [#&#8203;574](https://github.com/tower-rs/tower-http/pull/574) - [@&#8203;linyihai](https://github.com/linyihai) made their first contribution in [#&#8203;575](https://github.com/tower-rs/tower-http/pull/575) **Full Changelog**: <https://github.com/tower-rs/tower-http/compare/tower-http-0.6.4...tower-http-0.6.5> ### [`v0.6.4`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.6.4): tower-http 0.6.4 [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.6.3...tower-http-0.6.4) #### Added - decompression: Support HTTP responses containing multiple ZSTD frames ([#&#8203;548]) - The `ServiceExt` trait for chaining layers onto an arbitrary http service just like `ServiceBuilderExt` allows for `ServiceBuilder` ([#&#8203;563]) #### Fixed - Remove unnecessary trait bounds on `S::Error` for `Service` impls of `RequestBodyTimeout<S>` and `ResponseBodyTimeout<S>` ([#&#8203;533]) - compression: Respect `is_end_stream` ([#&#8203;535]) - Fix a rare panic in `fs::ServeDir` ([#&#8203;553]) - Fix invalid `content-lenght` of 1 in response to range requests to empty files ([#&#8203;556]) - In `AsyncRequireAuthorization`, use the original inner service after it is ready, instead of using a clone ([#&#8203;561]) [#&#8203;533]: https://github.com/tower-rs/tower-http/pull/533 [#&#8203;535]: https://github.com/tower-rs/tower-http/pull/535 [#&#8203;548]: https://github.com/tower-rs/tower-http/pull/548 [#&#8203;553]: https://github.com/tower-rs/tower-http/pull/556 [#&#8203;556]: https://github.com/tower-rs/tower-http/pull/556 [#&#8203;561]: https://github.com/tower-rs/tower-http/pull/561 [#&#8203;563]: https://github.com/tower-rs/tower-http/pull/563 ### [`v0.6.3`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.6.3): tower-http 0.6.3 [Compare Source](https://github.com/tower-rs/tower-http/compare/tower-http-0.6.2...tower-http-0.6.3) *This release was yanked because its definition of `ServiceExt` was quite unhelpful, in a way that's very unlikely that anybody would start depending on within the small timeframe before this was yanked, but that was technically breaking to change.* </details> <details> <summary>tokio-rs/tracing (tracing)</summary> ### [`v0.1.44`](https://github.com/tokio-rs/tracing/releases/tag/tracing-0.1.44): tracing 0.1.44 [Compare Source](https://github.com/tokio-rs/tracing/compare/tracing-0.1.43...tracing-0.1.44) ##### Fixed - Fix `record_all` panic ([#&#8203;3432]) ##### Changed - `tracing-core`: updated to 0.1.36 ([#&#8203;3440]) [#&#8203;3432]: https://github.com/tokio-rs/tracing/pull/3432 [#&#8203;3440]: https://github.com/tokio-rs/tracing/pull/3440 ### [`v0.1.43`](https://github.com/tokio-rs/tracing/releases/tag/tracing-0.1.43): tracing 0.1.43 [Compare Source](https://github.com/tokio-rs/tracing/compare/tracing-0.1.42...tracing-0.1.43) ##### Important The previous release [0.1.42] was yanked because [#&#8203;3382] was a breaking change. See further details in [#&#8203;3424]. This release contains all the changes from that version, plus a revert for the problematic part of the breaking PR. ##### Fixed - Revert "make `valueset` macro sanitary" ([#&#8203;3425]) [#&#8203;3382]: https://github.com/tokio-rs/tracing/pull/3382 [#&#8203;3424]: https://github.com/tokio-rs/tracing/pull/3424 [#&#8203;3425]: https://github.com/tokio-rs/tracing/pull/3425 [0.1.42]: https://github.com/tokio-rs/tracing/releases/tag/tracing-0.1.42 ### [`v0.1.42`](https://github.com/tokio-rs/tracing/releases/tag/tracing-0.1.42): tracing 0.1.42 [Compare Source](https://github.com/tokio-rs/tracing/compare/tracing-0.1.41...tracing-0.1.42) ##### Important The [`Span::record_all`] method has been removed from the documented API. It was always unsuable via the documented API as it requried a `ValueSet` which has no publically documented constructors. The method remains, but should not be used outside of `tracing` macros. ##### Added - **attributes**: Support constant expressions as instrument field names ([#&#8203;3158]) - Add `record_all!` macro for recording multiple values in one call ([#&#8203;3227]) - **core**: Improve code generation at trace points significantly ([#&#8203;3398]) ##### Changed - `tracing-core`: updated to 0.1.35 ([#&#8203;3414]) - `tracing-attributes`: updated to 0.1.31 ([#&#8203;3417]) ##### Fixed - Fix "name / parent" variant of `event!` ([#&#8203;2983]) - Remove 'r#' prefix from raw identifiers in field names ([#&#8203;3130]) - Fix perf regression when `release_max_level_*` not set ([#&#8203;3373]) - Use imported instead of fully qualified path ([#&#8203;3374]) - Make `valueset` macro sanitary ([#&#8203;3382]) ##### Documented - **core**: Add missing `dyn` keyword in `Visit` documentation code sample ([#&#8203;3387]) [#&#8203;2983]: https://github.com/tokio-rs/tracing/pull/#&#8203;2983 [#&#8203;3130]: https://github.com/tokio-rs/tracing/pull/#&#8203;3130 [#&#8203;3158]: https://github.com/tokio-rs/tracing/pull/#&#8203;3158 [#&#8203;3227]: https://github.com/tokio-rs/tracing/pull/#&#8203;3227 [#&#8203;3373]: https://github.com/tokio-rs/tracing/pull/#&#8203;3373 [#&#8203;3374]: https://github.com/tokio-rs/tracing/pull/#&#8203;3374 [#&#8203;3382]: https://github.com/tokio-rs/tracing/pull/#&#8203;3382 [#&#8203;3387]: https://github.com/tokio-rs/tracing/pull/#&#8203;3387 [#&#8203;3398]: https://github.com/tokio-rs/tracing/pull/#&#8203;3398 [#&#8203;3414]: https://github.com/tokio-rs/tracing/pull/#&#8203;3414 [#&#8203;3417]: https://github.com/tokio-rs/tracing/pull/#&#8203;3417 [`Span::record_all`]: https://docs.rs/tracing/0.1.41/tracing/struct.Span.html#method.record_all </details> <details> <summary>Microsoft/tslib (tslib)</summary> ### [`v2.9.1`](https://github.com/microsoft/tslib/releases/tag/v2.9.1): tslib 2.9.1 [Compare Source](https://github.com/Microsoft/tslib/compare/v2.8.1...v2.9.1) #### What's Changed - Update dependencies by [@&#8203;jakebailey](https://github.com/jakebailey) in [microsoft#283](https://github.com/microsoft/tslib/pull/283) - Switch to new release pipeline by [@&#8203;jakebailey](https://github.com/jakebailey) in [microsoft#289](https://github.com/microsoft/tslib/pull/289) - Port content mapper changes to rewriteRelativeImportExtension by [@&#8203;andrewbranch](https://github.com/andrewbranch) in [microsoft#295](https://github.com/microsoft/tslib/pull/295) - Stop requiring an ignored lockfile in release workflows by [@&#8203;jakebailey](https://github.com/jakebailey) in [microsoft#296](https://github.com/microsoft/tslib/pull/296) - Bump tslib to 2.9.0 by [@&#8203;typescript-automation](https://github.com/typescript-automation)\[bot] in [microsoft#297](https://github.com/microsoft/tslib/pull/297) - Stop running tests in the Azure release pipeline by [@&#8203;jakebailey](https://github.com/jakebailey) in [microsoft#298](https://github.com/microsoft/tslib/pull/298) - Bump tslib to 2.9.1 by [@&#8203;typescript-automation](https://github.com/typescript-automation)\[bot] in [microsoft#299](https://github.com/microsoft/tslib/pull/299) **Full Changelog**: <https://github.com/microsoft/tslib/compare/v2.8.1...v2.9.1> </details> <details> <summary>microsoft/TypeScript (typescript)</summary> ### [`v5.9.3`](https://github.com/microsoft/TypeScript/releases/tag/v5.9.3): TypeScript 5.9.3 [Compare Source](https://github.com/microsoft/TypeScript/compare/v5.9.2...v5.9.3) Note: this tag was recreated to point at the correct commit. The npm package contained the correct content. For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-9/) - [fixed issues query for Typescript 5.9.0 (Beta)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.9.0%22+is%3Aclosed+). - [fixed issues query for Typescript 5.9.1 (RC)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.9.1%22+is%3Aclosed+). - *No specific changes for TypeScript 5.9.2 (Stable)* - [fixed issues query for Typescript 5.9.3 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.9.3%22+is%3Aclosed+). Downloads are available on: - [npm](https://www.npmjs.com/package/typescript) ### [`v5.9.2`](https://github.com/microsoft/TypeScript/releases/tag/v5.9.2): TypeScript 5.9 [Compare Source](https://github.com/microsoft/TypeScript/compare/v5.8.3...v5.9.2) Note: this tag was recreated to point at the correct commit. The npm package contained the correct content. For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-9/) - [fixed issues query for Typescript 5.9.0 (Beta)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.9.0%22+is%3Aclosed+). - [fixed issues query for Typescript 5.9.1 (RC)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.9.1%22+is%3Aclosed+). - *No specific changes for TypeScript 5.9.2 (Stable)* Downloads are available on: - [npm](https://www.npmjs.com/package/typescript) </details> <details> <summary>typescript-eslint/typescript-eslint (typescript-eslint)</summary> ### [`v8.72.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8721-2026-10-26) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.72.0...v8.72.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.72.1) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.72.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8720-2026-10-19) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.71.2...v8.72.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.72.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.71.2`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8712-2026-10-12) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.71.1...v8.71.2) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.71.2) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.71.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8711-2026-10-05) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.71.0...v8.71.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.71.1) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.71.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8710-2026-09-28) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.70.1...v8.71.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.71.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.70.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8701-2026-09-21) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.70.0...v8.70.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.70.1) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.70.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8700-2026-09-07) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.69.0...v8.70.0) ##### 🩹 Fixes - **eslint-plugin:** \[no-deprecated] report deprecated imported values used in object shorthand properties ([#&#8203;12780](https://github.com/typescript-eslint/typescript-eslint/pull/12780)) ##### ❤️ Thank You - Ulrich Stark [@&#8203;ulrichstark](https://github.com/ulrichstark) See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.70.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.69.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8690-2026-08-31) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.68.0...v8.69.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.69.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.68.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8680-2026-08-24) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.67.0...v8.68.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.68.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.67.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8670-2026-08-10) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.66.0...v8.67.0) ##### 🚀 Features - **typescript-eslint:** export basic globs for using tseslint ([#&#8203;12105](https://github.com/typescript-eslint/typescript-eslint/pull/12105)) ##### ❤️ Thank You - Claude Sonnet 5 - Evyatar Daud [@&#8203;StyleShit](https://github.com/StyleShit) - Josh Goldberg - Josh Goldberg ✨ - Kirk Waiblinger [@&#8203;kirkwaiblinger](https://github.com/kirkwaiblinger) See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.67.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.66.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8660-2026-08-03) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.65.0...v8.66.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.66.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.65.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8650-2026-07-20) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.64.0...v8.65.0) ##### 🚀 Features - add warning when TS 7 is detected ([#&#8203;12529](https://github.com/typescript-eslint/typescript-eslint/pull/12529)) ##### ❤️ Thank You - Josh Goldberg ✨ - Kirk Waiblinger [@&#8203;kirkwaiblinger](https://github.com/kirkwaiblinger) See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.65.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.64.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8640-2026-07-13) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.63.0...v8.64.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.64.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.63.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8630-2026-07-06) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.62.1...v8.63.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.63.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.62.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8621-2026-06-29) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.62.0...v8.62.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.62.1) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.62.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8620-2026-06-22) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.61.1...v8.62.0) ##### 🚀 Features - remove redundant package.json "files" ([#&#8203;12444](https://github.com/typescript-eslint/typescript-eslint/pull/12444)) ##### ❤️ Thank You - Kirk Waiblinger [@&#8203;kirkwaiblinger](https://github.com/kirkwaiblinger) See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.62.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.61.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8611-2026-06-15) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.61.0...v8.61.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.61.1) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.61.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8610-2026-06-08) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.60.1...v8.61.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.61.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.60.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8601-2026-06-01) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.60.0...v8.60.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.1) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.60.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8600-2026-05-25) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.59.4...v8.60.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.59.4`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8594-2026-05-18) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.59.3...v8.59.4) ##### 🩹 Fixes - **typescript-eslint:** export Compatible\* types from typescript-eslint to resolve pnpm TS error ([#&#8203;12340](https://github.com/typescript-eslint/typescript-eslint/pull/12340)) ##### ❤️ Thank You - Kirk Waiblinger [@&#8203;kirkwaiblinger](https://github.com/kirkwaiblinger) See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.4) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.59.3`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8593-2026-05-11) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.59.2...v8.59.3) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.3) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.59.2`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8592-2026-05-04) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.59.1...v8.59.2) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.2) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.59.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8591-2026-04-27) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.59.0...v8.59.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.1) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.59.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8590-2026-04-20) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.58.2...v8.59.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.58.2`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8582-2026-04-13) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.58.1...v8.58.2) ##### 🩹 Fixes - remove tsbuildinfo cache file from published packages ([#&#8203;12187](https://github.com/typescript-eslint/typescript-eslint/pull/12187)) ##### ❤️ Thank You - Abhijeet Singh [@&#8203;cseas](https://github.com/cseas) See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.58.2) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.58.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8581-2026-04-08) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.58.0...v8.58.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.58.1) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.58.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8580-2026-03-30) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.57.2...v8.58.0) ##### 🚀 Features - support TypeScript 6 ([#&#8203;12124](https://github.com/typescript-eslint/typescript-eslint/pull/12124)) ##### ❤️ Thank You - Evyatar Daud [@&#8203;StyleShit](https://github.com/StyleShit) See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.58.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.57.2`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8572-2026-03-23) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.57.1...v8.57.2) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.57.2) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.57.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8571-2026-03-16) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.57.0...v8.57.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.57.1) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.57.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8570-2026-03-09) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.56.1...v8.57.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.57.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.56.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8561-2026-02-23) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.56.0...v8.56.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.56.1) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.56.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8560-2026-02-16) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.55.0...v8.56.0) ##### 🚀 Features - support ESLint v10 ([#&#8203;12057](https://github.com/typescript-eslint/typescript-eslint/pull/12057)) ##### ❤️ Thank You - Brad Zacher [@&#8203;bradzacher](https://github.com/bradzacher) - Joshua Chen See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.56.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.55.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8550-2026-02-09) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.54.0...v8.55.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.55.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.54.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8540-2026-01-26) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.53.1...v8.54.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.53.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8531-2026-01-19) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.53.0...v8.53.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.53.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8530-2026-01-12) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.52.0...v8.53.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.52.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8520-2026-01-05) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.51.0...v8.52.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.51.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8510-2025-12-29) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.50.1...v8.51.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.50.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8501-2025-12-22) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.50.0...v8.50.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.50.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8500-2025-12-15) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.49.0...v8.50.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.49.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8490-2025-12-08) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.48.1...v8.49.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.48.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8481-2025-12-02) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.48.0...v8.48.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.48.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8480-2025-11-24) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.47.0...v8.48.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.47.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8470-2025-11-17) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.46.4...v8.47.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.46.4`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8464-2025-11-10) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.46.3...v8.46.4) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.46.3`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8463-2025-11-03) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.46.2...v8.46.3) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.46.2`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8462-2025-10-20) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.46.1...v8.46.2) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.46.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8461-2025-10-13) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.46.0...v8.46.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.46.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8460-2025-10-06) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.45.0...v8.46.0) ##### 🚀 Features - **typescript-eslint:** export util types ([#&#8203;10848](https://github.com/typescript-eslint/typescript-eslint/pull/10848), [#&#8203;10849](https://github.com/typescript-eslint/typescript-eslint/pull/10849)) ##### ❤️ Thank You - Mister-Hope [@&#8203;Mister-Hope](https://github.com/Mister-Hope) You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.45.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8450-2025-09-29) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.44.1...v8.45.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.44.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8441-2025-09-22) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.44.0...v8.44.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.44.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8440-2025-09-15) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.43.0...v8.44.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.43.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8430-2025-09-08) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.42.0...v8.43.0) ##### 🩹 Fixes - **eslint-plugin:** \[no-deprecated] should report deprecated exports and reexports ([#&#8203;11359](https://github.com/typescript-eslint/typescript-eslint/pull/11359)) ##### ❤️ Thank You - Victor Genaev [@&#8203;mainframev](https://github.com/mainframev) You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. ### [`v8.42.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8420-2025-09-02) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.41.0...v8.42.0) ##### 🚀 Features - deprecate tseslint.config() ([#&#8203;11531](https://github.com/typescript-eslint/typescript-eslint/pull/11531)) ##### 🩹 Fixes - **typescript-eslint:** handle non-normalized windows paths produced by jiti ([#&#8203;11546](https://github.com/typescript-eslint/typescript-eslint/pull/11546)) ##### ❤️ Thank You - Kirk Waiblinger [@&#8203;kirkwaiblinger](https://github.com/kirkwaiblinger) You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. </details> <details> <summary>uuid-rs/uuid (uuid)</summary> ### [`v1.29.0`](https://github.com/uuid-rs/uuid/releases/tag/v1.29.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.28.0...v1.29.0) #### What's Changed - Add versioned constructors to NonNilUuid by [@&#8203;RanaPriyansh](https://github.com/RanaPriyansh) in [#&#8203;919](https://github.com/uuid-rs/uuid/pull/919) - Prepare for 1.29.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;920](https://github.com/uuid-rs/uuid/pull/920) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.28.0...v1.29.0> ### [`v1.28.0`](https://github.com/uuid-rs/uuid/releases/tag/v1.28.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.27.0...v1.28.0) #### What's Changed - Add optional serde format adapters by [@&#8203;RanaPriyansh](https://github.com/RanaPriyansh) in [#&#8203;916](https://github.com/uuid-rs/uuid/pull/916) - Prepare for 1.28.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;918](https://github.com/uuid-rs/uuid/pull/918) #### New Contributors - [@&#8203;RanaPriyansh](https://github.com/RanaPriyansh) made their first contribution in [#&#8203;916](https://github.com/uuid-rs/uuid/pull/916) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.27.0...v1.28.0> ### [`v1.27.0`](https://github.com/uuid-rs/uuid/releases/tag/v1.27.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.26.1...v1.27.0) #### What's Changed - Accept case-insensitive urn:uuid: prefixes when parsing by [@&#8203;jaideeppyne](https://github.com/jaideeppyne) in [#&#8203;912](https://github.com/uuid-rs/uuid/pull/912) - Fix ordering of V7 UUIDs created by earlier seconds with later subsec nanos by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;915](https://github.com/uuid-rs/uuid/pull/915) - Prepare for 1.27.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;917](https://github.com/uuid-rs/uuid/pull/917) #### New Contributors - [@&#8203;jaideeppyne](https://github.com/jaideeppyne) made their first contribution in [#&#8203;912](https://github.com/uuid-rs/uuid/pull/912) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.26.1...v1.27.0> ### [`v1.26.1`](https://github.com/uuid-rs/uuid/releases/tag/v1.26.1) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.26.0...v1.26.1) #### What's Changed - Seat the v7 counter below the version nibble by [@&#8203;lenamonj](https://github.com/lenamonj) in [#&#8203;907](https://github.com/uuid-rs/uuid/pull/907) - Don't panic in overflowing Timestamp to SystemTime conversion by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;909](https://github.com/uuid-rs/uuid/pull/909) - Prepare for 1.26.1 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;910](https://github.com/uuid-rs/uuid/pull/910) #### New Contributors - [@&#8203;lenamonj](https://github.com/lenamonj) made their first contribution in [#&#8203;907](https://github.com/uuid-rs/uuid/pull/907) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.26.0...v1.26.1> ### [`v1.26.0`](https://github.com/uuid-rs/uuid/releases/tag/v1.26.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/1.25.0...v1.26.0) #### What's Changed - Add ContextV7::with_additional_precision_bits by [@&#8203;ChrisJr404](https://github.com/ChrisJr404) in [#&#8203;904](https://github.com/uuid-rs/uuid/pull/904) - Prepare for 1.26.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;905](https://github.com/uuid-rs/uuid/pull/905) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/1.25.0...v1.26.0> ### [`v1.25.0`](https://github.com/uuid-rs/uuid/releases/tag/1.25.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.24.1...1.25.0) #### What's Changed - Add a serde::bytes module that encodes a Uuid as a byte string by [@&#8203;ChrisJr404](https://github.com/ChrisJr404) in [#&#8203;902](https://github.com/uuid-rs/uuid/pull/902) - Prepare for 1.25.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;903](https://github.com/uuid-rs/uuid/pull/903) #### New Contributors - [@&#8203;ChrisJr404](https://github.com/ChrisJr404) made their first contribution in [#&#8203;902](https://github.com/uuid-rs/uuid/pull/902) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.24.1...1.25.0> ### [`v1.24.1`](https://github.com/uuid-rs/uuid/releases/tag/v1.24.1) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.24.0...v1.24.1) #### What's Changed - Fix non-ASCII character handling in parse diagnostics by [@&#8203;questfever](https://github.com/questfever) in [#&#8203;899](https://github.com/uuid-rs/uuid/pull/899) - Prepare for 1.24.1 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;900](https://github.com/uuid-rs/uuid/pull/900) #### New Contributors - [@&#8203;questfever](https://github.com/questfever) made their first contribution in [#&#8203;899](https://github.com/uuid-rs/uuid/pull/899) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.24.0...v1.24.1> ### [`v1.24.0`](https://github.com/uuid-rs/uuid/releases/tag/v1.24.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.23.5...v1.24.0) #### What's Changed - feat(fmt): support encoding into MaybeUninit buffers by [@&#8203;weifanglab](https://github.com/weifanglab) in [#&#8203;892](https://github.com/uuid-rs/uuid/pull/892) - Prepare for 1.24.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;896](https://github.com/uuid-rs/uuid/pull/896) #### New Contributors - [@&#8203;weifanglab](https://github.com/weifanglab) made their first contribution in [#&#8203;892](https://github.com/uuid-rs/uuid/pull/892) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.23.5...v1.24.0> ### [`v1.23.5`](https://github.com/uuid-rs/uuid/releases/tag/v1.23.5) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.23.4...v1.23.5) #### What's Changed - doc: Fix broken link by [@&#8203;frostyplanet](https://github.com/frostyplanet) in [#&#8203;891](https://github.com/uuid-rs/uuid/pull/891) - perf: Optimize UUID hex parsing and formatting by [@&#8203;geeknoid](https://github.com/geeknoid) in [#&#8203;894](https://github.com/uuid-rs/uuid/pull/894) - Prepare for 1.23.5 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;895](https://github.com/uuid-rs/uuid/pull/895) #### New Contributors - [@&#8203;geeknoid](https://github.com/geeknoid) made their first contribution in [#&#8203;894](https://github.com/uuid-rs/uuid/pull/894) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.23.4...v1.23.5> ### [`v1.23.4`](https://github.com/uuid-rs/uuid/releases/tag/v1.23.4) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.23.3...v1.23.4) #### What's Changed - Fix up name of fuzz script in readme by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;888](https://github.com/uuid-rs/uuid/pull/888) - document fixes by [@&#8203;frostyplanet](https://github.com/frostyplanet) in [#&#8203;889](https://github.com/uuid-rs/uuid/pull/889) - Prepare for 1.23.4 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;890](https://github.com/uuid-rs/uuid/pull/890) #### New Contributors - [@&#8203;frostyplanet](https://github.com/frostyplanet) made their first contribution in [#&#8203;889](https://github.com/uuid-rs/uuid/pull/889) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.23.3...v1.23.4> ### [`v1.23.3`](https://github.com/uuid-rs/uuid/releases/tag/v1.23.3) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.23.2...v1.23.3) #### What's Changed - Fix up parser panic on empty input by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;886](https://github.com/uuid-rs/uuid/pull/886) - Prepare for 1.23.3 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;887](https://github.com/uuid-rs/uuid/pull/887) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.23.2...v1.23.3> ### [`v1.23.2`](https://github.com/uuid-rs/uuid/releases/tag/v1.23.2) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.23.1...v1.23.2) #### What's Changed - Improve error messages for ambiguous formats by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;882](https://github.com/uuid-rs/uuid/pull/882) - Prepare for 1.23.2 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;883](https://github.com/uuid-rs/uuid/pull/883) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.23.1...v1.23.2> ### [`v1.23.1`](https://github.com/uuid-rs/uuid/releases/tag/v1.23.1) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.23.0...v1.23.1) #### What's Changed - Remove deprecated `msrv` feature from wasm-bindgen dependency by [@&#8203;guybedford](https://github.com/guybedford) in [#&#8203;877](https://github.com/uuid-rs/uuid/pull/877) - fix: Timestamp::from_gregorian deprecation note by [@&#8203;aznashwan](https://github.com/aznashwan) in [#&#8203;878](https://github.com/uuid-rs/uuid/pull/878) - Prepare for 1.23.1 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;879](https://github.com/uuid-rs/uuid/pull/879) #### New Contributors - [@&#8203;guybedford](https://github.com/guybedford) made their first contribution in [#&#8203;877](https://github.com/uuid-rs/uuid/pull/877) - [@&#8203;aznashwan](https://github.com/aznashwan) made their first contribution in [#&#8203;878](https://github.com/uuid-rs/uuid/pull/878) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.23.0...v1.23.1> ### [`v1.23.0`](https://github.com/uuid-rs/uuid/releases/tag/v1.23.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.22.0...v1.23.0) #### What's Changed - feat: add support for 'hyphenated' format in the serde module by [@&#8203;FrenchDilettante](https://github.com/FrenchDilettante) in [#&#8203;865](https://github.com/uuid-rs/uuid/pull/865) - Fix a number of bugs in time-related code by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;872](https://github.com/uuid-rs/uuid/pull/872) - Reword invalid char error message by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;873](https://github.com/uuid-rs/uuid/pull/873) - Impl cleanups by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;874](https://github.com/uuid-rs/uuid/pull/874) - Use LazyLock to synchronize v1/v6 context initialization by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;875](https://github.com/uuid-rs/uuid/pull/875) - Prepare for 1.23.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;876](https://github.com/uuid-rs/uuid/pull/876) #### New Contributors - [@&#8203;FrenchDilettante](https://github.com/FrenchDilettante) made their first contribution in [#&#8203;865](https://github.com/uuid-rs/uuid/pull/865) #### Special thanks [@&#8203;meng-xu-cs](https://github.com/meng-xu-cs) raised a series of bugs against the timestamp logic in `uuid` using automated tooling. The issues themselves were reasonably and responsibly presented and the end result is a better `uuid` library for everyone. Thanks! ### Deprecations This release includes the following deprecations: - `Context`: Renamed to `ContextV1` - `Timestamp::from_gregorian`: Renamed to `Timestamp::from_gregorian_time` ### Change to `Version::Max` `Version::Max`'s `u8` representation has changed from `0xff` to `0x0f` to match the value returned by `Uuid::get_version_num`. ### Change to `Uuid::get_version` for the max UUID `Uuid::get_version` will only return `Some(Version::Max)` if the UUID is actually the max UUID (all bytes are `0xff`). Previously it would return `Some` if only the version field was `0x0f`. This change matches the behaviour of the nil UUID, which only returns `Some(Version::Nil)` if the UUID is the nil UUID (all bytes are `0x00`). **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.22.0...v1.23.0> ### [`v1.22.0`](https://github.com/uuid-rs/uuid/releases/tag/v1.22.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.21.0...v1.22.0) #### What's Changed - Default to rand 0.10 by [@&#8203;haxtibal](https://github.com/haxtibal) in [#&#8203;863](https://github.com/uuid-rs/uuid/pull/863) - Prepare for 1.22.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;864](https://github.com/uuid-rs/uuid/pull/864) #### New Contributors - [@&#8203;haxtibal](https://github.com/haxtibal) made their first contribution in [#&#8203;863](https://github.com/uuid-rs/uuid/pull/863) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.21.0...v1.22.0> ### [`v1.21.0`](https://github.com/uuid-rs/uuid/releases/tag/v1.21.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.20.0...v1.21.0) #### What's Changed - Update getrandom to 0.4 by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;858](https://github.com/uuid-rs/uuid/pull/858) - feat: impl core::error::Error for Error by [@&#8203;XAMPPRocky](https://github.com/XAMPPRocky) in [#&#8203;852](https://github.com/uuid-rs/uuid/pull/852) - Prepare for 1.21.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;859](https://github.com/uuid-rs/uuid/pull/859) #### New Contributors - [@&#8203;XAMPPRocky](https://github.com/XAMPPRocky) made their first contribution in [#&#8203;852](https://github.com/uuid-rs/uuid/pull/852) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.20.0...v1.21.0> ### [`v1.20.0`](https://github.com/uuid-rs/uuid/releases/tag/v1.20.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.19.0...v1.20.0) #### What's Changed - Derive Ord and PartialOrd for NonNilUuid by [@&#8203;mivort](https://github.com/mivort) in [#&#8203;854](https://github.com/uuid-rs/uuid/pull/854) - Implement Deserialize on adapter types by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;855](https://github.com/uuid-rs/uuid/pull/855) - Deprecate `macro-diagnostics` by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;856](https://github.com/uuid-rs/uuid/pull/856) - Prepare for 1.20.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;857](https://github.com/uuid-rs/uuid/pull/857) #### New Contributors - [@&#8203;mivort](https://github.com/mivort) made their first contribution in [#&#8203;854](https://github.com/uuid-rs/uuid/pull/854) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.19.0...v1.20.0> ### [`v1.19.0`](https://github.com/uuid-rs/uuid/releases/tag/v1.19.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.18.1...v1.19.0) #### What's Changed - Switch serde dependency to serde_core by [@&#8203;paolobarbolini](https://github.com/paolobarbolini) in [#&#8203;843](https://github.com/uuid-rs/uuid/pull/843) - Upgrade to 2021 edition and fix most clippy warnings by [@&#8203;paolobarbolini](https://github.com/paolobarbolini) in [#&#8203;848](https://github.com/uuid-rs/uuid/pull/848) - Prepare for 1.19.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;849](https://github.com/uuid-rs/uuid/pull/849) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.18.1...v1.19.0> ### [`v1.18.1`](https://github.com/uuid-rs/uuid/releases/tag/v1.18.1) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.18.0...v1.18.1) #### What's Changed - Unsafe cleanup by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;841](https://github.com/uuid-rs/uuid/pull/841) - Prepare for 1.18.1 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;842](https://github.com/uuid-rs/uuid/pull/842) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.18.0...v1.18.1> ### [`v1.18.0`](https://github.com/uuid-rs/uuid/releases/tag/v1.18.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.17.0...v1.18.0) #### What's Changed - Fix up mismatched_lifetime_syntaxes lint by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;837](https://github.com/uuid-rs/uuid/pull/837) - Conversions between `Timestamp` and `std::time::SystemTime` by [@&#8203;dcormier](https://github.com/dcormier) in [#&#8203;835](https://github.com/uuid-rs/uuid/pull/835) - Wrap the error type used in time conversions by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;838](https://github.com/uuid-rs/uuid/pull/838) - Prepare for 1.18.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;839](https://github.com/uuid-rs/uuid/pull/839) #### New Contributors - [@&#8203;dcormier](https://github.com/dcormier) made their first contribution in [#&#8203;835](https://github.com/uuid-rs/uuid/pull/835) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.17.0...v1.18.0> ### [`v1.17.0`](https://github.com/uuid-rs/uuid/releases/tag/v1.17.0) [Compare Source](https://github.com/uuid-rs/uuid/compare/v1.16.0...v1.17.0) #### What's Changed - Added convenience implementation TryFrom<String> for std by [@&#8203;Nahuel-M](https://github.com/Nahuel-M) in [#&#8203;819](https://github.com/uuid-rs/uuid/pull/819) - Update OSX builds to arm by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;825](https://github.com/uuid-rs/uuid/pull/825) - Replace derive(Hash) with manual impl in Uuid by [@&#8203;diopoex](https://github.com/diopoex) in [#&#8203;824](https://github.com/uuid-rs/uuid/pull/824) - Add `wasm32v1-none` Support by [@&#8203;bushrat011899](https://github.com/bushrat011899) in [#&#8203;828](https://github.com/uuid-rs/uuid/pull/828) - Prepare for 1.17.0 release by [@&#8203;KodrAus](https://github.com/KodrAus) in [#&#8203;829](https://github.com/uuid-rs/uuid/pull/829) #### New Contributors - [@&#8203;Nahuel-M](https://github.com/Nahuel-M) made their first contribution in [#&#8203;819](https://github.com/uuid-rs/uuid/pull/819) - [@&#8203;diopoex](https://github.com/diopoex) made their first contribution in [#&#8203;824](https://github.com/uuid-rs/uuid/pull/824) **Full Changelog**: <https://github.com/uuid-rs/uuid/compare/v1.16.0...v1.17.0> </details> <details> <summary>vuejs/core (vue)</summary> ### [`v3.5.44`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3544-2026-10-13) [Compare Source](https://github.com/vuejs/core/compare/v3.5.43...v3.5.44) ##### Bug Fixes - **compat:** expose \_setupProxy for Vue 2.7 compiled script setup (fix [#&#8203;11164](https://github.com/vuejs/core/issues/11164)) ([#&#8203;15618](https://github.com/vuejs/core/issues/15618)) ([f08059d](https://github.com/vuejs/core/commit/f08059d0ca8cf28b8258a6095f8760fa1804d333)) - **compiler-core:** parenthesise v-for key in v-memo cache guard ([#&#8203;15724](https://github.com/vuejs/core/issues/15724)) ([d084b90](https://github.com/vuejs/core/commit/d084b904903a7710ea19b7256b7c681e838eb63e)), closes [#&#8203;15723](https://github.com/vuejs/core/issues/15723) - **compiler-dom:** correctly stringify `0` and `false` in `v-html` ([#&#8203;15571](https://github.com/vuejs/core/issues/15571)) ([9f3b437](https://github.com/vuejs/core/commit/9f3b4377c4bb5ff32b35ff08ce7670f6be6f5dbb)) - **compiler-dom:** inject transition persisted for v-show in production ([#&#8203;15783](https://github.com/vuejs/core/issues/15783)) ([89cb272](https://github.com/vuejs/core/commit/89cb2724bf3423fc38dca68af3139d736e6b4833)) - **compiler-sfc:** error when defineModel prop options reference a destructured prop ([#&#8203;15604](https://github.com/vuejs/core/issues/15604)) ([38012a5](https://github.com/vuejs/core/commit/38012a5ad90a41c228e153774d089cba9515cf2d)), closes [#&#8203;15602](https://github.com/vuejs/core/issues/15602) - **custom-element:** skip mounting an async custom element removed while its component loads ([#&#8203;15777](https://github.com/vuejs/core/issues/15777)) ([0f8e7b4](https://github.com/vuejs/core/commit/0f8e7b40175059e262e0db232ae0c08b427486b5)), closes [#&#8203;15775](https://github.com/vuejs/core/issues/15775) - **hydration:** observe children of a display: contents root in hydrateOnVisible ([#&#8203;15773](https://github.com/vuejs/core/issues/15773)) ([7f688e8](https://github.com/vuejs/core/commit/7f688e84745558d95b836c0aac25c3ca3257e943)) - **KeepAlive:** unmount pruned current component when its vnode was cloned on mount ([#&#8203;15711](https://github.com/vuejs/core/issues/15711)) ([92798ac](https://github.com/vuejs/core/commit/92798ac0a8810283055478dab1e54569f3e94c23)), closes [#&#8203;15710](https://github.com/vuejs/core/issues/15710) - **reactivity:** avoid mutating native array iterators ([#&#8203;15703](https://github.com/vuejs/core/issues/15703)) ([7f9d45d](https://github.com/vuejs/core/commit/7f9d45d15bd10b6b9b136eb2b3a8879b449fec0d)), closes [#&#8203;15643](https://github.com/vuejs/core/issues/15643) - **reactivity:** do not track deps in watcher callbacks run inside another effect ([#&#8203;15782](https://github.com/vuejs/core/issues/15782)) ([db00fe9](https://github.com/vuejs/core/commit/db00fe9819eb17f0a5bde7e1fcfafe5984e267a3)), closes [#&#8203;5009](https://github.com/vuejs/core/issues/5009) - **reactivity:** once watcher should stop when its callback throws ([#&#8203;15755](https://github.com/vuejs/core/issues/15755)) ([ae4bd94](https://github.com/vuejs/core/commit/ae4bd94b6e5675f991696236dcc76a11d0597535)) - **reactivity:** preserve shallow collection semantics ([#&#8203;15793](https://github.com/vuejs/core/issues/15793)) ([b600466](https://github.com/vuejs/core/commit/b600466135e0910d142d14f56ffec933c1c420a2)), closes [#&#8203;15792](https://github.com/vuejs/core/issues/15792) - **runtime-core:** detect new prop keys when comparing full props ([#&#8203;15634](https://github.com/vuejs/core/issues/15634)) ([702fa61](https://github.com/vuejs/core/commit/702fa61be9344852989bcd178681adec13264469)), closes [#&#8203;15632](https://github.com/vuejs/core/issues/15632) - **runtime-core:** keep async placeholder for block patching and pending component updates ([#&#8203;15554](https://github.com/vuejs/core/issues/15554)) ([05ec25f](https://github.com/vuejs/core/commit/05ec25f835cc65058bac7a85e4a5eb8075ed3151)), closes [#&#8203;15551](https://github.com/vuejs/core/issues/15551) - **runtime-core:** only flush jobs queued by the root render itself ([#&#8203;15757](https://github.com/vuejs/core/issues/15757)) ([0bea14b](https://github.com/vuejs/core/commit/0bea14b962f1f6e27d2d994132efc2269945ab0f)), closes [#&#8203;6728](https://github.com/vuejs/core/issues/6728) - **runtime-core:** render nothing for an invalid v-for range in production ([#&#8203;15742](https://github.com/vuejs/core/issues/15742)) ([ad19e7d](https://github.com/vuejs/core/commit/ad19e7da3d58b772513ba3c2ded731eedb7d227d)) - **runtime-dom:** preserve v-show display for unchanged style strings ([#&#8203;15794](https://github.com/vuejs/core/issues/15794)) ([c0a6d3f](https://github.com/vuejs/core/commit/c0a6d3f2bbf80cf930f4c837409dbee95a149271)) - **runtime-dom:** treat playsinline as a boolean attribute ([#&#8203;15627](https://github.com/vuejs/core/issues/15627)) ([a084e44](https://github.com/vuejs/core/commit/a084e4486f1c4dc118518d43a1c7547031c53a5c)) - **server-renderer:** propagate async setup errors ([#&#8203;15857](https://github.com/vuejs/core/issues/15857)) ([6930374](https://github.com/vuejs/core/commit/693037486f38b3d3acf4cdf7b9850917c44cf9cb)), closes [#&#8203;15716](https://github.com/vuejs/core/issues/15716) - **ssr:** honor falsy vnode content overrides ([#&#8203;15769](https://github.com/vuejs/core/issues/15769)) ([c11c5c8](https://github.com/vuejs/core/commit/c11c5c8f07c8527b537b9ce6d801f80bbdd12129)) - **suspense:** mount resolved async component with its own namespace ([#&#8203;15640](https://github.com/vuejs/core/issues/15640)) ([2a086a2](https://github.com/vuejs/core/commit/2a086a2bee33abc30e20f8a3b0a2be418ae48967)), closes [#&#8203;15639](https://github.com/vuejs/core/issues/15639) - **suspense:** skip rendering async components unmounted while pending ([4ab865a](https://github.com/vuejs/core/commit/4ab865a848a1da3d10fb674f857e5fff13094644)) - **teleport:** move targetStart and keep children before targetAnchor ([#&#8203;15818](https://github.com/vuejs/core/issues/15818)) ([d3c6e02](https://github.com/vuejs/core/commit/d3c6e02e7405b9dafa75b1007ca45fb376d45729)), closes [#&#8203;15817](https://github.com/vuejs/core/issues/15817) - **transition-group:** measure nested groups against their moving outer item ([#&#8203;15848](https://github.com/vuejs/core/issues/15848)) ([1936c87](https://github.com/vuejs/core/commit/1936c8791b61374fd21a99c99f450ee2b057b33e)), closes [#&#8203;5385](https://github.com/vuejs/core/issues/5385) [#&#8203;1531](https://github.com/vuejs/core/issues/1531) - **transition:** handle comment-wrapped component roots ([#&#8203;15853](https://github.com/vuejs/core/issues/15853)) ([ff35014](https://github.com/vuejs/core/commit/ff3501429d4970c37194708b055492a56d9e5be5)), closes [#&#8203;6080](https://github.com/vuejs/core/issues/6080) [#&#8203;5500](https://github.com/vuejs/core/issues/5500) ### [`v3.5.43`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3543-2026-09-17) [Compare Source](https://github.com/vuejs/core/compare/v3.5.42...v3.5.43) ##### Bug Fixes - **compiler-sfc:** ignore comment delimiters inside strings and url() when parsing css vars ([#&#8203;15548](https://github.com/vuejs/core/issues/15548)) ([2fde323](https://github.com/vuejs/core/commit/2fde3239ca3cdb9b152870f695cd3401fcaada94)) - **compiler-sfc:** prepend semicolon for await in switch case ([#&#8203;15498](https://github.com/vuejs/core/issues/15498)) ([9a1df69](https://github.com/vuejs/core/commit/9a1df69b63fecd743919af89a419783dd030b9f7)), closes [#&#8203;15495](https://github.com/vuejs/core/issues/15495) - **compiler-sfc:** restore await scope when leaving nested blocks ([5409708](https://github.com/vuejs/core/commit/54097087a0918b98f16c84599b1a6d654e952ca7)), closes [#&#8203;15465](https://github.com/vuejs/core/issues/15465) - **compiler-sfc:** reuse parsed parent configs across tsconfig walks (fix [#&#8203;15478](https://github.com/vuejs/core/issues/15478)) ([#&#8203;15480](https://github.com/vuejs/core/issues/15480)) ([d6febaa](https://github.com/vuejs/core/commit/d6febaab8c0d95a6320e7e37276c00e8159e9cb2)) - **hydration:** run leave hooks for hydration placeholders ([#&#8203;15431](https://github.com/vuejs/core/issues/15431)) ([5dda192](https://github.com/vuejs/core/commit/5dda192082afa4985951d90e229324d522e25c22)) - **reactivity:** preserve readonly wrappers in array copy methods ([#&#8203;15469](https://github.com/vuejs/core/issues/15469)) ([599f35b](https://github.com/vuejs/core/commit/599f35bbb21f3d78b7aa0818342ab4f27442a333)) - **runtime-core:** unmount v-once children after parent rerenders ([#&#8203;15435](https://github.com/vuejs/core/issues/15435)) ([d720338](https://github.com/vuejs/core/commit/d720338d5d29c1fac82abbe6f7066fe703ce624d)) - **shared:** handle circular references in looseEqual ([#&#8203;15499](https://github.com/vuejs/core/issues/15499)) ([718f782](https://github.com/vuejs/core/commit/718f782b14c7e0165d20b6f4dd8664f78054b62c)), closes [#&#8203;15496](https://github.com/vuejs/core/issues/15496) - **shared:** preserve comment-like text in style values ([#&#8203;15471](https://github.com/vuejs/core/issues/15471)) ([b9456cb](https://github.com/vuejs/core/commit/b9456cb40db714a6f573a1713d92e96d4c9e9533)) - **suspense:** don't drop nested suspense patches during hydration ([#&#8203;15429](https://github.com/vuejs/core/issues/15429)) ([76d42dc](https://github.com/vuejs/core/commit/76d42dc1874e82e62e9650debd68a53472d810e0)) - **suspense:** keep the boundary pending while its branch is patched ([#&#8203;15411](https://github.com/vuejs/core/issues/15411)) ([bfcfe9e](https://github.com/vuejs/core/commit/bfcfe9e4d0254f85af452544a058291ef88dce1a)), closes [#&#8203;7506](https://github.com/vuejs/core/issues/7506) - **suspense:** patch a hydrating boundary's pending branch in place ([#&#8203;15432](https://github.com/vuejs/core/issues/15432)) ([2cde6f7](https://github.com/vuejs/core/commit/2cde6f754cb3e4695a21fb5719e0c75ee2fc5c61)) - **suspense:** unmount the DOM an interrupted async component claimed ([#&#8203;15430](https://github.com/vuejs/core/issues/15430)) ([fb9b45c](https://github.com/vuejs/core/commit/fb9b45ce780f656a23fcb374eb8ea9f7abadc594)) - **types:** keep optional props when a runtime prop uses a generic PropType ([#&#8203;15523](https://github.com/vuejs/core/issues/15523)) ([243aabc](https://github.com/vuejs/core/commit/243aabccf05fefb3760f2dab1c2d75aa424baad7)), closes [#&#8203;9546](https://github.com/vuejs/core/issues/9546) ### [`v3.5.42`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3542-2026-08-27) [Compare Source](https://github.com/vuejs/core/compare/v3.5.41...v3.5.42) ##### Bug Fixes - **hydration:** handle async component unmount before lazy hydration ([#&#8203;15252](https://github.com/vuejs/core/issues/15252)) ([6e1814a](https://github.com/vuejs/core/commit/6e1814aa355aad8dd32a89873e95267297ae0609)) - **hydration:** handle moving unresolved async fragment ([#&#8203;15263](https://github.com/vuejs/core/issues/15263)) ([a72036f](https://github.com/vuejs/core/commit/a72036f66bcb9a4f3b3737cda19eeba1bc531e15)) - **runtime-core:** avoid caching unmounted suspense children ([#&#8203;15291](https://github.com/vuejs/core/issues/15291)) ([b535917](https://github.com/vuejs/core/commit/b535917d46d5c6e28c1d3b9185bfa1665127c73a)), closes [#&#8203;15288](https://github.com/vuejs/core/issues/15288) - **runtime-core:** keep .trim result when combined with .number v-model modifier ([#&#8203;15346](https://github.com/vuejs/core/issues/15346)) ([f8d42e1](https://github.com/vuejs/core/commit/f8d42e1cf2a0ccb43c50fad6e972cb130c53824e)) - **runtime-core:** resolve $el for dev root comment fragment ([#&#8203;15313](https://github.com/vuejs/core/issues/15313)) ([8654f35](https://github.com/vuejs/core/commit/8654f35118a1165ac30fd398ceaff8849c44d9d5)), closes [#&#8203;12680](https://github.com/vuejs/core/issues/12680) - **runtime-dom:** support !important on CSS custom properties in style binding ([#&#8203;15348](https://github.com/vuejs/core/issues/15348)) ([31da934](https://github.com/vuejs/core/commit/31da934fcbe73ab8ed187bf820c80b24ced474be)) - **server-renderer:** reject CR in attribute names ([#&#8203;15266](https://github.com/vuejs/core/issues/15266)) ([a2b40db](https://github.com/vuejs/core/commit/a2b40db9a83b36ed9da3a16403cf8f040262d73f)) - **shared:** correctly compare Map and Set values ([#&#8203;15328](https://github.com/vuejs/core/issues/15328)) ([ef82a26](https://github.com/vuejs/core/commit/ef82a26775952a665545d3771788bd23b2efec91)), closes [#&#8203;15320](https://github.com/vuejs/core/issues/15320) - **suspense:** don't treat the leaving branch as the fallback while its mount is pending ([#&#8203;15333](https://github.com/vuejs/core/issues/15333)) ([cd19745](https://github.com/vuejs/core/commit/cd1974562357dd73101d048f207a694a4e5310ec)), closes [#&#8203;15332](https://github.com/vuejs/core/issues/15332) - **v-model:** re-sync select when model is overridden in change handler ([#&#8203;15298](https://github.com/vuejs/core/issues/15298)) ([6eaecc1](https://github.com/vuejs/core/commit/6eaecc14d8151a7d258b80ce0519e5ecc17a2bef)), closes [#&#8203;10505](https://github.com/vuejs/core/issues/10505) ### [`v3.5.41`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3541-2026-08-05) [Compare Source](https://github.com/vuejs/core/compare/v3.5.40...v3.5.41) ##### Bug Fixes - **compiler-core:** preserve vnode lifecycle in stable v-for ([#&#8203;11682](https://github.com/vuejs/core/issues/11682)) ([02421cd](https://github.com/vuejs/core/commit/02421cdbc4da5dd2eaf39e6c51aa790f9310db62)), closes [#&#8203;9239](https://github.com/vuejs/core/issues/9239) [#&#8203;12569](https://github.com/vuejs/core/issues/12569) - **compiler-sfc:** handle transformed template AST after cache invalidation ([#&#8203;15136](https://github.com/vuejs/core/issues/15136)) ([a4440c0](https://github.com/vuejs/core/commit/a4440c01b96798a23bef12cb6f9ada5ffaba0d3a)), closes [#&#8203;15126](https://github.com/vuejs/core/issues/15126) [#&#8203;15128](https://github.com/vuejs/core/issues/15128) - **custom-element:** preserve nested async mount order ([#&#8203;15154](https://github.com/vuejs/core/issues/15154)) ([71f9ff5](https://github.com/vuejs/core/commit/71f9ff58a2a8748b2c1ec26c55c89f7343b86110)), closes [#&#8203;15153](https://github.com/vuejs/core/issues/15153) - **custom-element:** warn when props override native properties ([#&#8203;12125](https://github.com/vuejs/core/issues/12125)) ([22b53ea](https://github.com/vuejs/core/commit/22b53eafecf56a9fb97f00b8e8b69c90a073d2d4)), closes [#&#8203;12124](https://github.com/vuejs/core/issues/12124) - **runtime-core:** avoid re-fetching resource props with unchanged values ([#&#8203;15105](https://github.com/vuejs/core/issues/15105)) ([a7513a1](https://github.com/vuejs/core/commit/a7513a1a3ed411ccd90bf135c6cba9c9cb2ef10b)) - **runtime-core:** restore SSR setup state when handling async setup result ([#&#8203;15114](https://github.com/vuejs/core/issues/15114)) ([b6191cb](https://github.com/vuejs/core/commit/b6191cbf95c680e076164a319dd987a14de658c1)), closes [#&#8203;15113](https://github.com/vuejs/core/issues/15113) - **scheduler:** avoid stack overflow when flushing very large post cb arrays ([#&#8203;15143](https://github.com/vuejs/core/issues/15143)) ([c04a45d](https://github.com/vuejs/core/commit/c04a45d15498ebba0de3ceae674b88ac43cb9e76)), closes [#&#8203;15142](https://github.com/vuejs/core/issues/15142) - **slots:** handle nullish v-bind slot props ([#&#8203;15177](https://github.com/vuejs/core/issues/15177)) ([2506700](https://github.com/vuejs/core/commit/2506700b289c5277eb465bf959ce0ea23329094d)) - **ssr:** normalize hidden states during hydration ([#&#8203;13125](https://github.com/vuejs/core/issues/13125)) ([4e467d7](https://github.com/vuejs/core/commit/4e467d7ae2cd7d0af031fac8865dcff73cb1cf16)) - **transition:** support transition to teleport component child ([#&#8203;11959](https://github.com/vuejs/core/issues/11959)) ([77061fe](https://github.com/vuejs/core/commit/77061fe88608a5ab77fec705ff65cb81779eb01c)), closes [#&#8203;11910](https://github.com/vuejs/core/issues/11910) - **types:** preserve defineModel inference with factory defaults ([#&#8203;15097](https://github.com/vuejs/core/issues/15097)) ([0516c43](https://github.com/vuejs/core/commit/0516c43284084f0526032a1cc312fb6916bf04fe)), closes [#&#8203;15096](https://github.com/vuejs/core/issues/15096) - **v-model:** preserve text input before hydration ([#&#8203;14411](https://github.com/vuejs/core/issues/14411)) ([2468464](https://github.com/vuejs/core/commit/2468464798a0fc050f86f8fa0bb96a34851bd824)), closes [#&#8203;14403](https://github.com/vuejs/core/issues/14403) ### [`v3.5.40`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3540-2026-07-16) [Compare Source](https://github.com/vuejs/core/compare/v3.5.39...v3.5.40) ##### Bug Fixes - **compiler-core:** avoid leaking slot branch keys ([#&#8203;15051](https://github.com/vuejs/core/issues/15051)) ([20c9d26](https://github.com/vuejs/core/commit/20c9d263d3bfafdfbcc1921f259fd8f711e18659)), closes [#&#8203;15048](https://github.com/vuejs/core/issues/15048) - **hydration:** pass namespace when patching dynamic props ([#&#8203;15082](https://github.com/vuejs/core/issues/15082)) ([e0d2723](https://github.com/vuejs/core/commit/e0d27234ddd2061383cb5dcc475d6b9558ed8e4f)), closes [#&#8203;15081](https://github.com/vuejs/core/issues/15081) [#&#8203;15050](https://github.com/vuejs/core/issues/15050) - **reactivity:** handle effect removal during scope stop ([#&#8203;15084](https://github.com/vuejs/core/issues/15084)) ([378f978](https://github.com/vuejs/core/commit/378f9783248a4a4f20781d665d4f7089f39cae6e)), closes [#&#8203;15083](https://github.com/vuejs/core/issues/15083) - **runtime-core:** skip lazy hydration for detached roots ([#&#8203;15092](https://github.com/vuejs/core/issues/15092)) ([97f3525](https://github.com/vuejs/core/commit/97f3525551ad06103083eb2cbf9858c5e57cd58e)), closes [#&#8203;15091](https://github.com/vuejs/core/issues/15091) - **runtime-core:** unwind dangling blocks when slot content throws ([#&#8203;15071](https://github.com/vuejs/core/issues/15071)) ([ddc132d](https://github.com/vuejs/core/commit/ddc132d7c054ecd2029ddcc95bcba770cd44f022)), closes [#&#8203;15070](https://github.com/vuejs/core/issues/15070) - **runtime-dom:** respect current select model type ([#&#8203;15010](https://github.com/vuejs/core/issues/15010)) ([eb89e93](https://github.com/vuejs/core/commit/eb89e935a771ab7fc3f8e67a82bc8fc7ea28bdaa)), closes [#&#8203;15009](https://github.com/vuejs/core/issues/15009) - **server-renderer:** handle errors in optimized component renders ([#&#8203;12601](https://github.com/vuejs/core/issues/12601)) ([474907c](https://github.com/vuejs/core/commit/474907c0f01d021c564545137051a2b56eb4a769)), closes [#&#8203;12575](https://github.com/vuejs/core/issues/12575) - **server-renderer:** remove package dependency cycle ([#&#8203;15063](https://github.com/vuejs/core/issues/15063)) ([4d35eca](https://github.com/vuejs/core/commit/4d35ecadb6f625b0f7407ccee0e357c2dd8084c7)) - **shared:** prevent SSR comment escaping from creating closing delimiters ([#&#8203;15045](https://github.com/vuejs/core/issues/15045)) ([bd962bb](https://github.com/vuejs/core/commit/bd962bbaca746d8f65775a07723420406ebad0da)) - **types:** don't constrain component $el type to Element ([#&#8203;15040](https://github.com/vuejs/core/issues/15040)) ([164460a](https://github.com/vuejs/core/commit/164460a52988c44dc34a541219c88120078372a0)) ### [`v3.5.39`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3539-2026-06-25) [Compare Source](https://github.com/vuejs/core/compare/v3.5.38...v3.5.39) ##### Bug Fixes - **compiler-core:** correct filter rewrite recursion ([#&#8203;14959](https://github.com/vuejs/core/issues/14959)) ([be7ce31](https://github.com/vuejs/core/commit/be7ce314b96256f1c56f53088d51ed6bc77fde28)) - **hydration:** force patch dynamic props when hydrating ([#&#8203;9083](https://github.com/vuejs/core/issues/9083)) ([024cf06](https://github.com/vuejs/core/commit/024cf06daa33db4660431f20aa050acb99cff07f)), closes [#&#8203;9033](https://github.com/vuejs/core/issues/9033) - **hydration:** respect data-allow-mismatch on conditional branches ([#&#8203;12801](https://github.com/vuejs/core/issues/12801)) ([164af63](https://github.com/vuejs/core/commit/164af639a120421194f7afe0e097bdf254c90199)), closes [#&#8203;12782](https://github.com/vuejs/core/issues/12782) - **reactivity:** avoid triggering effects when set fails ([#&#8203;14964](https://github.com/vuejs/core/issues/14964)) ([e450973](https://github.com/vuejs/core/commit/e450973eabc0038f398344b981acd8759c246c50)) - **runtime-core:** handle non-isomorphic block element update ([#&#8203;15002](https://github.com/vuejs/core/issues/15002)) ([932ddd0](https://github.com/vuejs/core/commit/932ddd058d69be9bbd8cd796c89f0d1a4fc128d7)), closes [#&#8203;6385](https://github.com/vuejs/core/issues/6385) - **runtime-core:** normalize function children for elements and Teleport ([#&#8203;9108](https://github.com/vuejs/core/issues/9108)) ([2f374cd](https://github.com/vuejs/core/commit/2f374cda18cbe331ede1a49a324b423c75d0faf3)), closes [#&#8203;9107](https://github.com/vuejs/core/issues/9107) - **runtime-core:** pause tracking when invoking function refs ([#&#8203;14985](https://github.com/vuejs/core/issues/14985)) ([3ac052b](https://github.com/vuejs/core/commit/3ac052b6b1e9d3978e98cc30a1a89a9b9b51358b)) - **runtime-core:** preserve once event listener name ([#&#8203;8341](https://github.com/vuejs/core/issues/8341)) ([87b73b6](https://github.com/vuejs/core/commit/87b73b64a0d9b4e2dd2dacfe98f2f1c2396d7a61)), closes [#&#8203;8342](https://github.com/vuejs/core/issues/8342) - **runtime-dom:** preserve option modifier event names ([#&#8203;8338](https://github.com/vuejs/core/issues/8338)) ([4b659e6](https://github.com/vuejs/core/commit/4b659e699925555464ea9ae8fa3e1984609f6dc2)), closes [#&#8203;8334](https://github.com/vuejs/core/issues/8334) - **ssr:** dedupe inherited scope ids during vnode rendering ([#&#8203;15005](https://github.com/vuejs/core/issues/15005)) ([027da6b](https://github.com/vuejs/core/commit/027da6b2810c4752131439d2645f3d931d07242f)), closes [#&#8203;12159](https://github.com/vuejs/core/issues/12159) [#&#8203;12175](https://github.com/vuejs/core/issues/12175) - **ssr:** resolve nested async teleport content ([#&#8203;9431](https://github.com/vuejs/core/issues/9431)) ([31d0f23](https://github.com/vuejs/core/commit/31d0f23757afb410c638a9c29d44d76d0944e18f)), closes [#&#8203;6207](https://github.com/vuejs/core/issues/6207) - **teleport:** handle teleport unmount edge case ([#&#8203;12705](https://github.com/vuejs/core/issues/12705)) ([671997a](https://github.com/vuejs/core/commit/671997ade74e34880cebe3c340269b8598c3b26c)), closes [#&#8203;12702](https://github.com/vuejs/core/issues/12702) - **types:** support named tuple emits ([#&#8203;12676](https://github.com/vuejs/core/issues/12676)) ([232f402](https://github.com/vuejs/core/commit/232f4022e3160b30b11748a6d97ea2c15ed3b74f)), closes [#&#8203;12673](https://github.com/vuejs/core/issues/12673) - **types:** validate defineModel defaults ([#&#8203;14968](https://github.com/vuejs/core/issues/14968)) ([747f57e](https://github.com/vuejs/core/commit/747f57e9cdb3c5f084f8da5ca7e0e0b7b326b662)), closes [#&#8203;14966](https://github.com/vuejs/core/issues/14966) ### [`v3.5.38`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3538-2026-06-11) [Compare Source](https://github.com/vuejs/core/compare/v3.5.37...v3.5.38) ### [`v3.5.37`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3537-2026-06-11) [Compare Source](https://github.com/vuejs/core/compare/v3.5.36...v3.5.37) ### [`v3.5.36`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3536-2026-06-11) [Compare Source](https://github.com/vuejs/core/compare/v3.5.35...v3.5.36) ##### Bug Fixes - **compiler-core:** avoid crash on CDATA at the document root ([#&#8203;14916](https://github.com/vuejs/core/issues/14916)) ([0ea17e2](https://github.com/vuejs/core/commit/0ea17e232f9a8f4a9acf57c6addc78cf4f279c13)) - **compiler-core:** prefix dynamic keys on v-memo elements ([#&#8203;14922](https://github.com/vuejs/core/issues/14922)) ([68e978e](https://github.com/vuejs/core/commit/68e978e3e71a8ae40701808e78966f2168c5907c)), closes [#&#8203;14920](https://github.com/vuejs/core/issues/14920) - **compiler-sfc:** handle vue-ignore on leading intersection/union type ([#&#8203;14950](https://github.com/vuejs/core/issues/14950)) ([0dcd225](https://github.com/vuejs/core/commit/0dcd225c01f211ebb8ce4dda8c8eac10539abf1a)), closes [#&#8203;12254](https://github.com/vuejs/core/issues/12254) - **compiler-sfc:** respect var hoisting in props destructure ([48ad452](https://github.com/vuejs/core/commit/48ad452dd61926a59e358da3c74c5ef750ae21c4)) - **reactivity:** preserve watch callback return value when wrapped for `once: true` ([#&#8203;14902](https://github.com/vuejs/core/issues/14902)) ([450a8a8](https://github.com/vuejs/core/commit/450a8a8e45520f30fe8343c5016a777d888e53fc)) - **runtime-core:** add dev warning for silent catch in compat mode and fix test description typo ([#&#8203;14891](https://github.com/vuejs/core/issues/14891)) ([db3e117](https://github.com/vuejs/core/commit/db3e117025a7193291ed6676180a5a44bbe0ae76)) - **runtime-core:** force model update when reverted before sync ([#&#8203;14897](https://github.com/vuejs/core/issues/14897)) ([7f76378](https://github.com/vuejs/core/commit/7f76378b0d178a29113ee07d67faa48b637944e8)), closes [#&#8203;13524](https://github.com/vuejs/core/issues/13524) - **runtime-core:** skip async component callbacks after unmount ([#&#8203;14911](https://github.com/vuejs/core/issues/14911)) ([5300ead](https://github.com/vuejs/core/commit/5300ead57b3c14942d4c155ef5e485d5409e7f02)) - **transition:** avoid move transition for hidden v-show group children ([#&#8203;14895](https://github.com/vuejs/core/issues/14895)) ([c11f6ee](https://github.com/vuejs/core/commit/c11f6ee644412edf3eef6736991e895e4a3e1dde)), closes [#&#8203;14894](https://github.com/vuejs/core/issues/14894) - **watch:** trigger immediate callback for empty sources ([#&#8203;14914](https://github.com/vuejs/core/issues/14914)) ([1f2ca7e](https://github.com/vuejs/core/commit/1f2ca7e4837b1b0de0b91048fffdb03710c0b03e)), closes [#&#8203;14898](https://github.com/vuejs/core/issues/14898) ### [`v3.5.35`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3535-2026-05-27) [Compare Source](https://github.com/vuejs/core/compare/v3.5.34...v3.5.35) ##### Bug Fixes - **compiler-core:** avoid double processing v-for keys with v-memo ([#&#8203;14861](https://github.com/vuejs/core/issues/14861)) ([34a0ded](https://github.com/vuejs/core/commit/34a0ded4d27289a8f227462bd35b6341a4b51831)), closes [#&#8203;14859](https://github.com/vuejs/core/issues/14859) - **compiler-sfc:** resolve top-level exports from files registered as global types ([#&#8203;14805](https://github.com/vuejs/core/issues/14805)) ([3d077f2](https://github.com/vuejs/core/commit/3d077f26e33510f2ba001d14142ba76a1414dfff)), closes [nuxt/nuxt#33694](https://github.com/nuxt/nuxt/issues/33694) - **runtime-core:** avoid repeated hydration mismatch checks ([#&#8203;14857](https://github.com/vuejs/core/issues/14857)) ([170fc95](https://github.com/vuejs/core/commit/170fc95eb64b97024dcb3df770557065e2919aa8)), closes [#&#8203;14855](https://github.com/vuejs/core/issues/14855) - **runtime-core:** skip idle persisted transition hooks in keep-alive moves ([#&#8203;14865](https://github.com/vuejs/core/issues/14865)) ([80fc139](https://github.com/vuejs/core/commit/80fc139f90513943f1d0da20d353feec8a9ec894)), closes [#&#8203;14031](https://github.com/vuejs/core/issues/14031) - **server-renderer:** propagate sync errors from `ssrRenderSuspense` ([#&#8203;14804](https://github.com/vuejs/core/issues/14804)) ([4760997](https://github.com/vuejs/core/commit/47609975e294fbcc8017b6d68c9be38fa5508f36)), closes [nuxt/nuxt#28162](https://github.com/nuxt/nuxt/issues/28162) - **teleport:** skip child unmount when pending mount discarded ([#&#8203;14876](https://github.com/vuejs/core/issues/14876)) ([#&#8203;14877](https://github.com/vuejs/core/issues/14877)) ([584beb1](https://github.com/vuejs/core/commit/584beb1262d1247d41ed3b463c485c57022fa922)) ##### Performance Improvements - **reactivity:** skip type checks for cached proxies ([#&#8203;14860](https://github.com/vuejs/core/issues/14860)) ([5734fe9](https://github.com/vuejs/core/commit/5734fe97f6e42d7abb1893c8bc38a17f7deb00b1)) - **runtime-dom:** optimize array event handler dispatch ([#&#8203;14828](https://github.com/vuejs/core/issues/14828)) ([bb18dc8](https://github.com/vuejs/core/commit/bb18dc8e567ce22f1e5dfbc6b16c1003b48c2785)) - **server-renderer:** avoid materializing iterables in ssrRenderList ([#&#8203;14821](https://github.com/vuejs/core/issues/14821)) ([1b7a2cc](https://github.com/vuejs/core/commit/1b7a2cc15c501a4b1e4be61874879381af59b74f)) ### [`v3.5.34`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3534-2026-05-06) [Compare Source](https://github.com/vuejs/core/compare/v3.5.33...v3.5.34) ##### Bug Fixes - **compiler-sfc:** infer Vue ref wrapper types when source is unresolvable ([#&#8203;14758](https://github.com/vuejs/core/issues/14758)) ([7f46fd4](https://github.com/vuejs/core/commit/7f46fd411b4e3f75ca755ee1318ea8e9aff43f56)), closes [#&#8203;14729](https://github.com/vuejs/core/issues/14729) - **compiler-sfc:** preserve hash hrefs on `<image>` elements ([#&#8203;14756](https://github.com/vuejs/core/issues/14756)) ([090b2e3](https://github.com/vuejs/core/commit/090b2e3a5149ec951c5313b270e5400a1fc870ce)) - **compiler-sfc:** resolve type re-exports inside declare global ([#&#8203;14766](https://github.com/vuejs/core/issues/14766)) ([acfffe3](https://github.com/vuejs/core/commit/acfffe34e7724a84c21bb8e51e8a5bc0da35f350)) - **reactivity:** prevent orphan effect when created in a stopped scope ([#&#8203;14778](https://github.com/vuejs/core/issues/14778)) ([c8e2d4a](https://github.com/vuejs/core/commit/c8e2d4adc9112d2529de0434acc1188dfc399bf4)), closes [#&#8203;14777](https://github.com/vuejs/core/issues/14777) - **runtime-core:** avoid symbol coercion during props validation ([#&#8203;8539](https://github.com/vuejs/core/issues/8539)) ([23d4fb5](https://github.com/vuejs/core/commit/23d4fb5a6a070df3d2d4a043f0f62c141e376095)), closes [#&#8203;8487](https://github.com/vuejs/core/issues/8487) - **suspense:** avoid DOM leak with out-in transition in v-if fragment ([#&#8203;14762](https://github.com/vuejs/core/issues/14762)) ([9667e0d](https://github.com/vuejs/core/commit/9667e0d498ab39273614682986a666c3e73024d9)), closes [#&#8203;14761](https://github.com/vuejs/core/issues/14761) ### [`v3.5.33`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3533-2026-04-22) [Compare Source](https://github.com/vuejs/core/compare/v3.5.32...v3.5.33) ##### Bug Fixes - **compiler-sfc:** handle nested :deep in selector pseudos ([#&#8203;14725](https://github.com/vuejs/core/issues/14725)) ([bb9d265](https://github.com/vuejs/core/commit/bb9d265d8dcdde2af824fc01b24f9a7b3169f5fa)), closes [#&#8203;14724](https://github.com/vuejs/core/issues/14724) - **reactivity:** unlink effect scopes on out-of-order off ([#&#8203;14734](https://github.com/vuejs/core/issues/14734)) ([e7659be](https://github.com/vuejs/core/commit/e7659beafc5407e892fa70f3f4ade80263b0905d)), closes [#&#8203;14733](https://github.com/vuejs/core/issues/14733) - **runtime-dom:** preserve textarea resize dimensions ([#&#8203;14747](https://github.com/vuejs/core/issues/14747)) ([11fb2fd](https://github.com/vuejs/core/commit/11fb2fd4a246e40f6f350701dfea73ec525b4f59)), closes [#&#8203;14741](https://github.com/vuejs/core/issues/14741) - **teleport:** don't move teleport children if not mounted ([#&#8203;14702](https://github.com/vuejs/core/issues/14702)) ([6a61f44](https://github.com/vuejs/core/commit/6a61f4452ba1a31fc929cadf8abe3337ac4d3a46)), closes [#&#8203;14701](https://github.com/vuejs/core/issues/14701) - **transition:** preserve placeholder for conditional explicit default slots ([#&#8203;14748](https://github.com/vuejs/core/issues/14748)) ([45990ce](https://github.com/vuejs/core/commit/45990cecf4604b2f39c571ab6aefa49d362af36a)), closes [#&#8203;14727](https://github.com/vuejs/core/issues/14727) ### [`v3.5.32`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3532-2026-04-03) [Compare Source](https://github.com/vuejs/core/compare/v3.5.31...v3.5.32) ##### Bug Fixes - **runtime-core:** prevent currentInstance leak into sibling render during async setup re-entry ([#&#8203;14668](https://github.com/vuejs/core/issues/14668)) ([f166353](https://github.com/vuejs/core/commit/f1663535a163057788d3285dec54a245c3efb3ad)), closes [#&#8203;14667](https://github.com/vuejs/core/issues/14667) - **teleport:** handle updates before deferred mount ([#&#8203;14642](https://github.com/vuejs/core/issues/14642)) ([32b44f1](https://github.com/vuejs/core/commit/32b44f19f67aa30899817a7e79a4510f3b52970a)), closes [#&#8203;14640](https://github.com/vuejs/core/issues/14640) - **types:** allow customRef to have different getter/setter types ([#&#8203;14639](https://github.com/vuejs/core/issues/14639)) ([e20ddb0](https://github.com/vuejs/core/commit/e20ddb00188e9935884930046fa572eab7c9dcba)) - **types:** use private branding for shallowReactive ([#&#8203;14641](https://github.com/vuejs/core/issues/14641)) ([302c47a](https://github.com/vuejs/core/commit/302c47a4994bc8b47b8a2af6693d8cb6bbd4b06b)), closes [#&#8203;14638](https://github.com/vuejs/core/issues/14638) [#&#8203;14493](https://github.com/vuejs/core/issues/14493) ##### Reverts - Revert "fix(server-renderer): cleanup component effect scopes after SSR render" ([#&#8203;14674](https://github.com/vuejs/core/issues/14674)) ([219d83b](https://github.com/vuejs/core/commit/219d83bd305ce6fc052941acaaf02e7bc70616a4)), closes [#&#8203;14674](https://github.com/vuejs/core/issues/14674) [#&#8203;14669](https://github.com/vuejs/core/issues/14669) ### [`v3.5.31`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3531-2026-03-25) [Compare Source](https://github.com/vuejs/core/compare/v3.5.30...v3.5.31) ##### Bug Fixes - **compiler-sfc:** allow Node.js subpath imports patterns in asset urls ([#&#8203;13045](https://github.com/vuejs/core/issues/13045)) ([95c3356](https://github.com/vuejs/core/commit/95c33560c9af369d44a7670d0c3b93fb62323be2)), closes [#&#8203;9919](https://github.com/vuejs/core/issues/9919) - **compiler-sfc:** support template literal as defineModel name ([#&#8203;14622](https://github.com/vuejs/core/issues/14622)) ([bd7eef0](https://github.com/vuejs/core/commit/bd7eef0161d69bccd48ac303bc6a56ba8d718e2d)), closes [#&#8203;14621](https://github.com/vuejs/core/issues/14621) - **reactivity:** normalize toRef property keys before dep lookup + improve types ([#&#8203;14625](https://github.com/vuejs/core/issues/14625)) ([1bb28d0](https://github.com/vuejs/core/commit/1bb28d011b31bc75c80d2860bc6484cceec1ff20)), closes [#&#8203;12427](https://github.com/vuejs/core/issues/12427) [#&#8203;12431](https://github.com/vuejs/core/issues/12431) - **runtime-core:** invalidate detached v-for memo vnodes after unmount ([#&#8203;14624](https://github.com/vuejs/core/issues/14624)) ([560def4](https://github.com/vuejs/core/commit/560def426fc38c1710fda7ddd1ac634d67897960)), closes [#&#8203;12708](https://github.com/vuejs/core/issues/12708) [#&#8203;12710](https://github.com/vuejs/core/issues/12710) - **runtime-core:** preserve nullish event handlers in mergeProps ([#&#8203;14550](https://github.com/vuejs/core/issues/14550)) ([5725222](https://github.com/vuejs/core/commit/5725222a6bc5d1dd032318349ce0c540b1d63a49)) - **runtime-core:** prevent merging model listener when value is null or undefined ([#&#8203;14629](https://github.com/vuejs/core/issues/14629)) ([b39e032](https://github.com/vuejs/core/commit/b39e0329f67354702f4e417e55c15c61d2439657)) - **runtime-dom:** defer teleport mount/update until suspense resolves ([#&#8203;8619](https://github.com/vuejs/core/issues/8619)) ([88ed045](https://github.com/vuejs/core/commit/88ed04501555b9257df8d7ad86d844c2c2136e50)), closes [#&#8203;8603](https://github.com/vuejs/core/issues/8603) - **runtime-dom:** handle activeElement check in Shadow DOM for v-model ([#&#8203;14196](https://github.com/vuejs/core/issues/14196)) ([959ded2](https://github.com/vuejs/core/commit/959ded22ab7ea1453f607e0964e1fb6748ece6c7)) - **server-renderer:** cleanup component effect scopes after SSR render ([#&#8203;14548](https://github.com/vuejs/core/issues/14548)) ([862f11e](https://github.com/vuejs/core/commit/862f11ee017d51cb9573a8c0642055b3b17cace8)) - **suspense:** avoid unmount activeBranch twice if wrapped in transition ([#&#8203;9392](https://github.com/vuejs/core/issues/9392)) ([908c6ad](https://github.com/vuejs/core/commit/908c6ad05e1c76ae690d2e50f3bd28278af07e22)), closes [#&#8203;7966](https://github.com/vuejs/core/issues/7966) - **suspense:** update suspense vnode's el during branch self-update ([#&#8203;12922](https://github.com/vuejs/core/issues/12922)) ([a2c1700](https://github.com/vuejs/core/commit/a2c17004c84e5ce3c4e82e35b806ba381144eed3)), closes [#&#8203;12920](https://github.com/vuejs/core/issues/12920) - **transition:** skip enter guard while hmr updating ([#&#8203;14611](https://github.com/vuejs/core/issues/14611)) ([be0a2f1](https://github.com/vuejs/core/commit/be0a2f1a7fc3d81d05638798cc628848cfa62cef)), closes [#&#8203;14608](https://github.com/vuejs/core/issues/14608) - **types:** prevent shallowReactive marker from leaking into value unions ([#&#8203;14493](https://github.com/vuejs/core/issues/14493)) ([3b561db](https://github.com/vuejs/core/commit/3b561db4ab42d06166b002f13c0e97cb2bd4a061)), closes [#&#8203;14490](https://github.com/vuejs/core/issues/14490) ### [`v3.5.30`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3530-2026-03-09) [Compare Source](https://github.com/vuejs/core/compare/v3.5.29...v3.5.30) ##### Bug Fixes - **compat:** add `entities` to [@&#8203;vue/compat](https://github.com/vue/compat) deps to fix CJS edge cases ([#&#8203;12514](https://github.com/vuejs/core/issues/12514)) ([e725a67](https://github.com/vuejs/core/commit/e725a679e434a688c3493fc9af496501a8d1eeec)), closes [#&#8203;10609](https://github.com/vuejs/core/issues/10609) - **custom-element:** ensure child component styles are injected in correct order before parent styles ([#&#8203;13374](https://github.com/vuejs/core/issues/13374)) ([1398bf8](https://github.com/vuejs/core/commit/1398bf8dfbfef6b1bca154fc98d37044011a51be)), closes [#&#8203;13029](https://github.com/vuejs/core/issues/13029) - **custom-element:** properly locate parent when slotted in shadow dom ([#&#8203;12480](https://github.com/vuejs/core/issues/12480)) ([f06c81a](https://github.com/vuejs/core/commit/f06c81aa3dddbeff8bc2e2e63c0b6b6debcbdc13)), closes [#&#8203;12479](https://github.com/vuejs/core/issues/12479) - **custom-element:** should properly patch as props for vue custom elements ([#&#8203;12409](https://github.com/vuejs/core/issues/12409)) ([740983e](https://github.com/vuejs/core/commit/740983e6736255b183ee27a3f8b40e89ad7e3ba3)), closes [#&#8203;12408](https://github.com/vuejs/core/issues/12408) - **reactivity:** avoid duplicate raw/proxy entries in Set.add ([#&#8203;14545](https://github.com/vuejs/core/issues/14545)) ([d943612](https://github.com/vuejs/core/commit/d943612e59feb656e16568dea77b97856923c58c)) - **reactivity:** fix reduce on reactive arrays to preserve reactivity ([#&#8203;12737](https://github.com/vuejs/core/issues/12737)) ([16ef165](https://github.com/vuejs/core/commit/16ef165415224def18ec8247dabb84d5a1338c17)), closes [#&#8203;12735](https://github.com/vuejs/core/issues/12735) - **reactivity:** handle `Set` with initial reactive values edge case ([#&#8203;12393](https://github.com/vuejs/core/issues/12393)) ([5dc27ca](https://github.com/vuejs/core/commit/5dc27ca68fdbab95b37af15870d91515fc2412b2)), closes [#&#8203;8647](https://github.com/vuejs/core/issues/8647) - **runtime-core:** warn about negative number in v-for ([#&#8203;12308](https://github.com/vuejs/core/issues/12308)) ([9438cc5](https://github.com/vuejs/core/commit/9438cc54506a38038a1bf4b6698025f9a4cafb48)) - **ssr:** prevent watch from firing after async setup await ([#&#8203;14547](https://github.com/vuejs/core/issues/14547)) ([6cda71d](https://github.com/vuejs/core/commit/6cda71d48bd45c5e0ed2822866b83c4fafff1be9)), closes [#&#8203;14546](https://github.com/vuejs/core/issues/14546) - **types:** make generics with runtime props in defineComponent work (fix [#&#8203;11374](https://github.com/vuejs/core/issues/11374)) ([#&#8203;13119](https://github.com/vuejs/core/issues/13119)) ([cea3cf7](https://github.com/vuejs/core/commit/cea3cf758645c9683db51822590b073ce3069dda)), closes [#&#8203;13763](https://github.com/vuejs/core/issues/13763) - **types:** narrow useAttrs class/style typing for TSX ([#&#8203;14492](https://github.com/vuejs/core/issues/14492)) ([bbb8977](https://github.com/vuejs/core/commit/bbb89775b137eac12b92ae4eb49999a7fd6b52b0)), closes [#&#8203;14489](https://github.com/vuejs/core/issues/14489) ### [`v3.5.29`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3529-2026-02-24) [Compare Source](https://github.com/vuejs/core/compare/v3.5.28...v3.5.29) ##### Bug Fixes - **runtime-core:** prevent instance leak in withAsyncContext ([#&#8203;14445](https://github.com/vuejs/core/issues/14445)) ([702284f](https://github.com/vuejs/core/commit/702284f6a7d0dd6d4e648142e7977a3eb02d77f5)), closes [nuxt/nuxt#33644](https://github.com/nuxt/nuxt/issues/33644) - **server-renderer:** render className as escaped string ([#&#8203;14469](https://github.com/vuejs/core/issues/14469)) ([da6690c](https://github.com/vuejs/core/commit/da6690cae359ec3576403c18040a1a5f017a63b1)) - **transition:** prevent enter if leave is in progress ([#&#8203;14443](https://github.com/vuejs/core/issues/14443)) ([df059f8](https://github.com/vuejs/core/commit/df059f890460e4c703b62a54f410627ff29c489b)), closes [#&#8203;12091](https://github.com/vuejs/core/issues/12091) [#&#8203;12133](https://github.com/vuejs/core/issues/12133) ### [`v3.5.28`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3528-2026-02-09) [Compare Source](https://github.com/vuejs/core/compare/v3.5.27...v3.5.28) ##### Bug Fixes - **transition:** avoid unexpected `cancelled` parameter in transition `done` callback ([#&#8203;14391](https://github.com/vuejs/core/issues/14391)) ([6798853](https://github.com/vuejs/core/commit/67988530f6a3cfdd0d80bf967033cb9abf377174)) - **compiler-sfc:** add resolution trying for `.mts/.cts` files ([#&#8203;14402](https://github.com/vuejs/core/issues/14402)) ([c09d41f](https://github.com/vuejs/core/commit/c09d41ffe150903b1fcd69a6f6bdeea2d2c6c243)), closes [vuejs/router#2611](https://github.com/vuejs/router/issues/2611) - **compiler-sfc:** no params were generated when using withDefaults ([#&#8203;12823](https://github.com/vuejs/core/issues/12823)) ([b0a1f05](https://github.com/vuejs/core/commit/b0a1f0504a67fb1a6a110a5d05cdec0b878dde29)), closes [#&#8203;12822](https://github.com/vuejs/core/issues/12822) - **reactivity:** add `__v_skip` flag to `EffectScope` to prevent reactive conversion ([#&#8203;14359](https://github.com/vuejs/core/issues/14359)) ([48b7552](https://github.com/vuejs/core/commit/48b7552cce784725376a4fab078272676ce02d69)), closes [#&#8203;14357](https://github.com/vuejs/core/issues/14357) - **runtime-core:** avoid retaining el on cached text vnodes during static traversal ([#&#8203;14419](https://github.com/vuejs/core/issues/14419)) ([4ace79a](https://github.com/vuejs/core/commit/4ace79ac4c66a4f96cd330b47474ce117bc851ab)), closes [#&#8203;14134](https://github.com/vuejs/core/issues/14134) - **runtime-core:** prevent child component updates when style remains unchanged ([#&#8203;12825](https://github.com/vuejs/core/issues/12825)) ([57866b5](https://github.com/vuejs/core/commit/57866b5af1aff7ce1026b529443b81465c56f802)), closes [#&#8203;12826](https://github.com/vuejs/core/issues/12826) - **runtime-core:** properly handle async component update before resolve ([#&#8203;11619](https://github.com/vuejs/core/issues/11619)) ([e71c26c](https://github.com/vuejs/core/commit/e71c26c03d44c9c93569ed7ebfe7dabaf3bbdb06)), closes [#&#8203;11617](https://github.com/vuejs/core/issues/11617) - **runtime-dom:** handle null/undefined handler in withModifiers ([#&#8203;14362](https://github.com/vuejs/core/issues/14362)) ([261de54](https://github.com/vuejs/core/commit/261de547cd6685fc8862679941d93b530d504731)), closes [#&#8203;14361](https://github.com/vuejs/core/issues/14361) - **teleport:** properly handling disabled teleport target anchor ([#&#8203;14417](https://github.com/vuejs/core/issues/14417)) ([d7bcd85](https://github.com/vuejs/core/commit/d7bcd858883d90a1593b45cdc43f9fa55bc790bc)), closes [#&#8203;14412](https://github.com/vuejs/core/issues/14412) - **transition-group:** correct move translation under scale via element rect ([#&#8203;14360](https://github.com/vuejs/core/issues/14360)) ([0243a79](https://github.com/vuejs/core/commit/0243a792ac1cf8b0308f552927ed2ecd8627b839)), closes [#&#8203;14356](https://github.com/vuejs/core/issues/14356) - **useTemplateRef:** don't update setup ref for useTemplateRef key ([#&#8203;12756](https://github.com/vuejs/core/issues/12756)) ([fc40ca0](https://github.com/vuejs/core/commit/fc40ca0216a7028f6ec0195344c976423e239ef3)), closes [#&#8203;12749](https://github.com/vuejs/core/issues/12749) ### [`v3.5.27`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3527-2026-01-19) [Compare Source](https://github.com/vuejs/core/compare/v3.5.26...v3.5.27) ##### Bug Fixes - **compile-sfc:** correctly handle variable shadowing in for loop for `defineProps` destructuring. ([#&#8203;14296](https://github.com/vuejs/core/issues/14296)) ([6a1bb50](https://github.com/vuejs/core/commit/6a1bb50594db03904f401fc33ea85afa8fa71cf7)), closes [#&#8203;14294](https://github.com/vuejs/core/issues/14294) - **compiler-sfc:** handle indexed access types in declare global blocks ([#&#8203;14260](https://github.com/vuejs/core/issues/14260)) ([e4091fe](https://github.com/vuejs/core/commit/e4091fe1f917346a66ffa8d013b3cf4b331b6682)), closes [#&#8203;14236](https://github.com/vuejs/core/issues/14236) - **compiler-sfc:** use correct scope when resolving indexed access types from external files ([#&#8203;14297](https://github.com/vuejs/core/issues/14297)) ([f0f0a21](https://github.com/vuejs/core/commit/f0f0a21dfaf0f41bb2198106db0f4ff32b97dcd3)), closes [#&#8203;14292](https://github.com/vuejs/core/issues/14292) - **reactivity:** collection iteration should inherit iterator instance methods ([#&#8203;12644](https://github.com/vuejs/core/issues/12644)) ([3c8b2fc](https://github.com/vuejs/core/commit/3c8b2fc836b2f60c90c2459933e66b2fd9fb8c08)), closes [#&#8203;12615](https://github.com/vuejs/core/issues/12615) - **runtime-core:** skip patching reserved props for custom elements ([#&#8203;14275](https://github.com/vuejs/core/issues/14275)) ([19cc7e2](https://github.com/vuejs/core/commit/19cc7e2cd053629f3233cd55dff98951e69f5391)), closes [#&#8203;14274](https://github.com/vuejs/core/issues/14274) - **server-renderer:** use ssrRenderClass helper for className attribute ([#&#8203;14327](https://github.com/vuejs/core/issues/14327)) ([a4708f3](https://github.com/vuejs/core/commit/a4708f324f62ac2122f87c4ee039deb2745f0905)) - **ssr:** handle v-bind modifiers during render attrs ([#&#8203;14263](https://github.com/vuejs/core/issues/14263)) ([c2f5964](https://github.com/vuejs/core/commit/c2f5964c47890321cab40fcf0ebc528e6d00337f)), closes [#&#8203;14262](https://github.com/vuejs/core/issues/14262) ### [`v3.5.26`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3526-2025-12-18) [Compare Source](https://github.com/vuejs/core/compare/v3.5.25...v3.5.26) ##### Bug Fixes - **compat:** fix compat handler of draggable ([#&#8203;12445](https://github.com/vuejs/core/issues/12445)) ([ed85953](https://github.com/vuejs/core/commit/ed85953e28741ae1913cfc92b7b66e1a8da47f8c)), closes [#&#8203;12444](https://github.com/vuejs/core/issues/12444) - **compat:** handle v-model deprecation warning with missing appContext ([#&#8203;14203](https://github.com/vuejs/core/issues/14203)) ([945a543](https://github.com/vuejs/core/commit/945a543152e8d80903d4f7a18a84ebe8d36e56f8)), closes [#&#8203;14202](https://github.com/vuejs/core/issues/14202) - **compiler-sfc:** demote const reactive bindings used in v-model ([#&#8203;14214](https://github.com/vuejs/core/issues/14214)) ([e24ff7d](https://github.com/vuejs/core/commit/e24ff7d302a887ea532571c231a385362fa17279)), closes [#&#8203;11265](https://github.com/vuejs/core/issues/11265) [#&#8203;11275](https://github.com/vuejs/core/issues/11275) - **compiler-ssr:** handle ssr attr fallthrough when preserve whitespace ([#&#8203;12304](https://github.com/vuejs/core/issues/12304)) ([4783118](https://github.com/vuejs/core/commit/47831189196b62b12dd17f6e909efc51d9d22fd2)), closes [#&#8203;8072](https://github.com/vuejs/core/issues/8072) - **hmr:** handle cached text node update ([#&#8203;14134](https://github.com/vuejs/core/issues/14134)) ([69ce3c7](https://github.com/vuejs/core/commit/69ce3c7d755db868cfa66d67ab5b3f383a44e053)), closes [#&#8203;14127](https://github.com/vuejs/core/issues/14127) - **keep-alive:** use resolved component name for async components in cache pruning ([#&#8203;14212](https://github.com/vuejs/core/issues/14212)) ([dfe667c](https://github.com/vuejs/core/commit/dfe667c8567d48167c250062483d2d2cfc7bdc03)), closes [#&#8203;14210](https://github.com/vuejs/core/issues/14210) - **runtime-core:** ensure correct anchor el for deeper unresolved async components ([#&#8203;14182](https://github.com/vuejs/core/issues/14182)) ([f5b3bf2](https://github.com/vuejs/core/commit/f5b3bf264d2e12725381bed1c492069437069b03)), closes [#&#8203;14173](https://github.com/vuejs/core/issues/14173) - **runtime-core:** handle patch stable fragment edge case ([#&#8203;12411](https://github.com/vuejs/core/issues/12411)) ([94aeb64](https://github.com/vuejs/core/commit/94aeb64ccdf20d541059b533c9780977c14db9cb)), closes [#&#8203;12410](https://github.com/vuejs/core/issues/12410) - **runtime-core:** pass component instance to flushPreFlushCbs on unmount ([#&#8203;14221](https://github.com/vuejs/core/issues/14221)) ([e857e12](https://github.com/vuejs/core/commit/e857e12c0aff03c0148e3e52d92935918872dc33)), closes [#&#8203;14215](https://github.com/vuejs/core/issues/14215) ##### Performance Improvements - **compiler-core:** use binary-search to get line and column ([#&#8203;14222](https://github.com/vuejs/core/issues/14222)) ([1904053](https://github.com/vuejs/core/commit/1904053f1f7986c2d6dbe858ee1b594b4b229c17)) ### [`v3.5.25`](https://github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3525-2025-11-24) [Compare Source](https://github.com/vuejs/core/compare/v3.5.24...v3.5.25) ##### Bug Fixes - **compiler:** share logic for comments and whitespace ([#&#8203;13550](https://github.com/vuejs/core/issues/13550)) ([2214f7a](https://github.com/vuejs/core/commit/2214f7ab2940bcb751cd20130c020d895db6c042)) - **provide:** warn when using `provide` after mounting ([#&#8203;13954](https://github.com/vuejs/core/issues/13954)) ([247b2c2](https://github.com/vuejs/core/commit/247b2c2067afc4dee52f9f7bc194f3aab347ac55)), closes [#&#8203;13921](https://github.com/vuejs/core/issues/13921) [#&#8203;13924](https://github.com/vuejs/core/issues/13924) - **reactivity:** correctly wrap iterated array items to preserve their readonly status ([#&#8203;14120](https://github.com/vuejs/core/issues/14120)) ([301020b](https://github.com/vuejs/core/commit/301020b481e85d03b0c96000f3221372063c41c6)) - **reactivity:** toRef edge cases for ref unwrapping ([#&#8203;12420](https://github.com/vuejs/core/issues/12420)) ([0d2357e](https://github.com/vuejs/core/commit/0d2357e6974678d5484751c869f429dc6ea85582)) - **runtime-core:** keep options API typing intact when expose is used ([#&#8203;14118](https://github.com/vuejs/core/issues/14118)) ([8f82f23](https://github.com/vuejs/core/commit/8f82f238463160284e504d1751d61b72dabb395e)), closes [#&#8203;14117](https://github.com/vuejs/core/issues/14117) [vuejs/language-tools#5069](https://github.com/vuejs/language-tools/issues/5069) - **suspense:** defer clearing fallback vnode el in case it has dirs ([#&#8203;14080](https://github.com/vuejs/core/issues/14080)) ([c0f63dd](https://github.com/vuejs/core/commit/c0f63ddbfa8fa221d66b683b5c26e471851c2b50)), closes [#&#8203;14078](https://github.com/vuejs/core/issues/14078) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **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 [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xODkuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjE5Ny4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Update all dependencies
Some checks failed
renovate/artifacts Artifact file update failure
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
236e46c54e
andras force-pushed renovate/all from 236e46c54e
Some checks failed
renovate/artifacts Artifact file update failure
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
to 0f4f3149bb
Some checks failed
renovate/artifacts Artifact file update failure
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
2026-10-29 18:56:21 +00:00
Compare
andras force-pushed renovate/all from 0f4f3149bb
Some checks failed
renovate/artifacts Artifact file update failure
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
to 107efdd65f
Some checks failed
renovate/artifacts Artifact file update failure
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
2026-10-30 01:06:47 +00:00
Compare
andras force-pushed renovate/all from 107efdd65f
Some checks failed
renovate/artifacts Artifact file update failure
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
to c2474491e2
Some checks failed
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
2026-10-30 17:54:35 +00:00
Compare
andras changed title from Update all dependencies to Update all non-major dependencies 2026-10-30 17:54:43 +00:00
andras force-pushed renovate/all from c2474491e2
Some checks failed
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
to bbd917c22b
Some checks failed
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
2026-10-31 00:07:06 +00:00
Compare
andras force-pushed renovate/all from bbd917c22b
Some checks failed
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
to 3bc34be470
Some checks failed
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
2026-10-31 06:19:48 +00:00
Compare
andras force-pushed renovate/all from 3bc34be470
Some checks failed
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
to 6eb282b97c
Some checks failed
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
2026-10-31 12:32:48 +00:00
Compare
andras force-pushed renovate/all from 6eb282b97c
Some checks failed
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
to 7dcafa22d3
Some checks failed
Check / build (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
2026-10-31 18:44:59 +00:00
Compare
andras force-pushed renovate/all from 7dcafa22d3
Some checks failed
Check / build (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
to cfc4e60ee4
Some checks failed
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
2026-11-02 01:42:09 +00:00
Compare
andras force-pushed renovate/all from cfc4e60ee4
Some checks failed
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
to 96cc01431e
Some checks failed
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
2026-11-02 20:17:10 +00:00
Compare
andras force-pushed renovate/all from 96cc01431e
Some checks failed
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
E2E tests / build (pull_request) Has been cancelled
to cf1942a9e4
Some checks failed
E2E tests / build (pull_request) Waiting to run
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
2026-11-03 02:27:59 +00:00
Compare
andras force-pushed renovate/all from cf1942a9e4
Some checks failed
E2E tests / build (pull_request) Waiting to run
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
to f7395522e3
Some checks failed
E2E tests / build (pull_request) Waiting to run
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
2026-11-03 14:49:50 +00:00
Compare
andras force-pushed renovate/all from f7395522e3
Some checks failed
E2E tests / build (pull_request) Waiting to run
Check / build (pull_request) Has been cancelled
Publish CLI / publish-docker (pull_request) Has been cancelled
Publish server Docker image / publish-docker (pull_request) Has been cancelled
to 2da94b4eff
Some checks are pending
Check / build (pull_request) Waiting to run
E2E tests / build (pull_request) Waiting to run
Publish CLI / publish-docker (pull_request) Waiting to run
Publish server Docker image / publish-docker (pull_request) Waiting to run
2026-11-03 21:01:38 +00:00
Compare
Some checks are pending
Check / build (pull_request) Waiting to run
E2E tests / build (pull_request) Waiting to run
Publish CLI / publish-docker (pull_request) Waiting to run
Publish server Docker image / publish-docker (pull_request) Waiting to run
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin "renovate/all:renovate/all"
git switch "renovate/all"

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch "main"
git merge --no-ff "renovate/all"
git switch "renovate/all"
git rebase "main"
git switch "main"
git merge --ff-only "renovate/all"
git switch "renovate/all"
git rebase "main"
git switch "main"
git merge --no-ff "renovate/all"
git switch "main"
git merge --squash "renovate/all"
git switch "main"
git merge --ff-only "renovate/all"
git switch "main"
git merge "renovate/all"
git push origin "main"
Sign in to join this conversation.
No description provided.