- BREAKING:
IoMutSlice::newwas made private, it was never meant to be public. #200. - Added
AsyncFd::set_socket_option2andAsyncFd::socket_option2, which provide a type safe interface aroundAsyncFd::(set_)socket_option#201. - The
iomodule documentation was expanded and improved #202.
- Complete rewrite of the internals to make it easier to port.
- The methods on
Configare now implementation specific. - Removed the
D: Descriptorgeneric parameter fromAsyncFd, this is now handled internally. - The
Descriptortrait,FileandDirectenums are now replaced byfd::Kind. - Futures that create
AsyncFd, such asnet::Socketandfs::OpenOptionsnow have akindmethod that sets the fd kind. - Removed the
AsFdimplementation forRingas that might not always be possible to provide. - The
net::SocketAddressis now implemented for the socket address types for in the standard library, not in libc. It's now implemented forSocketAddr,SocketAddrV4,SocketAddrV6andunix::net::addr::SocketAddr. net::Connectno longer implementsExtractas all socket address types in the library areCopy.- The
BufSliceandBufMutSlicetypes now useIoSliceandIoMutSliceas wrapper aroundlibc::iovec. - The
msgmodule now uses theMessagetype as type for message data, instead ofu32(thoughMessageis alsou32). process::ReceiveSignalsis now a properAsyncIter.- More implementations for
Bufwere added forCow<'static, [u8]>,Cow<'static, str>,Box<str>,Arc<[u8]>andArc<str>. Ring::submission_queuehas been renamed toRing::sq, because it's shorter.- All types from external crates have been removed from the public API (that was
mainly
libc).Signalsmethods now acceptSignalSetinstead oflibc::sigset_t.SignalsandReceiveSignalsnow returnsSignalInfoinstead oflibc::signalfd_siginfo.process::waitandprocess:wait_onnow acceptsWaitOptioninstead ofc_int.process::waitandprocess:wait_onnow returnsWaitInfoinstead oflibc::siginfo_t.process::Signalsnow acceptsSignalSetandSignalin created oflibc::sigset_t.process::Signals::receive_signalsreturnsSignalInfoinstead oflibc::signalfd_siginfo.poll::multishot_pollandpoll::oneshot_pollnow acceptsInterestinstead ofc_int.AsyncFd::advisenow acceptsfs::AdviseFlaginstead ofc_int.AsyncFd::allocatenow acceptsfs::AllocateFlaginstead ofc_int.AsyncFd::multishot_accept4now acceptsnet::AcceptFlaginstead ofc_int.AsyncFd::multishot_recvnow acceptsnet::RecvFlaginstead ofc_int.AsyncFd::recvand related functions now acceptsRecvFlaginstead ofc_int.AsyncFd::sendand related functions now acceptsSendFlaginstead ofc_int.AsyncFd::accept4now acceptsAcceptFlaginstead ofc_int.AsyncFd::spliceand related function now acceptsSpliceFlaginstead ofc_int.AsyncFd::set_socket_optionandAsyncFd::socket_optionnow acceptsnet::Levelandnet::Optinstead ofc_int.net::socketnow acceptsDomain,TypeandProtocolinstead ofc_ints.mem::advisenow acceptsAdviseFlaginstead ofc_int.
AsyncFdalso gained a number of new methods:AsyncFd::kindreturns thefd::Kind.AsyncFd::multishot_readmultishot read, similar to multishot recv.AsyncFd::send_all_zcsend all bytes using zero-copy I/O.AsyncFd::send_all_vectored_zcsend all using zero-copy vectored I/O.AsyncFd::bindthebind(2)system call.AsyncFd::listenthelisten(2)system call.AsyncFd::connecttheconnect(2)system call.
- The buffer traits have some new methods:
Buf::lenreturns the length.Buf::is_emptyreturns true if the buffer is empty.Buf::as_slicereturns the buffer as slices.BufMut::extend_from_sliceandBufMutSlice::extend_from_sliceextends the buffer with a slice.BufSlice::total_lenreturns the total length.
- New
pipemodule that wraps thepipe(2)system call. - The
msgmodule was redesigned. It nows uses aListenandSender.msg_listenerwas renamed tomsg::listener.MsgListenerwas renamed tomsg::Listener.send_msgandtry_send_msgwere merged intomsg::Listener.MsgTokenwas removed, it's now part ofmsg::Sender.
- Various types were renamed:
CancelOptoCancelOperationpoll::PollEventtopoll::Event.process::ToSignalsDirecttoprocess::ToDirect.
- Fix possible overflow in ReadBuf::release https://github.com/Thomasdezeeuw/a10/commit/79078cb9a2f4222eb184588ab1b05c37ad5f5507.
- Don't close direct descriptor using close(2) https://github.com/Thomasdezeeuw/a10/commit/a51984404c00beb6cecf4419842860fe41d23154.
- Added
AsyncFd::truncatehttps://github.com/Thomasdezeeuw/a10/commit/6cd74479264cbd230e47b9d2a572a75aab4d83b1. - Synchronously close fd if it can't be done asynchronously due to a full queue https://github.com/Thomasdezeeuw/a10/commit/42565a387be884921e5300cf3fc4f833e178906d.
- Exports
Cancelat the root of the crate https://github.com/Thomasdezeeuw/a10/commit/4b91d3f1fcd8502076150bfb12853e9f08b1bdc4. - Delay allocation of drop waker when possible. This is used when a
Futureis dropped before it's operation is complete. https://github.com/Thomasdezeeuw/a10/commit/629c25e3883d2eedffe77eda4937cc50842f4c32, https://github.com/Thomasdezeeuw/a10/commit/f1ff3e4bc374136fef3b0d71f5e9ba7e77cea3b0, https://github.com/Thomasdezeeuw/a10/commit/fbc6d8478cb89a179a6c72a1dab9fb1406dfa123. - Use wrapping add in determining the submission queue index (no more overflow after 1 << 32 operations!) https://github.com/Thomasdezeeuw/a10/commit/39289c237453a7f57e3fa604171625a9ef2aed23.
This release adds support for direct descriptors, which are io_uring specific file descriptors. Direct descriptor have lower overhead, but an only be used in io_uring operations, not regular system calls. It is possible to convert a direct descriptor into a file descriptor and vica versa.
AsyncFdnow has a generic parameterDthat supports either a regular file descriptor (fd::File) or a direct desctiptor (fd::Direct). #102, https://github.com/Thomasdezeeuw/a10/commit/03fe635399f3e453b7b707e080ba239e498e5416, https://github.com/Thomasdezeeuw/a10/commit/2682bbb6b4e4d18490bf954abc1342ddca003860, https://github.com/Thomasdezeeuw/a10/commit/b7aafeaa9f615324c4168bc377625b95a14766de, https://github.com/Thomasdezeeuw/a10/commit/1684af7b2dc3880a0db57dd3dc75184aa66057b8, https://github.com/Thomasdezeeuw/a10/commit/ab5ae276e0ca70bf960fcc1d9fa03adce778f729, https://github.com/Thomasdezeeuw/a10/commit/f423cd569aaf18e77e5e392dbf5054b3a35c6145, https://github.com/Thomasdezeeuw/a10/commit/5d489afdde0a44fb9585970f6d386e42aace87ae, https://github.com/Thomasdezeeuw/a10/commit/1eea10736d305c62edccffc53066a2ed228da6fb, https://github.com/Thomasdezeeuw/a10/commit/632fc39963e02f396f26882abf8ca0eb33660ae8, https://github.com/Thomasdezeeuw/a10/commit/5a8022f6f2d4f6d48a4080987bf9a4af517108ef, https://github.com/Thomasdezeeuw/a10/commit/10a66cbd7fb40d3dcc6deac2dae2d96e0a0605e2, https://github.com/Thomasdezeeuw/a10/commit/518dd0901cd80d8f11c96a6aa50a5ea73239ad5e, https://github.com/Thomasdezeeuw/a10/commit/b6ecb740e9eab2027ffb8d70a76d2285b7b42f83, https://github.com/Thomasdezeeuw/a10/commit/43d4fe1d085c6a5d1eb26044437ae0b99e74e68b, https://github.com/Thomasdezeeuw/a10/commit/0763f2c3244956d183a86f3656be28e8899a683c, https://github.com/Thomasdezeeuw/a10/commit/9f58db14578ef8d8fee2c419417b369d772e2249, https://github.com/Thomasdezeeuw/a10/commit/b7f2b7fe737c9c5aeee0da2c388497aab9388b2a, https://github.com/Thomasdezeeuw/a10/commit/c762ea2fced692e3d8b00285de0b720b68a53409.- Add
Config::with_direct_descriptors, enableing the use of direct descriptors https://github.com/Thomasdezeeuw/a10/commit/162ff632c0de2e6d8e85d7c12f433af1f3904450. - Adds
AsyncFd::to_file_descriptorto convert a direct descriptor to a file descriptor. https://github.com/Thomasdezeeuw/a10/commit/a913377d7be511a430430235d6b7b6b073c9a4a8. - Adds
AsyncFd::to_direct_descriptorto convert a file descriptor to a direct descriptor. https://github.com/Thomasdezeeuw/a10/commit/d611b7866b9b6aeb157a3e954a62803927d93a99. - Adds
Signals::to_direct_descriptorto use direct description forSignalshttps://github.com/Thomasdezeeuw/a10/commit/029f084733c39d26ea9a5bdd923f1c02d5f17c0a. - Adds
ReceiveSignals::into_inner, returns the underlyingSignalshttps://github.com/Thomasdezeeuw/a10/commit/fcafbd44dd9b19ec3167c536335dba9e39df2d66. - Moves
SubmissionQueue::oneshot_polltopollmodule https://github.com/Thomasdezeeuw/a10/commit/5f4b863a806a920d78880b2f525822c0969b80e2. - Moves
SubmissionQueue::multishot_polltopollmodule https://github.com/Thomasdezeeuw/a10/commit/8787da1ca4a5c09699882a00cc73a1536a417618. - Moves
SubmissionQueue::msg_listenertomsgmodule https://github.com/Thomasdezeeuw/a10/commit/0a9ff3d9816702a29caf8f5e62f2d006769599c0. - Moves
SubmissionQueue::(try_)send_msgtomsgmodule https://github.com/Thomasdezeeuw/a10/commit/d620de603b5da0bfab6300873d1bfc976515b16e. - Moves
signalsmodule into theprocessmodule, renamessignal::Receivetoprocess::ReceiveSignal, other types are simply moved https://github.com/Thomasdezeeuw/a10/commit/5c011bc07d4bf5596401399ab2b86559d28d2c16. - Removes
signalsmodule https://github.com/Thomasdezeeuw/a10/commit/4305a97adf3b5e3427b80f046a31790f719affa7. - Removes
SubmissionQueue::{msg_listener,try_send_msg,send_msg,oneshot_poll,multishot_poll}functions https://github.com/Thomasdezeeuw/a10/commit/4305a97adf3b5e3427b80f046a31790f719affa7. AsyncFdnow lives in it's ownfdmodule, still exported at the root of the crate https://github.com/Thomasdezeeuw/a10/commit/ecda8164a32062f7091d862de5c7798d26002d59.- Set
IOSQE_ASYNCfor some operations https://github.com/Thomasdezeeuw/a10/commit/a1e25956b6e04e9c678293318967db3f2e4b905a.
- Added
Config::disablewhich enablesIORING_SETUP_R_DISABLEDhttps://github.com/Thomasdezeeuw/a10/commit/08078e34596e31f3a3a706b583d7a2f5f9f8ac8b. - Added
Ring::enablewhich enables a disable ring https://github.com/Thomasdezeeuw/a10/commit/3817e4f0aa6ac51e131be0b8076e87fa963c4be0. - Added
Config::single_issuerwhich enablesIORING_SETUP_SINGLE_ISSUER, which is no longer set by default https://github.com/Thomasdezeeuw/a10/commit/e18c618b31bc83564cc23388d8913ebb93e1b310. - Added
Config::defer_task_runwhich enablesIORING_SETUP_DEFER_TASKRUNhttps://github.com/Thomasdezeeuw/a10/commit/0f4d4847392bdccda346b018d7572d41a2a49853.
- Make BufGroupId and BufIdx public, but still hide them from the docs https://github.com/Thomasdezeeuw/a10/commit/c22a6913e37859358b2730d3a92e9e8d6801fa44.
- Update the log crate to use the (now stable)
kvfeature. https://github.com/Thomasdezeeuw/a10/commit/a51723d0491dd129f28604dd0995cb8d0a21fa80. - Added
AsyncFd::socket_optionhttps://github.com/Thomasdezeeuw/a10/commit/2046b60875c273da9d9832cc1a28d118cbf84413. - Added
AsyncFd::set_socket_optionhttps://github.com/Thomasdezeeuw/a10/commit/1e651a24533ca21b7caa4cfa62722639a3301afd. - Added
process:wait(_on)https://github.com/Thomasdezeeuw/a10/commit/45453bfb5e6a7f44d836c30923be0753d70ccc8e. - Fix memory leak in ReceiveSignals https://github.com/Thomasdezeeuw/a10/commit/b1c28a95be538b0e35ecfc2cd6924cc706d0975b.
- Don't create completion event when dropping
AsyncFdhttps://github.com/Thomasdezeeuw/a10/commit/b7e73aee7f79225894ffce32731f2107cea4ca0c. - Only create one completion event when waking https://github.com/Thomasdezeeuw/a10/commit/f752da0c668bb347b9c65981b3ee7acb06264d7b.
- Don't request for completion event when canceling an operation https://github.com/Thomasdezeeuw/a10/commit/543d490603a3a61265ac88856f7f976aaed4f970.
- Don't request for completion event when sending messages https://github.com/Thomasdezeeuw/a10/commit/f6030ea95319e1d158b4f595a05743d66d388984.
- Cancel all operations it's dropped without completing it https://github.com/Thomasdezeeuw/a10/commit/6298b3aa2056cf751b3ba253fb1e1d0f2599180e, https://github.com/Thomasdezeeuw/a10/commit/b6c2ed57b763192bd7f359549f4a86ca5f320b01, https://github.com/Thomasdezeeuw/a10/commit/6b823db80e463529e4f527fca93be14acf437eb7, https://github.com/Thomasdezeeuw/a10/commit/f7dded7d350e30792d21bf894de018375b14c1f4, https://github.com/Thomasdezeeuw/a10/commit/cde7c070d112eaa97d4274de67affde077f9bc5d, https://github.com/Thomasdezeeuw/a10/commit/90f67be0c6559751f1ce1fe5ae0a3121ba2444c1, https://github.com/Thomasdezeeuw/a10/commit/a54b50c9fd1741d2701f9f69e0b5df5297da2e0b, https://github.com/Thomasdezeeuw/a10/commit/5efd5c2afb1bd038e23179c0dade054ea359be4e, https://github.com/Thomasdezeeuw/a10/commit/ba2349f877b306210ce776dc257bab4ab2759af1.
- Loosen result check in
CancelOphttps://github.com/Thomasdezeeuw/a10/commit/86695d53a3f387b648419ae20b21f4751d52a0c0. - Make slot available quicker for stopped multishot operations https://github.com/Thomasdezeeuw/a10/commit/51ad73b8efb43279c07023c2f3f87bce3e27a228.
- Added
AsyncFd::try_clonehttps://github.com/Thomasdezeeuw/a10/commit/2fc6e63dbdaf8556ca9565ee14e5ab8bf20884a3. - Fixs size of tuple SocketAddress implementations https://github.com/Thomasdezeeuw/a10/commit/11781458e176e093852ee7241dde2e2aba033f18.
- Updates io_uring definitions, syncing to liburing commit
7524a6ahttps://github.com/Thomasdezeeuw/a10/commit/2660ccc6ab0dc538a561fcba255d53b0d553ce87, https://github.com/Thomasdezeeuw/a10/commit/32967b974b859c8bca84feb24950d3dfc0215c46.
- Reduce flag unsupported logs to debug https://github.com/Thomasdezeeuw/a10/commit/061236a9023486b0b02302fc4163acec29b98ac4.
- Fixed dropping of
ReceiveSignals, it now properly cancels the receiving of process signals and ensure the kernel doesn't write into deallocated memory #81.
- Added
ReceiveSignals, a type that combines Signals and signals::Receive to not have to deal with lifetime of the fd #79.
- Added support for user space messaging, see
SubmissionQueue::msg_listenerandSubmissionQueue::(try_)send_msg#76. - Returns more accurate
io::ErrorKinds for certain errors whennightlyfeature is enabled #77.
- Don't leak
SubmissionQueueinStd{in,out,err}types #72. - Implement fmt::Debug for
Std{in,out,err}and improve the implemtation forAsyncFdandSubmissionQueue#73.
Initial release.