87 KiB
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)
1.21.1 (September 13, 2022)
Fixed
- net: fix dependency resolution for socket2 (#5000)
- task: ignore failure to set TLS in
LocalSet
Drop (#4976)
1.21.0 (September 2, 2022)
This release is the first release of Tokio to intentionally support WASM. The
sync,macros,io-util,rt,time
features are stabilized on WASM. Additionally the
wasm32-wasi target is given unstable support for the net
feature.
Added
- net: add
device
andbind_device
methods to TCP/UDP sockets (#4882) - net: add
tos
andset_tos
methods to TCP and UDP sockets (#4877) - net: add security flags to named pipe
ServerOptions
(#4845) - signal: add more windows signal handlers (#4924)
- sync: add
mpsc::Sender::max_capacity
method (#4904) - sync: implement Weak version of
mpsc::Sender
(#4595) - task: add
LocalSet::enter
(#4765) - task: stabilize
JoinSet
andAbortHandle
(#4920) - tokio: add
track_caller
to public APIs (#4805, #4848, #4852) - wasm: initial support for
wasm32-wasi
target (#4716)
Fixed
- miri: improve miri compatibility by avoiding temporary references in
linked_list::Link
impls (#4841) - signal: don't register write interest on signal pipe (#4898)
- sync: add
#[must_use]
to lock guards (#4886) - sync: fix hang when calling
recv
on closed and reopened broadcast channel (#4867) - task: propagate attributes on task-locals (#4837)
Changed
- fs: change panic to error in
File::start_seek
(#4897) - io: reduce syscalls in
poll_read
(#4840) - process: use blocking threadpool for child stdio I/O (#4824)
- signal: make
SignalKind
methods const (#4956)
Internal changes
- rt: extract
basic_scheduler::Config
(#4935) - rt: move I/O driver into
runtime
module (#4942) - rt: rename internal scheduler types (#4945)
Documented
- chore: fix typos and grammar (#4858, #4894, #4928)
- io: fix typo in
AsyncSeekExt::rewind
docs (#4893) - net: add documentation to
try_read()
for zero-length buffers (#4937) - runtime: remove incorrect panic section for
Builder::worker_threads
(#4849) - sync: doc of
watch::Sender::send
improved (#4959) - task: add cancel safety docs to
JoinHandle
(#4901) - task: expand on cancellation of
spawn_blocking
(#4811) - time: clarify that the first tick of
Interval::tick
happens immediately (#4951)
Unstable
- rt: add unstable option to disable the LIFO slot (#4936)
- task: fix incorrect signature in
Builder::spawn_on
(#4953) - task: make
task::Builder::spawn*
methods fallible (#4823)
1.20.2 (September 27, 2022)
This release removes the dependency on the once_cell
crate to restore the MSRV
of the 1.20.x LTS release. (#5048)
1.20.1 (July 25, 2022)
Fixed
- chore: fix version detection in build script (#4860)
1.20.0 (July 12, 2022)
Added
- tokio: add
track_caller
to public APIs (#4772, #4791, #4793, #4806, #4808) - sync: Add
has_changed
method towatch::Ref
(#4758)
Changed
- time: remove
src/time/driver/wheel/stack.rs
(#4766) - rt: clean up arguments passed to basic scheduler (#4767)
- net: be more specific about winapi features (#4764)
- tokio: use const initialized thread locals where possible (#4677)
- task: various small improvements to LocalKey (#4795)
Documented
- fs: warn about performance pitfall (#4762)
- chore: fix spelling (#4769)
- sync: document spurious failures in oneshot (#4777)
- sync: add warning for watch in non-Send futures (#4741)
- chore: fix typo (#4798)
Unstable
- joinset: rename
join_one
tojoin_next
(#4755) - rt: unhandled panic config for current thread rt (#4770)
1.19.2 (June 6, 2022)
This release fixes another bug in Notified::enable
. (#4751)
1.19.1 (June 5, 2022)
This release fixes a bug in Notified::enable
. (#4747)
1.19.0 (June 3, 2022)
Added
- runtime: add
is_finished
method forJoinHandle
andAbortHandle
(#4709) - runtime: make global queue and event polling intervals configurable (#4671)
- sync: add
Notified::enable
(#4705) - sync: add
watch::Sender::send_if_modified
(#4591) - sync: add resubscribe method to broadcast::Receiver (#4607)
- net: add
take_error
toTcpSocket
andTcpStream
(#4739)
Changed
- io: refactor out usage of Weak in the io handle (#4656)
Fixed
- macros: avoid starvation in
join!
andtry_join!
(#4624)
Documented
- runtime: clarify semantics of tasks outliving
block_on
(#4729) - time: fix example for
MissedTickBehavior::Burst
(#4713)
Unstable
- metrics: correctly update atomics in
IoDriverMetrics
(#4725) - metrics: fix compilation with unstable, process, and rt, but without net (#4682)
- task: add
#[track_caller]
toJoinSet
/JoinMap
(#4697) - task: add
Builder::{spawn_on, spawn_local_on, spawn_blocking_on}
(#4683) - task: add
consume_budget
for cooperative scheduling (#4498) - task: add
join_set::Builder
for configuringJoinSet
tasks (#4687) - task: update return value of
JoinSet::join_one
(#4726)
1.18.3 (September 27, 2022)
This release removes the dependency on the once_cell
crate to restore the MSRV
of the 1.18.x LTS release. (#5048)
1.18.2 (May 5, 2022)
Add missing features for the winapi
dependency. (#4663)
1.18.1 (May 2, 2022)
The 1.18.0 release broke the build for targets without 64-bit atomics when
building with tokio_unstable
. This release fixes that. (#4649)
1.18.0 (April 27, 2022)
This release adds a number of new APIs in tokio::net
, tokio::signal
, and
tokio::sync
. In addition, it adds new unstable APIs to tokio::task
(Id
s
for uniquely identifying a task, and AbortHandle
for remotely cancelling a
task), as well as a number of bugfixes.
Fixed
- blocking: add missing
#[track_caller]
forspawn_blocking
(#4616) - macros: fix
select
macro to process 64 branches (#4519) - net: fix
try_io
methods not calling Mio'stry_io
internally (#4582) - runtime: recover when OS fails to spawn a new thread (#4485)
Added
- net: add
UdpSocket::peer_addr
(#4611) - net: add
try_read_buf
method for named pipes (#4626) - signal: add
SignalKind
Hash
/Eq
impls andc_int
conversion (#4540) - signal: add support for signals up to
SIGRTMAX
(#4555) - sync: add
watch::Sender::send_modify
method (#4310) - sync: add
broadcast::Receiver::len
method (#4542) - sync: add
watch::Receiver::same_channel
method (#4581) - sync: implement
Clone
forRecvError
types (#4560)
Changed
- update
mio
to 0.8.1 (#4582) - macros: rename
tokio::select!
's internalutil
module (#4543) - runtime: use
Vec::with_capacity
when building runtime (#4553)
Documented
- improve docs for
tokio_unstable
(#4524) - runtime: include more documentation for thread_pool/worker (#4511)
- runtime: update
Handle::current
's docs to mentionEnterGuard
(#4567) - time: clarify platform specific timer resolution (#4474)
- signal: document that
Signal::recv
is cancel-safe (#4634) - sync:
UnboundedReceiver
close docs (#4548)
Unstable
The following changes only apply when building with --cfg tokio_unstable
:
- task: add
task::Id
type (#4630) - task: add
AbortHandle
type for cancelling tasks in aJoinSet
(#4530, #4640) - task: fix missing
doc(cfg(...))
attributes forJoinSet
(#4531) - task: fix broken link in
AbortHandle
RustDoc (#4545) - metrics: add initial IO driver metrics (#4507)
1.17.0 (February 16, 2022)
This release updates the minimum supported Rust version (MSRV) to 1.49, the
mio
dependency to v0.8, and the (optional) parking_lot
dependency to v0.12.
Additionally, it contains several bug fixes, as well as internal refactoring and
performance improvements.
Fixed
- time: prevent panicking in
sleep
with large durations (#4495) - time: eliminate potential panics in
Instant
arithmetic on platforms whereInstant::now
is not monotonic (#4461) - io: fix
DuplexStream
not participating in cooperative yielding (#4478) - rt: fix potential double panic when dropping a
JoinHandle
(#4430)
Changed
- update minimum supported Rust version to 1.49 (#4457)
- update
parking_lot
dependency to v0.12.0 (#4459) - update
mio
dependency to v0.8 (#4449) - rt: remove an unnecessary lock in the blocking pool (#4436)
- rt: remove an unnecessary enum in the basic scheduler (#4462)
- time: use bit manipulation instead of modulo to improve performance (#4480)
- net: use
std::future::Ready
instead of our ownReady
future (#4271) - replace deprecated
atomic::spin_loop_hint
withhint::spin_loop
(#4491) - fix miri failures in intrusive linked lists (#4397)
Documented
- io: add an example for
tokio::process::ChildStdin
(#4479)
Unstable
The following changes only apply when building with --cfg tokio_unstable
:
- task: fix missing location information in
tracing
spans generated byspawn_local
(#4483) - task: add
JoinSet
for managing sets of tasks (#4335) - metrics: fix compilation error on MIPS (#4475)
- metrics: fix compilation error on arm32v7 (#4453)
1.16.1 (January 28, 2022)
This release fixes a bug in #4428 with the change #4437.
1.16.0 (January 27, 2022)
Fixes a soundness bug in io::Take
(#4428). The unsoundness is exposed when
leaking memory in the given AsyncRead
implementation and then overwriting the
supplied buffer:
impl AsyncRead for Buggy {
fn poll_read(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<()>> {
let new_buf = vec![0; 5].leak();
*buf = ReadBuf::new(new_buf);
buf.put_slice(b"hello");
Poll::Ready(Ok(()))
}
}
Also, this release includes improvements to the multi-threaded scheduler that can increase throughput by up to 20% in some cases (#4383).
Fixed
- io: soundness don't expose uninitialized memory when using
io::Take
in edge case (#4428) - fs: ensure
File::write
results in awrite
syscall when the runtime shuts down (#4316) - process: drop pipe after child exits in
wait_with_output
(#4315) - rt: improve error message when spawning a thread fails (#4398)
- rt: reduce false-positive thread wakups in the multi-threaded scheduler (#4383)
- sync: don't inherit
Send
fromparking_lot::*Guard
(#4359)
Added
- net:
TcpSocket::linger()
andset_linger()
(#4324) - net: impl
UnwindSafe
for socket types (#4384) - rt: impl
UnwindSafe
forJoinHandle
(#4418) - sync:
watch::Receiver::has_changed()
(#4342) - sync:
oneshot::Receiver::blocking_recv()
(#4334) - sync:
RwLock
blocking operations (#4425)
Unstable
The following changes only apply when building with --cfg tokio_unstable
- rt: breaking change overhaul runtime metrics API (#4373)
1.15.0 (December 15, 2021)
Fixed
- io: add cooperative yielding support to
io::empty()
(#4300) - time: make timeout robust against budget-depleting tasks (#4314)
Changed
- update minimum supported Rust version to 1.46.
Added
- time: add
Interval::reset()
(#4248) - io: add explicit lifetimes to
AsyncFdReadyGuard
(#4267) - process: add
Command::as_std()
(#4295)
Added (unstable)
- tracing: instrument
tokio::sync
types (#4302)
1.14.0 (November 15, 2021)
Fixed
- macros: fix compiler errors when using
mut
patterns inselect!
(#4211) - sync: fix a data race between
oneshot::Sender::send
and awaiting aoneshot::Receiver
when the oneshot has been closed (#4226) - sync: make
AtomicWaker
panic safe (#3689) - runtime: fix basic scheduler dropping tasks outside a runtime context (#4213)
Added
Changed
- io: updated
copy
buffer size to matchstd::io::copy
(#4209)
Documented
1.13.1 (November 15, 2021)
Fixed
- sync: fix a data race between
oneshot::Sender::send
and awaiting aoneshot::Receiver
when the oneshot has been closed (#4226)
1.13.0 (October 29, 2021)
Fixed
- sync: fix
Notify
to clone the waker before locking its waiter list (#4129) - tokio: add riscv32 to non atomic64 architectures (#4185)
Added
- net: add
poll_{recv,send}_ready
methods toudp
anduds_datagram
(#4131) - net: add
try_*
,readable
,writable
,ready
, andpeer_addr
methods to split halves (#4120) - sync: add
blocking_lock
toMutex
(#4130) - sync: add
watch::Sender::send_replace
(#3962, #4195) - sync: expand
Debug
forMutex<T>
impl to unsizedT
(#4134) - tracing: instrument time::Sleep (#4072)
- tracing: use structured location fields for spawned tasks (#4128)
Changed
- io: add assert in
copy_bidirectional
thatpoll_write
is sensible (#4125) - macros: use qualified syntax when polling in
select!
(#4192) - runtime: handle
block_on
wakeups better (#4157) - task: allocate callback on heap immediately in debug mode (#4203)
- tokio: assert platform-minimum requirements at build time (#3797)
Documented
- docs: conversion of doc comments to indicative mood (#4174)
- docs: add returning on the first error example for
try_join!
(#4133) - docs: fixing broken links in
tokio/src/lib.rs
(#4132) - signal: add example with background listener (#4171)
- sync: add more oneshot examples (#4153)
- time: document
Interval::tick
cancel safety (#4152)
1.12.0 (September 21, 2021)
Fixed
- mpsc: ensure
try_reserve
error is consistent withtry_send
(#4119) - mpsc: use
spin_loop_hint
instead ofyield_now
(#4115) - sync: make
SendError
field public (#4097)
Added
- io: add POSIX AIO on FreeBSD (#4054)
- io: add convenience method
AsyncSeekExt::rewind
(#4107) - runtime: add tracing span for
block_on
futures (#4094) - runtime: callback when a worker parks and unparks (#4070)
- sync: implement
try_recv
for mpsc channels (#4113)
Documented
- docs: clarify CPU-bound tasks on Tokio (#4105)
- mpsc: document spurious failures on
poll_recv
(#4117) - mpsc: document that
PollSender
implsSink
(#4110) - task: document non-guarantees of
yield_now
(#4091) - time: document paused time details better (#4061, #4103)
1.11.0 (August 31, 2021)
Fixed
- time: don't panic when Instant is not monotonic (#4044)
- io: fix panic in
fill_buf
by not callingpoll_fill_buf
twice (#4084)
Added
- watch: add
watch::Sender::subscribe
(#3800) - process: add
from_std
toChildStd*
(#4045) - stats: initial work on runtime stats (#4043)
Changed
- tracing: change span naming to new console convention (#4042)
- io: speed-up waking by using uninitialized array (#4055, #4071, #4075)
Documented
- time: make Sleep examples easier to find (#4040)
1.10.1 (August 24, 2021)
Fixed
- runtime: fix leak in UnownedTask (#4063)
1.10.0 (August 12, 2021)
Added
- io: add
(read|write)_f(32|64)[_le]
methods (#4022) - io: add
fill_buf
andconsume
toAsyncBufReadExt
(#3991) - process: add
Child::raw_handle()
on windows (#3998)
Fixed
- doc: fix non-doc builds with
--cfg docsrs
(#4020) - io: flush eagerly in
io::copy
(#4001) - runtime: a debug assert was sometimes triggered during shutdown (#4005)
- sync: use
spin_loop_hint
instead ofyield_now
in mpsc (#4037) - tokio: the test-util feature depends on rt, sync, and time (#4036)
Changes
- runtime: reorganize parts of the runtime (#3979, #4005)
- signal: make windows docs for signal module show up on unix builds (#3770)
- task: quickly send task to heap on debug mode (#4009)
Documented
- io: document cancellation safety of
AsyncBufReadExt
(#3997) - sync: document when
watch::send
fails (#4021)
1.9.0 (July 22, 2021)
Added
- net: allow customized I/O operations for
TcpStream
(#3888) - sync: add getter for the mutex from a guard (#3928)
- task: expose nameable future for
TaskLocal::scope
(#3273)
Fixed
Changes
- runtime: reorganize parts of the runtime (#3909, #3939, #3950, #3955, #3980)
- sync: clean up
OnceCell
(#3945) - task: remove mutex in
JoinError
(#3959)
1.8.3 (July 26, 2021)
This release backports two fixes from 1.9.0
Fixed
1.8.2 (July 19, 2021)
Fixes a missed edge case from 1.8.1.
Fixed
- runtime: drop canceled future on next poll (#3965)
1.8.1 (July 6, 2021)
Forward ports 1.5.1 fixes.
Fixed
- runtime: remotely abort tasks on
JoinHandle::abort
(#3934)
1.8.0 (July 2, 2021)
Added
- io: add
get_{ref,mut}
methods toAsyncFdReadyGuard
andAsyncFdReadyMutGuard
(#3807) - io: efficient implementation of vectored writes for
BufWriter
(#3163) - net: add ready/try methods to
NamedPipe{Client,Server}
(#3866, #3899) - sync: add
watch::Receiver::borrow_and_update
(#3813) - sync: implement
From<T>
forOnceCell<T>
(#3877) - time: allow users to specify Interval behaviour when delayed (#3721)
Added (unstable)
- rt: add
tokio::task::Builder
(#3881)
Fixed
- net: handle HUP event with
UnixStream
(#3898)
Documented
- doc: document cancellation safety (#3900)
- time: add wait alias to sleep (#3897)
- time: document auto-advancing behaviour of runtime (#3763)
1.7.2 (July 6, 2021)
Forward ports 1.5.1 fixes.
Fixed
- runtime: remotely abort tasks on
JoinHandle::abort
(#3934)
1.7.1 (June 18, 2021)
Fixed
- runtime: fix early task shutdown during runtime shutdown (#3870)
1.7.0 (June 15, 2021)
Added
- net: add named pipes on windows (#3760)
- net: add
TcpSocket
fromstd::net::TcpStream
conversion (#3838) - sync: add
receiver_count
towatch::Sender
(#3729) - sync: export
sync::notify::Notified
future publicly (#3840) - tracing: instrument task wakers (#3836)
Fixed
- macros: suppress
clippy::default_numeric_fallback
lint in generated code (#3831) - runtime: immediately drop new tasks when runtime is shut down (#3752)
- sync: deprecate unused
mpsc::RecvError
type (#3833)
Documented
- io: clarify EOF condition for
AsyncReadExt::read_buf
(#3850) - io: clarify limits on return values of
AsyncWrite::poll_write
(#3820) - sync: add examples to Semaphore (#3808)
1.6.3 (July 6, 2021)
Forward ports 1.5.1 fixes.
Fixed
- runtime: remotely abort tasks on
JoinHandle::abort
(#3934)
1.6.2 (June 14, 2021)
Fixes
- test: sub-ms
time:advance
regression introduced in 1.6 (#3852)
1.6.1 (May 28, 2021)
This release reverts #3518 because it doesn't work on some kernels due to a kernel bug. (#3803)
1.6.0 (May 14, 2021)
Added
- fs: try doing a non-blocking read before punting to the threadpool (#3518)
- io: add
write_all_buf
toAsyncWriteExt
(#3737) - io: implement
AsyncSeek
forBufReader
,BufWriter
, andBufStream
(#3491) - net: support non-blocking vectored I/O (#3761)
- sync: add
mpsc::Sender::{reserve_owned, try_reserve_owned}
(#3704) - sync: add a
MutexGuard::map
method that returns aMappedMutexGuard
(#2472) - time: add getter for Interval's period (#3705)
Fixed
- io: wake pending writers on
DuplexStream
close (#3756) - process: avoid redundant effort to reap orphan processes (#3743)
- signal: use
std::os::raw::c_int
instead oflibc::c_int
on public API (#3774) - sync: preserve permit state in
notify_waiters
(#3660) - task: update
JoinHandle
panic message (#3727) - time: prevent
time::advance
from going too far (#3712)
Documented
- net: hide
net::unix::datagram
module from docs (#3775) - process: updated example (#3748)
- sync:
Barrier
doc should use task, not thread (#3780) - task: update documentation on
block_in_place
(#3753)
1.5.1 (July 6, 2021)
Fixed
- runtime: remotely abort tasks on
JoinHandle::abort
(#3934)
1.5.0 (April 12, 2021)
Added
- io: add
AsyncSeekExt::stream_position
(#3650) - io: add
AsyncWriteExt::write_vectored
(#3678) - io: add a
copy_bidirectional
utility (#3572) - net: implement
IntoRawFd
forTcpSocket
(#3684) - sync: add
OnceCell
(#3591) - sync: add
OwnedRwLockReadGuard
andOwnedRwLockWriteGuard
(#3340) - sync: add
Semaphore::is_closed
(#3673) - sync: add
mpsc::Sender::capacity
(#3690) - sync: allow configuring
RwLock
max reads (#3644) - task: add
sync_scope
forLocalKey
(#3612)
Fixed
- chore: try to avoid
noalias
attributes on intrusive linked list (#3654) - rt: fix panic in
JoinHandle::abort()
when called from other threads (#3672) - sync: don't panic in
oneshot::try_recv
(#3674) - sync: fix notifications getting dropped on receiver drop (#3652)
- sync: fix
Semaphore
permit overflow calculation (#3644)
Documented
- io: clarify requirements of
AsyncFd
(#3635) - runtime: fix unclear docs for
{Handle,Runtime}::block_on
(#3628) - sync: document that
Semaphore
is fair (#3693) - sync: improve doc on blocking mutex (#3645)
1.4.0 (March 20, 2021)
Added
Fixed
- runtime: avoid unnecessary polling of
block_on
future (#3582) - runtime: fix memory leak/growth when creating many runtimes (#3564)
- runtime: mark
EnterGuard
withmust_use
(#3609)
Documented
- chore: mention fix for building docs in contributing guide (#3618)
- doc: add link to
PollSender
(#3613) - doc: alias sleep to delay (#3604)
- sync: improve
Mutex
FIFO explanation (#3615) - timer: fix double newline in module docs (#3617)
1.3.0 (March 9, 2021)
Added
- coop: expose an
unconstrained()
opt-out (#3547) - net: add
into_std
for net types without it (#3509) - sync: add
same_channel
method tompsc::Sender
(#3532) - sync: add
{try_,}acquire_many_owned
toSemaphore
(#3535) - sync: add back
RwLockWriteGuard::map
andRwLockWriteGuard::try_map
(#3348)
Fixed
- sync: allow
oneshot::Receiver::close
after successfultry_recv
(#3552) - time: do not panic on
timeout(Duration::MAX)
(#3551)
Documented
- doc: doc aliases for pre-1.0 function names (#3523)
- io: fix typos (#3541)
- io: note the EOF behaviour of
read_until
(#3536) - io: update
AsyncRead::poll_read
doc (#3557) - net: update
UdpSocket
splitting doc (#3517) - runtime: add link to
LocalSet
onnew_current_thread
(#3508) - runtime: update documentation of thread limits (#3527)
- sync: do not recommend
join_all
forBarrier
(#3514) - sync: documentation for
oneshot
(#3592) - sync: rename
notify
tonotify_one
(#3526) - time: fix typo in
Sleep
doc (#3515) - time: sync
interval.rs
andtime/mod.rs
docs (#3533)
1.2.0 (February 5, 2021)
Added
- signal: make
Signal::poll_recv
method public (#3383)
Fixed
- time: make
test-util
paused time fully deterministic (#3492)
Documented
- sync: link to new broadcast and watch wrappers (#3504)
1.1.1 (January 29, 2021)
Forward ports 1.0.3 fix.
Fixed
- io: memory leak during shutdown (#3477).
1.1.0 (January 22, 2021)
Added
- net: add
try_read_buf
andtry_recv_buf
(#3351) - mpsc: Add
Sender::try_reserve
function (#3418) - sync: add
RwLock
try_read
andtry_write
methods (#3400) - io: add
ReadBuf::inner_mut
(#3443)
Changed
- macros: improve
select!
error message (#3352) - io: keep track of initialized bytes in
read_to_end
(#3426) - runtime: consolidate errors for context missing (#3441)
Fixed
Documented
- stream: link to new
Stream
wrappers intokio-stream
(#3343) - docs: mention that
test-util
feature is not enabled with full (#3397) - process: add documentation to process::Child fields (#3437)
- io: clarify
AsyncFd
docs about changes of the inner fd (#3430) - net: update datagram docs on splitting (#3448)
- time: document that
Sleep
is notUnpin
(#3457) - sync: add link to
PollSemaphore
(#3456) - task: add
LocalSet
example (#3438) - sync: improve bounded
mpsc
documentation (#3458)
1.0.3 (January 28, 2021)
Fixed
- io: memory leak during shutdown (#3477).
1.0.2 (January 14, 2021)
Fixed
- io: soundness in
read_to_end
(#3428).
1.0.1 (December 25, 2020)
This release fixes a soundness hole caused by the combination of RwLockWriteGuard::map
and RwLockWriteGuard::downgrade
by removing the map
function. This is a breaking
change, but breaking changes are allowed under our semver policy when they are required
to fix a soundness hole. (See this RFC for more.)
Note that we have chosen not to do a deprecation cycle or similar because Tokio 1.0.0 was released two days ago, and therefore the impact should be minimal.
Due to the soundness hole, we have also yanked Tokio version 1.0.0.
Removed
- sync: remove
RwLockWriteGuard::map
andRwLockWriteGuard::try_map
(#3345)
Fixed
- docs: remove stream feature from docs (#3335)
1.0.0 (December 23, 2020)
Commit to the API and long-term support.
Fixed
- sync: spurious wakeup in
watch
(#3234).
Changed
- io: rename
AsyncFd::with_io()
totry_io()
(#3306) - fs: avoid OS specific
*Ext
traits in favor of conditionally defining the fn (#3264). - fs:
Sleep
is!Unpin
(#3278). - net: pass
SocketAddr
by value (#3125). - net:
TcpStream::poll_peek
takesReadBuf
(#3259). - rt: rename
runtime::Builder::max_threads()
tomax_blocking_threads()
(#3287). - time: require
current_thread
runtime when callingtime::pause()
(#3289).
Removed
- remove
tokio::prelude
(#3299). - io: remove
AsyncFd::with_poll()
(#3306). - net: remove
{Tcp,Unix}Stream::shutdown()
in favor ofAsyncWrite::shutdown()
(#3298). - stream: move all stream utilities to
tokio-stream
untilStream
is added tostd
(#3277). - sync: mpsc
try_recv()
due to unexpected behavior (#3263). - tracing: make unstable as
tracing-core
is not 1.0 yet (#3266).
Added
- fs:
poll_*
fns toDirEntry
(#3308). - io:
poll_*
fns toio::Lines
,io::Split
(#3308). - io:
_mut
method variants toAsyncFd
(#3304). - net:
poll_*
fns toUnixDatagram
(#3223). - net:
UnixStream
readiness and non-blocking ops (#3246). - sync:
UnboundedReceiver::blocking_recv()
(#3262). - sync:
watch::Sender::borrow()
(#3269). - sync:
Semaphore::close()
(#3065). - sync:
poll_recv
fns tompsc::Receiver
,mpsc::UnboundedReceiver
(#3308). - time:
poll_tick
fn totime::Interval
(#3316).
0.3.6 (December 14, 2020)
Fixed
- rt: fix deadlock in shutdown (#3228)
- rt: fix panic in task abort when off rt (#3159)
- sync: make
add_permits
panic with usize::MAX >> 3 permits (#3188) - time: Fix race condition in timer drop (#3229)
- watch: fix spurious wakeup (#3244)
Added
0.3.5 (November 30, 2020)
Fixed
Added
0.3.4 (November 18, 2020)
Fixed
- stream:
StreamMap
Default
impl bound (#3093). - io:
AsyncFd::into_inner()
should deregister the FD (#3104).
Changed
- meta:
parking_lot
feature enabled withfull
(#3119).
Added
- io:
AsyncWrite
vectored writes (#3149). - net: TCP/UDP readiness and non-blocking ops (#3130, #2743, #3138).
- net: TCP socket option (linger, send/recv buf size) (#3145, #3143).
- net: PID field in
UCred
with solaris/illumos (#3085). - rt:
runtime::Handle
allows spawning onto a runtime (#3079). - sync:
Notify::notify_waiters()
(#3098). - sync:
acquire_many()
,try_acquire_many()
toSemaphore
(#3067).
0.3.3 (November 2, 2020)
Fixes a soundness hole by adding a missing Send
bound to
Runtime::spawn_blocking()
.
Fixed
- rt: include missing
Send
, fixing soundness hole (#3089). - tracing: avoid huge trace span names (#3074).
Added
- net:
TcpSocket::reuseport()
,TcpSocket::set_reuseport()
(#3083). - net:
TcpSocket::reuseaddr()
(#3093). - net:
TcpSocket::local_addr()
(#3093). - net: add pid to
UCred
(#2633).
0.3.2 (October 27, 2020)
Adds AsyncFd
as a replacement for v0.2's PollEvented
.
Fixed
- io: fix a potential deadlock when shutting down the I/O driver (#2903).
- sync:
RwLockWriteGuard::downgrade()
bug (#2957).
Added
- io:
AsyncFd
for receiving readiness events on raw FDs (#2903). - net:
poll_*
function onUdpSocket
(#2981). - net:
UdpSocket::take_error()
(#3051). - sync:
oneshot::Sender::poll_closed()
(#3032).
0.3.1 (October 21, 2020)
This release fixes an use-after-free in the IO driver. Additionally, the read_buf
and write_buf
methods have been added back to the IO traits, as the bytes crate
is now on track to reach version 1.0 together with Tokio.
Fixed
Added
- io:
copy_buf()
(#2884). - io:
AsyncReadExt::read_buf()
,AsyncReadExt::write_buf()
for working withBuf
/BufMut
(#3003). - rt:
Runtime::spawn_blocking()
(#2980). - sync:
watch::Sender::is_closed()
(#2991).
0.3.0 (October 15, 2020)
This represents a 1.0 beta release. APIs are polished and future-proofed. APIs not included for 1.0 stabilization have been removed.
Biggest changes are:
- I/O driver internal rewrite. The windows implementation includes significant changes.
- Runtime API is polished, especially with how it interacts with feature flag combinations.
- Feature flags are simplified
rt-core
andrt-util
are combined tort
rt-threaded
is renamed tort-multi-thread
to match builder APItcp
,udp
,uds
,dns
are combined tonet
.parking_lot
is included withfull
Changes
- meta: Minimum supported Rust version is now 1.45.
- io:
AsyncRead
trait now takesReadBuf
in order to safely handle reading into uninitialized memory (#2758). - io: Internal I/O driver storage is now able to compact (#2757).
- rt:
Runtime::block_on
now takes&self
(#2782). - sync:
watch
reworked to decouple receiving a change notification from receiving the value (#2814, #2806). - sync:
Notify::notify
is renamed tonotify_one
(#2822). - process:
Child::kill
is now anasync fn
that cleans zombies (#2823). - sync: use
const fn
constructors as possible (#2833, #2790) - signal: reduce cross-thread notification (#2835).
- net: tcp,udp,uds types support operations with
&self
(#2828, #2919, #2934). - sync: blocking
mpsc
channel supportssend
with&self
(#2861). - time: rename
delay_for
anddelay_until
tosleep
andsleep_until
(#2826). - io: upgrade to
mio
0.7 (#2893). - io:
AsyncSeek
trait is tweaked (#2885). - fs:
File
operations take&self
(#2930). - rt: runtime API, and
#[tokio::main]
macro polish (#2876) - rt:
Runtime::enter
uses an RAII guard instead of a closure (#2954). - net: the
from_std
function on all sockets no longer sets socket into non-blocking mode (#2893)
Added
- sync:
map
function to lock guards (#2445). - sync:
blocking_recv
andblocking_send
fns tompsc
for use outside of Tokio (#2685). - rt:
Builder::thread_name_fn
for configuring thread names (#1921). - fs: impl
FromRawFd
andFromRawHandle
forFile
(#2792). - process:
Child::wait
andChild::try_wait
(#2796). - rt: support configuring thread keep-alive duration (#2809).
- rt:
task::JoinHandle::abort
forcibly cancels a spawned task (#2474). - sync:
RwLock
write guard to read guard downgrading (#2733). - net: add
poll_*
functions that take&self
to all net types (#2845) - sync:
get_mut()
forMutex
,RwLock
(#2856). - sync:
mpsc::Sender::closed()
waits forReceiver
half to close (#2840). - sync:
mpsc::Sender::is_closed()
returns true ifReceiver
half is closed (#2726). - stream:
iter
anditer_mut
toStreamMap
(#2890). - net: implement
AsRawSocket
on windows (#2911). - net:
TcpSocket
creates a socket without binding or listening (#2920).
Removed
- io: vectored ops are removed from
AsyncRead
,AsyncWrite
traits (#2882). - io:
mio
is removed from the public API.PollEvented
andRegistration
are removed (#2893). - io: remove
bytes
from public API.Buf
andBufMut
implementation are removed (#2908). - time:
DelayQueue
is moved totokio-util
(#2897).
Fixed
- io:
stdout
andstderr
buffering on windows (#2734).
0.2.22 (July 21, 2020)
Fixes
- docs: misc improvements (#2572, #2658, #2663, #2656, #2647, #2630, #2487, #2621, #2624, #2600, #2623, #2622, #2577, #2569, #2589, #2575, #2540, #2564, #2567, #2520, #2521, #2493)
- rt: allow calls to
block_on
inside calls toblock_in_place
that are themselves insideblock_on
(#2645) - net: fix non-portable behavior when dropping
TcpStream
OwnedWriteHalf
(#2597) - io: improve stack usage by allocating large buffers on directly on the heap (#2634)
- io: fix unsound pin projection in
AsyncReadExt::read_buf
andAsyncWriteExt::write_buf
(#2612) - io: fix unnecessary zeroing for
AsyncRead
implementors (#2525) - io: Fix
BufReader
not correctly forwardingpoll_write_buf
(#2654) - io: fix panic in
AsyncReadExt::read_line
(#2541)
Changes
- coop: returning
Poll::Pending
no longer decrements the task budget (#2549)
Added
- io: little-endian variants of
AsyncReadExt
andAsyncWriteExt
methods (#1915) - task: add
tracing
instrumentation to spawned tasks (#2655) - sync: allow unsized types in
Mutex
andRwLock
(viadefault
constructors) (#2615) - net: add
ToSocketAddrs
implementation for&[SocketAddr]
(#2604) - fs: add
OpenOptionsExt
forOpenOptions
(#2515) - fs: add
DirBuilder
(#2524)
0.2.21 (May 13, 2020)
Fixes
- macros: disambiguate built-in
#[test]
attribute in macro expansion (#2503) - rt:
LocalSet
and task budgeting (#2462). - rt: task budgeting with
block_in_place
(#2502). - sync: release
broadcast
channel memory without sending a value (#2509). - time: notify when resetting a
Delay
to a time in the past (#2290)
Added
- io:
get_mut
,get_ref
, andinto_inner
toLines
(#2450). - io:
mio::Ready
argument toPollEvented
(#2419). - os: illumos support (#2486).
- rt:
Handle::spawn_blocking
(#2501). - sync:
OwnedMutexGuard
forArc<Mutex<T>>
(#2455).
0.2.20 (April 28, 2020)
Fixes
- sync:
broadcast
closing the channel no longer requires capacity (#2448). - rt: regression when configuring runtime with
max_threads
less than number of CPUs (#2457).
0.2.19 (April 24, 2020)
Fixes
- docs: misc improvements (#2400, #2405, #2414, #2420, #2423, #2426, #2427, #2434, #2436, #2440).
- rt: support
block_in_place
in more contexts (#2409, #2410). - stream: no panic in
merge()
andchain()
when usingsize_hint()
(#2430). - task: include visibility modifier when defining a task-local (#2416).
Added
- rt:
runtime::Handle::block_on
(#2437). - sync: owned
Semaphore
permit (#2421). - tcp: owned split (#2270).
0.2.18 (April 12, 2020)
Fixes
- task:
LocalSet
was incorrectly marked asSend
(#2398) - io: correctly report
WriteZero
failure inwrite_int
(#2334)
0.2.17 (April 9, 2020)
Fixes
- rt: bug in work-stealing queue (#2387)
Changes
- rt: threadpool uses logical CPU count instead of physical by default (#2391)
0.2.16 (April 3, 2020)
Fixes
- sync: fix a regression where
Mutex
,Semaphore
, andRwLock
futures no longer implementSync
(#2375) - fs: fix
fs::copy
not copying file permissions (#2354)
Added
0.2.15 (April 2, 2020)
Fixes
- rt: fix queue regression (#2362).
Added
- sync: Add disarm to
mpsc::Sender
(#2358).
0.2.14 (April 1, 2020)
Fixes
- rt: concurrency bug in scheduler (#2273).
- rt: concurrency bug with shell runtime (#2333).
- test-util: correct pause/resume of time (#2253).
- time:
DelayQueue
correct wakeup afterinsert
(#2285).
Added
- io: impl
RawFd
,AsRawHandle
for std io types (#2335). - rt: automatic cooperative task yielding (#2160, #2343, #2349).
- sync:
RwLock::into_inner
(#2321).
Changed
- sync: semaphore, mutex internals rewritten to avoid allocations (#2325).
0.2.13 (February 28, 2020)
Fixes
- macros: unresolved import in
pin!
(#2281).
0.2.12 (February 27, 2020)
Fixes
- net:
UnixStream::poll_shutdown
should callshutdown(Write)
(#2245). - process: Wake up read and write on
EPOLLERR
(#2218). - rt: potential deadlock when using
block_in_place
and shutting down the runtime (#2119). - rt: only detect number of CPUs if
core_threads
not specified (#2238). - sync: reduce
watch::Receiver
struct size (#2191). - time: succeed when setting delay of
$MAX-1
(#2184). - time: avoid having to poll
DelayQueue
after inserting new delay (#2217).
Added
- macros:
pin!
variant that assigns to identifier and pins (#2274). - net: impl
Stream
forListener
types (#2275). - rt:
Runtime::shutdown_timeout
waits for runtime to shutdown for specified duration (#2186). - stream:
StreamMap
merges streams and can insert / remove streams at runtime (#2185). - stream:
StreamExt::skip()
skips a fixed number of items (#2204). - stream:
StreamExt::skip_while()
skips items based on a predicate (#2205). - sync:
Notify
provides basicasync
/await
task notification (#2210). - sync:
Mutex::into_inner
retrieves guarded data (#2250). - sync:
mpsc::Sender::send_timeout
sends, waiting for up to specified duration for channel capacity (#2227). - time: impl
Ord
andHash
forInstant
(#2239).
0.2.11 (January 27, 2020)
Fixes
- docs: misc fixes and tweaks (#2155, #2103, #2027, #2167, #2175).
- macros: handle generics in
#[tokio::main]
method (#2177). - sync:
broadcast
potential lost notifications (#2135). - rt: improve "no runtime" panic messages (#2145).
Added
- optional support for using
parking_lot
internally (#2164). - fs:
fs::copy
, an async version ofstd::fs::copy
(#2079). - macros:
select!
waits for the first branch to complete (#2152). - macros:
join!
waits for all branches to complete (#2158). - macros:
try_join!
waits for all branches to complete or the first error (#2169). - macros:
pin!
pins a value to the stack (#2163). - net:
ReadHalf::poll()
andReadHalf::poll_peak
(#2151) - stream:
StreamExt::timeout()
sets a per-item max duration (#2149). - stream:
StreamExt::fold()
applies a function, producing a single value. (#2122). - sync: impl
Eq
,PartialEq
foroneshot::RecvError
(#2168). - task: methods for inspecting the
JoinError
cause (#2051).
0.2.10 (January 21, 2020)
Fixes
#[tokio::main]
whenrt-core
feature flag is not enabled (#2139).- remove
AsyncBufRead
fromBufStream
impl block (#2108). - potential undefined behavior when implementing
AsyncRead
incorrectly (#2030).
Added
BufStream::with_capacity
(#2125).- impl
From
andDefault
forRwLock
(#2089). io::ReadHalf::is_pair_of
checks if providedWriteHalf
is for the same underlying object (#1762, #2144).runtime::Handle::try_current()
returns a handle to the current runtime (#2118).stream::empty()
returns an immediately ready empty stream (#2092).stream::once(val)
returns a stream that yields a single value:val
(#2094).stream::pending()
returns a stream that never becomes ready (#2092).StreamExt::chain()
sequences a second stream after the first completes (#2093).StreamExt::collect()
transform a stream into a collection (#2109).StreamExt::fuse
ends the stream after the firstNone
(#2085).StreamExt::merge
combines two streams, yielding values as they become ready (#2091).- Task-local storage (#2126).
0.2.9 (January 9, 2020)
Fixes
AsyncSeek
impl forFile
(#1986).- rt: shutdown deadlock in
threaded_scheduler
(#2074, #2082). - rt: memory ordering when dropping
JoinHandle
(#2044). - docs: misc API documentation fixes and improvements.
0.2.8 (January 7, 2020)
Fixes
- depend on new version of
tokio-macros
.
0.2.7 (January 7, 2020)
Fixes
- potential deadlock when dropping
basic_scheduler
Runtime. - calling
spawn_blocking
from within aspawn_blocking
(#2006). - storing a
Runtime
instance in a thread-local (#2011). - miscellaneous documentation fixes.
- rt: fix
Waker::will_wake
to return true when tasks match (#2045). - test-util:
time::advance
runs pending tasks before changing the time (#2059).
Added
net::lookup_host
maps aT: ToSocketAddrs
to a stream ofSocketAddrs
(#1870).process::Child
fields are made public to matchstd
(#2014).- impl
Stream
forsync::broadcast::Receiver
(#2012). sync::RwLock
provides an asynchronous read-write lock (#1699).runtime::Handle::current
returns the handle for the current runtime (#2040).StreamExt::filter
filters stream values according to a predicate (#2001).StreamExt::filter_map
simultaneously filter and map stream values (#2001).StreamExt::try_next
convenience for streams ofResult<T, E>
(#2005).StreamExt::take
limits a stream to a specified number of values (#2025).StreamExt::take_while
limits a stream based on a predicate (#2029).StreamExt::all
tests if every element of the stream matches a predicate (#2035).StreamExt::any
tests if any element of the stream matches a predicate (#2034).task::LocalSet.await
runs spawned tasks until the set is idle (#1971).time::DelayQueue::len
returns the number entries in the queue (#1755).- expose runtime options from the
#[tokio::main]
and#[tokio::test]
(#2022).
0.2.6 (December 19, 2019)
Fixes
fs::File::seek
API regression (#1991).
0.2.5 (December 18, 2019)
Added
io::AsyncSeek
trait (#1924).Mutex::try_lock
(#1939)mpsc::Receiver::try_recv
andmpsc::UnboundedReceiver::try_recv
(#1939).writev
support forTcpStream
(#1956).time::throttle
for throttling streams (#1949).- implement
Stream
fortime::DelayQueue
(#1975). sync::broadcast
provides a fan-out channel (#1943).sync::Semaphore
provides an async semaphore (#1973).stream::StreamExt
provides stream utilities (#1962).
Fixes
- deadlock risk while shutting down the runtime (#1972).
- panic while shutting down the runtime (#1978).
sync::MutexGuard
debug output (#1961).- misc doc improvements (#1933, #1934, #1940, #1942).
Changes
- runtime threads are configured with
runtime::Builder::core_threads
andruntime::Builder::max_threads
.runtime::Builder::num_threads
is deprecated (#1977).
0.2.4 (December 6, 2019)
Fixes
sync::Mutex
deadlock whenlock()
future is dropped early (#1898).
0.2.3 (December 6, 2019)
Added
- read / write integers using
AsyncReadExt
andAsyncWriteExt
(#1863). read_buf
/write_buf
for reading / writingBuf
/BufMut
(#1881).TcpStream::poll_peek
- pollable API for performing TCP peek (#1864).sync::oneshot::error::TryRecvError
provides variants to detect the error kind (#1874).LocalSet::block_on
accepts!'static
task (#1882).task::JoinError
is nowSync
(#1888).- impl conversions between
tokio::time::Instant
andstd::time::Instant
(#1904).
Fixes
- calling
spawn_blocking
after runtime shutdown (#1875). LocalSet
drop infinite loop (#1892).LocalSet
hang under load (#1905).- improved documentation (#1865, #1866, #1868, #1874, #1876, #1911).
0.2.2 (November 29, 2019)
Fixes
- scheduling with
basic_scheduler
(#1861). - update
spawn
panic message to specify that a task scheduler is required (#1839). - API docs example for
runtime::Builder
to include a task scheduler (#1841). - general documentation (#1834).
- building on illumos/solaris (#1772).
- panic when dropping
LocalSet
(#1843). - API docs mention the required Cargo features for
Builder::{basic, threaded}_scheduler
(#1858).
Added
- impl
Stream
forsignal::unix::Signal
(#1849). - API docs for platform specific behavior of
signal::ctrl_c
andsignal::unix::Signal
(#1854). - API docs for
signal::unix::Signal::{recv, poll_recv}
andsignal::windows::CtrlBreak::{recv, poll_recv}
(#1854). File::into_std
andFile::try_into_std
methods (#1856).
0.2.1 (November 26, 2019)
Fixes
- API docs for
TcpListener::incoming
,UnixListener::incoming
(#1831).
Added
tokio::task::LocalSet
provides a strategy for spawning!Send
tasks (#1733).- export
tokio::time::Elapsed
(#1826). - impl
AsRawFd
,AsRawHandle
fortokio::fs::File
(#1827).
0.2.0 (November 26, 2019)
A major breaking change. Most implementation and APIs have changed one way or another. This changelog entry contains a highlight
Changed
- APIs are updated to use
async / await
. - most
tokio-*
crates are collapsed into this crate. - Scheduler is rewritten.
tokio::spawn
returns aJoinHandle
.- A single I/O / timer is used per runtime.
- I/O driver uses a concurrent slab for allocating state.
- components are made available via feature flag.
- Use
bytes
0.5 tokio::codec
is moved totokio-util
.
Removed
- Standalone
timer
andnet
drivers are removed, useRuntime
instead current_thread
runtime is removed, usetokio::runtime::Runtime
withbasic_scheduler
instead.
0.1.21 (May 30, 2019)
Changed
- Bump
tokio-trace-core
version to 0.2 (#1111).
0.1.20 (May 14, 2019)
Added
tokio::runtime::Builder::panic_handler
allows configuring handling panics on the runtime (#1055).
0.1.19 (April 22, 2019)
Added
- Re-export
tokio::sync::Mutex
primitive (#964).
0.1.18 (March 22, 2019)
Added
TypedExecutor
re-export and implementations (#993).
0.1.17 (March 13, 2019)
Added
- Propagate trace subscriber in the runtime (#966).
0.1.16 (March 1, 2019)
Fixed
- async-await: track latest nightly changes (#940).
Added
sync::Watch
, a single value broadcast channel (#922).- Async equivalent of read / write file helpers being added to
std
(#896).
0.1.15 (January 24, 2019)
Added
0.1.14 (January 6, 2019)
- Use feature flags to break up the crate, allowing users to pick & choose components (#808).
- Export
UnixDatagram
andUnixDatagramFramed
(#772).
0.1.13 (November 21, 2018)
- Fix
Runtime::reactor()
when no tasks are spawned (#721). runtime::Builder
no longer uses deprecated methods (#749).- Provide
after_start
andbefore_stop
configuration settings forRuntime
(#756). - Implement throttle stream combinator (#736).
0.1.12 (October 23, 2018)
- runtime: expose
keep_alive
on runtime builder (#676). - runtime: create a reactor per worker thread (#660).
- codec: fix panic in
LengthDelimitedCodec
(#682). - io: re-export
tokio_io::io::read
function (#689). - runtime: check for executor re-entry in more places (#708).
0.1.11 (September 28, 2018)
- Fix
tokio-async-await
dependency (#675).
0.1.10 (September 27, 2018)
- Fix minimal versions
0.1.9 (September 27, 2018)
- Experimental async/await improvements (#661).
- Re-export
TaskExecutor
fromtokio-current-thread
(#652). - Improve
Runtime
builder API (#645). tokio::run
panics when called from the context of an executor (#646).- Introduce
StreamExt
with atimeout
helper (#573). - Move
length_delimited
intotokio
(#575). - Re-organize
tokio::net
module (#548). - Re-export
tokio-current-thread::spawn
in current_thread runtime (#579).
0.1.8 (August 23, 2018)
- Extract tokio::executor::current_thread to a sub crate (#370)
- Add
Runtime::block_on
(#398) - Add
runtime::current_thread::block_on_all
(#477) - Misc documentation improvements (#450)
- Implement
std::error::Error
for error types (#501)
0.1.7 (June 6, 2018)
- Add
Runtime::block_on
for concurrent runtime (#391). - Provide handle to
current_thread::Runtime
that allows spawning tasks from other threads (#340). - Provide
clock::now()
, a configurable source of time (#381).
0.1.6 (May 2, 2018)
- Add asynchronous filesystem APIs (#323).
- Add "current thread" runtime variant (#308).
CurrentThread
: Expose innerPark
instance.- Improve fairness of
CurrentThread
executor (#313).
0.1.5 (March 30, 2018)
- Provide timer API (#266)
0.1.4 (March 22, 2018)
- Fix build on FreeBSD (#218)
- Shutdown the Runtime when the handle is dropped (#214)
- Set Runtime thread name prefix for worker threads (#232)
- Add builder for Runtime (#234)
- Extract TCP and UDP types into separate crates (#224)
- Optionally support futures 0.2.
0.1.3 (March 09, 2018)
- Fix
CurrentThread::turn
to block on idle (#212).
0.1.2 (March 09, 2018)
- Introduce Tokio Runtime (#141)
- Provide
CurrentThread
for more flexible usage of current thread executor (#141). - Add Lio for platforms that support it (#142).
- I/O resources now lazily bind to the reactor (#160).
- Extract Reactor to dedicated crate (#169)
- Add facade to sub crates and add prelude (#166).
- Switch TCP/UDP fns to poll_ -> Poll<...> style (#175)
0.1.1 (February 09, 2018)
- Doc fixes
0.1.0 (February 07, 2018)
- Initial crate released based on RFC.