All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Major Windows optimization: Dijkstra performance on Windows improved by 2.2x (6.0s to 2.75s on USA DIMACS network)
- Windows/Linux gap reduced: From 2.4x to just 1.07x (7% difference)
- Added memory prefetching to heap operations (
_min_heapify,_decrease_key_from_node_index) - Extended
prefetch_compat.hwith branch prediction macros and additional prefetch hints (T1, T2, NTA) - Added
/Qspectre-flag to MSVC compiler for benchmark builds
- Added: Python 3.14 support
- Removed: Python 3.9 support
- Supported versions: 3.10, 3.11, 3.12, 3.13, 3.14
- Fixed graph-tool API compatibility (explicit
topologysubmodule import)
- Added
.pyistub files for all Cython modules to support static type checkers (pyright, ty)
- Updated cibuildwheel to >=3.0.0
- Updated GitHub Actions to setup-python@v5
- Pinned benchmark script dependencies
- Added Breadth-First Search (BFS) algorithm
- BFS class with configurable sentinel value for unreachable vertices
- Full test coverage against SciPy implementation
- Added Bellman-Ford algorithm with negative cycle detection
- Support for both CSR and CSC graph formats
- Parallel edge handling with automatic minimum weight selection
- Windows Server 2019 runner retired, updated CI configuration
- Test coverage and documentation action setup
- Actions now run on release creation
- Early termination support for Dijkstra (stop when target nodes are reached)
- Returns path length only for termination nodes in early termination case
- Added prefetching for single-source shortest path
- Added early termination section to documentation
- Improved small example in README
- Cross-platform prefetching compatibility header using SSE intrinsics on x86/x64, ARM intrinsics on ARM64
- Applied prefetching to Dijkstra algorithm
- Fixed PyPI wheel publishing artifact naming
- Added Codecov coverage reporting and badge
- Added memory prefetching headers and functions
- Prefetch hints in edge iteration loops for
compute_ssspandcompute_sssp_w_path - Added LTO flags (Link Time Optimization)
- Added
noexceptdeclarations to priority queue function signatures
- Added support for Python 3.9-3.13
- Skip i686 architecture builds
- Fixed cython-lint command for Windows compatibility
- Added black code formatter
- Added cython-lint for Cython code quality enforcement
- Fixed all cython-lint violations
- Major version bump
- Documentation moved to ReadTheDocs
- Updated GitHub Actions
Initial development releases including:
- Core Dijkstra's algorithm implementation in Cython
- CSR (Compressed Sparse Row) graph representation
- Path tracking support
- Basic test suite
- PyPI package setup