Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby: MRI, Rubinius, JRuby e outros
Search
João Maia
April 13, 2013
Programming
0
140
Ruby: MRI, Rubinius, JRuby e outros
Palestra realizada no primeiro encontro do Pocando On Rails (Grupo de usuários Ruby do ES)
João Maia
April 13, 2013
Tweet
Share
More Decks by João Maia
See All by João Maia
Introdução ao Go
jvrmaia
0
95
Programando a Internet do Futuro por meio das Redes Definidas por Software
jvrmaia
0
99
As diversas carreiras no mundo de dados
jvrmaia
3
220
Introdução a Análise de Dados Usando Python
jvrmaia
0
160
Uma introdução ao Go
jvrmaia
0
54
Fuckups: do mal planejamento até os erros de codificação e operação
jvrmaia
0
110
Other Decks in Programming
See All in Programming
Docコメントで始める簡単ガードレール
keisukeikeda
1
120
Vuetify 3 → 4 何が変わった?差分と移行ポイント10分まとめ
koukimiura
0
140
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
550
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
140
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
230
クライアントワークでSREをするということ。あるいは事業会社におけるSREと同じこと・違うこと
nnaka2992
1
340
文字コードの話
qnighy
44
17k
GC言語のWasm化とComponent Modelサポートの実践と課題 - Scalaの場合
tanishiking
0
110
Rで始めるML・LLM活用入門
wakamatsu_takumu
0
180
Ruby x Terminal
a_matsuda
7
600
Go Conference mini in Sendai 2026 : Goに新機能を提案し実装されるまでのフロー徹底解説
yamatoya
0
590
Unity6.3 AudioUpdate
cova8bitdots
0
130
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
160
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
410
エンジニアに許された特別な時間の終わり
watany
106
240k
HDC tutorial
michielstock
1
540
It's Worth the Effort
3n
188
29k
Designing for humans not robots
tammielis
254
26k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
84
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Transcript
Ruby: MRI, Rubinius, JRuby e outros João Víctor Rocon Maia
@jvrmaia #PocandoOnRails Saturday, April 13, 13
Supostamente falarei sobre mim nesse slide! Saturday, April 13, 13
Agenda - Teoria introdutória - A linguagem Ruby - MRI
- Rubinius - JRuby - Bônus Saturday, April 13, 13
O que é um compilador!? Saturday, April 13, 13
O que é um compilador!? Compilador Saturday, April 13, 13
Onde são usados? Analisadores léxicos Editores de texto Recuperação de
texto Reconhecimento de padrões Analisadores sintáticos Processamento de SQL Saturday, April 13, 13
Fases ANÁLISE SÍNTESE Saturday, April 13, 13
Fases ANÁLISE SÍNTESE Analisador léxico Analisador sintático Analisador semântico Gerador
de código intermediário Otimizador de código Gerador de código final Saturday, April 13, 13
Exemplo salario_liquido = salario_bruto - impostos ** 2 Saturday, April
13, 13
Exemplo salario_liquido = salario_bruto - impostos ** 2 identificador identificador
identificador atribuição operador subtração operador exponenciação inteiro meu nome é Token Saturday, April 13, 13
Exemplo salario_liquido = salario_bruto - impostos ** 2 = **
salario_liquido salario_bruto impostos 2 - Saturday, April 13, 13
Análise semântica Qual o tipo da variável “X”? A variável
“X” foi declarada? A expressão “x * y + z” é consistente no tipo? A função “puts” tem parâmetros? Saturday, April 13, 13
Resumindo Saturday, April 13, 13
C!? Cadê Ruby? Saturday, April 13, 13
ࢲ͜͜ʹ͍Δ Saturday, April 13, 13
Ruby Influências: Perl, Smalltalk, Eiffel e Lisp Paradigmas: funcional, orientado
a objetos e imperativo Saturday, April 13, 13
Ruby Características: - tipagem dinâmica - gerenciamento de memória (GC)
- GIL Saturday, April 13, 13
Ruby Implementações: - MRI: oficial em C - Rubinius: bytecode
C++(LLVM) escrita em Ruby - JRuby: Java - MacRuby: Objective-C - IronRuby: .NET - MagLev: Smalltalk - Cardinal: Parrot VM - Topaz: Python (PyPy) Saturday, April 13, 13
RubySpec NÃO É “OFICIAL”! http://rubyspec.org/ Ruby Conf 12 Toward a
Design for Ruby by Brian Ford http://youtu.be/BagNfTbXn3w Saturday, April 13, 13
MRI Matz Ruby Interpreter Saturday, April 13, 13
MRI • Mirror: https://github.com/ruby/ruby • parser.y: 11422 LOC (http://goo.gl/kxH6C) •
YARV • C http://www.ruby-lang.org/en/ Saturday, April 13, 13
MRI Código Ruby Tokenize Parse Compile Instruções YARV não usa
Flex feito em C no parse.y Bison (LALR) parse.y e parser.c Saturday, April 13, 13
MRI Saturday, April 13, 13
MRI Saturday, April 13, 13
MRI Saturday, April 13, 13
MRI Saturday, April 13, 13
MRI trace putself putobject 2 putobject 2 opt_plus opt_send_simple (puts)
leave PC SP Saturday, April 13, 13
MRI trace putself putobject 2 putobject 2 opt_plus opt_send_simple (puts)
leave PC SP Saturday, April 13, 13
MRI trace putself putobject 2 putobject 2 opt_plus opt_send_simple (puts)
leave PC self SP Saturday, April 13, 13
MRI trace putself putobject 2 putobject 2 opt_plus opt_send_simple (puts)
leave PC self SP 2 Saturday, April 13, 13
MRI trace putself putobject 2 putobject 2 opt_plus opt_send_simple (puts)
leave PC self SP 2 2 Saturday, April 13, 13
MRI trace putself putobject 2 putobject 2 opt_plus opt_send_simple (puts)
leave PC self SP 4 Saturday, April 13, 13
MRI trace putself putobject 2 putobject 2 opt_plus opt_send_simple (puts)
leave PC nil SP Saturday, April 13, 13
Rubinius http://rubini.us/ + = “An environment for the Ruby programming
language providing performance, accessibility, and improved programmer productivity” 93% dos testes passando no RubySpec compatível com MRI 1.8, e 1.9 e 2.0 em progresso concorrência? Threads, Fibers e agora Actors (sem GIL) Saturday, April 13, 13
Rubinius Saturday, April 13, 13
Rubinius Saturday, April 13, 13
Rubinius Código Ruby Tokenize Parse Compile Instruções Rubinius(.rbc) parser.y generate
parser (bison) parser.c Saturday, April 13, 13
Rubinius (rbx-2.0.0-rc1) Saturday, April 13, 13
JRuby http://jruby.org/ “ The Ruby Programming Language on the JVM
” Why JRuby? http://youtu.be/etCJKDCbCj4 High Performance Ruby http://vimeo.com/61255646 Saturday, April 13, 13
JRuby Código Ruby Tokenize Parse Compile JVM bytecode parser.y generate
parser (jay) parser.java Saturday, April 13, 13
JRuby Saturday, April 13, 13
JRuby Saturday, April 13, 13
JRuby Saturday, April 13, 13
JRuby Saturday, April 13, 13
JRuby Saturday, April 13, 13
JRuby Saturday, April 13, 13
Bônus https://github.com/topazproject Saturday, April 13, 13
Topaz? Por quê? Saturday, April 13, 13
Topaz? Por quê? Rápido! PyPy é muito poderoso! Saturday, April
13, 13
Topaz? Por quê? Rápido! PyPy é muito poderoso! Prove! Saturday,
April 13, 13
Topaz? Por quê? Rápido! PyPy é muito poderoso! Prove! toma
ae! http://goo.gl/UpA7s Saturday, April 13, 13
Why Python, Ruby and Javascript are Slow? Vídeo: http://vimeo.com/61044810 Why
PyPy? Vídeo: http://youtu.be/P5ad6NpjR3M Vídeo: http://youtu.be/Q9wf63flICs PyPy without the GIL Saturday, April 13, 13
Referências Bison http://goo.gl/Pmbns Ruby Under Microscope http://goo.gl/siEiv Compilers: Principles, Techniques,
and Tools http://goo.gl/Y4Dtg So you want to write an interpreter? http://goo.gl/UfbxC Saturday, April 13, 13
ײँ ࣭͋Γ·͔͢ʁ Saturday, April 13, 13