1. sbt 1.1.xリリース

sbt 1.1.x リリース 

sbt 1.1.6 

バグ修正 

  • Unix/Linuxのファイル監視を修正しました。 io#150 by @eatkins
  • 削除された場合にpackageBinがファイルを作成しない問題を修正しました。 sbt/sbt#4161 by @dadarakt
  • 複数行の説明のhelp -vレンダリングを修正しました。 #4160 by @ninjalama
  • ログレベルを設定するための—errorなどを修正しました。 #4162 by @holdenk
  • UnmanagedソースディレクトリへのmanagedSourcesの書き込みを処理します。 #4099 by @eatkins
  • EventMonitorにおけるオーバーフローの処理を修正しました。 io#155 by @eatkins
  • UpdateLogging.Fullの下での「Resolving…」ログを復元しました。 lm#240 by @hodga
  • -Dconfig.resource=/path/to/configFileがGigahorseと競合する問題を修正しました。 lm#241 by @tanishiking
  • 非推奨のModifiedTimeメソッドの使用を削除しました。 io#154 by @dwestheide
  • Windowsでのテストを修正しました。 io#153 by @OlegYch

貢献者 

sbtとZinc 1の改善に貢献してくれた皆様に心から感謝いたします。使用、バグ報告、ドキュメントの改善、ビルドの移植、プラグインの移植、プルリクエストの提出とレビューなど、様々な形で貢献していただきました。

sbt 1.1.6は、sbt、zinc、librarymanagement、util、io、launcher-package、およびwebsiteのgit shortlog -sn --no-merges v1.1.5...v1.1.6によると、15人の貢献者によって実現されました:Ethan Atkins、Eugene Yokota、Dale Wijnand、Aaron S. Hawley、OlegYch、Richard Summerhayes、Jannis (dadarakt)、Rikito Taniguchi (tanishiking)、Øyvind Høisæther、Daniel Westheide、Harrison Houghton、Holden Karau、Håkon Wold、Jason Zaugg、およびtekay。


sbt 1.1.5 

バグ修正 

  • ファイル変更イベントとトリガー実行間の遅延を修正しました。 io#142 and sbt#4096 by @eatkins
  • WatchEventから発生する可能性のあるNPEを修正しました io#140 by @oneill
  • 削除されたファイルが~をトリガーしない問題を修正しました。 sbt#4098 by @eatkins
  • WatchService APIを満たすようにMacOSXWatchServiceを修正しました。 io#142 by @eatkins
  • キャンセル後にRejectedExectionExeptionスタックトレースを出力しないようにしました。 sbt#4058 by @retronym
  • WindowsでのJavaバージョンチェックを修正しました。 lp#227 / lp#228 by @jessicah and @spangaer
  • sbtサーバーからの予期せぬ応答を修正しました。 sbt#4093 by @laughedelic
  • コンソールとJLineのバグを再修正しました。 sbt#4123 by @eed3si9n
  • 貢献者ガイドの文法を修正しました。 sbt#4133 by @som-snytt

改善点 

  • Zincのパフォーマンス最適化を行いました。 zinc#492 by @retronym
  • Dottyコンパイラプラグインの検出サポートを追加しました。 zinc#529 by @liufengyun
  • Scalaを2.12.6に更新しました。 sbt#4129 by @SethTisue
  • JLineを2.14.6に更新しました。 sbt#4087 by @hvesalai
  • VS Codeのターミナルウィンドウでsbtを起動します。以下を参照してください。

ウォッチャーの改善 

sbt 1.1.4に引き続き、Ethan Atkinsはトリガー実行~ウォッチャーの修正と改善に貢献しました。sbt 1.1.5では、ファイル変更イベントとコマンド実行間の遅延が修正されるはずです。

VS Code拡張機能の更新 

埋め込みターミナルウィンドウでsbtセッションを開始する新しいsbt VS Code拡張機能をリリースしました。これは、sbt#4130でRobert Walker (@WalkingOlof)によって貢献されました。

sbtによる例 

sbtドキュメントにsbtによる例を追加しました。これは、William Narmontas (@ScalaWilliam)のEssential sbtに触発され、それを基にした、Docker上でアプリを構築する手順を説明したシングルページガイドです。

貢献者 

sbtとZinc 1の改善に貢献してくれた皆様に心から感謝いたします。使用、バグ報告、ドキュメントの改善、ビルドの移植、プラグインの移植、プルリクエストの提出とレビューなど、様々な形で貢献していただきました。

sbt 1.1.5は、sbt、zinc、librarymanagement、util、io、launcher-package、およびwebsiteのgit shortlog -sn --no-merges v1.1.4...v1.1.5によると、21人の貢献者によって実現されました:Eugene Yokota、Ethan Atkins、Jason Zaugg、Liu Fengyun、Antonio Cunei、Dale Wijnand、Roberto Bonvallet、Alexey Alekhin、Daniel Parks、Heikki Vesalainen、Jean-Luc Deprez、Jessica Hamilton、Kenji Yoshida (xuwei-k)、Nikita Gazarov、OlegYch、Richard Summerhayes、Robert Walker、Seth Tisue、Som Snytt、oneill、および楊博 (Yang Bo)


sbt 1.1.4 

バグ修正 

  • macOSでのトリガー実行を修正しました。詳細は以下を参照してください。
  • consoleを2回実行するとJLineが壊れる問題を修正しました。 #3482/#4054 by @eed3si9n
  • updateSbtClassifiersを修正しました。 #4070/#3432 by @steinybot
  • Javaのエラーメッセージ処理を修正しました。 zinc#524/zinc#525 by @retronym and @dwijnand
  • 移行ガイドへのエラーメッセージのリンクを修正しました。 #4063 by @dwijnand
  • WindowsでJDK 10上でsbtが実行されるようにバッチスクリプトを修正しました。 lp#225 by @eed3si9n
  • sbt -debugがログレベルをデバッグに変更するようにbashスクリプトを修正しました。 lp#226 by @eed3si9n

改善点 

  • sbt.io.JavaMilliを公開しました。 io#139 by @dwijnand
  • sbtのモンキーパッチに使用される-Dsbt.launcher.cp.prepend JVMフラグを追加しました。 launcher#50 by @fommil

macOSでのトリガー実行 

sbtは長年、macOSでのトリガー実行に問題を抱えていました。Ethan Atkinsは、彼のCloseWatchからMacOSXWatchServiceをマージすることで、この問題に対する修正に貢献しました。Ethanさん、ありがとうございます!

Greg MethvinとTakariのdirectory-watcherにも感謝します。 #3860/#4071/io#138 by @eatkins

スタンバイ状態でのsbtの実行 

プロファイリング中に直面する難しいことの1つは、アプリケーションの開始をプロファイリングしたい一方で、プロセスIDを特定することです。

この目的のために、sbt.launcher.standby JVMフラグを追加しました。sbt 1.1.4以降、次のように実行できます。

$ sbt -J-Dsbt.launcher.standby=20s exit

これは、他の処理を行う前に20秒間カウントダウンします。launcher#51 by @eed3si9n

読み込みパフォーマンスの向上 

Flameグラフを使用すると(まだ使用していない場合は、JVMアプリケーションのプロファイリングの記事をご覧ください)、Jason Zauggは、sbtの起動中にビルドファイルのハッシュコードがホットパスの1つであることを特定しました。Flameグラフはメソッド名でフィルタリングするためのCtrl+Fをサポートしており、実行したところ、時間の4.5%がEval#evalCommonメソッドで費やされていることがわかりました。

中間Array[Byte]を作成して最後にMessageDigestに渡す代わりに、Jasonは、より手続き的なスタイルで配列をMessageDigest#updateに渡すことを提案しました。それが機能することを確認した後、次にFlameグラフを使用してファイルタイムスタンプコードが次のボトルネックであることを特定し、NIOを使用するように変更しました。両方の変更後、Eval#evalCommonのフットプリントは2.3%に減少しました。

これは、ビルドの読み込みがsbt 1.1.4でわずかに高速化されたことを意味します(たとえば、akka/akkaでは約0.54秒高速化されました)。#4067 by @eed3si9n

貢献者 

sbtとZinc 1の改善に貢献してくれた皆様に心から感謝いたします。使用、バグ報告、ドキュメントの改善、ビルドの移植、プラグインの移植、プルリクエストの提出とレビューなど、様々な形で貢献していただきました。

sbt、zinc、librarymanagement、util、io、launcher-package、およびwebsiteのgit shortlog -sn --no-merges v1.1.2...v1.1.4によると、sbt 1.1.4は11人の貢献者によって提供されました:Eugene Yokota、Dale Wijnand、楊博 (Yang Bo)、Ethan Atkins、Sam Halliday、Aaron S. Hawley、Gabriele Petronella、Jason Steenstra-Pickens、Jason Zaugg、Julien Jean Paul Sirocchi、およびaumann。


sbt 1.1.2 

バグ修正 

  • ウォッチサービスをキャッシュすることでトリガーされた実行のリソースリークを修正しました。#3999 by @eatkins
  • run実行中のScalaコンパイラの依存関係をクラスローダーが継承する問題を修正しました。zinc#505 by @eed3si9n
  • フォークされたテストの同時実行性の問題を修正しました。#4030 by @eatkins
  • newコマンドがターゲットディレクトリを残したままにする問題を修正しました。#4033 by @eed3si9n
  • Null Content-Typeの処理を修正しました。lm214 by @staale
  • ivySettingsファイル内のmanagedChecksumsのNull処理を修正しました。lm#218 by @IanGabes
  • ロックをオプトアウトするためのJVMプロパティとしてsbt.boot.lockを追加しました。#3927 by @dwijnand
  • UNIXでの長いソケットファイルパスの回避策として、SBT_GLOBAL_SERVER_DIR環境変数を提供しました。#3932 by @dwijnand
  • フォークされた実行でノイズの多い「Stream closed」例外の報告を修正しました。#3970 by @retronym
  • VS Codeの保存トリガーにテストコンパイルが含まれていない問題を修正しました。#4022 by @tmiyamon
  • 数値IDが渡された場合にsbtサーバーが文字列IDで応答する問題を修正しました。#4025 by @tiqwab
  • Analysis形式のgetDecoderを修正しました。zinc#502 by @jilen
  • 配列に関する等価性/ハッシュコードの一貫性の問題を修正しました。zinc#513 by @eed3si9n
  • rtエクスポートプロセスでjava9-rt-ext-outputをホワイトリストに追加しました。lp#211 by @eatkins
  • Java 10との互換性のためにJDKバージョンの検出を修正しました。lp#219 by @eed3si9n and @2m
  • Windowsのバッチファイルでの引用符を修正しました。lp#220 by @ForNeVeR
  • -errorが起動ログを抑制しない問題を修正しました。#4036 by @eed3si9n

改善点 

  • ロギングに関するパフォーマンスの最適化を行いました。util#152 by @retronym
  • ConfigurationのhashCodeをキャッシュすることでパフォーマンスを向上させました。lm#213 by @retronym
  • コマンドが失敗した場合にsbtサーバーでエラーコード-33000Lを返します。#3991 by @dwijnand
  • 組織名とアーティファクト名にワイルドカードを許可しました。#215 by @dhs3000
  • より強力な鍵交換アルゴリズムをサポートするために、最新のJschにアップデートしました。lm#217 by @ryandbair
  • コンパイラブリッジのプリロードを修正しました。lp#222 by @analytically

内部 

貢献者 

sbt、zinc、librarymanagement、util、io、launcher-package、およびwebsiteのgit shortlog -sn --no-merges v1.1.1...v1.1.2によると、sbt 1.1.2は23人の貢献者によって提供されました:Dale Wijnand、Eugene Yokota、Jason Zaugg、Kenji Yoshida (xuwei-k)、Ethan Atkins、Martijn Hoekstra、Martynas Mickevičius、Dennis Hörsch、Hosam Aly、Antonio Cunei、Friedrich von Never、Hiroshi Ito、Ian Gabes、Jilen Zhang、Mathias Bogaert、Naohisa Murakami (tiqwab)、Philippus Baalman、Ryan Bair、Seth Tisue、Ståle Undheim、Takuya Miyamoto (tmiyamon)、Yasuhiro Tatsuno。ありがとうございます!


sbt 1.1.1 

バグ修正 

  • 「Modified names for (class) is empty」エラーを修正しました。zinc#292 / zinc#484 by @jvican (Scala Center)
  • sbt consoleとしてバッチモードで実行中のconsoleでのタブ補完を修正しました。#3841/#3876 by @eed3si9n
  • Windowsでファイルが存在しない場合のファイルタイムスタンプの取得を修正しました。#3871 / io#120 by @cunei
  • ファイルタイムスタンプ実装によってスローされるエラーを揃えました。#3894 / io#121 by @j-keckを修正しました。
  • FreeBSDに対するファイルタイムスタンプのネイティブサポートを追加しました。#3894 / io#124 by @cunei
  • JDK 10のバージョンの文字列解析を修正しました。sbt/sbt-launcher-package#209 by @2m

改善点 

  • Extracted#appendを非推奨とし、appendWithSessionまたはappendWithoutSessionを使用するようにしました。#3865 by @dwijnand
  • autoStartServerという新しいグローバルなBoolean設定を追加しました。下記を参照してください。
  • sbtクロスビルド^^で使用されるScalaのバージョンをアップグレードしました。#3923 by @dwijnand
  • @xuwei-kによる多くのドキュメントメンテナンスの変更。

autoStartServer設定 

sbt 1.1.1は、autoStartServerという新しいグローバルなBoolean設定を追加しました。これはデフォルトでtrueに設定されています。trueに設定されている場合、sbtシェルは自動的にsbtサーバーを起動します。それ以外の場合は、startSeverコマンドが発行されるまでサーバーを起動しません。これは、セキュリティ上の理由からサーバーをオプトアウトするために使用できます。

#3922 by @swaldman

貢献者 

sbt、zinc、librarymanagement、util、io、およびwebsiteのgit shortlog -sn --no-merges v1.1.0 ..v1.1.0によると、sbt 1.1.1は16人の貢献者によって提供されました:Kenji Yoshida (xuwei-k)、Eugene Yokota、Dale Wijnand、Antonio Cunei、Steve Waldman、Arnout Engelen、Deokhwan Kim、OlegYch、Robert Walker、Jorge Vicente Cantero (jvican)、Claudio Bley、Eric Peters、Lena Brüder、Seiya Mizuno、Seth Tisue、j-keck。ありがとうございます!


sbt 1.1.0 

これはsbt 1.0.xシリーズの機能リリースです。

互換性に影響を与える機能、修正、変更 

  • sbt 1.1.0ではsbtサーバー機能が再設計されています。下記を参照してください。
  • Semantic Versioningとの互換性のために、version設定のデフォルトを0.1.0-SNAPSHOTに変更しました。#3577 by @laughedelic

機能 

  • sbtシェルとbuild.sbtの構文を統一しました。下記を参照してください。

修正 

  • runClass.forNameが機能しない原因となっていたClasspathFilterを修正しました。zinc#473 / #3736 / #3733 / #3647 / #3608 by @ravwojdyla
  • PositionImplをスレッドセーフにすることで、Javaコンパイルで発生するNullPointerExceptionを修正しました。zinc#465 by @eed3si9n
  • keysWithEventsマップの同時変更を防ぐことで、PollingWatchServiceを修正しました。io#90 by @mechkg。これにより、#3687#3695、および#3775に関連する問題が修正されました。
  • ネイティブコードを使用できる場合は、File#lastModified()によるミリ秒精度の損失に対する回避策を提供します。io#92/io#106 by @cunei
  • 相対パスで動作しないIO.relativizeを修正しました。io#108 by @dwijnand
  • 複数のインスタンスが検出された場合の警告メッセージを修正しました。#3828 by @eed3si9n
  • Java 9での過剰コンパイルのバグを修正しました。zinc#450 by @retronym
  • 深くネストされたJavaクラスの処理を修正しました。zinc#423 by @romanowski
  • すべてのエラーを出力しないJavadocを修正しました。zinc#415 by @raboof
  • ScalaInstance.otherJarsでのJARの順序を保持します。zinc#411 by @dwijnand
  • 改行文字を含む場合のファイル名の処理を修正しました。zinc#449 by @jilen
  • ThisProjectの処理を修正しました。#3609 by @dwijnand
  • sbtファイルからのインポートをエスケープします。ユーザーがバッククォート付きの定義を作成した場合、タスク評価が失敗しなくなります。#3635 by @panaeon
  • 警告メッセージからバージョン0.14.0への参照を削除しました。#3693 by @saniyatech
  • screplが「Not a valid key: console-quick」というエラーをスローする問題を修正しました。#3762 by @xuwei-k
  • Scala 2.13.0-M1のサポートを復元しました。#461 by @dwijnand
  • Unixライクなファイルパスのエンコーディングをfile:///を使用するように修正しました。#3805 by @eed3si9n
  • 起動時のLog4J2初期化エラーを修正しました。#3814 by @dwijnand

改善点 

  • オプションのproject/build.propertiesに基づいてスクリプト化されたテストをフィルタリングします。下記参照。
  • プロジェクトのIDを変更するためのProject#withIdを追加しました。#3601 by @dwijnand
  • ブートディレクトリから現在のアーティファクトを削除するreboot devコマンドを追加しました。これは、sbtの開発バージョンを使用する場合に便利です。#3659 by @eed3si9n
  • reloadの前にsbtバージョンの変更をチェックする処理を追加しました。#1055/#3673 by @RomanIakovlev
  • sbtが継続的インテグレーション環境で実行されている可能性を示す新しい設定insideCIを追加しました。#3672 by @RomanIakovlev
  • CommandトレイトにnameOptionを追加しました。#3671 by @miklos-martin
  • IO.chmod(..)など、IOにPOSIXパーミッション操作を追加しました。io#76 by @eed3si9n
  • 排除警告において、Semantic Versioningを使用したsbt 1モジュールを処理します。lm#188 by @eed3si9n
  • コードにkind-projectorを使用します。#3650 by @dwijnand
  • CompletionsdisplayOnlyなどのメソッドを厳密にしました。#3763 by @xuwei-k

sbtシェルとbuild.sbtの統一スラッシュ構文 

これにより、sbtシェルとbuild.sbt DSLの両方で統一されたスラッシュ構文が追加されます。現在の<project-id>/config:intask::keyの代わりに、<project-id>/<config-ident>/intask/keyが追加されます。ここで、<config-ident>は、CompileTestのような設定のScala識別子表記です。(古いシェルの構文は引き続き機能します)

これらの例は、シェルとbuild.sbtの両方で動作します。

Global / cancelable
ThisBuild / scalaVersion
Test / test
root / Compile / compile / scalacOptions
ProjectRef(uri("file:/xxx/helloworld/"),"root")/Compile/scalacOptions
Zero / Zero / name

inspectコマンドは、コピーアンドペーストできる出力を生成するようになりました。

> inspect compile
[info] Task: sbt.inc.Analysis
[info] Description:
[info]  Compiles sources.
[info] Provided by:
[info]  ProjectRef(uri("file:/xxx/helloworld/"),"root")/Compile/compile
[info] Defined at:
[info]  (sbt.Defaults) Defaults.scala:326
[info] Dependencies:
[info]  Compile/manipulateBytecode
[info]  Compile/incCompileSetup
....

#1812/#3434/#3617/#3620 by @eed3si9n and @dwijnand

sbtサーバー 

sbtサーバー機能は、MicrosoftによってVisual Studio Code向けに作成されたプロトコルであるLanguage Server Protocol 3.0(LSP)をワイヤプロトコルとして使用するように改良されました。

実行中のサーバーを検出するために、sbt 1.1.0はビルドを基準として./project/target/active.jsonにポートファイルを作成します。

{"uri":"local:///Users/foo/.sbt/1.0/server/0845deda85cb41abcdef/sock"}

local:はUNIXドメインソケットを示します。ncを使用してサーバーにhelloと伝える方法は次のとおりです。(^MCtrl-V、次にReturnで送信できます)

$ nc -U /Users/foo/.sbt/1.0/server/0845deda85cb41abcdef/sock
Content-Length: 99^M
^M
{ "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "initializationOptions": { } } }^M

sbtサーバーはsbtのシェルコマンドにネットワークアクセスを追加するため、ターミナルからの入力を受け入れることに加えて、サーバーはネットワークからの入力も受け入れます。compileを呼び出す方法は次のとおりです。

Content-Length: 93^M
^M
{ "jsonrpc": "2.0", "id": 2, "method": "sbt/exec", "params": { "commandLine": "compile" } }^M

実行中のsbtセッションは、compileをキューに入れ、コンパイラの警告とエラーがある場合は、それらと共に返されるはずです。

Content-Length: 296
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:/Users/foo/work/hellotest/Hello.scala","diagnostics":[{"range":{"start":{"line":2,"character":26},"end":{"line":2,"character":27}},"severity":1,"source":"sbt","message":"object X is not a member of package foo"}]}}

#3524/#3556 by @eed3si9n

VS Code拡張機能 

sbtサーバーを念頭に置いている主なユースケースは、エディターやIDEなどのツール統合です。概念実証として、Scala (sbt)というVisual Studio Code拡張機能を作成しました。

現在、この拡張機能は次のことができます。

  • *.scalaファイルが保存されると、ルートプロジェクトでcompileを実行します。#3524 by @eed3si9n
  • コンパイラのエラーを表示します。
  • ログメッセージを表示します。#3740 by @laughedelic
  • クラス定義にジャンプします。#3660 by @wpopielarski

project/build.propertiesを使用したスクリプト化されたテストのフィルタリング 

project/build.propertiesが存在するすべてのスクリプト化されたテストについて、sbt.versionプロパティの値が読み取られます。そのバイナリバージョンがsbtBinaryVersion in pluginCrossBuildと異なる場合、テストはスキップされ、それを示すメッセージがログに記録されます。

これにより、サポートされている最小sbtバージョン(例:0.13.9および1.0.0-RC2)を追跡するスクリプト化されたテストを定義できます。#3564/#3566 by @jonas

貢献者 

sbt、zinc、librarymanagement、util、io、およびwebsiteのgit shortlog -sn --no-merges v1.0.4..v1.1.0によると、sbt 1.1.0は33人の貢献者によって提供されました:Eugene Yokota、Dale Wijnand、Antonio Cunei、Kenji Yoshida (xuwei-k)、Alexey Alekhin、Simon Schäfer、Jorge Vicente Cantero (jvican)、Miklos Martin、Jeffrey Olchovy、Jonas Fonseca、Andrey Artemov、Arnout Engelen、Dominik Winter、Krzysztof Romanowski、Roman Iakovlev、Wiesław Popielarski、Age Mooij、Allan Timothy Leong、Ivan Poliakov、Jason Zaugg、Jilen Zhang、Long Jinwei、Martin Duhem、Michael Stringer、Michael Wizner、Nud Teeraworamongkol、OlegYch、PanAeon、Philippus Baalman、Pierre Dal-Pra、Rafal Wojdyla、Saniya Tech、Tom Walford、そしてアイデアを提供してくれた多くのその他の方々。ありがとうございました!