BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Scala 2.11 メジャーリリース最新版

Scala 2.11 メジャーリリース最新版

ブックマーク

原文(投稿日:2014/05/06)へのリンク

Typesafe社は最近、三条項BSDライセンスに基づくScala 2.11のリリースを発表した。このメジャーリリースにはscalac, REPL, パッケージング/モジュール化, マクロ, コレクションライブラリ, その他様々なバグフィックスが含まれる。Scala 2.11はJava6をターゲットとしており、Java8については限られた範囲での試験的サポートに留まっている。2.10系とのバイナリ互換性はないが、2.10にて廃止予定警告 (deprecation warning) なしでコンパイルされたコードは2.11でもコンパイル出来るようだ。

2.11系から組み込まれた新機能を下記に抜粋して紹介する。

コレクション. List map, flatMap, collectのパフォーマンスが向上した。Immutable HashMapとHashSetは処理が早くなり、メモリフットプリントが削減された。また、キーがLongもしくはAnyRefの場合のパフォーマンス向上のため、Mutable LongMapとAnyRefMapが追加された。

コンパイラ. インクリメンタルコンパイルとバッチコンパイルの性能が向上した。試験的.NETバックエンドが除去された。未使用の変数や型、インポート等を警告してくれるよう-Xlintがアップデートされた。試験的バックエンドとscalacのオプティマイザとしてGenBCodeが導入された。試験的-Ydelambdafy:methodを使用することで、少ないバイトコードで高速に無名関数がコンパイルされるようになった。さらに、定数評価による部分木の削除が行われるようになった。

REPL. インタプレタがJSR-223に準拠したスクリプトエンジンとなった。逆アセンブラコマンド:javapがJava 7で動作するようになった。新コマンド :kindによって型コンストラクタから基の型が分かるようになった。

モジュール化. XML、パーサコンビネータ、Swing、継続のモジュールがコアのScala標準ライブラリから分離された。モジュールは個別に、もしくはScalaリリースを構成するモジュールを統合するscala-library-allにて使用可能である。コンパイラについても内部でモジュール化されており、プレゼンテーションコンパイラ、scaladoc、REPLを分離している。これらのコンパイラモジュールはScala 2.12にて別々のJARとなる予定だ。

マクロ. 構文木を操作するための使いやすい表記法である、準クォートが追加された。さらに、Scalaメタプログラマにとって知っておくべきリフレクションとマクロについての多数の重要な変更がある。詳しくはマクロ Scala2.11での変更点に記載されている。

Scala 2.11は2.10とのバイナリ互換性はないため、2.11を使用するためビルドをアップデートする必要があるだろう。Scala 2.11リリースノートの使用可能プロジェクトセクションにて、既に2.11用に対応されたScalaプロジェクトの一覧を確認出来る。また、多数の非推奨も発表されており、非推奨セクションにて確認することが出来る。例えば、scala-actors, scala.concurrent.future, scala.concurrent.promise等が非推奨となっている。

Scala 2.11を始めるには、Typesafe ActivatorのHello Scala 2.11テンプレートが使用出来る。Eclipse 4.2/4.3 (Juno/Kepler)用のScala 2.11アップデートサイトからEclipseのScala用IDEが利用可能である。Scala 2.10からアップグレードする場合は、アップグレード前に全ての非推奨警告を解決しておくことをお勧めする。また、XML、パーサ、Swingモジュールを使用している場合、これらの依存関係を明示的に追加する必要がある。アップグレードする決心が付かない人に注意してほしいこととしては、2.10系はメンテナンスモードに入り、2014年末にはバージョン2.10.5にて終了となる可能性が高いという点が挙げられる。

この記事に星をつける

おすすめ度
スタイル

BT