Skip to content

Latest commit

 

History

History
55 lines (41 loc) · 2.27 KB

README.md

File metadata and controls

55 lines (41 loc) · 2.27 KB

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

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 🚧 Coming soon
Non-Pointer Field ✅ (aka gogoproto.nullable)

Protobuf Compatibility

  • ✅ Works with code generated by the official Protocol Buffer Go
  • ✅ Parsing .proto file. syntax: proto2, proto3, edition 2023
  • ✅ Protobuf wire format
    • double, float, bool, string, bytes
    • int32, int64, uint32, uint64, sint32, sint64
    • fixed32, fixed64, sfixed64, sfixed64
    • enum
    • repeated, map, oneof
  • ✅ Packed / unpack (proto2)
    • PACKED / EXPANDED (repeated field encoding, edition2023)
  • ✅ Reserved
  • ✅ Unknown Fields
  • ⚠️ JSON support: JSON struct tag only
  • ⚠️ Code generation: Go only
  • ⚠️ Protocol buffers well-known types link
  • ❌ Groups (proto2) link
  • ❌ Overriding default scalar values (proto2, edition2023) link

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 prutal are listed under licenses.