1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Update yjit.md

Add VMIL paper, update supported CPUs.
This commit is contained in:
Maxime Chevalier-Boisvert 2022-08-24 15:13:08 -04:00 committed by Takashi Kokubun
parent def3ade8a8
commit 5ef048e5b1
Notes: git 2022-08-30 01:10:11 +09:00

View file

@ -20,6 +20,7 @@ This project is open source and falls under the same license as CRuby.
If you wish to learn more about the approach taken, here are some conference talks and publications:
- RubyKaigi 2021 talk: [YJIT: Building a New JIT Compiler Inside CRuby](https://www.youtube.com/watch?v=PBVLf3yfMs8)
- Blog post: [YJIT: Building a New JIT Compiler Inside CRuby](https://pointersgonewild.com/2021/06/02/yjit-building-a-new-jit-compiler-inside-cruby/)
- VMIL 2021 paper: [YJIT: A Basic Block Versioning JIT Compiler for CRuby](https://dl.acm.org/doi/10.1145/3486606.3486781)
- MoreVMs 2021 talk: [YJIT: Building a New JIT Compiler Inside CRuby](https://www.youtube.com/watch?v=vucLAqv7qpc)
- ECOOP 2016 talk: [Interprocedural Type Specialization of JavaScript Programs Without Type Analysis](https://www.youtube.com/watch?v=sRNBY7Ss97A)
- ECOOP 2016 paper: [Interprocedural Type Specialization of JavaScript Programs Without Type Analysis](https://drops.dagstuhl.de/opus/volltexte/2016/6101/pdf/LIPIcs-ECOOP-2016-7.pdf)
@ -45,7 +46,7 @@ YJIT is a work in progress and as such may not yet be mature enough for mission-
- No garbage collection for generated code.
- Currently supports only macOS and Linux.
- Currently supports only x86-64 CPUs.
- Supports x86-64 and arm64/aarch64 CPUs only.
Because there is no GC for generated code yet, your software could run out of executable memory if it is large enough. You can change how much executable memory is allocated using [YJIT's command-line options](#command-line-options).
@ -308,9 +309,9 @@ You can use the Intel syntax for disassembly in LLDB, keeping it consistent with
echo "settings set target.x86-disassembly-flavor intel" >> ~/.lldbinit
```
## Running YJIT on M1
## Running x86 YJIT on Apple's Rosetta
It is possible to run YJIT on an Apple M1 via Rosetta. You can find basic
For development purposes, it is possible to run x86 YJIT on an Apple M1 via Rosetta. You can find basic
instructions below, but there are a few caveats listed further down.
First, install Rosetta:
@ -343,7 +344,7 @@ $ rustup default stable-x86_64-apple-darwin
While in your i386 shell, install Cargo and Homebrew, then hack away!
### M1 Caveats
### Rosetta Caveats
1. You must install a version of Homebrew for each architecture
2. Cargo will install in $HOME/.cargo by default, and I don't know a good way to change architectures after install