Erlang/OTP 29.0
(erlang.org)- SSHデーモン はデフォルトで shell と exec サービスを無効化し、明示的に設定しない限り、認証済みユーザーが任意の Erlang コードを実行できないようになった
- SSHデーモン起動時に SFTPサブシステム もデフォルトでは有効化されなくなり、セキュリティのデフォルト設定が強化された
-unsafe属性が追加され、安全でない関数を示せるようになり、コンパイラは Erlang/OTP で常に安全でないと分かっている関数呼び出しに対してデフォルトで警告を出すxrefは安全でない関数呼び出しとドキュメントのない関数を検出でき、ignore_xref属性のフィルタリングもxref自体で処理するように変更された- SSL のデフォルト設定では x25519mlkem768 が最優先の鍵交換グループになり、SSH のデフォルト鍵交換アルゴリズムも ML-KEM-768 と X25519 を組み合わせた
mlkem768x25519-sha256に変更された - Erlang システムのデフォルトコードパスで、現在の作業ディレクトリ
.の位置が先頭から末尾へ移動し、読み込み順序が変わった - Windows 向け 32-bit Erlang/OTP ビルド は今後提供されない
- EEP-79 の native records が実装され、Erlang/OTP 29 では実験的機能と見なされる
is_integer/3guard BIF、EEP 78 に基づく複数値 comprehension、compr_assign機能による comprehension 内での変数バインディングが追加された- コンパイラは
catch、部分式の外への変数エクスポート、and/or、{a,B} = {X,Y}のような match alias パターンに対してデフォルト警告を追加し、それぞれに無効化オプションを提供する - 古い guard test は Erlang/OTP 30 で言語から削除される予定で、従来の obsolete guard 使用警告も引き続き適用される
io_ansiによりターミナルへ ANSI/Virtual Terminal Sequence を出力でき、ct_doctestにより Erlang モジュール文書とドキュメントファイルの例をテストできる
1件のコメント
Hacker Newsのコメント
改善はかなり良さそう。SSHデーモンをデフォルトで無効化し、SFTPもデフォルト無効にしたのは、セキュリティ面で良い変更だと思う
io_ansi モジュールもかなり良さそう。今のErlangは複雑なコマンドラインアプリケーションを作る際の選択肢としてそこまで語られることは多くないが、標準ライブラリに入れば今後大きな助けになりそう。
fwriteがノード間で自然に動作する仕組みも、Erlangに期待するまさにその強みだNative Records の追加も興味深い。今のElixirでは状況に応じてレコード、タプル、マップが混在して使われている感じなので、今後どう活用されるのか気になる。EEPで述べられているように既存のレコードが完全に廃止されるわけではないだろうが、かなりの改善に見える
https://www.erlang.org/doc/apps/ssh/ssh.html
https://www.erlang.org/docs/29/apps/stdlib/io_ansi.html
https://github.com/erlang/eep/pull/81
SSHデーモンは今やシェルとexecサービスがデフォルトで無効化されており、secure by default の原則に従っている。明示的に設定しない限り、認証済みユーザーが任意のErlangコードを実行できないようにしている
SFTPサブシステムも、SSHデーモン起動時にデフォルトで有効化されなくなった
Erlang/OTPの OTP が何か気になっている人向けに説明すると、もともとは通信分野向けに高信頼・耐障害性アプリケーションを標準化して構築するためのライブラリと原則のまとまりだ
基本的な考え方としては「OTP Design Principles」の導入部を軽く読むとよい
https://www.erlang.org/doc/system/design_principles.html
プロダクションアプリが29未満なら、このバージョンか最新のパッチ版にできるだけ早く更新したほうがよいかもしれない。さっき本番にデプロイしたところ、自動セキュリティスキャンで2026年2〜5月日付の CRITICAL CVE 2件 と、HIGHリスクの項目がいくつも検出された
まだ新規プロジェクトで Erlang を使っている人がいるのか気になる
ここにElixir好きが多いのは分かっているけど、純粋なErlangの話
まだErlangを使っているなら、Elixirより好む理由が何なのか知りたい
Elixirは自分にとってErlangに対する実質的な利点を与えてくれない。もちろん利点はあるのだろうけど、Erlangのほうが自分の思考にしっくりくる。学んだり助けを得たりする場も、もっと社交的な集まりのように楽しみたいのだが、自分に合う場所をうまく見つけられていない
内部構造を誰か説明できる?
https://blog.stenmans.org/theBeamBook/
レコードがエコシステムの中でどう位置づけられるのか気になる
興味深い。Elixirがいつかマップを native records にコンパイルする世界があるのか気になる
WhatsAppはまだErlangベースなのか知っている人いる?
2010年代初頭からErlangを使っていて、その頃に技術業界では、WhatsAppがエンジニア30人ほどで4億人超のアクティブユーザーを支えていることが知られるようになった
当時そこのエンジニアの1人に連絡し、アメリカに住んでいた頃にメールでいくつかの質問に丁寧に答えてもらった。結局コーヒーも飲んだし、今でも連絡を取り合っている
Erlangは今でもWhatsAppの重要な一部だと言ってよいと思う
-unsafe属性のサポート追加とは、Rustに書き直すには絶好のタイミングだな /sErlangなんて一体誰が使っているのか分からない。Railsを使ってからPhoenixを触ってみたけど、何かをやり遂げるのがずっと難しかった
Phoenixへの熱狂が理解できない
1人開発者にとっては、Railsがたぶん最も生産的なWebアプリシステムだ。LLMもRuby on Railsのコードはとても上手に書く。Pythonの学習コーパスは膨大なのに、私の経験ではDjangoよりずっと上手い
実験的なアプリはRailsで書いて、安定したらGoで書き直す。アプリのスコープが曖昧なときに最初からGoで書くとトークンをずっと多く使うが、Railsには非常に効率的だ
最近はReactやAngularももう不要で、RailsではHotwireを使い、GoではHTMXを使っている
Erlangフォーラム自体もRailsで書かれたDiscourseを使っている
もう少し視野を広げたほうがいい
method_missingのようなものに突き当たり、動作を把握するのに余計な時間がかかるElixir/Phoenixはその点でより明示的なので、長期保守、つまり最初の1週間を過ぎたあたりからはずっと楽になる。隠れた状態もないし、
ModuleName.method(params)がどこから来たのか探し回る必要もないし、そのメソッドを実行するために何かを設定する必要もなく、正しい引数を渡せばよい。欠点は、すぐ使えるパッケージライブラリがやや少ないことくらいだEctoも悪くない
Claude CodeはElixirコードをかなり上手に書く
驚くことに、LLMがあってもなくても、もともと知っている技術を使うときのほうが生産的だ