Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare for ZIO HTTP 1.0 official release #1532

Closed
7 of 10 tasks
jdegoes opened this issue Sep 19, 2022 · 18 comments
Closed
7 of 10 tasks

Prepare for ZIO HTTP 1.0 official release #1532

jdegoes opened this issue Sep 19, 2022 · 18 comments
Labels
enhancement New feature or request

Comments

@jdegoes
Copy link
Member

jdegoes commented Sep 19, 2022

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.

Please comment on additional features that should be included in the 1.0 release of ZIO HTTP.

@jdegoes jdegoes added the enhancement New feature or request label Sep 19, 2022
@Fristi
Copy link

Fristi commented Sep 20, 2022

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

@jdegoes
Copy link
Member Author

jdegoes commented Sep 20, 2022

@Fristi Added #1535

@narma
Copy link
Contributor

narma commented Sep 22, 2022

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.

@fokot
Copy link
Contributor

fokot commented Sep 23, 2022

@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

@jdegoes
Copy link
Member Author

jdegoes commented Sep 23, 2022

Added multipart form data

@carlos-verdes
Copy link

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"

@jakubjanecek
Copy link
Contributor

zio-http hasn't been published under dev.zio: #1473 (comment)

Use this until it is published: https://search.maven.org/artifact/io.d11/zhttp_2.13/2.0.0-RC11/jar

@carlos-verdes
Copy link

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
Copy link

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

@tusharmath
Copy link
Collaborator

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

@carlos-verdes
Copy link

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?

@csar
Copy link

csar commented Nov 4, 2022

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

@carlos-verdes
Copy link

What is the major stopper to release first version?

I say that because I'm writing a library for ArangoDB based on zio-http client:
https://github.com/carlos-verdes/zio-arangodb

It's a port from this repo but written in Scala 3 (instead of 2) and ZIO (instead of cats):
https://github.com/avokka/avokka

@bicouy0

@carlos-verdes
Copy link

Just for the people like me trying to build on top of this, there is a release (7 days ago) that is in Maven repo.
I had to update also zio version to avoid an issue on it:tests:

object Dependencies {

  object Versions {
    val zioV     = "2.0.4"
    val zioHttpV = "0.0.3"
  }

  object Libraries {

    import Versions._

    val zio             = "dev.zio" %% "zio"                 % zioV
    val zioHttp         = "dev.zio" %% "zio-http"            % zioHttpV
}

@boggye
Copy link

boggye commented Dec 6, 2022

@jdegoes is there a rough timeline for the release? For instance, something like "sometimes in the first half of 2023"? Thanks

@Tasselmi
Copy link

Tasselmi commented Feb 9, 2023

look forward zio-http version 1.0~ I will turn to ZIO http instead of Play Framework.

@jdegoes
Copy link
Member Author

jdegoes commented Mar 17, 2023

This is nearly all done. Closing as the last few stragglers can be tracked separatley in those tickets.

@boggye ZIO World.

@joroKr21
Copy link

Is there a stable release?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests