Skip to content

Releases: disneystreaming/smithy4s

v0.15.0 : Smithy 2.0 support, custom type refinements

18 Aug 10:26
b96cc5b
Compare
Choose a tag to compare

The 0.15.0 release breaks both source and binary compatibility

This is a very exciting release for us, as it makes Smithy4s compatible with Smithy 2.0

Highlights

Adds support for smithy 2.0, which brings a number of very interesting features. In particular :

  • mixins, which allow to drastically DRY your specifications when multiple shapes share a number of elements
  • defaults, which allow to specify default values for the fields of your structure types
  • enums/int enums, which make enumerations a lot nicer to write/read in smithy

Adds support for custom refinements

This provides a mechanism for the user to plug some datatypes of their own in the generated code. These can be validated against
user-defined rules, via an implicit instance provided by the user (or a third party). Smithy4s forces this customisation to be driven by smithy traits, which allow specifications to retain a formally-indicative nature of the behaviour of APIs. These refinements are wired in all decoding logic exercised by smithy4s, which means they are taken into account whether the data is found in headers, query parameters, path parameters, or bodies of the http requests/responses.

See the documentation for more details.

Better collision avoidance in the rendered code

Some care has been put in the generated code to facilitate collision avoidance between what exists and what is generated, without relying on fully-qualified-names by default. Although there may still be edge cases, this approach means the generated code retains a reasonably pleasant-to-read nature, which we have found to be important to users.

Fixes

  • When the @jsonName trait is used on structure members, potential error messages should expose the correct expectations
  • Fixes an issue that would lead clients to decode error payloads as the wrong error type

What's Changed

Full Changelog: v0.14.2...v0.15.0

v0.14.2: more efficient parsing of json objects/arrays

19 Jul 11:16
75f4242
Compare
Choose a tag to compare

Highlights :

  • More efficient parsing of json objects/arrays. As usual, kudos to @plokhotnyuk for his amazing work on optimising the json parsing.
  • It's now easier to set up smithy4s in other SBT configurations than Compile. See here

What's Changed

Full Changelog: v0.14.1...v0.14.2

v0.14.1: bug fix (swagger-ui)

13 Jul 10:29
ca86b08
Compare
Choose a tag to compare

Fixes a bug that would lead callers to get 404'd on the default swagger-ui path.

What's Changed

Full Changelog: v0.14.0...v0.14.1

v0.14.0: Scala-native support, improvements across the board

12 Jul 12:55
081bc16
Compare
Choose a tag to compare

The 0.14.0 release breaks binary compatibility, as well as source compatibility (in a few places) with the previous versions.

It does however achieves a number of significant improvements across the boards, in terms of user experience, performance and maintainability.

Special thanks to @plokhotnyuk, @schmeedy, @yisraelU, @daddykotex

Highlights

  • The core/json/dynamic modules are now published for scala-native (scala 3 only for the time being)
  • The http4s-swagger-ui module has received an overhaul, in order to avoid relying on a javascript function that presented a security issue, but also to allow for users to easily serve several specifications at the same time.
  • Having union members target the Unit shape now leads to the corresponding type be rendered as a case object in Scala.
  • A mechanism was added for users to be able to opt-in Vector and IndexedSeq Scala types when using smithy list shape.
  • The Timestamp construct was overhauled to unify its modelling across the different platforms, and received a massive performance improvement for parsing/serialising.
  • Modified the SBT plugin to have SBT pre-fetch the artifacts before calling the Smithy4s code-generation, making it more respectful to other settings (such as repository credentials)
  • The smithy4s.schema.Schema construct was reworked to unify the collections under a common abstraction, and the smithy4s.schema.SchemaVisitor construct was also changed to reduce the likelihood of a common mistake related to memoisation of union encoders .

What's Changed

New Contributors

Full Changelog: v0.13.7...v0.14.0

v0.13.7 : fix unused import

27 Jun 10:11
29d1f89
Compare
Choose a tag to compare

Highlights :

  • Fix an issue that would lead to unused imports being rendered when the input of an operation has a collection member from another namespace.
  • Fix a potential resource leak in the EC2/ECS AWS credentials provider

What's Changed

Full Changelog: v0.13.6...v0.13.7

v0.13.6

16 Jun 13:40
951d1cc
Compare
Choose a tag to compare

Even though this is a patch release, its packed with goodies. Thanks to @plokhotnyuk, we've got a lot of performance improvements for our json module. There are a few bug fixes on top of that.

What's Changed

Full Changelog: v0.13.5...v0.13.6

v0.13.5 - fixing a dynamic schema regression, padding base64 strings

02 Jun 16:21
0917b12
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.13.4...v0.13.5

v0.13.4: more performance improvements, better recursion handling

01 Jun 16:13
18e6b36
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.13.3...v0.13.4

v0.13.3: more efficient serialization of documents with ASCII key

31 May 07:57
c97e94a
Compare
Choose a tag to compare

What's Changed

  • More efficient serialization of documents with ASCII keys by @plokhotnyuk in #237

Full Changelog: v0.13.2...v0.13.3

v0.13.2: improve performance of document encoder

29 May 08:18
b92821b
Compare
Choose a tag to compare

Highlights :

  • Fixes a bug that would lead document encoders to be partially recompiled on each serialisation, decreasing performance
  • Correctly translate @untaggedUnion annotated shapes to openapi

What's Changed

New Contributors

Full Changelog: v0.13.1...v0.13.2