[Tux] | This is Rakudo version 2016.10-104-gdb61aaa built on MoarVM version 2016.10-27-g196361f | 07:43 | |
csv-ip5xs 3.153 | |||
test 14.272 | |||
test-t 7.141 | |||
csv-parser 15.633 | |||
lizmat | Files=1150, Tests=53695, 211 wallclock secs (12.73 usr 3.85 sys + 1285.24 cusr 122.27 csys = 1424.09 CPU) | 08:46 | |
m: my @a = (1,2),(3,4); my @b; @b.append(@a.pop); dd @a, @b # not entirely what I expected? | 09:47 | ||
camelia | rakudo-moar db61aa: OUTPUT«Array @a = [(1, 2),]Array @b = [(3, 4),]» | ||
lizmat | shouldn't that be @b = [3,4] ? | ||
jnthn TimToady ^^^ ?? | |||
dalek | kudo/nom: fe9e92a | lizmat++ | src/core/IO/Handle.pm: Remove some superfluous Nil If we have --> Nil, we don't have to return it as well |
09:49 | |
jnthn | m: my @a = (1,2),(3,4); dd @a.pop | 10:21 | |
yoleaux2 | 29 Oct 2016 02:06Z <japhb> jnthn: Created a new OO::Monitors issue (#8) ... monitor methods swallow ad hoc exceptions and throw a 'Cannot invoke this object (REPR: Null; VMNull)' error instead. | ||
camelia | rakudo-moar fe9e92: OUTPUT«List @a = $(3, 4)» | ||
yoleaux2 | 29 Oct 2016 04:06Z <japhb> jnthn: Went on a golfing spree from a different angle trying to figure out the underlying bug that was catching up OO::Monitors; results added to issue #8 and are humerously insane. | ||
jnthn | lizmat: That's why. | ||
(The List is in a Scalar continer, and append respects that) | 10:22 | ||
lizmat | aha, the difference between: | 10:23 | |
m: my @a; @a.append( (3,4) ); dd @a | |||
camelia | rakudo-moar fe9e92: OUTPUT«Array @a = [3, 4]» | ||
lizmat | and: | ||
m: my @a; @a.append( (3,4).item ); dd @a | |||
camelia | rakudo-moar fe9e92: OUTPUT«Array @a = [(3, 4),]» | ||
lizmat | m: dd (3,4) | 10:24 | |
camelia | rakudo-moar fe9e92: OUTPUT«(3, 4)» | ||
lizmat | m: dd (3,4).item | ||
camelia | rakudo-moar fe9e92: OUTPUT«$(3, 4)» | ||
lizmat | ok, gotcha | ||
MasterDuke | i was thinking about taking a break from BOOTSTRAP.nqp and play around with getting backtraces to give the actual source filename and line number (instead of m-CORE.setting) | 12:32 | |
but i'm not finding it obvious where/when that information is actually populated in a Backtrace::Frame | 12:33 | ||
is that happening in moar? | 12:34 | ||
dalek | kudo/nom: 4986d68 | lizmat++ | src/core/IO/Spec/Unix.pm: Properly handle / at beginning The nqp::ord is nice and fast, but it is based on the base character of a grapheme. So it would also match on /'s adorned with accents. |
12:41 | |
kudo/nom: fc47bbf | lizmat++ | src/core/Baggy.pm: Make Baggy.roll()/pick() about 10% faster Specifically on larger Bags/Mixes |
|||
lizmat | MasterDuke: I think that's really in nqp::backtrace | 12:42 | |
afk& | |||
dalek | p: 2f839d7 | usev6++ | src/vm/jvm/runtime/org/perl6/nqp/io/FileHandle.java: [jvm] Make nqp::open throw if directory is passed Adjust to behaviour of MoarVM, cmp. #310 |
12:57 | |
p: e564489 | FROGGS++ | src/vm/jvm/runtime/org/perl6/nqp/io/FileHandle.java: Merge pull request #316 from usev6/jvm_open_dir [jvm] Make nqp::open throw if directory is passed |
|||
bartolin | huh, that was fast :-) | 12:58 | |
FROGGS | :o) | 13:00 | |
nine | MasterDuke: nqp most likely. File names and line numbers are annotations to QAST nodes | 13:57 | |
dalek | ast: fc9a4a8 | usev6++ | S04-statements/for.t: Add test for RT #123506 |
14:15 | |
ast: e783d93 | usev6++ | S (5 files): Use ticket number RT #126524 for fudging |
14:30 | ||
ast: b06e156 | usev6++ | S12-introspection/attributes.t: Add test for RT #127059 |
16:20 | ||
FROGGS | MasterDuke: I'd look in Exception.pm, there is a place where it walks the callstack, and is supposed to stop *before* reaching the setting... maybe it just does not stop early enough? (or perhaps too early) | 16:25 | |
lizmat | FROGGS: I think that's in Backtrace.pm actually :) | 17:03 | |
FROGGS | ohh yeah :o) | 17:09 | |
MasterDuke | lizmat, nine, FROGGS_: yeah, i've been looking at Exception.pm, Backtrace.pm, and CallFrame.pm at the Perl 6 level. nqp::backtrace just seems to be mapped to MVM_exception_backtrace and it adds the annotations that are read at the Perl 6 level (if i'm interpreting things correctly) | 17:25 | |
lizmat | MasterDuke: fwiw, I think that whole area is due for a refactor | 17:26 | |
it makes warnings *way* too expensive | |||
MasterDuke | lizmat: refactoring the whole area may be beyond my scope at this point. and in fact, i suspect all of the thoughts i've had so far on how to reference the original files would slow things down. but hey, if i manage to implement it, i have no doubt you can speed it up | 17:33 | |
lizmat | one can hope :-) | ||
mst | warnings being expensive is useful though, it slows the program down so you have longer before they fill the log partition | 17:40 | |
lizmat | true, but I'd rather make them fast and then slow artificially somehow, then waisting a lot of CPU needlessly as well | 17:43 | |
m: say "foo bar baz".samespace(" ") # TimToady: sorta expected to have the last whitespace "stick", so "foo bar baz" as result ? | |||
camelia | rakudo-moar fc47bb: OUTPUT«foo bar baz» | ||
lizmat | m: use nqp; say nqp::where($/); for 42 { say "foo".match(/foo/); say nqp::where($/); say $/ } # inner $/ =:= outer $/ | 18:33 | |
camelia | rakudo-moar fc47bb: OUTPUT«29965056「foo」29965056Nil» | ||
lizmat | star: use nqp; say nqp::where($/); for 42 { say "foo".match(/foo/); say nqp::where($/); say $/ } # inner $/ is DIFFERENT from outer $/ | ||
camelia | star-m 2016.04: OUTPUT«47089312「foo」140664756450384「foo」» | ||
lizmat | so it looks like .match is assigning to a $/ in the blue | 18:34 | |
"ins blaue hinein" | 18:36 | ||
dalek | ast: 9fbdcc0 | usev6++ | S04-statements/loop.t: Add test for RT #127238 |
18:37 | |
lizmat | m: for "foo" { /foo/; say $/ } # *sigh*, this does work | 18:39 | |
camelia | rakudo-moar fc47bb: OUTPUT«「foo」» | ||
lizmat | m: for "foo" { .match(/foo/); say $/ } # this doesn't :-( | ||
camelia | rakudo-moar fc47bb: OUTPUT«Nil» | ||
lizmat | m: use nqp; say nqp::where($/); for "foo" { my $/; say nqp::where($/); say .match(/foo/); say $/; say nqp::where($/) } # the second $/ in the body of the for is different | 18:59 | |
camelia | rakudo-moar fc47bb: OUTPUT«2693811226938568「foo」「foo」139623261592488» | ||
lizmat | m: use nqp; say nqp::where($/); for "foo" { say nqp::where($/); say .match(/foo/); say $/; say nqp::where($/) } # the second $/ in the body of the for is different | ||
camelia | rakudo-moar fc47bb: OUTPUT«1961446419614464「foo」Nil19614464» | ||
lizmat | and now they're *all* the same | ||
MasterDuke | bisect: for 42 { say "foo".match(/foo/); say $/ } | 19:05 | |
bisectable6 | MasterDuke, Bisecting by output (old=2015.12 new=fc47bbf) because on both starting points the exit code is 0 | ||
MasterDuke, bisect log: gist.github.com/641e9c5b129a8b88d3...c9e5a4948d | 19:06 | ||
MasterDuke, (2016-10-23) github.com/rakudo/rakudo/commit/b7...e8f5c77f41 | |||
lizmat | MasterDuke: yeah, I already established that | 19:09 | |
:-( | |||
MasterDuke | oops, missed that | ||
lizmat | yet, the same code running in an augment class Str with slighlty different naming to prevent clashes, works as expected :-( | 19:10 | |
FROGGS_ | lizmat: is that class also Cool? | ||
lizmat | it's an "augment class Str" | 19:11 | |
FROGGS_ | because the code that is failing here might involve Cool.match | ||
ahh, okay | |||
lizmat | so it's just adding stuff to it | ||
I mean, in the for { } case, the $/ outside of the for, and inside the body of the for, should be the same $/ | 19:12 | ||
and looking at debug code with nqp::where, they are | 19:13 | ||
m: $/ = 42; for "foo" { .match(/foo/; say $/ }; say $/ | 19:15 | ||
camelia | rakudo-moar fc47bb: OUTPUT«===SORRY!=== Error while compiling <tmp>Unable to parse expression in argument list; couldn't find final ')' at <tmp>:1------> = 42; for "foo" { .match(/foo/; say $/ ⏏}; say $/ expecting any of: postfix» | ||
lizmat | m: $/ = 42; for "foo" { .match(/foo/); say $/ }; say $/ | ||
camelia | rakudo-moar fc47bb: OUTPUT«4242» | ||
lizmat | so the .match is just not assigning :-( | 19:16 | |
if I add debug code in the private method that does the assigning, it sees the correct nqp::where | 19:17 | ||
FROGGS_ | and it is not spesh related? | 19:18 | |
lizmat | gist.github.com/lizmat/4dd5117f34f...8b297d8b19 | 19:19 | |
doesn't appear to be | |||
(added diff) | 19:20 | ||
FROGGS_: MVM_SPESH_DISABLE=1 to disable spesh and all optimizations, no? | 19:33 | ||
or also --optimize=0 ? | |||
FROGGS_ | correct | 19:34 | |
lizmat | no difference :-( | ||
FROGGS_ | though, the setting gets compiled with --optimize=3, and you cannot set it to 0 IIRC | ||
lizmat | well, that's the thing: outside of the setting, the code works correctly | 19:35 | |
and that's with --optimize=3, right ? | |||
FROGGS_ | true | ||
lizmat | so, whenever I introspect, I see that the correct $/ is being used | ||
yet, it does not get assigned | 19:36 | ||
FROGGS_ | okay, you've changed getlexcaller to getlexdyn, right? | 19:37 | |
lizmat | yes, but changing it back doesn't change anything | ||
FROGGS_ | when I read both descriptions: github.com/perl6/nqp/blob/master/d...#getlexdyn | ||
they do different things | |||
lizmat | so what is the difference? the description doesn't make it clear to me | 19:38 | |
FROGGS_ | I guess we need getlexrelcaller now, starting with a calling context | 19:42 | |
because you also turned method match into a multi | |||
and that introduces a callframe, at least for these nqp ops | |||
so I'd try: nqp::getlexrelcaller(nqp::ctxcaller(nqp::ctx()), '$/') | |||
lizmat | ok, will do | ||
FROGGS_ | getlexdyn just looks at the caller of the caller of the caller of the... | 19:43 | |
an the other one looks at the outer of the outer [...] of your caller | |||
lizmat | FROGGS_: but I don't think it is a lookup problem: the gist shows that the $/ is the $/ of the outer scope (outside of the for {} ) | 19:47 | |
and I made sure the proto has its $/ set to its outer $/ | |||
*aliased to | |||
replacing getlexdyn with nqp::getlexrelcaller(nqp::ctxcaller(nqp::ctx()), '$/') doesn't fix it :-( | 19:48 | ||
.oO( make up das mind, viki :-) |
|||
FROGGS_ | damn | 19:49 | |
no idea then | |||
dalek | kudo/nom: d92222f | usev6++ | src/core/Date.pm: Revert "At least temporary fix for RT #127161" This reverts commit d80c728e257dbe17384c48c9a6e516158e6627a4. This temporary fix is no longer needed, since a workaround for the underlying problem was added with commit 986891f7ea |
||
kudo/nom: c9730a2 | (Zoffix Znet)++ | src/core/Date.pm: Merge pull request #910 from usev6/rt127161 Revert "At least temporary fix for RT #127161" d3a0907 | lizmat++ | src/core/Any.pm: Make 2d/3d array accesses about 7x as fast By adding candidates handling ($,$) and ($,$,$) and adding the necessary code for AT-POS, EXISTS-POS, DELETE-POS, ASSIGN-POS and BIND-POS |
|||
lizmat | m: for "foo" { say nqp::where($/); /foo/; say $/; say nqp::where($/) } | 19:54 | |
camelia | rakudo-moar fc47bb: OUTPUT«===SORRY!=== Error while compiling <tmp>Could not find nqp::where, did you forget 'use nqp;' ?at <tmp>:1------> for "foo" { say nqp::where($/)⏏; /foo/; say $/; say nqp::where($/) }» | ||
lizmat | m: use nqp; for "foo" { say nqp::where($/); /foo/; say $/; say nqp::where($/) } | ||
camelia | rakudo-moar fc47bb: OUTPUT«41724672「foo」140161577709608» | ||
lizmat | FROGGS_: note that in this case the memory address of $/ changed *after* the match | 19:55 | |
*within* the same scope! | |||
hmmm... could be a code gen issue for /foo/, I guess | 19:56 | ||
FROGGS_ | or due to GC the $/ gets moved in memory | 19:57 | |
I dunno, really | 19:58 | ||
lizmat | well, I guess I'm going to sleep a night over this, hoping jnthn will have some insight in the morrow | 20:01 | |
because at the moment, I'm uberfragt | |||
FROGGS_ | aye | ||
lizmat | and reverting the Str.match opts would be painful :-( | 20:02 | |
lizmat goes back to proofreading | |||
FROGGS_ | yeah... I guess there will be a better solution than this | 20:06 | |
bartolin | bisect: constant $R = /f(oo)/; say so "foo" ~~ $R; say ~$0 # RT #126969 | 20:19 | |
bisectable6 | bartolin, Bisecting by output (old=2015.12 new=fc47bbf) because on both starting points the exit code is 0 | 20:20 | |
bartolin, bisect log: gist.github.com/310260c8822acd531b...cd0be0aada | |||
bartolin, (2016-09-01) github.com/rakudo/rakudo/commit/63...6892a7df4f | |||
lizmat | looks like a false positive to me | ||
bartolin | m: constant $R = /f(oo)/; say so "foo" ~~ $R; say ~$0 | 20:21 | |
camelia | rakudo-moar c9730a: OUTPUT«Trueoo» | ||
bartolin nods | |||
lizmat | bartolin: that looks correct, no ? | 20:22 | |
bartolin | yes, it does. I wonder what's the latest commit bisectable6 knows | ||
MasterDuke | it's just two off from HEAD (usev6 reverting d80c728e257dbe17384c48c9a6e516158e6627a4) | 20:27 | |
fyi, it says in the output "new=fc47bbf" | 20:28 | ||
bartolin | oops, my fault. I looked for fc47bbf, but my local rakudo is too old *g* | 20:29 | |
MasterDuke++ | |||
MasterDuke | pebkac! | 20:30 | |
bartolin | bisect: good=fc47bbf bad=631e2f770e constant $R = /f(oo)/; say so "foo" ~~ $R; say ~$0 # RT #126969 | 20:34 | |
bisectable6 | bartolin, bisect log: gist.github.com/2c916177c8bd2a2226...97c80d7675 | ||
bartolin, bisect init failure | |||
bartolin | :-/ | 20:35 | |
one last try ... | |||
bisect: good=631e2f770e bad=fc47bbf constant $R = /f(oo)/; say so "foo" ~~ $R; say ~$0 # RT #126969 | 20:36 | ||
bisectable6 | bartolin, Bisecting by output (old=631e2f7 new=fc47bbf) because on both starting points the exit code is 0 | ||
bartolin, bisect log: gist.github.com/d48431a920b3d40eac...740fd02375 | |||
bartolin, (2016-10-27) github.com/rakudo/rakudo/commit/5a...925c544ea4 | |||
bartolin | ha, that looks better | 20:37 | |
lizmat | m: say 42[0;0;0;0] # do we really want to hang off multi-dim indexing off off Any.AT-POS ? | 21:01 | |
camelia | rakudo-moar c9730a: OUTPUT«42» | ||
lizmat | *of off | 21:02 | |
I guess that's to allow for any AT-POS capable class to be intermixed, eh? | 21:11 | ||
kudo/nom: 4fdf6d7 | lizmat++ | src/core/Any.pm: Correct AT-POS cs signature to only do Any:D: This broke BIND-POS, so the two/three-dimensional cases have been removed (will revisit at a later time) |
22:09 | ||
lizmat | good night, #perl6-dev! | 22:19 | |
travis-ci | Rakudo build errored. Elizabeth Mattijsen 'Correct AT-POS cs signature to only do Any:D: | 23:06 | |
travis-ci.org/rakudo/rakudo/builds/171849317 github.com/rakudo/rakudo/compare/d...df6d7721a6 | |||
buggable | [travis build above] ✓ All failures are due to timeout (1), missing build log (0), or GitHub connectivity (0). All failures are on JVM only. |