Follow us on YouTube. Support us through NumFOCUS.

GRASS 8.5.0 released

GRASS logo

Two years in the making

GRASS 8.5.0 is here. This feature release contains more than 2570 changes, the result of two years of focused work by the GRASS community. We deliberately postponed what would have been a 2025 release so that several interlocking pieces could land together: a new Python API, JSON output across dozens of tools, and a complete rewrite of the documentation. These changes are more useful together than they would have been in sequence, and they took time to do well.

This is also the first release under our refreshed branding, aligned with OSGeo’s branding. The project has readopted its original name, GRASS, with a new logo and visual identity.

A step change for Python users

PRISMA SWIR-geology composite generated with the new i.hyper.import addon tool

The biggest story in 8.5.0 is how much better GRASS feels from Python. Three changes, each substantial on their own, combine to transform the experience.

A new Python API. The grass.tools subpackage presents GRASS tools as native Python functions, with direct NumPy array and raster pack I/O, smart return values, and proper exception handling. It was developed by Václav Petráš and Anna Petrášová in collaboration with Natrx, a company focused on coastal infrastructure. This is a good example of how commercial applications of GRASS can produce improvements that benefit the entire open-source community.

JSON output, nearly everywhere. Dozens of tools now support format="json", including g.list, g.region, r.info, r.univar, r.stats, r.report, v.info, v.what, v.db.connect, and many more. The effort was led and reviewed by Anna Petrášová, Václav Petráš, Corey White, Edouard Choinière, Nicklas Larsson, and Markus Metz, with major contributions from Google Summer of Code participants Nishant Bansal and Kriti Birda, and others. Parsing GRASS output in Python used to mean string manipulation or custom wrappers. Now it is a single call to json.loads, or nothing at all, since grass.tools handles it internally.

v.overlay page in the new GRASS 8.5 documentation, showing tabs for Command line, Python (grass.tools), and Python (grass.script) usage with the Python (grass.tools) tab selected

New documentation. The entire user documentation has been rewritten in Markdown and rendered with MkDocs. Every tool’s manual page now shows tabs for Command line, Python (grass.tools), and Python (grass.script) usage: the same example, three ways. The work was done by Martin Landa, Markus Neteler, Corey White, Václav Petráš, Anna Petrášová, and a long list of contributors.

The net effect: someone coming to GRASS from the Python data-science ecosystem can now find a tool in the docs, copy a working Python snippet, call it as a function, and read the result as a structured object. Workflows that previously required a wrapper module or careful string parsing now compose with the rest of a Python script the way any other library does.

More highlights

Animated DEM with contour lines, alternating between the original hillside and the same hillside after a road is graded across it with cut-and-fill earthworks using r.earthworks

Parallelization. r.mapcalc is now parallelized, which benefits the many tools built on top of it. r.texture, r.horizon in raster mode, and v.surf.rst cross-validation gained OpenMP support. The nprocs parameter has been extended to r.blend, r.grow, r.mapcalc.simple, and i.image.mosaic, letting these tools leverage the underlying parallelized algorithms. OpenMP-enabled tools now default to using all available cores.

Multiple masks per mapset. Masks are now driven internally by the GRASS_MASK environment variable, making it possible to use different masks concurrently in the same mapset. The change required modifications to the GRASS C libraries and unlocks cleaner parallel workflows. New RegionManager and MaskManager context managers in grass.script make scoped region and mask changes straightforward.

Expanded grass.jupyter. A query button and drawing of simple geometries in InteractiveMap, interactive computational region updates, parallelization in TimeSeriesMap and SeriesMap, and a save() method for Map3D are now part of the package.

GUI improvements. Projects can be added directly in the Data Catalog, column statistics can be computed on SQL-filtered or interactively selected rows in the attribute table manager, the Python editor is now dockable, the command history panel supports copying commands, and the Graphical Modeler variable syntax has changed from %variable to %{variable}. Major GUI work came from Martin Landa, Tomáš Zigo, Ondřej Pešek, Anna Petrášová, Linda Karlovská, and others.

3D shaded-relief view of a valley reservoir whose water surface has been flattened in the DEM with r.hydroflatten

New tools: r.smooth.edgepreserve for edge-preserving raster smoothing and r.mask.status to report presence of 2D raster mask. New addon tools: i.hyper, i.sam2, r.buildvrt.gdal, r.colors.qml, r.colors.toqml, r.curvenumber, r.earthworks, r.gravity.terrain, r.hand, r.hydrobasin, r.hydroflatten, r.in.vect, r.lfp, r.manning, r.maxent.setup, r.runoff, r.slopeunits, r.stone, r.timeofconcentration, r.windfetch, t.stac, and v.surf.rst.cv.

Full CMake support. Alongside the existing Autotools build, GRASS and its addons can now be built with CMake. This is the result of a multi-year effort led by Huidae Cho and Nicklas Larsson with several collaborators, building on initial work by Rashad Kanavath.

MSVC build support. GRASS can now be built on Windows with the Microsoft Visual C++ compiler. This work was led by Huidae Cho, also building on initial work by Rashad Kanavath.

Security and updated requirements. More than 500 security issues reported by Coverity Scan have been fixed. GRASS now requires GDAL 3.7+, PROJ 9.0+, C++17, Autoconf 2.72, Python 3.10+, and the CBLAS and LAPACKE C interfaces for BLAS and LAPACK.

The full list of changes is available in the detailed announcement on GitHub.

Many hands

Group of GRASS contributors on the stairs of Talley Student Center at the 2025 Developer Summit in Raleigh, NC

A release of this scale doesn’t come from any one person or team. Across the two-year development cycle, over 70 people contributed commits to the main repository. Over thirty first-time contributors are acknowledged in the release notes alone.

The top code contributors across the release, by commit count, were Edouard Choinière, Shubham Desai, Václav Petráš, Nicklas Larsson, Arohan Ajit, Anna Petrášová, Nishant Bansal, Markus Neteler, Ondřej Pešek, and Corey White. The top reviewers were Edouard Choinière, Anna Petrášová, Nicklas Larsson, Václav Petráš, and Stefan Blumentrath. Release management for 8.5.0 was led by Markus Neteler.

If this release feels like more than the sum of its parts, it’s because the community coordinated deliberately to make it so. Two years of work is what made it possible for the Python API, the JSON outputs, and the rewritten documentation to reinforce each other rather than arrive one at a time, along with hundreds of smaller improvements across the GUI, parallelization, security, and build systems.

Translations continue in Weblate, which automatically opens pull requests with translated chunks. Thank you to the translators in every language for your ongoing contributions.

Support the project

This release was supported in part by the U.S. National Science Foundation (awards #2303651 led by NC State University and #2322073 led by Natrx), along with contributions from Bohannan Huston, Inc., mundialis, OpenPlains Inc., and individual donors. Yet many people contribute to GRASS without any dedicated financial support.

The project is now a NumFOCUS Fiscally Sponsored Project, alongside our long-standing status as an OSGeo Project. This provides a stable path for financial contributions to the project.

If you would like to help sustain this work, you can donate to GRASS through NumFOCUS or learn more on our sponsoring page. Financial support is what makes multi-year coordinated work like this release possible, and what will make the next one quicker.

Software download

Two GRASS contributors collaborating over a laptop at the 2024 Community Meeting in Prague

Packages and installers

Packaging for these platforms is underway.

Source code and extras

More about GRASS

Congratulations everyone on an exceptional release.


This post was prepared by Václav Petráš on behalf of the GRASS community. The release itself is the work of a broad community of contributors, many of them acknowledged above, and many more visible on GitHub and other places.