junjiexh opened a new pull request, #2607: URL: https://github.com/apache/fory/pull/2607
## Why? Type-forward and backward-compatible serialization are crucial for online services where different services update their data schemas and deploy at different times. This ensures that a service running an older schema can still communicate with a service using a newer one, and vice versa.This PR is part of the work of it. The previous PR is #2554 , and following pr are still work in process. ## What does this PR do? This PR implements a metashare mode for the fory-go. Specifically, it: Provides a user option to enable compatible mode. If compatible mode is enabled, the serialization process not only serializes the data but also its detailed type information into a binary format. The reading peer, if compatible mode is enabled, will first attempt to read this type information before deserializing the data. This allows it to handle data serialized with a different schema. This implementation is heavily inspired by the existing Java and Python implementations, ensuring consistency across framework. All progress and todos: - [x] metadata encoding and decoding - [x] Integrate into the main flow to enable metadata sharing - [ ] Add support for collection types (map, slice, set, etc.) - [ ] Add support for compressed type definitions - [ ] Test with python ## Related issues #2192 ## Does this PR introduce any user-facing change? <!-- If any user-facing interface changes, please [open an issue](https://github.com/apache/fory/issues/new/choose) describing the need to do so and update the document if necessary. Delete section if not applicable. --> - [x] Does this PR introduce any public API change? Yes. - [x] Does this PR introduce any binary protocol compatibility change? No. ## Benchmark <!-- When the PR has an impact on performance (if you don't know whether the PR will have an impact on performance, you can submit the PR first, and if it will have impact on performance, the code reviewer will explain it), be sure to attach a benchmark data here. Delete section if not applicable. --> -- 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]
