Skip to main content

Language Support Overview

TeaQL generates typed domain, query, expression, relation, aggregation and mutation APIs for seven language runtimes. They share one model and one semantic contract, while retaining idiomatic casing, async models and package layouts.

LanguageGuideVerified SQL databasesTypical fit
JavaJava StackPostgreSQL, MySQL, SQLite, Oracle, DB2, DM8, SAP HANA, SQL Server, DuckDBEnterprise services and the broadest database matrix
RustRust StackPostgreSQL, MySQL, SQLiteEfficient native services and explicit runtime composition
GoGo GuidePostgreSQL, MySQL, SQLiteSmall services and straightforward deployment
PythonPython GuidePostgreSQL, MySQL, SQLiteAsync services, automation and data-oriented applications
C# / .NET.NET GuidePostgreSQL, MySQL, SQLite, SQL Server.NET services and native SQL Server integration
TypeScriptTypeScript GuidePostgreSQL, MySQL, SQLiteNode services plus a browser-safe federal client profile
SwiftSwift GuideSQLiteApple-platform applications and Swift services

“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.

A complete path for each language

Every runtime has a language-native entry point. Go, Python, .NET, TypeScript, and Swift also use the common Begin/Prove/Extend path below; Java and Rust retain their deeper stack guides.

LanguageBeginProveExtend
GoQuick StartFirst VerificationCustomization
PythonQuick StartFirst VerificationCustomization
C# / .NETQuick StartFirst VerificationCustomization
TypeScriptQuick StartFirst VerificationCustomization
SwiftQuick StartFirst VerificationCustomization

The conceptual contract is shared, but each path uses that ecosystem's project layout, toolchain, async/concurrency model, provider lifecycle, packaging expectations, and verification style. A user should not have to read five other language guides to ship the one runtime they chose.

Current generator baselines are Java 1.536-RELEASE, Rust 4.2.25, Go v0.1.4, Python 0.1.2, .NET 0.1.2, TypeScript 0.1.9, and Swift 0.1.3. Always prefer the dependency coordinates emitted by the generator for a newly generated workspace.

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 use with/whichAre;
  • the public parameter name is context in every language; do not replace it with a runtime, service, data-service, or shortened alias;
  • list queries return typed entities in the runtime's SmartList, never raw database rows or the host language's bare list/array type;
  • 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.
  • save(context) returns the persisted typed entity and preserves loaded/null/not-loaded state;
  • a Runtime Module is a passive, composable manifest; installing it never changes a database;
  • schema reconciliation is an explicit startup or administrative call using that module;
  • RuntimeTelemetry is optional and no-op by default; sampling and audit delivery remain independent.

The generator supplies ten Assist categories for every language: create, query, update, delete, list/page, expression, debug, tool API, runtime customization, and ensure schema. Use the TeaQL Agent Kit as the evolving Harness Engineering workflow when an AI coding agent consumes these generated contracts.

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 earlier 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.