chaokunyang opened a new issue, #2192: URL: https://github.com/apache/fury/issues/2192
### Feature Request 1) Background: Fury is a high-performance serialization library that supports cross-language binary protocols. Currently, Go-based applications are gradually increasing. Go language is widely used for its performance, while also facing serialization challenges that need to be compatible with different versions and type structures. For Go language serialization, ensuring forward and backward compatibility of types is crucial for long-term project evolution and multi-version support. (2) Existing Work: Currently, Fury has implemented efficient serialization and deserialization in languages such as Java/Python/NodeJS, but related work in Rust is still in its early stages, only supporting serialization and deserialization when object type schemas are strictly consistent. As projects expand and complexity grows, the serialization scheme needs to be more complete and efficient to support version evolution. (3) Existing Shortcomings: The current Fury Rust serialization mechanism does not fully support forward and backward compatibility of structural types. When types are updated, there is a lack of adaptation mechanisms to handle added or removed fields to ensure the stability and consistency of serialized data. At the same time, the efficient sharing mechanism of metadata has not yet formed best practices. (4) Desired Improvements: We hope to implement a type-compatible mechanism based on metadata sharing, enabling Fury Rust serialization to support dynamic type updates while ensuring compatibility between different versions. Through efficient metadata sharing methods, implement intelligent serialization handling for added, modified, and removed fields to reduce the development burden and operational risks brought by version changes. (5) Final Project Implementation Goals: The ultimate goal is to implement a serialization framework for Fury Rust that supports forward and backward compatibility of types. This framework will utilize the metadata sharing mechanism of the Fury binary serialization protocol. The implementation can reference Fury Java/NodeJS and other language implementations, ultimately automatically adapting to changes in type structures, ensuring that data between different versions can be correctly serialized and deserialized, and enhancing the breadth and depth of Fury's application in the Go ecosystem. ### Is your feature request related to a problem? Please describe _No response_ ### Describe the solution you'd like _No response_ ### Describe alternatives you've considered _No response_ ### Additional context _No response_ -- 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]
