Skip to content

v0.16.1: Sharing specs, Mill support & more

Compare
Choose a tag to compare
@daddykotex daddykotex released this 16 Sep 18:26
f0ecffb

NOTE: Use 0.16.1 not 0.16.0, the latter is a botched release that only contains a subset of the changes.

This release is huge! Thanks to all the contributors.

The 0.16.1 release breaks both source and binary compatibility.

At a high level, here are the changes you can look forward to in the release:

Support for the @httpResponseCode trait - #377

You can mark a member of your output structure with @httpResponseCode and expect smithy to use that value when rendering a http response, on the server, or to fill that value from the response status code, on the client.

Support for sharing specifications across modules (sbt or mill) (similar to how you depend on another module Scala code in sbt with the dependsOn setting) - #432

Multiple people came naturally to this kind of project setup where you have multiple module and you may want to have common code and specification live a given module that your other modules depends on. With this release, it's totally doable. See this page for more information

Mill support - #450

Now your mill modules can also use Smithy4s code generation. See this page for more information.

Decline integration is effect-agnostic - #429

Previous version use CommandIOApp which requires cats.effect. 0.16.1 version will allow you to use the effect system of your choice.

Builder pattern to create your clients - #447

New API looks like:

SimpleRestJsonBuilder(HelloWorldService)
    .client(client)
    .uri(Uri.unsafeFromString("http://localhost:9000"))
    .resource

More details below.

What's Changed

Full Changelog: v0.15.3...v0.16.1