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:
		
							parent
							
								
									def3ade8a8
								
							
						
					
					
						commit
						5ef048e5b1
					
				
				
				Notes:
				
					git
				
				2022-08-30 01:10:11 +09:00 
				
			
			
			
		
		
					 1 changed files with 5 additions and 4 deletions
				
			
		|  | @ -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 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Maxime Chevalier-Boisvert
						Maxime Chevalier-Boisvert