Project

Status and roadmap

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

eTamil runs backend programs today: functions, collections, error handling, modules, a SQLite database layer, a concurrent HTTP server with routing, and an accounting framework written in the language itself.

This table is the honest state of the code, not a wish list.

What works

Area Status Notes
Lexer (Tamil / romanized / English keywords) Working 201 tokens across ~500 spellings; errors carry line and column
Variables, arithmetic, percentages, strings Working  
Comparisons, எனில் / இன்றேல், சுற்று loops Working  
Logical மற்றும் / அல்லது / இல்லை Working Both sides always evaluated — no short-circuiting
File I/O and CSV row counting Working In the VM (--vm)
VM bytecode executor Working  
Functions (செயல் / திரும்பு) Working Parameters, returns, local scope, recursion
Arrays ([…]) and records ({…}) Working Indexing, field access, assignment
Iteration (ஒவ்வொரு … இல்) Working Arrays, records, strings
Results (சரி / தவறு / ?) Working Rust semantics; failure is a value, not an exception
Modules (இறக்கு) Working Resolves beside the file, then ETAMIL_PATH
Decimal arithmetic Working Fixed point, not f64
Standard library (nUlakam/) Working Strings, math, arrays, money — written in eTamil
Accounting framework Working Double entry, GST, three statements — written in eTamil
SQLite Working Parameterised queries only; rows return as an array of records
PostgreSQL Working --features postgres; money as native NUMERIC
HTTP server (--server) Working Worker pool; வழி routes with :id path parameters, query params, headers, bodies
Async HTTP server (--async) Working tokio accept loop, handlers on the blocking pool; the VM stays synchronous
Response headers Working An ordinary record; defaults to JSON when omitted
JSON (nUlakam/jEcAZ.qmz) Working Written in eTamil; \uXXXX escapes are not decoded
Authentication Working bcrypt and JWT in the host; set ETAMIL_JWT_SECRET
String escapes Working \n \t \r \" \\; an unknown escape keeps both characters
Parse error positions Working Every error carries a line and column, bilingually
Type checking Working A declared type is enforced, with a position; deliberately narrow

What is partial or missing

Area Status Notes
MySQL / MariaDB Untested --features mysql; compiles and is complete, but never run against a live server
LLVM backend (--llvm) Subset Linux/macOS, --features llvm. No functions, iteration, collections or modules — it refuses what it cannot build rather than emitting IR that computes something else
ஜேசான்_உரை statement Not implemented Parses, but the VM refuses it — build the body with ஜேசான்_ஆக்கு and send it with பதில்
MongoDB, Redis Not implemented Neither fits the SQL-shaped Database trait; both need a design first
Transactions, multiple connections Not implemented The VM refuses a second connection rather than guessing
A money type with a currency Not implemented எண் is the only numeric type, so the checker cannot reject rupees plus a count

Anything marked not implemented fails with an explicit message rather than quietly doing nothing. That is deliberate: a silent no-op in a tax calculator is worse than an error.

Planned domain frameworks

Accounting, taxation and finance are in the language today. These extend the same vocabulary across the rest of the Indian financial stack, each built as an eTamil framework on the ledger that already exists.

Domain Status Scope
Accounting Working Chart of accounts, double-entry ledger, trial balance, the three statements, year-end close
Taxation Working GST with CGST/SGST/IGST splitting, transaction types, ageing
Banking Planned NEFT and UPI abstractions, RBI compliance, transaction limits, KYC/AML checks
Insurance Planned Policy, premium and claim structures on the same exact-decimal arithmetic
Customs & trade Planned E-way bills, Customs Act code validation, duty calculation, declarations
Blockchain Planned Hyperledger-backed audit trails for tamper-evident postings
ITR and TDS Planned Direct-tax templates, deductions and exemptions
GSTN / NPCI bindings Planned REST bindings to the government and payment portals

Two numbering schemes, kept apart

Two unrelated things in this project were both called “Phase 1–N”. They mean entirely different things:

Term Meaning
Paper Phase 1–5 The research roadmap: compiler core → domain modules → tooling/REPL → pilot projects → policy engagement
Backend milestone 1–4 The repository’s HTTP work: sync server → async → logging → auth

Backend milestones 1–4 being complete says nothing about paper Phase 2, which has not started. Against the paper’s scheme, the project is mid-Phase 1: the compiler core exists, the domain modules do not.

Concretely, that means the GSTN and NPCI API bindings, ITR and TDS templates, RBI/KYC syntax and the Hyperledger audit trail described in the research are design, not code.

Contributing

The most useful contributions right now are the remaining roadmap items: transactions and multi-connection support, the MySQL verification run, and a money type carrying a currency.

Please add a test to etamil_compiler/tests/language_tests.rs for any language behaviour you change, and make sure cargo test passes on both Linux and Windows.

The full roadmap, with reasoning →