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
- 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.
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.