Skip to content

Add long form documentaiton explaining rust architecture#1583

Draft
ianhi wants to merge 6 commits intomainfrom
ian/rust-doc
Draft

Add long form documentaiton explaining rust architecture#1583
ianhi wants to merge 6 commits intomainfrom
ian/rust-doc

Conversation

@ianhi
Copy link
Collaborator

@ianhi ianhi commented Jan 27, 2026

opening early to review myself via github and rendered docs

ianhi and others added 6 commits January 26, 2026 11:38
Contributor-focused documentation explaining the internal architecture
of the icechunk Rust library:

- index.md: Overview and module map
- architecture.md: Layered design, data flow, module dependencies
- core-types.md: Snapshot, Manifest, content-addressable IDs
- repository.md: Entry point, version specs, refs (branches/tags)
- session.md: Transaction layer, ChangeSet enum, commit process
- conflicts.md: Conflict detection and resolution
- storage.md: Storage trait, AssetManager, virtual chunks
- store.md: Zarr key-value interface

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- **ChangeSet is checked first** for uncommitted writes in the current session
- **Inline chunks** return data directly from memory (no storage fetch)
- **Ref chunks** (uncommitted but already written) require a storage fetch
- **Committed chunks** are looked up via the base snapshot's manifests, with caching
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete "with caching" (it's not enabled by default)


- **ChangeSet is checked first** for uncommitted writes in the current session
- **Inline chunks** return data directly from memory (no storage fetch)
- **Ref chunks** (uncommitted but already written) require a storage fetch
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We call them Native chunks

| `AssetManager` | Caches, `Storage` ref | `Session` |
| `Storage` | Backend connection | `AssetManager` |

## Thread Safety
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd delete this section, it can be obtained from the rust documentation and it's a bit confusing.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What would be more useful is to know what object contains a reference to other objects, and if they use internal mutability or not. Does the session point to the repo? Does the store hold a Mutex to the Session? etc

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants