What is new in stable version 8.9.1

This release of the Dinamica EGO software introduces some improvements and addresses bugs:

(Compared to stable version 8.9.0):

Core Changes

Fixed bug where checkTaskCancellation() could crash the application if incorrectly called outside a task.

(Compared to stable version 8.8.0):

Core Changes

The core updates focused heavily on performance enhancements, parallelization fixes, extensive progress reporting infrastructure, and improved string handling for generated bindings.

Performance and Table Management

Added a ReadOnlyTable to speed up Map Calculation using tables

Fixed a problem where saved LookupTables couldn't be opened by the Load Table function

Fixed an assertion error that occurred when removing many rows from a big table column due to a miscalculation of column free space

Progress Reporting and Task Execution

Defined a new set of utilities to simplify the nesting of progress reports corresponding to functor execution

Code related to progress reporting was moved to specific source files

Existing code was updated to use these new features, and test cases were added

Added progress reporting for map calculation (CalculateMap and CalculateCategoricalMap) and area calculation (CalcAreas)

Integrated categorization calculation progress reporting into the Load Categorical Map functor

Included categorization when reporting execution progress for the CalculateCategoricalMap

Changed the definition of TaskProgressReporter so that it receives the initial progress during the setup phase

This fixed a potential bug where initial progress might not be properly initialized if the number of tasks related to a functor changes during execution

When calling intoSingleTaskProgressReporter(), the caller now has the responsibility for preparing the functor to receive progress notifications

Improved documentation of the task progress reporters

Parallelization and Coordinate Iteration

Fixed the initialization order of WorkerGroup variables

Fixed an error related to “totalSize__” when using PARALLEL_FOR_EACH_COORDINATE() and its variations

Made it possible to use iteration variables (“firstIndex_”, “lastIndexPastOne_”, and “indexRange_”) inside a FOR_EACH_IMAGE_COORDINATE()

String Handling and Bindings

Changed the definition of “string_view.i” and the corresponding generated Java binding code to deal correctly with empty string_views

Updated the version of “swing_view.i” to match the one provided by SWIG, copying the string_view only if it is not null-terminated

Added comments to clarify that checking for zero-byte termination before calling NewStringUTF() could potentially cause an application page fault (and possibly crash)

Miscellaneous Core Fixes

Added an option to Test::areFilesEqual() to control the outputting of differences between two files if their content differs

Fixed regression by removing a declaration added from another branch

Fixed a compilation error when using the fmt library version 12.0.0

GUI Changes

GUI modifications focused on reliable window placement, persistence handling, and improved table rendering and messaging.

Window Placement and Dialogs

Implemented fixes for the window position calculation performed by placeWindowBelowBounds()

Fixed behavior for environments with several screens

Fixed behavior where placement hides the window under the OS task bar in some extreme cases

Refactored the definition of placeWindowBelowComponent() so that its behaviors can be used separately in other places

Added an optional new parameter when showing message boxes to prevent the dialog from overlapping a certain area on the screen

Table Display and Formatting

Changed integer representation in tables to use decimal notation instead of scientific notation

A numeric formatting change that was causing collateral issues was reverted, meaning the integer decimal formatting will be implemented specifically in TableUtils.CellRenderer

Restored correct DinamicaCellEditor invocation (which was previously broken due to Object.class column type reporting)

Added a utility method to check if a double value represents an exact integer

Messaging, Functors, and Error Prevention

Changed behavior to display the functor name when it is not visible in the sketch or when an alias hides its real name

Improved carrier operation messages and removed confusing 'remap' terminology

Prevented error message boxes displayed after validating a functor editor window from overlapping the editor that is being highlighted as the source of the error

Fixed execution options insets and changed the highlight color of options to be more readable

Fixed regressions between versions

Persistence and Hierarchy

Added handling for failed perspective restoration when the persistence key is missing or invalid

The current major application version is retrieved for the persistence key

Ensured the docking view is updated when a panel is attached to the hierarchy

Listing created using Google NotebookLM.