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)

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

Строковый метод не нравится

Дело не в методе, а в том что кроме него (ну и устаревшего оператора %) строку не отформатируешь, а это тупое нагромождение кода. Сравни:

"Hello, {name}"
"Hello, {name}".format(name=name)
"Hello, %s" % name

Все варианты кроме первого убоги.

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

Да бы тоже закопал создателей js, но ведь альтернатив-то нету... Не, ну есть всякая маргинальщина типа dart и прочих костылей над ECMAScript... Но это какие-то полумеры.

А так я теперь могу приобщиться к веб-разработки и при этом гораздо меньше страдать.

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

Действительно странные, в Go же сплошной UTF8. Да и как «самой верной и точной» однобайтной кодировкой решать проблему необходимости наличия более двух языков, да еще и каких-нибудь китайских — непонятно...

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

вполне себе snprintf. Чем именно тебе не нравится? Где нагромождение? а как в первом варианте, в качестве name использовать - возвращаемое значение функции? Или лямбду. Или формулу?

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

А теперь хардкор. Щас мучаю livescript + nodejs, это вещь: реально заряженный

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

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

Кто бы что не говорил, это очень быстрый интерпретатор. Быстрее только ява, и то слегка, при том она гораздо страшнее, и будет тебе какой-нибудь swing вместо html5.

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

На нём можно скрепты писать и жизнь там таки есть. А десктоп пусть лучше на плюсах пишут.

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

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

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

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

Увы от пистона избавится не получится, те всегда где есть линь обязательно есть пистон. своего рода язык для всего.

Да пусть висит. Писать на питоне [мне] неудобно. Пишу на рубях. Все здоровы, зависимость есть :}

нода-жс

Зомби для мазохистов %)

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

GDB - это круто, но Pry - это больше чем дебаггер, и думаю хотя бы ради интереса стоит на него посмотреть (если не знаком).

Про Python: реализуемо и реализовано - две большие разницы. Мне как прагматику плевать на то, что «реализуемо». Мне важно то, что сейчас уже есть.

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

Я думал такие глупости уже не пишут, ан нет. Крепко почему-то думают, что Руби == Рельсы, и жизнь только на рельсе.

Ну если очень важна жизнь вне рельсы - советую обратить внимание не Chef, который был ранее полностью на Ruby, ныне сервер Erlang, клиент все тот же Ruby.

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

Крепко почему-то думают, что Руби == Рельсы, и жизнь только на рельсе.

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

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

Если каждая минорная версия руби, что сопровождаются изменениями abi и библиотечных методов - не страдания, но рубисты - мазохисты)

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

Гораздо лучше чем нихрена:)

хипстерские

С разморозкой)

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

С одной стороны, это не правда, с другой, выполнить bundle install - не проблема. На самом деле, я не хочу переносить джемы старой версии на новую.

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

Pry - это больше чем дебаггер

«Pry is an interactive shell for the Ruby programming language [...] It is possible to start Pry at any point inside a running program» - это? Я думал, что-то покруче.

Мне как прагматику плевать на то, что «реализуемо».

Да не вопрос, плюй.

Мне важно то, что сейчас уже есть.

Возможность запустить REPL из приложения есть уже сейчас.

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

Pry - да. Это интерактивная оболочка, но посильнее, чем классическая родная оболочка IRB, к которой еще куча плагинов, в том числе и для отладки, и работы с кодом.

Посмотреть исходники метода, например. Я имею ввиду, посмотреть исходники метода выбранного объекта, даже не зная его класс, даже если они метапрограммированные и так далее. Ну это один из примеров. Это сильно удобнее, чем просто отладчик, ИМХО.

Значит я отстал от Python жизни, и что-то упустил.

А этот RDB работает без Celery? То есть, его можно поставить и использовать отдельно?

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

То есть, пример в виде Chef - это для тебя подделка на рельсе, которая к рельсе не имеет отношения. Ну и да, эта поделка управляет серверами Facebook.

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

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

Python популярен, но уже давно разделяет пьедестал с Ruby, а тут еще и Node.js за счет тоны бывших верстальщиков теснит обоих.

Я всегда удивляюсь, как Python сообщество законсервировано в себе. Ну и вопрос популярности тоже собственно, вопрос.

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

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

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

Зачем нормальным людям собираться в группы психологической поддрежки?

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

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

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

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

Python популярен, но уже давно разделяет пьедестал с Ruby

когда руби хотя бы будут использовать Google, IBM, NASA, CIA (ЦРУ), Walt Disney, исследовательские центры и университеты, в науке, лабораториях, финансах, в играх, в вебе и т.д. и т.п., тогда руби «разделит пьедестал». А пока оно - сосёт.

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

Да хоть TIOBE, хоть Github, хоть популярность разных курсов на различного рода CodeSchool и CodeAcademy. Посмотри на то, что используют компании мира, и на чем разрабатывают ПО, какие утилиты используют в DevOps.

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

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

Да хоть TIOBE, хоть Github

А там данные противоречат друг другу: на github Ruby в ~2 раза популярнее PHP и в ~2.5 раза популярнее Python, а по TIOBE Ruby сливает PHP в ~5 раз, а Python - в ~2.5 раза.

Будет интересна статистика - в помощь гугл

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

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

Друг мой, да ты совсем отстал от жизни. Исследовательские центры и институты тоже используют Ruby, но там в принципе, что Ruby, что Python - побоку, когда есть Haskell, Scala, Ocaml, Lisp. Это слишком узкая выборка, и питона там не так уж много.

В финансах используют. Хочешь пример - RocketBank (его серверная часть на Ruby).

В вебе его больше, чем Python, сильно больше. Тут как бы чего доказывать - Rails это лучший фреймворк в парадигме request/response, который когда либо создавали (у него куча проблем, но остальное еще хуже).

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

Игры - есть компании, которые разрабатывают большие игры для VK например. Разрабатывать крупные большие игровые проекты, с крутой 3D графиков на скриптовом языке - это конечно был бы идиотизм, так что если на Python что то такое найдется - надо апплодировать стоя.

Про крупные компании я уже говорил. Тот же Facebook, Twitter. Те же 37signals. И Google, и NASA используют Ruby - http://www.ruby-lang.org/en/documentation/success-stories/

Вопрос в том, что мы вращаемся каждый в своем мире, так что не удивительно, что ты думаешь, что Ruby мало где используется - ты интересуешься Python, и вокруг тебя его много. Отсюда и ложное впечатление

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

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

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

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

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

Нет, конечно. Но я и не посылаю людей сосать, ссылаясь на статистику %)

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

Не-а. Я системный программист по специальности, и Python - меньшая часть моей работы. Так вот, в том, что я читаю для большей части моей работы, Python встречается гораздо чаще Ruby - биндинги, вспомогательные скрипты, отсылки к библиотекам.

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

Друг мой, да ты совсем отстал от жизни. Исследовательские центры и институты тоже используют Ruby, но там в принципе, что Ruby, что Python - побоку, когда есть Haskell, Scala, Ocaml, Lisp.

Нет, не побоку. Нет в этих центрах профессиональных кодеров, не юзают никакой хаскель и прочее. Последнее скорее удел самых продвинутых и является исключением, а остальные пытаются кодить на c/c++ и когда не очень получается берут питон. Не просто так появились scipy, numpy и много плотлибов для py.

Про крупные компании я уже говорил. Тот же Facebook, Twitter. Те же 37signals. И Google, и NASA используют Ruby

Весь вопрос в кол-ве. Да, он есть, но его юзают везде на порядки меньше. Это как бы факт.

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

Да ты упоролся. Этот твой зомборуби не нужен никому кроме хипстеров-вебдезигнеров на рельсах, раскопавших его из могилы. Также как objective-c, который лежал себе спокойно в могиле, пока его Джобс не раскопал для пущей несовместимости со всем остальным миром.

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

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

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

Фееричный бред! Питон в плане читаемости кода сосёт у руби с проглотом.

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

Встать...

... и аплодировать. Стоя, я сказал!

Разрабатывать крупные большие игровые проекты, с крутой 3D графиков на скриптовом языке - это конечно был бы идиотизм, так что если на Python что то такое найдется - надо апплодировать стоя.

http://www.eveonline.com/ru/ Пистон во все поля с DirectX. Хотя да, лучше бы был не он (и не пистон и не DirectX), но всё же... И уж не язык Ребе, это точно.

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

Садитесь...

... «два».

Также как objective-c, который лежал себе спокойно в могиле, пока его

Его Джобс как написал под NeXt, так он и был у яббла. Точнее, у Джоббса, всё-таки. Поддержка obj-c в gcc ни куда не пропадала всё это время. Язык не закапывался. И, кстати, objective-c во мноом эффективнее крестов. Вот только кресты породили ни с чем несовместимую особую... «культуру» програмистского идиотизма. С и objective-c это сделать не смогли, да и ненужно это было.

anonymous
()

А руби вырос. Раньше в тредах про руби рубистов лошили а щас питонщики даже отбиваются от рубистов. Хороший ЯП, для души.

RA
()

Еще как вариант ответа на «Зачем нужен Руби», на том же одеске работы по рельсам в три раза больше чем по джанге, да и платят больше :)

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

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

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

Что реально раздражает в Ruby, так это комьюнити, которое состоит из сплошной хипстоты, у которой нет ни малейшего представления о сложности алгоритмов. А уж написать расширение на C только гуру способны. В результате приходится ставить гемы с ключами --no-ri и --no-rdoc, потому что ждать, пока этот их тормознутый RDoc отработает, просто невыносимо.

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