RepoJournal
Rust

@rust-lang

The Rust language, Cargo, and the standard library

Pick a date

Topics: Rust Full archive →

The Wire · Showcase

MIRI OVERHAULS EPOLL STATE TRACKING, FUTURES-RS PATCHES SOUNDNESS BUG

By RepoJournal · Filed · About Rust

Miri's readiness watcher table got replaced with per-FD state tracking, catching undefined behavior that futures-rs shipped with and forcing an emergency fix.

Miri's epoll implementation just got a major refactor [1]. The new per-FD state tracking reduces GC pressure, cleans up resources immediately on drop, and introduces proper vector clock tracking for readiness notifications across threads. The commits also fix Illumos semantics for closed file descriptors and correct the logic for fcntl(F_DUPFD), though Illumos behavior remains untested on real hardware [2]. This work uncovered a soundness bug that was already in the wild: futures-rs's compat01as03 layer contained undefined behavior in NotifyWaker's drop_raw implementation [3]. Miri flagged it trying to retag memory with incorrect permissions. The fix wraps the problematic code in UnsafeCell to match the documented API contract [4]. On the infrastructure side, the Rust team enabled merge queue deployments for the blog [5][6] and created a maintainers-in-residence marker team [7] ahead of future appointments. compiler-builtins renamed float traits and overhauled test iteration counting to support unlimited test runs [8][9][10]. Five arcbox-virtio crates shipped routine index updates across the fs, console, block, balloon, and core modules [11][12][13][14][15].

Action items

References

  1. [1] replace global readiness watcher table by per-FD state ↗ rust-lang/miri
  2. [2] clean up epoll interest lists immediately when FD gets dropped rust-lang/miri
  3. [3] Fix unsound compat01as03 implementation (fixes #2514) ↗ rust-lang/futures-rs
  4. [4] Fix unsound compat01as03 implementation (fixes #2514) (#3012) rust-lang/futures-rs
  5. [5] Allow deploying the blog from the merge queue ↗ rust-lang/team
  6. [6] Enable merge queue for the blog repository ↗ rust-lang/team
  7. [7] Create `maintainers-in-residence` marker team ↗ rust-lang/team
  8. [8] Rename float traits, improvements for extensive tests ↗ rust-lang/compiler-builtins
  9. [9] test: Rename `iteration_count` to `arg_max_iterations` rust-lang/compiler-builtins
  10. [10] test: Allow specifying LIBM_EXTENSIVE_ITERATIONS as u64::MAX rust-lang/compiler-builtins
  11. [11] Update crate `arcbox-virtio-fs` rust-lang/crates.io-index
  12. [12] Update crate `arcbox-virtio-console` rust-lang/crates.io-index
  13. [13] Update crate `arcbox-virtio-blk` rust-lang/crates.io-index
  14. [14] Update crate `arcbox-virtio-balloon` rust-lang/crates.io-index
  15. [15] Update crate `arcbox-virtio-core` rust-lang/crates.io-index

Quick answers

What shipped in Rust on July 18, 2026?
Miri's readiness watcher table got replaced with per-FD state tracking, catching undefined behavior that futures-rs shipped with and forcing an emergency fix. In total, 74 commits and 8 pull requests landed.
Who contributed to Rust on July 18, 2026?
7 developers shipped this update, including bors, RalfJung, WhySoBad, Kobzol, 许杰友 Jieyou Xu (Joe), tgross35, and stbuehler.
What were the notable Rust updates?
replace global readiness watcher table by per-FD state, clean up epoll interest lists immediately when FD gets dropped, and Fix unsound compat01as03 implementation (fixes #2514).

More from @rust-lang

Daily updates, in your inbox

Follow Rust

The Rust language, Cargo, and the standard library We'll email you a link to confirm first.

Free. Confirm via email. Unsubscribe in one click.

— or follow the whole beat:

Elsewhere on the wire