Milestone: Scala 3 (Dotty) Support
xerial opened this issue · comments
Scala 3 (dotty)
- Use Scala 3.0.0 #1639
- Add a basic configuration
- Extract AirSpec as an external project #1992
- Test Scala version sandwitch sbt/sbt#5767
- airframe-log support #867 #1381
- Surface support #1384
- airframe-di support #1649
- Split source folder for Scala 2 and 3 #1405
- Support Scala3 macros #1407
- deprecate in-trait bindings #1653
[ ] new A with DISupport #1410[ ] Traverse Template node in Scala 3 for rewritinglampepfl/dotty#10931new A with DISupport {}
code
- AirSpec #1659
- Use TastyInspector
- Create ReflectSurface factory
- RuntimeSurface.of[X]
- Run all AirSpec tests
- parquet #2209 Need to resolve Surface of nested objects at runtime or pre-register Surfaces
- grpc (Need to register trait factories to start gRPC server. #2194
- Scala 3.1.3-RC2 or later will be required for generating new class from a trait type T lampepfl/dotty#11685)
- airframe-log
- surface
- di
- codec
- json
- msgpack
- canvas
- control
- ulid
- metrics
- rx
- okhttp (
Finagle server is used for testing) #2440 #2865 - http-recorder (Finagle server is used internally) #1146
- airframe-config
- airframe-http
- airframe-http-router
- airframe-http-grpc (codec is required)
[ ] airframe-http-finagle (Finagle must be migrated to Scala 3)Finagle will not migrate to Scala 3 soon- canvas
- codec
- Split code for Scala 2 and 3 #1640
- control
- jmx
- launcher
- metrics
- msgpack
- json
- rx
- rx-html
- rx-html-widget
- parquet
- ulid
- Cross build for Scala.js + Scala 3.0.0
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.
@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 #2689, for supporting all of the functionalities in Scala 3
@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.
@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