Skip to content

v0.8.0 — Inverse API, correctness hardening & Python 3.14

Latest

Choose a tag to compare

@IvanChernyshov IvanChernyshov released this 17 Aug 20:08

This is the first GitHub release since v0.6.3, so it includes the changes introduced across both the v0.7 and v0.8 development cycles.

Highlights

  • Weight-first power diagrams. Power/Laguerre tessellations can now be computed directly from mathematical weights=, while the existing radii= representation remains supported.
  • Unified forward results. Spatial and planar compute(...) now use the common TessellationResult API, with stable access to sites, IDs, cell measures, empty cells, representation metadata, diagnostics, and normalization.
  • Canonical inverse API. Separator inverse fitting now lives under pyvoro2.inverse / pyvoro2.inverse.separator, with explicit graph, gauge, Laplacian, realization, active-set, provenance, and report diagnostics.
  • Substantial correctness and safety hardening. v0.8 adds certified periodic nearest-image handling, mandatory native-safe duplicate detection, stricter input validation and ownership, guarded native container construction, severity-complete tessellation diagnostics, atomic active-set final states, and source-bound inverse observations/results/reports.
  • More robust inverse solvers. The separator objective, hard-constraint handling, ADMM proximal solve, numerical reductions, final quadratic certification, and dense/sparse solver/backend semantics were audited and corrected for difficult binary64 cases and explicit failure reporting.
  • Python 3.14 and expanded binary distributions. Official wheels are provided for CPython 3.10–3.14 on manylinux x86_64, Windows AMD64, macOS x86_64, and macOS arm64, together with a source distribution.
  • Release and packaging hardening. CI now validates source installs, wheels, the sdist round trip, no-SciPy installations, notebooks, documentation, native sanitizer checks, metadata, and the complete license/notice payload.

Migration from v0.6.3

The temporary compatibility API introduced during the v0.7 transition has now been removed. In particular, pyvoro2.powerfit, broad top-level separator exports, historical separator aliases, PlanarComputeResult, and planar return_result= are no longer part of the v0.8 API.

Use the canonical APIs under pyvoro2.inverse and pyvoro2.inverse.separator. For forward computation, output='cells' remains available when the historical raw cell-list form is desired.

Notes

v0.8.0 is primarily a stability, correctness, API-cleanup, and distribution-quality release following the larger API expansion developed for v0.7. It intentionally does not add the planned prescribed-cell-measure or mixed-inverse solvers; those remain future development work.

For the complete technical history, migration details, and known limitations, see CHANGELOG.md and docs/project/release-notes-v0.8.md.