the state of sbt 0.13, sbt server, and sbt 1.0 (scalamatsuri ver)
TRANSCRIPT
• Scala hobbyist since 2010
• ScalaMatsuri
• “learning Scalaz” / “herding Cats”
• scalaxb (XML data binding)
• treehugger.scala
• sbt-assembly, sbt-buildinfo, etc
• Lightbend/Typesafe since 2014
• tech lead of Tooling team / sbt
who is this guy (@eed3si9n)?
ScalaMatsuri では CFP の翻訳や字幕を付けたりなど Lightbend社でツール関係、sbt のメンテをやっています
• sbt server • sbt 0.13.x tech previews • sbt 1.0.x
Overview of this talk
概要: sbt server、0.13 テックプレビュー、sbt 1.0.x
• See http://eed3si9n.com/sbt-server-reboot
sbt server reboot
「sbt server リブート」を参照
• single JVM process • implemented as a command, sort of • JSON API to drive sbt from network
what is sbt server?
コマンドとして実装されている sbt をネットワーク経由で駆動するための JSON API
event logging
イベント・ロギング: オブジェクトを使ったログ JSON として転送される
• A way to log object (semantic logging) • Logs are then relayed as JSON • Decoupled from screens
sbt 0.13.6 (September 2014)
Name hashing のデフォルト化 Eviction warning などの依存性解決の改善
• Name hashing is enabled by default • HTTPS by default • Eviction warnings • Unresolved dependency error tree
sbt 0.13.7 (November 2014)
ナチュナルな空白文字処理 依存性解決のキャッシュ化
• Natural whitespace handling • Cached resolution (experimental)
sbt 0.13.8 (March 2015)
逐次タスク .settings(...) 内にセッティング列を直接書けるようになった
• Cross-version support for Scala sources • Sequential tasks • Seq[Setting[_]] can be used directly
in .settings(...) • Maven resolver (experimental)
sbt 0.13.9 (August 2015)
inThisBuild Maven 互換性の向上
• inThisBuild • Maven compatibility (read maven-metadata.xml)
sbt 0.13.11 (February 2016)
設定可能なコンパイラ・ブリッジ、Dotty サポート サブプロジェクト間の依存性レベル
• Configurable compiler bridge • Dotty support • Inter-project dependency tracking
sbt 0.13.12 (July 2016)
Build.scala の廃止勧告 scalaVersion のツールチェインへの強制
• Deprecates project/Build.scala • scalaVersion enforcement to toolchain
sbt 0.13.13 (October 2016)
new コマンド、人工サブプロジェクト sbt 0.12 DSL の廃止勧告
• sbt new command • Synthetic subprojects • Deprecate old sbt 0.12 DSL
(<<=,<+=,<++=)
sbt 0.13 lesson learned
バイナリ互換はプラグイン環境には良いけど、メンテが難しい 諸行無常
• Binary compatibility is great for plugins • Binary compatibility is hard • Everything changes
removed feature
いらない機能は捨てる
• (Non-auto) sbt.Plugin • project/build.scala • 0.12 DSL operators (<<=, <+=, <++=) • Scala 2.9.x support
new feature
新しく入る機能は Zinc とサーバー
• Scala 2.12.x based • Zinc 1.x (class-based name hashing) • sbt server
Zinc API
• Unified API to drive Scala compiler • Lightbend, Scala Center, VirtusLab, Twitter
engineers
impact to build users
ビルド・ユーザへの影響: 短期的には移植のコスト 差分コンパイルの高速化、長期的にツール環境の向上
• Some migration required • Faster incremental compilation • Hopefully improved tooling in the longterm
todo
プラグイン・エコシステム、コミュニティー・ビルドなど sbt 1.0 の検証作業が課題
• Validate using plugin ecosystem • Validate using community build
meta-tooling
第4回Reactive System Meetup in 西新宿 JSON ライブラリの歴史、マイクロサービス、およびスキーマの進化について
• 第4回Reactive System Meetup in 西新宿
• Monday, February 28th