The language built for data & ai
Python made data accessible. TL makes it fast, safe, and intelligent — in one compiled language. 1,322 tests passing across 34 implementation phases — AI agents with tool-use, full MCP ecosystem (client + server), generics, pattern matching, Python FFI, LLVM & WASM backends, package manager, full LSP, and a comprehensive security audit already shipping.
- 01
DATA IS A TYPE
Tables, Streams, Tensors are native types in the language.
- 02
PIPELINES ARE PROGRAMS
ETL/ELT flows are composable first-class constructs.
- 03
AI IS A VERB
train,predict,embed,agentare keywords — not libraries. - 04
PARALLEL BY DEFAULT
No GIL, automatic partitioning across cores.
- 05
FAIL LOUD, RECOVER SMART
Built-in error handling for unreliable data sources.
- 06
READABLE BEATS CLEVER
Python-like readability, Rust-like safety guarantees.
- 07
FAST WITHOUT TRYING
Compiled to native code with lazy evaluation. Performance is the default, not an afterthought.
Stop duct-taping together a dozen tools. TL unifies the modern data stack into one language.
| today's stack | TL equivalent |
|---|---|
| Python + Pandas | Native table type |
| SQL in strings | Native query syntax |
| Spark / PySpark | Built-in distributed execution |
| Airflow / Dagster | Native pipeline construct |
| PyTorch / TF / sklearn | Native model / train / predict |
| Kafka consumers | Native stream type |
| dbt | Native transformations with typing |
| Docker + K8s | tl deploy CLI command |
| LangChain / CrewAI / AutoGen | Native agent construct with tool-use |
| Custom MCP integrations | Built-in mcp_connect() + mcp_serve() |
No frameworks. No glue code. Define autonomous AI agents with tool-use, multi-provider LLM support, and lifecycle hooks — all with a single keyword.
- 01
First-Class Keyword
agentis a language keyword, not a library import. Tools are TL functions wired directly to the LLM. - 02
Any LLM Provider
OpenAI, Anthropic, Ollama, or any OpenAI-compatible endpoint. Auto-detects protocol from model name. One
base_urlfield to switch. - 03
Automatic Tool Loop
The runtime handles multi-turn tool calling, JSON arg conversion, and result formatting. You just write the function.
- 04
Lifecycle Hooks
on_tool_callandon_completeblocks for logging, metrics, or custom logic at each step. - 05
Pipeline Integration
Agents use the same
table,stream, and connectors as your data pipelines — no serialization layer needed. - 06
Conversation Persistence
run_agent(agent, message, history)maintains context across multi-turn sessions. No external memory store needed. - 07
SSE Streaming
stream_agent()delivers real-time token-by-token output via Server-Sent Events. - 08
Retry & JSON Mode
Automatic exponential backoff on 429/5xx errors.
output_format: "json"for guaranteed structured output.
Model Context Protocol — the open standard that lets AI tools and data systems talk to each other. TL implements both sides: connect to any MCP server as a client, or expose TL functions to any AI tool as a server.
- 01
MCP Client
mcp_connect()auto-detects stdio or HTTP transport. 10 builtins for tools, resources, prompts, and ping. - 02
MCP Server
mcp_serve()turns TL functions into MCP tools. Claude Desktop, Cursor, Windsurf can discover and call them. - 03
Agent Integration
mcp_servers: [...]in agent definitions. LLM sees one unified tool list — MCP and native tools dispatched transparently. - 04
Sampling
MCP servers can request LLM completions back through TL. Bidirectional AI communication over the protocol.
--features mcp-
01
table<T>Columnar, lazy-evaluated, and partitionable. The core data type for batch processing.
let users: table<User> = postgres("db").table("users") -
02
stream<T>Infinite, windowed, real-time. For continuous data processing and event streams.
stream process_events { from: kafka("events") window: tumbling(5m) } -
03
tensor<dtype, shape>N-dimensional arrays for AI and machine learning. Shape-checked at compile time.
let embeddings: tensor<float32, [256, 768]> -
04
modelA trained AI model as a first-class value. Serialize, version, deploy natively.
model churn = train xgboost { ... } -
05
agentAutonomous AI agent with tool-use, MCP server integration, and lifecycle hooks.
agent bot { model: "gpt-4o", mcp_servers: [...], tools { ... } }
Rust-inspired ownership without lifetime annotations. The compiler guarantees memory safety and data-race freedom at compile time.
-
01
Every value has one owner
let users = load("users.parquet") // `users` is the sole owner -
02
Pipe
|>moves ownershiplet active = users |> filter(age > 25) // `users` is now consumed -
03
Clone or borrow for reuse
let copy = users.clone() let ref = &users // read-only -
04
Parallel partitions own data
parallel for shard in users.partition(by: "region") // No locks needed — compiler guarantees it
Built entirely in Rust. TL-IR doubles as a query plan — enabling data-aware optimizations like predicate pushdown, column pruning, and join reordering.
TL's compiler sees the entire pipeline as one program — eliminating serialization boundaries between tools.
Targets based on architecture analysis. Benchmarks will be published with reproducible scripts.
Rust-inspired result<T, E> with data-specific error types and declarative cleaning — not try/catch bolted on as an afterthought.
First-class connectors for databases, object storage, message queues, and APIs. All type-safe and schema-aware.
read_iceberg(metadata_location, [props_map]) — reads an Apache Iceberg table natively: metadata → manifests → Parquet → a DataFusion table, in one call.
20 connectors shipped — more coming with every release.
Bidirectional Python FFI via pyo3. Import Python modules, call functions, convert tensors to NumPy — all from TL code.
- 01
Bidirectional Conversion
int,float,string,bool,list,map,set— all auto-converted between TL and Python. - 02
Tensor ↔ NumPy
TL tensors convert seamlessly to/from NumPy ndarrays for ML workflows.
- 03
Dot Notation Access
Use natural
math.sqrt(16)syntax on Python objects via method dispatch. - 04
Feature-Gated
Python FFI is opt-in via feature flag. Zero overhead when not used.
- 01
VS Code Extension & LSP
Syntax highlighting, diagnostics, go-to-definition, hover docs, document symbols, rename refactoring, and find-references across files.
- 02
Package Manager
tl add,tl update,tl outdated— full dependency management with lockfile and transitive resolution. - 03
Formatter, Linter & Type Checker
tl fmt,tl lint,tl check— AST-guided formatting, naming conventions, and compile-time type safety. - 04
Doc Generation
tl docgenerates HTML, Markdown, or JSON docs from///doc comments with cross-references. - 05
Interactive Step Debugger
tl debug— breakpoints, variable inspection, source listing, and stack traces. Debug pipelines interactively. - 06
Data Inspection & Lineage
tl inspect,tl profile,tl lineage— preview data, statistical profiles, and lineage graphs.
Rich standard library methods, native DateTime, window functions, and data engineering primitives — all built in.
15+ List Methods
Map & String Methods
Math & Randomization
Native DateTime
First-class VmValue::DateTime type with full arithmetic.
Window Functions
DataFusion UDWF-backed analytics on tables.
Table Operations
Pipeline-native data manipulation.
11 MCP Builtins
Full Model Context Protocol client + server.
"""...""" Triple-quoted strings with automatic dedentation.
The only language where data pipelines, SQL-like queries, ML training, AI agents, MCP ecosystem, and real-time streaming are all first-class features — not libraries.
| tool | their strength | TL's advantage |
|---|---|---|
| Python | Largest ML/data ecosystem | 10-50× faster, type-safe, compiled |
| Mojo | Compiled ML, Python superset | Better data engineering: pipelines, streaming, connectors |
| Rust | Max performance, memory safety | Domain-specific abstractions as primitives |
| DuckDB | Embedded analytics, great SQL | Full language, not just SQL — plus ML and streaming |
| Polars | Fastest DataFrame library | First-class syntax, integrated ML/streaming |
| Scala + Spark | Battle-tested distributed computing | Simpler syntax, faster single-node, no JVM |
| SQL / dbt | Declarative, universally understood | Full programming language + AI + streaming |
| LangChain / CrewAI | Rich agent ecosystem, Python flexibility | Native syntax, no Python dep, compiled speed, type-safe tools |
| Custom MCP SDKs | Protocol-level flexibility | Client + server built-in, agent-integrated, zero config |
Open source.
ThinkingLanguage is licensed under Apache 2.0.
— pull requests welcome ✎