Skip to content

Releases: Query-farm/vgi-rpc-java

v0.10.2

13 Jun 16:42
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

HTTP transport state-serialization hardening (continuation tokens over the stateless HTTP transport). Re-cut of 0.10.1 (whose tag was published immutable before a javadoc fix).

  • Round-trip producer state by field rather than getters, plus an Arrow Schema codec (IPC message round-trip) so state objects can hold a Schema directly.
  • Handle java.time fields in state (jsr310).
  • Write empty dictionaries for zero-row token/continuation batches so dict-encoded (ENUM) schemas render; carry the input batch's dictionaries through to the exchange response.
  • Self-describing state tokens: prefix the concrete state class name so /exchange resolves the right type even when many state types are multiplexed through one wildcard init RPC (VGI).
  • VGI_STREAM_DEBUG logs otherwise-swallowed stream-handler exceptions server-side.

Upload is validated by CI but gated on a manual "Publish" click in the Sonatype Central Portal.

v0.10.0

13 Jun 14:07
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Highlights

  • HTTP gzip codec negotiation, cookies, and supported-encodings — the HTTP transport now negotiates gzip content coding and carries request/response cookies.
  • Windows is now a supported targetShmFactory.available() probes for POSIX shm_open instead of assuming shared memory is present on any JDK ≥ 22. A Windows worker now cleanly degrades to the pure-JVM pipe/HTTP path rather than failing at shm attach time.
  • CI hardening — the test matrix now runs on Linux x64, macOS arm64, and Windows x64, across JDK 21, 22, and 25 (the FFM shared-memory overlay is exercised on a real JDK 22 runtime and on macOS's Darwin shm_open branch).
  • Branded published Javadoc (Query.Farm theme).

Full changelog: v0.9.1...v0.10.0

v0.9.1

11 Jun 20:06
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Docs-only release — no wire or behavior changes. Still tracks vgi-rpc-python 0.20.0.

implementation("farm.query:vgirpc:0.9.1")        // core
implementation("farm.query:vgirpc-oauth:0.9.1")  // optional: JWT / OAuth / PKCE
implementation("farm.query:vgirpc-s3:0.9.1")     // optional: S3 external storage
implementation("farm.query:vgirpc-gcs:0.9.1")    // optional: GCS external storage

Highlights

  • Javadoc for the consumer-facing public API: real descriptions across RpcServer, CallContext, the auth types, the stream primitives (StreamState / ProducerState / ExchangeState / RpcStream), RpcError and the error-kind family, the dispatch-hook surface (DispatchHook / DispatchInfo / CallStatistics / AccessLogHook), the HTTP server config + authenticators, ExternalStorage / ExternalLocationConfig, and the transports — these ship in the Maven Central javadoc jars and show up in IDE quick-doc.
  • Doclint enforcement: published modules now build javadoc with -Xdoclint:all,-missing, so broken HTML and dangling {@link}s fail the build going forward.

Requires --add-opens=java.base/java.nio=ALL-UNNAMED at runtime (Apache Arrow). See the README for a quick start.

v0.9.0

11 Jun 19:02
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Tracks vgi-rpc-python 0.20.0 (continuation-only stream resume).

implementation("farm.query:vgirpc:0.9.0")        // core
implementation("farm.query:vgirpc-oauth:0.9.0")  // optional: JWT / OAuth / PKCE
implementation("farm.query:vgirpc-s3:0.9.0")     // optional: S3 external storage
implementation("farm.query:vgirpc-gcs:0.9.0")    // optional: GCS external storage

Highlights

  • Continuation-only stream resume (HTTP): HttpStreamHandler resolves each stream method's concrete StreamState class at construction by introspecting the implementation's generic return types (the Java mirror of Python's _resolve_state_types). A continuation-only POST /{method}/exchange — e.g. a stateless relay resuming from a held per-batch token via the Python 0.20.0 resume_stream client — now works on a worker that never served the stream's /init, as long as workers share a token key.
  • To be resumable cross-process, implementations must declare concrete stream returns (RpcStream<Counter> produce_n(...)); wildcard returns (RpcStream<? extends ProducerState>) keep the previous in-process behaviour.
  • Interop verified against the Python 0.20.0 client (next_with_token / seek_to_token / resume_stream) across two workers sharing a --token-key.

Requires --add-opens=java.base/java.nio=ALL-UNNAMED at runtime (Apache Arrow). See the README for a quick start.

v0.8.0

03 Jun 02:05

Choose a tag to compare

First public release of vgi-rpc-java — the Java port of vgi-rpc, a transport-agnostic RPC framework built on Apache Arrow IPC.

Published to Maven Central under the farm.query group:

implementation("farm.query:vgirpc:0.8.0")        // core
implementation("farm.query:vgirpc-oauth:0.8.0")  // optional: JWT / OAuth / PKCE
implementation("farm.query:vgirpc-s3:0.8.0")     // optional: S3 external storage
implementation("farm.query:vgirpc-gcs:0.8.0")    // optional: GCS external storage

Highlights

  • Services defined as plain Java interfaces; Arrow schemas derived from signatures.
  • Unary and streaming (producer / exchange) methods.
  • Transports: stdio pipe, subprocess, Unix socket, shared memory (JDK 22+), HTTP.
  • Wire-compatible with the Python reference.
  • Java 21+ baseline (shared-memory side-channel auto-activates on JDK 22+).

See the README for a quick start. Requires --add-opens=java.base/java.nio=ALL-UNNAMED at runtime (Apache Arrow).