All notable changes to the B+ Tree Python implementation will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Modern Python packaging with pyproject.toml
- Cross-platform CI/CD with GitHub Actions
- Comprehensive test matrix across Python 3.8-3.12
- Automated wheel building for Linux, macOS, and Windows
- Complete dictionary API compatibility
- Iterator modification safety with runtime error detection
- Comprehensive test suite for iterator safety scenarios
- Updated setup.py to work with modern packaging standards
- Improved C extension build configuration with platform-specific optimizations
- Enhanced error handling and memory safety in C extension
- CRITICAL: Segmentation fault in C extension during iterator use after tree modification
- Iterator safety now raises RuntimeError instead of crashing when tree is modified during iteration
- Length counter synchronization issues in adversarial test patterns
- Critical memory safety issues in C extension node splitting
- Reference counting bugs that caused segmentation faults
- Circular import issues in pure Python implementation
- Eliminated segmentation faults that could potentially be exploited
- Added modification counter to prevent unsafe memory access patterns
- Initial B+ Tree implementation with pure Python fallback
- C extension for high-performance operations
- Basic dictionary-like API (
__getitem__,__setitem__,__delitem__) - Range query support with
items(start_key, end_key) - Comprehensive test suite with 115+ tests
- Performance benchmarks and analysis
- Basic documentation and examples
- 1.4-2.5x faster than SortedDict for range queries
- Efficient insertion and deletion operations
- Memory-efficient arena-based allocation in Rust implementation
- Major (X.0.0): Breaking API changes
- Minor (0.X.0): New features, backwards compatible
- Patch (0.0.X): Bug fixes, no new features
When making changes:
- Add entry under
[Unreleased]section - Use standard categories: Added, Changed, Deprecated, Removed, Fixed, Security
- Include issue/PR numbers where applicable
- Update version number in
__init__.pybefore release