週次オープンソース:6502 から Linux 起動まで進むエミュレータ、そしてスタックの上のコーディングエージェント
コミットの多い週で、その大部分が一つのリポジトリに入った。 先週の日曜日に始まったエミュレータ rsemu は、最初のまる一週間で、 単一の 6502 から、三つのアーキテクチャで無改変の Linux カーネルを 起動するボードまで登った。その周りでは、スタックの下の層が締まり 続けた:purecrypto はセキュリティ監査的な一掃を受け、新しい エンコーディングクレート charcode によって、rsemu がディスクに 使う fstool がサードパーティ依存の大半を落とせた。そして atelier が始まった:スタック自身の部品で組み立てた小さな AI コーディングエージェントだ。
rsemu:6502 から Linux まで
rsemu は、まず
フレームワークを作り、マシンを .machine ファイルで記述する
Pure-Rust のエミュレータだ。今週(600 コミット超)はそのフレーム
ワークが仕事に就き、週末時点の README は CPU コア 10 個 を挙げ、
公開コーパスがあるものには測定した適合性の結果を添えている:
6502 はバストレース込みで SingleStepTests 2,560,000 / 2,560,000、
Z80 は 1,604,000 / 1,604,000 に加えて zexall 67/67、RV64GC は
riscv-tests 409/409 と Sail モデルに対する riscv-arch-test 181/181、
8086/8088、MIPS R3000A は 55,000 / 55,000、68000 は 124 の命令
ファイルすべてを通過、Game Boy の SM83、ARMv5TE、ARMv7E-M、
そして AArch64——最後のものは、ダウンロードできるスイートが存在
しないため rsemu 自身が作るスイートに対して。
それらのコアの上に、マシンファイル 34 本:
- ゲーム機 — NES(NTSC、PAL、Dendy)は PPU・APU・DMA の タイミング修正の長い連続の末、マシン全体の精度テスト AccuracyCoin 141/141 を、既知失敗の台帳を空にして通る。 Game Boy は blargg 12/12、mooneye 59/66 に到達。Sega Master System は、コアが汎用であることの二つ目の証明として入った。
- 小さなコンピュータ — タイプできる Apple 1 と、1976 年の Woz Monitor を走らせる Ben Eater の 6502 ブレッドボード コンピュータ。
- 他人が書いたソフトウェアを起動するボード —
riscv-virtは 実体化したマシンから生成したデバイスツリーで OpenSBI を走らせ、 Linux 6.12 をシェルまで 起動し、EDK2 も UEFI シェルまで。riscv-virt-smpは二つの hart を立ち上げる。arm64-virtは Debian の arm64 カーネルを busybox まで起動し、virtio ディスク から ext4 ルートをマウントする。x86 では、q35-linuxが生成された ACPI テーブルを見つけて NVMe ネームスペースから読む素の Gentoo 6.6 カーネルを起動し、q35-uefiは OVMF をShell>プロンプトまで 導き、pc-atは rsemu 自身が書いたレガシー BIOS の上で FreeDOS 1.3 を起動する。
その下では実行エンジンも育った:superblock 付きの変換 IR、
ソフトウェア TLB、x86-64 ホスト JIT(x86 コアでは Linux 起動の
99.3% が変換済みブロックの中で走るようになった)、ホストの
シリコン上で Linux をユーザ空間まで起動する KVM バックエンド、
静的リンクおよび glibc の Linux バイナリ——SQLite、Lua、
coreutils——を実行するユーザモードランナー、そして GDB リモート
スタブと VNC サーバ。ブラウザデモは Vue 3 で作り直され、いまは
PC/AT が動く。ディスクイメージは fstool を通り、fstool が自身の
依存を削ったことで --all-features 時の依存リストは 33 クレート
から 10 に減った。ロードマップは一つの問いにも決着をつけた:
nixvm は rsemu に統合されるのではなく、rsemu に依存する。
purecrypto:監査的な一掃と AVX-512
スタック全体の下にある no_std 暗号ツールキット
purecrypto は、96
コミットの大半を、監査報告を一行ずつ片付けていくような堅牢化に
使った:演算ごとに新しい RSA ブラインダ、小位数の Ed25519/Ed448 鍵の
拒否、ECDSA ノンスと DRBG 状態のゼロ化、Lucky13 イコライザから
秘密サイズのアロケーションを除去、TLS_FALLBACK_SCSV の尊重、
名前制約のワイルドカード SAN による迂回を閉鎖、CRL と PKCS#12 の
処理量に上限、Falcon 署名の可鍛性を固定、そしてランダムな
シリアルで証明書を発行し、既定では CSR の SAN を写さなくなった
CLI。QUIC はコネクションマイグレーション、0-RTT 再開、サーバの
preferred address、graceful close を得て——その後 DoS 対策の上限を
一巡。速度面では ChaCha20(AVX2 比 1.9 倍)、BLAKE3、16 レーンの
SHA-256、8 並列の Keccak の AVX-512 カーネルを、耐量子方式に
接続した。v0.8.0 と v0.8.1 としてリリースされ、rsurl と puressh が
すぐに取り込んだ。
atelier:スタックの部品で作るコーディングエージェント
atelier は「Rust で
書かれた最小限 TUI の AI コーディングハーネス」だ:OpenAI 互換の
モデル API と話し、プロジェクトディレクトリの中でツールを走らせ、
MCP を話し、毎ターン新しいコンテキスト——git status、diff、
レイアウト、cargo check の診断——を自分に与えるエージェント
ループ。インターフェースは意図的に小さい:入力行一つとステータス
帯、それ以外はすべてターミナルのスクロールバックに追記される。
スタックを再利用している——HTTP に rsurl、設定に tomlproc
——そして node ツールは kataan の上で JavaScript を走らせる:
スクリプトはプロジェクトディレクトリに閉じ込められ、ネットワーク
アクセスはゲートされ、暴走したスクリプトは、kataan が同じ週の
v0.0.9 リリースで加えた協調的なホスト割り込みで止められる。
権限は閉じ込めに従う——プロジェクトに閉じたファイルツールは確認
なしで走り、bash、MCP ツール、ネットワークを使うスクリプトは
確認を求める。週末までに、自ら永続化しローリング要約へ圧縮する
セッション、トークン予算付きのコンテキスト、画像入力、multiedit
ツール、stdio と Streamable HTTP の MCP、--print ヘッドレス
モードを備えた。
charcode:エンコーディング、そして軽くなった fstool
charcode は Rust の
文字エンコーディング変換だ:WHATWG Encoding Standard——
ブラウザが実際に使うエンコーディング、ラベル、エラー挙動——を、
依存なし、unsafe なし、no_std 対応で、iconv 風の CLI 付きで。
そして標準より先へ進んだ:標準は shift_jis や big5 のような
ラベルを意図的に上位集合へ対応づけるので、charcode はそれらの
ラベルが実際に指す文字集合——Shift_JIS と EUC-JP そのもの、
ISO-2022-JP、-JP-2、-KR、-CN、GB 2312、Big5、本物の ISO-8859-9 と
TIS-620、UTF-7、SCSU——を、それぞれ独自のフィーチャの後ろに加え、
ブラウザ向けの置換は別のルックアップの後ろに置いた。
すぐに使われた。fstool
は encoding_rs を charcode に置き換え、thiserror、crc32fast、
crc32c を落とし、APFS の case-folding を intl に移し、
tomlproc に切り替えた:codecs ビルドはいまや 7 クレートで、
うち 3 つが自前(compcol、charcode、intl)、残るサードパーティの
名前は uuid だけだ。
今週その他
- teamclaude — マルチアカウントプロキシが、リクエストごとのコスト記録、 ヘッドレスマシン向けのコピー&ペースト OAuth、レート制限や 5xx での一回限りのフェイルオーバー、期限圧によるアカウント選択、 MITM モードでの Codex の傍受を得た。
- kataan — ホスト
割り込み付きの v0.0.9、加えて配列・regex・組み込み・パーサに
わたる百余りの test262 修正と、二つの O(n²) 経路の除去
(
Array.prototype.sort、for-of)。 - pktkit-rs — WireGuard と OpenVPN が暗号をすべて purecrypto に移し、rustls を 落とした。L2 ハブに VLAN のアクセス/トランクポート。
- nixvm — 公平な
仮想実行時間スケジューリング、本物のジョブ制御、setuid の権限
降格、
SCM_RIGHTSの fd 受け渡し、clone3のフラグ一式。 - catcard — Coldcard ファームウェアに、手描きの猫のブートスプラッシュ、フォント非依存の テキスト層、PIN ログインシーケンス。
- selecard — 新規: 販売終了した文化シヤッターの SeleCard II と III のシャッター リモコンを、電波を聞くだけでリバースエンジニアリングしたもので、 HackRF と YARD Stick One で OPEN / STOP / CLOSE を復号・再現する Python ツール付き。
- rsurl — 匿名の一時
ストレージへのダウンロード、libc なしの
fullrustターゲットでの CI。 - z3rs — CAD の
フォールバックとして QF_NRA 上のモデル構築型
nlsat探索、get-consequences、root-obj項。 - oxideav — oxideav-midi は MIDI 2.0 にネイティブ対応(UMP、Clip File、MIDI-CI、ノートごと のコントローラ)し、SoundFont の LFO とモジュレータも。 oxideav-tiff は JPEG-in-TIFF 用に自前の JPEG エンコーダを育てた。 oxideav-ac3 はエンコーダを 磨き、E-AC-3 の放送ストリーム復号を直した。
来週
rsemu には文書化された停止点の長いリストがある——各ボードは どこまで行けるかだけでなく、どこで止まるかを記録している—— それが JIT のさらなる作業とともに作業キューだ。atelier は マイルストーンのロードマップを進め続ける。purecrypto とそれに 依存するクレートは、堅牢化したリリースへと落ち着いていく。