Getting started

Install eTamil

Build the compiler from source on Linux, macOS or Windows, put it on your PATH, and run your first Tamil program.

Prerequisites

Rust 1.85+ (edition 2024) and a C toolchain — the bundled SQLite and the crypto crates compile C.

Build from source

git clone https://github.com/Maruff/etamil_compiler.git
cd etamil_compiler/etamil_compiler
cargo build --release

The binary is target/release/etamil (etamil.exe on Windows). Put it on your PATH:

Linux / macOS

sudo cp target/release/etamil /usr/local/bin/etamil

Windows (PowerShell)

Copy-Item "target\release\etamil.exe" "$env:USERPROFILE\bin\etamil.exe"

Verify:

etamil --version

Your first program

echo 'அச்சு "வணக்கம் உலகம்!";' > hello.etamil
etamil --vm hello.etamil

On Windows, write the file as UTF-8:

'அச்சு "வணக்கம் உலகம்!";' | Out-File hello.etamil -Encoding UTF8
etamil --vm hello.etamil

Then something that earns its keep — an income tax calculator that reads from stdin:

echo "950000" | etamil --vm examples/basic_samples/example.qmz

Optional features

SQLite is built in. The rest are behind Cargo features, so a default build does not carry their dependencies.

cargo build --release --features postgres,mysql

The LLVM backend is only needed for --llvm, and only available on Linux and macOS:

cargo build --release --features llvm

The LLVM backend compiles far less than the VM — no functions, iteration, collections or modules. It refuses what it cannot build rather than emitting IR that computes something else. Use --vm for real work.

Running the tests

cd etamil_compiler
cargo test          # 176 language tests + 51 unit tests

tests/language_tests.rs covers the front end end-to-end by asserting on program results, not exit codes — every bug those cover exited 0 while producing the wrong answer. CI runs the build and full suite on Linux and Windows for every push and pull request.

Every example also runs with its expected outcome checked, including the ones that are supposed to fail:

./scripts/run_examples.sh
python3 scripts/transliterate.py --check   # romanization audit

Editor support

A VS Code extension with syntax highlighting, snippets and language configuration lives in eTamil_Code/ in the compiler repository.

Where next