summaryrefslogtreecommitdiff
path: root/docs/lsp-evaluation.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/lsp-evaluation.md')
-rw-r--r--docs/lsp-evaluation.md23
1 files changed, 19 insertions, 4 deletions
diff --git a/docs/lsp-evaluation.md b/docs/lsp-evaluation.md
index ae822213..5f660640 100644
--- a/docs/lsp-evaluation.md
+++ b/docs/lsp-evaluation.md
@@ -2,16 +2,16 @@
Same core, same seam (`src/lsp.zig`), same 17-probe harness (`zig build lspbench`)
over the same corpus. Three jj workspaces, three independent implementations,
-one function each.
+one function each. C landed; see **Decision** below.
| | **A · stdlib** | **B · client** | **C · in-process** |
|---|---|---|---|
-| workspace | `pardes-ws-ast` | `pardes-ws-proto` | `pardes-ws-inproc` |
+| change | `nvqpknzm` | `stuurqqt` | **landed** |
| what it is | `std.zig.Ast` + `AstGen`, hand-rolled scope walk | `zls` as a child process, JSON-RPC over a socketpair | ZLS linked as a Zig module, analyser called directly |
| **probes correct** | 12 / 17 | **17 / 17** | **17 / 17** |
| **false claims** | 0 | 0 | 0 |
| **implementation LOC** | 622 (+307 test) | 721 | **540** (+29 build) |
-| new dependency | **none** | a `zls` binary at runtime | ZLS source (path dep) |
+| new dependency | **none** | a `zls` binary at runtime | ZLS source (fetched into `zig-pkg/`) |
| binary size vs base | +6 MiB | +14 MiB | +35 MiB |
| memory | 3.7 MiB | 1.1 MiB **+ 37 MiB in the child** | 5.5 MiB |
| processes | **1** | 2 | **1** |
@@ -82,7 +82,22 @@ All three keep the 56 existing snapshot scripts green, add a 57th driving the
real binary through the helix keymap, and pass `hxdiff` (360) and `hxparity`
(440) with no new waivers.
-## Recommendation
+## Decision
+
+**C landed.** It is what `src/lsp_zls.zig` is, and ZLS is now a fetched
+dependency (`build.zig.zon`, pinned to commit `3e0d0820` on the 0.16.x branch)
+so it sits in `zig-pkg/` like everything else and the build is reproducible
+from the .zon alone — no path dependency on a local checkout.
+
+A and B were not deleted, only un-worktree'd. They remain whole commits:
+
+- **A · stdlib** — change `nvqpknzm`
+- **B · client** — change `stuurqqt`
+
+Both are one `jj new <change>` away if the multi-language argument below wins
+later, or if the ZLS coupling ever needs backing out.
+
+## Recommendation (as written before the decision)
**C (in-process), with B as the answer to a question pardes has not asked yet.**