You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
⚠️ The project is currently under active development and may be unstable.
🎯 Features
⚡ 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.
⚙️ Technical Details
🔧 Main
Language: Rust
Build Systems: Cargo, Make
Backend: inkwell (LLVM 1.18.6^)
Errors: thiserror
Error Reporting: miette, colored
Command Line Interface: clap
🌀 Structure
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.
💫 Installation
Install clang, gcc or any other supported C compiler (object file compilation required).
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.
🌀 Web Playground
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
👮 Repository
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.