Awesome
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.<br/>
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