Announce: Rakudo compiler, Release #132 (2019.11)
On behalf of the Rakudo development team, I’m very happy to announce the November 2019 release of Rakudo #132. Rakudo is an implementation of Raku on the Moar Virtual Machine[^1].
This release implements 6.c and 6.d versions of the Raku specification.
6.c version of the language is available if you use the
version pragma, otherwise 6.d is the default.
Upcoming releases in 2019 will include new functionality that is not part of 6.c or 6.d specifications, available with a lexically scoped pragma. Our goal is to ensure that anything that is tested as part of 6.c and 6.d specifications will continue to work unchanged. There may be incremental spec releases this year as well.
The tarball for this release is available from https://rakudo.org/files/rakudo.
Please note: This announcement is not for the Rakudo Star distribution[^2] — it’s announcing a new release of the compiler only. For the latest Rakudo Star release, see https://rakudo.org/files/star.
The changes in this release are outlined below:
New in 2019.11:
- SPECIAL NOTES:
- Perl 6 is now Raku! This release comes with initial changes required for the language rename. For more info see Path to Raku
- Fixed the signature of
- Fixed laziness propagation in KeyValue/Pair iterators [abbd1285]
- Fixed loading of
COREs allowing for defining new symbols for new language releases [56af07bf]
$!from the calling lexical scope if called without arguments [56af07bf]
- Fixed a bug in
requirewith incorrect installation of imported submodules [56af07bf]
- Fixed outer signatures getting into string interpolation [7cab810b]
- Fixed segfault when using meta ops in threaded code [60cfbb39]
- Fixed Maps to keep containers [2ee82afe][42d6e0bc][cb1fbf66]
- Made sure
Date.new-from-daycounttakes right candidate [ac11774d]
- Fixed passing of formatter in operations on
.wrapwhen used with
- Fixed a bug when a wrapped method is called first [2e915d74]
:Dcheck when used with
- Made socket family handling portable [16607d3f][17f66039] [39b04dc9][7e106265][d7d8d37e]
- Fixed RakuDoc parser to allow empty config values [7c3b2572]
- Fixed handling of
- Fixed exception propagation with race inside race [9d1505d1]
- Fixed Proc to return Failure with non-zero signals [89fc9f35] [6b42d314]
- Made sure that doing keep/break on a vow more than once throws [c7ec96aa][0f31d353][5aa998f1][f32b86a9][b8f92d25]
- Made sure that
Backtrace.listlists all the frames [559c24f0]
- Made the
Buf.write-*methods return self [dae981e8]
- Allowed type objects on
- Fixed the signature of
- [6.e] Pseudo-packages now return
Failurefor a missing symbol (was
EVALno longer wraps evaluated code into own
COREcontext but shares the one used by the calling scope. It also means that
use v6.Xstatement is not effective inside
EVALs anymore [56af07bf]
- [6.e] Grammar now returns Failure when failing to parse [b21a5776][daebcd26][4cdd2d10][d46a9084]
- [6.e] Pseudo-packages now return
LEXICAL::pseudo-package includes all symbols visible in the lexical scope, including dynamic symbols from caller chain [56af07bf]
SETTING::pseudo-package includes all symbols from all available
UNIT::pseudo-package includes all lexicals visible at unit level [56af07bf]
- [6.e] Symbol binding is now possible for all pseudo-packages [56af07bf]
- Individual language-release
COREs are now accessible via
- Added GB2312 and GB18030 encodings [a95cb03b][4cee2c36]
- Added support for Unicode v12.1 [f5ef0b3c][7056a25a]
- Build system:
--perl6-homeconfigure options to set custom home dirs [e16e61a8]
RAKUDO_HOMEenvironment variable [dfeb7126][24abab8a]
- Added support for
- Fixed errors when building from a release archive [78c05c12]
- Fixed installation to
- Fixed build in folders with spaces [abc072cd][f1170895] [0365662e][f7f9b1fc][ceb457e1][12d9e34a]
- Created a process for making binary releases  [1c764404][f7b4d71f]
- Fixed libffi include issue [98e0bb68]
--libdirconfigure option [cdd57cd0]
- Fixed the build to not create folders outside the build directory [cbd1dc27]
- Minor build system fixes [165f3fbf][3d5c5517][579ac66e] [d487cd85][c2808b32][cfb0a267]
- General build system cleanup [90de22f8][983c3985][4ce5b7c5] [ff9272b1][608c6cdc][9fefa336]
- Made sure dependencies are not recompiled if another process already did it [23cfe1c6]
- Many small internal optimizations [f44c14c3][82fc4e57][af108863] [01b86fa8][c7056f20][0dd6573a][207b825e][e424248a][57f4a4c9] [19e075ff][c3926928][44a6a0de][696eea2d][1d4c21d0][6f5232f4] [3697325c][6297b0e4][519cfdeb][25abfe2b][1e2b0ec5]
- NQP vars and ops will now default to int instead of num [290cd792] [5876d38a][62e2555e][1e4d3ac4][cf6f6d92]
- Optimizer: Don't use Int*Ref in first arg
BYTE_SUPPLY_DECODERbreaking after exceptions 
.moarvmsize by replacing
- Stagestats are now shown for dependent precompilation [238f8e57] [960e5b4a]
- Added more tests for symbols in CORE and SETTING [5cd45f91] [53bb28d0]
nqp::p6client*family of ops for finding first Raku caller from different package and determining its language version [86525a3b]
Sprintf.pm6stub for development convenience [4bd25bf5]
- Fixed inconsistent state of NativeCall subs after repossession [573f6a2f]
- Fixed native subs declared in BEGIN blocks and role bodies [e45bb341]
- Fixed optimizer interfering with some native subs [d662912e]
- Fixed leaking an open file handle when re-precompiling [2dd570de]
The following people contributed to this release:
Vadim Belman, JJ Merelo, Aleks-Daniel Jakimenko-Aleksejev, Timo Paulssen, Patrick Böker, Stefan Seifert, Daniel Green, Elizabeth Mattijsen, Tom Browder, Will "Coke" Coleda, Juan Julián Merelo Guervós, Bart Wiegmans, Paweł Murias, Jonathan Worthington, Antonio, Ben Davies, Samantha McVey, threadless-screw, ZhongnianTao, Stoned Elipot, Altai-man, Luis F. Uceta, Jan-Olof Hendig, cfa, Christian Bartolomäus, Stéphane Payrard, Peter du Marchie van Voorthuysen, cygx, Greg Donald, Naoum Hankache, finanalyst, holli-holzer, Alexander, German Rodriguez Herrera, Nick Logan, Stefan Fischer, ab5tract, Chloé Kekoa, Dominika Góral, Paul Marquess, sarna, stoned, Aearnus, Claudio Ramirez, Clifton Wood, David Warring, Deven T. Corzine, Jack Kuan, Jeremy Studer, Jimmy Zhuo, Kent Fredric, Kevin Pye, Larry Wall, Mike Swierczek, Moritz Lenz, Nele Schwarz, Salve J. Nilsen, Skye Shaw, Suman Khanal, Tim Van den Langenbergh, Tobias Boege, alanrocker, lukasvalle, peschwa, tusindfryd
Additionally, we invite you to make a donation to The Perl Foundation to sponsor Raku development: https://donate.perlfoundation.org/ (put “Raku Core Development Fund” in the ‘Purpose’ text field)
The next release of Rakudo (#133), is tentatively scheduled for 2019-12-21.
A list of the other planned release dates is available in the “docs/release_guide.pod” file.
The development team appreciates feedback! If you’re using Rakudo, do get back to us. Questions, comments, suggestions for improvements, cool discoveries, incredible hacks, or any other feedback – get in touch with us through (the above-mentioned) mailing list or IRC channel. Enjoy!
Please note that recent releases have known issues running on the JVM. We are working to get the JVM backend working again but do not yet have an estimated delivery date.
[^1]: See http://moarvm.org/
[^2]: What’s the difference between the Rakudo compiler and the Rakudo Star distribution?
The Rakudo compiler is a compiler for the Raku language. Not much more.
The Rakudo Star distribution is the Rakudo compiler plus a selection of useful Raku modules, a module installer, Raku introductory documentation, and other software that can be used with the Rakudo compiler to enhance its utility.