On behalf of the Rakudo development team, I’m very happy to announce the
October 2017 release of Rakudo Perl 6 #116. Rakudo is an implementation of
Perl 6 on the Moar Virtual Machine1.
This release implements the 6.c version of the Perl 6 specifications.
It includes bugfixes and optimizations on top of
the 2015.12 release of Rakudo.
Upcoming releases in 2017 will include new functionality that is not
part of the 6.c specification, available with a lexically scoped
pragma. Our goal is to ensure that anything that is tested as part of the
6.c specification will continue to work unchanged. There may be incremental
spec releases this year as well.
The tarball for this release is available from http://rakudo.org/downloads/rakudo/.
Please note: This announcement is not for the Rakudo Star
distribution2 — it’s announcing a new release of the compiler
only. For the latest Rakudo Star release, see
http://rakudo.org/downloads/star/.
The changes in this release are outlined below:
New in 2017.10:
- SPECIAL NOTES:
- This release includes fixes to || alternation in :ratchet
mode. Code that was unintentionally relying on buggy behavior
(backtracking in :ratchet mode) may now produce unwanted
results (namely will fail to match) [963a0f0]
- This release includes fixes to || alternation in :ratchet
- Security:
- Deprecations:
- Fixes:
- Fixed Hash.perl to include Scalar indicators [47d6c66]
- Fixed :delete with lazy Arrays [0385b2a]
- Fixed sanitization of on-demand Supplies [93a66d7]
- Fixed duplicate done/quit messages [9e17935]
- Fixed non-blocking
react { await blah() }
[29863a0] - Fixed issues with Int.new [dff7d9b][0d2ca0d][0834036]
- Fixed isa method on a subset [cee1be2]
- Fixed Supply.zip to eager-shift its values [f9400d9]
- Fixed two utf8-c8 bugs [963a0f0]
- Fixed infinite loop in .^roles of a class that does Rational [0961abe]
- Changed uniname to give better strings for non-unique names [9dba498]
- Fixed .push-all/.skip-all on SlippyIterators [41896b7]
- Fixed and improved
**
regex quantifier [681d6be][4ca1fc3] - Made cmp-ok to try harder to give useful description [8479a1b]
- Made List.ACCEPTS non-fatal for lazy iterables [1b9638e]
- Fixed some unspace parsing cases [11070e0]
- Fixed &chdir failing to respect :CWD attribute [4906a1d]
- Fixed Blob.gist to trim its guts to 100 elements [ac8e5f4]
- Improved .perl and .gist methods on Maps and Hashes [aad8991]
[3946136][381c4c3] - Fixed explosion in IO::CatHandle.nl-out [8300844]
- Fixed .pick and .roll on object hashes [12fcece]
- Made cmp-ok take its arguments raw [3684384]
- Fixed
is default(Mu)
on attributes [54507ac] - Made Array.List fill holes with Nil [e135121]
- Fixed BagHash.grab with large values [975fcf6]
- Fixed .tail with large values [43e7b89]
- Improved .gist of nodal methods [b6982e6][bb1df2c]
- Fixed IO::Pipe.close not always returning the Proc [7432827]
- Fixed handling of type objects in set operators [8a88d14]
- Fixed location of errors coming from Channel [82a38c2]
- Fixed lockup when scheduling with degenerate delays [df01ad9][031f8cf]
- Fixed segfault in getlexdyn [4f5fc52][4c37007]
- Fixed poor error with some slurpies with defaults [a92950f]
- Fixed Int.new to properly give a new object [e4a5bb1]
- Fixed .STORE leaving behind elements on native arrays [a85c8d4]
- Various async improvements [633a15b][ef4d16f][f53d396]
[26a9c31][9d90340][0d600a0][5478392][e0e5e6f][b16aba0]
[d8890a8][73aeee6][2a82623][3deda84][f58ac99][40c2d0c]
[c46de00][e5c1746][6e42b37][80f883b][6af44f8][e70969e]
[30462d7][97b11ed] - Various fixes and improvements to hyper/race [cc2a064][2352efe]
[d43b373][dfa230f][1fdc84f][cef4806][ea51d19][374ee3e]
[ad0dd8e][41729e9][d74ba04][8367611][2580a0a][cf1673d]
[7e9b963][870eaa3][d37a19e][da97778][270e7c8][ee3f0f4]
[a042fd9] - Various improvements to warnings and error reporting [38186fc]
[cf95ce8][66c2d05][a845ac3][48a84d6][bb45791][279bae0]
[6542bb8][5747bc7][c7a82d4][fb7abf0][ac97a40][64b001a]
[1ea3297][56eef69][25c87d0][5d3ebc0][de2b9ff][084078e]
[3acde35][b3bb8c4][e611978][1277423][33e113a][9554a97]
- Additions:
- Improved .Capture semantics on all core types [4ba12ff]
[bad9fef][cd5864c] - Added trim* subroutines taking Cool instance [5a19dff]
[691f8b7][e01e5bc] - Added Lock::Async [53dd776][4a8038c][85bdd38][3889640][6170cb9]
- Added atomic reference op support on JVM backend [32e4a1d][59c4117]
- Added $*USAGE [0b15f67]
- Added :bin parameter to IO::Handle.slurp [e2ec569]
- Added support for Bufs in &EVAL/&EVALFILE [6c928d6]
- Added warning on typical precedence errors with infix:<..> [26bdc95]
- Added --repl-mode command line option [9ce896d][2051845]
[5c7bbea][93e599d][de0533c] - Implemented typed pointer increment and array dereference
[3ca6554][bc5fbfc][2fba0ba] - Added X::Numeric::CannotConvert exception type [2e72652]
[b377de1][f04bd1d] - Added IO::Handle.out-buffer for controlling the buffer size
[f9c10c2][765dd69] - Added IO::Path.parent(Int) for getting up more than one level
[7bea3a2][78d8d50]
- Improved .Capture semantics on all core types [4ba12ff]
- Removals:
- Build system:
- Efficiency:
- Made startup time up to 5 ms faster [48406db][a09f5f2][bb5583a]
- Made chained ops up to 36x faster [a92d036]
- Made ≥, ≤, and ≠ unicode ops as fast as ascii equivalents
[6ec21cb][1af2a74][43c348a][9ff2f98][6ad06fa] - Made &infix: with Version:Ds 7.2x faster [1d9553f]
- Made &DEPRECATED 27% faster when vfrom is too large [145e315]
- Made Blob.gist 26x faster [20a99fc]
- Made Hash.gist 24% faster [69af24c]
- Made @A[42..*] 4.2x faster [456358e]
- Various NativeCall speedups [a06ebaf][269fe7d][80d6b42]
- Significantly faster interpolation of variables into regexes
[1761540][0a68a18][d73d500][1775259][e8003c8]
[4d3ccd8][04b171b][317ae16][dd880ca][2262cc4] - Other small optimizations [9d4a833][6902c59][fb4eb66]
[b9c9853][4fae071][921db91][c91c401][98fae3d]
[a462d0a][16c2a15][5f6896b][397692a][476741e]
- Internal:
- New JIT [2724a85][ff063e7]
- Better scheduler [d2eb742][80b4932][340d8ed][c50d35a][9af5607]
[683037b][7c18112][c285b48][b5605c2][3b98fb9][596611c]
[6f6e62e][176a6fa][43b7cfd][59bfa5a][27590e8][e95eb42]
[2c4868b] - Added RAKUDO_SCHEDULER_DEBUG_STATUS env var [de311f4]
- Bumped libuv to the latest version [198b849]
- Reworked BUILDALL method autogeneration [9837687][63cf246]
[5ad2fff][31a03a4][eb9c3d4][346dfef][70ca505][af2ab75]
[5cd9197][6824e19][7363f89][4959df3][dd943ed][d3c4818]
[371befe][4d0ead2][92f239b][7fa707d][d76af6a][e513b85]
[f80a846][fcbd8ad][21788c8][e2f8a57][b58bd8f][0dd6af7]
[f946bd3][cef3bf3][92e51c3][5144216][ebd6440]
The following people contributed to this release:
Zoffix Znet, Elizabeth Mattijsen, Pawel Murias, Jonathan Worthington,
Aleks-Daniel Jakimenko-Aleksejev, Will "Coke" Coleda, Tom Browder,
Christian Bartolomäus, Samantha McVey, Daniel Green, Steve Mynott,
Patrick Spek, Stefan Seifert, Luca Ferrari, Brian S. Julin,
Rafael Schipiura, Timo Paulssen, Alex Chen, David Warring, Cuong Manh Le,
Naoum Hankache, Alex Wander, Nick Logan, Wenzel P. P. Peppmeyer, 陈梓立,
Jeremy Studer, Brian Duggan, Larry Wall, Jan-Olof Hendig, Jonathan Stowe,
Christopher Bottoms, Itsuki Toyota, Dan Zwell, Philippe Bruhat (BooK), gerd,
lefth, Viacheslav Lotsmanov, Robert Lemmen, Shlomi Fish, Altai-man,
Jarkko Haapalainen
as well as
Bart Wiegmans, Jimmy Zhuo, Joel, Julien Simonet, Justin DeVuyst, M, Mario, Martin Ryan, Moritz Lenz, Patrick Sebastian Zimmermann, Paweł Murias, bitrauser, coypoop, eater, mryan, smls
If you would like to contribute or find out more information, visit
http://perl6.org, http://rakudo.org/how-to-help, ask on the
perl6-compiler@perl.org mailing list, or ask on IRC #perl6 on freenode.
Additionally, we invite you to make a donation to The Perl Foundation
to sponsor Perl 6 development: https://donate.perlfoundation.org/
(put “Perl 6 Core Development Fund” in the ‘Purpose’ text field)
The next release of Rakudo (#117), is tentatively scheduled for 2017-11-18.
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.
The Rakudo compiler is a compiler for the Perl 6 language.
Not much more.
The Rakudo Star distribution is the Rakudo compiler plus a selection See http://moarvm.org/ ↩
What’s the difference between the Rakudo compiler and the Rakudo
of useful Perl 6 modules, a module installer, Perl 6 introductory
documentation, and other software that can be used with the Rakudo
compiler to enhance its utility.
Footnotes
Star distribution? ↩