Skip to content

Changelog

All notable changes to Furax will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

0.11.3 - 2026-07-14

Changed

  • Migrated the documentation website from Sphinx to Zensical (Material for MkDocs), with the API reference now generated by mkdocstrings

0.11.2 - 2026-07-14

Added

  • BandedCholeskyOperator and block-banded Cholesky routines (#167)
  • More reader fields (#166)

Changed

  • Backed Stokes maps with a single dense array (#165)
  • Optimised PointingOperator matvec using lax.map (#172)
  • Streamed fused scan-block bodies (#170)
  • Improved logging in the multi-observation mapmaker (#171)

0.11.1 - 2026-07-01

Added

  • Nested PCG capabilities in the multi-observation mapmaker (#162)
  • Elevation modulation in the atmosphere pointing operator (#161)
  • WeightOperator bundling noise weights and mask (#158)
  • Spline-based HWP-synchronous signal template (#146)
  • Basis-template operators for mapmaking (#144)
  • IDEMPOTENT operator tag and P @ P = P reduction rule (#155)
  • Sharding-aware CG solver (#83)
  • Direct loading of sotodlib observations from the preproc db (#152)
  • cuda dependency group to install jax[cuda] (#139)

Changed

  • Split binary rules into composition/addition flavours (#137)
  • Rebased observation timestamps to a zero origin before the float32 downcast (#145)
  • Supported static leaves and scalar fusion in scan-block operators (#143)
  • Improved reader fields handling (#148)
  • Structure compatibility now checks only shape and dtype (#153)

Fixed

  • CG instability past convergence with stabilisation enabled (#159)
  • dtype of MaskOperator.to_boolean_mask() (#160)
  • Scan-block fusion to keep obs-axis sharding (#147)
  • MapMakingConfig.double_precision=False (non-functional path) (#118)

0.11.0 - 2026-06-05

Drops support for Python 3.10 (now requires JAX 0.10+) and includes breaking changes to the mapmaking configuration.

Added

  • Distributed multi-observation mapmaking (#117, #132)
  • Identity noise option to disable noise weighting (#120)
  • Low-rank approximation using the Lanczos algorithm (#80, #122, #123)
  • atomic flag on QURotationOperator to prevent reduction (#119)
  • SHT beam convolution support (#114)

Changed

  • Breaking: Dropped support for Python 3.10; now requires JAX 0.10+ (#104, #112, #115)
  • Breaking: Refactored the mapmaking noise weighting configuration (#126)
  • Observation handling now returns host (NumPy) arrays and pads host-side (#128, #130)
  • Moved the SO multi-observation CLI to the standalone so_mapmaking package (#133)
  • Improved error messages for incompatible operator composition and comparison (#113, #116)

Fixed

  • Metadata hashing in gap-filling noise realizations (#131)
  • Various mapmaking and ATOP/MLMapMaker hotfixes (#108, #109, #111)

0.10.4 - 2026-04-10

Added

  • Improved FFT and overlap-and-save methods in SymmetricBandToeplitzOperator (#100)

Changed

  • Cleaned up PSD fitting code by relying on CADRE (#101, #103)

Fixed

  • Computation of pixel indices in the expanded pointing operator (#102)
  • POMME operator with no tail (#105, #106)

0.10.3 - 2026-04-01

Added

  • Bilinear interpolation (#95)
  • Atmosphere separation infrastructure (#96)
  • ATOP support in the multi-observation mapmaker (#93)

Changed

  • Reorganised MapMakingConfig (#92)
  • Reduced memory usage in MultiObsMapMaker (#97)
  • Improved MapMakingResults (#99)

0.10.2 - 2026-03-25

Added

  • tree.norm (#82)
  • WCSLandscape with CAR projection (#89)
  • asoperator factory (#32)
  • SO-specific mapmaking configuration (#88)

Changed

  • Refactored MapMakingResults (#84) and multi-observation logic into a helper class (#87)
  • Improved JAX compatibility of the FGBuster instrument (#85)
  • Improved documentation (#75)
  • Bumped pre-commit hooks and GitHub actions (#78)

Fixed

  • Stacking when creating DetectorArray (#81)

0.10.1 - 2026-03-06

Changed

  • Avoid a direct dependency on litebird_sim (#76)

0.10 - 2026-03-06

Major mapmaking and observation release.

Added

  • Multi-observation mapmaker (#40) with gap-filling (#54) and noise-weighting improvements (#53)
  • Data reader for sotodlib-format observations (#29, #30, #33, #39) and multi-observation mapmaking script (#65)
  • MaskOperator, supporting PyTree inputs (#31, #72)
  • FourierOperator (#35) and noise weighting built on it (#49)
  • furax.linalg module with analytic 2×2 and 3×3 eigvalsh (#73)
  • Analytic likelihood gradient (#58)
  • Preliminary LiteBIRD (lbs) interface (#57)
  • Support for demodulated data in mapmaking (#68)
  • quat2index for any StokesLandscape (#41)
  • Citation metadata (#38, #52)

Changed

  • Dataclass-based abstract linear operators (#62)
  • Mapmaking renaming (#27)
  • Simplified PointingOperator (#45) and factored out QU rotation logic (#74)
  • Made fft_size static in the Toeplitz operator (#46)
  • Clarified angle conventions (#70)
  • Bumped sotodlib for Python 3.13 support (#63); faster CI (#51); revisited ruff rules (#55)

Fixed

  • Traced arrays used in scanning mask (#34)
  • FGBuster instrument PyTree (#61)
  • Error if solver_options is passed directly to parametrize an inverse (#71)

0.9 - 2025-07-25

Added

  • Parametrizable .I (inverse) on operators (#19)
  • ReadTheDocs documentation (#24)

Changed

  • Updated component separation (#16)
  • More linting rules (#12); updated pre-commit hooks (#21)

Fixed

  • Tests involving inexact arrays on the CPU platform (#14)
  • Block row operator with a single leaf (#13)
  • IndexOperator and ReshapeOperator edge cases (#15, #23)

0.8 - 2025-02-05

First public release with CI and a release workflow.

Added

  • Continuous integration (#2) and release workflow
  • Generic IndexOperator (#3)
  • Gap filling (#4)
  • SED operators for component separation (#1)
  • TreeOperator and basic PyTree operations: matvec, vecmat, matmat (#9)

Changed

  • Reorganised the codebase
  • Renamed StokesPyTreeStokes, StokesIQUPyTreeStokesIQU, etc.
  • Updated installation instructions (#10)

Fixed

  • Toeplitz operator fix (#8)

0.7 - 2024-10-30

Added

  • FrequencyLandscape and tests

0.6 - 2024-08-02

Changed

  • SymmetricBandToeplitzOperator: broadcastable and multidimensional band values

0.5 - 2024-07-02

Added

  • ToastObservationMatrixOperator

0.4 - 2024-05-31

Added

  • .I (inverse) for all operators

0.3 - 2024-05-06

Added

  • Multidimensional landscapes

0.2 - 2024-05-13

Fixed

  • Deployment

0.1 - 2024-02-12

Initial tagged release.

Added

  • Project classifiers and editable-mode installation instructions