Re: [perl #132268] Floating point anomalies

2017-10-13 Thread sisyphus1


From: Brandon Allbery
Sent: Friday, October 13, 2017 4:15 AM
To: sisyph...@optusnet.com.au
Cc: Carl Mäsak via RT
Subject: Re: [perl #132268] Floating point anomalies
On Thu, Oct 12, 2017 at 5:31 AM,  wrote:
Perl6's printf() function looks a little suspect - though I might be missing
something here.

As with perl5's say function, doubles are rounded to 14 decimal digits of 
precision


To correct that assertion, they both of course round to 15 decimal digits of 
precision.


I question your use of 'accurate'. The low bits are *never* accurate. 
They're trying to be more 'precise', but the value they have will depend 
strongly on how exactly the value was calculated, and there are entirely 
reasonable design decisions that can cause them to differ between 
implementations.


I don't think there's anything "reasonable" about a printf() implementation 
that tells me:


$ perl6 -e 'printf "%.16e\n", Num(sqrt(3e0));'
1.7320508075688800e+00

Perl6 knows quite well that a double assigned a value of 
1.7320508075688800e+00 is not equivalent to the double returned by 
Num(sqrt(3e0)) :


$ perl6 -e 'say "not equivalent" if 1.7320508075688800e0 != Num(sqrt(3e0));'
not equivalent

Furthermore, perl6 also knows quite well that a double assigned the value 
1.7320508075688772e+00 *is* equivalent to the double returned by 
Num(sqrt(3e0)):


$ perl6 -e 'say "ok" if 1.7320508075688772e0 == Num(sqrt(3e0));'
ok

It's bad enough that perl5 and perl6 round to 15 decimal digits of 
precision, but at least perl5's printf will give me 17 decimal digits when I 
ask it to (and I think perl6 should do the same):


$ perl -e 'printf "%.16e\n", sqrt(3.0);'
1.7320508075688772e+00

As a feature request, it would also be nice to see "%a" formatting 
implemented as that then provides one with the means to see the exact value 
of the given double.


Cheers,
Rob 


Re: [perl #132279] [REGRESSION][9999] BagHash.grab with huge values (("foo" => 10000000000000000000).BagHash.grab(1))

2017-10-13 Thread Elizabeth Mattijsen
Fixed with 975fcf6cfd8089bfc237 , tests needed

> On 13 Oct 2017, at 07:01, Aleks-Daniel Jakimenko-Aleksejev (via RT) 
>  wrote:
> 
> # New Ticket Created by  Aleks-Daniel Jakimenko-Aleksejev 
> # Please include the string:  [perl #132279]
> # in the subject line of all future correspondence about this issue. 
> # https://rt.perl.org/Ticket/Display.html?id=132279 >
> 
> 
> Code:
> ("foo" => 1000).BagHash.grab(1)
> 
> ¦«2015.12»:
> 
> 
> ¦«2016.06»:
> 
> 
> ¦«2016.12»:
> 
> 
> ¦«2017.06»:
> Cannot unbox 64 bit wide bigint into native integer
> in block  at 
> /home/bisectable/git/whateverable/data/regressionable/15290317/snippet line 1
> «exit code = 1»
> 
> ¦«f72be0f130cf»:
> Cannot unbox 64 bit wide bigint into native integer
> in block  at 
> /home/bisectable/git/whateverable/data/regressionable/15290317/snippet line 1
> «exit code = 1»
> 
> 
> Possible IRC discussion: 
> https://irclog.perlgeek.de/perl6/2017-10-11#i_15290317
> 
> Bisectable points at 
> https://github.com/rakudo/rakudo/commit/87a95fc1355e01972670895b55b02bc382797fc9


Re: [perl #132279] [REGRESSION][9999] BagHash.grab with huge values (("foo" => 10000000000000000000).BagHash.grab(1))

2017-10-13 Thread Elizabeth Mattijsen via RT
Fixed with 975fcf6cfd8089bfc237 , tests needed

> On 13 Oct 2017, at 07:01, Aleks-Daniel Jakimenko-Aleksejev (via RT) 
>  wrote:
> 
> # New Ticket Created by  Aleks-Daniel Jakimenko-Aleksejev 
> # Please include the string:  [perl #132279]
> # in the subject line of all future correspondence about this issue. 
> # https://rt.perl.org/Ticket/Display.html?id=132279 >
> 
> 
> Code:
> ("foo" => 1000).BagHash.grab(1)
> 
> ¦«2015.12»:
> 
> 
> ¦«2016.06»:
> 
> 
> ¦«2016.12»:
> 
> 
> ¦«2017.06»:
> Cannot unbox 64 bit wide bigint into native integer
> in block  at 
> /home/bisectable/git/whateverable/data/regressionable/15290317/snippet line 1
> «exit code = 1»
> 
> ¦«f72be0f130cf»:
> Cannot unbox 64 bit wide bigint into native integer
> in block  at 
> /home/bisectable/git/whateverable/data/regressionable/15290317/snippet line 1
> «exit code = 1»
> 
> 
> Possible IRC discussion: 
> https://irclog.perlgeek.de/perl6/2017-10-11#i_15290317
> 
> Bisectable points at 
> https://github.com/rakudo/rakudo/commit/87a95fc1355e01972670895b55b02bc382797fc9


Re: [perl #132281] [REGRESSION] .gist of a bag used to say “bag()”, now it says “Bag()” ("blogger".comb.Bag)

2017-10-13 Thread Elizabeth Mattijsen

> On 13 Oct 2017, at 07:37, Aleks-Daniel Jakimenko-Aleksejev (via RT) 
>  wrote:
> 
> # New Ticket Created by  Aleks-Daniel Jakimenko-Aleksejev 
> # Please include the string:  [perl #132281]
> # in the subject line of all future correspondence about this issue. 
> # https://rt.perl.org/Ticket/Display.html?id=132281 >
> 
> 
> Code:
> say "blogger".comb.Bag # if you want for all the letters
> 
> ¦«2015.12»:
> bag(r, l, g(2), b, e, o)
> 
> ¦«2016.06»:
> bag(r, l, g(2), b, e, o)
> 
> ¦«2016.12»:
> bag(r, l, g(2), b, e, o)
> 
> ¦«2017.06»:
> bag(e, l, b, g(2), o, r)
> 
> ¦«f72be0f130cf»:
> Bag(b, e, g(2), l, o, r)
> 
> 
> Possible IRC discussion: 
> https://irclog.perlgeek.de/perl6/2017-10-09#i_15278073
> 
> 
> Bisectable: (2017-07-20) 
> https://github.com/rakudo/rakudo/commit/21b9a720c75656b13805611544aa5ee64c4924ae
> 
> 
> To be honest, I don't know if that's a reasonable ticket. I guess it doesn't 
> really matter if it's bag or Bag, but I'm pretty sure that the change was 
> unintentional so I'm submitting it as a ticket.
> 
> Maybe “bag()” is better because it resembles an actual syntax. Kind of. Judge 
> yourself.

The two are *not* the same.  Bag(foo) is the same as foo.Bag.  Which implies 
taking all values as is.  Whereas bag() implies looking at the values in the 
same way as “.new-from-pairs”.  Observe:

$ 6 'dd bag({a => 42}); dd Bag({ a => 42 })'
(:a(42)).Bag
("a"=>42).Bag


Re: [perl #132281] [REGRESSION] .gist of a bag used to say “bag()”, now it says “Bag()” ("blogger".comb.Bag)

2017-10-13 Thread Aleks-Daniel Jakimenko-Aleksejev
Oh. I guess this has to be rejected then.

On Fri, Oct 13, 2017 at 2:46 PM, Elizabeth Mattijsen  wrote:

>
> > On 13 Oct 2017, at 07:37, Aleks-Daniel Jakimenko-Aleksejev (via RT) <
> perl6-bugs-follo...@perl.org> wrote:
> >
> > # New Ticket Created by  Aleks-Daniel Jakimenko-Aleksejev
> > # Please include the string:  [perl #132281]
> > # in the subject line of all future correspondence about this issue.
> > # https://rt.perl.org/Ticket/Display.html?id=132281 >
> >
> >
> > Code:
> > say "blogger".comb.Bag # if you want for all the letters
> >
> > ¦«2015.12»:
> > bag(r, l, g(2), b, e, o)
> >
> > ¦«2016.06»:
> > bag(r, l, g(2), b, e, o)
> >
> > ¦«2016.12»:
> > bag(r, l, g(2), b, e, o)
> >
> > ¦«2017.06»:
> > bag(e, l, b, g(2), o, r)
> >
> > ¦«f72be0f130cf»:
> > Bag(b, e, g(2), l, o, r)
> >
> >
> > Possible IRC discussion: https://irclog.perlgeek.de/
> perl6/2017-10-09#i_15278073
> >
> >
> > Bisectable: (2017-07-20) https://github.com/rakudo/rakudo/commit/
> 21b9a720c75656b13805611544aa5ee64c4924ae
> >
> >
> > To be honest, I don't know if that's a reasonable ticket. I guess it
> doesn't really matter if it's bag or Bag, but I'm pretty sure that the
> change was unintentional so I'm submitting it as a ticket.
> >
> > Maybe “bag()” is better because it resembles an actual syntax. Kind of.
> Judge yourself.
>
> The two are *not* the same.  Bag(foo) is the same as foo.Bag.  Which
> implies taking all values as is.  Whereas bag() implies looking at the
> values in the same way as “.new-from-pairs”.  Observe:
>
> $ 6 'dd bag({a => 42}); dd Bag({ a => 42 })'
> (:a(42)).Bag
> ("a"=>42).Bag
>


Re: [perl #132283] [REGRESSION] BUILDALL is listed as one of the methods, maybe that's not right (say $foo.^methods)

2017-10-13 Thread Elizabeth Mattijsen
> On 13 Oct 2017, at 07:52, Aleks-Daniel Jakimenko-Aleksejev (via RT) 
>  wrote:
> 
> # New Ticket Created by  Aleks-Daniel Jakimenko-Aleksejev 
> # Please include the string:  [perl #132283]
> # in the subject line of all future correspondence about this issue. 
> # https://rt.perl.org/Ticket/Display.html?id=132283 >
> 
> 
> Code:
> class Foo { has $.bar }; my $f = Foo.new(bar=>'u'); say $f.^methods;
> 
> ¦«2015.12»:
> (bar)
> 
> ¦«2016.06»:
> (bar)
> 
> ¦«2016.12»:
> (bar)
> 
> ¦«2017.06»:
> (bar)
> 
> ¦«f72be0f130cf»:
> (bar BUILDALL)
> 
> 
> 
> Bisectable points at two relevant commits:
> First it was BUILDALL_UNDER_CONSTRUCTION after 
> https://github.com/rakudo/rakudo/commit/9837687d93c907ec232b1c7635776aa0c7faa6bc
> Now it is BUILDALL after 
> https://github.com/rakudo/rakudo/commit/63cf246fd4caa43c52a212054a98e9b450c54127
> 
> 
> I don't know if BUILDALL should be listed or not. My gut feeling says that it 
> shouldn't be, but feel free to argue otherwise. I'm just the messenger.

Well, it *is* an auto-generated method that is installed in the namespace.  
Just like “bar”. So either we should show both, or neither.  Or introduce a 
flag to include/exclude auto-generated methods.  But then we would need to mark 
those methods as auto-generated somehow.

Re: [perl #132283] [REGRESSION] BUILDALL is listed as one of the methods, maybe that's not right (say $foo.^methods)

2017-10-13 Thread Elizabeth Mattijsen via RT
> On 13 Oct 2017, at 07:52, Aleks-Daniel Jakimenko-Aleksejev (via RT) 
>  wrote:
> 
> # New Ticket Created by  Aleks-Daniel Jakimenko-Aleksejev 
> # Please include the string:  [perl #132283]
> # in the subject line of all future correspondence about this issue. 
> # https://rt.perl.org/Ticket/Display.html?id=132283 >
> 
> 
> Code:
> class Foo { has $.bar }; my $f = Foo.new(bar=>'u'); say $f.^methods;
> 
> ¦«2015.12»:
> (bar)
> 
> ¦«2016.06»:
> (bar)
> 
> ¦«2016.12»:
> (bar)
> 
> ¦«2017.06»:
> (bar)
> 
> ¦«f72be0f130cf»:
> (bar BUILDALL)
> 
> 
> 
> Bisectable points at two relevant commits:
> First it was BUILDALL_UNDER_CONSTRUCTION after 
> https://github.com/rakudo/rakudo/commit/9837687d93c907ec232b1c7635776aa0c7faa6bc
> Now it is BUILDALL after 
> https://github.com/rakudo/rakudo/commit/63cf246fd4caa43c52a212054a98e9b450c54127
> 
> 
> I don't know if BUILDALL should be listed or not. My gut feeling says that it 
> shouldn't be, but feel free to argue otherwise. I'm just the messenger.

Well, it *is* an auto-generated method that is installed in the namespace.  
Just like “bar”. So either we should show both, or neither.  Or introduce a 
flag to include/exclude auto-generated methods.  But then we would need to mark 
those methods as auto-generated somehow.


Re: [perl #132268] Floating point anomalies

2017-10-13 Thread Brandon Allbery
On Fri, Oct 13, 2017 at 4:59 AM,  wrote:

> It's bad enough that perl5 and perl6 round to 15 decimal digits of
> precision, but at least perl5's printf will give me 17 decimal digits when
> I ask it to (and I think perl6 should do the same):
>

I am wondering if youve talked to any Intel FP engineers. 17 decimal digits
sounds like you expect full internal 80-bit precision even if it's not in
an internal register. Good luck.
(gcc does have ways of doing this on sufficiently recent processors. msvc
does NOT. So, you've just demanded a Windows vs. Unix difference be
enshrined in the language?)

-- 
brandon s allbery kf8nh   sine nomine associates
allber...@gmail.com  ballb...@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonadhttp://sinenomine.net


Re: [perl #132268] Floating point anomalies

2017-10-13 Thread Brandon Allbery via RT
On Fri, Oct 13, 2017 at 4:59 AM,  wrote:

> It's bad enough that perl5 and perl6 round to 15 decimal digits of
> precision, but at least perl5's printf will give me 17 decimal digits when
> I ask it to (and I think perl6 should do the same):
>

I am wondering if youve talked to any Intel FP engineers. 17 decimal digits
sounds like you expect full internal 80-bit precision even if it's not in
an internal register. Good luck.
(gcc does have ways of doing this on sufficiently recent processors. msvc
does NOT. So, you've just demanded a Windows vs. Unix difference be
enshrined in the language?)

-- 
brandon s allbery kf8nh   sine nomine associates
allber...@gmail.com  ballb...@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonadhttp://sinenomine.net


[perl #132268] [MATH] Floating point anomalies

2017-10-13 Thread Zoffix Znet via RT
On Fri, 13 Oct 2017 05:15:58 -0700, allber...@gmail.com wrote:
> On Fri, Oct 13, 2017 at 4:59 AM,  wrote:
> 
> > It's bad enough that perl5 and perl6 round to 15 decimal digits of
> > precision, but at least perl5's printf will give me 17 decimal digits when
> > I ask it to (and I think perl6 should do the same):
> >
> 
> I am wondering if youve talked to any Intel FP engineers. 17 decimal digits
> sounds like you expect full internal 80-bit precision even if it's not in
> an internal register. Good luck.
> (gcc does have ways of doing this on sufficiently recent processors. msvc
> does NOT. So, you've just demanded a Windows vs. Unix difference be
> enshrined in the language?)
> 

Perhaps the discussions about who talked to Intel engineers could be moved 
somewhere off the RT?

The person fixing this ticket can figure out how much precision we can possibly 
give, without any luck wished upon those who made a feature request.


[perl #132268] [MATH] Floating point anomalies

2017-10-13 Thread Zoffix Znet via RT
On Fri, 13 Oct 2017 05:15:58 -0700, allber...@gmail.com wrote:
> On Fri, Oct 13, 2017 at 4:59 AM,  wrote:
> 
> > It's bad enough that perl5 and perl6 round to 15 decimal digits of
> > precision, but at least perl5's printf will give me 17 decimal digits when
> > I ask it to (and I think perl6 should do the same):
> >
> 
> I am wondering if youve talked to any Intel FP engineers. 17 decimal digits
> sounds like you expect full internal 80-bit precision even if it's not in
> an internal register. Good luck.
> (gcc does have ways of doing this on sufficiently recent processors. msvc
> does NOT. So, you've just demanded a Windows vs. Unix difference be
> enshrined in the language?)
> 

Perhaps the discussions about who talked to Intel engineers could be moved 
somewhere off the RT?

The person fixing this ticket can figure out how much precision we can possibly 
give, without any luck wished upon those who made a feature request.


[perl #132285] [REGRESSION] Error message talks about null strings when trying to create a num32 Blob (Blob[num32].new(2e0))

2017-10-13 Thread Daniel Green via RT
Fixed in https://github.com/rakudo/rakudo/pull/1189

Not sure where tests should go, roast or rakudo?


Re: [perl #132268] Floating point anomalies

2017-10-13 Thread Sisyphus via RT

From: Brandon Allbery
Sent: Friday, October 13, 2017 4:15 AM
To: sisyph...@optusnet.com.au
Cc: Carl Mäsak via RT
Subject: Re: [perl #132268] Floating point anomalies
On Thu, Oct 12, 2017 at 5:31 AM,  wrote:
Perl6's printf() function looks a little suspect - though I might be missing
something here.

>> As with perl5's say function, doubles are rounded to 14 decimal digits of 
>> precision

To correct that assertion, they both of course round to 15 decimal digits of 
precision.

> I question your use of 'accurate'. The low bits are *never* accurate. 
> They're trying to be more 'precise', but the value they have will depend 
> strongly on how exactly the value was calculated, and there are entirely 
> reasonable design decisions that can cause them to differ between 
> implementations.

I don't think there's anything "reasonable" about a printf() implementation 
that tells me:

$ perl6 -e 'printf "%.16e\n", Num(sqrt(3e0));'
1.7320508075688800e+00

Perl6 knows quite well that a double assigned a value of 
1.7320508075688800e+00 is not equivalent to the double returned by 
Num(sqrt(3e0)) :

$ perl6 -e 'say "not equivalent" if 1.7320508075688800e0 != Num(sqrt(3e0));'
not equivalent

Furthermore, perl6 also knows quite well that a double assigned the value 
1.7320508075688772e+00 *is* equivalent to the double returned by 
Num(sqrt(3e0)):

$ perl6 -e 'say "ok" if 1.7320508075688772e0 == Num(sqrt(3e0));'
ok

It's bad enough that perl5 and perl6 round to 15 decimal digits of 
precision, but at least perl5's printf will give me 17 decimal digits when I 
ask it to (and I think perl6 should do the same):

$ perl -e 'printf "%.16e\n", sqrt(3.0);'
1.7320508075688772e+00

As a feature request, it would also be nice to see "%a" formatting 
implemented as that then provides one with the means to see the exact value 
of the given double.

Cheers,
Rob 


[perl #132287] [CONC] stall/block in async heavy code

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


Below is the best golfing I could manage.  I ran it like so for 
bisecting:

while perl6 test.pl6; do :; done

The symptom is that sometimes (90%+ on my box and ungolfed) the program
seems to stall out on the qqx line.  The last thing that is printed is
"before".  But on earlier commits (that actually build) no such 
stallage
happened for a couple minutes run time.




[jdv@new-host-2]$ cat test.pl6
use v6.d.PREVIEW;

my %c = (:0reactor_count);
my $s = supply {
 whenever IO::Socket::Async.listen('0.0.0.0', 5000) -> $c-conn {
 %c{$c-conn}++;

 emit $c-conn;

 %c{$c-conn} = Supplier.new;

 $c-conn.Supply.lines.tap({
 %c{$c-conn}.emit: $_ });
 }
}

sub start_reactor ($msgs-in) {
 start {
 react whenever $msgs-in -> $msg-in {
 say "before";
 say qqx{echo foo};
 say "after";
 %c++;
 }
 }
}

start {
 react whenever $s -> $c-conn {
 start {
 start_reactor(%c{$c-conn}.Supply);
 }
 }
}

sleep 1;
my $c = await IO::Socket::Async.connect('0.0.0.0', 5000);
await $c.print("foo\n");
sleep 1;
exit %c ?? 0 !! 1;
[jdv@new-host-2]$




[jdv@new-host-2]$ git bisect good
80b49320cf854ac68a17cdd216575ee26e380325 is the first bad commit
commit 80b49320cf854ac68a17cdd216575ee26e380325
Author: Jonathan Worthington 
Date:   Wed Sep 13 16:08:58 2017 +0200

 Initial re-implementation of thread pool scheduler

 Has separate general and timer queues with separate workers, and 
also
 introduces affinity queues, which are intended for cases where 
events
 will be fed into a `Supply`, and thus there's no point having lots 
of
 threads competing over them only to immediately stumble over each
 other. The separate timer queue helps with timer events being 
delayed,
 for example by a process producing a load of output.

 The new implementation also adds a supervisor, which is where we 
will
 put the smarts on how many threads to have in the pool. For now, it 
is
 already smart enough to start a lot less threads than the previous
 scheduler when they obviously aren't needed, which should help a 
good
 bit with memory consumption, as well as to add more when needed to
 break deadlocks. This area will be further developed in upcoming
 commits. The default maximum number of threads has been raised to 
64,
 now that the behavior of the scheduler is not to innevitably end up
 starting the maximum number of threads even when they don't have 
any
 work to do.

 Finally, a new RAKUDO_SCHEDULER_DEBUG environment variable can be 
set
 to see how many and what kinds of threads are being started.

:04 04 249e0613cf30b283f4fc3cbb0003474377f6019d 
3bb01ba4471016067e4b542a2158ee3184cdc85c M  src
:04 04 6a4e2506cb269875ff4d40054758a34e24c9024d 
6a827bbc76dc09ba2cb3fda55083ebb3074ae552 M  tools
[jdv@new-host-2]$


[perl #131515] [BISECTME][PERF] Performance loss in some commits

2017-10-13 Thread Aleks-Daniel Jakimenko-Aleksejev via RT
I'll take a look a bit later. It feels like the commit you mentioned is the
right one, which makes me think that we can reject this ticket, but at that
pace the spectest will get to turtle speeds even though all our changes will be
justified.

Anyway, I'll bisect it first and then we'll have a look at what can be done to
Make the Spectest Fast Again.

On 2017-06-05 14:27:28, c...@zoffix.com wrote:
> On Mon, 05 Jun 2017 13:28:00 -0700, elizabeth wrote:
> > Generally, we don’t care about performance once we have an
> > unrecoverable exception that needs to be reported. If the stresstest
> > regression is caused by trying to do Levenstein on method names
> > (which
> > can be a lot on some objects), then maybe the performance of
> > spectest/stresstest can be accounted for by *just* the tests that
> > throw Method Not Found errors?
>
> Yeah, I think the nqp version of the exception is proof that's the
> wrong commit, otherwise
> it'd've got faster than even pre-commit.
>
> Something else was the cause, but I ran out of steam hunting it.


[perl #132287] [REGRESSION][CONC] stall/block in async heavy code

2017-10-13 Thread Nick Logan via RT
RAKUDO_SCHEDULER_DEBUG=1 perl6-gdb-m --ll-exception -e 'while 1 { use 
v6.d.PREVIEW; my %c = (:0reactor_count); my $s = supply { whenever 
IO::Socket::Async.listen("0.0.0.0", 5000) -> $c-conn { %c{$c-conn}++; emit 
$c-conn; %c{$c-conn} = Supplier.new; $c-conn.Supply.lines.tap({ 
%c{$c-conn}.emit: $_ }); } }; sub start_reactor ($msgs-in) { 
start { react whenever $msgs-in -> $msg-in { say "before"; say QX("echo foo"); 
say "after"; %c++; } } }; start { react whenever $s -> $c-conn { 
start { start_reactor(%c{$c-conn}.Supply); } } }; sleep 1; my $c 
= await IO::Socket::Async.connect("0.0.0.0", 5000); await $c.print("foo\n"); 
sleep 1; }'

Eventually prints out (for me):

Unhandled exception in code scheduled on thread 4
Too few positionals passed; expected 6 arguments but got 2
  in block  at SETTING::src/core/IO/Socket/Async.pm line 151
  in block  at SETTING::src/core/ThreadPoolScheduler.pm line 225
  in block  at SETTING::src/core/ThreadPoolScheduler.pm line 224
  in method run-one at SETTING::src/core/ThreadPoolScheduler.pm line 224
  in method dispatch: at SETTING::src/core/Mu.pm line 732
  in block  at SETTING::src/core/ThreadPoolScheduler.pm line 258


[perl #132288] [REGRESSION][9999] .tail with large negative arguments (say (4,5,6).tail(-9999999999999999999))

2017-10-13 Thread via RT
# New Ticket Created by  Aleks-Daniel Jakimenko-Aleksejev 
# Please include the string:  [perl #132288]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/Ticket/Display.html?id=132288 >


Code:
say (4,5,6).tail(-999)

¦«2015.12»:
()

¦«2016.06»:
()

¦«2016.12»:
MoarVM panic: Memory allocation failed; could not allocate 12233720368547758088 
bytes «exit code = 1»

¦«2017.06»:
Cannot unbox 64 bit wide bigint into native integer
  in block  at 
/home/bisectable/git/whateverable/data/regressionable/15219088/snippet line 1
 «exit code = 1»

¦«f72be0f130cf»:
Cannot unbox 64 bit wide bigint into native integer
  in block  at 
/home/bisectable/git/whateverable/data/regressionable/15219088/snippet line 1
 «exit code = 1»


Possible IRC discussion: 
https://irclog.perlgeek.de/perl6-dev/2017-09-26#i_15219088

Output on all releases: https://gist.github.com/e2dcff80e1517153e8a6b8b401c9da46

No useful output from Bisectable.


I think that the behavior on 2015.12 is right. It should not throw an exception 
just because your negative number is slightly larger. So the right output would 
be “()” no matter how large or small your negative value is.


[perl #132289] [REGRESSION] Lost line number in Proc::Async's “no such file or directory” error

2017-10-13 Thread via RT
# New Ticket Created by  Aleks-Daniel Jakimenko-Aleksejev 
# Please include the string:  [perl #132289]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/Ticket/Display.html?id=132289 >


Code:
my $a = Proc::Async.new(); $a.stdout.tap(-> $a {}); 
$a.stderr.tap(-> $a {}); if (await $a.start).exitcode { say "oops"} else { say 
"ok"}

¦«2015.12»:
no such file or directory
  in block  at 
/home/bisectable/git/whateverable/data/regressionable/15215457/snippet line 1
 «exit code = 1»

¦«2016.06»:
no such file or directory
  in block  at 
/home/bisectable/git/whateverable/data/regressionable/15215457/snippet line 1
 «exit code = 1»

¦«2016.12»:
===SORRY!===
no such file or directory «exit code = 1»

¦«2017.06»:
Unhandled exception in code scheduled on thread 3
no such file or directory
 «exit code = 1»

¦«f72be0f130cf»:
Unhandled exception in code scheduled on thread 4
no such file or directory
 «exit code = 1»


Possible IRC discussion: https://irclog.perlgeek.de/perl6/2017-09-26#i_15215457



If we can print “in block  at … line 1” then we definitely should. And we 
probably can, judging by the output on 2015.12.


[perl #132290] [LTA] .gist of a Method does not always show the its .name (.say for .^methods)

2017-10-13 Thread via RT
# New Ticket Created by  Aleks-Daniel Jakimenko-Aleksejev 
# Please include the string:  [perl #132290]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/Ticket/Display.html?id=132290 >


Code:
say .name, “ – ”, .gist for .^methods

Result:
from-iterator – from-iterator
from-slurpy – from-slurpy
from-slurpy-onearg – from-slurpy-onearg
from-slurpy-flat – from-slurpy-flat
new – new
to – to
from – from
sum – sum
fmt – fmt
BIND-POS – BIND-POS
reification-target – reification-target
iterator – iterator
sink – sink
STORE – STORE
eager – eager
Capture – Capture
FLATTENABLE_LIST – FLATTENABLE_LIST
FLATTENABLE_HASH – FLATTENABLE_HASH
CALL-ME – CALL-ME
pick – pick
roll – roll
reverse – reverse
rotate – rotate
combinations – combinations
permutations – permutations
join – join
push – push
append – append
unshift – unshift
prepend – prepend
shift – shift
pop – pop
item – item
of – of
hyper – hyper
race – race
lazy – lazy
flat – flat
lazy-if – lazy-if
Bool – Bool
Int – Int
end – Method+{}.new
Numeric – Numeric
Str – Str
elems – Method+{}.new
AT-POS – Method+{}.new
EXISTS-POS – Method+{}.new
ACCEPTS – ACCEPTS
list – Method+{}.new
values – Method+{}.new
keys – Method+{}.new
kv – Method+{}.new
pairs – Method+{}.new
antipairs – Method+{}.new
invert – Method+{}.new
gist – gist
perl – perl
List – Method+{}.new
Slip – Method+{}.new
Array – Method+{}.new
Supply – Method+{}.new
is-lazy – is-lazy
sort – Method+{}.new
tail – tail
Bag – Method+{}.new
MixHash – Method+{}.new
Mix – Method+{}.new
Set – Method+{}.new
BagHash – Method+{}.new
SetHash – Method+{}.new
BUILDALL – BUILDALL



I think that “Method+{}.new” is a LTA gist for a method 
object.


[perl #132291] [LTA] Too few positionals passed to '' (for [:a] X [:b] -> ($i, $j) { })

2017-10-13 Thread via RT
# New Ticket Created by  Aleks-Daniel Jakimenko-Aleksejev 
# Please include the string:  [perl #132291]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/Ticket/Display.html?id=132291 >


Code:
for [:a] X [:b] -> ($i, $j) { }

Result:
Too few positionals passed to ''; expected 2 arguments but got 0 in 
sub-signature
  in block  at -e line 1



Passed to what?


FWIW this is not a regression. Previously it was saying “Too few positionals 
passed; expected 2 arguments but got 0 in sub-signature” which is not any 
better.


[perl #132291] [LTA] Too few positionals passed to '' (for [:a] X [:b] -> ($i, $j) { })

2017-10-13 Thread Aleks-Daniel Jakimenko-Aleksejev via RT
Oh, but maybe it's worth mentioning that the name was added in this commit:
https://github.com/rakudo/rakudo/commit/7783fcab24813054902414f30f6fd4fd60823c30

On 2017-10-13 20:13:01, alex.jakime...@gmail.com wrote:
> Code:
> for [:a] X [:b] -> ($i, $j) { }
>
> Result:
> Too few positionals passed to ''; expected 2 arguments but got 0 in
> sub-signature
> in block  at -e line 1
>
>
>
> Passed to what?
>
>
> FWIW this is not a regression. Previously it was saying “Too few
> positionals passed; expected 2 arguments but got 0 in sub-signature”
> which is not any better.


[perl #132292] [REGRESSION] Recursively .emit-ing from the tap of the same supply bails out

2017-10-13 Thread via RT
# New Ticket Created by  Aleks-Daniel Jakimenko-Aleksejev 
# Please include the string:  [perl #132292]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/Ticket/Display.html?id=132292 >


Code:
my $s1 = Supplier.new; $s1.Supply.tap: { say $_; $s1.emit(2) if $++ < 5; say 
"here" }; $s1.emit(1)


¦2017.06:
1
2
2
2
2
2
here
here
here
here
here
here

¦HEAD(012c80f):
1
here
2


Possible IRC discussion: 
https://irclog.perlgeek.de/perl6-dev/2017-09-21#i_15197905

The behavior change two times, first it started hanging after
(2017-09-18) 
https://github.com/rakudo/rakudo/commit/4a8038c2956e863bc661a2a00e8371eb98002608
And then the hang was resolved (incorrectly?) in
(2017-09-22) 
https://github.com/rakudo/rakudo/commit/547839200a772e26ea164e9d1fd8c9cd4a5c2d9f


I think the output on 2017.06 makes more sense.


[perl #132293] [REGRESSION] It is no longer possible to create native ints with .new (int32.new(42))

2017-10-13 Thread via RT
# New Ticket Created by  Aleks-Daniel Jakimenko-Aleksejev 
# Please include the string:  [perl #132293]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/Ticket/Display.html?id=132293 >


Code:
say int32.new(42)


¦«2016.10,2016.11,2016.12,2017.01,2017.02,2017.03,2017.04.3,2017.05,
  2017.06,2017.07,2017.08,2017.09»:
42


¦«HEAD(012c80f)»:
No such method 'BUILDALLPLAN' for invocant of type 'Perl6::Metamodel::NativeHOW'
in block  at /tmp/B93UszWrfP line 1



Bisectable points at (2017-09-19) 
https://github.com/rakudo/rakudo/commit/0834036dd436ac7372c8c0fe2f49511a4f5186dd


[perl #132012] [ANNOYING] Numeric values of signals are wrong (say +SIGUSR1)

2017-10-13 Thread Aleks-Daniel Jakimenko-Aleksejev via RT
There's something regression-ish about it.

Code:
say $*KERNEL.signal: SIGUSR1

¦79b8ab9d3f^:

10

¦79b8ab9d3f:
30


See (2017-06-02)
https://github.com/rakudo/rakudo/commit/79b8ab9d3f9a5499e8a7859f34b4499fb352ac13

On 2017-09-01 15:39:42, alex.jakime...@gmail.com wrote:
> We now have a note in the docs about this. When fixed, change the docs
> accordingly (*maybe* saying that versions before X are known to have a bug).
>
> https://github.com/perl6/doc/commit/39e3efc08d
>
> See IRC discussion: https://irclog.perlgeek.de/perl6/2017-09-01#i_15103501
> On 2017-09-01 03:33:34, alex.jakime...@gmail.com wrote:
> > Code:
> > say +SIGUSR1
> >
> > Result:
> > 30
> >
> >
> > However, on my system SIGUSR1 is *not* 30 (it is 10). I guess rakudo
> > should try harder to find proper values of the system it runs on.
> >
> > See this doc issue: https://github.com/perl6/doc/issues/1474


[perl #131966] [REGRESSION][9999] Shaped native arrays with negative sizes (my int @a[-9999999999999999])

2017-10-13 Thread Aleks-Daniel Jakimenko-Aleksejev via RT
Actually, it is a regression.

Code:
my int @x[-2**63]; say @x.shape


¦«2015.12»:
(-9223372036854775808)

¦«2016.06»:
Illegal dimension in shape: -9223372036854775808. All dimensions must be
integers bigger than 0
in block  at
/home/bisectable/git/whateverable/data/regressionable/15074816/snippet line 1
«exit code = 1»

¦«2016.12»:
(-9223372036854775808)

¦«2017.06»:
(-9223372036854775808)

¦«f72be0f130cf»:
(-9223372036854775808)


Possible IRC discussion:
https://irclog.perlgeek.de/perl6-dev/2017-08-26#i_15074816


So it was first fixed in
(2016-04-09)
https://github.com/rakudo/rakudo/commit/46dca95547949bc3d791efb2620d362a68176fdc

and the accidentally broken in
(2016-11-24)
https://github.com/rakudo/rakudo/commit/1b840f19599027f980fcc54f4b565ef06a1043bc

On 2017-08-26 16:43:20, alex.jakime...@gmail.com wrote:
> Code:
> my int @x[-2**63];
> say +@x
>
> Result:
> -9223372036854775808
>
>
> See RT #126800 for exactly the same issue with non-native arrays:
> https://rt.perl.org/Ticket/Display.html?id=126800


[perl #132294] [REGRESSION][PERF] INTERPOLATE-related change made matching of large strings slower

2017-10-13 Thread via RT
# New Ticket Created by  Aleks-Daniel Jakimenko-Aleksejev 
# Please include the string:  [perl #132294]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/Ticket/Display.html?id=132294 >


Code:
my $a = rx/aab/; 'a' x 99 ~ 'b' ~~ /$a/; say now - INIT now

¦«2015.12»:
5.21453528

¦«2016.06»:
2.98116495

¦«2016.12»:
4.7695178

¦«2017.06»:
4.2054743

¦«f72be0f130cf»:
3.93059297


Possible IRC discussion: 
https://irclog.perlgeek.de/perl6-dev/2017-08-24#i_15066525


The time swings back and forth but there's a clear regression (from <3 seconds 
to >4).

Bisectable points at (2016-09-14) 
https://github.com/rakudo/rakudo/commit/c3b044df16957057ff2d64297f3bcdbdbad622a1