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.