fury icon indicating copy to clipboard operation
fury copied to clipboard

[OSPP][Go] Implement ahead of time codegen for fury go serialization

Open chaokunyang opened this issue 7 months ago • 0 comments

Feature Request

The current Fury Go uses reflection to implement serialization and deserialization of structs, but reflection has performance limitations. In languages like Java, Fury accelerates execution performance by dynamically generating code at runtime.

However, in Golang, generating code at runtime requires generating assembly code, which involves high complexity in development and maintenance. In the industry, the primary approach is to generate code ahead of time during compilation, typically using tools like go generate to produce code, as in libraries like ffjson for JSON processing.

This project aims to implement similar code generation capabilities for Fury's binary serialization protocol. By parsing structs at compile time and targeting Fury's cross-language binary protocol, the goal is to generate corresponding serialization and deserialization code to enhance the execution efficiency of the entire serialization process.

Is your feature request related to a problem? Please describe

No response

Describe the solution you'd like

Implement metadata parsers for Struct/List/Map. Implement code generators for Struct/List/Map. Extend the serializer Dispatcher to support dispatching to the generated serializers

More details can be found in static codegen for compatible mode in spec https://fury.apache.org/docs/specification/fury_xlang_serialization_spec#fast-deserialization-for-static-languages-without-runtime-codegen-support

Describe alternatives you've considered

No response

Additional context

No response

chaokunyang avatar May 13 '25 11:05 chaokunyang