LINUX.ORG.RU

Ruby 3.0.0

 ,


1

4

Вышел новый релиз динамического рефлективного интерпретируемого высокоуровневого объектно-ориентированного языка программирования
Ruby версии 3.0.0. По заявлению авторов, зафиксировано утроение производительности (по тесту Optcarrot), таким образом достигнута поставленная в 2016 году цель, описанная в концепции Ruby 3x3.

Для достижения этой цели в ходе разработки уделили внимание таким направлениям:

  • Performance — производительность
    • MJIT — сокращение времени и уменьшение размера генерируемого кода
  • Concurrency — обеспечение параллелизма
    • Ractor — начальная поддержка новой модели акторов
    • Fiber Scheduler — планировщик fiber-потоков
  • Typing — статический анализ кода
    • RBS — инструмент для аннотации типов
    • TypeProf — новый анализатор типов

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

★★★★★

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

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

Руби был хорош именно рельсами, как отдельный язык руби нафик не вперся, есть куда более вменяемые перл и питон.

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

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

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

Возможно не правильно понимаю слово интерпрайз, но таки запиливают: Shopify, Airbnb, GitHub, … и так далее

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

Я про то, что в жырном ынтерпрайзе нет ни питона, ни рубей. В нашем уходящем 2020, в жирном энтерпрайзе дофига питона и несколько меньше руби. А на десктопе там всегда js (к слову). Пластмассовый мир победил, да.

Только нафига питон тащат а не руби, я думаю, никто не объяснит, обычно это просто исторически сложилось. Поэтому реализация многопоточности и статанализа как раз то, что позволит руби занять более значимую нишу в ынтерпрайзе.

Еще дарт, конечно, возьмет свое.

Ну и, как я уже сказал, прогнозирую, что ява умрет в ближайшие 10 лет (как делфи).

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

прогнозирую, что ява умрет в ближайшие 10 лет

Сомневаюсь я. Больно дофига на ней понаписано. Причём под винду и юниксы одновременно. Банковские системы например никто не будет переписывать.

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

Гит - ториознутая часть гитлаба?

Я не пользовался, но думаю, на облаке гитлаба ничего не тормозит. А так, гит, очевидно, тормозит - это ж вычисления на файловой системе, они всегда самые медленные. Существует много способов борьбы с этим, например кеширование.

special-k ★★★ ()
Ответ на: комментарий от beck

Банковские системы например никто не будет переписывать.

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

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

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

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

Пока не сделают нормальные утилиты для использования систем управления пакетам (apt, yum и т.д), что бы использовать можно было только проверенные модули из репозитариев, шансов у ruby не появится.

Это могли сделать давно, но даже на брались.

Так что: сдох ruby, ну и …

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

Почему ты так думаешь?

Просто наблюдаю, как это делается. Не переписывают ничего. По двум причинам. 1. Слишком много кода нужно переписать, 2. куда более важное, современные руби- и растохлёбы нифига не понимают в предметных областях.

в активно развиваемых продуктах

Это что? Очередной гитхаб или очередной форк форка какой-то внутри программистской фигни, которая никому, кроме них самих не интересна?

Системы для людей пишут на устоявшихся языках и средствах/пакетах.

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

Системы для людей пишут на устоявшихся языках и средствах/пакетах.

Язык развивается без ломки обратной соместимости, что не так? Почему он не устоявшийся?

Поведай на чем ты пишешь и когда были последние изменения в твоем языке программирования?

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

Пока не сделают нормальные утилиты для использования систем управления пакетам (apt, yum и т.д), что бы использовать можно было только проверенные модули из репозитариев, шансов у ruby не появится.

Что за чушь? maven, nuget, composer, rubygems и т.д.

По-твоему это должо быть заменено на

(apt, yum и т.д)

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

Что за чушь? maven, nuget, composer, rubygems и т.д.

Причем тут maven не понял. Если система сборки будет уметь собирать и пакеты - то хорошо.

nuget - сразу мимо. На серверах, очевидно, нет виндос, а другой ниши для ruby нет.

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

rubygems - корень проблемы. Тащит всякое вно по зависимостям, которые могут менятся.

По-твоему это должо быть заменено на (apt, yum и т.д)

Нет. Не заменено а использовать. Пока не будет аналога rubygems, который тащит только пакеты из репозитариев дистибутивов ruby так и будет оставаться мертвичиной.

Что бы система сборки собирала пакеты для соответствующих дистрибутивов и еще прописывала в них зависимости было бы неплохо, но это, конечно, уже шашечки.

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

Я про то, что в жырном ынтерпрайзе нет ни питона, ни рубей.

И как там в 2006 году поживается?

Руби был хорош именно рельсами, как отдельный язык руби нафик не вперся

Кроме рельс (что уже немало) еще есть - metasploit, puppet, chef, discource, vagrant, ... etc. gitlab на руби написан и еще тыщи популярных сервисов: airbnb, kickstarter, bascamp, diaspora, groupon, twitter когда-то был. Конечно это все «не интерпрайз», ага.

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

Руби неплохой ЯП, уж точно гораздо лучше перла и питона.

Не во всех местах, к сожалению. Та же работа с модулями - слабое место. Генераторы кривоватые, декораторы на костылях (смотрел давно, возможно, что-то изменилось к текущему моменту), иногда не хватает list comprehension, не везде уместно ооп, нет докстрингов, end end end.

А рельсы это свалка прибитых гвоздями антипаттернов.

Аналогичное впечатление.

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

Конечно это все «не интерпрайз», ага.

Совершенно верно, это не ынтерпрайз. Ынтерпрайз - это например система в дойчебанке, обслуживаюшая sepa платежи по всему ЕС. Или ЕЦБшный target2.

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

Насчет ООП согласен, остальное по мелочам. У меня подобных претензий к питону вагон с тележкой. Руби более целостный и внезапно простой. Синтаксис клёвый имхо, но это вкусовщина.

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

Ынтерпрайз - это например система в дойчебанке, обслуживаюшая sepa платежи по всему ЕС. Или ЕЦБшный target2.

Странные у тебя критерии ынтерпрайза. В Украине, допустим, приватбанк (самый крупный банк у которого порядка 20+ млн клиентов) использовал эрланг и кое-где лисп в свое время. java, естественно, тоже, но и как видишь «скриптоту». При чем именно для нагруженных частей. А ты откуда знаешь, что использует дойчебанк и как это связанно именно с техническими преимуществами?

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

Насчет ООП согласен, остальное по мелочам.

Модули это не мелочи, это даже больше напрягает, чем ооп, раз в 10.

У меня подобных претензий к питону вагон с тележкой. Руби более целостный и внезапно простой.

Так я вроде нигде не сказал, что руби не клевый, просто у него (как и питона) есть родовые трав^W артефакты. Которые можно исправить, но почему-то ...

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

nuget - сразу мимо. На серверах, очевидно, нет виндос, а другой ниши для ruby нет.

Что за бред. У Ruby из всех популярных динамических языков самая худшая поддержка винды, есть любительская сборка которая тащит вместе с собой полностью весь MinGW (c binutils, gcc и прочим) и на которой только helloworld’ы пускать, потому что на реальных и сложных проектах всегда вылезет какой-нибудь косяк, да и вовсе никто не привык к такому и посмотрят как на идиота.

Сейчас какие-то энтузиасты пробуют «для разработки» WSL, но это и не винда и на винде нативно только редактор, фактически, работает.

Ruby вообще не существует вне *nix, ни в девелопменте, ни в продакшене. Отсюда и популярность среди новичков-свитчеров страдает, т.к. чтобы начать кодить надо, фактически, отказаться от винды, тогда как у многих других динамических языков с поддержкой винды всё куда лучше. А ограничение порога входа только обязательным использованим linux/mac/bsd сильно сужает круг жаждущих начать учить, с наличием-то альтернатив.

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

Только если в манямирке. Так же, как мертвечиной остаётся Python стабильно входящий в топ-3 по популярности последние годы. Способ дистрибуции языковых библиотек (тем более с повальным современным увлечением контейнерами) и репозитории дистрибутивов это вообще второстепенная вещь, которая мало кого волнует, что в разработке, что в бизнесе, кроме одного анонимуса на Лоре, который носится тут с какой-то идеей фикс и решил, что это прям какой-то важный критерий. APT-GET евангелист. В общем «сама придумала – сама обиделась» (с).

OSBuster ()
Последнее исправление: OSBuster (всего исправлений: 1)
Ответ на: комментарий от OSBuster

У Ruby из всех популярных динамических языков самая худшая поддержка винды

Тогда зачем таскать песочницу?

Только если в манямирке. Так же, как мертвечиной остаётся Python стабильно входящий в топ-3 по популярности последние годы.

А как там в не манямирке? ruby поди на первые места выходит?

С Python’ом вообще никак нельзя сравнивать. Среди его разработчиков таскать с собой песочницу трендом не является. Поэтому опакечивать произведения на python’е легко.

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

Ruby вообще не существует вне *nix, ни в девелопменте, ни в продакшене. Отсюда и популярность среди новичков-свитчеров страдает

Киллерфича. Ну и еще повезло, что язык полностью контролируется японцами. Это мешает американским смузихлебам набегать и всё ломать как случилось с питоном.

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

С Python’ом вообще никак нельзя сравнивать. Среди его разработчиков таскать с собой песочницу трендом не является. Поэтому опакечивать произведения на python’е легко.

Да точно такой же адок. Таким языкам вообще противопоказано опакечивание. Там нужно уметь кучу версий разгребать одновременно, в чем апты не сильны. В руби как раз хороший пакетный менеджер, который всё это умеет. Надо им и пользоваться, а не натягивать сову на глобус.

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

Киллерфича. Ну и еще повезло, что язык полностью контролируется японцами. Это мешает американским смузихлебам набегать и всё ломать как случилось с питоном.

Так автор начал пилить реализацию языка на 4.3BSD-based NEWS-OS на рабочей станции SONY NEWS на MIPS-архитектуре. Потом, когда японцы из Sony не осилили закрепиться на рынке рабочих станций, он пересел на рабочую станцию на Солярке на SPARC (а Fujitsu тесно сотрудничало с Sun, производило и процессоры и серверы и сейчас, наверное, последние, кто держится за это вот всё), и только потом на рубеже/в начале нулевых пересел на Linux на x86, на котором и до сих пор сидит. Именно в этот момент язык пошёл в массы, вышла версия 1.8, RoR и в 2005 году Apple включила его в Mac OS X Tiger.

И тут врывается какой-то малошарящий анонимус, которому что-то стрельнуло в голову, и начинает что-то лепетать про винду, тогда как Ruby на винде до Windows Subsystem for Linux всегда был связан с пердолингом, да и сейчас не всё гладко.

Я бы понял ещё какие-то подколы про хипстерство, макбуки и смузи (хотя это тоже такие подколы из нулевых).

OSBuster ()
Последнее исправление: OSBuster (всего исправлений: 2)
Ответ на: комментарий от OSBuster

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

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

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

Да, core team там отличная. Поэтому совсем не понимаю какой-то здешней непонятно откуда взявшейся «моды» на хейт Руби, это хороший динамический язык с несколькими активно развивающимися, а не заброшенными реализациями: MRI, JRuby, TruffleRuby, MRuby.

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

Вообще-то можно (в Питоне во всяком случае, про Go ничего не знаю). С помощью декораторов. Конечно, блоки придётся оформлять в функции отдельные, и потом уж передавать их декоратору. Наверное, это не так удобно, как сразу блок вставить. Но с другой стороны, не так уж часто декораторы нужны бывают для произвольных кусков кода. ИМХО, самой собой.

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

Хейт на любой язык (не обязательно Руби) возникает в силу подсознательной боязни того, что его придётся учить, если вдруг он станет популярным или ещё какой причине. Учение - это всегда энергозатраты. Кому охота тратить время на это, если можно выпить смузи. :)

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

Хейт на любой язык (не обязательно Руби) возникает в силу подсознательной боязни того, что его придётся учить

Хейт возникает когда есть проблема, а авторы делают вид, что нет.

Обычно авторы живут в своем мирке, сильно оторванном от реальности. Вокруг них появляется круг фанатиков которые каждый высер обожествляют. Что приводит к профессиональной деформации.

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

Вообще-то можно (в Питоне во всяком случае, про Go ничего не знаю). С помощью декораторов.

Но как? Декоратор - всего лишь функция возвращающая другую функцию. Как он позволит добавить метод к классу int?

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

Да точно такой же адок.

Адок, но очень далеко не такой же.

Таким языкам вообще противопоказано опакечивание.

Тогда такие языки мимо. И, кстати, python’овые поделия опакечиваются легко.

Там нужно уметь кучу версий разгребать одновременно.

В корне неправильно. Разработчики должны учитывать возможность разных версий в целевых системах, что прямо противоречит тасканию песочниц.

в чем апты не сильны.

И слава богу. Патчить от дыр 100500 версий… Никто не осилит.

В руби как раз хороший пакетный менеджер, который всё это умеет.

И таскает для одной программы несколько версий одной библиотеки, по зависимостям. Плавали знаем.

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

Питон как то на глобус хорошо натягивается. :)

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

Не только возвращающающая, но и принимающая. Примерно так. Метод к классу недобавит, само собой. Но я так понял из вашего кода, что цель не в этом. Может, неправильно истолковал. Я с Руби не знаком.

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

И тут врывается какой-то малошарящий анонимус, которому что-то стрельнуло в голову, и начинает что-то лепетать про винду, тогда как Ruby на винде до Windows Subsystem for Linux всегда был связан с пердолингом, да и сейчас не всё гладко.

Забавные вы. винда здесь как единственный допустимый аргумент, почему реализовали собственный механизм, не учитывающий реалии linux.

Если язык, нишей которого являются сервера, не учитывает реалии linux, то он для винды, или есть другие варианты?

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

Но я так понял из вашего кода, что цель не в этом. Может, неправильно истолковал. Я с Руби не знаком.

Я имел в виду именно добавление метода. В питоне можно добавлять методы к экземпляру класса. Но это не работает с встроенными. Можно наследовать от встроенного, но невозможно заставить литералы трактовать как новый класс. Самое близкое получается что-то вроде

>>> class Integer(int):
...   def repeat(self,body):
...     k = 1
...     while k <= self:
...       body(k)
...       k = k + 1
...
>>> Integer(10).repeat(lambda i: print(i))

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

В питоне можно добавлять методы к экземпляру класса.

Почему именно к экземпляру? К классу тоже можно. И отдельно к объекту (экземпляру).

Но это не работает с встроенными.

Смысл примера был в том, чтобы продемонстрировать именно этот момент или в чем-то еще?

но невозможно заставить литералы трактовать как новый класс

О чем речь?

Самое близкое получается что-то вроде
Integer(10).repeat(lambda i: print(i))

А ужас в чем здесь, кроме Integer(10)? В том, что вместо |x| у нас lambda x:?

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

Почему именно к экземпляру? К классу тоже можно. И отдельно к объекту (экземпляру).

Для встроенных нельзя ни к тому ни к другому. Я это и имел в виду, когда говорил, что в Ruby всё объекты, а в Python не совсем.

А ужас в чем здесь, кроме Integer(10)?

Именно в этом. То есть не ужас, а неполная объектность.

В том, что вместо |x| у нас lambda x:?

В целом, синтаксис в Ruby тоже чуть читабельней. В результате можно писать что-то вроде

FormBot.visit 'https://www.example.com/register' do
  in_form 'Registration'

  fill_in 'First Name', with: 'Jolly'
  fill_in 'Last Name', with: 'Roger'

  select_from 'City', value: 'Kansas'
  select_from 'Gender', value: 'Male'
  select_from 'Colors', value: ['Red', 'Yellow']

  submit do |response|
    if response.failure
      send_mail to: 'admin@example.com',
                from: 'formbot@example.com',
                subject: 'Failed to submit form',
                body: response.errors
    end
  end
end

что гораздо читабельней, чем питоновский аналог:

def do_visit():
  in_form("Registration")
  fill_in("First Name", with = "Jolly")
  fill_in("Last Name", with = "Roger")

  select_from("City", value = "Kansas")
  select_from("Gender", value = "Male")
  select_from("Colors", value = ["Red", "Yellow"])
  def do_sumbit(response):
    if response.failure:
      send_mail(to = "admin@example.com", from = "formbot@example.com", subject = "Failed to submit form", body = response.errors)
  submit(do_sumbit)
FormBot.visit("https://www.example.com/register", do_visit)
monk ★★★★★ ()
Ответ на: комментарий от alienclaster

Не критично. В целом, Python и Ruby как Java и C# очень многое заимствовали друг у друга и на данный момент отличаются только чуть-чуть синтаксисом и наличием библиотек.

monk ★★★★★ ()

Ну что пацаны, вот и 2021 год!

А всякая нечесть все года предрекает конец света по 100 раз в году …

Вывод, то прост - ВЫСОКОУМИЕ брат ОСЛОУМИЯ!

С Новым Годом!

Слава Святому Господу Отцу Небесному!  
Слава Святому Господу Иисусу Христу!  
Слава Святому Господу Святому Духу!  
Слава ВсеСвятой Владычице Нашей Богородице!  
Слава Царице Небесной!  
Слава Царице Милости!
Слава Святому Животворящему Кресту Господа Нашего!

Владимир

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

форк форка какой-то внутри программистской фигни

Нет. Это всякие системы документооборота, црмки, и пр. программы для бизнеса, включая современные приложения для банкинга и пр.-пр. Словом, современный софт.

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

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

Пока не сделают нормальные утилиты для использования систем управления пакетам (apt, yum и т.д), что бы использовать можно было только проверенные модули из репозитариев, шансов у ruby не появится.

Это какая-то шиза у некоторых дистродрочеров, но благо их мнение никому не интересно.

special-k ★★★ ()
Последнее исправление: special-k (всего исправлений: 1)