Skip to content

perf(macos): 加速 Rust CI 与桌面打包 - #1107

Merged
appergb merged 3 commits into
betafrom
perf/macos-ci-build
Sep 26, 2026
Merged

appergb merged 3 commits into
betafrom
perf/macos-ci-build

Conversation

@appergb

@appergb appergb commented Sep 25, 2026 •

Copy link
Copy Markdown
Collaborator

摘要

macOS CI 曾串行重复编译 stable check、测试与 MSRV;打包在命中 Cargo 缓存后仍会完整重建 MLX。本次优化 macOS Rust 检查与原生缓存,并支持从功能分支单独构建 Apple Silicon / Intel 桌面包。

修复 / 新增 / 改进

  • 用 lib/bin 测试保留生产代码编译覆盖,移除 macOS 重复 check;MSRV 独立并行,补齐 Core、Host、backend-tests 缓存。
  • macOS release 使用 16 个 codegen units,保留 opt-level=3、thin LTO 和 unwind;缓存恢复与打包共用环境配置。
  • 为 MLX CMake out 增加独立缓存,按架构/profile/编译器/SDK/子模块及配置隔离,在 rust-cache 清理本地依赖之前保存;Cargo build script 和 CMake 每次仍校验输入。
  • 保留 MLX build-script 缓存,清理旧交付产物并传播打包失败;桌面 dispatch 的 platform=macos 只生成两个 macOS 架构的包,附 Cargo timings。

兼容

默认平台矩阵及 Windows/Android/Linux 的编译参数、测试和发布行为保持原样。分支构建只上传 artifacts。详见调研与实现说明。

测试计划

  • npm test:90 个入口及前端构建通过,包含 Core 快捷键回归;原生缓存修改后再次通过。
  • Rust Tauri lib/bin:490 passed,0 failed。
  • 本地实际 DMG、签名/用途声明、app/DMG MLX 哈希验证通过;热打包与失败传播回归通过。
  • actionlint、shell 语法、格式、默认矩阵语义比较、缓存键稳定性/失效和 post 顺序检查通过。
  • 四轮独立 sub-agent review:未发现 bug。
  • 当前提交主 CI全部通过;macOS stable/MSRV 另各复跑一次,确认 debug 原生缓存复用。
  • 当前提交仅 macOS 桌面缓存种子构建和缓存复用构建均成功:ARM64/Intel 的 DMG、updater 和计时报告齐全。

独立 Linux egui workflow 受 beta 已有 UI 缺口阻塞:旧测试引用了已删除的三个函数,真实手机输入卡也没有 CA 指纹展示。失败日志。该部分需要额外的 Linux 产品界面修复;维护者已确认本次仅验收 macOS,Linux egui 暂不处理。

实测耗时

项目 基线 最新热缓存
macOS 检查 原串行 job 24:59 stable 4:03 / MSRV 4:07,现为并行 job
Apple Silicon Rust release 14:16 5:19(约 -63%)
Intel Rust release 13:57 8:33(约 -39%)
MLX 原生构建 初版命中普通 Cargo 缓存仍需 7:17 独立缓存后 0:35(约 -92%)

基线来自 beta CI及 Beta.2 桌面构建。最终提交为 06e7e634;macOS stable/MSRV 热复验分别见主 CI 的 attempts/2 与 attempts/3。数字是各 job/Cargo 阶段的实际观测,不含排队;runner/工具链及缓存条件不同,不视为同机性能保证。所有相关运行的完整日志及 Cargo timings 已留档。

@appergb
appergb merged commit 06e7e63 into beta Sep 26, 2026
21 of 22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant