Verified: Coming from Codesys
Each claim the Coming from Codesys page makes, with the tests that
prove it in the last green CI run: 5 of 15 verified, 1 with no test yet.
The claims live in docs/claims/codesys.yaml.
Last green CI run 16 Oct 2026, 14:48 UTC on c7618d3 · all runtime claims
CCS-001 partly verified
The same POU (PROGRAM, FUNCTION_BLOCK, FUNCTION) written in `.st`, `.ld`, `.fbd` or `.sfc` runs with the same behaviour.
- pass
TestConformance/fb-toninlang/conformance(7 of 7 passed) - pass
TestConformance/fb-tofinlang/conformance(8 of 8 passed) - pass
TestConformance/fb-ctdinlang/conformance(8 of 8 passed) - pass
TestConformance/ld-coilsinlang/conformance(11 of 11 passed)
CCS-002 partly verified
Identifiers are case-insensitive: any casing names the one declaration, shown as declared.
- pass
TestConformance/st-case-insensitiveinlang/conformance(3 of 3 passed) - pass
TestLowerCaseInsensitiveIdentifiersinlang/st
CCS-003 partly verified
Tags in `nautilus.yaml` or `tags/*.yaml` are in scope in every program without a declaration (`VAR_EXTERNAL` stays legal), and a function block names the ones it uses in its own `VAR_EXTERNAL`.
- pass
TestManifestTagsAreImplicitininternal/project - pass
TestFunctionBlocksDoNotSeeTagsImplicitlyininternal/project
CCS-004 partly verified
A `gvl.st` with a file-level `VAR_GLOBAL` block declares globals for every program; one the manifest does not declare is a `state` tag starting at zero. An initial value goes in the manifest's `init:`.
- pass
TestGVLComposesIntoEveryProgramininternal/project - pass
TestCheckGoldenGVLincmd/naut
CCS-005 partly verified
`VAR_GLOBAL CONSTANT` in a `lib/` file is seen by every POU and folded at compile time; the constants are not tags.
- pass
TestConformance/st-global-constantsinlang/conformance(4 of 4 passed)
CCS-006 partly verified
Enumerations (`TYPE E : (A, B, C)` and `(A := 1, ...)`) work as in Codesys: `E#A` or plain `A` in comparisons and `CASE` labels, `TO_INT` / `TO_E`, and live values show the member name.
- pass
TestConformance/st-enuminlang/conformance(3 of 3 passed) - pass
TestEnumTypedTagininternal/project
CCS-007 verified
`VAR_TEMP` is reset on every call.
- pass
TestConformance/st-var-tempinlang/conformance(3 of 3 passed)
CCS-008 verified
`CASE` on named constants runs the clause of the matching constant.
- pass
TestConformance/st-case-constantsinlang/conformance(4 of 4 passed)
CCS-009 partly verified
`VAR_IN_OUT` works as in Codesys: the block reads and writes the caller's variable by reference.
- pass
TestLadderFunctionBlockInOutStructPininlang/ld
CCS-010 verified
`Step.X` and `Step.T` work as in Codesys: `Step.X` is TRUE while the step is active and `Step.T` is the elapsed `TIME` in the step, usable in a condition such as `ChargeA.T >= T#5M`.
- pass
TestConformance/sfc-step-tinlang/conformance(6 of 6 passed)
CCS-011 verified
Action qualifiers `N`, `S`, `R` and `P` work as in Codesys, plus `P1` and `P0`: N while the step is active, S sets once, R clears, P and P1 fire one scan wide on entry, P0 on exit.
- pass
TestConformance/sfc-qualifiersinlang/conformance(8 of 8 passed)
CCS-012 verified
Alternative branch priority is declaration order, first highest, and a lower branch fires when the higher ones are false.
- pass
TestConformance/sfc-alt-priorityinlang/conformance(8 of 8 passed)
CCS-013 partly verified
A transition is evaluated once per scan from a snapshot, with divergence activating every target in the same scan and convergence waiting for every source.
- pass
TestConformance/sfc-sim-div-convinlang/conformance(7 of 7 passed)
CCS-014 no test yet
Numeric transition priority, transition conditions in LD/FBD/IL and action bodies in LD/FBD/IL are not supported: transitions are ST expressions and action bodies are ST.
CCS-015 partly verified
Library manager and `.library` files are not available: reusable blocks live in `lib/` and are shared by copying or vendoring.
- pass
TestCheckLibDirCleanincmd/naut