Releases: tokio-rs/tokio
Releases · tokio-rs/tokio
Tokio v1.28.0
1.28.0 (April 25th, 2023)
Added
- io: add
AsyncFd::async_io
(#5542) - io: impl BufMut for ReadBuf (#5590)
- net: add
recv_buf
forUdpSocket
andUnixDatagram
(#5583) - sync: add
OwnedSemaphorePermit::semaphore
(#5618) - sync: add
same_channel
to broadcast channel (#5607) - sync: add
watch::Receiver::wait_for
(#5611) - task: add
JoinSet::spawn_blocking
andJoinSet::spawn_blocking_on
(#5612)
Changed
- deps: update windows-sys to 0.48 (#5591)
- io: make
read_to_end
not grow unnecessarily (#5610) - macros: make entrypoints more efficient (#5621)
- sync: improve Debug impl for
RwLock
(#5647) - sync: reduce contention in
Notify
(#5503)
Fixed
- net: support
get_peer_cred
on AIX (#5065) - sync: avoid deadlocks in
broadcast
with custom wakers (#5578)
Documented
Tokio v1.27.0
1.27.0 (March 27th, 2023)
This release bumps the MSRV of Tokio to 1.56. (#5559)
Added
- io: add
async_io
helper method to sockets (#5512) - io: add implementations of
AsFd
/AsHandle
/AsSocket
(#5514, #5540) - net: add
UdpSocket::peek_sender()
(#5520) - sync: add
RwLockWriteGuard::{downgrade_map, try_downgrade_map}
(#5527) - task: add
JoinHandle::abort_handle
(#5543)
Changed
- io: use
memchr
fromlibc
(#5558) - macros: accept path as crate rename in
#[tokio::main]
(#5557) - macros: update to syn 2.0.0 (#5572)
- time: don't register for a wakeup when
Interval
returnsReady
(#5553)
Fixed
- fs: fuse std iterator in
ReadDir
(#5555) - tracing: fix
spawn_blocking
location fields (#5573) - time: clean up redundant check in
Wheel::poll()
(#5574)
Documented
Tokio v1.26.0
Fixed
- macros: fix empty
join!
andtry_join!
(#5504) - sync: don't leak tracing spans in mutex guards (#5469)
- sync: drop wakers after unlocking the mutex in Notify (#5471)
- sync: drop wakers outside lock in semaphore (#5475)
Added
- fs: add
fs::try_exists
(#4299) - net: add types for named unix pipes (#5351)
- sync: add
MappedOwnedMutexGuard
(#5474)
Changed
- chore: update windows-sys to 0.45 (#5386)
- net: use Message Read Mode for named pipes (#5350)
- sync: mark lock guards with
#[clippy::has_significant_drop]
(#5422) - sync: reduce contention in watch channel (#5464)
- time: remove cache padding in timer entries (#5468)
- time: Improve
Instant::now()
perf with test-util (#5513)
Internal Changes
- io: use
poll_fn
incopy_bidirectional
(#5486) - net: refactor named pipe builders to not use bitfields (#5477)
- rt: remove Arc from Clock (#5434)
- sync: make
notify_waiters
calls atomic (#5458) - time: don't store deadline twice in sleep entries (#5410)
Unstable
- metrics: add a new metric for budget exhaustion yields (#5517)
Documented
- io: improve AsyncFd example (#5481)
- runtime: document the nature of the main future (#5494)
- runtime: remove extra period in docs (#5511)
- signal: updated Documentation for Signals (#5459)
- sync: add doc aliases for
blocking_*
methods (#5448) - sync: fix docs for Send/Sync bounds in broadcast (#5480)
- sync: document drop behavior for channels (#5497)
- task: clarify what happens to spawned work during runtime shutdown (#5394)
- task: clarify
process::Command
docs (#5413) - task: fix wording with 'unsend' (#5452)
- time: document immediate completion guarantee for timeouts (#5509)
- tokio: document supported platforms (#5483)
Tokio v1.25.0
Tokio v1.24.1
This release fixes a compilation failure on targets without AtomicU64
when using rustc older than 1.63. (#5356)
Tokio v1.24.0
The highlight of this release is the reduction of lock contention for all I/O operations (#5300). We have received reports of up to a 20% improvement in CPU utilization and increased throughput for real-world I/O heavy applications.
Fixed
- rt: improve native
AtomicU64
support detection (#5284)
Added
- rt: add configuration option for max number of I/O events polled from the OS
per tick (#5186) - rt: add an environment variable for configuring the default number of worker
threads per runtime instance (#4250)
Changed
Tokio v1.23.1
This release forward ports changes from 1.18.4.
Fixed
- net: fix Windows named pipe server builder to maintain option when toggling
pipe mode (#5336).
Tokio v1.23.0
Tokio v1.22.0
Added
- runtime: add
Handle::runtime_flavor
(#5138) - sync: add
Mutex::blocking_lock_owned
(#5130) - sync: add
Semaphore::MAX_PERMITS
(#5144) - sync: add
merge()
to semaphore permits (#4948) - sync: add
mpsc::WeakUnboundedSender
(#5189)
Added (unstable)
- process: add
Command::process_group
(#5114) - runtime: export metrics about the blocking thread pool (#5161)
- task: add
task::id()
andtask::try_id()
(#5171)
Fixed
- macros: don't take ownership of futures in macros (#5087)
- runtime: fix Stacked Borrows violation in
LocalOwnedTasks
(#5099) - runtime: mitigate ABA with 32-bit queue indices when possible (#5042)
- task: wake local tasks to the local queue when woken by the same thread (#5095)
- time: panic in release mode when
mark_pending
called illegally (#5093) - runtime: fix typo in expect message (#5169)
- runtime: fix
unsync_load
on atomic types (#5175) - task: elaborate safety comments in task deallocation (#5172)
- runtime: fix
LocalSet
drop in thread local (#5179) - net: remove libc type leakage in a public API (#5191)
- runtime: update the alignment of
CachePadded
(#5106)
Changed
- io: make
tokio::io::copy
continue filling the buffer when writer stalls (#5066) - runtime: remove
coop::budget
fromLocalSet::run_until
(#5155) - sync: make
Notify
panic safe (#5154)
Documented
- io: fix doc for
write_i8
to use signed integers (#5040) - net: fix doc typos for TCP and UDP
set_tos
methods (#5073) - net: fix function name in
UdpSocket::recv
documentation (#5150) - sync: typo in
TryLockError
forRwLock::try_write
(#5160) - task: document that spawned tasks execute immediately (#5117)
- time: document return type of
timeout
(#5118) - time: document that
timeout
checks only before poll (#5126) - sync: specify return type of
oneshot::Receiver
in docs (#5198)
Internal changes
- runtime: use const
Mutex::new
for globals (#5061) - runtime: remove
Option
aroundmio::Events
in io driver (#5078) - runtime: remove a conditional compilation clause (#5104)
- runtime: remove a reference to internal time handle (#5107)
- runtime: misc time driver cleanup (#5120)
- runtime: move signal driver to runtime module (#5121)
- runtime: signal driver now uses I/O driver directly (#5125)
- runtime: start decoupling I/O driver and I/O handle (#5127)
- runtime: switch
io::handle
refs with scheduler:Handle (#5128) - runtime: remove Arc from I/O driver (#5134)
- runtime: use signal driver handle via
scheduler::Handle
(#5135) - runtime: move internal clock fns out of context (#5139)
- runtime: remove
runtime::context
module (#5140) - runtime: keep driver cfgs in
driver.rs
(#5141) - runtime: add
runtime::context
to unify thread-locals (#5143) - runtime: rename some confusing internal variables/fns (#5151)
- runtime: move
coop
mod intoruntime
(#5152) - runtime: move budget state to context thread-local (#5157)
- runtime: move park logic into runtime module (#5158)
- runtime: move
Runtime
into its own file (#5159) - runtime: unify entering a runtime with
Handle::enter
(#5163) - runtime: remove handle reference from each scheduler (#5166)
- runtime: move
enter
intocontext
(#5167) - runtime: combine context and entered thread-locals (#5168)
- runtime: fix accidental unsetting of current handle (#5178)
- runtime: move
CoreStage
methods toCore
(#5182) - sync: name mpsc semaphore types (#5146)
Tokio v1.21.2
1.21.2 (September 27, 2022)
This release removes the dependency on the once_cell
crate to restore the MSRV of 1.21.x, which is the latest minor version at the time of release. (#5048)