Language Guides
The IDL guide covers writing a schema; Code generation covers turning it into source. This section is the third piece: actually using the generated code at run time — spawning a client, serving a protocol, picking framing and wire format, and (for Rust) fitting the runtime into a sync or async program.
Each language gets its own tree. Pick one from the tabs on the left.
Status
| Language | Generator | Modes | Runtime |
|---|---|---|---|
| Rust | shipped | code, lib |
comline-runtime, sync, no_std-first |
| TypeScript | shipped | code |
@comline/runtime, async/Promise-based |
| Python, Lua, Luau, C | none yet | — | — |
Python, Lua, Luau and C appear in example config.idp manifests and design
sketches, but no comline-codegen-* crate exists for them today — there is
nothing to generate and no runtime to link against.
Capability matrix
What each shipped runtime actually supports, independent of what the call system could in principle support:
| Transports | Wire formats | Framings | |
|---|---|---|---|
| Rust | in-memory, TCP | packed, JSON, MessagePack | datagram@2, datagram, JSON-RPC |
| TypeScript | in-memory only | packed, JSON | datagram@2, datagram, JSON-RPC |
Not every combination of wire format and framing ships — JSON-RPC's own spec
is JSON text, so a jsonrpc + msgpack/packed pairing doesn't exist on
either side. MessagePack is Rust only, until TypeScript gets a codec for it.
packed@1 and datagram@2 are the built-in defaults; see
Wire defaults.
Who maintains this
There is no named maintainer per language today — the project is set up so
that doesn't become a single point of failure as more languages (and more
people) show up. Each language's generator and runtime live together in
that language's own repo under the ComlineProject GitHub org, which holds
the published-package namespace (the npm scope, the future crates.io name,
and so on for later languages). A contributor gets publish rights, not
ownership of the name — releases run through CI trusted publishing (OIDC),
not a personal token, so one maintainer stepping away never orphans a
published package.
The full reasoning is in Runtime & generation repo structure if you want the detail; this page just needed to say it exists.
Before the per-language pages
Framing and wire format are two independent axes — which is laid out language-agnostically in Call systems & serialization. Read that first if the distinction isn't already clear; the per-language pages below are the concrete API, not the concept.