Repository navigation
Releases: citadel-foss/mill-io
Releases · citadel-foss/mill-io
Release list
v4.0.0
Breaking
- mill-io:
register()rejectsToken(0), which is now reserved for the waker; take tokens fromEventLoop::alloc_token()(#103) - mill-io:
stop()is sticky and never panics: a stop called beforerun()makes thatrun()return at once, and each stop is consumed by onerun()(#104) - mill-net:
TcpClient::connecttakes aTcpClientConfig,TcpClient::startallocates its own token, andon_connectfires only once the handshake completes (#110, #111) - mill-net: Sends go through a per-connection write queue and can fail with
NetworkError::Send(SendError::Backpressure)above the high watermark (#110) - mill-net: Dropping a
TcpClientcloses its connection; a startedTcpServerruns untilTcpServer::stop(#112) - mill-rpc: Pending calls fail when the connection drops instead of waiting out their timeout (#114)
Added
- mill-io: Timer wheel with
schedule_once,schedule_repeating,cancel_timerandpending_timers(#86) - mill-io:
EventLoop::post(),is_reactor_thread()andreregister()(#104) - mill-io:
EventLoop::handler_panics()andEventLoop::timer_panics()count caught panics (#101, #107) - mill-net:
ConnSendersends, closes and pauses reads from any thread, withon_drained,pause_readsandresume_reads(#110) - mill-net: Configurable high and low watermarks on
TcpServerConfigandTcpClientConfig(#110) - mill-net:
TcpClientConfig::connect_timeout, reported throughon_error(#111) - mill-net:
TcpServer::stop(#112) - mill-net:
Layertrait for handshakes and byte transforms, added withwith_layer(#113) - mill-net:
testing::ChaosProxy, behind thetestingfeature, splits, throttles, stalls and resets TCP streams (#93, #94) - mill-rpc:
slow_reader_timeout: replies to a slow reader wait foron_drained, and the connection closes after the timeout (#114) - CI enforces the MSRV, 1.74 (#88)
Fixed
- mill-io: Timer deadlines saturate instead of wrapping, and zero-interval repeating timers no longer spin the reactor (#89, #90)
- mill-io: Panics in timer callbacks and event handlers are caught and counted instead of killing the reactor or a worker (#91, #101)
- mill-io: Compute pool shutdown no longer hangs in
drop, and queue depth metrics no longer drift (#87, #96) - mill-io: Pool mode sends all events for a token to the same worker, so a connection's events stay in order (#102)
- mill-net: Reads drain until
WouldBlock, so large messages are no longer stuck until more bytes arrive (#109) - mill-net: Large or concurrent sends no longer tear frames on
WouldBlock(#110) - mill-net:
keep_aliveandbuffer_sizeare applied, and socket options go throughsocket2with nounsafe(#112) - mill-rpc: Several clients can share one event loop (#105)
- mill-rpc: The server frames each connection separately, so a corrupt frame closes only that connection (#114)
v2.0.1
v2.0.0
What's Changed
- feat: fetching available cores instead of default capacity of
ThreadPoolby @Sansh2356 in #73 - fix: bottlenecks in the poll handler and threadpool by @hulxv in #76
- feat: event-loop-based Tcp Networking Layer by @hulxv in #74
- feat: compute-intensive threadpool by @hulxv in #77
New Contributors
- @Sansh2356 made their first contribution in #73
Full Changelog: v1.0.2...v2.0.0
v1.0.2 - 2025-10-17
Changed
- Updated
mio-rsto version1.1.0which includes the fix for macOS thread safety issues
Fixed
- Resolved macOS thread safety issues with
mio::Eventin worker threads (initially fixed with custom Event wrapper #70, then properly resolved by updating mio-rs after upstream fix #72)
Development
- Enhanced CI/CD with cross-platform testing workflows
- Fixed clippy linting issues
- Added unstable feature testing with nightly Rust channel
- Improved CI workflow to avoid using
unstablefeatures in stable & beta channels - Added TCP tests and disabled UDS tests on Windows for better cross-platform support
- Fixed documentation errors
v1.0.1 - 2025-9-16
Documentation
- Fixed documentation errors throughout the codebase
- Enhanced README.md with better explanations and examples
Development
- Bumped version for documentation fixes
v1.0.0 - 2025-9-15
Added
- Complete event loop implementation with reactor pattern
- Thread pool for efficient task execution
- Object pool for memory management optimization
- Polling abstraction layer with
PollHandle - Error handling module with custom error types
- Event loop registration and deregistration capabilities
- Multiple channel types (MPMC/MPSC) for inter-thread communication
Examples
- Echo Server: Complete TCP echo server implementation
- HTTP Server: Basic HTTP server example
- File Watcher: File system monitoring example
- JSON-RPC Server: JSON-RPC protocol server implementation