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)
Ответ на: комментарий от Apple-ch

Ну да, все и вся реализованное на ява машине. Ну а кроме-то.

special-k ★★★★
()
Последнее исправление: special-k (всего исправлений: 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
()
Ответ на: комментарий от anonymous

Когда лисп есть, то не нужен. Но обычно лиспа нет.

Debasher ★★★★★
()
Ответ на: комментарий от 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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.