turbo-editors/turbo-rustpublic Fork 0
9c61a674ab7f948adf4959b95f57dc1ac5915d4d
Commits
Clone
git clone https://git.rickub.com/turbo-editors/turbo-rust.git
git clone ssh://git@rickub.com/turbo-editors/turbo-rust.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

2026-09-01-first-editor.md · 35 lines · 2.8 KBmarkdown Blame HistoryRaw
📦 Turbo Rust 713ea5c k33g yesterday1# Handoff — 2026-09-01 — Turbo Rust, first build
2
3## State
4
5The editor exists and works. Whole suite green, quality gate PASS at 0/0/0 with complexity 98, binary builds and runs, and completion has been driven against a real rust-analyzer.
6
7Documentation is 33 pages × EN + FR, with a drawio diagram generated from `go list`.
8
9Everything is **uncommitted**, on `main`.
10
11## In flight
12
13Nothing.
14
15## Next steps
16
171. **Commit turbo-core first**, then this repository. Turbo Rust does not build without the library beside it.
182. **Once turbo-core is tagged**, drop the `replace` directive from `go.mod` and run `make test`.
193. **Use it for an afternoon.** Nobody has. Everything here is verified by tests and scripted pty runs; the first hour of real editing will find something.
204. **Point the scanner at a large real crate.** It has met one demo file and a broad sweep in a test.
215. Ticket 0001 in `turbo-editors/.tickets` is the user's to close.
22
23## Open questions / blockers
24
25None.
26
27## Watch out for
28
29- **rustup's shim is not rust-analyzer.** `~/.cargo/bin/rust-analyzer` exists on every machine that has rustup and fails with `Unknown binary 'rust-analyzer' in official toolchain` only when run. Anything that checks for the server must execute it, not stat it — the end-to-end test lost thirty seconds to this before it was understood.
30- **rust-analyzer answers an empty list until it has loaded the workspace**, and says so with a `$/progress` notification this client does not read. The end-to-end test asks again on a loop for up to ninety seconds. Do not "simplify" that into a single request.
31- **Two of the scanner's dispatch cases must come before the generic ones.** `:` is an operator rune and `.` is a punctuation rune, so `::` and `..` are claimed explicitly first. Moving them down the switch silently changes their colour.
32- **A lifetime must be emitted as one span.** It was two — the name, then the quote before it — and the editor draws spans in order and assumes they do not overlap, so it painted wrongly rather than failing. `TestSpansOnALineAreOrderedAndDoNotOverlap` is what caught it.
33- **`reference_test.go` holds the documentation to the code.** If you change what the scanner colours, that test tells you which sentence in `docs/*/reference/languages.md` you have just made false. The `MAX_SIZE` case documents a *limitation* on purpose — do not "fix" it without also fixing the sentence.
34- **The templates are tested here, not in the library.** turbo-core tests that `Create` writes the profile's template; that Build runs `cargo build` and that no template still says `turbo-go` is this repository's test.
35- **`02-release.publish.sh` and `04-release.upload-binaries.sh` have never been run**, here or in turbo-go. They publish to Codeberg. `02` also still has no `set -e`, and must not simply be given one: its `read -r -d '' DATA` idiom always exits non-zero by design.