Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sunho/aheuijit
Aheui JIT compiler for PC and web
https://github.com/sunho/aheuijit
aarch64 aheui jit wasm webassembly x86-64
Last synced: 11 days ago
JSON representation
Aheui JIT compiler for PC and web
- Host: GitHub
- URL: https://github.com/sunho/aheuijit
- Owner: sunho
- Created: 2021-06-03T23:02:28.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2023-06-29T09:31:10.000Z (over 1 year ago)
- Last Synced: 2024-10-21T02:43:03.973Z (18 days ago)
- Topics: aarch64, aheui, jit, wasm, webassembly, x86-64
- Language: C++
- Homepage: https://sunho.io/AheuiJIT/
- Size: 63.1 MB
- Stars: 32
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# AheuiJIT
AheuiJIT is a just in time compiler for [Aheui language](https://aheui.readthedocs.io/en/latest/specs.en.html) built from scratch. It implements JIT compilation without using any fancy external libraries. In fact, only libraries it depends on are assembler and c++ standard library. It's about 10 times faster than the previously fastest implementation of Aheui language.
## Supported devices
- 64 bit windows, mac, linux (x86)
- Web browsers or nodejs runtime that supports WebAssembly ([web demo](https://sunho.io/AheuiJIT))
- Android (ARM 64)## Features
- It passes all [Aheui test cases](https://github.com/aheui/snippets) except the 128 bit integer print test case.
- It can run [aheui.aheui](https://github.com/aheui/aheui.aheui) (aheui interpreter written in aheui)
- It can even run aheui.aheui.aheui.
- It's fast!
- It runs logo test case within 0.21 seconds.
- It runs aheui.aheui + quine testcase within 0.7 seconds. (which is 8 times faster than the existing JIT compiler rpaheui)
- Web version is pretty fast as well.
- It runs logo testcase within 0.23 seconds.
# Korean description# 아희짓
## 개요
아희짓은 [아희 언어](https://aheui.readthedocs.io/en/latest/introduction.html)를 위한 JIT (Just in Time) 컴파일러입니다. 어셈블러와 유틸 라이브러리외에 외부 라이브러리에 전혀 의존하지 않고 JIT을 바닥부터 구현합니다.
## 지원 환경
- 64비트 windows, mac, linux (x86 아키텍쳐)
- 웹어셈블리를 지원하는 웹 브라우저 및 nodejs ([웹 데모](https://sunho.io/AheuiJIT))
- 안드로이드 (arm 64비트)## 완성도
- [아희 테스트 케이스](https://github.com/aheui/snippets) 중 128 비트 정수 출력을 제외한 모든 테스트를 통과합니다.
- 특히 저장소의 원소를 모두 소모하면 반대로 가는 스펙을 제대로 구현합니다.
- 아희아희를 원할하게 구동합니다. (quine과 logo가 작동하는 것을 확인했습니다.)
- 빠릅니다.
- logo 아희 테스트를 0.21초 안에 완료합니다. (JIT 컴파일 시간 0.05초 포함)
- 아희아희 + quine 테스트를 0.7초안에 완료합니다. (기존 jit 컴파일러인 rpaheui보다 8배 빠른 결과입니다.)
- 웹버전도 꽤나 빠릅니다.
- logo 아희 테스트를 JIT 컴파일 시간을 제외하면 0.23초 안에 완료합니다.## 사용법
### PC 버전
릴리즈 페이즈에 가서 운영체제에 맞는 압축파일을 다운받고 압축을 푸세요.
```
bin/AheuiJITCli 아희파일
```
로 아희 프로그램을 실행해볼 수 있습니다.inlcude와 lib폴더에는 정적 라이브러리로 빌드된 AheuiJIT이 있습니다.
### 웹 버전
```
npm install aheui-jit
```
하신 다음```js
import AheuiJIT from 'aheui-jit';AheuiJIT.callbacks.printChar = msg => {
console.log(msg);
};AheuiJIT.callbacks.printNum = num => {
console.log(num.toString());
};AheuiJIT.config.logIR = true;
AheuiJIT.ready.then(() => {
return AheuiJIT.run("밤밣따빠밣밟따뿌\n빠맣파빨받밤뚜뭏\n돋밬탕빠맣붏두붇\n볻뫃박발뚷투뭏붖\n뫃도뫃희멓뭏뭏붘\n뫃봌토범더벌뿌뚜\n뽑뽀멓멓더벓뻐뚠\n뽀덩벐멓뻐덕더벅");
}).then(() => {
console.log("finish");
});```
이런식으로 쓰실 수 있습니다.## 빌드
C++17을 지원하는 컴파일러와 cmake을 깔고 아래 명령어를 실행하면 됩니다.
```
git submodul update --init
mkdir build
cd build
cmake ..
```웹어셈블리 버전은 cmake .. 대신 emcmake cmake .. 을 사용하시면 됩니다.