# Languages

Itinera has one specification and an implementation in each language. Every implementation claims a tier of the specification and a list of capabilities, and it may claim a tier only when every conformance case of that tier, and of the tiers before it, passes. What each one claims comes from its conformance manifest, never from this page alone.

| Language | Version | Tier | Capabilities | Book |
|---|---|---|---|---|
| [Rust](https://itinera-dev.org/languages/#rust) | 0.1.0-rc.1, in preparation, not published yet | Tier 1 | Synchronous and asynchronous executors | [The Rust book](https://itinera-dev.org/book/rust/) |
| TypeScript | Planned | Not yet | Not yet | Not yet |
| The JVM (Kotlin, with support for Java) | Planned | Not yet | Not yet | Not yet |

A **tier** is a level of meaning: tier 1 is a single workflow, with its steps, policies, retries, rescue steps, services and events. A **capability** is how a workflow runs, such as a synchronous or an asynchronous executor. [The roadmap](https://itinera-dev.org/roadmap/) lists the tiers, and [the specification](https://itinera-dev.org/specification/) says what each means.

## Rust

Rust 0.1.0-rc.1 is in preparation, and not on its package registry yet. It will claim tier 1, with synchronous and asynchronous executors.

- **Install,** once it is published, with `cargo add itinera@0.1.0-rc.1`, adding `--features async` for the asynchronous executor.
- **The book:** [the Rust edition](https://itinera-dev.org/book/rust/), starting at [Get started](https://itinera-dev.org/book/rust/02-the-big-picture/).
- **API reference:** [docs.rs/itinera](https://docs.rs/itinera), once the package is published.
- **Source:** [itinera-dev/itinera-rs](https://github.com/itinera-dev/itinera-rs).
- **Architecture:** [how it works inside](https://github.com/itinera-dev/itinera-rs/blob/main/docs/architecture.md): how it is put together and how it runs a journey, drawn tier by tier.
- **What it claims:** its [conformance manifest](https://github.com/itinera-dev/itinera-rs/blob/main/conformance.json) lists every proposal it implements and the conformance cases it runs. Its first release will carry the conformance report that proves it.

## Planned languages

TypeScript comes next, then the JVM, with Kotlin first and support for Java. Each follows the same specification and runs the same conformance cases, so a workflow means the same in every language. A new language starts with a proposal, like any other change; [Contribute](https://itinera-dev.org/contribute/) says how.

---

This is the Markdown copy of https://itinera-dev.org/languages/, made from the same source.
