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 1Actually 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/2qpD2EFqxvUndeclared 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.PREVIEWat <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.cat <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.cat <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.pmSETTING::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.pmSETTING::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.pmSETTING::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.pmSETTING::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 1True» | ||
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 bracketat <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 |