packages feed

wireform-proto-0.2.0.0: CHANGELOG.md

# Changelog for wireform-proto


## 0.2.0.0 -- 2026-07-16

Breaking release from 0.1.0.0.

* Rename generated well-known-type modules to match their canonical
  `google.protobuf` package paths (for example,
  `Proto.Google.Protobuf.Timestamp`).
* Replace the legacy public wire codec surface with `Proto.Encode` and
  `Proto.Decode`, and add collecting decode diagnostics in
  `Proto.Decode.Collect`.
* Add `Proto.JSONSchema`, a draft-2020-12 / OpenAPI 3.1 schema generator
  aligned with the proto3 JSON mapping.
* Update `loadProto`, code generation, well-known types, dynamic messages,
  extensions, text format, compatibility, and tests to the current
  wireform-derive and wireform-core APIs.

## 0.1.0.0 -- 2026

Initial release.

### Highlights

* `.proto` IDL parser (proto2 + proto3) with full reference resolution.
* Pure-text Haskell code generator (`Proto.CodeGen`) that emits records,
  enums, oneofs, maps, services, well-known type imports, and
  extension bindings -- plus a serialized `FileDescriptorProto` blob
  for each module.
* Annotation-driven Template Haskell deriver (`Proto.Derive`) that
  emits wire codecs (`MessageEncode` / `MessageDecode` / `MessageSize`),
  JSON instances, `Hashable`, `IsMessage`, and `ProtoMessage` schema
  metadata for hand-written Haskell records.
* `Proto.TH.loadProto` Template Haskell splice that runs the parser
  and the deriver together for an in-place `data` + instances bundle.
* Inline `[proto| ... |]` quasi-quoter for one-off types
  (`Proto.QQ`).
* `Proto.Setup` Cabal `Setup.hs` integration hook for pre-build
  protobuf code generation.
* `protoc-gen-wireform` `protoc` plugin (`--wireform_out=DIR`).
* Allocation-disciplined wire-format primitives: unboxed-sum decoder
  result (`Proto.Wire.Decode`), two-pass sized encoder
  (`Proto.SizedBuilder`, `Proto.Encode.Archetype`), pre-computed
  field tags, packed repeated field encode/decode, branchless varint
  sizing, lazy submessage decoding.
* Proto3 canonical JSON mapping (`Proto.JSON`) with `json_name`
  override, base64 bytes, string-encoded 64-bit integers, and
  NaN/Infinity sentinels.
* Proto → JSON Schema (draft 2020-12 / OpenAPI 3.1) walk
  (`Proto.JSONSchema`): the transport-agnostic half of schema-derived
  API doc generation. Emits `#/components/schemas` objects whose field
  names, 64-bit-int-as-string, base64 bytes, inlined well-known types,
  enum-as-string, map, and oneof shapes match the proto3-canonical-JSON
  codec byte-for-byte. Consumed by `wireform-connect`'s OpenAPI emitter.
* Well-known types (`Timestamp`, `Duration`, `Any`, `FieldMask`,
  `Struct`, `Value`, `ListValue`, `NullValue`, `Empty`, `Wrappers`,
  `SourceContext`) generated from the bundled `.proto` files by the
  `gen-wkt` executable.  Supplementary logic
  (`Proto.Google.Protobuf.*.Util`) ships `packAny`, RFC 3339
  formatting, `TypeRegistry`, `FieldMask` ops.
* Proto2 typed extensions (`Proto.Extension.HasExtensions`),
  unknown-field round-trip preservation, dynamic / untyped messages
  (`Proto.Dynamic`), `.pbtxt` text format I/O
  (`Proto.TextFormat`), and a runtime `MessageRegistry`
  (`Proto.Registry`).
* Streaming and incremental decoders
  (`Proto.Decode.Stream`, `Proto.Decode.Streaming`).
* gRPC service-method codegen (`Proto.GRPC`).  The wire framing
  lives in the `wireform-grpc` package.
* Conformance test driver (`Proto.Conformance`) that exposes the
  protocol expected by the upstream
  [`conformance_test_runner`](https://github.com/protocolbuffers/protobuf/tree/main/conformance).
  Today's baseline against `protocolbuffers/protobuf@v28.2`:
  2675 successes, 0 unexpected failures across proto3 + proto2,
  binary + JSON suites.