asopi tech
asopi techOSS Developer

GPU-Native Code Editor

Nimculus

描画をGPUに直結したエディタへ。

NimNUIをUI基盤とするGPUネイティブコードエディタ。ZedがRustとGPU描画で示した「思考の速度で動くエディタ」というアプローチを参考に、NimとMetalで同じ方向性を探求します。初期開発の主対象はApple Silicon搭載macOSです。

NimNUIとMetalでつくるZed風のGPUネイティブコードエディタ。Apple Silicon先行で開発中。

NimIn Development
描画
Metal
初期ターゲット
Apple Silicon

Key points

  • CAMetalLayer + Metalによる直接描画パイプライン
  • Retinaディスプレイ対応
  • Cocoa / QuartzCoreへのネイティブ統合
nimeditorgpu

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ネイティブ

NimNUI(UI基盤)Metal + CAMetalLayerQuartzCore

プラットフォーム

macOSファースト

macOS on Apple SiliconCocoa

ビルド

Nimツールチェーン

Nim 2.xNimble(build / test / benchmark)

Status

開発状況

M1(macOSウィンドウ、CAMetalLayer、Metal描画、Retina対応、基本入力イベント)の最小縦切りから開発を進めているごく初期のプロジェクトです。Asopitech Laboのインキュベーションプロジェクトとして、設計判断をドキュメントで公開しながら開発しています。

公開リソース

最新の資料・コード・コミュニティ導線をまとめています。

Get Involved

開発に参加する

Nimculusはオープンソース(MIT)で開発中です。GitHubでスターを付けて進捗を追跡してください。