sbt 0.13.14 リリースノート

in

sbt 0.13.14-RC1 をリリースしたので、リリースノートを翻訳した。

互換性に影響のある新機能、変更点、バグ修正

  • sbt 0.13.14 は Maven のバージョンレンジをできる限り取り除く。詳細は後ほど。

改善点

  • 予備として JDK 9 との互換性を追加した。この機能は 0.13.14 以降のネイティブパッケージを必要とする。 #2951/143 by @retronym
  • オフライン・インストール用に "local-preloaded" レポジトリを追加する。詳細は後ほど。
  • ウォーミングアップされた JVM に留まるように、バッチモードで sbt を実行すると [ENTER] を押して shell に切り替えるよう通知するようにした。 #2987/#2996 by @dwijnand
  • .taskValue を使わずに sourceGenerators += Def.task { ... } と書けるようにするために Append のインスタンスを追加した。 #2943 by @eed3si9n
  • JUnitXmlTestsListener が生成する XML が無視、スキップ、保留状態のテストにそれぞれフラグを立てるようにした。 #2198/#2854 by @ashleymercer
  • プロジェクトが Dotty を使ってコンパイルしていると検知した場合に、自動的に scalaCompilerBridgeSource を設定して、Dotty プロジェクトのボイラープレートを軽減するようにした。ただし、sbt における Dotty サポートは現在実験的であり、正式にはサポートされていないことに注意。詳細は dotty.epfl.ch 参照。 #2902 by @smarter
  • sbt new のレファレンス実装である Giter8 を 0.7.2 にアップデートした。

バグ修正

  • .triggeredBy.storeAs などが :=.value マクロと動作しない問題の修正。 #1444/#2908 by @dwijnand
  • JLine を更新して、Windows から Ctrl-C が動作しない問題の修正。 #1855 by @eed3si9n
  • ビルドレベルのキーの処理を誤っていた 0.13.11 から 0.13.13 のリグレッションの修正。 #2851/#2460 by @eed3si9n
  • Compile を継承しないコンフィギュレーションにおいても Scala バージョンの強制を行っていた sbt 0.13.12 におけるリグレッションの修正。 #2827/#2786 by @eed3si9n
  • スクリプトモードにおいてクォーテーションが無視されていたことの修正。 #2551 by @ekrich
  • Ivy がときおり IllegalStateException になることの修正。 #2827/#2015 by @eed3si9n
  • sourceFile が null のときに NPE がでることの修正。 #2766 by @avdv

Maven のバージョンレンジの改善

以前は、依存性解決 (Ivy) が [1.3.0,) といった Maven のバージョンレンジを見つけると Internet に行って最新のバージョンを探しに行っていた。これは、範囲の条件を満たすライブラリがビルド内にあったとしても最終的なバージョンが経年変化するという驚くべき振る舞いをしていた。

sbt 0.13.14 以降は、可能な限り Maven のバージョンレンジをその下限値に置換することで、もしも条件を満たすバージョンが依存性グラフ内にあった場合はそれが使われるようにした。この振る舞いは -Dsbt.modversionrange=false JVM フラグによって無効化することができる。

#2954 by @eed3si9n

オフライン・インストール

sbt 0.13.14 は、"local-preloaded-ivy" と "local-preloaded" という 2つの新しいレポジトリを追加して、それらは両方とも ~/.sbt/preloaded/ を参照する。このレポジトリは sbt のアーティファクトを予め積み込む (preload) ことを目的としており、これによって sbt のインストールに Internet へのアクセスが必要無くなった。

また、依存性解決が local-preloaded 向けになるため初回起動時の起動時間が向上される。

#2993/#145 by @eed3si9n

備考

アップデートに際してプロジェクト定義の更新は必要無く、sbt 0.13.{x|x<14} から公開されたプラグインも継続して動作するはずだ。

旧演算子の廃止勧告に関しては Migrating from sbt 0.12.x 参照。

この場をお借りしてコントリビューターの皆さんにお礼を言いたい。git shortlog -sn --no-merges v0.13.13..0.13 によると sbt 0.13.13 以降 10人のコントリビューターにより (merge を除く) 42コミットがあった。敬称略 Dale Wijnand, Eugene Yokota, Guillaume Martres, Jason Zaugg, Petro Verkhogliad, Eric Richardson, Claudio Bley, Haochi Chen, Paul Draper, Ashley Mercer. Thank you!