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теперь потокобезопасны.




