FEATURED OPEN SOURCE / SERIALIZER

One schema.
Many possibilities.

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.

Open source · GPL-3.0C++20 compilerCreated by Rohit Jairaj Singh
11Language outputs
4Native formats: JSON and three binary protocols
1 schemaA shared definition across your application

LANGUAGES THAT WORK TOGETHER

A shared contract.
Language-appropriate code.

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.

C++JavaJavaScriptTypeScriptGoC#RustPythonSwiftKotlinC

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.

Portable generated codecs

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

More than moving
bytes from A to B.

Readable schemas

Describe classes, enums, unions, collections, inheritance, and defaults. Share declarations with includes and keep related types in namespaces.

JSON and binary choices

Choose readable JSON, positional binary, integer-key binary, or string-key binary. Each format has a documented contract for field identity and encoding.

Schema evolution tools

Require explicit field IDs with stable_ids and compare schema revisions with the compatibility checker. Review identity, type, and ordering changes before deployment.

Bounded decoding

Use configurable resource limits and strict text validation. C++ helpers can decode one complete message into a fresh value and reject trailing input.

Mapped C++ views

Inspect compatible positional binary buffers through borrowed views, including nested objects and collections, with documented lifetime and mutation rules.

Editor support

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

A straightforward workflow.

  1. Define

    Describe the data model in a .serializer file, including field types and identities.

  2. Generate

    Choose the language outputs and integrate generation into your build.

  3. Exchange

    Select a compatible protocol and use the generated codecs in each application.

  4. Evolve

    Check schema compatibility, apply decode limits, and validate the actual consumer workflow.

OPTIONAL C++ CAPABILITIES

Extend the same data model.

Protobuf interoperability

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 support

Message compression

Optional 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 guide

Protocol 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

Put a schema
to work.

Explore the source, follow a runnable example, or bring an improvement to the project. Serializer is available under the GPL-3.0 license.