Skip to content

Releases: kotauskas/interprocess

2.1.1

23 May 09:50
2.1.1
a9ad570
Compare
Choose a tag to compare
  • Removed async Incoming and futures::Stream ("AsyncIterator") implementations on local_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 in umask 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

08 May 13:39
2.1.0
b79d363
Compare
Choose a tag to compare
  • Fixes #49
  • Adds Iterator impl on local socket listeners (closes #64)
  • Miscellaneous documentation fixes

2.0.1 – fix for non-x86 platforms

04 May 21:53
2.0.1
6ca63d2
Compare
Choose a tag to compare
  • Fixed a portability bug that broke the build on Android (#62, #63)
  • Minor documentation adjustments

2.0.0

26 Apr 18:42
2.0.0
9a1727d
Compare
Choose a tag to compare

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
  • 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

05 Nov 17:27
1.2.1
4cdf612
Compare
Choose a tag to compare
  • 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

03 Nov 13:58
1.2.0
ff16bdf
Compare
Choose a tag to compare
  • 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

05 Mar 12:24
9660f75
Compare
Choose a tag to compare
  • The os::unix::signal and os::windows::signal modules now require the signals 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

27 Jan 14:15
0bb223b
Compare
Choose a tag to compare

1.0.1 – signals on Windows, macOS support and bugfixes

15 Dec 13:59
a25657e
Compare
Choose a tag to compare
  • 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 to spinning because the former is unmaintained and has a RustSec entry for that reason. Stay safe, friends.

1.0.0 – asynchronous local sockets and bugfixes

01 Dec 16:09
5750eaf
Compare
Choose a tag to compare
  • The nonblocking module now houses an asynchronous wrapper around local sockets. Currently, the implementation simply spawns additional threads using the blocking 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.