Skip to content

mealet/deen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Deen Programming Language

A simple language for efficient software

๐Ÿ‘€ Description

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

  1. Install clang
  2. Download the latest release from GitHub: Latest Release
  3. Unpack it anywhere and add to your PATH variable. Instructions for: Windows, Linux, and macOS
  4. Restart your system or environment.

๐Ÿ› ๏ธ Building

  1. Install the Rust Programming Language from the official site.
  2. Install LLVM following the official tutorial.
  3. Clone this repository: git clone https://github.com/mealet/deen
  4. Go to its directory and run: cargo build --release
  5. The executable file will be in the target/release folder.

๐Ÿ‘ฎ 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.

About

๐ŸŒฟ A simple language for efficient software

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Languages