v3.9 (22 Apr 2024)#

This document explains the changes made to Iris for this release (View all changes.)

v3.9 Release Highlights

This is a small release to make two important changes available as soon as possible:

  • The iris.experimental.geovista module.

  • Removal of fill value collision warnings in NetCDF saving, which significantly improves Iris’ performance when parallel processing.

See below for more detail on these changes.

And finally, get in touch with us on GitHub if you have any issues or feature requests for improving Iris. Enjoy!

📢 Announcements#

  1. ⏱️ Performance benchmarking has shown that loading Fields File (FF) Format with a large number of fields via iris.fileformats.um.structured_um_loading() has become ~30% slower since Dask version 2024.2.1.

✨ Features#

  1. @HGWright and @trexfeathers added the iris.experimental.geovista module, providing conveniences for using GeoVista with Iris. To see some of this in action, check out Working with Mesh Data. Note that GeoVista is an optional dependency so you will need to explicitly install it into your environment. (PR #5740)

🐛 Bugs Fixed#

  1. @pp-mo prevented the CHUNK_CONTROL feature from hitting an error when loading from a NetCDF v3 file. (PR #5897)

💣 Incompatible Changes#

  1. Warnings are no longer produced for fill value ‘collisions’ in NetCDF saving. Read more. (PR #5833)

🚀 Performance Enhancements#

  1. @bouweandela made iris.util.rolling_window() work with lazy arrays. (PR #5775)

  2. @stephenworsley fixed a potential memory leak for Iris uses of dask.array.map_blocks(); known specifically to be a problem in the iris.analysis.AreaWeighted regridder. (PR #5767)

  3. @fnattino and @pp-mo prevented cube printout from showing the values of lazy scalar coordinates, since this can involve a lengthy computation that must be re-computed each time. (PR #5896)

🔥 Deprecations#

  1. N/A

🔗 Dependencies#

  1. @bjlittle dropped support for py39 and adopted support for py312 as per the NEP-29 schedule. (PR #5894)

📚 Documentation#

  1. N/A

💼 Internal#

  1. @trexfeathers setup automatic benchmarking on pull requests that modify files likely to affect performance or performance testing. Such pull requests are also labelled using the Pull Request Labeler Github action to increase visibility. (PR #5763, PR #5776)

  2. @tkknight updated codebase to comply with a new enforced rule NPY002 for ruff. (PR #5786)

  3. @tkknight enabled numpydoc validation via the pre-commit hook. The docstrings have been updated to comply and some rules have been ignored for now. (PR #5762)

  4. @jfrost-mo enabled colour output for pytest on GitHub Actions. (PR #5895)