First IDL for Object-Graph Serialization (Apache Fory IDL)
Treats object cycles and shared refs as schema contracts instead of manual ID stitching.

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.
C++ systems/backend developers working in polyglot environments, infra engineers needing cross-language binary interchange
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.
Treats object cycles and shared refs as schema contracts instead of manual ID stitching.
Finally handles circular refs and Maps where JSON and MessagePack both fail.
Broker-enforced Protobuf schemas shrink payloads 4x, runs in 2.6 MB with service discovery baked in.
Stores columnar data in regular Postgres tables so pg_dump and replication just work.
Bit-perfect Apple URL compression reverse engineered in Go and JavaScript.
Issues as Git commits, finally solving Linus's 2007 proposal after 17 years.