by shigemk2

当面は技術的なことしか書かない

memo: 次世代Scalaコンパイラー Dottyの今 #ScalaMatsuri

dotty

  • dot計算はScala型システムの理論的基礎
  • Dotty EPFLが開発中の実験的な新コンパイラ
  • Scalaと同じような感じ
  • インクリメンタルコンパイル
  • パターンマッチの再設計
  • ミスしてはいけない
  • コンポーネントのなかではよいと思うものがあること
  • よい開発者の経験のためにはよいツールが必要
  • IDEサポートもしている
  • Dottyリンカが呼び出しグラフを解析して最適化
  • 到達不能コードの削除 @specializeの自動化

将来の話

  • 技術プレビュー版のDottyをリリース
  • Scala2もDottyで検証した機能を取り込む
  • バグがあるならフィードバックください

  • ScalafixはScala2からDottyへの移行を自動化するツール

  • 型推論の差異
  • Scalafix automatically rewrites your code to ease migration.

Dottyで使わない機能

  • Scala2のマクロ
    • scala.metaが新しいシステムとなり、Scala2とDottyの両方をサポートする予定
  • Procedure Syntax
    • プロシージャ構文の変更 必ずUnitをつける
  • forSome
    • forSomeはつかわないで代わりにワイルドカードを使う

新機能

  • 型推論の改善
  • Dottyでは関数の引数の22個制限がなくなる‼‼
    • Function2…Function22
  • 交差型 A & Bの導入
  • 合併型 A | Bの導入
  • コンパイラが合併型の網羅性を警告してくれる
  • トレイとパラメータの導入で事前定義の機能は廃止

提唱中

  • Enums Javaライクな列挙型 代数的データ型も定義可能
  • Non-nullable types nullを許容しない型をデフォルトとする
    • Null is a subtype of no other type
    • now: null is a subtype of every non-value clsas
    • nullを許容しないタイプ

contributing

  • Documentation: dotty.epfl.ch
  • gitter.im/lampepfl/dotty
  • Test our IDE Support
  • compile your project
  • Issue投げてね