LINUX.ORG.RU

Rakudo 2022.04

 , ,


1

1

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

>>> Полный список изменений

★★★★★

Проверено: hobbit ()
Последнее исправление: Satori (всего исправлений: 3)

Ответ на: комментарий от perl5_guy

Там нет сравнения рэкета с перлом напрямую, но есть сравнение рэкета с питоном и питона с 5 перлом, который быстрее шестого. Сравнивая производительность получаем неравенство Racket > Python > Perl 5 > Rakudo. То есть, Ракудо находится в самом низу пищевой цепочки языков. По-русски, «ненужно». Так понятнее?

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

Не знаю что внизу пищевой цепи, но результат работы этой цепи явно у тебя в голове плещется

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

Уверен что Racket действительно лучше чем Python3 примерно во всём

Примеры кода в студию, будьте добры. А то одни хеллоуворлды из которых ничего не понятно, что язык умеет.

crutch_master ★★★★★
()

Какой смысл писать на этом языке что-то массивное если они его правила и синтаксис меняют на лету? Сейчас написать 10к строк чтобы каждый месяц его переписывать под новый синтаксис? Зачем? Почему не заморозить на год синтаксис чтобы люди могли спокойно написать что-то длиннее hello world?

У нас есть 73k+ строк на perl5 (казалось бы, мы из ЦА на перенос на perl6 Raku) но нет ни малейшего желания пытаться это переписать на языке, синтаксис которого меняется каждый месяц и который, к тому же, медленнее чем perl5. В чем смысл?

PPP328 ★★★★★
()

@*_

Язык с таким синтаксисом не должен существовать.

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

Чёт злой я. Не обижайся. Rakudo это только реализация. Да эталонная, но правильней было бы писать …Perl 5 > Raku. Сравнивать языки по производительности… Такое. Учитывая что Raku пилят 1.5 человека, прогресс там колоссальный и язык очень интересный.

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

Сравнивать языки по производительности… Такое.

Ненене, погоди. У нас perl5-реализация слишком медленная. Перевод на условный С - дорого, пилим но медленно, слишком медленно. Проще было бы подобновить синтаксис на perl6, но станет еще хуже по производительности. Так зачем тогда нужен perl6?

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

Может я в глаза долблюсь, но не увидел. Виду кем сделан, вижу перечисление языковых конструкций, вижу какие-то незнакомые имена в кто использует.

Какие юз-кейсы то?

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