On behalf of the Rakudo development team, I’m very happy to announce the
May 2020 release of Rakudo #135. Rakudo is an implementation of
the Raku1 language.
The source tarball for this release is available from
https://rakudo.org/files/rakudo.
Pre-compiled archives will be available shortly.
New in 2020.05:
- Fixes:
- Decontainerize attribute default values [d71761e]
- Fix
Coolcatchers for someStrmethods
[a91d7d7][63a7265][af8788b] - Update some internal documentation to use Raku name [f2cc20c]
- Add
Cool.contains(Regex)candidates [c3c1e8c] - Make format of all
QuantHash's classes.gistuniform [cf01f7a] Methodobjects that don't have*%_in their signature,.gistok [ac5f353]- Fix
DateTimedefault stringification when the second is 0 [95de785] - Make
Blob/Buf.listnon-lazy so they can be used in hypers [6d146b5][291aa58] - Remove unnecessary parentheses from
Pair.raku[35a827a] IO::CatHandle.slurpdid not accept:binparameter [42c4c3f]- Fixed some cases where
IO::Handle.slurpwas used without:close[efab398] runroutine withoutnamed parameter being aHandleandmergeflag
enabled now writes both stdout and stderr to the handle [1f83879]- A single whenever react based on a signal is now serialized by default [8aa25bf]
&cmp-oksubroutine ofTestmodule now works with objects without support for methods [fc0f78d]- Ensure meta-ops respect user-defined chain ops [ac012f1]
- Fix exception when mixing in roles that use
is builtat runtime [4c026ab] - Fix inconsistent match result when using a code block in a regex [1e0474d]
- Fix error message related to
nextcalleesubroutine [136087e] - Fix regression in sequence operator [0a6456a]
- Fix reflection for . twigilled parameters [296fbcf]
- Fix
Parameter.rakuwithOUTERdefault values [87d2ff9][2f8538e] - Fix
Capture.WHICHfor subclasses ofCapture[8808401] - Fix
Capture.EXISTS-KEYfor someCapturevalues [2d18cde] - Make (1..-Inf).reverse) work as intended [3983b4f]
- Make (foo .. foo).reverse correctly [c588323]
- Properly throw an exception on attempts to add a key to an immutable
Map[1a10b63] INPUTRCenvironment variable is now checked for a Readline config when using REPL [61a4836]- Add missing label support for some loop constructs [66a2250]
- Make
Real.signalways return anInt[42a303e] - Result of
reversecalled on aListvalue with holes returns a
reverse of the list withNilin place of holes instead ofMunow [e9468d6][ca49c15] - Various small JVM backend related improvements [945a4d8][b4819e7][f6f8ac0][25a1929][717b326]
- Additions:
- Added
docs/IN-MEMORIAM.mdto commemorate departed contributors [9b6d89b][f9f3b66][170add2] - Implement support of environment variables
RAKULIBandRAKUDOLIB
to eventually replace deprecatedPERL6LIB
[b3bb0d3][cc165a0][1fd660a][00c0dec][be9bb4b][30a3186][e8f7eb5][61124c3][013b47d] - Implement support for environment variables
RAKU_TEST_DIE_ON_FAILandRAKU_TEST_TIMES
to replacePERL6_TEST_DIE_ON_FAILandPERL6_TEST_TIMES[30e7a67][afff3b0] - Show timing information when installing core modules in build process [58e6135]
- Add multiple needles feature to
Str.index/rindex[4cec44a][cf02c2e] ddcan now also handleBOOTContextobjects [8b70bfb]Strnow has.DateandDateTimecoercers [d95d218]Date.yyyy-mm-ddnow takes a separator parameter, defaulting to-[3017cfe]- Added
Date.dd-mm-yyyyandDate.mm-dd-yyyymethods [70ac9b7] IterationBuffernow has a.Slipmethod for easier iteration [d68fe5e]- Add
is implementation-detailtrait and hide exposed internals with it
[12a3363][09c1b05][2ae9fdf][20c978e][78371bb][1d57d17][0c36feb] - Introduce
^...and^...^sequence generator operators [371590f][bbed225] - Add
Date.last-date-in-monthandDate.first-day-in-monthmethods [2fb7198][20ce556] - Add a
parentsmetamethod toMetamodel::ParametricRoleGroupHOW[8dcfa84]
- Added
- Removals:
- Build system:
- Fix CircleCI configuration [efba963][ffcc619]
- Be more robust when working with git reference directories that has spaces in path
[3ec5848][e6044df][2f0dd45] - Move prebuild archive scripts to scripts folder [e111420]
- Change update-submodules.pl to not use the shell at all [0ae8b4e]
- Fix installation of perl6 aliases [aeb418a]
- Move RUN_CLEAN_TARGET_FILES to a separate script [ffad102]
- Fix building non-moar backends on Windows [47650eb]
- Fix
--nqp-homeConfigure.pl parameter [94fdb3d][59fe24b] - Make timing based performance tests opt in via
RAKUDO_RUN_TIMING_TESTSenvironment variable [31ffc2b]
- Efficiency:
- Speed up compilation of large projects [c909258][6956c06]
- Make
raku -nas fast as manual iteration with.IO.lines[be9c139][5cad8fe] - Improve behavior of default
ThreadPoolScheduler,
increasing efficiency of multithreaded applications [77a2201][750abe0] - Make method lookup with the handles trait 13% faster in certain cases [af59492]
- Simplify "previous setting" logic [9f4a0f1]
- Make creation of
Failureobjects faster [79ca396] - Make default
DateTimestringification about 12% faster [0e87235][d95141e] - Make all
IO::Pathfiletest methods a few percent faster [76c20d2][355b520][bd9d7c1] - Make
IO::Path.modeabout 14x as fast [a093b7f] - Make
Date.yyyy-mm-ddabout 250x as fast [3017cfe][f9ecf6e] - Make accessing native shaped arrays about 15x faster [80f2aeb]
- Make
Seq.NumericandSeq.Intslightly faster [b7b9358] - Make a number of traits around 2% faster [4bbe308]
- Make a minor optimization to a bunch of STORE methods [a4fbbfa]
- Make
Capture.raku45% faster [5baa645][d6298ed] - Make
Capture.WHICH60% faster [688f671] - Make
Capture.AT-KEY2% faster [22c0a53] - Make
push(@a, foo)about 20x as fast [385ab4c] - Make
append(@a, foo)about 20x as fast [b98d2e0][1e4c736] - Make
unshift(@a, foo)about 20x as fast [6541775] - Make
prepend(@a, foo)about 20x as fast [9b735b7] - Make
Num.Ratfaster [f987cdb][2d1ba43] - Make
Date.succfaster for days 28-31 [285da3b] - Make
Str.tcabout 10% faster [5610416] - Make
Supply.graba few percent faster [e0336d5] ...(SEQUENCE) optimizations [fc8c828][935ee30][08545a3][d2ed7fa][fbf54e1][0fba27d]
[8fe30b9][58fa99b][cf6177e][75c6ac3][500dc66][9286def][1355924][99cb2fa]- CompUnit::* optimizations [1dbb227][0249f23][28bd424][b4cdccc][cb7be78][638c895]
[c9d9a09][83fed55][2cc509c][f1cdfb1][9d1b3f6][db6d230][7c9951c][83ddbab]
[196db68][551c157][07643d3][e56eddd][20d3713][b4d32c9][8ac2eec][4e3e937]
[6c7ffbd][17c45d8][8950380][747a35b][dedb744][cbd75f7][81ac37f][f54ad73]
[fae4d45][d55146b][e33fe87][b712789][e756e62][199888a][95e8906][5271d12]
[f48b80c][954e545][ef2d7d8][778ce37][1a0cc94][11b186c][dec40dc][d38d76d]
[f31bd5b][e1af740][33fc895][a62da30][0736bf7][437f9f4][6e95e1b][6723d3a]
[24fd100][b3f7ad2][c29a2bf][b07224f][7de42d4][7b5e143][68cadd7][f980898]
[bec2ac4][d66068c][31197cd][2899d73][d4231b1][c2a1ee9][6d3f1c1][dceef85]
[859d8f0][5ea1c34][2a58eb3][3d6e8d6][ea4bdf9][38a0eb8][2075489][13ca677] - Be better at inlining
anyJunction [76923be] - Optimize symbol lookup at compunit creation time [3583254][75da4cf]
- Numerous small optimizations and improvements [014d493][776ef80][8722687]
[49d1dcd][d8366ff][61b5e48][6793713][2edce41][d0e427d][0b414c0][88a9a36]
[604085f][f70d95e][db6048e][a66f5c2][80be7d1][a5535b2][0d5f87c][3c83ce7]
[3aaca26][43c7e96][dc7a796][e78483e][7bbf12d][b9b46c0][b0a720c][fcda03b]
[4339073][cfc6cc3][33f4196][0aa8b2a][9cabea0][9b50329][6bb8710]
- Internal:
- Update Appveyor perl requirement on Windows to 5.22 [370956b]
- Add optional "lazy" flag to
Rakudo::Iterator.SequentialIterators[101a80f] - Give
IterationBufferits owniteratormethod [2b49d68] - Adopt MoarVM-provided
value_desc_cont[4221f82] - Add
Rakudo::Iterator.AllButLastiterator [77defa7][aa5154e] - Add
Rakudo::Iterator.AllButFirstiterator [4fe18a4] - Add and use
Rakudo::Iterator.ReifiedListReverseiterator
[3ca3802][270cc27][cea0fc7][4025ca4][447b396] - Add
Exception.messagestub [2e60552] - Make
Mu.iteratoruseRakudo::Iterator.OneValue[65fdea7] - Make
Rakudo:Iterator.OneValueaPredictiveIterator[ec50b96] - Rename
SlippyIteratortoRakudo::SlippyIterator[50f13f0][fa3c0db] - Don't use named variables between internal methods [9275057]
- Implement
VM.request-garbage-collection[e223be5] Rakudo::Iterator.ReifiedListnow returns aPredictiveIterator[063bfa0]
The following people contributed to this release:
Elizabeth Mattijsen, Stefan Seifert, Will "Coke" Coleda,
Juan Julián Merelo Guervós, Daniel Green, Vadim Belman,
Tom Browder, Jonathan Worthington, Ben Davies, Patrick Böker, Alexander Kiryuhin,
Stoned Elipot, Christian Bartolomäus, Tinmarino,
Aleks-Daniel Jakimenko-Aleksejev, Luis F. Uceta, Salve J. Nilsen,
Wictor Lund, Jan-Olof Hendig, Dave Lewis, Martin Ryan, Samantha McVey,
lukasvalle, Chloé Kekoa, Konrad Bucheli, Mikhail Khorkov, Suman Khanal,
Timo Paulssen, Will Coleda, cfa, stoned, Carlin, Claudio Ramirez,
Ed Mangimelli, José Joaquín Atria, Justin DeVuyst, Moritz Lenz,
Patrick Boeker, Tim Smith, Tobias Boege, sztanyi.
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 use v6.c
version pragma, otherwise 6.d is the default.
Upcoming releases in 2020 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.
If you would like to contribute or get more information, visit
https://raku.org, https://rakudo.org/community, ask on the
perl6-compiler@perl.org mailing list, or ask on IRC #raku on freenode.
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 (#136), is tentatively scheduled for 2020-05-30.
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. See https://raku.org/ ↩
We are working to get the JVM backend working again but do not yet have
an estimated delivery date.
Footnotes