Skip to content

Tags: jlogan03/interpn

Tags

v0.11.0

Toggle v0.11.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Eliminate recursion (#62)

## 0.11.0 2026-01-15

### Changed

* !Remove recursive implementations
  * All dimensionalities now use const-generic bounded implementations
* For dimensions higher than const-unrolling limit, a run-time loop of
the same form is used
  * No notable change in performance for high dimensions
  * No change to API for `::interpn` convenience functions
* All methods are now compatible with static analysis of memory usage
via cargo-call-stack
* Refactor internals to reduce duplication
* Improve form of early bounds checks to be interpreted correctly by the
compiler
  * 30% speedup in some cases, no effect on most
* Bounds checks done via iterator do not always result in optimizing out
panic branches
* Test cubic methods in higher dimensions

v0.10.0

Toggle v0.10.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Implement thread parallelism (#61)

## 0.10.0 2026-01-10

### Added

* Rust
  * Add top-level `interpn`, `interpn_alloc` and `interpn_serial` methods along with supporting enums for selecting methods
  * Add `par` feature, enabled by default, that enables parallelism with rayon in `interpn` function
  * Add lazy static for getting number of physical cores to advise thread chunk sizes

### Changed

* Rust
  * Update deps
* Python
  * !Refactor `interpn` function
    * Combine `check_bounds: bool` and `bounds_check_atol: float` to `check_bounds_with_atol: float | None`
    * Replace `assume_regular` input with optional `grid_kind` to allow assuming either regular or rectilinear, or making no assumption
    * Add `max_threads: int | None` input to allow manually limiting parallelism
    * Use rust top-level `interpn` function as backend for method selection, bounds checks, and parallelism

v0.9.1

Toggle v0.9.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Improve compile time (#59)

## 0.9.1 2025-12-31

### Changed

* Rust
  * Remove explicit const-unrolling for shallow loops (eliminates nested const-unrolling)
    * Improves compile time
    * Minimal effect on performance in Rust benchmarks
    * About 20% improvement for single-sample throughput from Python
* Python
  * Lock python package version to rust version
  * Improve handling of `__version__` when package is not present

v0.9.0

Toggle v0.9.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Improve compile time (#58)

## 0.9.0 2025-12-27

### Added

* Rust
  * Add `deep-unroll` feature that sets crunchy unroll depth to 256 and enables 4D unrolled cubic interpolation
    * This improves compile times in typical use-cases

### Changed

* Rust
  * Gate 4D unrolled cubic interpolation behind `deep-unroll` feature
  * Enable `deep-unroll` feature for Python builds
  * Update pyo3 deps

v0.8.2

Toggle v0.8.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Use x86-64-v3 reference CPU target (#52)

## 0.8.2 2025-11-12

### Changed

* Use `x86-64-v3` reference CPU as compilation target instead of manually specifying features
  * Includes AVX2 and vector FMA

v0.8.1

Toggle v0.8.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Implement PGO for MacOS and Windows (#51)

## 0.8.1 2025-11-10

### Added

* Python
  * Implement PGO for mac intel/aarch64, linux aarch64, and windows x64
  * Add script for installing llvm on linux and mac to support PGO

### Changed

* Python
  * Remove stored pgo profiles
  * Update PGO scripts

v0.7.0

Toggle v0.7.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Implement `interpn` convenience function (#47)

## 0.7.0 2025-10-25

Implement `interpn` convenience function that defers directly
to `raw` functions without serializable wrapper classes.

This enables use without pydantic for dep-constrained environments.

Contributions
* [Clément Robert](https://github.com/neutrinoceros)
  * #40
  * #41
  * #42
  * #44
  * #45
  * #46

### Added

* Python
  * Add type stubs for `raw` module
  * Add `interpn` function that defers directly to `raw` functions without serializable wrapper classes

### Changed

* Python
  * !Move pydantic dep to `serde` optional group
  * !Move optional dev dep groups to dependency groups (no longer installable via `.[dep]` syntax)
  * !Import serializable wrapper classes into top level module only if pydantic is found
  * !Drop support for python 3.9, which is leaving long-term support soon
  * Update PGO profile data
* Rust
  * Use abi3-py310 for python bindings

v0.6.4

Toggle v0.6.4's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Nearest neighbor on structured grids (#43)

Nearest neighbor on structured grids

v0.6.3

Toggle v0.6.3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Fix typo in workflow (#39)

v0.6.2

Toggle v0.6.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Use FMA (#29)

## 0.6.2 2025-10-20

Add optional use of fused multiply-add, enabled for python distributions.
This substantially improves floating-point roundoff; cubic method now shows
O(1e-14) peak roundoff error even under extrapolation of a quadratic function,
and 0-4 epsilon roundoff inside interpolating region.
Overall effect on throughput performance is neutral.

### Added

* Rust
  * Add `fma` feature

### Changed

* Rust
  * Use Horner's method for evaluating normalized cubic hermite spline
  * If `fma` feature is enabled, use FMA in cubic and linear methods where possible
* Python
  * Enable `fma` feature for python distribution
  * Update pgo profile data and benchmark plots