Holarch

For developers

Holarch Language Engine

A language engine for SysMLSystems Modeling Language A graphical modeling language for systems engineering, based on UML, with block, activity, state machine and parametric diagrams. v2 and KerML, available for licensing.

The engine behind Holarch's SysML v2 projects, for your own product. It parses, resolves, checks and evaluates SysML v2 and KerML text, and runs in the browser as WebAssembly or on your server.

// Request
{ "op": "analyze",
  "text": "package P { part a : Engine; part b }" }

// Answer (tokens left out)
{ "diagnostics": [
    { "code": "syntax.expected-token",
      "args": { "expected": ";", "found": "}" },
      "range": { "from": 35, "to": 35 },
      "severity": "error" },
    { "code": "name.unresolved",
      "args": { "name": "Engine" },
      "field": "typedBy",
      "range": { "from": 21, "to": 27 },
      "severity": "error" } ] }

A real request and answer from the engine's integration guide: one syntax error and one name that does not resolve, each with a stable code and the exact range in the text.

Who it is for

Teams that want SysMLSystems Modeling Language A graphical modeling language for systems engineering, based on UML, with block, activity, state machine and parametric diagrams. v2 text in their own product without writing and maintaining a language implementation.

Tool vendors

Add SysML v2 editing, checking and import to a modeling, diagramming or architecture tool.

PLM, requirements and simulation products

Read SysML v2 models, follow requirements and values with units, and exchange models with other tools.

Internal engineering tool teams

Check models in review pipelines, generate reports, and give engineers a SysML v2 editor inside company tools.

What it does

One engine for the whole path from text to a checked model, with JSON in and JSON out.

Parse

SysMLSystems Modeling Language A graphical modeling language for systems engineering, based on UML, with block, activity, state machine and parametric diagrams. v2 and KerML textual notation, with error recovery: one mistake does not hide the rest of the file. The standard library loads with the engine.

Resolve

Names, imports, aliases, specialization, typing and redefinition across packages and files, with hover, go to definition, completion and rename.

Check

94 diagnostic codes, each with a severity, an exact range, a message and a suggested fix that your editor can offer as a quick fix.

Evaluate

Expressions with units and quantities, such as body + 4 * 12 [kg] to 348 [kg], and requirement constraints and verification cases.

Re-analyze as you type

Document sessions re-parse only the changed part and send token deltas, so editors stay responsive on large models.

Edit text without losing formatting

Changes from a diagram or form are written back into the text. Unchanged text, comments and layout stay exactly as the user wrote them.

Diff, merge and rebase

Compare two versions of a model as a list of changes, apply them, and rebase a text edit onto newer model changes.

JSON interchange

Import and export SysML v2 JSON, and read the model as plain records with stable ids.

Proven in Holarch

The same engine runs every SysML v2 project in Holarch: the editor, the views and the lifecycle pages.

How it runs

In the browser, the engine is a WebAssembly module in a Web Worker, so analysis never blocks the page. A small JavaScript integration layer sends requests and returns answers as promises. A server build for Node.js or Python is available on request.

How the engine fits into a browser applicationYour application calls the JavaScript integration layer with JSON requests. The layer passes them to a Web Worker that runs the WebAssembly engine with the standard library loaded, and returns JSON answers. The engine has no network or file access. Your application editor, views, pipeline JavaScript integration layer requests as promises WEB WORKER Holarch Language Engine WebAssembly, no network or file access Standard library JSON

Performance

Measured on a 10,000-line model in a browser on a Mac:

  • About 7 ms for a full parse.
  • 3 to 4 ms per keystroke for the incremental analysis: parse, diagnostics and the name and rule checks.
  • About 131 ms to analyze the whole model from nothing: parse, resolve and check.
  • Under 0.5 MB of WebAssembly, compressed.

Your numbers depend on the model and the computer. The evaluation lets you measure on your own models.

Security

  • No network or file access. The WebAssembly module imports nothing from the page: it reads the text and records you pass and returns JSON.
  • Input limits. Input size, line length, nesting and expression depth are capped, so a hostile file cannot exhaust memory or the stack.
  • Fuzzed. The request, lexer and parser entry points are fuzz-tested before each release.
  • Isolated. In the browser it runs in its own worker. A fault stops only that worker, and your page restarts it.

What you get

  • The engine: the WebAssembly build, with the standard library.
  • The JavaScript integration layer: the worker and a client for your page.
  • Developer documentation: an integration guide, the reference of every request with real requests and answers, the list of diagnostic codes, and runnable examples (a minimal page, an editor, a model browser, Node.js and Python).
  • Updates for the term of the license.
  • Support by email from the team that builds it.

Licensing

  • Annual license for one year at a time, priced by the number of monthly active users of the features the engine powers in your product.
  • Free 60-day evaluation on your own computer, with the documentation and examples.
  • Academic and research licenses for universities and research groups.
  • Enterprise and server-side use on request: several products, large user counts, or the server build.

Tell us about your product and expected users, and we send a quote.

Language support

The Holarch Language Engine is based on the OMGObject Management Group The standards body that maintains UML, SysML, UAF and XMI. SysMLSystems Modeling Language A graphical modeling language for systems engineering, based on UML, with block, activity, state machine and parametric diagrams. v2 specification and supports a subset of SysML v2 and KerML. The evaluation includes the list of supported constructs and the known gaps.

Try the engine on your own models.

The evaluation is free for 60 days.