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