Skip to content

v1.0.0 — first release

Choose a tag to compare

@gafferongames gafferongames released this 13 Aug 02:38
· 43 commits to main since this release

First tagged release. The library has been complete and tested for a while; this marks it as no longer a draft.

What it is

A C# port of the C++ serialize bitpacking library, producing bit-identical output to the C++, Go and Rust ports — a stream written in one language reads in any other.

Wire compatibility is proven rather than asserted: a golden wire test pins bytes copied verbatim from the C++ test suite, and a live interop harness cross-checks against the real serialize.h compiled with clang++.

Family values

  • Zero third-party dependencies, including test frameworks.
  • Malicious packet data never throws. Reads fail cleanly through a sticky latched error; exceptions are reserved for API misuse by the caller. You can write your packet loop without a catch block.
  • No unsafe code.
  • Zero allocation on the serialization paths (strings on the read path are the documented exception).

Unity

netstandard2.1 is a first-class target, pinned to C# 9, so anything Unity's compiler would refuse fails in CI rather than in the editor. The full API surface — including the 128-bit paths — is available on every target framework.

Licence

BSD 3-Clause, matching the other three ports.