sortiz | \o #perl6 | 00:11 | |
timotimo | yo sortiz | 00:12 | |
how are things? | |||
sortiz | Been very busy at $work, but well. | 00:13 | |
timotimo | sounds good | ||
sortiz | Not so good for my perl6 interests :-/ | 00:15 | |
timotimo | well, works keeps you fed and hopefully happey | 00:16 | |
sortiz | Yep, only with less available time than a month ago. | 00:18 | |
timotimo | right, that's a fair assessment | 00:20 | |
i'm glad you're sticking with us, though :) | |||
sortiz | Thanks timotimo :-) | 00:21 | |
stmuk | does timotimo have a pet tiger? or does the twitter camera lie? | 00:28 | |
timotimo | :D | 00:29 | |
sortiz | .ask lizmat In github.com/rakudo/rakudo/commit/ef...e8cac3R536 I can't understand the meaning of '-1', I'm missing something? | 02:42 | |
yoleaux2 | sortiz: I'll pass your message to lizmat. | ||
Zoffix | A typo? I see $!pos set to -1 maybe it was passed via args in the past. It doesn't compile ATM, sig mismatch | 02:59 | |
sortiz | Yes, I think so. | 03:03 | |
lizmat | sortiz: yes indeed, not a typo but a leftover from some other opt I tried to do | 05:52 | |
yoleaux2 | 02:42Z <sortiz> lizmat: In github.com/rakudo/rakudo/commit/ef...e8cac3R536 I can't understand the meaning of '-1', I'm missing something? | ||
dalek | kudo/nom: 5d11c91 | lizmat++ | src/core/Str.pm: Fix thinko, spotted by sortiz++ |
05:53 | |
kudo/nom: b95bc91 | (Salvador Ortiz)++ | src/core/REPL.pm: Fix Mu handling in REPL Avoid crashing with ===SORRY!=== Type check failed in binding $value; expected Any but got ... For Junction, Mu, etc. |
06:42 | ||
kudo/nom: a8aa181 | lizmat++ | src/core/REPL.pm: Merge pull request #802 from salortiz/patch-1 Fix Mu handling in REPL |
|||
sortiz | Oops! That introduced merge conflicts for awwaiid++ PR#799, sorry | 06:51 | |
dalek | kudo/nom: a344817 | (Zoffix Znet)++ | Configure.pl: Remove non-core dependencies for Perl 5.10-compatible build script The Perl::OSType module did not become a core one until Perl 5.14. To keep the build script working on perl-5.10 systems, we move part of the required functionality from Perl::OSType directly to the build script. Closes #800 |
07:20 | |
rakudo/nom: 6afd0bd | niner++ | Configure.pl: | |||
rakudo/nom: Merge pull request #801 from zoffixznet/fix-perl-5-dependencies | |||
rakudo/nom: | |||
rakudo/nom: Remove non-core dependencies for Perl 5.10-compatible build script | |||
psch | well, the getextype problem seems to be rather straight forward | 07:25 | |
the exception handler we generate seems to prefer invoking getextype with an empty csd, which means we don't pass the args | 07:26 | ||
i'm not sure why indy doesn't complain about that, though | |||
it kinda feels like it should :P | |||
s/seems to prefer/is written to/ # ...or something | 07:27 | ||
it doesn't really have agency i suppose | |||
well, that's not quite right i guess | 07:33 | ||
the handler that invokes getextype is invoked with a NO_ARGS expectation, which means we don't have the extype anymore | |||
and *that* invokes getextype with null | 07:34 | ||
it's a bit unfortunate that the coderef in question doesn't have a name :/ | 07:38 | ||
nine | psch: you can give many of them names easily. | 07:39 | |
psch | nine: how so? | 07:40 | |
nine | psch: for example in src/Perl6/World.nqp there are lines like @compstuff[2] := sub ($orig, $clone) | 07:42 | |
Just change them to @compstuff[2] := sub some_name_you_will_understand ($orig, $clone) | |||
psch | oh right | ||
nine | Perl 6++ | 07:43 | |
psch | hm, the next is in the block of a for | 07:44 | |
m: for ^10 sub foo($a) { } # /o\ | |||
camelia | rakudo-moar 6afd0b: OUTPUTĀ«===SORRY!=== Error while compiling <tmp>ā¤Missing blockā¤at <tmp>:1ā¤------> for ^10ā sub foo($a) { } # /o\ā¤ expecting any of:ā¤ block or pointy blockā¤ infixā¤ infix stopperā¤Ā» | ||
psch | i don't know if that really matters though | ||
i mean, from the invokation of next we continue into the handler attached to the block, right? | 07:46 | ||
and that's presumably the coderef that i'm looking at | 07:47 | ||
i don't think giving that a name is much possible | |||
well, and it wouldn't even help i guess, 'cause it's invisible on a Perl 6 level anyway | |||
oh hmm | 08:01 | ||
i *think* the cr it's dying is in probably one of the nqp::stmts(nqp::handle(...)) thingies in some Seq or other..? | |||
'cause that kinda fits with it happening in a for, doesn't it | |||
nine | could very well be, yes | 08:07 | |
btw. there's also nqp::setcodename which you might use for naming non-sub code refs | |||
Someone must have grinned when introducing an op with that name :) | 08:08 | ||
psch | i'm gonna see if revert 61f3e95e gives me enoughs hints for now | ||
cause, well, if i don't know which CR i need to name... | |||
+ing | |||
nope, doesn't help | 08:19 | ||
i think there was another patch that should've reduced the constant pool, but apparently that wasn't enough for 61f3e95e to become unecessary :/ | |||
hrm, so the method i'm patching into the class still doesn't show up in the coderefs | 09:55 | ||
and i don't why /o\ | |||
well, i do know that it doesn't show up in qbidToCodeRef, but it should because its name starts with "qb_" and then there's numbers after that | 09:56 | ||
and it does exist in the precompiled bc | 09:57 | ||
yeah this is all kind of eh :| | 10:56 | ||
there's clearly some spot that's not introspection that tells the SerializationReader how many methods exist | 10:57 | ||
...probably the .serialized file | |||
hm, or is that just the string heap? | 10:58 | ||
and then there's still the matter of the qb_$array-size method... | 10:59 | ||
[Tux] | This is Rakudo version 2016.06-30-g6afd0bd built on MoarVM version 2016.06 | 12:27 | |
test 16.162 | |||
test-t 9.836 | |||
csv-parser 22.115 | |||
nine | m: role Foo { submethod new() { say self === Foo }; }; Foo.new | 13:37 | |
camelia | rakudo-moar 6afd0b: OUTPUTĀ«Falseā¤Ā» | ||
nine | Is this correct? ^^^ | 13:38 | |
b2gills | m: role Foo { submethod new() { say self ~~ Foo }; }; Foo.new | 13:39 | |
camelia | rakudo-moar 6afd0b: OUTPUTĀ«Trueā¤Ā» | ||
b2gills | m: role Foo { }; say Foo.new === Foo.new # I think it is creating two classes | 13:54 | |
camelia | rakudo-moar 6afd0b: OUTPUTĀ«Falseā¤Ā» | ||
b2gills | m: role Foo { }; say Foo.new.WHAT === Foo.new.WHAT # or not ? | 13:55 | |
camelia | rakudo-moar 6afd0b: OUTPUTĀ«Trueā¤Ā» | ||
lizmat | b2gills: not | 13:57 | |
=== is basically eq with .WHICH | |||
m: role A {}; say A.new.WHICH; say A.new.WHICH | |||
camelia | rakudo-moar 6afd0b: OUTPUTĀ«A|61662320ā¤A|61662384ā¤Ā» | ||
lizmat | m: role A { method WHICH { "42" }}; say Foo.new === Foo.new # Foo has now become a value type | 13:58 | |
camelia | rakudo-moar 6afd0b: OUTPUTĀ«===SORRY!=== Error while compiling <tmp>ā¤Undeclared name:ā¤ Foo used at line 1ā¤ā¤Ā» | ||
lizmat | m: role Foo { method WHICH { "42" }}; say Foo.new === Foo.new # Foo has now become a value type | ||
camelia | rakudo-moar 6afd0b: OUTPUTĀ«Trueā¤Ā» | ||
lizmat | FWIW, rakudo caches any class definition, whether they're made at compile time or at runtime | 13:59 | |
nine | b2gills: can't use ~~ there as I explicitly don't want to match classes that do the role | ||
lizmat | so the punning of the role creates a single class internally | ||
psch | nine: so you're looking for "is this punned"? | 14:05 | |
nine | psch: yes, exactly! | ||
It's for staying backwards compatible when we turn Distribution into a role with a completely different interface. | |||
I want to redirect punning Distribution to some Distribution::Legacy class | 14:06 | ||
psch | m: role R { method new { say ::?CLASS.^name eq 'R' && ::?CLASS.HOW ~~ Metamodel::ClassHOW } }; class C does R { }; C.new; R.new | 14:08 | |
camelia | rakudo-moar 6afd0b: OUTPUTĀ«Falseā¤Trueā¤Ā» | ||
psch | is the best i can think of right now | ||
the name check is kinda iffy, could probably be .WHAT equality instead | 14:09 | ||
eh, maybe not :| | 14:10 | ||
right, can't reach the punned R.WHAT there | 14:11 | ||
'cause we'd have to call new to get it... :) | |||
well, and i suppose in .new itself it's really not useful to check if we have a ClassHOW, 'cause are instantiating right now..? | 14:12 | ||
nine | could be | ||
psch | so, yeah, in the end it's ".^name eq 'R'", which is kinda icky | 14:13 | |
m: role R { }; $_ = R.new.^concretization(R); say $_.HOW.name($_); class C { }; $_ = C.new.^concretization(C); say $_.HOW.name($_) | 14:21 | ||
camelia | rakudo-moar 6afd0b: OUTPUTĀ«Rā¤No concretization found for Cā¤ in any concretization at gen/moar/m-Metamodel.nqp line 3116ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā» | ||
psch | nine: ^^^ that seems to be a proper MOP-y way | ||
m: role R { }; $_ = R.new.^concretization(R); say $_.HOW.name($_); class C does R { }; $_ = C.new.^concretization(R); say $_.HOW.name($_) | 14:22 | ||
camelia | rakudo-moar 6afd0b: OUTPUTĀ«Rā¤Rā¤Ā» | ||
nine | Currently I'm fighting with Stage parse : This representation (Null) does not support associative access (for type VMNull) | ||
even with the simple name check :/ | |||
psch | hmm | ||
well, i do retract my suggestion above vOv | 14:23 | ||
m: role R { method new { $_ = ::?CLASS.^concretization(::?CLASS); say $_.HOW.name($_) } }; R.new; class C does R { }; C.new | |||
camelia | rakudo-moar 6afd0b: OUTPUTĀ«No concretization found for Rā¤ in any concretization at gen/moar/m-Metamodel.nqp line 3116ā¤ in method new at <tmp> line 1ā¤ in any at gen/moar/m-Metamodel.nqp line 1736ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā» | ||
psch | that only works after .new i suspect | 14:24 | |
b2gills | m: role Foo { use nqp; my $cmp; method is-Foo { $cmp := Foo.new.WHAT if $cmp === Any; self.WHAT =:= $cmp }}; class Bar does Foo {}; say Foo.new.is-Foo; say Bar.new.is-Foo | 14:47 | |
camelia | rakudo-moar 6afd0b: OUTPUTĀ«Trueā¤Falseā¤Ā» | ||
b2gills | ( ignore the ļ½¢use nqpļ½£ that's a holdover from a previous attempt ) | 14:49 | |
dalek | kudo/ugexe-dist-interface: fd65fa5 | niner++ | / (5 files): Fix backwards compatibility issues with repository versions < 2 |
14:51 | |
kudo/ugexe-dist-interface: fc8c7af | ugexe++ | src/core/CompUnit/Repository/Installation.pm: Fix uninstall |
|||
kudo/ugexe-dist-interface: a6d71f3 | niner++ | / (9 files): Merge branch 'dist-interface' of git://github.com/ugexe/rakudo into ugexe-dist-interface |
|||
kudo/ugexe-dist-interface: 21eff9e | niner++ | src/core/Distribution.pm: Fix backwards compatibility with installers using the old Distribution class This allows for installing modules with an unmodified panda. |
14:52 | ||
kudo/nom: 0e4a643 | lizmat++ | src/core/Str.pm: Fix for RT #128481 |
15:34 | ||
Zoffix | nine, is rakudo/ugexe-dist-interface very substantial work? As in, will I be wasting my time if I attempt to fix RT#128457 ( rt.perl.org/Ticket/Display.html?id=128457 ) ? | 15:58 | |
It's not precomp, despite the tag, but it something to do with including a P6 module that has deps with a Perl 5 module. | 15:59 | ||
dalek | rakudo/nom: da5278a | lizmat++ | src/core/Array.pm: | 16:18 | |
rakudo/nom: Implement Array.cow (for copy-on-write) | |||
rakudo/nom: | |||
rakudo/nom: This is basically just to get it out there and may be revoked at any | |||
rakudo/nom: time before the next release. | |||
rakudo/nom: | |||
rakudo/nom: It basically creates a copy of Array with aliases to the values: | |||
rakudo/nom: | |||
rakudo/nom: my @a = ^10; | |||
rakudo/nom: my @b = @a.cow; # values are shared | |||
rakudo/nom: @b[5] = 42; # element #5 no longer shared | |||
rakudo/nom: | |||
rakudo/nom: This as a result of a question at The Perl Conference: | |||
rakudo/nom: Can you do "Copy-On-Write" in Perl 6? | |||
lizmat | afk& | 16:23 | |
jnthn | I'd expect that to need my @b := @a.cow; since assignment is copying by definition... | 16:43 | |
I'm not sure I understand the patch either. It *looks* like it's doing near enough exactly what "my @b = my @ = @a" would do | 16:46 | ||
Meaning that the above program would behave the very same if the `.cow` method call wasn't made there | |||
And just use more memory while doing the extra copy | 16:47 | ||
Array assignment already copies values and gives fresh containers, though... | |||
Zoffix | Turns out a Perl 5 module isn't even needed for this bug, it just uncovers it. It just needs a module with deps to be used by a module one's `use`ing and precompilation hides the issue. With `no precomipilation` the bug appears even without a Perl 5 module: gist.github.com/zoffixznet/5b1740b...63abbc3acf | 16:54 | |
dalek | p: d647a3f | (Pawel Murias)++ | src/vm/js/Compiler.nqp: [js] Disable compiling things using the as method calling convention, we currently don't use it to speedup stuff and the optimalization effort will for now go in a different direction. |
18:15 | |
nine | Zoffix: ugexe-dist-interface changes installation code, nothing about module loading | 18:40 | |
Zoffix | Cool. Then I'll try to fix that bug. | ||
nine | ++Zoffix | 18:41 | |
dalek | kudo/ugexe-dist-interface: f6a8e6c | niner++ | src/core/Distribution.pm: Fix backwards compatibility with installers using the old Distribution class This allows for installing modules with an unmodified panda. |
19:07 | |
kudo/nom: d4a0e01 | niner++ | src/core/CompUnit/PrecompilationRepository.pm: Don't try to precompile "no precompilation" modules twice. No reason to try precompiling again, when the first time was already aborted due to "no precompilation" |
19:17 | ||
timotimo | that seems like it should be a good performance win | ||
nine | I sure hope so :) | 19:22 | |
Noticed it while having a look at RT #128457 | |||
Unfortunately no idea what the cause of the actual bug might be | |||
japhb | Is there a known precompilation bug regarding deep class namespaces aren't exported properly? I just went through adding a new namespace level near the top of my project, so Foo became RPG::Foo and X::Foo::Bar became X::RPG::Foo::Bar, and now my exception tests fail with messages like "Could not find symbol &Bar" when I allow precompilation, but succeed if I 'no precompilation;'. Sound familiar? | 22:06 | |
Zoffix | yup | 22:16 | |
Pretty sure that's the one I'm trying to debug right now. | 22:17 | ||
japhb | Oh! Well, um ... good? :-) | 22:28 | |
Zoffix | "right now" meaning while eating, watching TV, playing video games, and learning how the CompUnit stuff works, so don't think I'll fix it in the next hour or so :P | 22:35 | |
awwaiid | .tell soritz I fixed the PR :) | 22:51 | |
yoleaux2 | awwaiid: I'll pass your message to soritz. | ||
japhb | Zoffix: Well, for the mean time, I can just eat the performance loss of 'no precompilation;' -- plus working around expecting transitive imports through the now non-precompiled module. Minor pain, but at least I can progress. | 23:03 | |
Zoffix | japhb, it's not present in 2016.04 FWIW | 23:04 |