Changes
- tests: Add an additional test for loop scheduling @EdCaunt (#2835)
- api: Extend side API to all derivative operator shortcuts @EdCaunt (#2811)
- Add separate images for CUDA 12 @JDBetteridge (#2785)
- misc: Miscellaneous corner cases fixes @mloubout (#2730)
- compiler: split alloc and init @mloubout (#2744)
API
- Tens stagg fix @mloubout (#2854)
- api: fix interpolate with complex dtype @mloubout (#2849)
- api: fix interp/eval of expressions @mloubout (#2843)
- compiler: add rudimentary support for multi-cond buffering @mloubout (#2838)
- api: fix evaluation with different time dims @mloubout (#2828)
- misc: Scrap _rcls on Reconstructable since it's unused @EdCaunt (#2821)
- api: fix staggered evaluation for add/mul @mloubout (#2782)
- Stagg param @mloubout (#2768)
- api: add interpolation order api for staggered/off grid evaluation @mloubout (#2754)
- api: Patch staggered FD for function on subdomain @mloubout (#2749)
- api: avoid double fill in initializer @mloubout (#2745)
- api: Fix SparseFunction distributor setup @mloubout (#2739)
- api: fix arg processing for conditon+factor @mloubout (#2736)
- dsl: Superstep @JDBetteridge (#2658)
- api: fix derivatives kw for tensors @mloubout (#2723)
- api: fix pickling of custom sparse functions with more than one dim @mloubout (#2725)
Examples
- dsl: Superstep @JDBetteridge (#2658)
- examples: Dispersion relation preserving notebook @JDBetteridge (#2595)
Documentation
- dsl: Superstep @JDBetteridge (#2658)
- examples: Dispersion relation preserving notebook @JDBetteridge (#2595)
Compiler
- compiler: add rudimentary support for multi-cond buffering @mloubout (#2838)
- compiler: Turn aliases' choose() into an instance method @FabioLuporini (#2839)
- compiler: Introduce heuristic for loop fission @FabioLuporini (#2837)
- compiler: fix buffering with multiple conditions @mloubout (#2826)
- Remove PGI compiler and add shared object versioning to nvcc @JDBetteridge (#2784)
- compiler: Improve alias scheduling @FabioLuporini (#2802)
- compiler: Add special types for device operations @FabioLuporini (#2794)
- compiler: Add cire-minmem optoption @FabioLuporini (#2792)
- compiler: Add Guards.pairwise_or @FabioLuporini (#2776)
- compiler: Enhance Dereference @FabioLuporini (#2762)
- compiler: Intify StencilDimension attributes @FabioLuporini (#2755)
- compiler: Enable late evaluation @FabioLuporini (#2752)
- compiler: Avoid premature expansion of avg just like derivs @FabioLuporini (#2750)
- compiler: Implement auto-simplification of GuardExpr @FabioLuporini (#2742)
- compiler: Enforce indexed weights as rightmost arg @FabioLuporini (#2738)
- compiler: Add GuardExpr utility class @FabioLuporini (#2734)
- compiler: Enhance Array codegen @FabioLuporini (#2728)
GPU
- compiler: Make nbytes available mapper aware of visible devices environment variables @EdCaunt (#2746)
Architectures and JIT
- arch: prevent erroring at init in isolation @mloubout (#2815)
- test: Enhance tests for interaction between deviceid and visible devices @EdCaunt (#2791)
- arch: support rocm7 @mloubout (#2766)
🐛 Bug Fixes
- compiler: prevent padding non inner-most dim @mloubout (#2855)
- compiler: Tweak break_for_parallelism @FabioLuporini (#2833)
- compiler: Avoid empty Clusters @FabioLuporini (#2820)
- compiler: Fixup AbstractSymbol._subs @FabioLuporini (#2810)
- compiler: Fixup SafeInv.is_commutative @FabioLuporini (#2809)
- misc: Un-cargo-cult switchenv @JDBetteridge (#2769)
- api: fix subdimension thickness type @mloubout (#2758)
- compiler: Make nbytes available mapper aware of visible devices environment variables @EdCaunt (#2746)
- api: patch empty size @mloubout (#2737)
- dsl: Fix SubDomainSet auxiliary dimension name to avoid clashes @EdCaunt (#2731)
- dsl: JDBetteridge/derivative hotfix @JDBetteridge (#2714)
- api: fix derivatives kw for tensors @mloubout (#2723)
- api: fix sparse positon match with -1 @mloubout (#2726)
- api: fix pickling of custom sparse functions with more than one dim @mloubout (#2725)
Continuous Integration
- misc: Fix spelling of yaml in release drafter @JDBetteridge (#2823)
- misc: Ruff @JDBetteridge (#2771)
- ci: remove explicit gcc version for mpi ci @mloubout (#2787)
Installation
- pip prod(deps): update cupy-cuda12x requirement from <13.6.1 to <14.0.1 @dependabot[bot] (#2851)
- deps: Add back support for numpy 1.26 @mloubout (#2848)
- pip prod(deps): update pooch requirement from <1.8.3 to <1.9.1 @dependabot[bot] (#2842)
- pip prod(deps): update dask-cuda requirement from <25.12.1 to <26.2.1 @dependabot[bot] (#2845)
- pip prod(deps): update fsspec requirement from <2026.1.1 to <2026.2.1 @dependabot[bot] (#2846)
- pip prod(deps): update pillow requirement from <12.1.1,>11 to >11,<12.1.2 @dependabot[bot] (#2847)
- pip prod(deps): update ipympl requirement from <0.9.9 to <0.10.1 @dependabot[bot] (#2829)
- pip prod(deps): update distributed requirement from <2026.1.2 to <2026.1.3 @dependabot[bot] (#2841)
- pip prod(deps): update packaging requirement from <25.1 to <26.1 @dependabot[bot] (#2830)
- pip prod(deps): update distributed requirement from <2025.12.1 to <2026.1.2 @dependabot[bot] (#2825)
- pip prod(deps): update pillow requirement from <12.0.1,>11 to >11,<12.1.1 @dependabot[bot] (#2816)
- pip prod(deps): update distributed requirement from <2025.11.1 to <2025.12.1 @dependabot[bot] (#2817)
- pip prod(deps): update fsspec requirement from <2025.12.1 to <2026.1.1 @dependabot[bot] (#2824)
- pip prod(deps): update dask-cuda requirement from <25.10.1 to <25.12.1 @dependabot[bot] (#2806)
- pip prod(deps): update matplotlib requirement from <3.10.8 to <3.10.9 @dependabot[bot] (#2804)
- pip prod(deps): update fsspec requirement from <2025.10.1 to <2025.12.1 @dependabot[bot] (#2800)
- pip prod(deps): update flake8-pyproject requirement from <1.2.4,>=1.2.3 to >=1.2.3,<1.2.5 @dependabot[bot] (#2798)
- pip prod(deps): bump pyrevolve from 2.2.6 to 2.2.7 @dependabot[bot] (#2796)
- gh(deps): bump actions/checkout from 5 to 6 @dependabot[bot] (#2795)
- pip prod(deps): update pytest requirement from <8.5,>=7.2 to >=7.2,<9.1 @dependabot[bot] (#2789)
- pip prod(deps): update distributed requirement from <2025.10.1 to <2025.11.1 @dependabot[bot] (#2786)
- pip prod(deps): update fsspec requirement from <2025.9.1 to <2025.10.1 @dependabot[bot] (#2781)
- pip prod(deps): update cloudpickle requirement from <3.1.2 to <3.1.3 @dependabot[bot] (#2783)
- docker: Update Dockerfile.cpu to support PETSc docker image @ZoeLeibowitz (#2778)
- docker: Add arm support (gcc and nvidia) @mloubout (#2773)
- pip prod(deps): update distributed requirement from <2025.9.2 to <2025.10.1 @dependabot[bot] (#2765)
- pip prod(deps): update pillow requirement from <11.3.1,>11 to >11,<12.0.1 @dependabot[bot] (#2767)
- pip prod(deps): update mpi4py requirement from <4.1.1 to <4.1.2 @dependabot[bot] (#2763)
- pip prod(deps): update ipympl requirement from <0.9.8 to <0.9.9 @dependabot[bot] (#2761)
- pip prod(deps): update dask-cuda requirement from <25.8.1 to <25.10.1 @dependabot[bot] (#2760)
- pip prod(deps): update matplotlib requirement from <3.10.7 to <3.10.8 @dependabot[bot] (#2759)
- deps: bump numpy supported ver @mloubout (#2757)
- gh(deps): bump peter-evans/repository-dispatch from 3 to 4 @dependabot[bot] (#2756)
- misc: Expose compute-sanitizer in Dockerfile.nvidia @FabioLuporini (#2741)
- pip prod(deps): update distributed requirement from <2025.9.1 to <2025.9.2 @dependabot[bot] (#2735)
- pip prod(deps): update distributed requirement from <2025.7.1 to <2025.9.1 @dependabot[bot] (#2733)
- pip prod(deps): update pytest-cov requirement from <6.2.2 to <7.0.1 @dependabot[bot] (#2732)
- gh(deps): bump actions/setup-python from 5 to 6 @dependabot[bot] (#2729)
- pip prod(deps): update fsspec requirement from <2025.7.1 to <2025.9.1 @dependabot[bot] (#2727)
Full Changelog: v4.8.20...v4.8.21