Skip to content

Releases

2.4.7

Choose a tag to compare

@kotauskas kotauskas released this 23 Oct 20:13
2.4.7
885d96b

General

  • LocalSocketStream::split has been deprecated in favor of putting the stream in an Rc or Arc to better express the behavior and performance characteristics of the code in terms that are common to all Rust programs (since an Arc is 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 what ReOpenFile does for named pipes. See #100 for more information.
  • Fixed ConnectNamedPipe completing spuriously due to not being passed an OVERLAPPED structure (#101).

2.4.6

Choose a tag to compare

@kotauskas kotauskas released this 16 Oct 17:19
2.4.6
dc7bf10
  • Fixed build on ARMv7.
  • Migrated from AsyncFd::with_interest to AsyncFd::register_with_interest per tokio-rs/tokio#8539.

2.4.5

Choose a tag to compare

@kotauskas kotauskas released this 10 Oct 17:22
2.4.5
5822593
  • PeerCreds has been improved on xucred platforms (FreeBSD, Dragonfly BSD, Apple platforms):
    • With a correction of a misunderstanding of the meaning of cr_groups, egid now returns Some and groups no longer includes the EGID twice.
    • The level of detail of the safety comments has been increased in preparation for upstreaming a version of PeerCreds into the standard library.
  • PeerCreds now has a method groups_truncated for checking if the groups returned by groups are not the full set of supplementary groups due to platform limitations.

2.4.4

Choose a tag to compare

@kotauskas kotauskas released this 03 Sep 21:30
2.4.4
e27f397
  • Fixed a dead link in the readme and a typo in the docs.
  • checks-and-tests.py is no longer packaged by Cargo to avoid tricking distro package managers into thinking Interprocess requires Python (#98).

2.4.3

Choose a tag to compare

@kotauskas kotauskas released this 01 Aug 02:21
2.4.3
baf96ff

2.4.2

Choose a tag to compare

@kotauskas kotauskas released this 19 Apr 15:29
2.4.2
ecb9daf
  • Some unused code has been removed for peace-of-mind reasons (particularly due to #92).

2.4.1

Choose a tag to compare

@kotauskas kotauskas released this 18 Apr 16:27
2.4.1
5743c5d

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 xucred being misspelled as ucred in the documentation of PeerCreds.

Windows

  • Fixed a crash when reading from a disconnected named pipe stream (see #93).
  • Updated to windows-sys version 0.61.2.

2.4.0

Choose a tag to compare

@kotauskas kotauskas released this 22 Feb 23:04
2.4.0
41facdd

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.
  • split on local socket streams has been soft-deprecated due to being identical in functionality and performance characteristics to putting the local socket stream into an Rc or Arc. Deprecation warnings will not be emitted for programs that use split, but replacing it with Rc or Arc is preferred.
  • peer_pid is back in style: local socket streams now have a peer_creds method 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 in reunite) 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

Choose a tag to compare

@kotauskas kotauskas released this 07 Feb 16:46
2.3.1
bd41b10
  • Fixed the build failure on 32-bit Unix systems caused by an assumption that the type of tv_nsec in struct timespec implements From<u32>, which is not the case on 32-bit Linux, where that field is signed.

2.3.0

Choose a tag to compare

@kotauskas kotauskas released this 04 Feb 19:27
2.3.0
f91c5fd

General

  • Now licensed under the 0-clause BSD license.
  • Added local_socket::ListenerOptions::try_overwrite to 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_ptr to work around windows-sys version 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::PipeListenerOptionsExt has 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

  • SpecialDirUdSocket is 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.
  • ListenerOptionsExt::mode has been improved:
    • The umask fallback has been removed – the method will now return ErrorKind::Unsupported on 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.
  • set_nonblocking methods now use FIONBIO on Linux to reduce the number of system calls. Additionally, some superfluous fcntl(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.