Stream editor, LSP, and terminal data flow for large files - #756
Open
SnaetWarre wants to merge 4 commits into
Open
SnaetWarre wants to merge 4 commits into
SnaetWarre wants to merge 4 commits into
Conversation
Route Monaco edits through document change batches so LSP sync, undo history, and the view layer share one incremental path instead of full re-parses on every keystroke. Track the sync state in a new Rust document session that maps Monaco offsets onto LSP versions and reuses pending notifications. Make the file tree filter, watcher preload queue, and terminal output buffer incremental so scrolling and typing stay responsive with large repos. Keep the view snapshot guard cheap with a revision plus content reference check. Cover the new paths with regression tests and baseline evidence.
Contributor
Author
|
let me remove all of that markdown for ya real quick |
SnaetWarre
force-pushed
the
perf-data-flow
branch
from
September 20, 2026 21:38
d947548 to
f70d49e
Compare
mehmetozguldev
self-requested a review
September 21, 2026 13:05
Apply vp formatting to the six flagged frontend files so vp check passes again. The changes are whitespace and line-wrap only with no behavior change.
Combine the main markdown highlight scheduling with the perf-data-flow worker tokenizer. Code blocks are still highlighted through the worker with hashed cache keys and per-block request keys, but now sequentially with yields to the main thread and efficient string building. Update the highlight test to mock the worker client.
Contributor
Author
|
@mehmetozguldev can you run CI please? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Typing and scrolling in large files re-parsed whole documents on
every keystroke: full-content LSP sync, one store commit per preloaded
directory, one xterm write per output chunk, and syntax highlighting on
the UI thread.
This routes Monaco edits through incremental document batches shared by
LSP sync, undo history, and the view layer, batches explorer preload
commits and terminal writes, and moves highlighting off the UI thread.
Numbers, measured on the same machine at base and head:
Bytes and order are preserved on every path above. Timing fixtures
are synthetic Bun runs, not WebKitGTK rendering figures.
bunx tsc --noEmit(clean)bunx vp test run src/features/editor/tests/ src/features/file-system/tests/ src/features/terminal/tests/ src/features/git/tests/ src/features/file-explorer/tests/(185 files, 844 tests pass)bun check:rust(clean) andcargo test -p athas-lsp(18 pass)Screenshots:
Not applicable (no visual change).
Every incremental path falls back to a full recompute on unexpected
batches, covered by new regression tests. The branch bases on
063f5ab8and merges cleanly intomain.