github OSGeo/grass 8.5.0RC1
GRASS 8.5.0RC1

latest release: 8.5.0
pre-releaseone month ago

The GRASS 8.5.0RC1 release provides more than 2515 improvements and fixes with respect to the release 8.4.2. The release includes the refreshed branding from "GRASS GIS" to "GRASS" and a new logo.

image

Highlights

  • New grass.tools Python API to call GRASS tools as Python functions, with direct NumPy array and raster pack I/O
  • Completely new documentation rewritten in Markdown and rendered with MkDocs
  • Parallelization added to r.mapcalc, r.texture, r.horizon (raster mode), and v.surf.rst cross-validation, with the nprocs parameter extended to r.blend, r.grow, r.mapcalc.simple, and i.image.mosaic
  • Added JSON output across dozens of tools (g.list, g.region, r.info, r.univar, r.stats, r.report, v.info, v.what, v.db.connect, and many more)
  • New r.smooth.edgepreserve tool for edge-preserving raster smoothing
  • v.class and d.vect.thematic: "discontinuities" algorithm fixed and reenabled
  • Expanded grass.jupyter: query button and drawing of simple geometries in InteractiveMap, interactive computational region updates, parallelization in TimeSeriesMap and SeriesMap, and a save() method for Map3D
  • Multiple masks per mapset, driven internally via the GRASS_MASK environment variable, with a new r.mask.status tool for reporting mask state, respected by r.mask
  • RegionManager and MaskManager context managers in grass.script for scoped region and mask changes
  • 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 changed from %variable to %{variable}
  • Conda package now available as an installation option
  • CMake support for building GRASS and addons, alongside the existing Autotools build, including native Windows builds with the MSVC compiler
  • Fixed more than 500 security issues reported by Coverity Scan
  • Updated requirements: GDAL 3.7+, PROJ 9.0+, C++17, Autoconf 2.72, Python 3.10+, and the CBLAS and LAPACKE C interface for BLAS and LAPACK

New Addon Tools

  • i.hyper (toolset): Hyperspectral data processing — import, preprocessing, visualization, and export
  • i.sam2: Image segmentation using SAMGeo with text prompts
  • r.buildvrt.gdal: Build GDAL Virtual Rasters (VRT) over GRASS raster maps
  • r.colors.qml: Apply the style (color, category) from a QML file
  • r.colors.toqml: Export GRASS raster colors and category labels to a QGIS .qml style file
  • r.curvenumber: SCS curve number lookup from land cover, hydrologic soil group, hydrologic condition, and antecedent runoff
  • r.earthworks: Terrain modeling with cut and fill operations
  • r.gravity.terrain: Calculate gravity terrain corrections
  • r.hand: Height Above Nearest Drainage (HAND) analysis and flood inundation mapping
  • r.hydrobasin: Delineate large numbers of watersheds with a memory-efficient OpenMP parallel algorithm
  • r.in.vect: Import an external vector layer as a raster layer
  • r.lfp: Compute longest flow paths with a memory-efficient OpenMP parallel algorithm
  • r.manning: Convert a land cover raster to a Manning's roughness coefficient raster
  • r.maxent.setup: Install Maxent into the addon directory (helper for r.maxent.predict and r.maxent.train)
  • r.runoff: Compute runoff depth, volume, and peak discharge using the SCS Curve Number method
  • r.slopeunits (toolset): Create, clean, and calculate metrics for slope units
  • r.stone: Stone rockfall analysis tool
  • r.timeofconcentration: Compute time of concentration using the Kirpich equation
  • r.windfetch: Compute wind fetch, the length of water over which wind blows without obstruction
  • t.stac (toolset): Explore and ingest SpatioTemporal Asset Catalogs (STAC)
  • v.surf.rst.cv: Cross-validation to optimize v.surf.rst tension and smoothing parameters

Monthly Financial Supporters

OpenPlains Inc., Luis Bojórquez, Mark Pearson

New: To contribute to GRASS financially, use NumFOCUS.

What's Changed

Tools

Note that while we tried to represent all the changes here, with the number of changes, some need to be hidden and starting from this point, GitHub interface requires us to have a mixture of PR links and numbers. Besides GitHub's commit comparison link, you can also view the full changelog attached to the release.

Show more

Graphical User Interface

Show more

Python

Show more

Documentation and Messages

Show more

Libraries and General Functionality

Show more

Startup, Initialization, and Environment

Translations, Internationalization, and Localization

  • Replace strings constructed by parts with complete strings by @echoix in #5938
  • fix translations and duplicate messsages in po files by @neteler in #4722 #4859
  • Use context manager for opening files in locale/grass_po_stats by @echoix in #6192
  • Multiple translations update from OSGeo Weblate by @osgeoweblate

Windows

macOS

Packaging, Configuration, Portability, and Compilation

CMake support is based on original work by Rashad Kanavath in 2020 (#289), following up with substantial contributions by Huidae Cho, Nicklas Larsson, Markus Neteler, Loïc Bartoletti, Aaron Saw, Mahesh Maddineni, Kandel Nelson, Edouard Choinière, Corey White and Matthias Kuhn. See Changelog for details.

  • Add colortables and other files to addon doc by @wenzeslaus in #5316
  • Allow separate build of Markdown and HTML keywords by @wenzeslaus in #5177
  • Fix %lu *printf format string to %zu for size_t by @HuidaeCho in #5799
  • Fix basic gallery build issues for Markdown by @wenzeslaus in #5247
  • Remove BLAS and LAPACK from config by @wenzeslaus in #5101
  • Replace Python glob1 by glob in doc build code by @wenzeslaus in #6472
  • Skip updating non-existing fontcap on install when cross-compiling by @HuidaeCho in #6896
  • correctly report detected LFS state at the end of configure run by @marisn in #6537
  • define more typical HAVE_PTHREAD if pthreads library can be used by @marisn in #6479
  • fix g.extension test by @petrasovaa in #5102
  • move config.h.in customizations to configure.ac by @marisn in #6509
  • refactor grass.py in preparation for FHS by @nilason in #5933
Show more
  • Updated .gitignore paths to ignore python environments and vscode settings by @cwhite911 in #5081
  • Fix file existence checks for cross-compilation by @HuidaeCho in #6895
  • build external libraries first by @nilason in #4671
  • drop support for PROJ's old proj_api.h API by @nilason in #6693
  • fix default variable name for blas and lapack by @nilason in #4343
  • fix detection of AGL framework for macOS by @nilason in #6588
  • remove HAVE_PROJ_H macro by @nilason in #6714
  • require GDAL version 3.7+ by @nilason in #6671
  • update to and require use of autoconf 2.72 by @nilason in #6533
  • update to latest config.guess and config.sub by @echoix in #4161
  • date DB.make for markdown support by @landam in #4742
  • pass GDAL include dirs to proj by @parona-source in #6631
  • Add Nix files for creating development environment and the package by @imincik in #3889 #5671 #4540 #4196 #5672 #4017 #5550 #3924
  • Update Vagrantfile to Ubuntu 24.04 by @landam in #3836
  • Update min Python version to 3.10 by @wenzeslaus in #6477
  • add macOS app bundle creation script by @nilason in #4946
  • build Windows with libopenblas by @nilason in #4716
  • rename macos/app dir to macos/files by @nilason in #4936 #4935

Docker

  • Add liblapacke-dev package to Ubuntu builds by @echoix in #4371
  • Address build warnings in Ubuntu Dockerfile by @ninsbl in #4090
  • Change Debian base image to 12.5-slim by @echoix in #6373
  • Do not ignore certain git folder for docker build by @mmacata in #4827
  • Downgrade PDAL to 2.7.1 in ubuntu_wxgui by @echoix in #3946
  • Enable cache for Docker builds by @echoix in #3821
  • Fix git clone path in Dockerfile for gdal-grass by @echoix in #5111
  • Fixing CFLAG for configuration on Apple ARM M1/2/3 by @pwt-cd in #5055
  • Remove scikit-learn from Alpine test by @wenzeslaus in #6394
  • Remove unused demolocation test by @wenzeslaus in #6395
  • Revert failing cleaning steps in Ubuntu Dockerfile by @echoix in #3830
  • Sort package lists and configure options in Dockerfiles by @echoix in #4373
  • Update Ubuntu to 24.04 by @ninsbl in #6410
  • Use debian:bookworm-slim image, with date suffix instead of debian:stable by @echoix in #3807
  • Use only native Python API, set only necessary variables by @neteler in #3819 #3822
  • add package to docker image to be able to run gui by @benaloha in #5476
  • build GUI from ubuntu using build-args by @ninsbl in #6800
  • build gdal-grass by @nilason in #5106 #5115 #5117 #5108
  • compile core Ubuntu 24.04 dependencies from source by @ninsbl in #6481
  • copy module_items.xml for g.search.modules by @ninsbl in #6578
  • define GISBASE for Alpine by @landam and @nilason in #4130 #5137
  • fix missing libraries in ubuntu wxgui Dockerfile by @neteler in #4268
  • fix various syntax warnings by @neteler in #5481
  • re-structure build stages for Ubuntu with and without GUI to optimize caching by @ninsbl in #6534

Contributing and Management

  • AI usage policy by @petrasovaa in #6941
  • Improve release procedure and increase automation by @wenzeslaus in #3829 #3837 #3795 #3823 #3883 #2963 #3824 #3891 #3876
  • Optimize text in release procedure by @neteler in #3882
  • add more gitignores and remove accidentally added DS_Store by @petrasovaa in #4995
  • update style guide by @petrasovaa in #3790 #3875 #4312 #4207 #5219

New Contributors

Full Changelog: 8.4.2...8.5.0RC1

Binder

Don't miss a new grass release

NewReleases is sending notifications on new releases.