v0.2.1
Release Notes - v0.2.1
Overview
This release includes major performance improvements, async support, Windows compatibility, and enhanced documentation. PR #20 initially attempted to release version 0.2.0 but encountered a release error, which was subsequently fixed in PR #21.
What's Changed
Async Architecture
- AsyncClient: Native asyncio support with event-driven architecture
- Non-blocking I/O: Complete async request manager with buffer pooling
- Windows IOCP: Full I/O Completion Ports implementation for Windows async support
- Async convenience functions (
async_get,async_post, etc.)
Platform Support
- Windows Compatibility: Full MSVC support with POSIX compatibility layer
- Cross-platform Threading: Windows-native synchronization primitives
- All Tests Passing: tests pass on Linux, macOS, and Windows
Architecture Refactor
- Modular core split from monolithic
httpmorph.cinto specialized modules:client.c,network.c,tls.c,http1.c,http2.cproxy.c,cookies.c,compression.casync_request_manager.c,buffer_pool.c
Documentation
- ReadTheDocs Integration: Sphinx-based documentation with Read the Docs theme
- Added
quickstart.rstandapi.rstwith examples - Version centralization in
pyproject.tomlas single source of truth
Bug Fixes
- Fixed SSL_shutdown blocking on proxy/stale connections
- Added automatic retry for stale pooled connections
- Fixed async HTTP state transitions preventing "Send failed" errors
- Improved proxy connection handling and error detection
- Fixed TLS information capture for reused connections
Build System
- Centralized version management in
pyproject.toml - Enhanced CI/CD workflows with proper secret handling
- Docker build fixes for nghttp2 library detection
Code Quality
- Applied ruff formatting across all Python files
- Fixed all linting errors
- Improved type hints and error handling
Technical Details
Files Changed: 40+ files, 615 additions, 322 deletions
Test Coverage: 323 tests passing (8 skipped), 0 failures
Notes
- PR #20 encountered a release error during the initial 0.2.0 release attempt
- PR #21 successfully fixed the release issue and completed the v0.2.1 deployment