disneystreaming/smithy4s

https://disneystreaming.github.io/smithy4s/

Scala

401

4,140 commits

updated Sep 10, 2026

See the code

README

CI smithy4s-core Scala version support CLA assistant Discord

smithy4s

Usage

For usage information, check out the Documentation

Benchmarks

There's a module with benchmarks to compare against the handcrafted implementations of an http4s with the generic ones run the benchmarks, one should execute:

sbt benchmark / Jmh / run

To run http4s benchmarks:

benchmark / Jmh / run .*Http4sBenchmark.*

To benchmark with Scala 2.12 version instead of 2.13, use benchmark2_12 / Jmh / run instead.

Smithy4s makes use of YourKit Java Profiler for performance optimisation.
YourKit Logo

Development environment

For the easiest setup of development tools, use Nix.

The recommended way is to use nix develop (requires Flakes support, available since Nix 2.4 - read on if you don't use that experimental feature):

nix develop

This will load all required packages into your shell. Run exit or press ctrl+d to clear it.

If you're a direnv user, we have that too.

If you don't have Flakes support:

nix-shell

Note for metals/bloop users

Smithy4s is a complex project with a heavy build-matrix. In order to ease development, we've elected to only enable bloop-config generation for the JVM/Scala 2.13 combo of build axes, by default.

If you find yourself developing for another combination of build axes, it is possible to tweak the default by adding a user.sbt file in the root directory of your clone of this project, and fill it by following this example :

ThisBuild / bloopAllowedCombos := Seq(
  Seq(
    VirtualAxis.jvm,
    VirtualAxis.scalaABIVersion("3.3.0")
  )
)

Note for .sbtopts

You usually should use .sbtopts to add some more memory for sbt, as Smithy4s is complex. You copy the .sbtopts.example to .sbtopts and adjust the values to your needs:

cp .sbtopts.example .sbtopts
codegen
http
json
scala
scala-js
scala-native
smithy
xml

Contributors

(top 30 of 60)

Baccata

1,293 commits

daddykotex

554 commits

yisraelU

521 commits

kubukoz

400 commits

disneystreaming/smithy4s

https://disneystreaming.github.io/smithy4s/

Scala

401

4,140 commits

updated Sep 10, 2026

See the code

README

CI smithy4s-core Scala version support CLA assistant Discord

smithy4s

Usage

For usage information, check out the Documentation

Benchmarks

There's a module with benchmarks to compare against the handcrafted implementations of an http4s with the generic ones run the benchmarks, one should execute:

sbt benchmark / Jmh / run

To run http4s benchmarks:

benchmark / Jmh / run .*Http4sBenchmark.*

To benchmark with Scala 2.12 version instead of 2.13, use benchmark2_12 / Jmh / run instead.

Smithy4s makes use of YourKit Java Profiler for performance optimisation.
YourKit Logo

Development environment

For the easiest setup of development tools, use Nix.

The recommended way is to use nix develop (requires Flakes support, available since Nix 2.4 - read on if you don't use that experimental feature):

nix develop

This will load all required packages into your shell. Run exit or press ctrl+d to clear it.

If you're a direnv user, we have that too.

If you don't have Flakes support:

nix-shell

Note for metals/bloop users

Smithy4s is a complex project with a heavy build-matrix. In order to ease development, we've elected to only enable bloop-config generation for the JVM/Scala 2.13 combo of build axes, by default.

If you find yourself developing for another combination of build axes, it is possible to tweak the default by adding a user.sbt file in the root directory of your clone of this project, and fill it by following this example :

ThisBuild / bloopAllowedCombos := Seq(
  Seq(
    VirtualAxis.jvm,
    VirtualAxis.scalaABIVersion("3.3.0")
  )
)

Note for .sbtopts

You usually should use .sbtopts to add some more memory for sbt, as Smithy4s is complex. You copy the .sbtopts.example to .sbtopts and adjust the values to your needs:

cp .sbtopts.example .sbtopts
codegen
http
json
scala
scala-js
scala-native
smithy
xml

Contributors

(top 30 of 60)

Baccata

1,293 commits

daddykotex

554 commits

yisraelU

521 commits

kubukoz

400 commits

Languages

Scala

95.9%

Smithy

2.7%