A short summary of changes: New features in GRASS 7.8


Stable Release

Release Candidate 1 (RC1)

Git Source Code

  • Milestone: 7.8.0
  • Release branch created on 4 Aug 2019 (GH d4879d4)
  • Git clone of latest 7.8 release branch (including yet unpublished bugfixes):
      git clone
      cd grass
      git checkout releasebranch_7_8

Overview of changes

The most important change is the new Python-3 support. Also new PROJ 5 and GDAL 2.5 with substantial changes in the API and CRS handling are supported. A series of new features and stability fixes, manual improvements, and a more language translations have been added. Importantly, the new version is backward compatible with older 7.x releases.

Breaking news: Python 3 compatibility

The GRASS GIS 7.8.0 release provides more than 730 fixes and improvements with respect to the stable release 7.6.x.

New modules

Major module changes

(see also below for closed bugs)

Minor module changes

(see also below for closed bugs)

Start script:

  • G78:grass7: stop clearing the terminal upon closing; shorten GRASS prompt; do not require dev pkg to be installed for path grass --config path as well as version and svn_revision. Note that revision is currently broken due to Subversion to Git migration.
  • G78:grass7: added --config svn_revision
  • G78:grass7: add powershell shell support
  • G78:grass7: browser = xdg-open as fallback; no browser message spam in batch jobs
  • G78:grass7: clean up sqlite DB if existing upon session closing


  • G78:d.barscale: font support added (PR #72)
  • G78:d.northarrow: font, path and charset parameters added
  • G78:g.extension: enforce change to python3 during installation of Addon
  • G78:g.extension: fix bitbucket download, assumes master branch; fixed incomplete updating addon metadata file
  • G78:g.extension: update base_url to current winGRASS server layout (PR #68)
  • G78:g.parser: added --json output, useful for REST API
  • G78:g.proj: error handling with PROJ 6 added
  • G78:g.proj: list_codes to list codes for given authority, compatible with PROJ 4, 5, 6
  • G78:g.proj: need GRASS_PROJSHARE to list codes with PROJ 4
  • G78:i.atcorr: Worldview4 filter functions added
  • G78:i.gensig: skip NULL cells when calculating variance
  • Allow listing group and subgroup contents also for groups from other mapsets
  • G78:i.pansharpen: added new channel stretch option; fixed rare possible bug in histogram matching algorithm and made all output maps integer CELL maps
  • G78:i.segment: avoid integer overflow with extremely large regions
  • G78:i.tasscap: add support for Sentinel-2
  • NDWI index added (Normalized Difference Water Index)
  • G78:m.nviz.script: fix memory leaks,fix compiler warnings + coverity scan
  • G78:r3.out.vtk: improved error message when output cannot be written
  • G78:r.compress: print which compression method is actually applied
  • G78:r.contour: fix broken contour lines; clean contour lines tracing back on themselves
  • G78:r.fillnulls: added memory parameter for internal r.resamp.bspline call (speed-up); do not fail hard if input map has no holes
  • G78:r.horizon: check if coordinates are within the current region
  • G78:r.import: remove hardcoded memory limit ( will take care); try to avoid failure after v.proj (see PR #24)
  • -s: always report total number of cells
  • add proxy for GDAL driver; catch incorrect WMS url input; new -b flag to keep original bands
  • fix segfault in
  • G78:r.out.mpeg: fix fail because the output file name is empty
  • G78:r.plane: added function float_or_dms
  • G78:r.random.cells: use G_drand48()
  • G78:r.random.surface: use G_drand48()
  • G78:r.slope.aspect: fix window alignment to input raster
  • G78:r.sun: fix error when using both lat and lon raster
  • G78:r.thin: avoid integer overflow
  • G78:r.univar: report stats with nan if a given zone has only NULL values
  • G78:r.walk: add option nearest from r.cost
  • G78:r.watershed: multiple flow direction output
  • G78:v.buffer: added test for zero distance
  • G78:v.distance: improve iterative search; speed improvement for small dmax
  • G78:v.external: enable GRASS-internal PostGIS driver again
  • G78:v.generalize: preserve boundary categories
  • read as UTF8
  • disable unreliable OGR extents for spatial filter
  • set spatial filter to correct geometry field if geom option is given
  • G78:v.mkgrid: new -d flag to add diagonals to rectangular lines
  • G78:v.out.postgis: document a bug, output option is ignored for attributes
  • G78:v.rast.stats: add where option
  • Add -d flag for geometries with no database records
  • added -c flag to avoid column names in output
  • new option use=start/end
  • do not create raster categories if vector categories are used as cell values because 1. Rast_set_cat() is terribly slow for many categories, 2. this information is redundant (1: 1 etc is not informative)
  • G78:v.voronoi: fix for area skeletons and voronoi diagrams for areas. Numerical stability of v.voronoi has been improved but is not perfect.

Improvements in the Graphical User Interface

  • wxGUI data catalog: allow to perform actions on multiple layers (e.g. deleting, moving, reprojection, display, metadata)
  • wxGUI/animation: fixes for Python 3
  • wxGUI/digitizer: fixes for Python 3
  • wxGUI/modeller: fixes for Python 3
  • wxGUI: add function to LM interface to programmatically change layer
  • wxGUI: add GeoPackage as known raster/vector format
  • wxGUI: fix setting non-ascii display name
  • wxGUI/psmap: wxPython 4 compatibility
  • wxGUI: use g.proj list_codes=EPSG to read EPSG codes

Python scripting

Python 2 end-of-life:

GRASS GIS has been updated to Python 3:

  • all python scripts: change Python shebang to python3 (PR #75, #82)
  • pygrass: fixing doctests (only for Python 3)
  • pygrass.gis: make region importable from grass.pygrass.gis
  • pythonlib: fix encoding

Projection support

  • libproj: code clean-up; PROJ5: EPSG must lowercase epsg, PROJ6+: EPSG must uppercase EPSG

Database support

  • postgresql driver: create index if not exists for PG server versions 9.5+

Library changes

  • configure, configure with ZSTD by default, can be disabled with --with-zstd=no
  • ctypes: delete lib/python/ctypes/ctypesgencore/parser/ (#95)- since is auto-generated
  • libpython: float_or_dms accept E,W,N,S
  • libraster: add support for GDAL 2.4 on MS Windows
  • libraster: fsync data files before closing, and capture any errors; sync_and_close() null file; no fsync check for corrupt raster data on Windows
  • libsegment: fix for all-in-memory cache
  • libvector: support reserved PostgreSQL keywords as column name by quoting when exporting vector map to PostGIS database; Vect_cidx_find_all() should not allow mixing GV_AREA with other geometries
  • parser: added --json output, useful for REST API output (needed e.g. for actinia)
  • Vlib: adjust dynamic floating point representation error for squared distances
  • Vlib: fix fp error in Vect_segment_intersection()

Unit tests / CI

  • testsuite/examples/ major cleanup
  • various modules: test added and respective testsuites cleaned up
  • Travis-CI: enable ccache for faster builds
  • Codecov: Attempt to add Codecov support for automated source code quality checks (

User Manuals - Documentation

  • various manual pages: examples added/updated


  • Python-3 support implemented across the tree

Docker support

Message Translations

New Addons since GRASS 7.6.0

Closed tickets

Closed bugs since the last release

Run GRASS with Python3
G_progress() does not support GRASS_MESSAGE_FORMAT=gui
GRASS_BATCH_JOB does not tolerate path with spaces
postgis topology: missing relations
GRASS python library is not working with python 3
g.extension does not work with bitbucket repo
Call to deprecated item in wxGUI
Suspicious use and cleanup of the mapset tempoary directory
python3/ctypes: ctypes.ArgumentError: argument 2: <type 'exceptions.TypeError'>: expected LP_struct_Cell_head instance instead of LP_struct_Cell_head
winGRASS7.7.svn: displaying raster causes: TypeError: environment can only contain strings
Cartographic composer: OK, pointer and pan buttons do not work
pygrass open vector fails in python3
wxGUI: Save to file in 3D mode fails with Unicode error
wxGUI: UnicodeEncodeError when querying vector map
g.gui.rlisetup: cannot create the configuration file
g.gui.tplot does not open
t.rast.algebra: Error wrong type of input
ctypes compilation error with Python-3.7
temporal modules fail with python 3
winGRASS7.7.svn - - python 3 issues
all temporal modules produce WARNING:root:Needed to restart the libgis server
t.rast.aggregate fails with python3
winGRASS7.7.svn python3 build issues
winGRASS 7.7svn execute command fails
Location wizard on python 3 seems to be broken
lib/python/ctypes/ctypesgencore/parser/ changes after compilation.
Quouting of strings with white space in breaks tests for temporal modules
g.gui.animation: TypeError: 'zip' object is not subscriptable
g.gui.tplot and g.gui.timeline: AttributeError: 'itertools.cycle' object has no attribute 'next'
error when saving workspace in python 3
Python3: range vs xrange
vector digitizer crashes with python 3
r.horizon suffix gets messed up in multi-direction mode
Python 3: gunittest crashes
grass77: g.proj compilation fails with proj 5.2.0
g.extension: Import requests for python3, too
Export vector map (table with column name, which is reserved PostgreSQL keyword) into the PostGIS database
"Next" button inactive in EPSG selection page of Location wizard
v.buffer: segfault in LL
Fix tests stalling with Python 3
OSGeo4W winGRASS77svn - startup error: TypeError: endswith first arg must be bytes or a tuple of bytes, not str
winGRASS master (git) - g.proj not found at startup
winGRASS Version: - wrong german Umlaut in wxGUI
g.gui.animation fails to export animation with python3 error
d.mon errors when closing
g.gui.gmodeler: loading of modeller file broken with TypeError

Closed wishes since the last release

#3491 cannot read from other mapsets
graphical modeler: export UI definitions into Python script
prepare OSGeo4W environment for winGRASS 7.8 with python 3
Make python version configurable on compilation time
t.rast.series: allow multiple methods/output
Use unique names on test modules
Make Region importable from pygrass.gis
Do we need to clear the screen when entering/exiting GRASS?

Last modified 2 years ago Last modified on Dec 6, 2021, 2:19:18 PM
Note: See TracWiki for help on using the wiki.