chaokunyang opened a new pull request, #3984:
URL: https://github.com/apache/fory/pull/3984
## Why?
PR #3982 established the signed-int32 field-tag protocol range. Follow-up
integration checks found a
small set of validation ownership, exact-schema coverage, and documentation
gaps that were not part
of the squash-merged boundary.
This PR completes those paths without changing the field-tag wire format
introduced by #3982.
## What does this PR do?
- Rejects duplicate Java native TypeDef tags across the complete inheritance
hierarchy.
- Validates Go field tags before public registration mutates resolver state
while continuing to
ignore unexported fields.
- Keeps Rust protocol metadata equality independent from local
compatible-reader dispatch state.
- Adds causal C++ remote-compatible and oversized-tag decoder coverage.
- Adds an exact-schema cross-language fixture for tags `15`, `65551`, and
`536870911` across all
supported peers, including normal concrete Java test discovery.
- Runs Kotlin's maximum tag through a real KSP-generated serializer,
descriptor, and round trip.
- Documents the exact field-tag range, uniqueness, stability, and extended
encoding rules in the
protocol, compiler, and runtime schema guides.
## Related issues
Follow-up to #3982.
## Does this PR introduce any user-facing change?
- [ ] Does this PR introduce any public API change?
- [ ] Does this PR introduce any binary protocol compatibility change?
Invalid duplicate or out-of-range field-tag schemas are now rejected
consistently at their owning
registration or metadata boundary. Existing valid schemas and wire bytes are
unchanged.
## Test
- Java native TypeDef, Go registration, C++ metadata, Rust metadata
equality, and Kotlin KSP/static
serializer tests passed.
- Exact-schema and compatible Java-driven field-tag cases passed against
C++, C#, Dart, Go,
JavaScript, Python, Rust, Scala, and Swift in both Java codegen modes.
- Dart IDL regeneration, compilation, and Java/Dart semantic round trips
passed.
- Java Spotless, Rust fmt/clippy, Go formatting, C++ formatting, Markdown
Prettier, and full diff
checks passed.
## Benchmark
The production changes in this follow-up are Java remote native-TypeDef miss
validation, Go
registration-time validation, and Rust `FieldInfo` equality. None is reached
by the steady-state
serialize/deserialize benchmark loops from #3982, so those paired results
remain the causal hot-path
evidence. Every measured runtime/path stayed below the `+1.0%` regression
ceiling; the largest
positive paired medians were C++ deserialize at `+0.858%` and Java static
serialize at `+0.779%`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]