Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
No unreleased changes yet
0.7.0 - 2021-01-20
New features
- tcp: Allow distinguishing between graceful (FIN) and ungraceful (RST) close. On graceful close,
recv()
now returns Error::Finished
. On ungraceful close, Error::Illegal
is returned, as before. (#351)
- sockets: Add support for attaching async/await Wakers to sockets. Wakers are woken on socket state changes. (#394)
- tcp: Set retransmission timeout based on an RTT estimation, instead of the previously fixed 100ms. This improves performance on high-latency links, such as mobile networks. (#406)
- tcp: add Delayed ACK support. On by default, with a 10ms delay. (#404)
- ip: Process broadcast packets directed to the subnet's broadcast address, such as 192.168.1.255. Previously broadcast packets were
only processed when directed to the 255.255.255.255 address. (#377)
Fixes
- udp,raw,icmp: Fix packet buffer panic caused by large payload (#332)
- dhcpv4: use offered ip in requested ip option (#310)
- dhcpv4: Re-export dhcp::clientv4::Config
- dhcpv4: Enable
proto-dhcpv4
feature by default. (#327)
- ethernet,arp: Allow for ARP retry during egress (#368)
- ethernet,arp: Only limit the neighbor cache rate after sending a request packet (#369)
- tcp: use provided ip for TcpSocket::connect instead of 0.0.0.0 (#329)
- tcp: Accept data packets in FIN_WAIT_2 state. (#350)
- tcp: Always send updated ack number in
ack_reply()
. (#353)
- tcp: allow sending ACKs in FinWait2 state. (#388)
- tcp: fix racey simultaneous close not sending FIN. (#398)
- tcp: Do not send window updates in states that shouldn't do so (#360)
- tcp: Return RST to unexpected ACK in SYN-SENT state. (#367)
- tcp: Take MTU into account during TcpSocket dispatch. (#384)
- tcp: don't send data outside the remote window (#387)
- phy: Take Ethernet header into account for MTU of RawSocket and TapInterface. (#393)
- phy: add null terminator to c-string passed to libc API (#372)
Quality of Life™ improvements
- Update to Rust 2018 edition (#396)
- Migrate CI to Github Actions (#390)
- Fix clippy lints, enforce clippy in CI (#395, #402, #403, #405, #407)
- Use #[non_exhaustive] for enums and structs (#409, #411)
- Simplify lifetime parameters of sockets, SocketSet, EthernetInterface (#410, #413)