This is an old revision of the document!


PHP's gd library is missing or unable to create PNG images

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 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.