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编程语言

Download history 5/week @ 2024-07-06 61/week @ 2024-07-27

66 每月下载量

BSD-2-Clause-Patent

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