週次オープンソース:60 か国の法律を git に、そしてプローブの下のハードウェアウォレット
今週は二本の流れがあり、ツールチェーンの着実な作業がそれに加わった。 日曜に新しい GitHub 組織 LawCodex が一度に 61 のリポジトリを 得た:法令をプレーンな Markdown で git に収めるもので、法域ごとに リポジトリが一つ。それに先立つ週の大半は、Ledger Nano X の ハードウェア調査に充てられた。基板はマップされて KiCad で再構成され (ledger_nano_x_pads)、そのバスをデコードするために新しい ロジックアナライザのドライバが書かれ(visgrok)、ゼロから書かれた HDL ツールチェーン reticle はデバイスの MCU の代わりを務める FPGA 設計を作った。並行して、puressh と Lode がそれぞれ大きな 作業の塊を仕上げた。
LawCodex:法令を Markdown で、国ごとに一リポジトリ
LawCodex は「すべての国の法律を
Markdown で git に」集める。各リポジトリは ISO 3166-1 のコードで
名付けられる(fr、de、jp、…、それに eu)。中身は現行の憲法、
法典、法律で、一つの文書につき一ファイル。YAML フロントマターに
表題、公式識別子、日付、出典 URL を持ち、再実行できる取得・変換
コードが scripts/ に入る。どの README も、何を収録し、何が欠けて
いてなぜか、元の文書にどんなライセンスが付いているかを明記する。
日曜に 61 のリポジトリが作られ、合わせて約 470 コミットと、
今週どのプロジェクトよりも多かった。
そのうち二つが、この作業の中身を示している:
- be(40 コミット)は
ベルギーで、ベルギー官報の Justel データベースから取っている。
憲法と法典から各地域・共同体の decree まで、現行の統合版を
フランス語(
fr/)とオランダ語(nl/)の両方で収める。 スクリプトと憲法を入れた最初のコミットの後、取り込みは三十分ごとの バッチで、毎回数百ファイルずつ入ってきた。 - ua(12 コミット)は ウクライナで、最高会議(Verkhovna Rada)の法令データベースから 公式のオープンデータ API を通じて取得している:憲法、法典、 そして法律をバッチで。週の一部は変換に充てられた。改正法の中で 引用された文はもう見出しにならず、深い階層は Markdown の 六段階の見出しに収められる。取得スクリプトは LawCodex を名乗り、 リダイレクトには決して従わない。
文書は忠実に再現されているが、公式の刊行物ではない。README は 読者を引用元の出典へ案内している。
Ledger Nano X、パッドごとに
ledger_nano_x_pads
(新規、57 コミット)は「Ledger Nano X のメイン基板の対話的な
マップ:40 個のテストパッド、それらとチップの間の銅配線、そして
基板全体の KiCad 再構成」で、GitHub Pages で公開されている。始まりは
写真の表裏切り替えビューアと、編集できる配線オーバーレイだった。
ログはそこからネットを一本ずつ追っていく:USB、電源、Bluetooth RF、
OLED の SPI 線、水晶、SWD と I²C、USB-PD コントローラ STUSB4500L、
そして充電器。ネットを追い終えると、基板はグラウンドのベタ、
ステッチングビア、3D モデル、チップの刻印まで含めて KiCad で
組み直され、three.js のビューアで見られるようになった。README は、
これがメーカーの設計ではなく写真からの再構成であり、? の付いた
名前はおそらく正しいが未確認だと明言している。SWD パッドが
レガシーであることも書かれている:STM32 はいまロックされて出荷
されるからだ。週の終わりには 3D ビューアに二つのインプラント標本
A と B のオーバーレイが加わり、その外形とはんだ接合部は
Tibane Labs の接写に合わせてある。
visgrok(新規、47
コミット、v0.1.1)はこのために使われた計測器だ。Sipeed SLogic
ロジックアナライザのための、ゼロから書かれた Rust ドライバで、
rawusb の上に作られ、
ディスクへのストリーミング、TUI、ブラウザ UI を持つ。独自の圧縮
.vgk 形式を持ち、sigrok の .sr、VCD、生ダンプとの間で相互に
変換できる。デコーダはこの基板に流れる信号のために書かれた:
自動ボーレートの UART、D/C 付き SPI と SSD1306 ディスプレイの
デコーダ、SD カードバスのデコーダ、ISO 7816-3、そして最後に、
認証ハンドシェイクを含む ISO 7816 上の Ledger の SEPROXYHAL
プロトコル。クエリコマンドは、スクリプトからキャプチャを分析する
「人とエージェントのため」のものだ。
reticle:MCU の席に座る FPGA
reticle は今週も
最も忙しいリポジトリで(222 コミット、v0.0.5 と v0.0.6)、その
多くが同じ方向を向いていた。Basys 3 ボード(Xilinx 7 シリーズ)で、
reticle はいま CARRY4 チェーン、内容付きの RAMB18E1 ブロック RAM、
PLLE2_BASE、DSP48E1 の乗算、トライステートのパッドを配置・配線・
構成できる。それを使って IP ブロックの一式を作った:本物のカードと
話す ISO 7816-3 のキャラクタ層と端末、部品が描くものを受け取る
SSD1306 互換のディスプレイ スレーブ、そして「Ledger の SEPROXYHAL
リンクの MCU 側」である seph_mcu。これらを 2 Mbaud のコンソールの
背後に一つのビットストリームとしてまとめ、デバイスのボタンも
そのコンソールから押せるようにすると、FPGA は「セキュアエレメントを
PIN 画面まで走らせ」、その画面を読み戻す。
同じ週にはほかにも、ビットストリームを書き出して ZCU104 で実行する
UltraScale+ のファブリックモデル(uray)、カーネル自身のドライバが
bind する単一ポートの USB 2.0 ハブと USB トランザクションプロキシ、
Cynthion の USB シリアルポートの背後に置いた SHA-256 と ChaCha20 の
コア、ECP5 のキャリーチェーンと DP16KD ブロック RAM、そして
compcol のコーパスと突き合わせて検査される予定の inflate ブロックが
入った。
puressh:OpenSSH の置き換え
purecrypto の上の Pure-Rust SSH スイート
puressh(65 コミット)は、
実際のシステムで OpenSSH と入れ替えられるよう、残る差を詰める一週間を
過ごした。いまはどんな OpenSSH の ssh_config も読める:Include、
Match、トークン、あらゆるオプションへの -o、sftp/scp での接続
共有。sshd は OpenSSH のロギング(syslog とその auth.log の行)、
utmp/wtmp/lastlog、すべての authorized_keys オプション、
AuthorizedKeysCommand と AuthorizedPrincipalsCommand、そして
SSH_CLIENT/SSH_TTY の環境変数を得た。ssh-keygen はより多くの鍵
形式、KRL、SSHFP レコードを扱い、scp と sftp は ssh 上で動く
置き換え品になった。OpenSSH のクライアントプログラムを差し替える
puressh-client Debian パッケージがあり、Ansible との相互運用が CI で
走り、ある perf: 変更はクライアントとサーバの両方から往復ごとの
遅延を取り除いた。
Lode:アロケーション、破棄、アリーナ
前の週に始まった言語 Lode
(41 コミット)は、アロケーションを扱うマイルストーン M8 を完了した。
deinit を持つリソース型はスコープのあらゆる出口で破棄され、
ムーブ後の使用はどの経路でもエラーになる。アロケーションは
シグネチャで宣言され(uses alloc throws(AllocError))、uses alloc
のない関数はアロケートする関数を呼べない。Box、List、String は
アロケータのコンテキストを通じて得られ、ルートのヒープアロケータ
自体も Lode で書かれている。アリーナとメモリ不足時のポリシー
(@oom(abort))がこのマイルストーンを締めくくる。abort ポリシー
の下では、アロケーションへの try は何にもコンパイルされない。
シグネチャや構造体フィールドに事実を載せる「refinement」によって、
標準ライブラリは境界の再チェックを省けるようになった。その下で
latticefoundry はバルクメモリ操作、SROA、レジスタでの構造体返却、
サイズを考慮するインライナを加えた。
今週のその他
- rustygo — Go→Rust
コンパイラはワーカースレッド上の goroutine を得た(stop-the-world
付きの M:N スケジューラ)。競合を追い詰める間は、デフォルトの
ワーカー数を一つにして出した。ほかに TLS 上の HTTP/2、
reflect.MakeFuncが入り、Go 自身のテストのうち 127 本が通り、 gRPC、protobuf、Prometheus、pgx がコンパイルできるようになった。 - catcard — TSS ウォレット がデバイス上の「使用中のウォレット」になれるようになった。他の メンバーと一緒にトランザクションと BIP-322 メッセージに署名し、 セッションコードは SD カードか QR(BC-UR または BBQr)で運ばれる。
- rsasm — x86 APX、 32 ビット Mach-O オブジェクト、macOS のコンパクトアンワインド、 PE/COFF 向けの CodeView 行情報、そして最新の AArch64 命令群 (MOPS、CMPBR)。
- dnsbox — TKEY の鍵共有、
ドラフト段階のレコード型、そして CI での BIND 9 との相互運用
(署名、ゾーンツール、
named、dig、nsupdate)。 - mcptk(新規)— プロトコル 自体を tokio の上に実装した MCP サーバのツールキット。ハンドシェイク 型の各リビジョンと並んでリビジョン 2026-07-28 に対応し、stdio、 OAuth 付きの Streamable HTTP、WebSocket の上で動き、tasks 拡張と MCP Apps も実装している。
- teamclaude —
1.1.24。OAuth トークンを複数のインストール間で揃えて保つ。
来週
LawCodex は最初の 60 の法域から残りへと広がり、ベルギーとウクライナは 完成に向かう。Ledger の作業は続く:片側に基板マップと visgrok の デコーダ、もう片側に reticle の FPGA による代役。Lode は M8 の先へ 進み、puressh は OpenSSH を一つずつ置き換えていく。