LINUX.ORG.RU

Вышел Ruby 2.0.0

 ,


2

4

Это свершилось! На двадцатилетие Ruby – вышел релиз … Очень символично. :)

Из новшеств:

  • Особенности в синтаксисе:
    • Keyword arguments
    • Module#prepend
    • %i — новый литерал для создание символьных массивов;
    • __dir__ — возвратит имя директории, в которой исполняется файл;
    • Кодировка UTF-8 по-умолчанию;
  • Встроенные библиотеки:
    • Новый движок регулярных выражений — Onigmo
    • Объектам Enumerator добавлен метод #size;
    • Enumerator#lazy
    • #to_h — новое соглашение о преобразовании в хэш;
  • Средства отладки:
  • Поддержка экспорта/импорта байткода;
  • Чистка кода, отсуствие устаревших библиотек;

Документация:

Наслаждайтесь программированием вместе с Ruby!

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

★★★★★

Проверено: tazhate ()

Как там с байткодом?

O02eg ★★★★★ ()

под это дело надо четвертые рельсы релизить

Mr_Gentoo ()

Ура-ура. Нет повода не выпить.

geekless ★★ ()

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

// пойду, в очередной раз потыкаю руби — может таки вставит.

helios ★★★★★ ()

Из всего нового, что бросилось в глаза, самое «крутое» — это Keyword arguments (у питонщиков позаимствовали...)

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

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

Тоже так думаю, что дело в этом.

renya ★★★★★ ()

Кодировка UTF-8 по-умолчанию

Киллерфича, однако!

CYB3R ★★★★★ ()

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

Новый алгоритм сборки мусора многообещающ, сейчас руби отъедает неприлично много оперативы.

Apple-ch ★★ ()

ARGF#lines

ARGF#chars

ARGF#bytes

IO#lines

IO#chars

IO#codepoints

IO#bytes

StringIO#lines

StringIO#chars

StringIO#codepoints

StringIO#bytes

Zlib::GzipReader#lines

Zlib::GzipReader#bytes

Все эти методы объявлены устаревшими! Вместо них следует использовать новые: each_line, each_byte, each_char и each_codepoint.

ins3y3d ★★★★★ ()

Объекты классов Fixnum, Bignum и Float являются неизменяемыми (frozen).

ins3y3d ★★★★★ ()

Сборщик мусора (GC) теперь отмечает неиспользуемые объекты в битовом образе (Bitmap Marking) и подавляет копирование страниц памяти путем Copy-on-Write, что заметно отражается на потреблении памяти, особенно на нагруженных серверах, где одновременно работают много ruby-процессов, разделяющих большую часть данных между собой. Сама пометка неиспользуемых объектов перестала быть рекурсивной, что сказалось на стабильности работы самого интерпертатора. Более подробное рассмотрение того, как работает новый сборщик мусора вы найдете здесь.

ins3y3d ★★★★★ ()

String

В класс String включен метод String#b, который возвращает копию строки в кодировке ASCII-8BIT. Также методы String#lines, String#chars, String#codepoints и String#bytes теперь вместо энумератора будут возвращать Array, обратите не это внимание. Такой код больше не работает:

    str.lines.with_index(1) { |line, lineno| ... }

ins3y3d ★★★★★ ()

TracePoint

Введен новый класс TracePoint как замена Kernel#set_trace_func или Thread#set_trace_func. Теперь отладка встроенными средствами не только проста, но еще и эффективна. Подробности ее использования описаны здесь. Пример использования (взят из презентации одного из разработчиков языка):

    # старый способ 

set_trace_func(lambda{|ev,file,line,id,klass,binding| 

  puts “#{ev} #{file}:#{line}” 

}

    # новый способ с TracePoint 

trace = TracePoint.trace{|tp| 

# получает доступ к информации о событии, используя встроенные методы 

  puts “#{tp.event}, #{tp.path}:#{tp.line}” 

}

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

Тоже так думаю, что дело в этом.

Да я в курсе, что рубям 20 лет стукнуло :) На днях тов. stevejobs в толксах писал.

helios ★★★★★ ()

А еще RDoc 4.0 и RubyGems 2.0.0.

Добавлен ключ –document для замены –rdoc и –ri. Если вам не нужна документация, просто указывайте –no-document, для чего-то конкретного - например, –document=rdoc (генерация только rdoc). По умолчанию генерируется только документация в формате ri.

Поддержка Markdown. Подробности - RDoc::Markdown.

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

Из всего нового, что бросилось в глаза, самое «крутое» — это Keyword arguments (у питонщиков позаимствовали...)

У лисперов. И, в какой-то степени, у смолтокеров

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

Ну, если так рассуждать — то почти все современные языки с поддержкой ООП все что-то у Smalltalk позаимствовали ;)

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

Все эти методы объявлены устаревшими! Вместо них следует использовать новые: each_line, each_byte, each_char и each_codepoint.

Они упоролись. :(

geekless ★★ ()

Кстате, а оно может успеть еще попасть в 6й дэбиан?

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

Keyword arguments
у питонщиков позаимствовали...

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

def foo(x = []):
  x.append(1)
  return x

print foo() # [1]
print foo() # [1, 1]
print foo() # [1, 1, 1]
anonymous ()
Ответ на: комментарий от anonymous

Oh, shi~... Это в питоне так? Да уж, действительно бредово — x разве не должен ограничиваться локальной областью видимости foo?

GreenBag ()

Кодировка UTF-8 по-умолчанию;

Сначала сломать, потом починить, повод для чейнджлога.

А вот dtrace хорошо.

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

С точки зрения психически здорового человека - пожалуй должен. С точки зрения опытного питониста - нет, потому что `foo' - это первоклассный объект, а `x' - это его атрибут.

anonymous ()

Кодировка UTF-8 по-умолчанию;

Шёл 2013 год.

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

Ruby:

def foo(x: [])
  x << 1
end

p foo # [1]
p foo # [1]
p foo # [1]

anonymous ()

Видел тред на одной странице)

Ruby рулит)

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

Воде как он был задуман 23 фев 1993, это скорее день зачатия, а не рождения. Если не ошибаюсь

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

Нет. В тестинге 1.9.3.

┌[lord] [work-hell-machine] [ssh]:~ 
└>cat /etc/debian_version 
6.0.7

┌[lord] [work-hell-machine] [ssh]:~ 
└>ruby --version
ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]

┌[lord] [work-hell-machine] [ssh]:~ 
└>ruby1.9.1 --version
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]

Это с родных реп. Всё ж от мейтейнера зависит то, если я не ошибаюсь.

Spirit_of_Stallman ★★★ ()
Ответ на: комментарий от Apple-ch

Выкатывать в продакшен то, что только-только релизнулось, да еще и с отломанным ньюреликом? На каких веществах сидит ваш CTO?

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

он ограничивается. Просто второй и третий раз вызывается тот же самый foo, в котором тот же самый ограниченный x.

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

Не тыкай, любой (новый) ЯП имеет смысл тыкать только если есть соотв. задача, для которой есть смысл использовать этот самый ЯП.

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

d_Artagnan ★★ ()

Поздравляю всех, кто использует в работе сей ЯП. Печально, что я никак не могу окончательно сформировать своё отношение к нему: оно периодически меняется от неприязни к интересу на грани с симпатией и обратно. С Python'ом в этом плане было проще: одного взгляда хватило, чтобы мгновенно понять, что это дикий никому не нужный бред. А тонкую восточную природу Ruby быстро постичь не удаётся.

CARS ★★★★ ()

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

JackDaniel ()

свершилось!

Он все такой же медленный?

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

Эх, программирование и алкоголь (даже самый самый) не совместимы также, как и алкоголь и жизнь. Быть животным или зомби - как-то не хочется.

Выход новой версии «инновационного» ЯП при остсутствии навыков общения со стоящими ЯП - это тоже хорошо. Быстрый старт Ruby обеспечивает с минимальными усилиями, пользы мало, зато запал большой и с каким-то результатом на выходе. Но нужны ЯП более основательные чем C++ или Ruby.

perestoronin ★★ ()
Последнее исправление: perestoronin (всего исправлений: 2)
Ответ на: комментарий от ins3y3d

В класс String включен метод String#b

Я правильно понимаю, это что короткий синоним метода String#bleat' ?

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

не знаю о чем речь, но скорее всего о чем-то отрицающем реальность, и разработанным исключительно для страны эльфов (очевидно в ней же).

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

Так это значение по-умолчанию, при чем тут keyword argument?

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