先日公開された,Scalaの将来を解説した記事"Scala: Next Steps"の中で,Scalaチームは,今後3つのメジャーリリースの機能と目標を詳説している。言語とライブラリをよりシンプルで理解の容易なものにすること,さらなる堅牢化,そしてパフォーマンスの向上だ。
次期メジャーリリースであるScala 2.12については,InfoQの記事"Scala 2.12 Will Only Support Java 8"でも取り上げた。以降2つのリリースは,それぞれAida,Don Giovanniというコードネームが付けられている。2.12リリースの主な目標がJava 8対応であるのに対して,Aidaはコレクションの簡素化,Don Giovanniは言語の改善とコンパイラの速度向上が目標である。Don Giovanniリリースでは,Project Valhallaとのコラボレーションも計画されている。どちらのプロジェクトも,同じような目標を持っているからだ。
Project Valhallaは,Javaの言語文法とVMレベルのサポートの両方の変更が必要となる重要機能を開発する,OpenJDKの実験的プロジェクトである。Scalaが利用を望んでいるValhallaの機能は,ジェネリックタイピング(Generic Typing)とバリュータイプ(Value Type)の2つだ。
後方互換性は保証されないが,バージョン間のクロスビルドをサポートするために,ソースコード移行ツールが開発される予定である。一般的なScalaコードは容易に移植できるはずだが,マクロのような実験的機能については保証されない。
"Clojure Recipes"の著者であるJulian Gamble氏は,Hacker Newsでこの記事にいくつかのコンテキストを追加している。その中で氏は,Scalaコンパイラの開発リーダであるPaul Philips氏が昨年行った,"We're doing it all wrong"というプレゼンテーションに言及している。講演の内容はビデオ,あるいはSlideShareのプレゼンテーションで確認可能だ。Gamble氏は"Next Steps"の記事を,Martin Odersky氏による返答であると考えていて,その実践的行動を称賛している。
Scala 2.12のロードマップによれば,このバージョンは2016年1月までリリースされる予定はない。Hacker Newsには,後方互換性についての懸念の声も挙がっているが,ScalaのリードデザイナであるMartin Odersky氏は,それに対して次のように答えている。
旧バージョンと新バージョンのバウンダリは,可能な限りフレキシブルなものにするつもりです。それにはlintツールと言語インポートが重要な役割を果たします。
書き換えが検討されているのは,全般的に些細な部分であることにも注意してください。例えば,プロシージャ構文を使用するたびに": Unit ="を挿入する,あるいはXMLリテラルはすべて xml"""...""" で囲む,などです。
ひとつだけ不安なのは,実験的な機能に関してです。このような機能は,クリーンに移植することはできません。当面のアドバイスとしては,移行時にコードの大規模な変更を避けたいのであれば,実験的機能は使用しないでください。実験的機能は魅力的ではありますが,最終的にはトラップになるかも知れません。