Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-10-31

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

All times shown according to UTC.

Time Nick Message
00:19 ggoebel joined #perl6-dev
00:30 btyler joined #perl6-dev
00:34 llfourn_ joined #perl6-dev
02:01 AlexDaniel joined #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
06:49 RabidGravy joined #perl6-dev
06:51 geekosaur joined #perl6-dev
07:50 [Tux] This is Rakudo version 2016.10-111-g4fdf6d7 built on MoarVM version 2016.10-27-g196361f
07:50 [Tux] csv-ip5xs        3.237
07:50 [Tux] test            14.711
07:50 [Tux] test-t           7.010
07:50 [Tux] csv-parser      15.537
08:00 lizmat Files=1150, Tests=53703, 210 wallclock secs (12.69 usr  3.71 sys + 1282.98 cusr 120.12 csys = 1419.50 CPU)
08:11 lizmat m: sub a(array:U \a) { say "foo" }; a array   # can have an array:U sig
08:11 camelia rakudo-moar 4fdf6d: OUTPUT«foo␤»
08:14 lizmat but other than that, it appears to be pretty useless
08:26 vendethiel joined #perl6-dev
09:12 * nine just submitted a "Web development and Perl 6" talk for LPW 2016. Stress level jumps up again...
09:16 FROGGS joined #perl6-dev
09:17 masak ++nine
09:17 FROGGS o/
09:18 nine The final straw was the sentence "Even though I am in the thralls of Perl 6, I still do all my web development in Perl 5 because the ecology of modules is so mature." on http://blogs.perl.org/users/ken_youens-clark/2016/10/web-development-with-perl-5.html linked by this week's Perlweekly.
09:19 nine Need to get the message across, that this shouldn't keep one from using Perl 6 :)
09:19 masak nine: you're my personal hero. keep it up.
09:20 vendethiel ^ that :-)
10:27 dalek rakudo/nom: feb7bcb | lizmat++ | src/core/Array.pm:
10:27 dalek rakudo/nom: Make AT-POS on 1,2,3dim arrays about 20x faster
10:27 dalek rakudo/nom:
10:27 dalek rakudo/nom: Unfortunately, this only translates in about 5x faster for single dim
10:27 dalek rakudo/nom: shaped arrays and only 1.5 times faster for 2/3dim arrays if you're
10:27 dalek rakudo/nom: using postcircumfix [;]
10:27 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/feb7bcb42e
10:31 lizmat jnthn: is this what you had in mind using the specialized nqp ops for 2/3 dim ?   ^^^^
10:32 jnthn Umm
10:33 jnthn m: my @a[2] = [1,2],[3,4]; say @a[1;1]
10:33 camelia rakudo-moar feb7bc: OUTPUT«Cannot access 1 dimension array with 2 indices␤  in block <unit> at <tmp> line 1␤␤»
10:33 jnthn Oh?
10:33 lizmat star: my @a[2] = [1,2],[3,4]; say @a[1;1]
10:33 camelia star-m 2016.04: OUTPUT«4␤»
10:33 jnthn I was gonna say
10:33 jnthn That's a bad regression.
10:33 lizmat not caught by spectest  :-(
10:34 jnthn :-(
10:34 jnthn Anyway, my idea was that we'd put those into a Shaped2D and Shaped3D role
10:34 masak time to write more tests!
10:34 jnthn And mix it in only when we have an array with 2 or 3 dimensions
10:34 jnthn At the same time we mix in the ShapedArray role
10:34 jnthn Or whatever it's called
10:34 lizmat ah, ok, gotcha
10:35 lizmat I think  :-)
10:35 masak jnthn: what about Shaped4D? or rather, what makes 2 and 3 dimensions special? that they are far more common?
10:35 jnthn masak: Yeah, there's special VM-level ops for 2 and 3
10:35 masak gotcha
10:35 jnthn masak: That avoid an indice array allocation
10:35 jnthn I figure they will be the overwhemlingly common case in the wild.
10:35 masak what if someone mixes Shaped2D into something else?
10:36 jnthn I suspect it'll live in Rakudo::Internals. So on your own head be in :P
10:36 jnthn *it
10:36 masak kind of the answer I expected :)
10:37 jnthn If we really worried about the role leaking we could .^add_method the two things I guess but... :)
10:38 masak not sure it's an actual worry, just something my brain flagged up as "what about quests^Wfalse positives?"
10:38 lizmat jnthn: do you agree that the current naming of ShapedArray is in fact wrong, and should be ShapedNArray ?
10:38 lizmat so we can have Shaped1Array, Shaped2Array and Shaped3Array ?
10:40 jnthn lizmat: Well, my original thinking was ShapedArray is the one you always have, and then you add Shaped2 or Shaped3 on top of them
10:40 jnthn And they just provide the couple of extra methods
10:40 jnthn Since we will want the slurpy ones for fallback
10:41 lizmat ah, ok
10:55 lizmat jnthn: btw, would appreciate your thoughts on https://gist.github.com/lizmat/4dd5117f34ff4fe2ad189a8b297d8b19
10:56 lizmat m: for 42 { "foo".match(/foo/); say $/ }
10:56 camelia rakudo-moar feb7bc: OUTPUT«Nil␤»
10:56 lizmat m: for "foo" { /foo/; say $/ }
10:56 camelia rakudo-moar feb7bc: OUTPUT«「foo」␤»
10:57 lizmat m: for "foo" { .match(/foo/); say $/ }
10:57 camelia rakudo-moar feb7bc: OUTPUT«Nil␤»
10:57 lizmat jnthn: only happens in a for block  :-(
10:57 lizmat m: for "foo" { my $/; .match(/foo/); say $/ }
10:57 camelia rakudo-moar feb7bc: OUTPUT«「foo」␤»
10:57 lizmat note:  ^^^ no redef warning
10:58 jnthn Well, it's not a redef since $/ is not block level, but routine/unit level
10:58 jnthn Plus a start block gets a fresh one
10:58 lizmat m: my $/; for "foo" { my $/; .match(/foo/); say $/ }
10:58 camelia rakudo-moar feb7bc: OUTPUT«Potential difficulties:␤    Redeclaration of symbol '$/'␤    at <tmp>:1␤    ------> my $/⏏; for "foo" { my $/; .match(/foo/); say ␤「foo」␤»
10:58 lizmat in the gist I added debug code to show the nqp::where of $/
10:59 lizmat and it's the same everywhere, but still $/ does not get the Match object
10:59 lizmat I also verified it doesn't assign
10:59 lizmat m: my $/ = 42; for "foo" { .match(/foo/); say $/ }
10:59 camelia rakudo-moar feb7bc: OUTPUT«Potential difficulties:␤    Redeclaration of symbol '$/'␤    at <tmp>:1␤    ------> my $/⏏ = 42; for "foo" { .match(/foo/); say $/␤42␤»
10:59 lizmat m: $/ = 42; for "foo" { .match(/foo/); say $/ }
10:59 camelia rakudo-moar feb7bc: OUTPUT«42␤»
11:00 lizmat the only difference I see between before and after the Str.match refactor:
11:00 lizmat *differences
11:00 lizmat 1. Str.match is now a multi
11:01 lizmat 2. instead of looking up $/ all the time, it's only done once and then passed around as an alias
11:03 lizmat I'm afraid if we don't solve this, I would have to revert the Str.match refactor  :-(
11:08 jnthn Think I've solved things like this before
11:09 jnthn Typically it needs a $/ := nqp::getcallerlex('$/') somewhere
11:09 lizmat well, it's using getlexdyn atm
11:09 jnthn Oh
11:09 jnthn That may be the problem
11:09 jnthn Perhaps it's wrongly finding the $/ inside of map internals
11:09 lizmat changing them to getcallerlex did *not* solve the problem
11:09 lizmat by all means, I'll do this again
11:10 jnthn OK, I can look more deeply into it this afty :)
11:11 lizmat I'll push the getcallerlex fix that FROGGS suggested yesterday just in case
11:11 lizmat ok
11:11 lizmat ?
11:11 jnthn Sure
11:11 dalek rakudo/nom: ec3af56 | lizmat++ | src/core/ (25 files):
11:11 dalek rakudo/nom: Remove trailing open curlies from comments
11:11 dalek rakudo/nom:
11:11 dalek rakudo/nom: They were bothering me for some time already  :-)
11:11 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ec3af56599
11:12 lizmat jnthn: nqp::getlexrelcaller(nqp::ctxcaller(nqp::ctx()), '$/')   right ?
11:12 jnthn Oh no
11:12 jnthn It's not that op
11:13 lizmat ok, that may be the issue then, trying now
11:13 travis-ci joined #perl6-dev
11:13 travis-ci Rakudo build passed. Elizabeth Mattijsen 'Make AT-POS on 1,2,3dim arrays about 20x faster
11:13 travis-ci https://travis-ci.org/rakudo/rakudo/builds/171944546 https://github.com/rakudo/rakudo/compare/4fdf6d7721a6...feb7bcb42e76
11:13 travis-ci left #perl6-dev
11:13 jnthn getlexcaller iirc
11:14 jnthn https://github.com/rakudo/rakudo/blob/70a367d64dd7eca4586e15b77fe14ae2a818bb67/src/core/control.pm#L98
11:14 jnthn Like that
11:16 lizmat gotcha
11:18 FROGGS[mobile] joined #perl6-dev
11:18 arnsholt joined #perl6-dev
11:20 lizmat jnthn: no dice
11:20 lizmat is there something against passing what nqp::getlexcaller returns as an argument ?
11:21 lizmat $ 6 'for 42 { "foo".match(/foo/); say $/ }'
11:21 lizmat Nil
11:21 lizmat $ 6 'if 42 { "foo".match(/foo/); say $/ }'
11:21 lizmat 「foo」
11:21 lizmat it's definitely something related to for / map
11:21 lizmat m: $ 6 'map { "foo".match(/foo/); say $/ }, 42'
11:21 lizmat Nil
11:21 camelia rakudo-moar feb7bc: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Two terms in a row␤at <tmp>:1␤------> $⏏ 6 'map { "foo".match(/foo/); say $/ }, ␤    expecting any of:␤        infix␤        infix stopper␤        statement end␤        statement modif…»
11:22 lizmat $ 6 'map { "foo".match(/foo/); say $/ }, 42'
11:22 lizmat Nil
11:22 lizmat star: map { "foo".match(/foo/); say $/ }, 42
11:22 camelia star-m 2016.04: OUTPUT«「foo」␤»
11:49 lizmat jnthn: fwiw, that code runs IterateOneWithoutPhasers.sink-all : https://github.com/rakudo/rakudo/blob/nom/src/core/Any-iterable-methods.pm#L440
11:50 lizmat perhaps the problem is related to the "Cannot reference undeclared local '__lowered_lex_3225'" issue
11:51 lizmat fwiw, removing that block, replacing the nqp::while($running), with while $running {} doesn't fix the issue
11:59 travis-ci joined #perl6-dev
11:59 travis-ci Rakudo build passed. Elizabeth Mattijsen 'Remove trailing open curlies from comments
11:59 travis-ci https://travis-ci.org/rakudo/rakudo/builds/171953993 https://github.com/rakudo/rakudo/compare/feb7bcb42e76...ec3af5659942
11:59 travis-ci left #perl6-dev
12:09 dalek rakudo/nom: 8e79509 | lizmat++ | src/core/Str.pm:
12:09 dalek rakudo/nom: Replace getlexdyn by getlexcaller
12:09 dalek rakudo/nom:
12:09 dalek rakudo/nom: As that appears to be the correct nqp::op invocation for passing $/
12:09 dalek rakudo/nom: around: https://irclog.perlgeek.de/perl6-dev/2016-10-31#i_13491020
12:09 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/8e79509e2f
12:10 lizmat still: $ 6 'for 42 { "foo".match(/foo/); say $/ }'
12:10 lizmat Nil
12:11 timotimo when you're passing around $/, does it accidentally get deconted somewhere?
12:11 timotimo so you can't assign into it no more?
12:12 lizmat wouldn't that just cause an exception then ?
12:12 timotimo probably, yeah
12:13 lizmat also: my test file in which I did the refactor
12:13 lizmat which contains functional equivalent of code, with slightly different names
12:13 lizmat works fine  :-(
12:14 timotimo is something going in between the match method and the caller so we get the wrong caller?
12:14 lizmat https://gist.github.com/lizmat/866111944723e16ac93c17ad393ea9a7   # madch.pl
12:14 lizmat run that, and you see it works ok there
12:15 lizmat development is on that file
12:16 lizmat once I deem it ready, I remove all the match code from Str, read the file, remove the proto and code at beginning and end
12:16 lizmat do s:g/IDERATOR/ITERATOR/ and s:g/madch/match/
12:16 lizmat and presto
12:16 lizmat saves me ~ 2 minutes trying every change
12:17 timotimo yeah
12:17 FROGGS[mobile]2 joined #perl6-dev
12:41 dalek rakudo/nom: 4bd09a7 | lizmat++ | / (4 files):
12:41 dalek rakudo/nom: Split off array operators into a separate file
12:41 dalek rakudo/nom:
12:41 dalek rakudo/nom: The source of Array.pm is becoming unwieldy, and will be more so before
12:41 dalek rakudo/nom: long.  So split off stuff that can be split off easily.
12:41 dalek rakudo/nom:
12:41 dalek rakudo/nom: This requires re-running Configure.pl, alas.
12:41 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4bd09a75a1
12:50 lizmat actually, only on the JVM
12:55 timotimo what is?
12:55 |Tux| joined #perl6-dev
12:55 timotimo oh, btw, were you considering generating the source for 2dim and 3dim array stuff?
12:55 [Coke] nine++
12:56 lizmat timotimo: when I have more clarity on that, but yes, that is an option
12:57 [Coke] lizmat++
12:57 AlexDaniel joined #perl6-dev
12:59 jnthn I'd not expect there to be much worth generating for the 2d/3d things; it's just a handful of methods in each of the roles, I'd expect
13:00 lizmat and they would take different numbers of parameters, which would make generating a bit awkward
13:00 lizmat but still  :-)
13:01 * jnthn dislikes generating code generally
13:02 jnthn So if it's borderline worth it, please don't
13:02 timotimo OK
13:07 dalek rakudo/nom: fb0c648 | lizmat++ | tools/build/ (2 files):
13:07 dalek rakudo/nom: Extract settings JVM file list into separate file
13:07 dalek rakudo/nom:
13:07 dalek rakudo/nom: So that we don't have to do a re-configure if we change the list of
13:07 dalek rakudo/nom: files of which the settings consists.
13:07 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fb0c648447
13:25 jnthn Righty, five minutes break and then I'll have Perl 6 shaped tuits :)
13:25 viki \o/
13:29 lizmat yeah!
13:30 * masak .oO( array3d shaped tuits ) :P
13:31 * lizmat hopes for Str.match refactor saving tuits, actually
13:31 * gfldex .oO( http://www.eski.io/demo/mill-crimson/wp-content/uploads/sites/10/2013/07/set-of-3-butterfly-shaped-cookie-cutters-2-p.jpg )
13:35 dalek rakudo/nom: b5302b8 | lizmat++ | / (5 files):
13:35 dalek rakudo/nom: Split off the TypedArray role into its own file
13:35 dalek rakudo/nom:
13:35 dalek rakudo/nom: Also make sure we close the Array class in array_operators.pm, as
13:35 dalek rakudo/nom: we want the TypedArray role to only be visible inside the Array class
13:35 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b5302b872c
13:40 jnthn lizmat: So, the match/map problem is still there? I just nead HEAD of Rakudo?
13:40 lizmat yup
13:40 jnthn OK, building latest everything :)
13:40 lizmat https://gist.github.com/lizmat/866111944723e16ac93c17ad393ea9a7   # madch.pl
13:40 lizmat that's my dev code, that works ok outside of the setting
13:41 jnthn my $cursor-init := Cursor.^can("!cursor_init").AT-POS(0);
13:41 jnthn Any reason not just Cursor.^lookup('!cursor_init') ?
13:41 jnthn And similar for others bloew
13:41 jnthn *below
13:42 jnthn m: for 42 { say "foo".madch(/foo/); say $/ }
13:42 camelia rakudo-moar fb0c64: OUTPUT«No such method 'madch' for invocant of type 'Str'␤  in block <unit> at <tmp> line 1␤␤»
13:42 jnthn m: for 42 { say "foo".match(/foo/); say $/ }
13:42 camelia rakudo-moar fb0c64: OUTPUT«「foo」␤Nil␤»
13:42 jnthn star: for 42 { say "foo".match(/foo/); say $/ }
13:42 camelia star-m 2016.04: OUTPUT«「foo」␤「foo」␤»
13:42 jnthn bisectable: for 42 { say "foo".match(/foo/); say $/ }
13:42 bisectable6 jnthn, Bisecting by output (old=2015.12 new=fb0c648) because on both starting points the exit code is 0
13:42 bisectable6 jnthn, bisect log: https://gist.github.com/6e5d51c186915835d1d611b191049a20
13:42 bisectable6 jnthn, (2016-10-23) https://github.com/rakudo/rakudo/commit/b7201a8f22338a906f2d8027a21387e8f5c77f41
13:43 lizmat it's the initial refactor commit, that was already known
13:43 lizmat jnthn: no particular reason to use ^can over ^lookup, is ^lookup faster ?
13:45 jnthn Yes
13:46 jnthn It's likely just a hash table access, whereas the can approach finds all candidates up the mro and puts them in a list, which is then indexed by AT-POS and thrown away
13:46 jnthn So it's more GC overhead and more work to use .^can for this
13:46 lizmat ok, will fix and test
14:00 jnthn $ ./perl6-m -e '<foo>.map({ .match(/foo/); say $/ })'
14:00 jnthn 「foo」
14:01 jnthn m: <foo>.map({ .match(/foo/); say $/ })
14:01 camelia rakudo-moar b5302b: OUTPUT«Nil␤»
14:01 jnthn m: for ^2 { <foo>.map({ .match(/foo/); say $/ }) }
14:01 camelia rakudo-moar b5302b: OUTPUT«Nil␤Nil␤»
14:02 * jnthn spectests
14:11 jnthn lizmat: So I did one fix but then looked a bit deeper and am now trying a second probably better one
14:11 lizmat ok, *phew*
14:11 jnthn lizmat: I was a tad worried my fix may have a perf impact but now I've dug deeper it seems it won't
14:12 lizmat well, I'm looking forward to looking at the patch  :-)
14:12 jnthn If this second approach works it'll be a one-line change ;)
14:12 jnthn Will need to re-spectest it though
14:12 lizmat gotcha
14:13 jnthn Anyone else got any major blockers I should take a peek at?
14:14 jnthn Otherwise I'll probably pick off some RTs
14:14 lizmat I had something else yesterday...
14:15 dalek joined #perl6-dev
14:16 lizmat hmmmm.... stack overflowed I guess :-(
14:16 jnthn np :)
14:16 * jnthn has no shortage of things that want attention
14:19 dalek rakudo/nom: ba152bd | jnthn++ | src/core/Cool.pm:
14:19 dalek rakudo/nom: Fix handling of $/ in some uses of `.match`.
14:19 dalek rakudo/nom:
14:19 dalek rakudo/nom: This of note fixes the use of `match` in a `for` loop, which was
14:19 dalek rakudo/nom: failing to set `$/`. This happened when `match` became a multi.
14:19 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ba152bdb96
14:19 jnthn lizmat: Will you add a test for that or should I?
14:20 lizmat argh: I had missed the proto  :-(
14:20 lizmat I will add tests as penance  :-)
14:20 jnthn Thanks! :)
14:21 jnthn I'll go golf some supply code that causes a GC abort as a...reward?
14:21 lizmat :-)  yes, please...
14:21 lizmat also: HARNESS_TYPE=6 make spectest still breaks could be an attention point
14:22 dalek rakudo/nom: 0245eb8 | lizmat++ | src/core/ (3 files):
14:22 dalek rakudo/nom: Use much cheaper ^lookup instead of ^can, jnthn++
14:22 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0245eb8d7e
14:22 dalek rakudo/nom: cb8f783 | lizmat++ | / (5 files):
14:22 dalek rakudo/nom: Seperate the ShapedArray role into a separate file
14:22 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cb8f783eeb
14:42 japhb Since jnthn asked earlier -- jnthn, nine: https://github.com/jnthn/oo-monitors/issues/8 is giving me some grief.  Appears to be finicky and related to precomp, but I tried a number of different variants and recorded them in the issue, so maybe that will jumpstart debugging.
14:42 japhb As jonathanstowe surmised, it appears related to https://rt.perl.org/Ticket/Display.html?id=127858
14:47 jnthn m: https://gist.github.com/jnthn/5f7801deffdfc0084a003e957423312c
14:47 camelia rakudo-moar cb8f78: OUTPUT«(signal ABRT)ok␤ok␤ok␤ok␤ok␤ok␤ok␤ok␤ok␤ok␤ok␤ok␤ok␤»
14:49 jnthn There's an interesting golf
14:57 gfldex is .^lookup as official as .^can ?
14:59 [Coke] gfldex: it's in t/spec ..
15:05 viki .^can gets a company car, but .^lookup always wears ties... I'd say they're equally official ^_^
15:07 gfldex what is the difference between .^can and .^lookup ?
15:09 lizmat gfldex: the way I understand it is that ^lookup doesn't walk .mro
15:10 lizmat it just checks in the class itself
15:12 jnthn lookup will walk MRO too
15:12 dalek rakudo/nom: 221633a | lizmat++ | / (6 files):
15:12 dalek rakudo/nom: Create Shaped(1|2|3)Array roles / files
15:12 dalek rakudo/nom:
15:12 dalek rakudo/nom: So it will be easier to see the differences and similarities.  If the
15:12 dalek rakudo/nom: similarities prove to be sufficiently similar, these new roles may well
15:12 jnthn It just stops when it finds a result
15:12 dalek rakudo/nom: become generated.
15:12 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/221633ac82
15:12 jnthn Whereas can keeps going, and makes a list of all of the possible results
15:13 lizmat ah, TIL something (again)
15:18 dalek roast: 14358e2 | lizmat++ | S05-match/arrayhash.t:
15:18 dalek roast: Add test for smartmatching finite vs infinite Seq
15:18 dalek roast:
15:18 dalek roast: Also add some comments on the existing tests
15:18 dalek roast: review: https://github.com/perl6/roast/commit/14358e245a
15:18 dalek roast: 819db21 | lizmat++ | S05-modifier/continue.t:
15:18 dalek roast: Add test for $/ not being set inside for { } issue
15:18 dalek roast: review: https://github.com/perl6/roast/commit/819db21f5a
15:46 * |Tux| re-runs timing after seeing this many messages from dalek …
15:47 lizmat [Tux]: won't be much difference, I'm afraid
15:47 |Tux| still curious
15:51 lizmat m: my @a[2] = [],[]; @a[0;0] = 42; dd @a   # jnthn, I assume this is supposed to work ?
15:51 camelia rakudo-moar 221633: OUTPUT«This type cannot unbox to a native integer: P6opaque, Array␤  in block <unit> at <tmp> line 1␤␤»
15:51 lizmat aka, a 2 element shaped array with sizable arrays in them
15:54 |Tux| This is Rakudo version 2016.10-121-g221633a built on MoarVM version 2016.10-27-g196361f
15:54 |Tux| csv-ip5xs        3.143
15:54 |Tux| test            14.227
15:54 |Tux| test-t           7.181
15:54 |Tux| csv-parser      15.423
15:55 jnthn lizmat: Yeah, would expect it to
15:56 lizmat this I did not break  :-)
16:25 jnthn OK, seems that fixing LEAVE and friends to really properly get things right with threads is what's needed to deal with the bug I'm hunting properly
16:28 timotimo sounds like a quite involved bug
16:28 jnthn Yeah
16:28 jnthn I thought I could put in a band-aid fix in the meantime
16:28 jnthn Then realized it ain't gonna fly
16:29 jnthn So, guess I've some design work to be doing
16:31 hankache joined #perl6-dev
16:35 dalek rakudo/nom: 07eeea8 | jnthn++ | src/core/Exception.pm:
16:35 dalek rakudo/nom: Add a couple of missing CX:: classes.
16:35 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/07eeea8084
16:36 dalek roast: d67b3ba | jnthn++ | S04-exception-handlers/control.t:
16:36 dalek roast: Cover CX::Emit and CX::Done.
16:36 dalek roast: review: https://github.com/perl6/roast/commit/d67b3ba50c
16:36 jnthn Some bonus work done while investigating and bug-hunting :)
16:36 jnthn afk for a bit
16:39 viki m: https://gist.github.com/zoffixznet/14ae6557738c3015bf449a2b28969408
16:39 camelia rakudo-moar 221633: OUTPUT«#<failed match>␤»
16:39 viki Interesting it's a #<failed match> and not Nil :/
16:39 viki Oh, that's what subparse always returns :/
16:39 viki star: https://gist.github.com/zoffixznet/14ae6557738c3015bf449a2b28969408
16:39 camelia star-m 2016.04: OUTPUT«#<failed match>␤»
16:40 viki OK then
16:41 lizmat viki: yeah, that's ultimately the difference between parse and subparse
17:12 travis-ci joined #perl6-dev
17:12 travis-ci Rakudo build errored. Elizabeth Mattijsen 'Create Shaped(1|2|3)Array roles / files
17:12 travis-ci https://travis-ci.org/rakudo/rakudo/builds/172011516 https://github.com/rakudo/rakudo/compare/cb8f783eeb8a...221633ac8221
17:12 travis-ci left #perl6-dev
17:12 buggable [travis build above] ✓ All failures are due to timeout (1), missing build log (0), or GitHub connectivity (0).
18:14 seatek joined #perl6-dev
18:34 perlpilot joined #perl6-dev
19:05 dalek nqp: 25cee34 | (Pawel Murias)++ | src/vm/js/ (2 files):
19:05 dalek nqp: [js] CPS support is currently broken, so I remove the parts of it that cause performance problems.
19:05 dalek nqp:
19:05 dalek nqp: Once I'm fixing CPS I will re-add them in a way that doesn't cause performance problems for non-CPS using code.
19:05 dalek nqp: review: https://github.com/perl6/nqp/commit/25cee34043
19:05 dalek nqp: fe038b8 | (Pawel Murias)++ | src/vm/js/nqp-runtime/ (4 files):
19:05 dalek nqp: [js] Make multi caches be serialized as null as they get recreated.
19:05 dalek nqp: review: https://github.com/perl6/nqp/commit/fe038b8477
19:05 dalek nqp: ad1a799 | (Pawel Murias)++ | t/serialization/01-basic.t:
19:05 dalek nqp: Test serialization of a multi cache.
19:05 dalek nqp: review: https://github.com/perl6/nqp/commit/ad1a799050
19:26 vendethiel- joined #perl6-dev
19:26 RabidGravy joined #perl6-dev
19:31 pmurias joined #perl6-dev
19:41 dalek rakudo/nom: d4355cb | lizmat++ | src/core/ShapedArray.pm:
19:41 dalek rakudo/nom: Activate the Shaped123Array roles
19:41 dalek rakudo/nom:
19:41 dalek rakudo/nom: So that we get the efficiency gains of feb7bcb42e76c3c back again.
19:41 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d4355cba8d
19:52 dalek roast/lexical_module_load: e9205cc | niner++ | / (4 files):
19:52 dalek roast/lexical_module_load: Fixup tests for lexical module loading
19:52 dalek roast/lexical_module_load:
19:52 dalek roast/lexical_module_load: We now need to explicitly use modules if we want to use their symbols and can
19:52 dalek roast/lexical_module_load: no longer rely on them being loaded by one of our dependencies.
19:52 dalek roast/lexical_module_load: review: https://github.com/perl6/roast/commit/e9205cc850
19:52 dalek roast/lexical_module_load: a31614e | niner++ | / (2 files):
19:52 dalek roast/lexical_module_load: Test that globals of loaded modules are imported lexically
19:52 dalek roast/lexical_module_load: review: https://github.com/perl6/roast/commit/a31614e048
19:52 dalek rakudo/lexical_module_load: 56e4044 | niner++ | / (5 files):
19:52 dalek rakudo/lexical_module_load: Make importing globals from loaded modules lexical
19:52 dalek rakudo/lexical_module_load:
19:52 dalek rakudo/lexical_module_load: Right now if A depends on C:auth<foo> and B depends on C:auth<bar> you
19:52 dalek rakudo/lexical_module_load: cannot use A and B in the same program. Fix this by having not only
19:52 dalek rakudo/lexical_module_load: exported symbols be lexical but also the globals contained in a module.
19:52 dalek rakudo/lexical_module_load:
19:52 dalek rakudo/lexical_module_load: So only A will even have a C that's bound to C:auth<foo>. This means
19:52 dalek rakudo/lexical_module_load: that you have to "use" modules in every scope that accesses those names,
19:52 dalek rakudo/lexical_module_load: 5cdba73 | niner++ | src/Perl6/World.nqp:
19:52 dalek rakudo/lexical_module_load: Fix: use Foo::Bar; class Foo { my Foo::Bar $bar; } not finding Foo::Bar
19:53 dalek rakudo/lexical_module_load:
19:53 dalek rakudo/lexical_module_load: A lexically imported package stub was replaced instead of upgraded when
19:53 dalek rakudo/lexical_module_load: a class of the same name was declared.
19:53 dalek rakudo/lexical_module_load: review: https://github.com/rakudo/rakudo/commit/5cdba73295
19:53 dalek rakudo/lexical_module_load: 45d12e0 | niner++ | src/Perl6/ModuleLoader.nqp:
19:53 dalek rakudo/lexical_module_load: Fix: class Foo { use Foo::Bar; my Foo $foo; } not finding Foo
19:53 dalek rakudo/lexical_module_load:
19:53 dalek rakudo/lexical_module_load: The lexically imported "Foo" package stub containing "Bar" shadowed the
19:53 dalek rakudo/lexical_module_load: "Foo" class we're currently declaring. Fix by considering all scopes
19:53 dalek rakudo/lexical_module_load: when looking for existing symbols, not just the one we're importing
19:53 dalek rakudo/lexical_module_load: into.
19:53 dalek rakudo/lexical_module_load: review: https://github.com/rakudo/rakudo/commit/45d12e0e28
19:53 dalek rakudo/lexical_module_load: 6e5d96a | niner++ | src/Perl6/World.nqp:
19:53 dalek rakudo/lexical_module_load: Fix our scoped nested package swallowed by lexically scoped parent
19:53 dalek rakudo/lexical_module_load:
19:53 dalek rakudo/lexical_module_load: In "use Foo; class Foo::Bar { }" Foo::Bar would be created as child of
19:53 dalek rakudo/lexical_module_load: the lexically imported Foo class and was thus missing from the globals.
19:53 dalek rakudo/lexical_module_load: Previous fixes only handled the case when Foo was a stub package, not
19:53 dalek rakudo/lexical_module_load: when it was a full class.
19:53 dalek rakudo/lexical_module_load: Remove the special case and fix the follow up bug that we now got a
19:53 dalek rakudo/lexical_module_load: duplicate symbol when trying to lexically override classes in the
19:53 dalek rakudo/lexical_module_load: RESTRICTED setting. There's no need to upgrade the main package to a
19:53 dalek rakudo/lexical_module_load: global if we only want to create a lexically scoped child anyway.
19:53 dalek rakudo/lexical_module_load: review: https://github.com/rakudo/rakudo/commit/6e5d96a5ba
19:53 nine Rebased the lexical_module_load branches to current nom/master.
19:53 lizmat :-)
20:08 nine Considering that the branch passes test and stresstest and successfully installs Task::Star, we're gonna need an executive decision on how to go forward.
20:10 lizmat do you have an idea on the ecosystem fallout ?
20:11 japhb nine: While you're waiting on that, do you have desire/cycles to look at https://rt.perl.org/Ticket/Display.html?id=127858 (which I found out about via https://github.com/jnthn/oo-monitors/issues/8)?
20:11 lizmat and another Perl 6 Weekly hits the Net: https://p6weekly.wordpress.com/2016/10/31/2016-44-увод-в-perl-6/
20:12 japhb lizmat: I literally refreshed 3 minutes ago, thinking "Isn't this about when Liz publishes a new weekly?"  :-)
20:12 lizmat :-)
20:13 lizmat well, usually I'm an hour later or so.... but since we went back from DST and you guys haven't, I thought I'd do it one hour earlier  :-)
20:13 japhb Heh
20:27 [Coke] pmurias: the latest short blog post was nice, thanks for the update.
20:32 FROGGS joined #perl6-dev
20:33 FROGGS o/
20:44 nine japhb: that looks....headachy to fix
20:46 dalek rakudo/nom: 7e534bb | lizmat++ | src/core/Rakudo/Internals.pm:
20:46 dalek rakudo/nom: Remove now unused role MatchIterator
20:46 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7e534bb4c5
21:12 dalek rakudo/nom: 59b4526 | lizmat++ | src/core/Ra (2 files):
21:12 dalek rakudo/nom: Abstract the int Range iterator away
21:12 dalek rakudo/nom:
21:12 dalek rakudo/nom: So we can use it elsewhere
21:12 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/59b45268cc
21:15 FROGGS joined #perl6-dev
21:25 dalek rakudo/nom: ba49679 | lizmat++ | src/core/List.pm:
21:25 dalek rakudo/nom: Add count-only/bool-only/sink-all
21:25 dalek rakudo/nom:
21:25 dalek rakudo/nom: If a List is completely reified, we don't need to run through it to
21:25 dalek rakudo/nom: find out how many elements, any elements, or just sink the whole thing.
21:25 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ba4967931d
21:29 MasterDuke joined #perl6-dev
21:36 MasterDuke timotimo (or others), i'm looking in src/vm/moar/QAST/QASTOperationsMAST.nqp at MAST::InstructionList.new(), which takes an optional $lineno. i see lot of calls to MAST::InstructionList.new(), but never with the lineno
21:38 MasterDuke i still haven't been able to find a/the spot where a line number is actually stored somewhere when being compiled
21:45 FROGGS when source code is parsed with Perl6::Grammar and Perl6::Actions, the current match $/ is put into the QAST tree as 'node', like in: QAST::Op.new (..., :node($/) )
21:45 FROGGS and when that op fails it gets the line number from $/
21:47 MasterDuke interesting. same for the core settings?
21:48 japhb nine: Yep.  Hence the reason I'm reduced to finding interesting variations of the failure mode to hopefully trigger a flash of insight in whichever hero steps forward.  :-)
21:52 FROGGS MasterDuke: yes, all Perl 6 code is parsed the same
21:55 dalek rakudo/nom: d53a905 | lizmat++ | src/core/List.pm:
21:55 dalek rakudo/nom: Let List.keys use IntRangeIterator when it can
21:55 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d53a90594c
21:57 MasterDuke FROGGS: where would one of those failures be?
22:00 FROGGS what failures?
22:00 MasterDuke "when the op fails"?
22:01 dalek roast: e0bc46d | lizmat++ | S03-metaops/hyper.t:
22:01 dalek roast: Fix test expecting a Range rather than a Seq
22:01 dalek roast:
22:01 dalek roast: List.keys had a short-cut whereby it would return a Range, rather
22:01 dalek roast: than a Seq (which one should expect).  This has been remedied with
22:01 dalek roast: d53a90594ce8010d0c and thus the test failed.
22:01 dalek roast: review: https://github.com/perl6/roast/commit/e0bc46d7c6
22:02 MasterDuke ah ha, i may have found something
22:03 FROGGS https://github.com/rakudo/rakudo/blob/nom/src/Perl6/Actions.nqp#L1715
22:03 MasterDuke https://github.com/perl6/nqp/blob/master/src/vm/moar/QAST/QASTCompilerMAST.nqp#L1402
22:03 FROGGS this is how it is attached to the AST
22:03 FROGGS yes, correct
22:04 FROGGS you might find spots in Perl6::Actions where :node is not set, and that might be a place where we loose the line number information
22:04 dalek roast/6.c-errata: 1b62d04 | lizmat++ | S03-metaops/hyper.t:
22:04 dalek roast/6.c-errata: Fix test because of fix in d53a905
22:04 dalek roast/6.c-errata:
22:04 dalek roast/6.c-errata: List.keys should always return a Seq.  It returned a Range if it wasn't
22:04 dalek roast/6.c-errata: lazy.  The test depended on this behaviour.  Altered to what it should
22:04 dalek roast/6.c-errata: be and marked as "todo"
22:04 dalek roast/6.c-errata: review: https://github.com/perl6/roast/commit/1b62d04b4a
22:06 MasterDuke FROGGS: so the backstory is that i wrote a horrible hack for moar that would parse gen/moar/m-CORE.setting (at exception time) to get actual source filename+line number
22:06 dalek rakudo/nom: 839e523 | lizmat++ | src/core/Shaped1Array.pm:
22:06 dalek rakudo/nom: Make Shaped1Array use IntRangeIterator
22:06 dalek rakudo/nom:
22:06 dalek rakudo/nom: As we know its size in advance
22:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/839e52315c
22:06 MasterDuke chatted with timotimo a little bit about it last night
22:07 MasterDuke a real solution would be figuring out that information at compile time
22:07 lizmat MasterDuke: I think the only thing that is really needed
22:07 lizmat is to make "#line 1 src/core/core_prologue.pm" work
22:07 lizmat this is the syntax in Perl 5 for setting line number and file name
22:08 lizmat the core setting file already has that info in there
22:08 lizmat so, afaics, this needs to be parsed and not ignored as comments
22:10 MasterDuke lizmat: what i did is just parse m-CORE.setting looking for the last one of those before the line number the exception had, and then reporting the bit after "#line 1 " and making the line number = given line number - offset
22:11 MasterDuke so what's output is something like: ... in method floor at src/core/Rational.pm line 53 ...
22:12 MasterDuke so yeah, i'm trying to figure out how to find/store that info when compiling the setting
22:14 lizmat in Perl6/Grammar.nqp, look for $?FILES ?
22:15 lizmat a year ago I also looked at this...   didn't get very far  :-(
22:18 MasterDuke uh oh, that doesn't sound promising. do you remember what was the sticking point?
22:18 lizmat not at the moment  :-(
22:18 lizmat seen a lot of code since :-(
22:19 MasterDuke well, i'll keep poking around for a little while longer at least
22:19 lizmat please do  :-)  I would really like to see it as well!
22:22 travis-ci joined #perl6-dev
22:22 travis-ci Rakudo build errored. Elizabeth Mattijsen 'Remove now unused role MatchIterator'
22:22 travis-ci https://travis-ci.org/rakudo/rakudo/builds/172112674 https://github.com/rakudo/rakudo/compare/d4355cba8d8d...7e534bb4c586
22:22 travis-ci left #perl6-dev
22:22 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.
22:41 lizmat good night, #perl6-dev!
22:42 timotimo gnite lizmat
22:46 timotimo i don't think we still need to add a nqp::time_n to the end of the alt_nfa_* names
22:51 timotimo the string heap of the core setting seems to contain at least a thousand stringified numbers
22:51 pmurias the TODO comment in src/Perl6/World.pm:3120 is no longer needed?
22:51 yoleaux2 14 Oct 2016 02:17Z <MasterDuke> pmurias: you seem to know a bit about the JVM implementation, any suggestions for how to tackle the BOOTSTRAPATTR -> Attribute problem i've been working on?
22:52 timotimo no clue, pmurias  :(
22:53 pmurias MasterDuke: have you solved your problem?
22:53 pmurias timotimo: looking at git history there seems to have been a moar specific if
22:53 timotimo ah
22:53 pmurias MasterDuke: sorry for not noticing the msg
22:53 timotimo turns out we do require that nqp::time_n to be concatenated there
22:54 timotimo it seems like there's really about 10000 stringified numbers in the thing
22:55 timotimo probably keys to some hash that has numbered things as keys in it?
23:02 pmurias slightly crazy side project: make MoarVM support WebAssembly
23:03 pmurias s/side project/project/
23:07 pmurias then we could compile Perl 6 modules with inline C into MoarVM bytecode (with webassembly mixed in)
23:33 MasterDuke .tell pmurias kind of. i think all the ones that are left also fail on moar. i'd like to get some more of them eventually, so i'll ping you again if i run into jmv problems
23:33 yoleaux2 MasterDuke: I'll pass your message to pmurias.
23:34 timotimo https://gist.github.com/timo/63b1ff332bec22107b13f9895c579e03
23:35 timotimo i'm not sure if there's anything to gain in NQPArray's serialization
23:43 timotimo impressive how many container descriptors are still there
23:44 timotimo oh, that may be because i didn't actually land the cache for those
23:44 timotimo because it was still causing problems in the spec tests :(
23:49 timotimo parameter also has a lot more fields than ContainerDescriptor does
23:49 timotimo i'm afraid they aren't really sharable :\

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