ScalatraがScala3で使えるようになりました

地道にメンテナンスを継続しているScalatraですが、最近ついにScala 3で動作するマイルストーンビルド(3.0.0-M1)を公開しました。

github.com

Scala 3対応の作業はほとんどよしださんにやっていただき自分はリリースしただけですが…。

サンプルとしてScala 3で動作するScalatraプロジェクトを作ってみました。

github.com

一応コードはScala 3のシンタックスで書いてあります。これだけだとあまり嬉しい感じはしないかもしれませんが…。

package com.example.app

import org.scalatra._

class MyScalatraServlet extends ScalatraServlet:
  get("/") {
    views.html.hello()
  }

ScalatraがデフォルトでサポートしているテンプレートエンジンであるTwirl(と言っても何か特別なインテグレーションを提供しているわけではありませんが)はまだ正式なScala 3対応版がリリースされていないのですが、Scala 3に対応したマイルストーンビルド(現時点の最新版は1.6.0-M6)が提供されているのでこれを使うとScala 3でも動きます。

github.com

もちろんまだマイルストーンなのでGAまでに追加で変更が入る可能性はありますが、Scalatraではここ数年大きな変更はありませんし、あってもマイナーな変更だけかなと思います(JettyやServlet APIのバージョンは上げるかも?)。また、Scala 3対応にあたって特に何か大きく変更した部分もありませんのでマイルストーンビルドではありますが普通に使えるのではないかと思います。