Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-11-09

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:08 jnthn sleep; 'night o/
00:10 MasterDuke g'night
00:11 timotimo i should probably go sleep, too ... have been sitting on a headache for hours
00:11 timotimo (and i don't mean the US election)
00:27 travis-ci joined #perl6-dev
00:27 travis-ci Rakudo build passed. Zoffix Znet 'Add missing space in JVM travis ignore options
00:27 travis-ci https://travis-ci.org/rakudo/rakudo/builds/174246481 https://github.com/rakudo/rakudo/compare/35bd063f1350...a581bf415c43
00:27 travis-ci left #perl6-dev
00:32 ggoebel joined #perl6-dev
00:45 japhb "sitting on a headache" brings to mind a rather contortionist image.
01:04 seatek joined #perl6-dev
01:24 cog_ joined #perl6-dev
01:24 travis-ci joined #perl6-dev
01:24 travis-ci Rakudo build passed. Zoffix Znet 'Prevent overflow when creating large Num literals
01:24 travis-ci https://travis-ci.org/rakudo/rakudo/builds/174329287 https://github.com/rakudo/rakudo/compare/a581bf415c43...729d7e341248
01:24 travis-ci left #perl6-dev
02:10 travis-ci joined #perl6-dev
02:10 travis-ci Rakudo build passed. Elizabeth Mattijsen 'Mix in shapedness in the class, rather than instance
02:10 travis-ci https://travis-ci.org/rakudo/rakudo/builds/174360862 https://github.com/rakudo/rakudo/compare/729d7e341248...b7e632ee945d
02:10 travis-ci left #perl6-dev
02:41 travis-ci joined #perl6-dev
02:41 travis-ci Rakudo build passed. Elizabeth Mattijsen 'Streamline shapedarray.shape'
02:41 travis-ci https://travis-ci.org/rakudo/rakudo/builds/174367064 https://github.com/rakudo/rakudo/compare/b7e632ee945d...fb56768b7bfc
02:41 travis-ci left #perl6-dev
02:48 ilbot3 joined #perl6-dev
02:48 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today
03:19 ggoebel joined #perl6-dev
06:47 ggoebel joined #perl6-dev
06:48 RabidGravy joined #perl6-dev
07:09 Woodi joined #perl6-dev
07:42 brrt joined #perl6-dev
07:45 Woodi joined #perl6-dev
07:58 TimToady joined #perl6-dev
09:30 llfourn joined #perl6-dev
10:38 lizmat *, #perl6-dev!
10:39 lizmat .tell jnthn is the use of nqp::multidimref_i (on Moar) vs nqp::atposnd_i (on JVM) a relic, or should it stay this way ?
10:39 yoleaux2 lizmat: I'll pass your message to jnthn.
10:50 DrForr o/ x/
10:50 pmurias joined #perl6-dev
10:50 dalek nqp: 0d2d1f5 | (Pawel Murias)++ | / (3 files):
10:50 dalek nqp: [js] Add missing files.
10:50 dalek nqp: review: https://github.com/perl6/nqp/commit/0d2d1f5efc
11:52 jnthn lizmat: Moar has it right
11:52 yoleaux2 10:39Z <lizmat> jnthn: is the use of nqp::multidimref_i (on Moar) vs nqp::atposnd_i (on JVM) a relic, or should it stay this way ?
11:52 jnthn m: my :a[10]; @a[2,3] = 5,6; say @a
11:52 camelia rakudo-moar fb5676: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Malformed my␤at <tmp>:1␤------> my⏏ :a[10]; @a[2,3] = 5,6; say @a␤»
11:53 jnthn m: my @a[10]; @a[2,3] = 5,6; say @a
11:53 camelia rakudo-moar fb5676: OUTPUT«[(Any) (Any) 5 6 (Any) (Any) (Any) (Any) (Any) (Any)]␤»
11:53 jnthn j: my @a[10]; @a[2,3] = 5,6; say @a
11:53 camelia rakudo-jvm 8d357a: OUTPUT«[(Any) (Any) 5 6 (Any) (Any) (Any) (Any) (Any) (Any)]␤»
11:53 jnthn Oh, right, native int array
11:53 jnthn m: my int @a[10]; @a[2,3] = 5,6; say @a
11:53 camelia rakudo-moar fb5676: OUTPUT«[0 0 5 6 0 0 0 0 0 0]␤»
11:53 jnthn j: my int @a[10]; @a[2,3] = 5,6; say @a
11:53 camelia rakudo-jvm 8d357a: OUTPUT«Cannot modify an immutable Int␤  in block <unit> at <tmp> line 1␤␤»
11:53 jnthn That's what doesn't work on JVM as a result of using atposnd_i
12:10 jnthn grmbl, failing at reproducing the 20-concurrent.t failure locally
12:15 jnthn Ah, finally got it
12:51 jnthn Figuring out exactly what's going on is turning out to be rather harder, alas. Will keep hunting after lunch.
13:09 dalek rakudo/js: 2ce954d | (Pawel Murias)++ | src/vm/js/perl6-runtime/runtime.js:
13:09 dalek rakudo/js: [js] Fix bug.
13:09 dalek rakudo/js: review: https://github.com/rakudo/rakudo/commit/2ce954d3a7
13:09 dalek rakudo/js: 6e37be5 | (Pawel Murias)++ | src/vm/js/Perl6/Ops.nqp:
13:09 dalek rakudo/js: [js] Fix bug.
13:09 dalek rakudo/js: review: https://github.com/rakudo/rakudo/commit/6e37be5f75
13:09 dalek rakudo/js: b956e06 | (Pawel Murias)++ | src/Perl6/Grammar.nqp:
13:09 dalek rakudo/js: [js] Add a workaround for known nqp bug. Works on moarvm for some reason I haven't fully investigated yet.
13:09 dalek rakudo/js: review: https://github.com/rakudo/rakudo/commit/b956e062a7
13:11 dalek nqp: fa33242 | (Pawel Murias)++ | src/vm/js/Compiler.nqp:
13:11 dalek nqp: [js] Make the contex set passed to loadbytecode accessible even when the CompUnit doesn't have a .main set.
13:11 dalek nqp: review: https://github.com/perl6/nqp/commit/fa33242692
13:12 viki NeuralAnomaly: status
13:12 NeuralAnomaly viki, [✘] Next release will be in 1 week and 3 days. Since last release, there are 27 new still-open tickets (1 unreviewed and 1 blockers) and 224 unreviewed commits. See http://perl6.fail/release/stats for details
13:12 viki NeuralAnomaly: blockers
13:12 NeuralAnomaly viki, There is 1 release blocker. See http://perl6.fail/release/blockers
13:12 NeuralAnomaly viki, http://perl6.fail/130031 : gmake install step fails under Windows for 2016.10 with the Strawberry Perl buildchain
13:12 viki (if anyone is up to giving that one a go... :))
13:19 jnthn viki: Is that a regression?
13:19 viki jnthn: seems so. stmuk_ in the ticket says this problem did not exist in 2016.07
13:20 ggoebel joined #perl6-dev
13:22 jnthn May already be fixed by MoarVM commit 404ed261be00e2
13:22 viki Ah. Will test on HEAD when I get a chance.
13:22 jnthn And I fixed another module pre-comp Windows issue since the last release also
13:22 jnthn (the second one was an issue involving rename)
13:23 jnthn (due to a missing .close somewhere)
13:49 jnthn Huh. It seems that it actually explodes on $vow.keep
13:52 viki m: dd (class Foo {} andthen 42)
13:52 camelia rakudo-moar fb5676: OUTPUT«slip()␤»
13:52 viki Hm, the docs say it returns the "first undefined arg", but the code returns an Empty :/
13:53 viki oh lulz... and fixing that fixes the bug I was hunting
13:57 viki now to understand why :/
13:57 jnthn Update: seems that 20-concurrent.t can run into two different bugs. It's looking likely that I've got a fix for one of them so far.
13:57 viki (it doesn't help that my coworkers are having a cackling marathon grr)
13:58 viki Cool. jnthn++
14:01 jnthn Turned out that issue wasn't nativecall specific. If you've run into "Cannot invoke" style things at the start of programs that set off a bunch of promises, then it may well have been this issue.
14:02 viki m: dd Slip.new andthen 42
14:02 camelia rakudo-moar fb5676: OUTPUT«WARNINGS for <tmp>:␤Useless use of constant integer 42 in sink context (line 1)␤slip()␤»
14:02 viki m: dd (Slip.new andthen 42)
14:02 camelia rakudo-moar fb5676: OUTPUT«-> ;; $_ is raw { #`(Block|80757088) ... }␤»
14:02 viki I wonder if that's a problem?
14:02 viki Basically the slip disappears and andthen gets 1 arg, which is thunked
14:03 viki m: dd (Slip.new orelse 42)
14:03 camelia rakudo-moar fb5676: OUTPUT«-> ;; $_ is raw { #`(Block|58409168) ... }␤»
14:04 viki Will cross that bridge when there's a real-life use-case with an issue, I guess.
14:06 dalek rakudo/nom: a1d8e93 | lizmat++ | src/core/ (3 files):
14:06 dalek rakudo/nom: Make copying shaped arrays 10x to 20x faster
14:06 dalek rakudo/nom:
14:06 dalek rakudo/nom: - create some custom iterators
14:06 dalek rakudo/nom: - special case from int/num arrays
14:06 dalek rakudo/nom: - slight regression for 1dimmed arrays: will look at that next
14:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a1d8e9385b
14:07 tadzik bloody hell, lizmat++
14:07 tadzik this is such a pleasure to see commitlines like these :)
14:08 lizmat it is writing them as well  :-)
14:08 viki \o/
14:11 viki I want to change this 6.c-errata test. It's broken. It should test for Any, just as the test before it, not for Empty: https://github.com/perl6/roast/blob/6.c-errata/S03-operators/andthen.t#L9
14:11 viki Objections?
14:13 lizmat agree the test is flawed
14:14 lizmat m: dd (Any andthen 2)   # huh?
14:14 camelia rakudo-moar a1d8e9: OUTPUT«slip()␤»
14:14 viki Yeah
14:15 viki And that's the cause of this bug:
14:15 viki m: say (Str andthen .uc orelse "foo")
14:15 camelia rakudo-moar a1d8e9: OUTPUT«-> ;; $_ is raw { #`(Block|53815800) ... }␤»
14:17 viki oh man, fixing that causes 8 failures :/ https://gist.github.com/zoffixznet/5899262a2a7d1b4677427e5a53e737c4
14:18 viki Well, 7
14:19 viki Oh, it's the same thing, it's testing for Empty
14:21 jnthn d'oh, I've found the second
14:22 viki m: my $side-effect = 0; dd ([\andthen] Int, ++$side-effect).gist; dd $side-effect
14:22 camelia rakudo-moar a1d8e9: OUTPUT«"((Int))"␤Int $side-effect = 0␤»
14:22 viki With my fix, it gives "((Int) (Int))"
14:29 dalek rakudo/nom: 49fd825 | jnthn++ | lib/NativeCall.pm6:
14:29 dalek rakudo/nom: Set up return type before flagging we're set up.
14:29 dalek rakudo/nom:
14:29 dalek rakudo/nom: Fixes a race condition when multiple threads use a native callsite
14:29 dalek rakudo/nom: for the first time.
14:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/49fd82517f
14:29 viki m: my $side-effect = 0; dd ([\orelse] 42, ++$side-effect).gist; dd $side-effect
14:29 camelia rakudo-moar a1d8e9: OUTPUT«"(42 42)"␤Int $side-effect = 0␤»
14:29 viki And this corroborates the two-(Int) result is right.
14:30 timotimo wow, how did i miss that
14:31 dalek nqp: 32ae9f9 | jnthn++ | tools/build/MOAR_REVISION:
14:31 dalek nqp: Get MoarVM with method cache deserialize race fix.
14:31 dalek nqp: review: https://github.com/perl6/nqp/commit/32ae9f9dfe
14:34 dalek rakudo/nom: 0134132 | jnthn++ | tools/build/NQP_REVISION:
14:34 dalek rakudo/nom: Bump for MoarVM method cache deserialize race fix.
14:34 dalek rakudo/nom:
14:34 dalek rakudo/nom: This fixes various instabilities in programs that launch a bunch of
14:34 dalek rakudo/nom: concurrent work at startup. It was the second cuase of issues in
14:34 dalek rakudo/nom: t/04-nativecall/20-concurrent.t, but its effects were wider.
14:34 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0134132dab
14:34 * lizmat pulls and builds
14:36 dalek rakudo/nom: 84eaff4 | jnthn++ | t/04-nativecall/20-concurrent.t:
14:36 dalek rakudo/nom: Test no longer flops.
14:36 dalek rakudo/nom:
14:36 dalek rakudo/nom: Or at least, in 100 attempts, I can no longer make it do so. Let's see
14:36 dalek rakudo/nom: what Travis and others think.
14:36 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/84eaff47f2
14:37 jnthn That should do it.
14:38 viki I've no idea why there's a few tests using andthen in S04-statement-modifiers/with.t :/
14:39 jnthn Perhaps because they're almost equivalent
14:41 viki Well, if you're testing what `with` produces, just test against an expected result, instead of generating it with `andthen` :)
14:41 viki m: dd (42 with Nil)
14:41 camelia rakudo-moar a1d8e9: OUTPUT«slip()␤»
14:41 viki And it looks like `with` uses andthen under the hood
14:41 jnthn Yup
14:42 viki oh noes
14:42 jnthn I remember that being very intentional
14:42 jnthn Though my memory of those times is hazy
14:42 jnthn Pretty sure it was TimToady++ who added with/without though, and mentioned some equivalence with andthen/orelse
14:44 viki jnthn: hm, if it's intentional, then there's a bit of an issue: andthen returns Empty instead of the first undefined thing (as advertised in the docs and as, say, `orelse` does). So it can't be chained with things like orelse, because Empty messes it up. BUT, making it actually return the first undefined thing messes up the way `with` works
14:44 viki I see notandthen also returns an Empty
14:45 viki m: say (Str andthen .uc orelse "foo")
14:45 camelia rakudo-moar a1d8e9: OUTPUT«-> ;; $_ is raw { #`(Block|51173592) ... }␤»
14:45 jnthn viki: Think you'll have to run it past TimToady++ for an answer :)
14:45 viki ^ that is the result of Empty being given to orelse, but if I fix that...
14:45 viki m: dd (42 with Nil)
14:45 camelia rakudo-moar a1d8e9: OUTPUT«slip()␤»
14:45 viki This starts to give Nil
14:46 jnthn Yeah, which'll mess quite some things up
14:46 viki .ask TimToady could you give a ruling on whether andthen/notandthen should return Empty or the first undefined value? It creates a conflict with orelse/with either way and with needs to be rewritten without andthen: https://irclog.perlgeek.de/perl6-dev/2016-11-09#i_13539174
14:46 yoleaux2 viki: I'll pass your message to TimToady.
15:31 pyrimidine joined #perl6-dev
15:36 lizmat jnthn: build + spectest
15:36 lizmat ok
15:37 lizmat jnthn: still errors with HARNESS_TYPE=6, resulting in ===MoarVM panic: Internal error: zeroed target thread ID in work pass
15:37 lizmat in the end
15:38 lizmat afk again&
15:44 dalek rakudo/nom: 43cb55f | cpin++ | src/core/metaops.pm:
15:44 dalek rakudo/nom: RT #129363: duckmap preserves structure
15:44 dalek rakudo/nom:
15:44 dalek rakudo/nom: Implements deepmap and duckmap in terms of the same code.
15:44 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/43cb55f3f8
15:44 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=129363
15:44 dalek rakudo/nom: 1ee5247 | cpin++ | src/core/metaops.pm:
15:44 dalek rakudo/nom: duckmap/deepmap: changes suggested in #perl6
15:44 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1ee524771e
15:44 dalek rakudo/nom: 06a84b1 | cpin++ | / (4 files):
15:44 dalek rakudo/nom: Move coremap to Rakudo::Internals
15:44 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/06a84b16b1
15:44 dalek rakudo/nom: 75f1547 | (Zoffix Znet)++ | / (4 files):
15:44 dalek roast: cbff557 | cpin++ | S (2 files):
15:44 dalek roast: RT #129363: duckmap preserves structure types (#180)
15:44 dalek roast:
15:44 dalek roast: * RT #129363: duckmap preserves structure types
15:44 dalek roast:
15:44 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=129363
15:44 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=129363
15:44 dalek roast: * Correct oversight in duckmap test
15:44 dalek roast: review: https://github.com/perl6/roast/commit/cbff5576ad
15:49 viki For some reason dalek doesn't report all the commits... This one went in unreported: https://github.com/rakudo/rakudo/commit/b46a62ef36123c462074d5aeba936d66e707d766
15:49 lizmat viki: if it was one of a set, dalek has the tendency to just stop reporting, indeed
15:50 lizmat ah, it was a single one ?
15:50 viki Yeah, but maybe by the time they reached dalek, it combined.
15:50 viki I merged, then went to make change on my VM and then pushed the one that's missing.
15:53 lizmat brb
15:54 viki ZOFVM: Files=1200, Tests=130131, 153 wallclock secs (22.25 usr  3.25 sys + 2692.14 cusr 253.22 csys = 2970.86 CPU)
16:02 dalek roast/6.c-errata: 4d2ab2c | (Zoffix Znet)++ | S03-metaops/hyper.t:
16:02 dalek roast/6.c-errata: Fix incorrect assumptions in test
16:02 dalek roast/6.c-errata:
16:02 dalek roast/6.c-errata: The test checks whether duckmap is nodal, which is still the case and no
16:02 dalek roast/6.c-errata: 6.c-breaking behaviour occured. However, the way the test is done assumes
16:02 dalek roast/6.c-errata: duckmap always produces lists instead of maintaining original Iterables.
16:02 dalek roast/6.c-errata:
16:02 dalek roast/6.c-errata: The latter is the correct behaviour, per TimToady[^1], and has been reported
16:02 dalek roast/6.c-errata: in RT#129363[^2], and fixed today[^3].
16:02 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=129363
16:02 dalek roast/6.c-errata:
16:02 dalek roast/6.c-errata: [1] https://irclog.perlgeek.de/perl6/2016-09-26#i_13285724
16:02 dalek roast/6.c-errata: [2] https://rt.perl.org/Ticket/Display.html?id=129363
16:02 dalek roast/6.c-errata: [3] https://github.com/rakudo/rakudo/commit/75f154760ddc7bf5e5ee2b4efd0de03489481294
16:02 dalek roast/6.c-errata: review: https://github.com/perl6/roast/commit/4d2ab2c8ef
16:08 pyrimidine joined #perl6-dev
16:10 pyrimidine joined #perl6-dev
16:13 cpin joined #perl6-dev
16:54 pyrimidine joined #perl6-dev
16:55 ggoebel joined #perl6-dev
16:57 pyrimidi_ joined #perl6-dev
17:20 vendethiel joined #perl6-dev
17:32 lizmat .tell jnthn: any chance of optimizing dispatch:<!> ?  On a benchmark of "my @a[10] = ^10; for ^10000 { my @b[10] = @a }" it is taking about 20% cpu  :-(
17:32 yoleaux2 lizmat: What kind of a name is "jnthn:"?!
17:32 lizmat .tell jnthn any chance of optimizing dispatch:<!> ?  On a benchmark of "my @a[10] = ^10; for ^10000 { my @b[10] = @a }" it is taking about 20% cpu  :-(
17:32 yoleaux2 lizmat: I'll pass your message to jnthn.
17:33 lizmat .tell jnthn so I'm considering ripping out all private method calls where possible
17:33 yoleaux2 lizmat: I'll pass your message to jnthn.
17:35 vendethiel joined #perl6-dev
17:49 cognominal joined #perl6-dev
18:04 timotimo oh, i merged the branch but didn't push
18:04 dalek rakudo/nom: fdc90a2 | timotimo++ | src/Perl6/Metamodel/BUILDPLAN.nqp:
18:04 dalek rakudo/nom: enable POSTBUILD to take part in object construction
18:04 dalek rakudo/nom:
18:04 dalek rakudo/nom: it will be called after everything else has been done. it'll
18:04 dalek rakudo/nom: get the same arguments as the BUILD submethod, but things have
18:04 dalek rakudo/nom: already been initialized, default values populated, ...
18:04 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fdc90a2e76
18:04 dalek rakudo/nom: 9409d68 | timo++ | src/Perl6/Metamodel/BUILDPLAN.nqp:
18:04 dalek rakudo/nom: POSTBUILD was bikeshod to TWEAK.
18:04 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9409d685b7
18:04 dalek rakudo/nom: 6b8d481 | moritz++ | t/spectest.data:
18:04 dalek rakudo/nom: Run TWEAK tests
18:04 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6b8d481bea
18:04 dalek rakudo/nom: cee1012 | timotimo++ | / (2 files):
18:06 viki Can if !nqp::isnull($TWEAK) && $TWEAK { be simplified to just if $TWEAK { ?
18:07 timotimo would probably be able to explode on jvm
18:07 viki Cool. timotimo++
18:07 viki This was one of the things I was complaining about some time in the past :D
18:10 timotimo the TWEAK thing?
18:10 timotimo or nqp::isnull being missing causing the jvm to asplode?
18:11 viki The TWEAK thing.
18:12 FROGGS joined #perl6-dev
18:13 timotimo i'm glad to hear about that
18:13 timotimo in the past i never really noticed the need, it apparently completely passed me by, or i just forgot
18:13 timotimo which is a shame because it was such a trivial addition to make
18:26 dalek rakudo/nom: 05a4fe5 | lizmat++ | src/core/ (2 files):
18:26 dalek rakudo/nom: No private methods on R:I:ShapeIterator and clients
18:26 dalek rakudo/nom:
18:26 dalek rakudo/nom: This speeds up shaped array access and various methods like .keys
18:26 dalek rakudo/nom: / .pairs / .values etc. by about 2x
18:26 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/05a4fe5b8d
18:26 dalek rakudo/nom: 0cf7b36 | lizmat++ | src/core/Shaped1Array.pm:
18:26 dalek rakudo/nom: Make copying 1dimm shaped arrays about 10x fast
18:26 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0cf7b36bb3
18:34 timotimo wow, 2x? that is surprising to me
18:34 timotimo i thought calling private methods ought to be faster
18:38 lizmat yes, I thought so too when I started using  them
18:39 jnthn It should be; they're meant to be rewritten in Perl6::Optimizer to simply reference the method in question.
18:39 yoleaux2 17:32Z <lizmat> jnthn: any chance of optimizing dispatch:<!> ?  On a benchmark of "my @a[10] = ^10; for ^10000 { my @b[10] = @a }" it is taking about 20% cpu  :-(
18:39 yoleaux2 17:33Z <lizmat> jnthn: so I'm considering ripping out all private method calls where possible
18:40 jnthn Well, or alternatively investigate why the opt isn't happening :P
18:53 travis-ci joined #perl6-dev
18:53 travis-ci Rakudo build failed. Zoffix Znet 'Use more idomatic code for passing Bool named args'
18:53 travis-ci https://travis-ci.org/rakudo/rakudo/builds/174524815 https://github.com/rakudo/rakudo/compare/75f154760ddc...b46a62ef3612
18:53 travis-ci left #perl6-dev
18:53 buggable [travis build above] ☠ Did not recognize some failures. Check results manually.
18:56 * lizmat is utterly scared of the optimizer
18:57 * lizmat looks for "private" in src/Perl6/Optimizer.nqp and adds some debug code
19:04 * viki had luck with running something akin to perl -pi -e 's/^(s*multi|sub|method)s+(S+)([^{]+)/$1 $2$3 nqp::say("in $1 $2");/g' src/Perl6/Optimizer.nqp. I forget the exact incantation I used, but it adds a debug print for each method called :)
19:04 viki There's also RAKUDO_OPTIMIZER_DEBUG var
19:26 RabidGravy joined #perl6-dev
19:27 lizmat timotimo jnthn: I think I found the issue
19:27 lizmat if you have a private method call in source referring to compiled code
19:27 lizmat like in the setting, it doesn't find nqp::getobjsc($meth)
19:28 lizmat and probably vice-versa: if compile code refer to a private method that lives in a role being compiled. same issue
19:29 lizmat so in the case of the R:I:ShapeIterator, it calls a !result method that the role doesn't have
19:30 lizmat I can see now how the Optmizer would have a problem with that
19:30 lizmat vice-versa, I'm not so sure...
19:31 lizmat but I guess it's not speshing it either
19:34 lizmat so what I did for the ShapeIterator was the right thing (for now at least)
19:35 lizmat and whenever I see dispatch:<!> appear in a profile, I will look at it  :)
19:42 AlexDaniel joined #perl6-dev
19:54 dalek rakudo/nom: e87009e | lizmat++ | t/spectest.data:
19:54 dalek rakudo/nom: Test files end with .t
19:54 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e87009e767
20:00 dalek rakudo/nom: a822bcf | (Zoffix Znet)++ | src/core/Exception.pm:
20:00 dalek rakudo/nom: Fix crash during exception reporting
20:00 dalek rakudo/nom:
20:00 dalek rakudo/nom: Attempting to call .message on either X::Composition::NotComposable or
20:00 dalek rakudo/nom: X::Inheritance::Unsupported exception would cause a crash, referencing
20:00 dalek rakudo/nom: "no method .item,"
20:00 dalek rakudo/nom:
20:00 dalek rakudo/nom: Not sure why, but the bug is fixed by changing $. twigils to $! when
20:00 dalek rakudo/nom: accessing attributes. Something to do with when these exceptions are made?
20:00 dalek rakudo/nom:
20:00 dalek rakudo/nom: Fixes RT#129906: https://rt.perl.org/Ticket/Display.html?id=129906
20:00 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=129906
20:00 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a822bcf9cf
20:01 dalek roast: 1e5a081 | (Zoffix Znet)++ | integration/error-reporting.t:
20:01 dalek roast: Test composition errors do not crash when printing
20:01 dalek roast:
20:01 dalek roast: RT#129906: https://rt.perl.org/Ticket/Display.html?id=129906
20:01 dalek roast: review: https://github.com/perl6/roast/commit/1e5a081bed
20:01 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=129906
20:05 viki m: try EVAL Q|role A {...}; 2 does A|;
20:05 camelia rakudo-moar 0cf7b3: OUTPUT«Use of uninitialized value of type Any in string context.␤Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.␤  in any try_select at gen/moar/m-Metamodel.nqp line 2653␤»
20:05 viki Should we be fixing that warning or just let it be?
20:06 lizmat feels fix worthy
20:06 viki ok :)
20:15 viki :o
20:16 viki Added a debug print to print the type of $cur_candidate here and when run with the above code it gets printed ~1250 times! https://github.com/rakudo/rakudo/blob/nom/src/Perl6/Metamodel/BOOTSTRAP.nqp#L2126
20:34 dalek rakudo/nom: d27ecfa | lizmat++ | src/core/ShapedArray.pm:
20:34 dalek rakudo/nom: Make >1dimmed shaped array copying 20% faster
20:34 dalek rakudo/nom:
20:34 dalek rakudo/nom: Don't use private helper methods, use lexical helper subs
20:34 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d27ecfae9c
20:34 dalek rakudo/nom: f06e4c3 | lizmat++ | src/core/Rakudo/Internals.pm:
20:34 dalek rakudo/nom: Make setting up a shaped array 2x as fast
20:35 dalek rakudo/nom:
20:35 dalek rakudo/nom: This will become less important once we set up a shaped array at
20:35 dalek rakudo/nom: compile time, but until then, it's nice to have this.
20:35 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f06e4c3b73
20:39 lizmat m: role A { method !a {} }; class B does A { method a() { self!a } }; B.a  # call inside B::a to A::!a does *not* get optimized!
20:39 camelia rakudo-moar a822bc: ( no output )
20:40 lizmat timotimo jnthn: ^^^ should it be possible to optimize it in that case or not ?
20:44 lizmat https://github.com/rakudo/rakudo/blob/nom/src/Perl6/Optimizer.nqp#L1676   # reason it's not optimizing
20:45 lizmat aka nqp::getobjsc($meth) is null
20:50 pyrimidine joined #perl6-dev
20:52 lizmat m: role A { method !a { }; method a { self!a } }; class B does A { }; B.a  # even if they live in the same role, in the class they do not get optimized
20:52 camelia rakudo-moar f06e4c: ( no output )
20:54 lizmat only if the private method and the caller actually live in the same *class*, will the private method call be optimise
20:54 lizmat d
20:56 * lizmat hopes jnthn timotimo can shine their light on ^^^
21:08 lizmat These are the roles in the settings currently affected by lack of optimizing private methods:
21:08 lizmat Grepper Blob Buf Dateish Iterable XX-Whatever ShapedArrayCommon MappyIterator Shaped1Array Shaped2Array ShapedNArray TypedArray
21:09 lizmat s/ShapedNArray/Shaped3Array/
21:17 jnthn Methods are cloned during role composition
21:17 jnthn And so will not be in the SC
21:18 jnthn I guess we could just poke them in to it... :)
21:18 lizmat well, wouldn't that increase the size of the binary ?
21:19 jnthn ?
21:19 jnthn No
21:19 jnthn The stuff all ends up serialized anyway
21:20 jnthn It's discovered by walking the object graph
21:20 lizmat I mean: won't that negatively affect bare startup ?
21:20 jnthn Adding it explicilty to the SC just gives you an index to use to talk about it.
21:20 jnthn Doubt it'll affect bare startup
21:20 jnthn If anything it'd help
21:20 jnthn Because the slow path needs the full HOW deserialized to resolve the method
21:21 jnthn Whereas if we reference it directly by a wval we'd potentially just deserialize the method
21:21 jnthn If it's called
21:28 dalek rakudo/nom: f5bf6c1 | lizmat++ | src/core/TypedArray.pm:
21:28 dalek rakudo/nom: Make creation of typed shaped arrays 15% faster
21:28 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f5bf6c19f4
21:29 lizmat and with that I'm calling it an end to this miserable day
21:29 lizmat good night, #perl6-dev!
21:31 jnthn Good plan
21:31 jnthn 'night, lizmat++
21:42 pyrimidine joined #perl6-dev
21:57 Woodi joined #perl6-dev
22:30 dalek roast: a3a4177 | usev6++ | S09-typed-arrays/native-int.t:
22:30 dalek roast: Fudge tests for antipairs + native arrays for JVM
22:30 dalek roast:
22:30 dalek roast: These tests started to fail with commit c5c6001125
22:30 dalek roast: review: https://github.com/perl6/roast/commit/a3a4177339
22:32 pyrimidine joined #perl6-dev
22:42 pyrimidine joined #perl6-dev
22:45 timotimo viki: now how about an "is TWEAK" attribute trait? :)
22:52 pyrimidine joined #perl6-dev
22:58 pyrimidine joined #perl6-dev
23:20 pyrimidine joined #perl6-dev
23:41 pyrimidine joined #perl6-dev
23:47 timotimo well, really "will TWEAK" would be a saner spelling :)
23:47 timotimo you'd have to use the passive form of TWEAK ... which it ... TWOKE? TWOKEN?
23:51 pyrimidine joined #perl6-dev

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary