Giter Club home page Giter Club logo

ezno's Introduction

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

You can try what it current supports today with npx

npx ezno check file.ts

Or download the binary with npm install ezno, cargo install ezno or on GitHub releases. Or try it in Oxc!

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. Some features work well, others are in the prototype stage. Some are specific to JavaScript, others could be applied to other dynamic languages
  • A challenge to the status quo of DCE, type checking and compilation through deeper static analysis beyond syntax analysis
  • 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 takes in JavaScript (or TS/Ezno superset) and does similar methods to traditional compilers, but at the end emits JavaScript. However the event intermediate representation could be used in the future to generate a lower level format
  • Usable, still a way to go until it can check actual programs. See the specification for what is currently implemented in the checker

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!

Help contribute

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

ezno's People

Contributors

kaleidawave avatar jasikpark avatar addisoncrump avatar markthree avatar nathanbabcock avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.