Releases: rakudo/rakudo
2020.08
On behalf of the Rakudo development team, I’m very happy to announce the
August 2020 release of Rakudo #138. 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.08:
- Changes:
- Methods
name
andusage-name
ofParameter
now return an emptyStr
,
when there is no name, instead ofNil
. Methoddefault
returnsCode
type object,
when no default was provided instead ofAny
type object [c11f4b1] - Remove redundant
(())
fromMap.new.raku
[491e1de] - Routine
done-testing
ofTest
module returnsBool
now,
indicating if the tests passed or not [337848f]
- Methods
- Deprecations:
- Deprecate
--nqp-lib
command line option,
which had no effect for more than a year [9071653]
- Deprecate
- Fixes:
- Make
X::Method::NotFound
exception more user-friendly
[b36afcb][760034e][eb0ca2a][66adb77][acc5e64][4546a60] - Fix false positive typechecking exceptions for some generic types
[3d5fba7][973b83d][8d40691][1db17c4][1eb712d] - Ensure
Routine
subtypes are composed before performing mixins with
their instances [7f2ae26][e3c2646] - Fix mixing in a role with attributes into a NQP class [1b5f6b9][9e51d01]
- Make exceptions thrown by supply iterators don't claim to have
originally been thrown within the iterator itself [fcfc60b] - Fix
Baggy.pickpairs
called with aCallable
[08f81f2] - Fix a rare, yet possible data race [9d6d8dd]
- Make
- Additions:
- Add
set_parameterizer
,parameterize_type
,type_parameterized
,
type_parameters
andtype_parameter_at
methods forMetamodel::Primitives
[2ab9442]
- Add
- Internal:
- Type
Parameter
methods [c11f4b1] - Fix release pipeline to not delete the GNU/Linux build [4ad4bd3]
- Make
Rakudo::Internals::JSON
up to 4.4x as fast [b60e163][43bd739] - Do roast-related cleanup, add
quicktest
make target
[1e20dfc][6fd0981][333ce78][dd8cd41] - Rework
tools/update-passing-test-data.pl
to support backends [ea0c98c] - Make
main-version.nqp
a backend-specific configuration file [80b0747] - Add a
Perl6::SysConfig
class [ace5e22] - Simplify binary release instructions a little [27eb5ea]
- Add tests to make sure profilers can be invoked [d7aa7e6]
- Remove an outdated workaround from
Cool
implementation [a3af583] - Fix incorrect method call [02a8344]
- Type
The following people contributed to this release:
Vadim Belman, Juan Julián Merelo Guervós, Will "Coke" Coleda, Patrick Böker,
Elizabeth Mattijsen, Alexander Kiryuhin, stoned, Daniel Lathrop, Timo Paulssen,
Stoned Elipot, Christian Bartolomäus, Tom Browder, rir, Ben Davies,
Daniel Green, Jonathan Worthington, Paul Cochrane, Stefan Seifert,
Daniel Sockwell, Nicholas Clark, Antonio, Tobias Boege
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 (#139), is tentatively scheduled for 2020-09-19.
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/ ↩
2020.07
On behalf of the Rakudo development team, I’m very happy to announce the
July 2020 release of Rakudo #137. 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.07:
- Fixes:
- Improve "Method not found" error message for some rare cases [0a86798]
- Fix calling
.say
/.put
/.note
methods on Match objects [9f546ef] - Add word wrapping to numerous error messages, improve wording
[eb589c0][1b84e03][3cb29a0][6db1fb1][80aaede][4203186][f70a3cc]
[3ffed2f][a7a1fe2][cd8846a][83a126b][3add861][3d9a9fc][697596f]
[56e5f7d][88b0e7a][7a93c90][f550c9f][a4b982c][9396343][58685ee]
[5f423a7][92f8c19][5627e02][5b7ecdc][a745505][f96a641][1f93724]
[98c7e51][248664c][3bc4fa9] - Wordwrap
Mu.WHY
[16d24a2] - Fix check for valid Raku module extension to be an exact match instead of suffix-like one [d4eef8d]
- Fix result of
.raku
method called on a generic typed array [90f86d4]
- Additions:
- Set equality operators:
(==)
Unicode≡
and≢
which allow to check
for sameness of the operands using QuantHash semantics
(for example,1,2,3 (==) 3,1,2
returnsTrue
) [701f4cf][dbd69ba] - Add support for Supply.tail(*) and .tail(Inf) [9ccfc90]
- Add support for Supply.tail(*-3) [eaa72af]
- Make
Supply.head(*-3)
consistent withList.head(*-3)
[5c8c732][70e5cfb] - Rakudo now supports the
--rakudo-home
command line option to specify the path of the Rakudo home [914bcba]
- Set equality operators:
- Efficiency:
- Internal:
- Micro-optimize
buf8.new
creation code in compiler [ed936c1] - Give
Supply.tail
its own candidate [1a91af8] - Add
Str.naive-word-wrapper
(implementation detail)
[056d6a4][9ea66e1][6db1fb1][4589349][821f582][3674f81] - Make
IO::Path
use its own.succ
/.pred
logic [305fc7b] - Remove placeholder files [07009cc]
- Re-imagine
CompUnit::Repository::FileSystem!distribution
[f3b1c8d] - Change
perl6
toRaku
in nqp-configure submodule URL [ddebab5] - Refactor
Rakudo home
andNQP home
handling [e4f020c] - Do core setting name mapping via compiler config [6e087e1]
- Fix for spectest not seeing Inline::Perl5 [d563072]
- Micro-optimize
The following people contributed to this release:
Elizabeth Mattijsen, JJ Merelo, Timo Paulssen, Patrick Böker, Alexander Kiryuhin,
Nicholas Clark, Vadim Belman, Will "Coke" Coleda, Antonio, Ben Davies,
Christian Bartolomäus, Daniel Green, Jonathan Worthington,
Richard Hainsworth, stoned, Stefan Seifert, Daniel Sockwell,
Joshua Yeshouroun, Nick Logan, Trey Harris
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 (#138), is tentatively scheduled for 2020-07-20.
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/ ↩
2020.06
On behalf of the Rakudo development team, I’m very happy to announce the
June 2020 release of Rakudo #136. Rakudo is an implementation of
the Raku[^1] 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.06:
- SPECIAL NOTES:
- Results of
dir
routine called with dirty base path are presented
as cleaned up for some paths (like///
ora/../a
) unlike
before. While compatibility with most of other cases is preserved
and no ecosystem fallout was observed, be cautious of the possible
observable changes if the code does not clean dirty paths usingcleanup
method. - Since this release, when you start Raku with "-" as a single positional parameter, it
will now check if STDIN is connected to a terminal. If it is, then
the REPL will be started, rather than appearing to freeze waiting
for the user to enter something and issue an EOF. If STDIN is not
connected to a terminal, then Raku will read from STDIN and process
that as the source of a program. - The
run
routine,Proc.spawn
andProc::Async.new
are
extended with a new argument:$win-verbatim-args
defaulting to
False
. If the argument is left off or set to False, the
arguments are quoted according to the Microsoft convention. This
is identical to Rakus previous behavior and thus backwards
compatible. When passing True the passed arguments are
concatenated with a single space. No other processing takes
place. This allows to manually quote the arguments as necessary.
- Results of
- Changes:
- Support verbatim argument handling for
Proc
[709941c][9a75738] - Signatures of
slurp
andspurt
routines not accepting redundant arguments is
now compile time error rather than run-time one [22f4344] - The
Distro.desc
method now states codename for MacOS [b4b2a5e] - The
gist
method output for multi-dimensional arrays is truncated now [cfc3e57][4bfe5bd] - Parametrization a variable type in form
my $foo is Type[Foo, Bar]
works for all types now [de43f19] - The
rotate
method now returnsSeq
instead ofList
[4b501bd] - Add CACHEDIR.TAG to mark cache dirs as cache [37646b8][c3bdb61][ef90599]
- Improve GNU C++ name mangling [4f672c2]
- Make
Instant.raku
output simpler [c0b5fb2] - Improve smartmatching against
Mu
/Any
/Junction
types
(Mu.new ~~ Mu
does not die anymore,any(Mu, Any) ~~ Mu
returnsTrue
now) [3b4794f][840d3e8]
- Support verbatim argument handling for
- Fixes:
- Fix code objects created BEGIN time EVAL getting lost in precompilation [537f887][169f63d]
- The
is
routine fromTest
module now handles types that cannot be stringified and
compares them usingraku
method now [c9e9462] - Fix various JVM and JS backend issues [8e5b610][2b81f97]
[12f8f1e][5b86436][1464b35][a059373][9fe471c] - Fix BEGIN time
EVAL
accidentally running CHECK phasers of the outer comp unit [eeb4f43][b874c68] - Fix results o
"١٢٣".Numeric
and"١٢٣".Int
[c2e8b22] - Fix race in
PIO
method ofIO::Handle
[f33ce01] - Fix
Date(now)
call [9dcbc5f] - Fix
.comb(Str)
to ensure non-overlapping results [8d5a0f7] - Fix
Instant.raku
for Rational values [f506cc0] - Fix sorting of 2 element native arrays [becb85e]
- Make sure
push-all
does not push when exhausted when splitting using a regex [077300c] - Improve error message for method calls placed after white space [4278e4c]
- Improve
X::Syntax::Variable::MissingInitializer
exception's error message [ee005d8] - Improve
X::Method::NotFound
exception's error message to only suggest a submethod if correct [b02a741] - Improve
malformed loop spec
related errors [d3c3e53] - Improve error message for case of too many directives in routine
sprintf
[c988f83] - Improve detection of a version control conflict marker to provide an error message [65e412f]
- Additions:
- Add
IO::Handle.do-not-close-automatically
method [61046d7][999d04a] - Add
IO::Path::Parts
class [4387f28][187312b][e9ea048][30ae200] - Add support for
printf($format, Junction)
[110324d] - Add
Supply.rotate
method [9f7c927] - Add
Capture.EXIST-POS
method [6a4f79e][b55ecdf][3372352] - Add
RAKU_REPL_OUTPUT_METHOD
environment variable which sets
the method used to stringify a value of an expression in REPL, default isgist
[285717a] - Add
:chomp
named argument toStr.lines
similar to the same named argument ofIO::Handle.new
[1bcc5d7]
- Add
- Efficiency:
- Make creation of regex captures faster [15961f9][272c463]
[ed65d73][e3fa44a][7f47db8][0b48651][537a6e4][f627d2c][6f6b2df][219199b] - Make file test methods like
.d
or.x
faster [c821bbc] - Make
Match.caps
about 35% faster [87e91de] - Make
Str.split(Regex)
up to 2x faster [9c74d98] - Make
Str.split(Regex, *%_)
up to 2x faster [a9796fe] - Make
dir
routine about 15% faster [700b743] - Make
Blob.join
between 4% and 11% faster [84ff64c] - Make
Blob.gist
about 2x as fast [b55667e] - Make
QuantHash
implementation a bit faster [4a728f2] - Make
IO::Spec::Win32.basename
about 1.7x as fast [ecd06c9] - Make
IO::Spec::Win32.tmpdir
about 1.8x as fast [6d427d4] - Make
IO::Spec::Win32.path
about 2x as fast [1a8e07c] - Make
IO::Spec::Unix.path
about 3.5x as fast [8dc58ab] - Make
IO::Spec::Unix.basename
andIO::Spec::Unic.extension
about 1.7x as fast [f89fad8] - Make
IO::Spec::Unix.tmpdir
about 1.8x as fast [a2860ea] - Make
WhateverCode.ACCEPTS
about 2x as fast [853e622] - Make
IO::Path.sibling
about 2x as fast [a5eb1d4] - Make
IO::Path.succ
andIO::Path.pred
about 3x as fast [26b9f38][7238b09] - Make
IO::Path.parent
about 2.7x as fast [71cb0c5] - Make
IO::Path.parent(N)
about 2x as fast [f93ce87] - Make
IO::Path.child
about 1.4x as fast [f5b2c24] - Make
IO::Path.add
about 1.25x as fast [718d305] - Make
IO::Path.dir
between 1.5x and 2.2x as fast [b63976a]
[6b22c1e][7691742][9b9d9f6] - Make
IO::Path.is-absolute
a bit faster [fc88b9c][bd7fcb2] - Make
IO::Path.spurt
up to 35% faster [7571f65] - Make
IO::Path.slurp
up to 4.7x as fast [d03fa4b][cde948a][36d89cf] - Make
slurp
routine up to 40% faster [f3baa38][fc3e1ae] - Make
spurt
routine a few % faster [da5825e] - Make
Str.Numeric
about 4.3x as fast [a0e5841] - Make
.IO
method andIO::Path.new
about 2x as fast [2a88990] - Make
IO::Spec.curupdir
about 25% faster [6a0eaab][16d93e2] - Make
"42".Int
about 4.3x faster [3ee1777] - Reduce overhead of
Code.ACCEPTS(value)
by 20% [2eec62f] - Make
so
andnot
routines faster [d8c2650][8a3c36f][5c93dda][cb69cfc] - Optimize symbol lookup [c5f5d7e][dc6594d][5d61b3d]
- Prevent
$*OUT
lookup for each eigenstate of Junction when callingprint
orput
[4297cb0] - Make
printf
routine up to 5% faster [e46d459] - Streamline variable
is
andof
handling [5561669] - Make
Hash.sort
a tiny bit faster [cd61724] - Various small optimizations [a907497][b50fd8b][65e17c4]
- Make creation of regex captures faster [15961f9][272c463]
- Internal:
- Set up CI with Azure Pipelines [ae07d68][43213e4][55529de]
[78fe25b][42c3799][4085cfd][5b4faed][5587574][fce783a][adfa192] - Fix
main-version.nqp
dependencies [b71cb3a] - Improve
say
,put
,print
,note
methods ofIO::Handle
[7a902b5]
[88d9822][627b39b][438c1d2][483cac3][2b38666] - Simplify
Shaped1Array.reverse
[de173a1] - Simplify
EVAL(:check)
code [afe8511] - Rework part of
Match
internals [0a84aa7] - Simplify
Kernel.signals
usingSignal
values [5644c70] - Simplify
Grammar.parse
code [f10e5bc][8be2406][1402c1d] - Allow debuggers for Rakudo to be specified by environment variables [48e073e]
- Default to using egdb when possible in rakudo-gdb-m which covers OpenBSD developer environments [b01b012]
- Introduce INTERPOLATE [417a591][777e7b6][3f9f23a][638517d][0590722]
- Various internal improvements to the code base [ef0c457][e71d3cb]
[37533ee][b3d933b][4afaab7][3796405][17bf5d5][d9defb6][2aac854]
[799d627][a56e62d][c1decf2][a69465a][26d88b9][44b2701][95f7d34]
[b5bf1bf][285717a][21c3ef8][4103a30][a616fe5][e645ff6][ea8c04d]
[ad9b9f4][9942ccc][1c94538][9f73351][e9f8035][a431968][519a572]
[4ba70b7][496e916][d984e7c][bf01f84][da9943a][150af9a][6f45945]
[92d0183][98dec90][792a0f0][902401b][4d1ef59][2bfaab6] - Update
INSTALL.txt
for the latest changes [8bb0235][e1db95e][bd5e19e] - Various small improvements to compiler's user-facing documentation [dac68b2]
[302bc8e][736ce71][10a8f6a][627ffd4][3d6756b][eab17e7][18ecb60]
[2cff6dd][77b2f2a][197bba9][621577b][d09cf9d][8a8f62c][a79efde]
[797c96d][8c3f013][11afa53][fbb0abc] - Various changes to documentation related to renaming process
[6ead4ce][142d03b][e0384ee][0ccd4cf][4d6031f][d53a3b1][de6ebd4][b003239]
- Set up CI with Azure Pipelines [ae07d68][43213e4][55529de]
The following people contributed to this release:
Elizabeth Mattijsen, Juan Julián Merelo Guervós, Patrick Böker,
Will "Coke" Coleda, Daniel Green, Stoned Elipot, Alexander Kiryuhin, Stefan Seifert,
Sizhe Zhao, Christian Bartolomäus, Tom Browder, Vadim Belman,
Jonathan Worthington, Tim Smith, Luis F. Uceta, andreoss, Suman Khanal,
Aleks-Daniel Jakimenko-Aleksejev, Nicholas Clark,
Luc St-Louis, Mike Swierczek, Timo Paulssen, Ben Davies,
Wenzel P. P. Peppmeyer, Donald Hunter, Jan-Olof Hendig, Jac...
2020.05.1
On behalf of the Rakudo development team, I'm announcing an
out-of-schedule release of the Rakudo compiler.
Rakudo is an implementation of the Raku1 language.
This release is a point release in addition to the regular, monthly
releases. This release fixes relocatability on Windows.
Users of other platforms or those who don't need relocatability
should continue to consider Rakudo 2020.05 release to be the latest stable.
The tarball for this release is available from http://rakudo.org/downloads/rakudo/.
Pre-compiled archives will be available shortly.
The changes in this release are outlined below:
New in 2020.05.1:
- Fixes:
- Fix relocatable builds on the moar backend [46648b9]
The following people contributed to this release:
Patrick Böker, Sizhe Zhao, Alexander Kiryuhin
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-06-20.
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/ ↩
2020.05
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 Raku[^1] 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 B...
2020.02.1
On behalf of the Rakudo development team, I'm announcing an
out-of-schedule release of the Rakudo Perl 6 compiler.
Rakudo is an implementation of Perl 6 on the Moar Virtual Machine1.
This release is a point release in addition to the regular, monthly
releases. This release fixes building MoarVM on systems which are using musl,
such as Alpine GNU/Linux distro.
The tarball for this release is available from http://rakudo.org/downloads/rakudo/.
Pre-compiled archives will be available shortly.
The changes in this release are outlined below:
New in 2020.02.1:
- Fixes:
- Fix building with musl [979d384]
The following people contributed to this release:
Tassilo Philipp, Patrick Böker, Juan Julián Merelo Guervós, Alexander Kiryuhin
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
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 (#135), is tentatively scheduled for 2020-03-28.
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 <http://moarvm.org/ ↩
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 Raku[^1] 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 t...
2020.01
On behalf of the Rakudo development team, I’m very happy to announce the
January 2020 release of Rakudo #133. Rakudo is an implementation of
the Raku[^1] 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.01:
- Changes:
- A big overhaul of role applying rules and behavior or
submethods, constructors and destructors
[38c7264][a8f6188][cddcd46][61d3aef][27147ed][cbc4b83]
[3f7caf5][f242bcf][cd74a3a][51055d0][9369c68][ad92abc]
[00fec7c][6f0dd1e][c9ac15c][cb90366][d89a0c9][a08e1ff]
[c674a1d][0654d3e][fffb5c9][232382f][b47be20][44648fb]
[c2d5c20][48fc44c][7afffd6][17537ab][b1e288c][32e210c]
[fc4a5a3][1e166e4][7a94c4e][3eb63b3][a4ad1a8][526d38d]
[9e4087e][aeb10ef][c4f1cff][1f62040][b83e069][4d69fda]
[c7a8705][13ae929][0fb7a69][86b1ccb][ca2cb4a][e843fd2]
[a92ade4][bdcf314][93d0575][2319120][595e0ca][2c4fa98]
[b51c1fc][afcbeb5][eadc158][548dea5][1aad348][4a962e0]
[0b6a934][bb2600d][5d10e91][139d528][f2a4161][262b6fc] - Smartmatching typed Arrays against same-typed Positionals now
returns True (e.g.Array[Str:D] ~~ Positional[Str:D]
), which
returned False before [fb55ae2] - Class attributes and methods are now prioritized over those from
roles [f19e2ee][2fc87db][4c265c7][9357edd][83d26dd][9f2a2f6][55b51a2] - DateTime class now accepts picosecond precision [9eef0e6]
- Make default degree for hyper/batch utilize number of CPU cores better
[9fd29cd][5def05c][3f51728] $*ARGFILES
special variable now defaults to$*IN
if no arguments [bde1069]- An attempt to use methods
index
,indiced
,contains
on aList
now gives a warning [c9b0218]
- A big overhaul of role applying rules and behavior or
- Fixes:
- Fix repository name lookup on windows [13c5d04]
- Fix leaking file handles when loading modules [1c46740]
- Fix Parameter.sigil for anonymous scalar params with default values [8c0a5d6]
- Fix raw slurpy onearg parameter handling in Parameter.raku [3399302]
- Fix construction of Parameter object [68808c5]
- Fix error when calling Parameter.usage-name on unnamed parameters [81311a2]
- Fix hang when initializing
Int
with a type object [0e9f96e] - Fix missing dependency information when precompiling large dependency trees [9fa82b8]
- Fix off-by-one error in Supply.head(limit) [80f60c0]
- Fix for parameterized roles not found for FQN lookup if applied to a
parent class [27b3db2] - Fix double execution of ENTER block in some cases [d8c7d87]
- Fixed compile-time subroutine candidate matching when
is rw
trait is used on JVM [12d4514][fae105b][73d5e74][d81212b][5c65a12] - Improved error message for invalid Pod6 leading and trailing
declarator blocks [26f63ff] - Prevented
ASSIGN-POS
method onAny
from decontainerizing,
allowing its correct overloading in roles [ed8f514] - Prevent
name
MOP method from returning aNQPMu
when no name
is set by returning an empty string instead [dabf83a] - Fixed relocatability of bundled native libraries
[55b3ed5][0e4f835] - Made
Range.int-bounds(from,to)
always return correct result
[8c3f292] - Fixed a precompilation bug related to determining class language
version [15a5580] - Fix "expected IO::Handle:D but got IO::Handle" in parallel test
runs [efadff2] - Fix calling a qualified method from role on JVM backend [5648a4f]
- Fix
roundrobin
method, cross and zip operators on a 1-element
lists [f602c02][737dd1b][87de5ee] - Fix MoarVM::Profiler.report [734047a]
- Additions:
- Add
Version
type coercer toStr
[e3cbd32] - Add
Supply.repeated
method [ff08697] - Add
Supply.decode($encoding)
method [59f6a03] - Add
Supply.first
method [ace9853] - Add
Supply.collate
method [4079702] - Allow Supply.head(*-3) to be synonym of Supply.tail(3) [6d6318d]
- Add
Supply.encode($encoding = "utf8")
method [5d6c0b6] - Add
Supply.comb
method [348d54d][3dd9edf][67ec4b2]
[1331128f][07dce51][147ce39][550bf09][a666e73][92d465d]
[622b20f][f74e506][f872445] - Add new
is built
attribute trait
[e76f8e4][98abd6a][e81b0b6][826c3ea][f1f690e][ada7c36]
[ecf8a3f][7bbb76d][8ab5302][3f0dca4] - Add
Supply.split
method
[cac64ca][4fa60ab][c16a648][9b29bcc][2188f13] - Add
Supply.lines(:nl-in<foo>)
method [c63d8a8] - Allow user to retain formatting of Pod6 leading declarator
blocks (#|
) using RAKUDO_POD_DECL_BLOCK_USER_FORMAT env var,
instead of always collapsing them into a single string. The
latter remains the default behavior [9a4c83a] - Made
.perl
(now.raku
) method call on signature of {...} display$_
variable from outer scope [e7c2038] - Add
$*RAKU
variable [a05e169] Raku
is now allowed to be used as a language in EVAL
[1c5d010][632c008]- Add
:$match
named parameter tocomb
subroutine when called
onCool
object when the$matcher
argument is aRegex
[dd2f072][a9cd640] - Add
log2
subroutine, which acceptsCool
andNumeric
arguments, as well as its method form (Numeric.log2
)
[f6254be] - Allowed colon syntax on
$.foo
method, making$.foo: 42
work
as well as equivalentself.foo: 42
does [4a1323e][6abdf27][0f86e49] - Add
RAKU_EXCEPTIONS_HANDLER
env variable,
which is not supported as an alias forPERL6_EXCEPTIONS_HANDLER
[90408d1]
- Add
- Build system:
- Renamed
PERL6_HOME
env var intoRAKUDO_HOME
, preserving
backward compatibility. RakudoConfigure.pl
now accepts
--rakudo-home
in addition to--perl6-home
[7cfdd59] - Add
--force-rebuild
command line option. Together with
--gen-*
options is causes corresponding components to
recompile irrelevant to their existence and version
conformance [15255b0][2022b9c][1945b9d] - Fix
set-env.sh
script [0b8ede6] - Fix
raku
symlinks relocability [a00628e] - Prevent silently swallowing errors on submodule update
[db43d13] - Use Visual Studio 2017 in AppVeyor [7ecc5bf][7ce4947]
- Various tweaks and small improvements
[75056df][8b7d065][52a7bab][d7d9a2f][470c9b7] - Skip 'make test' on JVM backend [e5627b8]
- Renamed
- Efficiency:
- Make
StrDistance.new
about 30% faster [91a324a] - Make
Rational.Str
10% faster [272b658] - Make
Rational.Str
a few % faster with 20% fewer allocations [73e98a6] - Make
Rational.base
at least 2.5x as fast [97e7cdb] - Make
Array[Int].raku
at least 5% faster [66cf6f8] - Make
NumStr.raku
about 60% faster [e262da1] - Make
IntStr.raku
about 2x as fast [2261ef1] - Optimize
Pair.raku
[0d96bed][08aec41] - Make
Mu.raku
about 40% faster [585227e] - Optimize
Str.raku
[09e66e5][a4b62fb] - Make
Str.rindex
a few percent faster [7ecc3e8] - Make
Str.index
a few percent faster [d5719bb] - Make
Str.contains
a few percent faster [030ed10] - Make
Str.substr-eq
between 1.4x and 2.4x faster [276d096] - Made
Str.chomp
between 10x and 100x faster [b9c0196] - Made
Str.chop(N)
between 3x and 17x faster [b569e11] - Made
Str.chop
between 1.8x and 30x faster [f196362] - Made
Str.trim-trailing
up to 2x as fast [657d36f] - Made
Str.trim
between 1.5x and 3x faster [0d0d419] - Made
Str.substr(N)
between 1.5 and 3x faster [4252a8c] - Made
Str.substr(N,M)
about 1.5x faster [908dd25] - Made
Str.substr(N, Inf)
about 15% faster [25a2998] - Made
Str.trim-leading
between 20x and 90x faster [3941fef] - Made
Str.parse-base
between 7x (with decimal point) and 12x
(without) faster, decreased its memory pressure
[74c8017][3ce9245][9b8ce73] - Made
Str.Numeric
a few percent faster and 13x faster for an
empty string [37474a7] - Made Str.Int a few percent faster [b42957c]
- Made DateTime.new(epoch) about 20% faster [9d89591]
- Made DateTime.new($epoch) about 50% faster [cd32125]
- Made the decont operator about 20x faster [872cb7c]
- Improved efficiency of JIT for
split
subroutine [3e2cfb4] - Fix regression in performance of async socket [4e9487c]
- Micro-optimize
set_name
MOP method [88741d9] - Make
lazy gather
up to 15% faster [971174f] - Make emit about 30% faster [aea2a36]
- Make
take foo
about 20% faster [a91813d] - Make
take-rw foo
about 20% faster [533a2ad] - Make
take foo, bar
about 60% faster [e1aaa83] - Make
take-rw foo, bar
about 60% faster [bed716b] - Make Supply.lines a few percent faster [0f4ef3c]
- Numerous micro-optimizations [f5583de]
[05aff92][488f21a][9c15d71][6c85e69][60a9ff6][779b0a2]
[fc8bfc2][11a8d57][392af08][3326669]
- Make
- Internal:
- Add mechanism for seeding typename suggestions [b291fc7]
- Removed SUBSTR-(START|CHARS)-OOR from Rakudo::Internals, they
are nowStr
private methods [ab99c2d] - Simplify
Str.substr
implementation
[99a0610][1a89106][e342657][f79102f] - Fixed some regressions related to
v6.e.PREVIEW
usage
[6c251f2][8d03bdf][94b4ca9][466f7de][65847f7][a59fec7][755c803][0d2eb1c] - Reflect Raku renaming on codebase [604ca34][186c4ce]
- Numerous small codebase improvements, including ones related to
renaming process
[8f30cc7][fc30941][540162c][6a12949][1003bb9][68cee0d]
[2652d9c][f9e30a0][ee66a6b...
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 Machine1.
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 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
distribution2 — 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
- Perl 6 is now Raku! This release comes with initial changes
- Fixes:
- Fixed the signature of
signal
[eb88e64][fcf1f76][a46c414] - Fixed laziness propagation in KeyValue/Pair iterators [abbd128]
- Fixed loading of
CORE
s allowing for defining new symbols for
new language releases [56af07b] die
andfail
now use$!
from the calling lexical scope if
called without arguments [56af07b]- Fixed a bug in
require
with incorrect installation of imported
submodules [56af07b] - Fixed outer signatures getting into string interpolation
[7cab810] - Fixed segfault when using meta ops in threaded code [60cfbb3]
- Fixed Maps to keep containers [2ee82af][42d6e0b][cb1fbf6]
- Made sure
Date.new-from-daycount
takes right candidate
[ac11774] - Fixed passing of formatter in operations on
Date
objects
[971d4bf] - Fixed
.wrap
when used withcallsame
/nextsame
/etc. [da65fb5] - Fixed a bug when a wrapped method is called first [2e915d7]
- Fixed
:D
check when used withwhere
[58c2d64] - Made socket family handling portable [16607d3][17f6603]
[39b04dc][7e10626][d7d8d37] - Fixed RakuDoc parser to allow empty config values [7c3b257]
- Fixed handling of
:every(Inf)
inThreadPoolScheduler.cue
[74f2d3f] - Fixed exception propagation with race inside race [9d1505d]
- Fixed Proc to return Failure with non-zero signals [89fc9f3]
[6b42d31] - Made sure that doing keep/break on a vow more than once throws
[c7ec96a][0f31d35][5aa998f][f32b86a][b8f92d2] - Made sure that
Backtrace.list
lists all the frames [559c24f] - Made the
Buf.write-*
methods return self [dae981e] - Allowed type objects on
Buf.write-int/num/bits
[43b5e76]
[18ff905]
- Fixed the signature of
- Changes:
- [6.e] Pseudo-packages now return
Failure
for a missing
symbol (wasNil
) [56af07b] EVAL
no longer wraps evaluated code into ownCORE
context but
shares the one used by the calling scope. It also means that
use v6.X
statement is not effective insideEVAL
s anymore
[56af07b]- [6.e] Grammar now returns Failure when failing to parse
[b21a577][daebcd2][4cdd2d1][d46a908]
- [6.e] Pseudo-packages now return
- Additions:
- [6.e]
LEXICAL::
pseudo-package includes all symbols visible in
the lexical scope, including dynamic symbols from caller
chain [56af07b] - [6.e]
SETTING::
pseudo-package includes all symbols from all
availableCORE
s [56af07b] - [6.e]
UNIT::
pseudo-package includes all lexicals visible at
unit level [56af07b] - [6.e] Symbol binding is now possible for all
pseudo-packages [56af07b] - Individual language-release
CORE
s are now accessible
viaCORE::v6<rev>
namespaces. [6a88590] - Added GB2312 and GB18030 encodings [a95cb03][4cee2c3]
- Added support for Unicode v12.1 [f5ef0b3][7056a25]
- [6.e]
- Build system:
- Added
raku
andrakudo
executables [5090206][ab0a6d6] - Added
--rakudo-home
alias to--perl6-home
[dfeb712] - Added
--nqp-home
and--perl6-home
configure options to set
custom home dirs [e16e61a] - Added
RAKUDO_HOME
environment variable [dfeb712][24abab8] - Added support for
.rakumod
extension [daa16b9] - Added
--silent-build
option [f9ee604] - Fixed errors when building from a release archive [78c05c1]
- Fixed installation to
/usr
[1e0220f] - Fixed build in folders with spaces [9366990][abc072c][f117089]
[0365662][f7f9b1f][ceb457e][12d9e34] - Created a process for making binary releases [3427391]
[1c76440][f7b4d71] - Fixed libffi include issue [98e0bb6]
- Removed
--libdir
configure option [cdd57cd] - Fixed the build to not create folders outside the build
directory [cbd1dc2] - Minor build system fixes [165f3fb][3d5c551][579ac66]
[d487cd8][c2808b3][cfb0a26] - General build system cleanup [90de22f][983c398][4ce5b7c]
[ff9272b][608c6cd][9fefa33]
- Added
- Efficiency:
- Made sure dependencies are not recompiled if another process
already did it [23cfe1c] - Many small internal optimizations [f44c14c][82fc4e5][af10886]
[01b86fa][c7056f2][0dd6573][207b825][e424248][57f4a4c]
[19e075f][c392692][44a6a0d][696eea2][1d4c21d][6f5232f]
[3697325][6297b0e][519cfde][25abfe2][1e2b0ec]
- Made sure dependencies are not recompiled if another process
- Internal:
- NQP vars and ops will now default to int instead of num [290cd79]
[5876d38][62e2555][1e4d3ac][cf6f6d9] - Optimizer: Don't use Int*Ref in first arg
ofif/unless/while/until
[84ee0c8] - Fixed
BYTE_SUPPLY_DECODER
breaking after exceptions [9162431] - Reduced
.moarvm
size by replacingdie X::Foo.new
by
X::Foo.new.throw
[6d8f405][88dfe55] - Stagestats are now shown for dependent precompilation [238f8e5]
[960e5b4] - Added more tests for symbols in CORE and SETTING [5cd45f9]
[53bb28d] - Added
nqp::p6client*
family of ops for finding first Raku
caller from different package and determining its language
version [86525a3] - Added
nqp::p6getlexclient
op and$*OPTIMIZER-SYMBOLS
[cbce0ed][f8768ae] - Added
Sprintf.pm6
stub for development convenience [4bd25bf] - Fixed inconsistent state of NativeCall subs after
repossession [573f6a2] - Fixed native subs declared in BEGIN blocks and role
bodies [e45bb34] - Fixed optimizer interfering with some native subs [d662912]
- Fixed leaking an open file handle when re-precompiling [2dd570d]
- NQP vars and ops will now default to int instead of num [290cd79]
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
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 (#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.
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.
-
See http://moarvm.org/ ↩
-
What’s the difference between the Rakudo compiler and the Rakudo
Star distribution? ↩
Release 2019.07.1
On behalf of the Rakudo development team, I'm announcing an
out-of-schedule release of the Rakudo Perl 6 compiler.
Rakudo is an implementation of Perl 6 on the Moar Virtual Machine1.
This release is a point release in addition to the regular
releases. Rakudo 2019.07 (note: no .1) was discovered to have some
issues with the build system that affected packaging. Moreover, this
release comes with a corresponding MoarVM point release which has some
important stability and reliability fixes.
The tarball for this release is available from https://rakudo.org/files/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
https://rakudo.org/files/star.
The changes in this release are outlined below:
New in 2019.07.1:
- Build system:
The following people contributed to this release:
Patrick Böker, Aleks-Daniel Jakimenko-Aleksejev, Timo Paulssen,
Jonathan Worthington, Stefan Seifert, Samantha McVey
If you would like to contribute or find out more information, visit
https://perl6.org, https://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 (#132), is tentatively scheduled for 2019-09-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.
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
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.
-
See http://moarvm.org/ ↩
-
What’s the difference between the Rakudo compiler and the Rakudo
Star distribution? ↩