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.