What is new in stable version 8.11.0

(compared to stable version 8.11.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.

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.

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.

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().