Back to browse
Fory C++ Serialization – Polymorphism, Circular Refs, 12x vs. Protobuf

Fory C++ Serialization – Polymorphism, Circular Refs, 12x vs. Protobuf

by chaokunyang·Feb 18, 2026·3 points·1 comment

AI Analysis

●●SolidWizardryNiche Gem
The Take

Fory pushes most serialization work into compile-time C++ via a FORY_STRUCT macro so deserialization is inlined and avoids runtime reflection — that alone is an impressive engineering move. Add first-class polymorphism over smart pointers, shared/circular reference tracking, and a single binary wire format across six languages, and you get a rare combo: expressive native C++ types plus cross-language compatibility. The main question is ecosystem adoption and whether the language runtimes and benchmarks hold up in messy real-world schemas.

Category
Target Audience

C++ systems/backend developers working in polyglot environments, infra engineers needing cross-language binary interchange

Post Description

Apache Fory's C++ serialization is our latest support for c++

Highlights:

1. Automatic idiomatic cross-language serializaton, no adapter layer, serialize in C++, deserialize in Python.

2. Polymorphism via smart pointers. Fory detects std::is_polymorphic<T> automatically. Serialize through a shared_ptr<Animal>, get a Dog* back — zero boilerplate.

3. Circular/shared reference tracking. Shared objects are serialized once and encoded as back-references. Cycles don't overflow the stack.

4. Schema evolution. Compatible mode matches fields by name/id, not position. Add fields on one side without coordinating deployments.

5. IDL compiler (optional). `foryc ecommerce.fdl --cpp_out ./gen` generates idiomatic code for every language from one schema. Supports union → std::variant, optional, ref → std::shared_ptr, weak refs, lists, maps.

6. Row format. O(1) random field access by index — useful for analytics workloads where you only read a few fields per record.

Throughput vs. Protobuf: up to 12x depending on workload.

GitHub: https://github.com/apache/fory

C++ docs: https://fory.apache.org/docs/guide/cpp

I’d really like critical feedback on API ergonomics, and production fit.

Similar Projects