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. |