Slide 1

Slide 1 text

INTRO TO THE RUBY VM @ASHLEYNELLIS Ashley Ellis

Slide 2

Slide 2 text

WHAT THE HECK’S A VM?

Slide 3

Slide 3 text

“A VIRTUAL MACHINE (VM) IS AN OPERATING SYSTEM (OS) OR APPLICATION ENVIRONMENT THAT IS INSTALLED ON SOFTWARE WHICH IMITATES DEDICATED HARDWARE.” Source: http://searchservervirtualization.techtarget.com/definition/virtual-machine

Slide 4

Slide 4 text

RUBY CODE -> BYTECODE

Slide 5

Slide 5 text

YARV YET ANOTHER RUBY VIRTUAL MACHINE

Slide 6

Slide 6 text

PREPARING YOUR CODE FOR YARV

Slide 7

Slide 7 text

TOKENIZING: GOES THROUGH EACH CHARACTER AND CONVERTS THEM TO A SERIES OF TOKENS THAT RUBY UNDERSTANDS 10 -> tInteger

Slide 8

Slide 8 text

PARSING: TOKENS ARE GROUPED INTO SENTENCES AND PHRASES THAT MAKE SENSE TO RUBY

Slide 9

Slide 9 text

‣ SINCE RUBY 1.9, AFTER YOUR RUBY CODE IS PARSED AND TOKENIZED IT’S COMPILED TO BYTE CODE USING YARV. ‣ THIS IS VERY SIMILAR TO HOW JAVA WORKS, THE JVM COMPILES IT TO JAVA BYTE CODE. ‣ BEFORE 1.9 RUBY WAS BEING INTERPRETED TO C AND THEN THE C COMPILES TO MACHINE CODE.

Slide 10

Slide 10 text

COMPILER VS INTERPRETER

Slide 11

Slide 11 text

COMPILER: FROM SOURCE CODE TO MACHINE LEVEL CODE ONCE (UNTIL THE PROGRAM IS CHANGED) INTERPRETER: DOES SOME CONVERSION WORK EVERY TIME A STATEMENT OR FUNCTION IS EXECUTED

Slide 12

Slide 12 text

RUBY IS STILL CLASSIFIED AS AN INTERPRETED LANGUAGE

Slide 13

Slide 13 text

INTERMEDIATE REPRESENTATION COMBINES COMPILING AND INTERPRETING

Slide 14

Slide 14 text

PRE 1.9- *TRAVERSES* ABSTRACT SYNTAX TREE (AST) (KIND OF LIKE THE DOM) NOW - YARV COMPILES THAT AST TO YARV BYTECODE AND THEN RUNS IT. https://www.igvita.com/2008/12/11/ruby-ast-for-fun-and-profit/

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

Shaughnessy, P. (2013). How Ruby Executes Your Code. In Ruby under a microscope: An illustrated guide to Ruby internals (1st ed., p. 360). No Starch Press.

Slide 18

Slide 18 text

Shaughnessy, P. (2013). How Ruby Executes Your Code. In Ruby under a microscope: An illustrated guide to Ruby internals (1st ed., p. 360). No Starch Press.

Slide 19

Slide 19 text

SOO…WHY SHOULD I CARE?

Slide 20

Slide 20 text

‣ DEBUGGING WAT MOMENTS ‣ PERFORMANCE OPTIMIZATION ‣ METAPROGRAMMING ‣ KNOWING WHEN TO USE WHAT LANGUAGE

Slide 21

Slide 21 text

RESOURCES FOR OTHER LANGUAGES ▸ Python ▸ Also an Intermediate Language (Compiled and Interpreted) ▸ dis function to see CPython byte code ▸ https://docs.python.org/2/ library/dis.html ▸ Javascript ▸ Interpreted with optional JIT (just- in-time) compilation support. ▸ All modern day browsers use the JIT ▸ Capstone.js or similar tools can be used to disassemble code to byte code ▸ http://alexaltea.github.io/ capstone.js/

Slide 22

Slide 22 text

SOURCES ‣ http://searchservervirtualization.techtarget.com/definition/virtual- machine ‣ Shaughnessy, P. (2013). Ruby under a microscope: An illustrated guide to Ruby internals (1st ed., p. 360). No Starch Press. ‣ Cooper, P. (2011, August 5). Using Ripper to See How Ruby Is Parsing Your Code. Retrieved December 2, 2015, from http:// www.rubyinside.com/using-ripper-to-see-how-ruby-is-parsing-your- code-5270.html ‣ https://www.igvita.com/2008/12/11/ruby-ast-for-fun-and-profit/