3.9 KiB
3.9 KiB
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 算法。