Skip to content

InterpolatePy v3.0.0 — C++ Port & Dual-Backend Architecture

Choose a tag to compare

@GiorgioMedico GiorgioMedico released this 21 Mar 13:54
a9b8fa1

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

Full Changelog: v2.0.1...v3.0.0