Skip to content

Latest commit

 

History

History
66 lines (51 loc) · 2.41 KB

File metadata and controls

66 lines (51 loc) · 2.41 KB

Changelog

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.

[Unreleased]

Added

  • 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

Changed

  • 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

Fixed

  • 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

Security

  • Eliminated segmentation faults that could potentially be exploited
  • Added modification counter to prevent unsafe memory access patterns

[0.1.0] - 2024-XX-XX

Added

  • 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

Performance

  • 1.4-2.5x faster than SortedDict for range queries
  • Efficient insertion and deletion operations
  • Memory-efficient arena-based allocation in Rust implementation

Release Types

  • Major (X.0.0): Breaking API changes
  • Minor (0.X.0): New features, backwards compatible
  • Patch (0.0.X): Bug fixes, no new features

Contributing

When making changes:

  1. Add entry under [Unreleased] section
  2. Use standard categories: Added, Changed, Deprecated, Removed, Fixed, Security
  3. Include issue/PR numbers where applicable
  4. Update version number in __init__.py before release