Conversation
… format (ADR 0017) See ADR 0017. Replaces flatc + com.google.flatbuffers with an in-house, MemorySegment-native FlatBuffers toolchain (fbs-gen + fbsrt runtime), and migrates every wire-format metadata path (Layout, decode/encode nodes, DType.Extension, zone-map stats, postscript plumbing) off java.nio.ByteBuffer. Unblocks JPMS (no upstream automatic module). Full unit suite + 275 Rust-interop integration tests pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Replaces the external
flatccompiler and thecom.google.flatbuffersruntime with an in-house, MemorySegment-native FlatBuffers toolchain — mirroring the existingproto-gen. Implements ADR 0017.Why
MemorySegment; the generated readers/builder now operate on it directly — noByteBufferbridge in the codec, zero-copy slices.flatbuffers-javashipped as an automatic module (filename-derived name), which a published named module cannot reliablyrequires. With both wire formats self-hosted, no upstream automatic module remains →module-info.javais now viable.Also drops the external
flatcCLI (nobrew install, noValidateVersionversion-guard strip hack) and restores the four.fbsschemas to upstream-pristine names (theFbsprefix now lives in the generator).What
fbs-genmodule —.fbslexer/parser/AST + code generator (mirrorsproto-gen).io.github.dfa1.vortex.fbsrtruntime —FbsTable/FbsStruct(read) +FbsBuilder(write) overMemorySegment. Full FlatBuffers algorithm: vtable lookup/dedup, back-to-front build, alignment, default omission, unions, inline structs, strings.@Generated; output names unchanged (FbsArray, …), so no consumer churn beyond the API-shape moves (getRootAsX(MemorySegment), byte-vectorxAsSegment()).regenerate-sourcesprofile runsfbs-gen(+proto-gen) execs;flatcexec + antrun strip removed.MemorySegment→ByteBuffer→MemorySegmentdouble-conversions in the flat-segment decoders; migratedLayout.metadatatoMemorySegment.Validation
Follow-ups (not in this PR)
module-info.java(now unblocked) and non-export thefbs/protopackages.ByteBufferpurge: decoderctx.metadata()(~25 decoders) andZonedStatsSchema.🤖 Generated with Claude Code