[Tux] | This is Rakudo version 2016.10-111-g4fdf6d7 built on MoarVM version 2016.10-27-g196361f | 07:50 | |
csv-ip5xs 3.237 | |||
test 14.711 | |||
test-t 7.010 | |||
csv-parser 15.537 | |||
lizmat | Files=1150, Tests=53703, 210 wallclock secs (12.69 usr 3.71 sys + 1282.98 cusr 120.12 csys = 1419.50 CPU) | 08:00 | |
m: sub a(array:U \a) { say "foo" }; a array # can have an array:U sig | 08:11 | ||
camelia | rakudo-moar 4fdf6d: OUTPUT«foo» | ||
lizmat | but other than that, it appears to be pretty useless | 08:14 | |
nine just submitted a "Web development and Perl 6" talk for LPW 2016. Stress level jumps up again... | 09:12 | ||
masak | ++nine | 09:17 | |
FROGGS | o/ | ||
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 blogs.perl.org/users/ken_youens-cla...erl-5.html linked by this week's Perlweekly. | 09:18 | |
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. | ||
vendethiel | ^ that :-) | 09:20 | |
dalek | kudo/nom: feb7bcb | lizmat++ | src/core/Array.pm: Make AT-POS on 1,2,3dim arrays about 20x faster Unfortunately, this only translates in about 5x faster for single dim shaped arrays and only 1.5 times faster for 2/3dim arrays if you're using postcircumfix [;] |
10:27 | |
lizmat | jnthn: is this what you had in mind using the specialized nqp ops for 2/3 dim ? ^^^^ | 10:31 | |
jnthn | Umm | 10:32 | |
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» | ||
jnthn | Oh? | ||
lizmat | star: my @a[2] = [1,2],[3,4]; say @a[1;1] | ||
camelia | star-m 2016.04: OUTPUT«4» | ||
jnthn | I was gonna say | ||
That's a bad regression. | |||
lizmat | not caught by spectest :-( | ||
jnthn | :-( | 10:34 | |
Anyway, my idea was that we'd put those into a Shaped2D and Shaped3D role | |||
masak | time to write more tests! | ||
jnthn | And mix it in only when we have an array with 2 or 3 dimensions | ||
At the same time we mix in the ShapedArray role | |||
Or whatever it's called | |||
lizmat | ah, ok, gotcha | ||
I think :-) | 10:35 | ||
masak | jnthn: what about Shaped4D? or rather, what makes 2 and 3 dimensions special? that they are far more common? | ||
jnthn | masak: Yeah, there's special VM-level ops for 2 and 3 | ||
masak | gotcha | ||
jnthn | masak: That avoid an indice array allocation | ||
I figure they will be the overwhemlingly common case in the wild. | |||
masak | what if someone mixes Shaped2D into something else? | ||
jnthn | I suspect it'll live in Rakudo::Internals. So on your own head be in :P | 10:36 | |
*it | |||
masak | kind of the answer I expected :) | ||
jnthn | If we really worried about the role leaking we could .^add_method the two things I guess but... :) | 10:37 | |
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 ? | ||
so we can have Shaped1Array, Shaped2Array and Shaped3Array ? | |||
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 | |
And they just provide the couple of extra methods | |||
Since we will want the slurpy ones for fallback | |||
lizmat | ah, ok | 10:41 | |
jnthn: btw, would appreciate your thoughts on gist.github.com/lizmat/4dd5117f34f...8b297d8b19 | 10:55 | ||
m: for 42 { "foo".match(/foo/); say $/ } | 10:56 | ||
camelia | rakudo-moar feb7bc: OUTPUT«Nil» | ||
lizmat | m: for "foo" { /foo/; say $/ } | ||
camelia | rakudo-moar feb7bc: OUTPUT«「foo」» | ||
lizmat | m: for "foo" { .match(/foo/); say $/ } | 10:57 | |
camelia | rakudo-moar feb7bc: OUTPUT«Nil» | ||
lizmat | jnthn: only happens in a for block :-( | ||
m: for "foo" { my $/; .match(/foo/); say $/ } | |||
camelia | rakudo-moar feb7bc: OUTPUT«「foo」» | ||
lizmat | note: ^^^ no redef warning | ||
jnthn | Well, it's not a redef since $/ is not block level, but routine/unit level | 10:58 | |
Plus a start block gets a fresh one | |||
lizmat | m: my $/; for "foo" { my $/; .match(/foo/); say $/ } | ||
camelia | rakudo-moar feb7bc: OUTPUT«Potential difficulties: Redeclaration of symbol '$/' at <tmp>:1 ------> my $/⏏; for "foo" { my $/; .match(/foo/); say 「foo」» | ||
lizmat | in the gist I added debug code to show the nqp::where of $/ | ||
and it's the same everywhere, but still $/ does not get the Match object | 10:59 | ||
I also verified it doesn't assign | |||
m: my $/ = 42; for "foo" { .match(/foo/); say $/ } | |||
camelia | rakudo-moar feb7bc: OUTPUT«Potential difficulties: Redeclaration of symbol '$/' at <tmp>:1 ------> my $/⏏ = 42; for "foo" { .match(/foo/); say $/42» | ||
lizmat | m: $/ = 42; for "foo" { .match(/foo/); say $/ } | ||
camelia | rakudo-moar feb7bc: OUTPUT«42» | ||
lizmat | the only difference I see between before and after the Str.match refactor: | 11:00 | |
*differences | |||
1. Str.match is now a multi | |||
2. instead of looking up $/ all the time, it's only done once and then passed around as an alias | 11:01 | ||
I'm afraid if we don't solve this, I would have to revert the Str.match refactor :-( | 11:03 | ||
jnthn | Think I've solved things like this before | 11:08 | |
Typically it needs a $/ := nqp::getcallerlex('$/') somewhere | 11:09 | ||
lizmat | well, it's using getlexdyn atm | ||
jnthn | Oh | ||
That may be the problem | |||
Perhaps it's wrongly finding the $/ inside of map internals | |||
lizmat | changing them to getcallerlex did *not* solve the problem | ||
by all means, I'll do this again | |||
jnthn | OK, I can look more deeply into it this afty :) | 11:10 | |
lizmat | I'll push the getcallerlex fix that FROGGS suggested yesterday just in case | 11:11 | |
ok | |||
? | |||
jnthn | Sure | ||
dalek | kudo/nom: ec3af56 | lizmat++ | src/core/ (25 files): Remove trailing open curlies from comments They were bothering me for some time already :-) |
||
lizmat | jnthn: nqp::getlexrelcaller(nqp::ctxcaller(nqp::ctx()), '$/') right ? | 11:12 | |
jnthn | Oh no | ||
It's not that op | |||
lizmat | ok, that may be the issue then, trying now | 11:13 | |
travis-ci | Rakudo build passed. Elizabeth Mattijsen 'Make AT-POS on 1,2,3dim arrays about 20x faster | ||
travis-ci.org/rakudo/rakudo/builds/171944546 github.com/rakudo/rakudo/compare/4...b7bcb42e76 | |||
jnthn | getlexcaller iirc | ||
github.com/rakudo/rakudo/blob/70a3...rol.pm#L98 | 11:14 | ||
Like that | |||
lizmat | gotcha | 11:16 | |
jnthn: no dice | 11:20 | ||
is there something against passing what nqp::getlexcaller returns as an argument ? | |||
$ 6 'for 42 { "foo".match(/foo/); say $/ }' | 11:21 | ||
Nil | |||
$ 6 'if 42 { "foo".match(/foo/); say $/ }' | |||
「foo」 | |||
it's definitely something related to for / map | |||
m: $ 6 'map { "foo".match(/foo/); say $/ }, 42' | |||
Nil | |||
camelia | rakudo-moar feb7bc: OUTPUT«===SORRY!=== Error while compiling <tmp>Two terms in a rowat <tmp>:1------> $⏏ 6 'map { "foo".match(/foo/); say $/ },  expecting any of: infix infix stopper statement end statement modif…» | ||
lizmat | $ 6 'map { "foo".match(/foo/); say $/ }, 42' | 11:22 | |
Nil | |||
star: map { "foo".match(/foo/); say $/ }, 42 | |||
camelia | star-m 2016.04: OUTPUT«「foo」» | ||
lizmat | jnthn: fwiw, that code runs IterateOneWithoutPhasers.sink-all : github.com/rakudo/rakudo/blob/nom/...ds.pm#L440 | 11:49 | |
perhaps the problem is related to the "Cannot reference undeclared local '__lowered_lex_3225'" issue | 11:50 | ||
fwiw, removing that block, replacing the nqp::while($running), with while $running {} doesn't fix the issue | 11:51 | ||
travis-ci | Rakudo build passed. Elizabeth Mattijsen 'Remove trailing open curlies from comments | 11:59 | |
travis-ci.org/rakudo/rakudo/builds/171953993 github.com/rakudo/rakudo/compare/f...3af5659942 | |||
dalek | kudo/nom: 8e79509 | lizmat++ | src/core/Str.pm: Replace getlexdyn by getlexcaller As that appears to be the correct nqp::op invocation for passing $/ around: irclog.perlgeek.de/perl6-dev/2016-...i_13491020 |
12:09 | |
lizmat | still: $ 6 'for 42 { "foo".match(/foo/); say $/ }' | 12:10 | |
Nil | |||
timotimo | when you're passing around $/, does it accidentally get deconted somewhere? | 12:11 | |
so you can't assign into it no more? | |||
lizmat | wouldn't that just cause an exception then ? | 12:12 | |
timotimo | probably, yeah | ||
lizmat | also: my test file in which I did the refactor | 12:13 | |
which contains functional equivalent of code, with slightly different names | |||
works fine :-( | |||
timotimo | is something going in between the match method and the caller so we get the wrong caller? | 12:14 | |
lizmat | gist.github.com/lizmat/86611194472...ad393ea9a7 # madch.pl | ||
run that, and you see it works ok there | |||
development is on that file | 12:15 | ||
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 | ||
do s:g/IDERATOR/ITERATOR/ and s:g/madch/match/ | |||
and presto | |||
saves me ~ 2 minutes trying every change | |||
timotimo | yeah | 12:17 | |
dalek | kudo/nom: 4bd09a7 | lizmat++ | / (4 files): Split off array operators into a separate file The source of Array.pm is becoming unwieldy, and will be more so before long. So split off stuff that can be split off easily. This requires re-running Configure.pl, alas. |
12:41 | |
lizmat | actually, only on the JVM | 12:50 | |
timotimo | what is? | 12:55 | |
oh, btw, were you considering generating the source for 2dim and 3dim array stuff? | |||
[Coke] | nine++ | ||
lizmat | timotimo: when I have more clarity on that, but yes, that is an option | 12:56 | |
[Coke] | lizmat++ | 12:57 | |
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 | 12:59 | |
lizmat | and they would take different numbers of parameters, which would make generating a bit awkward | 13:00 | |
but still :-) | |||
jnthn dislikes generating code generally | 13:01 | ||
So if it's borderline worth it, please don't | 13:02 | ||
timotimo | OK | ||
dalek | kudo/nom: fb0c648 | lizmat++ | tools/build/ (2 files): Extract settings JVM file list into separate file So that we don't have to do a re-configure if we change the list of files of which the settings consists. |
13:07 | |
jnthn | Righty, five minutes break and then I'll have Perl 6 shaped tuits :) | 13:25 | |
viki | \o/ | ||
lizmat | yeah! | 13:29 | |
masak .oO( array3d shaped tuits ) :P | 13:30 | ||
lizmat hopes for Str.match refactor saving tuits, actually | 13:31 | ||
gfldex .oO( www.eski.io/demo/mill-crimson/wp-co...rs-2-p.jpg ) | |||
dalek | kudo/nom: b5302b8 | lizmat++ | / (5 files): Split off the TypedArray role into its own file Also make sure we close the Array class in array_operators.pm, as we want the TypedArray role to only be visible inside the Array class |
13:35 | |
jnthn | lizmat: So, the match/map problem is still there? I just nead HEAD of Rakudo? | 13:40 | |
lizmat | yup | ||
jnthn | OK, building latest everything :) | ||
lizmat | gist.github.com/lizmat/86611194472...ad393ea9a7 # madch.pl | ||
that's my dev code, that works ok outside of the setting | |||
jnthn | my $cursor-init := Cursor.^can("!cursor_init").AT-POS(0); | 13:41 | |
Any reason not just Cursor.^lookup('!cursor_init') ? | |||
And similar for others bloew | |||
*below | |||
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» | ||
jnthn | m: for 42 { say "foo".match(/foo/); say $/ } | ||
camelia | rakudo-moar fb0c64: OUTPUT«「foo」Nil» | ||
jnthn | star: for 42 { say "foo".match(/foo/); say $/ } | ||
camelia | star-m 2016.04: OUTPUT«「foo」「foo」» | ||
jnthn | bisectable: for 42 { say "foo".match(/foo/); say $/ } | ||
bisectable6 | jnthn, Bisecting by output (old=2015.12 new=fb0c648) because on both starting points the exit code is 0 | ||
jnthn, bisect log: gist.github.com/6e5d51c186915835d1...b191049a20 | |||
jnthn, (2016-10-23) github.com/rakudo/rakudo/commit/b7...e8f5c77f41 | |||
lizmat | it's the initial refactor commit, that was already known | 13:43 | |
jnthn: no particular reason to use ^can over ^lookup, is ^lookup faster ? | |||
jnthn | Yes | 13:45 | |
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 | ||
So it's more GC overhead and more work to use .^can for this | |||
lizmat | ok, will fix and test | ||
jnthn | $ ./perl6-m -e '<foo>.map({ .match(/foo/); say $/ })' | 14:00 | |
「foo」 | |||
m: <foo>.map({ .match(/foo/); say $/ }) | 14:01 | ||
camelia | rakudo-moar b5302b: OUTPUT«Nil» | ||
jnthn | m: for ^2 { <foo>.map({ .match(/foo/); say $/ }) } | ||
camelia | rakudo-moar b5302b: OUTPUT«NilNil» | ||
jnthn spectests | 14:02 | ||
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* | ||
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 | ||
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 ;) | ||
Will need to re-spectest it though | |||
lizmat | gotcha | ||
jnthn | Anyone else got any major blockers I should take a peek at? | 14:13 | |
Otherwise I'll probably pick off some RTs | 14:14 | ||
lizmat | I had something else yesterday... | ||
hmmmm.... stack overflowed I guess :-( | 14:16 | ||
jnthn | np :) | ||
jnthn has no shortage of things that want attention | |||
dalek | kudo/nom: ba152bd | jnthn++ | src/core/Cool.pm: Fix handling of $/ in some uses of `.match`. This of note fixes the use of `match` in a `for` loop, which was failing to set `$/`. This happened when `match` became a multi. |
14:19 | |
jnthn | lizmat: Will you add a test for that or should I? | ||
lizmat | argh: I had missed the proto :-( | 14:20 | |
I will add tests as penance :-) | |||
jnthn | Thanks! :) | ||
I'll go golf some supply code that causes a GC abort as a...reward? | 14:21 | ||
lizmat | :-) yes, please... | ||
also: HARNESS_TYPE=6 make spectest still breaks could be an attention point | |||
dalek | kudo/nom: 0245eb8 | lizmat++ | src/core/ (3 files): Use much cheaper ^lookup instead of ^can, jnthn++ |
14:22 | |
kudo/nom: cb8f783 | lizmat++ | / (5 files): Seperate the ShapedArray role into a separate file |
|||
japhb | Since jnthn asked earlier -- jnthn, nine: 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 | |
As jonathanstowe surmised, it appears related to rt.perl.org/Ticket/Display.html?id=127858 | |||
jnthn | m: gist.github.com/jnthn/5f7801deffdf...957423312c | 14:47 | |
camelia | rakudo-moar cb8f78: OUTPUT«(signal ABRT)okokokokokokokokokokokokok» | ||
jnthn | There's an interesting golf | 14:49 | |
gfldex | is .^lookup as official as .^can ? | 14:57 | |
[Coke] | gfldex: it's in t/spec .. | 14:59 | |
viki | .^can gets a company car, but .^lookup always wears ties... I'd say they're equally official ^_^ | 15:05 | |
gfldex | what is the difference between .^can and .^lookup ? | 15:07 | |
lizmat | gfldex: the way I understand it is that ^lookup doesn't walk .mro | 15:09 | |
it just checks in the class itself | 15:10 | ||
jnthn | lookup will walk MRO too | 15:12 | |
dalek | kudo/nom: 221633a | lizmat++ | / (6 files): Create Shaped(1|2|3)Array roles / files So it will be easier to see the differences and similarities. If the similarities prove to be sufficiently similar, these new roles may well become generated. |
||
jnthn | It just stops when it finds a result | ||
jnthn | Whereas can keeps going, and makes a list of all of the possible results | ||
lizmat | ah, TIL something (again) | 15:13 | |
dalek | ast: 14358e2 | lizmat++ | S05-match/arrayhash.t: Add test for smartmatching finite vs infinite Seq Also add some comments on the existing tests |
15:18 | |
ast: 819db21 | lizmat++ | S05-modifier/continue.t: Add test for $/ not being set inside for { } issue |
|||
|Tux| re-runs timing after seeing this many messages from dalek … | 15:46 | ||
lizmat | [Tux]: won't be much difference, I'm afraid | 15:47 | |
|Tux| | still curious | ||
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» | ||
lizmat | aka, a 2 element shaped array with sizable arrays in them | ||
|Tux| | This is Rakudo version 2016.10-121-g221633a built on MoarVM version 2016.10-27-g196361f | 15:54 | |
csv-ip5xs 3.143 | |||
test 14.227 | |||
test-t 7.181 | |||
csv-parser 15.423 | |||
jnthn | lizmat: Yeah, would expect it to | 15:55 | |
lizmat | this I did not break :-) | 15:56 | |
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:25 | |
timotimo | sounds like a quite involved bug | 16:28 | |
jnthn | Yeah | ||
I thought I could put in a band-aid fix in the meantime | |||
Then realized it ain't gonna fly | |||
So, guess I've some design work to be doing | 16:29 | ||
dalek | kudo/nom: 07eeea8 | jnthn++ | src/core/Exception.pm: Add a couple of missing CX:: classes. |
16:35 | |
ast: d67b3ba | jnthn++ | S04-exception-handlers/control.t: Cover CX::Emit and CX::Done. |
16:36 | ||
jnthn | Some bonus work done while investigating and bug-hunting :) | ||
afk for a bit | |||
viki | m: gist.github.com/zoffixznet/14ae655...2b28969408 | 16:39 | |
camelia | rakudo-moar 221633: OUTPUT«#<failed match>» | ||
viki | Interesting it's a #<failed match> and not Nil :/ | ||
Oh, that's what subparse always returns :/ | |||
star: gist.github.com/zoffixznet/14ae655...2b28969408 | |||
camelia | star-m 2016.04: OUTPUT«#<failed match>» | ||
viki | OK then | 16:40 | |
lizmat | viki: yeah, that's ultimately the difference between parse and subparse | 16:41 | |
travis-ci | Rakudo build errored. Elizabeth Mattijsen 'Create Shaped(1|2|3)Array roles / files | 17:12 | |
travis-ci.org/rakudo/rakudo/builds/172011516 github.com/rakudo/rakudo/compare/c...1633ac8221 | |||
buggable | [travis build above] ✓ All failures are due to timeout (1), missing build log (0), or GitHub connectivity (0). | ||
dalek | p: 25cee34 | (Pawel Murias)++ | src/vm/js/ (2 files): [js] CPS support is currently broken, so I remove the parts of it that cause performance problems. 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 | |
p: fe038b8 | (Pawel Murias)++ | src/vm/js/nqp-runtime/ (4 files): [js] Make multi caches be serialized as null as they get recreated. |
|||
p: ad1a799 | (Pawel Murias)++ | t/serialization/01-basic.t: Test serialization of a multi cache. |
|||
kudo/nom: d4355cb | lizmat++ | src/core/ShapedArray.pm: Activate the Shaped123Array roles So that we get the efficiency gains of feb7bcb42e76c3c back again. |
19:41 | ||
ast/lexical_module_load: e9205cc | niner++ | / (4 files): Fixup tests for lexical module loading We now need to explicitly use modules if we want to use their symbols and can no longer rely on them being loaded by one of our dependencies. |
19:52 | ||
ast/lexical_module_load: a31614e | niner++ | / (2 files): Test that globals of loaded modules are imported lexically |
|||
kudo/lexical_module_load: 56e4044 | niner++ | / (5 files): Make importing globals from loaded modules lexical Right now if A depends on C:auth<foo> and B depends on C:auth<bar> you cannot use A and B in the same program. Fix this by having not only exported symbols be lexical but also the globals contained in a module. So only A will even have a C that's bound to C:auth<foo>. This means that you have to "use" modules in every scope that accesses those names, 5cdba73 | niner++ | src/Perl6/World.nqp: Fix: use Foo::Bar; class Foo { my Foo::Bar $bar; } not finding Foo::Bar A lexically imported package stub was replaced instead of upgraded when a class of the same name was declared. |
|||
kudo/lexical_module_load: 45d12e0 | niner++ | src/Perl6/ModuleLoader.nqp: Fix: class Foo { use Foo::Bar; my Foo $foo; } not finding Foo The lexically imported "Foo" package stub containing "Bar" shadowed the "Foo" class we're currently declaring. Fix by considering all scopes when looking for existing symbols, not just the one we're importing into. |
|||
kudo/lexical_module_load: 6e5d96a | niner++ | src/Perl6/World.nqp: Fix our scoped nested package swallowed by lexically scoped parent In "use Foo; class Foo::Bar { }" Foo::Bar would be created as child of the lexically imported Foo class and was thus missing from the globals. Previous fixes only handled the case when Foo was a stub package, not when it was a full class. Remove the special case and fix the follow up bug that we now got a duplicate symbol when trying to lexically override classes in the RESTRICTED setting. There's no need to upgrade the main package to a global if we only want to create a lexically scoped child anyway. |
|||
nine | Rebased the lexical_module_load branches to current nom/master. | ||
lizmat | :-) | ||
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:08 | |
lizmat | do you have an idea on the ecosystem fallout ? | 20:10 | |
japhb | nine: While you're waiting on that, do you have desire/cycles to look at rt.perl.org/Ticket/Display.html?id=127858 (which I found out about via github.com/jnthn/oo-monitors/issues/8)? | 20:11 | |
lizmat | and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2016/10/31/...-в-perl-6/ | ||
japhb | lizmat: I literally refreshed 3 minutes ago, thinking "Isn't this about when Liz publishes a new weekly?" :-) | 20:12 | |
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 | ||
[Coke] | pmurias: the latest short blog post was nice, thanks for the update. | 20:27 | |
FROGGS | o/ | 20:33 | |
nine | japhb: that looks....headachy to fix | 20:44 | |
dalek | kudo/nom: 7e534bb | lizmat++ | src/core/Rakudo/Internals.pm: Remove now unused role MatchIterator |
20:46 | |
kudo/nom: 59b4526 | lizmat++ | src/core/Ra (2 files): Abstract the int Range iterator away So we can use it elsewhere |
21:12 | ||
kudo/nom: ba49679 | lizmat++ | src/core/List.pm: Add count-only/bool-only/sink-all If a List is completely reified, we don't need to run through it to find out how many elements, any elements, or just sink the whole thing. |
21:25 | ||
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:36 | |
i still haven't been able to find a/the spot where a line number is actually stored somewhere when being compiled | 21:38 | ||
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 | |
and when that op fails it gets the line number from $/ | |||
MasterDuke | interesting. same for the core settings? | 21:47 | |
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:48 | |
FROGGS | MasterDuke: yes, all Perl 6 code is parsed the same | 21:52 | |
dalek | kudo/nom: d53a905 | lizmat++ | src/core/List.pm: Let List.keys use IntRangeIterator when it can |
21:55 | |
MasterDuke | FROGGS: where would one of those failures be? | 21:57 | |
FROGGS | what failures? | 22:00 | |
MasterDuke | "when the op fails"? | ||
dalek | ast: e0bc46d | lizmat++ | S03-metaops/hyper.t: Fix test expecting a Range rather than a Seq List.keys had a short-cut whereby it would return a Range, rather than a Seq (which one should expect). This has been remedied with d53a90594ce8010d0c and thus the test failed. |
22:01 | |
MasterDuke | ah ha, i may have found something | 22:02 | |
FROGGS | github.com/rakudo/rakudo/blob/nom/....nqp#L1715 | 22:03 | |
MasterDuke | github.com/perl6/nqp/blob/master/s....nqp#L1402 | ||
FROGGS | this is how it is attached to the AST | ||
yes, correct | |||
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 | ast/6.c-errata: 1b62d04 | lizmat++ | S03-metaops/hyper.t: Fix test because of fix in d53a905 List.keys should always return a Seq. It returned a Range if it wasn't lazy. The test depended on this behaviour. Altered to what it should be and marked as "todo" |
||
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 | kudo/nom: 839e523 | lizmat++ | src/core/Shaped1Array.pm: Make Shaped1Array use IntRangeIterator As we know its size in advance |
||
MasterDuke | chatted with timotimo a little bit about it last night | ||
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 | ||
is to make "#line 1 src/core/core_prologue.pm" work | |||
this is the syntax in Perl 5 for setting line number and file name | |||
the core setting file already has that info in there | 22:08 | ||
so, afaics, this needs to be parsed and not ignored as comments | |||
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:10 | |
so what's output is something like: ... in method floor at src/core/Rational.pm line 53 ... | 22:11 | ||
so yeah, i'm trying to figure out how to find/store that info when compiling the setting | 22:12 | ||
lizmat | in Perl6/Grammar.nqp, look for $?FILES ? | 22:14 | |
a year ago I also looked at this... didn't get very far :-( | 22:15 | ||
MasterDuke | uh oh, that doesn't sound promising. do you remember what was the sticking point? | 22:18 | |
lizmat | not at the moment :-( | ||
seen a lot of code since :-( | |||
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! | ||
travis-ci | Rakudo build errored. Elizabeth Mattijsen 'Remove now unused role MatchIterator' | 22:22 | |
travis-ci.org/rakudo/rakudo/builds/172112674 github.com/rakudo/rakudo/compare/d...534bb4c586 | |||
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. | ||
lizmat | good night, #perl6-dev! | 22:41 | |
timotimo | gnite lizmat | 22:42 | |
i don't think we still need to add a nqp::time_n to the end of the alt_nfa_* names | 22:46 | ||
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? | ||
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? | ||
timotimo | no clue, pmurias :( | 22:52 | |
pmurias | MasterDuke: have you solved your problem? | 22:53 | |
timotimo: looking at git history there seems to have been a moar specific if | |||
timotimo | ah | ||
pmurias | MasterDuke: sorry for not noticing the msg | ||
timotimo | turns out we do require that nqp::time_n to be concatenated there | ||
it seems like there's really about 10000 stringified numbers in the thing | 22:54 | ||
probably keys to some hash that has numbered things as keys in it? | 22:55 | ||
pmurias | slightly crazy side project: make MoarVM support WebAssembly | 23:02 | |
s/side project/project/ | 23:03 | ||
then we could compile Perl 6 modules with inline C into MoarVM bytecode (with webassembly mixed in) | 23:07 | ||
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. | ||
timotimo | gist.github.com/timo/63b1ff332bec2...895c579e03 | 23:34 | |
i'm not sure if there's anything to gain in NQPArray's serialization | 23:35 | ||
impressive how many container descriptors are still there | 23:43 | ||
oh, that may be because i didn't actually land the cache for those | 23:44 | ||
because it was still causing problems in the spec tests :( | |||
parameter also has a lot more fields than ContainerDescriptor does | 23:49 | ||
i'm afraid they aren't really sharable :\ |