Slide 1

Slide 1 text

РэмбOвидная ПРОБЛЕМА особенности разработки современных языков программирования

Slide 2

Slide 2 text

Alialksandr Lomau VETERANT EL “CAPITAN” DEPLOY https://speakerdeck.com/allomov https://twitter.com/code1n

Slide 3

Slide 3 text

WHAT’S THAT ALL ABOUT?

Slide 4

Slide 4 text

ромбовидная проблема? "DIAMOND INHERITANCE"

Slide 5

Slide 5 text

ромовидная проблема? “пиратство и алкоголизм”

Slide 6

Slide 6 text

рэбмовидная проблема!

Slide 7

Slide 7 text

рэбмовидная проблема!

Slide 8

Slide 8 text

WHAT’S THAT ALL ABOUT? RUBY JIT GOLANG DEPS AND RAMBOs

Slide 9

Slide 9 text

RUBY

Slide 10

Slide 10 text

Where is RAMBO?

Slide 11

Slide 11 text

JIT Just In Time Compilation

Slide 12

Slide 12 text

JIT Java И Товарищи

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

deoptimization branch by Shyohei Urabe

Slide 15

Slide 15 text

deoptimization branch by Shyohei Urabe •contains first naive implementation of JIT •used very few of JIT optimizations, but uses less memory than full-power JIT implementation •submitted at 26 Aug 2016 Reference URL: https://github.com/ruby/ruby/pull/1419

Slide 16

Slide 16 text

deoptimization branch by Shyohei Urabe •contains first naive implementation of JIT •used very few of JIT optimizations, but uses less memory than full-power JIT implementation •submitted at 26 Aug 2016 •not merged (and will not be) Reference URL: https://github.com/ruby/ruby/pull/1419

Slide 17

Slide 17 text

MJIT by Vladimir Makarov

Slide 18

Slide 18 text

Vladimir Makarov RedHat

Slide 19

Slide 19 text

MJIT by Vladimir Makarov Converted YARV to register-based instead of stack-based (smaller instructions but larger memory footprint). Built JIT on top of new VM implementation. MJIT can reach 230% performance of Ruby 2.0.0 but is pretty unstable.

Slide 20

Slide 20 text

https://www.youtube.com/watch?v=qpZDw-p9yag

Slide 21

Slide 21 text

Changed Completely

Slide 22

Slide 22 text

MJIT-JARV by Takashi Kokubun Based on Vladimir Makarov’s work, but without changing Ruby VM to register-based. Several JIT optimizations were turned off. These reverted changes made JIT slower but more stable. Reference PR: https://github.com/ruby/ruby/pull/1782 Reference ticket: https://bugs.ruby-lang.org/issues/14235 Partially merged in trunk Able to run Rails stably.

Slide 23

Slide 23 text

Kind of Happy End

Slide 24

Slide 24 text

GO LANG

Slide 25

Slide 25 text

Russ Cox Google

Slide 26

Slide 26 text

VGO completely redefines the way go utility works

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Russ Cox (view from community)

Slide 29

Slide 29 text

node.js

Slide 30

Slide 30 text

Azer Koçulu

Slide 31

Slide 31 text

RAMBO: REVENGE

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

Azer Koçulu (view from community)

Slide 34

Slide 34 text

Materials

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

1.https://github.com/ruby/ruby/pull/1419 2.https://medium.com/square-corner-blog/rubys-new-jit-91a5c864dd10 3.https://bugs.ruby-lang.org/issues/12589 4.https://github.com/ruby/ruby/pull/1782 5.https://medium.com/@k0kubun/the-method-jit-compiler-for-ruby-2-6-388ee0989c13 6.https://vmakarov.fedorapeople.org/VMakarov-RubyKaigi2017.pdf 7.http://rubykaigi.org/2017/presentations/vnmakarov.html 8.https://github.com/vnmakarov/ruby/tree/rtl_mjit_branch#readme 9.https://research.swtch.com/vgo 10.https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/ Links

Slide 37

Slide 37 text

THANK YOU, all!