Repository navigation
Releases: flink-gcp/flink-datastream-protobuf
Release list
v1.0.0
Highlights
flink-datastream-protobuf 1.0.0 is the first release published to Maven Central, and it starts the stable API and forward-restore contract of the 1.x line.
- Artifact lines.
io.github.flink-gcp:flink-datastream-protobuf:1.0.0runs on Flink 2.2 and 2.3 with Java 17 or 21;1.0.0-1.20runs on Flink 1.20 LTS with Java 17. Stay on the line that matches your Flink runtime; Maven orders1.0.0-1.20after1.0.0, so configure Dependabot or Renovate as the compatibility guide shows. - API.
ProtobufTypeInformation.of(MyMessage.class)and its builder for generated proto3 messages,ProtobufTypeInfoFactoryregistered againstcom.google.protobuf.AbstractMessage, andProtobufTypeInformation.of(descriptor)forDynamicMessagevalues. The library has no Kryo or Chill fallback; setpipeline.generic-types: false. - Runtime. Each line is built with Protobuf 4.36.2 and runs unchanged with protobuf-java and generated code 4.x or 3.25.x.
- State. Message framing, the generated-message snapshot, and the DynamicMessage snapshot start at format version 1. Later 1.x releases restore state that 1.0.0 writes for unchanged schemas and the supported schema changes: field additions, reserved field removals, and enum value additions, with the same artifact line, Flink minor, and Protobuf runtime and generated code.
- Defaults and limits. The serializer settings, size and depth limits, and deterministic-writing behavior are described in the usage guide.
Upgrading from development builds
No upgrade path leads to 1.0.0. The 0.1.0, 0.2.0, and 0.3.0 milestones were unpublished development milestones, and 1.0.0 reads no state that they or development builds wrote; start jobs that used them from fresh state or replay their input, as the compatibility guide describes.
Verification
Both versions are signed with the release key 679AB13942F51CAF09F06E73608AC6CD5F89628E. The standalone application example passed against each published jar resolved from Maven Central on Flink 2.2.1, 2.3.0, and 1.20.5 with Protobuf 3 and 4. The attached v1.0.0-*.tar.gz bundles retain the snapshots and checkpoint/savepoint fixtures that the published jars wrote; README.md and FINAL-BASELINE.json describe them. The 1.0.0 serializer benchmarks report the release candidate's measurements.
What's Changed
- Pin and document the retained v0.3.0 baseline by @laughingman7743 in #152
- Measure DynamicMessage lanes in the serializer benchmarks by @laughingman7743 in #153
- Restart the 1.0.0 persisted formats at version 1 by @laughingman7743 in #157
- Report Flink and Protobuf pins that newer upstream releases overtake by @laughingman7743 in #155
- Use plain pytest functions in the scripts/tests suite by @laughingman7743 in #160
- Stage and inspect both release lines without uploading by @laughingman7743 in #156
- Publish both release lines from a tag after both validate by @laughingman7743 in #158
- Generate the API reference with the release Javadoc configuration by @laughingman7743 in #163
- Run the Release job in the ref-restricted release environment by @laughingman7743 in #164
- Update the Flink 1.20 LTS pin to 1.20.5 by @laughingman7743 in #161
- Name executed scripts with hyphens and move shared modules to scripts/lib by @laughingman7743 in #168
- Read Google's Central mirror first in the Release job by @laughingman7743 in #167
- Document the 1.x contract, artifact lines, and release steps by @laughingman7743 in #170
- Check that the baseline release readers match the BaselineTool runtimes by @laughingman7743 in #166
- Verify the standalone application against a published version by @laughingman7743 in #171
- Set the development version to 1.0.0-SNAPSHOT by @laughingman7743 in #173
- Capture and retain the bundles that published artifacts write by @laughingman7743 in #172
- Point the documentation at the published 1.0.0 coordinates by @laughingman7743 in #174
- Report the 1.0.0 release-candidate serializer benchmarks by @laughingman7743 in #179
- State what patch and minor releases may change by @laughingman7743 in #180
Full Changelog: v0.3.0...v1.0.0
v0.3.0 development baseline
This pre-release retains the final v0.3.0 development baseline for later milestone checks, including the 1.0.0 upgrade assessment.
No artifacts are published to Maven Central.
The attached library jars retain Maven version 0.3.0-SNAPSHOT; this is not a stabilized public release.
Source: 142862b9d86f449e3e4894715602a991a018fd63, annotated tag v0.3.0.
The integrated CI run of that commit passed all jobs, including aggregate CI passed, the retained v0.1.0 and v0.2.0 upgrade checks, and Pages deployment.
The milestone adds explicit-descriptor DynamicMessage support: ProtobufTypeInformation.of(Descriptor) and newBuilder(Descriptor), a separate DynamicMessage serializer snapshot, and the DynamicMessage guide with a compiled example. It builds each artifact line against Protobuf 4 and verifies one jar on Protobuf 3 and 4, checks the direct upgrades from the retained v0.1.0 and v0.2.0 baselines, and documents them in the upgrade guide.
Retained artifacts
| Asset | Compile floor | Protobuf runtime/protoc | Verified retained-input readers |
|---|---|---|---|
v0.3.0-flink2-pb3.tar.gz |
Flink 2.2.1 | 3.25.9 | Flink 2.2.1 and 2.3.0, JDK 17 and 21 |
v0.3.0-flink2-pb4.tar.gz |
Flink 2.2.1 | 4.36.2 | Flink 2.2.1 and 2.3.0, JDK 17 and 21 |
v0.3.0-flink1-pb3.tar.gz |
Flink 1.20.4 | 3.25.9 | Flink 1.20.4, JDK 17 |
v0.3.0-flink1-pb4.tar.gz |
Flink 1.20.4 | 4.36.2 | Flink 1.20.4, JDK 17 |
Each bundle (bundle format 3) retains the exact library, already-compiled consumers, the six runtime application jars and schemas, the DynamicMessage application jar, serializer snapshots, checkpoint/savepoint fixtures for HashMap and RocksDB, the source archive, resolved dependencies, commands, toolchain identities, logs, and a complete inner checksum inventory.
Besides the original-schema, evolved, and enum fixtures, each backend retains DynamicMessage state that an application without generated message classes wrote (dynamic), and each Flink version retains a DynamicMessage serializer snapshot fixture.
All four clean capture builds passed (387 tests for Flink 2.x and 389 for Flink 1.20).
With build outputs removed, all ten reader combinations passed, totaling 252 case executions with the retained compiled inputs.
Unsupported Flink-runtime and LTS/JDK-21 combinations were rejected with their expected messages before creating output.
The assets were assembled with just baseline-release (scripts/baseline_release.py at the tagged commit), which checked the bundles, tag, readers, controls, CI run, and the publication review before writing them.
The review covers every bundle file, nested archive member, and reader output; its 200 findings are public dependency literals and defaults, workflow keys, and synthetic test values, and its four flagged files are the tracked CI Maven settings in each source archive, which hold no server entry; each has a recorded disposition in the verification archive.
Download README.md for reproduction and follow-up instructions, FINAL-BASELINE.json for the final designation and results, INVENTORY.json for the per-file inventory, v0.3.0-verification.tar.gz for full verification records, and SHA256SUMS for asset integrity checks.
The capture tool's embedded milestone.final=false flags remain unchanged; the external final manifest selects these exact checksum-identified bundles as the milestone baseline.
Keep downloaded copies with their checksums and do not overwrite historical inputs.
The retained local bundles were captured on macOS/aarch64 using JDK 17, with JDK 21 reader validation for Flink 2.x.
They include platform-specific dependencies; execution on other platforms is not claimed for these exact bundles.
The separate integrated CI covers the repository's supported runtime matrix on its runner platform.
Saved-state verification keeps each Flink version and Protobuf profile fixed.
Cross-Flink or cross-Protobuf state upgrades, backend migration, rescaling, and universal development-version compatibility are outside this baseline.
Version 1.0.0 is planned to reject state that 0.x libraries wrote (#140).
Evidence retention: #146.
Milestone tracker: #20.
Previous baselines: v0.1.0 and v0.2.0.
v0.2.0 development baseline
This pre-release retains the final v0.2.0 development baseline for the 0.3.0 state and API compatibility work.
No artifacts are published to Maven Central.
The attached library jars retain Maven version 0.2.0-SNAPSHOT; this is not a stabilized public release.
Source: e697ee957000f3258ba4b6fd5940458514fada5c, annotated tag v0.2.0.
The integrated CI run of that commit passed all jobs, including aggregate CI passed, the retained v0.1.0 upgrade checks, and Pages deployment.
The milestone adds supported descriptor-based schema evolution (field additions, field removals that reserve the number, and enum value additions) and restores state that the retained v0.1.0 artifact wrote; it also restricts payload graphs to proto3, rejects unknown fields that the reader would parse into declared fields, enables large-payload aliasing by default, and adds the upgrade guide, the API compatibility gate, and serializer performance work with retained measurements.
Retained artifacts
| Asset | Compile floor | Protobuf runtime/protoc | Verified retained-input readers |
|---|---|---|---|
v0.2.0-flink2-pb3.tar.gz |
Flink 2.2.1 | 3.25.9 | Flink 2.2.1 and 2.3.0, JDK 17 and 21 |
v0.2.0-flink2-pb4.tar.gz |
Flink 2.2.1 | 4.33.6 | Flink 2.2.1 and 2.3.0, JDK 17 and 21 |
v0.2.0-flink1-pb3.tar.gz |
Flink 1.20.4 | 3.25.9 | Flink 1.20.4, JDK 17 |
v0.2.0-flink1-pb4.tar.gz |
Flink 1.20.4 | 4.33.6 | Flink 1.20.4, JDK 17 |
Each bundle (bundle format 2) retains the exact library, already-compiled consumers, the six runtime application jars and schemas, serializer snapshots, checkpoint/savepoint fixtures for HashMap and RocksDB, the source archive, resolved dependencies, commands, toolchain identities, logs, and a complete inner checksum inventory.
Besides the original-schema fixtures, each backend retains state that the changed schema wrote after restoring original-schema state (evolved) and state of an enum-bearing schema (enum), for the 0.3.0 direct and sequential upgrade checks.
All four clean capture builds passed (329 tests for Flink 2.x and 331 for Flink 1.20).
With build outputs removed, all ten reader combinations passed, totaling 202 case executions with the retained compiled inputs.
Unsupported Flink-runtime and LTS/JDK-21 combinations were rejected with their expected messages before creating output.
The assets were assembled with just baseline-release (scripts/baseline_release.py at the tagged commit), which checked the bundles, tag, readers, controls, CI run, and the publication review before writing them.
The review covers every bundle file, nested archive member, and reader output; its 200 findings are public dependency literals and defaults, workflow keys, and synthetic test values, each with a recorded disposition in the verification archive.
Download README.md for reproduction and follow-up instructions, FINAL-BASELINE.json for the final designation and results, INVENTORY.json for the per-file inventory, v0.2.0-verification.tar.gz for full verification records, and SHA256SUMS for asset integrity checks.
The capture tool's embedded milestone.final=false flags remain unchanged; the external final manifest selects these exact checksum-identified bundles as the milestone baseline.
Keep downloaded copies with their checksums and do not overwrite historical inputs.
The retained local bundles were captured on macOS/aarch64 using JDK 17, with JDK 21 reader validation for Flink 2.x.
They include platform-specific dependencies; execution on other platforms is not claimed for these exact bundles.
The separate integrated CI covers the repository's supported runtime matrix on its runner platform.
Saved-state verification keeps each Flink version and Protobuf profile fixed.
Cross-Flink or cross-Protobuf state upgrades, backend migration, rescaling, and universal development-version compatibility are outside this baseline.
APIs and state formats may change in later development milestones, with documented compatibility decisions.
Evidence retention: #63.
Milestone tracker: #14.
Previous baseline: v0.1.0.
v0.1.0 development baseline
This pre-release retains the final v0.1.0 development baseline for subsequent state and API compatibility work.
No artifacts are published to Maven Central.
The attached library jars retain Maven version 0.1.0-SNAPSHOT; this is not a stabilized public release.
Source: f5063f784bdf6799250c521c39a47701900133ea, annotated tag v0.1.0.
The integrated CI run passed all 24 jobs, including aggregate CI passed and Pages deployment.
The milestone implements native generated-message TypeInformation, TypeInfoFactory, TypeSerializer, and descriptor-backed TypeSerializerSnapshot integration; unchanged-schema checkpoint/savepoint recovery; common Google Well-Known Types and representative OpenTelemetry messages; compiled examples; the documentation site; and retained serializer benchmark evidence.
Retained artifacts
| Asset | Compile floor | Protobuf runtime/protoc | Verified retained-input readers |
|---|---|---|---|
v0.1.0-flink2-pb3.tar.gz |
Flink 2.2.1 | 3.25.9 | Flink 2.2.1 and 2.3.0, JDK 17 and 21 |
v0.1.0-flink2-pb4.tar.gz |
Flink 2.2.1 | 4.33.6 | Flink 2.2.1 and 2.3.0, JDK 17 and 21 |
v0.1.0-flink1-pb3.tar.gz |
Flink 1.20.4 | 3.25.9 | Flink 1.20.4, JDK 17 |
v0.1.0-flink1-pb4.tar.gz |
Flink 1.20.4 | 4.33.6 | Flink 1.20.4, JDK 17 |
Each bundle retains the exact library, already-compiled consumers, application jars, schemas, serializer snapshots, checkpoint/savepoint fixtures for HashMap and RocksDB, source archive, resolved dependencies, commands, toolchain identities, logs, and a complete inner checksum inventory.
All four clean capture builds passed.
With build outputs removed, all ten reader combinations passed, totaling 122 case executions with the retained compiled inputs.
Unsupported Flink-runtime and LTS/JDK-21 combinations were rejected.
Download README.md for reproduction and follow-up instructions, FINAL-BASELINE.json for the final designation and results, INVENTORY.json for the per-file inventory, v0.1.0-verification.tar.gz for full verification records, and SHA256SUMS for asset integrity checks.
The capture tool's embedded milestone.final=false flags remain unchanged; the external final manifest selects these exact checksum-identified bundles as the milestone baseline.
Keep downloaded copies with their checksums and do not overwrite historical inputs.
The retained local bundles were captured on macOS/aarch64 using JDK 17, with JDK 21 reader validation for Flink 2.x.
They include platform-specific dependencies; execution on other platforms is not claimed for these exact bundles.
The separate integrated CI covers the repository's supported runtime matrix on its runner platform.
Saved-state verification keeps each Flink version and Protobuf profile fixed.
Changed schemas, cross-Flink or cross-Protobuf state upgrades, backend migration, rescaling, and universal development-version compatibility are outside this baseline.
APIs and state formats may change in later development milestones, with documented compatibility decisions.
Evidence retention: #40.
Milestone tracker: #6.
Follow-up consumers: #16 and #17.