The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Доступен интерпретатор mruby 3.0

06.03.2021 19:08

Состоялся релиз mruby 3.0, встраиваемого интерпретатора динамического объектно-ориентированного языка программирования Ruby. Mruby обеспечивает совместимость синтаксиса на уровне Ruby 1.9, но также поддерживает отдельные возможности из более новых версий. Интерпретатор отличается низким потреблением памяти и возможностью встраивания в другие приложения. Кроме того, поддерживается компиляция Ruby-программ в байткод при помощи развиваемого проектом компилятора "mrbc". Код mruby распространяется под лицензией MIT. ‎

В новом выпуске значительно сокращено потребление памяти, используемой в mruby VM. Предыдущие версии требовали нескольких сотен КБ оперативной памяти, а mruby 3.0 потребляет около 100 КБ ОЗУ.‎ Основные улучшения:

  • Уменьшено потребление оперативной памяти за счет оптимизации выделения памяти для объектов класса Symbols. Уменьшено потребление памяти объектами класса Hash. Проведена оптимизация вызова методов.
  • Добавлена поддержка однострочного определения метода без использования ключевого слова "end":
    
       def square(x) = x * x
    
  • Добавлен оператор "=>" (значения => переменная), который используется для правостороннего присваивания значений.
    
       0 => a
       p a #=> 0
       {b: 0, c: 1} => {b:}
       p b #=> 0
    
  • Поддержка конструкции heredocs.
  • Обновлены файлы сборки интерпретатора. Добавлена компиляция с gprof. GCC теперь может собирать в режиме 32 бита на 64 битных платформах. Появилась поддержка Address Sanitizer в clang.
  • Изменение, нарушающее совместимость: константа RITE_VM_VER теперь имеет значение 0300, а RITE_BINARY_FORMAT_VER - 0200, что исключает возможность исполнения байткода от прошлых версий.
  • Класс Fixnum стал частью Integer, так же как в Ruby 3.0. Удален класс Integral.


  1. Главная ссылка к новости (https://mruby.org/releases/202...)
  2. OpenNews: Выпуск языка программирования Ruby 3.0
  3. OpenNews: В RubyGems выявлено 724 вредоносных пакета
  4. OpenNews: Релиз 19.3.0 виртуальной машины GraalVM и реализаций Python, JavaScript, Ruby и R на её основе
  5. OpenNews: В rest-client и ещё 10 Ruby-пакетах выявлен вредоносный код
  6. OpenNews: Доступен интерпретатор mruby 2.0
Автор новости: GentooBoy
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/54712-ruby
Ключевые слова: ruby, mruby
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (43) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, InuYasha (??), 20:40, 06/03/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > для правостороннего присваивания значений.

    За этим есть реальный логический смысл или просто "когда лень Crtl+X сделать"?

     
     
  • 2.3, Леголас (ok), 20:44, 06/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    причём здесь логический смысл? просто такой синтаксис оператора
     
  • 2.7, Анончик (?), 21:11, 06/03/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В какой-то степени
    Например когда тебе надо из цепочки методов сделать присваивание
    a="hello"
    a.upcase.reverse => b
    конечно можно написать и так
    b = a.upcase.revers

    Но если цепочка методов очень длинная то почему бы не использовать такой синтаксис.
    лично мне это для однострочников нравиться

     
     
  • 3.9, InuYasha (??), 21:16, 06/03/2021 [^] [^^] [^^^] [ответить]  
  • +5 +/
    так и скажи - для обфускации однострочников ))
     
     
  • 4.24, Аноним (24), 01:14, 07/03/2021 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Так и скажи, что просто хейтишь то, что для тебя необычно
     
  • 2.11, Аноним (11), 21:23, 06/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Это тестовая фича новый рубей, кажется. Зачем оно надо, впрочем, непонятно, да.
     
  • 2.13, Аноним (13), 21:32, 06/03/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Конвейер же....
     
  • 2.25, Ordu (ok), 01:23, 07/03/2021 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Логического смысла нет Но почему обязательно смысл должен быть логическим Ты н... большой текст свёрнут, показать
     
     
  • 3.27, Леголас (ok), 06:55, 07/03/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В противовес Ларри, Гвидо ван Россум -- математик, и в Python акцент делался на читаемости: принцип «явное лучше неявного».
     
     
  • 4.33, Аноним (24), 21:00, 07/03/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    «явное лучше неявного» далеко не всегда улучшает читаемость. Часто наоборот, замусоривает код и читаемость ухудшается. В С все очень явно описывается, я бы не сказал, что код легко читать. Логика не видна в куче бойлерплейта.
     
  • 3.31, msgod (ok), 15:25, 07/03/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Фига тя прет
     
  • 3.36, Аноним (36), 11:26, 08/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не прочитал, но интересно!
     
  • 3.38, i (??), 00:35, 09/03/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > программисты на perl не думали о том, как они потом будут читать свой код, и лепили его первым пришедшим на ум способом,

    А что, прогеры руби чем-то лучше?

    > Со временем она начнёт видеть всё более и более сложные паттерны и опознавать их.

    Ну есть конечно люди которые по 4к символов в минуту считывают и интерпретируют, но как увидеть паттерн если его части разделены кусками кода большими чем лезет в экран, собственно для этого придумали языки верхнего уровня, чтобы логику отдельно вытащить, но не везде это зашло, а надо ли везде?

    > ...Но с точки зрения задумки, очевидно, что это наколенный ООП

    Вот не надо тут красок, всегда считал, что код, чем тупее тем лучше, весь этот синтаксический сахар только усложняет чтение, идеально тупому коду комменты не нужны, там и так все ясно, потому что конструкции типа присвоения и if-else ветвление и больше ничего.

    > психолингвистикой

    Вам блин шашечки или ехать, вы еще стихи насочиняйте на с++, в математике вообщето доказывается, что а + б = б + а, а попытки "дать возможность по иному", от лукавого, так как дополнительный вектор атаки, так как читать сложнее, а как там компилятор решит с оптимизировать вообще неизвестно, почитайте нормальных произведений на подходящих языках, и не надо сочинять байт-сонаты пряча максимум операций в минимум байт, для любителей извращений есть брейфак, а на работу латекс лучше не одевать.

     
     
  • 4.39, Ordu (ok), 04:16, 09/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Я же написал выше не знаю Про перловых я знаю, про рубистов -- нет Я использо... большой текст свёрнут, показать
     
     
  • 5.40, i (??), 08:31, 09/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Неа. Проще читать на русском

    O_o

    Серьезно?

    Да вот фига, давай на русский переведи логику какой-нибудь схемы с несколькими транзисторами, а потом восстанови из этой каши таблицу состояний, не это не то что невозможно, но просто кол-во букавок будет очень многа, а на нормальной схеме мозг сломается, так как оперативки мало.

    Математику придумали просто так чтоли, это формализация, это самое первое программирование, программирование себя, разбиение на примитивы, с четкими правилами, котрые понимаю вообще все не зависимо от знания языка.

    > из-за этого на нём сложнее выражать мысль, а часто сложнее понимать

    Мысль о том, что было 2 козы и одну перехал трамвай и стала одна? или может вероятностную функцию какуюто проще?

     
     
  • 6.41, Ordu (ok), 09:13, 09/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >> Неа. Проще читать на русском
    > O_o
    > Серьезно?

    Нет, прикалываюсь. Похоже получается?

    > Да вот фига, давай на русский переведи логику какой-нибудь схемы с несколькими
    > транзисторами, а потом восстанови из этой каши таблицу состояний, не это
    > не то что невозможно, но просто кол-во букавок будет очень многа,
    > а на нормальной схеме мозг сломается, так как оперативки мало.

    А теперь попробуй на языке описания схем, написать Войну и Мир. Или вести пьяные беседы на кухне. Или расскажи о том, что такое back-propagation в нейросетке. Хоть что-нибудь кроме схем на этом языке можно выразить?

     
  • 6.42, Брат Анон (ok), 09:34, 09/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    На русском читать проще. Факт, проверенный на себе.

    Представь себе носителя английского языка ,который в шоке задаёт вопрос: "На английском читать проще?!" (подразумевается, что весь код в мире пишется на немецком).

    ДА! Они читают код НА СВОЁМ РОДНОМ ЯЗЫКЕ. И не понимают, что тут такого.

    Так для справочки: Пушкин до 8 лет говорил на французском, Александр I писал приказы войскам на французском языке, при Екатерине Великой студентов универов учили на немецком, последние 20 лет код пишут почти исключительно на английском.

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

     
     
  • 7.43, Аноним (43), 19:02, 10/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще не проще, приходится постоянно вспоминать перевод чего это вообще и скажи спасибо если редактор был не совсем хлебушек. Особенно весело с совсем незнакомыми терминами на русском.
     

  • 1.2, Аноним (2), 20:44, 06/03/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > для правостороннего присваивания значений.

    .удобно оченЬ
    .читаемой легко становится сразу программА

     
     
  • 2.5, Леголас (ok), 20:51, 06/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ьнечо онбоду.
    Аммаргорп узарс ястивонатс окгел йомеатич.
     
     
  • 3.6, Аноним (6), 20:54, 06/03/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    тут что-то на эльфийском…
    хотя чего еще ожидать
     

  • 1.4, Аноним (-), 20:50, 06/03/2021 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –1 +/
     
  • 1.8, Аноним (8), 21:12, 06/03/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Зачем на микроконтроллере рельсы? А если нет рельсов, то зачем вообще Ruby нужен?
     
     
  • 2.10, Анончик (?), 21:19, 06/03/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Как замена однострочников перла очень неплох.
    ps aux | ruby -ane 'BEGIN{$sum=0; app="Firefox"}; $sum += $F[5].to_i if $_.match?(app); END{print "#{app}:\t",$sum/1024,"\n" }'
    mruby тяжеловат для мк имхо, больше как встраиваемый интерпретатор.
     
     
  • 3.17, Аноним84701 (ok), 23:09, 06/03/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Как замена однострочников перла очень неплох.
    > ps aux | ruby -ane 'BEGIN{$sum=0; app="Firefox"}; $sum += $F[5].to_i if $_.match?(app);
    > END{print "#{app}:\t",$sum/1024,"\n" }'
    > mruby тяжеловат для мк имхо, больше как встраиваемый интерпретатор.

    Кхе.
    ps aux|awk '/firefox/{sum+=$6}END{print sum/1024}'
    ну или
    ps aux|awk -v app=firefox '$0~app{sum+=$6}END{print app ":\t" sum/1024}'

    точно так же подсчитает "не совсем, но почти правильно" (хотя memory footprint awk все же заметно меньше руби будет, а уж на фоне FF так вообще незначителен ...)

     
     
  • 4.21, Анончик (?), 23:55, 06/03/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да там любой футпринт будет не заметен, современные браузеры столько жрут.
    Собственно оно и было переписано с подобной awk, ради забавы.
     
     
  • 5.23, Аноним84701 (ok), 00:50, 07/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Да там любой футпринт будет не заметен, современные браузеры столько жрут.

    Не, я к тому, что считает оно вместе с процессом ruby/awk ;-)
    ====
    pgrep firefox | xargs ps -o rss= -p | awk '{sum+=$1} END{print sum/1024}'
    или
    ps ax -o rss,comm|awk '/firefox/{sum+=$1}END{print sum/1024}'

     
     
  • 6.26, Аноним (43), 05:55, 07/03/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ps кстати врёт, да и rss тебе ни о чём не скажет -- это не информативно совершенно. Надеюсь, ты это понимаешь. И не надо использовать pgrep, pidof подходит куда больше.

    Я использую такой однострочник psrss=0;pspid="$(pidof ${1,,}|tr $' ' ,)";for m in 'ps -eo rss= -q "${pspid}"'; do (( psrss+=m ));done; потом 3 команды bc и awk только для вывода и форматирования. Можно конечно сейчас написать иначе, но смысла переписывать не вижу.

    А вот smaps тебе сообщает кроме точного rss и pss и вот это уже полезно, однострочник там ровно тот же самый только без ps.

     
     
  • 7.29, Анончик (?), 12:00, 07/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Мне точность не сильно нужна была, однострочник служил для сравнения потребления памяти браузерами с включенным таб рипером и без. Ну и за одно выбрал какой реально выкружает вкладки, а какой только делает вид.
     
     
  • 8.32, Аноним (43), 16:04, 07/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Там разница бывает очень значительная, особенно на программах, пытающихся скрыть... текст свёрнут, показать
     
  • 3.30, Аноним (30), 12:02, 07/03/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    То есть у перловых однострочников есть фатальный недостаток? Понятно.
     
  • 2.12, Аноним Фейспалмирующий (?), 21:24, 06/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ах ты такой тонкий тролль, чудо дивное, ммм (нет).
     
  • 2.18, YetAnotherOnanym (ok), 23:22, 06/03/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Зачем вообще лезет к микроконтроллерам человек, который не знает ничего, кроме Руби?
     
     
  • 3.28, n00by (ok), 09:22, 07/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Что бы опровергнуть десятое правило Гринспена.
     
  • 2.19, Keqing (?), 23:35, 06/03/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А причём здесь вообще микроконтроллеры?
     
     
  • 3.34, YetAnotherOnanym (ok), 21:36, 07/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > А причём здесь вообще микроконтроллеры?

    Это единственное место, где ещё считают килобайты.

     
  • 2.22, funny.falcon (?), 00:02, 07/03/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Мне как раз руби нравится, а вот рельсами не болею. Руби - очень приятный язык для скриптов.
     
  • 2.37, anonymous (??), 19:03, 08/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Его не использкют в микроконтроллерах, его используют в качестве встраиваемого языка, как Lua.
     

  • 1.14, Аноним (14), 21:45, 06/03/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Руби красивый, хорошо продуманный язык.
    К сожалению с реализациями руби изначально не везло, поэтому он так и не смог занять подобающее ему положение.
     
     
  • 2.15, валяйте (?), 22:43, 06/03/2021 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Мндаааа... ок...
     

  • 1.16, Аноним (16), 22:59, 06/03/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А зачем?
     
     
  • 2.20, Keqing (?), 23:41, 06/03/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Затем же, зачем и Lua: встраивать в программы для удобного написания высокоуровневой логики. Конкретно на mruby, например, написан гуй ZynFusion.
     
  • 2.35, xm (ok), 23:56, 07/03/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Встраиваемый интерпретатор. Например, в веб-серверы H2O все сложные вещи а-ля рерайты удалены из парсера конфигурационного файла, зато есть mruby с которым можно сделать практически что угодно.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру