Sobre el proyecto
Daslang (antes daScript) es un lenguaje de programación de alto rendimiento y tipado estático creado para juegos y aplicaciones en tiempo real. Fue creado en Gaijin Entertainment para resolver la sobrecarga de interoperabilidad entre los lenguajes de scripting y C++ en su motor de juego ECS, donde el marshaling de datos consumía presupuesto de fotograma. El diseño de datos de Daslang coincide con C++, por lo que las llamadas de script a C++ se describen como de coste casi nulo, sin marshaling, boxing ni conversión.
Los principios fundamentales indicados en el README incluyen iteración rápida (un juego de producción completo se recompila en unos cinco segundos, con recarga en caliente integrada), explicitidad (sin conversiones de tipo ocultas ni asignaciones silenciosas; una opción `options log` muestra la salida del compilador), una postura de seguridad pragmática, `delete` manual para reducir la presión del GC, AOT a C++ para velocidad nativa, y un sistema de macros en tiempo de compilación que permite a las bibliotecas reformular la sintaxis para un dominio.
Se planifican tres niveles de ejecución: un intérprete rápido basado en árbol, compilación AOT a C++ (necesaria para consolas) y JIT mediante LLVM. Un modo híbrido usa hashing semántico para que las funciones sin cambios permanezcan en AOT mientras que las modificadas recurran al intérprete, lo que permite hotfixes sin una recompilación completa.
La instalación se realiza mediante git clone con actualización recursiva de submódulos. La compilación usa CMake con una configuración Release y el objetivo `daslang`. El uso de AOT genera un stub de C++ a partir de un archivo `.das`, que luego se compila y enlaza con la aplicación anfitriona. El uso de JIT requiere la biblioteca compartida LLVM 16.0.6 en una ruta fija (`lib/LLVM.dll`) debido a los enlaces dinámicos, tras lo cual los scripts se ejecutan con `-jit`. La integración en aplicaciones CMake se realiza mediante `find_package(DAS)`, que proporciona los objetivos `libDaScript` y `libDaScriptDyn`.
Un gestor de paquetes integrado, daspkg, se encarga de instalar, actualizar y compilar paquetes de daslang, incluidos módulos nativos de C++ y de daslang puro, desde un índice o una URL de git, con soporte de búsqueda. Las extensiones de VS Code proporcionan resaltado de sintaxis y funciones de servidor de lenguaje como linting, depuración y fragmentos de código. Un servidor MCP expone 29 herramientas respaldadas por el compilador a asistentes de codificación con IA, que abarcan diagnósticos de compilación, inspección de tipos, ir a definición, buscar referencias, volcado de AST, generación de AOT, evaluación de expresiones, grep con reconocimiento de parseo y gestión de paquetes, usando transporte stdio sin dependencias de compilación adicionales. Una gramática de tree-sitter analiza el código base y admite resaltado de sintaxis, búsqueda con reconocimiento de parseo mediante ast-grep y extensiones de editor, incluida una extensión de Zed.
El proyecto está licenciado bajo BSD 3-Clause, con componentes de terceros incluidos que conservan sus propias licencias.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.