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
Cool
catchers for someStr
methods
[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.gist
uniform [cf01f7a] Method
objects that don't have*%_
in their signature,.gist
ok [ac5f353]- Fix
DateTime
default stringification when the second is 0 [95de785] - Make
Blob/Buf.list
non-lazy so they can be used in hypers [6d146b5][291aa58] - Remove unnecessary parentheses from
Pair.raku
[35a827a] IO::CatHandle.slurp
did not accept:bin
parameter [42c4c3f]- Fixed some cases where
IO::Handle.slurp
was used without:close
[efab398] run
routine without
named parameter being aHandle
andmerge
flag
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-ok
subroutine ofTest
module 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 built
at runtime [4c026ab] - Fix inconsistent match result when using a code block in a regex [1e0474d]
- Fix error message related to
nextcallee
subroutine [136087e] - Fix regression in sequence operator [0a6456a]
- Fix reflection for . twigilled parameters [296fbcf]
- Fix
Parameter.raku
withOUTER
default values [87d2ff9][2f8538e] - Fix
Capture.WHICH
for subclasses ofCapture
[8808401] - Fix
Capture.EXISTS-KEY
for someCapture
values [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] INPUTRC
environment variable is now checked for a Readline config when using REPL [61a4836]- Add missing label support for some loop constructs [66a2250]
- Make
Real.sign
always return anInt
[42a303e] - Result of
reverse
called on aList
value with holes returns a
reverse of the list withNil
in place of holes instead ofMu
now [e9468d6][ca49c15] - Various small JVM backend related improvements [945a4d8][b4819e7][f6f8ac0][25a1929][717b326]
- Additions:
- Added
docs/IN-MEMORIAM.md
to commemorate departed contributors [9b6d89b][f9f3b66][170add2] - Implement support of environment variables
RAKULIB
andRAKUDOLIB
to eventually replace deprecatedPERL6LIB
[b3bb0d3][cc165a0][1fd660a][00c0dec][be9bb4b][30a3186][e8f7eb5][61124c3][013b47d] - Implement support for environment variables
RAKU_TEST_DIE_ON_FAIL
andRAKU_TEST_TIMES
to replacePERL6_TEST_DIE_ON_FAIL
andPERL6_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] dd
can now also handleBOOTContext
objects [8b70bfb]Str
now has.Date
andDateTime
coercers [d95d218]Date.yyyy-mm-dd
now takes a separator parameter, defaulting to-
[3017cfe]- Added
Date.dd-mm-yyyy
andDate.mm-dd-yyyy
methods [70ac9b7] IterationBuffer
now has a.Slip
method for easier iteration [d68fe5e]- Add
is implementation-detail
trait 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-month
andDate.first-day-in-month
methods [2fb7198][20ce556] - Add a
parents
metamethod 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-home
Configure.pl parameter [94fdb3d][59fe24b] - Make timing based performance tests opt in via
RAKUDO_RUN_TIMING_TESTS
environment variable [31ffc2b]
- Efficiency:
- Speed up compilation of large projects [c909258][6956c06]
- Make
raku -n
as 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
Failure
objects faster [79ca396] - Make default
DateTime
stringification about 12% faster [0e87235][d95141e] - Make all
IO::Path
filetest methods a few percent faster [76c20d2][355b520][bd9d7c1] - Make
IO::Path.mode
about 14x as fast [a093b7f] - Make
Date.yyyy-mm-dd
about 250x as fast [3017cfe][f9ecf6e] - Make accessing native shaped arrays about 15x faster [80f2aeb]
- Make
Seq.Numeric
andSeq.Int
slightly faster [b7b9358] - Make a number of traits around 2% faster [4bbe308]
- Make a minor optimization to a bunch of STORE methods [a4fbbfa]
- Make
Capture.raku
45% faster [5baa645][d6298ed] - Make
Capture.WHICH
60% faster [688f671] - Make
Capture.AT-KEY
2% 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.Rat
faster [f987cdb][2d1ba43] - Make
Date.succ
faster for days 28-31 [285da3b] - Make
Str.tc
about 10% faster [5610416] - Make
Supply.grab
a 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
any
Junction [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
IterationBuffer
its owniterator
method [2b49d68] - Adopt MoarVM-provided
value_desc_cont
[4221f82] - Add
Rakudo::Iterator.AllButLast
iterator [77defa7][aa5154e] - Add
Rakudo::Iterator.AllButFirst
iterator [4fe18a4] - Add and use
Rakudo::Iterator.ReifiedListReverse
iterator
[3ca3802][270cc27][cea0fc7][4025ca4][447b396] - Add
Exception.message
stub [2e60552] - Make
Mu.iterator
useRakudo::Iterator.OneValue
[65fdea7] - Make
Rakudo:Iterator.OneValue
aPredictiveIterator
[ec50b96] - Rename
SlippyIterator
toRakudo::SlippyIterator
[50f13f0][fa3c0db] - Don't use named variables between internal methods [9275057]
- Implement
VM.request-garbage-collection
[e223be5] Rakudo::Iterator.ReifiedList
now 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.
We are working to get the JVM backend working again but do not yet have
an estimated delivery date.
Footnotes
-
See https://raku.org/ ↩