===== What is new in stable version 8.8.0 ====== This release of the Dinamica EGO software introduces some improvements and addresses bugs (compared to stable version [[what_is_new_8_7_0|8.7.0]]): === Core Enhancements === * **System, Memory, and File Management:** * Updated version to 8.8.0. * Added functionality to **force `mimalloc` to deallocate unused memory**. * Changed pure allocations to use smart pointers. * Implemented **fallback to system default temporary directory** when the user-defined directory is unavailable. * Refactored code by moving the functionality for determining the effective storage mode when opening an image into `MapUtils::determineStorageMode()`. * Fixed regression caused by validating a file for writing: the software will **not create a new file if a file does not exist** during validation. * **Data Structures (Tables, Tuples, and Variants):** * Used a **standard comparison method for `Tuple`/`TupleView` and `Variant`**, fixing the incorrect ordering of Tuples with different sizes. * **Reduced variant memory footprint**. * Methods were added to **recover all table indices at once but behind a lock**. * Sequence generation for lookup table constants was refined: the **new default behavior allows a single sequence only if it represents more than 20,000,000 entries per table**; otherwise, the table is written in expanded (non-sequence) form. * Fixed a problem where different ordering of keys/values on a Table could result in writing a table with a header without the `str` type. * Fixed bug that was causing an **infinite loop when converting a table into weights**. * **Scripting and Concurrency:** * Added a flag to `ScriptReader` to **ignore undefined variables**, which prevents errors on missing variables and allows partial script fragments to be parsed; this flag was also exported to Java. * Added parameters to `calculateProgress()` to **specify the lower and upper progress limits** that should be reported. An additional entity was defined to report progress during execution. * Fixed potential **race condition** that might occur if a worker is selecting a task while the GUI is querying the worker's task information. * The copy of `TaskMutex` and `TaskLock` was removed to prevent Undefined Behavior (UB), and memory ordering on `TaskLock` was fixed. * **Image and Spatial Data Handling:** * **Cropping functionality** was implemented using the `CropMapToExtents` functor. * Optional **cropping extents were added to `LoadMap` and `LoadCategoricalMap`**, allowing only a specified portion of a map to be loaded. * Fixed implementation of **`Bounds` to correctly deal with constructing its limits** using consecutive calls to `combine()`. * **`Bounds` now keeps its type**, allowing it to represent a point or a region. * Improvements to `BaseRasterImageWindow`: **allow a categorization to be assigned** that might be different from the peer image, and ensure this modified categorization is passed along when copied. * Fixed bug related to retrieving the bottom-right coordinate of a region by `GetRegionInfo` and `GetAllRegionsInfo`. === Graphical Interface Enhancements === * **Performance and Responsiveness:** * **Improved responsiveness of tables and lookup tables** by showing a loading icon and executing the load operation in the background. * **Speed up lookup table visualization** by using a cache of the table keys. * Fixed a bug where the **resolution of the lookup table chart is completely off when using a hi dpi display**. * **Script Editor and Memory:** * The GUI was updated to **allow pasting incomplete script fragments** from the system clipboard by utilizing the core's ignore-undefined-variables flag. * Script modified properties are written explicitly **on save** instead of on every write operation. * Functionality was added to **force freeing reserved memory** after script runs or when a script editor is closed. * **Utility Updates:** * Updated CRAN mirror list, refreshing URLs/names and removing outdated entries. * Fixed bug that caused an error when trying to copy the log text to the clipboard without selecting text first. ---- Listing created using Google NotebookLM.