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