Skip to content

Releases: Ferrite-Engineering/simcrux

SimCrux 1.1.0

Choose a tag to compare

@martin-robert-fink martin-robert-fink released this 19 Oct 16:46

The first feature release since 1.0. The free simcrux command-line runner now
ships as a ready-made download for macOS, Linux and Windows, so a CI job no
longer has to build it from source. Several tabs running regressions share one
simulator budget, a failed test keeps its logs and says why it failed, and the
results dashboard is easier to read and search. Two verdicts that reported a
pass when they should not have are fixed.

New

  • The simcrux CLI as a download. Each release now includes the headless
    runner as simcrux-cli-<version>-macos-arm64.zip (signed and notarized),
    -linux-x64.tar.gz and -windows-x64.zip, built from the same source and
    the same Flutter as the app. simcrux --version prints the version, and with
    Homebrew, brew install ferrite-engineering/tap/simcrux-cli installs it.
  • Licensing a build agent. simcrux license fingerprint prints the machine
    fingerprint a licence file is issued for, and simcrux license request --out <file> writes an offline activation request, so a dedicated CI machine can
    be licensed without ever running the desktop app.
  • One simulator budget across tabs. Regressions running in several tabs now
    draw from one shared limit instead of each starting its own set. Set it in
    Settings ▸ Simulators ▸ Simulator processes at once, across all tabs
    (default 4).
  • A failed test keeps its logs and says why. Its captured output is written
    as sim_stdout.log and sim_stderr.log in its work directory, the exports
    carry those paths, and when the simulator gives no reason the failure
    message is the first line of the test's own output that reads as one.
  • A results dashboard that is easier to work with. Columns resize by
    dragging a header divider and show their full values on hover; each run in
    a seed sweep is labelled "name · seed N" and the filter finds a run by its
    seed; the "+N new" counters narrow the table to the tests they count; a
    filter that hides every result says so and offers Clear filters; and the
    Log panel starts collapsed, opening the first time you select a test, which
    leaves room for many more rows.
  • A project can declare its identity. An optional top-level project_id:
    in simcrux.yaml names the project wherever it is checked out.
  • The team database (Enterprise) pools on project_id, so two engineers
    with the same repository at different paths, and a CI job pushing with
    --project, finally share one history.
  • Cleaner flakiness verdicts (Pro). A test that passed and then started
    failing, with no flip-flopping, is shown as BROKEN rather than FLAKY.
  • GitHub pull request annotations (Pro) are posted as one check run per
    batch, and a rate-limited request is retried after the delay GitHub asks for.
  • Organization policy (Enterprise) honors defaultSimulator,
    simulatorBinaryPolicy (an allow-list of simulators) and ciGateThreshold.
  • Cross-probing is free in every edition, sending as well as receiving, and
    the Cross-Probe panel names the peer product.
  • Crash detection. If a desktop session ends without a clean exit, the next
    launch sends one event that says so. It carries nothing beyond the standard
    fields usage statistics already send, and it follows the same setting in
    Settings ▸ Privacy: with usage statistics off, nothing is sent.
  • No identifier while usage statistics are off. With them off, the app
    keeps no installation identifier; turning them back on creates a new one.
    On first launch, the default now reads your operating system's region
    setting as well as its language.

Fixed

  • Icarus tests that call $error and then $finish fail. They were
    reported as passing, because vvp exits cleanly after them.
  • --fail-on-regression cannot pass by default. In a build without the
    regression comparison engine, including the free CLI, the gate now fails
    with exit code 2 and says why, instead of reporting a pass it never checked.
  • Log retention keeps failures first, so an early failure's log is no
    longer evicted to make room for recent passes.
  • "Sources changed" keeps coming on macOS after the system's file watch
    goes quiet; each source file is also checked every second.
  • A tab restored at launch re-reads its project once the licence is known,
    so a Pro seed sweep is no longer dropped with a "requires SimCrux Pro"
    warning beside the PRO badge.
  • Open testbench source works when SimCrux starts from Finder or the Dock,
    and says so when the editor cannot be started.
  • Workspace restore and save failures are shown to you instead of only
    being logged.
  • Cross-probing opens a SimCrux configuration as a configuration tab rather
    than in the text editor, and the dashboard's test-name filter shows changes
    made from elsewhere.
  • Project files are checked more strictly. A sources: entry that begins
    with - is refused rather than passed to the simulator as an option, a
    distributed-execution test id is limited to characters every scheduler
    takes literally, and a RISC-V formal demo case whose trace points outside
    its task directory is refused.
  • Escape closes an open menu or dialog instead of being taken by an
    app-wide shortcut.

Also

  • Interface polish across the app: two open files with the same name show the
    folder that tells them apart; the "source changed" prompt is the same banner
    in every EDACrux app and can be declined; Split Pane Right needs two tabs
    to split; a narrow sorted column no longer overflows its header; command
    palette shortcut hints are readable on the selected row; focus rings no
    longer crowd their text; an empty panel tells a screen reader what belongs
    there; and on macOS the window reopens where you left it, on the same
    display.
  • The Linux packages register SimCrux's file types, and the Windows
    uninstaller removes the install folder it leaves behind.
  • Cross-probing between EDACrux apps now proves the identity of both ends
    without sending the connection token over the wire. 1.0 apps still connect.
  • Built with Flutter 3.47.5.
  • Other performance and quality enhancements.

Download: https://simcrux.app/download

SimCrux 1.0.0

Choose a tag to compare

@martin-robert-fink martin-robert-fink released this 30 Sep 14:07

The first stable release, and the end of the public beta. Two things follow
from that. SimCrux is now licensed: Open Core is free and stays free, and the
Pro and Enterprise features the beta handed to everyone now need a key. When
one is refused, the app says which tier it belongs to instead of quietly doing
nothing. And the app is named for the product rather than for the tier, so it
is SimCrux in the Dock, the title bar, the Start menu and your app menu.

Download it from simcrux.app/download, read
results in the browser at app.simcrux.app, or read
the manual at docs.simcrux.app.

New

  • cocotb is a first-class test type. type: cocotb now means something:
    SimCrux reads cocotb's own results.xml and the summary table it prints, so
    a cocotb suite is scored the way cocotb scored it. Tested against cocotb 1.9,
    2.0 and 2.1.
  • simcrux-pro push-results, the CI writer (Enterprise). Every desktop
    artifact (the DMG, the installer, the portable zip, the AppImage, the
    tarball, the .deb and the .rpm) now carries the headless binary, so a CI
    job that has SimCrux installed can push a completed run to the team database
    without a second download. It exits 64 on a bad command line and reports a
    refused backend on stderr.
  • A team results database (Enterprise). Point SimCrux at a PostgreSQL
    database you own and simcrux-pro push-results writes your CI runs into
    it, from as many machines as your pipeline runs on, each attributed to its
    origin. Reading that pooled history back inside each engineer's app is
    planned for 1.1: today the scope a run is filed under comes from the
    checkout path on the machine that wrote it, so the app does not yet chart
    what CI pushed. The local trend store keeps working regardless.
  • Distributed runs (Enterprise). One templated cluster backend submits a
    regression to your scheduler, with the log path and work directory per test
    under a work root you control, and an organization-set retention ceiling that
    prunes what it keeps.
  • Licensing, in the app. Settings ▸ License takes a key, shows what it
    entitles you to and when it renews, and Manage subscription opens the
    billing portal. Education users can apply for an EDU licence from the same
    panel. For machines that cannot reach the internet there are licence files:
    export a request, import the signed file, and the tier is active offline,
    including for --ci and push-results on the machine the file was issued
    for. A licence that has been cancelled or has run out of seats drops the app
    back to Open Core and says so, rather than failing in some other way.
  • A suite licence spends one seat per machine, not one per product. A seat
    is a computer. Installing the third and fourth EDACrux product on a machine
    that already has a seat no longer exhausts the seat count, because all four
    products now present the same machine identity. Deactivate this machine
    releases that seat for every EDACrux product on the computer at once, from
    whichever product you happen to be in, and the confirmation says so before
    you agree to it.
  • First launch asks. You accept the licence agreement, then answer a
    usage-statistics disclosure, before the app opens. Usage statistics start
    switched off in the EEA, the UK, Switzerland and South Korea, and can be
    turned off anywhere in Settings ▸ Privacy, which now also shows the
    installation ID the reports carry, so you can quote it. --reset-eula and
    --reset-telemetry-consent reopen either prompt.
  • Your history survives an upgrade. The trend database is backed up before
    any schema migration, records which build wrote it, and is quarantined and
    reported rather than deleted if it comes from a newer build. The per-project
    trend databases get the same treatment, and the per-suite chart now shows
    your local runs whether or not a team database is configured.
  • Export a dashboard from the app, not only from a headless run.
  • One project file that opens in whichever tool you reach for. A
    <design>.crux-project manifest opens from both dialogs and from the command
    line; a manifest double-clicked on macOS opens in the EDACrux product you
    chose for it.
  • Deployment for managed fleets. Alongside the installer and the AppImage
    there is now an MSI for SCCM and Group Policy, and .deb and .rpm packages
    for package-managed Linux. The Linux packages are named simcrux, so apt
    and dnf install and remove them under that name. SHA256SUMS is written
    so that sha256sum -c verifies it.
  • Organization policy (Enterprise). An administrator can ship a signed
    policy file that sets the update channel, pins a version or points at a
    mirror, names the account that may submit to the team database, and caps
    result retention. At startup SimCrux reports which policy file it accepted
    (or that it refused one, and why) and names the keys this build honours and
    the ones it ignores, so a mistyped key is visible instead of silent.
  • An audit trail (Enterprise). Regression start and finish, the simulator
    used, results pushed to the team database, baseline rebases and retention
    purges are recorded.
  • Updates know what you are entitled to. A release that only paid seats can
    install is no longer offered to an Open Core seat.
  • SimCrux by ear. A full pass with a screen reader, now pinned as
    regression tests: launch focus lands on a named control, a results row is
    read as one sentence, the Tests dock and the results table are keyboard-
    driven with Enter and Space, a failed load is spoken, panels resize from the
    keyboard, and the first-launch dialogs can be answered without a mouse.
  • Report a problem from inside the app, against the public SimCrux
    repository, with issue templates on the other end.

Fixed

  • On Windows and Linux the menu bar works for the whole session. Items that
    need an open document stayed greyed out from launch until you quit; macOS,
    which uses the system menu bar, was never affected.
  • Dropping a tab on another tab reorders it, rather than doing nothing.
  • A failing cocotb run was scored as a PASS. On cocotb 1.9 and 2.0 SimCrux
    read the wrong thing and reported green regressions that had failed.
  • Verilator warnings no longer fail a build, # delays work, and extra
    flags you pass through reach the compiler.
  • maxWaveformRuns was doing nothing at all. Waveform paths were never
    recorded on ingest, so the retention setting had nothing to count; dumps are
    now kept and pruned as configured, --ci prunes retained dumps, and
    capture: always keeps the dumps from passing tests.
  • A project that will not load says so where it happens. A regex that does
    not compile fails the load, a detector given a number is a load error with
    its line number instead of a crash, a bad cocotb max_failures fails the
    load, a project that loads with warnings says so, and an included file
    inherits the including file's defaults.timeout.
  • Cancel ends the run. Run and Re-run come back after a cancelled
    regression instead of staying disabled, and Re-run in the Details panel
    runs only the test you selected.
  • --ci behaves in CI. It loads the project at the licence tier you hold
    rather than always at Open Core, it fails with exit 2 when a scheduled test
    never reports a result and when --baseline cannot be read, exports create
    their directory and never cost you the summary, --json puts nothing but
    JSON on stdout even when the framework itself errors, import and
    export-dashboard failures go to stderr, and a cluster run that dies is an
    error rather than a green job.
  • Saving two files at once reruns the regression once, not twice.
  • Cross-probing works again. SimCrux answers inbound cross-probe requests,
    a settings change no longer restarts the server and drops every peer, a send
    says when the peer has gone, failures are reported in your language, and
    peer discovery no longer stalls the window.
  • Plugins get what the ABI promises. A driver plugin receives a real spec
    object and a probe reply, plus the test, the host version and the right
    working directory; a plugin folder that cannot be read is reported at once
    instead of after a minute; shutdown escalates only against a plugin that is
    still running; and quitting no longer waits out the full plugin grace period.
  • Naming a project on the command line no longer crashes a first run.
  • An applied theme pack stays applied, in the session and on the next
    launch; every theme preset paints the chrome it has always painted.
  • Settings stick. A project entry with only options or environment keeps
    the binary path set in Settings, release builds can turn on Tab Diagnostics,
    and the flaky-retry switch and attempts stepper take effect.
  • Big runs stay responsive. The log store is bounded by lines as well as
    buffers, the trend heatmap virtualizes its cells, and the dashboard's
    test-name filter applies once typing settles rather than on every letter.
  • Closing a tab while its run finishes still prunes and runs the completion
    hooks, and trend storage figures refresh after a rebuild that outlived the
    card that started it.
  • Colours, dialogs and empty states across the app. Border tokens that were
    colouring text are corrected and guarded against; the Inspector shows the
    same empty state as every other panel; dialogs no longer stack on a held
    shortcut or close on a stray click; Settings closing mid-write no longer
    throws; and toggling a dock redraws the dock rather than the whole layout.
  • Double-clicking works, and SimCrux stops claiming files that are not its
    own.
    Its configs and results open from Finder and from Linux file managers;
    SimCrux is no longer the default application ...
Read more