Geth roast: 759a88c8cc | (Timo Paulssen)++ | S32-num/rounders.t
don't use EVAL in rounders.t any more.

i'm not sure why EVAL was used here in the first place, maybe at that point indirect method calls or lexical lookup of subs didn't work yet, or maybe this test was supposed to use less features? In that case, feel free to revert this.
02:42
samcv bisectable6, for ^1000 { for "LESS-THAN SIGN".split([" ", "-"]) { } } 03:18
bisectable6 samcv, Bisecting by exit code (old=2015.12 new=2cf9b53). Old exit code: 0
samcv, bisect log: gist.github.com/133bbfb9390366d142...6908cdcd60
samcv, (2017-03-01) github.com/rakudo/rakudo/commit/9d...29a8af0cc1
samcv ruh-roh 03:21
lizmat, if you're around you broke some things about a day ago
m: for ^1 { for "LESS-THAN SIGN".split([" ", "-"]) { } } 03:22
camelia X::TypeCheck::Binding exception produced no message
in block <unit> at <tmp> line 1
MasterDuke committable6: v6c for ^1000 { for "LESS-THAN SIGN".split([" ", "-"]) { } }
timotimo right. the IB2 sub that's used inside our internal mergesort implementation gets a \one that's a BOOTIntArray, but it expects at least Any
committable6 MasterDuke, gist.github.com/33abed2f875c6b7b47...a7bdbf2bf8
samcv so the for loop is passing a native int? is that what you're saying? 03:23
bootint
i mean
*array
timotimo the for loop?
samcv yeah does that have anything to do with it?
m: "LESS-THAN SIGN".split([" ", "-"]) { } 03:24
camelia 5===SORRY!5=== Error while compiling <tmp>
Unexpected block in infix position (missing statement control word before the expression?)
at <tmp>:1
------> 3"LESS-THAN SIGN".split([" ", "-"])7ā5 { }
expecting any of:
infix
ā€¦
samcv m: "LESS-THAN SIGN".split([" ", "-"])
camelia X::TypeCheck::Binding exception produced no message
in block <unit> at <tmp> line 1
timotimo it does not
samcv ah ok. so where does the bootintarray come from? the alternates?
are chose the cp's of the alternates or something?
timotimo i can make it give a proper exception there 03:25
no, it's internal to the split method 03:26
i expect it's a list of "where does it first appear" for each needle in turn
samcv ah k
timotimo anyway, i seem to already have fixes 03:27
first i'll see to it that i can fix the error not getting a proper exception message printed
samcv yay
timotimo i rebuilt with a potential fix for that and a fix for the split thing 03:28
so i couldn't actually see if the error was fixed or not
ah, i have a hunch 03:34
m: use nqp; sub test(\a) {}; test nqp::list_i() 03:56
camelia X::TypeCheck::Binding exception produced no message
in sub test at <tmp> line 1
in block <unit> at <tmp> line 1
timotimo this is how to get that error
it throws some exception while it's running the method "message" 03:57
"Cannot find method 'item': no method cache and no .^find_method" 03:58
not sure why it's trying to do that. maybe something to do with hllize?
timotimo tries .backtrace.full.note 04:00
Stage optimize : WARNINGS for /home/timo/perl6/rakudo/gen/moar/CORE.setting: 04:01
Useless use of "~" in expression ".priors() ~ \"Type check failed in $.operation$to; $expected\"" in sink context (line 33921)
intriguing, i must have b0rked something
yup. forgot a "return"
the .item is from using $.method 04:06
going from one b0rk to the next 04:09
not making real progress, so i guess i'll lie down and have liz handle the rest
Geth rakudo/nom: 4707360a68 | (Timo Paulssen)++ | src/core/Rakudo/Internals.pm
Get around X::TypeCheck::Binding in IB2

one way to make this happen is to "A-B C".split([" ", "-"]) when it tries to swap something going via the IB2 sub. It gets a BOOTIntArray but expects the arguments to be at least Any.
One further problem is that code like this causes a X::Binding::TypeCheck exception that fails to generate its method due to the very lowlevel object being used less-than-carefully.
04:12
timotimo lizmat: ^ this fixes the problem with split, but maybe you can do something about the X::Binding::TypeCheck blowing up with low-level types 04:14
also, i didn't write a test yet, and i didn't write a ticket. both of these things probably want done
samcv ok I made an RT rt.perl.org/Ticket/Display.html?id=130904 gonna add a roast test 06:41
goddamit kmail is not being nice
lizmat . 09:07
Files=1178, Tests=55978, 192 wallclock secs (11.74 usr 4.62 sys + 1145.83 cusr 109.31 csys = 1271.50 CPU) 09:08
samcv hello lizmat
lizmat samcv++ timotimo++
samcv o/
Geth roast: 9010363b6b | (Samantha McVey)++ | S32-str/split.t
Add test for RT #130904 split with alternates does not give X::

  rt.perl.org/Ticket/Display.html?id=130904
09:10
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130904
samcv there we go
lizmat samcv++ again :-)
samcv lizmat, always breaking things! :)
although it does lead to better testing as well hah
lizmat hopefully breaking things in new ways :-) 09:11
samcv gonna restart my UCD travis. should pass now and not get the X:: 09:13
so BOOTIntArray derives from Mu? I am not sure of nqp objects and what they derive from. i guess BOOT arrays different than VMARrays? 09:15
lizmat samcv: afaik, they're the same as nqp::list 09:19
jnthn samvc: VMArray is a representation, not a type. Many types use that representation. The BOOT* types don't derive from anything; in fact, their meta-object is so primitive it doesn't know what subtypes/inheritance are :) 10:01
(A representation being a memory layout strategy.) 10:04
Geth rakudo/nom: da99402e6c | (Elizabeth Mattijsen)++ | src/core/Exception.pm
Fix remaining part of RT #130904

  $ 6 'sub a(\a) { }; use nqp; a nqp::list_i'
Type check failed in binding to 'a'; expected Any but got BOOTIntArray (?)
10:37
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130904
lizmat afk& 10:38
elaADnlxie re ā€œ*, always breaking thingsā€, this is quite interesting: irclog.perlgeek.de/perl6/2016-05-17#i_12496143 11:00
that's 3 days before bisectable was created: irclog.perlgeek.de/perl6/2016-05-20#i_12514921
IOninja ? what always breaking things? 11:02
HAH, that log :D 11:03
jnthn m: sub a(\a) { }; use nqp; a nqp::list_i 11:04
camelia Type check failed in binding to 'a'; expected Any but got BOOTIntArray (?)
in sub a at <tmp> line 1
in block <unit> at <tmp> line 1
jnthn Don't use nqp::list_i in Perl 6, use array[int].new
It's the same representation and you can use the very same nqp::ops (atpos_i, etc.) on it if you really wish
lizmat jnthn: in the setting, that's not an option, I've found out :-( 11:09
using any native int arrays in the setting seems to break things, if I remember correctly 11:10
IOninja [Coke]: that's a very dramatic change of tone on your part :) Not so long ago, I recall you told me RAKUDO_BLAH_BLAH variables will need to be moved to a wiki when I documented one, yet now you claim Rakudo is the only game in town even after I pointed out agentz's company is actively working on another Perl 6 compiler and you are completely fine with prose on Unicode equating Rakudo with Perl 6. IMO we 11:12
should stick with the original plan and make docs.perl6.org be about Perl 6 The Language and what compiler XYZ implements should be tagged somehow, so that person usiong compiler XYZ can easily see which subset of Perl 6 it implements and person using compiler YYZ can see info for their compiler. We don't want agentz's company releasing FanLang. We want them to release a compiler that implements a subset
jnthn Then let's fix that.
IOninja of Perl 6. Rakudo is slow as hell, but has all the features, FanLang is fast as hell, but lacks many. I'd rather Perl 6 users have the option to select which compiler they want to use, based on their need, rather than programmers choosing which language they want to use, based on their need. Perl 6 is the last language people will learn. And if our docs site can trivially accomodate a compiler XYZ that
implements a subset of the language, that'll motivate people to associate their product with Perl 6 (especially corporate backed ones). Perl 6 is the last language people will learn.
lizmat jnthn: gist.github.com/lizmat/05b9ca664c6...bb18729e03 # native int array in setting 11:16
IOninja "<samcv> lizmat, always breaking things!" It's not lizmat breaking things, it's our lack of tests that's breaking thing. lizmat just contributes a ton of commits that they show up in bisections. 11:18
samcv i agree
and i said that in the next message i believe, that we are adding tests for things as things break. so net benefit :)
lizmat fwiw, I run a spectest *always* before committing
jnthn Yup, and look
lizmat well, 99.99% of the time
jnthn github.com/rakudo/rakudo/blob/nom/...ay.pm#L175
No proto!
lizmat ah 11:19
ok
lemme try and fix that :-)
jnthn Sometimes the errors are accurate. ;-)
IOninja :)
lizmat jnthn: eh, but there is a proto in Mu ??? 11:20
jnthn (Though yes, that error does have some small history of false postive)
For splice?
lizmat argh
s/split/splice :-)
jnthn hehe :)
Was gonna be surprised if we had a proto for splice that far up the chain
lizmat there is a proto in ShapedArrayCommon 11:21
ok, builds now, spectesting 11:23
jnthn \o/
lizmat jnthn: did you ever consider allowing nqp::null as the 2nd parameter to nqp::splice? 11:57
if you want to remove elemens, it always seems like a waste needing to allocate something in order to indicate you want noting 11:58
*nothing
Geth rakudo/nom: 65959501d4 | (Elizabeth Mattijsen)++ | 2 files
Allow for native arrays in the settings

  jnthn++ for pushing this
12:00
lizmat jnthn: do you think shaped arrays should work in the setting ? 12:03
preferably at compile time, so we don't get a global deopt every first time we use a shaped array? 12:04
jnthn A single global deopt is pretty cheap, fwiw 12:06
It's when you're getting dozens of them in a steady state that things get costly 12:07
Also you have to be in code that already got hot
Which is not entirely likely
lizmat ok, I will drop that line of thinking then :-) 12:08
jnthn And on shaped arrays working in the setting - that'd seem nice :)
I'd kinda like to be able to use the shaped array REPR for Blob also 12:09
Because it'd save us a defensive copy in some I/O paths
lunch; bbiab 12:11
lizmat alas, one use case for array[int].new in the setting (Str.split(<a b>)) doesn't work because "array" is not yet known 12:12
:-(
jnthn Why'd that use array[int]? 12:44
But perhaps we can re-order things some...
Str also maybe needs to come pretty earlier though 12:45
pmurias lizmat: re not allocating an array to indicated you want to insert nothing with splice, can't you just reuse one empty array for all the calls? 14:37
yoleaux2 18 Feb 2017 18:22Z <IOninja> pmurias: FYI, I fudged one of the tests you added 'cause it fails on JVM. No idea why: github.com/perl6/nqp/commit/d7314032d7
IOninja Wouldn't that be thread-unsafe 14:38
Oh, nm 14:39
pmurias IOninja: re docs accomodating FanLang you want it being easy to toggle them into FanLang mode where all the stuff it doesn't implement is hidden? 14:50
IOninja pmurias: as an ideal, yes. But in practice will probably need more than just "hidden". Say, one compiler implementing Unicode 8 while other Unicode 9; docs for .uninames would need to indicate something 14:54
lizmat pmurias: that's the approach taken atm 15:06
Geth rakudo/nom: 8eebf0f28f | (Elizabeth Mattijsen)++ | src/core/metaops.pm
Fix for RT #130906
15:25
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130906
nine Ok, I get why "require Test; Test::ok(1);" is supposed to work. But why should "require 'Test.pm'; Test::ok(1);" work? The compiler has no way of knowing the package name at compile time. 16:03
ugexe S11 said that statement would really need to be more like `require Test:file("/whatever/Test.pm")` anyway 17:58
with how the spec parser works maybe `require "ap#package-name[Test]#/foo/bar/Test.pm"`, and add `has $.package-name` to CUR::AP 18:01
nine Oh yes, S11 even says so explicitly: "Alternately, a filename may be mentioned directly, which installs a package that is effectively anonymous to the current lexical scope, and may only be accessed by whatever global names the module installs" 18:31
Oh, wait. "global names the module installs"
[Coke] IOninja: I am not fine with prose equating Perl 6 with Rakudo. 18:53
I am saying (as you did in review here) that the rakudo stuff should be tagged somehow.
and that the current tagging is a step in that direction and should be cleaned up so it's clearer. 18:54
IOninja w00t. My twitter relay bot works :D 18:59
[Coke]: oh OK. I misread then.
[Coke] see, violent agreement. :) 19:16
Geth rakudo/nom: 11ee2fe177 | (Elizabeth Mattijsen)++ | 7 files
One empty list to rule them all

Discussion: irclog.perlgeek.de/perl6-dev/2017-...i_14199648
Arguably, ENL and ENLI should probably be shaped with 0 elements, to ensure nobody will actually change it. But this looks like it's too early in the settings to make this work.
22:17
lizmat m: use nqp; nqp::push(nqp::getattr(Empty,List,q/$!reified/),42); say Empty 22:28
camelia (42)
lizmat good night, #perl6-dev!
IOninja night
.ask lizmat is there any way of hiding ENL/ENLI constants from user's code? If not, perhaps we should prefix them with Rakduo::Internals. The biggest issue is they mess with sub calls that don't use parentheses: `sub ENL { say "hi" }; ENL` no longer prints "hi" and IMO such short names are fairly likely to occur in user code. 22:35
yoleaux2 IOninja: I'll pass your message to lizmat.
ugexe Is there a list somewhere we can put proposed 6.d changes? 22:50
elaADnlxie huggable: 6.d 22:51
huggable elaADnlxie, Proposals for 6.d language: github.com/perl6/specs/blob/master/v6d.pod
ugexe To nit pick: should I list things there that aren't planned changes, and rather changes I think we *should* plan? 22:53
IOninja ugexe: yes. The list was started as something to keep the ideas in, really. Eventually, we'll need to break it up into separate Issues and discuss the merits of each change 22:59
ugexe perfect 23:10