概要
Erlang/OTP 29は多数の新機能と改善、不互換点を含むメジャーリリース セキュリティ強化や新しい言語機能、コンパイラ警告の追加 SSHやSSLなど主要コンポーネントのデフォルト設定変更 新しいガードBIFやネイティブレコードなど言語機能の拡張 詳細はREADME参照
Erlang/OTP 29の主な新機能と変更点
-
-unsafeアトリビュート による関数の危険性明示
- 危険な関数呼び出しに対し デフォルトで警告 を出力
- xref による危険関数や未ドキュメント関数の検出機能追加
-
SSHデーモン のデフォルト設定変更
- shellおよびexecサービスが デフォルトで無効化
- SFTPサブシステムも デフォルト無効化
- 「 セキュアデフォルト」原則の実装
-
SSL のデフォルト暗号化方式変更
- x25519mlkem768 (ポスト量子ハイブリッドアルゴリズム)が最優先に
-
io_ansiモジュール の追加
- ANSIシーケンスによる ターミナル装飾やアプリ作成 が容易に
-
ct_doctestモジュール の新設
- ドキュメント例の 自動テスト 実現
-
ignore_xrefアトリビュート の本体対応
- ビルドツール依存から脱却 し、xref自身がフィルタリング
-
カレントディレクトリ のパス順序変更
- デフォルトで「.」が 最後尾 に移動
-
Windows 32bit版 の廃止
言語機能の拡張
-
ネイティブレコード(EEP-79) の実装
- タプルベースでない真のデータ型 として実験的導入
-
is_integer/3ガードBIF の追加
- 値が整数かつ 範囲内か簡易判定 可能
-
多値内包表記(EEP-78) のサポート
- 例:
[-I, I || I <- [1,2,3]]で複数値生成
- 例:
-
compr_assign機能 による内包表記内の 変数束縛 が可能に
コンパイラ・JITの改善
-
compileモジュール のドキュメント強化
- BEAM上で動作する言語実装者向け 推奨事項 追加
-
JITによる バイナリ処理の最適化
- リトルエンディアン 複数セグメント処理の効率化
-
定数値マップ内包表記 のコード生成効率化
- 例:
#{K => 42 || K <- List}
- 例:
新しいコンパイラ警告
-
catch演算子 利用時の警告(非推奨)
- try…catch推奨、警告無効化も可能
-
部分式からの変数エクスポート 警告
- 例:
file:open(File, AllOpts = [write, {encoding,utf8}])
- 例:
-
and/or演算子 利用警告(非推奨)
-
パターンマッチの書き方 警告
{a,B} = {X,Y}は{a=X,B=Y}推奨
-
旧ガードテスト 利用時の警告
- 例:
list(L)ではなくis_list(L)推奨 - Erlang/OTP 30で 旧ガード完全削除 予定
- 例:
STDLIBの強化
- rand:shuffle/1 および rand:shuffle_s/2 関数追加
- リストのランダム並べ替え 機能
SSHのセキュリティ強化
- デフォルト鍵交換アルゴリズム を mlkem768x25519-sha256 へ
- 量子耐性と後方互換性 の両立
参考情報
- 新機能や非互換点の詳細 はREADMEを参照