What is New in Dinamica EGO 8.0.

(ChangeLog compared to Dinamica EGO 7.8.0.)

(Latest version Dinamica EGO 8.6.0)

Dinamica NUI (Application Graphical User Interface)

Replace use of static class member LogTagInfo with namespace.

Corrige o caminho usado para execução

Add rapidcsv license to the About dialog

Removed Linux condition check; Added exception handling in getRequest method.

Merge branch 'master' of github.com:Centro-De-Sensoriamento-Remoto/dinamica-nui

Refactored the submodel importing process:

Use the fast table loader for viewing table files

Refactoring:

Added flag to enable error dialog communication in attemptConnection method;

Detached attemptConnectionUsingDialog from attemptConnection.

Added option to adjust functor connections when removing CarrierFunctors.

Refactoring: Replaced ForcedAssertion.check() with ForcedAssertion.fail() in try-catch clauses. This change ensures that crucial information, such as the origin of the exception causing the assertion, is retained.

Make sure information about the functor copy/paste is removed from functors after completing a copy:

Avoids treating functors as possibly “equivalents” when they are multiple copies from a another functor;

Also, defined utility function to sanitize the properties of a functor.

Redefinition of the functions testing the equivalence between functors:

Fixed documentation;

Removed unnecessary function definitions;

Simplified the equivalence test.

Removed invalid functor property name; Changed internal names of functor properties for better consistency.

Updated import.

Removed unnecessary casts.

Automatically add the typical RegionManager and TableManager content when instantiating those functor in the interface.

Refactoring “Group Selection Using Spatial Functor” to avoid code duplication.

Added option to group functions by using a “Region Manager” and a “Table Manager”.

Use of option to control sanitizing scripts when loading its content:

The sanitizing option removes properties related to ids and source ids from functors after parsing its content.

Fixed comments.

Removed unused code.

Introduced new utility function to retrieve the representation of a specific local submodel from a main script factory and use the new utility names.

Formatting, comments and some refactorying.

Fixed errors and added improvements related to not correctly detecting equivalence between functors in submodel panels in the graphical interface and their counterparts in the script factories:

Correctly synchronize the content of the submodel panels with their script factory counterparts;

Optimization: use of new method [getLocalSubmodelInternalScript()] to retrieve the content of a specific submodel in the script factory.

Also, changed the signature of some methods to avoid possibility of misuse;

Fixed comments.

Fixed error where the meaning of flag “preserveSourceIds” was flipped.

Refactoring: Remove unused parameters.

Refactored attemptConnection method:

Fixed errors caused by commit feaa3c0;

Merged attemptConnection method with attemptConnectionUsingDialog;

Added flag to enable dialog communication in attemptConnection method. This allows the method to establish a connection between two functors using a dialog to display ports. Additionally, with the flag enabled, errors will be communicated via a dialog;

Changed returned value when created an empty submodel for better consistency; Comments.

Refactoring: Changed method name from getPanel() to getScriptPanel(); Changed name of the underlying member holding the script panels for all scripts.

Refactoring: Removed unnecessary method getModelTabs().

Refactoring: Removed unnecessary declarations.

Refactoring: Changed name of method updatePanel() to updateSelectedScriptPanel().

Refactoring: Changed the name of methods and variables related to the currently selected script panel [set|getSelectedScriptPanel()].

Fixed bug caused by trying to reconstruct a connection originally performed via carrier when it has different input and output port names.

Updated due to changed semantics of getPropertyValueAs() (and related functions receiving a default value).

Fixed bug introduced in commit 240f6ed : Modified to expand all connections of CarrierFunctor before the connection remapping.

Defined function to conveniently return the ID of the equivalent functor.

Refactoring: making IssuePanelState an external class.

Comments.

Updated for compatibility with the new definition of Runnable, use of Supplier2 when necessary.

Refactoring: used utilities to centralize the creation of the persistence check box menu items.

Refactoring: used utilities to centralize the creation of the toggle buttons.

Refactoring: used utilities to centralize the creation of the buttons.

Refactoring: used utilities to centralize the creation of the persistence buttons and check box menu items.

Fixed a bug that was blocking issues from being removed from the list of ignored issues under some circumstances.

Redefinition of the functor Explorer panel:

Optimized the behavior to avoid unnescessary reconstruction of the tree table structure;

Simplified definition to allow changing the presentation of the profiling information more easily;

Implemented the execution bottleneck as a simpler tree table filter.

Added method allowing the list of equivalent functors ids to be retrieved from a script.

The Explorer panel also shows information about the number of times a functor was executed; It also now properly shows information when the loops run their steps simultaneously.

Comments; Changed the name of a renderer attribute for clarification.

Code clean up: removed some cumbersome methods withSubmodel() and withInternalScript() and its related types, and replaced them with simpler alternatives.

Added utility casts from dff.Functor to dff.SubmodelFunctor.

The Explorer panel now also shows information about the execution of submodels:

The Explorer panel corresponding to a submodel shows the aggregate CPU times of all submodel containing functors.

The times and number of executions corresponding to the whole submodel script (not individual functors) is estimated based on the information for its corresponding top level functors.

Improved some comments.

Included the state of the bottleneck button as part of the Explorer panel state that is shared among all instances of that panel.

Changed the calculation of bottleneck functors to exclude certain functors and be related to the number of functors of each script or submodel.

Changed policy when detecting bottleneck to ignore containers and “Step”s.

Fixed bug introduced by the Explorer reimplementation that was not correctly showing exported port information.

Changed name of the method refreshNodes() to be more consistent with the other names.

Code clean-up: removed unused code (the Explorer panel does not show tooltip for the script).

Fixed bug where clicking on either an internal port or a port connected to an internal port in the GraphFunctorDocumentationPanel would trigger an assertion.

Improved feature introduced in commit 240f6ed:

Refactored the code structure to enable the removal of multiple functors efficiently.

Reorganized the selection process to prioritize removal of carriers initially, eliminating the dependency on user-provided ordered selections.

Fixed bug: Prevented connection removal in Debugger mode.

Fixed bug where the search for functors in the Explorer window was not using the intersection of individual results as expected, and instead, it was using the union.

Changed the developer list in the About window.

Fixed bug where the detection of bottleneck functors in the Explorer window would incorrectly ignore certain costly functors after reimplementation.

Fix: Prevent createFunctor() from returning an existing functor with the same name

Resolved an issue where createFunctor() could return an existing functor with the same name, leading to potential conflicts.

Updated the lookup process to use functor ID instead of name, ensuring accurate identification and retrieval of the newly created functor.

Fixed bug: Update panels before displaying error message.

Changed how functor attributes (viewed/exported ports, breakpoints etc) are represented: now they are rendered in a separate column for more flexibility.

Fix a problem where non filename flags would prevent the reopen models dialog from showing

getFilenamesFromArgs is now static

Add a parameter to GenericLoader to terminate the application when an error occurs

Use text “Exit” on the error dialog (instead of “Ok”) when GenericLoader has an option to quit on error

Added command to automatically add carriers to expand connections between two functors:

Introduced CarrierRemapperAction to remap connections by adding an intermediate carrier functor (e.g., A --> B becomes A --> C --> B, where C is the carrier). This feature is exclusive to single, non-collapsed connections.

Added ScriptGraph.expandConnection method.

Added a new ScriptGraph.removeConnectionsOf method that accept a GraphFunctor instead of a Node.

Refactored several methods in ScriptGraph.

Added a return statement in ScriptEditorUtils.createFunctorOrSubmodelAndUpdateInterface method.

Generalized ScriptGraph.hasOnlyOneCompatibleInput to ScriptGraph.countCompatibleInputPorts.

Fixed behavior when copying/pasting comments between Comment dialong and extern text editors:

Corrected inconsistency in Clipboard operations with external editors (that don't use \r\n).

Refactored 'getDataFromText' method to handle content splitting using regex patterns supporting both \n and \r\n.

Changed carrier remapping behavior:

Removed compatibility restriction.

Implemented fallback mechanism to generate carrier functor based on both input and output port types.

`Fixed comments.

Initial light enum implementation

Improve usability by displaying a warning, fix the table wrap/jump, fix layout, improvements

Abstract and unify lightEnum capable editors in a separate class

Store lightEnum values only after the editors are confirmed (OK clicked)

Hide lightEnum button from Wizard editors

Keep the lightenum button visible only for supported and not forbidden ports

Remove the preferred size settings from some text fields to allow them to render properly

Replace the light enum capable editors to use GridBagLayout instead of BorderLayout fixing spacing issues

Rename symbols already renamed on C++

Cleanups

Fix WarningPanel layout problems

Remove the lightenum editor button when the editor is a message

Expose the lightenum editor button on the submodel export panel

Use the appropriate editor to only allow possible values on the light enum editor and to have at least one value when the checkbox is enabled

Add missing port value first on addRow and fix removeRow to use the correct index

Discard invalid values when pasting to the light enum editor dialog

Fix light enum editor dialog to only apply changes before closing with 'Ok'

Remove enabling/disabling components on light enum editor checkbox to allow users to fill the values even if the check is disabled

Fix editors to use an optional value when configuring the light enum combobox

Fixed error where the add and delete buttons of the light enum editor were not being disabled when the enum was not being used.

Merge branch 'light_enum'

Fix limitation from commit 240f6ed: Correct the way of checking compatibility instead of only comparing the port name.

Miscellaneous changes:

Fixed warnings (remove final from private method);

Removed redundant parameter (editor) to avoid possibility of misuse;

Added comments;

Removed unused properties (dialogSuccessful);

Used ComponentUtils.getWindowAncester() for consistency with other components.

Renamed method lightEnumEditor() for consistency;

Removed possibility of used the LightEnumEditorDialog with other editors than the LightEnumCapableValueEditor-derived classes.

Changes to the enumeration add button:

Clicking on the button now also suggests a unique name.

Simplified definition when suggested unique values and names.

Changed major version number to 8.

Light enum changes:

Fix a problem where the light enum button on submodel export would get disabled if the port wasnt optional

Introduce an extra validator to the light enum table cell to check for duplicate values

Add a check for unique string and integer values on the light enum editor

Handle a null port value on light enum editor to prevent crashes

Show version tag as part of the application window title.

Fixed several licenses and links to library dependencies.

Refactoring: redefinition of isValidFunctor() to avoid code duplication.

Refactoring: redefinition of getFunctorSourceId().

Refactoring: removed unused variable.

Refactoring: marked field as final.

Changed to the creation of graphical representation of a functor:

Added flag allowing the container (located at the coordinate where the graphical representation of the functor is being instantiated) to be ignored. Previously, the functor would always be added to the container located at the given coordinate;

Removed unused creation flag.

Changes to the Functor interface between the C++ and Java:

Clarified the behavior when the underlying functor becomes invalid, hardening;

Fixed documentation and comments to be more clear how the methods work;

Some code refactoring.

When propagating changes to the representation of one or ore submodels, make sure the issue panel and the explorer panel do not use references to functors that will be removed or changed while the operation is still in progress.

Enhanced submodel installation suggestions by integrating 'dff.DFF.retrieveUninstalledSubmodels'. Now, suggestions include uninstalled submodels from both the main model and local submodels, improving coverage beyond the previous limitation to the main model.

Changed behavior of the light enum representation flag to be “opt-in”: the input port that allows its content to be represented by light enums must mark itself as such - before the behavior was “opt-out”)

Fix bug where new edge was incorrectly associated with a collapsed edge.

Bug fix: Replaced assertion with a proper condition to handle cases where more a edge from the target functor is collapsed but does not connect to the specified source functor.

Removed unused method.

Refactored ScriptGraph.getFunctor() to accept Functor instead of FunctorID, simplifying method usage and reducing redundant ID lookups.

Fixed regression when copy and pasting functors caused by Functor.getPosition() not returning a coordinate even if the functor position is not defined.

Dinamica Image Viewer

Changed major version number to 8.

Dinamica NUI Utils (Graphical User Interface Utilities)

Refactoring: Replaced ForcedAssertion.check() with ForcedAssertion.fail() in try-catch clauses. This change ensures that crucial information, such as the origin of the exception causing the assertion, is retained.

Define variation of the Consumer functional interface that can thrown an exception.

Define variation of the Supplier functional interface that can thrown an exception.

Changed Runnable2 to be more consistent with the definition of Runnable [Removed return type]; use of Supplier2 when necessary.

Defined utilities to centralize the creation of the persistence check box menu items.

Defined utilities to centralize the creation of the persistence toggle buttons.

Defined utilities to centralize the creation of buttons.

Added method to reload the tree table when the content of the model changes; Changed name of the isEmpty() method to be more ortkogonal with the other models.

Added method and comparator to sort the children nodes of a tree table node; Added method to remove all the children of a tree table node.

Pressing ESC now will also cancel a choice dialog, if cancellation for that particular dialog is allowed.

Allow the user to replace the 'Ok' button text on the MessageDialogPanel

Changes required by light enum

Fix table wrapping to only occur on the last row of the table

Allow WarningPanel to receive a parameter to replace an existing warning text

Fix for WarningPanel replace function to recreate the panel based on a flag (fix layout issues)

Fix a lightenum combobox and add copy constructors to IntegerField and IntegerRangeField

Add proper documentation to EnumCombobox

Use optionals instead of integers for selecting key values

Merge remote-tracking branch 'origin/light_enum'

Miscellaneous fixes:

Refactoring: method reordering;

Renamed constant;

Fixed comment typo.

Fixed comments.

Changed major version number to 8.

Light enum changes

Add an optional extra dynamic validator to ValueField

Show cell editor dialog on invokeLater to prevent interrumpting other UI flow

Dinamica (Application Core and DLLs)

Replaced use of Boost type_traits with its std counterpart.

Replace use of static class member StringUtils with namespace.

Replace use of static class member LogTagInfo with namespace.

Fixed compilation warning: uninitialized variables, variable hiding previous definition and unused code.

Fixed potential bug that could cause a temporary map to be closed more then once when the file was being resized using the OS API.

Updated test case to be compatible with changes made to gdal_rasterize in GDAL 3.8.2.

Formatting.

Replaced the use of std::string with std::string_view in some ScriptUtils functions.

Simplified the definition of StringUtils::numerateTextLines(); Added optional parameter representing the format of each of its output lines.

Combined test utilities in a single separated file.

Comments.

Removed Instance Communication from Linux compilation process.

Introduce a faster CSV loader

Fix random test iterators

Add rapidcsv to linux run_cmake_config script

Add condition_variable include missing in TestExternalCommunication

Fix CMake references to rapidcsv

Refactoring.

Fixed bug: When the condition evaluated to false in IfThenFunctor, the sequenceOutput port data was not being correctly handled, leading to a data loss.

Refactoring.

Fix a problem where tables with a string column and numerical cells would be saved and loaded incorrectly

Fix saving tables that contain newline characters

Fix a problem were the fast table reader wasnt able to parse correctly escaped characters

Add new table tests and clean/improve the existing ones

Removed unused code.

Removed unused includes.

Added flag to control saving EGO scripts containing invalid connections:

Added and exported flag to Java.

Changed behavior of DefaultScriptWriter;

Clean up.

Fixed retrieval of equivalent functors after copies:

Fixed definition of findEquivalentFunctor().

Fixed documentation.

Fixed use case findEquivalentFunctor() in function prepareAndOptimizeScriptUsingAdditionalInfo() triggering assertions.

Restore the use of BOOST_ASSERT that was accidentally turned off at some point:

Added back definition of BOOST_ENABLE_ASSERT_HANDLER to enable BOOST_ASSERT.

Removed or fixed invalid expressions passed to BOOST_ASSERT.

Fixed cases where BOOST_ASSERT was correctly detecting invalid code.

Fix test failure in Debugger: Resolved issue in Debugger3 where the DebugWatcher failed due to incorrect initialization configuration preceding the execution of the secondary test (Debugging without breakpoint).

Improvements to RunExternalProcess:

Added output port to RunExternalProcess returning the exit code of the running process.

Fixed documentation.

Added test cases.

Enable DetermineWeightsOfEvidenceRanges reporting progress.

Enable DetermineWeightsOfEvidenceCoefficients reporting progress.

Added flag to change the behavior of DetermineWeightsOfEvidenceRanges when detecting possible-but-not-executed transitions:

Defined flag;

Added proxy to keep the previous behavior for existing model scripts;

Added test cases.

Added flag to change the behavior of DetermineWeightsOfEvidenceCoefficients when detecting possible-but-not-executed transitions:

Defined flag;

Added proxy to keep the previous behavior for existing model scripts;

Added test cases.

Added option to control sanitizing scripts when loading its content:

The sanitizing option removes properties related to ids and source ids from functors after parsing its content.

Exported definitions to java.

Fixed tipos in comments; Formatting.

Removed some slow test cases from the list of fast tests.

Added validation to make sure functor equivalence can always be established after copying a script; Added test cases.

Introduced new utility function to retrieve the representation of a specific local submodel from a main script factory:

Also, renamed orher related functions for better clarity;

Adapted test cases to use the new utility function;

Exported new function to java.

Reorganization and refactoring of Config.h.

Fixed bug caused by _DFF_LOG_INFO_ no longer being defined as a macro.

Fixed bug where reading a CSV table could fail using the new CSV parser.

Changed semantics of getPropertyValueAs() (and related functions receiving a default value) to also return the given default when the property value is ill-formed:

Also some refactoring for better code clarity;

Added test case;

Changed Java exports.

Optimization: Added explicit default values to check for property existence when retrieving their content, eliminating the need for repetitive exception handling.

Changed script in test case to avoid depending on external submodels.

Fixed bug in DetermineWeightsOfEvidenceContinuousOccurrences where the virtualized map was not being used when required.

Fix most of the warnings

Fix a Linux build problem for the new CSV fast reader

Fixed compilation error triggered by the use of the newest version of the rapidcsv library.

Changed name of the Proj4 package to be compatible with the newest vcpkg release.

Updated how profiling functor information is collected when running scripts:

Removed the use of locks when updated the profiling information for single functors.

Correctly handling of profiling information when loops run several steps simultaneously.

Exported relevant types to Java.

Allow exporting uint64_t and int64_t to Java; Fixed exporting uint32_t and int32_t that could be mapped to the wrong time.

Documentation: clarified that the input ID for getFunctorProfile() is the equivalent functor ID.

Code clean-up: simplified the casts to SubmodelFunctor that are exported to Java.

Profiling information is now also collected for submodels:

Changed the definition of profiling data to allow thread safe updates of same functors.

Changed the profiling data representation to store time as millisecond integers (related to the concurrency demands).

Updated the Java exports.

Discard the collected time profiling information when the execution ends in error or it is canceled to avoid presenting inconsistent information.

Fixed definition of macro _DFF_ON_WINDOWS_ that was not being defined in the right place.

Tidying up definition of port data types:

Fixed includes;

Fixed comments and documentation;

Fixed some data types being extended in the wrong way;

Changed the name of the some types and method to clarify use;

Removed some superfluous definitions.

Use of move semantics when defining data types; Proper initialization of basic types.

Fixed compilation warning: possibly uninitialized variable.

Proper use of assertion to validate the use of FilenameEditor::setFilename().

Simplified code by removing unnecessary call to filename() when retrieving the filename stem.

Defined method to allow copying the content of a FilenameEditor from another FilenameEditor (setCompoundFilename() / getCompoundFilename()).

Definition of a mechanism to convert the value of port data into their corresponding editors, when an editor for that data type is available.

Fixed bug where the relative path could be reported empty by FilesystemUtils::getRelativeFilename() when the working directory and the filename where not related; Added test cases.

Defined function to copy and isolate the content of a container (the function replaces the data transfered to the container content by external functors with the equivalent editors); Added test cases.

Added command line script to compile and then install the libraries and exes without having to rely on command prompt features.

Change Python initialization to use the isolated config.

Removed duplicated EDITOR_CHANGED event when setting port editors.

Fixed bug where the isolated copy of script with functors connected via data converters would perform invalid casts.

Refactoring: changed parameter name and removed replicated code.

Defined utility functor to verify if the a call to copyAndIsolateRunningContainerContent() will be successful.

Fixed typos in verification messages.

Added nodiscard declaration to prevent misusing Lock and LockOrYield objects.

Modified the behavior of ScriptUtils::findEquivalentFunctor() to find functors even if they are part of a submodel being used directly or indirectly by the original script.

Fixed UB (undefined behavior) when constructing exceptions.

Fix CalculateRExpression stderr strings going into the issues panel (errors from stderr are now treated as log info)

Merge pull request #6 from Centro-De-Sensoriamento-Remoto/fix_r_stderr_going_to_issues

Fix CalculateRExpression stderr strings going into the issues panel

Revert “Modified the behavior of ScriptUtils::findEquivalentFunctor() to find functors even if they are part of a submodel being used directly or indirectly by the original script.”

Generalize the functions in the findFunctorByAlias() family to allow searching for aliases within a specified container.

Fixed definition of operator<< for type MapIOHandlerMode that was not being properly exported.

Fixed passing checkTaskCancellation() to function calls.

Removed unused include.

Fixed comments.

Revamped Definition of Test Suites:

Standardized test suite names for improved consistency;

Introduced a new set of utilities to streamline test suite definitions, including functions like `logTestName()`, `parseScriptFromString()`, `parseScriptFromFile()`, `viewOutputPort()`, `areFilesEqual()`, `registerTemporaryFunctor()`, and others;

Added utilities to enhance exception handling in tests: `TEST_[CHECK|REQUIRE]_NO_THROW`, `TEST_[CHECK|REQUIRE]`, `TEST_[CHECK|REQUIRE]_EQUAL`, `TEST_[CHECK|REQUIRE]_CLOSE`, `TEST_CHECK_LOOKUP_TABLE_CONTENT`, `TEST_CHECK_LAYER_CONTENT`, etc;

Renamed `Test::runScript()` for clarity;

Removed unnecessary includes to optimize the codebase;

Refactored the structure of test files for better organization;

Reformatted test files for consistent styling;

Some other miscellaneous changes.

Removed costly table reading test from the fast test set.

Reapply “Modified the behavior of ScriptUtils::findEquivalentFunctor() to find functors even if they are part of a submodel being used directly or indirectly by the original script.”

Changed TransformMap test to make compatibile with the newest versions of GDAL.

Fixed compilation of test case on Linux and removed some unnucessary log messages from the test case.

Re-introduced parameter to Real::areClose() representing the explicit maximum absolute and relative error.

Fixed some compilation warnings.

Fix rapidcsv bug were a separator at the EOI would cause the column to be ignored

Added exception name to the information recorded when an exception is thrown inside TEST_[CHECK|REQUIRE]_NO_THROW.

Changed TEST_[CHECK|REQUIRE]_CLOSE to accept an optional maximum error value.

Switch definition of TEST_CHECK_LOOKUP_TABLE_CONTENT[_2]/TEST_CHECK_LAYER_CONTENT[_2] to simplify use.

Fixed test cases that were failing.

Refactoring test file for better organization of test macros and functions.

Fixed compilation warnings caused by the new test macro definitions.

added options in lookup table and layer tests to control the precision when checking for equality of values; Fixed test cases reporting failure

due to wrong precision.

Fixed error in tests when validating a lookup table result.

Removed the use of boost type traits when defining MathUtils: using std trype traits instead.

Fixed compilation warnings no GCC.

Fix cores detection using libcpuid on Linux

Include cpuid to CMakeLists.txt only on Linux

Force compile_commands.json generation on Linux

Remove logDebug from getSystemConfigurationFilePath to prevent an infinite loop when environment variables arent set on Linux

Add bash script to easily setup a dev environment on Linux

Add missing packages, update before installing and check for dinamica_dependencies

Normalize dev script name

Required changes for light enum support

Address review comments and add test for writing lightenum properties to submodels

Wrong settings from last commit

Improve light_enum test code

Fix missing include files on TestScript

Defined test macros TEST_[CHECK|REQUIRE]_THROW as an alias to the corresponding Boost macros for consistency.

Changed teste to use the new set of test macros.

Remove thread affinity from DFF::Timer and make it use std::chrono::steady_clock instead

Add pyenvironment verification using SHA256

Fix vcpkg warnings for updated boost versions

Make python initialization check the expected hashes when initialization fails

Add correct log conditions for python, enable verification on failure and clear error states no reinitialization

Change python initialization checks to throw an exception on failure after running checkPythonHashes

Merge pull request #5 from Centro-De-Sensoriamento-Remoto/python_verification

Python verification checks based on hash

Changed major version number to 8; Updated necessary information to match the version change.

Merge branch 'master' into fix_linux_processors_cpuid

Merge pull request #10 from Centro-De-Sensoriamento-Remoto/fix_linux_processors_cpuid

Fix linux processors cpuid and add a script to help setup a local dev env

Fix for the rapidcsv fix

Tests for the table loader rapidcsv fix

Fix rapidcsv changes

Fix linux build issues

Fixed compilation error using the version 11 of the fmt library.

Created a new utility to retrieve a list of uninstalled submodels.

Added the method 'retrieveUninstalledSubmodels' to obtain a list of uninstalled submodels referenced within a script, including recursively through local submodels.Implemented corresponding tests.

Made the 'BundleScriptUtils::getFirstFile' and 'BundleScriptUtils::extractBundle' methods public.

Modified 'BundleScriptUtils::readFile' to accept 'ScriptReaderFlags'.

Added a new ScriptReaderFlags 'SRF_IGNORE_LOCAL_SUBMODELS' to enable isolated script reading by treating local submodels as hollow functors.

Made the 'SubmodelUtils::collectLocalSubmodels' a public method and updated it to return a map of local submodel names and paths found within a specified directory.

Added missing include.

Changed behavior of the light enum representation flag to be “opt-in”: the input port that allows its content to be represented by light enums must mark itself as such - before the behavior was “opt-out”)

Bumped minimum CMake version to 3.30.

Replaced expression NOT MSVC with LINUX (available in newer CMake versions).

Fixed typo.

Fixed incorrect warning being emitted when the MergeSubTable had the flag allowNamesWithoutSubTables set.

Comments.

Specified the log subsystem in the debug messages issues when reading/writing images.

Fixed behavior when reading images without an associated null value:

Added test cases.

Null values are now assigned before reading the image to prevent NaN-related errors when the user provides a new null value.

Modified MapIOHandler::readMap()/readDataImpl() to accept an optional null value when the image doesn't provide one.

Added a method to the NullValue class to return the user-specified null value, packed as std::any.

Refactoring: clarified the definition of some method to test if a port is being exported, added documentation.

Defined port flag CAN_BE_IGNORED to allow output ports to be ignored by the script verifier if they are left unbound.

Updated version to 8.0.0 release.