22
33This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
44
5+ ## What it is
6+
7+ Java 25 native implementation of the [ Vortex] ( https://github.com/spiraldb/vortex ) columnar file format. Uses FFM (
8+ ` MemorySegment ` /` Arena ` ) instead of JNI or ` sun.misc.Unsafe ` .
9+
10+
511## Commands
612
713Build prerequisites: ` brew install flatbuffers protobuf ` (flatc + protoc must be on PATH).
@@ -36,24 +42,6 @@ Never use `mvn install` or `./mvwn install`.
3642./mvnw compile exec:java -pl performance -am -DskipTests -Dexec.args=" RustVsJavaReadBenchmark.javaReadVolume"
3743```
3844
39- ## Architecture
40-
41- Java 25 native implementation of the [ Vortex] ( https://github.com/spiraldb/vortex ) columnar file format. Uses FFM (
42- ` MemorySegment ` /` Arena ` ) instead of JNI or ` sun.misc.Unsafe ` .
43-
44- ### Module dependency chain
45-
46- ```
47- core → reader
48- → writer
49- ```
50-
51- | Module | Responsibility |
52- | ----------| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
53- | ` core ` | Logical types (` DType ` , ` PType ` ), file-structure model (` Layout ` , ` Footer ` , ` SegmentSpec ` , ` CompressionScheme ` ), encoding layer (` Array ` , ` Decoder ` /` DecoderRegistry ` , ` ArrayNode ` , ` DecodeContext ` ) |
54- | ` reader ` | ` VortexFile ` (memory-mapped file handle), ` PostscriptParser ` , ` ScanIterator ` (chunk-by-chunk reads), ` ScanOptions ` , ` RowFilter ` (zone-map predicate tree) |
55- | ` writer ` | ` VortexWriter ` (encodes and writes chunks), ` WriteOptions ` |
56-
5745### File format
5846
59478-byte trailer at EOF: ` version(u16 LE) | postscriptLen(u16 LE) | magic(VTXF) ` . The postscript is a FlatBuffer blob
@@ -93,10 +81,6 @@ MemorySegment out = ctx.arena().allocate(n * elemBytes);
9381If the allocation is in a private static helper that doesn't receive ` DecodeContext ` , add an ` Arena arena ` parameter
9482and pass ` ctx.arena() ` from the ` decode() ` call site.
9583
96- ### Implementation status
97-
98- Core read/write path is functional. See ` TODO.md ` for open work and roadmap.
99-
10084## Reference implementation
10185
10286When stuck on encoding/decoding behavior, consult the Rust reference implementation at
@@ -115,7 +99,6 @@ methods in the Rust source to get the exact protobuf schema, then implement from
11599
116100## Code style
117101
118- - Java 25. No Kotlin, no Gradle.
119102- Zero SonarQube bugs/smells policy.
120103- No ` sun.misc.Unsafe ` or internal JDK APIs.
121104- Prefer explicit over clever. Fail fast on unhandled cases.
0 commit comments