இ தமிழ் · version 0.2.0 · AGPL-3.0

Build industrial software in Tamil.

eTamil is a programming language whose vocabulary is Tamil, aimed at Indian accounting, taxation and fintech. Not a teaching language — a backend language built to carry real industrial applications, with an accounting and taxation framework no general-purpose language ships with.

Rust 1.85+ · Linux, macOS and Windows · run a file with etamil --vm hello.etamil

vari.etamil — income tax
// வருமான வரி — income tax
எண் வருவாய்;
அச்சு "Enter income: ";
உள்ளிடு வருவாய்;
வரி = 20%;

(வருவாய் > 800000) எனில் {
    அச்சு "High Tax Bracket";
    அச்சு (வருவாய் - 800000) * வரி;
}
இன்றேல் {
    அச்சு "Low Tax Bracket (No Tax)";
}
  • 201keyword tokens
  • 3spellings per keyword
  • 227tests, Linux + Windows
  • 0.1+0.2is exactly 0.3
  • Rustwith an optional LLVM backend

The core idea

Three spellings. One language.

Every keyword accepts Tamil script, a romanized spelling you can type on a plain keyboard, and — where one exists — an English alias. All three produce the same token, so a team can write in whichever form suits it.

Tamil script
எண் வருவாய் = 100000;
அச்சு வருவாய் * 18%;
romanized (ezuqqu)
eN varuvAy = 100000;
accu varuvAy * 18%;

The romanization is its own scheme, ezuqqu, not ISO 15919 — designed so that every Tamil letter maps to exactly one ASCII character you can type without a Tamil keyboard. It keeps the three Tamil nasals apart, which English collapses into one n: is N, is n, and is Z.

How the romanization works →

Why it exists

Money is exact, because tax code is not forgiving.

Every number in eTamil is a fixed-point decimal, from the lexer through to the VM. There is no f64 anywhere in the value type, so the arithmetic a GST or income-tax program actually performs comes out right.

exact decimals
அச்சு 0.1 + 0.2;      // 0.3        — not 0.30000000000000004
அச்சு 99.99 * 3;      // 299.97     — not 299.96999999999997
அச்சு 18%;            // 0.18       exactly

Equality is exact too. The earlier f64 value type compared numbers equal within 1e-10, which made two amounts a fraction of a paisa apart indistinguishable — a real hazard in reconciliation. Division keeps full precision rather than rounding at each step, because Indian tax computation rounds once at the end and rounding intermediates compounds the error.

Not a teaching language

Built for industry, not for the classroom.

Tamil programming languages have existed for years, and nearly all of them were built to teach. eTamil is built to ship. It compiles to bytecode and runs on its own VM, it is written in Rust, and it is designed to hold its own against the backend languages it would otherwise sit beside — Python, Java and Node.js.

What makes it industrial

  • A real toolchain. Bytecode VM, an optional LLVM backend, 227 tests running on Linux and Windows in CI.
  • A real backend. Concurrent HTTP server, SQL drivers, JSON, bcrypt and JWT — not a REPL with a print statement.
  • Exact money. Fixed-point decimals throughout, so reconciliation and tax arithmetic are correct by construction.
  • Errors that refuse. Anything unimplemented fails with an explicit message rather than quietly returning something plausible.

What makes it unique

No general-purpose language ships with a chart of accounts. eTamil comes with a ready framework for accounting and taxation — double-entry posting that refuses to go out of balance, GST with CGST/SGST/IGST splitting, the trial balance and the three statements.

That framework is the foundation. Banking, insurance, customs and blockchain modules are planned on top of it, extending the same vocabulary across the rest of the Indian financial stack.

See what is built and what is planned →

What runs today

Explore the language.

Functions, collections, error handling, modules, SQL databases, a concurrent HTTP server, and an accounting framework written in the language itself.

  • Finance & accounting

    Double-entry ledger, GST with CGST/SGST/IGST splitting, trial balance and the three statements — plus Indian digit grouping for rupees.

  • The language

    Functions, arrays and records, iteration, results as values, modules, and a type checker that holds you to what you declared.

  • Servers & databases

    An HTTP server with routing and path parameters, SQLite and PostgreSQL drivers with parameterised queries only, bcrypt and JWT.

  • Keyword reference

    201 tokens across roughly 500 spellings — financial vocabulary, control flow, SQL clauses and the standard library, all three forms listed.

  • Status & roadmap

    An honest table of what works, what is partial, and what deliberately fails with an explicit message rather than quietly doing nothing.

  • The research

    The peer-reviewed paper behind the language, the literature survey, and the domain notes on GST, Ind AS and IFRS that shaped its vocabulary.

The proof

The standard library is written in eTamil.

Not in Rust. That is the point: if the standard library needed a systems language, the DSL would not be sufficient for the frameworks built on top of it. The host provides only what a language cannot express — decimal arithmetic, text measurement, file and socket access — and everything above that is readable and editable by the people who use it.

Rupees, grouped the Indian way

nUlakam/paNam.qmz
இறக்கு "nUlakam/paNam.qmz";

அச்சு ரூபாய்(12345678.5);
// ₹1,23,45,678.50 — lakh and crore, not thousands

A ledger that refuses to go out of balance

nUlakam/kaNakkiyal/pErEtu.qmz
இறக்கு "nUlakam/kaNakkiyal/pErEtu.qmz";

த = பரிவர்த்தனை_ஆக்கு("JV1", "2026-04-01", "மூலதனம்", [
    பற்று_வரிசை("1000", 500000),
    வரவு_வரிசை("3000", 500000)
]);
பேரேடு = மதிப்பு(பதிவிடு(பேரேடு, த));

See the accounting framework →

Coming next

The rest of the Indian financial stack.

Accounting, taxation and finance are in the language today. The same vocabulary-first approach extends to the domains beside them — each one a framework written in eTamil, on the ledger that already exists.

  • Banking

    NEFT, UPI and RBI compliance — payment abstractions, transaction limits and KYC/AML checks as language-level constructs rather than hand-written rules.

  • Insurance

    Policy, premium and claim structures, with the same exact-decimal arithmetic the accounting framework already depends on.

  • Customs & trade

    E-way bills and Customs Act obligations — code validation, duty calculation and declaration generation.

  • Blockchain

    Hyperledger-backed audit trails, so a posting can be made tamper-evident without leaving the language.

These are planned, not built. The status page keeps a feature-by-feature line between the two, and anything unimplemented fails with an explicit message rather than quietly doing nothing.

Research

Backed by published work.

eTamil is the subject of doctoral research at B.S. Abdur Rahman Crescent Institute of Science and Technology, Chennai. The paper — Developing an Indian DSL (Programming Language) for Accounts, Commerce, Finance, and Fintech Professionals, by Mohammed Maruff and Dr. S. P. Valli — reviews 28 academic and industrial sources from 2003–2025 and sets out why India needs a financial DSL of its own.

Read the research