Релиз Perl6-дистрибутива «Rakudo Star» 2015.11

Темы:

28 ноября 2015 года был выпущен ноябрьский релиз Perl6-дистрибутива «Rakudo Star» 2015.11. Это первая официальная бета-версия дистрибутива (поскольку октябрьский релиз так и не появился).

Этот релиз «Rakudo Star» был выпущен с поддержкой бэкенда MoarVM (все модули проходят тесты на всех поддерживаемых платформах). JVM бэкенд в данной версии не является полнофункциональным, поэтому рекомендуется использовать только бэкенд MoarVM.

В мире Perl 6 есть различие между языком «Perl 6» и конкретной реализацией языка, такой как «Rakudo Star». Данный релиз содержит компилятор Perl 6 Rakudo 2015.11 с кодовым именем «Bend» и бэкенд MoarVM 2015.11, а также различные модули, документацию и другие полезные ресурсы от сообщества.

В новой версии Rakudo Star:

  • Новый инфикс оператор <.> для вызова методов с меньшим приоритетом, чем постфиксный унарный вызов метода.
  • Новый оператор infix o для компоновки функций
  • Реализован оператор fc для корректного Юникод фолдинга символов
  • grep принимает атрибуты :k, :v, :kv, :p
  • Supply.throttle для ограничения скорости
  • Array.push теперь используется, чтобы добавлять один элемент; Array.append для добавления нескольких. Тоже самое для unshift/prepend.
  • Нотация v для цифро-буквенных компонентов: v1.2.beta.
  • Множество встроенных методов, возвращающих итерабельный объект, заметно ускорились в работе
  • Начальная поддержка фиксированных (shaped) массивов
  • \r\n теперь единая (синтетическая) графема
  • Поддержка Юникода в соответствии с Annex #29
  • Юникод-кавычки можно использовать в регулярных выражениях
  • Улучшенная поддержка переносов строк с use newline и обновление IO::Handle
  • Добавлены методы List.head, List.tail, List.repeated
  • В Str.encode теперь можно использовать параметр :replacement для замены последовательностей не подлежащих перекодированию
  • Str.split теперь может принимать на вход несколько строк
  • Новый Range.int-bounds возвращает первое/последнее значение для целых диапазонов
  • Автогенерируемые мета-операции оживляют путём установки ссылки на них, вместо их выполнения
  • Некорректное присвоение различных Numeric значений теперь выдаёт ошибку во время компиляции
  • Реализован &nextcallee, теперь возвращает подпрограмму, которую будет выполнять nextsame
  • Ускорение различных операций

Улучшения в модулях:

  • DBIish: улучшена поддержка Windows
  • panda: install больше не является операцией по умолчанию
  • LWP::Simple: поддержка кодов 2xx (помимо 200)
  • Shell::Command: команда which для поиска исполнимых файлов

Ещё до конца не реализовано, но запланировано в следующем релизе:

  • Поддержка расширенных макросов
  • Неблокируемый ввод/вывод