Releases: stzifkas/pluto-ecss
Releases · stzifkas/pluto-ecss
v0.3.0
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
plutolanguage; 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.plutoThe 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
- Docs
- Playground
- Finish-Up-A-Thon arc page
- Submission post draft:
docs/submission_post.md
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_statusof an unknown reference.initiate(proc, call)andinitiate_and_confirm(proc, call)now
accept aninstance_namekwarg (fromrefer by).initiate_and_confirm_stepnow takesprocas its first argument
and registers the step under its name so<property> of <step>is
queryable.- New
PlutoAbortedandPlutoTerminatedexception types for the
abort/terminatecontinuation actions.