Releases: kotauskas/interprocess
Releases · kotauskas/interprocess
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
1.0.1 – signals on Windows, macOS support and bugfixes
- Implemented ANSI C signals for Windows. The interface is as close to Unix signals as possible, but has some intricate differences which prevent a common API from existing.
- Fixed some minor issues in the documentation.
- Fixed a non-UB race condition in the implementation of Unix signals. Caused rare panics if a signal is received before its handler is put into the handler table, since it was being registered before it got added to the global table. (The panics never caused UB, since we have panic safety in signal handlers.)
- Switched from
spin
tospinning
because the former is unmaintained and has a RustSec entry for that reason. Stay safe, friends.
1.0.0 – asynchronous local sockets and bugfixes
- The
nonblocking
module now houses an asynchronous wrapper around local sockets. Currently, the implementation simply spawns additional threads using theblocking
crate. - Documentation now shows platform-specific modules on all platforms, and, if the
doc_cfg
feature is enabled, displays blue notice badges on all platform-specific items. - Unix domain sockets have been broken before and are now fixed.
- Unit tests have been added.
- Standalone examples have been introduced.
- Minor documentation fixes and improvements.