Changelog
All notable changes to the Ultimo framework are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
[0.2.1] - 2026-01-04
Fixed
- Updated WebSocket pubsub benchmark to match new ChannelManager API
- Removed unused imports in React example projects
Coming Soon
- Server-Sent Events (SSE)
- Session management
- Testing utilities
- Multi-language client generation
- Per-message deflate compression (RFC 7692)
[0.2.0] - 2026-01-04
Added
WebSocket Support (Complete) ๐
- Zero-dependency RFC 6455 compliant WebSocket implementation
- Built on hyper's upgrade mechanism (no tokio-tungstenite required)
- Type-safe WebSocketHandler trait with typed context data
- Built-in pub/sub system (ChannelManager) for topic-based messaging
- Seamless router integration with
app.websocket()method - Router optimization: Migrated to Radix Tree for O(L) lookups
- 279 comprehensive tests (128 unit, 151 integration)
- Production-ready features:
- Configuration System (
WebSocketConfig) with size limits, timeouts, and buffer sizes - Message Fragmentation for large payloads with automatic reassembly
- Automatic Ping/Pong heartbeat with configurable intervals and timeout detection
- Graceful Shutdown with
broadcast_all()and proper close handshakes - Backpressure Handling with bounded channels,
on_drain()callback, and capacity tracking
- Configuration System (
- Two working examples:
- Simple HTML/JS chat application
- Modern React + TypeScript chat with shadcn/ui
- Frame codec supporting all opcodes (text, binary, ping, pong, close, continuation)
- Frame masking/unmasking (client frames must be masked per RFC 6455)
- Control frame handling (close, ping, pong)
- Automatic message fragmentation for large payloads (>max_frame_size)
- Fragment reassembly with
FragmentAccumulator - Subscribe/unsubscribe to topics
- Publish messages to all topic subscribers with backpressure handling
- Automatic cleanup on disconnect
- Connection lifecycle callbacks (on_open, on_message, on_close, on_drain)
- Type-safe context data per connection (
WebSocket<T>) - JSON message helpers (send_json, recv_json)
- Configurable size limits (max_message_size: 10MB, max_frame_size: 1MB)
- Bounded channels with configurable buffer (default 1024)
- Automatic ping/pong heartbeat (configurable interval, default 30s)
- Timeout detection for unresponsive clients (default 10s)
- Backpressure notifications via
on_drain()callback - Capacity tracking:
capacity(),max_capacity(),has_capacity() - Graceful shutdown with
broadcast_all()for server-wide notifications - Custom close frames with reason codes
- Zero additional dependencies (uses existing hyper, tokio, bytes)
- Efficient memory usage with BytesMut for frame parsing
- O(L) router lookups with Radix Tree optimization
- WEBSOCKET_DESIGN.md - Architecture and design decisions
- WEBSOCKET_TESTING.md - Testing strategy and coverage
- Example READMEs with setup instructions
[0.1.0] - 2025-11-21
Core Features
Framework- โก High-performance HTTP server built on Hyper
- ๐ฏ Type-safe routing with path parameters
- ๐ง Composable middleware system (CORS, Logger, PoweredBy, Custom)
- ๐ Built-in RPC support (REST & JSON-RPC modes)
- ๐ OpenAPI 3.0 specification generation
- โจ Automatic TypeScript client generation
- โ Request validation with detailed errors
- ๐ก๏ธ Comprehensive error handling
- ๐งช 70.7% test coverage (124 tests)
- ๐ Custom coverage tool with modern HTML reports
- ๐ Git hooks for code quality (pre-commit, pre-push)
- ๐ Complete documentation and examples
- ๐ ๏ธ CLI tool for client generation
- ๐ฆ Monorepo management with Moonrepo
- Basic REST API
- Database integration (SQLx & Diesel)
- OpenAPI documentation
- React full-stack applications
- RPC modes demonstration
- Benchmark comparisons
Technical Details
- MSRV: Rust 1.75.0
- Runtime: Tokio (async)
- HTTP: Hyper 1.x
- Performance: 152k+ req/sec (matches Axum)
Initial Release - Complete type-safe web framework with automatic client generation and comprehensive testing.