#javascript #typescript #type-checker

bin+lib ezno

A JavaScript checker and compiler. For use as a library or cli

9 releases

new 0.0.8 Mar 21, 2023
0.0.7 Mar 21, 2023
0.0.1 Feb 26, 2023
0.0.0 Jan 24, 2022

#71 in Programming languages

Download history 1/week @ 2022-12-01 1/week @ 2022-12-08 1/week @ 2022-12-22 1/week @ 2023-01-05 1/week @ 2023-01-19 5/week @ 2023-01-26 2/week @ 2023-02-02 4/week @ 2023-02-09 3/week @ 2023-02-16 23/week @ 2023-02-23 25/week @ 2023-03-02 2/week @ 2023-03-09 108/week @ 2023-03-16

161 downloads per month

MIT license

490KB
14K SLoC

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

This project is a workspace consisting of a few crates:

Crate Lines Of Code
Description
parser Contains AST definitions, logic for parsing and serializing, and visiting

Read some more detailed posts

Experimental

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

Type checking

Ezno is a type checker based on TypeScript type annotations.

Features

  • Declare interfaces and other type definitions
  • Usage checking: property access, function parameters etc
  • Effects that track mutations across functions
  • Parameter constraint inference
  • Powerful dependent type system

Differences to checking TSC

  • The any type has no properties on it
  • Type annotations on variables are the reassignment constraint, not it's current value. Current value is inferred and is mutable
  • ...

ultimately the differences shouldn't break existing code and in any case pick up more errors than TSC

Help contribute

Check out issues. Comment on discussions.

Dependencies

~1.5–6.5MB
~111K SLoC