来月(2016年6月)に正式リリースが予定されている Erlang/OTP 19.0 について、リリース候補版(rc1)の配布が始まっています。
Erlang はスケールしやすく、分散処理や耐障害性に優れたアプリケーションを作るための動的型付けの関数型言語。OTP は17年に及ぶ実運用で鍛えぬかれた、ライブラリ、ツール、mnesia 分散データベースなどの標準アプリケーションの総称です。
ソースコード
GitHub から、タグ OTP-19.0-rc1
で、ソースコードを取得してください。
kerl を使ってビルドするのが簡単でしょう。
ドキュメント
ドキュメントはこちらにあります。
主な新機能と改良点
19.0 の主な新機能と改良点は以下の通りです。(Erlang/OTP 19.0-rc1 is available for testing で紹介されている内容を参考にしました)
-
コンパイラ、stdlib:
- 新しいプリプロセッサ・マクロ
?FUNCTION_NAME
,?FUNCTION_ARITY
が追加されました。 - 新しいプリプロセッサ・ディレクティブ
-error(Term)
と-warning(Term)
が追加されました。これらは、コンパイルエラーや警告を出すために使います。
- 新しいプリプロセッサ・マクロ
- gen_statem: ステートマシンのビヘイビアが追加されました。
- mnesia_ext: mnesia に外部ストレージをプラグインするための、実験的な API が設けられました。
- crypto: OpenSSL の EVP インターフェイスを使用するように変更されました。これにより、全体的な性能が向上し、また、ハードウェアによるアクセラレーションが可能になりました。
-
ssh:
gen_statem
ビヘイビアを採用し、性能が向上しました。 - dialyzer: map 型のサポートが、型スペックと型分析の両方で大幅に拡張されました。
-
erts:
-
erlang:open_port(spawn, ...)
(外部プロセスの実行)が3倍から5倍高速化されました。 - トレーシング機能が大幅に改良されました。スケーラビリティとスピードの向上、send/receive 関連のマッチ・スペックの追加、Linux の LTTng 対応などなど。
- dirty scheduler が改良されました。
- メッセージキューで参照されているデータの扱いを、プロセスごとに設定できるようになりました。これらのデータをガベージコレクションの対象外にしたりできます。
-
max_heap_size
プロセスフラグが追加されました。
-
リリースノート
詳しくはリリースノートを参照してください。