Deen - a statically-typed compiling programming language inspired by languages like C, C++, Zig, and Rust.
It provides tools for system programming, including: structures, C-like enums with supported functions, type definitions, backward compatibility with C, pointers, recursion, and more.
See official documentation here: Deen Documentation
- ⚡ Simplicity. The language syntax is easy to read and write.
- 🚀 Fast. The compiler uses LLVM as a backend for the best performance.
- ✨ Clean. Nothing superfluous - just basic tools for everything.
- 🌐 Modern. Syntax and mechanics are inspired by Rust and Zig.
- 📑 Strict. Analyzers and checkers will prevent most compile-time errors.
- 🌎 Open Source. You can always participate in the project's development.
- Language: Rust
- Build Systems: Cargo, Make
- Backend: inkwell (LLVM 1.18.6^)
- Errors: thiserror
- Error Reporting: miette, colored
- Command Line Interface: clap
The project is divided into submodules using a virtual workspace environment:
deen
- main executable module. Combines all submodules into the main process.deen-lexer
- lexical analyzer. Converts source code into abstract data types (Tokens).deen-parser
- syntax analyzer. Analyzes and converts tokens into an Abstract Syntax Tree.deen-semantic
- semantic analyzer. Recursively checks the AST for type and principle matching.deen-codegen
- code generator. Recursively compiles the AST to an LLVM IR module.deen-linker
- module linker. Compiles the LLVM IR module to an object file and links it.
- Install clang, gcc or any other supported C compiler (object file compilation required).
- Download the latest release from GitHub: Latest Release
- Unpack it anywhere and add to your
PATH
variable. Instructions for: Windows, Linux, and macOS - Restart your system or environment.
- Install the Rust Programming Language from the official site.
- Install LLVM following the official tutorial.
- Clone this repository:
git clone https://github.com/mealet/deen
- Go to its directory and run:
cargo build --release
- The executable file will be in the
target/release
folder.
Currently Deen Language has no hosted playground.
You can setup your own playground with isolated docker runners and web code editor.
Check this repository: Deen Playground
The project is licensed under the BSD-3 Clause License.
For more information see License File
You can check the contribution guide by: CONTRIBUTING.md.