Releases: disneystreaming/smithy4s
v0.14.1: bug fix (swagger-ui)
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
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
andIndexedSeq
Scala types when using smithylist
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 thesmithy4s.schema.SchemaVisitor
construct was also changed to reduce the likelihood of a common mistake related to memoisation of union encoders .
What's Changed
- Add a first iteration containing documentation of design. by @Baccata in #257
- Remove smithy files from package by @yisraelU in #285
- Refactoring of Timestamp by @plokhotnyuk in #283
- Couple ShapeTag with Schema by @Baccata in #271
- Change the Field and Alt model to not hold schemas anymore by @Baccata in #279
- Fix path url decoding by @kubukoz in #284
- Use internal sbt dependency resolution in codegen-plugin by @schmeedy in #288
- Improve swagger docs support by @daddykotex in #287
- Update copyright notices by @daddykotex in #292
- Document library dependency feature by @Baccata in #291
- Document the design of the Service and Endpoint interfaces by @Baccata in #282
- Rework of the concept of collection in the Schema abstraction by @daddykotex in #290
- Scala native support by @Baccata in #289
- Optimize serialization for ArraySeq by @plokhotnyuk in #297
- Render Unit in unions as case objects by @Baccata in #294
- Update fs2-core to 3.2.10 by @scala-steward in #299
- Update weaver-cats, weaver-scalacheck to 0.7.13 by @scala-steward in #301
- Update sbt-scalafix to 0.10.1 by @scala-steward in #298
- Update weaver-cats, weaver-scalacheck to 0.6.13 by @scala-steward in #300
- Implement a simple SchemaDescription visitor by @daddykotex in #295
- Revises the "union" method in SchemaVisitor ... by @Baccata in #302
- Replace schematic implementation by schema visitor by @daddykotex in #296
- Add enum value names by @kubukoz in #304
- Update jsoniter-scala-core to 2.13.36 by @plokhotnyuk in #305
- Add
@vector
and@indexedSeq
by @daddykotex in #303
New Contributors
Full Changelog: v0.13.7...v0.14.0
v0.13.7 : fix unused import
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
- Switch weaver to munit in core Module. by @Baccata in #277
- Fix resource leak in AWS refresh loop by @kubukoz in #278
- fix imports for newtypes from other packages by @lewisjkl in #280
Full Changelog: v0.13.6...v0.13.7
v0.13.6
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
- More efficient reading and writing of JSON documents by @plokhotnyuk in #251
- More efficient serialization discriminated ADTs by @plokhotnyuk in #259
- Clean up tests for Timestamp by @plokhotnyuk in #261
- Fix streamed schema rendering by @kubukoz in #265
- Fix map rendering in traits (non-toplevel values) by @Baccata in #268
- Unify ShapeTag across Scala versions by @Baccata in #269
- sets UseIntegerType to True to fix issue with AWS not handling number by @yisraelU in #272
- Implement SchemaVisitorJCodec by @daddykotex in #270
- Fix errors not respecting http bindings semantics by @daddykotex in #275
Full Changelog: v0.13.5...v0.13.6
v0.13.5 - fixing a dynamic schema regression, padding base64 strings
What's Changed
- Do padding of base64 encoded strings by @plokhotnyuk in #246
- update copyright header by @mcanlas in #248
- Do not publish protocol tests by @daddykotex in #249
- Add smithy4s.meta to the reserved namespaces by @Baccata in #250
- Fix dynamic compiler applying field/alt hints at the wrong level by @Baccata in #247
New Contributors
Full Changelog: v0.13.4...v0.13.5
v0.13.4: more performance improvements, better recursion handling
What's Changed
- More efficient parsing of documents by @plokhotnyuk in #239
- adds SchemaVisitor implementation of MetadataWriter and MetadataReader by @yisraelU in #225
- More efficient parsing of lists, sets, maps, and unions by @plokhotnyuk in #240
- Fixes #181 by @Baccata in #243
- Improve recursion handling in dynamic schemas by @Baccata in #241
Full Changelog: v0.13.3...v0.13.4
v0.13.3: more efficient serialization of documents with ASCII key
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
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
- Update circe-generic to 0.14.2 by @scala-steward in #223
- Update http4s-circe, http4s-client, ... to 0.22.13 by @scala-steward in #224
- Update cats-effect to 3.3.12 by @scala-steward in #227
- Update jsoniter-scala-core to 2.13.25 by @scala-steward in #228
- Update weaver-cats, weaver-scalacheck to 0.7.12 by @scala-steward in #230
- Update weaver-cats, weaver-scalacheck to 0.6.12 by @scala-steward in #229
- clarify @adtMember docs by @lewisjkl in #226
- Update jsoniter-scala-core to 2.13.26 by @scala-steward in #231
- Update sbt-sonatype to 3.9.13 by @scala-steward in #233
- Update http4s-circe, http4s-client, ... to 0.23.12 by @scala-steward in #232
- Implement UntaggedUnion support in OpenApi extension by @daddykotex in #235
- Memorize document encoders by @plokhotnyuk in #236
New Contributors
- @plokhotnyuk made their first contribution in #236
Full Changelog: v0.13.1...v0.13.2
v0.13.1: Fix issue with sbt plugin cache key
tl;dr
There was an issue with v0.13.0 when builds using the sbt plugin had no colocated smithy files, but were pulling remote jars as dependencies. This release contains a fix for this.
What's Changed
- Update jsoniter-scala-core to 2.13.24 by @scala-steward in #220
- Fix sbt plugin regression by @lewisjkl in #221
Full Changelog: v0.13.0...v0.13.1
v0.13.0 : Schema overhaul
This release is the first one of the 0.13.x series. It is (very) binary incompatible with the 0.12.x series.
Highlights
core abstractions
The central point of this release is the complete overhaul of the Schema
construct, to be a mere GADT, accompanied by a SchemaVisitor
construct which is intended to eventually replace Schematic
, as the SchemaVisitor
gives the implementor control over the recursive call, and therefore allows to potentially delegate to other visitors, which should allow to clean up a number of weird things in this codebase and downstream ones. See #140.
The schema semantics have also changed to allow for capturing surjections
, which are somewhat similar to bijections
but can fail. These could be used in the future to capture type-refinements.
code-generation
This release also adds a smithy4s.meta#adtMember
trait, as a way to allow for reducing the amount of nesting involved when unions have structure members. This is an opt-in, and enforces that the target structures cannot be used anywhere else, as doing so would result in the duplication of case classes in the companion objects of several ADTs, which would break least surprise but also maybe some caching by shapeId logic that could arise in the future. Kudos to @lewisjkl.
The rendering logic was also made more maintainable thanks to a bespoke string interpolator that helps drastically reduce the amount of dance steps needed to gather the imports that should be added at the top of a file. Kudos to @yisraelU for that.
Additionally, the code generator task in the SBT plugin was made more precise and should require calls to clean
less often.
What's Changed
- Update jsoniter-scala-core to 2.13.19 by @scala-steward in #206
- Update jsoniter-scala-core to 2.13.20 by @scala-steward in #207
- Schema overhaul by @Baccata in #140
- Loosen constraints in aws-http4s by @kubukoz in #173
- Update sbt-header to 5.7.0 by @scala-steward in #195
- Update jsoniter-scala-core to 2.13.21 by @scala-steward in #208
- Rendering interpolator by @Baccata in #209
- Update jsoniter-scala-core to 2.13.22 by @scala-steward in #212
- Fix DynamicError's shapeId by @kubukoz in #214
- Use a simpler mechanism to detect file changes by @keynmol in #213
- Recursively return all the generated files by @keynmol in #215
- Support service errors in dynamic schema index by @kubukoz in #216
- Add options for rendering case class ADT members directly within union by @lewisjkl in #211
- Update jsoniter-scala-core to 2.13.23 by @scala-steward in #218
- Improve CLI docs by @daddykotex in #219
- Rewrite the model loading logic to avoid having to depend on publishL… by @Baccata in #217
New Contributors
Full Changelog: v0.12.16...v0.13.0