samcv heh the more i flesh out the project schedule the more I remember how many things there are to do, lol 01:06
llfourn nine++ # fixing require RTs 01:14
nine: hmmm actually it seems those require commits have broken Spit the module I released yesterday. 01:29
llfourn investigating
m: class Test::Foo { }; { require Test; say Test::Foo } 01:55
camelia Could not find symbol '&Foo'
in block <unit> at <tmp> line 1

Actually thrown at:
in block <unit> at <tmp> line 1
llfourn ^ This is the golf of the problem
astj m: class Test::Foo { }; Test::Bar {}; { require Test::Foo; require Test::Bar; } 03:52
camelia ===SORRY!===
Lexical 'Test' already declared
astj m: class Test::Foo { }; Test::Bar {}; { use Test::Foo; use Test::Bar; }
camelia ===SORRY!===
Could not find Test::Foo at line 1 in:
/home/camelia/.perl6
/home/camelia/rakudo-m-inst-1/share/perl6/site
/home/camelia/rakudo-m-inst-1/share/perl6/vendor
/home/camelia/rakudo-m-inst-1/share/perl6
CompUnit::R
astj oops
anyway, I found requiring multiple modules with same namespace has broken recently. github.com/astj/p6-Require-Bug-Demo 03:54
llfourn astj: if you look at the irc logs you'll find I posted a very similar golf of that problem before you came in :) 03:56
astj llfourn: Oh. is this? irclog.perlgeek.de/perl6-dev/2017-...i_14216920 03:57
llfourn astj: yep 03:58
your one actually shows the problem a bit better though
it shows that require is also declaring too many lexical packages
astj llfourn: thanks. hmm.. 03:59
llfourn I *might* have a fix coming up 04:00
astj :+1: 04:03
nine llfourn, astj: ok, looks relatively simple to fix 07:26
It's just a matter of looking if any of the $longname.components is already declared in lexical scope and re-using that instead of creating the whole package chain. 07:28
llfourn nine: Yeah, I was thinking you have to .WHO.merge-symbols with the outer declaration with your lexical version
nine Here: github.com/rakudo/rakudo/blob/nom/....nqp#L1935
llfourn oh but yeah you have to not re-duplicate the package chain thing but you also have to make sure you merge the symbols from the outer 07:30
m: m: class Test::Foo { }; { require Test; say Test::Foo } #otherwise 07:31
camelia Could not find symbol '&Foo'
in block <unit> at <tmp> line 1

Actually thrown at:
in block <unit> at <tmp> line 1
nine Yep. A $*W.find_symbol before blindly creating the lexical will help
llfourn oh if you found one you woulnd't create the lexical? 07:32
that's probably the smart way
I was overthinking it and wanted to have a lexical clone of the outer
m: package Foo { }; { my package Foo::Bar { } }; say Foo::Bar 07:34
camelia (Bar)
nine I've been down that line of thought and would like it, but it could get hellishly complicated. Better to do a less elegant fix now.
llfourn ^ I was trying to fix that at the same time
it was getting complicated XD
nine All of this would be so much simpler if packages were no real hierarchy as they are in Perl 5 :)
llfourn yeah. 07:35
But .WHO is cool and "torture the implementor on behalf of the user" :D
nine Btw. copying symbols from an outer package won't be enough, since they can change anytime. You'd have to link those PseudoStashes 07:36
llfourn But if you got a copy at the time you declare it wouldn't that DWIM?
I mean symbols could be added to the outer declaration's .WHO later but I thought it would be acceptable not to get them 07:37
hmm...but I'm not sure how that works with stubs :\
you *would* want the stubs to be updated in any case
nine If you talk in terms of acceptable, leaking those nested packages out of the lexical scope probably is acceptable, too ;) 07:38
llfourn s/acceptable/expected/ :)
nine This kind of lexical leaking is probably not much of an issue in real code, because it stops at the compilation unit. And you'll rarely try to load conflicting symbols in the same unit. The much more probable case is one of your dependencies trying to use a different version of a module than you. 07:52
llfourn m: { my package Cool::Utils { } }; say Cool::Utils 07:56
camelia (Utils)
llfourn nine: isn't that leaking past the unit?
nine: btw I have written tests for the issues above. Will push them when we have a fix :) 07:57
nine It's not leaking past the unit, but it does look a bit broken nevertheless :)
llfourn hmm but isn't Cool in the SETTING scope ie above the unit? 07:58
nine What I mean is, that if you have the above lexical package in a module, the user of your module won't see Cool::Utils 07:59
llfourn That's what I thought you meant. But thinking about it what you say makes sense as long as the module is precompiled. 08:00
nine True. A "no precompilation;" might change things a bit 08:01
llfourn ok good I'm on the right track :)
lizmat Files=1178, Tests=55991, 191 wallclock secs (11.68 usr 4.58 sys + 1146.23 cusr 107.28 csys = 1269.77 CPU) 08:22
[Tux] This is Rakudo version 2017.02-188-g2a2e460b1 built on MoarVM version 2017.02-20-g773711e1 08:27
csv-ip5xs 2.941
test 12.640
test-t 5.119 - 5.234
csv-parser 13.073 08:28
samcv o/ [Tux] 08:31
nwc10 good *, #moarvm 08:37
er, no
good *, #perl6-dev
that's better
samcv heh
nwc10 m-spectest6 seems to be broken. Not obvious why, and IRC logs don't mention this error message: 08:38
./perl6-m -Ilib t/harness6 --fudge --tests-from-file=t/spectest.data
===SORRY!===
Could not locate compile-time value for symbol Block::Para
make: *** [m-spectest6] Error 1
lizmat nwc10: ah, probably nine's lexical require work 08:40
yup, confirmed here
samcv e 08:41
oops
Geth rakudo/nom: 5b7b7fb5c9 | (Elizabeth Mattijsen)++ | src/core/List.pm
Stopgap fix for RT #130941

Note that the fix is in the &x candidate, *not* in the Mu \x candidate. This needs further research and fixing. Note that xx should really always return a Seq anyway, so that is another thing that would need to get fixed.
09:06
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130941
IOninja nwc10: it's the `try require` 11:05
Apparently try compiles to a block and we need to make not a block
Probably will fix a few other RTs too 11:06
jnthn m: try my $a = 42; say $a 11:10
camelia 42
jnthn It gets that case right...
IOninja that's what nine said at least... 11:12
jnthn Well, it's right that it's thunked 11:13
Geth nqp: 0d04b34078 | (Bart Wiegmans)++ | t/moar/51-jit-div_i.t
Better div_i JIT test

Test a wider range of behaviour; split 'heating' from testing.
jnthn But require happens at runtime so there's various ways to end up with stuff in the wrong place 11:14
travis-ci NQP build failed. Bart Wiegmans 'Better div_i JIT test 11:16
travis-ci.org/perl6/nqp/builds/208549718 github.com/perl6/nqp/compare/37543...04b340781d
Geth nqp: 6a616931ad | (Bart Wiegmans)++ | t/moar/51-jit-div_i.t
Don't cause TAP syntax errors
11:17
travis-ci NQP build failed. Bart Wiegmans 'Don't cause TAP syntax errors' 11:20
travis-ci.org/perl6/nqp/builds/208550541 github.com/perl6/nqp/compare/0d04b...616931adf0
nine IOninja: try require is already fixed: github.com/rakudo/rakudo/commit/9d...edc310e36a 11:24
Or should be at least. Maybe there are subtle differences in these cases. 11:25
IOninja Ah, cool.
hm, Block::Para that nwc10 mentioned is from Pod... 11:26
nine Ah, it's basically the same issue llfourn and I discussed this morning 11:33
A quick workaround would e.g. be: my $text = (require ::('Pod::To::Text')).render($=pod[0]);
Geth nqp: 3d6948a79e | (Bart Wiegmans)++ | tools/build/MOAR_REVISION
Bump MOAR_REVISION
11:34
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...5-g5dd8f04
travis-ci NQP build failed. Bart Wiegmans 'Bump MOAR_REVISION' 11:37
travis-ci.org/perl6/nqp/builds/208555128 github.com/perl6/nqp/compare/6a616...6948a79e58
Geth rakudo: bdw++ created pull request #1033:
Bump NQP_REVISION to get bumped MOAR_REVISION
11:49
rakudo/nom: deac603914 | (Bart Wiegmans)++ | tools/build/NQP_REVISION
Bump NQP_REVISION to get bumped MOAR_REVISION
11:50
rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....1-g3d6948a
ff7bfb92b6 | (Zoffix Znet)++ | tools/build/NQP_REVISION

Bump NQP_REVISION to get bumped MOAR_REVISION
rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....1-g3d6948a
6be395e310 | (Elizabeth Mattijsen)++ | src/core/IO/ArgFiles.pm
IOninja don't really see where the Pod::Para comes into play in harness6.... the doc build works 11:51
Ah, right in harness6 iteself 11:52
"A quick workaround "... I guess that means the current version of harness6 is fine as is. 11:53
that hack is a bit smelly anyway. Just shell-executing whatever happened to be in an env var... We've got sub USAGE... 11:55
nine IOninja: yes, the code is fine as it is (even though I like my shortened version). 11:56
IOninja :)
nine It's a straight forward issue with a straight forward solution for which I should find some time this evening.
IOninja Sweet
IOninja What was the way to make stresstest use t/harness6 again? 13:17
moritz HARNESS_TYPE=6 make stresstest # or something along those lines?
IOninja Yup. Thanks 13:18
huh "t/spec/S15-unicode-information/uniprop.rakudo.moar ................ All 164 subtests passed"... Well, if all passed why is not just "ok" :/ 13:23
ohohoh.. harness is busted. 13:24
hm, and HARNESS_TYPE=6 make t/spec/S32-str/encode.t still uses harness5 13:25
Got these two files that show TAP.pm6 bustitude, but when run individually t/spec/S32-str/encode.t doesn't show same error... wondering if it's a race condition there somewhere... gist.github.com/zoffixznet/8c801d6...99780337e4 13:27
moritz IOninja: might be an exit code != 0, or garbage output after the end of the tests 13:29
(if all subtests passed)
IOninja it's these tests-out-of-order thing... turned out 13:30
moritz ah right, another possible reason
Geth rakudo/nom: 8b76ce8c90 | (Zoffix Znet)++ | t/harness6
Change USAGE generation

  - print usage for any wrong args, not just when --help is given
  - don't shell-execute stuff from ENV vars; there isn't that much
   usage text to require a pager so no need to leave around
   ways for people to run arbitrary commands.
  - reword Text::To::Pod require to avoid temporary bustitude with
   require; new version is more concice too and can be left this
   way even after require is fixed.
13:31
roast: f2afb87d27 | (Elizabeth Mattijsen)++ | S16-io/lines.t
We shouldn't test for IO::Handle.lines(:close)
13:34
roast/6.c-errata: 63249596cd | (Elizabeth Mattijsen)++ | S16-io/lines.t
We shouldn't test for IO::Handle.lines(:close)
13:38
rakudo/nom: 76a59cf838 | (Elizabeth Mattijsen)++ | src/core/IO/Handle.pm
Remove support for IO::Handle.lines(:close)

We cannot guarantee the handle will get closed if the Seq is not exhausted. So better to not give the impression that we can.
13:53
lizmat afk& 13:54
IOninja hm, well, I found what causes the test out of order, but don't get why... 14:09
m: use TAP; say TAP::Grammar.parse: qq|not ok 1 - st # TODO\n|
camelia 「not ok 1 - st # TODO

line => 「not ok 1 - st # TODO

unknown => 「not ok 1 - st # TODO」
IOninja ^ fails to recognize as a tap line
m: use TAP; say TAP::Grammar.parse: qq|not ok 1 - st # TODO\n|
camelia 「not ok 1 - st # TODO

line => 「not ok 1 - st # TODO

test => 「not ok 1 - st # TODO」
nok => 「not 」
num => 「1」
description => 「st」
directive => 「TODO」
IOninja ^ replacing the ligature fixes it.. 14:10
m: say qq|not ok 1 - st meow # TODO foo\n| ~~ /[ '\\\\' || '\#' || <-[\n#]> ]+ <!after <[\s] - [\n]>+>/
camelia 「not ok 1 - st meow」
IOninja And if isolate the description regex and try to match it, it matches :S
Grammar that's parsing it is this: github.com/rakudo/rakudo/blob/nom/...#L165-L217 14:11
oh huh.. it parses on 2017.02-33-g80e0bce 14:19
IOninja bisects
github.com/rakudo/rakudo/commit/26...2c543a7d95 14:20
Geth, ver github.com/perl6/nqp/commit/44a3fe...f6b3604583 14:21
Geth IOninja, version bump brought in these changes: github.com/MoarVM/MoarVM/compare/2...7-gec99d41
IOninja The only slightly related commit I see is github.com/MoarVM/MoarVM/commit/ab...2ab7623d9e 14:22
"Change MVM_string_equal_at_ignore_case to use fc "
jnthn Hm, I don't see any :i used there, though... :s
IOninja it's in the [ SKIP \S+ | TODO ] thing
IOninja tries to craft a regex 14:23
jnthn Oh, I thought the regex you mentioned above was the faulty part
IOninja No, it failed to find the problem, but I'm guessing that's because I didn't include the :i part that follows it
jnthn ah :) 14:24
IOninja m: my token sp { <[\s] - [\n]> }; say qq|ok 1 - st meow # TODO foo\n| ~~ /[ '\\\\' || '\#' || <-[\n#]> ]+ <!after <sp>+> <sp>* '#' <sp>* $<foo>=[ [ 'SKIP' \S* | 'TODO'] ]/ 14:27
camelia 「ok 1 - st meow # TODO」
sp => 「 」
sp => 「 」
foo => 「TODO」
IOninja m: my token sp { <[\s] - [\n]> }; say qq|ok 1 - st meow # TODO foo\n| ~~ /[ '\\\\' || '\#' || <-[\n#]> ]+ <!after <sp>+> <sp>* '#' <sp>* $<foo>=[:i [ 'SKIP' \S* | 'TODO'] ]/
camelia Nil
IOninja star: my token sp { <[\s] - [\n]> }; say qq|ok 1 - st meow # TODO foo\n| ~~ /[ '\\\\' || '\#' || <-[\n#]> ]+ <!after <sp>+> <sp>* '#' <sp>* $<foo>=[:i [ 'SKIP' \S* | 'TODO'] ]/ 14:28
camelia 「ok 1 - st meow # TODO」
sp => 「 」
sp => 「 」
foo => 「TODO」
IOninja That's first result. Adding `:i` now breaks it
IOninja golfs it
m: say "st # TODO foo\n" ~~ /'#' \s* [:i 'TODO' ]/ 14:32
camelia Nil
IOninja m: say "st # TODO foo\n" ~~ /'#' \s* [ 'TODO' ]/
camelia 「# TODO」
IOninja m: say "st T" ~~ m/T/ 14:34
camelia 「T」
IOninja m: say "st T" ~~ m:i/T/
camelia False
IOninja star: say "st T" ~~ m:i/T/
camelia 「T」
IOninja m: say "stT" ~~ m:i/T/
camelia 「T」
IOninja m: dd [.lc, .uc, .fc ] with "st" 14:35
camelia ["st", "ST", "st"]
IOninja .ask MasterDuke any ideas on why this fails to match now? irclog.perlgeek.de/perl6-dev/2017-...i_14219666 Bisectable points to a version bump that brought this commit: github.com/MoarVM/MoarVM/commit/ab...2ab7623d9e 14:36
yoleaux2 IOninja: I'll pass your message to MasterDuke.
IOninja And once that fixed, harness6 should stop failing with tests out of sequence. 14:37
IOninja &
travis-ci Rakudo build passed. Zoffix Znet 'Merge pull request #1033 from bdw/nom 14:38
travis-ci.org/rakudo/rakudo/builds/208558885 github.com/rakudo/rakudo/compare/5...7bfb92b6cd
nwc10 IOninja++ # fixing harness6 15:19
I nearly typoed that as 7 15:20
IOninja Didn't fix anything...
nwc10 that would have got me some serious stares
oops, I thought that you did
IOninja Oh the require thing...
nwc10 yes, that :-)
IOninja There's still a bug with TAP parser and fancy unicode cahrs.
llfourn nine: I think I've got a patch for the require issues. Just running spectest :) 15:21
nwc10 is that why it thinks that test results are arriving out of order?
(I wasn't too worried (yet) about it not being the same as harness5. I was trying to provke MoarVM threading bugs by running it, not actually spectesting Rakudo)
IOninja Yes. 15:22
Geth rakudo/nom: e2db7b80e6 | (Elizabeth Mattijsen)++ | src/core/metaops.pm
Allow hypering ops that return a Seq

By lowerlevelling the push, we don't touch/interprete a possibly returned Seq.
15:23
roast: LLFourn++ created pull request #251:
Tests for latest require issues
15:39
roast: 12b47387cf | LLFourn++ | 4 files
Tests for latest require issues
15:40
roast: f5d9966639 | lizmat++ | 4 files
Merge pull request #251 from LLFourn/require-issues

Tests for latest require issues
lizmat afk& 15:47
llfourn .tell nine I tried. But wasn't able to totally fix require. My WIP: github.com/LLFourn/rakudo/commit/6...40b0e1b52. It passes more tests than nom, but doesn't all of the ones I just added to roast :(. 15:49
yoleaux2 llfourn: I'll pass your message to nine.
IOninja m: grammar A { token TOP (:$n) { <foo($n)> .* }; token foo ($n) { . ** {$n} } }; say A.parse("Hello world", args => \(:42n) ) 15:52
camelia Nil
IOninja m: grammar A { token TOP (:$n) { <foo($n)> .* }; token foo ($n) { . ** {$n} } }; say A.parse("Hello world", args => \(:5n) )
camelia 「Hello world」
foo => 「Hello」
IOninja Don't get why that works, considering:
m: my $args = \(:2n); dd [ |$args.Capture ]
camelia []
IOninja m: my $args = \(:2n); sub x { dd [ @_, %_ ] }( |$args.Capture ) 15:53
camelia [[], {:n(2)}]
jnthn Because | in [...] is not the same thing as | in an argument list
IOninja Oh
jnthn So you're really doing dd [ $args.Capture.Slip ]
IOninja And what does it end up as in argument list?
jnthn I expect .Slip would call .list to get a list to make a Slip from 15:54
So it gets the list part of the capture
but \(:2n) has an empty list part - it has no positional args
m: my $args = \(:2n); dd $args.list
camelia ()
jnthn m: my $args = \(:2n); dd $args.hash
camelia Map.new((:n(2)))
IOninja OK, makes sense now 15:56
llfourn m: { require Test; note Test::.keys } 16:04
camelia ()
llfourn m: use Test; note Test::.keys
camelia (&todo_output EXPORT &failure_output &output)
llfourn it's more broken than I originally understood :o 16:05
sleep &
travis-ci Rakudo build failed. Elizabeth Mattijsen 'Wean IO::ArgFiles away from IO::Handle.lines(:close)'
travis-ci.org/rakudo/rakudo/builds/208580950 github.com/rakudo/rakudo/compare/f...e395e31010
buggable [travis build above] ☠ Did not recognize some failures. Check results manually.
timotimo t/04-nativecall/14-rw-attrs.t (Wstat: 139 Tests: 0 Failed: 0) 16:06
Non-zero wait status: 139
travis-ci Rakudo build passed. Zoffix Znet 'Change USAGE generation 18:07
travis-ci.org/rakudo/rakudo/builds/208587104 github.com/rakudo/rakudo/compare/6...76ce8c90e9
Rakudo build passed. Elizabeth Mattijsen 'Remove support for IO::Handle.lines(:close) 21:07
travis-ci.org/rakudo/rakudo/builds/208593864 github.com/rakudo/rakudo/compare/8...a59cf8386b
nine .tell llfourn I've made some progress...I think? gist.github.com/niner/349fd7432e5c...af5111532c 22:10
yoleaux2 15:49Z <llfourn> nine: I tried. But wasn't able to totally fix require. My WIP: github.com/LLFourn/rakudo/commit/6...40b0e1b52. It passes more tests than nom, but doesn't all of the ones I just added to roast :(.
nine: I'll pass your message to llfourn.