Skip to content

Latest commit

 

History

History
438 lines (361 loc) · 16.3 KB

CHANGELOG.md

File metadata and controls

438 lines (361 loc) · 16.3 KB

0.5.8

  • Added Socket::(set_)header_included_v4 and Socket::(set_)header_included_v6 (#518).
  • Added support for Socket::original_dst and Socket::original_dst_ipv6 on Windows (#529).

0.5.7

  • Added Socket::(set_)passcred (#506).
  • Added RecvFlags::is_confirm and RecvFlags::is_dontroute (#499).
  • Added MsgHdrMut::control_len (#505).

0.5.6

  • Added Socket::(set_)multicast_all_v{4,6} (#485 and #486).
  • Added support for GNU/Hurd (#474).
  • Fixes compilation on Haiku (#479 and #482).
  • Fixes compilation on OpenHarmony (#491).
  • Update to window-sys v0.52 (#480).

0.5.5

  • Added support for Vita (#465).

0.5.4

  • Deprecated Socket::(bind_)device_by_index, replaced by Socket::(bind_)device_by_index_v4 for IPv4 sockets (#432).
  • Added Socket::(bind_)device_by_index_v6 (#432).
  • Added experimental support for the ESP-IDF framework (#452)
  • Added Socket::{send,recv}msg and MsgHdr(Mut) types, wrapping sendmsg(2) and recvmsg(2) (#447).
  • Added Socket::(set_)reuse_port_lb to retrieve or set SO_REUSEPORT_LB on FreeBSD (#442).
  • Added Protocol::DIVERT on FreeBSD and OpenBSD (#448).
  • Added Socket::protocol for Windows (using WSAPROTOCOL_INFOW) (#470).
  • From<SocketAddrV{4,6}> for SockAddr nows sets ss_len on platforms that have the fields (most BSDs) (#469).
  • Change Windows to use ADDRESS_FAMILY for sa_family_t, this shouldn't affect anything in practice (#463).

0.5.3

  • Added support for two new Android targets armv7-linux-androideabi and i686-linux-android (#434).
  • Added Socket::cookie to retrieve SO_COOKIE on Linux (#437).

0.5.2

0.5.1

Added

  • Type::cloexec for Redox and Solaris (#398).
  • Generate documentation for more targets on docs.rs (#398).

Fixed

  • Generatation of documentation on docs.rs (#398).

0.5.0

Changed

  • BREAKING SockAddr::init is renamed to try_init to indicate it can fail (#328).
  • BREAKING Remove the returned Result from SockAddr::vsock, it can't fail (#328).
  • BREAKING From<S> is now implemented using the I/O traits AsFd and AsRawSocket (#325):
  • BREAKING renamed SockAddr::vsock_addr SockAddr::as_vsock_addr to match the IPv4 and IPv6 methods (#334).
  • Redox now works on a stable compiler (#326).
  • Remove copy from From<SocketAddrV{4,6}> implementation for SockAddr (#335).
  • Marked function as constant where possible.
  • Updated to Rust edition 2021 (#393).

Added

  • Links to OS documentation to a lot of methods (#319).
  • I/O-safety traits (#325):
    • AsFd for Socket (Unix only).
    • From<OwnedFd> for Socket (Unix only).
    • From<Socket> for OwnedFd (Unix only).
    • AsSocket for Socket (Windows only).
    • From<OwnedSocket> for Socket (Windows only).
    • From<Socket> for OwnedSocket (Windows only).
  • Unix socket support on Windows (#249).
  • SockAddr::is_ipv{4,6} and SockAddr::domain (#334).
  • Socket::nonblocking (#348).
  • Socket::original_dst(_ipv6) (#360).
  • Socket::(set_)recv_tclass_v6 and Socket::(set_)tclass_v6 (#364).
  • Socket::(set_)tcp_congestion (#371).
  • Support for various DCCP socket options in the form of (#359):
    • Socket::(set_)dccp_service
    • Socket::dccp_available_ccids
    • Socket::dccp_qpolicy_txqlen
    • Socket::dccp_recv_cscov
    • Socket::dccp_send_cscov
    • Socket::dccp_server_timewait
    • Socket::dccp_server_timewait
    • Socket::dccp_tx_ccid
    • Socket::dccp_xx_ccid
    • Socket::set_dccp_ccid
    • Socket::set_dccp_qpolicy_txqlen
    • Socket::set_dccp_recv_cscov
    • Socket::set_dccp_send_cscov
    • Socket::set_dccp_server_timewait
    • Socket::dccp_cur_mps
  • Socket::peek_send (#389).
  • Protocol::MPTCP (#349).
  • Protocol::SCTP (#356).
  • Protocol::DCCP (#359).
  • Type::DCCP (#359).
  • Implement Eq and Hash for SockAddr (#374).
  • Support for QNX Neutrino (#380).
  • Support for AIX (#351).

0.4.10

  • Fixed compilation with the all on QNX Neutrino (#419).
  • Added support for ESP-IDF (#455).
  • Added support for Vita (#475).

0.4.9

  • Fixed compilation on Windows (#409).

0.4.8 (yanked)

This release was broken for Windows.

  • Added Socket::peek_sender (backport) (#404).

0.4.7

  • Fixes compilation on OpenBSD (#344).
  • Fixes compilation on DragonFlyBSD (#342).

0.4.6

  • Reverted back to the winapi dependency as switch to windows-sys was a breaking change (#340). Note that we'll will switch to windows-sys in v0.5 .
  • Disable RECVTOS on OpenBSD (#307).
  • Derive Clone for SockAddr (#311).
  • Fixes cfg attributes for Fuchsia (#314).

0.4.5 (yanked)

Changed

  • Replace winapi dependency with windows-sys (#303).

Added

  • Socket::join_ssm_v4 and Socket::leave_ssm_v4 (#298).
  • Socket::set_recv_tos and Socket::recv_tos (#299).

Fixed

  • OpenBSD build (#291).

0.4.4

Fixed

  • Libc v0.2.114 fixed an issue where ip_mreqn where was not defined for Linux s390x.

0.4.3 (yanked)

Added

0.4.2

Added

  • Socket::(set_)freebind_ipv6, getter and setter for IPV6_FREEBIND.

Fixed

  • Compilation on OpenBSD.
  • Usage of incorrect flag in Socket::(set_)freebind.

0.4.1

Added

  • Added SockAddr::new
  • Support for TCP_USER_TIMEOUT.
  • Support for IP_BOUND_IF.
  • Support for IP_TRANSPARENT.
  • Enable Socket::type on all platforms.
  • Support for uclibc (for Haiku support).
  • Added DragonFly support for TCP keepalive (KEEPINTVL/KEEPCNT).
  • Documentation for proper use of SockRef::from, and the improper use.
  • Assertion in SockRef::from to ensure the raw socket valid.

Fixed

  • Compilation on Haiku.
  • Setting TCP keepalive on Haiku and OpenBSD (by not setting it as it's not supported).
  • Size check for abstract namespaces in SockAddr::unix.
  • Set noinherit on accepted sockets on Windows when opening sockets.

0.4.0

Added

  • New all feature: enables API that is not available on all tier 1 platforms.
  • SockRef type: used to create a reference to an existing socket, e.g. std::net::TcpStream, making all methods of Socket available on it.
  • Support for vectored I/O:
    • Socket::recv_vectored, Socket::recv_with_flags.
    • Socket::recv_from_vectored, Socket::recv_from_vectored_with_flags.
    • Socket::send_vectored, Socket::send_vectored_with_flags.
    • Socket::send_to_vectored, Socket::send_to_vectored_with_flags.
    • In the Read and Write implementations.
  • Socket::new_raw, Socket::pair_raw and Socket::accept_raw methods that don't set common flags, such as the close-on-exec flag.
  • Socket::accept4: accept4(2) system call.
  • Socket::sendfile: the sendfile(2) system call.
  • Socket::set_cloexec: set the close-on-exec flag on Unix.
  • Socket::set_no_inherit: set inherit handle flag on Windows.
  • Socket::set_nosigpipe: set SO_NOSIGPIPE on Apple targets.
  • Socket::set_mark and Socket::mark, setting/getting the SO_MARK socket option.
  • Socket::set_cpu_affinity and Socket::cpu_affinity, setting/getting the SO_INCOMING_CPU socket option.
  • Socket::set_mss and Socket::mss, setting/getting the TCP_MAXSEG socket option.
  • Socket::set_freebind and Socket::freebind, setting/getting the IP_FREEBIND socket option.
  • Socket::bind_device and Socket::device, setting/getting the SO_BINDTODEVICE socket option.
  • Adopted Mio's TCP keepalive API:
    • Socket::keepalive_time,
    • Socket::keepalive_interval,
    • Socket::keepalive_retries,
    • Socket::set_tcp_keepalive.
  • Socket::is_listener getting the SO_ACCEPTCONN socket option.
  • Socket::domain getting the SO_DOMAIN socket option.
  • Socket::protocol getting the SO_PROTOCOL socket option.
  • Socket::type getting the SO_TYPE socket option.
  • Domain::for_address: the correct Domain for a std::net::SocketAddr.
  • Type::nonblocking: set SOCK_NONBLOCK.
  • Type::cloexec: set SOCK_CLOEXEC.
  • Type::no_inherit: set HANDLE_FLAG_INHERIT.
  • SockAddr::init: initialises a SockAddr.
  • MaybeUninitSlice type: a version of IoSliceMut that allows the buffer to be uninitialised, used in Socket::recv_vectored and related functions.
  • RecvFlags type: provides additional information about incoming messages, returned by Socket::recv_vectored and related functions.
  • TcpKeepalive type: configuration type for a socket's TCP keepalive parameters.

Changed

  • Repository moved to https://github.com/rust-lang/socket2.
  • BREAKING: Changed constructor functions into constants:
    • Domain::ipv4 => Domain::IPV4.
    • Domain::ipv6 => Domain::IPV4.
    • Domain::unix => Domain::UNIX.
    • Domain::packet => Domain::PACKET.
    • Type::stream => Type::STREAM.
    • Type::dgram => Type::DGRAM.
    • Type::seqpacket => Type::SEQPACKET.
    • Type::raw => Type::RAW.
    • Protocol::icmpv4 => Protocol::ICMPV4.
    • Protocol::icmpv6 => Protocol::ICMPV6.
    • Protocol::tcp => Protocol::TCP.
    • Protocol::udp => Protocol::UDP.
  • BREAKING: Changed the signature of Socket::recv, Socket::recv_vectored and related methods to accept unitialised buffers. The Read implementation can be used to read into initialised buffers.
  • BREAKING: Renamed SockAddr::as_std to as_socket.
  • BREAKING: Renamed SockAddr::as_inet to as_socket_ipv4.
  • BREAKING: Renamed SockAddr::as_inet6 to as_socket_ipv6.
  • BREAKING: Replace all previously existing features (reuseport, pair, unix) with a new all features (see above for description of the all feature).
  • Use accept4(2) with SOCK_CLOEXEC in Socket::accept, reducing the amount of system calls required.
  • Marked many functions as constant.
  • The Read implementation now calls recv(2) rather than read(2).
  • Split the impl block for the Socket type to create groupings for setting and getting different level socket options using setsockopt(2)/getsockopt(2).
  • Updated winapi depdency to version 0.3.9 and dropped unused features.

Removed

  • Removed the -rs suffix from the repository name.
  • BREAKING: Removed SockAddr::from_raw_parts, use SockAddr::init instead.
  • BREAKING: Removed Socket::into_* functions and replaced them with a From implementation:
    • Socket::into_tcp_stream => TcpStream::from(socket).
    • Socket::into_tcp_listener => TcpListener::from(socket).
    • Socket::into_udp_socket => UdpSocket::from(socket).
    • Socket::into_unix_stream => UnixStream::from(socket).
    • Socket::into_unix_listener => UnixListener::from(socket).
    • Socket::into_unix_datagram => UnixDatagram::from(socket).
  • Removed cfg-if dependency.
  • Remove redox_syscall depdency.

Fixes

  • Fixes the Andoid, Fuchsia, Haiku, iOS, illumos, NetBSD and Redox (nightly only) targets.
  • Correctly call recv_from in Socket::recv_from_with_flags (called recv previously).
  • Correctly call send_to in Socket::send_to_with_flags (called recv previously).
  • Use correct inmutable references in Socket::send_with_flags and Socket::send_out_of_band.
  • Use IPPROTO_IPV6 in Socket::join_multicast_v6 on Windows.
  • Use c_int instead of i32 where appropriate.

From v0.4.0-alpha.1 to v0.4.0-alpha.2

  • Fixes the Fuchsia target.
  • Socket::device now returns a Vec<u8> rather than CString.
  • Socket::bind_device now accepts a &[u8] rather than &CStr.

From v0.4.0-alpha.2 to v0.4.0-alpha.3

  • Socket::connect_timeout was added back.

From v0.4.0-alpha.4 to v0.4.0-alpha.5

  • Changed Socket::set_cpu_affinity and Socket::cpu_affinity to use an immutable reference.

From v0.4.0-alpha.5 to v0.4.0

  • Use SO_LINGER_SEC on macOS for Socket::get/set_linger.

0.3.16

  • Don't assume the memory layout of std::net::SocketAddr.
  • Other changes omited