# alipay/fury

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/alipay-fury).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

4,412 stars · 424 forks · Java · Apache-2.0

## Links

- GitHub: https://github.com/alipay/fury
- Homepage: https://fory.apache.org
- awesome-repositories: https://awesome-repositories.com/repository/alipay-fury.md

## Description

Fury is a multi-language binary serialization framework designed for encoding domain objects and complex graphs to facilitate cross-language data exchange. It includes an interface definition language compiler that translates schema definitions into idiomatic native types and serialization boilerplate across multiple languages.

The project distinguishes itself through a zero-copy binary reader that allows specific fields to be accessed without deserializing the entire object, as well as an object graph serializer that preserves circular references and referential integrity. It also features a data converter that transforms row-based binary data into columnar Apache Arrow formats for analytical workloads.

The framework covers broad capability areas including metadata-driven schema evolution for forward and backward compatibility, a build-time AOT compilation process to eliminate runtime reflection, and secure deserialization via whitelist-based type validation. It further provides integration for high-performance remote procedure calls through gRPC.

## Tags

### Data & Databases

- [Binary Deserialization](https://awesome-repositories.com/f/data-databases/binary-data-accessors/binary-deserialization.md) — Reconstructs original typed objects from binary payloads using a shared schema to ensure type safety. ([source](https://fory.apache.org/docs/guide/cpp/))
- [Language-Neutral Data Serialization](https://awesome-repositories.com/f/data-databases/data-serialization-formats/binary-serialization-protocols/language-neutral-data-serialization.md) — Implements a portable binary wire format for encoding data structures independently of specific languages or architectures. ([source](https://cdn.jsdelivr.net/gh/alipay/fury@main/README.md))
- [Cross-Language Data Model Definitions](https://awesome-repositories.com/f/data-databases/cross-language-data-model-definitions.md) — Uses a schema IDL to generate native data structures across multiple languages to ensure a consistent data contract. ([source](https://cdn.jsdelivr.net/gh/alipay/fury@main/README.md))
- [Schema Definition](https://awesome-repositories.com/f/data-databases/data-governance-modeling/data-modeling-schemas/data-schemas/schema-definition.md) — Uses a language-neutral schema format to specify structured data types, unions, and services. ([source](https://fory.apache.org))
- [Schema-to-Native Type Mappings](https://awesome-repositories.com/f/data-databases/data-governance-modeling/data-modeling-schemas/schema-mapping/object-to-primitive-mapping/language-native-type-mappings/schema-to-native-type-mappings.md) — Maps native language types to stable, namespaced identifiers for consistent data exchange between services. ([source](https://fory.apache.org/docs/compiler))
- [Data Schema Definitions](https://awesome-repositories.com/f/data-databases/data-schema-definitions.md) — Provides declarative systems for defining data structures that ensure consistent layout across different programming languages. ([source](https://fory.apache.org/docs/compiler/))
- [Graph Serializers](https://awesome-repositories.com/f/data-databases/data-serialization-formats/data-formats/object-serializers/graph-serializers.md) — Provides a serialization engine that preserves circular references and referential integrity within complex object hierarchies.
- [Language-Specific Type Definitions](https://awesome-repositories.com/f/data-databases/data-type-definitions/schema-type-synchronization/type-safe-schema-definitions/language-specific-type-definitions.md) — Generates native programming language types based on schema definitions to ensure consistent field mappings. ([source](https://fory.apache.org/docs/guide/xlang/))
- [Schema Evolution](https://awesome-repositories.com/f/data-databases/data-type-schemas/schema-evolution.md) — Maintains forward and backward compatibility by evolving data structures without requiring destructive migrations.
- [Analytics-Optimized Row Formats](https://awesome-repositories.com/f/data-databases/database-schema-mapping/row-mapping-logic/row-record-access/tabular-row-storage/page-based-row-formats/analytics-optimized-row-formats.md) — Uses a row-oriented binary encoding optimized for high-throughput processing and zero-copy data access. ([source](https://fory.apache.org/docs/0.11/introduction/overview))
- [Random Field Accesses](https://awesome-repositories.com/f/data-databases/random-field-accesses.md) — Allows reading specific fields from binary records without performing full object deserialization.
- [IDL Model Generation](https://awesome-repositories.com/f/data-databases/schema-generators/idl-model-generation.md) — Produces compiler output for data models and schema modules based on an Interface Definition Language. ([source](https://fory.apache.org/docs/guide/kotlin/))
- [Zero-Copy Data Access](https://awesome-repositories.com/f/data-databases/zero-copy-data-access.md) — Implements zero-copy mechanisms to access serialized data structures directly from memory without full deserialization.
- [Zero-Copy Deserialization](https://awesome-repositories.com/f/data-databases/zero-copy-data-access-libraries/zero-copy-deserialization.md) — Ships a zero-copy binary reader that allows accessing specific fields without deserializing the entire object.
- [Apache Arrow Processing](https://awesome-repositories.com/f/data-databases/apache-arrow-processing.md) — Converts serialized row-based data into Apache Arrow columnar formats to enable high-performance analytical workloads. ([source](https://fory.apache.org/docs/guide/xlang/row_format))
- [Binary Encoding Specifications](https://awesome-repositories.com/f/data-databases/data-type-definitions/scalar-types/binary-encoding-specifications.md) — Assigns specific binary formats to scalar types using language-specific annotations and metadata. ([source](https://fory.apache.org/docs/specification/xlang_type_mapping))
- [Language-Specific Optimizations](https://awesome-repositories.com/f/data-databases/high-performance-binary-serialization/language-specific-optimizations.md) — Provides high-performance serialization alternatives for complex native types, including support for lambdas. ([source](https://fory.apache.org/docs/guide/python/))
- [Row-to-Columnar Conversions](https://awesome-repositories.com/f/data-databases/in-memory-data-stores/columnar-formats/row-to-columnar-conversions.md) — Transforms row-based binary data into Apache Arrow RecordBatch formats for high-performance analytical workloads.
- [Collection Serialization](https://awesome-repositories.com/f/data-databases/key-value-pair-managers/map-serialization/collection-serialization.md) — Encodes grouped data structures like lists and maps using size markers, type metadata, and reference tracking. ([source](https://fory.apache.org/docs/specification/java_serialization_spec))
- [Deep Object Manipulations](https://awesome-repositories.com/f/data-databases/object-property-accessors/deep-object-manipulations.md) — Provides utilities for performing recursive deep clones of complex object graphs while preserving referential integrity. ([source](https://fory.apache.org/docs/guide/java/))
- [Zero-Copy](https://awesome-repositories.com/f/data-databases/serialization-frameworks/zero-copy.md) — Utilizes zero-copy buffer paths for large binary payloads to eliminate unnecessary memory copying. ([source](https://fory.apache.org/docs/guide/xlang/))

### Networking & Communication

- [Cross-Language Serialization Frameworks](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/inter-process-communication/cross-language-serialization-frameworks.md) — Implements a high-performance multi-language binary serialization framework for encoding domain objects and complex graphs.
- [Metadata Deduplication](https://awesome-repositories.com/f/networking-communication/data-compression/json-field-compression/metadata-deduplication.md) — Deduplicates field names, type names, and namespaces within a session to reduce binary payload size. ([source](https://fory.apache.org/docs/specification/xlang_serialization_spec))
- [gRPC Implementations](https://awesome-repositories.com/f/networking-communication/grpc-implementations.md) — Provides a high-performance gRPC protocol implementation for remote procedure calls. ([source](https://fory.apache.org/docs/guide/kotlin/))

### Software Engineering & Architecture

- [Interface Definition Languages](https://awesome-repositories.com/f/software-engineering-architecture/interface-definition-languages.md) — Provides an IDL compiler to generate type-safe native models and serialization boilerplate across multiple languages.
- [Compact Binary Object Encoding](https://awesome-repositories.com/f/software-engineering-architecture/compact-binary-object-encoding.md) — Converts domain objects into a compact binary format using variable-length encoding to reduce payload size. ([source](https://fory.apache.org/docs/guide/java/))
- [Reference Tracking](https://awesome-repositories.com/f/software-engineering-architecture/dependency-resolution-engines/circular-reference-detection/reference-tracking.md) — Tracks object identities during serialization to preserve shared references and resolve circular dependencies.
- [Polymorphic Type Mapping](https://awesome-repositories.com/f/software-engineering-architecture/polymorphic-type-mapping.md) — Implements automatic type dispatching to preserve polymorphic object types across the binary wire format. ([source](https://fory.apache.org/docs/guide/python/))
- [Serialization](https://awesome-repositories.com/f/software-engineering-architecture/schema-based-type-systems/type-hierarchies/serialization.md) — Preserves inheritance hierarchies by including base class fields within derived types during binary serialization. ([source](https://fory.apache.org/docs/guide/cpp/))
- [Schema Definition Languages](https://awesome-repositories.com/f/software-engineering-architecture/schema-definition-languages.md) — Includes a compiler that translates schema definitions into native types and serialization boilerplate across multiple languages.
- [Serialization Performance Tuning](https://awesome-repositories.com/f/software-engineering-architecture/analysis-speed-optimizations/serialization-performance-tuning.md) — Increases throughput using JIT code generation, SIMD acceleration, and variable-length encoding. ([source](https://fory.apache.org/docs/guide/java/))
- [Singleton Identity Preservation](https://awesome-repositories.com/f/software-engineering-architecture/creational-design-patterns/singleton-patterns/singleton-identity-preservation.md) — Ensures that singleton objects maintain referential equality after being deserialized from a binary format. ([source](https://fory.apache.org/docs/guide/scala/))
- [Dynamic Type Serialization](https://awesome-repositories.com/f/software-engineering-architecture/dynamic-type-serialization.md) — Processes generic object payloads without requiring a predefined static type at compile time. ([source](https://fory.apache.org/docs/guide/csharp/))
- [Runtime-Specific Serialization Paths](https://awesome-repositories.com/f/software-engineering-architecture/language-performance-optimization/runtime-specific-serialization-paths.md) — Uses native serialization paths tailored for specific language runtimes to achieve faster processing. ([source](https://fory.apache.org/docs/guide/kotlin/))
- [Stream Metadata Deduplication](https://awesome-repositories.com/f/software-engineering-architecture/reflection-frameworks/static-reflection-caches/reflection-metadata-caches/type-metadata-caching/stream-metadata-deduplication.md) — Reduces redundant type information by writing class metadata once per stream and using local index references. ([source](https://fory.apache.org/docs/specification/java_serialization_spec))
- [Unknown Type Preservation](https://awesome-repositories.com/f/software-engineering-architecture/unknown-type-preservation.md) — Preserves data for classes that do not exist in the local runtime to allow lossless round-tripping of payloads. ([source](https://fory.apache.org/docs/specification/java_serialization_spec))

### Development Tools & Productivity

- [Native AOT Compilation](https://awesome-repositories.com/f/development-tools-productivity/native-compilation/native-aot-compilation.md) — Generates optimized serializer code at build time to eliminate runtime reflection and reduce memory usage. ([source](https://fory.apache.org/docs/guide/java/graalvm_support))
- [Field-Level Metadata Annotations](https://awesome-repositories.com/f/development-tools-productivity/attribute-metadata-annotations/field-level-metadata-annotations.md) — Attaches metadata to fields using annotations to provide encoding hints and reference tracking. ([source](https://fory.apache.org/docs/specification/xlang_type_mapping))

### Programming Languages & Runtimes

- [Serialization Code Generators](https://awesome-repositories.com/f/programming-languages-runtimes/ahead-of-time-compilation/serialization-code-generators.md) — Generates static serialization logic at build time to eliminate runtime reflection and improve performance.
- [Cross-Language Data Mapping](https://awesome-repositories.com/f/programming-languages-runtimes/cross-language-data-mapping.md) — Provides bidirectional transformation of complex data structures between different programming languages. ([source](https://cdn.jsdelivr.net/gh/alipay/fury@main/README.md))
- [Cross-Platform Language Bindings Generators](https://awesome-repositories.com/f/programming-languages-runtimes/cross-platform-language-bindings-generators.md) — Transforms schema definitions into type-safe native language bindings for multiple target platforms. ([source](https://fory.apache.org/docs/guide/kotlin/))
- [Object Serialization](https://awesome-repositories.com/f/programming-languages-runtimes/object-serialization.md) — Encodes complex object graphs with circular references and polymorphic types while maintaining structural integrity.
- [IDL Compilers](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-compilers/idl-compilers.md) — Translates interface definition language files into native source code for multiple target languages.
- [Serializer Registrations](https://awesome-repositories.com/f/programming-languages-runtimes/class-creation-customization/native-class-mappings/serializer-registrations.md) — Allows explicit mapping of classes to specialized serializer implementations for optimized or non-standard encoding. ([source](https://fory.apache.org/docs/guide/csharp/))
- [Class Registration Optimizations](https://awesome-repositories.com/f/programming-languages-runtimes/class-registration-optimizations.md) — Optimizes binary payload size by mapping classes to numeric identifiers with fallback options. ([source](https://fory.apache.org/docs/specification/java_serialization_spec))
- [Whitelisted Deserialization](https://awesome-repositories.com/f/programming-languages-runtimes/object-deserialization/whitelisted-deserialization.md) — Prevents security exploits by restricting object instantiation during deserialization to a registry of trusted types.
- [Message Type Registrations](https://awesome-repositories.com/f/programming-languages-runtimes/type-name-assignment/unique-type-identifiers/message-type-registrations.md) — Assigns unique identifiers to user-defined structures to enable precise identification during deserialization. ([source](https://fory.apache.org/docs/specification/xlang_type_mapping))

### Web Development

- [Multi-Language Model Generators](https://awesome-repositories.com/f/web-development/api-client-generators/multi-language-model-generators.md) — Produces type-safe data models and serializers for a variety of target programming languages from shared schemas. ([source](https://fory.apache.org/docs/compiler))

### Part of an Awesome List

- [Primitive Array Encoding](https://awesome-repositories.com/f/awesome-lists/data/serialization-and-encoding/array-serialization/primitive-array-encoding.md) — Writes dense numeric or boolean data as raw binary buffers to achieve high performance throughput. ([source](https://fory.apache.org/docs/specification/xlang_serialization_spec))
- [Serialization](https://awesome-repositories.com/f/awesome-lists/devtools/serialization.md) — Blazing fast JIT-powered zero-copy serialization framework.

### DevOps & Infrastructure

- [gRPC Service Generators](https://awesome-repositories.com/f/devops-infrastructure/cicd-pipeline-automation/core-build-engines/build-toolchains/compile-time-code-generators/grpc-service-generators.md) — Automatically generates gRPC service code and boilerplate from protocol definitions during the build process. ([source](https://fory.apache.org/docs/compiler))

### Operating Systems & Systems Programming

- [Out-of-Band Buffer Referencing](https://awesome-repositories.com/f/operating-systems-systems-programming/out-of-band-buffer-referencing.md) — Optimizes binary data transport by referencing external buffers instead of inlining large payloads.

### Security & Cryptography

- [Deserialization Security](https://awesome-repositories.com/f/security-cryptography/deserialization-security.md) — Controls class instantiation during decoding through explicit registration and configurable security policies. ([source](https://fory.apache.org/docs/guide/java/))
