Released on September 29th, 2026.
This version’s documentation.
This version contains an important breaking change to Modeler’s Grid Views. The semantics and SysideViews.sysml library for grid views have been changed. A workspace that keeps its own pre-0.11 SysideViews.sysml renders and edits those views exactly as before; the old notation is deprecated and will not be supported in a future release. Run the automated Migrate grid views to the 0.11 column notation to move a model forward, or see the migration guide: Migrate pre-0.11 grid views — Syside
The Automator Python library now ships a first batch of our higher level APIs. This brings three Python modules: syside.query to make it easier to ask questions about your model, syside.evaluation to make it easier to evaluate your models, and syside.testing to make it easier to write assertions against your models. You can find the user documentation for these changes here.
And Syside can now evaluate more of your model by supporting forAll, reduce, select and other control functions.
All Syside Tools
Features
- grammar: (breaking) Allow visibility on annotating members in
enum defs, changeframe concernbody to match other requirements for consistency - sema: (breaking) Add rendering usage naming feature to the referenced feature target if it is owned by view rendering membership
- validation: Diagnose invocation expression with unbound parameters (
invocation-expression-missing-arguments) - interpreter: Implement standard
selectandcollectfunctions and corresponding operators - sema: Extend
checkRenderingUsageRedefinitionto instead redefine inheritedrendermembers if they exist to avoidnamespace-distinguishabilityerrors - formatter: Use identifiers in the source to indent successions and transitions with explicit sources similarly to without
- printer: Indent shorthand successions if they succeed an empty succession in
fork/decideblocks - sema: Exclude required constraints when computing implicit requirement usage supertypes
- model: Make all usages owned by attributes non-composite automatically
- validation: Skip checking whether owned features are composite in
attribute-*-featuresnow that they are implicitly referential - model: Skip binding connectors when searching for owned cross feature
- conf: Add
lint.redefinition-end-conformanceoption - validation: Default
redefinition-end-conformancebehaviour to the new specification checking only redefining features owned by associations and connectors - sema: Revise multiplcity range expression type featuring to copy featuring types from the owning feature of the owned cross feature if one exists
- sema: Implement revisions from KerML 1.1 and SysML 2.1 ballots #3
- interpreter: Evaluate chained invocations in the scope of penultimate segment
- interpreter: Capture features from parent scope when invoking a feature with an owning type
- conf: Add
format.line-ending - interpreter: Diagnose common recursion cases on recursive evaluations
- validation: Diagnose specializations to self
- conf: Add
lint.type-specialization-not-self - dot: Italicize names of abstract not variation elements
- interpreter: Add evaluation trace to diagnostics as related information
- interpreter: Implement remaining control functions
- interpreter: Implement control functions with expression arguments
Bug Fixes
- viz: Fix that multiplicity part was not in
declif there were no other specializations - sysand,windows: Silence harmless
cannot find the path specifiedwarnings - sema: Fix that names could be resolved to deeply redefined features
- pipeline: Fix that invalidated documents could skip sema and validation stages
- grammar: Allow chained feature conjugations in KerML, and visibility on guarded successions
- formatter: Fix that indentation would be reset after
elsetransitions - interpreter: Fix error on empty input sequences to collect and select expressions
- fs: Fix globs with multiple recursive segments could fail to compile
- sema: Include implicit occurrence super types in port usage super types
- interpreter: Return owned feature references directly without evaluation
- printer: Assert KerML model when printing KerML-only connectors
Performance
- interpreter: Reduce the amount of temporaries created when evaluating classification expressions on metadata accesses
- sema: Add special case for
metaoperator expressions in sematic metadata evaluation - sema: Reduce sema preparation and reference resolution overhead
- model: Improve
Elementlayout to reduce memory usage
Miscellaneous Tasks
- platform: (breaking) Bump
x64-osxminimum version to 10.15 - windows: Fix issues when comparing paths as strings normalized to forward slashes
- deps: Update syside-license to 0.3.7
Modeler & Editor
Features
- Add option to resolve relative paths in links to make VS Code render images
- Include start byte point in documentation of anonymous elements
- Add opt-in path resolution in documentation links
Bug Fixes
- Do not send crash logs by default. Ask the user for explicit opt-in via a notification.
- Fix server crash on exit
- Exclude hidden files and directories from file events
- Place implicit specialization hints after portion kind modifiers
Syside Automator
Features
- reqif: (breaking) Deprecate the ReqIF library surface in favour of the CLI. All functionality still accessible through the CLI.
- reqif: (breaking) Change absolute paths to attachments into relative paths
- reqif: (breaking) Reject
--attachments-dirat the workspace root - reqif: (breaking) Only package attachments into
.reqifzfile that are actually referenced in the exported elements - reqif: Map ReqIF concepts from multiple exchanges onto one SysMLv2 ontology. Docs: Linking an existing ontology — Syside
- query: Add query API, primitives, and pytest assertions. Docs: Query API — Syside API Reference: query — Syside, evaluation — Syside, testing — Syside
- reqif: Extend name mangling for deduplication to target more than just requirements
- reqif: Add
--newline {auto,native,lf,crlf}toimport,init,lockandlink applyto choose the line endings of generated.sysmlfiles; the default,auto, keeps the line endings each file already has - reqif: Extend name mangling for deduplication beyond requirements, to duplicate enum values and attribute defs, and to attribute defs that clash with or shadow an enum def
- grid views: Add
syside.grid.write_csv(model, output_dir)andsyside grid exportto export a model’s table and matrix views to CSV, with the same file names and messages as the Modeler CLI’ssyside table export - Add
Lint.invocation_expression_missing_arguments - Change
Urlto raiseValueErrorinstead ofRuntimeError - Add
CstNode.text()method to get the text from the associatedTextDocument - Add options to
viz.Label.declto skip some parts of the declaration - Deprecate
Sema.resolveoverload accepting mutexes - Deprecate
LazyIterator.__getitem__for performance reasons, replaced with explicitget - Add
conf.InlayHints.succession_sources - Add
Lsp.hover - Add
ide.resolve_relative_md_links - Add
Lint.redefinition_end_conformance - Add
version.tagfor prereleases - Add
conf.Format.line_ending - Add
Compiler.recursion_depth - Add
conf.Lint.type_specialization_not_self - Add
escapesoption toviz.Label.decl - Add
nestedoption toviz.Node.style - Add
viz.NodeStyle.italicize_names - Add
viz.Label.suffix - Disable crash report upload by default
- Add
util.discard_redefined_features(Forum post: 574)
Bug Fixes
- reqif: (breaking) names travel in ReqIF.Name; LONG-NAME is no longer a name carrier
- reqif: (breaking) Stop losing attachment references in ReqIF round trips
- reqif (breaking): Write exported
.reqiffiles andlink --outputmappings with Unix line endings on every platform, and keep the existing line endings of generated.sysmlfiles instead of always writing Windows line endings on Windows - reqif: Tolerate enumeration attributes with no
<VALUES>child - reqif: Stop delta import reporting unchanged elements as changed
- reqif: Handle enum attributes with no selected value
- packaging: Include ipython extra in all
- cli,windows: Fix that formatted files would always contain carriage returns
- cli: Fix crash when using
check --statswithout any documents to validate
Docs Tasks
- Insert deprecation messages into docstrings
- Add documentation to enum members
Modeler
Features
- grid views (breaking): New SysML semantics for table views. Please visit the documentation website for a migration guide: Migrate pre-0.11 grid views — Syside
- grid views (breaking): Remove
includeLibraryElementsfor grid views; standard library elements are now excluded automatically. This is the one pre-0.11 setting that is not honoured against an old workspace copy — the line still parses there but has no effect - grid views: Add Migrate grid views to the 0.11 column notation, which previews and then applies the migration and replaces the workspace
SysideViews.sysmlin the same operation; - grid views: Add Add legacy (pre-0.11) SysideViews.sysml to workspace, for models that still use the old column notation and have no workspace copy to fall back on
- grid views: Mark a column still written in the pre-0.11 notation with a warning in its header, naming the setting it uses and the
columnFeature/featureRepresentationthat replaces it, so a view can be migrated one column at a time - grid views: Add bulk cell editing by dragging a cell’s fill handle over a range in table views
- grid views: Add a list editor for attributes holding a list of numbers in
attributeValuecolumns, with entries separated by; - grid views: Add requirement creation from hierarchical table views via the right-click context menu
- grid views: Save cell edits and view layout changes (column order, widths, filters) in a single save
- grid views: Add Go to Row Element and Go to Cell Element to the cell context menu, and Go to column view usage to the column header
- grid views: Show save progress in view banners and lock views read-only while a save is in progress
- grid views: Update an open view panel in place when the view’s type changes
- grid views: Confirm before discarding pending cell edits in the row details dialog
- grid views: Add the
directioncolumn representation, showing a feature’s explicit SysML direction (in,outorinout) - grid views: Add collection columns that split a row into one sub-row per item
- grid views: Expose the tree column of hierarchical table views as
hierarchicalColumn, so its label can be configured - lsp: Disable implicit specialization inlay hints on successions that contain no declaration other than the ends
- lsp: Add inlay hints for implicit succession and transition sources
Performance
- grid views: Improve performance of content saves
Bug Fixes
- grid views: Fix the regression that broke creating attributes from
attributeValuecolumns - grid views: Fix a “model changed on disk” error when editing a view after a file was rewritten with identical content
- grid views: Stop reporting the model as changed on disk when the change was the view’s own save
- grid views: Report unresolved views with a Refresh action in the SysMLv2 Views panel, instead of claiming the model contains no views
- grid views: Fix feature value columns failing on expressions that need many evaluation steps
- grid views: Only save
columnOrderto the view when the columns were actually reordered - grid views: “Export as CSV” now offers the file name the command line writes, based on the view’s qualified name (
Pkg::Overviewis offered astable-Pkg__Overview.csv), and no longer leaves a truncated file behind when the write fails part-way through - grid views: “Overwrite with bundled version” now refuses when the
SysideViews.sysmlit would replace belongs to a sysand package that is not editable, naming the package instead of rewriting a file thatsysand syncmay restore or reject - Report malformed license keys before any modeling work, naming where the key came from (the keyring, an environment variable, a
.envfile or a key file) and how to correct it - Fix downloading Syside tools directly from keygen.sh; previously only downloads through the Sensmetry proxy worked
- Fix installing Python and Syside Automator behind corporate proxies that inspect TLS traffic (
invalid peer certificate: UnknownIssuer): the bundled uv now trusts the operating system’s certificate store andsyside.modeler.tlsCerts. The newsyside.modeler.useSystemCertificatessetting (on by default) can be turned off to make uv use its own built-in certificates instead
Modeler CLI
Features
- viz: Add ability to hide connection elaboration nodes (
[viz.filters.<VIEW>].show_connection_elaborations, or theshowConnectionElaborationsview attribute) - grid views: Accept
syside gridas another spelling ofsyside table; scripts callingsyside tablekeep working - Print a warning when no files were found for validation under the given path(s)
- Use
format.line-endingfor formatting, defaulting toauto - Add
--line-endingoption toformatcommand - viz: Support recursive imports in models
- viz: Load
.kermlfiles into the model - viz: Show quotes in declarations of names that need them (for example, names with spaces)
- viz: Add ability to customize the style of edges and boundary elements
- viz: Add ability to customize styles per metadata tag
Bug Fixes
- grid views (breaking):
syside table exportnow names each CSV after the view’s qualified name (Pkg::Overviewwritestable-Pkg__Overview.csvwhere it used to writetable-Overview.csv), so two views sharing a declared name no longer write to one file and silently replace each other’s rows. Scripts that open exported files by name have to be updated, and files left by earlier exports are not removed. Names are kept to 100 characters by default;--max-file-name-lengthchanges that - viz (breaking): Exit with code 4 when there is nothing to draw: a model with no matching view reports
Error: no views matched the model.(previously a warning and exit code 1), and a view whose elements are all filtered out writes no file (previously an image was written and the exit code was 0) - grid views: Keep letters and digits of every script in exported file names instead of replacing them with
_, and leave the quotes a name is written with out of the file name - grid views: A failed export no longer leaves a truncated CSV behind: each file is written beside its destination and moved into place only once it is complete
- viz: Name the segment that failed to resolve in “not found” errors (
Element 'X::Y' not found: segment 'Y' not found in namespace 'X') - viz: Fix rendering a model with several hundred files; on Windows the failure was reported as a misleading “The filename or extension is too long” error
- viz: Fix duplicated and incorrect routing of inherited specialization edges
- viz: Render transitions in action flow views
- viz: Fix inherited sequence views not drawing
- viz: Fix
--zoom-levelbeing ignored - viz: Fix
forloop compartment rendering - viz: Fix self-loop endpoints drawing at incorrect ranks (sequence view)
- viz: Fix text and edge overlaps (sequence view)
- viz: Fix some inherited library elements not being filtered out
- viz: Fix recursive expose (
::**) not drawing inherited members - viz: Fix models without a top-level package failing to render
- viz: Fix a crash caused by incorrect type inference
- viz: Fix drawing of inherited members in
flatexpose mode - viz: Draw succession edges with a dashed line (action flow view)
- viz: Ignore unknown keys in
[viz]config entries instead of failing with an error - cli,windows: Fix that formatted files would always contain carriage returns
- Fix crash when using
check --statswithout any documents to validate