Skip to content

v0.1.0: Packaging & Core Architecture Modernisation

Choose a tag to compare

@pauldruce pauldruce released this 02 Sep 19:40
· 27 commits to main since this release
b2859cc

RFL v0.1.0 Release Notes

Warning

Initial Package Release (Beta Phase)

RFL version 0.1.0 is the initial packaged release (v0.y.z). It establishes the canonical CMake target names and modernised library layout:

  • Directory & Target Restructuring: The modern C++ library is located in core/. Target references use rfl_core (or the namespaced aliases RFL::core / RFL::rfl).
  • Legacy Target Archival: Historical simulation code is archived under legacy/ (target rfl_legacy, alias RFL::legacy).
  • CMake Integration: Projects consuming RFL via CMake should link RFL::core using target_link_libraries(<target> PRIVATE RFL::core).

RFL version 0.1.0 introduces automated multi-platform Python wheel packaging, zero-copy NumPy matrix interoperability, CMake FetchContent target exports, and a restructured source layout.


1. Highlights

  • PyPI Binary Wheels: Precompiled wheels for Linux (manylinux_2_28_x86_64) and macOS (x86_64, arm64) across Python 3.8 to 3.13 (pip install pyrfl).
  • Zero-Copy NumPy Interoperability: Native bidirectional memory mapping between Armadillo complex matrices (arma::cx_mat) and NumPy arrays (numpy.ndarray) via Carma.
  • CMake In-Tree Targets: Exported namespaced alias RFL::core (and RFL::rfl) for FetchContent and modular builds.
  • Source Layout Standardisation: Promoted modern C++ library to src/RFL/core (rfl_core) and archived historical code to src/RFL/legacy (rfl_legacy).

2. Packaging & Distribution

  • Implemented cibuildwheel build configuration in src/RFL/pyproject.toml.
  • Automated dynamic library vendoring (openblas, gsl, armadillo) inside wheels using auditwheel (Linux) and delocate (macOS).
  • Configured automated PyPI publishing on release publication via OpenID Connect (OIDC) Trusted Publishing.
  • Added source distribution (sdist) generation and automated release asset bundling.

3. Python Bindings & Performance

  • Integrated carma header library into pybind11 extension module.
  • Enabled direct extraction of Dirac operator eigenvalue spectra without intermediate array duplication.
  • Preserved hermetic build support with Please (pleasew) and standard CMake.

4. Documentation & Governance


5. Compatibility & Requirements

Precompiled Python Wheels

  • Linux (x86_64): manylinux_2_28 (glibc ≥ 2.28, Python 3.8–3.13).
  • macOS Apple Silicon (arm64): macOS ≥ 14.0 Sonoma (Python 3.8–3.13).
  • macOS Intel (x86_64): macOS ≥ 15.0 Sequoia (Python 3.8–3.13).

C++ Core & CMake Integration

  • C++ Standard: C++17 conforming compiler (GCC ≥ 10, Clang ≥ 11, Apple Clang ≥ 13, MSVC ≥ 2019).
  • Linear Algebra: Armadillo ≥ 11.4.0, OpenBLAS / LAPACK.
  • Stochastic Engine: GNU Scientific Library (GSL) ≥ 2.6.
  • Build System: CMake ≥ 3.20.