Backlog 3: M2 done, progress on M3, S1 and clone f59376ea413b
refs #35
- Author
- Andy McCall @andymccall <[email protected]>
- When
- · 2026-09-30 00:12 UTC
- Signature
- ✔ signed by Andy McCall
- Hash
f59376ea413b22a2ca915ea538e4272496fd20f25ea17abc989d8cca663e456d- Depends on
- 1681323d1dff 33e77a5526fa 7757367bedcc
- Depended on by
- a87c7b9d563a
- In bookmarks
- agents-in-readme bare-hashes carried-not-removed carry-identical doctor-trust identical-sides keyless-tags main merge-remote-bookmark only-help-103 paths-for-resolutions-and-amend push-notes show-stat subrepo-pin-state switch-says
- In tags
- v0.1.0 v0.10.0 v0.11.0 v0.2.0 v0.3.0 v0.3.1 v0.4.0 v0.4.1 v0.4.2 v0.4.3 v0.4.4 v0.4.5 v0.4.6 v0.5.0 v0.5.1 v0.6.0 v0.7.0 v0.8.0 v0.9.0
- Edits
- 3 atoms, 0 tree operations, 1 file
Browse the tree at this change
modified docs/backlog-overnight-3.md +12 −1
| … | 97 unchanged lines |
||
| 98 | 98 | replay the whole change. Options: the commit writes a checkpoint; |
|
| 99 | 99 | history-only states load graphs on demand (`State::load_graphs`). |
|
| 100 | 100 | Target: under 300 MB and 0.4 s. |
|
| 101 | - | - [ ] M2 **Lines without an allocation each.** An insert's lines become |
|
| 101 | + | - [x] M2 **Lines without an allocation each.** An insert's lines become |
|
| 102 | 102 | one shared buffer with line offsets (for example `Arc<[u8]>` and |
|
| 103 | 103 | ranges) in the change and in the file graph. The file graph shares |
|
| 104 | 104 | that buffer and does not copy it. `AtomInfo` and the edge map shrink. |
|
| … | 78 unchanged lines |
||
| 183 | 183 | - **Still far from Git**: one-file and 1 000-file status, diff and commit (2 to 5 s); switch (2 s); log (2 s); clone (110 s, 8 GB); first commit (56 s, 10 GB); fsck (4.5 GB). |
|
| 184 | 184 | - The common cost is loading the first change's history (0.5 s) and building the tree view (0.4 s). |
|
| 185 | 185 | - Next: a persistent per-state cache (tree view, graph keys and change set), Git's index in effect, then compact graphs (M2) and a streaming commit (M3). |
|
| 186 | + | - 2026-09-30 **M2 done, M3 and S1 part way** (oxygen#35). The first commit of the Linux tip now takes 40.7 to 41.6 s on a quiet Earth (S1 target: 50 s; Git: 34 to 38 s) and 4.9 GB RSS (from 10 GB). |
|
| 187 | + | - **Encoding** (b7103633): each change is encoded once, the working copy's edits are moved rather than copied, and text blobs and chunk compression run on every core. |
|
| 188 | + | - **Storing** (b7a090c7): texts go to the store a batch at a time. |
|
| 189 | + | - **M2, lines** (086641a8): an insert's lines are one shared buffer, into which graph atoms point. |
|
| 190 | + | - **Clone** (5d62fa66, 11bf3b00, 397d9f98): a local clone takes 48 s and 3.9 GB (from 96 s and 5.2 GB, and killed before that; Git: 9.6 s). The changes behind it: |
|
| 191 | + | - an unedited file's graph is read off as a chain; |
|
| 192 | + | - a bundle carries its changes' hashes; |
|
| 193 | + | - a large change is read once per checkout; |
|
| 194 | + | - a local fetch moves changes as stored. |
|
| 195 | + | - **Hub and runner**: re-pinned to oxygen 397d9f98 and deployed (oxygenhub#58, a6f006ba; oxygenflow#15, 630b7fd6). The hub reads metadata or skeletons where it lists changes. Checked: /health, and the log, file history, tree and file pages. |
|
| 196 | + | - **Note**: my pushes start Flow jobs on Earth, so timings under load are marked in benchmarks.md. |
|
| 186 | 197 |