You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(go): Implement compatible mode with metashare mode (#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.
-->
0 commit comments