À propos du projet
Daslang (anciennement daScript) est un langage de programmation typé statiquement et hautes performances conçu pour les jeux et les applications temps réel. Il a été créé chez Gaijin Entertainment pour résoudre la surcharge d'interopérabilité entre les langages de script et le C++ dans leur moteur de jeu ECS, où le marshaling des données consommait le budget par image. La disposition des données de Daslang correspond à celle du C++, de sorte que les appels script-vers-C++ sont décrits comme à coût quasi nul, sans marshaling, boxing ni conversion.
Les principes fondamentaux énoncés dans le README incluent une itération rapide (un jeu de production complet se recompile en environ cinq secondes, avec rechargement à chaud intégré), l'explicité (aucune conversion de type cachée ni allocation silencieuse ; un indicateur `options log` affiche la sortie du compilateur), une position pragmatique en matière de sécurité, un `delete` manuel pour réduire la pression du GC, l'AOT vers C++ pour des performances natives, et un système de macros à la compilation qui permet aux bibliothèques de remodeler la syntaxe pour un domaine.
Trois niveaux d'exécution sont prévus : un interpréteur arborescent rapide, la compilation AOT vers C++ (requise pour les consoles) et le JIT via LLVM. Un mode hybride utilise le hachage sémantique afin que les fonctions inchangées restent en AOT tandis que les fonctions modifiées basculent vers l'interpréteur, permettant des correctifs sans reconstruction complète.
L'installation se fait via git clone avec mise à jour récursive des sous-modules. La compilation utilise CMake avec une configuration Release et la cible `daslang`. L'usage AOT génère un stub C++ à partir d'un fichier `.das`, qui est ensuite compilé et lié avec l'application hôte. L'usage JIT nécessite la bibliothèque partagée LLVM 16.0.6 à un chemin fixe (`lib/LLVM.dll`) en raison des liaisons dynamiques, après quoi les scripts s'exécutent avec `-jit`. L'intégration dans des applications CMake se fait via `find_package(DAS)`, fournissant les cibles `libDaScript` et `libDaScriptDyn`.
Un gestionnaire de paquets intégré, daspkg, gère l'installation, la mise à jour et la compilation des paquets daslang, y compris les modules pure-daslang et natifs C++, depuis un index ou une URL git, avec prise en charge de la recherche. Les extensions VS Code fournissent la coloration syntaxique et des fonctionnalités de serveur de langage telles que le linting, le débogage et les extraits de code. Un serveur MCP expose 29 outils adossés au compilateur aux assistants de codage IA, couvrant les diagnostics de compilation, l'inspection de types, la définition, la recherche de références, le dump d'AST, la génération AOT, l'évaluation d'expressions, le grep conscient de l'analyse syntaxique et la gestion des paquets, en utilisant le transport stdio sans dépendance de compilation supplémentaire. Une grammaire tree-sitter analyse la base de code et prend en charge la coloration syntaxique, la recherche consciente de l'analyse via ast-grep, et des extensions d'éditeur dont une extension Zed.
Le projet est sous licence BSD 3-Clause, les composants tiers vendus conservant leurs propres licences.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.