rs-netty1.0.0
v1.0.0 Release
rs-netty 1.0.0 is the first stable release. This version focuses on Netty-style asynchronous write semantics, aligned TCP/UDP behavior, fairer benchmark comparisons, and a cleaner crates.io package.
Highlights
- Changed TCP
Context::{write, flush, write_and_flush}to Netty-style semantics: calls enqueue/request flush immediately; dropping the returned handle is fire-and-forget;.awaitwaits for local socket write completion. - Applied the same semantics to UDP
DatagramContext, sowrite_and_flush/write_to_and_flushnow behave consistently with TCP. - Optimized the handler outbox hot path to reduce locking, queue overhead, and per-frame flush completion cost.
- Improved pipeline fast paths to reduce extra async layers for identity/ready pipeline stages.
- Expanded lifecycle tests covering fire-and-forget writes, awaited flush completion, write-without-flush behavior, and graceful TCP/UDP close paths.
- Added explicit
TCP_NODELAYsupport to the benchmark harness, aligning rs-netty, Tokio, and Netty comparison settings. - Added JVM warmup for Netty benchmarks and refreshed TCP/UDP benchmark results in the README.
- Updated README TCP client and UDP server examples to match the new flush and close semantics.
- Excluded
benchmarks/anddocs/assets/from the published crate, reducing the crates.io package from over 10MB to about 74KB compressed. - Removed benchmark result directories from Git tracking and added them to
.gitignore.
Benchmark Snapshot
The README now includes TCP_NODELAY=true benchmark results. In that snapshot, rs-netty TCP line throughput is close to bare Tokio, length-field throughput is significantly higher than the current Tokio comparison implementation, and UDP throughput is in the same range as Tokio and Netty.
Publishing
rs-netty v1.0.0 has been built in release mode, packaged, dry-run validated, and successfully published to crates.io.