Changelog

This is SysIDE Pro software version changelog. Below is a table containing information about which SysIDE tools support which SysML v2 version:

SysIDE version overview

SysIDE Tool

Current version

SysML v2 version

Editor

0.9.0

2024-12

Automator

0.6.2

2024-12

Modeler

0.6.2

2024-12

Note

Note SysIDE Pro is versioned using the Semantic Versioning 2.0.0.

SysIDE Pro 0.6.2

Modeler

Warning

The changes below refer to the Modeler native IDE experience, which is still in beta and disabled by default. To enable it, set the Syside: Enable LSP option to true in the Modeler settings.

Features
  • (parser) Diagnose invalid escapes instead of erroring in the grammar

  • (printer) Print string literals as multiline strings while preserving explicit line break escapes

Bugfixes
  • (linker) Fix crash when linking references through error nodes on new CSTs

  • (stdlib) Fix Occurrences::surroundedByOccurrences to not have end features to match upstream

  • (sema) Do not report additional internal errors due to unresolved references

  • (lsp) Fix crash in reference completion

Revert
  • Allow multiline string literals again

Automator

Features
  • (parser) Diagnose invalid escapes instead of erroring in the grammar

  • (printer) Print string literals as multiline strings while preserving explicit line break escapes

Bugfixes
  • (linker) Fix crash when linking references through error nodes on new CSTs

  • (stdlib) Fix Occurrences::surroundedByOccurrences to not have end features to match upstream

  • (sema) Do not report additional internal errors due to unresolved references

Revert
  • Allow multiline string literals again

SysIDE Pro 0.6.1

Modeler

Features
  • (IDE) Introduce a beta version of Modeler native IDE experience that replaces SysIDE Editor. This experimental feature can be enabled by setting “Enable the LSP server” to true.

Bugfixes
  • (visualization) Fixed regression in visualizing nested ports

Automator

Features
  • (validation) Diagnose invalid quantity operator expressions

  • (compiler) Add support for constructor expressions to syside.Compiler

  • (crash-handler) Switch to cpptrace to generate better traces on crashes

  • (parser) Improve error recovery by allowing some extra unexpected tokens

Bugfixes
  • (ide) Highlight variant features as enum members, variations - as enums

  • (ide) Fix highlighting of non-final reference segments

  • (core) Fix validation checking some unused nodes if a document was reparsed

  • (kerml) Disallow parsing of owned multiplicities in connector ends

  • (sema) Implicitly recursively resolve linked metaclasses if not importing by name

  • (sema) Diagnose invalid owned cross-features when there is no opposite end feature

  • (printer) Do not print implicit namespace children

  • (pipeline) Fix stage durations showing time since epoch if the stage was skipped

  • (model) Fix crash when resetting ConjugatedPortTyping target reference

  • (sema) Fix name resolution inconsistency around redefinitions due to redefinitions being recorded too late, allowing some names to be resolved when they should not have been

  • (sema) Fix spurious name resolution errors when specializing types through aliases

  • (pipeline) Fix documents not being deleted if they were also invalidated, change invalidation to highest wins instead of first

  • (grammar) Disallow new-line characters in strings and unrestricted names

  • (sema) Resolve elements and references in error subtrees

  • (model) Fix Namespace::member[ship]s to include inherited members if called on Type

  • (interpreter) Fix metadata annotatedElement to return metaclasses of the annotated elements, rather than the elements directly

  • (sema) Evaluate SemanticMetadata in the scope of the metadata usage to support expressions conditional on annotatedElement

  • (ide) Highlight metadata conditionally as a keyword or an operator rather than always the latter

SysIDE Pro 0.6.0

Modeler

Core
  • (licensing) Replace EAP accounts with SysIDE license keys

  • (visualization) Updated SysMLv2 viewer to version 1.1

Bug fixes
  • (visualization) Fix a crash when trying to visualize large files

  • (visualization) Detect when Tom Sawyer visualization server stops and offer to restart it

  • (visualization) Fix import edge direction

  • (visualization) Fix visualization of subsetting

Automator

Features
  • (python) Integrate license checker

  • (interpreter) Add evaluate_feature method to evaluate possibly redefined features without searching for feature value expressions

Bugfixes
  • (python,osx) Fix generated build version to be a string on versions <11.0

  • (fs) Fixed that decode_path did not handle relative file URLs

  • (pipeline) Fixed that validation tier constraint was not ignoring higher tiers

  • (sema) Fix crash when resetting Subclassification reference with an invalid placeholder type

  • (ide) Fix crash when attempting to highlight error nodes

  • (textdocument) Fixed that position_at always returned UTF-8 encoded characters if offset was out of bounds

  • (fs) URL encode : in absolute Windows paths to %3a

SysIDE Pro 0.5.4

Modeler

Platform
  • (windows) Use SysIDE Automator v0.5.4, which has no more dependency on C++ Redistributable

  • (osx) Use SysIDE Automator v0.5.4, which supports lower MacOS versions

Automator

Features
  • (textdocuments) Add move method

  • (textdocuments) Return the TextDocument that was closed

  • (version) Add build timestamp

  • (textdocuments) Add find_or_open method

  • (posix,crash-handler) Print loaded dynamic modules on crash to be able to resolve absolute function addresses from stripped binaries

  • (windows,crash-handler) Print loaded modules on crash similarly to Posix handlers

  • (python) Add sema_reset functions to reset element and document states to unresolved

  • (python) Add invalidated argument to Pipeline.schedule to build those documents by first resetting sema

Bugfixes
  • (python) Fix formatting of platform errors

  • (python) Fix typos in _platform.py

  • (textdocument) Sanitize text edit range before computing tree edit

  • (python,linux) Check platform.platform() for glibc version first, adjust warnings stacklevel

  • (model) Add missing standard Relationship variant types

  • (serde) Fix that non-Relationship ownedRelatedElements were treated as owned children

  • (assertions) Do not use colours if stderr is not an interactive terminal

  • (python) Fix version check to return True newer major versions

Documentation
  • (python) Fix rendering of inline literals followed by text

  • (python) Removed mentions of C++ and Rust

Platform
  • (windows) Link against C++ runtime statically, no more dependency on C++ Redist

  • (osx) Link against upstream libc++ statically, lower deployment target

SysIDE Pro 0.5.3

Modeler

Features
  • (visualization) Add a setting (interactiveZoomReversedDirection) to reverse the direction of the interactive zoom (activated by the scroll wheel when the mouse pointer is over the visualization)

  • (ui) Clarify the names and descriptions of commands and settings

Bugfixes
  • (visualization) Fix not visualizing files inside folders whose names end with sysml or kerml

  • (visualization) Support visualization of larger files

  • (visualization) Report an error when the file is too large to be visualized instead of crashing

  • (startup) If operating system rejects the certificate of the Tom Sawyer license server, use custom validation

  • (startup) If cannot resolve the IP address of the Tom Sawyer license server using the default DNS, use Google’s public DNS instead

  • (startup) If cannot reach the Tom Sawyer license server via HTTPS, try reaching it via HTTP

Automator

Features
  • (document) Add version that tracks source and sema versions

  • (executor) Add num_workers to query the number of worker threads

  • (ioschedule) Do not load sources from duplicate URLs

  • (document) Add method to change document tier after construction

  • (schedule) Add option to disable validation on documents from external libraries

  • (ioschedule) [breaking] Add tier option when adding files and propagate it through callback

  • (python) Add syside.preview module with proposal for an upcoming higher-level Model API

Bugfixes
  • (fs) Normalize paths in make_file_url, use file: instead of file:// for relative paths

  • (fs) Fix crash when attempting to read empty mmapped files

  • (serde) Constrain all non-derived duplicate attribute names to only be used with certain element types

Documentation
  • (python) Small tweak to the documentation of syside.json.loads

SysIDE Pro 0.5.2

Modeler

Bugfixes
  • (startup) Fixed sometimes non-deterministically failing Python version check

  • (startup) Recognize when SysIDE Automator fails to start due to corrupted installation of Visual C++ Redistributable and show an actionable error message

  • (startup) Fixed failing to load Tom Sawyer visualization when running on GitHub Codespaces in a browser

Automator

Features
  • (python) Add ide module, with semantic highlighting functions

  • (validation) Add warning for shadowing in the global namespace

Bugfixes
  • (textdocument) offset_at should not include end-of-line characters

  • (printer) Fix PortUsage not printing its multiplicity part

  • (printer) Disallow printing any modifiers except abstract on MetadataDefinition

  • (printer) Fix ReferenceUsage not printing ref keyword when usage declaration is empty

  • (model) Recursive imports no longer recurse into unowned members and ignore implicit specializations

  • Always construct executors with at least 1 worker

  • (sema) Fixed that found unresolved memberships by reference were not queued for resolution

Performance
  • (sema) Do not reset name resolution caches when searching another scope for the same identifier

  • (sema) Cache all visited namespaces during name resolution, improves sema performance by ~40% on SysML release examples

Documentation
  • Added semantic highlighting to SysML and KerML code blocks

SysIDE Pro 0.5.1

Modeler

Bugfixes
  • (Tom Sawyer Visualization) Fixed the bug Save as Image dialog always producing too low resolution images regardless of the selected option in the Resolution dropdown

  • (startup) Automatically use operating system’s proxy settings for Tom Sawyer visualization

  • (startup) Fixed failing to load Tom Sawyer visualization when using remote VS Code via SSH

  • (startup) Recognize when Tom Sawyer server fails to connect to the license server due to blocking firewall rules and show an actionable error message

  • (startup) Recognize when Tom Sawyer server fails to connect to the Tom Sawyer license server due to corrupted Java certificate store and show an actionable error message

  • (startup) Recognize when SysIDE Automator fails to start due to missing or outdated Visual C++ Redistributable and show an actionable error message

  • (startup) Lower minimal supported VS Code version to 1.90

Automator

This release had changes only in the Modeler.

SysIDE Pro 0.5.0

Modeler

Introducing SysIDE Modeler - a Visual Studio Code extension to enhance your SysML v2 modeling experience even more!

Modeler introduces code-to-diagram view, allowing you to generate and view your SysML v2 models as diagrams. Code-to-diagram view is powered by our partners Tom Sawyer Software.

To get started with SysIDE Modeler, please refer to the Modeler section

Automator

Platform Support
  • Add support for Python 3.13 and newer

  • Add support for MacOS with Intel processors (x86-64 architecture)

Features
  • [breaking] Update to 2024-12 specification version

    • Changelog for the 2024-12 release can be found here (SysML v2 release) and here (Pilot Implementation)

    • Implicit owned cross feature subsettings may not always be fully resolved according to the specification. This should not affect validation or name resolution.

  • [breaking] More uniform accessors for editing the model

  • Add clear to relationship children accessor

  • Add replace_at method to DependencyEnds

  • Always serialize name and short_name if they are different to respective declared names

  • Add option to ignore discard subtrees of implicit relationships when printing sexp

  • (python) Add sexp overload with keyword arguments

  • (serde) Change JSON to include cross-reference URIs in its output by default

  • (python) [breaking] Add JSON string deserialization, unify some (de)serialization structures

  • (diagnostics) Print the last horizontal glyph as space

Bugfixes
  • (python) Bind AstNode.__hash__

  • (windows) Replace broken <cctype> functions which treated some unrestricted identifiers as regular identifiers

  • Dependency multiple clients and suppliers were resolved in reverse order

  • OwningMembership now always returns empty owned_relationships

  • Resolved Annotation target references not updating owning AnnotatingElement about container

  • (python) Add constructor for SexpOptions

  • Parser accepting ; as an empty ReferenceUsage

  • (serde) Properly escape unicode in JSON string values

  • (python) Copy SysML README and LICENSE to build dir

  • (sema) Implicitly redefine all inherited end features, not just those from associations and connectors

  • Nary programmatic connectors were printed as binary

Documentation
  • Restructure documentation according to the new SysIDE Product structure

  • (python) Expand on some API design choices

Styling
  • (python) Fix ruff format error

SysIDE Pro 0.4.2

Features
  • Improved parser errors, keywords are no longer accepted as identifiers

  • Add option to export cross-reference document URIs in JSON

  • (python) Add tuples and aliases of types matching standard types as STD and Std respectively

Bugfixes
  • (windows) Fix invalid utf8 error with some UTF8 paths during conversion to Url

  • (python) Fix mypy/pyright issues in native modules

  • Always cache referent as FeatureReferentExpression result instead of referent result when it is an Expression

  • (python,windows) Before importing native Python module, check more dependencies, reduce the number of false-positive warnings

SysIDE Pro 0.4.1

Features
  • (python) Add platform checks before loading native module

Bugfixes
  • Check type guard expressions as returning booleans

  • Percent encode Unicode characters converting path to URL in make_file_url

  • (printer) Replace programmatic ConjugatedPortTyping references with original port definitions

SysIDE Pro 0.4.0

Features
  • Diagnose inherited names ambiguous with owned names

  • [breaking] Cache more standard elements needed for type inference, replace scalar_quantity_value with Stdlib.tensor_quantity_value

  • [breaking] Tag expression result type, infer guarded type in select expressions

  • Extend standard library cache with the remaining scalar value types

  • (python) Make printer optional in pprint

  • Prettier Element stringification

  • Treat some standard library functions as operators and generic functions for type inference

  • Add type checking for feature values

  • Update to 2024-11 release, adding TerminateActionUsage

Bugfixes
  • Expression result type inference fixes

  • Skip owning expression trees when resolving references in body expressions

  • Expression.result considers results inherited by its function, add Function.any_result that considers inheritance

  • Crash on resolving some empty references

  • Continued usage typings not accepting conjugated port typings

  • Constructor expressions not redefining type features

Documentation
  • (python) Change docstrings to reStructuredText

  • (python) Inline code fixes

  • (python) Fix stubbed overloads not rendered in API reference

  • (python) Fix intermediate names shown in API reference

  • (python) Fix imported symbols from hidden submodules not rendered in API reference

  • (python) Organize symbols in syside package into sections

SysIDE Pro 0.3.2

Bugfixes

SysIDE Pro 0.3.1

Features
  • Improve annotating element body and multi-line note formatting

  • (python) Add CLI format command

Bugfixes
  • Differentiate default interface ends from explicit end port usages

  • Fix printing multiple dependency clients and suppliers

  • Print inner null expression notes inside brackets

  • Fix assume and require not treated as keywords in SysML

  • Do not print parameter direction

  • Fix usage children joined too early

  • Do not break fitting item features

  • Break binding connectors after =

  • Treat implies expressions as other similar logical expressions for flattening and parentheses

  • Redefine related features from all direct supertypes rather than the first

  • Don’t add an implicit specialization if a type already conforms to the base type

  • Implicit ItemFlow and FlowConnectionUsage supertypes, and supertypes based on owned feature typings

  • Building AST nodes out of order

  • Construct an empty target in assignments to correctly redefine implicitly inherited parameters

  • Implicitly redefine all inherited return parameters

  • Ignore non-public members for document exports

  • Implicitly redefine all inherited objective members

  • Check every general type of owned specializations when resolving redefined feature reference

  • Implicitly specialized types not always fully resolved before redefining related features

  • Disable abstract non-parameter behavior feature redefinition since it is not in the spec

  • Item flow ends not assigned implicit names

Documentation
  • (python) Update documentation of the JSON API

Performance
  • Improve heritage walk

SysIDE Pro 0.3.0

This release adds JSON serialization for SysML v2 models, as well as a command line interface. SysIDE Pro now also supports SysML v2 2024-09 version.

Features
  • Update standard library to 2024-09 from 2024-05 release

    • Changelog for the 2024-09 release can be found here

    • Changelog for the 2024-07 release can be found here

  • Add JSON string serialization

  • Implement standard element ids to match pilot implementation

  • Add qualified name type with stringification

  • Add cutoff and attach_comments options to pipeline schedule

  • Add ParameterMembership::parameter_direction operation

  • Add missing standard attributes

  • Implement is_model_level_evaluable evaluation during semantic analysis

  • (python) Add basic json submodule

  • (python) Add CLI entrypoint to syside Python module

  • (python) Add Environment for model loading

  • (python) Return uuid.UUID from Element.element_id, make it writable

  • (python) Use cached standard library

  • (python) Use default executor instead of constructing one every time

  • (python) Add filename and severity based accessors to Diagnostics

  • (python) Add Document creation overloads with named arguments

Bugfixes
  • Ensure that implicit AcceptActionUsage payload parameter direction is inout

  • Expression cached result types were not reference counted, and all_nodes were returning Dependencies for all types

  • Some expression argument notes were lost during formatting

  • (python) Fix crash when returning null Document.text_document

  • (python) Fix crash when cloning StaticIndex

  • (python) Add missing optional typings from optional function arguments

Documentation
  • Add new “JSON Export” example

  • Expand “Extract documentation” and “Extract parts” examples to show how to use SysIDE’s new CLI interface

Platform support
  • (linux) Build and link against static libc++, lower glibc version requirements

  • (linux,osx) Do not reexport symbols from linked static libraries

SysIDE Pro 0.2.0

This release adds Python API for building & writing SysML v2 models.

Features
  • (python) Add string parsing for documents

  • (python) Add Python API for programmatically building and modifying models.

  • (python) [breaking] Construct new documents with mutexes so that thread-safety can be inferred

  • Improve error messages shown when *.sysml or *.kerml file fails to open.

  • Add option to disable validation

  • Add garbage collector for documents

  • Add support for generating textual notation from programmatically constructed abstract syntax.

Bugfixes
  • Ensure that caching is done after all corresponding model documents have been parsed irrespective of their actual language, e.g. KerML and SysML

  • Fix infinite loop on circular imports

  • Always print up-to-date reference segment identifiers

  • Fix empty single line notes matching text on next line

  • Make Element::owner follow standard, old owner is available as scoped_owner

  • FeatureReferenceExpression and TriggerInvocationExpression not forwarding evaluation to owned expressions

Documentation
  • Updated the design of documentation

  • Added new Examples Collection

  • Added installation update without virtual environment (“.venv”)

  • Added instructions on how to upgrade SysIDE after release

  • Added FAQ section

  • Added API Reference section

  • Added update section

Terms & Conditions
  • Added a section covering data usage

SysIDE Pro 0.1.0

Initial release