用Rust编写的JavaScript编译器和TypeScript检查器,专注于静态分析和运行时性能。
[!重要] Ezno正在积极开发中,目前还不支持足够的功能来检查现有项目(参见阻塞问题)。查看入门指南以体验它当前支持的功能。
Ezno是:
- 一个可通过CLI使用的JavaScript类型检查器(LSP也在开发中)
- 检查程序并保证类型安全(不会出现运行时
TypeError
)(只要定义是健全的) - 旨在实现健全性和追踪的类型系统,以实现更好的静态分析
- 一个命令式类型系统,跟踪和评估函数和控制流结构的副作用。它类似于解释器,但使用类型而不是值进行操作,且不执行IO、副作用等
- 一系列类型实验的集合。许多正在完善中,处于原型阶段。一些新行为专门针对JavaScript,而其他则可应用于其他语言
- 用Rust编写
- 快速且体积小
- 开源!你可以帮助构建Ezno!
- 通过深入的静态分析(超越语法分析)挑战类型检查、优化和编译的现状!
Ezno不是:
- eNZo,Z在N的前面(发音类似'Fresno'去掉'fr')😀
- 与TSC完全相同或1:1对应,它有一些不同的行为,但应该能在使用TSC的现有项目中工作
- 为了服务于大型代码库而变得更快。首先要减少冗余和复杂代码!
- 为了允许更多动态模式而变得更智能。保持简单!
- 二进制可执行文件编译器。它接收JavaScript(或TypeScript或Ezno超集)并执行类似传统编译器的处理,但最终输出JavaScript。然而,将来它可能使用其事件(副作用)表示生成更低级的格式。
了解更多关于Ezno的信息(按时间顺序):
该项目是一个由几个crate组成的工作空间:
Crate | 代码行数 | 包含内容 |
---|---|---|
checker | 类型和上下文的存储、类型检查逻辑以及对解析器AST的可选合成 | |
parser | AST定义、解析逻辑、AST到字符串转换和遍历 |
帮助贡献
查看适合新手的问题并参与讨论!欢迎询问有关检查实现代码的问题。
阅读CONTRIBUTING.md获取有关构建和测试的信息。