Files
cnc_wams/wasm-port/docs/drift-report.md
wangdequan 3faaa8e7a2 按推荐建议,继续执行
结论:已为 LinuxCNC genserkins 增加 native runtime baseline,并保持 Go math 通过窄 C++ wrapper 复用 vendored gomath.c,完整 native 验证通过。
2026-06-07 20:55:31 +08:00

3.1 KiB

Drift Report

Current Status

As of the current upstream baseline, no byte-level drift is allowed between files listed in tools/source-manifest.txt and the matching files under ../linuxcnc/.

The enforced upstream baseline is:

60597ee0718873d2449058c824262a275e5e4bad

tools/verify_vendor_sync.sh enforces this by comparing every manifest file against upstream during native validation.

Allowed Standalone Boundaries

The following differences are intentional runtime boundaries, not LinuxCNC semantic rewrites:

Boundary Standalone treatment
RTAPI Minimal compatibility shim in runtime/core/shims/rtapi.h.
HAL lookup Standalone HAL adapter for _hal[...] named parameter reads.
INI lookup Standalone INI adapter around vendored LinuxCNC INI parser behavior.
Canonical output Canonical calls are captured as test events instead of driving hardware.
Python/remap Python/remap hooks are stubbed at the runtime edge.
Dynamic interpreter path interp_base.cc probe uses standalone EMC2_HOME compile-time path boundary.
Realtime scheduler TP probes seed deterministic status/config data instead of running LinuxCNC realtime process topology.
Kinematics component lifecycle Kinematics modules are initialized through LinuxCNC module entry points where native runtime probes exist, while HAL component init/ready/exit, HAL pin allocation, and RTAPI module metadata are handled by standalone shims.
Go math C/C++ linkage genserkins runtime probing compiles vendored gomath.c through a narrow C++ wrapper so LinuxCNC genserfuncs.c can link to the upstream Go math symbols without editing vendored source.
Browser storage OPFS remains outside the native core and is not yet connected.

Enforced Non-Drift Rules

  • Do not edit ../linuxcnc/.
  • Do not patch vendored files without adding a patch under patches/ and documenting the reason.
  • Do not add standalone Interp::convert_g().
  • Do not add .c or .cc manifest files without a source compile probe.
  • Do not sync from a different upstream commit without updating tools/upstream-baseline.txt and docs/scope-and-baseline.md.

Known Gaps

  • No browser/WASM parity tests yet.
  • No JS SDK validation yet.
  • No OPFS persistence validation yet.
  • Identity/trivial, 5axiskins, TRT xyzac/xyzbc, delta, SCARA, PUMA, serial, hexapod, pentapod, and related kinematics sources now have native source-probe coverage.
  • Full machine baselines beyond the current identity/trivial, 5axiskins, TRT, delta, SCARA, PUMA, serial genserkins, and other existing runtime probes are not established.
  • Fixture expectations are currently checked against the standalone vendored source path, not by running a native LinuxCNC binary for every fixture.

Current Drift Conclusion

Within the native extracted-core scope, the port currently has no permitted byte-level drift from vendored LinuxCNC source files. All current behavior coverage is guarded by upstream baseline validation, vendor sync validation, source compile probes, native harnesses, and fixture checks.