What is new in stable version 8.11.1

(compared to stable version 8.11.0)

Build & Infrastructure

Fixed vcpkg to work correctly when installed in paths containing spaces.

Logging Improvements

Standardized debug logging across functor execution and test subsystems, including a new `TABLE_HANDLING` and `TEST` log subsystems.

Code Refactoring

Introduced `ExtractStructFunctor` as a shared base class for `ExtractStruct` variants, centralizing banner logic (`hasBanner`/`getBanner`) and reducing duplication.

Cleaned up unused definitions.

UI & UX Enhancements

Added type icons to Region Manager, Table Manager, Execution Policy, and Log Policy for easier visual identification.

Port editor now shows an error icon when a non-editable port is disconnected from any functor.

Improved some tooltips and messages for better clarity.

Add information about the zeroMQ library that was missing from the application About dialog.

Define presentation banner to functor AddTableColumn showing the table column name being used.

Bug Fixes

Fixed output/error redirection to occur after app initialization, preventing spurious warnings from appearing in the message log.

Fixed a crash caused by the C++ table representation being accessed by the UI after it had already been destroyed.

Fixed a bug where the user folders returned by asking ApplicationUtils might not exist.

(compared to stable version 8.10.0)

New Features

Database & Submodel Store

SQLite database support was introduced for storing submodels, replacing the previous file-based approach. This includes a full submodel database with query functions, checks for duplicate entries during installation, and JSON metadata storage.

The submodel store also gained parallel downloads, a 10-second connection timeout, and the ability to display installed submodel info without an internet connection.

URLs were also updated to use HTTPS where possible.

Image Support

Support was added for zstd-compressed TIFF images.

A warning was introduced for loss of GeoTIFF category colors when using non-UINT8 cell types.

Logging Subsystems

New log debug subsystems were added: DATABASE (exported to Java), TABLE_IO_HANDLER for table I/O operations, and MAP_HANDLING for map manipulation.

Existing log calls were standardized to use the appropriate subsystem variants throughout the codebase.

Nullable Port Grouping

Nullable input port editors can now be grouped so they enable and disable together, with their checkboxes kept in sync within the same grouping. This was applied to the LoadMap, LoadCategoricalMap, TransformMap, and RasterizeShape functors.

Bug Fixes

OneDrive folder file-creation check incorrectly reported errors on Windows — now uses the native Windows API. A filesystem test was added to verify writing to and reading from OneDrive folders.

Linux file status was sometimes reported incorrectly.

Uninitialized m_string field in variants.

Crashes when parsing invalid tables embedded in scripts.

Nullable port editors failing to retain their empty state.

Wrong flag being passed when reading scripts in the interface.

Ctrl+C being handled by the wrong focused UI component.

Functor Explorer updating before the Issue Panel was initialized, now prevented by assigning a scheduler immediately on load.

ReadOnlyTables causing incorrect results during Map calculation.

Debug watcher not capturing exceptions on the analyzer thread.

Validation messages not properly showing the names of expression identifiers.

Two regressions caused by earlier commits: a port name misspelling and a naming conflict, both subsequently fixed.

Empty table with subtables failing to return rows.

Incorrect version of the Synthetica Look and Feel displayed in the About dialog.

Fixed bug where validation of Get Table Value would prevent changing the input keys.

Fixed crash caused by corruption of property keys when reading certain models.

Performance & Robustness

DetermineTransitionMatrix is now more numerically robust — near-zero Eigen eigenvalues are clamped to zero to prevent invalid fractional root operations.

The resource profiler now skips registering small maps to prevent UI congestion, and the number of registered resources in the UI is capped to prevent lock-ups.

Table validation was refactored to support multiple formats via a new TableFormat alias.

A warning was added for large tables in editors due to performance impact from table copying.

Exception details are now included in native compilation error reporting.

Fixed regression that was making compiled expressions accessing tables to run much slower than their non-compiled counterparts.

UI & UX

Instantiating an experimental functor now prints a warning in the message log.

Large table warnings now surface in editors via the new Verifiable interface on DataEditor.

Added missing criteria to search for hollow and deprecated functors when using the Explorer and Issue Panel.

Testing

Several new test cases were added across the codebase:

Compilation of image expressions accessing tables.

GetTableValueFunctor behavior.

DetermineTransitionMatrix with near-zero eigenvalue inputs.

Editor verification for TableEditor and LookupTableEditor.

Linux test execution now guarantees that required files are in place before running.

Documentation & Housekeeping

Version bumped to 8.11.0.

Copyright updated to 2026.

README updated.

Fixed method documentation that incorrectly referenced Propertiable::createProperties().

Fixed a mixed parameter name in method documentation.

Fixed a typo in the method name addCheckBox().