行业精选73°

Raycast 2.0 重写:从原生 Swift 到混合架构的技术抉择

Raycast 2.0 @raycast 发布,这是 2020 年首发后最大一次重写,团队写了一篇极…

精选理由

Raycast 团队把桌面应用跨平台的技术取舍和工程细节全盘托出,做桌面端或跨平台产品的开发者能从中获得大量实战经验,建议点开博客原文细读。

AI 摘要

Raycast 2.0 是自 2020 年发布以来最大的一次重写,团队从纯原生 Swift/AppKit 应用转向 TypeScript + Swift + C# + Rust + Node + React 的混合架构,以实现跨平台并保持原生质感。重写原因包括编译时间变长、AppKit 掣肘和原生工程师难招。技术选型上,他们放弃了 Electron 和 Tauri,自研了四层架构(Host App、Web Frontend、Node Backend、Rust Core),并解决了 WebView 在 macOS 和 Windows 上的渲染、节流、闪烁等问题。最终内存占用从 v1 的 200-300 MB 增至 v2 的 350-450 MB,但团队通过优化和科普帮助用户正确理解内存使用。

AI 翻译 · 中文

Raycast 2.0 是自 2020 年发布以来最大的一次重写,团队从纯原生 Swift/AppKit 应用转向 TypeScript + Swift + C# + Rust + Node + React 的混合架构,以实现跨平台并保持原生质感。重写原因包括编译时间变长、AppKit 掣肘和原生工程师难招。技术选型上,他们放弃了 Electron 和 Tauri,自研了四层架构(Host App、Web Frontend、Node Backend、Rust Core),并解决了 WebView 在 macOS 和 Windows 上的渲染、节流、闪烁等问题。最终内存占用从 v1 的 200-300 MB 增至 v2 的 350-450 MB,但团队通过优化和科普帮助用户正确理解内存使用。

shao__mengRaycast 2.0 @raycast 发布,这是 2020 年首发后最大一次重写,团队写了一篇极有工程价值的技术博客,详细记录了他们如何从纯原生 Swift/AppKit 应用,转向 TypeScript + Swift + C# + Rust + Node + React 的混合架构,实现「在不丢失原生质感的前提下实现跨平台」 为什么要重写? v1 是基于 AppKit 的纯原生 macOS 应用,几乎所有 UI 组件都自研,没大
  • Simon Willison’s Weblog05-14 22:53原文