chaokunyang opened a new pull request, #3982:
URL: https://github.com/apache/fory/pull/3982
## Why?
Draft: contributor-authored purpose, design rationale, and tradeoff
discussion will be added before
this pull request is marked ready for maintainer review.
## What does this PR do?
- Defines the cross-language field-tag domain as `0 <= tag_id < 2^29`.
- Uses signed 32-bit field-tag carriers across all supported runtimes while
retaining `-1` only as
the internal no-tag sentinel.
- Corrects and documents the compact/extended tag encoding, including the
independent long-field-name
extension rule.
- Adds owner-local range and duplicate validation in annotations, code
generators, metadata codecs,
and the Fory compiler.
- Keeps wire field identity separate from compatible-reader local dispatch
identity.
- Adds cross-language coverage for tag IDs `15`, `65551`, and `536870911`.
## Related issues
None.
## AI Contribution Checklist
- [x] Substantial AI assistance was used in this PR: `yes`
- [ ] If `yes`, I included a completed [AI Contribution
Checklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)
in this PR description and the required `AI Usage Disclosure`.
- [ ] If `yes`, my PR description includes the required `ai_review` summary
and screenshot evidence or equivalent persisted links of the final clean AI
review results from both fresh reviewers described in `AI_POLICY.md`, the
Fory-guided reviewer and the independent general reviewer, on the current PR
diff or current HEAD after the latest code changes.
Draft checklist status:
- [x] Substantial AI assistance was used in this PR: `yes`
- [x] The standardized `AI Usage Disclosure` block is included below.
- [ ] The contributor confirms they can explain and defend all important
changes without AI help.
- [ ] The contributor confirms line-by-line review of all AI-assisted
changes.
- [x] The agent-side preflight review/fix loop completed before the first
independent review.
- [ ] Two fresh final AI reviewers have reported no further actionable
comments on the current HEAD.
- [ ] Final persisted review artifacts for both fresh reviewers are linked
below.
- [ ] The contributor confirms they personally reviewed the recorded
verification results.
- [x] Tests and specifications required by the protocol change were added or
updated.
- [x] Protocol compatibility and performance were validated with recorded
evidence.
- [ ] The contributor confirms provenance and Apache-2.0-compatible
licensing.
AI Usage Disclosure
- substantial_ai_assistance: yes
- scope: design reconstruction, cross-runtime code changes, tests,
specifications, review fixes, and
performance investigation
- affected_files_or_subsystems: Fory compiler and Java, C++, Rust, Go,
Python, JavaScript, C#, Dart,
Kotlin, Scala, and Swift xlang field metadata
- ai_review: agent preflight and the first reviewer fix loop completed; the
required fresh final
Fory-guided and independent-general reviews are in progress, so this draft
is not ready for
maintainer review
- ai_review_artifacts: pending final clean reviewer results
- human_verification: comprehensive local checks were run by the coding
agent and recorded; contributor
confirmation is pending before ready-for-review status
- performance_verification: every changed runtime surface passed the `+1.0%`
paired-median ceiling;
raw results are retained locally
- provenance_license_confirmation: pending contributor confirmation; no
third-party source was
intentionally introduced
## Does this PR introduce any user-facing change?
- [x] Does this PR introduce any public API change?
- [x] Does this PR introduce any binary protocol compatibility change?
Field tags now accept the complete range from `0` through `536870911`.
Existing valid field tags and
their wire bytes remain unchanged; the new range permits larger identifiers
through the existing
extended encoding.
## Benchmark
Paired latency deltas below compare this branch with frozen `apache/main` at
`26b6b6cefca63aaab0195523ce817d8b3da2845b`. Negative values are improvements.
| Runtime/path | Serialize | Deserialize |
| --- | ---: | ---: |
| C++ | +0.070% | +0.858% |
| Java runtime codegen | -0.014% | -2.383% |
| Java static generated | +0.779% | -0.457% |
| Rust | -3.740% | -0.281% |
| Go | -0.424% | +0.504% |
| Python Cython | -2.151% | +0.184% |
| Python pure | -1.185% | -1.648% |
| JavaScript | -0.416% | -0.075% |
| C# final review-fix boundary | -0.813% | -1.094% |
| Dart | -0.365% | +0.351% |
| Swift | -3.315% | +0.255% |
Kotlin and Scala changes are compile-time validation changes and use the
measured Java
static-generated runtime path. All reported paired medians are below the
`+1.0%` regression ceiling.
--
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]