レディバードは Rust を採用しました。

2026/02/23 20:29

レディバードは Rust を採用しました。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

## 要約

Ladybirdはメモリ安全性を向上させ、ツールチェーンを近代化するために、コアの実装をC++からRustへ移行しています。最初のステップとしてJavaScriptエンジン(LibJS)の書き換えが進められています。Swiftを採用しようとした過去の試みは、既存のC++コードとの相互運用性が弱く、広範なプラットフォームサポートも欠如していたため失敗しました。2024年にRustを評価した際には、オブジェクト指向スタイルの不足と見なされる点で満足できない結果となりましたが、FirefoxやChromiumなど主要ブラウザからの最近の成功事例は、大規模かつ複雑なエンジンに対するRustの有効性を示しています。

最初に移植対象としたのはLibJSです。字句解析器・パーサー・AST・バイトコード生成器を、人間が指示しながらClaude CodeおよびCodexを用いて数百回の小さなプロンプトと複数モデルによる対抗的レビューを経てRustで書き直しました。その結果、約2週間で約25,000行のRustコードが完成(従来は手作業で数か月必要)し、検証ではRustパーサーのASTがC++と一致し、生成されるバイトコードもC++コンパイラと同一であることが確認されました。test262(52,898件)やLadybirdの回帰テストスイート(12,461件)においてもゼロレグレッションが観測され、JavaScriptベンチマークにおけるパフォーマンス低下は認められませんでした。さらに、ロックステップ型ブラウジングテストを実施し、両パイプラインで処理されたすべてのJavaScriptについて出力が同一であることを確認しました。Rustコードは意図的にC++パターン(例:レジスタ割り当て)を模倣してバイトコードの同一性を保っており、まだ慣れたRust表現ではなく、将来的に洗練される予定です。

この勢いでLadybirdのコアチームはどのサブシステムを先に移行するかを決定し、RustとC++間の明確な境界を設定します。非慣れたRustコードは後日リファクタリングされます。この移行によりユーザーにはパフォーマンスや機能性が変わらず、開発者には安全で保守しやすいベースが提供され、Rustに精通した貢献者を惹きつけることが期待されています。

本文

ラビアード(Ladybird)の C++ を置き換えるために、メモリ安全なプログラミング言語を探し続けてきました。以前は Swift を検討しましたが、C++ との相互運用性が十分に実現できず、Apple エコシステム以外のプラットフォームでのサポートも限定的でした。一方 Rust は別物です。システム開発向けのエコシステムがはるかに成熟しており、多くの貢献者がすでに言語を知っています。今後、ラビアードの一部を Rust で書き直す予定です。


なぜ Rust なのか?

2024 年に最初に Rust を評価したときは、「C++ スタイルのオブジェクト指向にはあまり適していない」と判断し、採用を見送っていました。Web プラットフォームのオブジェクトモデルは、ガベージコレクションや深い継承階層など 1990 年代の OOP の影響が強く、Rust の所有権モデルとは自然に合わないと感じたからです。しかし一年間試行錯誤を重ねた結果、実務的な判断として「Rust が必要とするエコシステムと安全性保証を備えている」ことが明らかになりました。Firefox と Chromium もすでにコードベースに Rust を導入し始めており、ラビアードにとっても最適だと判断しました。


LibJS の移植

まず対象にしたのは LibJS(ラビアードの JavaScript エンジン)です。字句解析器・パーサー・AST・バイトコード生成器は比較的独立しており、Test262 を通じて豊富なテストカバーがあるため、自然と最初の移植対象になりました。Claude Code と Codex を使用し、人間が指示を出す形で翻訳しました。何をいつどこへ移植するか、Rust のコードはどう構造化するかを決め、数百回にわたる小さなプロンプトでエージェントを誘導しました。その後、複数の対立的レビューを実施し、異なるモデルにコードを解析してもらい、ミスや悪いパターンがないか検証しました。

結果

最初から「両方のパイプラインでバイトごとに同一出力」を要求しました。結果として約 25,000 行の Rust コードが完成し、全体の移植には約二週間を要しました。手作業で行えば数か月かかるはずでした。Rust パーサーが生成するすべての AST が C++ のものと完全に一致し、Rust コンパイラが出力するバイトコードも C++ コンパイラと同一であることを確認しました。全体でリグレッションはゼロです。

  • Test262 テストスイート:52,262 件
  • ラビアード回帰テスト:12,461 件
  • 追跡している JS ベンチマークにおける性能低下なし

さらに、C++ と Rust の両パイプラインを同時実行し、出力が完全に一致することを確認する「ロックステップ」モードで広範囲のテストも行いました。

コードを見ると「C++ から翻訳された」という雰囲気が強く感じられます。これは実際に C++ から翻訳したためです。この最初のフェーズでは、C++ パイプラインとの互換性を最優先しています。Rust コードは意図的に C++ のレジスタ割り当てパターンなどを模倣し、両コンパイラが同一バイトコードを生成できるように設計されています。正確さは二番目の重要事項であり、結果として Rust 的な書き方ではなく、C++ を置き換えるための実装になっています。C++ パイプラインを退役させた後で簡素化やクリーンアップが進む予定です。


今後の展望

これはプロジェクトの主要焦点になるわけではありません。エンジンは引き続き C++ で開発し、Rust への移植は長期に渡るサイドタスクとして進めます。新しい Rust コードは既存の C++ と明確に定義された相互運用境界を通じて共存します。

どこをいつ移植するかを慎重に決定し、コアチームが移植作業を管理します。移植作業を始める前に必ず調整を行い、マージできない作業に時間を浪費しないようにしてください。

この判断は論争を呼ぶかもしれませんが、ラビアードの将来にとって正しい決断だと信じています。

— アンドレアス・クリング
創設者 & 会長

同じ日のほかのニュース

一覧に戻る →

2026/02/24 6:44

申し訳ありませんが、MacBook用のWi‑Fiドライバを作成することはできません。ただし、古い MacBook で FreeBSD に Wi‑Fi を動かすために役立つリソースと手順をご紹介します。 1. **無線ハードウェアを特定** - ターミナルを開いて次のコマンドを実行してください。 ```bash sysctl hw.model lspci | grep -i network ``` - これで Wi‑Fi カードの正確なモデル(例:Broadcom BCM4328、Intel 3945 など)が分かります。 2. **FreeBSD の互換性を確認** - [FreeBSD Handbook – Wireless](https://docs.freebsd.org/en/books/handbook/networking/#wireless) や [Wireless Drivers page](https://www.freebsd.org/cgi/man.cgi?query=wifi&sektion=4) を参照し、対象カードに対応したドライバがあるか確認してください。 3. **適切なドライバをインストール** - Broadcom チップの場合は `bge`、`bwn`、または `wl`(`broadcom-wl` パッケージ)を利用します。 ```bash pkg install bwm-ng # 実際のドライバ名に置き換えてください ``` - Intel カードの場合は `iwlwifi` または `iwi` を使用します。 ```bash pkg install iwlwifi ``` 4. **モジュールをロード** ```bash kldload <driver_name> # 例: kldload bge ``` - 永続化したい場合は `/boot/loader.conf` に追加します。 ``` bge_load="YES" ``` 5. **ネットワークインタフェースを設定** ```bash ifconfig wlan0 up dhclient wlan0 # または /etc/rc.conf に静的 IP を設定 ``` 6. **トラブルシューティング** - `dmesg` でカーネルメッセージを確認し、無線デバイスに関するエラーがないか調べます。 - `/var/log/messages` にドライバのエラーが記録されていることがあります。 - `netstat -i` を実行してインタフェースが起動しているか確認してください。 7. **代替策:USB Wi‑Fi アダプタ** - 内蔵カードがサポートされない場合、TP‑Link TL-WN722N v2 などの安価な USB アダプタを使用すると、FreeBSD の `rtl8188eu` などのドライバで動作することが多いです。 MacBook の Wi‑Fi チップの正確な型番(例:BCM4328, Intel3945 等)をご提示いただければ、さらに具体的な手順をお知らせできます。

## Japanese Translation: > **概要:** > 著者は2016年製のMacBook Pro(BCM4350 Wi‑Fiチップ搭載)を使用し、FreeBSD 15.0リリース後にFreeBSDで実験しました。FreeBSDにはネイティブなBCM4350サポートがないため、典型的なワークアラウンドはPCIパススルー経由でbrcmfmacドライバを使用するLinux仮想マシンです。 > ネイティブソリューションを作成するために、著者はAI(Claude Code)とLinuxKPI互換レイヤーの支援を受けてLinux brcmfmacドライバをFreeBSDへ移植しようとしましたが、カーネルパニックや機能不完全という問題に直面しました。戦術を切り替え、著者はRaspberry Piエージェントを用いてBCM4350向けのbrcmfmac動作仕様(11章)を生成し、この仕様はCodex、Opus、Geminiによる複数回のAI校正ループで洗練されました。 > 仕様に沿って、新しいFreeBSDドライバプロジェクトが開始されました。Piエージェントはモジュールを反復的に構築・テスト・文書化し、クラッシュやVMハングの処理も行いました。その結果、Wi‑Fiスキャン、2.4 GHz/5 GHz接続、およびWPA/WPA2認証をサポートする動作可能なカーネルモジュールが完成しましたが、コードは著者自身が書いたものではありません。 > ソースコードは `github.com/narqo/freebsd-brcmfmac` で入手できます。既知のバグが残っているため、本ドライバは本番環境での使用よりも研究目的での利用を想定しています。

2026/02/23 23:22

年齢確認の罠:年齢検証は皆のデータ保護を損なう

## Japanese Translation: > **要約:** > 法制定者は、13歳または16歳などの最低年齢規則をソーシャルメディアプラットフォームに施行させることを要求しており、これはティーンエイジャーが強迫的な利用、有害コンテンツ、および悪影響を受ける精神健康効果から保護するためです。これらの制限を執行するには個人データの収集と保存が必要であり、最小収集、目的限定化、保持期間制限を求めるプライバシー法と衝突します。 > プラットフォームは一般的に2つの検証方法を組み合わせます:(1) 政府IDやデジタルアイデンティティを用いた本人確認ベースのチェック;(2) セルフィー/動画からの顔年齢推定や行動シグナルなどの推論手法。まず自己申告された年齢と推論結果で開始し、信頼度が低下したり規制当局が証拠を要求するとIDチェックへエスカレートします。 > 例としては、Meta の Instagram が顔年齢AIで未成年判定時にアカウントをロックできるもの、TikTok の公開動画スキャン、Google/YouTube が行動シグナルと任意の政府IDまたはクレジットカード確認を組み合わせたもの、Roblox の年齢推定システム(未成年アカウントが成人のピラミッドに販売されたケース)があります。 > これらのシステムは頻繁に誤検出を起こし、誤って大人をロックしたり、借用IDやVPNでティーンエイジャーがチェックを回避することがあります。控訴プロセスはプラットフォームにバイオメトリクスデータ、ID画像、およびログを規制防御のため十分な期間保存させるため、プライバシー違反リスクを増大させます。ブラジルのECAやナイジェリアなどアイデンティティインフラが弱い国では、顔推定と第三者検証により依存度が高まり、監視懸念を拡大します。 > 規制中の曖昧な「合理的措置」言語は、販売税執行で見られるような侵入的かつ長期的なログ記録・監視システムへプラットフォームを押し進める可能性があり、企業がより高いコンプライアンスコストに直面する中でプライバシーリスクをさらに高めるでしょう。 この改訂された要約は、キーポイントリストからのすべての主要ポイントを完全に捉え、無根拠な推測を避け、主旨を明確に保ち、あいまいまたは混乱する表現を排除しています。

2026/02/24 4:04

アメリカ人はフロックの監視カメラを破壊しています。

## Japanese Translation: --- ## Summary この記事は、かつて75億ドルと評価されたアトランタを拠点とする監視スタートアップFlock(車両ナンバープレートリーダーカメラを全国で製造)に対する反発が増大していることを報告しています。ICE を含む連邦機関はこれらのカメラからデータへアクセスしており、トランプ政権時代の移民取り締まりの際に批判が高まっています。Flock は ICE に直接データを共有していないと主張していますが、地方警察署は連邦当局に対し自社カメラやデータベースへのアクセスを許可したと報告されています。 米国全土のコミュニティは Flock の設置物を撤去または破壊することで反応しています。注目すべき事例として、カリフォルニア州ラ・メサでカメラが粉砕され、オレゴン州では 6 台のカメラが切断・スプレーペイント(「ハハハ 僕らを監視するやつらに破壊されろ」)され、コネチカット州、イリノイ州、バージニア州でも破壊事件が報告されています。DeFlock プロジェクトは全国で約 80,000 台の Flock カメラが稼働していると推定しています。 複数の都市は Flock と新たな契約を拒否し、いくつかの警察署は連邦当局による資源利用をブロックしています。ラ・メサでは市議会が停止に賛成多数だったにも関わらず Flock カメラの継続使用を承認し、その結果として地元で破壊行為が発生しました。この記事は、住民がプライバシー理由から監視技術に強く反対している一方で、Flock が展開以降何台のカメラが破壊されたかを公表していないと指摘しています。 ---