Об этом проекте

Daslang (ранее daScript) — высокопроизводительный статически типизированный язык программирования, созданный для игр и приложений реального времени. Он был разработан в Gaijin Entertainment для устранения накладных расходов на взаимодействие между скриптовыми языками и C++ в их ECS-движке, где маршалинг данных расходовал бюджет кадра. Раскладка данных Daslang соответствует C++, поэтому вызовы из скрипта в C++ описываются как почти нулевые по стоимости, без маршалинга, упаковки или преобразования. Основные принципы, заявленные в README, включают быструю итерацию (полная production-игра перекомпилируется примерно за пять секунд, со встроенной горячей перезагрузкой), явность (никаких скрытых преобразований типов или неявных аллокаций; флаг `options log` показывает вывод компилятора), прагматичный подход к безопасности, ручной `delete` для снижения нагрузки на GC, AOT-компиляцию в C++ для нативной скорости и систему макросов времени компиляции, позволяющую библиотекам перестраивать синтаксис под предметную область. Планируются три уровня исполнения: быстрый интерпретатор на основе дерева, AOT-компиляция в C++ (обязательна для консолей) и JIT через LLVM. Гибридный режим использует семантическое хеширование, благодаря чему неизменённые функции остаются AOT, а изменённые переключаются на интерпретатор, что позволяет выпускать хотфиксы без полной пересборки. Установка выполняется через git clone с рекурсивным обновлением подмодулей. Сборка использует CMake с конфигурацией Release и целью `daslang`. При использовании AOT из файла `.das` генерируется C++-заглушка, которая затем компилируется и линкуется с хост-приложением. Для JIT требуется разделяемая библиотека LLVM 16.0.6 по фиксированному пути (`lib/LLVM.dll`) из-за динамических привязок, после чего скрипты запускаются с `-jit`. Встраивание в приложения CMake выполняется через `find_package(DAS)`, предоставляя цели `libDaScript` и `libDaScriptDyn`. Встроенный менеджер пакетов daspkg управляет установкой, обновлением и сборкой пакетов daslang, включая чисто daslang-модули и нативные модули C++, из индекса или по git URL, с поддержкой поиска. Расширения VS Code обеспечивают подсветку синтаксиса и функции языкового сервера, такие как линтинг, отладка и сниппеты. MCP-сервер предоставляет 29 инструментов на основе компилятора для ИИ-ассистентов программирования, охватывая диагностику компиляции, инспекцию типов, переход к определению, поиск ссылок, дамп AST, генерацию AOT, вычисление выражений, grep с учётом разбора и управление пакетами, используя транспорт stdio без дополнительных зависимостей сборки. Грамматика tree-sitter разбирает кодовую базу и поддерживает подсветку синтаксиса, поиск с учётом разбора через ast-grep и расширения редакторов, включая расширение для Zed. Проект лицензирован под BSD 3-Clause, а встроенные сторонние компоненты сохраняют собственные лицензии.