Built alone from an empty CARGO_HOME, its tests passed, and flowrsc checked, ran and exported a document from the conformance corpus; the export built alone. Co-Authored-By: Claude Opus 5.5 <[email protected]>
2.2 KiB
Provenance
What flowrs-core takes from other projects, beyond the crates it depends on. Each module that ports more than an idea says so here.
Graph functions (src/graph/function.rs)
Ideas only, no code copied. The model is LabVIEW's subVI (a subgraph with a typed connector pane, called from many diagrams), with three choices taken from elsewhere:
- boundary nodes for a function's inputs and outputs, each with a name, a type, a default and a
place in the signature: Unreal Engine's material functions (
FunctionInput,FunctionOutput, theirSortPriorityand preview value), from Epic's documentation; - a call pins the exact version it was made against and a newer version sits beside it:
Houdini's digital assets (
name::version) and APEX's graph functions, from SideFX's documentation; - recursion refused and the call depth bounded, at both tiers: LabCraft's
--max-call-depth(docs/cli.md), whose default of 1,024 is lower here (64) because flowRS's interpreter recurses on the thread's stack.
The station call tree (src/graph/corpus/station_call_tree.fdsl)
Translated, no code copied: LabCraft, https://github.com/corail-labs/labcraft, read at
commit 22b8dff, MIT OR Apache-2.0 (Cargo.toml, NOTICE), its contributors' copyright.
The call tree and what each function does are LabCraft's example programs:
| here | there |
|---|---|
station@1: steps run in turn, the run passes when each does |
examples/station.lcf |
run_step@1: set the supply, settle, compare the reading with the step's low and high limits |
examples/run_step.lcf |
settle@1: read, compare with the target within a tolerance (0.2 V at its call, as there) |
examples/settle.lcf |
dmm_driver.read_dc_volts@1: MEAS:VOLT:DC?, the answer in volts |
examples/dmm_driver/read_dc_volts.lcf |
scpi.query_f64@1: a query whose answer is a number |
libs/scpi/query_f64.lcf |
Where this differs, on purpose: there is no VISA session, error wire, state machine or loop (flowRS has none of the first three yet, and phase 1 refuses a held wire in a body), so settle reads once, the station runs its two steps side by side, and the instrument is simulated as a supply behind 0.05 ohm under a 0.5 A load, in place of LabCraft's simulation file.