Changelog
Complete changelog documenting all QuicD releases, features, bug fixes, and breaking changes.
[Unreleased]
Section titled “[Unreleased]”Features and changes in development.
- Media over QUIC (MOQ) framework (experimental)
- QUIC datagram support (partial)
- Enhanced telemetry metrics
Changed
Section titled “Changed”- Performance improvements in stream management
- Updated to latest Quiche upstream
- Connection migration edge cases
- Memory leak in connection cleanup
[0.3.0] - 2024-12-15
Section titled “[0.3.0] - 2024-12-15”Major release with HTTP/3 support and performance improvements.
- HTTP/3 Server: Complete implementation via
quicd-h3crate- QPACK header compression
- Custom request handler trait
- Static file serving example
- Streaming response support
- Worker Architecture: Multi-threaded worker pool
- CPU affinity support
- NUMA-aware memory allocation
- Per-worker event loops
- eBPF Routing: Hardware-accelerated connection routing
- XDP program for packet steering
- Connection table in eBPF maps
- Reduced cache thrashing
- OpenTelemetry Integration: Comprehensive observability
- Prometheus metrics endpoint
- Distributed tracing
- Custom span attributes
- Configuration System: Flexible configuration
- TOML file support
- Environment variable overrides
- CLI argument parsing
- Validation and defaults
Changed
Section titled “Changed”- Breaking: Refactored
QuicAppFactorytrait interface- Now takes
ConnectionHandleinstead of raw connection - Async trait with
BoxFuturereturn type
- Now takes
- Performance: 3x throughput improvement over v0.2
- Zero-copy buffer management
- Batch packet processing
- Optimized stream state machine
- API: Simplified event stream API
AppEventenum for all connection events- Stream-based event delivery
- Better backpressure handling
- Connection ID collision handling
- Stream flow control edge cases
- Idle timeout calculation
- ACK frame generation
- Memory leaks in error paths
Security
Section titled “Security”- Updated TLS dependencies
- Fixed potential DoS vector in connection handling
- Improved rate limiting
[0.2.0] - 2024-09-15
Section titled “[0.2.0] - 2024-09-15”Application interface and custom protocol support.
- Application Interface (
quicd-xcrate)QuicAppFactorytrait for custom protocolsConnectionHandleAPI- Event-driven stream management
- Send/Recv stream handles
- Echo Example: Complete echo server implementation
- Documentation: Initial architecture docs
- Testing: Integration test suite
Changed
Section titled “Changed”- Breaking: Moved from connection callbacks to factory pattern
- Architecture: Separated transport from application layer
- Improved error handling with
QuicErrorenum
- Stream state synchronization
- Connection closure race conditions
- Flow control window updates
Deprecated
Section titled “Deprecated”- Old callback-based connection handling (removed in v0.3)
[0.1.0] - 2024-06-01
Section titled “[0.1.0] - 2024-06-01”Initial release with basic QUIC transport.
- QUIC v1 Transport: RFC 9000 compliant
- Connection establishment
- Stream management
- Flow control
- Congestion control (CUBIC)
- Loss recovery
- TLS 1.3: Cloudflare Quiche integration
- Handshake handling
- Key derivation
- 1-RTT handshake
- Single-threaded Runtime: Basic event loop
- UDP socket I/O
- Connection state machine
- Timer management
- Basic Configuration: Command-line arguments
- Examples: Simple echo client/server
Known Issues
Section titled “Known Issues”- No HTTP/3 support yet
- Single-threaded limits performance
- Limited observability
Version Support
Section titled “Version Support”| Version | Release Date | Support Status | End of Support |
|---|---|---|---|
| 0.3.x | 2024-12-15 | ✅ Active | TBD |
| 0.2.x | 2024-09-15 | 🔧 Maintenance | 2025-03-15 |
| 0.1.x | 2024-06-01 | ❌ Unsupported | 2024-12-01 |
Upgrade Guides
Section titled “Upgrade Guides”Upgrading from 0.2 to 0.3
Section titled “Upgrading from 0.2 to 0.3”Breaking Changes:
-
QuicAppFactorytrait changed:// Old (0.2)impl QuicAppFactory for MyApp {fn create_app(&self, conn: Connection) {// ...}}// New (0.3)#[async_trait]impl QuicAppFactory for MyApp {async fn create_app(&self, handle: ConnectionHandle) -> Result<(), QuicError> {// ...Ok(())}} -
Configuration format changed:
# Old (0.2)[server]bind = "0.0.0.0:4433"workers = 4# New (0.3)[runtime]bind_addr = "0.0.0.0:4433"worker_count = 4 -
Event handling:
// Old (0.2)conn.on_stream(|stream| { /* ... */ });// New (0.3)let mut events = handle.event_stream();while let Some(event) = events.next().await {match event {AppEvent::NewStream { stream_id, .. } => { /* ... */ }// ...}}
Migration Steps:
-
Update
Cargo.tomldependencies:quicd-x = "0.3"quicd-h3 = "0.3" # If using HTTP/3 -
Update trait implementations (see above)
-
Migrate configuration files to new format
-
Update event handling code
-
Test thoroughly - behavior changes in stream management
Upgrading from 0.1 to 0.2
Section titled “Upgrading from 0.1 to 0.2”Breaking Changes:
- Connection handling completely redesigned
- New
quicd-xcrate for application interface
Migration: Recommend starting fresh with 0.2 API as changes are extensive.
Release Process
Section titled “Release Process”Our release process ensures quality and predictability:
- Development: Features developed in feature branches
- Testing: Comprehensive test suite must pass
- Review: Code review by maintainers
- Documentation: Docs updated for new features
- Changelog: This file updated with changes
- Tagging: Version tagged in git
- Announcement: Release announced on GitHub
Versioning Policy
Section titled “Versioning Policy”QuicD follows Semantic Versioning 2.0.0:
- MAJOR (1.0.0): Breaking API changes
- MINOR (0.x.0): New features, backward compatible
- PATCH (0.0.x): Bug fixes, no API changes
Pre-1.0 Versions
Section titled “Pre-1.0 Versions”During pre-1.0 development (0.x.y):
- Minor versions (0.x) may include breaking changes
- Patch versions (0.0.x) are backward compatible
- We aim for stability but prioritize getting APIs right
Post-1.0 Versioning
Section titled “Post-1.0 Versioning”After 1.0.0 release (planned Q2 2025):
- Strict SemVer adherence
- Breaking changes only in major versions
- Deprecation warnings in minor versions
- LTS support for major versions
Security Advisories
Section titled “Security Advisories”Security vulnerabilities are tracked separately. See SECURITY.md for:
- Supported versions
- Reporting process
- Security advisories
Current Advisories: None
Deprecation Notices
Section titled “Deprecation Notices”Deprecated in 0.3
Section titled “Deprecated in 0.3”- None currently
Removed in 0.3
Section titled “Removed in 0.3”- Old connection callback API (deprecated in 0.2)
- Replaced with
QuicAppFactorytrait - Migration guide available
- Replaced with
Platform-Specific Changes
Section titled “Platform-Specific Changes”- 0.3.0: Minimum kernel version increased to 5.1 (io_uring requirement)
- 0.2.0: Kernel 4.18+ supported
- 0.1.0: Kernel 4.4+ supported
Dependencies
Section titled “Dependencies”Key dependency versions:
| Dependency | 0.3.0 | 0.2.0 | 0.1.0 |
|---|---|---|---|
| Rust | 1.70+ | 1.65+ | 1.60+ |
| Quiche | 0.19 | 0.18 | 0.17 |
| Tokio | 1.35 | 1.32 | 1.28 |
| io_uring | 0.6 | - | - |
Performance Changes
Section titled “Performance Changes”Performance improvements across versions:
| Metric | 0.3.0 | 0.2.0 | 0.1.0 |
|---|---|---|---|
| Throughput (Gbps) | 12 | 4 | 2 |
| Latency (μs p99) | 150 | 500 | 800 |
| Connections (max) | 100K | 50K | 10K |
| CPU efficiency | 90% | 70% | 60% |
Testing
Section titled “Testing”Test Coverage
Section titled “Test Coverage”- 0.3.0: 85% code coverage
- 0.2.0: 75% code coverage
- 0.1.0: 60% code coverage
Interoperability
Section titled “Interoperability”Tested against:
- Clients: quiche, ngtcp2, msquic, quinn
- Servers: Cloudflare QUIC, nginx-quic, h2o
- Test suite: QUIC Interop Runner
Documentation Changes
Section titled “Documentation Changes”- 0.3.0: Complete documentation website (this site!)
- 0.2.0: API docs and basic README
- 0.1.0: README only
Community
Section titled “Community”Contributors
Section titled “Contributors”Thank you to all contributors! See GitHub contributors page.
Statistics
Section titled “Statistics”- Total commits: 450+
- Contributors: 8
- GitHub stars: 120+
- Open issues: 15
- Closed issues: 85
Future Releases
Section titled “Future Releases”See Roadmap for planned features and release timeline.
Coming in 0.4.0 (Q1 2025)
Section titled “Coming in 0.4.0 (Q1 2025)”- Media over QUIC (MOQ) stable release
- QUIC datagrams API
- Connection migration improvements
- Performance optimizations
Coming in 0.5.0 (Q2 2025)
Section titled “Coming in 0.5.0 (Q2 2025)”- WebTransport support
- BBR congestion control
- Advanced observability features
Coming in 1.0.0 (Q3 2025)
Section titled “Coming in 1.0.0 (Q3 2025)”- Stable API (SemVer guarantees)
- Production-ready for all use cases
- Comprehensive documentation
- Performance targets met
Related Documentation
Section titled “Related Documentation”- Roadmap - Future plans
- Contributing - How to contribute
- FAQ - Common questions
This changelog is maintained following Keep a Changelog principles.
Last updated: December 2024