Changelog

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.

[0.5.0] - 2026-07-16

Performance

  • __slots__ on core classes: Added __slots__ to MapAdapter, RepeatArray, and SlNode, saving ~176 bytes per instance for each. (#f4d6f8c)

  • Compact BPQueue buckets: Replaced per-bucket Dllist([i, 4848]) with bare Dllink sentinels, eliminating the per-bucket Dllist wrapper object + list — saving ~168 bytes per bucket (~150 MB for large circuits with pmax=50K). (#f4d6f8c)

Documentation

  • svgbob doubly-linked list diagram: Added ASCII-to-SVG diagram to dllist.py module docstring. (#b275f30)

Fixed

  • mypy errors: Resolved type annotation errors in config and bpqueue. (#69e04ae)

  • Robin precondition: Enforced num_parts >= 2 precondition, replaced empty-cycle guard with assertion. (#5411bce)

  • Python 3.9 compat: Added from __future__ import annotations for PEP 604 syntax. (#f99e33d)

Testing

  • Coverage raised 95%→98%: Deduped redundant tests, added slice and iterator coverage tests. (#71de094)

Code Cleanup

  • Removed PyScaffold boilerplate: Deleted skeleton.py/test_skeleton.py, dropped Python < 3.9 compat, removed dead entry points and duplicate LICENSE. (#bde6f85)

Build & CI

  • CI repair: Fixed broken entry_points and remaining skeleton imports. (#551afd2)