Repository navigation
Releases
Releases · kotauskas/interprocess
2.4.7
General
LocalSocketStream::splithas been deprecated in favor of putting the stream in anRcorArcto better express the behavior and performance characteristics of the code in terms that are common to all Rust programs (since anArcis what splitting uses under the hood).
Windows
TryFrom<OwnedHandle>on named pipes no longer attempts to reopen them into overlapped mode. The old mechanism was based on a misunderstanding of whatReOpenFiledoes for named pipes. See #100 for more information.- Fixed
ConnectNamedPipecompleting spuriously due to not being passed anOVERLAPPEDstructure (#101).
2.4.6
- Fixed build on ARMv7.
- Migrated from
AsyncFd::with_interesttoAsyncFd::register_with_interestper tokio-rs/tokio#8539.
2.4.5
PeerCredshas been improved onxucredplatforms (FreeBSD, Dragonfly BSD, Apple platforms):- With a correction of a misunderstanding of the meaning of
cr_groups,egidnow returnsSomeandgroupsno longer includes the EGID twice. - The level of detail of the safety comments has been increased in preparation for upstreaming a version of
PeerCredsinto the standard library.
- With a correction of a misunderstanding of the meaning of
PeerCredsnow has a methodgroups_truncatedfor checking if the groups returned bygroupsare not the full set of supplementary groups due to platform limitations.
2.4.4
2.4.3
- A few documentation improvements have been made. In particular, the readme has been made nicer to look at, and those who are lost and not sure which IPC primitive they should choose should have a better time navigating the docs thanks to a few helpful pointers. Thanks to Daniel McNab for his post on how to get intra-doc links to play along with
#![doc = include_str!("../README.md")]! - New warnings caught by nightly CI have been triaged. No changes in behavior were made.
2.4.2
2.4.1
General
- Now dual-licensed as
0BSD OR Apache-2.0. No restrictions are introduced by this change; it simply guarantees that I will not engage in patent trolling.
Unix
- Fixed an instance of
xucredbeing misspelled asucredin the documentation ofPeerCreds.
Windows
- Fixed a crash when reading from a disconnected named pipe stream (see #93).
- Updated to
windows-sysversion 0.61.2.
2.4.0
General
- Concurrency prevention for local sockets has been removed. It is now possible to perform I/O on the same local socket stream from multiple threads at once without encountering any panics.
spliton local socket streams has been soft-deprecated due to being identical in functionality and performance characteristics to putting the local socket stream into anRcorArc. Deprecation warnings will not be emitted for programs that usesplit, but replacing it withRcorArcis preferred.peer_pidis back in style: local socket streams now have apeer_credsmethod that returns the credentials of the other side of the connection. Those include the process ID, effective user and group ID, and list of supplementary groups.
Windows
- Fixed an embarrassing memory leak in the linger pool. Versions 2.3.0 and 2.3.1 would leak a small amount of memory for every Tokio-based stream lingered.
- Fixed a benign use-after-free bug in
MaybeArc::try_make_owned(called inreunite) that was introduced in version 2.0.0. To my knowledge, it is not possible to trigger undefined behavior from safe code using this bug. - Synchronous named pipes now use overlapped I/O, just like Tokio-based ones. This allows for concurrent I/O operations on the same stream as described in General. Thanks to Sebastian Schöner for his blog post that prompted me to carefully reread Microsoft documentation and guided me toward the solution!
- All owned handles now provide one sentinel value for niche optimization (via
NonZeroIsize, since 0 is not a valid handle value).
2.3.1
2.3.0
General
- Now licensed under the 0-clause BSD license.
- Added
local_socket::ListenerOptions::try_overwriteto streamline the common case of dealing with "address in use" errors. - Added
local_socket::ConnectOptions, allowing clients to specify the connection timeout and make use of zero-cost nonblocking mode enablement. - Local socket implementation wrappers now have accessors for their underlying implementations (
os::unix::uds_local_socket::Stream::inner,os::windows::named_pipe::local_socket::Stream::inner, and so on). - A neat little tool,
inspect-platform, has been added to help investigate the behavior of platforms that Interprocess has previously not been ported to. - Miscellaneous improvements to documentation and examples.
Windows
- Added
AsSecurityDescriptorExt::write_to_security_attributes_ptrto work aroundwindows-sysversion churn (see #84). - Unnamed pipes are now inheritable. Previously, they were documented as such, but defaulted to not being inheritable due to a typo.
os::windows::named_pipe::tokio::PipeListenerOptionsExthas been deprecated in favor of inherent methods fulfilling the same function. The deprecation warning can be fixed by simply removing the import.- Fixed panic when dropping Tokio-based Windows named pipes outside of a Tokio runtime (#71) by replacing the old "limbo" with a new linger pool, used both for sync named pipes and for Tokio ones. This new implementation is more efficient and more maintainable.
- The aforementioned bug now has test coverage.
- Fixed handling of dead-on-arrival conections (#86).
Unix
SpecialDirUdSocketis now deprecated due to complicated and potentially undesirable fallback behavior.- Name types for more specific special directories, such as "current user only" (
/run/user/<uid>), "world-writable" (/tmp), "root-writable and world-readable" (/run) will be added in a future version.
- Name types for more specific special directories, such as "current user only" (
ListenerOptionsExt::modehas been improved:- The
umaskfallback has been removed – the method will now returnErrorKind::Unsupportedon platforms on which the mode of a Unix domain socket listener cannot be changed atomically. - The documentation now more accurately describes the behavior of non-default modes on different platforms.
- The
set_nonblockingmethods now useFIONBIOon Linux to reduce the number of system calls. Additionally, some superfluousfcntl(F_GETFL)calls have been optimized out on other platforms.- Unix domain socket address handling has been refactored to be more efficient.
- NetBSD has been promoted from Support by association to Explicit support without CI.