2026-08

Rust

Rust製x86エミュレータに手書きAArch64テンプレートJITを載せて、インタプリタに勝つまで【rustx86 JIT編 #1】

Rustでx86エミュレータ rustx86 を書いている。ブラウザ(WebAssembly)でもネイティブでも同じcoreが動き、実物のLinuxが起動してgccでCコンパイルまでできる。ネットワーク編・ディスク編に続いて、今回からJIT...
Rust

Rust製x86エミュレータをもう19%速くする — #[cold]で勝ち、OoOの影に4連敗した日

自作のx86エミュレータ rustx86 は、インタプリタのまま100 MIPSに到達したところで最適化を一区切りにしていた。本稿はその第2ラウンドの記録である。結論を先に書くと、勝ったのは1件 (-19%)、負けとワッシュが4件。そして勝...
Rust

Rust製x86エミュレータのディスクを5.6倍速くする — 圧縮はゲストではなく輸送路の仕事【rustx86 ディスク編 #2】

本記事は連載「rustx86 ディスク編」の第2回である。ブラウザで動くRust + WebAssembly製のx86エミュレータ rustx86 にディスクを生やしていく。前回: virtio-blkを実装して、ブラウザのLinuxでgc...
Rust

Rustのx86エミュレータにvirtio-blkを実装して、ブラウザのLinuxでgccを128MBで動かす【rustx86 ディスク編 #1】

本記事は連載「rustx86 ディスク編」の第1回である。ブラウザで動くRust + WebAssembly製のx86エミュレータ rustx86 に、ディスクを生やしていく。ネットワークを繋いだ経緯は連載「rustx86 ネットワーク編」...
Rust

装置を速くしても0.6%だった — 犯人はNE2000の受信リングで、wgetが3倍になった【rustx86 ネットワーク編 #5】

連載「rustx86 ネットワーク編」: Rust + WebAssembly の x86 エミュレータをインターネットに繋ぐまでの開発記。#1 は SLiRP backend「wsslirp」(Go + gVisor netstack)、...
DevOps

ghコマンドでGoリポジトリを固める通し手順 — GitHub Actions CI・mainブランチ保護・v*タグでバイナリ自動リリース

前回、AIエージェントとの開発でmainを守るで「なぜmainを保護するのか」を書いた。規約で守らせるのではなく、構造で不可能にする、という話だ。今回はその続きで、手順に徹する。概念は分かっても、いざ自分のリポジトリでやろうとすると手が止ま...
Claude Code

AIエージェントとの開発でmainを守る — gh apiでGitHubブランチ保護を掛ける手順と、paths-ignoreの罠

AIエージェント (Claude Code) と一緒に開発していて、こういうことが起きた。私のプロジェクトの規約には「変更はブランチ+PR単位で回す」と書いてある。エージェントはそれを読んでいる。それでも、ドキュメントだけを直したとき、こう...
Rust

wget https:// が通るまでの壁は6枚あった — MMX・SSE2の語彙・RTC・CA束【rustx86 ネットワーク編 #4】

連載「rustx86 ネットワーク編」: Rust + WebAssemblyのx86エミュレータをインターネットに繋ぐまでの開発記。#1はSLiRP backend「wsslirp」(Go + gVisor netstack)、#2はIS...
Rust

sleep 3 が20msで返る — PCIバスとRTL8029をRustで実装したら、真犯人はx87 FPUだった【rustx86 ネットワーク編 #3】

連載「rustx86 ネットワーク編」: Rust + WebAssemblyのx86エミュレータをインターネットに繋ぐまでの開発記。#1はSLiRP backendとなるユーザーモードNATデーモン「wsslirp」(Go + gViso...
16bit

1993年のDOSから ping 1.1.1.1 — ISAバスのNE2000をRustで実装する【rustx86 ネットワーク編 #2】

連載「rustx86 ネットワーク編」: Rust + WebAssemblyのx86エミュレータをインターネットに繋ぐまでの開発記。#1はSLiRP backendとなるユーザーモードNATデーモン「wsslirp」(Go + gViso...