spire-protobuf: Minimal Protocol Buffers for Haskell, no codegen
A fast, minimal protobuf library with zero-copy decoding and GHC
Generics integration. No code generation, no Template Haskell, no
external tools.
.
Define messages as Haskell records with Field wrappers for field
numbers, derive Generic and ProtoMessage, and get encode/decode
for free.
.
data User = User
{ name :: Field 1 Text
, age :: Field 2 Int32
, email :: Field 3 (Maybe Text)
} deriving (Generic, ProtoMessage)
.
Key design decisions:
.
* Single-pass decoding directly into target type (no intermediate Map)
* Zero-copy string/bytes fields (ByteString slices into input buffer)
* Length-memoizing Builder for correct submessage encoding
* GHC 9.10 -finline-generics eliminates Generic overhead
* 4 dependencies: base, bytestring, text, containers
Modules
[Index] [Quick Jump]
Downloads
- spire-protobuf-0.1.0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
| Versions [RSS] | 0.1.0.0, 0.1.0.1 |
|---|---|
| Change log | CHANGELOG.md |
| Dependencies | base (>=4.20 && <5), bytestring (>=0.11 && <0.13), containers (>=0.6 && <0.8), text (>=2.0 && <2.2) [details] |
| License | BSD-3-Clause |
| Author | Josh Burgess |
| Maintainer | Josh Burgess <joshburgess.webdev@gmail.com> |
| Uploaded | by joshburgess at 2026-04-29T03:07:11Z |
| Category | Data, Codec |
| Home page | https://github.com/joshburgess/acolyte |
| Bug tracker | https://github.com/joshburgess/acolyte/issues |
| Source repo | head: git clone https://github.com/joshburgess/acolyte.git |
| Distributions | |
| Reverse Dependencies | 1 direct, 1 indirect [details] |
| Downloads | 1 total (1 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating | |
| Status | Docs uploaded by user Build status unknown [no reports yet] |