A dynamic typed scripting language for embedded use in applications. This project is yet another attempt of being a "better" lua.
Warning: Project is still in experimental stage and API is considered as unstable.
- Never panic*
- High Performance**: Runs at most 2x speed of lua 5.4, 6x speed of python 3.10
- Support for a tracing jit (Planned)
- rustc style helpful error message
- No global variable
- No
nil/None
value - Has real integer type
- Has 0-indexed real list type
- Support tuple for multiple return
- Support for string indexed table
- Support for meta table and OOP style method call syntax
- Support for gradual typing (Planned)
- Support for macro system (Planned)
*: Panic may still be triggered by external functions
**: Results are from our benchmarks which may vary betweens different builds and test codes.
You can try diatom at the online playground.
Make sure you have Rust and Cargo installed.
cargo install diatom-cli
diatom-cli --help # show help for diatom CLI
diatom-cli # Enter diatom REPL console
Run the following script:
git clone https://github.com/diatom-lang/diatom.git
cd diatom
cargo run --release # Run interactive console
- Vim/Neovim plugin: diatom.vim
The Diatom Reference (with examples) is available at here.
For standard library function and built-in types and methods checks examples. These examples are checked by unit tests.
Diatom is available at crates.io with detailed examples.
To use latest build, add this repo to your Cargo.toml
. Latest build documentation is available here.
Work in progress.