zio-http
zio-http copied to clipboard
Prepare for ZIO HTTP 1.0 official release
The ZIO 1.0 official release should indicate an extended period of binary stability, including ample support for bug fixes, performance improvements, and backward-compatible feature extensions, allowing a healthy ecosystem to grow around the project, and encouraging commercial adoption.
This ticket tracks remaining work to be done before dev.zio
zio-http
1.0 can be officially christened.
NOTE: Currently this project is versioned at 2.0-RC11, but as it will be published in the dev.zio
organization for the first time, we are free to reset the version number scheme, assuming cooperation with #1473.
- [ ] WebSocket redesign - #1528
- [ ] Comprehensive API review to ensure it is ZIO idiomatic - #1526
- [ ] ZIO HTTP TestKit - #1525
- [ ] Middleware refactor - #1501
- [ ] ZIO HTTP API finalization - #1524, #1506, #1501, #1500, #1498, #1499, #1529, #1530
- [ ] Architectural improvements - #1454, #1453, #1449
- [ ] Client improvements - #1479, #1413, #1025, #1527
- [ ] General benchmarking - #1531, #1515
- [ ] Security - #1535
- [ ] Multipart form data - #1559, #1560
Please comment on additional features that should be included in the 1.0 release of ZIO HTTP.
Looks great! What's the situation around security advisories/pen testing (discovery of vulnerabilities) ?
@Fristi Added #1535
Great plan!
Should support of multipart form data included to this milestone?
Currently we use zio-http, but for uploading files via multipart we are forced to use akka-http as a small separate component.
@narma It can be dealbreaker. We switched once from uzhttp
to http4s
because of multipart form data support. I created an issue for that #1559
Added multipart form data
I may be missing something but... what is the version I should add as dependency?
I'm trying this:
object Versions:
val zioHttpV = "2.0-RC11"
object Libraries:
val zioHttp = "dev.zio" %% "zio-http" % zioHttpV
I tried also:
val zioHttpV = "2.0.0-RC11"
zio-http
hasn't been published under dev.zio
: https://github.com/zio/zio-http/issues/1473#issuecomment-1247033633
Use this until it is published: https://search.maven.org/artifact/io.d11/zhttp_2.13/2.0.0-RC11/jar
Thanks @jakubjanecek for that answer, however I found the API is different on zHTTP so I cloned this repo and made a publishLocal
to unblock myself
Is there any tentative date for zio-http to be officially released under zio.dev? I suppose I'm not the only one asking for it :)
I don't know if you can answer to this but, is the support for WebSocket covering traditional Socket communication also? I may need to implement a client to a database that supports both HTTP and Socket protocols (and they claim Socket is more efficient)
Just in case is helpful I had to do the next steps to publish in local: 1 - edit the scala version to Scala3 2 - set publishSettings(true) for zioHttpLogging project 3- run publishLocal on both projects (first you have to chose the project obviously) 4 - copy on my local ivy the folder without the commit version (I didn't dedicate time to fix the version on configuration)
For the first two steps here is my diff file:
diff --git a/build.sbt b/build.sbt
index e47e2098..6a031f13 100644
--- a/build.sbt
+++ b/build.sbt
@@ -138,7 +138,7 @@ lazy val zioHttpBenchmarks = (project in file("zio-http-benchmarks"))
lazy val zioHttpLogging = (project in file("zio-http-logging"))
.settings(stdSettings("zio-http-logging"))
- .settings(publishSetting(false))
+ .settings(publishSetting(true))
.settings(
libraryDependencies ++= {
if (isScala3(scalaVersion.value)) Seq.empty
diff --git a/project/BuildHelper.scala b/project/BuildHelper.scala
index 012db6df..81116b8a 100644
--- a/project/BuildHelper.scala
+++ b/project/BuildHelper.scala
@@ -52,7 +52,7 @@ object BuildHelper extends ScalaSettings {
def stdSettings(prjName: String) = Seq(
name := s"$prjName",
ThisBuild / crossScalaVersions := Seq(Scala212, Scala213, ScalaDotty),
- ThisBuild / scalaVersion := Scala213,
+ ThisBuild / scalaVersion := ScalaDotty,
scalacOptions := stdOptions ++ extraOptions(scalaVersion.value),
semanticdbVersion := scalafixSemanticdb.revision, // use Scalafix compatible version
ThisBuild / scalafixScalaBinaryVersion := CrossVersion.binaryScalaVersion(scalaVersion.value),
And the example of how to copy the local dependency (if not my project can't find it as it's generated with the full commit version):
cp -r ~/.ivy2/local/dev.zio/zio-http_3/2.0.0-RC11+77-71e8cf07+20221003-1016-SNAPSHOT ~/.ivy2/local/dev.zio/zio-http_3/2.0.0-RC11
cp -r ~/.ivy2/local/dev.zio/zio-http-logging_3/2.0.0-RC11+77-71e8cf07+20221003-1016-SNAPSHOT ~/.ivy2/local/dev.zio/zio-http-logging_3/2.0.0-RC11
@carlos-verdes I have updated the readme with the installation instructions. https://github.com/zio/zio-http/blob/main/README.md#stable
The problem with the stable version (correct me if I'm wrong) is that it has the old API and last time I could not find the documentation, that's why I'm working with a local clone until official release is ready.
From the other side I understand (correct me again please) that I can use a SNAPSHOT dependency directly from public repository (so I can use the latest API and I don't need local copies), is that right?
Would it hurt to set publish true for the logging? Without it the snapshot repo is pretty useless