3.2.0
This release extends PSyclone’s transformation and code-generation capabilities, with new transformations (scalarisation, checksum, loop tiling, reductions) and improved support for OpenMP/OpenACC constructs (e.g. reduction, nowait, barriers, atomic types). PSy-layer code generation has been migrated to use the PSyIR backend. LFRic support has been enhanced with colour-tiling and refined halo-depth logic, and metadata handling has been extended (e.g. read-only arrays). The release also introduces keyword-based arguments for transformations, initial logging infrastructure, and updated documentation (user-, developer and reference guides have been merged) using the PyData theme. In addition, it includes numerous bug fixes, dependency cleanups, and test/CI improvements.
What's Changed
🌟 PSyclone Release Highlights
Transformations & Parallelisation
- New transformations: scalarisation, checksum, loop tiling (generalised with examples), array-rank increase and reductions.
- Extended OpenMP/OpenACC support:
reduction,nowait, barriers, atomic types, and improved async/wait handling. - Support for hoisting of allocatable arrays, and improvements to inlining.
Code Generation & Backend
- PSy-layer code is now generated using PSyIR lowering (replacing
gen_code/f2pygen). - Enhanced extraction transformations, including ASCII extraction.
- Configurable device intrinsics available.
- Improved handling of pure subroutines, polymorphic kernels, and array privatisation.
LFRic Support
- Added colour-tiling.
- Refined halo-depth logic for halo kernels.
- Extended metadata support (e.g. read-only arrays).
- Infrastructure updates and bug fixes.
Usability & Documentation
- Transformations can now use keyword arguments instead of
optionsdict. - Initial logging infrastructure.
- Documentation updated to PyData theme with reorganised sections (e.g. instrumentation).
Bug Fixes & Maintenance
- Numerous fixes for frontend parsing, array bounds, type resolution, and OpenMP lowering.
- Deprecated old Dynamo0p3 transformation names (in favour of LFRic...).
- Expanded test coverage and CI updates (support for new Python versions, streamlined checks).
- Dependency cleanup (removed
jsonschema).
New Contributors
- @hbrunie made their first contribution in #2828
- @mn416 made their first contribution in #3021
- @victoria-atkinson made their first contribution in #2972
Full Changelog: v3.1.0...v3.2.0