このプロジェクトについて
Daslang(旧称daScript)は、ゲームやリアルタイムアプリケーション向けに構築された高性能な静的型付けプログラミング言語です。Gaijin Entertainmentで、同社のECSゲームエンジンにおけるスクリプト言語とC++の間の相互運用オーバーヘッドに対処するために作られました。当時、データのマーシャリングがフレーム予算を消費していました。DaslangのデータレイアウトはC++と一致するため、スクリプトからC++への呼び出しはほぼゼロコストとされ、マーシャリング、ボクシング、変換は不要です。
READMEに記載されている中核原則には、高速なイテレーション(本番ゲーム全体が約5秒で再コンパイルされ、組み込みのホットリロードを備える)、明示性(隠れた型変換や暗黙のアロケーションはなく、`options log`フラグでコンパイラ出力を表示)、実用的な安全性への姿勢、GC負荷を減らすための手動`delete`、ネイティブ速度のためのC++へのAOT、ライブラリがドメイン向けに構文を作り変えられるコンパイル時マクロシステムが含まれます。
3つの実行層が計画されています。高速なツリーベースのインタプリタ、C++へのAOTコンパイル(コンソールでは必須)、LLVMによるJITです。ハイブリッドモードではセマンティックハッシュを用いるため、変更されていない関数はAOTのまま、変更された関数はインタプリタにフォールバックし、完全な再ビルドなしでホットフィックスが可能になります。
インストールはgit cloneと再帰的なサブモジュール更新で行います。ビルドにはCMakeをRelease構成と`daslang`ターゲットで使用します。AOTの使用では、`.das`ファイルからC++スタブを生成し、それをコンパイルしてホストアプリケーションとリンクします。JITの使用には、動的バインディングのため固定パス(`lib/LLVM.dll`)にLLVM 16.0.6共有ライブラリが必要で、その後スクリプトは`-jit`で実行されます。CMakeアプリケーションへの組み込みは`find_package(DAS)`を通じて行い、`libDaScript`および`libDaScriptDyn`ターゲットを提供します。
組み込みのパッケージマネージャーdaspkgは、daslangパッケージのインストール、更新、ビルドを処理します。純粋なdaslangおよびC++ネイティブモジュールを含み、インデックスまたはgit URLから取得でき、検索もサポートします。VS Code拡張機能は、構文ハイライトや、リンティング、デバッグ、スニペットなどの言語サーバー機能を提供します。MCPサーバーは29のコンパイラ連携ツールをAIコーディングアシスタントに公開し、コンパイル診断、型検査、定義への移動、参照検索、ASTダンプ、AOT生成、式評価、パース対応grep、パッケージ管理をカバーし、追加のビルド依存なしでstdioトランスポートを使用します。tree-sitter文法はコードベースを解析し、構文ハイライト、ast-grepによるパース対応検索、Zed拡張を含むエディタ拡張をサポートします。
このプロジェクトはBSD 3-Clauseの下でライセンスされており、同梱のサードパーティコンポーネントはそれぞれ独自のライセンスを保持します。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.