Commit 04ca86fb authored by Robert Lemmen's avatar Robert Lemmen

New upstream version 2018.04.1

parent ffad36ab
......@@ -79,7 +79,7 @@ How to write [a good **and** useful commit message](https://chris.beams.io/posts
Commit messages are where you tell the what, why and how of your commit to others.
The subject/title of a commit should 50 or less characters ideally. The absolute
maximum is 72. Title's usually will tell what you did. You should almost always
maximum is 72. Titles usually will tell what you did. You should almost always
have a body except in the case of the most trivial changes. These style guidelines
are best practices, but use your judgment. You may want to fit 100 characters
into the commit title to get in all the details, but `git` will cut it off if
......
......@@ -144,7 +144,8 @@ MAIN: {
$config{'makefile-timing'} = $options{'makefile-timing'};
$config{'stagestats'} = '--stagestats' if $options{'makefile-timing'};
$config{'cpsep'} = $win ? ';' : ':';
$config{'shell'} = $win ? 'cmd' : 'sh';
my $shell = $^O eq 'MSWin32' ? 'cmd' : 'sh';
$config{'shell'} = $^O eq 'solaris' ? '' : "SHELL = $shell";
$config{'runner_suffix'} = $win ? '.bat' : '';
my $make = 'make';
......
......@@ -120,6 +120,8 @@ docs/announce/2018.01.md
docs/announce/2018.02.1.md
docs/announce/2018.02.md
docs/announce/2018.03.md
docs/announce/2018.04.1.md
docs/announce/2018.04.md
docs/architecture.html
docs/architecture.svg
docs/archive/2017-IO-Grant--Action-Plan.md
......@@ -493,6 +495,7 @@ t/02-rakudo/08-slangs.t
t/02-rakudo/09-thread-id-after-await.t
t/02-rakudo/10-nqp-ops.t
t/02-rakudo/11-deprecated.t
t/02-rakudo/12-proto-arity-count.t
t/02-rakudo/dd.t
t/02-rakudo/dump.t
t/02-rakudo/repl.t
......@@ -578,6 +581,7 @@ t/harness5
t/harness6
tools/autounfudge.pl
tools/benchmark.pl
tools/build/check-nqp-version.pl
tools/build/common_bootstrap_sources
tools/build/create-jvm-runner.pl
tools/build/create-moar-runner.pl
......
......@@ -25,7 +25,7 @@ twitter, or [the p6lert commandline script](https://github.com/zoffixznet/perl6-
## Building and Installing Rakudo
[![Build Status](https://travis-ci.org/rakudo/rakudo.svg?branch=master)](https://travis-ci.org/rakudo/rakudo) [![Build status](https://ci.appveyor.com/api/projects/status/github/rakudo/rakudo?svg=true)](https://ci.appveyor.com/project/rakudo/rakudo/branch/master)
[![Build Status](https://travis-ci.org/rakudo/rakudo.svg?branch=master)](https://travis-ci.org/rakudo/rakudo) [![Build Status](https://ci.appveyor.com/api/projects/status/github/rakudo/rakudo?svg=true)](https://ci.appveyor.com/project/rakudo/rakudo/branch/master)
See the INSTALL.txt file for detailed prerequisites and build and
installation instructions.
......@@ -83,10 +83,12 @@ download, build, and install a fresh NQP, run:
$ perl Configure.pl --gen-nqp --backends=jvm
If you get an out of memory error building rakudo on the JVM, you may
need to modify your NQP runner to limit memory use. e.g. edit the
nqp-j / nqp-j.bat executable (found wherever you installed to, or in the
If you get a `java.lang.OutOfMemoryError: Java heap space` error building
rakudo on the JVM, you may need to modify your NQP runner to limit memory
use. e.g. edit the nqp-j / nqp-j.bat executable (found wherever you installed to, or in the
`install/bin` directory) to include `-Xms500m -Xmx2g` as options passed to java.
Alternatively, you can set `JAVA_OPTS` env var; e.g.
`export JAVA_OPTS="-Xmx51200000000"`
Please be aware, that this will install NQP into your given --prefix
before Configure.pl exits.
......@@ -134,9 +136,7 @@ For questions about MoarVM, you can join #moarvm on freenode.
## Reporting bugs
Please see https://github.com/rakudo/rakudo/wiki/rt-introduction
for more information about how and where to report issues with
Rakudo, its components, and the Perl 6 language specification.
See https://rakudo.org/bugs
## Submitting patches
......
New in 2018.04.1:
+ Fixes:
+ Fixed hang in parsing of nums with huge exponents [4e38bc1f]
+ Fixed denormals and precision issues in num parser [cc93bc9a]
New in 2018.04:
+ Fixes:
+ Fixed bug mapping windows1252/windows1251 without a dash [c9c5f341]
+ Made sure .encode and .decode accept the same encoding aliases [5298b7aa]
+ Fixed `infix:<o>` identity function [87e43c4a]
+ Made builds reproducible [16daf02f]
+ Made build of NQP modules reproducible [2c882d96]
+ Fixed explosion in List.combinations(Range) [624b3f0c]
+ Consistified &combinations/&permutations with method forms [29dcde10]
+ Made .produce/.reduce nodal [08eb465f]
+ Fixed Channel iterator failing if Nil was sent [bdd8143e]
+ Fixed value drift & precision issues in Num creation [8422d7b4][17446fc1]
+ Made sure that values of `once` blocks are deconted [f97398cf][53c02d85]
+ Made Supply.interval a serial Supply [7572983a]
+ Fixed bug with iteration of negative empty character classes [20495f09]
+ Fixed crash in loop + FIRST + LAST when it's wanted [cfc6b109][879b3340]
+ Fixed error for .native-descriptor on closed handle [5d554ba3][c6c25159]
+ Fixed QAST::Block migration in `with` + loop-comprehended `for` [fc192212]
+ Fixed `infix:<->($n)` to not negate [edbbc442]
+ Fixed crash in double-sink `for ... { Package::foo }` [4402839a]
+ Fixed thinko in CURR conditional [9bcc8e52]
+ Fixed crash with unknown column in RAKUDO_REPORT_COLUMNS [c015f08d]
+ Fixed substr to handle non-int arguments properly [f0c85125]
+ Fixed hang in IO::Socket::INET.lines [6e37c7f0]
+ Made Setty.perl consistent with Baggy/Mixy.perl [c0212af9]
+ Fixed set difference for Bag (-) List [344a64e9]
+ Fixed @a[]:v and @a[*]:v to filter out deleted elements [08b951c8]
+ Fixed precision/value drift with Complex literals [43026662]
+ Fixed crash in NativeCall when calling into a C++ library [db8b218f]
+ Fixed dispatch with IO::Socket::INET.new: :!listen [ceeb3a00]
+ Fixed unwanted consumption of Seqs [9e6ae276]
+ Fixed proto .arity/.count for all core multi subs [4b5d36f3]
[6a65ed02][d17f7535][859178b0]
+ Various improvements to produced messages [db7361a3][299dc6fc]
[54137e8b][6c2f2445][5fee5891][91fe6b63][6cdee60d][4b2512a2]
+ Additions:
+ Added support for "api" adverb when loading modules [32c5c83c]
+ Added strict, replacement options for IO::Handle, Str.encode
[6458811a][2760753d][37fc2883]
+ Added ShiftJIS decode/encode support [646f9211][f4863601]
+ Added a way to get child process ID via Proc::Async [1321917d]
+ Added Proc.pid [05816139][5ad102ea]
+ Added fails-like routine in Test.pm6 [4abfd4ca]
+ Added Array.grab [a0e5e880][a393ff69]
+ Added support for "const" marked return values in C++
functions (NativeCall) [9b3a0b6f]
+ Added gist methods to AbsolutePath, NQP and Perl6 repositories [8f3237c2]
+ Build system:
+ Added missing tools/build/check-nqp-version.pl [26518055]
+ Fixed build when using a different nqp than the one in $PATH [eb71edcc]
+ Fixed the Makefile on Solaris [affeaa79]
+ Fixed build system not noticing change to BOOTSTRAP.nqp [2ae3f484]
+ Efficiency:
+ Made HyperIteratorBatcher.produce-batch 3x faster [684a50d1]
+ Made .hyper.grep batch producer at least 23% faster [3e9b705e][1c4eebe5]
+ Made Iterator.push-exactly about 8% faster [9d784dd0]
+ Made `grep :kv .pull-one` 1.5x faster [c40f0254]
+ Made `grep :p .pull-one` 1.5x faster [5db9ebc4]
+ Made `squish :as .pull-one` 1.5x faster [d2c88bcc]
+ Made `squish() .pull-one` 1.6x faster [c41b79c0]
+ Made `grep :k .push-all` 1.5x faster [e3aef509]
+ Made Blob/Buf comparisons up to 30% faster [9ffb06b2]
+ Made Capture.FLATTENABLE_(LIST|HASH) 30% faster [768cf9f2]
+ Made List cmp 20x faster [0d7b42fb][126d8a84][082f8152]
+ Made ORDER() about 7% faster (affects `infix:<cmp>`) [32b3ddc7]
+ Made List.roll($n) 6% faster [c71ff664][7327a33a]
+ Micro-optimized the Awaitable role (up to 10% faster) [266f4a22]
+ Made List.pick about 30% faster [de68bfc1]
+ Made List.roll about 20x faster [c53fde3e]
+ Made Map/TypedHash.roll about 30% faster [6a6bb23d][5981f81b]
+ Made unwrapped `dispatch:<var>` curriable (`*.&uc` 7.6x faster) [f174d4b4]
+ Made `%h<a>:delete` and `%h<a>:exists` about 1.5x faster [d3eefa21]
+ Made `@a[1]:delete` and `@a[1]:exists` about 1.5x faster [6ad6dcbb]
+ Implemented optimized Iterator methods for `42 xx ...` [5f256bae]
+ Made copying native arrays about 9% faster [5ec4a5ab]
+ Made CurriedRoleHOW.accept_type 1% faster [8c265f9b]
+ Made `my int @a = ^100` about 40% faster [e8ec81db]
+ Made int(8|16|32|64)/num(32|64) array initialization 9x faster [40815d16]
+ Made `my @a = ^100; my int @b = @a` about 9x as fast [b5318e6e]
+ Made native array iterator about 1% faster [a2d8c96b][bd238a7c]
+ Made native array.splice up to 47x faster [d1b3809a]
+ Made native array.STORE(Seq) about 2x faster [72473bd0]
+ Made native array.splice(offset,size,Seq) about 13x faster [a39d382e]
+ Made %h.head 2x faster [91421874]
+ Made Complex.Str 5%-10% faster [5ef05612]
+ ThreadPoolScheduler optimizations [4ef28a7b][8f4a5a53][d4254216]
[d0fbe744][c71fa17d][3468f690][637147af][17ca56b4][5bab5865]
[aaacc5a4][ae91db88][f8c44164][924310c5][b22421e7][ac5cf2bb]
+ Other minor optimizations
[dc921b60][caacb2e4][67f91572][739fd9c9][f4255d5a][6f42d19e]
[828cd4a8][232197da][8ce20ae1][75b6651b][18252b60][31b072c6]
[ec265706][153e892d][0344925f][81dbe4cb][348e6f45][6a66b359]
[c2eae41c][9f8231c6][72dfddfa][24ddff73][eefccc18][0756076b]
[a3da6ac5][8e2ee64e][29b7f464][111f67a4][7c510611][82b19b1f]
[74b75599][850765f7][1f98b1bb][617624f5][a53811cd][d9869e53]
[7b5ccaa6][518f2c31][d393b828][12a38f1f]
+ Internal:
+ Many improvements to .hyper and .race [7d978fb2][22849592]
[34b294d2][ae0cbc30][7af3b648][9532e9c3][d75f4cfc]
+ Moved proto method splice: Mu -> Any [88d61bd9]
+ ±Inf/NaN are now treated as any other Num [e348b8f2]
+ Made sure native array splice won't splice from itself [28629905]
New in 2018.03:
+ SPECIAL NOTES:
+ Str.comb(Regex) was fixed to return a Seq instead of a List,
......
# Announce: Rakudo Perl 6 compiler, Release 2018.04.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 Machine[^1].
This release is a point release in addition to the regular, monthly
releases. Rakudo 2018.04 (note: no .1) was discovered to fail num
precision tests (on i386) and also hang when parsing nums with huge
exponents (on all platforms). To ensure that platform-specific issues
are found before the release we are now continuously testing
prerelease Rakudo versions on various platforms.
The tarball for this release is available from <https://rakudo.org/files/rakudo>.
Please note: This announcement is not for the Rakudo Star
distribution[^2] — 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 2018.04.1:
+ Fixes:
+ Fixed hang in parsing of nums with huge exponents [4e38bc1f]
+ Fixed denormals and precision issues in num parser [cc93bc9a]
The following people contributed to this release:
Zoffix Znet, Aleks-Daniel Jakimenko-Aleksejev
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 (#123), is tentatively scheduled for 2018-05-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.
[^1]: See <http://moarvm.org/>
[^2]: What’s the difference between the Rakudo compiler and the Rakudo
Star distribution?
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.
# Announce: Rakudo Perl 6 compiler, Release #122 (2018.04)
On behalf of the Rakudo development team, I’m very happy to announce the
April 2018 release of Rakudo Perl 6 #122. Rakudo is an implementation of
Perl 6 on the Moar Virtual Machine[^1].
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 2018 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 <https://rakudo.org/files/rakudo>.
Please note: This announcement is not for the Rakudo Star
distribution[^2] — 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 2018.04:
+ Fixes:
+ Fixed bug mapping windows1252/windows1251 without a dash [c9c5f341]
+ Made sure .encode and .decode accept the same encoding aliases [5298b7aa]
+ Fixed `infix:<o>` identity function [87e43c4a]
+ Made builds reproducible [16daf02f]
+ Made build of NQP modules reproducible [2c882d96]
+ Fixed explosion in List.combinations(Range) [624b3f0c]
+ Consistified &combinations/&permutations with method forms [29dcde10]
+ Made .produce/.reduce nodal [08eb465f]
+ Fixed Channel iterator failing if Nil was sent [bdd8143e]
+ Fixed value drift & precision issues in Num creation [8422d7b4][17446fc1]
+ Made sure that values of `once` blocks are deconted [f97398cf][53c02d85]
+ Made Supply.interval a serial Supply [7572983a]
+ Fixed bug with iteration of negative empty character classes [20495f09]
+ Fixed crash in loop + FIRST + LAST when it's wanted [cfc6b109][879b3340]
+ Fixed error for .native-descriptor on closed handle [5d554ba3][c6c25159]
+ Fixed QAST::Block migration in `with` + loop-comprehended `for` [fc192212]
+ Fixed `infix:<->($n)` to not negate [edbbc442]
+ Fixed crash in double-sink `for ... { Package::foo }` [4402839a]
+ Fixed thinko in CURR conditional [9bcc8e52]
+ Fixed crash with unknown column in RAKUDO_REPORT_COLUMNS [c015f08d]
+ Fixed substr to handle non-int arguments properly [f0c85125]
+ Fixed hang in IO::Socket::INET.lines [6e37c7f0]
+ Made Setty.perl consistent with Baggy/Mixy.perl [c0212af9]
+ Fixed set difference for Bag (-) List [344a64e9]
+ Fixed @a[]:v and @a[*]:v to filter out deleted elements [08b951c8]
+ Fixed precision/value drift with Complex literals [43026662]
+ Fixed crash in NativeCall when calling into a C++ library [db8b218f]
+ Fixed dispatch with IO::Socket::INET.new: :!listen [ceeb3a00]
+ Fixed unwanted consumption of Seqs [9e6ae276]
+ Fixed proto .arity/.count for all core multi subs [4b5d36f3]
[6a65ed02][d17f7535][859178b0]
+ Various improvements to produced messages [db7361a3][299dc6fc]
[54137e8b][6c2f2445][5fee5891][91fe6b63][6cdee60d][4b2512a2]
+ Additions:
+ Added support for "api" adverb when loading modules [32c5c83c]
+ Added strict, replacement options for IO::Handle, Str.encode
[6458811a][2760753d][37fc2883]
+ Added ShiftJIS decode/encode support [646f9211][f4863601]
+ Added a way to get child process ID via Proc::Async [1321917d]
+ Added Proc.pid [05816139][5ad102ea]
+ Added fails-like routine in Test.pm6 [4abfd4ca]
+ Added Array.grab [a0e5e880][a393ff69]
+ Added support for "const" marked return values in C++
functions (NativeCall) [9b3a0b6f]
+ Added gist methods to AbsolutePath, NQP and Perl6 repositories [8f3237c2]
+ Build system:
+ Added missing tools/build/check-nqp-version.pl [26518055]
+ Fixed build when using a different nqp than the one in $PATH [eb71edcc]
+ Fixed the Makefile on Solaris [affeaa79]
+ Fixed build system not noticing change to BOOTSTRAP.nqp [2ae3f484]
+ Efficiency:
+ Made HyperIteratorBatcher.produce-batch 3x faster [684a50d1]
+ Made .hyper.grep batch producer at least 23% faster [3e9b705e][1c4eebe5]
+ Made Iterator.push-exactly about 8% faster [9d784dd0]
+ Made `grep :kv .pull-one` 1.5x faster [c40f0254]
+ Made `grep :p .pull-one` 1.5x faster [5db9ebc4]
+ Made `squish :as .pull-one` 1.5x faster [d2c88bcc]
+ Made `squish() .pull-one` 1.6x faster [c41b79c0]
+ Made `grep :k .push-all` 1.5x faster [e3aef509]
+ Made Blob/Buf comparisons up to 30% faster [9ffb06b2]
+ Made Capture.FLATTENABLE_(LIST|HASH) 30% faster [768cf9f2]
+ Made List cmp 20x faster [0d7b42fb][126d8a84][082f8152]
+ Made ORDER() about 7% faster (affects `infix:<cmp>`) [32b3ddc7]
+ Made List.roll($n) 6% faster [c71ff664][7327a33a]
+ Micro-optimized the Awaitable role (up to 10% faster) [266f4a22]
+ Made List.pick about 30% faster [de68bfc1]
+ Made List.roll about 20x faster [c53fde3e]
+ Made Map/TypedHash.roll about 30% faster [6a6bb23d][5981f81b]
+ Made unwrapped `dispatch:<var>` curriable (`*.&uc` 7.6x faster) [f174d4b4]
+ Made `%h<a>:delete` and `%h<a>:exists` about 1.5x faster [d3eefa21]
+ Made `@a[1]:delete` and `@a[1]:exists` about 1.5x faster [6ad6dcbb]
+ Implemented optimized Iterator methods for `42 xx ...` [5f256bae]
+ Made copying native arrays about 9% faster [5ec4a5ab]
+ Made CurriedRoleHOW.accept_type 1% faster [8c265f9b]
+ Made `my int @a = ^100` about 40% faster [e8ec81db]
+ Made int(8|16|32|64)/num(32|64) array initialization 9x faster [40815d16]
+ Made `my @a = ^100; my int @b = @a` about 9x as fast [b5318e6e]
+ Made native array iterator about 1% faster [a2d8c96b][bd238a7c]
+ Made native array.splice up to 47x faster [d1b3809a]
+ Made native array.STORE(Seq) about 2x faster [72473bd0]
+ Made native array.splice(offset,size,Seq) about 13x faster [a39d382e]
+ Made %h.head 2x faster [91421874]
+ Made Complex.Str 5%-10% faster [5ef05612]
+ ThreadPoolScheduler optimizations [4ef28a7b][8f4a5a53][d4254216]
[d0fbe744][c71fa17d][3468f690][637147af][17ca56b4][5bab5865]
[aaacc5a4][ae91db88][f8c44164][924310c5][b22421e7][ac5cf2bb]
+ Other minor optimizations
[dc921b60][caacb2e4][67f91572][739fd9c9][f4255d5a][6f42d19e]
[828cd4a8][232197da][8ce20ae1][75b6651b][18252b60][31b072c6]
[ec265706][153e892d][0344925f][81dbe4cb][348e6f45][6a66b359]
[c2eae41c][9f8231c6][72dfddfa][24ddff73][eefccc18][0756076b]
[a3da6ac5][8e2ee64e][29b7f464][111f67a4][7c510611][82b19b1f]
[74b75599][850765f7][1f98b1bb][617624f5][a53811cd][d9869e53]
[7b5ccaa6][518f2c31][d393b828][12a38f1f]
+ Internal:
+ Many improvements to .hyper and .race [7d978fb2][22849592]
[34b294d2][ae0cbc30][7af3b648][9532e9c3][d75f4cfc]
+ Moved proto method splice: Mu -> Any [88d61bd9]
+ ±Inf/NaN are now treated as any other Num [e348b8f2]
+ Made sure native array splice won't splice from itself [28629905]
The following people contributed to this release:
Zoffix Znet, Elizabeth Mattijsen, Pawel Murias, Will "Coke" Coleda,
Luca Ferrari, Aleks-Daniel Jakimenko-Aleksejev, cfa,
陈梓立, Christian Bartolomäus, Stefan Seifert, Jonathan Worthington,
Samantha McVey, Jeremy Studer, Juan Julián Merelo Guervós, Timo Paulssen,
Ronald Schmidt, Daniel Green, Jan-Olof Hendig, Patrick Spek, Moritz Lenz,
Matthias Bloch, Jonas Kramer, Ben Davies, Tobias Leich,
Wenzel P. P. Peppmeyer, Itsuki Toyota, Larry Wall, CC, Stefan Fischer,
Christopher Bottoms, Dan Book, Brad Gilbert, dariusantia, ilyash-b
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 (#123), is tentatively scheduled for 2018-05-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.
[^1]: See <http://moarvm.org/>
[^2]: What’s the difference between the Rakudo compiler and the Rakudo
Star distribution?
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.
......@@ -18,8 +18,7 @@ Note that we are trying very hard to ensure there are no backward
compatibility issues post Christmas. As such, we may end up delaying
some releases to ensure any compatibility issues are resolved.
2018-04-21 Rakudo #122 (AlexDaniel + Releasable)
2018-05-19 Rakudo #123
2018-05-19 Rakudo #123 (AlexDaniel + Releasable)
2018-06-16 Rakudo #124
2018-07-21 Rakudo #125
2018-08-18 Rakudo #126
......@@ -32,6 +31,26 @@ some releases to ensure any compatibility issues are resolved.
=head2 Steps to create a release (for release managers)
B<⚠ Please try to rely on automation instead of doing the release
manually.> This document describes steps that should be performed
by tools, and in a way serves as a documentation for them.
Currently there are two tools:
=over
=item *
Release Sakefile (not published yet) which is meant to be used together with
L<Releasable|https://github.com/perl6/whateverable/wiki/Releasable> bot
=item *
L<NeuralAnomaly|https://github.com/zoffixznet/na> bot
=back
Some things are hard to automate, and you have to understand what is
(and what is not) done by the tool you are using, so read on.
=over 4
=item 1.
......@@ -447,7 +466,9 @@ Previous releases were bundled as part of monthly Parrot releases.
2018-01-25 Rakudo #119 "2018.01" (AlexDaniel + Releasable)
2018-02-20 Rakudo #120 "2018.02" (AlexDaniel + Releasable)
2018-02-23 2018.02.1 (AlexDaniel + Releasable)
2018-03-19 Rakudo #121 "2018.02" (AlexDaniel + Releasable)
2018-03-19 Rakudo #121 "2018.03" (AlexDaniel + Releasable)
2018-04-25 Rakudo #122 "2018.04" (AlexDaniel + Releasable)
2018-04-30 2018.04.1 (AlexDaniel + Releasable)
=head1 COPYRIGHT
......
......@@ -203,32 +203,25 @@ my role NativeCallSymbol[Str $name] {
method native_symbol() { $name }
}
sub guess_library_name($lib) is export(:TEST) {
my $libname;
my $apiversion = '';
my Str $ext = '';
given $lib {
when IO::Path {
$libname = $lib.absolute;
}
when Distribution::Resource {
return $lib.platform-library-name.Str;
}
when Callable {
return $lib();
}
when List {
$libname = $lib[0];
$apiversion = $lib[1];
}
when Str {
$libname = $lib;
}
}
return '' unless $libname.DEFINITE;
#Already a full name?
return $libname if ($libname ~~ /\.<.alpha>+$/ or $libname ~~ /\.so(\.<.digit>+)+$/);
return $*VM.platform-library-name($libname.IO, :version($apiversion || Version)).Str;
multi guess_library_name(IO::Path $lib) is export(:TEST) {
guess_library_name($lib.absolute)
}
multi guess_library_name(Distribution::Resource $lib) is export(:TEST) {
$lib.platform-library-name.Str;
}
multi guess_library_name(Callable $lib) is export(:TEST) {
$lib();
}
multi guess_library_name(List $lib) is export(:TEST) {
guess_library_name($lib[0], $lib[1])
}
multi guess_library_name(Str $libname, $apiversion='') is export(:TEST) {
$libname.DEFINITE
?? $libname ~~ /[\.<.alpha>+ | \.so [\.<.digit>+]+ ] $/
?? $libname #Already a full name?
!! $*VM.platform-library-name(
$libname.IO, :version($apiversion || Version)).Str
!! ''
}
my %lib;
......@@ -266,8 +259,8 @@ our role Native[Routine $r, $libname where Str|Callable|List|IO::Path|Distributi
has $!cpp-name-mangler;
has Pointer $!entry-point;
has int $!arity;
has int8 $!is-clone;
has int8 $!any-optionals;
has int $!is-clone;
has int $!any-optionals;
has Mu $!optimized-body;
has Mu $!jit-optimized-body;
......@@ -631,6 +624,9 @@ multi explicitly-manage(Str $x, :$encoding = 'utf8') is export(:DEFAULT,
role CPPConst {
method cpp-const() { 1 }
}
multi trait_mod:<is>(Routine $p, :$cpp-const!) is export(:DEFAULT, :traits) {
$p does CPPConst;
}
multi trait_mod:<is>(Parameter $p, :$cpp-const!) is export(:DEFAULT, :traits) {
$p does CPPConst;
}
......
......@@ -8,6 +8,7 @@ our sub mangle_cpp_symbol(Routine $r, $symbol) {
my $mangled = '_Z'
~ ($r.package.REPR eq 'CPPStruct' ?? 'N' !! '')
~ ($r.?cpp-const ?? 'K' !! '')
~ $symbol.split('::').map({$_ eq 'new' ?? 'C1' !! $_.chars ~ $_}).join('')
~ ($r.package.REPR eq 'CPPStruct' ?? 'E' !! '');
my @params = $r.signature.params;
......
......@@ -210,12 +210,14 @@ HEADER
method !snap() is raw {
nqp::stmts(
(my int @data),
(nqp::getrusage(@data)),
nqp::bindpos_i(
(my $data := nqp::getrusage),
@data,
WALLCLOCK,
nqp::sub_i(nqp::fromnum_I(nqp::time_n() * 1000000,Int),$start)
),
$data
@data
)
}
}
......@@ -588,12 +590,13 @@ class Telemetry does Associative {
my $self := nqp::create(self);
nqp::bindattr($self,Telemetry,'$!sampler',
my $sampler := nqp::decont($*SAMPLER));
nqp::bindattr($self,Telemetry,'$!samples',
my $samples := nqp::create(IterationBuffer));
$samples.push($_) for @samples;
my $samples := nqp::create(IterationBuffer);
my int $elems = +@samples; # reify
my $reified := nqp::getattr(@samples,List,'$!reified');
nqp::if($reified,nqp::splice($samples,$reified,0,$elems));
$self
nqp::p6bindattrinvres($self,Telemetry,'$!samples',$samples);
}
multi method perl(Telemetry:D: --> Str:D) {
......@@ -839,7 +842,12 @@ HEADER
# remove the columns that don't have any values
@columns = @columns.grep: -> $column {
@periods.first: { .{%format{$column}[NAME]} }
(%format{$column}[NAME]
or note "WARNING: Unknown Telemetry column `$column`."
~ " Perhaps you need to adjust used instruments"
~ " (see RAKUDO_TELEMETRY_INSTRUMENTS)\n"
and 0
) and @periods.first: { .{%format{$column}[NAME]} }
};
my $header = "\n%format{@columns}>>.[HEADER].join(' ')";
my @formats = %format{@columns};
......
......@@ -628,6 +628,25 @@ sub throws-like($code, $ex_type, $reason?, *%matcher) is export {
}, $reason // "did we throws-like $ex_type.^name()?";
}
sub fails-like (
\test where Callable:D|Str:D, $ex-type, $reason?, *%matcher
) is export {
subtest sub {
plan 2;
CATCH { default {
with "expected code to fail but it threw {.^name} instead" {
.&flunk;
.&skip;
return False;
}
}}
my $res = test ~~ Callable ?? test.() !! test.EVAL;
isa-ok $res, Failure, 'code returned a Failure';
throws-like { $res.sink }, $ex-type,
'Failure threw when sunk', |%matcher,
}, $reason // "did we fails-like $ex-type.^name()?"
}
sub _is_deeply(Mu $got, Mu $expected) {
$got eqv $expected;
}
......
This diff is collapsed.
......@@ -1729,7 +1729,7 @@ grammar Perl6::Grammar is HLL::Grammar does STD {
my $p6cursor := $*W.find_symbol(['Match']);
nqp::bindattr_i($new, NQPMatch, '$!from', nqp::getattr_i($ret, $p6cursor, '$!from'));
nqp::bindattr_i($new, NQPMatch, '$!pos', nqp::getattr_i($ret, $p6cursor, '$!pos'));
my $p6c_name := nqp::getattr_s($ret, $p6cursor, '$!name');
my str $p6c_name := nqp::getattr_s($ret, $p6cursor, '$!name');
if !nqp::isnull_s($p6c_name) {
nqp::bindattr($new, NQPMatch, '$!name', $p6c_name);
}
......@@ -2353,6 +2353,7 @@ grammar Perl6::Grammar is HLL::Grammar does STD {
:my %*ATTR_USAGES;
:my $*REPR;
:my $*VER;
:my $*API;
:my $*AUTH;
# Default to our scoped.
......@@ -2386,6 +2387,9 @@ grammar Perl6::Grammar is HLL::Grammar does STD {
'parsing package version',
-> { $*W.find_symbol(['Version']).new($adverb.value) });
}
elsif $key eq 'api' {
$*API := $adverb.value;
}
elsif $key eq 'auth' {
$*AUTH := $adverb.value;
}
......@@ -2435,6 +2439,7 @@ grammar Perl6::Grammar is HLL::Grammar does STD {
if @name {
%args<name> := $fullname;
%args<ver> := $*VER;
%args<api> := $*API;
%args<auth> := $*AUTH;
}
if $*REPR ne '' {
......@@ -2472,7 +2477,7 @@ grammar Perl6::Grammar is HLL::Grammar does STD {
return nqp::elems(@params) > 1 || !@params[0]<optional>;
}
$*PACKAGE := $package := $*W.pkg_create_mo($/, $*W.resolve_mo($/, $*PKGDECL),
:name($fullname), :ver($*VER), :auth($*AUTH), :repr($*REPR),
:name($fullname), :ver($*VER), :api($*API), :auth($*AUTH), :repr($*REPR),
:group($group), :signatured(needs_args($<signature>)));
$/.set_package($package);
}
......
......@@ -995,7 +995,9 @@ my class Binder {
# If there's a single capture parameter, then we're OK. (Worth
# handling especially as it's the common case for protos).
if $num_params == 1 {
if nqp::getattr_i(@params[0], Parameter, '$!flags') +& $SIG_ELEM_IS_CAPTURE {
if nqp::getattr_i(@params[0], Parameter, '$!flags') +& $SIG_ELEM_IS_CAPTURE
&& nqp::isnull(
nqp::getattr(@params[0], Parameter, '@!post_constraints')) {
return $TRIAL_BIND_OK;
}
}
......@@ -1009,8 +1011,14 @@ my class Binder {
++$i;
# If the parameter is anything other than a boring old
# positional parameter, we won't analyze it. */
# positional parameter, we won't analyze it and will bail out,
# unless it's a slurpy named param, in which case just ignore it
my int $flags := nqp::getattr_i($param, Parameter, '$!flags');