samcv what do people think of this? github.com/rakudo/rakudo/compare/n...v:skip-Inf 01:12
atm if you do "use Test; skip 'reason', Inf" it will cause an infinite loop
so we can either make it throw or make it act as skip-rest does 01:13
brokenchicken I think: YAGNI (You Ain't Gonna Need It) and it's an anti-pattern as the correct way to skip the rest of tests is with skip-rest. I imagine that also slows down all skip() due to the where clause (it can't cache candidate look up IIRC) and we use skip() in skip fudges. 01:34
"due to the where clause" -> that `Inf` in signature is just a sugar for `where $_ eqv Inf` or something along those lines 01:41
Geth p: ef1aa3787b | (Samantha McVey)++ | tools/lib/NQP/Configure.pm
Have Configure.pl tell you what version of Moar it wants if it finds one too old
01:45
perlawhi1l Found a significant bug with `IO.lines` iterator, i think introduced recently with liz's work on iterators
m: $++ for 'mbox'.IO.lines.batch(30)
camelia rakudo-moar d06d7c: OUTPUT«readline requires an object with REPR MVMOSHandle␤ in block <unit> at <tmp> line 1␤␤»
perlawhi1l also affects partial rotor 01:46
m: $++ for 'mbox'.IO.lines.rotor(30, :partial)
camelia rakudo-moar d06d7c: OUTPUT«readline requires an object with REPR MVMOSHandle␤ in block <unit> at <tmp> line 1␤␤»
perlawhi1l if the file's lines are not %% $n, you'll get that error
brokenchicken bisectable6: $++ for 'mbox'.IO.lines.batch(30) 01:47
bisectable6 brokenchicken, Bisecting by output (old=2015.12 new=d06d7c1) because on both starting points the exit code is 1
brokenchicken, bisect log: gist.github.com/6b28171fbb84877cb2...11a6af42c6
brokenchicken, (2015-12-25) github.com/rakudo/rakudo/commit/07...dc61f84053
perlawhi1l it's file IO, so will need a file that bisectable can read 01:48
brokenchicken c: HEAD $++ for '/home/.bash_history'.IO.lines.batch(30)
committable6 brokenchicken, ¦«HEAD»: Failed to open file /home/.bash_history: no such file or directory␤ in block <unit> at /tmp/D8ETrngHjO line 1␤␤Actually thrown at:␤ in block <unit> at /tmp/D8ETrngHjO line 1␤ «exit code = 1»
MasterDuke there is a stdin set for the *ables
brokenchicken c: HEAD $++ for '/home/bisectable/.bash_history'.IO.lines.batch(30)
committable6 brokenchicken, ¦«HEAD»: readline requires an object with REPR MVMOSHandle␤ in block <unit> at /tmp/7klq6b6Dxv line 1␤ «exit code = 1»
brokenchicken bisect: HEAD $++ for '/home/bisectable/.bash_history'.IO.lines.batch(30)
bisectable6 brokenchicken, On both starting points (old=2015.12 new=d06d7c1) the exit code is 1 and the output is identical as well
brokenchicken, Output on both points: 04===SORRY!04=== Error while compiling /tmp/2qpD2EFqxv␤Undeclared name:␤ HEAD used at line 1␤
brokenchicken really....
oh, oops 01:49
bisect: $++ for '/home/bisectable/.bash_history'.IO.lines.batch(30)
bisectable6 brokenchicken, Bisecting by output (old=2015.12 new=d06d7c1) because on both starting points the exit code is 1
brokenchicken, bisect log: gist.github.com/4e26fa248358385f68...ffe7729bcc
brokenchicken, (2016-09-27) github.com/rakudo/rakudo/commit/22...0f14b9c05c
brokenchicken mc: $++ for '/home/bisectable/.bash_history'.IO.lines.batch(30)
committable6 brokenchicken, ¦«2015.12»: Method 'batch' not found for invocant of class 'Seq'␤ in block <unit> at /tmp/5FskAHpaoV line 1␤ «exit code = 1»
brokenchicken *sigh*
c: all $++ for '/home/bisectable/.bash_history'.IO.lines.batch(30)
committable6 brokenchicken, gist.github.com/a30f4e22de92ce6d42...136bf7abdc 01:50
MasterDuke bisect: old=2016.10 $++ for '/home/bisectable/.bash_history'.IO.lines.batch(30)
bisectable6 MasterDuke, Bisecting by output (old=2016.10 new=d06d7c1) because on both starting points the exit code is 1
MasterDuke, bisect log: gist.github.com/70213b2c283fcdb9fd...4282bc629d
MasterDuke, (2017-01-22) github.com/rakudo/rakudo/commit/e0...341b0a8e7f
perlawhi1l hah... try with rotor
batch didn't exist prior to that commit
brokenchicken bisect: old=2016.12 new=HEAD $++ for '/home/bisectable/.bash_history'.IO.lines.batch(30)
bisectable6 brokenchicken, Bisecting by output (old=2016.12 new=d06d7c1) because on both starting points the exit code is 1
brokenchicken, bisect log: gist.github.com/738cbc60184af8bfe3...9fe7ae6de4
brokenchicken, (2017-01-22) github.com/rakudo/rakudo/commit/e0...341b0a8e7f
brokenchicken good plan 01:51
bisect: old=2016.12 new=HEAD $++ for '/home/bisectable/.bash_history'.IO.lines.rotor(30, :partial)
bisectable6 brokenchicken, Bisecting by exit code (old=2016.12 new=d06d7c1). Old exit code: 0
brokenchicken, bisect log: gist.github.com/1be431d0e1c297b76a...cc22f53dd7
brokenchicken, (2017-01-18) github.com/rakudo/rakudo/commit/fd...622cf7486f
samcv wow. uh 01:52
fail Util.pm doesn't have the right order of arguments for skip
had: skip 1, "reason"; and only reason it worked before is the reason became 1 and it just skipped once prolly
was failing loads of tests with that Int constraint cause Util.pm was trying to pass a string as the number of times to skip, since it had the number and reason reversed 01:53
perlawhi1l brokenchicken: so it looks like that rotor is using R::I.Batch() which explains the identical behaivior
brokenchicken samcv: there's a check for that though: github.com/rakudo/rakudo/blob/nom/...t.pm6#L354
samcv well... 01:54
idk what to tell you
brokenchicken samcv: which Util.pm?
samcv it's in roast 01:55
i'm gonna commit a fix now
brokenchicken samcv: those conditions just never got ran (or if they did, user didn't notice) 01:57
samcv they do get run
because it fails tests if i don't have them in the right order
or do you mean the check to make sure it's a number?
they definetly get run
brokenchicken $ perl6 -Ipackages -MTest::Util -e 'is_run "42", {}' 01:58
skip() was passed a non-numeric number of tests. Did you get the arguments backwards?
Geth ast: 6b1e00b212 | (Samantha McVey)++ | packages/Test/Util.pm
Fix Util.pm which had reversed routine arguments for skip
brokenchicken perlawhi1l: right. file the ticket
huggable: rakudobug
huggable brokenchicken, Report bugs by emailing to [email@hidden.address]
brokenchicken goes to bed
samcv i am saying that they do get run because it fails tests if i don't fix the roast Util.pm file
when I have an Int constraint to the skip sub
for whatever reason it didn't catch it 01:59
have a good sleep brokenchicken o/
Geth kudo/nom: ae9d517853 | (Samantha McVey)++ | lib/Test.pm6
Have skip check we get an Int so we don't have a loop when given Inf

If we do: skip 'reason, Inf; we would get an infinite loop. Instead let's make sure we are passed in an Int.
In addition the !~~ Numeric was not catching all cases for some reason, and Util.pm was able to give it a Str
02:12
samcv oh god this isn't good at all. so i got further into being able to use this module by adding its dependencies to the primary perl 6 script 02:21
but then once I added all the deps, i didn't get any of the "Missing or wrong version of dependency" errors, and instead got a segfault :( 02:22
nine, you around?
nine samcv: just woke up 07:57
samcv this is where i'm seeing the issue github.com/samcv/UCD/tree/module-problem 08:00
i made a branch and saved the changes so could be debugged, and just did not move that code into a module and kept working
if you want to clone and run UCD-gen.p6
will give you time to wake up tho :P 08:01
nine Failed to open file /home/nine/install/UCD/UNIDATA/extracted/DerivedNumericValues.txt: no such file or directory 08:18
samcv so it compiled? 08:21
nine looks like
samcv hmmmm 08:22
samcv clones it into another folder
i thought i deleted all precom :\
nine Have you run it with RAKUDO_MODULE_DEBUG=1? That could give you a hint at where it's going wrong 08:23
samcv let me try that 08:24
this is what i got gist.github.com/d2cd4605802cc49c9f...16e57b3593 08:29
nine That kinda looks like it didn't write that dependency into the precomp file? 08:35
Can you take a look at the first few lines (until the first empty line) of /home/samantha/git/UCD-samcv/lib/.precomp/76FE986208165AAEB6161831CBDF7247AAE8CAEC.1485481379.09471/FE/FEC37283C4809ED9F18FA7E1043E3FF262D31FEA 08:36
samcv nine, gist.github.com/dbf8c9fe88a63aba47...56492830c8 08:38
nine Yes, that's just the one dependency. 08:39
Wait, what?! It didn't record the dependency because it just isn't a dependency. 08:42
But anyway, I'm not sure if augmenting and precompilation mix too well
samcv hm 08:44
it worked fine for all the other ones :\
and seems to work for you :\ so that's really werid 08:51
nine Btw. the surest way to get rid of stale precomp files is to recompile rakudo ;) 08:54
samcv will try that 08:55
jnthn can't remember if we made use of `augment` imply "no precompilation" yet 10:04
gfldex jnthn: i remeber that we did 10:15
nine gfldex: that may be our intention, but we don't have code that forces this yet. 10:25
gfldex nine: did you see this? irclog.perlgeek.de/perl6/2017-01-26#i_13992409 10:30
nine gfldex: no 10:35
gfldex: running with RAKUDO_MODULE_DEBUG=1 may give you some hint 10:45
samcv nine, i'm getting more problems like things that i am exporting not being imported 11:22
err actually. well the same problem as before 11:24
missing or wrong version of dependency
ack
even after commenting out the augment string part 11:26
nine maybe it's the print? 11:33
I think Encode40 prints something? Precompilation uses STDOUT for communicating dependencies
samcv ok i can try removing all of them 11:37
i remove it and it still prints the dot out :\ 11:38
oh wait. hm 11:40
nvm
nine slowly exhales
brokenchicken :)
samcv ok now i still get the error :) 11:43
it doesn't print out a dot tho :P
ahh
well i rearranged enough things into different modules i finally got it working :\ 11:53
didn't seem related to Augment though, since still had the problem when I commented all that out 11:55
gfldex nine: that's what I got gist.github.com/gfldex/ca23861f168...844d141a55
|Tux| This is Rakudo version 2017.01-59-gae9d51785 built on MoarVM version 2017.01-14-g357438a9 12:09
csv-ip5xs 2.800
test 12.314
test-t 5.007
csv-parser 13.756
gfldex is there any way to dump what is precompiled under ~/.perl6 ? 12:12
Geth ast: 104a3c8fbb | (Elizabeth Mattijsen)++ | S32-list/iterator.t
Remove List.invert test

List.invert seems to depend on having Pairs as members. This feels really at odds with other .invert implementations, which basically just works off foo.pairs. Changing the List.invert implementation to also work on .pairs makes the tests pass, but this seems countrary to TimToady's intent with List.invert, as seen in baeabb4c .
12:24
ast: 513cc0c1ca | (Elizabeth Mattijsen)++ | S02-types/set-iterator.t
Add basic iterator tests for Set/SetHash
12:32
kudo/nom: f3c9e11d77 | (Elizabeth Mattijsen)++ | t/spectest.data
Run Set/SetHash iterator tests
12:33
ast: 5762d844d7 | (Elizabeth Mattijsen)++ | S02-types/bag-iterator.t
Add basic Bag/BagHash iterator tests
12:37
kudo/nom: dd6c7b6466 | (Elizabeth Mattijsen)++ | t/spectest.data
Make sure we run Bag/BagHash iterator tests
12:38
ast: e5c0fe8bc3 | (Elizabeth Mattijsen)++ | S02-types/mix-iterator.t
Add basic Mix/MixHash iterator tests
12:43
kudo/nom: 2734533a05 | (Elizabeth Mattijsen)++ | t/spectest.data
Make sure we run basic Mix/MixHash iterator tests
12:44
dogbert17_ lizmat: did you see this? irclog.perlgeek.de/perl6-dev/2017-...i_13996365 12:57
lizmat dogbert17_: no, did you make a ticket ? 12:58
Geth ast: b9dee81d57 | (Elizabeth Mattijsen)++ | packages/Test/Iterator.pm
Abstract iterator testing logic into Test::Iterator
13:00
ast: f5f65406f2 | (Elizabeth Mattijsen)++ | 5 files
Have iterator tests use Test::Iterator
13:01
lizmat afk& 13:03
dogbert17_ lizmat: no, I assumed that the people involved in the discussion would do that. If they have forgotten to do it I'll add it later today 13:07
brokenchicken mc: .pull-one xx 1000 given $*PROGRAM.IO.lines.iterator 13:25
committable6 brokenchicken, ¦«2015.12»: readline requires an object with REPR MVMOSHandle␤ in block at /tmp/l7c6P8ZjVs line 1␤ in block <unit> at /tmp/l7c6P8ZjVs line 1␤ «exit code = 1»
brokenchicken Seems that bug existed for ages and RI::Batch just exposed it 13:26
Ah, I see where it's at 13:33
I'm getting stresstest failures in t/spec/S02-types/num.t and t/spec/S09-hashes/objecthash.t: gist.github.com/zoffixznet/422f019...bd02b2e250 14:04
m: dd (my %h).list.perl 14:05
camelia rakudo-moar 273453: OUTPUT«"().Seq"␤»
brokenchicken hm
stale roast 14:07
Geth kudo/nom: ede01c2476 | (Zoffix Znet)++ | src/core/IO/Handle.pm
Fix crash in .pull-one on IO::Handle.lines iterator

That seems to occur with RI::Batch/RI::Rotor iterators or when .pull-one is called manually.
The iterator calls .get() on the Handle that reads from its $!PIO and when that's exhaused the $!PIO is set to null. So when the next
  .pull-one is done, we try to .get() on a closed handle by attempting
to read from nqp::null() that $!PIO is now is.
Bug find: irclog.perlgeek.de/perl6-dev/2017-...i_13996365
14:12
ast: 44ba5ec46d | (Zoffix Znet)++ | S16-io/lines.t
Test IO::Handle.lines iterator does not crash when...

  ...the handle gets closed
Rakudo fix: github.com/rakudo/rakudo/commit/ede01c2476
14:13
brokenchicken IO::Handle.get() is in want of some loving for cases when the handle is closed... I hear there's a grant application for that area, so fingers crossed it gets approved :} 14:14
hmm 14:15
$!handle.WHAT is probably a mistake in the above fix. If this stuff's on a subclass of IO::Handle that'll explode. 14:16
Need to do some $work first but will take a look at that today.
ZOFVM: Files=1220, Tests=133304, 189 wallclock secs (22.21 usr 3.21 sys + 3568.36 cusr 266.27 csys = 3860.05 CPU)
m: $++ for 'mbox'.IO.lines.rotor(30, :partial) 14:23
camelia rakudo-moar 273453: OUTPUT«readline requires an object with REPR MVMOSHandle␤ in block <unit> at <tmp> line 1␤␤»
brokenchicken m: $++ for 'mbox'.IO.lines.rotor(30)
camelia ( no output )
brokenchicken m: $++ for 'mbox'.IO.lines.batch(30) 14:31
camelia ( no output )
brokenchicken m: $++ for 'mbox'.IO.lines.rotor(30, :partial)
camelia ( no output )
dogbert17_ brokenchicken++ 15:34
Geth kudo/nom: 12 commits pushed by jnthn++
review: github.com/rakudo/rakudo/compare/e...dd1cb5fc9a
16:10
jnthn That was the merge in of v6.d.PREVIEW and non-blocking await :) 16:11
brokenchicken cool 16:12
We now officially have more than one language version that can be used :P
jnthn :) 16:13
moritz \o/ 16:17
[Coke] so, how do we spectect v6.d.PREVIEW? 16:22
brokenchicken right now that file juse uses v6.d.PREVIEW and that mode is enabled in it 16:23
[Coke] master? 6.d.PREVIEW branch?
brokenchicken that file => the one file with a test in it
[Coke] ok. that's fine for now, we'll have to have a plan as we get closer to Diwali.
jnthn It'll be easy enough to grep that out later, I figure. 16:25
[Coke] jnthn: I don't necessarily want us to do exactly the same thing we did with christmas, though. (maybe we remove fudges, for example?) 16:26
jnthn [Coke]: Removing the fudges in the thing we tag as 6.d would be nice if we can do it 16:27
My expectation the month or so before 6.d is we'll do something like
1) Rakudo starts to consider 6.d the current default version
2) We remove the now-redundant `use v6.d.PREVIEW` 16:28
3) In a branch, do whatever else we'd like to do in the roast suite we will tag 6.d
4. Tag 6.d there around when the first Rakudo monthly with 6.d support is released.
heh, 4) :)
perlpilot m: use v6.c.PREVIEW; 16:29
camelia ( no output )
jnthn 6.c > 6.c.PREVIEW :)
perlpilot I was just musing about step #2's relation to v6.c
jnthn m: use v6.d.PREVIEW 16:30
camelia rakudo-moar ede01c: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤No compiler available for Perl v6.d.PREVIEW␤at <tmp>:1␤------> 3use v6.d.PREVIEW7⏏5<EOL>␤»
jnthn Not rebuilt yet :)
perlpilot anyway ... jnthn++ :-) 16:31
jnthn writes tests to see that `await` in whenever blocks works out as expected. :) 16:32
Or at least, as I expected :P
brokenchicken m: use v6.d.PREVIEW; say &await.file; use v6.c; say &await.file; 16:36
camelia rakudo-moar dd1cb5: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤No compiler available for Perl v6.c␤at <tmp>:1␤------> 3 v6.d.PREVIEW; say &await.file; use v6.c7⏏5; say &await.file;␤»
brokenchicken m: use v6.c
camelia ( no output )
brokenchicken hm
m: {use v6.d.PREVIEW; say &await.file}; {use v6.c; say &await.file; } 16:37
camelia rakudo-moar dd1cb5: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤No compiler available for Perl v6.c␤at <tmp>:1␤------> 036.d.PREVIEW; say &await.file}; {use v6.c7⏏5; say &await.file; }␤»
brokenchicken m: {use v6.c; say &await.file}; {use v6.d.PREVIEW; say &await.file; }
camelia rakudo-moar dd1cb5: OUTPUT«SETTING::src/core.d/await.pm␤SETTING::src/core.d/await.pm␤»
brokenchicken m: 'use v6.d.PREVIEW; say &await.file'.EVAL; 'use v6.c; say &await.file;'.EVAL 16:40
camelia rakudo-moar dd1cb5: OUTPUT«SETTING::src/core/asyncops.pm␤SETTING::src/core/asyncops.pm␤»
jnthn A use v6.blah directive needs to be the first thing in a file, really. If we ain't enforcing that already, we should start doing so. 16:42
brokenchicken ah 16:43
jnthn Or at the very least, it needs to be no later than we'd allow a unit package decl.
Hmmm...
Now I start writing tests for await and whenever I start realizing it's semantically more interesting that I first realized. :)
brokenchicken m: EVALFILE '/tmp/foo1'; EVALFILE '/tmp/foo2'; 16:47
camelia rakudo-moar dd1cb5: OUTPUT«SETTING::src/core/asyncops.pm␤SETTING::src/core/asyncops.pm␤»
brokenchicken m: use lib </tmp/foo>; use c; use d; 16:48
camelia rakudo-moar dd1cb5: OUTPUT«SETTING::src/core/asyncops.pm␤SETTING::src/core.d/await.pm␤»
brokenchicken Success \o/
b2gills I was just trying out `use v6.d.PREVIEW` on the REPL, and it either doesn't do anything at all, or it doesn't set $*PERL ( -Mv6.d.PREVIEW doesn't work either, and it would be nice ) 16:49
brokenchicken m: use v6.d.PREVIEW; say $*PERL 16:51
camelia rakudo-moar dd1cb5: OUTPUT«Perl 6 (6.d)␤»
jnthn Hm, that should perhaps say 6.d.PREVIEW :) 16:55
b2gills Well it does seem like `use v6.d.PREVIEW` at least does something if it is the first thing in a REPL session, checked by calling `&await.candidates».signature` 17:07
[Coke] jnthn: if it has to be the first thing in a file, does that mean no lexical version scoping? 17:28
jnthn [Coke]: Yes. 17:30
[Coke] awwww, I thought that was going to be a thing. :)
brokenchicken too
jnthn Thing is, if another language version implies a different setting, and the setting is the outer scope of the program, what does it mean to change language version in a nested scope? 17:32
brokenchicken Ah 17:41
I don't fully get then why the setting version can be changed in separate files, yet the `our` symbols are all in the same GLOBAL:: namespace 17:43
Geth ast: 8dead1cd38 | (Jonathan Worthington)++ | S17-supply/syntax-nonblocking-await.t
Add new test file for supply syntax non-blocking.

We'll flesh out the semantics of `await` inside of a `supply`,
  `react`, and `whenever` block a little later on. For now, this just
ensures that `react` itself is non-blocking.
jnthn The setting doesn't define any GLOBAL symbols?
brokenchicken Hm. OK. 17:44
jnthn Everything is my-scoped
Every program you write has the setting as its outer scope
brokenchicken Maybe it'll be clearer when I finish the Internals Course. Hoping to finally do it this weekend :)
jnthn It's semantically like your program is written textually within a bare block at the end of CORE.setting
brokenchicken Ah 17:45
jnthn Here's another nice thing:
Geth kudo/nom: 4aa8d70ebf | (Jonathan Worthington)++ | src/core.d/await.pm
Make `react` also non-blocking in 6.d.PREVIEW.

Or at least, make it that way if it's called in a `start` block. This means you can have many thousands of `start react { ... }` constructs running with just a handful of CPU threads; they will no longer block up a real thread.
kudo/nom: 012c54cc71 | (Jonathan Worthington)++ | t/spectest.data
Run S17-supply/syntax-nonblocking-await.t.
brokenchicken Oh awesome
brokenchicken frequently uses start react ... 17:46
jnthn 6.d will let you do it without worrying :)
brokenchicken \o/
jnthn Need to do a bit of thinking about use of await inside of supply/react/whenever 17:48
More immediately, need dinner :) bbl 17:51
TimToady jnthn: what do you think of reserving the [] subsig (leaving () subsig as is) for forcing pairs to be treated as positionals rather than nameds? Currently we always turn them into named, but that makes it impossible to make a positional subsig that matches, say, two Pairs in a list 18:53
which grondilu++ was attempting the other day, to process an X operator between lists of pairs 18:54
also might be slightly faster to bind [] than () in that case, if we know we don't have to scan for pairs 18:56
probably needs a deprecation till 6.d if we notice :$foo inside [] subsig 18:57
we'd need some signal into the binder that it can make a Capture by just slapping @!list in, rather than using .Capture 18:59
also, currently, the [] vs () distinction doesn't seem very useful, so this would justify that some
samcv jnthn, get some really odd errors with `use 6.d.PREVIEW` inside the doc's htmlify.p6 19:04
No such method 'contents' for invocant of type 'Str'
oh i guess it happens even when we don't use that. different errors than we used to get though. it used to totally segfault 19:08
or whatever it did
[Coke] samcv: the old paralleism code in there was very broken, yes. 19:09
(coke/bughunt branch golf'd the issue, was never fixed, SFAIK)
samcv like it's calling methods on the wrong things :\
it used to crash for me, now it has weirder things happen :) which either means it's more fixed or less fixed or different? 19:10
[Coke] I think the weird things used to lead to crashes which were fixed. now we have to fix the weird things 9which seems like some objects getting replaced by other, unexpected objects) 19:12
RabidGravy yeah, I've seen that in other places too 19:18
if you really punish HTTP::Server::Async it starts trying to throw blocks as exceptions
dogbert17 anyone knows if t/spec/S09-typed-arrays/native-str.t is broken atm? 19:24
brokenchicken wasn't 6 hours ago 19:26
dogbert17 ok 146 - does join a str array
MoarVM panic: Collectable 0x8d696d4 in fromspace accessed
Dubious, test returned 1 (wstat 256, 0x100)
I do have some GC debug flags turned on
Geth ast: 93c356a9e1 | (Elizabeth Mattijsen)++ | packages/Test/Iterator.pm
Add some tests for iterator exhaustion
19:32
kudo/nom: 4830583387 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm
Fix problem with sink-all in R:It.ReifiedList

Spotted by additional iterator testing.
19:33
MasterDuke_ is it ever the case that `$foo ~~ 123` != `$foo == 123` or `$foo ~~ 'bar'` != `$foo eq 'bar'`? 19:38
brokenchicken s: 123, 'ACCEPTS', \($) 19:39
SourceBaby brokenchicken, Sauce is at github.com/rakudo/rakudo/blob/012c...Any.pm#L18
brokenchicken Yup
m: my $foo; say $foo ~~ 0
camelia rakudo-moar 012c54: OUTPUT«False␤»
brokenchicken m: my $foo; say $foo == 0
camelia rakudo-moar 012c54: OUTPUT«Use of uninitialized value of type Any in numeric context␤ in block <unit> at <tmp> line 1␤True␤»
brokenchicken (it says True after the warning)
s: "x", 'ACCEPTS', \($) 19:40
SourceBaby brokenchicken, Sauce is at github.com/rakudo/rakudo/blob/012c...Any.pm#L18
brokenchicken And same for strings
s: "x", 'ACCEPTS', \("y")
SourceBaby brokenchicken, Sauce is at github.com/rakudo/rakudo/blob/012c...tr.pm#L106
MasterDuke_ brokenchicken++
brokenchicken s: &infix:<eq>, \("x", "y") 19:41
SourceBaby brokenchicken, Sauce is at github.com/rakudo/rakudo/blob/012c...r.pm#L2767
brokenchicken s: &infix:<eq>, \("x", ("y" but "z"))
SourceBaby brokenchicken, Sauce is at github.com/rakudo/rakudo/blob/012c...r.pm#L2767
brokenchicken s: &infix:<eq>, \("x", (42 but "z")) 19:42
SourceBaby brokenchicken, Sauce is at github.com/rakudo/rakudo/blob/012c...ngy.pm#L39
MasterDuke_ hm, so the optimizer couldn't just turn the ~~ into the correct op if the RHS is a constant
but can it know if the LHS is initialized? 19:44
`if nqp::isconcrete($foo)` might work 19:45
brokenchicken m: say (42 but role { method Stringy { "x" } }) ~~ "x" 19:46
camelia rakudo-moar 012c54: OUTPUT«False␤»
MasterDuke_ but that's probably more of a run-time thing.
brokenchicken m: say (42 but role { method Stringy { "x" } }) eq "x"
camelia rakudo-moar 012c54: OUTPUT«True␤»
brokenchicken Though unsure if that's more of an indication of inconsistencies thatn actual design 19:47
MasterDuke_ and there is some way to tell if an object has roles/is a subclass, correct? 19:48
brokenchicken wonders how often people use ~~ instead of == or eq 19:49
MasterDuke_ m: use nqp; say nqp::isint(42 but role { method Stringy { "x" } })
camelia rakudo-moar 012c54: OUTPUT«0␤»
brokenchicken m: use nqp; say nqp::isint(42000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)
camelia rakudo-moar 012c54: OUTPUT«0␤»
MasterDuke_ i was going to grep through all-modules for those when i get to my machine
m: use nqp; say nqp::isbigint(42000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) 19:50
camelia rakudo-moar 012c54: OUTPUT«===SORRY!===␤No registered operation handler for 'isbigint'␤»
MasterDuke_ m: use nqp; say nqp::isbig(42000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)
camelia rakudo-moar 012c54: OUTPUT«===SORRY!===␤No registered operation handler for 'isbig'␤»
MasterDuke_ m: use nqp; say nqp::isbig_I(42000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)
camelia rakudo-moar 012c54: OUTPUT«1␤»
brokenchicken m: use nqp; say nqp::isbig_I(.5)
camelia rakudo-moar 483058: OUTPUT«P6opaque: get_boxed_ref could not unbox for the representation '20' of type Rat␤ in block <unit> at <tmp> line 1␤␤» 19:51
brokenchicken m: say "42 " ~~ 42 19:52
camelia rakudo-moar 483058: OUTPUT«True␤»
brokenchicken m: say "42 " ~~ "42 "
camelia rakudo-moar 483058: OUTPUT«True␤»
brokenchicken m: say "42 " ~~ "42"
camelia rakudo-moar 483058: OUTPUT«False␤»
brokenchicken Guess can be handy when you're unsure whether you got a number or a stirng 19:53
MasterDuke_: FWIW, there's already some magics for ACCEPTS in Actions.nqp (search for "ACCEPTS") 19:55
I think we have it turn "foo" ~~ /regex/ into .match call or something or other
MasterDuke_ i don't see anything particularly magical? 19:58
brokenchicken I mean some improvements to codegen :)
to make stuff faster
Never mind :) 19:59
MasterDuke_ heh, i don't see a whole lot of optimizations going on 20:01
though i found this typo unreasonably amusing: github.com/rakudo/rakudo/blob/nom/...6492-L6493
geekosaur smarmy match? 20:02
brokenchicken hehe :) 20:03
m: multi infix:<~~>(\x, \y) {}
camelia rakudo-moar 483058: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Cannot override infix operator '~~', as it is a special form handled directly by the compiler␤(consider implementing an ACCEPTS method)␤at <tmp>:1␤------> 3multi infix:<~~>7⏏5(\x, \y) {}␤»
brokenchicken Hm. I don't know much about it, but from QASTs I see the code generated for it calls &infix:<~~> ("- QAST::Op(callstatic &infix:<~~>) <wanted> ~~"). But if users can't make their own, we can go directly and code-gen an .ACCEPTS method call, no? 20:04
.oO( prolly not 'cause chaining? )
20:05
Geth ast: 32954b2879 | (Elizabeth Mattijsen)++ | S32-list/iterator.t
Ensure lazyiness is preserved of iterators
20:28
lizmat *laziness
brokenchicken lizmat++ all the tests \o/ 20:29
jnthn m: dd (.list, .hash) given (a => 1, b => 2).Capture) 21:04
camelia rakudo-moar 483058: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unexpected closing bracket␤at <tmp>:1␤------> 3t, .hash) given (a => 1, b => 2).Capture7⏏5)␤»
jnthn m: dd (.list, .hash) given (a => 1, b => 2).Capture
camelia rakudo-moar 483058: OUTPUT«((), Map.new((:a(1),:b(2))))␤»
jnthn TimToady: At present, [...] is just (...) plus a Positional constraint
TimToady: And both call .Capture to get the capture to unpack 21:05
TimToady: We could, arguably, make [...] require Positional (still) and instead call .list or so
(Or perhaps .cache)
I suspect that'd actually make destructuring an array more performant, by saving us the cost of the Capture round-trip... 21:06
So it seems like a promising idea at first blush
m: dd (a => 1).list
camelia rakudo-moar 483058: OUTPUT«(:a(1),)␤»
jnthn And that makes a list of 1 thing, so seems it'd handle what you're wanting reasonably 21:07
And [:$foo] and [*%foo] in this case would always be deprecation-warning worthy 21:09
Because you'd just never hit them
With the new behavior
So that part seems sensible too
Geth p/master: 7 commits pushed by pmurias++ 21:11
dogbert17 m: grammar Grammar::Foo { rule TOP { 'z' | <unicode_escape> }; token unicode_escape { '\\u' :i <[0..9a..f]> ** 4 }}; my $res = Grammar::Foo.parse( '\u2603' ); # tests rt130637
camelia rakudo-moar 483058: OUTPUT«(signal SEGV)»
dogbert17 Program received signal SIGSEGV, Segmentation fault. 21:13
0xb7c73015 in nqp_nfa_run (tc=0x804c450, nfa=0x818c340, target=0x818adac, offset=3, total_fates_out=0xbfffd868) at src/6model/reprs/NFA.c:479
479 MVMint64 act = edge_info[i].act; 21:14
jnthn
.oO( That was a not f**king awesome run... )
21:19
jnthn wonders what i is 21:20
Since that's probably the only thing that's liable to be out of bounds there
dogbert17 I see that there is a MVM_NFA_DEB env flag, might that help? 21:21
jnthn May do so, yeah 21:23
Though if it's a malformed NFA then we can detect that at the point we make it from the state list
Rather than bounds-checking every time we're matching
That'll probably also give us a better idea what we're making the NFA for when it goes wrong
Though there aren't many candidates in that grammar tbh :) 21:24
There's only one alternation :)
Guess we can try to golf it down some
Geth ast: 323d9342ab | (Elizabeth Mattijsen)++ | S02-types/range-iterator.t
Add basic Range.iterator tests
21:25
dogbert17 does this gist tell you anything? gist.github.com/dogbert17/251983f9...cb0f65039e
jnthn m: grammar Grammar::Foo { rule TOP { 'z' | <unicode_escape> }; token unicode_escape { '\\u' <[0..9a..f]> ** 4 }}; my $res = Grammar::Foo.parse( '\u2603' );
camelia ( no output )
jnthn It's fine without the :i for example
Geth kudo/nom: 456092af7b | (Elizabeth Mattijsen)++ | t/spectest.data
Make sure we run the Range.iterator tests
21:26
kudo/nom: 05738657f8 | (Elizabeth Mattijsen)++ | src/core/Range.pm
Fix problems in Range.iterator

Specifically in push-all/sink-all in the generic iterator case. Spotted in testing.
21:27
diakopter speaking of NFA, last I checked/knew, the edge/node compiler was making verrrrrry inefficient NFAs, but every change I tried to make broke it... in other words a lot of extra edges had to be there for reasons I couldn't divine. has anyone looked at that in a couple years?
jnthn diakopter: TimToady did, I think :) 21:28
dogbert17: Well, we can see it matched \, u, 2, and 6, and then exploded :)
And that bit is beyond the :i
So it fits so far 21:29
m: grammar Grammar::Foo { rule TOP { 'z' | <unicode_escape> }; token unicode_escape { :i <[0..9a..f]> ** 4 }}; my $res = Grammar::Foo.parse( '2603' );
camelia rakudo-moar 483058: OUTPUT«(signal SEGV)»
jnthn That gets rid of the \u part
diakopter I mention this because it suddenly occurs to me another possibility for the symptoms I was seeing
dogbert17 cool
jnthn bbiab :)
diakopter jnthn: did he find a bunch of improvements? 21:30
TimToady: oy
lizmat hmmm... maybe it's time to re-instate IO::CatPath and IO::CatHandle: github.com/rakudo/rakudo/commit/a2...aa04ce76e5 21:35
dogbert17 at least the SEGV is not something which was introduced recently. it fails on moar-2016.8.1 as well 21:38
lizmat a thought: given that roast determines what is Perl 6, and Test.pm is pure perl 6 code, shouldn't Test.pm live in roast then ? 21:46
dogbert17 m: grammar Grammar::Foo { rule TOP { 'z' | <unicode_escape> }; token unicode_escape { :i <[0..9a..f]> ** 4 }}; my $res = Grammar::Foo.parse( 'abcd' ); 21:47
camelia ( no output )
brokenchicken lizmat, I'd think no. It's just implementation. Roast should have proper tests of Test.pm's routines IMO tho 21:50
lizmat brokenchicken: I think those actually live in "make test"
t/01-sanity 21:51
brb
brokenchicken yeah, though they're a bit rudimentary for something that everything in roast relies on 21:55
the failure modes seem to be just tested by todo'ing a test
maybe that's enough *shrug* 21:56
lizmat, how would we distribute Test.pm if it were in roast?
lizmat in t/spec/packages ?
that's where the other Test:: modules live 21:57
like the recent Test::Iterator additin
brokenchicken I mean for users
lizmat actually, initially I was thinking the other way around: moving those Test:: modules to lib
[Coke] if I had another implementation, I wouldn't want to have to support all of Test.pm in order to run -any- tests.
brokenchicken m: use Test::Util 21:58
camelia rakudo-moar 057386: OUTPUT«===SORRY!===␤Could not find Test::Util at line 1 in:␤ /home/camelia/.perl6␤ /home/camelia/rakudo-m-inst-2/share/perl6/site␤ /home/camelia/rakudo-m-inst-2/share/perl6/vendor␤ /home/camelia/rakudo-m-inst-2/share/perl6␤ CompUnit::Re…»
lizmat m: use lib 't/spec/packages'; use Test::Util
camelia rakudo-moar 057386: OUTPUT«===SORRY!===␤Could not find Test::Util at line 1 in:␤ /home/camelia/t/spec/packages␤ /home/camelia/.perl6␤ /home/camelia/rakudo-m-inst-2/share/perl6/site␤ /home/camelia/rakudo-m-inst-2/share/perl6/vendor␤ /home/camelia/rakudo-m-i…»
lizmat hmmm...
[Coke]: so you would depend on rakudo's Test.pm ? 22:02
[Coke] no, I'd roll my own so I didn't necessarily need to support all the internals that Test.pm was using. 22:05
brokenchicken BTW, while we're on a related topic: lib/TAP.pm. Currently we ship and install it to users. But jnthn++ said it probably should be private for us to use in for spectest6 and user-facing version should be an ecosystem module. My view on that is yes, remove from core, but don't keep second copy in core; just have some make command fetch the ecosystem version for spectest6
[Coke] or start with a copy and add stub functions for some of the test functions I couldn't support yet 22:06
brokenchicken: if we're going to fetch modules, perhaps also fetch Inline::Perl5 at the same time.
brokenchicken +1
[Coke] was always a PITA when doing stresstest by hand.
MasterDuke bisectable6: grammar Grammar::Foo { rule TOP { 'z' | <unicode_escape> }; token unicode_escape { :i <[0..9a..f]> ** 4 }}; my $res = Grammar::Foo.parse( '2603' ); 22:12
bisectable6 MasterDuke, On both starting points (old=2015.12 new=0573865) the exit code is 0, exit signal is 11 (SIGSEGV) and the output is identical as well
MasterDuke, Output on both points:
jnthn Note that we use Test.pm also for the NativeCall tests and various others that don't live in roast 22:36
lizmat m: use nqp; nqp::handle((my $a := 42), 'REDO', ($a := 42)) # finally managed to golf this one down 23:04
camelia rakudo-moar 057386: OUTPUT«===SORRY!===␤Cannot reference undeclared local '__lowered_lex_1'␤»
lizmat m: use nqp; nqp::handle((my $a = 42), 'REDO', ($a := 42)) # replaced first by assignment 23:05
camelia ( no output )
lizmat m: use nqp; nqp::handle((my $a := 42), 'NEXT', $a) # even shorter 23:06
camelia rakudo-moar 057386: OUTPUT«===SORRY!===␤Cannot reference undeclared local '__lowered_lex_1'␤»
lizmat hopes that jnthn will be able to make sense of ^^^ 23:09
jnthn Well, Perl6::Optimizer makes various assumptions, one of which is that you're writing Perl 6. :) 23:12
During code-gen, the $a (third arg) will get wrapped in a block 23:13
The optimizer doesn't see this coming, 'cus you can't create such a situation with nqp:: ops
And so it thinks it can get away with lexical => local lowering
uh, *without
I don't know quite how to patch it off-hand
jnthn hopes that this doesn't mean he's going to spend hours dealing with similar cases when he finally gets around to making Perl6::Optimizer do such lowers more aggressively... 23:14
Hopefully we can teach it about this case 23:15
lizmat jnthn: it would make map/for significantly faster afaik
e.g. github.com/rakudo/rakudo/blob/nom/...ds.pm#L231 23:16
jnthn *nod* 23:17
lizmat ok, now that I have more clarity on the underlying issue, I may find some way around it :-)
jnthn Finding a way to make it not lower that lexical is probably the most expedient solution.
lizmat but not tonight, will sleep some more on it
jnthn We're blessed with ample resources to optimize CORE.setting by turning things into nqp:: ops, and precious few for making that not be needed. :) 23:18
lizmat ?
ah, ok, needed to read that aloud a few times :-) 23:19
jnthn :)
lizmat a sign I should get some sleep
jnthn lizmat++ # optimizing stuff
lizmat so good night, #perl6-dev!
jnthn 'night
brokenchicken night
jnthn (Also, a less tired me can probably figure out the way to patch Perl6::Optimizer, so check in with me tomorrow) 23:20
Geth kudo/nom: cfae23a567 | (Zoffix Znet)++ | src/core/IO/Handle.pm
Fix crash on IO::Handle.lines in subclasses

A .lines fix this morning made a mistake when specifying the type object to get $!PIO from. The $!handle.WHAT will not contain
  $!PIO for subclasses of IO::Handle and so a crash will occur.
  [1] github.com/rakudo/rakudo/commit/ed...f69e0740b5
23:25
ast: fb58578110 | (Zoffix Znet)++ | S16-io/lines.t
Test .lines does not crash on subclasses of IO::Handle

Rakudo fix: github.com/rakudo/rakudo/commit/cfae23a567
23:27
jnthn brokenchicken++ # taking care of subclassability 23:28