wvlet / airframe

Essential Building Blocks for Scala
https://wvlet.org/airframe
Apache License 2.0
631 stars 65 forks source link

Milestone: Scala 3 (Dotty) Support #1077

Closed xerial closed 1 year ago

xerial commented 4 years ago

Scala 3 (dotty)

deabreu commented 1 year ago

Hi, I'm researching alternative frameworks for web development in Scala, as I want to move away from Akka, which would include Play and Lagom.

A few weeks ago, I've come to know Airframe and the possibility to move to Scala 3 caught my attention.

I see this is not completed but much of the work is done already. So I want to ask if you think it should be ok to start a new project in Airframe using Scala 3 only.

xerial commented 1 year ago

@deabreu I understand the issues around Finagle (no Scala 3 support) or Akka (adopted business license).

For Scala 3, Netty or gRPC backend of airframe-http will be promising (and the basic functionalities are already working in Scala 3), but it's not production ready at this moment. I'm trying to implement the remaining pieces such as https://github.com/wvlet/airframe/pull/2689, for supporting all of the functionalities in Scala 3

xerial commented 1 year ago

@takezoe @shimamoto @exoego @yuokada All of the Scala 3 migration work has been completed! Thank you for all of your contributions so far.

Although the documentation needs some updates around the new RxRouter and RxFilter usage, I'm still expecting to have some interface changes while building real applications using Scala 3. I'll update the doc once these new interfaces for Scaal 3 become stable. Especially, Netty-based HTTP server backend and Rx-based filters have not been battle-tested yet.

Around Scala.js, fastOptJs, npm-bundler, building facade manually become obsolete, and we now can use YARN, fastLinkJS, Vite.js, scalablyTyped, etc., which enable seamless integration with the JS ecosystem. https://www.scala-js.org/doc/tutorial/scalajs-vite.html I'll dig into how to set up projects using these new standards.

xerial commented 1 year ago

@deabreu Airframe 23.5.0 has been released. Scala 3 is now fully supported. Example RPC server and client with Netty backend https://github.com/wvlet/airframe/tree/master/examples/rpc-examples/hello-rpc