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)

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

>>> Источник

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

уникально говённого говна, как электрон

Кто ж виноват, что единственны общий знаменатель (в плане гуя) между всеми осями это SGML времен Рэйгана

Есть какие-нибудь пруфы?

Нет. Чисто теоретически, V8 должен быть быстрее чем питон

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

Я вот такого же мнения относительно синтаксиса понятного.

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

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

«получать кайф» от языка, в котором выражение «ough my god! they killed kenny!» является синтаксически правильной конструкцией, константа определяется регистром идентификатора и её значение может быть изменено? Мне кажется, эти люди курили что-то не то.

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

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

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

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

А на чём нужно писать, чтоб никогда не переписывать и при этом было удобно поддерживать и быстро работало?

Переписывать это нормально, когда есть острая необходимость. Но часто это просто спецолимпиада: перепишем на самое модное. Хотя я могу понять переписчиков с руби, это язык не для сурового продакшна, он слишком хрупок в лапках быдлокодера.

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

Кстати о паскале... А вот если бы в сабже генерился код не на си, а на паскале, то, пожалуй, скорость можно было бы ещё прибавить - за счёт скорости компиляции. А в качестве внешнего компилятора задействовать FreePascal.

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

Про это я и говорю - писать на Ruby производительно просто невозможно в условиях стартапа, поэтому переписывать - норма. Jit тут скорее всего не поможет, хайп уже прошёл, теперь время сурового legacy.

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

Git не обеспечивает одновременность.

Он обеспечивает единственно разумную совместную работу через интернет

Предлагаешь автоматически коммитить по одному символу и в редакторе по таймеру pull/merge делать?

Нет. Предлагаю коммитить, когда закончил какой-то участок работы.

Одновременное редактирование командой одного и того же файла в режиме онлайн — дурость (суть, неправильная организация).

Если все делают все одновременно, например рисуют одну и ту же текстуру одного и того же персонажа для игры, или два человека одновременно пишут один и тот же абзац(предложение) текста — то я вообще не представлю как так можно работать.

Если каждому нарезан какой-то кусок работы, то пусть каждый сделает свое, а потом кто-то сведет, никакой проблемы не вижу. Все, собственно, так и делают и git — исчерпывающий ответ на вопрос о совместной удаленной разработке.

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

Так а в чем тут «late»? Не вижу принципиальных отличий в этом отношении от java, например.

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

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

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

Время отразится, да. Ну, допустим, получился медленный jit, все равно же jit, важнее насколько эффективный код генерируется. И потом, кэшировать это наверняка можно.

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

единственно разумную

Мнение теоретиков очень важно.

когда закончил

Это увеличит время работы в разы. Пока один пишет, другой уже идёт за ним сзади и грамматику/оформление подчищает, добавляет ещё что-то. Как ты предлагаешь положить такой флоу на Git?

рисуют одну и ту же текстуру одного и того же персонажа для игры

Речь не о текстурах, речь о документах и презентациях.

я вообще не представлю как так можно работать

Потому что ты интроверт и остаёшься интровертом даже в professional hat.

а потом кто-то сведет

То есть кто-то главнее, угу. У нас все равны.

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

единственно разумную

Мнение теоретиков очень важно.

это оскорбление такое? :) Я прям сейчас работаю в редакторе, а в конце дня сделаю коммит. Вместе работаем на набором программ.

Ничего обо мне не знаешь — а выводы делаешь. неумно

Это увеличит время работы в разы. Пока один пишет, другой уже идёт за ним сзади и грамматику/оформление подчищает, добавляет ещё что-то. Как ты предлагаешь положить такой флоу на Git?

Такой _что_ положить? )

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

Давай немного подумаем и посчитаем. Предположим мне на написание некоего текста «как я провел лето» нужно полчаса. Еще полчаса нужно моему другу Ивану, который может читать текст и на ходу править грамматику/оформление. (я предположил, что время одинаковое, ибо иначе схема, «я-пишу-ваня-правит» вообще теряет даже мнимую эффективность)

Допустим, нам нужно сделать по 5 документов. По моей схеме — я написал документ, закоммитил, маякнул Ивану, мол, можно править, и приступил к написанию следующего. После пяти документов я потрачу 2.5 человекочаса на работу и Иван столько же. После трех часов от начала работы работа будет готова.

По твоей схеме: ты начал работать и тут же маякнул Ивану чтоб начинал править, нужно подождать несколько минут хотя бы, чтоб Иван не правил прям тот текст, который ты пишешь. Ну, условно 5-10. Через 2 часа 30 (+ 5-10) мин работа будет закончена. Вместе вы потратите те же 5 человекочасов.

Ускорение прям в разы налицо.

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

я вообще не представлю как так можно работать

Потому что ты интроверт и остаёшься интровертом даже в professional hat.

У меня слов нет. Ты ж полтора сообщения меня знаешь у уже рассказываешь мне о моей психике. Ты откуда такой самоуверенный?

Интроверт.. слово-то какое диковенное. В мой век таких лохами называли, на мой взгляд оно точнее.

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

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

а потом кто-то сведет

То есть кто-то главнее, угу. У нас все равны.

Во-первых, что мешает сводить одному из равных? Решительно не понимаю. Править же одному другого в вашей команде РАВНЫХ дозволено? Не выглядит ли это так, будто один главнее? ) Осторожно.

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

Но на практике, такое сложно даже в команде из 2-3 человек. Обязательно рано или поздно (на самом деле рано) появятся разногласия и нужен способ как-то решить что делать. Когда все равны — решать тонну разногласий в режиме нон-стоп и никого не обидеть (что очень важно в таких идеальных командах) решительно невозможно, будь ты хоть трижды не интроверт.

Можно все обсуждать, но решающее слово должно быть за кем-то одним, как правило обладающим соответствующими качествами и опытом, а так же авторитоетом, который остальные признают. Иначе, man лебедь, рак и щука

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

а в конце дня

А мы такое за несколько часов делали. Время работающих студентов не резиновое, знаешь ли.

схема, «я-пишу-ваня-правит»

Так её не было, потому что чёткого разделения задач тоже не было. Каждый дополняет всё, что в голову придёт, и тут же параллельно обсуждает — или в чатике, или прям на гдоке.

и приступил к написанию следующего

А это один. Следующих нет.

нужно подождать несколько минут хотя бы, чтоб Иван не правил прям тот текст, который ты пишешь

Не нужно. Гдок тебе не гит, там конфликтов слияния нету в принципе. Максимум текст вставятся не туда, куда ожидаешь.

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

что мешает сводить одному из равных

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

появятся разногласия и нужен способ как-то решить что делать

Некогда решать, сдавать пора.

решительно невозможно

Ты просто не умеешь в постиронию и толерантность, старпёр :3

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

Каждый дополняет всё, что в голову придёт, и тут же параллельно обсуждает — или в чатике, или прям на гдоке.

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

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

А мы такое за несколько часов делали. Время работающих студентов не резиновое, знаешь ли.

Какое ТАКОЕ вы делали за несколько часов? Ты ж даже не знаешь над чем я работаю, но утверждаешь, что вы такое за несколько часов делали.

схема, «я-пишу-ваня-правит»

Так её не было, потому что чёткого разделения задач тоже не было. Каждый дополняет всё, что в голову придёт, и тут же параллельно обсуждает — или в чатике, или прям на гдоке.

Ну так и победите, че уж. Странно, что до вас никто не додумался до такой схемы. Думаю, тебе стоит написать в нобелевский коммитет, чем черт не шутит

А это один. Следующих нет.

Вы толпой работаете над одним документом несколько часов? Манифест за равноправие и работу без начальников?

Гдок тебе не гит, там конфликтов слияния нету в принципе. Максимум текст вставятся не туда, куда ожидаешь.

Ну нравится тебе в твой гудок, ну и работай в него своими прогрессивными методами, че ж тебе еще нужно?

Нету конфликтов и текст не туда вставляется — это крепкая пятерка, ящитаю.

Если не секрет, над чем трудитесь? Сколько человек в команде? Кто дает деньги? Кто определяет сроки? Кто отвечает за провалы?

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

Ты откуда такой самоуверенный?

Отсюда.

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

А ты откуда такой нежный?

Чейта я нежный? Ты кинулся без оснований подвергать мою драгоценную фигуру публичному психоанализу, вот я и поинтересовался откуда такие выводы? Как мне знать, может ты Шерлок Холмс какой и реально такой проницательный? Просто настолько борзой нападки, прям со второго сообщения, я даже тут не припомню, а тут зачастую не самый интелегентный народ. Некоторые вот, не будем показывать пальцем, натурально как гопники приподъездные разговаривают с незнакомыми людьми без видимых причин.. хм. ну, поразбираемся с вопросом, раз уж такое дело.

Тебя что рассердило, что я git предложил взамен твоему гудку или что я осмелился публично с тобой несогласиться по поводу моей интровертности?

Как ты тут выжил до двух звёзд, не самозабанившись в истерике?

А почему я должен совершать истеричные поступки, по твоему мнению? Истеричные поступки свойственно совершать вспыльчивым, эмоциональным людям, а я парень спокойный, рассудительный. Ты, с твоим уровнем проницательности и неинтровертности, конечно, давно должен был просечь тип моей личности. Мы же уже 2 часа знакомы и аж по 5 сообщениям. Практически, родные люди.

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

что мешает сводить одному из равных

То, что не нужно сводить

Ты: ну предлодите хоть одну альтернативу онлайн офису

Я: git

Ты: и как ты предлагаешь работать над одним документом?

Я: нарезали задачи каждому, потом кто-то свел в один документ

Ты: тогда получается что кто-то главный, а у нас все равны

Я: а что мешает сводить одному из равных?

Ты: то, что не нужно сводить.

Перечитай. Это ты сознательно вертишься или просто нить разговора теряешь?

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

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

Детский сад. Эдак вы ничего серьезнее планов на вечеринку не сочините.

появятся разногласия и нужен способ как-то решить что делать

Некогда решать, сдавать пора.

ээ.. так речь про учебу? И ты тут такой умный сидишь и поучаешь меня весь вечер как надо РАБОТАТЬ? (вроде, прозвучала такое слово) если речь про домашку, тогда я снимаю все свои аргументы. Там git совершенно ни к чему.

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

Ты просто не умеешь в постиронию и толерантность, старпёр :3

чиииииивоблядь.jpg

В толерантность я действительно не умею. И ты разучишься, когда жить своим умом начнешь, если не дурак, конечно

старпёр :3

Тебе кажется, что бросаясь хамством в незнакомых людей, которые не могут дать тебе подсрачника, потому что ты прячешься, ты выглядишь круто? Это не так. Ты выглядишь невоспитанным и трусоватым. Типа как тот шакал из Маугли, который ходил рядом с тигром и на всех тявкал дерзости, понимая, что никто ему ничего не сделает, пока тот рядом с могучим тигром. Это вовсе не делает мужику чести, не позорься

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

Не катит. Во-первых, половина необщажные и на дорогу в одно место посему тоже много времени уйдёт. Во-вторых, даже когда пытались так делать (на паре) — всё равно больше пустопорожних обсуждений и смехуёчек было, чем работы.

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

Ты ж даже не знаешь над чем я работаю,

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

Странно, что до вас никто не додумался до такой схемы

Почему ты так решил? Потому что тебе никто до этого подобных примеров не приводил?

Манифест за равноправие и работу без начальников?

Нет, лол. Разное было. То записка к проекту, то презентация к проекту, то презентация по заданной теме.

Сколько человек в команде?

По 3—4 было.

Кто дает деньги?

Тебе ж сказано — штудни :3 Кто сам за учёбу платит, за кого государство.

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

Где я верчусь? Я отстаиваю одну позицию. Ты предлагаешь левые вещи, которые к юзкейсам онлайн-офиса не относится и близко. Что в гите хранить-то, пердольный TeX? Так я со всего потока один в него умею. Бинарные документы для VCS не годятся.

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

Эдак вы ничего серьезнее планов на вечеринку не сочините

Что можем, то и выродим. Так у этого хоть общий потолок, а с одним сводящим упиралось бы в потолок сводящего.

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

если не дурак, конечно

Кто считает, что не дурак — самый большой дурак и есть :P Благодаря толерантности у нас в целом мирное общество. Хочешь WWIII, забыл уже, как бабки с дедками землю жрали и с трупами спали?

Тебе кажется

Мне ничего не кажется, я в СПГС не ухожу.

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

Сразу видно — у айтишника бомбит, что секретутки с электронными таблицами отбирают у него хлеб, потому что могут самостоятельно наварганить нужное в электронной таблице, пока ты прикручиваешь очередной тикет к CRM/SAP/etc, и поправить документ, пока ты обновляешь шаблоны в системе электронного документооборота ;-) Потому они и взлетели, а автоматизаторы сосут.

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

Зато секретутка не сможет набыдлокодить в виме консольную опердень. А то бы давно всех ойтишнеков заменили секретутками. Очень удобно: настрочила в ворд, взяла в рот, и т.д. Хотя щас такие ойтишнеки пошли...

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

А когда-то не умело?

┌┤~/wtmp/tests/lor/vim-swap├──────────────────────────────────────────────────────────────────────────────────┤cppmm@damned├─
└─> ps waux | grep [v]im
cppmm     1168  0.0  0.1  48792 11056 pts/8    S+   19:45   0:00 vim dir1/test.sh
cppmm     1423  0.0  0.1  48792 11224 pts/11   S+   19:46   0:00 vim dir2/test.sh
cppmm     1682  0.0  0.1  48792 11080 pts/12   S+   19:47   0:00 vim dir3/test.sh
┌┤~/wtmp/tests/lor/vim-swap├──────────────────────────────────────────────────────────────────────────────────┤cppmm@damned├─
└─> ls -la ~/.vim/swap/test.sh.sw*
-rw------- 1 cppmm cppmm 12288 дек 27 19:47 /home/cppmm/.vim/swap/test.sh.swn
-rw------- 1 cppmm cppmm 12288 дек 27 19:46 /home/cppmm/.vim/swap/test.sh.swo
-rw------- 1 cppmm cppmm 12288 дек 27 19:46 /home/cppmm/.vim/swap/test.sh.swp

shell-script ★★★★★ ()