Skip to content

Prepare shuttle 0.9.4 release - #356

Merged
sarsko merged 1 commit into
mainfrom
release-0.9.4
Sep 22, 2026
Merged

sarsko merged 1 commit into
mainfrom
release-0.9.4

Conversation

@sarsko

@sarsko sarsko commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Cuts 0.9.4 for everything that has landed on main since 0.9.3: the parking_lot RwLock upgrade fix and the BatchSemaphore::upgrade change under it (#351), the portfolio panic-in-drop fix (#346), the two performance changes (#321, #322), the blocked-future backtraces (#215), and the annotation feature fix (#334).

shuttle goes 0.9.3 -> 0.9.4, shuttle-engine and shuttle-std go 0.1.1 -> 0.1.2, and shuttle-parking_lot-impl goes 0.1.1 -> 0.1.2.

#346 had no changelog entry, so this adds one; #321 and #322 were missing their PR references. #320 is test-only and gets no entry.

shuttle's own source is untouched this release — every fix is in shuttle-engine, shuttle-std or shuttle-parking_lot-impl — so raising the requirements to 0.1.2 is the whole content of the shuttle bump. It is also what makes the bump meaningful: cargo prefers versions already in the lock file, so under a ^0.1.1 requirement a user moving to 0.9.4 with cargo update -p shuttle would keep shuttle-engine 0.1.1 and get a new shuttle containing none of the fixes. (A full cargo update would pick 0.1.2 up either way; the requirement is what rules out the 0.9.4-without-the-fixes combination entirely.)

Two crates deliberately stay where they are:

  • shuttle-schedulers at 0.1.1. It has no changes since 0.1.1 and takes shuttle-engine as ^0.1.1, so what is already published builds against the new engine.
  • shuttle-parking_lot at 0.12.5, so that it keeps mirroring the parking_lot version it wraps. It takes the impl as ^0.1.0 and re-exports it with a glob, so the RwLock fix reaches its users without a republish, the same way shuttle-tokio picked up shuttle-tokio-impl-inner 0.1.2.

shuttle-parking_lot-impl's requirement on shuttle is raised from <0.10 to >=0.9.4, <0.10: its RawRwLock now calls BatchSemaphore::try_upgrade, which does not exist before 0.9.4, so the old requirement admitted a combination that does not compile.

Patch rather than minor: the only public API change since 0.9.3 is the addition of BatchSemaphore::try_upgrade. BatchSemaphore::upgrade keeps its signature, and the remaining wrapper crates depend on shuttle via 0.9, <0.10 or *, so they need no changes.

cargo nextest run --release --workspace (673 passed), cargo test --release --doc --workspace and cargo check --workspace --all-targets are clean.

Publish order once merged: shuttle-engine, then shuttle-std, then shuttle, then shuttle-parking_lot-impl.


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Release `shuttle` 0.9.4, `shuttle-engine` and `shuttle-std` 0.1.2, and
`shuttle-parking_lot-impl` 0.1.2.

Everything under Unreleased goes out, plus #346, which had no changelog
entry. `shuttle-schedulers` has no changes since 0.1.1 and takes
`shuttle-engine` as `^0.1.1`, so it stays as published.
`shuttle-parking_lot` likewise stays at 0.12.5, keeping it a mirror of
the `parking_lot` version it wraps; it takes the impl as `^0.1.0` and
re-exports it with a glob, so it picks the `RwLock` fix up unchanged.
The impl's own requirement on `shuttle` is raised to `>=0.9.4`, since
its `RawRwLock` calls `BatchSemaphore::try_upgrade`, which does not
exist before 0.9.4.
@sarsko
sarsko merged commit 4cb87c1 into main Sep 22, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant