Skip to content

Releases: softwaremill/tapir

v1.9.9

02 Feb 22:08
d27c67a
Compare
Choose a tag to compare

What’s Changed

  • Guard against bad zio-http Request objects, sometimes provoked by malicious requests (#3494) @swaldman
  • Proposal to describe OAuth2 flows (#3490) @leoniv
  • Fix Test Reports fail frequently on master (#3497) @DybekK
  • Add support for pekko http in sttp client interpreter (#3493) @adamw

Dependency updates

v1.9.8

29 Jan 16:42
a4911d5
Compare
Choose a tag to compare

What’s Changed

Dependency updates

v1.9.7

26 Jan 11:51
d9b5110
Compare
Choose a tag to compare

What’s Changed

  • Remove dependency on logback-classic and scala-logging where unnecessary (#3471) @hygt
    IMPORTANT: This fix removes unwanted dependencies to logback-classic and scala-logging from some Tapir modules. This may affect your project, if it is accidentally relying on transitive dependencies. Affected backends are tapir-jdkhttp-server and Netty-based backends.
  • Performance tests: Fix warm-up phase (#3479) @kciesielski
  • Add Scala 3 support to sttp-mock-server (#3478) @oldstevekenobi
  • Fix sttp client content-type header override (#3472) @markarasev
  • Update pekko-grpc-runtime, ... to 1.0.2 (#3446) @softwaremill-ci
  • Performance tests part 1 (#3434) @kciesielski
  • [bugfix] Release Netty buffers (#3469) @kciesielski
  • [bugfix] Close the DefaultEventExecutor on shutdown (#3460) @kciesielski
  • Better error messages when can't map because a class has more than 22 fields (#3449) @adamw
  • Appending multiple variants (#3438) @pramodShehan5
  • [bugfix] Don't inherit encodedName (#3430) @kciesielski
  • Update sbt, sbt-dependency-tree to 1.9.8 (#3403) @softwaremill-ci
  • Add derivation for schemas of union types (#3425) @adamw

Dependency updates

v1.9.6

21 Dec 18:09
cb3be88
Compare
Choose a tag to compare

What’s Changed

Dependency updates

v1.9.5

12 Dec 17:53
4361d82
Compare
Choose a tag to compare

What’s Changed

Dependency updates

v1.9.4

05 Dec 14:18
9a91e2a
Compare
Choose a tag to compare

MaxContentLength for Netty

All Netty backends now support restricting maximum request body length. This per-endpoint protection ensures that no more bytes are loaded from body than given limit. Exceeding the limit results in HTTP 413 Payload Too Large response. For details see https://tapir.softwaremill.com/en/latest/endpoint/security.html#limiting-request-body-length for details.
More backends will support this feature in upcoming versions.

  • If you have been using the global NettyConfig.maxContentLength setting, it's no longer available. Please switch to the new per-endpoint annotation.
  • NettyConfig.defaultNoStreaming has been removed, use NettyConfig.default

Removed ZIO 1.x modules

Tapir integrations for zio, zio-json, zio-http, etc. are now available only for ZIO 2.x

What’s Changed

Dependency updates

v1.9.3

30 Nov 15:22
dfe4a17
Compare
Choose a tag to compare

Play 2.9 support

Recently Tapir switched its Play modules to version 3. This versions brings support to Play 2.9. Please read the new docs to learn how to configure the dependencies: https://tapir.softwaremill.com/en/latest/server/play.html

Note that tapir-play29-server works only for Scala 2.13, but tapir-play29-client and tapir-json-play29 are available for Scala 2.12, 2.13, and 3.

What’s Changed

Dependency updates

v1.9.2

23 Nov 15:31
9ac47f0
Compare
Choose a tag to compare

What’s Changed

Dependency updates

v1.9.1

20 Nov 13:45
5350715
Compare
Choose a tag to compare

What’s Changed

v1.9.0

09 Nov 18:18
f458cb6
Compare
Choose a tag to compare

New Loom-based backends

Backends based on Loom (Java virtual threads) have been migrated from the tapir-loom project, and are now a part of the main distribution. They require JDK 21. Read more:

Breaking changes

DecodeFailureHandler

DecodeFailureHandler has become DecodeFailureHandler[F] to allow effectful error handling. If you're using custom handlers, update them to the new apply signature:

trait DecodeFailureHandler[F[_]] {
  def apply(ctx: DecodeFailureContext)(implicit monad: MonadError[F]): F[Option[ValuedEndpointOutput[_]]]
}

RejectHandler

RejectHandler.apply no longer takes a Failure, but a RejectContext, which encapsulates the failure, and the ServerRequest as well, allowing using more information for your rejection handling.

trait RejectHandler[F[_]] {
  def apply(ctx: RejectContext)(implicit monad: MonadError[F]): F[Option[ValuedEndpointOutput[_]]]
}

Full changelog

Dependency updates