w/03 · programming language · tishlang.com

Tish

the native language for awesomeness.

what

a typescript-shaped language that compiles native

codebase

132k lines of rust · 33 crates

targets

interpreter · vm · native · wasm · js · gba

stack

rust · cranelift · llvm

steer the road, click to compile

overview

Tish keeps the syntax millions of developers already write — functions, objects, template strings, optional types — and removes what makes JavaScript slow and surprising: no undefined, strict equality only, and feature-gated I/O so a binary carries only the capabilities it needs.

The same file runs in an interpreter for fast iteration, a bytecode VM, or compiles ahead of time to a standalone native binary, WebAssembly, JavaScript — or a Game Boy Advance ROM.

6

execution targets

347

releases since february

140×

best-case typed native speedup

edit, compile and run tish in the browser — tish.sh

the challenge

Developers love the shape of JavaScript and hate shipping a runtime. A language that wants to be both familiar and fast has to lower dynamic code into real machine types — without breaking the programs that rely on dynamism.

And it had to be good enough to build real products on. So we did: Dune and Chuggie are written in Tish.

01 · syntax

familiar on purpose.

If you read TypeScript, you read Tish. Optional annotations aren't decoration: on the native backend, number becomes f64, number[] becomes Vec<f64> and interfaces become Rust structs.

  • →fn shorthand & template strings
  • →no undefined — only null
  • →gradual type checking in the compiler and LSP
Tish language overview docs

02 · native

no runtime to ship.

tish build lowers through Rust codegen, Cranelift or LLVM to a standalone binary. Typed code is lowered to unboxed values with a sound boxed fallback; packed number arrays keep the dynamic paths fast.

Tish native backend docs

03 · capabilities

batteries, gated.

HTTP, filesystem, process, websockets, timers and Postgres are feature-gated capabilities — pass --feature to restrict a run or a binary to exactly what it needs. Rust crates import directly with cargo: imports and generated bindings.

Tish benchmarks on tishlang.com

04 · everywhere

wasm, js, the browser — and a gba.

WASM for web and WASI, JavaScript output for existing stacks, a Vite plugin, and a playground at tish.sh that compiles and runs in the browser. The same compiler targets the Game Boy Advance through a no_std portable core.

architecture

one front end, many back ends.

A Cargo workspace of 33 crates: a shared front end feeding an interpreter, a VM and four compilers — with conformance work against test262 and performance tracked in CI.

  1. 01

    parse

    lexer → parser → AST → resolve → optimize

  2. 02

    run

    tree-walking interpreter + REPL, bytecode VM

  3. 03

    native

    Rust codegen, Cranelift and LLVM backends

  4. 04

    web

    WASM (web + WASI) and JavaScript output, JSX

  5. 05

    gba

    no_std portable core + tish_runtime_gba

  6. 06

    tools

    LSP, formatter, linter (SARIF), tree-sitter, editor extension

the developer experience

types that become structs.

adapted from the typed-structs example and the README: on the native backend this interface compiles to a Rust struct.

physics.tish
1interface Vec2 { x: number; y: number }
2interface Body { name: string; pos: Vec2; mass: number; vel: number }
3
4function momentum(b: Body): number {
5 return b.mass * b.vel
6}
7
8fn greeting(name) = `Hello, ${name}!`
9console.log(greeting("World"))

brand & design system

A terminal-native identity: everything set in one monospace, lowercase, near-black — the language should look like the place you'll use it.

void

#040404

card

#090909

panel

#0f1117

violet

#ad8cff

pink

#fd6c95

text

#dedede

JetBrains Monoeverything
  • ·the > tish wordmark is a prompt
  • ·docs written as runnable examples
  • ·MIT licensed

by the numbers

771

commits in the core

132k

lines of rust

33

crates

289

test programs

24

examples

22

repos in the tishlang org

counted from the source repositories

tishlang.com
WASM targets docs
Tish on mobile

what we did

development

  • language & compiler
  • VM and native backends
  • LSP, formatter, linter
  • package & release automation

design

  • language ergonomics
  • docs & playground

brand

  • terminal identity
  • tishlang.com

ai

  • experimental Polars and Candle bindings for data & inference

next world

Chuggiegame boy advance games, written in tish. →

© 2026 knoe.one