2026-08-30

週次オープンソース:下から積み上げるエミュレータ、そして H.266 がコーパスをほぼ閉じる

週の大半はコーデックのラウンドが続き、そして日曜日、コミットの 奔流とともに新しいプロジェクトが現れた:rsemu、意図的に一番下 ——メモリモデル、クロック、ワイヤ、スナップショット形式——から 始め、マシンはまだ一つもないエミュレータだ。その日の終わりには サイクル精度の 6502 と、それを囲む NES があった。その間に oxideav-h266 は適合性コーパス全体まであと数ストリームに迫り、 fstool は暗号化ボリュームを開けるようになった。

rsemu:まずフレームワーク、それから NES

rsemu は「Pure-Rust の マルチプラットフォームエミュレータ、下から積み上げて作る」。README は順序を明言している:まず汎用フレームワーク——アドレス空間、 クロックドメイン、ワイヤ、デバイス、バス、変換 IR——次に CPU コア と周辺機器、そして コンパイルで組み込むのではなく設定ファイルで 記述されるマシン。「NES が欲しければ .machine ファイルを書く。」 低いところから始めると最初の ROM が起動するまでに時間がかかる。 その代わりに得るのは、追加されるすべてのマシンが共有する一つの メモリモデル、一つのクロック、一つのスナップショット形式、一つの デバッガだ。設計原則はスタックの他の部分と揃っている:C なし、 FFI なし、空のデフォルト cargo tree、名前を挙げた数か所以外は クレート全体で unsafe を禁止、no_std + alloc のコア、そして 明示的なモードとしての決定性。

初日のコミットはまさにその順序で、ブランチごとに一つのサブ システムを積んだ:

  • コア — プロパティシステム、チャンク化されたバージョン付き スナップショット、ワイヤ(発信元の識別を運ぶ信号線)、 sync 並行性の継ぎ目、リージョン・フラットビュー・ディスパッチを 持つ アドレス空間、そして 発振器の森 のスケジューラ: 水晶ごとに一本のクロック木、木の中では厳密な整数比(「NES の PPU は CPU 1 サイクルにつき正確に 3 ドット進む、永遠に」)。
  • マシン DSL — .machine ファイルのレキサ、AST、パーサ、 リゾルバとバリデータ、そして realize:構築、マップ、配線、 掃引、実行。
  • NES — カートリッジイメージと NROM ボード、サイクル精度の APU、サイクル単位の RP2C02 ピクチャユニット。
  • 最初の CPU コア — サイクル精度の MOS 6502 インタプリタで、 SingleStepTests を完全に通った 時点でマージされた。コアが 一つもないうちに作られた適合性ハーネスと、パーサとスナップショット デコーダ用の fuzz ハーネス付き。

oxideav-h266:56 本中 50 本

oxideav-h266 の スコアカードは二ラウンドで 34P/12F/9U/1E から 50P/1F/5U/0E へ 動いた。ラウンド 452 は並進インター経路の明示的重み付き予測、残差 レベルの limited-EGk エスケープ(LOSSLESS_B_3 がバイト厳密に)、 CCLM の利用不可側の置換を加えた。ラウンド 453 はクロマ デブロッカでの変換ブロックごとの TuCResMode——クロママージンの 失敗群を閉じた——、参照ピクチャのラップアラウンド(DMVR_A_3)、 affine と SbTMVP の CU での重み付き予測(WP_A_3)、クロマ量子化 グループの状態、明示的な仮想境界付きのスライスごとの LMCS を もたらした。

H.264 と H.265:仕様全体を使うエンコーダ

oxideav-h264 は MBAFF フレーム、フェード検出付きの明示的重み付き予測、長期参照 付きの複数参照 P 符号化、MMCO と RPLM、マルチスライス / FMO / ASO / 冗長スライス、SP/SI 切り替えピクチャ、オプトインの完全トレリス RDOQ をエンコードするようになった。デコーダはデータ分割、任意 スライス順、冗長ピクチャの破棄、12/14 ビットのゲートを得た。 oxideav-h265 は再帰的な coding-quadtree エンコーダ(CTB 32/64、RD 分割、4×4 DST イントラ)、複数参照リスト付きの時間方向 MVP、適応ミニ GOP、 非一様タイルグリッド、CTU レベルのレートフィードバック、フィラー データ付き CBR、Annex C 適合の HRD シグナリングを得た。

Dolby と DTS の音声

これまでデコーダだった oxideav-dts が コアエンコーダ を得た:32 バンドの分析 QMF(合成バンクの 厳密な逆)、ADPCM 予測、トランジェントモード、高域 VQ、二パス 割り当て付きのエントロピー符号化、ダイナミックレンジと joint intensity——コミットしたストリームを不透明なリファレンスデコーダに 復号させて検証している。 oxideav-ac4 は A-JOC の 両復号モードとイマーシブ経路での ダイアログエンハンスメント、 オブジェクト経路への static-core ダウンミックス合成、そして五ラウンド 分の発見が境界チェックになった cargo-fuzz サブクレートを加えた。

fstool:LUKS と qcow2

fstool は LUKS1 と LUKS2 のボリュームを読み・書き・フォーマットし、暗号化 qcow2 イメージを読み書き(LUKS 暗号化のものを作成も)し、qcow2 の バッキングファイル をたどってその上にオーバーレイを作れるように なった——すべて CLI から使え、ヘッダが制御するアロケーションには 上限をかけた。暗号は purecrypto から来るので、暗号化ディスク イメージも no-C スタックの中に留まる。

今週その他

  • oxideav-opus — §2.1 の全オプションと §4.5 の規範的モード遷移を持つ統一 OpusEncoder。
  • oxideav-h263 — Annex J デブロッキングフィルタのエンコーダ、PB フレームの MVDB 探索、適応量子化、全エンコーダ系統のブラックボックス相互検証。
  • oxideav-ifc — BIM リーダのフェーズ 3:名前付きパラメトリックプロファイル、テーパー スイープ、ジオリファレンス、EXPRESS の WHERE 規則検証。
  • nixvm — システム コールの忠実度:ホストマウント上の本物のハードリンク、 O_EXCL/O_NOFOLLOW の強制、sigqueue を通る si_code/si_value。
  • z3rs — simplify が 特殊角での三角関数を評価し、基礎代数的実数の比較を厳密に畳み込む。
  • graphitesql — SQLite C API をさらに(get_table、prepare の各変種、キーワード の内省)、v0.1.7 としてリリース。

来週

rsemu にはフレームワークとマシンが一つある。自然な次の一歩は、 同じコアの上に CPU コアとボードを増やし、それぞれに独自の適合性 スイートを付けることだ。H.266 は最後の数ストリームまで来ており、 エンコーダは広がり続ける。