22 个版本

0.0.21 2024 年 5 月 31 日
0.0.19 2024 年 1 月 3 日
0.0.18 2023 年 12 月 20 日
0.0.17 2023 年 11 月 20 日
0.0.0 2022 年 1 月 24 日

#101 in 编程语言

Download history 1/week @ 2024-05-21 138/week @ 2024-05-28 12/week @ 2024-06-04 2/week @ 2024-06-11

1,258 每月下载量

MIT 许可证

1.5MB
40K SLoC

使用 Rust 编写的 JavaScript 编译器和 TypeScript 检查器,侧重于静态分析和运行时性能。

[!IMPORTANT] Ezno 正在积极开发中,目前不支持足够的功能来检查现有项目。查看入门指南以了解它目前支持的功能

Ezno 是什么

  • 一个可以通过 CLI(以及正在开发中的 LSP)使用的 JavaScript 类型检查器
  • 检查程序以确保类型安全(没有运行时 TypeError 错误)(只要定义是合理的)
  • 类型旨在保证合理性和跟踪以进行更好的静态分析
  • 一个 命令式 类型系统,它跟踪和评估函数和控制流结构的副作用。它与解释器类似,但使用类型而不是 并不运行 IO 副作用等
  • 一系列类型实验的集合。许多正在开发中,处于原型阶段。一些新行为专门针对 JavaScript,而其他行为可以应用于其他语言
  • 用 Rust 编写
  • 快速小型
  • 开源!你可以帮助构建 Ezno!
  • 通过更深入的静态分析来挑战传统的类型检查、优化和编译方法

Ezno 不是什么

  • eNZo,Z 在 N 前面(发音为 'Fresno',不带 'fr')😀
  • 与 TSC 保持一致或 1:1,它有一些不同的行为 但是 应该能在使用 TSC 的现有项目中正常工作
  • 更快,作为一种服务于大型代码库的手段。首先删除冗余和复杂的代码!
  • 更智能,作为一种允许更多 动态模式 的手段。保持简单!
  • 二进制可执行编译器。它接收JavaScript(或TypeScript或Ezno的超集)作为输入,并执行类似于传统编译器的类似过程,但最终输出JavaScript。然而,在未来,它可能使用其事件(副作用)表示生成更低级别的格式。

了解更多关于Ezno的信息


本项目是一个由几个crate组成的 workspace。

crate 代码行数 包含
checker checker lines of code 存储类型和上下文,类型检查逻辑和可选的解析器AST的合成
parser parser lines of code AST定义,解析逻辑,AST转字符串和访问

帮助贡献

查看良好的初次问题,并在讨论中发表评论!请随时就检查实现代码的任何部分提出问题。

阅读CONTRIBUTING.md以获取有关构建和测试的信息。

依赖关系

~2–13MB
~145K SLoC