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.