Skip to content

Implementation status (TBD)

Most of Pyrope is implemented in LiveHD and exercised by its test suite. This page lists the documented features that are not implemented yet; each is also marked "TBD" where it is described. A feature on this list may parse (lhd elaborate is permissive) but does not lower to working hardware.

Each feature has a matching task page (with a failing example) in the LiveHD repo under todo/.

Feature Documented in Task Notes
fluid lambdas, valid/retry/fire elastic handshakes Fluid Blocks 2f-fluid syntax parses; no lowering
Temporal library: past[n], next[n], rose, fell, stable, changed, eventually, always, .[rising]/.[falling] Extended Verification 2f-temporal
Testbench extras: string peek/poke/sigref (arbitrary-path), force/release, unbounded tick { } Extended Verification 2f-testbench the instance/step/poke-peek model + if/continue waiting + if-block monitors run via lhd sim; waitfor/spawn/join/cancel are dropped (replaced by that idiom)
test syntax: dotted names, runtime (...) params Testing, Extended Verification 2f-test_syntax dotted names and the bounded tick N cycle loop run via lhd sim; replaces test "string"; near-term, independent of 2f-testbench
Standard library (import("prp")) Standard Library 2f-stdlib wish-list chapter
macro= memory-compiler binding Memories 2f-macro
covercase, in-language lec() (and requires/ensures pre/post) Assertions 2f-verif_extras assert/cassert/cover work
Generics: body references of a generic name (T(a), mut tmp:T, a + N, F(v=a)), constant/lambda-valued generics, defaults <T, N=4>, named <T=…> bindings Functions 3g signature :T binding works: explicit f<u8>(…), inference, mod/pipe specialization
Input default values (comb f(in1:u4, in2=3), tuple-scope b:signed=a+5) Functions, Variables 3g omitting a defaulted input errors fcall-missing-arg today

Notes:

  • Runtime wrap/sat lowering and enum-typed register resets are implemented (earlier limitations, since fixed).
  • Glob import patterns were removed from the language: the import string is "file" or "file.pub_name" only (see import).
  • The comptime [...] test-parameter sweep (one test instance per swept value, the planned replacement for the for { test ... } fan-out idiom) is reserved but not yet specified.