Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 19 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,33 @@
# Fury

Fury is a general jit-based multi-language serialization framework with blazing fast performance and extreme usability:
Fury is a blazing fast general multi-language native serialization framework powered by jit and zero-copy:
- Support languages such as Java/Python/C++/Golang/NodeJS
- Cross-language serialize any object automatically. IDL definition, schema compilation ande convert object to intermediate protocol are unnecessary.
- Support shared reference and circular reference, there won't be any duplicate data or recursion error.
- Zero-copy support: out-of-band serialization protocol and off-heap read/write.
- A highly-extensible JIT framework to generate serializer code in runtime in an async multi-thread way to speed serialization: reduce virtual method invocation, conditional branching, hash lookup, and metadata writing, providing more than 30-200 times the performance of other serialization frameworks.
- a cache-friendly binary random access row storage format, supports skipping serialization and partial serialization, and can automatically convert with column-oriented storage.
- Cross-language serialize any object automatically, no need for IDL definition, schema compilation ande object protocol conversion.
- Support shared reference and circular reference, no duplicate data or recursion error.
- Zero-copy support: cross-lagnauge out-of-band serialization protocol inspired by [pickle5](https://peps.python.org/pep-0574/) and off-heap read/write.
- A highly-extensible JIT framework to generate serializer code in runtime in an async multi-thread way to speed serialization, providing more than 30-200 times the performance compared to other serialization frameworks:
- reduce memory access by inline variable in generated code.
- reduce virtual method invocation.
- reduce conditional branching.
- reduce hash lookup.
- a cache-friendly binary random access row storage format, supports skipping serialization and partial serialization, and can convert to column-format automatically.

In addition to cross-language capabilities, Fury also has the following abilities:
- It seamlessly replaces Java serialization frameworks such as JDK/Kryo/Hessian without modifying any code, providing more than 30 times the performance of Kryo, more than100 times the performance of Hessian, and more than200 times the performance of JDK built-in serialization. It can greatly improve the efficiency of high-performance scene RPC calls and object persistence.
- It supports shared and circular reference Golang serialization frameworks.
- It supports object automatic serialization Golang serialization frameworks.
- Drop-in replaces Java serialization frameworks such as JDK/Kryo/Hessian without modifying any code, providing more than 30 times the performance of Kryo, more than 100 times the performance of Hessian, and more than 200 times the performance of JDK built-in serialization. It can greatly improve the efficiency of high-performance RPC calls and object persistence.
- It supports shared and circular reference object serialization for golang.
- It supports automatic object serialization for golang.

## RoadMap
- AOT Framework for c++/golang/rust
- C++/Rust object serialization support
- Golang/Rust/NodeJS row format support
- ProtoBuffer compatibility support
- New protocols for feature and knowledge graph serialization
- Protocols for feature and knowledge graph serialization
- Serialization infrastructure for any new protocols
- JIT support
- Zero-copy
- Meta compression and sharing
- Memory primitives

## How to Contribute

Expand Down