Skip to content

Changelog

0.6.5 (2026-10-08)

Features

  • api: adopt and document naming conventions, renaming with deprecated aliases (#617) (e97145c)
  • api: export is_eigen_reducible, add a top-level all, check doc page placement (#616) (4242879)
  • distributions: shared AbstractMultivariateNormal base for both MVN classes (#613) (37bc8c2)
  • inference: add dense_innovation to ensemble_kalman_gain (#608) (caf9c94)
  • inference: document natural-parameter conventions and add blr convention="precision" (#611) (66cdb3c)
  • linalg: add diag_inv(method="xdiag") (G16) (#628) (9fb9c1e)
  • operators: finish the gh-136 rename with SumOfKroneckersSqrt and sum_of_kroneckers_sample (#610) (2397c4b)
  • operators: orthonormal fast path for LowRankUpdate on a scaled identity (#606) (475f169)
  • primitives: add Hutch++ to trace (G17) (#629) (e2e8fec)
  • primitives: add mixture_quantile and a Chandrupatla root finder (#627) (82b7b8f)
  • randomized: add column_id and cur (G17) (#632) (651c9b1), closes #486 #511
  • ssm: add a square-root parallel Kalman filter (#630) (4cb317d)
  • ssm: add SDE linearization and drift path-KL helpers (#623) (e41dc42)
  • ssm: differentiate dare through an optimistix implicit adjoint (#624) (d0a7db0)
  • strategies: add NystromLogdet (G17) (#631) (52abe44)
  • strategies: add SketchAndPrecondLSMR and sketch_and_solve (G15) (#625) (f91cbff)

Bug Fixes

  • deps: make the dense pseudo-inverse references robust to numpy 2.5 (#600) (fc3f05e)
  • inference: keep obs_noise structured in etkf_transform and take one eigh (#607) (051e843)
  • inference: small-fixes checklist from the v0.2.0 review (#612) (041fafe)
  • land the review fixes for #639, #623 and #627 (CG atol rescaling, Taylor KL, quantile edge cases) (#646) (16837bf)
  • operators: inherit symmetric/PSD tags in InterpolatedOperator (#601) (9b3917a)

Performance Improvements

  • sketching: trace hadamard_transform's butterfly once (#622) (735e63d), closes #620

0.6.4 (2026-10-07)

Deprecations

Back-filled in #300: the deprecations in effect as of 0.6.4. Every one is removed in 0.7.0 (see the deprecation policy in docs/api/index.md). The items promised for 0.5.0 missed that date and move to 0.7.0.

  • operators: SumKronecker → SumOfKroneckers (#136); SVDLowRankUpdate → LowRankUpdate(..., orthonormal=True) or svd_low_rank_plus_diag; Circulant(symmetric=None) value-inferred symmetry (the default becomes False)
  • linalg: the legacy three-positional conditional_variance(base_diag, A_X, S_u) → conditional_variance(K_XX_diag, K_XZ, A_X, S_u=S_u)
  • expfam: to_expectation → to_mean_cov; to_natural → mean_cov_to_natural
  • gp: base_conditional → sparse_conditional; collapsed_elbo(K_diag=) → K_xx_diag=; the ignored solver= of collapsed_elbo and gauss_kl; predict_variance(K_cross, K_test_diag, operator) → predict_variance(cache, K_cross, K_test_diag)
  • strategies: BBMMSolver.cg_tolerance / cg_max_iter / lanczos_iter and LSMRSolver.maxiter (and their constructor keywords) → rtol / max_steps / lanczos_order (#405); an SLQ logdet of a non-symmetric-tagged operator (will raise)
  • ssm: InfiniteHorizonState → FilterState; the old infinite_horizon_smoother argument order; dare(P_init=); parallel_kalman_filter(solver=) without woodbury_innovation=True; form="sqrt" → psd_project=True; the stacked Q[0] = P_0 layout (naturals_to_ssm, ssm_to_naturals, udl_from_ssm_params) and naturals_to_ssm(solver=); the ignored process_noise argument of the RTS smoothers

Features

  • expfam: add to_mean_cov and deprecate the misnamed to_expectation/to_natural (#545) (51cf276)
  • quadrature: let ep_tilted_moments take any point-based integrator (#575) (bc4d10a)
  • strategies: thread a PRNG key to stochastic logdets and seed CGSolver/MINRESSolver (#590) (8710dfa)

Bug Fixes

  • distributions: let project take an untagged Cholesky factor, and sufficient_stats any batch rank (#347) (#547) (9fc76af)
  • frontend: default linear_solve to AutoSolver and attach preconditioners through Composed/Auto (#596) (efd32cf)
  • gp, quadrature: small-fixes checklist from the v0.2.0 review (#589) (6b31bad)
  • gp: cache the Cholesky factor in PredictionCache and take the cache first in predict_variance (#582) (071d748)
  • gp: document conditional_interpolate as two-filter fusion and add rts_interpolate (#566) (662253d)
  • gp: document love_cache's one-signed Lanczos bias and add a convergence diagnostic (#564) (d57c2d9)
  • linalg: diag_inv takes structured inverses and safe_cholesky densifies only on retry (#573) (a79d0a4)
  • linalg: solve_matrix factors once only for dense PSD operators (#570) (56cbba7)
  • operators: add Circulant(symmetric=) and deprecate value-inferred symmetry (#567) (681900d)
  • primitives: cholesky and sqrt unwrap scalar Mul/Div and keep structure (#563) (398757e)
  • primitives: close small dispatch gaps in trace, tagged MaskedOperator solve and linear_solve negation (#585) (8b2953a), closes #391
  • primitives: flag silent densification with DenseFallbackWarning at the caller (#587) (4a8b52a), closes #406
  • primitives: forward stochastic options through every wrapper in trace/diag/frobenius_norm (#581) (6ac0201), closes #320
  • primitives: logdet(KroneckerSum) uses general eigvals for non-symmetric factors (#560) (a670b31)
  • primitives: one rank= rule for eig, eigvals and svd (#584) (b708680), closes #383
  • primitives: sqrt_matmul shifts KroneckerSum and BlockTriDiag structurally (#579) (6eb2310), closes #337
  • primitives: structured diag/trace for Toeplitz and FFT-diagonalised operators (#574) (2d10a88), closes #373
  • primitives: submatrix keeps LowRankUpdate and lineax wrapper structure (#576) (269162d)
  • quadrature: warn about the unscented alpha=1e-3 default in float32 (#572) (e2340c7)
  • solve: accept a gaussx strategy in gaussx.solve and a lineax solver in linear_solve (#595) (1bd1540)
  • strategies: check SLQ symmetry, make Jacobi gradient- and sign-safe, reject rectangular LSMR logdets (#597) (b7caaa9)
  • strategies: keep the SLQ logdet gradient finite through a Lanczos breakdown (#593) (8eb9c8d)
  • strategies: resolve CG tolerances from the dtype and add throw= to the CG family (#571) (1e2ad62)
  • strategies: stop MINRES at convergence, differentiate it implicitly, and raise on exhaustion (#577) (52452f3)

Performance Improvements

  • preconditioners: read the diagonal without materialising, and take a column function in from_operator (#594) (2325beb)
  • quadrature: compute kernel expectations without the dead (P, N², N²) covariance (#578) (5e4b643)

0.6.3 (2026-10-05)

Features

  • distributions: register numpyro kl_divergence for the gaussx MVN classes (#540) (5682677)

Bug Fixes

  • distributions: draw sample noise in the parameter dtype (#381) (#528) (852dabc)
  • distributions: give batched MVN entropies the batch shape (#319) (#542) (bc189c0)
  • distributions: make log(2 pi) a Python float so it follows the active dtype (#369) (#527) (7db7647)
  • distributions: route MultivariateNormal.sample through sample_mvn and keep structured precisions structured (#538) (1e12d54)
  • distributions: validate only the observed entries in MaskedLGSSM, and allow round-off in the Lanczos bracket test (#469) (#526) (6d37c2c)
  • linalg: centre stable_squared_distances and accumulate its norms in the wide dtype (#414) (#533) (ebd69e6)
  • operators: derive dtypes from inputs at the remaining default-dtype sites (#408) (#532) (835981e)
  • primitives: return non-finite from a singular dense solve instead of raising (#537) (c91bf01)
  • quadrature: keep ep_tilted_moments in the cavity dtype and floor its variance relative to the cavity (#400) (#531) (526b94f)
  • ssm: build SumSDE's L with block_diag so it keeps the component dtype (#397) (#530) (3f4fd86)
  • ssm: give infinite_horizon_filter's carry the model dtype (#386) (#529) (b15fd35)

Performance Improvements

  • distributions: factor a dense PSD covariance once in log_prob, entropy and KL (#543) (4fa71ea)

0.6.2 (2026-10-03)

Bug Fixes

  • sparse: takahashi on a bucket of diagonal-only columns (#521) (2efa446)

0.6.1 (2026-10-03)

Bug Fixes

  • add helpful error message for numpyro extras (#512) (a2870e1)
  • distributions: add BYM2GMRF, the BYM2 pair with its exact density and draws (#518) (e9f3201), closes #508
  • primitives: inv_quad_logdet's default is exact for structured operators (#517) (2360f45), closes #340
  • strategies: AutoSolver keeps every structured operator on its exact path (#514) (dfb0b89), closes #321
  • strategies: differentiate CG solves through data-dependent preconditioners (#513) (0da6c41)

0.6.0 (2026-10-02)

⚠ BREAKING CHANGES

  • sparse: cholesky(SparseOperator) now returns a SparseCholeskyFactor of the permuted matrix (solve, logdet, solve_lower_transpose, selected_inverse, diag_inv) instead of a dense lx.MatrixLinearOperator, and no longer raises above AutoSolver's size threshold.
  • randomized: NystromPreconditioner.from_operator now requires a keyword-only shift (μ, e.g. the noise variance σ²) and its operator is the PSD part A (e.g. K), not the system A + μI; build it from K and pass σ² instead of building it from K + σ²I. Its fields are now basis, eigenvalues and shift (the old scale field is gone), and as_operator ignores its argument. For the old Rayleigh–Ritz projection use gaussx.randomized_eigh(op, rank, n_power_iter=0), which projects onto orth(AΩ) rather than orth(Ω) and so is more accurate, not identical.

Features

  • distributions: add GaussianMRF, IntrinsicGMRF and ConstrainedGMRF (G6) (#505) (99d39f5)
  • gmrf: add precision builders, SPDE on meshes and grids, fem_matrices, fem_projector and SpectralFunction (G7) (#502) (b888637)
  • inference: add laplace_mode with implicit gradients, and binomial and negative-binomial likelihoods (G8) (0c64f4e)
  • inference: add vb_mean_correction, the low-rank variational-Bayes correction of the Laplace mean (G10) (c65d82f)
  • primitives: add pseudo_logdet; theta_design's default Hessian works through sparse log-determinants (G5) (#504) (0018e75)
  • randomized: add randomized_nystrom and rebuild NystromPreconditioner on it with an explicit shift (G13) (#501) (46b248b)
  • randomized: add range_finder, qb, randomized_svd and randomized_eigh with method="randomized" on svd/eig (G12) (#500) (a7a5ab2)
  • sparse: add sparse cholesky with cached symbolic analysis, takahashi selected inverse and exact vjps (G4) (a15380c)

Bug Fixes

  • gmrf: generalized_variance_scale takes diag(S⁻¹) and its correction from one sparse factor (G4) (a15380c)
  • inference: import gaussx without numpyro; laplace_mode sits behind the optional-numpyro guard (G8) (0c64f4e)
  • inference: vb_mean_correction sits behind the optional-numpyro guard too (G10) (c65d82f)
  • sparse: second-order gradients through the sparse logdet and solve are correct (G4) (a15380c)
  • sparse: typecheck without the optional scikit-sparse installed (G4) (a15380c)

0.5.0 (2026-10-02)

⚠ BREAKING CHANGES

  • randomized: PartialCholeskyPreconditioner(rank, shift).as_operator(op) now treats op as the system K + shift·I and factors op − shift·I (fixes #345). To factor a noiseless K directly, use PartialCholeskyPreconditioner.from_operator(K, rank, shift=σ²), which also builds the preconditioner once (#371).

Features

  • linalg: structured selected inverses and shifted-Kronecker diag_inv; fix BlockTriDiag tags (G3) (#489) (6529589)
  • operators: add SparseOperator with a static SparsityPattern (G1) (#488) (56799a0)
  • primitives: add eigh_generalized with a schur-complement path for singular b (G2) (#490) (80db3c5), closes #471
  • quadrature: add theta_design with eb, grid and ccd designs (G9) (#492) (f691dd4)
  • randomized: add rp_cholesky and a build-once PartialCholeskyPreconditioner; stop counting noise twice (G14) (14ea1f1)
  • sketching: add sketching operators and move hadamard_transform from kernellib (G11) (#491) (7275881)

0.4.1 (2026-10-02)

Bug Fixes

  • release: bump uv.lock's gaussx version in release PRs and check the lock in CI (#458) (aa8fdf7)

0.4.0 (2026-09-29)

⚠ BREAKING CHANGES

  • periodic: PeriodicSDE.state_dim is 2 * (n_harmonics + 1), was 2 * n_harmonics.

Bug Fixes

  • dare: solve by doubling so slow dynamics converge; refuse a non-converged steady state (#294) (#445) (70b3f38)
  • kalman: symmetrise the filter and smoother covariances (#388) (#447) (b358060)
  • periodic: add the missing j = 0 harmonic so k(0) equals the variance (#289) (#444) (e2aa904)
  • periodic: exact scaled Bessel weights for any lengthscale (#291) (#443) (7029e9a)

Performance Improvements

  • composition: SumSDE.discretise is the block diagonal of its components (#318) (#446) (33f36ad)
  • nonlinear_kalman: validate only rules that can go indefinite; Cholesky solves (#331) (#451) (418ce42)
  • spingp,ssm_natural: factor R once; N block factorisations in naturals_to_ssm (#403) (#449) (f603059)

0.3.1 (2026-09-29)

Bug Fixes

  • base_conditional: accept a 1-D f, validate shapes, clip diagonal variances at 0 (#363) (#438) (dc8e1d2)
  • block_tridiag: support a single block (N = 1) in mv, transpose, cholesky and solve (#304) (#429) (9c4a5d8)
  • diagonalised: complex transpose is Aᵀ, and only real outputs are auto-tagged symmetric (#330) (#433) (9b03a08)
  • diagonalised: reject a non-conjugate-even symbol for a real-output circulant (#325) (#432) (0431898)
  • ensemble: validate etkf_transform inputs like its siblings (#341) (#435) (43b9560)
  • low_rank_update: reciprocal-free Woodbury capacitance so zero weights stay exact (#307) (#430) (0e00263)
  • markov_gaussian: support a single step (zero transitions) in log_prob and the precision views (#348) (#436) (a3d6b02)
  • natural_gradient: gauss_newton_precision(J, base=prior) keeps the Woodbury structure (#334) (#434) (b0a2bf0)
  • sum_kronecker: never whiten by a non-positive diagonal anchor factor (#317) (#431) (51bb045)
  • tilted_moments: pass a non-positive cavity variance through instead of returning NaN (#357) (#437) (c732eac)
  • toeplitz: reject a complex column at construction (#368) (#439) (75dd026)

0.3.0 (2026-09-29)

⚠ BREAKING CHANGES

  • low_rank_update: low_rank_plus_diag(diag, U, ...) is no longer PSD-tagged from the sign of diag (pass psd=True), and value-equal but distinct factors (V = U.copy()) are no longer inferred symmetric (pass V=U or tags=lx.symmetric_tag).

Bug Fixes

  • inv: keep inv(LowRankUpdate) structured under jit; general Woodbury branch (#328) (#423) (5570352)
  • kronecker_sum: finite gradients through solve/sqrt at repeated eigenvalues (#295) (#421) (0fa19b3)
  • kronecker_sum: make the KroneckerSumSqrt PSD guard jit-safe (#420) (19a1ba2), closes #292
  • low_rank_update: infer tags from structure only, never array values (#422) (d7d891e), closes #343
  • masked: differentiable, cache-stable capacitance solve; trace-safe transpose (#290) (#427) (ca6fc00)
  • ssm_natural: check Q[0] == P_0 at run time so tracing cannot skip it (#359) (#426) (4a328b2)
  • strategies: make strategy and preconditioner config static pytree data (#419) (bfc4bf4), closes #301

0.2.0 (2026-09-25)

⚠ BREAKING CHANGES

  • the kernel operators, kernel approximations, kernel statistics, Falkon, EigenPro, batched kernel matvecs and stable_rbf_kernel are removed from gaussx. Import them from kernellib: kernellib.<name> for operators, Nystrom / RFF, Falkon and EigenPro; kernellib.functional.<name> for hsic, mmd_squared, center_kernel, centering_operator and stable_rbf_kernel.

Features

  • move the kernel layer to kernellib; add a low-rank trace_product path (#272) (53a0324)

0.1.0 (2026-09-24)

⚠ BREAKING CHANGES

  • operators: the green and capacitance_inv attributes are removed (replaced by capacitance_lu). No downstream package reads them.

Features

  • operators: add DiagonalisedOperator and Circulant; diagonalised Kronecker-sum solves (#268) (a9b65e9)
  • operators: solve(MaskedOperator) via the capacitance method (#269) (d951677)

Bug Fixes

  • capacitance: solve the right PDE for singular bases; drop the Green's table (#267) (bff418c)

0.0.29 (2026-09-24)

Features

  • kernels: falkon_preconditioner for Nyström KRR (gh-49, 1/3) (#253) (9e02c71)
  • kernels: falkon_solve, Falkon's preconditioned CG (gh-49, 2/3) (#254) (8926d82)
  • linalg: add EigenFactorization and kronecker_sum_solve; fix non-symmetric KroneckerSum solve (#264) (074e540)

Bug Fixes

  • preconditioners: guard partial-Cholesky pivots past numerical rank (gh-237) (#252) (1a2b87b)

0.0.28 (2026-09-24)

Features

  • distributions: structure-aware sample_mvn dispatch (gh-78) (#249) (ca4fedd)
  • primitives: contour-integral matrix square roots and joint inv-quad/logdet (gh-39, gh-43) (#244) (b6f5003)

0.0.27 (2026-09-23)

Bug Fixes

  • operators: exact gradients through the SumOfKroneckers solve; cavity precision_floor (#246) (77f3382)

0.0.26 (2026-08-28)

Features

  • ssm,distributions: add UDL factorisation and MarkovGaussian chain distribution (gh-65, gh-76) (#242) (58e90a6)

0.0.25 (2026-08-26)

Features

  • inference: ensemble Kalman inversion step (gh-230) (#239) (5348f18)
  • ssm: mean-field block-diagonal Kalman filter and smoother (gh-29) (#240) (15d82f3)

0.0.24 (2026-08-26)

Bug Fixes

  • root: guard pivoted-Cholesky against rank-deficient inf columns (gh-236) (#238) (71ff499)
  • safe_cholesky reverse-mode AD + SDE kernel dtype promotion (gh-229, gh-224) (#232) (7dc00a1)

0.0.23 (2026-08-25)

Features

  • operators: structural solve/logdet dispatch for SumOfKroneckers (#228) (b7855b6)

0.0.22 (2026-08-21)

Bug Fixes

  • ssm,quadrature: preserve input dtype under x64 (gh-219) (#221) (b29f4f8)
  • ssm: report a Lyapunov-consistent diffusion for ProductSDE (gh-219) (#222) (f38ffe7)

0.0.21 (2026-08-20)

Features

  • ssm: nonlinear Kalman filter/smoother and matrix-fraction discretisation (#216) (a28b86a)

Bug Fixes

  • inference: draw enkf_analysis perturbations with a PSD square root (#217) (2c27c35)

0.0.20 (2026-08-19)

Features

  • inference: enkf_analysis — perturbed-observation ensemble Kalman update (#214) (2328fa1)
  • quadrature,inference: cubature moment matching, SLR, and diagonal sites (#212) (3bc48cf)

0.0.19 (2026-08-18)

Features

  • ssm,distributions: per-channel observation mask and LGSSM densities (#210) (0dc3e3a)

0.0.18 (2026-06-10)

⚠ BREAKING CHANGES

  • core: SumOperator, ScaledOperator, and ProductOperator are factory functions returning lineax-native operators, no longer classes; isinstance checks against them will break. is_diagonal of a product of diagonal operators now correctly reports True.

Features

  • core: consolidate on lineax 0.1.1 and matfree 0.6 with expanded structured dispatch (#194) (c56d40e)
  • inference: ensemble DA primitives — localization, inflation, ETKF (#190) (b1aa7bc)

0.0.17 (2026-06-02)

Features

  • solvers: unified solver substrate — front door, preconditioners, capacitance, tridiagonal (#188) (e6633fb)

0.0.16 (2026-05-29)

Features

  • gp: add Matheron-rule posterior sample updates (#180) (2369222)
  • kernels: add EigenPro spectral preconditioning for kernel SGD (#182) (a66bab1)
  • linalg: add structured sandwich covariance transform (#177) (25392b4)
  • primitives: add root and inverse-root decomposition primitives (#181) (c6809ce)
  • ssm: add opt-in Woodbury innovation covariance (#178) (0b745df)
  • ssm: add square-root form for parallel Kalman filtering (#179) (3e7e1d4)

0.0.15 (2026-05-12)

Features

  • operators: add FFT-based Toeplitz sampling via circulant embedding (#172) (8dc8376)
  • operators: add matrix-free Lanczos sampling for SumKronecker (#174) (b39deb3)
  • operators: add structured KroneckerSum sqrt and sampling (#173) (3cdd9a0)
  • recipes: add Bessel-corrected ensemble covariances and Kalman gain (#175) (e0b3218)

0.0.14 (2026-05-03)

Bug Fixes

  • ssm: real parallel Kalman filter / RTS smoother via associative_scan (#166) (990b7d5)

0.0.13 (2026-05-03)

Features

  • add batched input support to kernel operators (#141) (165a6f6)
  • ssm: operator-typed Kalman family + time-varying generalisation (#162) (cdf898d)

0.0.12 (2026-05-02)

Features

  • route all linear algebra through dispatch infrastructure and expose solver parameter (#154) (400754a)
  • structural dispatch for eigh/submatrix/lyapunov; cleaner inverse + trace_product (#158) (98140fc)

0.0.11 (2026-05-02)

Features

Bug Fixes

  • address PR review comments (f4a9371)

0.0.10 (2026-04-08)

Features

  • add 6 features — infinite-horizon KF, collapsed ELBO, OILMM, Psi stats, emission model, grid interpolation (#96) (b2b1e1f)
  • add 6 standalone sugar/recipe features (#27, #32, #33, #34, #35, #69) (#93) (cb40d2a)

0.0.9 (2026-04-07)

Features

  • add 5 features — implicit op params, stable distances, batched matvec, gauss_kl, conditional (#50, #51, #73, #74, #86) (#89) (92b37cc)
  • add KernelOperator and ImplicitCrossKernelOperator (#46, #48) (#87) (64b03b4)
  • add MINRESSolver and Gaussian 3-parameterization conversions (#45, #75) (#91) (73a62b7)

0.0.8 (2026-04-07)

Features

0.0.7 (2026-03-31)

Features

  • add SSM expectation params and Joseph-form covariance update (#17) (45ffc4e)
  • recipes: add SSM expectation params and Joseph-form covariance update (45ffc4e)

0.0.6 (2026-03-31)

Features

  • add phases 12r, 15, 16, 17, 18.2-18.4 (#15) (be8d3a5)

0.0.5 (2026-03-31)

Features

  • add new operators, distributions, uncertainty propagation, and enriched docs (#13) (6aada55)
  • add structured operators, uncertainty propagation, and enriched docs (6aada55)

0.0.4 (2026-03-30)

Features

  • add NumPyro-compatible MultivariateNormal distributions (#11) (98248d7)
  • add v0.2–v0.4 layers (strategies, sugar, expfam, recipes, matfree backends) (#8) (a07d878)
  • distributions: add NumPyro-compatible MultivariateNormal distributions (98248d7)

0.0.3 (2026-03-30)

Features

  • add _testing.py utilities and deduplicate test helpers (#7) (de3e839)

Bug Fixes

  • point docs nav to .ipynb notebooks for rendered outputs (c4f16d3)
  • render .ipynb notebooks instead of .py in docs (#5) (066b28e)
  • stabilize sparse variational GP optimization (36f7910)

0.0.2 (2026-03-30)

Features

  • add BlockDiag, Kronecker, and LowRankUpdate operators (0ee2b64)
  • add DenseSolver and CGSolver strategies (91ccaed)
  • add JAX ecosystem dependencies and update project metadata (cae329c)
  • add Layer 0 primitives with structural dispatch (f91da41)
  • add structural tags and query helpers (2e6ebe3)
  • gaussx v0.0.1 — structured linear algebra foundations (0518464)
  • rename mypackage to gaussx (e70a1aa)
  • scaffold gaussx package and test directory layout (da4705e)
  • wire up gaussx public API exports (d2b39ec)

Bug Fixes

  • address operator review findings (d8a8b12)

Changelog

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

See Conventional Commits for commit guidelines.