Me gusta.
Zapowiada się bardzo apetycznie. Nie ma nic lepszego niż zburzenie zakurzonego status quo. Tzw. “media społecznościowe” już buzują od dyskusji na temat tego projektu.
Osobom, które porównują wydajność Topaz z innymi implementacjami, polecam serdecznie lekturę http://blog.headius.com/2012/10/so-you-want-to-optimize-ruby.html
Łatwo mieć czterokrotnie wyższą wydajność mając zaledwie 95% ficzerów, bez tych kluczowych dla spadku wydajności i zwyczajnie trudnych pięciu procent.
Ale oczywiście trzymam kciuki.
Rubinius miał n-krotnie niższą wydajność też nie posiadajać większości ficzerów (a to było jeszcze w czasach porównywania z 1.8.X, shotgun zdajesie).
Topaz wykorzystuje VM napisany w RPythonie, a z tego co mówi Fijal RPython niszczy C w tym zastosowaniu, wątpie aby te dodatkowe ficzery miało diametralnie pogorszyć wydajność. Spekuluje że Topaz po przejściu 99% ruby spec będzie mógł śmiało stanąć pomiędzy jRuby a RBX będąc miejscami szybszym od obu implemnetacji. (Edit: w zasadzie jest już odrazu szybsze od jRuby)
Quick’n’dirty neural net bench z repo Topaz’a odpalony lokalnie:
Topaz: 20s
jRuby: 50s
Rubinius: 1m:25s
MRI 1.9.3: 2m:27s
MRI 1.8.7: 5m:23s
Benchmark porównuje jabłka z gruszkami bo Topaz to nie jest jeszcze Ruby. Nie udało mi się jeszcze odpalić mspec’a na rubyspec ale wątpię, że Topaz przechodzi nawet 10% wszystkich spec’ów, zaimplementowane są podstawowe klasy (Object, Fixnum, trochę Array/Enumerable) więc do 95% jeszcze bardzo długa przed nim. Rubinius obsługuje większość dobrze napisanych c-extensions, Topaz w ogóle nie planuje tego (tylko FFI). Taka kompatybilność spowalnia VM. Nie ma wątków, Encodings i mnóstwa innych rzeczy, które są w Ruby. Pomimo, tego, myślę, że Alex i spółka zrobili imponującą rzecz w tak krótkim okresie czasu (kilka(naście) miesięcy?) (głównie dzięki temu, że całe zaplecze (metainterpreter, JIT, GC) zostało przygotowane podczas pracy nad PyPy). Zapowiada się b. ciekawie i warto go obserwować (czy nawet uczestniczych jak ktoś lubi Pythona + Ruby).
Z ciekawości zajrzałem do Travisa:
Topaz:
65 files, 317 examples, 598 expectations, 0 failures, 0 errors
Rubinius:
3919 files, 22943 examples, 158032 expectations, 0 failures, 0 errors
Na chwilę obecną Topaz to Ruby w 1%