Skip to content

Format catalogue

wireform currently ships 34 packages covering serialization, codegen, streaming, DOM processing, messaging, and analytics. This page lists every format with its capabilities and the modules to reach for.

These formats define types in a schema language and generate Haskell code.

FormatPackageCodegenRPC / Framing
Protocol Bufferswireform-protoloadProto TH / wireform-gen proto / protoc pluginProto.GRPC framing; full gRPC via wireform-grpc
Avrowireform-avrowireform-gen avroAvro IPC (Avro.Protocol), container files (Avro.Container)
Thriftwireform-thriftwireform-gen thriftBinary + Compact protocol (Thrift.Message)
Bondwireform-bondwireform-gen bondnone
Cap’n Protowireform-capnprotowireform-gen capnpnone
FlatBufferswireform-flatbufferswireform-gen fbsnone
ASN.1wireform-asn1wireform-gen asn1none

Schema-less formats with Generic deriving. Each package exposes a Value ADT for dynamic messages.

FormatPackageClass moduleExtras
MessagePackwireform-msgpackMsgPack.ClassStreaming (MsgPack.Stream), RPC (MsgPack.RPC), JSON bridge
CBORwireform-cborCBOR.ClassStreaming (CBOR.Stream), CDDL schema + codegen, diagnostics, JSON bridge
BSONwireform-bsonBSON.ClassMongoDB wire format
Ionwireform-ionIon.ClassISL schema + codegen
EDNwireform-ednEDN.ClassClojure/Datomic format
Bencodewireform-bencodeBencode.ClassBitTorrent serialization
Forywireform-forynoneApache Fory xlang format (interop-tested against pyfory)
FormatPackageClass moduleExtras
XMLwireform-xmlXML.ClassSAX (XML.SAX), zero-copy DOM (XML.FastDOM), XPath (XML.Path), XSLT 1.0 (XML.XSLT), XSD codegen, concurrent parsing (XML.Incremental)
HTML5wireform-htmlHTML.ClassSpec-compliant tree builder, CSS selectors (HTML.Selector), streaming rewriter (HTML.Rewriter)
YAMLwireform-yamlYAML.ClassYAML 1.2, 100% yaml-test-suite conformance, annotated AST, JSON bridge
TOMLwireform-tomlTOML.ClassTOML 1.0/1.1, toml-test conformant
CSVwireform-csvCSV.ClassCSV / TSV / pipe-separated
NDJSONwireform-ndjsonNDJSON.ClassNewline-delimited JSON, incremental decoder
FormatPackageReaderWriterExtras
Parquetwireform-parquetFullFullAll encodings, snappy/zstd/lz4/brotli compression, bloom filters, page index, encryption, predicate pushdown, Arrow bridge
Arrow IPCwireform-arrowFullFullSchema framing, record batch materialization, zstd/lz4 compression
ORCwireform-orcFullPartialInteger RLE v1/v2, snappy/zstd/lz4 compression, predicate evaluator
Icebergwireform-icebergFullnoneSchema evolution, partition transforms, deletion vectors, Puffin statistics, catalog clients (REST, Glue, Hadoop, SQL)
Delta Lakewireform-deltaPartialnoneTransaction log, checkpoints, time travel
Hudiwireform-hudiPartialnoneTimeline reader, copy-on-write
Lancewireform-lancePartialnoneData files, manifests, dataset versions
ProtocolPackageCapabilities
gRPCwireform-grpcClient/server, unary + streaming (server, client, bidi), HTTP/2, TLS
Kafkawireform-kafkaProducer, consumer, exactly-once transactions, Kafka Streams DSL (KStream, KTable, windowed aggregations, joins), SASL auth (PLAIN, SCRAM, OAUTHBEARER, MSK IAM), snappy/zstd/lz4/gzip compression, OpenTelemetry instrumentation

These packages are used internally by the format packages. You generally don’t import them directly, but they’re good to know about.

PackageWhat it does
wireform-coreFFI/SIMD primitives shared across formats: packed varint decode, UTF-8 validation, byte/whitespace/JSON scanning
wireform-deriveAnnotation vocabulary for Generic deriving. One set of annotations (rename, tag, skip, defaults, flatten, etc.) works across all 25+ backends.
wireform-columnarShared columnar primitives: pull-based iterators, predicate pushdown, mmap-aware file loading, SIMD bit-unpacking

Several packages are tested against upstream conformance suites:

PackageSuiteStatus
wireform-protoOfficial protobuf conformance2,675 / 2,675 passing
wireform-htmlhtml5lib tree builder tests1,779 / 1,779 passing
wireform-yamlyaml-test-suite100% passing
wireform-tomltoml-testPassing
wireform-forypyfory interop45 / 45 passing
wireform-parquetpyarrow / DuckDB interopPassing
wireform-icebergpyiceberg / fastavro interopPassing