{"id":19723405,"url":"https://github.com/gaijinentertainment/dascript","last_synced_at":"2026-04-02T20:22:34.961Z","repository":{"id":37431543,"uuid":"146238112","full_name":"GaijinEntertainment/daScript","owner":"GaijinEntertainment","description":"daslang - high-performance statically strong typed scripting language","archived":false,"fork":false,"pushed_at":"2025-05-07T05:49:47.000Z","size":104124,"stargazers_count":983,"open_issues_count":17,"forks_count":108,"subscribers_count":26,"default_branch":"master","last_synced_at":"2025-05-07T06:37:21.525Z","etag":null,"topics":["game-development","interpreter","programming-language","scripting-language","static-typing"],"latest_commit_sha":null,"homepage":"https://daslang.io","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GaijinEntertainment.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-08-27T02:41:40.000Z","updated_at":"2025-05-07T05:49:50.000Z","dependencies_parsed_at":"2025-04-13T12:47:03.332Z","dependency_job_id":"3b1795d1-be7a-4517-80d0-229e36e892e1","html_url":"https://github.com/GaijinEntertainment/daScript","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GaijinEntertainment%2FdaScript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GaijinEntertainment%2FdaScript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GaijinEntertainment%2FdaScript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GaijinEntertainment%2FdaScript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GaijinEntertainment","download_url":"https://codeload.github.com/GaijinEntertainment/daScript/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254190396,"owners_count":22029632,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["game-development","interpreter","programming-language","scripting-language","static-typing"],"created_at":"2024-11-11T23:21:54.561Z","updated_at":"2026-04-02T20:22:34.955Z","avatar_url":"https://github.com/GaijinEntertainment.png","language":"C","readme":"# Daslang\n\nDaslang (formerly daScript) is a high-performance, statically typed programming language built for games and real-time applications.\n\n[![build](https://github.com/GaijinEntertainment/daScript/actions/workflows/build.yml/badge.svg)](https://github.com/GaijinEntertainment/daScript/actions/workflows/build.yml)\n[![wasm_build](https://github.com/GaijinEntertainment/daScript/actions/workflows/wasm_build.yml/badge.svg)](https://github.com/GaijinEntertainment/daScript/actions/workflows/wasm_build.yml)\n\n[Website](https://dascript.org/) · [Documentation](https://dascript.org/doc/) · [Blog](https://borisbat.github.io/dascf-blog) · [Try Online](https://gaijinentertainment.github.io/try-dascript/)\n\n## Why Daslang?\n\nDaslang was created at [Gaijin Entertainment](https://gaijin.net/) to solve a real problem: **interop overhead** between scripting languages and C++ was eating the frame budget in their ECS game engine. Lua (via LuaJIT) and Squirrel both hit the same wall — marshaling data back and forth was too expensive.\n\nDaslang's data layout matches C++. There is no marshaling, no boxing, no conversion — script↔C++ calls are near-zero cost.\n\n**Core principles:**\n- **Iteration speed is king** — a full production game recompiles in ~5 seconds; hot reload is built in\n- **Explicit, not implicit** — no hidden type conversions, no silent allocations; `options log` shows exactly what the compiler produces\n- **99% safe, not 100%** — eliminates real-world C++ bugs pragmatically, without Rust-level restrictions\n- **If it gets slow, you can fix it** — manual `delete` to reduce GC pressure, AOT to C++ for native speed\n- **The language reflects the problem** — a compile-time macro system lets libraries reshape syntax to match the domain\n\n**Three execution tiers** (all planned from day one):\nfast tree-based **interpreter** → **AOT** compilation to C++ (required for consoles) → **JIT** via LLVM.\nHybrid mode uses semantic hashing: unchanged functions stay AOT, changed ones fall back to the interpreter — ship a hotfix without a full rebuild.\n\nSee the [design philosophy](doc/source/reference/design_philosophy.rst) for the full story.\n\n## Installation\n\n```sh\ngit clone https://github.com/GaijinEntertainment/daScript.git daslang\ncd daslang\ngit submodule update --init --recursive\n```\n\n## Building\n\n```sh\ncmake -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo\ncmake --build build --target daslang --config RelWithDebInfo\n```\n\n## AOT usage\n\nAOT compiles daslang scripts to C++ for native performance. Generate the C++ stub, then compile and link it with your host application:\n\n```sh\n./bin/daslang -aot main.das aot_main.cpp\nclang++ host.cpp aot_main.cpp -Iinclude lib/liblibDaScript.a lib/liblibUriParser.a -o app\n```\n\nFor a complete walkthrough, see the [AOT tutorial](doc/source/reference/tutorials/integration_cpp_13_aot.rst) and [integration_cpp_13.cpp](tutorials/integration/cpp/integration_cpp_13.cpp).\n\n## JIT usage\n\nTo use JIT, you need the `LLVM 16.0.6` shared library at the path\n`lib/LLVM.dll`, this name is fixed because of [dynamic bindings](modules/dasLLVM/bindings/llvm_func.das).\n\nOnce you have `LLVM.dll`, all you need is:\n```sh\n./bin/daslang -jit main.das\n```\nFor more details on how JIT works and what can be configured, see the\n[JIT Readme](modules/dasLLVM/README.md).\n\n## Embedding into cmake\n\nTo embed daslang into your CMake application, simply call `find_package(DAS)`.\nThis will provide the targets `libDaScript`\nand `libDaScriptDyn`. For an example of using daslang as an external project\n(including usage for dynamic modules) see [this demo](https://github.com/aleksisch/dascript-demo).\n\n## Package manager (daspkg)\n\nA built-in package manager in [`utils/daspkg/`](utils/daspkg/) handles installing, updating, and building daslang packages — both pure-daslang and C++ native modules.\n\n```sh\n# Install a package from the index\n./bin/daslang utils/daspkg/main.das -- install das-claude\n\n# Install from a git URL\n./bin/daslang utils/daspkg/main.das -- install github.com/user/repo\n\n# Search the package index\n./bin/daslang utils/daspkg/main.das -- search json\n```\n\nSee [`utils/daspkg/README.md`](utils/daspkg/README.md) for the full command reference and package authoring guide.\n\n\n## VS Code extensions\n\n- [daScript](https://marketplace.visualstudio.com/items?itemName=eguskov.dascript) — syntax highlighting for `.das` files\n- [daScript language support](https://marketplace.visualstudio.com/items?itemName=profelis.dascript-plugin) — language server, linting, debugging, and snippets\n\n## MCP server (AI tool integration)\n\nAn [MCP](https://modelcontextprotocol.io/) server in [`utils/mcp/`](utils/mcp/) exposes 29 compiler-backed tools to AI coding assistants (Claude Code, etc.): compilation diagnostics, type inspection, go-to-definition, find-references, AST dump, AOT generation, expression evaluation, parse-aware grep, package management, and more.\n\nNo extra build dependencies (stdio transport). See [`utils/mcp/README.md`](utils/mcp/README.md) for setup and configuration.\n\n## Tree-sitter grammar\n\nA full tree-sitter grammar for daslang lives in [`tree-sitter-daslang/`](tree-sitter-daslang/). It parses 99.4% of the codebase (all valid files) and is built automatically by CMake as a shared library.\n\nUse it for:\n- **Syntax highlighting** — `queries/highlights.scm` included, works in editors that support tree-sitter (Neovim, Helix, Zed)\n- **Parse-aware search** — via [ast-grep](https://ast-grep.github.io/) (`sg`) for structural code search across `.das` files\n- **Editor extensions** — `tree-sitter-daslang/editors/zed/` includes a Zed extension\n\nBuild the grammar:\n```sh\ncmake --build build --target tree_sitter_daslang\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaijinentertainment%2Fdascript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgaijinentertainment%2Fdascript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaijinentertainment%2Fdascript/lists"}