LINUX.ORG.RU

Ruby 2.6.0

 , ,


1

3

Ruby — динамический, опенсорсный язык с прицелом на простоту и продуктивность. Он имеет элегантный синтаксис: интуитивно понятный и простой для написания.

В этом выпуске представлен ряд новых возможностей и улучшений производительности. Самые важные:

  • Новый JIT-компилятор, который вместо работы в памяти сохраняет на диск код на языке C и обрабатывает его внешним компилятором (поддерживаются GCC, Clang и Microsoft VC++). Включается ключом --jit. На активно нагружающих процессор задачах достигнуто ускорение в 1.7 раз по сравнению с Ruby 2.5.
  • Модуль RubyVM::AbstractSyntaxTree (экспериментальный, поддержание будущей совместимости пока не гарантируется). Он предоставляет методы parse и parse_file для превращения соответственно строки или файла с кодом на Ruby в узлы абстрактного синтаксического дерева, представленного объектами класса Node из того же модуля.

Другие важные нововведения:

  • Добавлен алиас #then для Kernel#yield_self.
  • Имена констант могут начинаться с не входящих в ASCII заглавных букв.
  • Добавлены бесконечные диапазоны вида (1..).
  • Добавлены Enumerable#chain и Enumerator#+.
  • Для Proc и Method добавлены операторы композиции функций << и >>.
  • Добавлен метод Binding#source_location, возвращающий массив из __FILE__ и __LINE__, соответствующих местоположению привязки в исходном коде. Он рекомендуется к использованию вместо Kernel#eval, поскольку поведение последнего планируется изменить.
  • Для Kernel#system добавлен параметр exception:, с которым он бросает исключение вместо возврата false.
  • Добавлен упрощённый режим для Coverage, при котором проверяется лишь факт вызова строк хотя бы раз.
  • Добавлен FileUtils#cp_lr. Он работает как cp_r, но вместо копирования делает ссылки.

Улучшения производительности:

  • Ускорен в 1.4 раза Proc#call путём избавления от временного создания $SAFE.
  • Ускорен в 2.6 раза block.call в случаях, когда переданный block является блочным параметром.
  • Добавлена Преходящая Куча (theap) — управляемая куча для краткоживущих объектов определённых классов (Array, Hash, Object и Struct), давшая улучшение производительности на 6-7%.
  • Нативные реализации (arm32, arm64, ppc64le, win32, win64, x86 и amd64) корутин ради значительного улучшения производительности переключения контекстов в Fiber: на 64-разрядном Linux Fiber.yield и Fiber#resume отрабатывают в 5 раз быстрее; в среднем стоит ожидать до 5% улучшения производительности для программ, активно использующих Fiber.

Другие важные изменения по сравнению с 2.5:

  • $SAFE теперь является глобальным состоянием процесса и может быть сброшен в 0.
  • Передача safe_level в ERB.new объявлена устаревшей. Аргументы trim_mode и eoutvar сделаны именованными.
  • Поддержка Unicode обновлена до 11-й версии, а в следующем минорном выпуске ожидается также поддержка 12 и 12.1.
  • Влит RubyGems 3.0.1. Убраны ключи --ri и --rdoc, используйте вместо них --document и --no-document.
  • Гем Bundler теперь устанавливается по умолчанию.
  • В блоках обработки исключений else без rescue теперь вызывает синтаксическую ошибку.

>>> Скачать (SHA1=c95f4e86e21390270dad3ebb94491fd42ee2ce69)

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

>>> Источник



Проверено: maxcom ()
Последнее исправление: cetjs2 (всего исправлений: 4)

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

макака, специально обученная функциональному языку, безопаснее.

Где вы таких берете? Отсыпь и мне немного.

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

Аргументируй

Нет кадров. В одно рыло можно на чем угодно кодить конечно. Хотя я не разделяю восторгов от ФП, по-моему это для большинства задач что гланды через жо.

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

Разработчиков в нашей команде - 4.

loz ★★★★★
()

Спасибо за новость, забавная опечатка вышла

Field.yield

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

puppet еще, из той же оперы, что и chef. первое, что я сделал на нынешней работе - вынес это поделие со всех серверов.

SevikL ★★★★★
()

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

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

Нет кадров - это типа отмазка что на 60тр не нанять в любой момент как жс студента? Если требования такие то понятно кадров не будет.

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

Благодаря этому идиотизму есть хоть какой-то кроссплатформенный софт. В то время как нативные поделки с портами под линь, а то и вообще на десктопы, дропаются.

Moondancer
() автор топика

Новый JIT-компилятор, который вместо работы в памяти сохраняет на диск код на языке C и обрабатывает его внешним компилятором (поддерживаются GCC, Clang и Microsoft VC++)

Вот это жит так жит!

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

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

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

жопоскрипт стал тормозить ещё больше

Погоди, какой жопоскрипт. Родина им дала elm, и где же он, высоко взлетел?

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

Как они это делают на жс то? Нужна какая-то запредельная самодисциплина, чтобы там не свалиться в императивщину. Не верю я в таких макак.

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

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

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

сначала развернул saltstack, но оказалось избыточно, на гетерогенную среду стэйт-файлов не наберёшься. сейчас в пару десятков скриптов ансибля укладываюсь.

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

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

у меня достаточная свобода действий, могу делать всё, что не ломает бизнес-процессы.

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

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

и да, паппет не умеет в ad-hoc, вешается на исполнении с сжиранием 1 ядра cpu и тащит с собой руби, которой на сервере не надо в 90% случаев.

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

какой жопоскрипт

Который браузеры выполняют. Кто ещё-то?

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

Нужна какая-то запредельная самодисциплина

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

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

сам язык никак не располагает к ней

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

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

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

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

Ага, обмазались лямбдами, и уже матерые функциональщики. Если «любой язык» не гарантирует иммутабельность и не контролирует сайд-эффекты, это провал.

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

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

Где везде? Если ты заюзал руби, то 100% питон тебе не понадобится в той нише. В вебе вообще мало кто с питоном работает (ибо нафига). На винде никто про питон и не слышал, в геймдеве его очень редко используют. Вообще мотивации учить питон никакой нет, если ты не девопс какой.

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

не сливать драматически

драматически? причём тут театр?

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

по ссылке анализируются поисковые запросы, а не используемость.

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

Боюсь это школьники и аспиранты накрутили. Кстати, на мобилках тоже питона нетути, и в кровавом тырпрайзе. Так что хз какие задачи решают все эти фанбои питона. Лабы и домашка наверно.

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

Вот что-что, а офису сейчас самое место в себе. Доступен отовсюду, на любой системе, никаких проблем с совместимостью, совместная работа.

Im_not_a_robot ★★★★★
()

Новый JIT-компилятор, который вместо работы в памяти сохраняет на диск код на языке C

А зачем могло понадобиться сделать так?

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

на 60тр не нанять в любой момент как жс студента? Если требования такие то понятно кадров не будет.

А сколько веб-макаке надо платить? И будет ли результат лучше, если применить нанотехнологии из телекома для доставки данных из БД к сотне юзверей (в сутки)?

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

можно такого наставить

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

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

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

Moondancer
() автор топика
Ответ на: комментарий от kuraga

А как предлагаешь? Сразу в LLVM? Смузихлёбы не потянут.

Moondancer
() автор топика
Ответ на: комментарий от Alve

Еще один, который всё понял. Расскажи теперь нам, неразумным, на чем писать гуйню, чтобы на трех десктопных и двух мобильных платформах запускалась?

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

А потом удивляются

Удивляются только ЛОРовские нищеброды, на девелоперских макпуках вся эта гора говнокода не тормозит, и у платежеспособной аудитории тоже, а на неплатежеспособную насрать. Ты в курсе, что дефолтном конфиге реакта, например, давно not op_mini all и not ie <= 11, хотя рыночная доля у них, казалось бы, больше, чем у какого-нибудь эджа?

как-то обходились

Да вообще, деды на ассемблере писали, всем KolibriOS, а этот ваш линукс и весь юниксвей — жирное тормозное говно, а уж bash — и подавно, об этом даже в мануале написано:

BUGS
       It's too big and too slow.

Moondancer
() автор топика

Он имеет элегантный синтаксис: интуитивно понятный и простой для написания.

АХАХАХАХАХА.

Интуитивно-понятность своя для каждого, хотя в среднем у Ruby на уровне. А «простой для написания» - это точно не про него. inb4 и не про Python тоже.

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

QML?

Альзо, гуйня гуйне рознь; если не обмазываться моднявым говном, а исходить из возможностей HTML, можно и на вебне высрать что-то вменяемое, типа вебморд на роутерах или какого-нибудь PMA.

Moondancer
() автор топика

Новый JIT-компилятор, который вместо работы в памяти сохраняет на диск код на языке C и обрабатывает его внешним компилятором

А через 10 лет, в раби 4, они добавят аннотации типов? На старых рельсах не угнаться за поездом хайпа

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

А «простой для написания»

А такое вообще существует? Для неграмотного человека, например.

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