14个版本
0.2.4 | 2023年5月21日 |
---|---|
0.2.3 | 2023年5月1日 |
0.2.2 | 2023年3月1日 |
0.2.0 | 2022年2月2日 |
0.1.4 | 2021年9月29日 |
#232 在 编程语言
66 每月下载量
360KB
8K SLoC
Mijit
一个实验性的JIT编译器生成器。
Mijit由以下组件组成
- 一种特定领域语言("Mijit代码"),特别适合优化,且足以编写解释器。
- 一个后端,将Mijit代码降低到机器代码(在RAM中)并执行它。
- 一个基于配置文件的优化器,它读取和写入Mijit代码。
使用
假设你正在编写一种高级编程语言。它编译成某种虚拟代码,在用C编写的解释器上运行。你希望它运行得更快。
你编写一个使用crate mijit
的Rust程序。你构造一个 Jit
,将解释器性能关键部分移植到Mijit代码。Mijit为你提供一个等效的JIT编译器。你将它封装在一个适合你语言的Rust API中。你为你的Rust API编写C绑定。你将其作为解释器的替代品放入,重用现有的非性能关键部分。
示例
使用Mijit的最佳示例是 Bee。向其 "./configure" 传递"--with-mijit"标志以启用Mijit后端。Mijit中包含相关 Beetle 的一个简化版本,作为单元测试。
状态
工作,但未完成。Mijit代码的规范正在变动。有两个后端,分别为x86_64和AArch64。其他64位目标正在计划中。Mijit可以运行一些程序,但生成的代码质量较差,其运行速度约为编译C代码的40%。已经编写了一个优化器的粗略轮廓,并且已经启用,但到目前为止,它不知道很多优化。性能分析器尚未编写。
版本
0.1.x版本已过时。0.2.0至0.2.4版本以向后不兼容的方式改进了API和内部结构,增加了缺失的功能并移除了不必要的功能。0.3.0版本将进行重大重构(#48)。只要版本号以"0"开头,我保留任意改变设计的权利。
构建
$ cargo build --release
运行
Mijit主要是一个库。然而,它确实提供了一些可执行测试。
$ cargo test
依赖项
~1.5MB
~19K SLoC