Posted at

Erlang/OTP 19.0 (2016年6月リリース予定)のハイライト

More than 3 years have passed since last update.

来月(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 プロセスフラグが追加されました。




リリースノート

詳しくはリリースノートを参照してください。