interprocess
Interprocess communication toolkit
2.4.3
13M downloads/mo
#2668 most downloaded on crates.io
kotauskas/interprocess
What this package is like to depend on
Last release 23 days ago
01 Aug 2026
Ships unpredictably
gaps range from 8 days to 1.5 years
Some releases are documented
notes for 10 of 22 stable releases
1 version withdrawn
withdrawn after publishing
6 years old
23 releases · first in 2020
6 releases in the last 12 months
see the full history below
Release timeline
23 releases · Aug 2020 to Aug 2026Releases
latest 23-
2.4.301 Aug 2026Release notes
Open source →- 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.
- 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
-
2.4.219 Apr 2026Release notes
Open source →- Some unused code has been removed for peace-of-mind reasons (particularly due to #92).
-
2.4.118 Apr 2026Release notes
Open source →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.
- Now dual-licensed as
-
2.4.022 Feb 2026Release notes
Open source →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.107 Feb 2026Release notes
Open source →- Fixed the build failure on 32-bit Unix systems caused by an assumption that the type of
tv_nsecinstruct timespecimplementsFrom<u32>, which is not the case on 32-bit Linux, where that field is signed.
- Fixed the build failure on 32-bit Unix systems caused by an assumption that the type of
-
2.3.004 Feb 2026Release notes
Open source →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.
-
2.2.307 Mar 2025Release notes
Open source →- Minor fixes in documentation and examples.
- Platform implementations of Tokio local sockets are now public. "Click the struct name in the parentheses to learn more" tantalizes the diligent reader no more, for the struct name is now indeed clickable.
-
2.2.223 Nov 2024 -
2.2.121 Jul 2024Release notes
Open source →Reverted the change from hardcoded
/tmpto$TMPDIRforSpecialDirUdSocketon non-Android platforms. On Android, the hardcoded path is now/data/local/tmp. -
2.2.013 Jun 2024Release notes
Open source →- 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.123 May 2024Nothing published for this version
-
2.1.008 May 2024Nothing published for this version
-
2.0.104 May 2024Nothing published for this version
-
2.0.026 Apr 2024Nothing published for this version
-
1.2.105 Nov 2022Nothing published for this version
-
1.2.003 Nov 2022Nothing published for this version
-
1.1.105 Mar 2021Nothing published for this version
-
1.1.027 Jan 2021Nothing published for this version
-
1.0.115 Dec 2020Nothing published for this version
-
1.0.016 Nov 2020Nothing published for this version
-
0.2.020 Aug 2020Nothing published for this version
-
0.1.105 Aug 2020Nothing published for this version
-
0.1.005 Aug 2020 withdrawnNothing published for this version