• Stars
    star
    2,365
  • Rank 19,450 (Top 0.4 %)
  • Language
    Rust
  • License
    MIT License
  • Created almost 2 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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


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 oxc_type_synthesis, 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.

More Repositories

1

prism

(No longer in development). Experimental compiler for building isomorphic web applications with web components.
TypeScript
110
star
2

hackernews-prism

A clone of Hacker News built with Prism, Rust and Actix-web
Rust
48
star
3

axum-shuttle-postgres-authentication-demo

Full stack authenticated site built in Rust with Axum, Postgres and Shuttle
Rust
22
star
4

syn-helpers

Framework for building proc derive macros
Rust
10
star
5

discord-weather-bot

Discord bot that gives weather information, written in Rust
Rust
10
star
6

islands

An example of Simplex noise with phaser to construct islands
JavaScript
10
star
7

image-generation-rust

Generate images for social previews using SVGs, Rust and hosted on Shuttle
Rust
8
star
8

pywikipedia

UNMAINTAINED: The only python wikipedia package you will ever need
Python
7
star
9

supersize

Hyperfine inspired tool for tracking and comparing file sizes
Rust
6
star
10

Tasks

Program to manage tasks
Python
5
star
11

source-map

Utilities for building source maps (v3) for a compiler
Rust
5
star
12

derive-enum-from-into

Derive for From and TryInto for enums with single unnamed fields
Rust
4
star
13

kaleidawave.github.io

Personal Website
JavaScript
4
star
14

crates-release-gh-action

Action for automatic upgrade of crate version and publishing on crates.io
Python
4
star
15

online-stopwatch

A Simple Online Stopwatch
JavaScript
3
star
16

prism-ssr-demo

A example of using Prism to build fullstack sites with Express and Node
JavaScript
3
star
17

build-trie

Replaced by derive-finite-automaton
Rust
3
star
18

self-rust-tokenize

Turns instances of Rust structures into a token stream that creates the instance
Rust
3
star
19

enum-variants-strings

Utilities for getting string representation of enum variants and building a variant of enum from string
Rust
2
star
20

derive-finite-automaton

Proc derive macro for building finite automaton
Rust
2
star
21

css-parser

CSS parser/compiler written in Rust
Rust
2
star
22

tokenizer-lib

Tokenization utilities for building parsers in Rust
Rust
2
star
23

axum-shuttle-demo

Testing axum and a bunch of other crates on shuttle
Rust
2
star
24

github-repos-vue

Created with CodeSandbox
Vue
2
star
25

instagram-cli

Upload to instagram from the command line using nodejs
JavaScript
1
star
26

copper

a dark but colourful theme for vscode
1
star
27

project-manager

Python project manager and creator
Python
1
star
28

mathematics

d-
Lean
1
star
29

derive-partial-eq-extras

More customisable #[derive(PartialEq)]
Rust
1
star
30

derive-debug-extras

More customisable #[derive(Debug)]
Rust
1
star
31

iterator-endiate

Extension method for (exact size) iterators which yields tuple containing whether item is last in iterator
Rust
1
star
32

simple-monogame

A simple monogame application that demonstrates some of the basics within 200 lines of C# code
C#
1
star
33

simple-json-parser

No allocation JSON key value parser with support for comments
Rust
1
star