Roadmap
The live status of each milestone. The milestones and their exit criteria come from design.md ยง11; the GitHub milestones and issues are the source of truth for open work. Last updated 2026-09-29, for 0.2.0.
| Milestone | Status | Open work |
|---|---|---|
| M0: skeleton and CI | Done | The packages are published to nuget.org from the maintainer's account, since 0.1.1. |
| M1: schemas | Done | |
| M2: binary encoding and the generic model | Done | |
M2.5: code generation from .avsc files |
Done | Union classes (#14), required/init (#15), cyclic cross-file references (#16), options (#18), JSON for generated types (#19), random-schema tests (#141) |
| M3: schema resolution | Done | |
M4: attribute generator and AvroSerializer<T> |
Not started | #31 |
| M5: container files, codecs, single-object encoding | Done | |
| M6: CLI tool and protocols | Started | The avrosharp tool (gen, schema canonical, schema fingerprint) ships in 0.2.0; protocols are open (#33) |
| M7: hardening and 1.0 | Started | #35: API review (#73), docs site and samples (#74, #126), public API before 1.0 (#134), CI consuming the packages (#136), dev container (#139). Done: package metadata (#66), coverage (#75), release workflows (#76), nightly fuzzing (#34) |
| Integrations | Started | #77: Confluent (#79). Done: schema references (#80), registry wire framing (#81) and the field walker (#82). Remaining core work: the typed serializer lookup (#31) |
Done, in more detail
- Schemas: parsing (System.Text.Json), writing, Parsing Canonical Form, CRC-64-AVRO/MD5/SHA-256 fingerprints, all Avro 1.12 logical types. Checked against Apache's
schema-tests.txt. - Encoding:
AvroWriter/AvroReaderover spans,IBufferWriter<byte>andReadOnlySequence<byte>. The generic model (AvroValue,GenericRecord) is binary and JSON, with schema resolution. - Code generation: records, enums and fixed types with direct serializers, the Apache.Avro compatibility mode, logical types, and resolution for generated types, from the source generator or the
avrosharptool. - Files and messages:
- schema-registry wire framing (Confluent, Apicurio, AWS Glue) and schema references;
- container files, sync and async, with seeking and splitting;
- every codec:
nullanddeflatebuilt in, and snappy, zstandard, bzip2 and xz inAvroSharp.Codecs; - single-object encoding;
- streams of objects without a container (
AvroSharp.Streams).
- Verification:
- property tests against Apache.Avro C#;
- files written by Apache Avro Java for every codec;
- fuzz targets, run as a smoke test on every build;
- a Native AOT smoke test.
- Hardening (0.2.0): bounded nesting and memory for hostile schemas and data (#129), resolution that follows Java where the specification leaves a choice (#130), code generation fixes from a review with random names and defaults (#131), and ordered assertions, coverage checks, and Java- and Glue-written reference data in the tests (#133).
See CHANGELOG.md for the details of each change.