Blade is a fully-featured cross-platform* high-performance scripting meta-language for Godot Engine
Blade is a language framework designed as a full replacement for GDScript, bringing a C family language with all the necessary features as an alternative. Blade is a meta-language that gets transpiled to pure C code and compiled to native machine code for optimal performance.
- Lightweight and Cross-Platform (~1.5MB)
- C Language Family Syntax
- Allows Direct Usage of C Language
- Supports All Core features of GDScript
- Extension System for Objects & Variants
- Flexible Kernel-Based Execution (Customizable)
- Supports Hot-Reloading and Tool System
- Supports Properties, Signals, Callbacks, Global Classes etc.
- Supports Keyword Definition and C-Like Macros
- Invoke Operating System C-Compatible API Directly
- Dedicated Syntax Highlighting and Script Editor
- Virtual File System for Imports and C Headers
- Minimal Reflection System and TAST (Tiny AST Parser)
- Direct Integration with Jenova Runtime (Real-Time C++)
- Dynamic Adaption of Godot API and Classes
- No VM, Uses Native JIT Execution
Blade Language doesn't support intellisence, autocomplete and interactive debugging yet.
Blade is a self-dependent extension. Blade defines a compiler interface that can be replaced and customized with any C compiler supporting in-memory compilation. However, the default implementation relies on a custom version of TinyCC, known as TCCBE (TinyCC Blade Edition), as the current C compiler backend.
Important
- Blade is supported on Windows (x64/x86/ARM64), Linux (x64/x86), Android (
arm32/arm64) andWeb (WASM) - Blade is not supported on MacOS and iOS due to JIT execution restrictions.
- Blade itself is inherently supported on all platforms. However, due to limitations of the current C backend, TinyCC, it will not function on WebAssembly and arm-v7. To add support for these platforms, it’s required to replace the current backend with a compiler that supports them, which must be driven from
BladeCompiler
Blade is a very flexible language and its core, syntax, and behavior can be easily customized.
blade_exec– dispatches a method call on aObjecttypes.blade_vcall– dispatches a method call on a rawVarianttypes.blade_ucall– calls a Godot utility function (Static, Non‑member)blade_eval– evaluates a binary operator between twoVarianttypes.blade_birth– instantiates a new Godot object from aObjectdescription.blade_death– destroys a previously createdObject.blade_cond– converts anVariantresult into aVariant::BOOLfor control‑flow.
The kernel‑based execution system can be extended to route function calls to a remote server, enabling distributed or cloud‑based execution of Blade scripts. This opens the door to hybrid local‑remote runtimes, where heavy computations or resource‑intensive operations are delegated elsewhere while the local engine remains lightweight.
Additionally, this routing mechanism can be leveraged for multiplayer games: remote servers can host authoritative logic, synchronize state, and provide deterministic execution across clients, while the client engine focuses on rendering and local input handling.
In Blade, it’s possible to add extension functions to any Object or Variant at any stage and any time.
In any script file, the Blade transpiler can be dynamically switched using blade_off and blade_on to use C code directly within a block.
In Blade, crafting properties is remarkably easy and intuitive. It draws inspiration from both GDScript and C++ offering an efficient approach to defining and managing your data. Properties must be used in code with $ prefix.
Work in progress...
Blade is licensed under the permissive MIT and it's a part of Jenova Framework.


