Language Support Overview
TeaQL generates typed domain, query, expression, relation, aggregation and mutation APIs for six language runtimes. They share one model and one semantic contract, while retaining idiomatic casing, async models and package layouts.
| Language | Guide | Verified SQL databases | Typical fit |
|---|---|---|---|
| Java | Java Stack | PostgreSQL, MySQL, SQLite, Oracle, DB2, DM8, SAP HANA, SQL Server, DuckDB | Enterprise services and the broadest database matrix |
| Rust | Rust Stack | PostgreSQL, MySQL, SQLite | Efficient native services and explicit runtime composition |
| Go | Go Guide | PostgreSQL, MySQL, SQLite | Small services and straightforward deployment |
| Python | Python Guide | PostgreSQL, MySQL, SQLite | Async services, automation and data-oriented applications |
| C# / .NET | .NET Guide | PostgreSQL, MySQL, SQLite, SQL Server | .NET services and native SQL Server integration |
| TypeScript | TypeScript Guide | PostgreSQL, MySQL, SQLite | Node services plus a browser-safe federal client profile |
“Verified” means generated code was compiled and executed against a real database in the dated acceptance campaign. It is not a promise about every database version or a commercial support SLA. See the runtime/database matrix for evidence boundaries.
Shared contract
Every runtime follows these rules:
- plural and predicate names are decided centrally; target templates do not guess English;
- human entities use
whose/whoAre, while non-human entities usewith/whichAre; - query execution receives UserContext as its only runtime dependency argument;
- comment can appear earlier in a builder chain; purpose transitions the Request into an executable state;
- mutations require an audit reason;
- tenant, actor, permissions and policy come from trusted context, not dynamic client JSON;
- SQL runtimes provide native COUNT, SUM and GROUP BY and exact partition/window per-parent Top-N;
- the runtime emits a row/mutation audit event and a separately attributable masked application event.
Java remains the naming and Request-semantics gold standard. Other targets preserve the same meaning with language-appropriate casing rather than translating method names by intuition.
Choosing a runtime
Choose by application ecosystem and deployment needs, then verify the exact runtime/provider/driver combination you plan to ship. Do not select a database merely because a driver or template exists. Regenerate from the same model when comparing languages so public API differences remain reviewable.
The six-language Order Search campaign executed 18 core language/database cells, 252 positive dynamic scenarios, governance gates, audited saves and real TypeScript-to-Rust federation. Read the acceptance article for the result and the provider compatibility reference for support terminology.