Changes for version 0.001004 - 2026-02-02
- Bug Fix: Socket close ordering
- Fixed Future::IO corruption when disconnect() called with active watchers
- Cancel _current_read_future before socket close ensures Future::IO unregisters watchers while fileno is still valid
- Let Perl's DESTROY handle close() after futures are cancelled
- Breaking Change: Future::IO configuration
- Removed Future::IO->load_best_impl from module
- Libraries should not configure Future::IO - only application entry points should (following LeoNerd's guidance)
- Added comprehensive EVENT LOOP CONFIGURATION documentation section
- Updated SYNOPSIS with proper configuration guidance
- Improvements:
- Apply connect_timeout to Redis handshake (AUTH, SELECT, CLIENT SETNAME)
- Removed unused read_timeout and write_timeout settings
- Examples:
- Updated pagi-chat example for PAGI 0.001016 auto-configured Future::IO
- Testing:
- New t/93-socket-cleanup/close-with-watchers.t for disconnect scenarios
- Enhanced t/10-connection/socket-cleanup.t
Documentation
Auto-generated Redis command methods
Modules
Async Redis client using Future::IO
Automatic command batching
Auto-generated Redis command methods
Base exception class for Redis errors
Connection failure exception
Disconnected exception
Protocol violation exception
Redis server error exception
Timeout exception
Cursor-based SCAN iterator
Key position detection for Redis commands
Command pipelining
Connection pool for Async::Redis
Reusable Lua script wrapper with EVALSHA optimization
PubSub subscription handler
Observability for Redis client
Transaction command collector
Redis connection URI parser
Examples
- examples/README.md
- examples/docker-compose.yml
- examples/pagi-chat/README.md
- examples/pagi-chat/app.pl
- examples/pagi-chat/lib/ChatApp/HTTP.pm
- examples/pagi-chat/public/css/style.css
- examples/pagi-chat/public/index.html
- examples/pagi-chat/public/js/app.js
- examples/pagi-chat/reset-redis.sh
- examples/slow-redis/README.md
- examples/slow-redis/app.pl