1.53.0 (July 17th, 2026)
Added
- fs: implement
From<OwnedFd>andFrom<OwnedHandle>forFile(#8266) - metrics: add task schedule latency metric (#7986)
- net: add
SocketAddrmethods 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]totimeout_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_allsucceeds 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_nowdefers its waker (#8254) - time: add panic docs to
timeout_at()(#8077) - time: fix reversed poll order in timeout doc (#8214)