Another milestone release for Finagle 17.11.
Improved Multipart Support
Multipart attributes are now decoupled from param(s)
endpoints as they were instigating a multipart decoding on each optional param (see #860 for discussion and #865 for a fix).
scala> val foo = multipartAttribute("foo")
foo: io.finch.Endpoint[String] = foo
scala> val bar = multipartFileUpload("bar")
bar: io.finch.Endpoint[com.twitter.finagle.http.exp.Multipart.FileUpload] = bar
Circe's Printing Size Predictor
Circe's size predictor allows saving a couple of copy-and-grow iterations while printing into a binary output. It uses a very primitive form of a feedback controller to grow/shrink a potentially expected size based on the history of allocations (see circe/circe#739 for more details).
We've seen quite a great improvements in our ToServiceBenchamrk
(around ~2x of throughput improvement) yet we were unable to reproduce the numbers with the wrk
(i.e., end-to-end test). Based on that, this option should be considered experimental (use with caution and run your own tests).
Size prediction could be enabled with io.finch.circe.predictSize._
import (see #868).