From 8931c63fd155686818033fd7e46a2c27a60d5c3b Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 8 Nov 2025 04:47:37 +0000 Subject: [PATCH 1/2] Prepare for v0.7.1 release - Update version to 0.7.1 in pyproject.toml - Update CHANGES.md with v0.7.1 release notes following Keep a Changelog format - Document all changes since v0.7.0 including bug fixes, improvements, and new features --- CHANGES.md | 56 ++++++++++++++++++++++++++++++++------------------ pyproject.toml | 2 +- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 8a2c68a..2c5d136 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,32 +1,48 @@ -# PRTree Improvements +# Changelog -## Critical Fixes +All notable changes to this project will be documented in this file. -### 1. Windows Crash Fixed -- **Issue**: Fatal crash with `std::mutex` (not copyable, caused deadlocks) -- **Fix**: Use `std::unique_ptr` -- **Result**: Thread-safe, no crashes, pybind11 compatible +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -### 2. Error Messages -- Improved with context while maintaining backward compatibility -- Example: `"Given index is not found. (Index: 999, tree size: 2)"` +## [0.7.1] - 2025-11-08 -## Improvements Applied +### Added +- Modernized project structure for better OSS contribution experience (#52) + - Added comprehensive CONTRIBUTING.md with development guidelines + - Improved development tooling configuration + - Enhanced documentation for contributors -- **C++20**: Migrated standard, added concepts for type safety -- **Exception Safety**: noexcept + RAII (no memory leaks) -- **Thread Safety**: Recursive mutex protects all mutable operations +### Fixed +- Fixed critical Windows crash with `std::mutex` (#51) + - Changed to `std::unique_ptr` for thread-safe, pybind11-compatible implementation + - Resolved fatal crashes and deadlocks on Windows platform +- Optimized CI workflows for better reliability and performance (#51) -## Test Results +### Improved +- Expanded test coverage with comprehensive test suite (#48) + - Now includes 674 unit tests covering edge cases and various scenarios + - Improved test organization and structure +- Added `query_intersections()` method for efficient AABB pair detection (#47) + - Enables finding all pairs of intersecting bounding boxes efficiently -✅ **674/674 unit tests pass** - -## Performance +### Changed +- Upgraded dependency versions in CI workflows (#50) +- Migrated to C++20 standard with concepts for type safety +- Enhanced error messages with context while maintaining backward compatibility + - Example: `"Given index is not found. (Index: 999, tree size: 2)"` +### Performance - Construction: 9-11M ops/sec (single-threaded) - Memory: 23 bytes/element -- Parallel scaling: Limited by algorithm (Amdahl's law), not implementation +- All 674 unit tests pass + +## [0.7.0] - 2024-XX-XX -## Future Work +### Added +- Intersection bug fix +- Python 3.13 support -- Parallel partitioning algorithm for better thread scaling (2-3x expected) +### Improvements +- Exception Safety: noexcept + RAII (no memory leaks) +- Thread Safety: Recursive mutex protects all mutable operations diff --git a/pyproject.toml b/pyproject.toml index a5e3c2a..f1aef8a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "python_prtree" -version = "0.7.0" +version = "0.7.1" description = "Python implementation of Priority R-Tree" readme = "README.md" requires-python = ">=3.8" From 92b42ef28add99975061577b0954d342bdd27e36 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 8 Nov 2025 04:53:18 +0000 Subject: [PATCH 2/2] Update __version__ to 0.7.1 in __init__.py --- src/python_prtree/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python_prtree/__init__.py b/src/python_prtree/__init__.py index 26d57d5..831bd63 100644 --- a/src/python_prtree/__init__.py +++ b/src/python_prtree/__init__.py @@ -32,7 +32,7 @@ from .core import PRTree2D, PRTree3D, PRTree4D -__version__ = "0.7.0" +__version__ = "0.7.1" __all__ = [ "PRTree2D",