Files
FreeCADWasmDev/docs/current/start-svg-delivery.md
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

3.9 KiB
Raw Blame History

Start SVG 接线与打包优化

2026-09-09 17:24。Start 的官方 SVG 导入链已经接通,并完成浏览器 Worker 验证。现有 Draft 格式业务回归通过,未重新移植 DXF,也未重编译 OCCT。

实际修复

  • 复用此前已配置的官方 Draft Python 源树及本机 stdlib,完成 Start 增量链接。补齐真实 Materials -> Part -> Start Python 模块注册;实际调用 importSVG.insert,不自建解析器。
  • 从现有 Draft runtime 提取 HeadlessDraftImports.h,两模块共用已存在的无界面导入兼容代码。这里只提供 Qt 导入边界;不代表 Qt GUI、颜色/字体界面行为已经移植。
  • start.importSvg 明确路由到 start.worker.ts,避免落到源码检查 Worker。浏览器通过真实 WebModuleRouter 加载 WASM,执行导入、相关请求错误返回及同文档恢复。
  • Facade 验证真实对象数量、唯一对象名、非空有效形状、有限正长度及首对象身份;加载期间取消的请求不会继续执行 native。
  • 测试输入包括不同矩形、圆、折线、多边形、圆弧、缩放/平移组合、混合图形,检查原生长度。错误包括非 XML、截断 XML、缺失文件、错误扩展名以及后续恢复。

减少打包浪费

Start 初始链接曾因嵌入资源超出初始内存失败;扩容仅恢复构建,随后继续定位体积。Python 编译时使用的 libpython3.12.a 又被完整目录嵌入浏览器,另外存在大量 .pyc 和桌面翻译文件。

现只从 Start/Draft 运行时打包中排除 __pycache__、.pyc、config-*/libpython*.a、Draft 桌面 translations,并从相关 LINK_DEPENDS 中过滤这些内容。Python 源码、几何资源和本机原文件保留,没有删除用户资料。现有发布缓存、完整 WASM 校验和原子替换保留。

产物 优化前字节 优化后字节
Start WASM 192134390 88350260
Draft WASM 204237822 98636488

合计减少 209385464 字节,约 209.4 MB。Start 减少 54.0%,Draft 减少 51.7%。不把文件体积变化直接宣称为全项目吞吐提升;其它模块尚未统一采用此打包排除。

实测耗时

步骤 秒
本轮一次构建互斥等待 16.134
Start 源文件编译,最后记录 3.383
Draft 源文件编译,最后记录 7.062
Start / Draft 最后链接 25.907 / 32.929
Start 验收中的 WASM 加载 0.516
原生初始化 0.197
首次 SVG 导入,含 Python 导入 1.065
随后有效 SVG 导入 0.013 至 0.048
浏览器 Worker 完整组 4.123
Start 三项正式验收,含浏览器 Worker 6.199
Draft 四项正式回归 5.549

这些是实际步骤,不是整轮开发耗时;本轮约 16:26 开始,包含两次缺依赖定位、打包优化和多轮针对性确认。使用相同编译目标合并相关修改,未执行全库 API 验收。

文件系统不支持 reflink:对 192 MB Start 产物普通复制 2.543 秒,强制 reflink 返回 ENOTSUP。实测在 wasm-copy-benchmark.json,未把不支持的技术包装为优化成果;实际采用的是减少无用嵌入内容。

证据与续接

  • Start 三项:business-evidence/6c5221018fc4b94b51e5b8c1-20260909T092510459358.json。当前有效路径以业务账本为准。
  • Draft 四项:business-evidence/bcbed2d1047785af9fd2fd80-20260909T092047436319.json。
  • Facade、路由、发布和几何边界 19 项检查通过;调度效率 73 项测试通过;TypeScript 和前端增量发布构建通过。
  • 未认证完整 Start 用户界面、SVG 文本/图片、GUI 显示属性或 OPFS 保存。浏览器证明覆盖实际 Worker 和官方几何链,不能扩大为整个桌面 SVG 功能集已移植。
  • 当前快照有效验收 123/1504,无有效结果指纹失效遗留;后台持续运行。后续直接复用共享导入适配和这两模块产物,不重复补同一注册链或重做 SVG/DXF 算法。