prototools

A collection of two complementary protobuf tools:


prototext

Lossless, bidirectional converter between binary protobuf wire format and human-readable text.

User documentation

Design documentation

Specs

SpecTitleStatus
0003prototext CLI designimplemented
0004Enum annotation syntax and #@ delimiterimplemented
0006Fixture coverage model and gap-filling fixturesimplemented
0007String and bytes field encoding policyimplemented
0008NaN encoding for float and double fieldsimplemented
0009Protocraft port and end-to-end test suiteimplemented
0010protoc --decode compatibility for canonical wire inputimplemented
0011Replace hand-rolled schema with prost-reflectimplemented
0012Extension field renderingimplemented
0013Protocraft schema-aware builderimplemented
0014PyO3 Python extension (prototext-pyo3)draft

reproto

Reconstructs .proto source files from compiled protobuf descriptor sets (.pb files produced by protoc --descriptor_set_out).

User documentation

Specs

Core design

SpecTitleStatus
0021Variant bundle layout and uniform resource loadingimplemented
0024Rendering anomaly taxonomy and reportingdraft

Proto3 polyglot

SpecTitleStatus
0019Field labels, synthetic oneofs, default values, json_name, import weak, extensionsimplemented
0020Proto3 inconsistency guards (required, groups, message_set_wire_format)implemented
0023Allow extend *Options blocks (custom options)implemented

Editions rendering

SpecTitleStatus
0025Editions rendering strategy — why it is harder than proto3
0026Editions feature resolution engineimplemented
0029Editions rendering: complete edition outputimplemented
0030Editions roundtrip testsimplemented

Build system

SpecTitleStatus
0038default.nix: unify and deduplicate the build definitionimplemented