daslang (formerly daScript) is a high-performance statically strongly typed programming language. It can be used standalone or embedded into a C++ host application, and is designed for games and real-time applications.
- Version: 0.6.3
- Release date: TBD
- License: BSD 3-Clause
- Website: https://daslang.io/
- Repository: https://github.com/GaijinEntertainment/daScript
- Documentation: https://daslang.io/doc/
- Blog: https://borisbat.github.io/dascf-blog
- Playground: https://daslang.io/#sandbox
- Authors: Gaijin Entertainment
- High-performance — close to C++ speed via ahead-of-time (AOT) compilation and optional JIT (via LLVM)
- Strong static typing with type inference
- Generics, macros, and compile-time meta-programming
- First-class iterators, generators, lambdas, and closures
- Pattern matching, LINQ-style queries via standard library
- Native C++ interop — easy embedding and binding
- Hot reloading support for rapid iteration
- Cross-platform — Windows, macOS, Linux, WASM
| Directory | Contents |
|---|---|
bin/ |
Compiler and tool binaries (daslang, daslang-live, das-fmt) |
lib/ |
Static and shared libraries for embedding |
include/ |
C++ headers for integration |
daslib/ |
Standard library modules (.das files) |
modules/ |
Optional plugin modules |
examples/ |
Example scripts |
tutorials/ |
Language, integration, and module tutorials |
dastest/ |
Test framework (usable for testing your own code) |
utils/ |
Tooling: MCP server for AI assistants (mcp/), LSP server for Claude Code (lsp/), package manager (daspkg/), lint (lint/), code formatter (das-fmt/), duplicate detector (detect-dupe/), coverage (dascov/), AOT/JIT helpers |
skills/ |
AI-assistant task instructions (paired with the root CLAUDE.md) |
tree-sitter-daslang/ |
Tree-sitter grammar, shared library, and highlighting queries |
New to daslang? GETTING_STARTED.md (next to this file) walks through
running a first program and wiring up editor + AI-assistant tooling.
Run a script:
bin/daslang examples/hello_world.dasAOT-compile a script:
bin/daslang -aot examples/hello_world.das hello_world_aot.cppfind_package(DAS REQUIRED)
target_link_libraries(your_app PRIVATE DAS::libDaScript)See tutorials/integration/ for complete C and C++ embedding examples.
A full tree-sitter grammar for daslang is included in tree-sitter-daslang/. Use it for:
- Syntax highlighting —
tree-sitter-daslang/queries/highlights.scmworks in editors that support tree-sitter (Neovim, Helix, Zed) - Parse-aware search — via ast-grep (
sg) for structural code search. Installsg, then run from the SDK root (wheresgconfig.ymllives):sg run -p "symbol_name" -l daslang - Editor extensions —
tree-sitter-daslang/editors/zed/includes a Zed extension
utils/mcp/ contains an MCP server exposing 40+ compiler-backed tools to AI coding assistants: compilation diagnostics, type inspection, go-to-definition, find-references, AST dump, AOT generation, expression evaluation, parse-aware grep for both .das and C++, duplicate detection, live-reload control, and more. Uses stdio transport — no extra build dependencies.
Configure in .mcp.json:
{
"mcpServers": {
"daslang": {
"command": "bin/daslang",
"args": ["utils/mcp/main.das"]
}
}
}See utils/mcp/README.md for the full tool list and permissions setup.
utils/lsp/ contains a language server for .das: push diagnostics — the
compiler and lint report after every edit with no explicit tool call — plus
definition / references / hover / document & workspace symbols / call
hierarchy / go-to-implementation. Requires python3 on PATH.
Claude Code sessions started at the SDK root load it automatically (the
shipped .claude/skills/daslang-lsp/ plugin manifest). From anywhere else,
register it explicitly:
claude --plugin-dir <sdk-root>/utils/lsp/pluginSee utils/lsp/README.md for configuration (initializationOptions:
compiler override, project_root for native modules, .das_project).
git clone --recurse-submodules https://github.com/GaijinEntertainment/daScript.git daslang
cd daslang
cmake -Bbuild -DCMAKE_BUILD_TYPE=Release
cmake --build build --target daslang --config ReleaseIf macOS blocks the downloaded SDK with errors like "cannot be opened because the developer cannot be verified" or "is damaged and can't be opened", remove the quarantine attribute:
xattr -cr /path/to/daslang-sdkBinaries produced by cmake --install are ad-hoc code signed automatically, which prevents this issue in most cases.
BSD 3-Clause License — Copyright (c) 2019-2026, Gaijin Entertainment.
See LICENSE for the full text.