A JavaScript compiler and TypeScript checker written in Rust with a focus on static analysis and runtime performance.

Try the checker in Oxc today!

project lines of code

What Ezno is - A type checker for JavaScript, usable as a library or with optional compiler infrastructure (parser, CLI, LSP, etc) - Fully typed programs, guaranteeing type safety (as long as definitions are sound) - Types aimed at soundness and tracing for better static analysis - A imperative type system, with event tracing and evaluating function side effects. Equivalent to an interpreter, but with types rather than values. - A collection of experiments of types - Written in Rust

What Ezno is not - eNZo, Z goes before the N (pronounce as 'Fresno' without the 'fr') 😀 - 1:1 / parity with TSC, it has different behaviors but should work in existing projects using TSC (check out stc that is aimed at 1:1) - A binary executable generator. It compiles JavaScript (or TS/Ezno superset) to JavaScript. The process is compiler rather than transpiler. Although you could use its event IR to generate a lower level format - Usable, still a long way to go to usability

Read some more detailed posts - Introducing Ezno - Ezno '23


This project is a workspace consisting of a few crates:

| Crate | Lines Of Code | Contains | |---|---|---| | checker | checker lines of code | Stores for types and contexts, type checking logic and optional synthesis over the parser AST | | parser | parser lines of code | AST definitions, logic for parsing, AST to string and visiting |

Also checkout oxctypesynthesis, a crate which allows using the type checker through oxc!

Experimental

This is an experimental compiler. If you are looking for a stable compiler, Ezno is not the right choice at the moment.

Help contribute

Check out issues and comment on discussions! Read CONTRIBUTING.md for more information.