GPU-Native Code Editor
Nimculus
描画をGPUに直結したエディタへ。
NimNUIをUI基盤とするGPUネイティブコードエディタ。ZedがRustとGPU描画で示した「思考の速度で動くエディタ」というアプローチを参考に、NimとMetalで同じ方向性を探求します。初期開発の主対象はApple Silicon搭載macOSです。
NimNUIとMetalでつくるZed風のGPUネイティブコードエディタ。Apple Silicon先行で開発中。
- 描画
- Metal
- 初期ターゲット
- Apple Silicon
Key points
- CAMetalLayer + Metalによる直接描画パイプライン
- Retinaディスプレイ対応
- Cocoa / QuartzCoreへのネイティブ統合
Challenge
エディタの応答性はUI基盤で決まる
Web技術ベースのエディタは入力遅延や描画ジッタが生まれやすく、汎用GUIツールキットはエディタ特有の描画に最適化されていない。
- Web技術ベースのエディタは入力からの描画遅延が積み重なる
- 汎用GUIツールキットはテキスト描画・スクロールの最適化に限界がある
- GPUを直接使うエディタ基盤の実装例はまだ少なく、Nimでの前例はほぼない
Nimculusは、NimNUIをUI基盤とするGPUネイティブコードエディタです。ZedがRustとGPU直接描画で示した高速なエディタ体験を参考に、NimとMetalで同じ方向性を探求します。単純なクローンではなく、Nimの言語特性に合わせてアーキテクチャを再解釈することが目的です。
現在はAsopitech Laboのインキュベーションプロジェクトとして、Apple Silicon搭載macOSを初期ターゲットにM1(最小縦切り)から開発中です。GitHub Issuesでバグ報告や機能リクエストを受け付けています。
GPUに直結した描画パイプライン
NimculusはZedのGPUアクセラレーテッドなエディタアーキテクチャを参考に、CocoaウィンドウにCAMetalLayerを載せ、Metalで直接描画するパイプラインをNimで実装します。単純なクローンではなく、Nimの言語特性(C FFI・マクロ・コンパイル速度)に合わせた再解釈が目的です。
- macOSウィンドウ + CAMetalLayer + Metal描画の最小縦切りを実装
- Retina対応と基本入力イベント処理
- アーキテクチャ・設計判断・ロードマップをドキュメントとして公開
- UI基盤
- NimNUI
- ホスト言語
- Nim 2.x
Capabilities
3つの柱
GPU描画、ネイティブ統合、設計の透明性。
GPU描画
Metal直接描画
- CAMetalLayerによる描画サーフェス管理
- Metalのclear / rectangle描画パイプライン
- Retinaディスプレイのスケーリング対応
ネイティブ統合
macOSファースト
- Cocoa / QuartzCoreへの直接FFI
- macOSウィンドウ管理
- 基本入力イベントの取得と処理
設計の透明性
ドキュメント公開
- ARCHITECTURE / DESIGN_DECISIONSを公開
- ROADMAPと開発ガイドラインを公開
- nimble build / test / benchmarkで検証可能
Milestone
M1: 最小縦切り
エディタの土台となる描画・入力の縦切りを最初のマイルストーンとして実装。
macOSウィンドウ
Cocoaによるネイティブウィンドウの生成と管理
Metal描画
CAMetalLayer上でのclear / rectangle描画
Retina対応
高DPIディスプレイでの正確なスケーリング
入力イベント基盤
キーボード・マウス等の基本入力イベント処理
Tech Stack
技術スタック
NimとAppleネイティブフレームワークの組み合わせ。
UI / 描画
GPUネイティブ
プラットフォーム
macOSファースト
ビルド
Nimツールチェーン
Status
開発状況
M1(macOSウィンドウ、CAMetalLayer、Metal描画、Retina対応、基本入力イベント)の最小縦切りから開発を進めているごく初期のプロジェクトです。Asopitech Laboのインキュベーションプロジェクトとして、設計判断をドキュメントで公開しながら開発しています。
Get Involved
開発に参加する
Nimculusはオープンソース(MIT)で開発中です。GitHubでスターを付けて進捗を追跡してください。