Skip to content

tishlang/tish

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

423 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tishlang

Tish

npm version downloads node version crate version license

Tish is a TypeScript- and JavaScript-compatible language implemented in Rust. It is aimed at teams who want a familiar surface syntax, predictable semantics, and the option to ship either interpreted scripts or runtime free native binaries.

The same source can run on a tree-walking interpreter, a bytecode VM, or compiled targets (native, WASM/WASI, and others). Network, filesystem, and process APIs are feature-gated so defaults stay safe. For the full syntax and semantics, see the canonical spec in-repo; for tutorials and reference, see tishlang.com/docs.

🔥 Features

  • JS-like surfacelet / const, fn, arrows, template literals, async/await, modules, and a large slice of familiar builtins (console, Math, JSON, arrays, strings, objects).
  • Two ways to run — interpret for fast iteration (tish run, REPL); compile to native or WASM for distribution and performance (tish build).
  • Memory-safe implementation — Rust-hosted runtime and compiler pipeline; no GC in the host language for the toolchain itself.
  • Secure by default — I/O and platform APIs (http, fs, process, etc.) are opt-in via features.
  • No undefinednull only where JS would use undefined; strict equality (=== / !==) without loose coercion.
  • Optional types — TypeScript-style annotations are parsed for tooling and future checking; see the language reference for status.

Full specification: docs/LANGUAGE.md. Implementation status, gaps, and JS compatibility: docs/plan-gap-analysis.md.

📚 Documentation

User-facing guides and reference:

Section Description
Getting started Install Tish, build your first app
First app Run and build workflows, targets
Editor & IDE VS Code, LSP, tasks, Neovim
Language server tish-lsp capabilities
Formatting tish-fmt
Linting tish-lint
Interactive REPL Multi-line input, completion, history
Language overview Syntax, keywords, semantics
Tish vs JavaScript Differences and additions from JS
Builtins Console, Math, JSON, Array, String, Object
Features (APIs) http, fs, process, regex — feature-gated
Native backend Rust, Cranelift, LLVM compilation
WASM targets Web and WASI
Deploy Platform and hosting

In-repo docs

Contributor- and spec-oriented material in docs/:

File Purpose
LANGUAGE.md Canonical language reference (syntax, semantics, builtins)
ecma-alignment.md ECMA-262 / test262 mapping
plan-gap-analysis.md Implementation audit, MVP checklist
architecture-next-steps.md Crate layout, design decisions
builtins-gap-analysis.md Builtins across Rust vs bytecode VM (Cranelift/WASI)

🛠️ Toolchain

Tool Purpose
tish CLI — run, repl, build, dump-ast
tish-fmt Formatter
tish-lint Linter (--format sarif for code scanning)
tish-lsp Language server; uses tish_fmt / tish_lint as libraries
tish-security/ (sibling repo) Rules & CI examples — clone next to tish/ as ../tish-security (OpenGrep, ast-grep, Comby, Codacy scaffold, fixtures)
tree-sitter-tish/ Tree-sitter grammar (editors, ast-grep, future OpenGrep integration)
VS Code extension tish-vscode — grammar, snippets, LSP client, tasks

Related docs on tishlang.com: Editor & IDE, Language server, Formatting, Linting.

📦 Installation

Install globally:

brew tap tishlang/tish https://github.com/tishlang/tish
brew install tish

Or locally with npm:

npm install @tishlang/tish

More options: Installation.

⚡ Quick start

npx @tishlang/create-tish-app my-app
cd my-app
npx @tishlang/tish run src/main.tish

▶️ Run and build

// hello.tish
fn greeting(name) = `Hello, ${name}!`
console.log(greeting("World"))
tish run hello.tish
# Hello, World!

tish build hello.tish -o hello
./hello
# Hello, World!

Native binaries are standalone (no Tish or Rust runtime required on the machine that runs them). Backends, flags, and WASM are covered in First app, Native backend, and WASM targets.

🤝 Contribution

Contributions are welcome. See CONTRIBUTING.md for building, testing, and code style. Tish is licensed under the Pay It Forward License (PIF).

💪 Performance

JavaScript equivalents live in tests/core/*.js. Compare Tish with Node.js or Bun:

./scripts/run_performance_manual.sh

Details: docs/perf.md.

📝 License

Tish is licensed under the Pay It Forward License (PIF). See LICENSE.

About

Compile Typescript/Javscript to runtime free native binaries -- ish

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors