LINUX.ORG.RU
 

Rubinius 1.0


0

0

После трех с половиной лет разработки вышла первая мажорная версия Rubinius — альтернативной реализации языка Ruby.

Мотив проекта — использование ruby для разработки транслятора настолько, насколько это возможно.

Основные свойства:

  • VM. Изначально Rubinius использовал архитектуру, идентичную Smalltalk-80, теперь VM написана на C++ с использованием LLVM
  • Компилятор ruby на ruby
  • Поколенческий (generational) сборщик мусора
  • Libev (epoll, kqueue) для IO
  • Акторы и Каналы как одно из средств конкурентности
  • Совместимость с дефолтным C-API MRI (большинство расширений ruby могут работать сразу, хотя есть и исключения)
  • FFI, совместимый с MRI и JRuby
  • Отсутствие сколько-нибудь вменяемой документации

Rubinius включает в себя rubygems и позволяет использовать большинство библиотек и фреймворков (Sinatra, Rails, Rails-3, etc).

Несмотря на наличие JIT, хорошего GC и IO через libev, надеяться на серьезную разницу в общей производительности по сравнению с MRI 1.8.7 все еще не стоит.

По старой доброй традиции pkunzip.zip, чтобы собрать Rubinius нужен ruby-1.8.7.

>>> Подробности


[#]  

Чем он лучше php или java ?

()
[#] Ответ на: комментарий от INFOMAN 15.05.2010 1:14:58  

Ну может есть какое-то техническое превосходство в языке Ruby ?

()
[#]  
Mystra_x64

>Основные свойства:
>Отсутствие сколько-нибудь вменяемой документации


:}

***** ()
[#]  
LMW

> Мажорная версия

Для мажоров?

* ()
[#]  
dotbg

преимущества б описать относительно ruby. пока непонятно

*** ()
[#] Ответ на: комментарий от gamecoder 15.05.2010 0:01:01  

Тормозит сильнее php, память жрет больше java

anonymous ()
[#] Ответ на: комментарий от LMW 15.05.2010 11:22:43  

Когда же вы передохните уже

()
[#] Ответ на: комментарий от dotbg 15.05.2010 11:33:03  
>>-----Цитата---->>

преимущества б описать относительно ruby. пока непонятно

<<-----Цитата----<<

JIT же, также легче разрабатывать, поскольку большая часть написана на самом Руби. Но PyPy всё равно существенно совершеннее.

*** ()
[#]  
ikm

> Мотив проекта — использование ruby для разработки транслятора настолько, насколько это возможно.

Что означает этот шифр? Штирлиц этажом выше :)

** ()
[#]  

а ruby разве не сдох ещё? надо же.

anonymous ()
[#]  

> надеяться на серьезную разницу в общей производительности по сравнению с MRI 1.8.7 все еще не стоит.

чокада ждать уже?

* ()
[#] Ответ на: комментарий от libre 15.05.2010 12:20:18  
LMW

Не дождешься, пацанчик.

* ()
[#]  
annulen

>Отсутствие сколько-нибудь вменяемой документации

зачот!

** ()
[#] Ответ на: комментарий от libre 15.05.2010 12:20:18  

Ви, простите, настоящий мажор что ли?

anonymous ()
[#] Ответ на: комментарий от anonymous 15.05.2010 18:38:56  

Послушай, малыш, я лишь раздражен идиотской попыткой пошутить вот и все.

()
[#]  
eveel

Всего лишь новость о хорошем проекте на замечательном языке Ruby может вызвать анальные ожоги у любителей писона и похапэ.

** ()
[#] Ответ на: комментарий от gamecoder 15.05.2010 0:01:01  
franchukroman

>Чем он лучше php или java ?
Тем, что намного продуманнее чем ПХП и, в отличии от Java, является полностью православным. И еще одно отличие от Java: он еще не убил себя ап стену.

** ()
[#] Ответ на: комментарий от eveel 15.05.2010 20:29:54  
>>-----Цитата---->>

Всего лишь новость о хорошем проекте на замечательном языке Ruby может вызвать анальные ожоги у любителей писона и похапэ.

<<-----Цитата----<<

А у вас что, неудовлетворённое самолюбие взыграло? Я вот не против Руби, но считаю, что Питон практичнее и удобнее. Плюс он быстрее и под него есть множество прекрасных модулей, как numpy. Но при этом я желаю Руби удачи.

*** ()
[#]  

>Компилятор ruby на ruby
>По старой доброй традиции pkunzip.zip, чтобы собрать Rubinius нужен ruby-1.8.7.

Водяная вода.

* ()
[#]  

Сколько лет ждал этого релиза. Тем временем ребята из rubinius игрались, меняя VM как перчатки. Сначала пилили смолток-80 для руби, теперь у них какие-то s-выражения в голове. Хорошо хоть давно задуманный ими Risp не сделали.

В итоге 1.0, а особой какой-то радости нет. JIT, а производительности не чувствуется, GC как в Java, но и памяти кушает как-то много. Может быть потом, как документацию напишут нормальную, люди начнут использовать и т.д.

Зато можно взять rubinius за основу своей реализации руби и не парится с написанием базовых вещей с нуля.

** ()
[#] Ответ на: комментарий от Vudod 15.05.2010 20:57:23  

>Плюс он быстрее и под него есть множество прекрасных модулей, как numpy.

Numpy еще не повод писать все на питоне) /me делал два проекта, где использовал приложения и библиотеки на numpy в RoR - так удобнее было.

Ну а насчет быстрее, я тут тебя не буду разочаровывать) Другое дело, что нередко в питоне библиотеки ведут себя корректнее. Взять модуль threading - интерфейс жуть жутью по сравнению с рубивским, аж плакать хочется(пока не привыкнешь, да), но ведь работает потом как надо, а руби бывает на время провисает, когда создаешь много тредов для например параллельного io ( в 1.9.2 слава б-гу починили ). Я о том, что сколько ж можно талдычить о "быстрее", когда основные проблемы совсем не в этом.

** ()
[#] Ответ на: комментарий от volh 15.05.2010 21:58:49  

Насколько я знаю, его спонсировали Engine Yard. И значит он должен будет заменить MRI и RubyEE на их хостинге. Ну не делали его форфат, уверен на сто процентов. Версию 1.0 выкинули что больше тестеров было как всегда, параллельно будут мутить оптимизацию.

> Зато можно взять rubinius за основу своей реализации руби и не парится с написанием базовых вещей с нуля.

А это нахера вообще?

()
[#] Ответ на: комментарий от libre 15.05.2010 23:10:01  

>И значит он должен будет заменить MRI и RubyEE на их хостинге.

That was the idea. Но получился пока только кадавр.

>Версию 1.0 выкинули что больше тестеров было как всегда, параллельно будут мутить оптимизацию.


Они эту оптимизацию мутят из года в год, а потом все нафиг переписывают. Может хоть сейчас остановятся.

>А это нахера вообще?


А нахера вообще новые языки? А может будем юзать MRI-1.8.6, зачем нам что-то еще?

** ()
[#] Ответ на: комментарий от volh 15.05.2010 23:40:28  

Так языки или еще один руби?

()
[#] Ответ на: комментарий от franchukroman 15.05.2010 20:33:08  

Так чем же КОНКРЕТНО он продуманнее ПХП ?

()
[#] Ответ на: комментарий от volh 15.05.2010 23:40:28  

> Они эту оптимизацию мутят из года в год, а потом все нафиг переписывают. Может хоть сейчас остановятся.

Не, пусть продолжают. Этому миру нужно больше полурабочих VM для Руби.

***** ()
[#] Ответ на: комментарий от gamecoder 15.05.2010 23:52:38  
svr69

А пых вообще хоть насколько-нибудь продуман? Если да, соблаговолите раскрыть мысль.

** ()
[#] Ответ на: комментарий от eveel 15.05.2010 20:29:54  

> Всего лишь новость о хорошем проекте на замечательном языке Ruby может вызвать анальные ожоги у любителей писона и похапэ.

Руби и Питон — как бы из одной песочницы, откуда могут быть ожоги-то?

()
[#] Ответ на: комментарий от dens-dens-dens 16.05.2010 0:41:36  

Пайтон абсолютно не педантичный язык и у его адептов напрочь отсутствует чувство стиля. Иногда из-за разных стилей кодирования не понятно, вызывается ли конструктор класса или это вызов функции. Это я об именах функций в стиле foo_bar, fooBar, FooBar и foobar; последний вариант вообще кошмарен, как можно записывать несколько слов без какого-либо разделителя. Кошмар. Тоже самое про имена модулей. Вобщем это зоопарк какой-то.

А в питоне есть такая штука http://gembundler.com/? Вот что я называю поистине блестящим инструментом.

()
[#] Ответ на: комментарий от libre 16.05.2010 0:52:20  

> Пайтон абсолютно не педантичный язык и у его адептов напрочь отсутствует чувство стиля. Иногда из-за разных стилей кодирования не понятно, вызывается ли конструктор класса или это вызов функции. Это я об именах функций в стиле foo_bar, fooBar, FooBar и foobar

Уровень претензий выдает знатока.

***** ()
[#] Ответ на: комментарий от tailgunner 16.05.2010 1:09:54  

Значит возражений нет.

()
[#] Ответ на: комментарий от libre 16.05.2010 1:29:11  

> Значит возражений нет.

Возражать не на что. Но, кстати, в Py3 имена модулей почистили.

***** ()
[#] Ответ на: комментарий от libre 16.05.2010 0:52:20  

>А в питоне есть такая штука http://gembundler.com/? Вот что я называю поистине блестящим инструментом.

Ты бы постеснялся. В питоне virtualenv уже давно есть. Я надеялся люди просто починят некоторые узкие места и баги rubygems, а не будут пилить аналогичный костыль. Но нет, лучше сделать новый "блестящий инструмент" и разрекламировать его как лекарство от рака..

** ()
[#] Ответ на: комментарий от tailgunner 15.05.2010 23:53:18  

>Не, пусть продолжают. Этому миру нужно больше полурабочих VM для Руби.

VM там как раз полностью рабочая и стабильная, первый релиз дает надежду что никаких breaking changes не будет. Но все равно, для чего?

** ()
[#] Ответ на: комментарий от libre 16.05.2010 0:52:20  

> Пайтон абсолютно не педантичный язык и у его адептов напрочь отсутствует чувство стиля

Ой да ладно, в Питоне есть хоть какая-то унификация стиля на уровне языка, в Руби же в каждой библиотеке виднеются Разлагающиеся Щупальцы Перла и не то что разнообразие стиля, а его полное отсутствие.

> Иногда из-за разных стилей кодирования не понятно, вызывается ли конструктор класса или это вызов функции


Читай документацию к либе, перед тем, как ей пользоваться

> Вобщем это зоопарк какой-то.


В Питоне зоопарк есть, но в Руби он несравненно больше

> Вот что я называю поистине блестящим инструментом


Это поистине блестящий на солнце костыль

()
[#] Ответ на: комментарий от dens-dens-dens 16.05.2010 6:20:34  

>в Руби же в каждой библиотеке виднеются Разлагающиеся Щупальцы Перла и не то что разнообразие стиля, а его полное отсутствие.

несколько лет не видел чего-то откровенно убогого, а тем более этих самых щупальцев. ссылки бы не помешали.

** ()
[#] Ответ на: комментарий от volh 15.05.2010 22:14:54  
>>-----Цитата---->>

Numpy еще не повод писать все на питоне)

<<-----Цитата----<<

Ну если вы не боитесь непонятно откуда берущихся новых багов --- то таки да. Numpy заточен на Питон и там его применение выглядит естественно.

>>-----Цитата---->>

Ну а насчет быстрее, я тут тебя не буду разочаровывать)

<<-----Цитата----<<

Можешь начинать, я жду. Заодно определись, какой Руби возьмём --- 1.8.7 или 1.9.2 --- и какой Питон. Пока что все вменяемые тесты говорят об обратном.

>>-----Цитата---->>

Взять модуль threading - интерфейс жуть жутью по сравнению с рубивским

<<-----Цитата----<<

Использую multiprocessing регулярно для параллельных вычислений. Интерфейс практически тот же. Он действительно не интуитивно понятный, но достаточно простой. Даже нет необходимости наследоваться от базисного класса. Всё просто: положил данные в специальную очередь, создал процесс, указав исполняемую функцию, запустил, дождался завершения, забрал данные.

*** ()
[#]  

Я тут прочитал что PyPy хотя и не поддерживает сишные расширения cpython, зато во многом его опережает, а speed.pypy.org взял и лег :/

В остальном получается, что они с рубиниусом близнецы-братья?

** ()
[#] Ответ на: комментарий от gamecoder 15.05.2010 23:52:38  
franchukroman

ПХП это набор слабо связаных между собой костылей, очень нестрогий и как следствие быдлокодерский язык.

** ()
[#] Ответ на: комментарий от volh 16.05.2010 10:42:52  

> Я тут прочитал что PyPy хотя и не поддерживает сишные расширения cpython

Уже поддерживает. Не все и не без проблем, но эту область пилят интенсивно.

> В остальном получается, что они с рубиниусом близнецы-братья?

Нет. Рубиниус по сравнению с PyPy - это как кукла на ниточках по сравнению с Терминатором.

***** ()
[#] Ответ на: комментарий от tailgunner 16.05.2010 11:45:25  

Ну так расскажи отличия.

** ()
[#] Ответ на: комментарий от volh 16.05.2010 12:17:46  

> Ну так расскажи отличия.

PyPy за пределами моего пониания - слишком хитрая вещь. Если интересно, то на http://codespeak.net/pypy/dist/pypy/doc/ есть куча документации и статей.

***** ()
[#]  

> производительности по сравнению с MRI 1.8.7

а по сравнению с 1.9.x как? неужели тормознее?

P.S. wtf is MRI? Matz Ruby Interpreter?

**** ()
[#] Ответ на: комментарий от dmiceman 16.05.2010 12:35:25  

>а по сравнению с 1.9.x как? неужели тормознее?

В основном. Хотя вот если взять какие-нибудь тесты с shootout, то все очень неоднозначно. У меня пока времени нет поиграться, попересобирать с разными опциями и т.д.

Вряд ли это показатель, но если интересно:

benchmarks >> time ruby nbody.rb 100000
-0.169075164
-0.169079859
ruby nbody.rb 100000 20.82s user 0.26s system 89% cpu 23.607 total
benchmarks >> rvm use 1.9.2-head
Using ruby 1.9.2 head
benchmarks >> time ruby nbody.rb 100000
-0.169075164
-0.169079859
ruby nbody.rb 100000 7.29s user 0.03s system 88% cpu 8.284 total
benchmarks >> rvm use 1.8.7-head
Using ruby 1.8.7 head
benchmarks >> time ruby nbody.rb 100000
-0.169075164
-0.169079859
ruby nbody.rb 100000 15.41s user 0.08s system 90% cpu 17.039 total
benchmarks >> time ~/download_queue/rubinius-1.0.0/bin/rbx nbody.rb 100000
-0.169075164
-0.169079859
~/download_queue/rubinius-1.0.0/bin/rbx nbody.rb 100000 11.57s user 0.09s system 86% cpu 13.504 total

Ну и на всякий случай:

benchmarks >> time python nbody.py 100000
-0.169075164
-0.169079859
python nbody.py 100000 7.29s user 0.01s system 86% cpu 8.480 total


Знаю только что в EngineYard, где собственно его разрабатывают, специально пилят его для третьих рельс, на которых он в некоторых местах уже показывает очень хорошую производительность ( и главное - предсказуемое использование памяти ).

>P.S. wtf is MRI? Matz Ruby Interpreter?

yep.

** ()
[#]  

Чем оно лучше qmmp?

Собственно сабж.

ЗЫ. капча stiling (4.5.22) кагбэ намкаэ...

anonymous ()
[#] Ответ на: комментарий от volh 16.05.2010 12:55:02  
theos

benchmarks >> time python nbody.py 100000 -0.169075164 -0.169079859

benchmarks >> time ruby nbody.rb 100000 -0.169075164 -0.169079859

Как то поразительно до миллиардных совпадает, что-то тут точно не то.

*** ()