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.

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

★★

Проверено: Aceler ()

Ответ на: комментарий от INFOMAN

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

gamecoder ()

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

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


:}

Deleted ()

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

Для мажоров?

LMW ()

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

dotbg ★★★★ ()
Ответ на: комментарий от gamecoder

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

anonymous ()
Ответ на: комментарий от dotbg

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

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

Vudod ★★★★★ ()

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

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

ikm ★★ ()

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

anonymous ()

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

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

bobrik ()

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

зачот!

annulen ★★★★★ ()
Ответ на: комментарий от libre

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

anonymous ()
Ответ на: комментарий от anonymous

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

libre ()

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

eveel ★★ ()
Ответ на: комментарий от gamecoder

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

Deleted ()
Ответ на: комментарий от eveel

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

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

Vudod ★★★★★ ()

Компилятор ruby на ruby

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


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

yaws ()

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

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

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

volh ★★ ()
Ответ на: комментарий от Vudod

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

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

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

volh ★★ ()
Ответ на: комментарий от volh

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

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

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

libre ()
Ответ на: комментарий от libre

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

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

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


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

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


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

volh ★★ ()
Ответ на: комментарий от volh

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

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

tailgunner ★★★★★ ()
Ответ на: комментарий от gamecoder

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

svr69 ★★ ()
Ответ на: комментарий от eveel

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

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

dens-dens-dens ()
Ответ на: комментарий от dens-dens-dens

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

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

libre ()
Ответ на: комментарий от libre

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

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

tailgunner ★★★★★ ()
Ответ на: комментарий от libre

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

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

tailgunner ★★★★★ ()
Ответ на: комментарий от libre

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

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

volh ★★ ()
Ответ на: комментарий от tailgunner

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

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

volh ★★ ()
Ответ на: комментарий от libre

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

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

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


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

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


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

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


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

dens-dens-dens ()
Ответ на: комментарий от dens-dens-dens

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

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

volh ★★ ()
Ответ на: комментарий от volh

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

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

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

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

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

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

Vudod ★★★★★ ()

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

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

volh ★★ ()
Ответ на: комментарий от gamecoder

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

Deleted ()
Ответ на: комментарий от volh

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

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

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

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

tailgunner ★★★★★ ()

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

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

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

dmiceman ★★★★★ ()
Ответ на: комментарий от dmiceman

а по сравнению с 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.

volh ★★ ()

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

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

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

anonymous ()
Ответ на: комментарий от volh

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

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

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

theos ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.