===== What is new in stable version 8.9.2 ====== This release of the Dinamica EGO software introduces some improvements and addresses bugs: ------ (Compared to stable version [[what_is_new_8_9_0|8.9.1]]): ==== Miscellaneous Core Fixes ==== * Symmetrical tasks are now allowed to modify objects captured by copy. * The set of utilities used to report nested execution progress within a functor was re-implemented to be less error prone when used. * Storing a shared_ptr for functors in WorkerSummary was stopped to prevent a crash during access. * The use of mimalloc was disabled to workaround a bug in its library that causes an application crash. ------ (Compared to stable version [[what_is_new_8_9_0|8.9.0]]): ==== Miscellaneous Core Fixes ==== * Fixed bug where checkTaskCancellation() could crash the application if incorrectly called outside a task. ------ (Compared to stable version [[what_is_new_8_8_0|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.