Rakudo — компилятор языка программирования Raku, до октября 2019 года называвшегося Perl6. Компиляция осуществляется для MoarVM, JVM и других виртуальных машин.
Изменения
- Улучшено сообщение об ошибке, вызванной переназначением специальной переменной
$/(PR исправления).
Нововведения
- появилась возможность получать доступ к предыдущим значениям REPL-консоли:
[0] > 42
42
[1] > 666
666
[2] > $*0 + $*1
708
[3] > $*2
708
[4] > @*_
[42 666 708 708]
- добавлена переменная окружения
INSIDE_EMACSдля улучшения интеграции с Emacs; - добавлен метод
IO::Path.dir-with-entries, возвращающий значение типаBoolи помогающий безопасно проверить пуст ли каталог; - реализовано свойство
will complain;
Удалено
- недокументированная константа
$?COMPILATION-ID.
Производительность
IO::Path.mkdirв случаях когда каталог уже существует работает в два раза быстрее;- внутри многих методов ускорена работа с пустыми (
Empty) значениями. ТеперьEmptyвозвращается сразу, без инициализации итераторов и последовательностей; - несколько оптимизаций в подстановочных регвырах ( 1,2,3);
- микро-оптимизации для ускорения компиляции кода;
- микро-оптимизации для ускорения загрузки модулей;
- микро-оптимизация ускоряющая создание объектов
IO::Special.
Исправления
- Добавлена подсказка о возможно пропущенном ключевом слове
sub. Пример:
Variable '$verbose' is not declared. Perhaps you forgot a 'sub' if
this was intended to be part of a signature?
- Откатили код с ошибкой этапа компиляции: «An object will never work if native is expected».
- Теперь значение
$/изменяется во время подстановки только если указанная переменная доступна для записи. - Любые скрытые файлы (dotfiles) в «dist» каталоге теперь игнорируются (описание проблемы).
- Инициализация
*CWDперестала быть ленивой для предотвращения гонок. - Переменные
PROCESS::теперь инициализируются по одному разу. - Загрузка настроек защищена блокировкой.
- Исправлены гонки в
Rakudo::Supply::BlockState. uniprop/unipropsтеперь потокобезопасны.



