packages feed

proto3-suite-0.9.4: CHANGELOG.md

# 0.9.4
* [#289](https://github.com/awakesecurity/proto3-suite/pull/289) Support optional fields
  * Support optional fields (outside of a `oneof`).  Such fields are allowed
    by newer versions of the proto3 specification (and even recommended by it).
  * Correctly prohibit `map` and `repeated` fields within a `oneof`
    (and continue to prohibit `optional` fields within a `oneof`).
  * [BREAKING CHANGE in experimental module: When encoding a `oneof` field, the `field`
     method now expects `Maybe a` or `Identity a` where it used to expect plain `a`.
     Similarly, any instantiation of `FieldForm` for `Singular Alternative` should be
     changed to specify `Optional` instead, and must wrap the argument type in `Identity`.
     The type-level descriptions of cardinality have been reorganized to better reflect
     standard terminology and encoding: `...Repetition...` -> `...Cardinality...`,
     `Singular Implicit` -> `Implicit`, `Singular Alternative` -> `Optional`.
     The `Omission` type is no longer needed and has been removed.]
  * When using `field` to encode an `optional` or `oneof` field that in practice
    is always present, you may now replace the `Just` data constructor with
    the `Identity` newtype constructor in order to express that fact.  When
    extending `FieldForm` at type `Optional`, define the instance for `Identity`
    because the general `Maybe` instance delegates to `Identity` in the `Just` case.

# 0.9.3
* [#284](https://github.com/awakesecurity/proto3-suite/pull/284) Delete Repeated.hs
  * [BREAKING CHANGE in experimental module: Rename `Prefix` to `FieldsEncoder`, along with related functions.]
  * [BREAKING CHANGE in experimental module: Rename `Fields` to `FieldsEncoding`, along with related functions.]
  * Add instances of `FromJSON`, `FromJSONPB`, `ToJSON`, `ToJSONPB`
    for `MessageEncoding` and `MessageEncoder`.
* [#290](https://github.com/awakesecurity/proto3-suite/pull/290)
  * Support tasty-1.5
  * Drop support for GHC 9.2
* [#291](https://github.com/awakesecurity/proto3-suite/pull/291) Optimize isDefault instances

# 0.9.2
* [#282](https://github.com/awakesecurity/proto3-suite/pull/282) Show MessageEncoder
  * [BREAKING CHANGE in experimental module: Rename `toLazyByteString` to `messageEncoderToLazyByteString`.]
  * [BREAKING CHANGE in experimental module: Rename `cacheMessage` to `messageCache`.]
  * [BREAKING CHANGE in experimental module: Delete `Eq` instance for `MessageEncoding` because it is application-defined whether we should ignore field order during comparison.]
  * Add `Show` instance for `MessageEncoder`.
  * Add `messageEncoderToByteString` and `unsafeByteStringToMessageEncoder`.
* [#283](https://github.com/awakesecurity/proto3-suite/pull/283) Delete Repeated.hs
  * Delete unused experimental source file `src/Proto3/Suite/Form/Encode/Repeated.hs`;
    proto3-wire provides the relevant functionality in `Proto3.Wire.Encode.Repeated`.

# 0.9.1
* [#275](https://github.com/awakesecurity/proto3-suite/pull/275) the `canonicalize-proto-file` executable no longer depends on the [`range-set-list](https://github.com/phadej/range-set-list#readme) package for normalizing reserved field ranges.
* Relocated orphaned [`Pretty`](https://hackage.haskell.org/package/pretty-1.1.3.6/docs/Text-PrettyPrint-HughesPJClass.html#t:Pretty) instances for AST types to [`Proto3.Suite.DotProto.AST`].

# 0.9.0
* [#272](https://github.com/awakesecurity/proto3-suite/pull/272) removed support for `large-records` and `large-generics`.
* [#274](https://github.com/awakesecurity/proto3-suite/pull/274) Support aeson-2.2.
* [#276](https://github.com/awakesecurity/proto3-suite/pull/276)
  * Switch dependency from `ghc` to `ghc-lib-parser`
  * Drop support for GHC 9.0.

# 0.8.3
* Fix overlong encoding of packed "sint32" fields containing elements in
  [-0x80000000, -0x40000001] or [0x40000000, 0x7FFFFFFF], which increased
  message size and hindered forward compatibility of "sint32" with "sint64".
* Add "--stringType" as a preferred spelling of "--string-type"
  because its style matches that of other options.
* Add compiler error "RedefinedFields".
* Export codeFromEnumerated and codeToEnumerated.
* Add an experimental feature to encode without using
  intermediate data structures; see Proto3.Suite.Form and
  the new compile-proto-file option --typeLevelFormat

# 0.8.2
* Support GHC 9.10.
* Test with nixpkgs-24.11.

# 0.8.1
* Fix support for dhall-1.42.
* Support dhall on GHC 9.8.
* Fix aeson upper bound in library target (was correct in test target).
* Fix default compiler version in shell.nix.
* Test with GHC 9.8.2 instead of GHC 9.8.1 and GHC 9.6.5 instead of GHC 9.6.2.
* Test with nixpkgs-24.05 but always using aeson-2.1.2.1.

# 0.8.0
* [BREAKING CHANGE: Use "ghc" library in place of "haskell-src".]
  The "ghc" library is now used to parse and print Haskell source code.
  Switching to "ghc" adds support for language features beyond Haskell 98
  and should improve diagnostic messages for sources specified with
  "--extraInstanceFile".  Breakage should be limited to users of:
  * Proto3.Suite.DotProto.Generate
  * Proto3.Suite.DotProto.Generate.LargeRecord
  * Proto3.Suite.DotProto.Generate.Syntax
* Drop support for GHC 8.10.
* On Darwin, drop support for GHC 9.0.
* Add support for GHC 9.6 (without large-records).
* Add support for GHC 9.8 (without large-records, dhall).

# 0.7.0
* Support GHC 9.2, 9.4.
* Support proto files without a package declaration.
* Modify "Eq (Enumerated a)" to identify "Enumerated (Right e)"
  with "Enumerated (Left (fromProtoEnum e))" because those two
  values encode to the same octet sequence.  They are already
  equivalent as arguments to "isDefault @(Enumerated e)".
* Derive Data and Generic instances for Protobuf AST types.

# 0.6.0
* Support use of ShortText as the Haskell type of a protobuf string.
* Replace OverrideToSchema with String and Bytes in order to clarify which
  instances of various type classes are selected, expecially ToSchema.
* To disambiguate "String" in generated code, rename
  the qualified import of AST-related identifiers.
* Improve test coverage.

# 0.5.2
* Support numeric enumerator codes in JSONPB,
  as required by the protobuf standard.
* Handle unrecognized enumerator codes within packed repeated
  enumeration fields in the same way as in other enumeration fields.
* Avoid compilation errors in code generated for messages having BytesValue
  fields.  The errors would trigger only when the "swagger-wrapper-format"
  Cabal flag of this package was False.
* Code generated from a .proto file that imports the google.protobuf package
  no longer depends upon any Haskell module generated from "wrappers.proto".
  Instead the proto3-suite library provides the necessary functionality.

# 0.5.1
* Support newer versions of proto3-wire, bytestring, and turtle
* Increase minimum version of base for canonicalize-proto-file from 4.8 to 4.11

# 0.5.0
* [BREAKING CHANGE: Proto3 standard compatibility improvements](https://github.com/awakesecurity/proto3-suite/pull/143)
  * This is a breaking change due to adding a new `DotProtoMessageOption`
    constructor to `DotProtoMessagePart`, which requires updating any
    exhaustive pattern matches
* [BREAKING CHANGE: Don't capitalize first character of prefixed service method names](https://github.com/awakesecurity/proto3-suite/pull/171)
  * This is a breaking change because the generated Haskell code will have
    slightly different field names for service methods
* [BREAKING CHANGE: Remove `Optional` from Protobuf AST](https://github.com/awakesecurity/proto3-suite/pull/165)
  * This is a technically breaking change because we no longer support the
    `optional` keyword, but this wasn't supported by proto3 anyway
* [Support GHC 9.0.2](https://github.com/awakesecurity/proto3-suite/pull/176)
* [Fix dashes in Haskell module names](https://github.com/awakesecurity/proto3-suite/pull/173)
  * This prevents the code generator from generating invalid Haskell module
    names with dashes in them
* [Add `Message` instance for wrapped types](https://github.com/awakesecurity/proto3-suite/pull/162)
  * This adds `Message` instances for several scalar Haskell types that
    correspond to the standard `*Wrapper` protobuf types
* [Use Swagger schema `format` to distinguish wrapper types from primitives](https://github.com/awakesecurity/proto3-suite/pull/167)
* [Update codegen to add the `serverMaxMetadataSize` field to generated `ServiceOptions`](https://github.com/awakesecurity/proto3-suite/pull/181)
* [Fix module renaming in `compile-proto-file`](https://github.com/awakesecurity/proto3-suite/pull/183)