HN🔥 226
💬 51

宇宙へ飛び立つOCaml:関数型言語の極限活用術

yminsky
約16時間前

ディスカッション (11件)

0
yminskyOP🔥 226
約16時間前

OCamlが宇宙空間で活躍する、そんな驚きのプロジェクトについて探求します。高信頼性が求められる宇宙ミッションにおいて、関数型プログラミングがどのように貢献しているのか、その技術的な背景や可能性を深掘りします。

1
avsm
約15時間前

ここでの最大の利点は、デフォルトでGC(ガベージコレクション)が備わっているにもかかわらず、型注釈を増やすだけでスタックを経由してヒープアロケーションを減らせるってところだね。

    exclave_やstack_といったアノテーションを使ってOxCamlに切り替えたところ、
    ディスパッチのホットパスにおいてp99.9のレイテンシがパケットあたり29 nsから9 nsに短縮され、
    GCの負荷が完全に解消されました(2500万パケットでマイナーGCが394回発生していたのがゼロに)。
    スループットも同等です [...]

数ヶ月前に自分の「httpz」スタックでも似たような結果が出たよ(https://anil.recoil.org/notes/oxcaml-httpz )。今のところウェブサイトもトラブルなしで動いてる。あと、言わせてもらうとOxCamlは最先端の拡張機能が満載なのに驚くほど堅牢なコンパイラだよ。インフラで一度もコンパイラのバグによるクラッシュは起きていない(OCamlのコード自体がひどいことはあったけど、コンパイルエラーのせいじゃない)。

2
dsab
約14時間前

CCSDSに従うと、何もかもゼロから作り直す羽目になるよね。このスタックを実装する上で、メモリ安全性が最大の攻撃対象領域になるとは思えないな。大手プレイヤーが衛星のネットワーキングをどう実装しているかは知らないけど、自分ならデータ暗号化を再発明するより、TLSみたいに既存で実績のあるものを当てはめるかな。あのドキュメントを見ればわかるはず:https://www.google.com/search?client=firefox-b-lm&q=ccsds+encryption+guide

3
rho_soul_kg_m3
約14時間前

いや、もしかしたら自分がOCamlを宇宙に飛ばした最初の一人かもしれない。具体的には2016年にGHGSat-Dで地球低軌道に載せたんだ。ペイロードソフトウェアをDBus経由で通信するSystemDサービス群として設計して、プラットフォーム(ペイロードを載せて衛星を制御・操縦するもの)と通信するためのCCSDS-to-DBusブリッジも組み込んだよ。ペイロードは規制に従って、生成されたデータの共通鍵暗号化も行っていた。

パリのOCamlユーザーグループでそのペイロードソフトウェアについて発表もしたな。

あのアーキテクチャを選んだ理由は、ペイロードソフトウェアを自分一人で全部書くとは思っていなかったから。他の開発者が加わったとき、当然彼らはOCamlみたいな奇妙な言語なんて使いたがらないだろうから、彼らは自分の担当分をC/C++/何でも好きな言語で書いて、システム全体はそのまま機能するようにと考えたんだ。もちろん、そんなことは起きなかったけどね。

今でも会社がOCamlを使っているとしたら驚きだな。業界標準の言語に戻して、業界標準の問題を抱えるのがいつものパターンだから。処理やシミュレーションのツールチェーン全体もOCamlで書かれていたんだけどね。

今日なら、Rustを使わない理由はほとんどないよ。処理サイドもペイロードソフトウェアも両方カバーできるし。それでもまだC/C++に固執する人はいるけど。まあ、請求書が切れるなら自分はそれでも構わないけどさ。

追記:当時のスライド見つけた:https://lambda-diode.com/static/data/GHGSat_OCaml.pdf

4
kcsrk
約13時間前

ここ数ヶ月で驚いたのは、エージェントがOCaml 5+やOxCamlのコードを生成するのが本当に上手いってこと。トレーニングデータにはほとんど含まれていないはずなのに。OxCamlの強力な型やモードが、エージェントを導くための検証可能なオラクルとして機能しているみたいだ。

OCaml 5とOxCamlを使った並行プログラミングのコースを教えたとき、教材のコードのほとんどはAIによる生成(vibe coded)だった。50人以上の学生に教えていたから全コードをレビューしたけど、正直言ってエージェントが書くO(x)Camlの方が(ほとんどの場合)自分より上手かったよ。

5
noelwelsh
約13時間前

HNは今、Rust対Zigで盛り上がっているみたいだけど、OxCamlはその両方の代替として検討されるべきだと思う。Rustの売りは安全性、Zigの売りは人間工学だけど、OxCamlは安全性と人間工学を両立できることを示している。自分で少し触ってみた感じ1、本当に使いやすかったよ。

6
DeathArrow
約13時間前

KCは講演の締めくくりに、CやRust並みのパフォーマンスを発揮できる言語機能のおかげで、OCaml 5.0は月へ行くだろうと推測していた

かなり力強い断言だね!OCamlがそこまで行くところを見てみたいよ。

7
Decabytes
約12時間前

GCのある多くの言語には、クラスを最小限に抑えてスタックに積むことでGCの負荷を減らす手法があるのは知ってる。Javaのような言語だと、最初に大量のメモリを確保しておいて、高頻度取引のシナリオでは一日中ガベージコレクタをオフにするなんて話も聞いたことがあるよ。

そんな状況に直面したことはないけど、ガベージコレクションのある言語を、GCのない言語のように振る舞わせるのがどれくらい難しいのか気になるな。

8
satvikpendem
約12時間前

ずっと前から思っていたんだけど、RustにもOCaml 5のような代数的エフェクトのシステムが必要じゃないかな。両方使ってみて、いろいろなユースケースでどれくらい上手くいくか比較した人はいる?もちろんRustの方がOxCamlより成熟しているけど、もしJane Streetにとって十分なら…って話だよね。

9
Maksadbek
約12時間前

信頼性を重視した言語には詳しくないんだけど、知っている限りではAda、Rust、Haskellあたりが代表的だよね。OCamlがそれらの代替案よりも優れているとされた理由は何だったんだろう?