Тихо и незаметно вышла версия 2021.04 компилятора языка программирования Raku - Rakudo. Компиляция осуществляется для таких виртуальных машин как: MoarVM, JVM и другие. На данный момент, Rakudo является самым развитым воплощением языка программирования Raku. Данный выпуск реализует версии 6.c и 6.d спецификации.
Следующий релиз предварительно запланирован на 21 мая.
Для команды разработчиков очень важна обратная связь! Будьте любезны оставить отзыв если используете Rakudo. Вопросы, комментарии, предложения, улучшения - рады любой обратной связи!
Желающие поддержать развитие Raku могут сделать пожертвование в The Perl Foundation (Выберите «Raku Core Development Fund» в графе «Purpose»).
Некоторые изменения 2021.04:
- Нововведения:
- Для Enum добавлена поддержка методов: keys, values, kv, pairs, antipairs, invert. Пример:
my $e = enum ('a' => 3, 'b' => 17); say $e.antipairs; # (3 => a 17 => b)
- Метод uniname теперь работает для всех значений типа Cool, в том числе Num и Match
say 1.0.uniprop('Numeric_Type'); # OUTPUT: «Decimal»
- В IO::Path добавлены методы user и group:
my $io = IO::Path.new('slackware-user', :CWD</home>); say $io.user; # OUTPUT: «1000»
- В DateTime добавлены методы day-fraction, modified-julian-date и julian-date
my $now = DateTime.now(formatter => { sprintf "%02d:%02d", .hour, .minute }); say "$now ", ( $now.day-fraction * 100 ).fmt('%d%%'); # OUTPUT: «21:26 89%»
- Для Enum добавлена поддержка методов: keys, values, kv, pairs, antipairs, invert. Пример:
- Улучшения производительности:
- now теперь работает в 38 раз быстрее.
- Str.wordcase ускорен в 5 раз.
say "raku programming".wordcase; # OUTPUT: «Raku Programming»
- Str.uniparse стал быстрее ~10%
say "I {uniparse 'TWO HEARTS'} Raku"; # OUTPUT: «I 💕 Raku»
- lines и words ускорены в 20 раз
say lines("a\nb").raku; # OUTPUT: «("a", "b").Seq» say "hello world".words.raku; # OUTPUT: «("hello", "world").Seq»
- my %h is QuantHash = ... ускорен в 5 раз
- Int.unival и Str.unival так же были ускорены
say '¾'.unival; # OUTPUT: «0.75»
- Str.ords стал в два раза быстрее
say '€¥$'.ords; # OUTPUT: «(8364 165 36)»
- Ускорены методы List.sum и Any.sum
- Метод chrs стал быстрее для специфичных для используемой архитектуры int-массивов
say <67 97 109 101 108 105 97>.chrs; # OUTPUT: «Camelia»
- Метод uninames ускорен в два раза
say ‘»ö«’.uninames.raku; # OUTPUT: «("RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK", "LATIN SMALL LETTER O WITH DIAERESIS", "LEFT-POINTING DOUBLE ANGLE QUOTATION MARK").Seq»
- Str.univals ускорен на 50%
say "4a¾".univals; # OUTPUT: «(4 NaN 0.75)»
- Datish.daycount вычисляется быстрее на 30%
# к-во дней с 17.11.1858 say Date.new('1995-09-27').daycount; # OUTPUT: «49987»
- uniprop ускорен в 30 раз, а uniprops в 4 раза
- Baggy.AT-KEY быстрее на 60%
my $breakfast = bag <eggs bacon bacon bacon>; say $breakfast.AT-KEY('bacon'); # OUTPUT: «3»
- Пустые итераторы отрабатывают быстрее
- Микрооптимизации цикла for
- Микрооптимизации запуска
Списки исправленных ошибок и внутренних изменений достаточно крупные, с ними можно ознакомиться по ссылке.
Наслаждайтесь!
>>> Подробности