Skip to content

GRASS GIS 8.4.0RC1

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 18 Jun 13:35
· 704 commits to main since this release

The GRASS GIS 8.4.0RC1 release provides more than 515 improvements and fixes with respect to the release 8.3.2.

Highlights

  • location becomes project: The Python API, command line, and graphical user interface are now using project instead of location for the main component of the data hiearchy while maintaining backward compatibility.
  • v.fill.holes: New tool to remove inner isles and to keep outer boundary only
  • i.svm: New support vector machine image classification (SVM)
  • r.horizon: Output for multiple points, distances, and many other improvements
  • r.univar: Parallelization computation extended statistics
  • JSON output format support (format="json") in multiple tools (e.g., r.report, r.info, v.db.select, t.rast.list, etc.)
  • New grass.jupyter.SeriesMap class for animating series of vectors or rasters
  • ipyleaflet integration for grass.jupyter to create a map in ipyleaflet and add GRASS data in a single line
  • Greatly simplified the creation of new projects in Python (no more chicken and egg problems) - also in Jupyter notebooks
  • GUI: New easy command history navigation through the History browser panel browser panel (details)
  • GUI: Further improvements of new single-window GUI with undockable map display window, for a smoother user experience
  • New GRASS GIS Programming Style Guide

New Addon Tools

  • i.eodag: Downloads imagery datasets from various providers through the EODAG API.
  • r.flowaccumulation: Calculates flow accumulation from a flow direction raster map using the Memory-Efficient Flow Accumulation (MEFA) parallel algorithm by Cho (2023).
  • r.fusion: image fusion, generalized pan-sharpening.
  • r.windfetch: addon for computing wind fetch.
  • r.maxent.train & r.maxent.predict: train, and predict a Maxent model to create a suitability distribution layer.

Monthly Financial Supporters

OpenPlains Inc., Luis Bojórquez

What's Changed

Tools

  • d.legend.vect: Initialize title size by @wenzeslaus in #3095
  • d.mon: Delegate rendering to wx monitors by @HuidaeCho in #3500
  • d.rast.arrow: Support Terraflow directions by @HuidaeCho in #2987
  • d.rast.num: Constrain rendering within the current display extent in the wx monitor by @HuidaeCho in #3489
  • d.redraw: Rewritten in C by @HuidaeCho in #3727
  • d.vect.thematic: Do not show decimal places for ints by @wenzeslaus in #3096
  • d.vect: label vertical alignment workaround by @marisn in #2857
  • db.connect: update GRASS version defaults in docs by @pesekon2 in #3385
  • db.dropcolumn: Circumvent length limit for sqlite3 SQL STDIN string by @mmacata in #3273
  • db.execute: fix duplicated word in in docs by @pesekon2 in #3370
  • g.extension: fix installing addons on the OS MS Windows by @tmszi in #3166
  • g.extension: fix registration addon with module name start with 2 chars db., ps., r3., wx. by @tmszi in #3168
  • g.extension: if copied files exists do not print warning message by @tmszi in #3053
  • g.extension: sparse checkout with history for fast commit log access by @ninsbl in #3051
  • g.gui.example: fix broken module by @pesekon2 in #3233
  • g.gui.gmodeler: fix relationship with history pane by @pesekon2 in #3337
  • g.mapsets: Add JSON output by @cwhite911 in #2542
  • g.mapsets: add missing declared or defined argument type by @nilason in #3599
  • g.message: Do not require full gisinit by @wenzeslaus in #3686
  • g.mkfontcap: Replace -o with --overwrite; Add a renamed flag warning by @HuidaeCho in #3649
  • g.proj: fix wkt output on Windows by @petrasovaa in #3306
  • g.proj: rename location parameter to project by @petrasovaa in #3573
  • g.region: Fix the flat flag by @HuidaeCho in #3216
  • g.setproj: fix uninitialized variable issues in get_stp.c by @ShubhamDesai in #3777
  • i.albedo: Fix out of bounds access for albedo histogram by @ymdatta in #3247
Show more
  • i.atcorr: add AVIRIS support by @YannChemin in #3229
  • i.atcorr: add atmospheric correction support for Hyperion hyperspectral imagery (VNIR and SWIR parts) by @YannChemin in #3272
  • i.evapo.time: Add example image to manual by @YannChemin in #3281
  • i.ortho.target: Rename location and mapset options to target by @wenzeslaus in #3131
  • i.pca: added tests for the module by @HamedElgizery in #3550
  • i.signatures: Add imagery classifier signature management module by @marisn in #3008
  • i.svm: Add libsvm-based image classification by @marisn in #2189
  • m.nviz.image: fix checking if color raster map exists if color_map param arg was used by @tmszi in #3139
  • modules: fix parallelized raster modules for buffer sizes by @metzm in #3070
  • r.blend: add screenshot in documentation by @baharmon in #3045
  • r.colors.stddev: add screenshot in documentation by @baharmon in #3044
  • r.contour: remove broken test by @petrasovaa in #3333
  • r.cross: fix outdated doc (max 10 changed to 30 layers) by @petrasovaa in #3294
  • r.drain: fix for fully-qualified map names by @petrasovaa in #3092
  • r.fillnulls: proceed if no holes present (RST method) by @neteler in #3122
  • r.flow: rename io.h file which causes conflict with MSYS2 by @nilason in #3708
  • r.horizon: add distance into output by @petrasovaa in #3565
  • r.horizon: add json output by @petrasovaa in #3534
  • r.horizon: add support for multiple points by @petrasovaa in #3543
  • r.horizon: address coverity scan 'Null pointer dereferences' by @petrasovaa in #3620
  • r.horizon: address incorrect number of rasters created by @petrasovaa in #3411
  • r.horizon: adjust bufferzone to multiples of resolution by @petrasovaa in #3384
  • r.horizon: always include distance output in JSON output by @petrasovaa in #3768
  • r.horizon: fix bug in point mode computation by @petrasovaa in #3288
  • r.horizon: fix computation in test_low_res() by @petrasovaa in #3298
  • r.horizon: fix distance output by @petrasovaa in #3589
  • r.horizon: get rid of global variables and other refactoring by @petrasovaa in #3346
  • r.horizon: use absolute value for angles < GRASS_EPSILON by @nilason in #3403
  • r.horizon: variable needs to be reset for point mode by @petrasovaa in #3441
  • r.in.aster: removed dependency on arch for OSX and added support for ASTER L1T data products by @afrigeri in #3258
  • r.in.gdal: after renaming to project use CRS instead of projection by @petrasovaa in #3578
  • r.in.gdal: fix and enable test by @petrasovaa in #3339
  • r.in.gdal: rename option location to project by @petrasovaa in #3575
  • r.in.pdal: use NoFileWriter class for PDAL > 2.7.0 (fixes #3552) by @marisn in #3567
  • r.in.wms: fix get region extent for WMS query, if location is 'XY location (unprojected)' by @tmszi in #853
  • r.info: Rename location to project in outputs by @wenzeslaus in #3134
  • r.mapcalc: Add explicit dependency on mapcalc.tab.h by @bmwiedemann in #3415
  • r.mapcalc: add data types info to manual by @pesekon2 in #3579
  • r.mapcalc: simplify Makefile rule by @nilason in #3425
  • r.patch: ensure r.in.ascii in relevant tests always create CELL by @petrasovaa in #3037
  • r.proj: clarify -n flag use case by @mankoff in #3758
  • r.resamp.bspline: fix memory leak by @metzm in #3069
  • r.semantic.label: fix print raster map semantic label by @tmszi in #3595
  • r.sim: fix previously ignored infil_value by @petrasovaa in #3111
  • r.stats: Use long total_count to avoid int overflow by @HuidaeCho in #3203
  • r.surf.gauss: Added seed option and flag by @cwhite911 in #2931
  • r.surf.random: Added seed option and flag to module by @cwhite911 in #2930
  • r.terraflow: Add flow direction encoding information to the manual by @HuidaeCho in #2988
  • r.topidx: Update the manual with info about unsupported lat/long locations by @HuidaeCho in #3488
  • r.univar: add note that parallelization is disabled if mask is set by @ecodiv in #3562
  • r.univar: init max value with smallest possible value by @nilason in #3512
  • r.univar: parallelization for extended statistics by @aaronsms in #2683
  • r.unpack: Rename folder test_suite to testsuite to discover tests by @echoix in #3358
  • r.walk: add screenshot in documentation by @baharmon in #3025
  • r.watershed: Handle large datasets greater than INT32_MAX in cells by @HuidaeCho in #2884
  • r.watershed: fix streams and basins by @metzm in #3140
  • r.what: Add JSON output by @kritibirda26 in #3528
  • t.rast.algebra/testsuite: split file test_raster_algebra.py by @neteler in #2974
  • t.rast.univar: Add region_relation option for spatial filtering STDS by computational region by @ninsbl in #2793
  • t.rast.univar: Add support for percentiles by @ninsbl in #3039
  • t.vect.import: rename location parameter to project by @petrasovaa in #3610
  • temporal: Update STDS metadata from DB by @ninsbl in #3350
  • temporal: handle SQLite < 3.33 by @ninsbl in #3723
  • temporal: update raster map metadata from file DB when overwrite is true by @ninsbl in #3374
  • temporal: use UPDATE-FROM syntax for updating metadata tables by @ninsbl in #3359
  • tools: Fix parser key-value pairs for t.* modules in renamed_options by @HuidaeCho in #3260
  • v.clean: Change threshold description to clarify map units by @neteler in #2950
  • v.clip: add test for no table by @landam in #3423
  • v.clip: do not fail when clip map has no table connected by @landam in #3416
  • v.db.addcolumn: fix enclosing column name with SQL standard double quotes by @tmszi in #3633
  • v.db.connect: Replace -o flag with the standard --overwrite by @HuidaeCho in #3214
  • v.db.dropcolumn: fix enclosing column name with SQL standard double quotes by @tmszi in #3632
  • v.db.join: Add exclude_columns= option by @HuidaeCho in #3174
  • v.db.join: handle existing columns properly by @ninsbl in #3765
  • v.db.join: speed up processing by using fewer db.execute commands by @griembauer in #3286
  • v.db.renamecolumn: fix enclosing column name with SQL standard double quotes by @tmszi in #3631
  • v.db.select: Add column names and types to JSON by @wenzeslaus in #3090
  • v.dissolve: Allow all types of features to be dissolved by @ecodiv in #3433
  • v.dissolve: Compute attribute aggregate statistics by @wenzeslaus in #2388
  • v.dissolve: Fix typo and improve aggregation method description by @ecodiv in #3429
  • v.fill.holes: Add new tool to remove inner isles, keep outer boundary by @wenzeslaus in #2486
  • v.in.ogr: add fix for unclosed rings by @metzm in #3282
  • v.in.ogr: fix bug from PR #3282 by @metzm in #3391
  • v.in.ogr: fix escape table column name during creating table by @tmszi in #3605
  • v.in.ogr: rename option location to project by @petrasovaa in #3576
  • v.in.wfs: add different WFS version support, import only specified layers and define area of interest by @VeronicaKoess in #3311
  • v.info: Rename location to project in outputs by @wenzeslaus in #3133
  • v.out.ogr: fix append+overwrite mode by @metzm in #3283
  • v.patch: Continuous cats with -e by @HuidaeCho in #3508
  • v.proj/r.proj: continue renaming location to project by @petrasovaa in #3574
  • v.to.db: add h-flag to write header by @ninsbl in #3401
  • v.to.rast: Change use=val to use=value by @wenzeslaus in #3110
  • v.vol.rst: Update parameter names in the example by @lbartoletti in #3073
  • v.what.rast3: Rename test folder and fix execution of test by @echoix in #3362

Graphical User Interface

  • GUI: Don't try to load metadata from uncompiled modules and raise an error for menu data by @HuidaeCho in #3628
  • GUI: sync GConsole skipInterface handling with g.parser by @landam in #3375
  • gui: restrict north/south to 90/-90 and west/east to -180/180 by @HuidaeCho in #1881
  • wxGUI/animation: fix exporting an animation overlaid with custom image by @tmszi in #3137
  • wxGUI/dbmgr: do not modify layer settings if settings have not changed by @tmszi in #3143
  • wxGUI/dbmgr: don't add new duplicated table col into table desc TableListCtrl widget by @tmszi in #2437
  • wxGUI/dbmgr: fix enclosing column name with SQL standard double quotes by @tmszi in #3634
  • wxGUI/dbmgr: fix removing map table layer and layer related Browse data and Manage tables page (tab) by @tmszi in #2422
  • wxGUI/dbmgr: fix show attribute table for vector map from another mapset by @tmszi in #3081
  • wxGUI/dbmgr: fix showing attribute column menu by @petrasovaa in #3098
  • wxGUI/dbmgr: fix sorting newly added column values by @tmszi in #2436
  • wxGUI/dbmgr: update Browse data page Simple SQL Query WHERE ComboBox widget column names choices by @tmszi in #2438
  • wxGUI/digitizer: fix digitizer - VDigitToolbar.OnTool method was not called by @petrasovaa in #3027
  • wxGUI/gmodeler: Show ModelRelation in white on dark mode by @landam in #2997
  • wxGUI/gmodeler: Support actinia export by @pesekon2 in #3005
  • wxGUI/gmodeler: fix r.what module query map coordinate by @tmszi in #3593
  • wxGUI/gmodeler: fix script export broken if model contains ModelData item by @pesekon2 in #3209
  • wxGUI/gmodeler: fix storing current model settings to model file by @tmszi in #3188
  • wxGUI/gmodeler: update sample model by @pesekon2 in #3043
  • wxGUI/gui_core: fix import Rasterlite DB raster by @tmszi in #2513
  • wxGUI/history: Add time period branching to history browser tree by @lindakarlovska in #3622
  • wxGUI/history: Add time/status icons in front of browser nodes by @lindakarlovska in #3679
  • wxGUI/history: Create panel displaying info about command by @lindakarlovska in #3365
  • wxGUI/history: Fix date formatting by @lindakarlovska in #3732
  • wxGUI/history: Move Export History button to history pane by @lindakarlovska in #3402
  • wxGUI/history: New button for setting current computational region based on executed commands by @lindakarlovska in #3421
Show more
  • wxGUI/history: add SearchCtrl widget with the ability to search the history tree by @tmszi in #3309
  • wxGUI/history: add pop-up command menu with an item for delete command from history + history tree refactoring by @lindakarlovska in #3342
  • wxGUI/history: enable run special command e.g. d.rast, d.vect etc., as well as from the wxGUI Console by @tmszi in #3302
  • wxGUI/history: fix execute r/r3.mapcalc module command by @tmszi in #3305
  • wxGUI/history: fix printing module GUI stderr inside wxGUI Console by @tmszi in #3300
  • wxGUI/history: update cross to green check after updating to current region by @lindakarlovska in #3714
  • wxGUI/iclass: fix activating scatter plot pane toolbar tools by @tmszi in #3182
  • wxGUI/iclass: fix closing scatter plot pane via x button by @tmszi in #3172
  • wxGUI/iclass: fix showing scatter plots by @tmszi in #3169
  • wxGUI/iclass: fix zoom to scatter plot extend by @tmszi in #3184
  • wxGUI/image2target: fix showing Ground Control Points settings dialog by @tmszi in #3189
  • wxGUI/lmgr: allow change group layer opacity level by @tmszi in #3583
  • wxGUI/lmgr: fix saving web service layer as raster map by @tmszi in #3101
  • wxGUI/lmgr: fix unfocused Layers pane wx.ListCtrl widget row background color by @tmszi in #3264
  • wxGUI/main_window: add and use custom SingleWindowAuiManager class by @tmszi in #3177
  • wxGUI/main_window: fix rendering Layers pane map display toolbar widget by @tmszi in #3262
  • wxGUI/mapdisp: save/load Map Display used output img size for session by @tmszi in #3315
  • wxGUI/mapswipe: fix saving display to file by @tmszi in #3185
  • wxGUI/nviz: fix showing scrollbars on the Data, Appearance, Analysis page (tab) by @tmszi in #3250
  • wxGUI/nviz: make tools panel verically and horizontally scrollable for Single Window Mode by @tmszi in #3089
  • wxGUI/preferences: allow the user save/load single-window mode panes layout by @tmszi in #3312
  • wxGUI/preferences: allow the user set maximum memory to be used by modules by @tmszi in #3307
  • wxGUI/preferences: allow the user to change the font size/face of the manual page by @tmszi in #3291
  • wxGUI/preferences: fix PreferencesDialog class OnSave method by @landam in #3368
  • wxGUI/preferences: fix setting command output font by @tmszi in #3187
  • wxGUI/psmap: fix close vector map properties dialog after hit OK button by @tmszi in #3085
  • wxGUI/psmap: fix show correct error message if Ghostscript isn't installed (required for rendering output PDF file) on the OS MS Windows platform by @tmszi in #2420
  • wxGUI/psmap: fix showing image map element preview by @tmszi in #3193
  • wxGUI/psmap: fix simple point graphic recalculate position by @tmszi in #3164
  • wxGUI/psmap: fix vector line map props dialog PenStyleComboBox widget drawing items by @tmszi in #3162
  • wxGUI/psmap: fix vector map properties dialog correct typing the name of the vector map by @tmszi in #3087
  • wxGUI/query: set region matching the raster for each raster queried by @petrasovaa in #2992
  • wxGUI/timeline: add _change_geometry() method for Matplotlib version >= 3.4 by @tmszi in #3094
  • wxGUI/vdidit: fix opening Vector Digitizer settings dialog while editing vector map by @tmszi in #3142
  • wxGUI/vdigit: fix close frame if Vector Digitizer is run as standalone app g.gui.vdigit by @tmszi in #2456
  • wxGUI/vselect: fix BoxSizer widget Add method proportion param arg type by @tmszi in #2984
  • wxGUI/wxplot: fix profile plot segmentation points position by @tmszi in #3601
  • wxGUI: Add support for grass.pygrass API to Graphical Modeler by @landam in #3369
  • wxGUI: Avoid overlapping module parameters in Graphical modeler by @landam in #2991
  • wxGUI: Check min required wx version when starting GUI by @landam in #2990
  • wxGUI: Default Single-Window size is too small by @lindakarlovska in #3024
  • wxGUI: Export variables to Python in Graphical Modeler by @landam in #3702
  • wxGUI: Fix command parsing in "add tool" dialog in Graphical Modeler by @landam in #3022
  • wxGUI: Fix scrolling the layertree to the right when adding items by @lindakarlovska in #3017
  • wxGUI: Ignore stderr of the GUI by @wenzeslaus in #3049
  • wxGUI: Improve rendering (GetNewShapePos) in Graphical Modeler by @landam in #3371
  • wxGUI: Integrate Grapical Modeler into single window layout by @landam in #3003
  • wxGUI: Minimal changes to rename location to project by @wenzeslaus in #2993
  • wxGUI: New History pane for launching commands from history log by @lindakarlovska in #3234
  • wxGUI: Remove non-existing scripts folder from Makefile by @echoix in #3529
  • wxGUI: Sdd support for space-time datasets to Graphical Modeler by @landam in #3400
  • wxGUI: Show module description also for first match in search in Graphical Modeler by @landam in #3372
  • wxGUI: Use different message for moving and copying in data catalog by @ninsbl in #3752
  • wxGUI: adding a button for undocking an AuiNotebook tab to wx.Frame (Single-Window GUI) by @lindakarlovska in #2667
  • wxGUI: exception in thread when switching to mapset by @lindakarlovska in #2994
  • wxGUI: fix URL to Piemonte (Italy) dataset by @neteler in #3443
  • wxGUI: fix animation/nviz animation tool play/record animation by @tmszi in #3586
  • wxGUI: fix show MASK statusbar button widget if mask is created by @tmszi in #2520
  • wxGUI: fix wx.ListItemAttr deprecated warning by @petrasovaa in #3054
  • wxGUI: initialize db connection when creating new mapset by @petrasovaa in #3086
  • wxGUI: rename location to project for new project wizard by @petrasovaa in #3520
  • wxGUI: rewrite and document core.utils.ListOfMapsets to not cause GUI crash in certain circumstances by @petrasovaa in #3226

Python

  • Python: Remove code for Python 2 by @a-detiste in #3076
  • Python: Remove code for Python 2, remove six from requirements by @a-detiste in #3079
  • binder: update dependencies by @neteler in #3063
  • grass.gunittest: Add check for precision test by @wenzeslaus in #2818
  • grass.gunittest: Fix usage of assertEquals() removed from Python 3.12 by @pesekon2 in #3009
  • grass.gunittest: Fix usage of assertNotRegexMatches() removed from Python 3.12 by @pesekon2 in #3011
  • grass.jupyter: Add SeriesMap Example to jupyter_tutorial.ipynb by @chaedri in #3472
  • grass.jupyter: add SeriesMap and tests by @chaedri in #3036
  • grass.jupyter: add ipyleaflet backend by @petrasovaa in #3330
  • grass.jupyter: fix reinitializing session by @petrasovaa in #3563
  • grass.jupyter: update r.proj call to use project instead of location by @petrasovaa in #3766
  • grass.pygrass: Fix parameter range error reporting by @wenzeslaus in #2817
  • grass.pygrass: Lazy load list of commands for module shortcuts by @wenzeslaus in #3688
  • grass.pygrass: Replace io.OpenWrapper by open by @pesekon2 in #3018
  • grass.pygrass: Support shortened parameter values by @wenzeslaus in #3275
  • grass.script: Add MapsetSession for runs in other mapsets by @wenzeslaus in #2367
  • grass.script: Add separate function for setting location description by @wenzeslaus in #3431
  • grass.script: Always use full env in create_project by @wenzeslaus in #3685
  • grass.script: Automatically parse JSON and CSV in parse_command by @petrasovaa in #3687
  • grass.script: Change insecure mktemp to NamedTemporaryFile by @Ntp9413 in #3444
  • grass.script: Create new location without a session by @wenzeslaus in #3432
  • grass.script: Fix missing passing of env parameter by @wenzeslaus in #3684
  • grass.script: Get GISBASE automatically in get_commands by @wenzeslaus in #3683
  • grass.script: Make grass_path keyword only in init by @wenzeslaus in #3689
  • grass.script: Provide env parameter in the g.message API by @wenzeslaus in #3439
  • grass.script: Reduce use of env in create_location by @wenzeslaus in #3428
Show more
  • grass.script: Remove copy-pasted code from tests by @wenzeslaus in #3674
  • grass.script: Split the command string using shell-like syntax on the win32 platform same as on POSIX-compliant platforms by @tmszi in #1908
  • grass.script: add create_project() with same functionality as create_location() by @chaedri in #3513
  • grass.script: ensure memmap content is flushed before writing to a raster by @petrasovaa in #3206
  • grass.unittest: Fix usage of assertRegexpMatches() removed from Python 3.12 by @pesekon2 in #3010
  • libpython/temporal: fix t.rast.import module import input tarball file by @tmszi in #3591
  • libpython: fix create new project (location) by @tmszi in #3588
  • python: Add extract filter for tarfile.extractall by @echoix in #3340
  • python: More fixes for Python 3.12 SyntaxWarning: invalid escape sequence by @echoix in #3331
  • python: Remove Python 2-only -t CLI flag in makefile by @echoix in #3377
  • python: Remove Shortening messages in pygrass messages by @echoix in #3324
  • python: Replace usages of Python2-only import __builtin__ with a Python 3 compatible equivalent by @echoix in #3329
  • python: Update black to 24.4.0 by @echoix in #3545
  • python: grassTask.get_param(): full match also for strings by @landam in #3582
  • python: in makefile remove doxygen from temporal and python/grass/exceptions that is unused by @echoix in #3471
  • python: remove more six crumbs by @a-detiste in #3675
  • python: replace deprecated np.int0 with np.intp in pygrass by @pesekon2 in #3228
  • python: script.core.Popen: do not show new window on MS Windows by @landam in #3460

Documentation and Messages

Show more
  • manual: update broken URLs by @neteler in #3742
  • manual: update r.in.gdal.html to remove outdated example by @ecodiv in #3511
  • manual: update v.reclass.html for either 'rules' or 'column' option to be specified by @agiudiceandrea in #3067
  • manual: update wingrass notes in howto_release.md by @landam in #3061
  • mkhtml: check for addon_path by @mmacata in #3571

Libraries and General Functionality

  • lib/bitmap: Fix a potential memory leak by @lbartoletti in #3004
  • lib/cdhc: add statlib cdh fortran code to lib docs by @nilason in #2642
  • lib/db: catch and handle return value from setting MySQL SQL ANSI mode in odbc driver by @tmszi in #3637
  • lib/db: fix MySQL driver compilation warnings in mysql driver by @nilason in #3344
  • lib/db: print debug info for setting MySQL ANSI SQL mode in mysql driver by @tmszi in #3638
  • lib/db: set ODBC MySQL DB backend SQL ANSI_QUOTES MODE in odbc driver by @tmszi in #3635
  • lib/db: set SQL ANSI_QUOTES MODE in mysql driver by @tmszi in #3612
  • lib/db: use integer port argument with mysql_real_connect in mysql driver by @fweimer-rh in #3325
  • lib/diglib: calculate the total size of topo file to get the correct off_t_size by @HuidaeCho in #3351
  • lib/external: Add parson library for JSON by @cwhite911 in #3028
  • lib/gmath: include only one header for FFTW by @HuidaeCho in #3641
  • lib/parser: Add Markdown description generator by @landam in #3230
  • lib/parser: Support renamed flags (flags/options to options/flags as well) by @HuidaeCho in #3256
  • lib/parser: Use project for G_OPT_M_LOCATION by @wenzeslaus in #3130
  • lib/proj: change pipeline selection criterion by @metzm in #3347
  • lib/raster3d: fix -Wdeprecated-non-prototype compiler warnings by @nilason in #2901
  • lib/raster: fixed security vulnerabilities and weaknesses by @jadenabrams100 in #3549
  • lib/vector/Vlib: fix count of removed dangles by @metzm in #3348
  • lib/vector: reading files with 'struct Map_info*' objects is technically not const by @nilason in #2894
  • lib: Add a standard parser option for JSON formatting by @kritibirda26 in #3704
  • lib: Define (read|write)_png only #ifdef HAVE_PNG_H by @HuidaeCho in #3647
  • libgis: Rename ap_copy to aq for G_aprintf by @HuidaeCho in #3651
  • libgis: allow bypass of compatibility test by @metzm in #3378
  • libvector/diglib: fix memory leaks by @nilason in #3617
  • libvector: add destructor function to the struct field_info by @nilason in #3602
  • raster: disable parallelization when MASK active by @petrasovaa in #3561
Show more
  • vector: use full db connection settings for db.describe by @metzm in #3462

Startup, Initialization, and Environment

  • init: Do not report creating new mapset for tmp mapset by @wenzeslaus in #2972
  • init: renaming location to project for grass.py init script by @petrasovaa in #3670

Translations, Internationalization, and Localization

Show more

Windows

  • Windows: Fix untgz command for NSIS3 by @landam in #3419
  • win: Remove libexpat-1.dll from package.sh by @landam in #3479
  • windows: use Python 3.12 with updated OSGeo4W by @nilason in #3603

Packaging, Configuration, Portability, and Compilation

Show more
  • configure: update to latest config.guess and config.sub by @github-actions in #3680

Docker

  • Docker(Alpine): Add additional GDAL driver by @mmacata in #3058
  • Docker(Alpine): Fix for PEP 668 by @mmacata in #3463
  • Docker(Alpine): Remove pip commands by @mmacata in #3530
  • Docker: Get rid of hardcoded GRASS GIS version in alpine Dockerfile by @mmacata in #3068
  • Docker: Sync main Dockerfile to docker/ubuntu/Dockerfile by @echoix in #3205
  • Docker: Update 8.3 and 8.4 versions in Docker readme table by @wenzeslaus in #2966
  • docker: CI update and simplification by @mmacata in #3075
  • docker: Update dockerhub organization by @mmacata in #3001
  • docker: implement multi-stage-builds for ubuntu by @ninsbl in #3170
  • docker: update to Debian 12 and PDAL 2.5.5 by @neteler in #3062
Show more
  • Docker: Update debian:stable Docker digest to fef26aa by @renovate in #3577
  • Docker: Update docker/build-push-action action to v5 by @renovate in #3144
  • docker: Update debian:stable Docker digest to 82f8da1 by @renovate in #3707

Continuous Integration, Infrastructure, Tests and Code Quality

  • CI(CodeQL): Improve run times and add concurrency groups by @echoix in #3361
  • CI(black): Post black code suggestions as PR review comments by @echoix in #3538
  • CI(clang-format): Run faster and post fixes as code suggestions if possible when running on a PR by @echoix in #3483
  • CI(labeler): Disable sync-labels that removes labels and pin action by @echoix in #3495
  • CI(labeler): Fix RFC exclusion from docs, adjust other globs by @echoix in #3360
  • CI(labeler): Match notebook label by @echoix in #3498
  • CI(labeling): add support for testsuite label by @landam in #3424
  • CI(suggestions): Extract uploading of code suggestions with a local composite action by @echoix in #3527
  • CI(windows): Increase required passing tests percentage to 80% by @echoix in #3517
  • CI(windows): Set number of cores for compilation by @echoix in #3585
  • CI(windows): Upload test report artifact by @echoix in #3724
  • CI: Add Automated Coverity Scanning by @jadenabrams100 in #3514
  • CI: Add Python 3.12 to pytest's matrix by @echoix in #3314
  • CI: Add a verify-success reusable workflow to use for required checks by @echoix in #3320
  • CI: Allow workflows running on pull request to run for any target branch by @echoix in #3722
  • CI: Create workflow to update configure, config.guess and config.sub by @echoix in #3200
  • CI: Display pytest failures as GitHub annotations in GitHub Actions by @echoix in #3207
  • CI: Downgrade pytest for pylint job to allow time to fix breaking changes in pytest 8 by @echoix in #3381
  • CI: Enable BASH_EXEC checks in super-linter by @echoix in #3454
  • CI: Fix link in travis-ci readme badge by @veroandreo in #3706
  • CI: Overhaul Coverity Scan by @jadenabrams100 in #3566
  • CI: Print Python version first by @wenzeslaus in #3718
  • CI: Print more version information, for all platforms by @echoix in #3740
  • CI: Reduce number of Python jobs by @wenzeslaus in #3014
  • CI: Remove simple test from Python Code Quality by @wenzeslaus in #3697
  • CI: Set executable bit on updated config.guess and config.sub files by @echoix in #3455
Show more
  • CI: Speed up pytest workflow by 1min20 with pytest-xdist by @echoix in #3257
  • CI: Split Ubuntu tests into jobs to reduce each job's execution time by @echoix in #3379
  • CI: Update labeler’s labels by @echoix in #3349
  • CI: Update renovate.json to manually enable semantic commits by @echoix in #3716
  • CI: Use Renovate best-practices preset by @echoix in #3533
  • CI: Use faster mold linker to reduce build time by ≈>30 sec by @echoix in #3681
  • CI: add bandit to GRASS GIS CI by @jadenabrams100 in #3515
  • CI: add libsvm to full Ubuntu builds by @echoix in #3494
  • CI: configure Coverity Scan for larger scans and artifact by @jadenabrams100 in #3606
  • CI: configure Coverity Scan with debug flag by @nilason in #3572
  • CI: drop outdated CentOS 7 compilation by @neteler in #3141
  • CI: fix Periodic update's cron and do not add labels by @nilason in #3271
  • CI: fix pre-commit warnings/errors in linting by @nilason in #3246
  • CI: improve Coverity build log by @nilason in #3626
  • CI: reactivate Coverity workflow cron, remove artifact upload by @nilason in #3624
  • CI: revert coverity to simple submitting method, temporary disable cron by @nilason in #3616
  • CI: set the right environment for setup-msys2 and use the provided shell by @lazka in #3709
  • CI: specify coverity version in coverity.yml by @jadenabrams100 in #3556
  • CI: split files from revisions in git diff command by @echoix in #3775
  • CI: update publishing workflow by @nilason in #3437
  • CI: update super-linter.yml to use super-linter/super-linter by @echoix in #3332
  • CI: use macOS ARM-based runner by @nilason in #3395
  • Checks: Fix Flake8 E501 by @mshukuno in #3541
  • Checks: Fix Flake8 F401 imported but unused warning by @mshukuno in #3535
  • Checks: Flake8 W605 - invalid escape sequence by @mshukuno in #3763
  • Tests: Missing shutil import when used inside @unittest.skipIf condition by @echoix in #3317
  • checks: Fix spelling errors by @sebastic in #3057
  • checks: Update Bandit to ignore secure random warning (Rule B311) by @Ntp9413 in #3554
  • checks: add -Wpendantic compiler flag to CI builds by @nilason in #3245
  • checks: add configuration files for yamllint and markdownlint by @nilason in #3677
  • checks: apply trailing whitespace fixes for all repo in pre-commit by @echoix in #3546
  • checks: exclude README.md from markdown-lint in pre-commit-config.yaml by @neteler in #2971
  • checks: fix pre-commit errors by @nilason in #3335
  • checks: fix some yamllint and markdownlint errors by @nilason in #3656
  • checks: set min-space to 1 for in-line comments in pre-commit yaml files by @nilason in #3254
  • pytest: Enhance logging output with colors and summary by @echoix in #3629
  • refactoring: display driver in r_raster.c fixing duplicateExpression warning by @Sharansrj567 in #3357
  • refactoring: imagery library resolve cppcheck warnings by @Sharansrj567 in #3356
  • refactoring: positioning of mixed_checker addressing duplicateExpression warning by @Sharansrj567 in #3366
  • style: Modernize Python syntax, resolves Python 3.12 \. Syntax warning by @echoix in #3316
  • style: Modernize object inheritance, super() calls, and OSError aliases by @echoix in #3251
  • style: Replace use of Variable Length Arrays in C code by @nilason in #3323
  • utils: fix add HTML module man page Source code section for all module HTML files by @tmszi in #3248
  • utils: fix clang-format version check by @nilason in #3186
  • utils: fixed shell vulnerability in mkrest.py by @jadenabrams100 in #3451
  • CI(deps): Pin dependencies by @renovate in #3536
  • CI(deps): Update actions/cache action to v4 by @renovate in #3367
  • CI(deps): Update actions/checkout action to v3.6.0 by @renovate in #3524
  • CI(deps): Update actions/checkout action to v4 by @renovate in #3138
  • CI(deps): Update actions/checkout action to v4 by @renovate in #3526
  • CI(deps): Update actions/checkout action to v4.1.3 by @renovate in #3640
  • CI(deps): Update actions/checkout action to v4.1.4 by @renovate in #3667
  • CI(deps): Update actions/checkout action to v4.1.5 by @renovate in #3696
  • CI(deps): Update actions/checkout action to v4.1.6 by @renovate in #3715
  • CI(deps): Update actions/checkout digest to 1d96c77 (v4.1.3) by @renovate in #3639
  • CI(deps): Update actions/checkout digest to 8ade135 by @renovate in #3178
  • CI(deps): Update actions/checkout digest to b4ffde6 by @renovate in #3208
  • CI(deps): Update actions/download-artifact action to v4.1.5 by @renovate in #3623
  • CI(deps): Update actions/download-artifact action to v4.1.6 by @renovate in #3645
  • CI(deps): Update actions/download-artifact action to v4.1.7 by @renovate in #3664
  • CI(deps): Update actions/setup-python action to v5 by @renovate in #3290
  • CI(deps): Update actions/upload-artifact action to v4 by @renovate in #3303
  • CI(deps): Update actions/upload-artifact action to v4.3.2 by @renovate in #3625
  • CI(deps): Update actions/upload-artifact action to v4.3.3 by @renovate in #3646
  • CI(deps): Update alpine Docker tag to v3.18 by @renovate in #2953
  • CI(deps): Update alpine Docker tag to v3.19 by @renovate in #3293
  • CI(deps): Update conda-incubator/setup-miniconda action to v3 by @renovate in #3265
  • CI(deps): Update debian:stable Docker digest to 84725fb by @renovate in #3658
  • CI(deps): Update docker/dockerfile Docker tag to v1.6 by @renovate in #3240
  • CI(deps): Update docker/dockerfile Docker tag to v1.7 by @renovate in #3473
  • CI(deps): Update docker/dockerfile:1.7 Docker digest to a57df69 by @renovate in #3668
  • CI(deps): Update docker/login-action action to v3.2.0 by @renovate in #3745
  • CI(deps): Update docker/metadata-action action to v5 by @renovate in #3146
  • CI(deps): Update docker/setup-qemu-action action to v3 by @renovate in #3148
  • CI(deps): Update github/codeql-action action to v3 by @renovate in #3297
  • CI(deps): Update github/codeql-action action to v3.24.9 by @renovate in #3519
  • CI(deps): Update github/codeql-action action to v3.25.0 by @renovate in #3597
  • CI(deps): Update github/codeql-action action to v3.25.1 by @renovate in #3613
  • CI(deps): Update github/codeql-action action to v3.25.2 by @renovate in #3648
  • CI(deps): Update github/codeql-action action to v3.25.3 by @renovate in #3671
  • CI(deps): Update github/codeql-action action to v3.25.4 by @renovate in #3692
  • CI(deps): Update github/codeql-action action to v3.25.6 by @renovate in #3725
  • CI(deps): Update github/codeql-action action to v3.25.7 by @renovate in #3754
  • CI(deps): Update github/codeql-action action to v3.25.8 by @renovate in #3769
  • CI(deps): Update mamba-org/setup-micromamba action to v1.9.0 by @renovate in #3730
  • CI(deps): Update peter-evans/create-pull-request action to v6 by @renovate in #3388
  • CI(deps): Update peter-evans/create-pull-request action to v6.0.1 by @renovate in #3461
  • CI(deps): Update peter-evans/create-pull-request action to v6.0.2 by @renovate in #3490
  • CI(deps): Update peter-evans/create-pull-request action to v6.0.4 by @renovate in #3584
  • CI(deps): Update peter-evans/create-pull-request action to v6.0.5 by @renovate in #3666
  • CI(deps): Update reviewdog/action-setup action to v1.3.0 by @renovate in #3493
  • CI(deps): Update softprops/action-gh-release action to v2 by @renovate in #3532
  • CI(deps): Update softprops/action-gh-release action to v2.0.5 by @renovate in #3691
  • CI(deps): Update super-linter/super-linter action to v6 by @renovate in #3389
  • CI(deps): Update super-linter/super-linter action to v6.1.1 by @renovate in #3426
  • CI(deps): Update super-linter/super-linter action to v6.2.0 by @renovate in #3442
  • CI(deps): Update super-linter/super-linter action to v6.3.0 by @renovate in #3464
  • CI(deps): Update super-linter/super-linter action to v6.3.1 by @renovate in #3558
  • CI(deps): Update super-linter/super-linter action to v6.4.0 by @renovate in #3611
  • CI(deps): Update super-linter/super-linter action to v6.4.1 by @renovate in #3642
  • CI(deps): Update super-linter/super-linter action to v6.5.0 by @renovate in #3710
  • CI(deps): Update super-linter/super-linter action to v6.5.1 by @renovate in #3734
  • CI(deps): Update super-linter/super-linter action to v6.6.0 by @renovate in #3767
  • CI(deps): Update synopsys-sig/synopsys-action action to v1.8.0 by @renovate in #3525
  • CI(deps): Update ubuntu:22.04 Docker digest to 193c13d by @renovate in #3600
  • CI(deps): Update ubuntu:22.04 Docker digest to 1b8d8ff by @renovate in #3607
  • CI(deps): Update ubuntu:22.04 Docker digest to a6d2b38 by @renovate in #3669
  • CI: Update rui314/setup-mold digest to 8de9eea by @renovate in #3699
  • CI: update docker/login-action action to v3 by @renovate in #3145
  • CI: update docker/setup-buildx-action action to v3 by @renovate in #3147
  • CI: update docker/setup-buildx-action action to v3.3.0 by @renovate in #3568
  • CI: update github/codeql-action action to v3.24.10 by @renovate in #3564
  • CI: update github/codeql-action action to v3.25.5 by @renovate in #3705
  • CI: update msys2/setup-msys2 action to v2.23.0 by @renovate in #3690

Contributing and Management

  • contributing: Add auto-labelling to pull requests by @nilason in #531
  • contributing: Add autogenerated documentation to gitignore by @marisn in #3522
  • contributing: Add empty line after heading in release notes by @wenzeslaus in #3048
  • contributing: Add more expressions to match release notes groups by @wenzeslaus in #3035
  • contributing: Add readme to development doc by @wenzeslaus in #2962
  • contributing: Add security policy by @kpolchow in #3544
  • contributing: Add suggest message to version script by @wenzeslaus in #2965
  • contributing: Align backporting example with text by @wenzeslaus in #2978
  • contributing: Expand instructions on pre-commit by @ldesousa in #3006
  • contributing: Fix syntax in Flake8 config by @wenzeslaus in #2976
  • contributing: Optimize commands, text in release procedure by @wenzeslaus in #2414
  • contributing: Remove outdated section about ignore-revs on GitHub by @echoix in #3269
  • contributing: Remove parts of locale readme already present in submitting guidelines by @marisn in #3012
  • contributing: Update bug report template by @veroandreo in #3657
  • contributing: Update release how-to from 8.2 to 8.4 by @wenzeslaus in #2980
  • contributing: add code of conduct by @petrasovaa in #3663
  • contributing: minor release procedure updates (main) by @neteler in #3030
  • contributors: Update record for Yann Chemin by @YannChemin in #3244

New Contributors

Full Changelog: 8.3.2...8.4.0RC1

Binder