2020.02
On behalf of the Rakudo development team, I’m very happy to announce the
February 2020 release of Rakudo #134. 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.02:
- Changes:
- Fixes:
- Fix mixing in Raku-level code to the grammar [992f1b8]
- Fixed concurrency issue with re-checking a precomp file's dependencies [f5ce80e]
- Ensure Rakudo can be located in a path with Unicode characters on Windows [4c6cd03]
- Smart matching a
Regex
no longer breaks if$/
is not a container [b777d6f] raku -v
now mentionsRaku
as the languages [15621b8]- Fixed typecheck on bound attributes (
is built(:bind)
)
[4b64338][8920343][8a46fca][d75a703] - Fixed location of REPL history and made the
RAKUDO_HIST
environment variable work [c5c98de][94713af] - Fixed problem with
.rotor
when given aSeq
[c7e0df6] - Restored exact stringification behaviour of
index
,indices
,contains
onList
[2176292] - Improved invalid TypeSmiley error message [246f20d]
- Assume 1 core is always available in case
nqp::cpucores
fails [1a7f16b] Lock.protect
now allows return of a container [b90beba]- Fixed
Parameter.raku
's handling of default values [21b8097][2aa4d09] - Work around spurious error in
Lock::Async
that
could lead to crashing [d18d6e9][2854144] - Fixed handle leak when chaining
Proc::Async
[cdbd60c] - Restore creating a
Parameter
instance using named arguments [b2c809e] - Fixed behavior of
eqv
operator on twoSeq
objects [76187b5] - Fixed variable declared by shape match in signature [ca78390]
- Fixed calling of a module sub without
&
and parentheses [e1faa70] - Fixed consuming of all
Channel
values which has prevented
reusing it in multiple react blocks [6fbfc4a] - Fixed usage of
$^a
withing a substitution regex [50ca2ed][adb85e4] - Fixed clonning of multi-dim arrays [4a954cb]
- Fixed
$*USER
and other dynamic variables coercion for some buggy cases [3a86272] - Fixed internal compiler error on parameter re-declaration [3498c54]
- Fixed unhandled exceptions in REPL [6bf227d]
- Fixed stringification if
Signature
for some edge cases [b2962b1][56ccd13] - Fixed
is rw
trait application to roles [4de852e][85660c8] - Improved error message when putting a positional parameter after a named one [8dcf1a8]
- Improved error message when referring to a non-existent class whose name contains a
::
[ca1e51c] - Improved error message for Buf stringification [539e96c][3f637af]
- Made sure
Version
objects can coerce themselves [5eb113b] - Various fixes for JVM backend [a08f043][5984ce9]
- Additions:
- Enable user-defined chaining operators to work [d027ee0]
- Added
prefix
andsuffix
methods toParameter
class which return
textual prefix and suffix of the parameter [bd68955] - Made an improperly typed default for an attribute a compile time error
[d8e859d][05b5f81][a8bb85a][b6fa5f5][13c9da9][4c0761a][c592b80] - Added
SetHash.set
andSetHash.unset
methods [6df78ca] - Added
BagHash.add
andBagHash.remove
methods [c1b8ff6] Str.contains
now also can take aRegex
[c3c5dae]- Add
:i(ignorecase)
and:m(ignoremark)
support to
index
,starts-with
,ends-with
,contains
,substr-eq
,indices
[49aaa6f][60b0d86][8498774][0b2236a][d91c773][2e3c091][46ef7f4]
[9f71002][19576d6][90fc61b][ec13c3d][ea44c19][327c74a][73c5a25]
[d49a418][5a716a3][7cb0481][0761a88][b140d7a][c2e608b][a6acfd0]
[aefc851][597288b][b32048d] - The
IterationBuffer
class now has aSeq
method [c87f5df] - The
Compiler
class now has abackend
method [61b416e] - The
Match
class now has areplace-with
method
[b43c839][1ac3c5c][7f3e852][cd4ab4f][930e518]
[488feaf][b4e0012] Cool.subst
doesn't need a replacement string anymore [dfb563a]Supply.first
now also works without a matcher [57dbc35]- Properly show enums, subsets and routine return type in
Pod::To::Text
output
[f60d969][91f8943][0b0a1aa] - Added
iterator
implementation forJunction
(fixes e.g. calling^name
on a Junction) [bceaeb1]
- Removals:
- Remove deprecated support for implicit
Distribution::Builder
prefix [593db2d]
- Remove deprecated support for implicit
- Build system:
- Implement an automated pipeline to create precompiled releases
[6504be7][d01d4b2][aaf9a93][8c995fe] - Implement
--git-cache-dir
Configure.pl option.
It can save time and bandwidth when doing more than one build [322b095][ac6c437] - Add a
--build-only
option forinstall-dist.p6
script [4c6c027] - made building optional when installing in
install-dist.p6
script [411db10]
- Implement an automated pipeline to create precompiled releases
- Efficiency:
- Simplify exception throwing in bootstrap [d18c69b]
- Made
Seq.list
return cached list if present [8ccfa87] - Made
.List
and.Slip
more efficient [d1d931a] - Made
Str.comb(Regex)
about 1.8x as fast [9e8adb6][4df7472] - Made
Str.split(Regex)
about 15% faster [931f5ae][ba2c58a] - Made
Supply.unique
a few percent faster [32bd4ed] - Made internal
Match
stringification a few percent faster [495ddcc] - Made various aspects of
Date
andDateTime
faster
[076ef98][ced67b8][b086a9f][99b67a4][e979f17][af8cca7]
[65d0422][b19c4ee][fa7d3bf][16962c8][c0e8091][0286904] - Made
Date.new(Str)
about 9.8x as fast [0408d6e][497afda] - Made
Date.new(Instant)
about 12.5x as fast [f91a161] - Made
Date.today
about 4.5x as fast [1d7a916][7a2d68f][1344419][8876e03] - Made
Date.earlier
/Date.later
between 1.5x and 5.5x as fast [4ebbddf][5943cbf] - Made
Date.succ
/Date.pred
(used in ++ and --) about 2.8x as fast [9707384] - Made
Date
integer arithmetic about 2.3x as fast [cfe2cdc] - Made
Date.Str
about 250x as fast with the default formatter [67022d4] - Made
DateTime.new(Str)
about 30% faster [578935e] - Made
DateTime.Str
about 90x as fast with the default formatter [a331ac4][2b7d5ff] - Made
Instant.new
a few percent faster [5b97dde][bd948ba] - Made creation of a
Junction
about 3.5x as fast [470f7fd] - Made
Junction.defined
between 15% and 40% faster [7a561d6][423d9ad][6844be9] Hash.DELETE-KEY
does one less hash lookup [9217b1c]- Made various aspects of
Proc::Async
faster [0c5a707][ca49dcb][1db4161][356bf3f][05916ef] - Made
Channel.list
around 16x faster [82bd76f]
- Internal:
- Preparations for UNIX sockets support [7c7d3b9][1a5b218][ed4226d][ce5b5de][62cb756]
- Simplify leap date updating logic [25c84b3][bdb0074]
- Removed perlcritic config file [5ac792a]
- Add support for
use BUILDPLAN class
[8fdce75] - Add support for nqp arrays to
dd
[255318e] - Change of
IO::Path!new-from-absolute-path
internal method signature [1d946e1] - Correctly set up values for
$*DISTRO
initialization [22d5ffc] - Change file extensions to Raku format
[61821ff][8c242d5][582c14a][5e9d98c][ea1cb40][3b8104e]
[4677f74][ac652c0][e572320][deac440][7b67960][416fd51]
[ca99c7c][5437517][82ea329][4ec31e2] - Other internal changes related to Perl 6 -> Raku migration
[10e5390][8fd7172][af29258][81014e7][925e73d][dd7b4ce] - Tests added [2132019][ffabf8d]
- Remove unused
nqp::p6decodelocaltime
as NQP hasnqp::decodelocaltime
[e2ba546][663c427] - Rename the
Junction
$!storage
attribute to$!eigenstates
[1a6f83c][911cac4] - Simplify fetching of the kept
Promise
sentinel inLock::Async
[e81e516] - Simplify
Parameter.raku
implementation and improve how it handles parametert names [3f6a2a2] - Added
*_RUNNER_OPTS
variable to Makefiles [701c38d] - Make
rakudo
binaries default ones andperl6
to be aliases,
as well as include some other renaming-related changes
[f5f6f76][23ca695][519a741][536a2d2]
The following people contributed to this release:
Elizabeth Mattijsen, Juan Julián Merelo Guervós, Jonathan Worthington,
Stoned Elipot, Vadim Belman, Patrick Böker, Daniel Green, Will "Coke"
Coleda, Alexander Kiryuhin, Ben Davies, Stefan Seifert, Trey Harris,
Christian Bartolomäus, Josh Soref, Aleks-Daniel Jakimenko-Aleksejev,
Brian Duggan, Luis F. Uceta, Mikhail Khorkov, Tom Browder, Jan-Olof Hendig,
Jeremy Studer, Konrad Bucheli, Rod Taylor, Samantha McVey, Bahtiar Gadimov,
Ven de Thiel.
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 find out more information, visit
https://raku.org, https://rakudo.org/how-to-help, 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 (#135), is tentatively scheduled for 2020-02-22.
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.
-
See https://raku.org/ ↩