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
Topaz is Ruby in Python
Search
Jan Stępień
June 12, 2013
Programming
1
530
Topaz is Ruby in Python
Slides from a talk about Topaz I delivered on 12.06.2013 at Munich Ruby Users Group meetup.
Jan Stępień
June 12, 2013
Tweet
Share
More Decks by Jan Stępień
See All by Jan Stępień
graalvm-jug-bb
jan
1
160
That Looks Oddly Familiar
jan
0
270
Native Clojure
jan
0
180
Native Clojure with GraalVM
jan
0
700
Compiling a lisp into a lisp using a lisp
jan
0
120
Mutation testing in continuous delivery pipelines
jan
0
140
Self-contained systems: an introduction
jan
0
130
Let's just test that real quick
jan
1
370
Combating spam, or how I befriended the Killer Rabbit of Caerbannog
jan
0
250
Other Decks in Programming
See All in Programming
脱・初心者!脱・マネコン!AWS CDKを使ってみませんか!?
har1101
0
110
Parallel Socket Communication in Swift
s_shimotori
0
220
IntelliJ IDEA を知らなかった 自分に教えたい小ネタ集 / IntelliJ IDEA Hints for My Past Self
mackey0225
3
170
Why 1 + 1 = 2 in Swift?
1plus4
1
240
Swiftの型推論を学ぼう | Let's Learn About Type Inference in Swift
omochi
2
520
PHP 8.3で追加されたjson_validate()を徹底的に深掘りしてみよう
mashirou1234
1
720
Laravel OpenAPIによる"辛くない"スキーマ駆動開発
kentaroutakeda
2
2.1k
設計の知識と技能で駆動するソフトウェア開発
masuda220
PRO
18
10k
Open Source Swift Workshop - Foundation and first party libraries
ikesyo
0
180
object-oriented-conference-2024
fuwasegu
6
1.8k
phpunit/php-code-coverageって何をしてるんだ #phperkaigi
o0h
PRO
2
220
WinUI 3デモ - "CommunityToolkit.Mvvm"NuGetパッケージ編
andrewkeepcoding
0
130
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
23
1.9k
A Tale of Four Properties
chriscoyier
150
22k
Fantastic passwords and where to find them - at NoRuKo
philnash
35
2.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
58
14k
Optimizing for Happiness
mojombo
369
69k
Building Your Own Lightsaber
phodgson
97
5.6k
Making Projects Easy
brettharned
106
5.4k
Fontdeck: Realign not Redesign
paulrobertlloyd
75
4.8k
Stop Working from a Prison Cell
hatefulcrawdad
265
19k
Why You Should Never Use an ORM
jnunemaker
PRO
50
8.6k
GraphQLとの向き合い方2022年版
quramy
28
12k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
6
950
Transcript
Topaz is in Ruby Python
Hi, my name is Jan Stępień
Topaz is a Ruby implementation written in Python
Topaz is a Ruby implementation which is faster
Ruby Topaz is a bird from South America
cc-by-sa-3.0 geimfyglið
Topaz is in Ruby Python
cc-by-sa-3.0 geimfyglið
cc-by-nc-sa-2.0 marie
Why? would you implement Ruby in Python?
Python CPython PyPy
Ruby MRI JRuby Rubinius
PyPy is a Python implementation
PyPy is amazingly fast See http://speed.pypy.org
PyPy is written in RPython
RPython is a subset of Python
RPython can be statically compiled to C
RPython is optimised for implementing VMs
PyPy is an impl. of Python PyPy is written in
RPython RPython is compiled to C
Topaz is an impl. of Ruby Topaz is written in
RPython RPython is compiled to C
git clone http://github.com/topazproject/topaz
$ cd topaz && cloc . Language files code Python
132 22934 Ruby 35 5058
$ time ./bin/topaz_untranslated.py 3.times { puts :hello } ˆD hello
hello hello real 0m3.539s
$ cd topaz $ python \ .../pypy/rpython/bin/rpython \ -Ojit targettopaz.py
RPython → C
None
$ time ./bin/topaz 3.times { puts :hello } ˆD hello
hello hello real 0m0.050s
freqs = [0] * 256 while buf = $stdin.read(8192) buf.bytes.each
do |b| freqs[b] += 1 end end p freqs
MRI 2.0 36,1 s 5,0 MB/s JRuby 1.7.2 24,8 s
7,3 MB/s Topaz 3,3 s 55,3 MB/s 180MB of data served from caches
50 100 150 Input size [MB] 10 30 20 0
Time [s] M RI JRuby Topaz
Topaz redefines what fast means in the Ruby world
Why is it so fast? PyPy!
Meta-tracing just-in-time compilation
None
Get the source and try for yourself
Is Topaz a Ruby-Python interoperability bridge? No, unfortunately it’s not.
Topaz is still very young
Contributing is easy
See also 096 RR Topaz with Alex Gaynor Introducing Topaz
– Tim Felgentreff topazruby.com
dankeschön dziękuję ślicznie