SlideShare une entreprise Scribd logo
1  sur  37
Rubinius: Ruby, написанный на Ruby Самсонов Иван
Летом 2006 года, где-то в США А не написать ли мне свой Ruby с блекджеком и шлюхами?
Что такое Rubinius? Ruby LLVM JIT Engine Yard Evan Phoenix VM Melbourne Bytecode
Программа, которая транслирует код программы на Ruby, например: puts  123 в эффективный машинный код с последующим его исполнением: push %rbp; mov %rsp, %rbp;  push %rbx; subq $0x98, %rsp;  cmp $0x0, 0x10(%rcx);  call 0xffffffffff472010;  jmp 0x9c; Rubinius это:
Имплементация языка программирования Ruby Rubinius это:
Нормально ли, что Rubinius написан на Ruby? ,[object Object],[object Object],[object Object]
Нормально ли, что Rubinius написан на Ruby? static  VALUE  rb_ary_collect (ary)‏ VALUE ary; { long  i; VALUE collect; if  (!rb_block_given_p()) {   return  rb_ary_new4(RARRAY(ary)->len, RARRAY(ary)->ptr); } collect = rb_ary_new2(RARRAY(ary)->len); for  (i = 0; i < RARRAY(ary)->len; i++) {   rb_ary_push(collect, rb_yield(RARRAY(ary)->ptr[i])); } return  collect; }
Нормально ли, что Rubinius написан на Ruby? module  Enumerable def   collect if   block_given? ary  =  [] each { |o| ary  <<   yield (o) } ary else to_a end end alias_method  :map, :collect end
Почему Rubinius?
Почему Ruby?
Потому, что Ruby: ,[object Object],[object Object],[object Object]
...но при этом Ruby  медленный
Одна из целей проекта Rubinius - сделать Ruby  быстрым
История Rubinius Старт проекта Engine Yard нанимает  Эвана Команда расширяется Запуск Rails VM на C++ stackfull бренч мержится в master JIT Повторный запуск Rails
Преимущества Rubinius ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Сборщик мусора ,[object Object],[object Object]
Стадии компилятора байткода .rb файл Node дерево sexps AST bytecode
Результат компилятора байткода def foo(a,b)‏ a + b end 0000:  push_local                 0    # a 0002:  push_local                 1    # b 0004:  meta_send_op_plus          :+ 0006:  ret
Стадии JIT bytecode LLVM IR машинный код
Входящий Ruby-код для JIT class  Flower def   bloom ( * a)‏ a end end
JIT – результат преобразования 0x2280010 sub $0xc, %esp 0x2280013 mov 0x1c(%esp), %eax 0x2280017 mov %eax, 0x4(%esp)‏ 0x228001b mov 0x10(%esp), %eax 0x228001f mov %eax, (%esp)‏ 0x2280022 mov $0x0, 0x8(%esp)‏ 0x228002a call 0xfffffffffde9d640 ; 0x11d650 rbx_construct_splat 0x228002f add $0xc, %esp 0x2280032 ret
Дальнейшая оптимизация: Method Inlining
Примитивы ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Backtrace ,[object Object],bin/rbx z.rb   Coercion error: 1.to_str => String failed (TypeError)‏ Backtrace: Type.coerce_to at kernel/common/type.rb:22 Kernel(String)#StringValue at kernel/common/kernel.rb:112 String#+ at kernel/common/string.rb:78 main.__script__ at z.rb:1 Rubinius::CodeLoader#load_script at kernel/delta/codeloader.rb:65 Rubinius::CodeLoader.load_script at kernel/delta/codeloader.rb:88 Rubinius::Loader#script at kernel/loader.rb:435 Rubinius::Loader#main at kernel/loader.rb:526 Rubinius::Loader.main at kernel/loader.rb:552 Object#__script__ at kernel/loader.rb:564 ruby z.rb z.rb:1:in `+': can't convert Fixnum into String (TypeError)‏ from z.rb:1
Плагины компилятора # -*- array_zen -*- q  =   + [ x ** 2 , x.in([1,2,3])] p q  # => [1, 4, 9]
Тестирование языка программирования ,[object Object],[object Object],describe  &quot;Array#shift&quot;   do it  &quot;removes and returns the first element&quot;   do a  =  [5, 1, 1, 5, 4] a.shift.should  ==  5 end it  &quot;returns nil when the array is empty&quot;   do [].shift.should  ==   nil end end
Проблемы с Rubinius: ,[object Object],[object Object],[object Object],[object Object],[object Object]
Пример «багов»: ,[object Object],[object Object],[object Object],[object Object]
Планы по развитию: ,[object Object],[object Object],[object Object],[object Object]
Бенчмарки rubinius 1.0.0 (1.8.7 e6c32afd 2010-05-14 JI)‏ ruby 1.9.2dev (2010-04-14 trunk 27342)‏ ruby 1.8.7 (2010-01-10 patchlevel 249)‏ jruby 1.6.0.dev (ruby 1.8.7 patchlevel 249) (2010-04-14 7cb1298)‏ MacRuby version 0.6 (ruby 1.9.0)‏
Рекурсия def   fib (n)‏ if  (n  <  2)‏ n else fib(n - 1)  +  fib(n - 2)‏ end end
Рекурсия
Хеш функция def   foo hash  =  {} 100.times {|i| hash[i]  =  0} end
Хеш функция
Простое Rails приложение ,[object Object],[object Object],[object Object],[object Object]
Простое Rails приложение
А ты стал контрибутором Rubinius?

Contenu connexe

Tendances

Cборка мусора в Java без пауз (HighLoad++ 2013)
Cборка мусора в Java без пауз  (HighLoad++ 2013)Cборка мусора в Java без пауз  (HighLoad++ 2013)
Cборка мусора в Java без пауз (HighLoad++ 2013)aragozin
 
Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)Ontico
 
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и JavascriptСергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и JavascriptSergey Platonov
 
SWIFT нужен ли он вам?
SWIFT нужен ли он вам?SWIFT нужен ли он вам?
SWIFT нужен ли он вам?Improve Group
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Mikhail Kurnosov
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Platonov Sergey
 
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The BeastAlexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The BeastAlexander Dymo
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...SQALab
 
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...corehard_by
 
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)Ontico
 
мониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBAмониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBASlach
 
Sampling profiling
Sampling profilingSampling profiling
Sampling profilingSlach
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language RuntimeGetDev.NET
 
JPHP - О проекте на простом языке
JPHP - О проекте на простом языкеJPHP - О проекте на простом языке
JPHP - О проекте на простом языкеDmitry Zaytsev
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
Михаил Корепанов — Profiler
Михаил Корепанов — ProfilerМихаил Корепанов — Profiler
Михаил Корепанов — ProfilerYandex
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, BadooOntico
 
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Ontico
 
Top10 доводов против языка Ruby
Top10 доводов против языка RubyTop10 доводов против языка Ruby
Top10 доводов против языка Rubyguest5f907e
 

Tendances (20)

Cборка мусора в Java без пауз (HighLoad++ 2013)
Cборка мусора в Java без пауз  (HighLoad++ 2013)Cборка мусора в Java без пауз  (HighLoad++ 2013)
Cборка мусора в Java без пауз (HighLoad++ 2013)
 
Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)
 
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и JavascriptСергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
 
SWIFT нужен ли он вам?
SWIFT нужен ли он вам?SWIFT нужен ли он вам?
SWIFT нужен ли он вам?
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
 
Python и Cython
Python и CythonPython и Cython
Python и Cython
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
 
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The BeastAlexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
 
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
 
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
 
мониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBAмониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBA
 
Sampling profiling
Sampling profilingSampling profiling
Sampling profiling
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language Runtime
 
JPHP - О проекте на простом языке
JPHP - О проекте на простом языкеJPHP - О проекте на простом языке
JPHP - О проекте на простом языке
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
Михаил Корепанов — Profiler
Михаил Корепанов — ProfilerМихаил Корепанов — Profiler
Михаил Корепанов — Profiler
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, Badoo
 
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
 
Top10 доводов против языка Ruby
Top10 доводов против языка RubyTop10 доводов против языка Ruby
Top10 доводов против языка Ruby
 

En vedette

Nastachku slideshttp://www.slideshare.net/squadette/2012-45697461
Nastachku slideshttp://www.slideshare.net/squadette/2012-45697461Nastachku slideshttp://www.slideshare.net/squadette/2012-45697461
Nastachku slideshttp://www.slideshare.net/squadette/2012-45697461Alexey Mahotkin
 
Алан Милц - семинар по финансовому потоку
Алан Милц - семинар по финансовому потокуАлан Милц - семинар по финансовому потоку
Алан Милц - семинар по финансовому потокуAndrew Artishchev
 
Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.Vadim Kruchkov
 
Beyond Ruby (RubyConf Argentina 2011)
Beyond Ruby (RubyConf Argentina 2011)Beyond Ruby (RubyConf Argentina 2011)
Beyond Ruby (RubyConf Argentina 2011)Konstantin Haase
 
Amplifr deck as it was june 2013
Amplifr deck as it was june 2013Amplifr deck as it was june 2013
Amplifr deck as it was june 2013Nate Gadgibalaev
 

En vedette (7)

Nastachku slideshttp://www.slideshare.net/squadette/2012-45697461
Nastachku slideshttp://www.slideshare.net/squadette/2012-45697461Nastachku slideshttp://www.slideshare.net/squadette/2012-45697461
Nastachku slideshttp://www.slideshare.net/squadette/2012-45697461
 
Алан Милц - семинар по финансовому потоку
Алан Милц - семинар по финансовому потокуАлан Милц - семинар по финансовому потоку
Алан Милц - семинар по финансовому потоку
 
О ThinkWith.Me за 2 минуты
О ThinkWith.Me за 2 минутыО ThinkWith.Me за 2 минуты
О ThinkWith.Me за 2 минуты
 
Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.
 
Beyond Ruby (RubyConf Argentina 2011)
Beyond Ruby (RubyConf Argentina 2011)Beyond Ruby (RubyConf Argentina 2011)
Beyond Ruby (RubyConf Argentina 2011)
 
About downloads
About downloadsAbout downloads
About downloads
 
Amplifr deck as it was june 2013
Amplifr deck as it was june 2013Amplifr deck as it was june 2013
Amplifr deck as it was june 2013
 

Similaire à Rubinius: Ruby написанный на Ruby

Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?Pavel Tsukanov
 
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.HappyDev-lite
 
CodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали ГрупонCodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали ГрупонCodeFest
 
Подружили CLR и JVM в Project Rider
Подружили CLR и JVM в Project RiderПодружили CLR и JVM в Project Rider
Подружили CLR и JVM в Project RiderAndrey Akinshin
 
Андрей Акиньшин
Андрей АкиньшинАндрей Акиньшин
Андрей АкиньшинCodeFest
 
Поиск уязвимостей с использованием статического анализа кода
Поиск уязвимостей с использованием статического анализа кодаПоиск уязвимостей с использованием статического анализа кода
Поиск уязвимостей с использованием статического анализа кодаAndrey Karpov
 
Поиск уязвимостей с использованием статического анализа кода
Поиск уязвимостей с использованием статического анализа кодаПоиск уязвимостей с использованием статического анализа кода
Поиск уязвимостей с использованием статического анализа кодаcorehard_by
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовOlesya_V
 
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPITimur Shemsedinov
 
"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)
"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)
"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)AvitoTech
 
Scripting languages
Scripting languagesScripting languages
Scripting languagesLev Panov
 
Знакомство с WebAssembly
Знакомство с WebAssemblyЗнакомство с WebAssembly
Знакомство с WebAssemblyNikita Zimin
 
Эффективный C++
Эффективный C++Эффективный C++
Эффективный C++Andrey Karpov
 
GitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesGitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesVictor Login
 

Similaire à Rubinius: Ruby написанный на Ruby (20)

Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?
 
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
 
Enter: legacy code
Enter: legacy codeEnter: legacy code
Enter: legacy code
 
CodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали ГрупонCodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали Групон
 
Подружили CLR и JVM в Project Rider
Подружили CLR и JVM в Project RiderПодружили CLR и JVM в Project Rider
Подружили CLR и JVM в Project Rider
 
Андрей Акиньшин
Андрей АкиньшинАндрей Акиньшин
Андрей Акиньшин
 
Первые страницы на Ruby on Rails
Первые страницы на Ruby on Rails Первые страницы на Ruby on Rails
Первые страницы на Ruby on Rails
 
Поиск уязвимостей с использованием статического анализа кода
Поиск уязвимостей с использованием статического анализа кодаПоиск уязвимостей с использованием статического анализа кода
Поиск уязвимостей с использованием статического анализа кода
 
Поиск уязвимостей с использованием статического анализа кода
Поиск уязвимостей с использованием статического анализа кодаПоиск уязвимостей с использованием статического анализа кода
Поиск уязвимостей с использованием статического анализа кода
 
Rails for dummies
Rails for dummiesRails for dummies
Rails for dummies
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектов
 
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
JavaScript Intro
JavaScript IntroJavaScript Intro
JavaScript Intro
 
python vs ruby
python vs rubypython vs ruby
python vs ruby
 
"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)
"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)
"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)
 
Scripting languages
Scripting languagesScripting languages
Scripting languages
 
Знакомство с WebAssembly
Знакомство с WebAssemblyЗнакомство с WebAssembly
Знакомство с WebAssembly
 
Эффективный C++
Эффективный C++Эффективный C++
Эффективный C++
 
GitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesGitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с Kubernetes
 

Rubinius: Ruby написанный на Ruby