Skip to content

Releases: stzifkas/pluto-ecss

v0.3.0

28 May 10:29

Choose a tag to compare

pluto-ecss 0.3.0 — Finish-Up-A-Thon edition

After seven years dormant, the GSoC-2019 PLUTO prototype is now a real
transpiler. This release is the snapshot used for the GitHub
Finish-Up-A-Thon submission.

The "before" is preserved at tag v0.1-gsoc-2019 and on branch
legacy/gsoc-2019. The "after" is everything 24 commits later on
main.

Highlights

  • End-to-end transpiler. PLUTO source → Lark parse tree → readable
    Python that runs against a small runtime library
    (pluto_ecss.runtime / pluto_ecss.async_runtime).
  • CLI: pluto-ecss parse | compile | run | demo | fmt | gen.
  • Compile knobs: --runtime async, --style class, --emit json,
    --no-runtime (inline). All compose.
  • Live TUI demo (pluto-ecss demo) — a fake satellite reacts to
    procedures in real time via Rich.
  • Browser playground — Pyodide loads the bundled source so you can
    write PLUTO and run it client-side, no install needed.
  • Friendly parse errors with source caret + structural hints.
  • Pygments lexer registered as the pluto language; the mkdocs
    site uses it for syntax highlighting.

ECSS-E-ST-70-32C coverage

Sections of the PLUTO spec now actually implemented:

  • A.1 procedure / step structure: full declare / preconditions /
    watchdog / confirmation / main symmetry
  • A.3.9.5 + A.3.9.25 — save context refer to <ref> by <local>
  • A.3.9.8 — <property> of <ref> (execution_status, validity_status,
    start_time, completion_time, confirmation_status, value,
    engineering_value, sampling_time)
  • A.3.9.10 — in the context of X (of Y) do … end context
  • A.3.9.11 — parallel until all / until one
  • A.3.9.12 — initiate and confirm step (+ continuation tests)
  • A.3.9.17–22 — assignment, if/case/while/repeat/for, timeouts
  • A.3.9.26 — initiate and confirm with refer-by + continuation tests
  • A.3.9.27 — initiate refer by
  • A.3.9.28 — activity arguments (simple, record, array)
  • A.3.9.29–30 — inform user, log
  • A.3.9.31 — watchdog handlers (synchronous dispatch)
  • A.3.9.33 — continuation tests, all seven actions, restart bounds,
    A.2.5 defaults

Stats

2019 (v0.1-gsoc-2019) 0.3.0
Grammar lines ~30 168
Tests 0 224 passing
Examples 1 17
Package LOC ~600 3 778
CLI subcommands 0 6
Runtime targets inline tree-walker threaded + asyncio
Output formats side effects Python (4 variants) + JSON

Install

pip install pluto-ecss
pluto-ecss run examples/01_original.pluto

The release wheel (pluto-ecss-0.3.0-py3-none-any.whl) and sdist
(pluto-ecss-0.3.0.tar.gz) are attached to this GitHub release. Both
pass twine check.

Links

Breaking changes from 0.2.x

The 0.2 series was a pre-release; nobody installed it from PyPI. For
completeness, between 0.2 and 0.3:

  • Procedure.get_property(ref, prop) now resolves through activities
    → local reporting-data snapshots → global reporting-data registry,
    and returns "not_initiated" (instead of raising) for the
    execution_status of an unknown reference.
  • initiate(proc, call) and initiate_and_confirm(proc, call) now
    accept an instance_name kwarg (from refer by).
  • initiate_and_confirm_step now takes proc as its first argument
    and registers the step under its name so <property> of <step> is
    queryable.
  • New PlutoAborted and PlutoTerminated exception types for the
    abort / terminate continuation actions.