Change Log¶
spatula releases follow semantic versioning.
0.x¶
0.2.0 (2026-03-05)¶
Changed
Project now uses C++ 20 (primarily for std::span). This is great for ergonomics and makes a future Eigen3 port much easier (Eigen::Map is very similar)
Nanobind exports replace pybind11
Optimizers are now header-only
Locality code is now header-only
Vec3 and Quaternion are now header-only
BondOrder is now header-only
Metrics and Utils (excluding QlmEval) are now header only
pgop.py::BOOSOPcode is now in separate fileboosop.py.Many
std::vector<std::vector<...>>are now vectors of pointers, allowing for copy- and move- free access to python data. Matrix elements are accessed withstd::spanand cast to statically-allocated types for performance.py::arrayare now replaced withstd::vectorortype*pointersImplied rotation matrix type (
std::vector<double>) is nowtypedef RotationMatrix = std::array<double, 9>Use Python stable ABI (
abi3).Massive perfomance updates all around
Added SIMD via ISPC for extra speedup
Removed
PGOPStore
BOOSOPStore
Unused python bindings (quaternion, vec3, QLMEval, metrics)
Added
m_group_sizesclass method for PGOP, which stores the size of each group (currently, (group order - 1) * 9). Previous code used vector.size, which requires copies and allocations for both individual elements and entire groups.RotationMatrix std::array wrapper for fast and strongly typed vector rotations
-DENABLE_PROFILINGflag to allow for easy profilingspatula.optimize.NoOptimizationnow acceptsorientation=(w, x, y, z)so PGOP/BOOSOP can evaluate at a fixed normalized quaternion without running an optimization loop.Pre-built wheels using ISPC for increased performance
Updated
bs_thread_pool3.1.0 -> 5.2.0Thread pool now attempts to pin threads on Unix
Thread-local buffers are now used to reduce parallel memory allocations
0.1.1 (2025-10-16)¶
Added:
Python 3.14 support.
Python 3.10 and 3.11 wheels on PyPI.
Pytest mode to run tests for single example per point group.
Fixed:
Windows failures catching.
0.1.0 (2025-09-20)¶
Added:
First PyPI release.
Changed:
Documentation improvements.
CI improvements.
0.0.1 (2025-09-16)¶
Added:
First public release.