Skip to content

Releases: Fallstop/sccharts-lab

v0.9.7

Choose a tag to compare

@github-actions github-actions released this 05 Oct 00:34

Stable release of 0.9.6, which shipped on the pre-release channel. No changes since 0.9.6; its
notes follow.

[0.9.6] - 2026-10-03

  • Invalid source produces useful diagnostics before it reaches the compiler. Empty models,
    syntax errors, unresolved names (including in imports) and invalid region structure are rejected with source locations.
    An empty document and a transition to an unknown state previously caused null-pointer failures.
    Unexpected compiler exceptions now identify the failed processor, preserve the stack trace and
    finish the build so the next compilation can recover.
    Unavailable compilation systems now offer an actionable error instead of a compiler exception.
    Imported source locations retain Windows drive letters and network-share hosts.
  • Copy a diagnostic report from the preview or Command Palette. The report includes the
    extension, Java and server versions, source version, compiler issues, technical details and
    processor timings. Internal compiler errors also offer it from the editor's lightbulb.
  • Compile saves the selected model first. Auto-compile runs after a save and targets the saved
    file even if another tab is active. Edited, cancelled and obsolete builds cannot open old generated
    code or start a simulation; server restarts clear the old compiler and simulation state.
  • Diagnostics clear as soon as their source changes. Warning counts follow the current document
    version, informational findings keep their severity, and an error cannot disappear behind a
    duplicate warning. Models sharing a generated path keep their own findings when another closes
    or recompiles. Live analysis also gives each open model its turn.
  • Simulation and generation recover from interrupted preparation. Cancellation during server
    startup, edits during toolchain setup and a simulation stop that never answers release their
    controls and report the next action. Background startup-cache failures no longer crash the host.
  • Smaller packages. Obsolete language-server jars, Jetty libraries and old webview builds are
    excluded, removing about 97 MB from the unpacked extension on a checkout that still holds them.
    Platform packages retain their bundled Java runtime.
  • Conflicting KIELER extensions can be uninstalled in one click, followed by a window reload.
    Opening the conflict in Extensions now searches its exact identifier.

v0.9.6-pre

v0.9.6-pre Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Oct 11:45
b1b55f1
  • Invalid source produces useful diagnostics before it reaches the compiler. Empty models,
    syntax errors, unresolved names (including in imports) and invalid region structure are rejected with source locations.
    An empty document and a transition to an unknown state previously caused null-pointer failures.
    Unexpected compiler exceptions now identify the failed processor, preserve the stack trace and
    finish the build so the next compilation can recover.
    Unavailable compilation systems now offer an actionable error instead of a compiler exception.
    Imported source locations retain Windows drive letters and network-share hosts.
  • Copy a diagnostic report from the preview or Command Palette. The report includes the
    extension, Java and server versions, source version, compiler issues, technical details and
    processor timings. Internal compiler errors also offer it from the editor's lightbulb.
  • Compile saves the selected model first. Auto-compile runs after a save and targets the saved
    file even if another tab is active. Edited, cancelled and obsolete builds cannot open old generated
    code or start a simulation; server restarts clear the old compiler and simulation state.
  • Diagnostics clear as soon as their source changes. Warning counts follow the current document
    version, informational findings keep their severity, and an error cannot disappear behind a
    duplicate warning. Models sharing a generated path keep their own findings when another closes
    or recompiles. Live analysis also gives each open model its turn.
  • Simulation and generation recover from interrupted preparation. Cancellation during server
    startup, edits during toolchain setup and a simulation stop that never answers release their
    controls and report the next action. Background startup-cache failures no longer crash the host.
  • Smaller packages. Obsolete language-server jars, Jetty libraries and old webview builds are
    excluded, removing about 97 MB from the unpacked extension on a checkout that still holds them.
    Platform packages retain their bundled Java runtime.
  • Conflicting KIELER extensions can be uninstalled in one click, followed by a window reload.
    Opening the conflict in Extensions now searches its exact identifier.

v0.9.5

Choose a tag to compare

@github-actions github-actions released this 29 Sep 02:48
  • Compiling no longer reads the model while an edit is changing it. A compilation started from
    the editor walked and copied the open document's model on its own thread with no lock, while
    typing could reparse that same model underneath it. Copying also resolves references, which
    writes to the model, so the two threads could corrupt its internal bookkeeping. That is one way
    to end up with errors like NullPointerException ... "adapter" is null and an empty preview. The
    compilation now takes its copy as a proper read of the document, waiting for any edit in
    progress, and uses the model as it stands after that edit rather than the one it was asked
    about.

v0.9.4-pre

v0.9.4-pre Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Sep 07:19
  • Newlines survive in string simulation inputs. A value like line1\nline2 appeared in the
    input field with the newline missing, and because leaving the field committed whatever it held,
    clicking into a string input and clicking away was enough to send the shortened value back to
    the model -- with nothing typed and nothing to see. \r\n lost both characters. A single-line
    field cannot hold a newline at all, so strings are now shown and typed escaped, using the same
    escapes as the chr number format: \n, \r, \t, \0, \xNN and \\. Table cells show
    them too, instead of collapsing a newline into a space, and a newline can now be entered in the
    first place. An input nobody typed in is never written back.

v0.9.3-pre

v0.9.3-pre Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Sep 03:30
  • Simulating a model no longer fails on the diagram beside it. Starting a simulation also
    refreshes the diagram, and when no open diagram matched the model the refresh threw
    NullPointerException ... KGraphDiagramServer.getSourceUri(), which surfaced as "An error
    occurred during simulation start" on a model that compiles and simulates perfectly well. The
    diagram is now found under either spelling of its URI -- diagrams are keyed by the client's,
    which percent-encodes a path with spaces, while the simulation carries the decoded one -- a model
    with no diagram open simply skips the refresh, and a refresh that fails can no longer take down
    the start, step or stop that triggered it. Closing a preview now also drops its view context
    under either spelling instead of leaving a stale one behind.
  • The language server is ended when the window closes or the server is restarted. The client
    only asked the server to exit, so one that was busy compiling or simulating outlived the window
    and kept its whole JVM heap until the machine was rebooted, once more for every restart. The
    server is now ended for good, together with the compilers and simulations it started, and a
    restart whose shutdown timed out kills the old server and starts again instead of leaving a dead
    client behind.
  • A hanging compiler probe no longer freezes the window. Looking for gcc runs before every
    build; which and xcode-select now give up after five seconds so a dead network mount cannot
    block the extension host.

v0.9.2

Choose a tag to compare

@github-actions github-actions released this 12 Sep 03:53
  • Shorter messages. Popups and diagnostic hints (instantaneous loops, scheduling cycles,
    shared clocks, redeclared variables, missing Java or C compilers) are cut to one or two lines.
  • A quieter preview toolbar. Icon buttons for Restart, Back, Step, Run and Stop, the tick,
    one speed slider (the value is its tooltip), a Breakpoints toggle with the count and a
    Trace toggle. Continue is the C key. Stages and Code stay in the editor title
    only. Saving and loading a trace and the Generated toggle moved into the trace drawer, next
    to what they act on.
  • Completion in the breakpoint and watch fields. The state field completes against the
    model's states (type a few letters, Enter takes the first match); condition and watch
    expressions complete the word at the caret with the simulation's variables and pre(.
  • Shorter hover cards for variables. The card shows the declaration as written, its comment,
    and how it is used ("Written 8 times, never read."); the kind, type, initial value and root
    scope are no longer repeated in prose.
  • Completion for SCTX. Keywords carry a one-line summary and a Markdown card
    (go to is a weak abort, pre(x) reads the previous tick); triggers and effects propose
    the variables, signals and clocks in scope with their declaration kind and comment, and
    go to, abort to and join to propose the states of the enclosing region. scchart,
    state, initial state, region, if ... go to and entry do also come as snippets
    with tab stops. A half-typed keyword inside a state body and a variable inside a trigger
    used to return nothing at all; bare operators such as %, >>> and Pr= are gone.
  • Input edits register while the simulation runs. The trace table was rebuilt from scratch
    on every tick, so a click whose press and release straddled a tick landed on two different
    buttons and did nothing, and the Generated, Save and Load buttons had the same problem. Rows,
    their Next controls and the drawer tools are now created once and updated in place; a switch
    shows the sent value at once so a second click toggles again before the server answers. The
    breakpoint popover and the watch field are likewise left alone by ticks that change nothing
    they show.
  • Picking a state from the breakpoint list no longer closes the popover. The chosen entry
    removed itself from the list in its own mousedown handler, so the popover's outside-click check
    saw a detached target and closed. The check now uses the event's path as it was when the mouse
    went down.
  • Watch expressions moved to the top line of the trace drawer, next to the Generated, Save
    and Load buttons; the tick summary (inputs, outputs, changed variables) sits directly above the
    table it describes.
  • Warnings are optional. The preview's "Compiled with N warnings" panel has a Hide
    warnings
    button and, once hidden, reads "Compiled, N warnings hidden" next to Show
    warnings
    . The lightbulb on any KIELER warning offers Hide KIELER warnings;
    Hide Compiler Warnings and Show Compiler Warnings are in the Command Palette and an
    SCChart's editor title and context menus; while warnings are hidden a status bar item counts
    them for the active model and shows them again on click. All of these set
    keith-vscode.diagnostics.showWarnings, which keeps the compiler's warnings out of the editor
    both from a compile and from the live analysis; errors always show.
  • Code is back on the preview toolbar. The editor-title entry only shows while the .sctx
    text editor is active, which left no way to generate code from the preview.
  • State breakpoints fire on entry only. A breakpoint on a state that merely stayed active
    paused the simulation on every tick, because the server's state tracker compared the active
    states against a set that never held them.
  • No popup at the start of a compilation. The "Compiling ... with ..." notification is gone;
    the status bar shows the progress.

v0.9.1-pre

v0.9.1-pre Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Sep 13:14
  • A click in the editor no longer pulls the cursor onto the state's name. Sprotty fires its
    diagram selection listener for selections the server sends as well as for clicks, so the cursor
    sync's selection was answered with diagram/openInTextEditor and moved the editor cursor onto the
    selected element. Cursor-driven selections are now marked preventOpenSelection; clicking in the
    diagram still reveals the source when keith-vscode.diagram.selectText is on. The server cursor
    suite checks that no reveal follows a cursor request.
  • A running simulation keeps your zoom. Every tick relays the diagram out to move the
    highlighting, and klighd-core refits the diagram after each model update because "Resize To Fit
    on Refresh" defaults to on and has had no switch since the sidebar went. Model updates that arrive
    while a simulation is running are now applied without the refit, so the viewport stays where you
    put it; the first layout after start and everything outside a simulation fit as before.

v0.9.0-pre

v0.9.0-pre Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Sep 08:04
  • Diagnostics while typing. Open SCCharts are analysed after every edit (debounced,
    keith-vscode.liveDiagnostics.debounceMs, default 400 ms) through a new server-side
    system, de.cau.cs.kieler.sccharts.live.analysis, that runs the netlist chain as far as the
    scheduler and generates no code. Scheduling cycles, instantaneous loops and the other
    located findings appear as KIELER · live squiggles without pressing Compile; a compile
    report for the same document version takes precedence. keith-vscode.liveDiagnostics.enabled
    turns it off. Protocol: keith/diagnostics/live (server → client),
    keith/diagnostics/configure and keith/diagnostics/analyze (client → server).

  • Messages come from the analyzer that knows the cause. The loop analyzer and the guard
    scheduler now emit structured issues themselves, naming the variables involved
    (Circular dependency involving timeout_update prevents scheduling this tick.); the
    extension no longer rewrites messages after the fact. The timed-automata expansion explains a
    clock shared between concurrent regions, the inheritance processor explains redeclared
    variables and regions, and the loop analyzer explains a sequential region re-entered in the
    same tick, each at its source range with a hint. Every other compiler message that names a
    model element now keeps its source location through the copies the compiler makes.

  • Simulation breakpoints, watch expressions and stepping back. A breakpoint pauses the
    simulation when a state is entered (Full, or Counter.Counting.Full when names repeat) or
    when a condition over the variables holds after a tick (count >= 3 && !done, pre(x) != x
    reads the previous tick). Continue runs to the next breakpoint on the server; Run
    stops on one too. Watches show an expression's value after every tick, with the reason when
    it cannot be evaluated. Back, Backspace, or a click on an earlier tick rewinds the
    simulation for real: the program is restarted and the recorded inputs are replayed up to
    that tick (a few milliseconds for hundreds of ticks), so trace, diagram and watches match and
    stepping forward with a changed input takes a different path. Breakpoints and watches are
    remembered per model. New commands Add simulation breakpoint... (pick a state or type a
    condition), Add simulation watch expression..., Step back one tick and Run to
    breakpoint
    . Server methods keith/simulation/setBreakpoints, setWatches,
    runToBreakpoint, pause, history, stepBack and states; step messages carry step,
    watches and breakpoint; keith/simulation/paused announces a hit.

  • The diagram follows the editor cursor. Moving the cursor in an SCChart expands the
    regions around it in the open diagram and selects the state, region or transition under it,
    as the Eclipse editor's smart collapse did. keith-vscode.diagram.followCursor chooses
    focus (default), expand (also collapse the regions the cursor is not in, unless you
    expanded them yourself) or off; Reveal Cursor in Diagram does it once from the palette
    or the editor context menu. Selecting an element in the diagram selects its text in the editor
    (keith-vscode.diagram.selectText). The server answers keith/diagram/cursor by mapping the
    offset to the model element and relaying out; it leaves compiler snapshots alone.
    The reverse direction (a click in the diagram selecting the source text) is upstream sprotty
    behaviour that is now switched on; on the Windows CI runners it is intermittently silent, so the
    server suite only warns about it there.

  • Hover cards, outline and timings from the language server. Hovering a variable, signal,
    state, region, transition or action in an SCChart shows a Markdown card built from the model:
    declaration, type, initial value, scope, write/read counts, the comment above it, a state's
    regions and transitions, a transition's priority and preemption. Go to Definition, Find All
    References and Rename already worked and stay; the Outline now shows simple names with element
    kinds and details (input bool, initial state, controlflow region, 2 states) instead of a
    flat list of dotted paths. The compiler reports each processor as it starts
    (keith/kicool/progress) and, in didCompile, every processor's duration, start time and
    status, the total wall time and the stages that never ran; the status bar names the running
    processor and the compile time, and Stages shows each stage's duration and flags the
    slowest.

  • Compilation systems from the workspace. Every .kico file in the workspace (outside
    build and dependency folders) is loaded by the language server and listed under a
    Workspace heading in Compile current model with..., with the file it comes from; saving
    the file, or editing it in the editor, replaces the system at once and deleting it removes the
    entry. Errors show as squiggles in the .kico editor and as a warning: syntax errors, unknown
    processor or system ids, and ids that shadow a built-in system. New command New compilation
    system (.kico) in workspace
    writes a commented template; new setting
    keith-vscode.compilationSystems.folders adds directories outside the workspace. .kico is
    now a language of the extension, served by the language server. This replaces the
    Eclipse-only system registration that the sccharts-lite server dropped.

  • The language server starts a third faster after the first two starts. It now runs from
    an AppCDS archive built on your machine: start 1 records the loaded classes
    (-XX:DumpLoadedClassList), a detached low-priority java -Xshare:dump builds the archive
    (about 3 s, 65 MB under the extension's global storage, keyed to the exact jar and Java
    binary) when that server exits, and later starts map it with -XX:SharedArchiveFile,
    -Xshare:auto and -XX:+VerifySharedSpaces. The archive has to be built there because five
    of the six bundled runtimes are cross-linked and jlink --generate-cds-archive and
    -XX:+AutoCreateSharedArchive both need the target JVM to run. JVM logging now goes to
    stderr (-Xlog:disable -Xlog:all=warning:stderr): HotSpot prints its warnings to stdout,
    the LSP channel, and one [warning][cds] line was enough to stall the protocol. Without
    VerifySharedSpaces a damaged archive crashes the JVM (SIGSEGV) instead of being skipped. A
    crash within 20 s of a start with the archive discards it. New command Clear language
    server startup cache
    , new setting keith-vscode.startupCache.enabled, cache state in
    Show Java runtime and C compiler in use. Measured with scripts/measure-startup.cjs
    (medians of five starts, test/fixtures/audit.sctx, bundled Temurin 21.0.12.1 image):

    configuration initialize compile menu ready compile RSS
    as before 1533 ms 2578 ms 498 ms 699 MB
    -XX:+AutoCreateSharedArchive (dynamic) 1525 ms 2583 ms 490 ms 704 MB
    static archive (shipped) 993 ms 1815 ms 486 ms 564 MB
    static + -XX:TieredStopAtLevel=1 853 ms 2032 ms 436 ms 250 MB
    static + -Xss512k 1104 ms 2106 ms 540 ms 561 MB

    The dynamic archive does nothing on the jlink image (no base archive). C1-only starts
    150 ms sooner and halves memory but warm compiles settle at 240 ms instead of 142 ms
    (six compiles of broken-demo.sctx in one session), so it stays off; -Xss, Serial and
    Parallel GC, -XX:CICompilerCount=2 and -Xmx2g were within noise. jlink --generate-cds-archive would add 27 MB to the linux-x64 image only and is not used.
    plan/native-launcher.md measures jpackage (+0.6 MB for a native sccharts-server
    launcher, six OS-specific build jobs and signing) and lists the native-image blockers.

  • Three platform packages instead of six. Marketplace builds with the bundled runtime now
    cover linux-x64, darwin-arm64 and win32-x64; Intel Macs and ARM Linux or Windows get the
    universal package and need a Java 21. The publish script uploads the universal package first,
    retries a package the Marketplace gateway drops (with the four-minute "Services Unavailable"
    page seen on 2026-09-11) instead of failing the whole release, and reports each call's duration.

  • Removed the languages the server no longer serves. KGraph (.kgt, .kgx), ELK Graph
    (.elkt, .elkj), Esterel (.strl), KiVis (.kviz) and Lustre (.lus) were still registered
    as languages with grammars and activation events, although the sccharts-lite server dropped them
    in 0.8.0; opening such a file started the server for nothing. The extension now activates for
    .sctx, .scl and .kico only. The Open KIELER visualization in browser command and its
    toolbar button are gone with the KiVis visualization server they depended on.

v0.8.3

Choose a tag to compare

@github-actions github-actions released this 10 Sep 10:33
  • Uninstalling the extension deletes the downloaded w64devkit toolchain. VS Code keeps an
    extension's global storage across an uninstall and reinstall in the same session, so a
    vscode:uninstall hook now removes it; the extension records its storage path for the hook on
    every activation.

v0.8.2

Choose a tag to compare

@github-actions github-actions released this 10 Sep 10:21

The release of the 0.8.0 and 0.8.1 pre-releases below, unchanged: a bundled Java runtime in every
platform package, a downloadable C toolchain on Windows, diagrams pinned to the light palette,
and the document-highlight fix. The Marketplace requires a version number of its own for the
release channel.