<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
  <title>BFE001 — ログ</title>
  <subtitle>オープンソース、日常、その他もろもろの短い記録。</subtitle>
  <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog.html" />
  <link rel="self" type="application/atom+xml" href="https://www.bfe001.net/ja/atom.xml" />
  <id>https://www.bfe001.net/ja/blog.html</id>
  <updated>2026-04-19T00:00:00Z</updated>
  <author><name>Mark Karpelès</name></author>
  <entry>
    <title>週刊オープンソース：OxideAV、公開へ</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w16.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w16.html</id>
    <published>2026-04-19T00:00:00Z</published>
    <updated>2026-04-19T00:00:00Z</updated>
    <summary>45以上のリポジトリに広がる Pure-Rust のメディアフレームワーク。libwallet はマルチチェーンの Swap API に対応。</summary>
    <content type="html"><![CDATA[<p>週刊ダイジェストの第一回。オープンソースでその週に出したものを短くまとめる。
書くほどのことが何もなかった週は、これは出さない。</p>
<h2>OxideAV、公開へ</h2>
<p>今週の目玉は <strong><a href="https://github.com/OxideAV" rel="noopener noreferrer" target="_blank">OxideAV</a></strong> — Pure-Rust の
メディアトランスコード／ストリーミングフレームワーク。週の頭までは
ワークスペースのモノレポだったが、17日にフォーマット単位で45以上の
クレートに切り出し、それぞれを <code>OxideAV/</code> organization 配下の独立した
リポジトリとして公開した。同日には <code>release-plz</code> 経由で最初の
<code>v0.0.3</code> / <code>v0.0.4</code> を出し、以降リリースサイクルはずっと回っている。</p>
<p>対応範囲はあえて広めに取っている：</p>
<ul>
<li><strong>映像</strong> — H.264、H.265、AV1、VP8、VP9、MPEG-1/2、MPEG-4 ASP、H.263、
  Theora、ProRes、MJPEG。</li>
<li><strong>音声</strong> — AAC、MP1/2/3、Opus、Vorbis、FLAC、CELT、Speex、GSM、
  G.722 / G.723.1 / G.728 / G.729。</li>
<li><strong>画像</strong> — PNG/APNG、GIF、WebP、JPEG、AVIF（スケルトン）、JPEG 2000
  （スケルトン）、JPEG XL（スケルトン）。</li>
<li><strong>コンテナ</strong> — MP4/MOV、Matroska/WebM、Ogg、AVI、IFF。単純なフォーマット
  （WAV、生 PCM、slin）はひとつのクレートに同居。</li>
<li><strong>トラッカー</strong> — MOD、S3M（仕様上デコードのみ）。</li>
<li><strong>字幕</strong> — PGS、DVB、VobSub、ASS/SSA。</li>
<li><strong>基盤</strong> — <code>oxideav-core</code>（Packet / Frame / Timestamp）、<code>oxideav-codec</code> と
  <code>oxideav-container</code>（トレイト＋レジストリ）、<code>oxideav-pixfmt</code>（色空間変換、
  量子化、ディザ）、<code>oxideav-job</code>（パイプライン化されたマルチスレッド
  ランタイムで走る JSON 駆動のトランスコードグラフ）。</li>
</ul>
<p>原則は <strong>C 依存をツリーのどこにも入れない</strong> こと。<code>ffmpeg</code> も <code>libav</code> も
使わず、直接・間接を問わず <code>*-sys</code> 系のクレートも引かない。各コーデックは
仕様から実装している。CLI（<code>oxideav-cli</code>）と、SDL2+TUI のリファレンス
プレイヤー（<code>oxideplay</code>）も同梱。</p>
<p>まだ初期段階で、バージョンは全体的に v0.0.x、カバレッジも均一ではない。
デコードのみのもの、エンコーダがこれから乗るもの、コーデック ID の予約
だけで動作は拒否するスケルトンのままのもの、と幅がある。目指している
のは、C のバイナリを 1 GB 引き込まずに実パイプラインへ差し込める
フレームワーク。</p>
<p>今週いちばん押したのは H.264。134 コミットで 4:2:2 / 4:4:4 の
CABAC デコード、MBAFF の P/B スライスデータ、SI/SP プライマリスライス
デコード、<code>separate_colour_plane_flag=1</code> の対応を片付け、さらに CAVLC の
P スライスエンコーダ第一弾（<code>P_L0_16x16</code> + <code>P_Skip</code>、整数動き推定）を
着地させた。AAC はショートブロック発射のステートマシン化と、
チャンネル単位の TNS 解析が入った。どちらもやることはまだたくさんある。</p>
<h2>libwallet：Swap API</h2>
<p><strong><a href="https://github.com/KarpelesLab/libwallet" rel="noopener noreferrer" target="_blank">KarpelesLab/libwallet</a></strong> は
<code>0.3.14</code> と <code>0.3.15</code> を出荷。目玉はマルチチェーンの Swap API — Solana 側は
Jupiter Ultra と dFlow、EVM 側は 1inch を、プロバイダを抽象化した
ひとつのインターフェースで扱えるようにした。ERC-20 の事前承認が必要な
ケースを検出して UI に伝える仕組みも入っている。Solana の優先手数料は
正しく <code>ComputeBudget</code> 命令経由で流すようになり、表示残高はようやく
rent-exempt 分を二重計上せず除外するようになった。</p>
<h2>他にも今週</h2>
<ul>
<li><strong><a href="https://github.com/KarpelesLab/goavif" rel="noopener noreferrer" target="_blank">goavif</a></strong> — Pure-Go の AVIF
  コーデック。OxideAV と同じ週に公開。cgo 禁止ルールも同じ。</li>
<li><strong><a href="https://github.com/KarpelesLab/goro" rel="noopener noreferrer" target="_blank">goro</a></strong> / <strong><a href="https://github.com/KarpelesLab/goro-rs" rel="noopener noreferrer" target="_blank">goro-rs</a></strong>
  — Go 版の PHP と、その Rust 版の平行移植。どちらも継続的にコミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/strtotime" rel="noopener noreferrer" target="_blank">strtotime</a></strong> — PHP の
  <code>strtotime()</code> を Go に移植。タイムゾーン対応の自然言語日時パース、
  RFC 2822、ISO 8601、相対日付。4月13日の一日で仕上げた。</li>
</ul>
<h2>来週</h2>
<p>引き続き OxideAV 全体の作業を進める。</p>]]></content>
  </entry>
  <entry>
    <title>もう一度、ログを書き始める</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/starting-again.html" />
    <id>https://www.bfe001.net/ja/blog/starting-again.html</id>
    <published>2026-04-19T00:00:00Z</published>
    <updated>2026-04-19T00:00:00Z</updated>
    <summary>なぜここにログを置くのか、そして何を書くつもりなのか。</summary>
    <content type="html"><![CDATA[<p>昔はよく書いていた。ブログ、LiveJournal 時代のエントリ、今ではパスワードも
思い出せないいくつかのサイトに残した技術メモ。そのほとんどは失われ、
残っているものもアーカイブの奥に散らばっていて、わざわざ掘り返したいとは
思わない。</p>
<p>というわけで、もう一度始める。今度は自分のドメインで、規模は小さく。
短い投稿。ひとつのエントリにひとつの話題。更新頻度は決めない。</p>
<p>扱うテーマは流れていくと思うが、だいたいこんな形を想定している：</p>
<ul>
<li><strong>オープンソース</strong> — 作っているもの、壊しているもの。主に
  <a href="https://joseon.com" rel="noopener noreferrer" target="_blank">Joseon</a> / KLB まわり。小さな道具、設計判断、
  たまの事後検証。</li>
<li><strong>日常</strong> — 技術以外で書き留めておきたいこと。読む価値がないものは
  書かない。</li>
<li><strong>自分のためのメモ</strong> — 多くの開発者ブログが存在する、地味だが
  正直な理由。今月中に三回調べ直したようなことは、たぶんここに書くべき。</li>
</ul>
<p>しばらく更新がなかったら、たぶん書くより作るほうに回っている。
それはそれで問題ない。</p>]]></content>
  </entry>
  <entry>
    <title>週刊オープンソース：goro の CI 詰め、Go ライブラリ二つ、そして一つの撤退</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w15.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w15.html</id>
    <published>2026-04-12T00:00:00Z</published>
    <updated>2026-04-12T00:00:00Z</updated>
    <summary>PHP-in-Go の互換性ギャップを狭める。anyhash と pktkit をリリース。litertlm-ios は引きずらずに棚上げ。</summary>
    <content type="html"><![CDATA[<p>4月6日〜12日の週。PHP-in-Go ランタイムの品質面を押し上げ、Go の新規
ライブラリを2つ、そして引きずらずに正直に棚上げしたプロジェクトを
1つ。</p>
<h2>goro：CI のギャップを詰める</h2>
<p><strong><a href="https://github.com/KarpelesLab/goro" rel="noopener noreferrer" target="_blank">KarpelesLab/goro</a></strong> は Pure Go
で書いている PHP の再実装で、PHP 本家のテストスイートをそのまま
回している。今週はおおむね <strong>256 件の失敗から ~199 件まで</strong> に縮小。
82 コミットの内容は、<code>$arr[] .= …</code> 合成代入の二重追加バグ、readonly
プロパティのエラーメッセージを本家と一字一句合わせる修正、4桁を
超える年を拒否する <code>DateTime</code> シリアライズ、<code>createFromFormat</code> の
null バイト処理、<code>EXPECTF</code> 正規表現のマルチバイト UTF-8 対応、
テストランナーで <code>SKIPIF → skipTest</code> を正しく拾う修正、など。</p>
<p>大半は派手な新機能ではなく、エラーメッセージや端のケースの挙動を
本家に合わせる地味な作業。ただ、実際の PHP コードが goro 上で
「特に何も気付かず動く」ところまで持っていくには、この種の
詰めが効く。並行して進めている Rust 版 <strong><a href="https://github.com/KarpelesLab/goro-rs" rel="noopener noreferrer" target="_blank">goro-rs</a></strong>
にも同じ週に35コミット入った。</p>
<h2>litertlm-ios：棚上げ</h2>
<p><strong><a href="https://github.com/KarpelesLab/litertlm-ios" rel="noopener noreferrer" target="_blank">litertlm-ios</a></strong> は
6日に着手して10日には棚上げした。狙いは iPhone で Google の
LiteRT-LM を Metal GPU 経由で動かすこと。ビルドは通り、動作もし、
<code>LiteRTLM.xcframework</code> が生成できる状態まで行った。ただ、Google の
LiteRT-LM 向け GPU アクセラレータはクローズドソースで、オープン
ソース側の経路を作るには LiteRT-LM のアクセラレータプラグイン
インターフェースを TFLite の Metal デリゲートにブリッジするしかない。
これは迂回策であって、プロダクションの土台にはならない。</p>
<p>リポジトリの <a href="https://github.com/KarpelesLab/litertlm-ios#readme" rel="noopener noreferrer" target="_blank">README</a>
に詳しいポストモーテムと、今の時点で代わりに使うべきランタイムの
比較表（MLX Swift、SwiftLM、llama.cpp、MLC-LLM）を書いた。Google が
本物の LiteRT-LM GPU 経路をオープンソース化する日が来れば
（<a href="https://github.com/google-ai-edge/LiteRT-LM/issues/1050" rel="noopener noreferrer" target="_blank">上流の issue</a>
がある）、ビルドまわりの資産はそのまま拾える。それまでは、
得たものを書き残して先へ進むほうがいい。</p>
<h2>新しい Go ライブラリを二つ</h2>
<p><strong><a href="https://github.com/KarpelesLab/anyhash" rel="noopener noreferrer" target="_blank">anyhash</a></strong> — 60種類の
ハッシュアルゴリズムをインポートではなく<strong>名前</strong>で選ぶ Go の
ハッシュライブラリ。<code>sha256.New()</code> のかわりに <code>New("sha256")</code>。
大文字小文字・ハイフン無視のマッチング、計算途中の状態を複製する
<code>Clone()</code>、<code>Sum()</code> 後もそのまま書き続けられる設計、HMAC と HKDF、
そして <strong>PHP 互換の状態シリアライズ</strong> — PHP 側で開始したハッシュを
Go 側で完了させる、あるいはその逆ができる。外部依存ゼロ、
Go 標準ライブラリのみで実装。</p>
<p><strong><a href="https://github.com/KarpelesLab/pktkit" rel="noopener noreferrer" target="_blank">pktkit</a></strong> — ゼロコピーの
L2/L3 パケット処理ライブラリ。<code>Frame</code> と <code>Packet</code> は型付きヘッダ
アクセサを持つ <code>[]byte</code> のエイリアスで、ラッパーのアロケーションも
ホットパスでのコピーも無い。仮想ネットワークトポロジ — デバイス、
ハブ、アダプタ、トンネル — を組むための基盤で、IPv4 も IPv6 も
全体で対応。今週は API 面を詰める9コミット。（リポジトリ自体は
4月4日作成で、今週が実質初週。）</p>
<h2>他にも今週</h2>
<ul>
<li><strong><a href="https://github.com/KarpelesLab/strtotime" rel="noopener noreferrer" target="_blank">strtotime</a></strong> —
  17コミット。PHP 互換の日時パーサを仕上げに向けて温めている最中。</li>
<li><strong><a href="https://github.com/KarpelesLab/libwallet" rel="noopener noreferrer" target="_blank">libwallet</a></strong> —
  12コミット。マルチチェーン対応モバイルウォレットの地道な前進。</li>
<li><strong><a href="https://github.com/KarpelesLab/aipencil" rel="noopener noreferrer" target="_blank">aipencil</a></strong> —
  構造化 JSON のシーン記述から SVG / PNG を生成する CLI の
  初期作業。AI システムに、サイズや座標ではなく内容と関係性を
  宣言させることで、決定的で安価な画像出力の道を与えるのが狙い。</li>
<li><strong><a href="https://github.com/KarpelesLab/smokenrg" rel="noopener noreferrer" target="_blank">smokenrg</a></strong> —
  Nero の NRG ファイルから音声を取り出す sed.free.fr の古い
  ユーティリティをミラー。純粋に保存目的。無料ホスティングは
  永遠ではない。</li>
</ul>]]></content>
  </entry>
  <entry>
    <title>週刊オープンソース：goro のための Go ライブラリ</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w14.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w14.html</id>
    <published>2026-04-05T00:00:00Z</published>
    <updated>2026-04-05T00:00:00Z</updated>
    <summary>Pure-Go の新ライブラリ4本 — PCRE2、bzip2 圧縮、ストリーミング MIME、生 tzdata — いずれも goro（PHP in Go）で必要になる穴を Pure Go だけで塞ぐためのもの。加えて pktkit、aipencil、bnpm、slirp。</summary>
    <content type="html"><![CDATA[<p>3月30日〜4月5日の週。Pure-Go ライブラリが固まって出てきた週。
動機はどれも同じ — <strong>goro</strong> だ。PHP は大きな言語で、それを
Pure Go で動かそうとすると、cgo も外部依存も無しに Go 側で出来る
ことの「穴」を埋めていくしかない。</p>
<h2>goro のための Pure-Go ライブラリ</h2>
<ul>
<li><strong><a href="https://github.com/KarpelesLab/gopcre2" rel="noopener noreferrer" target="_blank">gopcre2</a></strong> — PCRE2 を
  Pure Go で実装、cgo 無し。後方参照、先読み／後読み、アトミック
  グループ、再帰パターン、Unicode プロパティ。Go 標準の <code>regexp</code>
  は線形時間保証のために RE2 を使い、この種の機能をあえて外して
  いる — だが PHP の <code>preg_*</code> はそれらに依存しているので、goro
  にも必要になる。</li>
<li><strong><a href="https://github.com/KarpelesLab/gobzip2" rel="noopener noreferrer" target="_blank">gobzip2</a></strong> — Pure Go
  の bzip2 実装（圧縮も）。標準の <code>compress/bzip2</code> は解凍専用。
  goro では PHP の <code>bzcompress</code> を動かす必要があるので、両方向を
  bzip2 1.0.8 のリファレンスから実装した。</li>
<li><strong><a href="https://github.com/KarpelesLab/gomailparse" rel="noopener noreferrer" target="_blank">gomailparse</a></strong> —
  ストリーミング MIME パーサ。<code>io.Reader</code> から一度だけ読み、
  ヘッダとバイトオフセットだけを保持して、本文は一切バッファ
  しない。goro のメール処理面を支える部品で、巨大なメッセージを
  インデックスするときも効率を保つ設計。</li>
<li><strong><a href="https://github.com/KarpelesLab/gotz" rel="noopener noreferrer" target="_blank">gotz</a></strong> — Go で IANA
  タイムゾーンデータに生でアクセスするパッケージ：遷移点、
  ゾーンタイプ、POSIX TZ ルール、<code>tzdata</code> 同梱。標準の <code>time</code>
  の抽象の下に意図的に置いている。goro の日時／タイムゾーン
  まわりが PHP の挙動に合わせるには、下位データに直接触る必要が
  あるため。</li>
</ul>
<h2>こちらも今週着手</h2>
<ul>
<li><strong><a href="https://github.com/KarpelesLab/pktkit" rel="noopener noreferrer" target="_blank">pktkit</a></strong> — ゼロコピーの
  L2/L3 パケット処理。<code>Frame</code> と <code>Packet</code> は型付きヘッダアクセサを
  持つ <code>[]byte</code> のエイリアスで、ラッパーのアロケーションも
  ホットパスでのコピーも無い。4月4日に作成、週末までに35コミットで
  IPv4 + IPv6 のプリミティブを一通り敷いた。goro とは別系統だが、
  「Pure Go、cgo 無し」のルールは同じ。</li>
<li><strong><a href="https://github.com/KarpelesLab/aipencil" rel="noopener noreferrer" target="_blank">aipencil</a></strong> —
  構造化 JSON のシーン記述から SVG / PNG を生成する CLI。狙いは、
  AI システムに、サイズや座標ではなく内容と関係性を宣言させる
  ことで、決定的で安価な画像出力の道を与えること。同じ入力から
  常に同じ画像、GPU 不要。4月2日作成で、今週が最初の本格稼働の
  週（18コミット）。</li>
</ul>
<h2>サンドボックスとネットワーク</h2>
<p>話題の距離感より近い関係にある2つ。</p>
<p><strong><a href="https://github.com/KarpelesLab/bnpm" rel="noopener noreferrer" target="_blank">bnpm</a></strong> — 「Bubble NPM」。
Linux namespace の中でパッケージマネージャのコマンドを
サンドボックスする。マウント名前空間と <code>pivot_root</code> で、
プロジェクトディレクトリ（読み書き）と読み込み専用のシステム
パスだけに可視性を制限。ビルド／テストコマンドはネットワーク
名前空間が空でネット完全遮断、インストールコマンドは
ユーザースペースの TAP プロキシ経由で、許可したレジストリだけに
DNS と IP でフィルタをかけて通す。root 不要、非特権のユーザー
名前空間で動く。狙いは、悪意ある <code>install</code> スクリプトが物理的に
プロジェクトツリーの外に到達できない状態を作ること。</p>
<p><strong><a href="https://github.com/KarpelesLab/slirp" rel="noopener noreferrer" target="_blank">slirp</a></strong> — Go 版の
ユーザーモード NAT / IP スタック。今週28コミット。オリジナルの
SLIRP と同じ発想で、root も <code>CAP_NET_ADMIN</code> も TUN デバイスも
無しで、プロセスに TCP/IP 接続性を与える。VM のネットワーキング、
コンテナ、プロトコルテスト、ユーザースペースで完結するスタックが
欲しい場面に使う。</p>
<h2>PHP in Go、PHP in Rust</h2>
<p><strong><a href="https://github.com/KarpelesLab/goro" rel="noopener noreferrer" target="_blank">goro</a></strong> が128コミット、
並行して進めている Rust 版 <strong><a href="https://github.com/KarpelesLab/goro-rs" rel="noopener noreferrer" target="_blank">goro-rs</a></strong>
が50コミット。どちらも PHP 本家のテストスイートを通す方向への
地道な前進。</p>
<h2>他にも今週</h2>
<ul>
<li><strong><a href="https://github.com/KarpelesLab/libwallet" rel="noopener noreferrer" target="_blank">libwallet</a></strong> —
  13コミット。マルチチェーン対応モバイルウォレットの着実な前進。</li>
<li><strong><a href="https://github.com/unixshells/mobile" rel="noopener noreferrer" target="_blank">unixshells/mobile</a></strong> —
  13コミット。iOS / Android 向けの SSH / Mosh / SFTP クライアント。</li>
<li><strong><a href="https://github.com/KarpelesLab/teamclaude" rel="noopener noreferrer" target="_blank">teamclaude</a></strong> —
  11コミット。クォータベースで自動ローテーションするマルチ
  アカウント Claude プロキシ。</li>
<li><strong><a href="https://github.com/KarpelesLab/squashfs" rel="noopener noreferrer" target="_blank">squashfs</a></strong> —
  8コミット。Pure Go の SquashFS（読み書き両対応）。</li>
</ul>]]></content>
  </entry>
  <entry>
    <title>週刊オープンソース：teamclaude、blindsig、lnp22 — 暗号の週</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w13.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w13.html</id>
    <published>2026-03-29T00:00:00Z</published>
    <updated>2026-03-29T00:00:00Z</updated>
    <summary>teamclaude が立ち上がり、ブラインド署名ライブラリと格子ベース NIZK フレームワークが着手。goro + goro-rs も粛々と前進。</summary>
    <content type="html"><![CDATA[<p>3月23日〜29日の週。35リポジトリに536コミット。いつもの PHP
ランタイム仕事に、暗号系の新設が重なった。</p>
<h2>teamclaude</h2>
<p><strong><a href="https://github.com/KarpelesLab/teamclaude" rel="noopener noreferrer" target="_blank">teamclaude</a></strong> — 24日に
着手、52コミット。マルチアカウントの Claude プロキシで、クォータ
基準で自動ローテーションする。Claude Code と Anthropic API の間に
透過的に入り、複数の Claude Max（あるいは API キー）アカウントを
管理して、セッション（5時間）または週次（7日）のクォータが上限
（既定98%）に近づくと次のアカウントへ切り替える。429 は
<code>retry-after</code> で自動リトライし、恒常的なエラーなら次へフェイル
オーバー。要は、クォータの壁に当たって作業が止まる代わりに、
手を止めずに続けられるということ。</p>
<h2>暗号系を2本</h2>
<p><strong><a href="https://github.com/KarpelesLab/blindsig" rel="noopener noreferrer" target="_blank">blindsig</a></strong> — Go の
ブラインド署名ライブラリに7コミット。ブラインド署名は、署名者に
<strong>メッセージの中身を知らせずに</strong>署名させ、あとでトークンを提示
するときに<strong>署名者がどのセッションで作ったトークンか追跡できない</strong>
仕組み。匿名クレデンシャル、プライバシー配慮の証明書、投票などに
使える。5つの方式を同梱していて、仮定、耐量子性、検証コストの
違うものから脅威モデルに合わせて選べる。</p>
<p><strong><a href="https://github.com/KarpelesLab/lnp22" rel="noopener noreferrer" target="_blank">lnp22</a></strong> — 5コミットで
着手。<a href="https://eprint.iacr.org/2022/284" rel="noopener noreferrer" target="_blank">LNP22 の格子ベース NIZK 証明系</a>
（Lyubashevsky, Nguyen, Plançon、CRYPTO 2022）の自己完結な Go 実装。
多項式環上の線形関係を満たす短ベクトルの知識を証明する — ポスト
量子系での範囲証明や証明合成の素材になる。外部の暗号依存は
<code>golang.org/x/crypto/sha3</code> だけ。</p>
<h2>PHP ランタイム、継続</h2>
<p><strong><a href="https://github.com/KarpelesLab/goro" rel="noopener noreferrer" target="_blank">goro</a></strong> に249コミット、
<strong><a href="https://github.com/KarpelesLab/goro-rs" rel="noopener noreferrer" target="_blank">goro-rs</a></strong> に67コミット。
ゆっくりと、しかし確実に、両方向から同じ失敗テスト標的に向かって
収束している。</p>
<h2>他にも今週</h2>
<ul>
<li><strong><a href="https://github.com/KarpelesLab/tss-lib" rel="noopener noreferrer" target="_blank">tss-lib</a></strong> — Binance
  のしきい値署名ライブラリのフォークに18コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/chiefsplitter" rel="noopener noreferrer" target="_blank">chiefsplitter</a></strong> —
  新しい Solana プログラムに16コミット。任意の PDA を作ってそこに
  SOL／トークンを送ると、設定したパーセンテージで分配する。
  ホワイトリスト外のトークンは Jupiter / Raydium 経由で自動
  スワップするオプション付き。</li>
<li><strong><a href="https://github.com/MagicalTux/bfe001" rel="noopener noreferrer" target="_blank">bfe001</a></strong> — このサイトの
  継続作業に15コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/libwallet" rel="noopener noreferrer" target="_blank">libwallet</a></strong> —
  マルチチェーン対応モバイルウォレットに14コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/cterm" rel="noopener noreferrer" target="_blank">cterm</a></strong> — 11コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/secp256k1" rel="noopener noreferrer" target="_blank">secp256k1</a></strong> —
  decred 由来の secp256k1 抽出に10コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/chiefstaker-sdk" rel="noopener noreferrer" target="_blank">chiefstaker-sdk</a></strong>
  — chiefstaker のクライアント SDK に8コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/massalib" rel="noopener noreferrer" target="_blank">massalib</a></strong>、
  <strong><a href="https://github.com/KarpelesLab/bech32m" rel="noopener noreferrer" target="_blank">bech32m</a></strong>、
  <strong><a href="https://github.com/KarpelesLab/ethrpc" rel="noopener noreferrer" target="_blank">ethrpc</a></strong> — 小さな
  集中作業。</li>
</ul>]]></content>
  </entry>
  <entry>
    <title>週刊オープンソース：goro と goro-rs、フルスロットル</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w12.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w12.html</id>
    <published>2026-03-22T00:00:00Z</published>
    <updated>2026-03-22T00:00:00Z</updated>
    <summary>PHP 再実装の二本に数百コミットずつ。mpcegosign が着手 — EGo SGX enclave 向けのしきい値 RSA 署名。</summary>
    <content type="html"><![CDATA[<p>3月16日〜22日の週。634コミット — 今年いちばん重い週。PHP 再実装
2本で556コミットを占めた。</p>
<h2>goro ↔ goro-rs</h2>
<p><strong><a href="https://github.com/KarpelesLab/goro" rel="noopener noreferrer" target="_blank">goro</a></strong> に281コミット、
<strong><a href="https://github.com/KarpelesLab/goro-rs" rel="noopener noreferrer" target="_blank">goro-rs</a></strong> に275コミット。
1週間しか経っていない Rust 側が、コミット速度で Go 側に追いついて
きている。どちらも同じ PHP テストスイートの標的に向かって、
別々の言語で粛々と。</p>
<h2>mpcegosign（プロトタイプ — 採用せず）</h2>
<p><strong><a href="https://github.com/KarpelesLab/mpcegosign" rel="noopener noreferrer" target="_blank">mpcegosign</a></strong> —
新規プロトタイプに13コミット。EGo の <code>ego sign</code> は普段、SGX
enclave の署名を単一の RSA-3072 秘密鍵に依存する。これを
<strong>t-of-n のしきい値 RSA</strong> に置き換える、という発想を形にしたもの。
n 名のうち t 名が揃えば署名でき単独では署名できない、鍵生成は
グループチャット経由でインタラクティブに行える（シェアは
X25519 ECDH + AES-256-GCM で保護）、MRENCLAVE の計算は
<code>ego-oesign</code> に委譲して互換を保つ。</p>
<p>動くものは出来上がったが、形にしてみた結果、これを実運用で
使う方向にはしなかった。リポジトリはコンセプトのリファレンス
実装として残すが、本番のツールチェーンには組み込まない。</p>
<h2>他にも今週</h2>
<ul>
<li><strong><a href="https://github.com/KarpelesLab/cterm" rel="noopener noreferrer" target="_blank">cterm</a></strong> — 20コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/strtotime" rel="noopener noreferrer" target="_blank">strtotime</a></strong> —
  6コミット。PHP 互換の日時パーサに育っていく作業の初期。</li>
<li><strong><a href="https://github.com/AzusaOS/azusa-opensource-recipes" rel="noopener noreferrer" target="_blank">AzusaOS/azusa-opensource-recipes</a></strong>
  — Azusa のパッケージビルドレシピに5コミット。</li>
</ul>]]></content>
  </entry>
  <entry>
    <title>週刊オープンソース：goro-rs と、このサイト</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w11.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w11.html</id>
    <published>2026-03-15T00:00:00Z</published>
    <updated>2026-03-15T00:00:00Z</updated>
    <summary>goro と並行して Rust 版の goro-rs が始動。goro 本体も重ねて前進。portablesql がドライバを別リポに分割。このサイトも最初のコミット。</summary>
    <content type="html"><![CDATA[<p>3月9日〜15日の週。439コミット — 重めの週 — で、複数の糸が同時に
進行。</p>
<h2>goro-rs：PHP を Rust でも、なんとなく</h2>
<p><strong><a href="https://github.com/KarpelesLab/goro" rel="noopener noreferrer" target="_blank">goro</a></strong> に187コミット、
14日に新設した <strong><a href="https://github.com/KarpelesLab/goro-rs" rel="noopener noreferrer" target="_blank">goro-rs</a></strong>
には最初の2日間で75コミット。標的は同じ — PHP 8.5 を実装して
本家テストスイートを通す — を、今度は Rust で。goro は完成に
近づいているところで、goro-rs は同じ課題を別言語で解き直す
ための作業。深い戦略があってのことではなく「なんとなく」。
どちらも最終的には同じテストを通すはずだ、というだけ。</p>
<h2>psql、専用の org へ</h2>
<p><strong><a href="https://github.com/portablesql/psql" rel="noopener noreferrer" target="_blank">psql</a></strong> はもともと一つの
リポジトリだった。今週それを専用の <code>portablesql/</code> org に移した
のは、ドライバ層を別リポに切り出せるようにするためだ — 
<a href="https://github.com/portablesql/psql-sqlite" rel="noopener noreferrer" target="_blank">psql-sqlite</a>、
<a href="https://github.com/portablesql/psql-pgsql" rel="noopener noreferrer" target="_blank">psql-pgsql</a>、
<a href="https://github.com/portablesql/psql-mysql" rel="noopener noreferrer" target="_blank">psql-mysql</a>、
共有の <a href="https://github.com/portablesql/psql-test" rel="noopener noreferrer" target="_blank">psql-test</a>
にコアと全ドライバを一緒に回す統合テスト。単一リポのままでは
ドライバを分けて育てられないからこその移動だ。この再編の上に
コアへ23コミット。</p>
<h2>bfe001.net</h2>
<p>静かなマイルストーン：このサイトのリポジトリ
<strong><a href="https://github.com/MagicalTux/bfe001" rel="noopener noreferrer" target="_blank">bfe001</a></strong> が13日に初
コミット。週末までに45コミットで、Amiga ハードウェアのセクション、
メモリマップレイアウト、多言語の配管、初期の年表を入れた。
公開に堪える状態までにはもう少し時間がかかるが、骨組みは入った。</p>
<h2>他にも今週</h2>
<ul>
<li><strong><a href="https://github.com/KarpelesLab/cterm" rel="noopener noreferrer" target="_blank">cterm</a></strong> — 48コミット。
  すでに日常使いしているので、落ちてくる修正は実際に使って出る
  種類のもの。</li>
<li><strong><a href="https://github.com/KarpelesLab/algoc" rel="noopener noreferrer" target="_blank">algoc</a></strong> — 14コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/chiefstaker" rel="noopener noreferrer" target="_blank">chiefstaker</a></strong> —
  8コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/hbclient" rel="noopener noreferrer" target="_blank">hbclient</a></strong> —
  sentinel ハートビート DNS プロトコルの Go クライアントに
  2コミット。</li>
</ul>]]></content>
  </entry>
  <entry>
    <title>週刊オープンソース：psql の始動と、FES を真面目に読む</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w10.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w10.html</id>
    <published>2026-03-08T00:00:00Z</published>
    <updated>2026-03-08T00:00:00Z</updated>
    <summary>portablesql/psql が前進、「耐量子」を謳うフラクタル暗号 FES を読んで短い反証を公開、algoc と jwt も並行。</summary>
    <content type="html"><![CDATA[<p>3月2日〜8日の週。82コミットが普段より広く分散 — 4つのプロジェクト
にちゃんと手が入った週。</p>
<h2>portablesql/psql</h2>
<p><strong><a href="https://github.com/portablesql/psql" rel="noopener noreferrer" target="_blank">portablesql/psql</a></strong> — Go の
SQL ライブラリに20コミット。オブジェクトバインディング、クエリ
ビルダ、フック、関連、ベクトルカラムのサポート。売りは「GORM の
方向性で、しかしモダンな Go（ジェネリクス、1.23 のイテレータ）に
寄せて軽い」。差し替え可能なドライバ層で MySQL / PostgreSQL /
CockroachDB / SQLite を狙う。</p>
<h2>fes-analysis：「耐量子」暗号を検証する</h2>
<p><strong><a href="https://github.com/KarpelesLab/fes-analysis" rel="noopener noreferrer" target="_blank">fes-analysis</a></strong> —
7日に着手。Portalz PTY LTD 社が「量子脆弱な AES に代わる」と
主張する "Fractal Encryption Standard"（FES）の独立セキュリティ
分析。フラクタルを名に冠しながら、実体は Mandelbrot 集合の反復を
PRNG としてキーストリームを生成し、平文と XOR するだけのストリーム
暗号。当然ながら結論は「AES より弱い」 — 宣伝文句の真逆。短い
レポートで構造と具体的な攻撃経路をまとめた。</p>
<h2>他にも今週</h2>
<ul>
<li><strong><a href="https://github.com/KarpelesLab/algoc" rel="noopener noreferrer" target="_blank">algoc</a></strong> — DSL と対象
  言語の広がりに11コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/jwt" rel="noopener noreferrer" target="_blank">jwt</a></strong> — 外部依存ゼロの
  Go JWT ライブラリに11コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/cterm" rel="noopener noreferrer" target="_blank">cterm</a></strong> — 地道な磨きに
  10コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/ldcache" rel="noopener noreferrer" target="_blank">ldcache</a></strong> —
  <code>ld.so.cache</code> まわりに7コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/lambda" rel="noopener noreferrer" target="_blank">lambda</a></strong> — 6コミット。</li>
</ul>]]></content>
  </entry>
  <entry>
    <title>週刊オープンソース：静かな一週間</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w09.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w09.html</id>
    <published>2026-03-01T00:00:00Z</published>
    <updated>2026-03-01T00:00:00Z</updated>
    <summary>13コミット。主な動きは新しい Solana プログラム chiefburner の着手くらい。</summary>
    <content type="html"><![CDATA[<p>2月23日〜3月1日の週。実作業としてはたった13コミットの薄い週。
プライベートリポジトリに隠れているわけでもなく、純粋に静か。</p>
<p>書くに足ることが一つ：
<strong><a href="https://github.com/KarpelesLab/chiefburner" rel="noopener noreferrer" target="_blank">chiefburner</a></strong> を
2月26日に着手。もうひとつの Solana プログラムで、焼却と削除を
一つの命令に統一し、remaining-accounts で一括処理できる。
chiefstaker と対になる、同じオンチェーンツールキットの一員。</p>
<p>他は、<strong><a href="https://github.com/KarpelesLab/cterm" rel="noopener noreferrer" target="_blank">cterm</a></strong> に2コミット、
<strong><a href="https://github.com/vpdotnet/wgnet" rel="noopener noreferrer" target="_blank">wgnet</a></strong> に2コミット。以上。</p>
<p>週によっては、仕事が GitHub の外 — 設計、読み物、思考 — に出て、
痕跡を残さないこともある。</p>]]></content>
  </entry>
  <entry>
    <title>週刊オープンソース：wgnet — ライブラリとしての WireGuard</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w08.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w08.html</id>
    <published>2026-02-22T00:00:00Z</published>
    <updated>2026-02-22T00:00:00Z</updated>
    <summary>vpdotnet/wgnet 新設：WireGuard の暗号化とセッション管理を「UDP を渡すとパケットが出てくる」インターフェースの後ろに隠す。chiefstaker は調整の週。</summary>
    <content type="html"><![CDATA[<p>2月16日〜22日の週。51コミット。ネットワーキング系のライブラリが
一つ立ち上がり、chiefstaker は調整のフェーズ。</p>
<h2>wgnet</h2>
<p><strong><a href="https://github.com/vpdotnet/wgnet" rel="noopener noreferrer" target="_blank">vpdotnet/wgnet</a></strong> — WireGuard
プロトコルをシンプルなインターフェースの後ろに隠す Go ライブラリ。
14コミット。UDP パケットを渡すと復号されたネットワークパケットが
返ってくる、その逆もやる。暗号（X25519、ChaCha20-Poly1305）、
ハンドシェイク、セッション状態、再鍵、リプレイ防止はすべて内部で
処理する。データソースは呼び出し側の自由 — TUN デバイスでも、
ユーザースペースの NAT でも、テストハーネスでも — 転送層には
不可知。</p>
<h2>chiefstaker</h2>
<p>先週の重い押し込みに続いて、今週は22コミットで
<strong><a href="https://github.com/KarpelesLab/chiefstaker" rel="noopener noreferrer" target="_blank">chiefstaker</a></strong> の
端のケースを固める作業 — プールのライフサイクル、報酬請求の
計算、既にステーク中のポジションに対するパラメータ変更の扱い、
など。</p>
<h2>その他</h2>
<p><strong><a href="https://github.com/KarpelesLab/outscript" rel="noopener noreferrer" target="_blank">outscript</a></strong> に7コミット。
<strong><a href="https://github.com/KarpelesLab/cterm" rel="noopener noreferrer" target="_blank">cterm</a></strong> に7コミット。</p>]]></content>
  </entry>
  <entry>
    <title>週刊オープンソース：chiefstaker、本格稼働</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w07.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w07.html</id>
    <published>2026-02-15T00:00:00Z</published>
    <updated>2026-02-15T00:00:00Z</updated>
    <summary>Solana ステーキングプログラムの重い週。オンチェーン側のロジックと端のケースを詰める48コミット。</summary>
    <content type="html"><![CDATA[<p>2月9日〜15日の週。60コミット。そのうち48が
<strong><a href="https://github.com/KarpelesLab/chiefstaker" rel="noopener noreferrer" target="_blank">chiefstaker</a></strong>。</p>
<p>オンチェーンのコードはすぐ冗長になる。どの命令にもアカウント
検証、rent 計算、オーバーフロー判定、厳密なサイズ制約が必要。
今週の大半はそれ — コアのステーキングフローと SOL 報酬の
分配ロジック、指数ウェイトカーブを、あとから読む人がリバース
エンジニアリングしなくて済むだけのテストカバレッジと一緒に
仕上げる作業。</p>
<p>他は：<strong><a href="https://github.com/KarpelesLab/cterm" rel="noopener noreferrer" target="_blank">cterm</a></strong> に10コミット
（磨きと修正）、<strong><a href="https://github.com/KarpelesLab/integration-docs" rel="noopener noreferrer" target="_blank">integration-docs</a></strong>
と <strong><a href="https://github.com/KarpelesLab/replvar" rel="noopener noreferrer" target="_blank">replvar</a></strong> にそれぞれ
1コミット。</p>]]></content>
  </entry>
  <entry>
    <title>週刊オープンソース：chiefstaker — 時間加重の Solana ステーキング</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w06.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w06.html</id>
    <published>2026-02-08T00:00:00Z</published>
    <updated>2026-02-08T00:00:00Z</updated>
    <summary>cterm が落ち着き、chiefstaker が立ち上がる — 指数カーブで報酬ウェイトが伸びる Token 2022 向け Solana ステーキングプログラム。</summary>
    <content type="html"><![CDATA[<p>2月2日〜8日の週。合計49コミット — ここしばらくで一番静かな
週。</p>
<h2>chiefstaker、着床</h2>
<p><strong><a href="https://github.com/KarpelesLab/chiefstaker" rel="noopener noreferrer" target="_blank">chiefstaker</a></strong> — 8日に
作成した新しい Solana プログラム。誰でもプールを作って Token 2022
トークンをステークし、時間加重の SOL 報酬を受け取れる。ステークの
ウェイトは指数カーブで伸びる — <code>weight = stake_amount × (1 − e^(−age / tau))</code>。
ポジションを長く置くほど報酬を取り分けられる仕組みで、<code>tau</code> は
プール単位で設定できる。プール作成はパーミッションレスで、
作成者が自由にパラメータを決める。</p>
<p>今週は6コミットだけだが、プログラムの骨格は入った。本番の詰めは
次週。</p>
<h2>cterm</h2>
<p><strong><a href="https://github.com/KarpelesLab/cterm" rel="noopener noreferrer" target="_blank">cterm</a></strong> に37コミット。
週70〜120コミットで3週間回してきたプロジェクトが落ち着いてくる
ときの自然な巡航速度。新しいサブシステムを足すより、既存の角を
取る作業が多い。</p>
<h2>他にも今週</h2>
<ul>
<li><strong><a href="https://github.com/KarpelesLab/swiftrest" rel="noopener noreferrer" target="_blank">swiftrest</a></strong> — 3コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/x11anywhere" rel="noopener noreferrer" target="_blank">x11anywhere</a></strong> — 2コミット。</li>
<li><strong><a href="https://github.com/vpdotnet/vpnetd-sgx" rel="noopener noreferrer" target="_blank">vpdotnet/vpnetd-sgx</a></strong> —
  VP.NET の SGX enclave コードに1コミット。</li>
</ul>]]></content>
  </entry>
  <entry>
    <title>週刊オープンソース：cterm、まだ続く</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w05.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w05.html</id>
    <published>2026-02-01T00:00:00Z</published>
    <updated>2026-02-01T00:00:00Z</updated>
    <summary>cterm の三週目。今週100コミットのうち95がここに落ちている。</summary>
    <content type="html"><![CDATA[<p>1月26日〜2月1日の週。<strong><a href="https://github.com/KarpelesLab/cterm" rel="noopener noreferrer" target="_blank">cterm</a></strong>
が3週連続で主役。100コミット中95がここ。コアの VT 作業の上に、
ターミナルで Claude を使うときの細かい使い勝手を少しずつ
積み上げている。</p>
<p>他は静か。<strong><a href="https://github.com/KarpelesLab/outscript" rel="noopener noreferrer" target="_blank">outscript</a></strong> に
4コミット、<strong><a href="https://github.com/AzusaOS/azusa-opensource-recipes" rel="noopener noreferrer" target="_blank">AzusaOS/azusa-opensource-recipes</a></strong>
に1コミット。</p>
<p>これが cterm 重視の最後の週になるとは約束できない。</p>]]></content>
  </entry>
  <entry>
    <title>週刊オープンソース：cterm、第二週</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w04.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w04.html</id>
    <published>2026-01-25T00:00:00Z</published>
    <updated>2026-01-25T00:00:00Z</updated>
    <summary>cterm の二週目は119コミット。プラットフォーム統合、レンダリング、AI コーディング支援まわりの使い勝手を詰める週。</summary>
    <content type="html"><![CDATA[<p>1月19日〜25日の週。<strong><a href="https://github.com/KarpelesLab/cterm" rel="noopener noreferrer" target="_blank">cterm</a></strong>
が今週の126コミットのうち119を占めた。ひとつのプロジェクトが他を
全部食べてしまう、そういう週。</p>
<p>ターミナルエミュレータを仕上げるには、長いチェックリストを一つずつ
消していくしかない。レンダリングパイプライン、入力処理の癖、
プラットフォームごとのクリップボード API、スクロールバック、
検索、設定、タブ、分割、ウィンドウ復帰、アクセシビリティ連携、
キーボードレイアウトの端のケース。外から見るとほとんどが見えない
仕事。狙いは、Claude を日常使いするとき — そして普通のシェルを
使うときも — 標準のターミナルよりほんの少しだけ楽になる状態に
することだ。</p>
<p>他は薄く：
<strong><a href="https://github.com/Shells-com/linux-scripts" rel="noopener noreferrer" target="_blank">Shells-com/linux-scripts</a></strong>
（5コミット）、
<strong><a href="https://github.com/AzusaOS/azusa-opensource-recipes" rel="noopener noreferrer" target="_blank">AzusaOS/azusa-opensource-recipes</a></strong>
（1）、<strong><a href="https://github.com/KarpelesLab/rest" rel="noopener noreferrer" target="_blank">rest</a></strong>（1）。
個別に書くほどのものではない。</p>]]></content>
  </entry>
  <entry>
    <title>週刊オープンソース：cterm — AI コーディング向けの Pure-Rust ターミナル</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w03.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w03.html</id>
    <published>2026-01-18T00:00:00Z</published>
    <updated>2026-01-18T00:00:00Z</updated>
    <summary>cterm を公開：プラットフォームネイティブ UI を持つ VT100 エミュレータを Pure Rust で。Claude Code のような AI コーディング支援を回すことを想定した設計。</summary>
    <content type="html"><![CDATA[<p>1月12日〜18日の週。大きな新規リポジトリが一つ、あとは既存の
ものへの小さな作業。</p>
<h2>cterm</h2>
<p><strong><a href="https://github.com/KarpelesLab/cterm" rel="noopener noreferrer" target="_blank">cterm</a></strong> — 13日に立ち上げ、
5日で74コミット入った新しいターミナルエミュレータ。Claude
ユーザー向けのターミナルとして作っている。Pure Rust で、UI は
プラットフォーム固有（macOS は AppKit + CoreGraphics、Linux は
GTK4、Windows は Win32）。VT100/ANSI エンジンは自前で、24bit
カラー、ワイド／結合／絵文字の正しい扱い、正規表現で検索できる
スクロールバック。日々ターミナルで AI コーディング支援を使う
ときに、細かいところで楽になる機能を積み重ねていく。今週は
主に土台 — VT エンジン、バッファ管理、プラットフォームごとの
シェル。</p>
<h2>他にも今週</h2>
<ul>
<li><strong><a href="https://github.com/Shells-com/shells-go" rel="noopener noreferrer" target="_blank">Shells-com/shells-go</a></strong>
  — Go 版 Shells クライアントの保守に17コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/static-opus" rel="noopener noreferrer" target="_blank">static-opus</a></strong> —
  Go から libopus を静的リンクするラッパーに6コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/tpl" rel="noopener noreferrer" target="_blank">tpl</a></strong> — Go のテンプレート
  エンジンに4コミット。</li>
<li><strong><a href="https://github.com/Shells-com/spice" rel="noopener noreferrer" target="_blank">Shells-com/spice</a></strong> —
  Pure Go の Spice プロトコル実装に4コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/goclip" rel="noopener noreferrer" target="_blank">goclip</a></strong> — Go の
  クリップボードヘルパに4コミット。</li>
</ul>]]></content>
  </entry>
  <entry>
    <title>週刊オープンソース：algoc — アルゴリズムは一度だけ書く</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w02.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w02.html</id>
    <published>2026-01-11T00:00:00Z</published>
    <updated>2026-01-11T00:00:00Z</updated>
    <summary>algoc を公開：同じアルゴリズムの、メモリ安全な実装を複数言語に出力する DSL + トランスパイラ。</summary>
    <content type="html"><![CDATA[<p>1月5日〜11日の週。コミット数は薄め（合計37）だが、意味のある
公開が一つ。</p>
<h2>algoc</h2>
<p><strong><a href="https://github.com/KarpelesLab/algoc" rel="noopener noreferrer" target="_blank">algoc</a></strong> — リポジトリ初週
として26コミット。狙いは単純に言うと「一部のアルゴリズムを
クロスプラットフォームに使えるようにする」こと。アルゴリズムを
DSL で一度書いて、複数のターゲット言語に実装を出す。まだ早期で、
この種のプロジェクトは時間がかかる — DSL、型システム、各言語の
バックエンドが一緒に育っていかないと、全体として信頼に堪える
状態にならない。要観察、ただしまだ依存するには早い。</p>
<h2>他にも今週</h2>
<ul>
<li><strong><a href="https://github.com/KarpelesLab/squashfs" rel="noopener noreferrer" target="_blank">squashfs</a></strong> — Pure Go
  の読み書き実装に4コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/goro" rel="noopener noreferrer" target="_blank">goro</a></strong> — PHP-in-Go に
  小さく3コミット。</li>
<li><strong><a href="https://github.com/KarpelesLab/swiftrest" rel="noopener noreferrer" target="_blank">swiftrest</a></strong>、
  <strong><a href="https://github.com/KarpelesLab/qemuctl" rel="noopener noreferrer" target="_blank">qemuctl</a></strong>、
  <strong><a href="https://github.com/KarpelesLab/pobj" rel="noopener noreferrer" target="_blank">pobj</a></strong> に軽めの作業。</li>
</ul>]]></content>
  </entry>
  <entry>
    <title>週刊オープンソース：echeck と、周辺の Swift ポート</title>
    <link rel="alternate" type="text/html" href="https://www.bfe001.net/ja/blog/weekly-2026-w01.html" />
    <id>https://www.bfe001.net/ja/blog/weekly-2026-w01.html</id>
    <published>2026-01-04T00:00:00Z</published>
    <updated>2026-01-04T00:00:00Z</updated>
    <summary>年明けの静かな一週間：SGX 証明書チェッカを仕上げ、Bottle と REST クライアントの Swift 版を公開。</summary>
    <content type="html"><![CDATA[<p>12月29日〜1月4日の週。正月の静かな時期だが、新年早々いくつかの
地味な前進が着地。</p>
<p><strong><a href="https://github.com/KarpelesLab/echeck" rel="noopener noreferrer" target="_blank">echeck</a></strong> — 42コミット。
X.509 証明書に埋め込まれた Intel SGX クオート（OID
<code>1.3.6.1.4.1.311.105.1</code>）を取り出して検証するツールとライブラリ。
チェーン・オブ・トラストの完全検証まで行う。C ライブラリ（CLI
付き）と Go ライブラリの両方を提供。</p>
<p><strong>KLB スタックの Swift 移植。</strong> 今週新しく2本：
<strong><a href="https://github.com/KarpelesLab/swiftrest" rel="noopener noreferrer" target="_blank">swiftrest</a></strong>
（async/await と Swift actors で書いた REST クライアント。OAuth2 と
Ed25519 の API キー署名、チャンクドアップロード対応）と、
<strong><a href="https://github.com/BottleFmt/swiftbottle" rel="noopener noreferrer" target="_blank">swiftbottle</a></strong>
（<a href="https://github.com/BottleFmt/bottle-id" rel="noopener noreferrer" target="_blank">Bottle</a> 安全メッセージ
コンテナの Swift 実装。AES-256-GCM の多受信者暗号、Ed25519 /
ECDSA / RSA の複数署名、CBOR と JSON、<a href="https://github.com/BottleFmt/gobottle" rel="noopener noreferrer" target="_blank">gobottle</a>
や pybottle と相互運用可能）。</p>
<p><strong><a href="https://github.com/KarpelesLab/qemuctl" rel="noopener noreferrer" target="_blank">qemuctl</a></strong> — QEMU
プロセスを管理するための Go ライブラリを12月29日に新規作成。</p>
<p><strong><a href="https://github.com/KarpelesLab/klbfw" rel="noopener noreferrer" target="_blank">klbfw</a></strong>、
<strong><a href="https://github.com/KarpelesLab/atonline-flutter" rel="noopener noreferrer" target="_blank">atonline-flutter</a></strong>、
<strong><a href="https://github.com/BottleFmt/gobottle" rel="noopener noreferrer" target="_blank">gobottle</a></strong> にも小さな
手入れ。</p>]]></content>
  </entry>
</feed>
