Releases: kotauskas/interprocess
Releases · kotauskas/interprocess
2.2.1
2.2.0 – Tokio unnamed pipes
- Tokio-based unnamed pipes, with subpar performance on Windows due to OS API limitations
- Examples for unnamed pipes, both non-async and Tokio
- Impersonation for Windows named pipes
- Improvements to the implementation of Windows pipe flushing on Tokio
2.1.1
- Removed async
Incoming
andfutures::Stream
("AsyncIterator
") implementations onlocal_socket::traits::Listener
implementors – those were actually completely broken, so this change is not breaking in practice and thus does not warrant a bump to 3.0.0 - Fixed
ListenerOptionsExt::mode()
behavior inumask
fallback mode and improved its documentation - Moved examples to their own dedicated files with the help of the
doctest-file
crate
2.1.0 – listeners are now iterators
2.0.1 – fix for non-x86 platforms
2.0.0
The long-awaited 2.0.0 release brings substantial API enhancements that constitute breaking changes, countless bugfixes, better portability, some future-proofing, a grand refactor and significant scope creep mitigation.
You can upgrade to the new version by changing your Cargo.toml
to depend on Interprocess 2.0.0 instead of 1.2.1 and fixing the compilation errors that ensue. The behavioral changes have been made in a manner that avoids the introduction of bugs that successfully compile. The Rustdoc documentation contains all the information that's needed to write code that uses Interprocess 2.0.0, and, by extension, all the information that's needed to port dependents of Interprocess 1.2.1.
- Many bugs have been fixed
- A comprehensive set of testing utilities has been added to prevent new bugs of the embarrassing variety
- The minimum Rust version has been bumped to 1.75.0, bringing many improvements to both the API and the internals, including RAII of file descriptors and handles and use of RPITITs
- Platform support has been clarified and expanded
- Windows named pipe support has been largely remade:
- The API has been overhauled to be more idiomatic to Rust with expanded use of generics
- A "limbo" is now used to prevent in-flight data from being lost when dropping connections
- Small API deficiencies, such as inaccurate types that unnecessarily made invalid options representable, have been corrected
- Windows security descriptors have received a proper API
- Numerous improvements to local sockets
- They have been made more uniform across platforms – the portability magic that is now in place has eliminated the need to explicitly acknowledge the platform differences in most practical programs
- Ud-socket local socket listeners now clean up corpse socket files when dropped
- The new API allows explicit selection of the underlying implementation: every possible backend of local sockets has its own public API, and all of them implement the new local socket traits
- The name type and the name creation API have been overhauled to facilitate the changes
- Streams are now splittable by value and readable + writable by reference
- They have been made more uniform across platforms – the portability magic that is now in place has eliminated the need to explicitly acknowledge the platform differences in most practical programs
- Some functionality has been offloaded to the
recvmsg
crate – it is now part of the public API of Interprocess - Ud-sockets have been outsourced to the standard library
- Signal support has been removed in favor of
signal_hook
1.2.1 – minor sync Windows named pipe bugfix
- Fixed the "access is denied" error with sync unidirectional Windows named pipes where the server creates the pipe with write-only permissions.
- Removed Ud-socket ancillary data example because the API is currently being reworked and the current version is deprecated.
1.2.0 – Tokio support, numerous bugfixes, misc. API additions
- Tokio support has been added with the
tokio_support
feature gate. Ud-sockets, Windows named pipes and local sockets now have Tokio counterparts - Ud-sockets now specify the close-on-exec flag to help protect high-trust processes that spawn lower-trust processes against privilege escalation vulnerabilities
- Signals and the old non-Tokio async API have been deprecated, and will be removed in 2.0.0
- Ud-socket ancillary data has been disabled – a future release, 2.0.0, will introduce a new, more correct API
- Numerous bugfixes for Ud-sockets, Windows named pipes and, consequently, local sockets
- Datagram Ud-sockets' creation API has been improved with the addition of
.set_destination()
- Extensive internal refactoring to improve maintainability and eliminate additional hidden bugs
- Extensive tests for local sockets, Ud-sockets and Windows named pipes to, uh, catch bugs
1.1.1 – made signal support optional
- The
os::unix::signal
andos::windows::signal
modules now require thesignals
feature flag (enabled by default for compatibility). This allows removing the majority of dependencies if you don't need the functionality. The next breaking release will disable the feature by default. - Documentation for nonblocking local sockets now renders even if their respective feature flag is disabled, similarly to the
signals
feature flag.
1.1.0 – nonblocking mode and peer credential querying
- Nonblocking mode can now be activated for named pipes on Windows, Unix domain sockets and local sockets.
set_nonblocking
onLocalSocketStream
set_nonblocking
onLocalSocketListener
- Similar methods on the platform-specific streams and listeners
- Peer process ID can now be queried for Windows named pipes, Ud-sockets and local sockets.
peer_pid
onLocalSocketStream
- Similar methods on the platform-specific streams and listeners