OCaml Weekly News
こんにちは
2026年10月27日から11月3日までの週の OCaml Weekly News をお届けします。
Table of Contents
k7 0.9.0: CLI 出力の記録と再生
Thomas Gazagnaire が発表しました
CLI アニメーションを記録・再生するための小さなツール k7 0.9.0 のリリースをお知らせできて嬉しいです。
MacOS と Linux で brew を使って利用できます:
brew install samoht/tap/k7
または opam で:
opam install k7
他の類似ツールとの主な違いは、cram テストを入力または出力として使用できることです。これにより、1/ 任意の cram テストを svg ファイルに変換できる、2/ README ファイルで使用している svg をコードと常に最新の状態に保てる、という 2 つのことが可能になります。
それ以外にも、ブラウザや ffmpeg を使わない純粋な OCaml 製で、.cast ファイルや .tape ファイル(asciinema や vhs 形式)を再生でき、.cast ファイルも書き出せます。ただし、これらのツールほどオプションは多くありませんので、不足している機能や動作しない点があれば issue を開いてください。
詳細はこちらの投稿をご覧ください:https://gazagnaire.org/blog/2026-10-26-k7.html
dune トレーシング
Raphaël Proust が発表しました
この夏、@NatKarmios が [Ahrefs](ahrefs.com) でのインターンシップとして dune に取り組みました。
彼は いくつかの PR を dune にマージ させた後、トレース用の新しいバックエンドと対応する perfetto 拡張機能を作成しました。
詳細は彼のブログ記事をご覧ください: Tracing Dune, with a side of graphs
TL;DR: ビルドのグラフビュー、SQL クエリ機能が得られ、Ahrefs のモノリポのスケールにも対応しています。
私たちは内部でこの新しいトレーシング機能を活用しています。また、アップストリームへの取り込みも計画しています。
console: OCaml CLI ツールを見栄え良くする!
Thomas Gazagnaire が発表しました
見栄えの良いコマンドラインツールを構築するためのウィジェットセット console 0.9.0 のリリースをお知らせできて嬉しいです。私が心がけた主な設計方針は、インタラクティブなターミナルで使う人間にとっても、CI やその他の非インタラクティブなループ(LLM エージェントなど)で実行するスクリプトにとっても、出力が見やすいものであるべきという点です。ライブ行はその場で再描画され、プログラムが出力した有用な内容はすべて終了時にも残ります。また、パイプ経由の出力はなるべくクリーンになるよう工夫しています。
次のコマンドで使用できます:
opam install console console-eio
console のウィジェットは純粋関数型で、console-eio がアニメーションを駆動するドライバです。いくつかの制限(Windows サポートが限定的など)はありますが、すでにかなり複雑な UX を表現するために使えます。たとえば、以下は console を使ってパッケージマネージャのフロントエンドを模倣したものです(k7 で録画):
notty、progress、printbox との比較を含む詳細はこちら:https://gazagnaire.org/blog/2026-11-02-console.html
1.0 リリース前のフィードバックを歓迎します。issue tracker またはここにお寄せください。
imguiml 1.93.0
Frédéric Bour が発表しました
Dear ImGui の OCaml バインディングである imguiml の新しいリリースをお知らせできて嬉しいです。
- プロジェクトページ:https://github.com/let-def/imguiml
- ドキュメント:https://let-def.github.io/imguiml
このプロジェクトのメンテナンスを元の作者である Emilien Lemaire から引き継ぎました。
新機能:
- Dear ImGui 1.93.0 へのアップデート(ドッキングサポート付き)。
- バインディングが arm64(おそらく s390 も)で動作するようになりました。
- フォントのレンダリングが
stb_truetypeの代わりにシステムの FreeType を使用するようになり、より高品質なレンダリングと現代のフォント形式との互換性が向上しました。 - ImGui が 32 ビット文字のサポートを有効にしてビルドされるようになり、絵文字がサポートされました。
免責事項:このポートでは「Claude」が活用されました。特に最新バージョンの ImGui へのリベースと arm64 でのビルド修正に使用しました。
Introcaml 5.5.2
Frédéric Bour が発表しました
ポリモーフィックな印刷機能を OCaml に導入する拡張である Introcaml の新しいアルファリリースをお知らせできて嬉しいです。プリンタ関数を書かずに任意の型の値を表示・検査できます。導入については 最初のアナウンス をご覧ください。
Introcaml は Shogan.ai で開発されています。
このリリースは Introcaml を OCaml 5.5.2 に移植しています。試すには:
opam switch create 5.5.2+introcaml
新機能
- JSON プリンタ
汎用 JSON プリンタが
Introspect.Json.*で利用可能になりました。デバッグ用(および jq へのパイプ用 :sweat_smile:)を意図しています:# Introspect.Json.to_channel stdout [ `Point {x = 5; y = 0}; `String "foo"; `List [Result.Ok true; Result.Error false] ];; [{"Point":{"x":5,"y":0}},{"String":"foo"},{"List":[{"Ok":true},{"Error":false}]}] - : unit = () # - デバッグフラグ
-dblock-descは-dlambdaなどの出力にデスクリプタを表示します。-verboseはリンク時のデスクリプタの衝突を報告します。
互換性
オブジェクトファイルと実行ファイル(exec、cmo、cma、cmx、cmxa、cmxs)は Introcaml 固有のマジックナンバー(Caml1999?901)を使用するようになりました。cmi、cmt、ast ファイルはアップストリームの形式を維持します。
- js_of_ocaml サポート
これは js_of_ocaml リポジトリで行われた作業ですが、Introcaml との完全な互換性をもたらすために @hhugo と共に行った取り組みを紹介します。js_of_ocaml が Introcaml スイッチにインストールできるようになり、JavaScript ビルドをインストルメント化できるようになりました。これにより、js_of_ocaml でコンパイルされた OCaml プログラムにポリモーフィックな印刷機能をもたらします(私たちの実験では、実行時のオーバーヘッドは観測されませんでした)。
ブラウザの JavaScript コンソール(
console.log)とデバッガとのオプトイン統合もありますが、私の調べた限りでは Chrome 専用のようです。有効化方法 をご参照ください。
バグ修正
- デスクリプタの衝突: デスクリプタのハッシュが改善され、衝突が減少しました。衝突が発生した場合でも、誤った名前ではなくローな形式で値が表示されます。
- デスクリプタの表現: 表現がよりシンプルでポータブルになりました。
- デスクリプタの欠落: コンパイル時にデスクリプタが省略または失われるいくつかのケース(大きなネイティブアロケーション、トップレベルでの
#load)を修正しました。 - Float 配列とレコード: @vouillon が報告したバグ(#5、#6、#7)を修正し、wasm_of_ocaml との互換性への道を開きます。
- 印刷:
~stepsが長いリストや配列を適切に制限するようになり、印刷がドメインセーフになりました。
Introcaml も見逃したバグを検出するために「Claude の処置」を受けました :clown_face:。
ocaml-ssl 0.8.1
Romain Beauxis が発表しました
皆さんこんにちは!
ocaml-ssl バージョン 0.8.1 がリリースされ、opam レジストリに追加されました。
バージョン 0.8.0 は数週間前に多数のバグ修正とクリーンアップとともにリリースされ、0.8.1 では SSL v4 のサポートも追加されました。
ocaml-ssl を使用しているすべてのプロジェクトは、この最新バージョンへの更新をご検討ください。
いつものように、パッチなどのご提案を歓迎します。また、このパッケージには人手が必要ですので、参加に興味のある方はぜひお声がけください。
よろしくお願いします。
- Romain
過去の CWN
CWN を見逃した場合は、メッセージを送っていただければメールでお送りします。また、アーカイブやRSS フィードもご覧いただけます。
毎週メールで受け取りたい場合は、caml-list を購読してください。