diff options
| author | eunhhu <[email protected]> | 2026-09-25 09:34:34 +0100 |
|---|---|---|
| committer | eunhhu <[email protected]> | 2026-09-25 09:34:34 +0100 |
| commit | 65386f68fb53e5a9a20a284b06afd872172c30eb (patch) | |
| tree | b04133aaa602fbf6a864df1d368ae091ab09b600 /docs/research/073-single-file-persistent-tree.md | |
| parent | 6a28879bd56354483fe940c0c80d511eccb89983 (diff) | |
| download | pure-65386f68fb53e5a9a20a284b06afd872172c30eb.tar.gz pure-65386f68fb53e5a9a20a284b06afd872172c30eb.zip | |
Let the runtime own working versions as drafts
state.h gives any app a runtime-owned working version of a stored value on
the tree store. A draft shares unchanged extents with the stored version,
edits in memory by path copying, lends ordered extents without copying, and
commits only its new nodes when the key is still at its base revision. A
failed commit changes neither the draft nor the store; a draft whose file was
replaced by compaction copies its stored extents on commit. Unreachable
arena nodes are reclaimed once they outweigh max(reachable, 32 KiB).
Typing into the middle of a 1 MiB document and saving each character peaked
at about 1,660 KiB RSS with a draft against about 4,480 KiB for an app copy
compared with storage on save; saves were only 1-2 ms faster. This corrects
073, which had attributed the TUI's remaining 8 ms to that comparison.
Drafts are not yet charged to the runtime budget or visible to .pure
definitions.
Diffstat (limited to 'docs/research/073-single-file-persistent-tree.md')
| -rw-r--r-- | docs/research/073-single-file-persistent-tree.md | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/docs/research/073-single-file-persistent-tree.md b/docs/research/073-single-file-persistent-tree.md index e2a2ee9..092b6ad 100644 --- a/docs/research/073-single-file-persistent-tree.md +++ b/docs/research/073-single-file-persistent-tree.md @@ -116,11 +116,11 @@ TUI의 실제 PTY 검사(1 MiB, UTF-8, 충돌, 1,024개 문서 목록)다. 기� ## 다음 결정 -TUI의 17 ms 중 저장소 자체는 약 8.5 ms다. 나머지는 저장본 전체를 연속 뷰로 다시 읽어 -초안과 비교하는 "초안 대 저장본 비교" 관례의 비용이다. 편집기는 무엇을 바꿨는지 이미 알고 있다. +TUI의 17 ms 중 저장소 자체는 약 8.5 ms다. 처음에는 나머지 전부를 저장본을 다시 읽어 초안과 +비교하는 비용으로 추정했으나 틀렸다. [074](074-runtime-owned-drafts.md)에서 저장소 API 수준으로 +재 보니 그 비용은 약 1–2 ms였다. 나머지는 화면 갱신·PTY·런타임 경로이며 아직 분해하지 않았다. -1. 편집 연산을 그대로 전달하고, 초안을 같은 트리의 커밋되지 않은 루트로 둔다. 그러면 - 전체 비교, 전체 복사, 별도 gap buffer가 사라지는지 확인한다. -2. 연속 뷰 대신 익스텐트 열을 소비자에게 준다(HTTP `writev`, 피어 전송, TUI 렌더). +1. 작업 중인 값을 앱이 따로 복사해 두지 않고 런타임이 소유한다 — [074](074-runtime-owned-drafts.md)에서 구현했다. +2. 연속 뷰 대신 익스텐트 열을 소비자에게 준다(HTTP `writev`, 피어 전송, 렌더). 3. Pure 간 동기화에서 상대에게 없는 노드만 보낸다. 4. 코드 크기를 줄인다. 기본 저장소 승격 여부는 1–4의 결과와 macOS·전원 차단 검증 뒤에 판단한다. |
