Terax 终端内核全面迁移 Ghostty 的发布就绪度评估:验证证据、加固清单与未关闭的发布门槛
【免费下载链接】terax-aiLightweight (7MB) Terminal-first AI-native dev workspace项目地址: https://gitcode.com/GitHub_Trending/te/terax-ai
本篇指南以 Terax(terax-ai)仓库中的 ghostty-release-readiness.md 为骨架,系统梳理 Ghostty-only 终端实现从代码评审、资源专项、已证实加固到最终迁移的完整验证链条,并逐项说明仍然未关闭的发布门槛(平台安装、可访问性、打包吞吐、全时段资源等)。读完你可以掌握:该候选版的验证证据分布在哪些文档与 JSON 报告中、每个结论的适用边界是什么、以及如何在本地复现构建、签名与诊断采集流程,从而判断一个终端内核迁移在何种条件下才可以宣称"生产就绪"。
状态总览:Ghostty-only 实现与可测试候选版定位
截至 2026-09-07,该项目处于Ghostty-only 实现阶段:xterm 及其 addons 已彻底移除,所有终端(包括 Block 块)统一使用 Ghostty 内核,渲染层为 WebGPU 或 Terax WebGL。文档明确将当前状态定性为"可测试的发布候选版(testable release candidate)",而非多平台、多日的生产认证结果——打包发布验证仍然开放。
这一判断的量化基础来自 ghostty-final-audit-2026-09-07.md:最新的生命周期修复、全新分配/压力数据、一个被否决的原生 I/O 实验,以及对1,155 个前端测试与 356 个 Rust 测试的验证。审计同时声明,下述打包发布门槛仍然开放。
阅读提示:本文引用的每一组数字都有明确测量边界(WASM 线性内存 vs 进程 RSS、核心执行 vs 应用级吞吐)。文档原文反复强调"不能把单元/API 双打测试等同于打包验证",这一点在引用时务必保留。
九月七日 PR 评审:27 项 CodeRabbit 发现的处理与取舍
ghostty-review-2026-09-07.md 记录了 CodeRabbit 对4834c01的初始26 项主要发现与文档索引评论(合计 27 项)的逐项处置。文档明确:未发布任何 PR 评论,也未自动标记任何 review 线程为已解决。
本轮修复覆盖的领域
| 领域 | 处置结论 |
|---|---|
| PTY 退出可永久等待 credit | 修复:子进程退出后,30 秒确认无活动期限会唤醒被阻塞的 reader/flusher;有效进展续期;超时记录未交付字节数并上报退出码 -1 |
| ESC 粘贴处理不一致且有损 | 修复单行提交路径;保留在 bracketed paste 内将 ESC 渲染为 U+241B 的既定策略 |
| 接收方拒绝第三个 pending chunk | 不改:Rust 恰好协商两个 in-flight chunk,累计 credit 仅在解析后授予 |
| CI checkout 凭据长期可访问 | 修复:5 处 checkout 全部设置persist-credentials: false |
| URL 后缀修剪二次复杂度 | 修复:一次分隔符计数 + 一次后缀扫描,测试含 30,000 个混合闭合分隔符 |
| Block 搜索同步扫描整条命令 | 修复:每批最多 128 行或约 4ms,500 匹配上限,支持取消与待处理指示器 |
| 大段可访问输出播报旧内容 | 修复为播报变更后缀中最新的 2,048 字符 |
| WebGL 背景变更重建整个网格 | 修复为脏行构造 + 区间上传,24 行终端单行背景上传从 864 字节降至 36 字节 |
| 失败的 WebGL 槽位被复用污染 | 修复:失败槽位在重试前先 detach、dispose、移除 |
| 适配桥 OOM 后保留已释放输入存储 | 用真实引用 WASM 做分配器失败注入测试,生产桥与测试桥均修复 |
明确被拒绝的建议
- "接收方拒绝第三个 pending chunk":移除检查会削弱对象计数上限,保持原样;
- "保留 raw ESC 以拆分 bracketed paste 帧":被否决——终端粘贴帧在接收应用间没有可移植的字面 ESC 引用契约,且在 pinned 的上游 Ghostty 编码器中(paste.zig,仅作对照)也做了同样的清理;
- "旧 WebGL 布尔偏好迁移":不改——旧布尔值选择的是 xterm WebGL 与软件渲染器,新设置选择 WebGPU 与 WebGL,映射无法保留软件渲染偏好。
后续评审(121b3d1与4c59c89)
对121b3d1的跟进评审新增三项修复:
- 可中断的 Unix PTY 关闭——当后代进程仍持有 slave 时不再死锁。live read 无限期等待 PTY 就绪并显式唤醒描述符,无周期轮询;后代持续输出上限 2 MiB / 30 秒;
- WebGL 表面所有权——失败的重配置/恢复后不再保留已处置的渲染器;
- Windows home 路径缩写一致化——共享归一化 formatter,覆盖两种分隔符。
该轮验证通过165 个前端文件 / 1,140 个测试、356 个 Rust 测试。需要特别说明的性能取舍:Unix reader 的无轮询就绪检查使 macOS 上孤立的 32 MiB PTY 排空基准增加约13.4%(中位数 244.46ms vs 277.25ms)。文档强调这是正确性取舍,不是吞吐量提升的证据。
对4c59c89的评审中,"Unix reader 测试在 Windows 无法编译"被判为误报(测试模块已有#[cfg(all(test, unix))]);"文档应描述保留的 xterm-session fallback"同样为误报——依赖清单与 lockfile 中已无 xterm 包。
九月七日资源专项:分配所有权、去冗余与预算证据
惰性呈现数组与分配下降
原生呈现数组在首次呈现时才创建,回收时释放 cell 数组及 grapheme/hyperlink/placement 快照,同时保留 parser、scrollback、selection 与 command pins。结果:20 个空白 120x40 模型仅占 10.375 MiB WASM 内存,相对0e3fae9基线(15.4375 MiB)下降约三分之一。原始分配数据见 ghostty-final-audit-profile-2026-09-07.json:
| 模型数 | WASM 线性内存 |
|---|---|
| 0 | 1.1875 MiB |
| 1 | 1.9375 MiB |
| 5 | 3.6875 MiB |
| 10 | 5.9375 MiB |
| 20 | 10.375 MiB |
需要同时强调的是:WASM 实例存活期间线性内存不会收缩,释放的存储可被其他模型复用;这些数字不是20 个同时渲染 pane 的总应用 RSS。
GPU 与 WebGL 的"无变化即无工作"
- WebGPU 跳过未变化的 uniform 上传与呈现纹理获取;WebGL 跳过未变化的绘制与光标上传;
- 窗口失焦时停止光标/文本闪烁定时器;应用隐藏光标同样停止;
- WebGL 纯文本行更新不再重建未变化的背景矩形;选择行 damage 与搜索失效合并,避免冗余视口工作;
- 短期窗口暂停复用已上传的 cell;持续回收在收缩 canvas 前先 unconfigure,避免 teardown 前的 configured resize。
对应的回归测试断言:100 帧无变化调度零上传零绘制、WebGPU 单行上传 7,680 字节、WebGL 单行 4,800 字形字节、隐藏光标/失焦窗口零闪烁唤醒、1,000 次合并失效仅一步搜索。图形测试使用插桩的 API 双打,打包 GPU 时序仍是独立门槛。
上游 pin 与工件校验
Ghostty 被固定到f426f6f181ba95f45d33f683fb754b6359d9e04f,两个 WASM 变体(SIMD 与 scalar)均重建并计算校验和。审计检查了上游发布列表,未发现 tagged 的稳定独立 libghostty WASM 发布,因此项目自行从精确源码修订构建适配桥。重建流程与校验和记录在 packages/ghostty-core/adapted/UPSTREAM.md:
zig build -Dtarget=wasm32-freestanding -Doptimize=ReleaseFast cp zig-out/bin/terax-ghostty-vt.wasm ../ghostty-vt.wasm zig build -Dtarget=wasm32-freestanding -Doptimize=ReleaseFast -Dwasm-simd=false cp zig-out/bin/terax-ghostty-vt.wasm ../ghostty-vt-scalar.wasm shasum -a 256 ../ghostty-vt.wasm ../ghostty-vt-scalar.wasm资源预算(size-limit)
| 组 | gzip 体积 | 预算 |
|---|---|---|
| 启动 JS | 226.39 kB | 未提高 |
| 总客户端 JS | 1.42 MB | 原上限 |
| 主终端入口 + 共享呈现代码 | 45.78 kB / 56 kB(此前合并入口 55.94 kB) | 56 kB |
| 惰性 WebGL | 13.62 kB / 15 kB | 15 kB(显式预算) |
| 合并 WASM 变体 | 413.4 kB / 450 kB | 450 kB |
压力测试与"平台期零增长"
两个变体各处理655,360 次更新 / 62,684,160 输入字节(五模型,含 Unicode、OSC 8、样式、block pins、reflow 与呈现回收),最终稳定在68.125 MiB WASM,尾部 16 个样本零增长,每模型恰好保留 2,048 个 marker。原始逐样本时间线见 ghostty-final-audit-soak-2026-09-07.json:SIMD 17.274s(CPU 16.378s)、scalar 25.957s(CPU 23.029s)。重复的孤立 SIMD 运行 13.799s vs 基线 13.798s——文档明确"单次运行差异不构成应用 CPU 收益证据"。
macOS arm64 候选包
最终候选包单独构建为src-tauri/target/release/bundle/macos/Terax Resource Candidate.app(避免覆盖正在运行的Terax.app),磁盘占用9,848 KiB,本地 ad-hoc 签名通过codesign --verify --deep --strict。未被启动或安装;其应用标识符未变,手动测试前需先退出现有 Terax。
九月七日 Block 清理与字体策略
- 移除 772,032 字节的私有使用区符号字体、其构建脚本与专项预算。已安装的 Nerd Font 检测保留;正文使用配置字体或内置 JetBrains Mono,原生彩色 emoji 走系统 fallback;
- 主屏
CSI 2J、CSI 3J、RIS现在在解析期使命令 pins 失效,并发出有界事件清理 JS 端 block 元数据、block 选择与搜索 UI;同一 PTY chunk 中后续命令保留 pins;备屏擦除与选择性/部分擦除不清空 block 历史;pin 存储跨清空保持有界容量,dispose 时释放; - 移除 block 滚动条状态圆点及其呈现订阅、定时器、SVG 路径与历史扫描;命令退出码与时长仍在 block 工具栏可见;
- 两个重建的 WASM 工件均通过真实内核测试:碎片化清屏、批量清屏/新命令排序、reset、备屏保留、重复 marker 清理、block 跟踪关闭时零清屏事件;本地
/usr/bin/clear在TERM=xterm-256color下发出CSI 3J、home、CSI 2J的序列全部被覆盖。
该轮预算:启动 JS 组 226.33 kB gzip、总客户端 JS 1.42 MB、惰性终端 JS 55.94 kB / 56 kB、合并 WASM 417.32 kB / 450 kB,未提高任何 JS/WASM 预算。重建后的应用 9,848 KiB(约 9.6 MiB),较 9 月 6 日字体构建的 10,600 KiB 下降。
已证实加固(Verified Hardening)详解
该部分与源码实现相互印证,是理解"为什么这些数字可信"的关键。
PTY 背压与确认协议
- 确认(ack)为累计解析字节偏移;Rust 只接受此前发送过的边界,容忍重复与乱序,在退出期与正常输出期都保持 2 MiB 数据边界和两 chunk 窗口;
- 被拒绝的 ack 保留进度并以有上限的退避重试;hung IPC 调用有界为两次;解析失败永不返回 credit;永久 IPC 失败需要连接恢复,不能靠编造 credit 或丢弃协议字节修复;
- Reader EOF 与条件变量通知共享队列互斥锁;退出等待所有最终字节解析完成;会话注册不能在子进程先退出时就 reaping 该子进程;
- Windows 在 reader 存活到 EOF 时才关闭 ConPTY,取代旧的 50ms 最终输出启发式;输入管道写操作脱离 IPC dispatch 线程执行,避免背压阻塞 ack 命令。
渲染器替换与故障恢复
- 渲染器替换立即采用原生 selection,并在不重置查询、不越过匹配的前提下转移搜索导航;替换使用当前字体、主题与光标设置;
- 失败的替换释放部分资源并保留会话所有权;WebGL 资源耗尽恢复显示 Retry 显示动作,不重启 PTY 也不处置模型;
- 共享 cwd 与 grid-selection API 路由到持有该会话的 Ghostty session。异步加载与代际校验可参考 loadSessionRenderer.ts(disposed/generation/model/surface 四重检查)与 sessionInitialization.ts(按代初始化,失败仅上报当前代)。
窗口可见性、遮挡与呈现策略
共享呈现策略结合 DOM 可见性与原生 macOS 遮挡/睡眠通知:帧立即停止,两秒宽限期避免桌面切换期间资源抖动,持续不可见与睡眠则回收呈现而不丢失模型状态。该策略的源码实现在 WindowPresentationPolicy.ts:PRESENTATION_RECLAIM_DELAY_MS = 2_000,状态机为 ACTIVE → PAUSED → RECLAIMED,睡眠通知直接进入 RECLAIMED。
各状态行为(来自 ghostty-resource-efficiency.md):
| 状态 | 呈现行为 |
|---|---|
| 可见、聚焦 pane | 损伤驱动,最高 60 fps |
| 可见、后台 pane | 独立 deadline,最高 30 fps |
| 可见、失焦窗口 | 每 pane 最高 15 fps |
| 可见 pane 收到用户输入 | 最高 60 fps,失焦时 150ms 交互 deadline |
| 隐藏或完全遮挡 | 帧、闪烁、搜索、选择自动滚动立即暂停 |
| 不可见 < 2 秒 | 保留呈现,避免桌面切换分配抖动 |
| 不可见 ≥ 2 秒 | 释放 surface 缓冲、原生呈现状态、canvas 配置与 atlas 纹理;销毁 WebGL context |
| 原生睡眠通知 | 立即请求回收 |
| 隐藏终端 tab | 立即释放其呈现 lease |
调度与提交
- 每 pane deadline 使用 RAF 时间戳,避免回调抖动与聚焦 pane 把后台 pane 拉到 60fps;WebGPU 将 outstanding 帧上界为两帧,隐藏时推迟设备恢复,并通过 submission 拥有 staging 与被替换纹理;
- 有界的热 CPU 字形缓存避免短遮挡后重新栅格化字形;上传只覆盖被占用像素;被处置的 WebGL CPU 数组与栅格 canvas 显式释放;
- 显式的十分钟资源记录器最多保留 600 个样本,可复现的五模型 WASM 压力运行对两个工件都达到内存平台期(原始采样见 ghostty-resource-soak-2026-09-07.json)。
迁移前检查点验证:工件成本与 SIMD 对比
macOS arm64 上的检查点验证包括:前端类型检查、150 个测试文件 / 972 个测试、生产 Vite 构建与体积预算、Rust Clippy(warnings denied)与 333 个 Rust 测试、以及pnpm tauri build --no-bundle的 release 编译。本地.app以禁用 updater 工件签名的方式构建,签名通过codesign --verify --deep --strict——文档明确这是本地验证,不是 notarization。
检查点工件成本
| 工件 | 原始字节 | 生产 Vite gzip |
|---|---|---|
| SIMD | 705,529 | 210.59 kB |
| Scalar | 710,519 | 210.61 kB |
scalar 变体为安装包增加一个工件,但运行中的 webview 只加载一个;合并size-limitgzip 预算 450 kB。SHA-256 与重建说明在 packages/ghostty-core/adapted/UPSTREAM.md。
孤立的 SIMD 对比
Apple M5 / 16 GiB RAM、Node 26.5.0、Vitest 4.1.11,两个工件来自同一源码修订,pnpm bench:ghostty单次本地运行:
| 操作 | SIMD ops/s | Scalar ops/s |
|---|---|---|
| 解析有界流式 fixture | 15,619 | 9,451 |
| 写入并同步一行变化 | 1,006,074 | 831,532 |
| 同步未变化视口 | 2,416,799 | 1,636,612 |
文档警告:这些测量隔离核心执行,不包含Tauri IPC、双消息窗口吞吐、webview GPU 呈现、进程内存、能耗或长期稳定性,不可作为应用级性能声明。同样地,Windows 全量交叉编译因宿主缺少ring所需的 Windows C 头(assert.h)而失败——这不构成 Windows 验证。
仍未关闭的发布门槛(Release Gates)
文档的核心价值之一是一张诚实的"未完成清单"。以下 11 项门槛在撰写时仍然开放:
| 门槛 | 所需证据或实现 |
|---|---|
| 平台与安装器 | 打包 macOS 13 WKWebView、Windows WebView2/ConPTY、Linux WebKitGTK 运行;运行时存在/缺失与离线行为 |
| Ghostty blocks | 原生边界、reflow/pruning/reset、精确输出、Unicode 搜索、元数据上限、导航、遮挡测试;在打包 webview 中用真实 shell 验证 overlay 与共享输入 |
| 可访问性 | 有界可访问输出、历史翻页与播报已实现;VoiceOver、NVDA、Orca 验证仍需进行 |
| 产品事件 | 纯文本 URL 与 OSC 8 已实现;title、bell、通用通知事件仍暴露在桥接层,产品路由未实现 |
| 渲染器恢复 | 打包 GPU/context 丢失、恢复耗尽、字体/DPR 变化、隐藏 pane、睡眠/唤醒;保持模型、PTY、selection、历史 |
| Shell 与输入一致性 | Fish/Starship 拖拽缩放、zsh、bash、pwsh、cmd、WSL、IME、dead keys、AltGr、鼠标协议、同步输出、agent TUI |
| 字形资源 | Unicode/emoji/Nerd Font 压力下的冷字形逐出;验证共享与隔离 atlas 边界 |
| 调度 | 每 pane 节奏、RAF 时间戳、原生 macOS 遮挡、有界提交已实现;打包节奏、睡眠/唤醒、resize 抖动与其他平台遮挡仍需测量 |
| 传输吞吐 | 打包 100 MiB 纯文本与 ANSI 输出,端到端解析完成与故障注入,含最终输出与 ConPTY 关闭 |
| 内存与能耗 | 归属 host/WebContent/GPU 进程;1/5/10/20 tab、隐藏流式、持续 agent、多小时或多日时间线 |
| xterm 移除 | 已实现:无依赖、addons、CSS、旧池、快照、休眠环或兼容适配器残留;渲染器来源/许可文件保留 |
平台配置与验证前提
与 src-tauri/tauri.conf.json 一致:
- macOS:
minimumSystemVersion为13.0(合并后的origin/main亦同;迁移交接文档中的 10.15 最低版本已过时)。打包运行 macOS 13 及其 WKWebView 仍是签署该最低版本的前提; - Windows:每用户 NSIS 安装器使用
downloadBootstrapper模式,不捆绑 WebView2 运行时——运行时缺失时安装需联网,离线安装必须预先单独准备兼容运行时;未配置minimumWebview2Version,与旧版运行时的兼容性仍需打包测试; - Linux:deb/rpm 声明 WebKitGTK 4.1 与 GTK 3 依赖,最老支持的分发/运行时组合仍待验证。
4c59c89上通过的 Linux/macOS/Windows CI 任务只覆盖编译与自动化测试,不运行打包 GUI 或安装器测试。
此外:scalar 工件解决了指令集依赖,但不能凭此认证所有受支持 WebKit 版本;Kitty graphics 支持不完整,需要明确的产品决策与实现后才能宣传。
如何收集发布证据:本地 GUI 走查与诊断快照
首个本地 GUI 构建
pnpm tauri build --bundles app --config '{"bundle":{"createUpdaterArtifacts":false}}' codesign --force --sign - src-tauri/target/release/bundle/macos/Terax.app/Contents/MacOS/terax-cli codesign --force --sign - --entitlements src-tauri/entitlements.plist src-tauri/target/release/bundle/macos/Terax.app codesign --verify --deep --strict src-tauri/target/release/bundle/macos/Terax.app新包位于src-tauri/target/release/bundle/macos/Terax.app,与已安装的日常构建共享应用标识符与设置(非独立用户数据 profile)。六步手动走查要点:
- Fish + Starship 启动,运行多条命令后连续拖拽分割边界,检查提示符完整性、字形几何、最终 shell 宽度与非活动 split 的正常颜色;
- agent 流式输出时选择、复制并附加给 AI;搜索 scrollback、切换 tab 后回到同一 selection 与匹配;
- 运行一条大量输出后立即退出 shell 的命令,检查最终输出先于终端退出行为送达;
- 打开多 tab/split,隐藏流式 tab,最小化并恢复窗口,再关闭 tab,前后各采集一次诊断;
- 演练 emoji、Nerd Font 字形、OSC 8 链接、IME 输入、bracketed paste、备屏 TUI 与常用编码 agent;
- 反复切换桌面、完全遮挡窗口、睡眠/唤醒,按 ghostty-resource-efficiency.md#capturing-a-desktop-transition-trace 采集资源轨迹与归属进程内存。
文档明确:这些检查帮助发现该加固构建的回归,不能关闭上表的特性、平台与持续资源门槛。
诊断快照
localStorage.setItem("terax:terminal-diagnostics", "1"); // After reload: window.__teraxTerm(); await window.__teraxTermSnapshot();要点:native.hostRssBytes只覆盖 Rust host,WebContent 与 GPU 进程归属需单独采集;WASM 与 GPU 分配计数器描述自有分配,不得与进程 RSS 相加(会重复计数);传输吞吐用已解析/已确认字节计数差值计算,shell 自身计时可能早于前端解析完成;最终空闲能耗测量应关闭诊断,除非单独记录采样成本。桌面切换轨迹用window.__teraxTermTrace()启动、JSON.stringify(resourceTrace.stop())导出,记录器每秒采样一次,上限 600 个样本、10 分钟自动停止。
最终迁移落地与本地验证
最终迁移的关键实现事实:
- 六个检查点提交独立保留了迁移前的加固成果;
- 每个 leaf 现在都拥有一个 Ghostty 模型;block 历史与 selection 在 WebGPU/WebGL 替换后仍然存活;失败的图形保持可见且可重试;
- 命令在解析时锚定,受 2,048 个原生 pins 与 1,000 条 JS 记录 / 512 KiB 估算文本元数据约束;精确端点列防止复制到后续命令;原生范围读取保留视口与 selection;block 搜索将 Unicode 偏移映射到网格单元;
- rerun 使用完整的已提交命令,绝不使用截断的元数据;无提示符集成的 shell 保留直接输入,Bash 4.4 之前显式拒绝共享输入栏;
- block 代码/UI 与可访问输出仅在用到时加载,隐藏或遮挡时挂起;已关闭的会话不能获取迟到的 block 资源;
- 移除 xterm 模型、六个依赖、addons、CSS、旧渲染器池、序列化、休眠环与适配 dispatch;WebGL 在 webview 支持时使用软件上下文,失败保持显式;
- 设置提供 Automatic/WebGL 供新终端选择,可选的屏幕阅读器输出;退役的渲染器覆盖不再选择 xterm;
- 新增 IME、dead-key、AltGr、迟发剪贴板处置、有界 OSC 剪贴板、普通 URL、block 生命周期、原生范围与元数据保留测试;CI 在 Linux 之外新增 Windows 与 macOS 终端测试。
新的 block 压力报告 ghostty-resource-soak-2026-09-05-blocks.json 记录精确工件校验和:两个变体解析 655,360 次更新,稳定在68.125 MiBWASM 线性内存,最后 16 个 epoch 零增长,每模型恰好 2,048 个保留 marker——该测量只覆盖原生核心,排除 React、IPC、WebKit、GPU 与应用能耗。
最终本地验证数字
Ghostty-only 候选在 macOS arm64 通过:pnpm check-types与 151 个前端测试文件 / 946 个测试;lint 成功退出(94 个既有 warning + 1 个 info,改动终端文件零诊断);Rust Clippy warnings denied 与全部 333 个测试(含禁用 SIMD 指令与类型的 scalar 校验);生产 Vite 构建与全部既有size-limit预算(总 JS 1.42 MB gzip、Ghostty 核心/会话 JS 54.48 kB / 55 kB、两个 WASM 变体 417.01 kB / 450 kB)。最终工件:SIMD 707,988 字节 / 211.82 kB gzip,scalar 713,015 字节 / 211.78 kB gzip——注意 Vite 与 size-limit 使用不同 gzip 设置,应同类比较。本地 release.app(约 9.6 MiB 磁盘占用,非安装器压缩体积)经 ad-hoc 签名并通过验证,未被启动或安装。
九月六日的交互打磨(提交ff20d93原生剪贴板、17e2d3dblock 呈现与滚动、efa255c原生 selection 与提示符输入)恢复 block 样式表与完成块分隔符前的空行,且该内边距不影响 copy/selection/search 使用的原生命令范围;隐藏与遮挡输出跳过 surface DOM 更新、selection 呈现协调与搜索掩码重建,模型解析与跟踪 selection 继续——未新增定时器或轮询循环。
结论:什么已被证明,什么仍然不是事实
综合 ghostty-release-readiness.md 与配套的 final audit、resource efficiency、PR review 三份报告:
已被证据支持的结论:xterm 依赖已彻底移除(依赖清单与 lockfile 无 xterm 包);生命周期缺陷已修复并有回归测试;20 个空白模型的 WASM 分配从 15.4375 MiB 降至 10.375 MiB;两个变体在五模型压力下稳定于 68.125 MiB 且尾部零增长;所有 JS/WASM 体积预算未提高;macOS arm64 本地候选包可复现构建且 ad-hoc 签名通过。
仍然不是事实的结论:桌面切换的进程内存峰值仍未被归因;打包吞吐、真实 GPU 故障注入、macOS 桌面切换归属、全天 RAM/能耗测量、Windows/Linux 平台验证以及 VoiceOver/NVDA/Orca 可访问性验证仍未完成。任何"生产就绪"或"最大资源效率"的宣称,都必须以上述打包测量为前提——单元与 API 双打测试不能替代它们。
【免费下载链接】terax-aiLightweight (7MB) Terminal-first AI-native dev workspace项目地址: https://gitcode.com/GitHub_Trending/te/terax-ai
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考