Repository navigation
TruffleData 0.1.0
TruffleData 0.1.0 provides shared, contract-aware data access for Truffle languages, including static and dynamic records, JDBC integration, and lossless protobuf rows.
Lossless protobuf and generated contracts
ProtoPlanexposes immutable protobuf field metadata: wire types, unsigned widths, enum names/numbers, defaults, repeated/map shape, and nested message identities.ProtoRow.has()preserves protobuf presence separately from readable defaults. Bytes use compact storage; enums retain numeric values, including unknown open-enum numbers.- Construct and decode native rows without retaining a protobuf
MessageorDynamicMessage. The bounded Java wire codec supports schema-backed and schemaless binary input on JVM and Native Image. - Supply schemas at runtime through descriptors/descriptor sets, or generate descriptor-free Java contracts at build time with
protoc-gen-truffledataand the Bazelproto_contract_libraryrule. - Ingest
MessageOrBuilder, ProtoJSON, and protobuf text format. Text ingestion uses protobuf-java host parsers and temporary builders; generated contracts and binary decoding do not require runtime descriptor initialization.
Validation
The shared JVM/Native Image matrix covers 453 operations: 400 successful compiled cases and 53 expected rejections. Both build-time JIT negative controls verify that violations are rejected. All 13 local targets passed, including native execution, allocation gates, and publication validation. Codecov receives LCOV and JVM/native JUnit reports; executable-method coverage is required for the access surfaces, including ProtoRow.
Static protobuf reads measured 0.000064 bytes/read. Decoding a 65,540-byte message allocated 66,632 bytes with static storage, within the enforced payload-plus-16-KiB budget. These measurements and compilation guarantees apply to the tested operation matrix and pinned runtime.
Release-source CI includes coverage, CodSpeed simulation, native JIT checks, real MySQL/PostgreSQL acceptance, and an isolated Maven consumer. The publisher reruns checks with the release version and verifies public jars, source jars, and POMs against staged bytes.
Consumption
Repository: https://maven.elide.dev
All six libraries and the BOM use version 0.1.0:
dev.elide:truffledata-core:0.1.0dev.elide:truffledata-protobuf:0.1.0dev.elide:truffledata-jdbc:0.1.0dev.elide:truffledata-jdbc-sqlite:0.1.0dev.elide:truffledata-jdbc-mysql:0.1.0dev.elide:truffledata-jdbc-postgresql:0.1.0dev.elide:truffledata-bom:0.1.0(POM import)
Java 25 and Elide GraalVM 25.5.5-elide.5 are required. Gradle/Bazel consumers must also configure https://maven.elide.dev/gvm-elide/25.5.5-elide.5 for the pinned runtime artifacts.
Scope
This release addresses the API gaps in #1 without changing the existing generic tabular protobuf adapter. Lossless plan compilation explicitly rejects Editions, extension ranges, and MessageSet. Schemaless input preserves wire data without guessing declared field types; named text formats require a schema. Buffa/Myna is not bundled. Any future native backend must support static linkage on SVM and preserve Java-only fallback on both SVM and JVM.