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]>
39 lines
2.2 KiB
Markdown
39 lines
2.2 KiB
Markdown
# 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`, their `SortPriority` and 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.
|