LINUX.ORG.RU

Релиз Ruby 2.1

 


5

9

Прекрасный новогодний подарок преподнес Matz всем любителям и профессионалам программирования на языке Ruby — релиз Ruby 2.1. В целом новый выпуск языка и среды исполнения написанного на нем кода продолжает эволюционное развитие Ruby и практически не вносит кардинальных или ломающих изменений. Кроме того, что стандартный интерпретатор стал работать быстрее, заявлены следующие отличительные особенности Ruby 2.1:

  • Кэширование названий методов. Теперь когда интерпретатор встречает название какого-то метода объекта, он производит поиск этого метода, после чего сохраняет указатель на него в байткоде. Если у вас есть код, в котором для объектов одного и того же типа часто вызывается один и тот же метод, работа этого участка программы будет ускорена. Для проверки корректности сохраненного значения в кэше MRI использует внутренние счетчики потенциально опасных в плане инвалидации кэшированного метода действий.
  • Поддержка профайлинга кода на уровне MRI. Вы можете измерять производительность вашего кода и отслеживать работу сборщика мусора (благодаря подписке на события запуска/останова сборщика мусора и создания/удаления объектов).
  • Обновленный сборщик мусора RGenGC (с поколениями). Более подробно с ним можно ознакомиться в захватывающей презентации [pdf] с RubyConf.
  • Добавлены суффиксы i и r для записи комплексных чисел.
  • Определение функции (def) теперь возвращает символ ее названия вместо nil.
  • Работа над неоднозначностью объявления refinements, то есть расширения модуля или класса в пределах одного локального файла. Подробнее [pdf].
  • Наконец-то Array#to_h — создание хэша из массива.
  • Сокращение записи «замороженных» строк (str = «mystring"f).
  • Для ускорения операций над очень большими числами используется GMP (The GNU Multiple Precision Arithmetic Library).
  • Обновлены стандартные библиотеки BigDecimal, JSON, NKF, Rake, RubyGems и RDoc.
  • Удалена поддержка из коробки curses (гем curses теперь при необходимости надо установить отдельно).
  • А также многое другое! Подробный список изменений прилагается.

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

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



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

Вот чего я не пойму, это почему я сам не догадался так сделать:)

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

Ты, наверное, имел в виду папета, шефа уже частично на ерланг переписали, вроде.

У Chef серверную часть только переписали на эрланг.

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

Вроде как с выходом 2.0 он уже обгоняет питон по куче тестов.

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

А почему ты решил, что «дебага» в руби нет?

http://www.ruby-doc.org/core-2.1.0/TracePoint.html
https://github.com/cldwalker/debugger
http://stackoverflow.com/questions/3955688/how-do-i-debug-ruby-scripts

до кучи https://github.com/colszowka/simplecov

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

А почему ты решил, что «дебага» в руби нет?

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

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

Жопу десять раз порвешь преде чем поймешь, чо здесь вообще происходит.

УМВР, ну, дело хозяйское, зря что ли так много языков то наплодили :}

Deleted
()

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

Более вменяемых аргументов нет?

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

Ну, вообще-то просто 25 и 31 как-то не совсем одно и то же... Автору новости нужно было как минимум знать о том, что во всём цивилизованном мире основной праздник в году - это 25, под него приурочивают выход новинок и устраивают распродажи. И делают это зачастую люди, не относящиеся к какой либо религии. Традиция просто такая у людей. Когда-то в России всё было точно так-же. Пока не пришли коммунисты, и не убили царя...

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

В Ruby больше синтаксического сахара. А так - они очень похоже. Несмотря на различие в синтаксисе. Если Вам по душе языки вроде Perl - вы по достоинству оцените ruby.

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

Руби мне показался каким-то переусложнённым лишними сущностями. С другой стороны на руби обычно выходит меньше кода с __двойными__подчёркиваниями__.

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

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

Вот ничего не хочу сказать плохого про питон - многими вещами хорош, и всунут любителями почти в каждую дырку (что, в общем-то, плюс). И даже про минусы вспоминать не буду - их надо либо учитывать, либо подбирать другой инструмент. Но каждый «подъём души» потыкать его ещё раз (не трогал уже пару-тройку лет) очень быстро разбивается о «крик души»: Отступы!

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

yyk
()
Последнее исправление: yyk (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

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

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

Более вменяемых аргументов нет?

Мне не нравится питоносинтаксис, кажется каким-то небрежным и наколеночным. Ну а так оба хороши, оба можно юзать.

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

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

special-k 🤡
()
Последнее исправление: special-k (всего исправлений: 1)
Ответ на: комментарий от TDrive

Школьники в треде! Всем смеяться два часа!

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

Скрипты максимум 1к-2к строчек

Это уже в 10-20 раз больше чем максимальный размер того, что можно комфортно писать без IDE с автокомплитом и прочими удобствами.

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

я бОльшую часть времени провожу в дебаггере

А надо бы большую часть времени проводить за написанием юнит-тестов.

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

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

Более вменяемых аргументов нет?

Руби слаще.

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

я бОльшую часть времени провожу в дебаггере

А надо бы большую часть времени проводить за написанием юнит-тестов.

Одно другому не противоречит.

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

Одно другому не противоречит.

Гений арифметики, расскажи, как можно бОльшую часть времени проводить за двумя непересекающимися занятиями?

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

Гений арифметики, расскажи, как можно бОльшую часть времени проводить за двумя непересекающимися занятиями?

Гений программирования, расскажи, почему ты решил, что они не пересекаются?

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

Стандартный третий python побыстрее ruby будет. Pypy против Rubinius - не знаю.

Меня в ruby привлекают красивые итераторы и селекторы, символы и метапрограммирование для написания DSL, если при этом тебе не особо важна скорость. В python чисто эстетически не нравится двойные подчеркивания, передача self при объявлении методов. Да и табуляция для выделения пространств имен - не мое. В остальном не понимаю холиваров.

Но похоже, кто с чего начинал - тот с тем и остался. Хотя я сам - исключение, начинал как раз с python.

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

Просто в русском языке что symbol что character одно и то же - символ.

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

если ты в Рython вызываешь функцию то ты точно знаешь что вызываешь функцию

a + b

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

Гений программирования, расскажи, почему ты решил, что они не пересекаются?

Ты пишешь юнит-тесты не выходя из дебаггера?

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

Ты пишешь юнит-тесты не выходя из дебаггера?

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

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

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

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

Интерактивный дебаггер гораздо удобнее для быстрой разработки,

Дебаггер и быстрая разработка несовместимы.

а когда есть время можно и тестов накидать.

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

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

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

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

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

Ну так расскажи же нам, гений арифметики, как можно проводить бОльшую часть времени за написанием юнит-тестов, и одновременно опять же бОльшую часть времени в отладке?

Отладка кода, фейлящего с юнит-тестом, включается во время написания юнит-теста. Постарайся выйти за рамки арифметики начальных классов.

tailgunner
()

Добавлены суффиксы i и r для записи комплексных чисел.

Для ускорения операций над очень большими числами используется GMP (The GNU Multiple Precision Arithmetic Library).

Казалось бы, зачем это всё в язычке для написания хипстерских цмсок?

Удалена поддержка из коробки curses

Вот это, действительно, незачем.

yoghurt
()

зачем нужен руби, когда есть лисп (много разных лиспов)? без детских болезней, навроде отсутствующей поддержки utf-8 до версии 1.9...

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

Я перелез с битбакета на гитхаб, пока первого ещё не купил атлассиан, а второй не стал модным!

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

в чем коренное различие пайтона и руби?

Руби натащил себе полезного и не очень барахла. Там больше сахара, оно (почти) expression-oriented. ЯП старый, местами, на мой взгляд видны легаси-проблемы и странности в дизайне. Я поэтому на него и не решаюсь переходить.

Питон... Достаточно стройные абстракции и синтаксис. На мой взгляд, слишком заматерел и медленно развивается. Но, тем не менее, программировать на нём приятно.

А теперь хардкор. Щас мучаю livescript + nodejs, это вещь: реально заряженный хаскелеподобный(ML)-синтаксис с кучей плюшек, прогать на нём легко, исходники очень качественные. Работает шустро (js-движок V8). Минусы: 1) внутри это js 2) ошибки пишутся для js-кода. Выдвигаю на номинацию лучший синтаксис года. Подробности: http://livescript.net

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

отсутствующей поддержки utf-8 до версии 1.9...

13-12-26 17:50 2.0.0-p353 special-k@runo:~ rbenv shell 1.8.7-p374
13-12-26 17:52 1.8.7-p374 special-k@runo:~ echo "puts 'мальчик, ты здоров?'" > ~/t/are_you_ok_boy.rb
13-12-26 17:52 1.8.7-p374 special-k@runo:~ ruby t/are_you_ok_boy.rb
мальчик, ты здоров?
13-12-26 17:53 1.8.7-p374 special-k@runo:~ echo $LC_CTYPE
en_US.UTF-8
special-k 🤡
()
Ответ на: комментарий от true_admin

старый, местами, на мой взгляд видны легаси-проблемы и странности в дизайне

Интересное мнение. Можно подробнее и с примерами?

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

Дебаггер и быстрая разработка несовместимы.

Почему это?

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