Releases: GiorgioMedico/InterpolatePy
InterpolatePy v3.0.0 — C++ Port & Dual-Backend Architecture
What's New
InterpolatePy 3.0.0 is a major release that introduces a complete C++ reimplementation of the entire algorithm suite, accessible from Python through pybind11 bindings and
a transparent backend system.
C++ Library (interpolatecpp)
A standalone, header-based C++ library mirroring every Python algorithm:
- Splines — Cubic splines (natural, clamped, acceleration-constrained), cubic smoothing splines with GCV
- B-Splines — General, cubic, interpolating, approximating, and smoothing variants
- Motion Profiles — Double-S (7-segment), trapezoidal, polynomial (cubic/quintic), parabolic linear blend
- Quaternion Interpolation — SLERP, SQUAD C², logarithmic and modified-log schemes, quaternion splines
- Path Planning — Linear/circular paths, linear trajectories, Frenet-Serret frame computation
- C++20 Concepts — Compile-time interface contracts (Interpolatable, DifferentiableInterpolatable, MotionProfile)
Built with CMake, tested with Catch2 (16 test files), and shipped with 16 standalone examples.
Dual-Backend System
- interpolatepy._backend detects whether the C++ module is available and selects the fastest implementation automatically
- interpolatepy._adapters bridges C++ and Python APIs with zero user-facing changes
- Pure-Python fallback is always available — no C++ compiler required to use the library
Protocol-Based Architecture
interpolatepy.protocols defines runtime-checkable structural typing contracts (InterpolatableProtocol, MotionProfileProtocol, QuaternionInterpolationProtocol) enabling
algorithm interchangeability regardless of backend.
Breaking Changes
- Python 3.10 dropped — minimum is now 3.11
- requirements.txt removed — all dependencies managed via pyproject.toml groups (test, dev, docs, all)
- Public API reorganized — imports still work via interpolatepy, but internals restructured around the adapter layer
Documentation
- New tutorials: Path Planning, Quaternion Interpolation
- New Architecture guide explaining the dual-backend design
- Updated API reference, installation, quickstart, and contributing guides
Infrastructure
- GitHub Actions workflows modernized for pyproject.toml-based installs
- _adapters subpackage correctly included in package discovery
- Linter cleanup (removed stale noqa directives)
What's Changed
- Cpp by @GiorgioMedico in #8
- Dev by @GiorgioMedico in #10
Full Changelog: v2.0.1...v3.0.0
v2.0.1
v2.0.0
What's Changed
- Refactoring, Documentation and quaternion splines by @GiorgioMedico in #3
Full Changelog: v1.1.0...v2.0.0
v1.1.0
Merge pull request #1 from GiorgioMedico/3.10+ 3.10+
v1.0.3
doc
v1.0.2
v1.0.2
v1.0.1
First Release