Announce: Rakudo Perl 6 compiler, Release #110 (2017.04)

2017-04-17 Thread zoffix


On behalf of the Rakudo development team, I’m very happy to announce the
April 2017 release of Rakudo Perl 6 #110. 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, but no new features.

Upcoming releases in 2017 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  
.


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
.

The changes in this release are outlined below:

New in 2017.04:
 + SPECIAL NOTES:
+ There are two Upgrade Notifications for this release:
- Part 1: http://rakudo.org/2017/04/02/upgrade
- Part 2: http://rakudo.org/2017/04/03/part-2
- Part 3: http://rakudo.org/2017/04/17/final-notes
+ Changes for Texas operators listed in this release also apply to their
fancy Unicode alternatives.  
https://docs.perl6.org/language/unicode_texas.html

 + Fixes:
+ Fixed infinite loop due to wrong args in many Cool methods [8c88b0c]
+ Fixed failure to distinguish rw args in Capture.WHICH [4605d52]
+ Fixed regression in .rotor with negative gaps [5917b81]
+ Fixed a 1-arg-no-phasers path in .map stopping after 1 value [86dc997]
+ Fixed containerization issues in listinfix metaops [16f950b]
+ Fixed Inline::Perl5 detection in t/harness6 [b15cd20]
+ Fixed incorrect number of tests run in t/harness6 [8766370]
+ Fixed t/harness5 incorrectly failing NOTESTS runs [f28c515]
+ Fixed crash in S/// and s/// for some combinations of adverbs [43e0902]
+ Fixed crash when doing EVAL from multiple threads [218f8c4]
+ Fixed errors in concatenations of Hangul script with \r\n in it  
[a123eb3]
+ Fixed case insensitive string compare with synthetics in  
haystack [e87179d]

+ Fixed case insensitive regex with synthetics [666ce35]
+ Fixed issues with foreign lang cursor without a name [ffeb896]
+ Fixed introspection of attributes with explicitly typed keys [a6ba994]
+ Fixed spurious warnings in define_slang [666ce35]
+ Fixed issues in :exists with multidimensional hash slice lookup  
[a758c0b]
+ Fixed unwanted overflow when too-large values were *assigned*  
to native attributes [666ce35]
+ Fixed failure to set $/ by matching routines when used in loops  
[a62b221]

+ Fixed handling of Baggy (|) Mixy, Mixy (|) Baggy in dispatch [48619f8]
+ Fixed Allocations tab in --profile output [c16cdb2c]
+ Made `is equiv` to not propagate operator's `assoc` value [f9f0883]
+ Made Code.ACCEPTS pass take its parameter `is raw` [c0eb9bd]
+ Fixed SEGV in IO::Pipe.t [3e275dd]
+ Made `dynamic` default to False instead of Nil on  
Scalar/Hash/Array [28a6e80]
+ [IO] Fixed wrong results in IO::Path.resolve for paths with  
combiners on `/` [9d8e391]
+ [IO] Fixed a crash when using Whatever limit in in  
IO::Pipe.lines [0c62815]
+ [IO] Fixed crash in smartmatch of Cool ~~ IO::Path for some  
Cools [c360ac2]
+ [IO] Made IO::Path:: subclasses instantiate a subclass, not  
IO::Path [a0b82ed]
+ [IO] Fixed crash when very large files were read with  
IO::Path.slurp [d0924f1]

+ [IO] Ensured IO::Handle.Str coerced .path to Str [1f689a9]
+ [IO] Fixed crash when binary slurping large files with  
/IO::Path.slurp [756877e]
+ [IO] Fixed occasional zero byte read when binary slurping files  
[756877e]

+ [IO] IO::Handle.symlink/.link now take name of the link as argument;
the invocant is the target [8c09c84]
+ Various improvements to warnings and error reporting  
[6a77cda][d90c6bf][f9968b3]
 
[27f5469][41ac4b4][75c3f29][87fe800][7ba2fc5][093bb89][d3c93ad][6ee71c2][490ffd1][7112a08]

 + Additions:
+ Gave `Thread` a numeric representation [e5528dd]
+ Made Any.maxpairs/.minpairs use `cmp` and return Seq [5927186]
+ Made `Parameter` object available in bind error [0f9f000]
+ Added typed exception for parameter constraint failure [f1cd8e3]
+ Allowed nativesize to be unset in NativeHOW, but still compose  
[af4aae2][932b59f]

+ Made sure that Baggy and Setty handle bare objects [7433947][e660a57]
+ Added experimental coverage reporter tool with MoarVM backend  
(so far works with
reports for core code; more work needed to expand for wider  
use) [932b59f][d0924f1]
+ Made it possible to assign to system dynamic vars on  
initialization [1b9d53c]
+ Broadened acceptance in `(<+)`/`(>+)`: all 

[perl6/specs] 84f5da: Swap IO::Path.child to use .child-secure's code

2017-04-17 Thread GitHub
  Branch: refs/heads/master
  Home:   https://github.com/perl6/specs
  Commit: 84f5da58d69990eec7102c272657ca0e71783e84
  
https://github.com/perl6/specs/commit/84f5da58d69990eec7102c272657ca0e71783e84
  Author: Zoffix Znet 
  Date:   2017-04-17 (Mon, 17 Apr 2017)

  Changed paths:
M v6d.pod

  Log Message:
  ---
  Swap IO::Path.child to use .child-secure's code




[perl6/specs] bc769f: Add removed docs commit

2017-04-17 Thread GitHub
  Branch: refs/heads/master
  Home:   https://github.com/perl6/specs
  Commit: bc769f1c99c649beb72a04f1530c48b938253f4f
  
https://github.com/perl6/specs/commit/bc769f1c99c649beb72a04f1530c48b938253f4f
  Author: Zoffix Znet 
  Date:   2017-04-17 (Mon, 17 Apr 2017)

  Changed paths:
M v6d.pod

  Log Message:
  ---
  Add removed docs commit

for salvagin later




[perl #131152] [BUG](FIRST/LAST Phasers doesn't work in loop/while structures)

2017-04-17 Thread via RT
# New Ticket Created by  Александр Усиков 
# Please include the string:  [perl #131152]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/Ticket/Display.html?id=131152 >


perl6 -v
This is Rakudo version 2017.01 built on MoarVM version 2017.01

sub f {
   my $i = 0;
   while True {
  FIRST { say "FIRST: $i"};
  LAST { say "LAST: $i"};
  last if ++$i > 100;
   }
}

doesn't compile: 
===SORRY!===
Cannot reference undeclared local 'LOOP_BLOCK_1'

--
without FIRST gives an error:

sub f {
   my $i = 0;
   while True {
  # FIRST { say "FIRST: $i"};
  LAST { say "LAST: $i"};
  last if ++$i > 100;
   }
}

f();

LAST: 0
No such method '!capture_phasers' for invocant of type 'Code'
  in block  at t1.p6 line 16


in Promises compiles but gives random results:

await do for 1..10 { start {
   my $i = 0;
   loop {
  FIRST { say "FIRST: $i"};
  LAST { say "LAST: $i"};
  last if ++$i > 100;
   }
} }


FIRST: 0
FIRST: 0
FIRST: 2
FIRST: 0
LAST: 0
LAST: 5
LAST: 5
FIRST: 0
FIRST: 0
FIRST: 64
LAST: 103
LAST: 103
LAST: 103
FIRST: 103
LAST: 104
FIRST: 2
FIRST: 98
LAST: 102
LAST: 102
LAST: 102

-
changing loop/while to for 1..* solves first two issues, but:

---
using for 1..* instead of loop give more stable, but still sometimes incorrect 
results with promises:

await do for 1..10 { start {
   my $i = 0;
   for 1..* {
  FIRST { say "FIRST: $i"};
  LAST { say "LAST: $i"};
  #say $i;
  last if ++$i > 100;
   }
} }


FIRST: 0
FIRST: 0
FIRST: 77
FIRST: 0
LAST: 101
LAST: 101
LAST: 101
LAST: 101
FIRST: 0
FIRST: 0
LAST: 101
FIRST: 0
LAST: 101
FIRST: 0
LAST: 101
FIRST: 0
LAST: 101
FIRST: 0
LAST: 101
LAST: 101


[perl6/specs]

2017-04-17 Thread GitHub
  Branch: refs/heads/open-createonly
  Home:   https://github.com/perl6/specs


Re: [perl #131168] problems when using require ::($m)

2017-04-17 Thread mt1957 via RT
I understand that the symbols must be used in the same block as the 
require statement. There is then still a problem, namely the difference 
between linux and windows.

In the mean time I will try to get the usage of the functions to the 
block where it is required.

Marcel
> On 17-04-17 19:12, Zoffix Znet via RT wrote:
>
> thanks for the link, I will look into it.
>
> The code for which the windows implementation fails but not on linux,
> can be found here;
>
> https://github.com/MARTIMM/config-datalang-refine/blob/master/lib/Config/DataLang/Refine.pm6
>
> the requires are at line 57 and 64
> and the error is thrown at line 193 where the function is used.
>
> thanks again,
> Marcel
>
>> On Mon, 17 Apr 2017 09:53:28 -0700, mt1...@gmail.com wrote:
>>> Since I've installed perl6 version 2017.03-234-g0ebdaa4 built on MoarVM
>>> version 2017.03-128-gc9ab59c, several modules are experiencing failures
>>> when using the following construct (golfed down)(I am sure that the
>>> module loads)
>>>
>>>
>>> my $m = 'somemodule';
>>> require ::($m);
>>> my $o = ::($m).new;
>>>
>>>
>>> However, in a simple setup it works fine. I could manage to rewrite
>>> things in such a way that errors disappear, but I do not understand it.
>>> A question is 'Are the symbols loaded lexically in such a way that it is
>>> not possible to instantiate the class in another method?'
>>>
>>> A remaining bug on windows(with latest rakudostar) shows the error;
>>>
>>> Failed to load Config::TOML;
>>> Lexical with name '' does not exist in this frame
>>>
>>> when using something like the following
>>>
>>> my $m = 'Config::TOML';
>>> require ::($m) <>;
>>>
>>> see also
>>> https://ci.appveyor.com/project/MARTIMM/config-datalang-refine/branch/master
>>>
>>>
>>> Other things I've seen before are; not able to find the class name
>>> symbol when I want to instatiate the class, or the .^name is shorter
>>> than the real class name should be, which accounts for the first error.
>>>
>>>
>>> Regards,
>>> Marcel
>>>
>>>
>> Can't reproduce either of the issues you describe. Do you have a piece of 
>> code we can run that repos the problem?
>>
>> Also, have you seen the lexical require Upgrade Notification? 
>> http://rakudo.org/2017/03/18/lexical-require-upgrade-info/
>>
>>   my $m = 'Test';
>>   require ::($m) <>;
>>   ok 1, 1;
>>   # OUTPUT: ok 1 - 1
>>
>>   my $m = 'DBIish';
>>   require ::($m);
>>   my $o = ::($m).new;
>>   dd $o;
>>   # OUTPUT: DBIish $o = DBIish.new


Re: [perl #131168] problems when using require ::($m)

2017-04-17 Thread mt1957
I understand that the symbols must be used in the same block as the 
require statement. There is then still a problem, namely the difference 
between linux and windows.


In the mean time I will try to get the usage of the functions to the 
block where it is required.


Marcel

On 17-04-17 19:12, Zoffix Znet via RT wrote:

thanks for the link, I will look into it.

The code for which the windows implementation fails but not on linux,
can be found here;

https://github.com/MARTIMM/config-datalang-refine/blob/master/lib/Config/DataLang/Refine.pm6

the requires are at line 57 and 64
and the error is thrown at line 193 where the function is used.

thanks again,
Marcel


On Mon, 17 Apr 2017 09:53:28 -0700, mt1...@gmail.com wrote:

Since I've installed perl6 version 2017.03-234-g0ebdaa4 built on MoarVM
version 2017.03-128-gc9ab59c, several modules are experiencing failures
when using the following construct (golfed down)(I am sure that the
module loads)


my $m = 'somemodule';
require ::($m);
my $o = ::($m).new;


However, in a simple setup it works fine. I could manage to rewrite
things in such a way that errors disappear, but I do not understand it.
A question is 'Are the symbols loaded lexically in such a way that it is
not possible to instantiate the class in another method?'

A remaining bug on windows(with latest rakudostar) shows the error;

Failed to load Config::TOML;
Lexical with name '' does not exist in this frame

when using something like the following

my $m = 'Config::TOML';
require ::($m) <>;

see also
https://ci.appveyor.com/project/MARTIMM/config-datalang-refine/branch/master


Other things I've seen before are; not able to find the class name
symbol when I want to instatiate the class, or the .^name is shorter
than the real class name should be, which accounts for the first error.


Regards,
Marcel



Can't reproduce either of the issues you describe. Do you have a piece of code 
we can run that repos the problem?

Also, have you seen the lexical require Upgrade Notification? 
http://rakudo.org/2017/03/18/lexical-require-upgrade-info/

  my $m = 'Test';
  require ::($m) <>;
  ok 1, 1;
  # OUTPUT: ok 1 - 1

  my $m = 'DBIish';
  require ::($m);
  my $o = ::($m).new;
  dd $o;
  # OUTPUT: DBIish $o = DBIish.new


Re: [perl #131168] problems when using require ::($m)

2017-04-17 Thread mt1957 via RT
On 17-04-17 19:12, Zoffix Znet via RT wrote:

thanks for the link, I will look into it.

The code for which the windows implementation fails but not on linux, 
can be found here;

https://github.com/MARTIMM/config-datalang-refine/blob/master/lib/Config/DataLang/Refine.pm6

the requires are at line 57 and 64
and the error is thrown at line 193 where the function is used.

thanks again,
Marcel

> On Mon, 17 Apr 2017 09:53:28 -0700, mt1...@gmail.com wrote:
>> Since I've installed perl6 version 2017.03-234-g0ebdaa4 built on MoarVM
>> version 2017.03-128-gc9ab59c, several modules are experiencing failures
>> when using the following construct (golfed down)(I am sure that the
>> module loads)
>>
>>
>> my $m = 'somemodule';
>> require ::($m);
>> my $o = ::($m).new;
>>
>>
>> However, in a simple setup it works fine. I could manage to rewrite
>> things in such a way that errors disappear, but I do not understand it.
>> A question is 'Are the symbols loaded lexically in such a way that it is
>> not possible to instantiate the class in another method?'
>>
>> A remaining bug on windows(with latest rakudostar) shows the error;
>>
>> Failed to load Config::TOML;
>> Lexical with name '' does not exist in this frame
>>
>> when using something like the following
>>
>> my $m = 'Config::TOML';
>> require ::($m) <>;
>>
>> see also
>> https://ci.appveyor.com/project/MARTIMM/config-datalang-refine/branch/master
>>
>>
>> Other things I've seen before are; not able to find the class name
>> symbol when I want to instatiate the class, or the .^name is shorter
>> than the real class name should be, which accounts for the first error.
>>
>>
>> Regards,
>> Marcel
>>
>>
> Can't reproduce either of the issues you describe. Do you have a piece of 
> code we can run that repos the problem?
>
> Also, have you seen the lexical require Upgrade Notification? 
> http://rakudo.org/2017/03/18/lexical-require-upgrade-info/
>
>  my $m = 'Test';
>  require ::($m) <>;
>  ok 1, 1;
>  # OUTPUT: ok 1 - 1
>
>  my $m = 'DBIish';
>  require ::($m);
>  my $o = ::($m).new;
>  dd $o;
>  # OUTPUT: DBIish $o = DBIish.new


Re: [perl #131168] problems when using require ::($m)

2017-04-17 Thread mt1957

On 17-04-17 19:12, Zoffix Znet via RT wrote:

thanks for the link, I will look into it.

The code for which the windows implementation fails but not on linux, 
can be found here;


https://github.com/MARTIMM/config-datalang-refine/blob/master/lib/Config/DataLang/Refine.pm6

the requires are at line 57 and 64
and the error is thrown at line 193 where the function is used.

thanks again,
Marcel


On Mon, 17 Apr 2017 09:53:28 -0700, mt1...@gmail.com wrote:

Since I've installed perl6 version 2017.03-234-g0ebdaa4 built on MoarVM
version 2017.03-128-gc9ab59c, several modules are experiencing failures
when using the following construct (golfed down)(I am sure that the
module loads)


my $m = 'somemodule';
require ::($m);
my $o = ::($m).new;


However, in a simple setup it works fine. I could manage to rewrite
things in such a way that errors disappear, but I do not understand it.
A question is 'Are the symbols loaded lexically in such a way that it is
not possible to instantiate the class in another method?'

A remaining bug on windows(with latest rakudostar) shows the error;

Failed to load Config::TOML;
Lexical with name '' does not exist in this frame

when using something like the following

my $m = 'Config::TOML';
require ::($m) <>;

see also
https://ci.appveyor.com/project/MARTIMM/config-datalang-refine/branch/master


Other things I've seen before are; not able to find the class name
symbol when I want to instatiate the class, or the .^name is shorter
than the real class name should be, which accounts for the first error.


Regards,
Marcel



Can't reproduce either of the issues you describe. Do you have a piece of code 
we can run that repos the problem?

Also, have you seen the lexical require Upgrade Notification? 
http://rakudo.org/2017/03/18/lexical-require-upgrade-info/

 my $m = 'Test';
 require ::($m) <>;
 ok 1, 1;
 # OUTPUT: ok 1 - 1

 my $m = 'DBIish';
 require ::($m);
 my $o = ::($m).new;
 dd $o;
 # OUTPUT: DBIish $o = DBIish.new


[perl #131168] problems when using require ::($m)

2017-04-17 Thread Zoffix Znet via RT
On Mon, 17 Apr 2017 09:53:28 -0700, mt1...@gmail.com wrote:
> Since I've installed perl6 version 2017.03-234-g0ebdaa4 built on MoarVM 
> version 2017.03-128-gc9ab59c, several modules are experiencing failures 
> when using the following construct (golfed down)(I am sure that the 
> module loads)
> 
> 
> my $m = 'somemodule';
> require ::($m);
> my $o = ::($m).new;
> 
> 
> However, in a simple setup it works fine. I could manage to rewrite 
> things in such a way that errors disappear, but I do not understand it. 
> A question is 'Are the symbols loaded lexically in such a way that it is 
> not possible to instantiate the class in another method?'
> 
> A remaining bug on windows(with latest rakudostar) shows the error;
> 
> Failed to load Config::TOML;
> Lexical with name '' does not exist in this frame
> 
> when using something like the following
> 
> my $m = 'Config::TOML';
> require ::($m) <>;
> 
> see also 
> https://ci.appveyor.com/project/MARTIMM/config-datalang-refine/branch/master
> 
> 
> Other things I've seen before are; not able to find the class name 
> symbol when I want to instatiate the class, or the .^name is shorter 
> than the real class name should be, which accounts for the first error.
> 
> 
> Regards,
> Marcel
> 
> 

Can't reproduce either of the issues you describe. Do you have a piece of code 
we can run that repos the problem?

Also, have you seen the lexical require Upgrade Notification? 
http://rakudo.org/2017/03/18/lexical-require-upgrade-info/

my $m = 'Test';
require ::($m) <>;
ok 1, 1;
# OUTPUT: ok 1 - 1

my $m = 'DBIish';
require ::($m);
my $o = ::($m).new;
dd $o;
# OUTPUT: DBIish $o = DBIish.new


[perl #131168] problems when using require ::($m)

2017-04-17 Thread Zoffix Znet via RT
On Mon, 17 Apr 2017 09:53:28 -0700, mt1...@gmail.com wrote:
> Since I've installed perl6 version 2017.03-234-g0ebdaa4 built on MoarVM 
> version 2017.03-128-gc9ab59c, several modules are experiencing failures 
> when using the following construct (golfed down)(I am sure that the 
> module loads)
> 
> 
> my $m = 'somemodule';
> require ::($m);
> my $o = ::($m).new;
> 
> 
> However, in a simple setup it works fine. I could manage to rewrite 
> things in such a way that errors disappear, but I do not understand it. 
> A question is 'Are the symbols loaded lexically in such a way that it is 
> not possible to instantiate the class in another method?'
> 
> A remaining bug on windows(with latest rakudostar) shows the error;
> 
> Failed to load Config::TOML;
> Lexical with name '' does not exist in this frame
> 
> when using something like the following
> 
> my $m = 'Config::TOML';
> require ::($m) <>;
> 
> see also 
> https://ci.appveyor.com/project/MARTIMM/config-datalang-refine/branch/master
> 
> 
> Other things I've seen before are; not able to find the class name 
> symbol when I want to instatiate the class, or the .^name is shorter 
> than the real class name should be, which accounts for the first error.
> 
> 
> Regards,
> Marcel
> 
> 

Can't reproduce either of the issues you describe. Do you have a piece of code 
we can run that repos the problem?

Also, have you seen the lexical require Upgrade Notification? 
http://rakudo.org/2017/03/18/lexical-require-upgrade-info/

my $m = 'Test';
require ::($m) <>;
ok 1, 1;
# OUTPUT: ok 1 - 1

my $m = 'DBIish';
require ::($m);
my $o = ::($m).new;
dd $o;
# OUTPUT: DBIish $o = DBIish.new


[perl #131168] problems when using require ::($m)

2017-04-17 Thread via RT
# New Ticket Created by  mt1957 
# Please include the string:  [perl #131168]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/Ticket/Display.html?id=131168 >


Since I've installed perl6 version 2017.03-234-g0ebdaa4 built on MoarVM 
version 2017.03-128-gc9ab59c, several modules are experiencing failures 
when using the following construct (golfed down)(I am sure that the 
module loads)


my $m = 'somemodule';
require ::($m);
my $o = ::($m).new;


However, in a simple setup it works fine. I could manage to rewrite 
things in such a way that errors disappear, but I do not understand it. 
A question is 'Are the symbols loaded lexically in such a way that it is 
not possible to instantiate the class in another method?'

A remaining bug on windows(with latest rakudostar) shows the error;

Failed to load Config::TOML;
Lexical with name '' does not exist in this frame

when using something like the following

my $m = 'Config::TOML';
require ::($m) <>;

see also 
https://ci.appveyor.com/project/MARTIMM/config-datalang-refine/branch/master


Other things I've seen before are; not able to find the class name 
symbol when I want to instatiate the class, or the .^name is shorter 
than the real class name should be, which accounts for the first error.


Regards,
Marcel


[perl #131167] [JVM] Newly-added NQP test for catching exceptions fails on JVM

2017-04-17 Thread via RT
# New Ticket Created by  Zoffix Znet 
# Please include the string:  [perl #131167]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/Ticket/Display.html?id=131167 >


I had to fudge it for the release and will unfudge after the release.

The test tests if a labeled exception is uncaught by inner unlabled handler and 
is caught by
outer labeled handler instead, but on JVM it's uncaught entirely.

Fudge: https://github.com/perl6/nqp/commit/0994e33818

Output of failing test:

Unhandled exception; category = 4224
  in  (gen/jvm/stage2/NQPHLL.nqp:1281)
  in  (gen/jvm/stage2/NQPHLL.nqp)
  in catch_unlabeled_first (t/nqp/044-try-catch.t:428)
  in  (t/nqp/044-try-catch.t:439)
  in eval (gen/jvm/stage2/NQPHLL.nqp:1168)
  in evalfiles (gen/jvm/stage2/NQPHLL.nqp:1371)
  in command_eval (gen/jvm/stage2/NQPHLL.nqp:1265)
  in command_line (gen/jvm/stage2/NQPHLL.nqp:1239)
  in MAIN (gen/jvm/stage2/NQP.nqp:4130)
  in  (gen/jvm/stage2/NQP.nqp:4126)
  in  (gen/jvm/stage2/NQP.nqp)