После 8 месяцев разработки состоялся (https://mruby.org/releases/2018/12/11/mruby-2.0.0-released.html) релиз mruby 2.0 (https://mruby.org/), встраиваемого интерпретатора динамического объектно-ориентированного языка программирования Ruby. Mruby обеспечивает совместимость синтаксиса на уровне Ruby 1.9, но также поддерживает отдельные возможности из более новых версий. Интерпретатор отличается низким потреблением памяти и возможностью встраивания в другие приложения. Кроме того, поддерживается компиляция Ruby-программ в байткод при помощи развиваемого проектом компилятора "mrbc" и преобразование полученнего байткода в код на языке Си. Код mruby распространяется (https://github.com/mruby/mruby) под лицензией MIT.
Новый выпуск включает улучшения совместимости с Ruby 2.x и оптимизацию потребления памяти. Основные новшества:
- Реализованы именованные аргументы (keyword arguments);
- Реализована деконструкция аргументов;
- В mruby-kernel-ext добавлен метод Kernel#then для Kernel#yield_self (совместим с Ruby 2.6);
- В mruby-array-ext для обеспечения совместимости с Ruby 2.6 добавлена возможность вызова Array#to_h в блоках и реализован метод Array#union;- В mruby-string-ext добавлена возможность вызова String#lines в блоках и добавлены методы String#tr, String#tr!, String#tr_s, String#tr_s!, String#squeeze, String#squeeze!, String#count, String#delete, String#delete;
- В ruby-pack добавлен метод String#unpack1
- Уменьшено потребление памяти. Появился новый формат байткода.URL: https://mruby.org/releases/2018/12/11/mruby-2.0.0-released.html
Новость: https://www.opennet.me/opennews/art.shtml?num=49765
Матц - молодец, отдал "большой" Руби хипстерам на растерзание - как гламурную пускалку для Рельсов, и сделал здоровый форк.Вот только беспокоит, в mruby только базовые классы? А как же всё многообразие прикладных библиотек (типа GUI и БД)?
Подключается стандартным образом, надо только в окружение подкладывать.
Это он сам у себя спрашивал как на сабже РОР заюзать ...
> Матц - молодец, отдал "большой" Руби хипстерам на растерзаниеРубисты - кинтэссенция хипстеров.
Кто же тогда все эти фронтендеры-джаваскриптмакаки?
Топливо биореактора.
э, слыш
> Кроме того, поддерживается компиляция Ruby-программ в байткод при помощи развиваемого проектом компилятора "mrbc" и преобразование полученнего байткода в код на языке Си.Идут на все, что угодно кроме развития ЯП Си и использования уже существующего LLVM.
А так проект не плох.
Наверное, потому что для какого-то развития C нужно договориться с целой толпой людей из комитета, сделать так, чтобы новая фича ничего совместимого не рушила и при этом нравилась большей части человеков в интернете? Проще интерпретатор Ruby написать, чесслово.
А почему какой-нибудь gcc просто делает расширения, как им удобно? А некоторые потом даже стандартизируют, если народу понравилось.
> А почему какой-нибудь gcc просто делает расширения, как им удобно?
> А некоторые потом даже стандартизируют, если народу понравилось.А наверное потому что они делают один из (а кое-где и самый) используемый компилер в мире и могут делать как им удобно, не? Ведь даже второй крупный компилер - шланг, вынужден был повторять все расширения и поддерживать совместимость, чтобы не остаться маргинальным компилятором для ябло-загончика.
А вообще, говорить в контексте gcc о "каком-то" - лучший способ продемонтсрировать "квалификацию" ))
И то, стандартизуют потом только сильно некоторые фичи.
Или ви таки нам расскажите, что тот же cleanup атрибут толком никому не сдался и "нинужен!"?
Clang'и вообще приколюги. Рылся как-то среди ключей компиля, наткнулся на ключи для совмести с msvc и даже для поддержки конкрукций C++ Builder'а (всякие местные события, да свойства). С msvc было как-то даже местами ожидаемо, но вот поддержка C++ Builder'а удивила. Если бы был популярнее, думаю можн было бы ожидать порта VCL на линукс.
Мелкососок это не останавливает от слова никак. Да и в гцц со шлангом свои расширения.
Не надо развивать Си. Для развития и прогресса есть куча других языков.
устроить бы гонки на прокаченной сельхозтехнике, как в американских деревнях принято:mrbc vs python-nuitka
Получится сравнение теплого с мягким. mruby это проект Мацумото по реализации Руби с минимальным футпринтом для использования во всякой эмбедовке и для подключения к другому софту например для написания плагинов.Она раз в 10 уступает по производительности мейнстримовому руби.
более точным было бы сравнение mrbc с pyston, но последний загнулсяно вообще я надеялся, что кастрированный руби быстрее обычного
Не во всех задачах он тормоз, но таки да. Я так понял, его основная задача — работать в условиях сильно ограниченной памяти.
Ну так если сравнить dd из busybox и dd из GNU coreutils то тоже не будет никакой разницы, поскольку все упрется в I/O.
Мацумото во времена 1.9, когда на RoR слетелось много разрабов, которые запилили виртуальную машину, GC и прочее чтобы ускорить рельсы, которые тогда крутились в Твиттере и Гитхабе, понял что его студенческий хобби проект зашел слишком далеко, а в виртуальных машинах он не шарит.
Тогда он сделал свой новый проект, так сказать back to the roots, но остался добровольным пожизненным диктатором Руби под апплодисменты комьюнити.
В итоге, я надеюсь, Ruby когда-нибудь заменит LUA на тех задачах, где не нужна суперпроизводительность, было бы круто если бы nginx его бы подрубили, например.
В mruby тоже VM если что в отличии от mri 1.8.7. И mruby давно подрубилм к nginx. Ну и он не тормозит если у сравнивать с lua. У lua есть luajit вот он реакьивная торпеда.
Ну в mruby не VM от Койчи Сасады. Когда везде в продакшне крутилась 1.8 c bison-овским интерпретатором(никого кстати этот бред не останавливал) никто и подумать не мог насколько быстрее может стать руби.
LuaJIT вообще из другой оперы конечно. И насчет подрубок mruby к nginx, отсюда поподробнее.
Я про модуль ngx_mruby
Сделаю вот так )) уж извини https://youtu.be/uZmzQE7xXCY
ну и require один из японцев делал для SOHO роутеров. Очень много юзкейсов но они мало выходят за пределы японии.
Пруфф на то, что уступает
не в 10 раз, но да он медленней. Опять же есть плюсы меньше время старта и потребления памяти.