Skip to content

2.3.0

Choose a tag to compare

@kotauskas kotauskas released this 04 Feb 19:27
· 42 commits to main since this release
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.