title: Overview sidebar_position: 1 id: index license: | Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Apache Fory™ is a blazingly-fast multi-language serialization framework for idiomatic domain objects, schema IDL, and cross-language data exchange.
Fory is built for compact, high-throughput serialization across languages and execution platforms. It works directly with application objects, supports shared schemas when you need a stable contract, and preserves object graph features such as shared references, circular references, and concrete types for polymorphic values.
Cross-language serialization — serialize in Rust, deserialize in Python:
Rust
use fory::{Fory, ForyObject}; #[derive(ForyObject, Debug, PartialEq)] struct User { name: String, age: i32, } fn main() { let mut fory = Fory::default().xlang(true); fory.register::<User>(1); let user = User { name: "Alice".to_string(), age: 30 }; let bytes = fory.serialize(&user).unwrap(); let decoded: User = fory.deserialize(&bytes).unwrap(); println!("{:?}", decoded); // User { name: "Alice", age: 30 } }
Python
import pyfory from dataclasses import dataclass @dataclass class User: name: str age: pyfory.int32 fory = pyfory.Fory(xlang=True) fory.register(User, type_id=1) user = User(name="Alice", age=30) data = fory.serialize(user) decoded = fory.deserialize(data) print(decoded) # User(name='Alice', age=30)
The xlang serialization format exchanges compact binary payloads across supported languages:
Fory serializes native domain objects directly instead of forcing applications through wrapper types:
Fory IDL and the compiler let teams define schemas once and generate native domain objects for each target language:
A cache-friendly row format is optimized for analytics and partial-read workloads:
Fory keeps hot paths fast without making every Fory implementation use the same strategy: