zio-http icon indicating copy to clipboard operation
zio-http copied to clipboard

Prepare for ZIO HTTP 1.0 official release

Open jdegoes opened this issue 1 year ago • 9 comments

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.

jdegoes avatar Sep 19 '22 21:09 jdegoes

Looks great! What's the situation around security advisories/pen testing (discovery of vulnerabilities) ?

Fristi avatar Sep 20 '22 08:09 Fristi

@Fristi Added #1535

jdegoes avatar Sep 20 '22 11:09 jdegoes

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 avatar Sep 22 '22 12:09 narma

@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

fokot avatar Sep 23 '22 21:09 fokot

Added multipart form data

jdegoes avatar Sep 23 '22 21:09 jdegoes

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"

carlos-verdes avatar Sep 30 '22 11:09 carlos-verdes

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

jakubjanecek avatar Sep 30 '22 11:09 jakubjanecek

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)

carlos-verdes avatar Oct 03 '22 06:10 carlos-verdes

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 avatar Oct 03 '22 06:10 carlos-verdes

@carlos-verdes I have updated the readme with the installation instructions. https://github.com/zio/zio-http/blob/main/README.md#stable

tusharmath avatar Oct 17 '22 01:10 tusharmath

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?

carlos-verdes avatar Oct 17 '22 16:10 carlos-verdes

Would it hurt to set publish true for the logging? Without it the snapshot repo is pretty useless

csar avatar Nov 04 '22 09:11 csar