Prutal is a pure Go alternative to protocol buffers, it covers most of the functionality offered by Protocol Buffers.
Prutal aims to minimize code generation as much as possible while ensuring serialization and maintaining good performance.
Since Prutal is NOT yet ready for production use, we are not providing usage documentation at this time, nor do we guarantee backward compatibility of the interface.
Feature Comparison
Features
Prutal
Protobuf
Supported Languages
Go
C++, Java, Python, Go, and more
Code Generation
✅
✅
Generated Code Size
😄 compact
😡 bulky
Serialization
✅
✅
Performance
⭐️⭐️⭐️⭐️⭐️
⭐️⭐️⭐️
Extensibility
😄 Package
😡 Plugin
Compatibility
✅ (see Protobuf Compatibility)
✅
gRPC
✅
✅
Non-Pointer Field
✅ (aka gogoproto.nullable)
❌
Protobuf Compatibility
✅ Works with code generated by the official Protocol Buffer Go
Core Message Operations
✅ Marshal / Unmarshal — binary wire format
✅ MarshalAppend — append-friendly encoding
✅ Size — compute wire size without marshaling (zero allocation)
✅ Reset
❌ Clone / Merge / Equal
❌ CheckInitialized — validate required field presence
Prutal
Prutal is a pure Go alternative to protocol buffers, it covers most of the functionality offered by Protocol Buffers.
Prutal aims to minimize code generation as much as possible while ensuring serialization and maintaining good performance.
Since Prutal is NOT yet ready for production use, we are not providing usage documentation at this time, nor do we guarantee backward compatibility of the interface.
Feature Comparison
Protobuf Compatibility
Core Message Operations
Proto Language Support
allow_alias)Encoding Formats
protojsonequivalentprototext)Reflection
protoreflect)protoregistry)dynamicpb)Extension Support
Code Generation (
prutalgen)google.golang.org/protobuf/types/known,Anyis limitedHow to use Prutal with gRPC
Use
pkg/grpccodecand passgrpccodec.PrutalCodecto the gRPC v1 codec APIs on both server and client.See
pkg/grpccodec/README.mdfor usage details andtests/cases/grpcfor a complete example.Contributing
Contributor guide: Contributing.
License
Prutal is licensed under the terms of the Apache license 2.0. See LICENSE for more information. Dependencies used by
prutalare listed under licenses.