Think Distributed

Database and Distributed Systems

Erlang OTP 22 の変更点

OTP 22 Highlights – A Blog from the Erlang/OTP team – The Erlang/OTP team at Ericsson, the implementors and maintainers of Erlang/OTP.

  • コンパイラが書き直された
    • 従来は Erlang AST -> Core Erlang -> Kernel Erlang -> Beam Asm だったが、Kernel Erlang を Beam SSA に(ほぼ)置き換えた。
    • OTP 22 からは Erlang AST -> Core Erlang -> Kernel Erlang -> Beam SSA -> Beam Asm こうなったとのこと。
    • bit syntax が強化されて、従来よりも2倍程度早くなった模様。
    • 同一モジュール内での型の受け渡し時に型チェックの最適化が入って、型チェックが省略できるケースが増えた。
      • BEAM のコードで ope が減る。
  • 実験的に socket API が追加された。
    • gen_tcp, gen_udp ではない低レベルなソケット通信が実装可能になる。
    • OTP 23 で高レベルな API も追加される予定。
  • ets の ordered_set で concurrent write ができるようになった
    • 複数プロセスからの書き込み時にスケーラビリティが向上した。
  • TLS の性能改善
  • 分散 erlang でのフラグメント化されたメッセージのサポート
    • デカいメッセージを分散 erlang で送ろうとするとブロッキングする問題があるので。
    • 従来のフラグメント化しないメッセージも引き続き使われる。
    • 番号順に相手に到達しなければならない、など色々制約はある。
  • counters, atomics, persistent_term モジュールが追加された。
  • メモリ最適化
    • メモリのキャリアが複数のアロケータータイプ間で移動することができるようになった(PR1854)
    • プールされているキャリアにある空きメモリブロックを OS に返せるようになった(PR2046)