OCaml Weekly News
こんにちは
2026年6月9日から16日までの週の OCaml Weekly News をお届けします。
Table of Contents
OCaml ランタイムを C から Rust へ一行ずつ翻訳する
Archive: https://discuss.ocaml.org/t/a-line-by-line-translation-of-the-ocaml-runtime-from-c-to-rust/18247/1
Michael Bacarella が発表しました
Rust コミュニティは OCaml コミュニティに恩義があります。最初の Rust コンパイラは OCaml で書かれていました。この投稿では、OCaml ランタイムを Rust で書き直します。その恩返しの頭金とお考えください。:saluting_face:
Marks Shinwell は傷つけられていません[1]
編集者注: この投稿はニュースレターに掲載するには長すぎるため、オンラインでお読みいただくことをお勧めします。
OCaml 5.5.0 の最初のリリース候補
octachron が発表しました
OCaml 5.5.0 のリリースが間近に迫っています。
最終ステップとして、来週のリリース前にすべてが正常であることを確認するためのリリース候補を公開します。
バグを発見した場合は、OCaml のイシュートラッカーに報告してください。
最初のベータ版と比べて、このリリース候補にはランタイム修正が2件、標準ライブラリ修正が2件、その他の修正が6件、ドキュメントの更新が1件含まれています。
OCaml 5.5.0 の完全な変更履歴は GitHub で公開されています。
Happy hacking, OCaml チームを代表して Florian Angeletti。
インストール手順
ベースコンパイラは、opam 2.1 以降で以下のコマンドを使用して opam switch としてインストールできます:
opam update opam switch create 5.5.0~rc1
リリース候補のソースコードは以下から直接入手できます:
コンパイラ設定の細かい調整
コンパイラの設定を調整したい場合は、以下のコマンドでオプションバリアントに切り替えられます:
opam update opam switch create <switch_name> ocaml-variants.5.5.0~rc1+options <option_list>
ここで <option_list> は ocaml-option-* パッケージのスペース区切りリストです。例えば、flambda と no-flat-float-array の switch の場合:
opam switch create 5.5.0~rc1+flambda+nffa ocaml-variants.5.5.0~rc1+options ocaml-option-flambda ocaml-option-no-flat-float-array
利用可能なすべてのオプションは opam search ocaml-option で一覧表示できます。
最初のベータリリースからの変更点
- ランタイム修正
- #14820: caml_ba_alloc は自身が割り当てたメモリを考慮しなければなりません。 data=NULL の CAML_BA_SUBARRAY(5.2 で導入)は、Gc が割り当てを 0 バイトとして計上してしまい、最終的に OOM を引き起こす可能性があります。この条件はコンパイラ自体では発生しませんが、既存の bigarray と同じ形状の新しい bigarray を作成しようとする外部 C バインディングで発生します。後方互換性のため、data が NULL の場合は CAML_BA_SUBARRAY を無視します。 (Edwin Török、Damien Doligez によるレビュー)
- …, +#14722: ランタイム、ephemeron の孤立化における修正 (Gabriel Scherer、Olivier Nicole および Damien Doligez によるレビュー、 Jan Midtgaard による報告)
- 標準ライブラリ修正
- #14853, CVE-2026-41083,
OSEC-2026-05: Windows 上で
Filename.quote_commandに渡されるファイル名のクォート処理を修正。 (David Allsopp、Andrew Nesbitt による報告、Florian Angeletti によるレビュー) - …, +#14715: POSIX スレッドセーフな getgrnam_r、getgrgid_r、 getpwnam_r、getpwuid_r、gmtime_r、localtime_r、getlogin_r を使用し、mktime の エラーチェックを修正。 (Antonin Décimo、Florian Angeletti、David Allsopp、Stefan Muenzel、 Gabriel Scherer、および Miod Vallat によるレビュー)
- #14853, CVE-2026-41083,
OSEC-2026-05: Windows 上で
- コンパイラユーザーインターフェース修正
- #14702: 非表示ディレクトリのファイルが可視ロードパステーブルに漏れ出る問題を修正。 非表示ディレクトリにベース名が既に存在するファイルが含まれている場合、そのファイルが誤って可視テーブルに追加される可能性がありました。 (Hugo Heuzard、Florian Angeletti によるレビュー)
- Compilerlibs 修正
- #14797: パッケージ型に付加された属性を表面構文でプリティプリントする際に 属性が欠落する問題を回避。 (Chet Murthy、Nicolás Ojeda Bär によるレビュー)
- 設定修正
- ドキュメント修正
- 内部修正
- …, +#14550: not-root 組み込み ocamltest アクションを追加。これにより、 現在のユーザーが root(スーパーユーザー)の場合に失敗するテストをスキップできます。 (Kate Deplaix、Gabriel Scherer、Nicolás Ojeda Bär、および Antonin Décimo によるレビュー)
Plan 9 向け OCaml 4.14.3
このスレッドを続けて、Eduardo Cavazos が発表しました
plan9 の acme エディタでの ocaml repl のデモと、いくつかの統合機能を紹介します:
そこでデモされている acme-repl はこちらです:
Miou、OCaml 5 向けシンプルなスケジューラ
Calascibetta Romain が発表しました
miou.0.7.0 のリリースをお知らせできることを嬉しく思います。このリリースは以前のものほど印象的ではありませんが、unikernel 向けの純粋な OCaml 実装の SSH を提供するようになりました!このリリースでは特に Miou.get が導入され、orphan に保存されたタスクを待機して取得できるようになりました。詳細については、こちらで入手可能なドキュメントをご参照ください。
このリリースはエコシステム全体を強化するものでもあります。http、tls、tcp/ip、smtp、dns、ntp に続いて、unikernel(および OCaml アプリケーション全般)で利用可能なプロトコルに ssh を追加できるようになりました。Cstruct.t(現在非推奨化中)から string への移行(Cstruct.t のパフォーマンス問題の観察をきっかけに数年前から開始したプロセス)に関する @hannes の作業のおかげで、mnet-ssh を完成させることができました。
そして、notty~/~nottui(および [~lwd~](github.com/let-def/lwd))への取り組み、unikernel 向け SSH サポート、そして MirageOS リトリートの一つを経て、@reynir が開発したプロジェクト banawa-chat を復活させました。これは SSH 経由で「誰でも使えるチャットルーム」を提供する unikernel です。接続するだけで他のユーザーとチャットでき(ミニ IRC)、unikernel がターミナルの概念を認識していないにもかかわらず TUI を提供します!プロジェクトはこちらで公開されており(opam pin だけで banawa.hvt を入手できます)。
この統合はいくつかの unikernel とツールの出現とともに形になりつつあり、現在利用可能になっているものをいくつかご紹介します:
- 別の古い unikernel が復活しました: pasteur とそのデプロイメント https://paste.osau.re/%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF
vifへの取り組みを示し、unikernel の形でシンプルな Web アプリケーションを作成する方法を実証します。 aussiは Docker と組み合わせて Solo5 unikernel を非常に簡単にデプロイできる小さな実験的プロジェクトです(現在は単純なdocker runで十分です!)。ただし、本番環境のデプロイには引き続き albatross をお勧めします。chaosはついに Rubicon を渡りました。新しいワークフローを試すために1年前に始めたこのプロジェクトは、NTP サーバー(「Chrony スタイル」)として現在osau.re:123で利用可能です。
私たちは引き続き unikernel を提供し、積極的に使用して改善に努めています。開発しているものについてのフィードバック(いかなる種類でも)を提供してくださるすべての方に感謝します。皆さんのフィードバックにより、私たちのコープが OCaml コミュニティ(そして広くは unikernel ユーザー)に提供できるものを共に改善できています。私たちの活動が気に入っていただけたなら、寄付(直接または GitHub 経由)でサポートしていただけます。Happy hacking!
OCaml 4.14.4 リリース
octachron が発表しました
Ariane 4 初飛行の記念日に、OCaml バージョン 4.14.4[^1] のリリースを発表できることを光栄に思います。
このリリースは、OCaml 5 ブランチから cherry-pick された標準ライブラリの安全なバグ修正とセキュリティ修正のコレクションです。
4.14 ブランチは少なくとも 2026 年末まで断続的なアップデートを受け取ることが予定されています。
ただし、延長メンテナンス期間の終了が視野に入ってきています。 そのため、OCaml 5 への移行に残る障害があればお知らせください。
それまでの間、OCaml イシュートラッカーへのバグ報告をためらわないでください。
詳細については、以下の変更リストをご覧ください。
Happy hacking, OCaml チームを代表して Florian Angeletti。
—
インストール手順
ベースコンパイラは、以下のコマンドで opam switch としてインストールできます:
opam update opam switch create 4.14.4
リリース候補のソースコードは以下から直接入手できます:
—
OCaml 4.14.4 の変更点(2026年6月15日)
- ビルドシステム:
- バグ修正:
- #14599, #14606: ARM64 プラットフォームで、ocamlopt が一部の命令のサイズを過小評価していました。 これにより相対分岐オフセットのオーバーフローが発生し、アセンブラからエラーとして報告される可能性がありました。 (Xavier Leroy、Vincent Laviron によるレビュー、Raphaël Proust による報告)
- #14607: Risc-V での libasmrun_shared.so とのリンクを修正(riscv.o で宣言された未定義シンボル) (David Allsopp、Nicolás Ojeda Bär によるレビュー)
- #14661: pthreads フラグで dllthreads.so をビルド(#13018 で削除されていた)。 通常のプログラムでは意味的な違いはありません(ocamlrun と ocamlc.opt は常に pthreads でリンクされているため)が、 dllthreads.so を dlopen したいプログラムが自身で pthreads をリンクすることを要求するのは退行でした。 (David Allsopp、Gabriel Scherer によるレビュー)
- #14655, #14691, CVE-2026-34353, OSEC-2026-04: caml_ba_reshape におけるサイズオーバーフローのチェック (Stephen Dolan、Xavier Leroy によるレビュー)
- #14853, CVE-2026-41083, OSEC-2026-05: Windows 上で Filename.quote_command に渡されるファイル名のクォート処理を修正。 (David Allsopp、Andrew Nesbitt による報告、Florian Angeletti によるレビュー)
[^1]: OCaml 5.5.0 のリリースは今週後半に予定されています。
過去の CWN
CWN を見逃した場合は、メッセージを送っていただければメールでお送りします。また、アーカイブやRSS フィードもご覧いただけます。
毎週メールで受け取りたい場合は、caml-list を購読してください。