部分実装

言語の対応範囲と完成条件#

CNLは、Workspaceの組み立てと自作アルゴリズムを同じ意味体系で書ける言語を目指します。記法を説明したり、既存フィルターを呼べたりするだけで、言語全体を完成扱いにはしません。

現在の範囲#

分野 現在の実装 残る範囲
基本記法 型付き関数、不変のローカル、コメント、単一の最終return より一般の文と構造化された制御
式 数値演算、Boolean、型付き比較、関数呼び出し 短絡論理、遅延分岐、追加演算の一貫した契約
関数 通常の関数・Group、入力と結果の型、宣言とルート解決 一般の高階関数、必要性を検討した再帰・汎用データの設計
データ 公開Value型、Grid/Image/Videoの記述、有限データ、uniform String/Enum 全型・rank・Precisionの実行整備、複合データの記法
反復 静的なRepeat Zone、有限Kernel fold 複数状態、反復番号、動的な有界制御
ワークスペース 明示IDを持つ独立プログラム、一つのmain.cnl、関数目次と標準ライブラリの分離 実AEでの作成・割当・保存受入、複数ファイル編集
再利用 同一ソース内の複数関数、標準ライブラリ、基本import/exportと依存snapshot モジュールの全編集経路、明示reload、版管理の拡充
外部実装 CNL定義+GLSL/HLSL/Slang関数、reflectionとoverlay、登録OpenFXの初期profile 汎用resource binding、常駐転送、対応profileの拡充と実AE受入
編集 Node/Codeの共通型、変換・保存・診断の基盤 全構文の相互編集、構造エディター、位置情報と補完の拡充
実行 対応範囲のCPU意味検証・GPU実行 全アルゴリズムの対応、性能測定、実AEでの受入確認

この表は、将来JavaScriptの全機能をコピーするという約束ではありません。画像・Field・一般計算・再利用するアルゴリズムに必要な機能を、一つの矛盾しない型付き言語として実装するための範囲です。

一つの機能を完成とする条件#

  1. 型・結果・副作用・必要な資源を、共通の意味として定義する。
  2. CodeとNodeで同じ処理を作れ、保存・再読込・Undo後も意味が一致する。
  3. 未接続・不正な下書き、型不一致、実行未対応に理由を出す。
  4. 正常例だけでなく境界値・不正例を、独立した期待値と照合する。
  5. CPUの意味検証と、対象GPU・AEの実行確認を区別して記録する。
  6. 学習用の説明と検証できる例を、この言語ガイドへ追加する。

特に先送りできない意味の問題#

selectで一般のifを代用すると、使わない側の処理も依存関係に残ります。外部入力や失敗を伴う処理では同じ意味になりません。遅延分岐は型・副作用・実行範囲を持つ構造として実装する必要があります。

ファイルを分ける機能では、Workspace・モジュール・関数・ノードの区別、安定した参照、依存版、配布・保存を決める必要があります。ノードごとに無条件に別Workspaceを作る方法は採りません。

GPUの特殊な高速処理を追加しても、利用者の自作アルゴリズムが同じ意味で組めなければ十分ではありません。既存ノード名に依存しない型と実行計画を維持します。製品の対応状況も併せて確認してください。

このページを編集GitHubへのアクセス権が必要です。

CompNode Guide · 日本語製品ドキュメント仕様と実装範囲は各項目で区別しています。

ドキュメントを検索

検索語を入力してください。

    ↑ ↓ で結果を移動、Enter で開く · 検索はこの端末内だけで実行されます。