---
title: "GPUI Kit：用 Rust 做跨平台桌面界面，GitHub 本月新增 3,924 Star - Angryecho"
description: "用 Rust 写桌面软件时，窗口、输入、表格、停靠面板和代码编辑往往要自己从渲染层往上搭。 GPUI Kit 把这些放进同一套框架：底层是 Zed 的 GPUI，上面是带样式的组件、无样式的交互基础，以及可选的 JavaScript 扩展宿主。"
canonical_url: "https://www.angryecho.com/c/rustcc/p/P2TBBrCLtj2MhUPMEcT3X"
meta:
  "og:description": "用 Rust 写桌面软件时，窗口、输入、表格、停靠面板和代码编辑往往要自己从渲染层往上搭。 GPUI Kit 把这些放进同一套框架：底层是 Zed 的 GPUI，上面是带样式的组件、无样式的交互基础，以及可选的 JavaScript 扩展宿主。"
  "og:image": "https://www.angryecho.com/_og/d/c_Post%2Ctitle_~5ZCQ5qe9572R%2Cdescription_~5ZCQ5qe95LiA5LiL77yM5bCx5LiK5ZCQ5qe9572R44CC%2CpostId_P2TBBrCLtj2MhUPMEcT3X%2Crevision_~MjAyNi0xMC0zMFQwMjo1NTo1OS4xNDkwNzZa%2Cp_Ii9jL3J1c3RjYy9wL1AyVEJCckNMdGoyTWhVUE1FY1QzWCI%2Cs_AE2atp_htHl17s0W.png"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": "GPUI Kit：用 Rust 做跨平台桌面界面，GitHub 本月新增 3,924 Star"
---

> Index of every page on this site: [llms.txt](https://www.angryecho.com/llms.txt)

# **GPUI Kit：用 Rust 做跨平台桌面界面，GitHub 本月新增 3,924 Star**

用 Rust 写桌面软件时，窗口、输入、表格、停靠面板和代码编辑往往要自己从渲染层往上搭。 [GPUI Kit](https://github.com/longbridge/gpui-kit) 把这些放进同一套框架：底层是 Zed 的 [GPUI](https://github.com/zed-industries/zed)，上面是带样式的组件、无样式的交互基础，以及可选的 JavaScript 扩展宿主。官方文档写明，它从第一天起就用在已公开发布的商业桌面应用 [Longbridge Pro](https://longbridge.com/desktop) 里。

> 截至 2026-10-28，GitHub 仓库 Star **18,702**、Fork **1,155**。当天 [GitHub Trending](https://github.com/trending/rust?since=monthly) 的 Rust 月榜列出 21 个仓库，GPUI Kit 排第 **4**，页面标注 **this month 新增 3,924** Star。最新版本是 2026-10-26 发布的 **v0.8.1**，crates.io 上的 `gpui-kit` 也是这个版本。

---

## 1. 应用只声明一个 crate

仓库把入口收成 `gpui-kit`。应用的 `Cargo.toml` 只写这一个依赖，就会带上固定版本的 GPUI、无样式的 `gpui-base`、带样式的 `gpui-component`，以及默认的 Lucide 图标资源。组件从 `gpui_kit::component` 来，GPUI 的类型从 `gpui_kit::*` 来，不必再单独声明 GPUI。

默认后端是发布到 crates.io 的上游快照，包名是 `gpui-pre`，当前钉在 **0.3.10**。它不是另一套渲染器。需要换 [GPUI Fast](https://github.com/longbridge/gpui-fast) 时，打开同名 feature 即可，导入和 `init` 不用改；官方说明这个 feature 是累加的，上游包仍会参与编译。

JavaScript 扩展不在这个默认依赖里，要另外使用 `gpui-shell`。

## 2. 表格、Dock 和代码编辑器

中文 README 把组件和原语写成 **75+**，覆盖表单、导航、浮层、数据展示、编辑、反馈和布局。复杂界面里，文档点名的几块是：

- **数据表**：虚拟滚动、固定列、列宽调整、排序和单元格选择。README 写可以承载数十万行。
- **虚拟列表**：只画可见区域，列表项高度可以不同。
- **Dock**：面板可调、标签可拖、分割可嵌套、边缘可停靠，布局能序列化保存。仓库示例是 `cargo run -p example-dock`。
- **代码编辑器**：README 写 20 万行规模下仍保持稳定，并接上 Tree-sitter 高亮和 LSP 的诊断、补全、悬浮提示。示例是 `cargo run -p example-editor`。
- **正文**：同一套 UI 里可以渲染 Markdown 和 HTML，也带图表。对应示例是 `example-markdown` 和 `example-html`。

v0.8.1 的发布说明把这一版的改动集中在文本选择、Markdown、编辑器布局、滚动、焦点和无障碍，并给文本样式、编辑器滚动条、Diff 解析和高亮加了兼容的定制接口。默认后端仍是 `gpui-pre` 0.3.10，可选的 GPUI Fast 是 0.1.12。

## 3. 发布之后用 JavaScript 加面板

三层的分工在 README 里写得很直：

| 层 | 做什么 | 适合 |
| --- | --- | --- |
| `gpui-component` | 带样式的完整组件，可换主题 | 直接做应用 |
| `gpui-base` | 焦点、浮层、虚拟化等行为，不带预设外观 | 自己的设计系统 |
| `gpui-shell` | Rust 宿主里的 JavaScript 运行时，能力要逐项授予 | 插件和脚本化面板 |

`gpui-shell` 的定位是：贡献者不用 fork、也不用等一次发版，就能往已发布的 Rust 宿主里加面板和业务逻辑。v0.8.1 的说明里，它准备以配套的 `quickjs-jit`、`quickjs-jit-runtime`、`quickjs-jit-stdlib` **0.14.1** 发到 crates.io。

交互层带 AccessKit 的 role、name、state、relationship 和 action。测试可以在 headless window 里渲染真实组件，驱动鼠标和键盘，再核对状态、焦点、布局和无障碍信息。组件画廊用仓库根目录的 `cargo run` 打开。

Web 目标是 `wasm32-unknown-unknown`。iOS 和 Android 的嵌入方式在下一节，桌面那套 `application()` 到了移动端不再使用。

---

## 4. 移动端：GPUI 实验性嵌入，以及 Native Shell

手机上有两条路，画出来的东西不一样。

**GPUI Kit 移动端**把 GPUI 嵌进原生 App。 [移动端文档](https://gpui-kit.com/zh-CN/docs/mobile) 标成「实验性」和「依赖平台」。

- 首要目标仍是桌面。移动端用来复用一部分组件，例如在原生界面里用 TextView 渲染富文本。
- 中间是一块 GPUI 自己画的 View。导航栏、底部输入框留在原生 UI，两边各自管布局和输入。
- 组件还是 Kit 的 Rust 组件。移动端不调用 `gpui_kit::application()` 或 `gpui_kit::platform`。宿主初始化 GPUI，调用 `gpui_kit::init(cx)`，再包一层 `component::Root`。
- `gpui_kit::is_mobile()` 只看编译目标是不是 iOS 或 Android。

平台层是社区项目 [gpui-mobile](https://github.com/itsbalamurali/gpui-mobile)，实现 `gpui::Platform`：iOS 用 Metal / wgpu，Android 用 Vulkan 或 GL / wgpu，管窗口、触摸、文字和 GPU 表面。

- 作者账号 [itsbalamurali](https://github.com/itsbalamurali)，资料名 Balamurali Pandranki，地点 Tallinn, Estonia，公司栏 `@wearekesk`。
- 仓库创建于 2026-03-03。2026-10-28 的 Star 是 441，许可证 AGPL-3.0。
- 公开资料里没有把他写成 Longbridge 成员或 GPUI Kit 维护者。

GPUI Kit 当前接的是兼容 fork [longbridge/gpui-mobile](https://github.com/longbridge/gpui-mobile)。

- GitHub 的 parent 和 source 都是 `itsbalamurali/gpui-mobile`。fork 创建于 2026-09-11，许可证仍是 AGPL-3.0。
- 以 `gpui-pre-mobile` 发到 crates.io。0.1.0 对着 `gpui-pre` 和 `gpui-pre-wgpu` **0.3.4**，平台、渲染器和应用用同一套 GPUI 类型。
- 下游不必再检出 Zed 的 Git 仓库，也不必自己打 Cargo patch。
- 文档把它称作临时兼容包。等上游 `gpui-mobile` 接入、GPUI 自己也发布 crate 之后，改回社区包。
- Rust 视图树和组件仍由 GPUI 与 GPUI Kit 管。

文档写明的验证范围：

- Swift 托管的 iOS 示例在模拟器里构建并运行过。固定脚本面向 iOS 18.6 的 iPhone 16 Pro；示例最低部署版本写成 iOS 16，不表示每个系统版本都测过。
- 一个 AI Chat 区域在 iOS 和 Android 上做过功能和性能验证，用到 TextView、Button、Menu、Popover、Scrollbar、Input、Textarea 和文本选择。TextView 在这个场景里覆盖完整。
- 其他组件和完整应用布局还没有在移动端验证。Android 的 Activity 示例走另一条宿主路径，该页没有展开步骤。
- 示例把 `gpui-pre` 钉在 **0.3.4**，当前 Kit 工作树是 **0.3.10**。只换本地路径，Cargo 仍可能同时选出两套 GPUI 类型。
- 模拟器上的布局和点击不能代替真机帧耗时。

**Native Shell** 是手机上的另一条路。仓库 [longbridge/nsh](https://github.com/longbridge/nsh)，文档 [nsh.dev](https://nsh.dev)。按钮和文字由系统控件绘制。

- iOS：UIKit、CoreText，iOS 15+。
- Android：Android View、 `StaticLayout`，Android 9（API 28）+。
- 界面用 Rust、TSX，或让 TSX 引用 Rust 组件。菜单在桌面上是弹出层，在手机上是 sheet。
- 单独运行： `nsh run my-app --target ios`（Xcode 和模拟器）， `nsh run my-app --target android`（Android SDK，模拟器或真机）。
- 嵌进已有 App：iOS 用 Swift 的 `NshAppView`（ `NativeShell.xcframework`），Android 用 Java / Kotlin 的 `NshView`（ `nsh.aar`）。示例是 `examples/embed-ios`、 `examples/embed-android`。
- 导航、地图留在宿主里。NSH 那一块仍是 Rust 或 TSX。

仓库数据、桌面平台和 Swift 注册方式在下一节。

## 5. 兄弟项目 Native Shell

GPUI Kit 中文 README 把它写成兄弟项目。源码链接是 [longbridge/native-shell](https://github.com/longbridge/native-shell)。2026-10-28 打开后，仓库名是 [longbridge/nsh](https://github.com/longbridge/nsh)，主页 [nsh.dev](https://nsh.dev)。

- 创建于 2026-10-14。当天 Star **775**、Fork **58**，最近推送 2026-10-28。
- 用 Rust 写的原生 UI 框架，平台包括 iOS、Android、macOS、Windows、Linux 和 Web。
- 状态、逻辑和 API 共用。颜色、字体、间距和动效由应用自己定。
- 界面可以全用 Rust，也可以用 TSX，或让 TSX 屏幕引用 Rust 组件。 `nsh init --template mixed` 混的是 Rust 和 TSX。

各平台用自己的控件绘制：

| 平台 | 绘制 | 版本要求 |
| --- | --- | --- |
| iOS | UIKit、CoreText | iOS 15+ |
| Android | Android View、`StaticLayout` | Android 9（API 28）+ |
| macOS | AppKit、Core Animation、CoreText | macOS 14+ |
| Windows | Win32、Direct2D、DirectWrite | Windows 10 1809+ |
| Linux | GTK 4、Pango | GTK 4.14+ |
| GPUI | GPUI（GPUI Fast），crate `nsh-platform-gpui` | macOS、Windows；Linux 需要 Vulkan |
| Web | HTML、CSS | 现代浏览器 |

菜单、启动和嵌入：

- 菜单在桌面上是弹出层，在手机上是 sheet。
- 运行时可以加载签名的 TSX 包，在宿主配置的沙箱里跑插件、功能和由 AI 生成的界面。
- 命令行是 `nsh`。 `nsh init my-app --template rust` 或 `--template ts`，再用 `nsh run my-app --target ios` 这类目标启动。安装见 [nsh.dev 的安装文档](https://nsh.dev/docs/installation)。

嵌进已有的 Swift / UIKit App 时，NSH 的屏幕仍然用 Rust 或 TSX 写。 [iOS 文档](https://nsh.dev/docs/ios)：

- 链接 `NativeShell.xcframework`， `import NativeShell`，放一个 `NshAppView`。它是 `UIView` 子类。
- 加载 `nsh build` 产出的 `bundle.nshc`。开发用 `NativeShellDev.xcframework` 连接 `nsh dev`。
- 原生页面、导航和这块 NSH 界面在同一棵 UIKit 树里。一个 App 可以放多个 `NshAppView`，每个是独立引擎。
- 示例 `examples/embed-ios/main.swift`：上面一条原生 header，下面一块 NSH。
- 文档里的 Swift 示例是 UIKit，没有把 SwiftUI 写成宿主。

Swift 控件插进 NSH 布局，见 [Native Components](https://nsh.dev/docs/native-components)：

- 宿主实现 `NshComponent`，用 `app.register(component:)` 按名字注册任意 `UIView`。文档举例是地图、相机预览。
- NSH 侧用 Rust 的 `native("名字")` 或 TSX 的 `nativeComponent()`，把它当成普通元素排进去。
- props、事件和 `command` 走 JSON。
- 不经过这块视图时，Swift 用 `app.params`、 `app.send`、 `app.handle`，对应 TSX 的 `host.params`、 `host.on`、 `host.call` / `host.post`。

和 GPUI Kit 的关系，两边 README 各写了一句：

- GPUI Kit 中文 README：GPUI 桌面后端正在开发，将基于 GPUI Kit 构建。
- Native Shell 同日 README：GPUI 后端已经在 macOS、Windows、Linux 上用 GPUI 绘制，并能嵌进 GPUI 与 GPUI Kit 应用。命令是 `nsh run my-app --target gpui`。
- `nsh/base` 里 Button、Checkbox、Switch 这类无样式组件，在名称和范围上跟随 `gpui-base`。编码指南和设计指南也引用 GPUI Kit。

---

## 6. 功能对照

| 场景 | 仓库里已有的入口 | 边界 |
| --- | --- | --- |
| 第一个窗口和按钮 | [Getting Started](https://gpui-kit.com/zh-CN/docs/getting-started) 的 `gpui-kit = "0.8.1"` | 使用组件前要先 `gpui_kit::init` |
| 看全部组件 | `cargo run`（`story` 画廊） | 第一次编译依赖会比较久 |
| IDE 式布局 | `cargo run -p example-dock` | Dock 序列化是组件能力，业务状态仍由应用保存 |
| 代码编辑 | `cargo run -p example-editor` | Tree-sitter 按 feature 选用 |
| Markdown / HTML | `example-markdown`、`example-html` | HTML 渲染不是完整浏览器 |
| 浏览器里跑 | [WebAssembly 文档](https://gpui-kit.com/zh-CN/docs/webassembly) | 工具链要求与桌面不同 |
| iOS / Android 里嵌一块 GPUI | [移动端文档](https://gpui-kit.com/zh-CN/docs/mobile) | 实验性；中间是 GPUI 自己画的 View |
| iOS / Android 上用系统控件画界面 | [Native Shell](https://nsh.dev/docs/ios) | `nsh run --target ios` / `android`；宿主是 `NshAppView` / `NshView` |
| 多平台原生界面，或嵌进 GPUI Kit | [Native Shell](https://nsh.dev) / [longbridge/nsh](https://github.com/longbridge/nsh) | 独立项目；Swift 宿主用 `NshAppView`，界面仍是 Rust / TSX |
| 系统库和编译器 | [安装文档](https://gpui-kit.com/zh-CN/docs/installation) | 桌面要求见下一节 |

官方站点还有一份与 Iced、egui、Qt 6 的 [对照](https://gpui-kit.com/zh-CN/docs/comparison)。那一页的性能结论以项目方材料为准，本文不转写排名。

---

## 7. 在本机跑起来

安装文档按当前依赖图要求 **Rust 1.92 或更新**（Linux 侧的 `oo7` 0.6.0 写明了这个下限）。平台要求是：

1. macOS 15 或更高，并安装 Xcode Command Line Tools（ `xcode-select --install`）。
2. Windows 10 或更高，安装 Visual Studio 2022 的 Desktop development with C++，Rust 使用 MSVC 目标，终端里要能运行 `cmake --version`。
3. Linux 以 Ubuntu 24.04 的包装清单为准，还需要可用的 Wayland 或 X11 会话和 Vulkan 驱动。 `libasound2-dev` 只在打开 `speech` feature 时需要。

```bash
sudo apt update
sudo apt install -y gcc g++ clang libfontconfig-dev libwayland-dev \
  libwebkit2gtk-4.1-dev libxkbcommon-x11-dev libx11-xcb-dev \
  libssl-dev libzstd-dev libasound2-dev vulkan-validationlayers libvulkan1
```

新建应用：

```bash
cargo new gpui-hello
cd gpui-hello
```

```toml
[dependencies]
gpui-kit = "0.8.1"
```

官方入门把 `src/main.rs` 换成下面这样。窗口中央是一行字和一个主按钮，点击后终端打印 `Clicked!`。

```rust
use gpui_kit::component::button::{Button, ButtonVariants};
use gpui_kit::*;

struct HelloWorld;

impl Render for HelloWorld {
    fn render(&mut self, _: &mut Window, _: &mut Context<Self>) -> impl IntoElement {
        div()
            .flex()
            .flex_col()
            .size_full()
            .items_center()
            .justify_center()
            .gap_2()
            .child("Hello, World!")
            .child(
                Button::new("hello")
                    .primary()
                    .label("Click me")
                    .on_click(|_, _, _| println!("Clicked!")),
            )
    }
}

fn main() {
    application()
        .with_assets(assets::Assets)
        .run(|cx| {
            init(cx);
            open_window(WindowOptions::default(), cx, |_, cx| cx.new(|_| HelloWorld))
                .expect("Failed to open window");
        });
}
```

```bash
cargo run
```

已克隆本仓库时，安装文档用 `cargo run -p hello_world` 检查工具链、开窗和点击。Debug 构建几乎不优化 GPUI 和组件，帧耗时会明显高于 release；安装文档给框架依赖写了 `[profile.dev.package]` 的 `opt-level = 3`，这只改善运行，不缩短编译。

可选后端：

```toml
gpui-kit = { version = "0.8.1", features = ["gpui-fast"] }
```

---

## 8. 谁在维护

GitHub 组织 [longbridge](https://github.com/longbridge) 的公开资料是 “Longbridge Developers”，主页指向 [longbridge.com](https://longbridge.com)。组织页创建于 2020-07-17。GPUI Kit 仓库创建于 2024-06-13；这个日期只说明仓库何时出现在 GitHub，不能当成 `gpui-kit` 这个 crate 的上架日。crates.io 上 `gpui-kit` 的包记录始于 **2026-09-03**。

提交数最高的两个账号，GitHub 资料都写着 Longbridge：

- [huacnlee](https://github.com/huacnlee)（资料名 Jason Lee，简介 “Ruby / Go / Rust”，公司 `@longbridge`），contributors 接口的 contributions 为 **1,501**。
- [madcodelife](https://github.com/madcodelife)（资料名 Floyd Wang，公司 `@Longbridge`），contributions 为 **474**。

这两个数字是默认分支上的 commit 贡献计数，不是 PR 数，也不能据此写成头衔或全部维护者名单。

---

## 9. 技术栈

版本以 2026-10-28 仓库 `main` 的 workspace 和 v0.8.1 发布说明为准。

| 部分 | 要求或版本 | 用途 |
| --- | --- | --- |
| 语言 | Rust，workspace `edition = "2024"` | 组件、示例和壳都在这个 workspace |
| 编译器 | Rust **1.92+** | 安装文档给出的当前依赖下限，高于 edition 本身的门槛 |
| 桌面 | macOS 15+、Windows 10+（MSVC）、Linux | 一份 Rust 代码；Linux 包装清单在 Ubuntu 24.04 验证过 |
| 入口 | `gpui-kit` **0.8.1** | 应用侧通常只依赖它 |
| 渲染 | `gpui-pre` **=0.3.10** | Zed GPUI 的配套快照，版本必须精确相等 |
| 可选渲染 | `gpui-fast` **0.1.12** | feature `gpui-fast`，允许后续 `0.1.x` 浮动 |
| 组件层 | `gpui-component`、`gpui-base`、`gpui-kit-assets` | 样式组件、无样式行为、默认图标 |
| 扩展 | `gpui-shell`，QuickJS 相关 crate **0.14.1** | 发布后的脚本面板 |
| 文本与布局 | Taffy、rustybuzz、ttf-parser、ropey | 排版和编辑器文本结构 |
| 编辑相关 | `lsp-types` 0.97.0；Tree-sitter、syntect 为按需能力 | 诊断、补全、高亮 |
| 界面语言 | `rust-i18n` 4.2.0 | 组件文案 |
| Web | `wasm32-unknown-unknown` | 文档中的浏览器目标 |
| 移动端 | 实验性；文档示例钉 `gpui-pre` 0.3.4、包名 `gpui-pre-mobile` | 嵌入 iOS / Android 原生界面，不用桌面的 `application()` |
| 数据库 / 队列 | 无 | 这是 UI 框架，不带服务端存储 |

源码和文档里的代码示例是 [Apache-2.0](https://github.com/longbridge/gpui-kit/blob/main/LICENSE-APACHE)。文档正文和原创图示另外提供 [CC BY 4.0](https://github.com/longbridge/gpui-kit/blob/main/LICENSE-DOCS.md)。GitHub 仓库的 license 字段因此是 Other，不是单一 SPDX 标识。

---

## 10. 项目活跃度

查询时间：2026-10-28。

| 指标 | 数值 |
| --- | --- |
| Star | 18,702 |
| Fork | 1,155 |
| Contributors | 211 |
| 累计 commit | 2,711 |
| 最近 commit 日期 | 2026-10-28 |
| 开放 Issue | 113 |
| 开放 PR | 16 |
| 已合并 PR | 2,508 |
| 已关闭未合并 PR | 326 |
| Release | 18，最新 v0.8.1（2026-10-26） |
| crates.io `gpui-kit` 下载 | 189,694 |

当天默认分支最新 commit 是 `089bcd5`（`message_scroller: Let the scrollbar reach the end of padded content`）。按发布时间倒序，跨进 2026-09 的前几条 Release 里，落在 2026-10 的是 v0.7.1（10-05）、v0.7.3（10-12）、v0.8.0（10-19）和 v0.8.1（10-26）。v0.7.0 的发布时间是 2026-09-28。这些是已发生的发布和提交，不能单独换成“长期不会再有破坏性更新”。

Star、Fork、Issue、PR、commit、Release 来自 GitHub REST / GraphQL。本月新增 Star 来自 Trending 页面原文 “3,924 stars this month”，没有改成自行计算的近 30 天。Contributors 来自 `/repos/longbridge/gpui-kit/contributors?anon=true`，每页 100 条，读完 3 页。

---

## 11. 如何贡献

说明在仓库的 [CONTRIBUTING.md](https://github.com/longbridge/gpui-kit/blob/main/CONTRIBUTING.md)。

1. **反馈**：bug 和想法可以开 [Issue](https://github.com/longbridge/gpui-kit/issues)，也可以到 [Discussions](https://github.com/longbridge/gpui-kit/discussions)。指南更鼓励能复现时直接提 PR。一个 PR 只做一件事。
2. **本地验证**： `./script/bootstrap` 安装依赖；Windows 用 `.\script\install-window.ps1`。改现有界面时跑 `cargo run` 看 story，或 `cargo run -p <示例名>`。改渲染时，macOS 可用 `MTL_HUD_ENABLED=1 cargo run` 看帧率，也可以用 Samply。UI 改动需要跑到受影响的 story 或示例，并附截图或录屏。
3. **提交 PR**：允许完全由 AI 写出的补丁，但提交者要自己看过、测过，并让 diff 保持小。新增、修改或删除公开 API 时，描述里要有 `## Public API`，按 crate 写出签名和用途。已有公开项的变化放进 `## Breaking Changes`。GPUI 核心行为应提到上游； `gpui-pre` 只做版本对齐的快照，不在 Kit 里携带行为补丁。

---

仓库： https://github.com/longbridge/gpui-kit

文档： https://gpui-kit.com/zh-CN/docs/getting-started

移动端： https://gpui-kit.com/zh-CN/docs/mobile

Native Shell： https://nsh.dev ，仓库 https://github.com/longbridge/nsh

组件画廊和示例都在该仓库的 `crates/story` 与 `examples/`。

---

## 资料与使用说明

1. 热度查询日期为 2026-10-28。Star 18,702、Fork 1,155 同时出现在 GitHub REST `repos/longbridge/gpui-kit` 和当天 Rust 月榜卡片上。月榜页面是 https://github.com/trending/rust?since=monthly，GPUI Kit 在该次抓取的 21 个仓库中排第 4。新增 Star 的口径是页面上的 “this month”，不是按日历日重算的 30 天增量。日榜和周榜当次抓取没有这个仓库。
2. 官网导航角标当天仍显示 18,664 Star，与 API 的 18,702 不一致。正文 Star 用 API。
3. 累计 commit 2,711、开放 Issue 113、已关闭 Issue 630、开放 PR 16、已合并 PR 2,508、已关闭未合并 PR 326、Release 18，来自 GitHub GraphQL。REST 的 `open_issues_count` 为 129，等于开放 Issue 加开放 PR，不要把它当成 129 个 Issue。
4. Contributors 为 211 个账号：2 个 bot、209 个非 bot 登录名、匿名贡献 0。名单包含维护者本人，只统计默认分支上的 commit 作者，不含只参与 Issue、讨论或未合并 PR 的人。 `contributions` 不是 PR 数。
5. 仓库创建时间 2024-06-13 不等于 crate 发布日。crates.io `gpui-kit` 创建于 2026-09-03，最新版 0.8.1 发布于 2026-10-26，累计下载 189,694。同日 `gpui-component` 的简介仍写 “60+ desktop UI components”，下载量 361,448；中文 README 写的是 “75+ 组件与原语”。两套数字都保留原文，没有相加。
6. 仓库根目录 README 的依赖示例仍是 `gpui-kit = "0.7"`。安装步骤采用同日的入门文档和 crates.io：**0.8.1**。Hello World 代码来自 [Getting Started](https://gpui-kit.com/zh-CN/docs/getting-started)，按该页可运行示例缩进整理，未改 API。
7. “120 FPS”“表格数十万行”“编辑器 20 万行”是 README 的项目方表述，本文没有做对照测试。贡献指南写明 Metal HUD 只在 macOS 可用，显示帧率受显示器刷新率限制，常见是 60 或 120。安装文档也写明 Debug 运行明显慢于 release， `cargo run -p hello_world` 不能当作性能测试。
8. 桌面平台范围以安装文档为准。移动端以 2026-10-28 查阅的 [移动端文档](https://gpui-kit.com/zh-CN/docs/mobile) 为准：页面自标实验性，并写明首要目标仍是桌面。文中的模拟器目标、已验证组件名单，以及 `gpui-pre` 0.3.4 与当前 Kit 0.3.10 的差异，都来自该页，没有另做真机测试。itsbalamurali 的姓名、地点和公司栏来自同日 GitHub 用户资料，没有再核对他的雇主或职务。上游仓库创建于 2026-03-03，Star 441，许可证 AGPL-3.0； `longbridge/gpui-mobile` 的 parent/source、创建日 2026-09-11 和 `gpui-pre-mobile` 的 0.3.4 钉版本，来自同日 GitHub API 与该 fork 的 README。WebAssembly 另有工具链要求。
9. Native Shell 的 Star 775、Fork 58、创建时间 2026-10-14、最近推送 2026-10-28，来自同日 GitHub REST `repos/longbridge/nsh`。GPUI Kit 中文 README 仍链接 `longbridge/native-shell`，当天该地址对应的仓库全名是 `longbridge/nsh`。GPUI 后端「正在开发」出自 GPUI Kit README，「已能嵌进 GPUI Kit」出自 Native Shell README，两句并列，没有并成一种进度。平台版本表来自 Native Shell README 的 Platforms 表。Swift 嵌入、 `NshAppView`、 `NshComponent` 和 `examples/embed-ios/main.swift` 来自同日查阅的 [iOS 文档](https://nsh.dev/docs/ios) 与 [Native Components](https://nsh.dev/docs/native-components)。第 4 节的手机对照还用了 Native Shell README 的 Platforms 表：Android 绘制为 Android View / `StaticLayout`，嵌入类是 `NshView`（ `nsh.aar`），系统要求 Android 9（API 28）+；示例目录 `examples/embed-android` 来自该 README 的示例表。 `mixed` 模板的含义来自仓库 README 对 `nsh init my-app --template mixed` 的说明。文档没有把 SwiftUI 写成宿主。本文没有安装或运行 `nsh`，也没有编译该 Swift 示例。
10. 本文没有安装或运行 GPUI Kit，也没有核对对照页里的帧耗时。功能范围以 README、v0.8.1 发布说明和上述文档页面为准。

排序方式 :

### **成为第一条评论！**

Nobody's responded to this post yet. Add your thoughts and get the conversation going.

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://www.angryecho.com/c/rustcc/p/P2TBBrCLtj2MhUPMEcT3X#post","@type":"DiscussionForumPosting","commentCount":0,"dateModified":"2026-10-30T02:55:59.149Z","datePublished":"2026-10-28T02:44:16.954Z","description":"用 Rust 写桌面软件时，窗口、输入、表格、停靠面板和代码编辑往往要自己从渲染层往上搭。 GPUI Kit 把这些放进同一套框架：底层是 Zed 的 GPUI，上面是带样式的组件、无样式的交互基础，以及可选的 JavaScript 扩展宿主。","headline":"GPUI Kit：用 Rust 做跨平台桌面界面，GitHub 本月新增 3,924 Star","isPartOf":"https://www.angryecho.com/c/rustcc","mainEntityOfPage":"https://www.angryecho.com/c/rustcc/p/P2TBBrCLtj2MhUPMEcT3X","text":"用 Rust 写桌面软件时，窗口、输入、表格、停靠面板和代码编辑往往要自己从渲染层往上搭。 GPUI Kit 把这些放进同一套框架：底层是 Zed 的 GPUI，上面是带样式的组件、无样式的交互基础，以及可选的 JavaScript 扩展宿主。官方文档写明，它从第一天起就用在已公开发布的商业桌面应用 Longbridge Pro 里。\n\n\n\n截至 2026-10-28，GitHub 仓库 Star 18,702、Fork 1,155。当天 GitHub Trending 的 Rust 月榜列出 21 个仓库，GPUI Kit 排第 4，页面标注 this month 新增 3,924 Star。最新版本是 2026-10-26 发布的 v0.8.1，crates.io 上的 gpui-kit 也是这个版本。\n\n\n\n1. 应用只声明一个 crate\n\n仓库把入口收成 gpui-kit。应用的 Cargo.toml 只写这一个依赖，就会带上固定版本的 GPUI、无样式的 gpui-base、带样式的 gpui-component，以及默认的 Lucide 图标资源。组件从 gpui_kit::component 来，GPUI 的类型从 gpui_kit::* 来，不必再单独声明 GPUI。\n\n默认后端是发布到 crates.io 的上游快照，包名是 gpui-pre，当前钉在 0.3.10。它不是另一套渲染器。需要换 GPUI Fast 时，打开同名 feature 即可，导入和 init 不用改；官方说明这个 feature 是累加的，上游包仍会参与编译。\n\nJavaScript 扩展不在这个默认依赖里，要另外使用 gpui-shell。\n\n2. 表格、Dock 和代码编辑器\n\n中文 README 把组件和原语写成 75+，覆盖表单、导航、浮层、数据展示、编辑、反馈和布局。复杂界面里，文档点名的几块是：\n\n\n\n\n\n数据表：虚拟滚动、固定列、列宽调整、排序和单元格选择。README 写可以承载数十万行。\n\n\n\n虚拟列表：只画可见区域，列表项高度可以不同。\n\n\n\nDock：面板可调、标签可拖、分割可嵌套、边缘可停靠，布局能序列化保存。仓库示例是 cargo run -p example-dock。\n\n\n\n代码编辑器：README 写 20 万行规模下仍保持稳定，并接上 Tree-sitter 高亮和 LSP 的诊断、补全、悬浮提示。示例是 cargo run -p example-editor。\n\n\n\n正文：同一套 UI 里可以渲染 Markdown 和 HTML，也带图表。对应示例是 example-markdown 和 example-html。\n\nv0.8.1 的发布说明把这一版的改动集中在文本选择、Markdown、编辑器布局、滚动、焦点和无障碍，并给文本样式、编辑器滚动条、Diff 解析和高亮加了兼容的定制接口。默认后端仍是 gpui-pre 0.3.10，可选的 GPUI Fast 是 0.1.12。\n\n3. 发布之后用 JavaScript 加面板\n\n三层的分工在 README 里写得很直：\n\n\n\n\n\n\n\n层\n\n\n\n做什么\n\n\n\n适合\n\n\n\n\n\ngpui-component\n\n\n\n带样式的完整组件，可换主题\n\n\n\n直接做应用\n\n\n\n\n\ngpui-base\n\n\n\n焦点、浮层、虚拟化等行为，不带预设外观\n\n\n\n自己的设计系统\n\n\n\n\n\ngpui-shell\n\n\n\nRust 宿主里的 JavaScript 运行时，能力要逐项授予\n\n\n\n插件和脚本化面板\n\ngpui-shell 的定位是：贡献者不用 fork、也不用等一次发版，就能往已发布的 Rust 宿主里加面板和业务逻辑。v0.8.1 的说明里，它准备以配套的 quickjs-jit、quickjs-jit-runtime、quickjs-jit-stdlib 0.14.1 发到 crates.io。\n\n交互层带 AccessKit 的 role、name、state、relationship 和 action。测试可以在 headless window 里渲染真实组件，驱动鼠标和键盘，再核对状态、焦点、布局和无障碍信息。组件画廊用仓库根目录的 cargo run 打开。\n\nWeb 目标是 wasm32-unknown-unknown。iOS 和 Android 的嵌入方式在下一节，桌面那套 application() 到了移动端不再使用。\n\n\n\n4. 移动端：GPUI 实验性嵌入，以及 Native Shell\n\n手机上有两条路，画出来的东西不一样。\n\nGPUI Kit 移动端把 GPUI 嵌进原生 App。移动端文档 标成「实验性」和「依赖平台」。\n\n\n\n\n\n首要目标仍是桌面。移动端用来复用一部分组件，例如在原生界面里用 TextView 渲染富文本。\n\n\n\n中间是一块 GPUI 自己画的 View。导航栏、底部输入框留在原生 UI，两边各自管布局和输入。\n\n\n\n组件还是 Kit 的 Rust 组件。移动端不调用 gpui_kit::application() 或 gpui_kit::platform。宿主初始化 GPUI，调用 gpui_kit::init(cx)，再包一层 component::Root。\n\n\n\ngpui_kit::is_mobile() 只看编译目标是不是 iOS 或 Android。\n\n平台层是社区项目 gpui-mobile，实现 gpui::Platform：iOS 用 Metal / wgpu，Android 用 Vulkan 或 GL / wgpu，管窗口、触摸、文字和 GPU 表面。\n\n\n\n\n\n作者账号 itsbalamurali，资料名 Balamurali Pandranki，地点 Tallinn, Estonia，公司栏 @wearekesk。\n\n\n\n仓库创建于 2026-03-03。2026-10-28 的 Star 是 441，许可证 AGPL-3.0。\n\n\n\n公开资料里没有把他写成 Longbridge 成员或 GPUI Kit 维护者。\n\nGPUI Kit 当前接的是兼容 fork longbridge/gpui-mobile。\n\n\n\n\n\nGitHub 的 parent 和 source 都是 itsbalamurali/gpui-mobile。fork 创建于 2026-09-11，许可证仍是 AGPL-3.0。\n\n\n\n以 gpui-pre-mobile 发到 crates.io。0.1.0 对着 gpui-pre 和 gpui-pre-wgpu 0.3.4，平台、渲染器和应用用同一套 GPUI 类型。\n\n\n\n下游不必再检出 Zed 的 Git 仓库，也不必自己打 Cargo patch。\n\n\n\n文档把它称作临时兼容包。等上游 gpui-mobile 接入、GPUI 自己也发布 crate 之后，改回社区包。\n\n\n\nRust 视图树和组件仍由 GPUI 与 GPUI Kit 管。\n\n文档写明的验证范围：\n\n\n\n\n\nSwift 托管的 iOS 示例在模拟器里构建并运行过。固定脚本面向 iOS 18.6 的 iPhone 16 Pro；示例最低部署版本写成 iOS 16，不表示每个系统版本都测过。\n\n\n\n一个 AI Chat 区域在 iOS 和 Android 上做过功能和性能验证，用到 TextView、Button、Menu、Popover、Scrollbar、Input、Textarea 和文本选择。TextView 在这个场景里覆盖完整。\n\n\n\n其他组件和完整应用布局还没有在移动端验证。Android 的 Activity 示例走另一条宿主路径，该页没有展开步骤。\n\n\n\n示例把 gpui-pre 钉在 0.3.4，当前 Kit 工作树是 0.3.10。只换本地路径，Cargo 仍可能同时选出两套 GPUI 类型。\n\n\n\n模拟器上的布局和点击不能代替真机帧耗时。\n\nNative Shell 是手机上的另一条路。仓库 longbridge/nsh，文档 nsh.dev。按钮和文字由系统控件绘制。\n\n\n\n\n\niOS：UIKit、CoreText，iOS 15+。\n\n\n\nAndroid：Android View、StaticLayout，Android 9（API 28）+。\n\n\n\n界面用 Rust、TSX，或让 TSX 引用 Rust 组件。菜单在桌面上是弹出层，在手机上是 sheet。\n\n\n\n单独运行：nsh run my-app --target ios（Xcode 和模拟器），nsh run my-app --target android（Android SDK，模拟器或真机）。\n\n\n\n嵌进已有 App：iOS 用 Swift 的 NshAppView（NativeShell.xcframework），Android 用 Java / Kotlin 的 NshView（nsh.aar）。示例是 examples/embed-ios、examples/embed-android。\n\n\n\n导航、地图留在宿主里。NSH 那一块仍是 Rust 或 TSX。\n\n仓库数据、桌面平台和 Swift 注册方式在下一节。\n\n5. 兄弟项目 Native Shell\n\nGPUI Kit 中文 README 把它写成兄弟项目。源码链接是 longbridge/native-shell。2026-10-28 打开后，仓库名是 longbridge/nsh，主页 nsh.dev。\n\n\n\n\n\n创建于 2026-10-14。当天 Star 775、Fork 58，最近推送 2026-10-28。\n\n\n\n用 Rust 写的原生 UI 框架，平台包括 iOS、Android、macOS、Windows、Linux 和 Web。\n\n\n\n状态、逻辑和 API 共用。颜色、字体、间距和动效由应用自己定。\n\n\n\n界面可以全用 Rust，也可以用 TSX，或让 TSX 屏幕引用 Rust 组件。nsh init --template mixed 混的是 Rust 和 TSX。\n\n各平台用自己的控件绘制：\n\n\n\n\n\n\n\n平台\n\n\n\n绘制\n\n\n\n版本要求\n\n\n\n\n\niOS\n\n\n\nUIKit、CoreText\n\n\n\niOS 15+\n\n\n\n\n\nAndroid\n\n\n\nAndroid View、StaticLayout\n\n\n\nAndroid 9（API 28）+\n\n\n\n\n\nmacOS\n\n\n\nAppKit、Core Animation、CoreText\n\n\n\nmacOS 14+\n\n\n\n\n\nWindows\n\n\n\nWin32、Direct2D、DirectWrite\n\n\n\nWindows 10 1809+\n\n\n\n\n\nLinux\n\n\n\nGTK 4、Pango\n\n\n\nGTK 4.14+\n\n\n\n\n\nGPUI\n\n\n\nGPUI（GPUI Fast），crate nsh-platform-gpui\n\n\n\nmacOS、Windows；Linux 需要 Vulkan\n\n\n\n\n\nWeb\n\n\n\nHTML、CSS\n\n\n\n现代浏览器\n\n菜单、启动和嵌入：\n\n\n\n\n\n菜单在桌面上是弹出层，在手机上是 sheet。\n\n\n\n运行时可以加载签名的 TSX 包，在宿主配置的沙箱里跑插件、功能和由 AI 生成的界面。\n\n\n\n命令行是 nsh。nsh init my-app --template rust 或 --template ts，再用 nsh run my-app --target ios 这类目标启动。安装见 nsh.dev 的安装文档。\n\n嵌进已有的 Swift / UIKit App 时，NSH 的屏幕仍然用 Rust 或 TSX 写。iOS 文档：\n\n\n\n\n\n链接 NativeShell.xcframework，import NativeShell，放一个 NshAppView。它是 UIView 子类。\n\n\n\n加载 nsh build 产出的 bundle.nshc。开发用 NativeShellDev.xcframework 连接 nsh dev。\n\n\n\n原生页面、导航和这块 NSH 界面在同一棵 UIKit 树里。一个 App 可以放多个 NshAppView，每个是独立引擎。\n\n\n\n示例 examples/embed-ios/main.swift：上面一条原生 header，下面一块 NSH。\n\n\n\n文档里的 Swift 示例是 UIKit，没有把 SwiftUI 写成宿主。\n\nSwift 控件插进 NSH 布局，见 Native Components：\n\n\n\n\n\n宿主实现 NshComponent，用 app.register(component:) 按名字注册任意 UIView。文档举例是地图、相机预览。\n\n\n\nNSH 侧用 Rust 的 native(\"名字\") 或 TSX 的 nativeComponent()，把它当成普通元素排进去。\n\n\n\nprops、事件和 command 走 JSON。\n\n\n\n不经过这块视图时，Swift 用 app.params、app.send、app.handle，对应 TSX 的 host.params、host.on、host.call / host.post。\n\n和 GPUI Kit 的关系，两边 README 各写了一句：\n\n\n\n\n\nGPUI Kit 中文 README：GPUI 桌面后端正在开发，将基于 GPUI Kit 构建。\n\n\n\nNative Shell 同日 README：GPUI 后端已经在 macOS、Windows、Linux 上用 GPUI 绘制，并能嵌进 GPUI 与 GPUI Kit 应用。命令是 nsh run my-app --target gpui。\n\n\n\nnsh/base 里 Button、Checkbox、Switch 这类无样式组件，在名称和范围上跟随 gpui-base。编码指南和设计指南也引用 GPUI Kit。\n\n\n\n6. 功能对照\n\n\n\n\n\n\n\n场景\n\n\n\n仓库里已有的入口\n\n\n\n边界\n\n\n\n\n\n第一个窗口和按钮\n\n\n\nGetting Started 的 gpui-kit = \"0.8.1\"\n\n\n\n使用组件前要先 gpui_kit::init\n\n\n\n\n\n看全部组件\n\n\n\ncargo run（story 画廊）\n\n\n\n第一次编译依赖会比较久\n\n\n\n\n\nIDE 式布局\n\n\n\ncargo run -p example-dock\n\n\n\nDock 序列化是组件能力，业务状态仍由应用保存\n\n\n\n\n\n代码编辑\n\n\n\ncargo run -p example-editor\n\n\n\nTree-sitter 按 feature 选用\n\n\n\n\n\nMarkdown / HTML\n\n\n\nexample-markdown、example-html\n\n\n\nHTML 渲染不是完整浏览器\n\n\n\n\n\n浏览器里跑\n\n\n\nWebAssembly 文档\n\n\n\n工具链要求与桌面不同\n\n\n\n\n\niOS / Android 里嵌一块 GPUI\n\n\n\n移动端文档\n\n\n\n实验性；中间是 GPUI 自己画的 View\n\n\n\n\n\niOS / Android 上用系统控件画界面\n\n\n\nNative Shell\n\n\n\nnsh run --target ios / android；宿主是 NshAppView / NshView\n\n\n\n\n\n多平台原生界面，或嵌进 GPUI Kit\n\n\n\nNative Shell / longbridge/nsh\n\n\n\n独立项目；Swift 宿主用 NshAppView，界面仍是 Rust / TSX\n\n\n\n\n\n系统库和编译器\n\n\n\n安装文档\n\n\n\n桌面要求见下一节\n\n官方站点还有一份与 Iced、egui、Qt 6 的 对照。那一页的性能结论以项目方材料为准，本文不转写排名。\n\n\n\n7. 在本机跑起来\n\n安装文档按当前依赖图要求 Rust 1.92 或更新（Linux 侧的 oo7 0.6.0 写明了这个下限）。平台要求是：\n\n\n\n\n\nmacOS 15 或更高，并安装 Xcode Command Line Tools（xcode-select --install）。\n\n\n\nWindows 10 或更高，安装 Visual Studio 2022 的 Desktop development with C++，Rust 使用 MSVC 目标，终端里要能运行 cmake --version。\n\n\n\nLinux 以 Ubuntu 24.04 的包装清单为准，还需要可用的 Wayland 或 X11 会话和 Vulkan 驱动。libasound2-dev 只在打开 speech feature 时需要。\n\nsudo apt update\nsudo apt install -y gcc g++ clang libfontconfig-dev libwayland-dev \\\n  libwebkit2gtk-4.1-dev libxkbcommon-x11-dev libx11-xcb-dev \\\n  libssl-dev libzstd-dev libasound2-dev vulkan-validationlayers libvulkan1\n\n新建应用：\n\ncargo new gpui-hello\ncd gpui-hello\n\n[dependencies]\ngpui-kit = \"0.8.1\"\n\n官方入门把 src/main.rs 换成下面这样。窗口中央是一行字和一个主按钮，点击后终端打印 Clicked!。\n\nuse gpui_kit::component::button::{Button, ButtonVariants};\nuse gpui_kit::*;\n\nstruct HelloWorld;\n\nimpl Render for HelloWorld {\n    fn render(&mut self, _: &mut Window, _: &mut Context\u003CSelf>) -> impl IntoElement {\n        div()\n            .flex()\n            .flex_col()\n            .size_full()\n            .items_center()\n            .justify_center()\n            .gap_2()\n            .child(\"Hello, World!\")\n            .child(\n                Button::new(\"hello\")\n                    .primary()\n                    .label(\"Click me\")\n                    .on_click(|_, _, _| println!(\"Clicked!\")),\n            )\n    }\n}\n\nfn main() {\n    application()\n        .with_assets(assets::Assets)\n        .run(|cx| {\n            init(cx);\n            open_window(WindowOptions::default(), cx, |_, cx| cx.new(|_| HelloWorld))\n                .expect(\"Failed to open window\");\n        });\n}\n\ncargo run\n\n已克隆本仓库时，安装文档用 cargo run -p hello_world 检查工具链、开窗和点击。Debug 构建几乎不优化 GPUI 和组件，帧耗时会明显高于 release；安装文档给框架依赖写了 [profile.dev.package] 的 opt-level = 3，这只改善运行，不缩短编译。\n\n可选后端：\n\ngpui-kit = { version = \"0.8.1\", features = [\"gpui-fast\"] }\n\n\n\n8. 谁在维护\n\nGitHub 组织 longbridge 的公开资料是 “Longbridge Developers”，主页指向 longbridge.com。组织页创建于 2020-07-17。GPUI Kit 仓库创建于 2024-06-13；这个日期只说明仓库何时出现在 GitHub，不能当成 gpui-kit 这个 crate 的上架日。crates.io 上 gpui-kit 的包记录始于 2026-09-03。\n\n提交数最高的两个账号，GitHub 资料都写着 Longbridge：\n\n\n\n\n\nhuacnlee（资料名 Jason Lee，简介 “Ruby / Go / Rust”，公司 @longbridge），contributors 接口的 contributions 为 1,501。\n\n\n\nmadcodelife（资料名 Floyd Wang，公司 @Longbridge），contributions 为 474。\n\n这两个数字是默认分支上的 commit 贡献计数，不是 PR 数，也不能据此写成头衔或全部维护者名单。\n\n\n\n9. 技术栈\n\n版本以 2026-10-28 仓库 main 的 workspace 和 v0.8.1 发布说明为准。\n\n\n\n\n\n\n\n部分\n\n\n\n要求或版本\n\n\n\n用途\n\n\n\n\n\n语言\n\n\n\nRust，workspace edition = \"2024\"\n\n\n\n组件、示例和壳都在这个 workspace\n\n\n\n\n\n编译器\n\n\n\nRust 1.92+\n\n\n\n安装文档给出的当前依赖下限，高于 edition 本身的门槛\n\n\n\n\n\n桌面\n\n\n\nmacOS 15+、Windows 10+（MSVC）、Linux\n\n\n\n一份 Rust 代码；Linux 包装清单在 Ubuntu 24.04 验证过\n\n\n\n\n\n入口\n\n\n\ngpui-kit 0.8.1\n\n\n\n应用侧通常只依赖它\n\n\n\n\n\n渲染\n\n\n\ngpui-pre =0.3.10\n\n\n\nZed GPUI 的配套快照，版本必须精确相等\n\n\n\n\n\n可选渲染\n\n\n\ngpui-fast 0.1.12\n\n\n\nfeature gpui-fast，允许后续 0.1.x 浮动\n\n\n\n\n\n组件层\n\n\n\ngpui-component、gpui-base、gpui-kit-assets\n\n\n\n样式组件、无样式行为、默认图标\n\n\n\n\n\n扩展\n\n\n\ngpui-shell，QuickJS 相关 crate 0.14.1\n\n\n\n发布后的脚本面板\n\n\n\n\n\n文本与布局\n\n\n\nTaffy、rustybuzz、ttf-parser、ropey\n\n\n\n排版和编辑器文本结构\n\n\n\n\n\n编辑相关\n\n\n\nlsp-types 0.97.0；Tree-sitter、syntect 为按需能力\n\n\n\n诊断、补全、高亮\n\n\n\n\n\n界面语言\n\n\n\nrust-i18n 4.2.0\n\n\n\n组件文案\n\n\n\n\n\nWeb\n\n\n\nwasm32-unknown-unknown\n\n\n\n文档中的浏览器目标\n\n\n\n\n\n移动端\n\n\n\n实验性；文档示例钉 gpui-pre 0.3.4、包名 gpui-pre-mobile\n\n\n\n嵌入 iOS / Android 原生界面，不用桌面的 application()\n\n\n\n\n\n数据库 / 队列\n\n\n\n无\n\n\n\n这是 UI 框架，不带服务端存储\n\n源码和文档里的代码示例是 Apache-2.0。文档正文和原创图示另外提供 CC BY 4.0。GitHub 仓库的 license 字段因此是 Other，不是单一 SPDX 标识。\n\n\n\n10. 项目活跃度\n\n查询时间：2026-10-28。\n\n\n\n\n\n\n\n指标\n\n\n\n数值\n\n\n\n\n\nStar\n\n\n\n18,702\n\n\n\n\n\nFork\n\n\n\n1,155\n\n\n\n\n\nContributors\n\n\n\n211\n\n\n\n\n\n累计 commit\n\n\n\n2,711\n\n\n\n\n\n最近 commit 日期\n\n\n\n2026-10-28\n\n\n\n\n\n开放 Issue\n\n\n\n113\n\n\n\n\n\n开放 PR\n\n\n\n16\n\n\n\n\n\n已合并 PR\n\n\n\n2,508\n\n\n\n\n\n已关闭未合并 PR\n\n\n\n326\n\n\n\n\n\nRelease\n\n\n\n18，最新 v0.8.1（2026-10-26）\n\n\n\n\n\ncrates.io gpui-kit 下载\n\n\n\n189,694\n\n当天默认分支最新 commit 是 089bcd5（message_scroller: Let the scrollbar reach the end of padded content）。按发布时间倒序，跨进 2026-09 的前几条 Release 里，落在 2026-10 的是 v0.7.1（10-05）、v0.7.3（10-12）、v0.8.0（10-19）和 v0.8.1（10-26）。v0.7.0 的发布时间是 2026-09-28。这些是已发生的发布和提交，不能单独换成“长期不会再有破坏性更新”。\n\nStar、Fork、Issue、PR、commit、Release 来自 GitHub REST / GraphQL。本月新增 Star 来自 Trending 页面原文 “3,924 stars this month”，没有改成自行计算的近 30 天。Contributors 来自 /repos/longbridge/gpui-kit/contributors?anon=true，每页 100 条，读完 3 页。\n\n\n\n11. 如何贡献\n\n说明在仓库的 CONTRIBUTING.md。\n\n\n\n\n\n反馈：bug 和想法可以开 Issue，也可以到 Discussions。指南更鼓励能复现时直接提 PR。一个 PR 只做一件事。\n\n\n\n本地验证：./script/bootstrap 安装依赖；Windows 用 .\\script\\install-window.ps1。改现有界面时跑 cargo run 看 story，或 cargo run -p \u003C示例名>。改渲染时，macOS 可用 MTL_HUD_ENABLED=1 cargo run 看帧率，也可以用 Samply。UI 改动需要跑到受影响的 story 或示例，并附截图或录屏。\n\n\n\n提交 PR：允许完全由 AI 写出的补丁，但提交者要自己看过、测过，并让 diff 保持小。新增、修改或删除公开 API 时，描述里要有 ## Public API，按 crate 写出签名和用途。已有公开项的变化放进 ## Breaking Changes。GPUI 核心行为应提到上游；gpui-pre 只做版本对齐的快照，不在 Kit 里携带行为补丁。\n\n\n\n仓库：https://github.com/longbridge/gpui-kit\n\n文档：https://gpui-kit.com/zh-CN/docs/getting-started\n\n移动端：https://gpui-kit.com/zh-CN/docs/mobile\n\nNative Shell：https://nsh.dev ，仓库 https://github.com/longbridge/nsh\n\n组件画廊和示例都在该仓库的 crates/story 与 examples/。\n\n\n\n资料与使用说明\n\n\n\n\n\n热度查询日期为 2026-10-28。Star 18,702、Fork 1,155 同时出现在 GitHub REST repos/longbridge/gpui-kit 和当天 Rust 月榜卡片上。月榜页面是 https://github.com/trending/rust?since=monthly，GPUI Kit 在该次抓取的 21 个仓库中排第 4。新增 Star 的口径是页面上的 “this month”，不是按日历日重算的 30 天增量。日榜和周榜当次抓取没有这个仓库。\n\n\n\n官网导航角标当天仍显示 18,664 Star，与 API 的 18,702 不一致。正文 Star 用 API。\n\n\n\n累计 commit 2,711、开放 Issue 113、已关闭 Issue 630、开放 PR 16、已合并 PR 2,508、已关闭未合并 PR 326、Release 18，来自 GitHub GraphQL。REST 的 open_issues_count 为 129，等于开放 Issue 加开放 PR，不要把它当成 129 个 Issue。\n\n\n\nContributors 为 211 个账号：2 个 bot、209 个非 bot 登录名、匿名贡献 0。名单包含维护者本人，只统计默认分支上的 commit 作者，不含只参与 Issue、讨论或未合并 PR 的人。contributions 不是 PR 数。\n\n\n\n仓库创建时间 2024-06-13 不等于 crate 发布日。crates.io gpui-kit 创建于 2026-09-03，最新版 0.8.1 发布于 2026-10-26，累计下载 189,694。同日 gpui-component 的简介仍写 “60+ desktop UI components”，下载量 361,448；中文 README 写的是 “75+ 组件与原语”。两套数字都保留原文，没有相加。\n\n\n\n仓库根目录 README 的依赖示例仍是 gpui-kit = \"0.7\"。安装步骤采用同日的入门文档和 crates.io：0.8.1。Hello World 代码来自 Getting Started，按该页可运行示例缩进整理，未改 API。\n\n\n\n“120 FPS”“表格数十万行”“编辑器 20 万行”是 README 的项目方表述，本文没有做对照测试。贡献指南写明 Metal HUD 只在 macOS 可用，显示帧率受显示器刷新率限制，常见是 60 或 120。安装文档也写明 Debug 运行明显慢于 release，cargo run -p hello_world 不能当作性能测试。\n\n\n\n桌面平台范围以安装文档为准。移动端以 2026-10-28 查阅的 移动端文档 为准：页面自标实验性，并写明首要目标仍是桌面。文中的模拟器目标、已验证组件名单，以及 gpui-pre 0.3.4 与当前 Kit 0.3.10 的差异，都来自该页，没有另做真机测试。itsbalamurali 的姓名、地点和公司栏来自同日 GitHub 用户资料，没有再核对他的雇主或职务。上游仓库创建于 2026-03-03，Star 441，许可证 AGPL-3.0；longbridge/gpui-mobile 的 parent/source、创建日 2026-09-11 和 gpui-pre-mobile 的 0.3.4 钉版本，来自同日 GitHub API 与该 fork 的 README。WebAssembly 另有工具链要求。\n\n\n\nNative Shell 的 Star 775、Fork 58、创建时间 2026-10-14、最近推送 2026-10-28，来自同日 GitHub REST repos/longbridge/nsh。GPUI Kit 中文 README 仍链接 longbridge/native-shell，当天该地址对应的仓库全名是 longbridge/nsh。GPUI 后端「正在开发」出自 GPUI Kit README，「已能嵌进 GPUI Kit」出自 Native Shell README，两句并列，没有并成一种进度。平台版本表来自 Native Shell README 的 Platforms 表。Swift 嵌入、NshAppView、NshComponent 和 examples/embed-ios/main.swift 来自同日查阅的 iOS 文档 与 Native Components。第 4 节的手机对照还用了 Native Shell README 的 Platforms 表：Android 绘制为 Android View / StaticLayout，嵌入类是 NshView（nsh.aar），系统要求 Android 9（API 28）+；示例目录 examples/embed-android 来自该 README 的示例表。mixed 模板的含义来自仓库 README 对 nsh init my-app --template mixed 的说明。文档没有把 SwiftUI 写成宿主。本文没有安装或运行 nsh，也没有编译该 Swift 示例。\n\n\n\n本文没有安装或运行 GPUI Kit，也没有核对对照页里的帧耗时。功能范围以 README、v0.8.1 发布说明和上述文档页面为准。","url":"https://www.angryecho.com/c/rustcc/p/P2TBBrCLtj2MhUPMEcT3X","author":{"@type":"Person","name":"Jake Saffrin","url":"https://www.angryecho.com/u/P7H10003170"},"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/DislikeAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":0}]}]}
```

## Sitemap

See the full [sitemap](https://www.angryecho.com/sitemap.md) for all pages.
