Skip to content

Conversation

@romanc
Copy link
Collaborator

@romanc romanc commented Jan 19, 2026

Release NDSL version 2026.01.00

Pre-release checklist

Things to do before the release. Helps to keep the fallout from this release as minimal as possible.

  • setup a draft PR in NOAA-GFDL/pace with updated submodules for NDSL, pyFV3, and pySHiELD.
    Don't merge yet - just let CI run and fix potential issues before the release. To be merged afterwards, see post-release checklist.
    Update NDSL to 2026.01.00 pace#175

Release checklist

What to do to actually release:

  • create this PR to merge changes from develop into main
    • merge as "Merge commit"
  • once merged, create a GitHub release and tag the new version
    • version format is [year].[month].[patch], e.g. 2025.10.00
    • let GitHub auto-generate release notes from the last tagged version
  • send an announcement on Mattermost

Post-release checklist

What to do after a release:

FlorianDeconinck and others added 27 commits November 28, 2025 16:05
…n a narrow config (#335)

* Update API to take in the full StencilFactory

* Fix import structure + pass proper config

* Dead code

* Fix API use in unit test
* Check for device residency in allocation and move to upload/download if needed
Make sure to download data before using the `xarray` getter
Loosen the `from_data_array` to read data that doesn't have a `units`

* Bad reference

* Swap check on `_as_xarray` accessor
* Add set_value on 2D floatfield
Add set_value on 2D bool masks

* Rename, expose newer name to API and deprecate

* Lint
* Introduce `LocalState` - a `State` containing only `Locals`
Add checks for forbidden hybrid `Quantity/Locals` states
Add many guardrails to force `LocalState` to fit `Local`s boudaries

* Minor message clean up for `NDSLRuntime`

* `Local` guardrails unit test + public API declaration

* Adding new `internal` package to collect advanced code not made for users

* Lint

* Fix key of StateElementType

* Document and verbose the usage of `LocalState.make_as_state`

* Forgotten warning stack level
…arenting and `RefineTransient` correct logic (#341)

* Re-parent properly the children when merging

* Forbid refining a transient if it used accross more than one loop (for a given cartesian axis)
* Fix the behavior of `make_as_state` by using a shadow method algo to remove the guardrails and swap all "local" to "quantity

* Utest
* Relax the `raise` in favor of a warnings when using boilerplate in a multi-rank situation
Add keyword override for orchestration mode

* Lint
* Orchestation: hook stree optimization on environment variable
- Verbose pass
- Small tweak to log

* Local: initialize to obviously wrong value + utest

* State: Allow `Quantity | None` has a type in `State`. Field will _still_ be initialized on `zeros` but will accept to be set to None

* Lint
* Xumpy: max, min, allocations and count_nonzero

* Better type hint

* Implement `cp` function only when needed

* Add `min_on_horizontal_place` and fix docstring

* Reinstate cupy is none workaround

* Lint
Modified the starting min/max index of column min/max functions to start_index instead of 0. This fixed a potential issue where arrays with absolute maximum/minium occuring before the target window (i.e. array had absolute maximum at index 2 but function was called to find the max in indexes [5:10]) would return the wrong value.

Also changed column min/max test to test for this possibility
`CopyCornersXY` was deprecated with NDSL release 2025.11.00 and is now
removed.

Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com>
* BREAKING CHANGE: required comm object for `ZarrMonitor`

* remove obsolete test

---------

Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com>
* refactor: update actions/checkout@v5 -> v6

This PR updates our GitHub workflows to use `actions/checkout@v6`
instead of the previous v5. Changes are minimal, but require a new
minimal GHA runner version, which forces the major version bump.

More info on the [release
page](https://github.com/actions/checkout/releases).

* refactor: update actions/setup-python@v5 -> v6

This commit updates GitHub workflows to use `actions/setup-python@v6`
instead of the previous v5. Breaking change is based on the fact that a
new minimal runner version is required.

More info on the [release
page](https://github.com/actions/setup-python/releases).

* refactor: update actions/cache@v4 -> v5

This commit updates our GitHub workflows to use `actions/cache@v5`
instead of the previous v4. Changes are minimal and boil down to a node
version update which forced a new minimal runner version number.

More info on the [release
page](https://github.com/actions/cache/releases).

---------

Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com>
…peline, optimize CPU transient residency (#348)

* Introduce `DaceExecutable` to collapse lib, arguments and hashed of arguments

* Rework STREE pipeline to apply to `dace:cpu_KJI` and `dace:GPU`
Apply `gpu` transformation by default on GPU backend
Do NOT use memory pool for CPU
Use `DaceExecutable` in orchestration

* Update ordering for refine transient

* Hash of DSL memory (Quantity, State)

* Linting new file

* Fix post-parsing save

* Verbose

* Fix missing refactored bits

* Escape hashing checks when an argument is not hashable

* Lint
* Bring in `dace:cpu_KJI`, automatic loop/layout match

* Add KJI merge test, we expected failures

* Regression on the merge tests
…non-interface field (#347)

* Add function to check that backend is "fortran aligned"

* Parametrize GridSizer and children to allow variation of the padding on non-interface field.

This will lead to an API break down the road, as we know require the backend to be given.

* Updating API to newly required backend in SubGridSizer

* Move non-pad check to `SubtileGridSizer`, leaving `GridSizer` clean

* Pass `backend` and fix state check

* Remove dead code
Some basic stencils were named with a `_defn` suffix. We don't think the
suffix is necessary and thus deprecate the version with a suffix and
schedule their removal for the next release.

The deprecation warning can't be in the stencil itself. The python
frontend of gt4py won't like this. I will thus warn from the stencil
factory (which is assumed to be used in one way or another).

Lastly, the PR updates `test_basic_operations.py` to use the boilerplate
module and avoid much of the setup by using `get_factories_single_tile`.

Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com>
* Introduce a passthrough `LibraryNode` labelling code.
Hook on _INTERNAL__SCHEDULE_TREE_OPTIMIZATION for safety

* Lint

* Wat

* Fix typing for expansion

* SDFG can be None in multi-rank compile

* Fix bad speling

* Typo in expansion class
The funciton has long been replaced by the zero-indexed
`get_tile_index()`.

Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com>
This small PR brings two cleanups

1. remove the optional grid in `state_from_inputs()`. The parameter
   isn't used. It looks like superseded by `self.grid`. I thus removed
   it for simplicity.
2. Change typing of "state" from `dict` to `Any`. The state is a
   dataclass, e.g. `DycoreState`. As far as I know, we don't have a base
   class for model states.

Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com>
Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com>
`QuanityFactory.from_backend(...)` was deprecated with NDSL release
`2025.11.00`. The function is superseded by the new constructor. See
#228 for context.

Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com>
* BREAKING CHANGE: `Quantity` & `QuantityMetadata` changes

Remove deprecation from `Quanity` and `QuantityMetadata`. This includes

- `gt4py_backend` is superseded by just `backend`
- the `backend` argument/member is required now
- data must be allocated by either numpy or cupy

* remove unused function

I've checked (GH search) the NOAA-GFDL org and nothing and nowhere else
in that organization is the (string) name of this function found.

* fixup: supply backend in parallel translate tests

* fixup: fix test (no need to test backend=None anymore)

---------

Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com>
* Types for non-depreated corner code

* code review

---------

Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com>
Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com>
Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com>
@romanc romanc marked this pull request as ready for review January 19, 2026 21:33
Copy link
Collaborator

@FlorianDeconinck FlorianDeconinck left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ready for show.

In the release notes, let's add:

  • dace:cpu_KJI backend with fortran friendly memory layout
  • Anything else ?

@romanc romanc merged commit 3d8fa05 into main Jan 20, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants