Skip to content

Implementations ​

TOON has official and community implementations across multiple programming languages. All implementations are intended to conform to the same Specification to ensure compatibility and interoperability.

The code examples throughout this documentation site use the TypeScript implementation by default, but the format and concepts apply equally to all languages.

Official Implementations ​

LanguageRepositorySpecStatus
.NETtoon-dotnet3.0In Development
Darttoon-dart1.4In Development
Gotoon-go–In Development
Javatoon-java4.1✅ Stable
JuliaToonFormat.jl3.0✅ Stable
Pythontoon-python–Beta
Rusttoon-rust3.0✅ Stable
Swifttoon-swift4.1✅ Stable
TypeScript/JavaScripttoon4.1✅ Stable

Community Implementations ​

Community members have created implementations in additional languages:

LanguageRepositorySpecMaintainer
ApexApexToon–@Eacaw
CTOONc–@UsboKirishima
C (bindings for C++, Go, Julia, MATLAB, Python, Rust, Zig)ctoon4.1@MohammadRaziei
C#ToonEncoder–@Cysharp
C#Corvus.JsonSchema–@mwadams
Clojuretoon3.0@vadelabs
Crystaltoon-crystal4.1@mamantoha
Delphidelphi-toon–@ernestoalconada
Elixirtoon_ex1.3@kentaro
Gleamtoon_codec1.2@axelbellec
Gogotoon–@alpkeskin
Javajson-io3.3@jdereg
Kotlinktoon4.1@lukelast
Laravel Frameworklaravel-toon3.0@mischasigtermans
Lua/Neovimtoon.nvim1.3@thalesgelinger
OCamlocaml-toon–@davesnx
PerlData::TOON1.0@ytnobody
PHPtoon-php3.3@HelgeSverre
PHP / TYPO3t3-toon3.3@therohanparmar
Python (Rust backend)toons4.1@alesanfra
Rtoon–@laresbernardo
Rubytoon-fu4.1@hoblin
Scalatoon4s3.0@vim89
Zigtoon-zig3.0@montanaflynn

Contributing an Implementation ​

Building a TOON implementation for a new language? Here are the steps:

  1. Follow the spec: Implement the latest specification.
  2. Add tests: Run the reference test suite from a spec release tag in CI – its language-agnostic fixtures validate compatibility across implementations.
  3. Declare the spec version: State the version you target in your README, e.g. toon-spec: 4.2 (§13).
  4. Document usage: Provide a clear README with installation and usage examples.
  5. Share it: Open a PR that adds one row for your project to this page.