search term:

sbt 1.0.4 hotfix とパフォーマンスまわりの修正

Lightbend の技術系ブログ Tech Hub blog に sbt 1.0.4 hotfix and the performance fixes という記事を書いたので、訳しました。

@eed3si9n) 著

皆さんこんにちは。アメリカに住んでいる人たちは、良い感謝祭 (Thanksgiving) の連休すごせたでしょうか。 遠くからの親戚や友達が集まって食事を作ったり、小咄を交わす年中行事という意味では、日本の正月休みに近いものがあると思う。

あと、sbt 1.0.4 をリリースしたこともアナウンスします。これは sbt 1.0.x シリーズの hotfix で、バグ修正にフォーカスを当てたバイナリ互換リリースだ。 sbt 1 は Semantic Versioning にもとづいてリリースされるので、プラグインは sbt 1.x シリーズ中機能することが期待されている。

パフォーマンスデグレの修正

感謝祭ということで、お世話になっている人たちの事を考えるわけだけど、僕は Scala のツーリングエコシステムにコントリビュートしてくれている皆さんに感謝している。これは、sbt へのコードのコントリビュートだけじゃなく、考えさせられるブログ (Haoyi さんの So, what’s wrong with SBT? など)、トーク (Jeff さんの Beyond the Build Tool など)、ドキュメンテーション、IDE/エディタ統合、や代替ビルドツール (Chris さんの cbt など) も含めている。冷笑的に「sbt はダメ」って言って終わりにするんじゃなく、この人たちは腕をまくって、sbt そのものを直したり、代替案を考え出しているからだ。

sbt 1 に関連してパフォーマンスのデグレが報告されているが、何人もの人が飛び込んで取り組んでくれている。

以下は、Leonard / Sam の 25個のサブプロジェクトを使ったテストプロジェクトで no-op compile を行った sbt 1.0.4 のパフォーマンスだ:

注意: sbt セッションが立ち上がっていることを前提として、ベンチマークのコンパイル時間の結果からスタートアップ時間を差し引いた。

sbt 0.13.16 sbt 1.0.3 sbt 1.0.4
startup 28s 38s 34s
no-op compile* 27s 46s 22s
no-op compile x2* 37s 80s 33s

sbt 1.0.3 で no-op コンパイルのがデグレしたが、sbt 1.0.4 では 0.13.16 より 10 から 20% ぐらい速くなっていることが分かる。

Java 9 関連の修正

sbt 1.0.4 は、Java 9 で警告が出る Ivy 内でのリフレクションの使用を取り除いた。以前のバージョンでそれをやろうとして作り込んでしまったバグを吉田さん (@xuwei_k) が修正してくれた。これらが、launcher と library management モジュールに行き渡ったので、警告の数は減ると思う。

Scala 2.13.0-M2 サポート

Adriaan (@adriaanm) は、Scala の 2.13.x ブランチで REPL まわりのコードの構造を改善している。これに対して sbt 側で対応する必要があるので、まだ 2.13 がマイルストーンのうちに対策した。 ブリッジとなるコードを sbt 1.0.3 を使って Scala 2.13.0-M2 でコンパイルして確認する必要があったが、sbt 1.0.3 が 2.13.0-M2 に対応していないという堂々巡り問題を対策する必要があった。

zinc#453 by @eed3si9n and @jan0sch

その他の修正

参加

sbt や Zinc 1 を実際に使ったり、バグ報告、ドキュメンテーションの改善、ビルドの移植、プラグインの移植、pull request をレビューしたり送ってくれた皆さん、ありがとうございます。

sbt, zinc, librarymanagement, util, io, website などのモジュールで実行した git shortlog -sn --no-merges v1.0.3..v1.0.4 によると、sbt 1.0.4 は 17人のコントリビュータのお陰でできました (敬称略): Eugene Yokota, Kenji Yoshida (xuwei-k), Jorge Vicente Cantero (jvican), Dale Wijnand, Leonard Ehrenfried, Antonio Cunei, Brett Randall, Guillaume Martres, Arnout Engelen, Fulvio Valente, Jens Grassel, Matthias Kurz, OlegYch, Philippus Baalman, Sam Halliday, Tim Underwood, Tom Most. Thank you!

sbt を手伝ってみたいと興味があれば、好みによって色々な方法があります。

他にもアイディアがあれば、sbt-contrib で声をかけてください。