Canopy開発日誌-5月
2026年5月のCanopy開発ログ(日次記録)。月の要約は5月-まとめ。活動は5/7から。
ソースコードを構造(IR)として編集する MoonBit 製エディタ。概要はCanopyとは。
今月の大きな流れ
月全体の流れは5月-まとめにまとめた。以下は週次・日次の作業記録。PR番号の一覧は文末のPR索引にある。前半(5/7〜5/17)は Unicode・履歴・moji、後半(5/18〜)は Rabbita 接続・Cognition・scope graph が中心になる。
5月第1週: Unicode 正しさと編集履歴(5/7〜5/9)
月初のCanopy活動は5/7から。SyncEditorにcausal snapshotを足し、Idealでは編集の因果関係をGraphvizで見るhistory viewの土台を作った。並行してissue 216のUnicode正しさ監査が始まり、MarkdownのZWSP処理修正やbridgeのposition単位整理が進んだ。
2026/5/7
Canopy / SyncEditor causal snapshot
SyncEditor に causal_snapshot と construction identity(Phase 0)を追加した。編集操作の因果関係を後から追える前提を整えた(#225)。
loom
deprecated MoonBit API の置き換えや seam まわりの整理を進めた(#100, #101, #102)。
主なPR / Issue: canopy #225 / loom #100, #101, #102
2026/5/8
Canopy / causal-graph history と editor-adapter
Ideal に causal-graph history view の Phase 1a(DOT 生成)と Phase 1b(UI 配線)を実装した(#229, #232)。Graphviz/History SVG のフィット、bottom panel の render cache とキーボードナビも整えた(#234, #235)。editor-adapter では CM6Adapter への SetDiagnostics 実装と strict TypeScript 向けの型修正を入れた(#227, #230)。
loom
egraph / egglog submodule の整理、cst-transform 研究サンドボックスの削除、pub using facade の拡張を行った(#103〜#107)。
主なPR / Issue: canopy #227, #228, #229, #230, #231, #232, #233, #234, #235
2026/5/9
Canopy / Unicode 正しさ監査の開始
issue #216 に沿った Unicode 正しさ作業が本格化した。非 ASCII の現状挙動をテストで固定し(#239)、Markdown export の ZWSP sentinel 除去を修正した(#238)。API docs で position 単位を明文化し(#241)、event-graph-walker を surrogate-split 修正込みで bump した(#240)。あわせてコードベース全体の cohesion audit を実施した(#236)。
主なPR / Issue: canopy #236, #238, #239, #240, #241
5月第2週: moji・ベンチマーク・Canvas(5/10〜5/16)
UAX #29 ベースの moji ライブラリとエディタ統合が入り、Unicode 監査は ideal-bridge の refactor まで進んだ。編集応答の realistic benchmark、Canvas の handles/edges、ZWSP sentinel の三層整理、Inspector traceability の docs 整備が続いた。
2026/5/10
Canopy / moji と ideal-bridge
moji ライブラリに UAX #29 grapheme / word segmentation を実装し、エディタへ統合した(#251)。ideal-bridge の per-char ループを handle_text_intent へ移し(#246)、#216 監査 docs を更新した(#242〜#249)。
loom
Unicode-safe な lexer offset helper、step lexer、parser diagnostics まわりを Codex 主導で強化した(#108〜#120)。
主なPR / Issue: canopy #242, #243, #245, #246, #247, #248, #249, #251, #252 / loom #108〜#120
2026/5/13
Canopy / ベンチマークと Unicode 追従
realistic editor response benchmark と phase timing 分割を追加した(#259, #260)。event-graph-walker を lv_to_position 最適化と non-BMP 対応込みで更新した(#256, #257, #258)。editor-adapter を npm 0.1.0-alpha.0 として publish した(#223)。
主なPR / Issue: canopy #223, #256, #257, #258, #259, #260
2026/5/14
Canopy / Canvas handles
Canvas に handles と edges を追加した(#262)。
主なPR / Issue: canopy #262
2026/5/15
Canopy / Canvas smoke test と docs
Canvas の Playwright smoke test を追加した(#264)。package README の刷新と aggregator re-export の整理も行った(#265, #266)。
主なPR / Issue: canopy #264, #265, #266
2026/5/16
Canopy / ZWSP 整理と Inspector traceability
moji に ZERO_WIDTH_SPACE と ignorable code point 判定を追加し(#269)、Markdown の ZWSP sentinel を三層 split に整理した(#270)。core/ の stub 注釈や Inspector traceability TODO など、§7 docs を段階的に進めた(#268〜#275)。editor-infrastructure 型への Show 実装と Inspector kind chip の Renderable 経由ルーティングも入った(#277, #278)。
incr
v0.9.2 migration と information-structure rebuild、push fanout の lazy allocation 最適化を行った(#49, #50, #51)。
主なPR / Issue: canopy #268〜#278 / incr #49, #50, #51
5月第3週: Intent panel(5/17)
loomのpretty_unparseとCanonical traitを取り込み、IdealのIntent panelを仕上げた。翌週からはRabbitaとCodeMirrorの接続安定化が中心になる。
2026/5/17
Canopy / Intent panel
Ideal に Intent panel を追加し、History/Graphviz の Rabbita 修正と undo Bool API を入れた(#293)。Patch / label-unify / op-log gate の follow-up docs も整えた(#294)。
loom
pretty_unparse、Canonical companion trait、plan archive などを landing し、Canopy 側で submodule を順次 bump した(#121〜#123)。
主なPR / Issue: canopy #288〜#294 / loom #121, #122, #123
5月第4週: Rabbita/CodeMirror 安定化と Inspector(5/18〜5/24)
RabbitaとCodeMirrorの接続安定化、hidden buttonからイベント購読への移行、InspectorとOp logの整備が中心だった。
2026/5/18
incr の Datalog を使った UI 開発を試した。DataScript と同様のことができるかもしれない。
Rabbita と CodeMirror をつなぐグルーコードも改善した。これまで混沌としていたコードではバグが多く、エディタ操作中に途中で動かなくなることがあったが、それが解消された。 https://claude.ai/share/ed68c575-c459-415d-bd19-b7965dd94e29
主なPR / Issue: loom #124 / canopy #293, #296
2026/5/19
Canopy
rabbita_codemirror(CodeMirror バインディング)の作成を続けた。途中で既存コードのバグが見つかり、その修正に時間を取られた。
また、プログラミング言語の変数入れ替えを incr で実現できるよう環境を整えた。
moondsp
AudioBuffer API を改修した。これまで as_fixed_array で内部の fixed_array に直接アクセスする必要があったが、AudioBuffer 構造体から all / any などのメソッドを直接呼べるようにした。
トークンの使用量を減らす工夫
コーディングエージェントのトークン使用量を減らすため、BAML を導入した。効果はまだ不明で、実際に使って確かめる予定。
主なPR / Issue: canopy #297, #299, #300, #301, #302 / loom #126, #129 / moondsp #60, #62
2026/5/20
Canopy / Rabbita CodeMirror
Canopy の examples/ideal で Rabbita と CodeMirror のバインディング移行を進めた。移行完了まで既存実装と新バインディングを共存させ、マウント手順や二重 DOM、フラグ読み取り、undo 記録まわりの問題を潰した。
selection や extension を CodeMirror 専用 API に閉じ込めるのではなく、標準の Selection / Range API や CodeMirror 本体の API を薄い JS FFI として扱う方針に決めた。
loom
Lambda exampleのAPIを整理した。
incr
可視化機能追加に向けて内部を整理し、EventBroadcastPhaseHook を追加した。専用の public API は増やしていない。パフォーマンスを意識し、イベントリスナではなく Runtime コンストラクタでイベントを buffer してから一括 batch 処理する形にした。ベンチマークでは実行速度が数パーセント向上した。
moondsp
AudioBuffer の write-time validation 設計を進めた。new / filled / fill / set は共通のサンプル検証・正規化パスを通し、-1〜+1 の範囲外の値は正規化する方針にした。adopt については、ゼロコピー契約上、採用後に外部ハンドルから変更された値までは MoonBit 側で検証できないことを明記した。
js_engine
well-known symbol の所有権を realm 側へ移し、js_engine PR #130 をマージした。setup_builtins(env, output, symbols, ...) を単体で呼ぶ場合も、渡された SymbolState で well-known symbol を割り当てるよう修正した。
主なPR / Issue: canopy #303, #305, #306, #307 / loom #131, #132 / incr #58, #59, #60 / moondsp #63 / js_engine #130
2026/5/21
Canopy
examples/ideal で Rabbita と DOM イベントの境界を整理した。Canopy PR #312 で Rabbita に依存しない DOM boundary helper を追加し、Canopy PR #313 から Canopy PR #316 では、overlay・sync・structure mode の hidden button として実装していた命令的トリガーを Rabbita の custom event 購読へ置き換えた。
イベント購読の失敗をログ出力する変更も入れたため、Rabbita 側のイベント登録で問題が起きたときに原因を追いやすくなった。UI 操作を DOM の隠しボタンに頼るより、Rabbita 側のイベント購読として扱うほうが、後から読んだときに責務の境界が分かりやすい。
loom
incremental parser reuse まわりの TODO を進めた。削除時に左隣 CST を再利用するケースや、削除で offset がずれた node を再利用するケースをテストで固定し、現在の invariant が parser-owned な token / subtree identity ではなく、検証済み CST subtree reuse であることを確認した。
incr
public API の命名と read helper を整理した。read まわりの permissive な helper をリネームし、理想形 API への移行計画を立てた。
js_engine
well-known symbol lookup の移行を進めた。js_engine PR #131 と js_engine PR #132 で、runtime や stdlib に残っていた引数なし symbol getter を明示的な realm-owned WellKnownSymbols アクセスへ移し、互換用 legacy path を削除した。
主なPR / Issue: canopy #312, #313, #316 / loom #134, #135, #136 / incr #61, #62, #63 / js_engine #131, #132
2026/5/22
Canopy
Rabbita 側の undo / redo ショートカットも hidden button 経由から外した。Canopy PR #318 で、CodeMirror 側が request-undo / request-redo の custom event を dispatch し、Rabbita 側がそれを Undo / Redo に変換する形になった。前日から続けていた hidden button トリガーの削除は、これで一段落。
その後、examples/web と examples/ideal への tsc --noEmit CI job 追加と、Inspector への incr runtime snapshot 表示も入れた。
incr
target API facade の作業を進めた。incr PR #68 で理想形 API の facade を追加し、runtime read helper の deprecation、input freshness facade、map relation facade と続けた。Canopy 側から使う API を薄く整えつつ、古い read helper への直接依存を減らしている。
js_engine
iterator cache や primitive wrapper prototype の状態を RealmState へ移した。中心は js_engine PR #133 と js_engine PR #134 で、factory / prototype 系の状態を module global から realm-owned state へ移す作業を続けている。
注: RealmはECMAScript仕様の概念。
主なPR / Issue: canopy #318, #320, #321 / incr #68, #69, #70, #71, #72 / js_engine #133, #134
2026/5/23
Canopy
Inspector まわりの作業を続けた。Patch panel を追加し、view_op_log / view_patch の guard、Op Log の label format 統一、SourceMap::nodes_at_position の範囲制約修正を入れた。Ideal を触りながら内部状態を確認する道具が増え、op log や patch から原因を追いやすくなった。
incr
API migration に向けてドキュメントと example を増やした。architecture、cookbook、API reference の例を新 API 名に合わせて更新し、Build Systems à la Carte を読みながら、自分の実装がどの評価戦略・依存関係モデルに近いかを docs に記録した。
moondsp
Loom を使った mini 記法の検証を進めた。specs/loom-mini-cst の grammar parity に向けて checked target API examples と loom-mini-cst の docs を更新し、Loom 側の API drift を spec で検出できる状態にした。production parser をすぐ切り替えるのではなく、まず spec 側で Loom の挙動を固定していく方針だ。
js_engine
prototype 移行を続けた。object function、Promise、WeakMap / WeakSet、Map / Set、Array prototype などの lookup や storage を順に RealmState へ寄せ、module global に残っていた prototype 参照を減らした。
主なPR / Issue: canopy #323, #324, #327, #329 / incr #73, #74, #75, #76, #77, #78, #79 / js_engine #135, #136, #137, #138, #139
2026/5/24
Canopy / loom
Loom issue #147 の移行を Canopy 側まで進めた。text_change と moji は Canopy 配下ではなく Loom monorepo の top-level module に置く方針とし、loom PR #149 で両者を Loom 側へ移し、Canopy 側は Canopy PR #341 で ./loom/text-change と ./loom/moji を参照するようにした。
Canopy 内の lib/text-change と lib/moji、未使用だった valtio submodule も整理した。Loom を単体でビルドしやすくするため、Canopy 側に置かれていた共通部品を Loom の責任範囲へ戻した。
incr
incr PR #81 で v0.6.0 をリリースした。その後、Canopy や Loom 側の利用に合わせてファイル名や skill の記述を新 API 名に揃えた。
moondsp
Loom mini CST の改良を続けた。moondsp PR #75 で quickcheck を 0.14.0 へ上げ、moondsp PR #76 で loom-mini-cst の grammar を広げた。この時点でも production parser は Loom へ切り替えておらず、Loom は spec と回帰テストで使う位置づけのままだ。
js_engine
RealmState 移行をさらに進めた。runtime の Map / Set、boxed primitive、Array、WeakMap / WeakSet、ArrayBuffer storage などを順に RealmState 側へ寄せ、CI workflow の Node.js 更新と deprecated な moon install 呼び出しの削除も行った。
主なPR / Issue: loom #149 / canopy #341 / incr #81, #82, #83 / moondsp #71, #73, #74, #75, #76, #79 / js_engine #140, #142, #143, #144, #146, #147, #148, #149, #151
5月第5週: Cognition と scope graph(5/25〜5/31)
Cognition のワークスペースと provider boundary、Lambda scope graph と go-to-definition、ephemeral / byte-codec の切り出し、incr typed spreadsheet demo と js_engine bytecode benchmark が並行して進んだ。
2026/5/25
Canopy
Lambda metadata を editor・ワークスペース・FFI の境界に通す変更を進めた。ffi/lambda の routing、ワークスペースの coordination、Editor 側の metadata 受け渡し、typed workflow port handler を追加し、Lambda example を Cognition 側へ接続する準備が整ってきた。Lambda example を単なるサンプルではなく、ワークスペースや Cognition の実験台として使えるようにするための作業だ。
loom
Memo から Derived への用語・API 整理に合わせて examples/lambda を更新した。seam への direct CST query helper と docs への CST projection guide も追加した。
moondsp
Loom mini CST から projection method IR を検証した。moondsp PR #80 で projection method IR を validate し、apply-edit の自動テストや loop expression の style guidance も追加した。
js_engine
construct / call コンテキストの明示化を進めた。ArrayBuffer の RealmState 移行に続き、construction state を明示的な call コンテキストへ移し、ambient interpreter context への fallback を削除した。
主なPR / Issue: canopy #345, #347, #348, #349, #350 / loom #152, #154, #155, #156 / moondsp #80, #81, #83, #84, #85, #87 / js_engine #152
2026/5/26
Canopy
Cognition の基盤を進めた。ワークスペース file の追跡 Canopy PR #357 に加え、minimal な incremental reactive layer、コンテキスト packing API、provider boundary の計画と docs を追加し、削除済みファイルの依存関係を掃除する修正も入れた。
あわせて Lambda 側は Loom の LambdaAnalysis attachment を使う形に寄せた。Cognition が参照するファイル・依存関係・コンテキストを明示的に扱えるようにし、後続のプロバイダ連携へ進む土台を作っている。
incr
API の大きな整理を続けた。safe incremental refactor として types と correctness を整理し、pipeline traits を deprecated 扱いにした。expr formula API の設計も docs に残している。
moondsp
Loom mini CST の coverage を広げた。slow postfix projection、degrade / euclid projection、dollar stack parity、sub-notation postfix parity、callback method projection などを追加し、Loom mini が production mini の構文にどこまで追いつけるかを確認した。
js_engine
borrowed built-in realm の routing を修正した。js_engine PR #153 で、built-in realm の扱いを明示的な routing に寄せている。
主なPR / Issue: canopy #355, #357, #358, #359, #360, #362, #363, #364 / incr #87, #89 / moondsp #88, #89, #90, #91, #92, #93, #94, #95 / js_engine #153
2026/5/27
Canopy
provider boundary の設計を実装へ進めた。provider boundary domain を追加し、provider boundary plan を retarget した。前日までの recompute cleanup やコンテキスト packing を受け、Cognition が外部プロバイダへ渡す境界を整理する段階に入っている。プロバイダの結果をそのまま受け入れるのではなく、どの入力とコンテキストに対する結果かを追えるようにしておく必要がある。
incr
Phase 3a facade migration の docs を入れ、evaluation strategy を kernel から切り出した。incr PR #94 では現在の incr モデルを docs にまとめている。
moondsp
Loom mini CST の known edge を characterize した。moondsp PR #99 で、mode-incompatible な mini atom を reject する挙動や known edge の follow-up 状況を docs に残した。
js_engine
startup benchmark の staging と benchmark summary 表示を整理した。js_engine PR #154 で JS startup benchmark の足場を追加し、js_engine PR #155 で benchmark dashboard の表示を整えた。
主なPR / Issue: canopy #365 / incr #90, #91, #92, #93, #94, #96 / moondsp #96, #97, #99, #100, #102 / js_engine #154, #155
2026/5/28
Canopy
provider planning と Lambda semantic 側の作業を続けた。provider planning と lambda semantic overlay を追加し、ワークスペース memo の smoke test、memo lifecycle API、reactive provider boundary driver まで進んだ。lib/cognition/provider_boundary_store.mbt と lib/cognition/reactive.mbt に provider planning graph を接続し、cancellation・completion・retry classification・driver action を @incr の内部状態として扱う方向が固まってきた。
テストも増やした。provider cancellation の idempotency、driver shutdown 時に pending request を観測できること、file removal や budgeted context 変更後に stale な completion を拒否すること。プロバイダ応答が遅れて返ってきたときに、古いコンテキストの結果を現在の状態へ混ぜないための整理だ。
Lambda・JSON・Markdown の FFI read accessor も coordinator 経由の protected read へ寄せた。ワークスペース更新中に外側から半端な状態を読まれないようにする変更で、プロバイダ連携を進める前の境界固めにあたる。
incr
runtime evaluation event API まわりを進めた。internal runtime evaluation events と evaluation strategy bundle を追加し、static derived fast path の benchmark も取った。honest read-error ownership の設計を docs に残し、Derived::fallible / DerivedMap::fallible を追加した。
moondsp
loom-mini-cst の provenance matrix coverage と control method projection parity を追加した。Loom 移行に向け、upstream へ要求する挙動と recovery state を docs に分け、回復処理の evidence も増やした。
js_engine
closure-converted block bodies を最適化した。続けて opt-in の bytecode prototype を追加し、既存 interpreter を残したまま bytecode 実行経路を育てる準備に入った。
主なPR / Issue: canopy #367, #368, #370, #372, #374, #375, #376, #377, #378, #379 / incr #95, #97, #98 / moondsp #101, #104, #106, #107, #108 / js_engine #156, #157
2026/5/29
Canopy
前日まで進めていた Cognition から少し離れ、repo 全体の再利用性と整理に手を入れた。agent reuse protocol の docs を追加し、レビュー指摘を受けて API map、PR template、package overview の型まわりも直した。
MoonBit の idiom sweep として、core / projection、lang/json、lang/lambda、editor まわりで guard、pattern matching、loop idiom、ProjNode::id() の使い方を整理した。tree-editor の file split も入れ、後続の変更で触る範囲を読みやすくした。
大きめの変更として、editor 内にあった ephemeral presence subsystem を dowdiness/canopy/ephemeral へ切り出した。さらに wire primitive を汎用の lib/byte-codec として抽出し、relay の wire codec もそこへ移した。presence と relay がそれぞれ似た wire 処理を持つのではなく、低レベルの byte 列変換を共通部品として扱う形になった。
Canvas 側では connection drag 中の preview port compatibility を追加した。接続を引いている途中でも port の互換性を確認しながら preview でき、グラフ編集の手触りが良くなった。
moondsp
Loom mini CST projection での helper 利用を進めた。projection identity helper と optional-edit projection helper を使うようにし、Loom 側に寄せた projection API で spec を保てるか確認している。
js_engine
bytecode 実行経路を広げた。short-circuit operator と comma expression の bytecode 対応を追加し、sloppy arguments formal binding、double super initialization、async generator function の name / length、destructuring rest parameter の扱いを順に修正した。
bytecode はまだ opt-in 段階だが、式や関数境界の細かい仕様ケースを通しながら interpreter との差分を潰している。
主なPR / Issue: canopy #381, #382, #383, #385, #387, #388, #390, #391, #392, #394 / moondsp #109, #110 / js_engine #158, #159, #160, #161, #162, #163
2026/5/30
Canopy
Lambda の scope graph を本格的に実装へ落とし始めた。NodeId をキーにした binding index を追加し、rename の binder lookup を古い resolve_binder から @scope.declaration へ移した。残っていた呼び出し側も @scope.declaration へ移し、module binder の Decl.node_id に関する production contract と cross-pipeline resolution equivalence をテストで固定した。
cross-pipeline の PBT を通す中で、module binder の node_id が実際の projection node を指していない問題もはっきりした。go-to-definition を作るときに邪魔になるため、既存 SourceMap token span から binder location を引ける Option D の設計に整理した。
loom
Canopy 側の scope graph と projection identity を支える変更を進めた。CST token を source span として保持し、parser-owned reuse の rebase を取り戻し、source-span reuse API を固めた。さらに ProjectionIdentityTracker を追加し、projection identity を単発 helper ではなく、編集列をまたいで追跡できる部品にした。
incr
typed spreadsheet demo を実際に触れる UI へ育てた。セル編集に始まり、50x50 の fullscreen sheet、inline edit、trace / evidence overlay、night theme を備えた Rabbita demo まで広げた。式の評価は MoonBit 側に残し、Rabbita は表示と操作の層に留める方針のままだ。
moondsp
Loom 側で増えた projection identity helper を spec へ取り込んだ。Loom mini CST projection を production parser へすぐ置き換えるのではなく、まず spec の projection identity を上流 API に寄せ、移行時の前提を揃えている。
js_engine
opt-in bytecode / VM prototype の coverage を大きく広げた。演算子、property access、call / construct、destructuring、eval、super などの実行経路を既存 runtime helper に寄せながら bytecode へ通し、未対応構文は明示的な unsupported 診断で落とすようにした。その後、bytecode performance microbenchmark の追加と、不要な arguments object setup を避ける最適化も入れた。
主なPR / Issue: canopy #396, #397, #398, #399, #400, #401, #402, #403 / loom #188, #189, #190, #191, #192 / incr #117, #118 / moondsp #111 / js_engine #164, #171, #172
2026/5/31
Canopy
前日に設計した scope graph の binder location を実装した。@scope.binder_span と @scope.go_to_definition を追加し、references を DeclId キーに移して、module binder の synthetic node_id に依存しない形にした。incremental と full pipeline の差分テストも追加し、FlatProj reuse や @incr memo stack を通しても同じ解決結果になることを確認している。
incr の read channel が ReadError を返すようになったのに合わせ、coordinator 側でも ReadError を伝播するようにした。scope graph 側では module edit の reference を identity ベースにし、edit capture check や Ideal の scope annotation も canonical な @scope graph から導出する形へ寄せた。UI の highlight と scope graph の解決結果が別 resolver を持つ状態から、これで一歩抜け出せた。
docs 側では repository responsibility map、GUI layer integration report、module 一覧と .gitmodules / moon.mod.json の整合性を整理した。Structure mode の fallback document も schema valid に直している。
loom
前日の ProjectionIdentityTracker を、失敗した edit や malformed damage をまたいで compose できるようにした。また、incr 側の typed spreadsheet demo、ReadError、accumulator ReadError に合わせて submodule を更新し、Canopy や moondsp が同じ基盤を参照できるようにした。
incr
honest read-error ownership の Tier 2 として、public read channel を CycleError から ReadError へ広げた。これで dispose された cell の読み取りを catch できない abort ではなく Err(Disposed(_)) として扱える。Derived::fallible の recipe と ReachableDerived の ADR も docs に追加し、typed spreadsheet demo 側では GC rooting と per-edit evidence snapshot の上限も直した。
その後、static Derived の private path を通常経路へ昇格させ、disposed cell id の dependent guard、Datalog relation の net change publish、accumulator read の ReadError 対応も入れた。typed spreadsheet demo には Cloudflare Pages への deploy workflow を追加し、Node 24 actions にも合わせた。
moondsp
Loom の tracker edit composition を spec 側で消費し、Loom promotion notes も現状に合わせて更新した。web 側では live UI から song playback を触れるようにし、multiline song の help や global BPM の説明も補った。
js_engine
bytecode prototype の性能を測る入口を整えた。PR ごとに base-vs-head の benchmark を出せるようにし、live benchmark dashboard を再設計して commit date や scan control を見やすくした。さらに plain object property helper と bytecode environment lookup の hot path を最適化し、startup Hyperfine workflow、startup decomposition helper、startup phase breakdown benchmark を追加した。
主なPR / Issue: canopy #404, #405, #406, #407, #408, #409, #410, #411, #412, #420, #421, #426, #427, #431, #432, #433 / loom #197, #198, #199, #200, #201, #204 / incr #119, #120, #125, #126, #127, #132, #133, #134, #135, #136, #137, #141, #142, #144, #145 / moondsp #112, #113, #115, #116 / js_engine #173, #174, #175, #176, #177, #178, #182, #183, #184
PR索引
週ごとに折りたたんだ PR / Issue 一覧。GitHub 上の詳細への索引。
5月第1週(5/7〜5/9)
2026/5/7
Canopy / loom
canopy #225 / loom #100, #101, #102
2026/5/8
Canopy / loom
canopy #227, #228, #229, #230, #231, #232, #233, #234, #235
2026/5/9
Unicode監査
5月第2週(5/10〜5/16)
2026/5/10
moji / loom
canopy #242, #243, #245, #246, #247, #248, #249, #251, #252 / loom #108〜#120
2026/5/13
ベンチマーク
canopy #223, #256, #257, #258, #259, #260
2026/5/14
Canvas handles
canopy #262
2026/5/15
Canvas smoke test
2026/5/16
ZWSP / incr
5月第4週(5/18〜5/24)
2026/5/18
Rabbita / loom
2026/5/19
Canopy / moondsp
canopy #297, #299, #300, #301, #302 / loom #126, #129 / moondsp #60, #62
2026/5/20
Rabbita CodeMirror
canopy #303, #305, #306, #307 / loom #131, #132 / incr #58, #59, #60 / moondsp #63 / js_engine #130
2026/5/21
DOM boundary / loom
canopy #312, #313, #316 / loom #134, #135, #136 / incr #61, #62, #63 / js_engine #131, #132
2026/5/22
Inspector / incr
canopy #318, #320, #321 / incr #68, #69, #70, #71, #72 / js_engine #133, #134
2026/5/23
Op log / incr
canopy #323, #324, #327, #329 / incr #73, #74, #75, #76, #77, #78, #79 / js_engine #135, #136, #137, #138, #139
2026/5/24
text-change移行
loom #149 / canopy #341 / incr #81, #82, #83 / moondsp #71, #73, #74, #75, #76, #79 / js_engine #140, #142, #143, #144, #146, #147, #148, #149, #151
5月第5週(5/25〜5/31)
2026/5/25
Cognition / loom
canopy #345, #347, #348, #349, #350 / loom #152, #154, #155, #156 / moondsp #80, #81, #83, #84, #85, #87 / js_engine #152
2026/5/26
Cognition基盤
canopy #355, #357, #358, #359, #360, #362, #363, #364 / incr #87, #89 / moondsp #88, #89, #90, #91, #92, #93, #94, #95 / js_engine #153
2026/5/27
provider boundary
canopy #365 / incr #90, #91, #92, #93, #94, #96 / moondsp #96, #97, #99, #100, #102 / js_engine #154, #155
2026/5/28
provider planning
canopy #367, #368, #370, #372, #374, #375, #376, #377, #378, #379 / incr #95, #97, #98 / moondsp #101, #104, #106, #107, #108 / js_engine #156, #157
2026/5/29
ephemeral / byte-codec
canopy #381, #382, #383, #385, #387, #388, #390, #391, #392, #394 / moondsp #109, #110 / js_engine #158, #159, #160, #161, #162, #163
2026/5/30
scope graph
canopy #396, #397, #398, #399, #400, #401, #402, #403 / loom #188, #189, #190, #191, #192 / incr #117, #118 / moondsp #111 / js_engine #164, #171, #172
2026/5/31
go-to-definition / ReadError
canopy #404, #405, #406, #407, #408, #409, #410, #411, #412, #420, #421, #426, #427, #431, #432, #433 / loom #197, #198, #199, #200, #201, #204 / incr #119, #120, #125, #126, #127, #132, #133, #134, #135, #136, #137, #141, #142, #144, #145 / moondsp #112, #113, #115, #116 / js_engine #173, #174, #175, #176, #177, #178, #182, #183, #184