kaleidawave/ezno · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
一个快速且正确的 TypeScript 类型检查器和编译器,附带额外的实验
[!IMPORTANT] Ezno 正处于积极开发阶段,目前不支持足够的功能来检查现有项目(参见 阻塞性问题)。请查看 入门指南 以实验其 当前支持的功能。
Ezno 是什么:
- 一种可通过 CLI 使用的 JavaScript 类型检查器(LSP 也在开发中)
- 检查具有保证类型安全性的程序(无运行时
TypeErrors)(只要定义是可靠的) - 旨在实现可靠性和追踪以改进静态分析的类型
- 一种命令式类型系统,用于跟踪和评估函数及控制流结构的副作用。它类似于解释器,但作用于值而非类型,且不执行 IO、副作用等
- 一系列类型实验的集合。许多正在完善中,处于原型阶段。一些新行为特别有利于 JavaScript,其他则可能应用于其他语言
- 使用 Rust 编写
- 快速 且 小巧
- 开源!你可以帮助构建 Ezno!
- 通过超越语法分析的更深入静态分析,对类型检查、优化和编译的现状提出挑战!
Ezno 不是什么
- eNZo,Z 在 N 前面(发音为去掉 'fr' 的 'Fresno')😀
- 与 TSC 保持同等水平或 1:1 对应,它有一些不同的行为但应该能在使用 TSC 的现有项目中正常工作。你可以在这里查看与 TSC 相比的完整错误和警告对比
- 作为服务大型代码库的手段,速度更快。首先去除冗余和复杂代码!
- 作为允许更多动态模式的手段,更智能。保持简单!
- 一个二进制可执行编译器。它接收 JavaScript(或 TypeScript 或 Ezno 超集),执行与传统编译器类似的过程,但最终输出 JavaScript。然而,在未来,它可能使用其事件(副作用)表示生成更低层的格式。
阅读更多关于 Ezno 的内容(按时间顺序)
本项目是一个由若干 crate 组成的工作区:
| Crate | 代码行数 | 包含内容 |
|---|---|---|
| checker | 类型和上下文的存储、类型检查逻辑以及针对解析器 AST 的可选综合 | |
| parser | AST 定义、解析逻辑、AST 转字符串以及访问 |
帮助贡献
查看 good first issues 并在讨论中留言!欢迎就检查实现中的代码部分提问。
阅读 CONTRIBUTING.md 以获取有关构建和测试的信息。