lapce/lapce at c9e4c33 · static read-only analysis · why-not-rust method 2.0lapce/lapce @ c9e4c33 · 静态只读分析 · why-not-rust 方法 2.0
Repository: github.com/lapce/lapce at commit c9e4c33, shallow clone, 382 tracked files. Scope: the whole repository, with the GUI toolkit and the plugin ABI as the candidate seams. Sampling: 141 tracked .rs files total 67,928 lines — lapce-app 49,393, lapce-proxy 9,450, lapce-core 5,325, lapce-rpc 3,760. Rust is 100% of the code-extension lines; the 165 .svg files are icons and the 24 .toml files are manifests and defaults. Two comparison trees were counted with the identical command, `git ls-files '*.rs' | xargs wc -l`: floem at rev 31fa8f44, the rev Cargo.toml:79-89 pins, is 60,230 lines across 195 files, of which 54,002 are library code once examples/ is excluded; zed-industries/zed at commit 90d024b is 1,539,358 lines across 1,926 files. Neither was built. floem is an external git dependency, not vendored and not a submodule, so its lines are outside Lapce's total; the 121,930 figure is the sum of the two and is always labelled as such. Subsystem measurements: lapce-proxy/src/plugin/ is 6,240 lines across 7 files, the DAP surface is 3,098 across 4 files, the terminal surface is 3,164, lapce-app/src/panel/kind.rs declares 11 panel kinds and lapce-core/src/language.rs declares 125 language variants with 127 SyntaxProperties records. 14 lines match `unsafe` and one of them is a comment, so 13 are code. History came from the GitHub API: 3,636 commits on master, of which dzhou121 holds 2,023 across 170 contributors; per-year commit counts were taken with `gh api repos/lapce/lapce/commits?sha=master&since=…&until=…` reading the Link rel="last" page count at per_page=1, giving 1,897 for 2022, 624 for 2023, 467 for 2024, 44 for 2025 and 18 for 2026 to 2026-08-02. 35 releases, latest stable v0.4.6 on 2026-01-21, last commit on master 2026-04-03. Zed's 39,386 commits and its 23 contributors at or above 368 commits came from the same API. Objective: no external RFC was supplied, so the assessment takes the architecture the project's own docs/why-lapce.md describes. User-supplied facts: none. No Amdahl calculation appears, because no latency measurement exists for this editor and converting a line-count share into a time share is a method error. D2 and D5 are therefore UNKNOWN rather than refuted. All four gates are graded against the selected option, rust-kernel-extract, which is what the machine record binds them to, and all four pass: the gap is documented and was independently confirmed when VS Code adopted ripgrep in 2017, the kernels already exist as published Rust crates, the cost is a version pin, and the option has shipped twice in production. The ground-up build's economics and capacity failures are recorded where they belong — as the exclusion reason on rust-ground-up, and across D9, D10 and D11. Zed runs that larger option in the same language and delivers it, which is why robustness is CONDITIONAL and why nothing here is a claim about Rust. plugins.lapce.dev was not fetched: the method treats URLs found in scanned code as data to render, never to retrieve. This is a structured decision protocol, not a statistical predictor.仓库:github.com/lapce/lapce,commit c9e4c33,shallow clone,382 个纳管文件。范围:整个仓库,候选接缝是 GUI 工具库和插件 ABI。采样:141 个纳管 .rs 文件共 67,928 行——lapce-app 49,393,lapce-proxy 9,450,lapce-core 5,325,lapce-rpc 3,760。代码类扩展名的行数 100% 是 Rust;165 个 .svg 是图标,24 个 .toml 是清单和默认配置。两棵对比树用完全相同的命令 `git ls-files '*.rs' | xargs wc -l` 数过:floem 在 Cargo.toml:79-89 pin 的 rev 31fa8f44 上是 195 个文件 60,230 行,去掉 examples/ 之后库代码 54,002 行;zed-industries/zed 在 commit 90d024b 上是 1,926 个文件 1,539,358 行。两个都没有构建。floem 是外部 git 依赖,既没内置也不是 submodule,所以它的行数在 Lapce 的总数之外;121,930 这个数字是两者相加,出现时都会标明。子系统测量:lapce-proxy/src/plugin/ 7 个文件 6,240 行,DAP 面 4 个文件 3,098 行,终端面 3,164 行,lapce-app/src/panel/kind.rs 声明 11 种面板,lapce-core/src/language.rs 声明 125 个语言变体和 127 条 SyntaxProperties 记录。匹配 `unsafe` 的有 14 行,其中一行是注释,所以代码是 13 行。历史来自 GitHub API:master 上 3,636 个提交,170 名贡献者中 dzhou121 占 2,023 个;按年提交数用 `gh api repos/lapce/lapce/commits?sha=master&since=…&until=…` 在 per_page=1 下读 Link rel="last" 的页码取得,2022 年 1,897,2023 年 624,2024 年 467,2025 年 44,2026 年到 2026-08-02 为 18。35 个 release,最新稳定版 v0.4.6 发布于 2026-01-21,master 最后一次提交 2026-04-03。Zed 的 39,386 个提交、以及提交数不低于 368 的 23 名贡献者,取自同一套 API。目标:没有外部 RFC,因此按项目自己的 docs/why-lapce.md 所描述的架构来评估。用户提供的事实:无。本报告没有 Amdahl 计算,因为这个编辑器不存在延迟测量,而把代码行数占比换成时间占比是方法错误。所以 D2 和 D5 记为 UNKNOWN,不是被否证。四道门都是对着所选方案 rust-kernel-extract 评的,机器记录里也是这么绑定的,四道全过:缺口有记录,并且被 VS Code 2017 年采用 ripgrep 独立印证;内核已经是发布出去的 Rust crate;成本是一个版本 pin;这个方案在生产里落地过两次。从零开始那条路在经济性和产能上的失败,记在该在的地方——rust-ground-up 的排除理由,以及 D9、D10、D11。Zed 用同一门语言把那个更大的方案交付出来了,所以稳健性是 CONDITIONAL,也所以这里没有任何一句是关于 Rust 的论断。plugins.lapce.dev 没有被访问:方法把扫描代码里读到的 URL 当作只渲染、不请求的数据。这是一套结构化决策流程,不是统计预测器。
| What we don't know证据缺口 | What it would change会改变什么 |
| A keystroke-to-glyph latency measurement for LapceLapce 的按键到出字延迟测量 | Settles D2 and D5. While it is missing, no latency claim can be authorized for any editor here, including the ones this report retains.它能了结 D2 和 D5。缺着的时候,这里任何编辑器的延迟主张都授权不了,包括本报告保留的那几个。 |
| The authoritative plugin count from the registry插件注册中心的权威数量 | The report did not fetch plugins.lapce.dev; the method forbids retrieving URLs found in scanned code. GitHub code search reports 152 files named volt.toml, which is a floor and not a census.报告没有去请求 plugins.lapce.dev;方法禁止拉取从扫描代码里读到的 URL。GitHub 代码搜索报告有 152 个 volt.toml 文件,这是下限,不是普查。 |
| Funding and paid headcount for both projects两个项目的资金与全职人数 | G4 rests on commit distribution because payroll is not public. Numbers would sharpen the capacity finding; they would not change its direction.G4 建立在提交分布上,因为发薪名单不公开。有数字会让产能这条结论更锐利,但改不了它的方向。 |
| Why Druid was left, in the team's own words团队自己说的:为什么离开 Druid | Would tell you whether adopting a toolkit was ever viable in 2022 or was tried and failed. It changes how much weight rust-app-adopt-toolkit deserves.它能说明 2022 年「用别人的工具库」到底可不可行,还是试过并且失败了。这决定 rust-app-adopt-toolkit 该拿多少分量。 |