Ultra-fast binary serialization library with code generation for C++, C#, Go, Java, JavaScript, Kotlin, Python, Ruby, and Swift.
Fast Binary Encoding is an ultra-fast serialization library that generates native code for multiple programming languages from a single domain model definition. It provides a compact binary format for efficient data exchange and includes built-in versioning to handle schema evolution without breaking compatibility.
Developers building high-performance, cross-platform applications that require efficient data serialization, such as financial trading systems, game engines, distributed systems, and communication protocols.
It offers significantly faster serialization speeds than alternatives like Protocol Buffers and FlatBuffers, supports seamless versioning for evolving protocols, and generates consistent, type-safe code across nine programming languages from a single schema.
Fast Binary Encoding is ultra fast and universal serialization solution for C++, C#, Go, Java, JavaScript, Kotlin, Python, Ruby, Swift
Generates native, type-safe code for nine programming languages from a single schema, ensuring cross-platform consistency and reducing implementation errors. The README provides sample projects for all supported languages.
Benchmarks show FBE outperforms Protocol Buffers and FlatBuffers, with C++ serialization as fast as 66 ns per message. The README includes detailed performance tables across languages.
Handles schema evolution seamlessly by allowing new fields to be added at the end of structs, maintaining backward and forward compatibility without breaking changes. The versioning section explains this with examples.
Provides JSON conversion for web API compatibility, though it relies on third-party libraries like RapidJSON for C++ and Gson for Java. This flexibility supports mixed binary and text-based workflows.
Includes generated interfaces for communication protocols with send and receive handlers, facilitating structured data exchange in networked applications. The README demonstrates this with a C++ example.
Requires installation of multiple tools (cmake, git, gil, python3) and language-specific libraries (e.g., fmt for C++, Json.NET for C#), increasing initial setup time and maintenance overhead.
JSON serialization depends on third-party libraries in most languages, such as RapidJSON for C++ and Gson for Java, which can introduce compatibility issues and bloat projects with additional dependencies.
For example, C++ emulates decimal types with double instead of using precise libraries like GMP, and JavaScript JSON serialization is limited to string keys for maps and hashes, restricting data modeling.
Involves using custom tools like the 'fbec' compiler and understanding the FBE schema language, which may be a barrier compared to more established serialization frameworks with broader documentation and community resources.
FastBinaryEncoding is an open-source alternative to the following products:
Protocol Buffers (protobuf) is a language-neutral, platform-neutral extensible mechanism for serializing structured data, developed by Google for efficient data interchange.
FlatBuffers is an efficient cross-platform serialization library developed by Google, enabling fast data access without parsing/unpacking, often used in game development and high-performance applications.
Cap'n Proto is a fast data interchange format and capability-based RPC system designed for high performance and low overhead.
Protocol Buffers - Google's data interchange format
FlatBuffers: Memory Efficient Serialization Library
Cap'n Proto serialization/RPC system - core tools and C++ library
Protocol Buffers with small code size
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.