Built for native integration
The compiler and generators are written in C++. CMake helpers connect schema generation to your build, while C++20 stream concepts support standard streams and custom implementations.
Rohit Jairaj Singh
FEATURED OPEN SOURCE / SERIALIZER
Define your data once. Generate codecs for the languages your system uses. Serializer brings a C++20 compiler, explicit wire formats, and practical integration tools to the same workflow.
LANGUAGES THAT WORK TOGETHER
Keep the shape of your data in a readable schema and generate the code that encodes and decodes it. Output profiles adapt layouts and naming conventions to the target language.
The compiler and generators are written in C++. CMake helpers connect schema generation to your build, while C++20 stream concepts support standard streams and custom implementations.
Generated codecs for other languages do not depend on a native C++ runtime. Share data definitions across native services, browser code, scripts, and application clients.
THE TOOLKIT
Describe classes, enums, unions, collections, inheritance, and defaults. Share declarations with includes and keep related types in namespaces.
Choose readable JSON, positional binary, integer-key binary, or string-key binary. Each format has a documented contract for field identity and encoding.
Require explicit field IDs with stable_ids and compare schema revisions with the compatibility checker. Review identity, type, and ordering changes before deployment.
Use configurable resource limits and strict text validation. C++ helpers can decode one complete message into a fresh value and reject trailing input.
Inspect compatible positional binary buffers through borrowed views, including nested objects and collections, with documented lifetime and mutation rules.
VS Code and Visual Studio extensions add schema highlighting and navigation between schemas and generated code. Extension packages can be built from the repository.
FROM SCHEMA TO APPLICATION
Describe the data model in a .serializer file, including field types and identities.
Choose the language outputs and integrate generation into your build.
Select a compatible protocol and use the generated codecs in each application.
Check schema compatibility, apply decode limits, and validate the actual consumer workflow.
OPTIONAL C++ CAPABILITIES
Opt-in C++ codecs support encoding and decoding with Protobuf binary, ProtoJSON, and TextProto. Documented schema mappings and limitations make the supported behavior explicit.
Protobuf supportOptional backends add Zstandard, LZ4, gzip, zlib, and raw DEFLATE. Separate input, output, and window limits bound complete-frame processing; custom backends can extend the set.
Compression guideProtocol choice matters. Positional binary requires matching field order and types. Native keyed readers reject unknown fields, so explicit IDs alone do not guarantee backward compatibility. See the wire-format contract for the exact rules.
SOURCE, EXAMPLES & DOCUMENTATION
Explore the source, follow a runnable example, or bring an improvement to the project. Serializer is available under the GPL-3.0 license.