379 Commits

Author SHA1 Message Date
cnc
c81f9d0111 按源验证API百分号文件模式
源依据:LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc 的 Interp::open() 在首个非空行是 % 时启用 percent-file mode,src/emc/rs274ngc/interp_read.cc read_text() 在匹配 % 处结束读取并忽略后续文本。

结论:native API source-linked smoke 增加 CNC_SIM_RS274_FILE_MODE 下的百分号文件断言,确认 cnc_sim API 文件模式走 LinuxCNC open/read 语义而非逐行桥接或 smoke fallback。

检查:./test-linuxcnc-api-native.sh;./test-native.sh;./test-linuxcnc-source-link.sh。
2026-06-06 13:10:02 +08:00
cnc
c75eec1057 按源验证刀库DB参数拆分
源依据:LinuxCNC src/emc/tooldata/tooldata_db.cc 的 tooldata_db_init() 使用 strtok_r 原地拆分 progname_plus_args,再检查 argv[0] 是否可执行。

结论:wasm-safe tooldata runtime probe 增加多参数输入副作用断言,确认缺失 DB 程序返回失败前仍保留 LinuxCNC 的参数拆分边界,减少外部 tooldata DB 替换风险。

检查:./test-linuxcnc-wasm-tooldata-link.sh;./test-native.sh;./test-linuxcnc-source-link.sh。
2026-06-06 13:03:48 +08:00
cnc
23e67bb6cd 按源验证非随机刀表保存边界
源依据:LinuxCNC src/emc/tooldata/tooldata_common.cc 的 tooldata_save() 在 DB_NOTUSED 下按 is_random_toolchanger 选择起始 pocket;非随机换刀器从 pocket 1 开始写出,跳过 spindle pocket 0。

结论:wasm-safe tooldata_common standalone probe 增加非随机保存断言,确认 pocket 0 的 spindle-only 数据不会写入普通刀表,同时 pocket 1 的真实刀具仍会保存,减少 tooldata_common/mmap 后端替换风险。

检查:./test-linuxcnc-wasm-tooldata-common-link.sh;./test-native.sh;./test-linuxcnc-source-link.sh。
2026-06-06 12:58:57 +08:00
cnc
42e5b0784d 按源验证Python插件路径节边界
源依据:LinuxCNC src/emc/pythonplugin/python_plugin.cc 的 configure() 按调用方 section 查找 TOPLEVEL,但 PATH_APPEND 固定从 PYTHON section 逐项读取并在 tilde expansion 失败时返回 PLUGIN_EXCEPTION_DURING_PATH_APPEND。

结论:wasm-safe python_plugin standalone probe 增加 REMAP/PYTHON section 分离边界,确认禁用 Python 时仍保留 LinuxCNC 的 INI 查找顺序和失败状态,不引入浏览器端 Python 执行。

检查:./test-linuxcnc-wasm-python-plugin-link.sh;./test-native.sh;./test-linuxcnc-source-link.sh。
2026-06-06 12:53:40 +08:00
cnc
64f336d6f2 按源验证tooldata低索引写入
源依据:LinuxCNC src/emc/tooldata/tooldata_mmap.cc 的 tooldata_put() 仅在 idx > last_index 时返回 IDX_NEW 并更新 last_index,否则返回 IDX_OK。

结论:wasm-safe tooldata mmap probe 增加低于当前 last_index 的写入断言,确认返回 IDX_OK、last_index 不变且数据可读回,减少 tooldata_mmap 后端替换风险。

检查:./test-linuxcnc-wasm-tooldata-link.sh;./test-native.sh;./test-linuxcnc-source-link.sh。
2026-06-06 12:48:33 +08:00
cnc
fc56b11d8f 按源链接Python绑定探针
结论:依据 LinuxCNC canonmodule.cc、interpmodule.cc 与 py*.cc,新增 Python binding link probe,证明 7 个 non-gcodemodule blocked binding 对象可与 inert Python/runtime shims 链接;同时负向锁定 gcodemodule.cc 与浏览器 runtime canon bridge 的 Canon 回调重定义冲突,Python/remap 执行仍禁用,未扩展 smoke。

检查:./test-linuxcnc-wasm-python-binding-link.sh;./test-linuxcnc-wasm-python-c-api-symbols.sh;./test-linuxcnc-wasm-runtime-link.sh;git diff --check;./test-native.sh;./test-linuxcnc-source-link.sh。
2026-06-06 12:40:49 +08:00
cnc
fb9561ccc7 按源标记Python绑定编译覆盖
结论:依据 LinuxCNC RS274 Python/Boost.Python 绑定源 canonmodule.cc、gcodemodule.cc、interpmodule.cc 与 py*.cc,blocker 分析新增 python-compile-covered 分组,锁定这些 blocker 已由 inert Python C API symbol probe 编译覆盖;Python/remap 执行仍保持禁用,未扩展 smoke。

检查:./test-linuxcnc-wasm-python-c-api-symbols.sh;./test-linuxcnc-wasm-blockers.sh linuxcnc-rs274-wasm-source-files.txt;CNC_SIM_WASM_BLOCKERS_SELF_CHECKS=1 ./test-linuxcnc-wasm-blockers.sh linuxcnc-rs274-wasm-source-files.txt;./check-linuxcnc-wasm-blockers-source-map.sh;./test-native.sh;./test-linuxcnc-source-link.sh。
2026-06-06 12:27:22 +08:00
cnc
4e246738ac 按源清理OPFS参数scratch
结论:依据 LinuxCNC rs274ngc_pre.cc restore_parameters() 只读取配置参数文件、interp_internal.hh 默认 rs274ngc.var/.bak 常量,浏览器 OPFS loadParameterFile 在加载存在的参数文件前清理 rs274ngc.var.new/.bak scratch,避免旧 WASM mirror 污染;缺失文件路径继续清空 scratch 并返回 null。

检查:./test-native.sh 通过;./test-linuxcnc-source-link.sh 通过。
2026-06-06 11:47:33 +08:00
cnc
92562db29f 按源验证当前位置命名参数 2026-06-06 08:51:20 +08:00
cnc
de5f28f7ee 按源扩展坐标偏置UVW覆盖 2026-06-06 08:45:25 +08:00
cnc
82f222ba44 按源验证G10坐标UVW偏置 2026-06-06 08:38:23 +08:00
cnc
cdc30dda7e 按源验证G92单位切换UVW偏置 2026-06-06 08:35:11 +08:00
cnc
1d96aa8a55 按源验证单位切换UVW线性轴 2026-06-06 08:31:42 +08:00
cnc
25cb6885bf 按源修正外部单位换算
结论:依据 LinuxCNC emccanon.cc 与 units.h,GET_EXTERNAL_LENGTH_UNITS 返回 user-units-per-mm 而非当前程序单位;新增 G20/G21 后 G92.3 恢复覆盖,native/source-link/test-native 均通过。
2026-06-06 08:26:21 +08:00
cnc
ccd51ff373 按源同步单位切换当前位置
结论:依据 LinuxCNC interp_convert.cc convert_length_units 与 unit_tests/interp/test_interp_basics.cc,G20/G21 切换时事件桥同步重标定当前线性坐标,native/source-link 覆盖通过。
2026-06-06 08:15:59 +08:00
cnc
10bf0a5897 验证 INI G64 默认容差
提示词:快速推进,非纯 source-map-only,保留源依据、自动测试、本地提交且不自动推送。

结论:基于 LinuxCNC rs274ngc_pre.cc 读取 G64_DEFAULT_TOLERANCE/G64_DEFAULT_NAIVETOLERANCE 以及 interp_convert.cc convert_control_mode 在 G64 省略 P/Q 时使用默认值,新增 INI/G-code fixture 并接入 native/source-link 事件断言;./test-native.sh 和 ./test-linuxcnc-source-link.sh 通过。
2026-06-06 07:12:42 +08:00
cnc
ced3e5de0e 验证 INI 圆弧容差收紧
提示词:快速推进,非纯 source-map-only,保留源依据、自动测试、本地提交且不自动推送。

结论:基于 LinuxCNC rs274ngc_pre.cc 读取 CENTER_ARC_RADIUS_TOLERANCE_MM 以及 interp_convert.cc/interp_arc.cc IJK 圆弧半径误差检查,新增 metric arc fixture 和 tighter INI 覆盖默认通过、INI 收紧失败;./test-native.sh 和 ./test-linuxcnc-source-link.sh 通过。
2026-06-06 07:05:29 +08:00
cnc
7ba3a22441 验证 Fanuc 子程序禁用
提示词:快速推进,非纯 source-map-only,保留源依据、自动测试、本地提交且不自动推送。

结论:基于 LinuxCNC rs274ngc_pre.cc 读取 DISABLE_FANUC_STYLE_SUB 以及 interp_read.cc 对 M98、Fanuc-style M99、bare O-word 的禁用分支,新增 INI/G-code fixture 并接入 native/source-link 错误断言;./test-native.sh 和 ./test-linuxcnc-source-link.sh 通过。
2026-06-06 06:48:17 +08:00
cnc
5aa328b413 验证 G92 禁用持久化
提示词:快速推进,非纯 source-map-only,保留源依据、自动测试、本地提交且不自动推送。

结论:基于 LinuxCNC rs274ngc_pre.cc 的 DISABLE_G92_PERSISTENCE 初始化清理和 interp_convert.cc convert_stop 的 M30 清理逻辑,新增 INI/G-code fixture 并接入 native/source-link 参数持久化断言;./test-native.sh 和 ./test-linuxcnc-source-link.sh 通过。
2026-06-06 06:38:42 +08:00
cnc
586c28656d 验证 OPFS rename 持久清理
提示词:快速推进,避免纯 source-map-only,不自动推送。

结论:基于 LinuxCNC rs274ngc_pre.cc save_parameters() 的 filename + .new rename 语义,补强浏览器 OPFS moveFile 在新 WASM 实例中持久删除源文件并恢复目标 mirror 的覆盖;./test-native.sh 和 ./test-linuxcnc-source-link.sh 通过。
2026-06-06 06:31:30 +08:00
cnc
6efb77b8e4 验证 tooldata reset 保留索引边界 2026-06-06 06:26:46 +08:00
cnc
ebb29f8cb6 补齐 G5.3 非 G5.2 运动错误覆盖 2026-06-06 06:15:12 +08:00
cnc
8544872198 按源保护 OPFS 参数备份失败边界 2026-06-06 06:06:03 +08:00
cnc
e320d6d420 按源保护 PythonPlugin INI 节解析边界 2026-06-06 05:56:10 +08:00
cnc
ba2d680500 按源保护 PythonPlugin inittab 初始化边界 2026-06-06 05:49:45 +08:00
cnc
9af3443d95 按源保护 PythonPlugin 路径列表边界 2026-06-06 05:34:33 +08:00
cnc
4adcd82b74 按源保护 PythonPlugin TOPLEVEL 路径边界 2026-06-06 05:26:33 +08:00
cnc
66ea34a76d 验证 Boost.Python shim 惰性边界 2026-06-06 05:20:23 +08:00
cnc
5bc568eaa9 加强 PythonPlugin 负状态探针 2026-06-06 05:12:39 +08:00
cnc
23a4679c28 验证 tooldata NML 非空表注册路径 2026-06-06 05:08:00 +08:00
cnc
3c05202097 补齐刀补下偏置平面错误覆盖
结论:基于 LinuxCNC interp_convert.cc convert_axis_offsets()、convert_straight() 和 convert_set_plane(),native/source-link 现在覆盖刀补打开时 G92、G53、G18 被拒绝的失败分支。
2026-06-05 23:52:34 +08:00
cnc
ba0d973f4f 补齐刀补下模式切换错误覆盖
结论:基于 LinuxCNC interp_convert.cc convert_control_mode()、convert_coordinate_system() 和 convert_home(),native/source-link 现在覆盖刀补打开时 G64、G55、G28 被拒绝的失败分支。
2026-06-05 23:46:15 +08:00
cnc
f69e10bedf 补齐刀补下工具偏置错误覆盖
结论:基于 LinuxCNC interp_convert.cc convert_tool_length_offset(),native/source-link 现在覆盖 cutter radius comp 打开时 G43 工具长度偏置被拒绝的失败分支。
2026-06-05 23:41:09 +08:00
cnc
a8f6a9d907 补齐 probe 刀补错误覆盖
结论:基于 LinuxCNC interp_convert.cc convert_probe(),native/source-link 现在覆盖 cutter radius comp 打开时 G38 probe 被拒绝的失败分支。
2026-06-05 23:36:27 +08:00
cnc
0850954ca8 补齐 probe 转换错误覆盖
结论:基于 LinuxCNC interp_convert.cc convert_probe(),native/source-link 现在覆盖零进给、G95 feed-per-rev 和起点等于终点三类 G38 probe 失败分支。
2026-06-05 23:32:43 +08:00
cnc
6bd1c6a429 接入 WASM blocker 自检
结论:native/source-link 必跑入口已执行 blocker 分析器负路径自检,防止坏 manifest、缺失源根、重复条目和缺失替换映射退化。
2026-06-05 23:26:02 +08:00
cnc
e928b32e69 补齐 OPFS 镜像冲突覆盖 2026-06-05 23:20:06 +08:00
cnc
36763c6bcd 补齐 cutter-comp override M码覆盖 2026-06-05 23:15:13 +08:00
cnc
03080afe24 补齐 cutter-comp 剩余M码覆盖 2026-06-05 23:10:46 +08:00
cnc
120a294f62 补齐 cutter-comp M码 source-linked 覆盖 2026-06-05 23:06:13 +08:00
cnc
a3daa829fc 补齐 switchkins 输出路径检查 2026-06-05 22:46:15 +08:00
cnc
71c61fca84 补齐 tooldata 非随机同步 probe 2026-06-05 22:40:34 +08:00
cnc
ff2980569c 锁定 ABORT 热注释 source-linked 错误 2026-06-05 22:34:46 +08:00
cnc
695186ddfc 补齐 LinuxCNC 注释 source-linked 覆盖 2026-06-05 22:31:09 +08:00
cnc
8394042d18 补齐 OPFS 参数跨实例恢复覆盖 2026-06-05 22:20:10 +08:00
cnc
7e18c6cd40 补齐默认 M3M4 单主轴 source-linked 覆盖 2026-06-05 22:07:39 +08:00
cnc
09e2259669 补齐默认 M5 全主轴 source-linked 覆盖 2026-06-05 22:03:14 +08:00
cnc
867bf09c5d 补齐 M51 全主轴 source-linked 覆盖 2026-06-05 21:59:26 +08:00
cnc
d35766e387 补齐多主轴 G76 source-linked 覆盖 2026-06-05 21:55:31 +08:00
cnc
9c73577ade 补齐多主轴 M19 source-linked 覆盖 2026-06-05 21:50:59 +08:00