Canopy開発日誌-5月-まとめ

4月にできた骨格の上で、次はすぐ新機能を足す——そう見えていた。5月に先に来たのは、接続の安定化とUnicode基盤の整備だった。活動は5/7から。日々の記録は通常版の日誌、英語版はHighlights (English)

ソースコードを構造(IR)として編集する MoonBit 製エディタ。概要はCanopyとは

1. Unicode正しさと編集履歴

Canopyの活動は5/7から。SyncEditorにcausal snapshotを足し、Idealでは編集の因果関係をGraphvizで見るhistory viewの土台を作った。

並行してissue 216のUnicode正しさ監査が始まりmoji(UAX #29)の導入、MarkdownのZWSP処理、bridgeのposition単位整理が進んだ。編集応答benchmark、Canvas、Intent panelもこの時期だ。派手な機能ではないが、あとから名前解決や外部解析を載せる土台になる。

2. RabbitaとCodeMirrorがようやく安定

RabbitaとCodeMirrorをつなぐグルーコードは、それまで触っていると突然動かなくなることがあった。新機能の検証より先に、接続の安定化が来た。

ここが固まってようやく、後半のInspector整備やCognitionの実験に手を伸ばせた。エディタが途中で固まるとそれ以降の作業はすべて止まる——5月前半の判断は、その教訓から出ている。

3. 内部状態を推測から追跡へ

見えないDOMボタン経由の操作をやめ、明示的なイベント購読へ置き換えた。エディタが今何をしているか、推測ではなく追跡できるようになった。

デバッグ時に推測に頼っていた内部状態は、InspectorパネルとOp logで画面上から見えるようにした。「触ったら動く」から「なぜ動いたか説明できる」へ、観測の置き方が変わった。

4. incrの評価モデルを見直す

Build Systems à la Carteを読みながら、incrの評価モデルと公開APIを整理した。spreadsheet demoやbyte codecの切り出しもこの時期に増えた。

地味に見えるが、2ヶ月後の0.13.0・0.14.0へそのままつながる。7月の破壊的リリースと再入ガードは、この月の見直しの延長線上にある。

5. Cognition: AIが読むエディタの断片

「Cognition」と名付けたAI用ナレッジベースの断片が現れた。ワークスペース、コンテキストpacking、provider boundary——エディタの状態をAIが使える形にする狙いだ。

5月の時点ではまだ実を結んでいない。7月のGenUI実験に至る「エディタと生成UI」の問いの、もっと早い芽生えでもある。

6. Lambdaに本物のナビゲーション

scope graphとgo-to-definitionを実装し、Idealのscope annotationも同じ解決へ寄せた。7月の@scope一本化の前段階になる。

ephemeral presenceの整理やjs_engineのbytecode benchmarkも並行して進んだ。構造編集エディタに、言語サーバっぽい「跳ぶ」操作が初めて載った月だ。


前半はUnicode・moji・Intent panel。後半はRabbita接続・Cognition・scope graph。6月のNodeId保持やSDEG展開も、この月の地基の上に載る。