Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-06-25

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

All times shown according to UTC.

Time Nick Message
00:10 sortiz joined #perl6-dev
00:10 sno joined #perl6-dev
00:11 sortiz \o #perl6
00:12 timotimo yo sortiz
00:12 timotimo how are things?
00:13 sortiz Been very busy at $work, but well.
00:13 timotimo sounds good
00:15 sortiz Not so good for my perl6 interests :-/
00:16 timotimo well, works keeps you fed and hopefully happey
00:18 sortiz Yep, only with less available time than a month ago.
00:20 timotimo right, that's a fair assessment
00:20 timotimo i'm glad you're sticking with us, though :)
00:21 sortiz Thanks timotimo :-)
00:22 [Sno] joined #perl6-dev
00:28 stmuk does timotimo have a pet tiger? or does the twitter camera lie?
00:29 timotimo :D
01:48 ilbot3 joined #perl6-dev
01:48 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today
02:25 sno joined #perl6-dev
02:40 skids joined #perl6-dev
02:42 sortiz .ask lizmat In https://github.com/rakudo/rakudo/commit/efbfdaa74d2055a01d5dbde69c16fa7a8030aa14#diff-4ce1542a6f014c9a003fe452abe8cac3R536 I can't understand the meaning of '-1', I'm missing something?
02:42 yoleaux2 sortiz: I'll pass your message to lizmat.
02:59 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
03:01 cognominal joined #perl6-dev
03:03 sortiz Yes, I think so.
03:19 Zoffix left #perl6-dev
05:52 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 https://github.com/rakudo/rakudo/commit/efbfdaa74d2055a01d5dbde69c16fa7a8030aa14#diff-4ce1542a6f014c9a003fe452abe8cac3R536 I can't understand the meaning of '-1', I'm missing something?
05:53 dalek rakudo/nom: 5d11c91 | lizmat++ | src/core/Str.pm:
05:53 dalek rakudo/nom: Fix thinko, spotted by sortiz++
05:53 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5d11c914b4
06:42 dalek rakudo/nom: b95bc91 | (Salvador Ortiz)++ | src/core/REPL.pm:
06:42 dalek rakudo/nom: Fix Mu handling in REPL
06:42 dalek rakudo/nom:
06:42 dalek rakudo/nom: Avoid crashing with
06:42 dalek rakudo/nom: ===SORRY!===
06:42 dalek rakudo/nom: Type check failed in binding $value; expected Any but got ...
06:42 dalek rakudo/nom: For Junction, Mu, etc.
06:42 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b95bc913e0
06:42 dalek rakudo/nom: a8aa181 | lizmat++ | src/core/REPL.pm:
06:42 dalek rakudo/nom: Merge pull request #802 from salortiz/patch-1
06:42 dalek rakudo/nom:
06:42 dalek rakudo/nom: Fix Mu handling in REPL
06:42 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a8aa18168b
06:51 sortiz Oops! That introduced merge conflicts for awwaiid++ PR#799, sorry
07:20 dalek rakudo/nom: a344817 | (Zoffix Znet)++ | Configure.pl:
07:20 dalek rakudo/nom: Remove non-core dependencies for Perl 5.10-compatible build script
07:20 dalek rakudo/nom:
07:20 dalek rakudo/nom: The Perl::OSType module did not become a core one until Perl 5.14.
07:20 dalek rakudo/nom: To keep the build script working on perl-5.10 systems, we move
07:20 dalek rakudo/nom: part of the required functionality from Perl::OSType directly
07:20 dalek rakudo/nom: to the build script.
07:20 dalek rakudo/nom:
07:20 dalek rakudo/nom: Closes #800
07:20 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a344817c57
07:20 dalek rakudo/nom: 6afd0bd | niner++ | Configure.pl:
07:20 dalek rakudo/nom: Merge pull request #801 from zoffixznet/fix-perl-5-dependencies
07:20 dalek rakudo/nom:
07:20 dalek rakudo/nom: Remove non-core dependencies for Perl 5.10-compatible build script
07:25 psch well, the getextype problem seems to be rather straight forward
07:26 psch the exception handler we generate seems to prefer invoking getextype with an empty csd, which means we don't pass the args
07:26 psch i'm not sure why indy doesn't complain about that, though
07:26 psch it kinda feels like it should :P
07:27 psch s/seems to prefer/is written to/ # ...or something
07:27 psch it doesn't really have agency i suppose
07:33 psch well, that's not quite right i guess
07:33 psch the handler that invokes getextype is invoked with a NO_ARGS expectation, which means we don't have the extype anymore
07:34 psch and *that* invokes getextype with null
07:38 psch it's a bit unfortunate that the coderef in question doesn't have a name :/
07:39 nine psch: you can give many of them names easily.
07:40 psch nine: how so?
07:42 nine psch: for example in src/Perl6/World.nqp there are lines like @compstuff[2] := sub ($orig, $clone)
07:42 nine Just change them to @compstuff[2] := sub some_name_you_will_understand ($orig, $clone)
07:42 psch oh right
07:43 nine Perl 6++
07:44 psch hm, the next is in the block of a for
07:44 psch m: for ^10 sub foo($a) { } # /o\
07:44 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␤»
07:44 psch i don't know if that really matters though
07:46 psch i mean, from the invokation of next we continue into the handler attached to the block, right?
07:47 psch and that's presumably the coderef that i'm looking at
07:47 psch i don't think giving that a name is much possible
07:47 psch well, and it wouldn't even help i guess, 'cause it's invisible on a Perl 6 level anyway
07:54 lizmat joined #perl6-dev
07:54 hankache joined #perl6-dev
08:01 psch oh hmm
08:01 psch i *think* the cr it's dying is in probably one of the nqp::stmts(nqp::handle(...)) thingies in some Seq or other..?
08:01 psch 'cause that kinda fits with it happening in a for, doesn't it
08:02 AlexDaniel joined #perl6-dev
08:07 nine could very well be, yes
08:07 nine btw. there's also nqp::setcodename which you might use for naming non-sub code refs
08:08 nine 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
08:08 psch cause, well, if i don't know which CR i need to name...
08:08 psch +ing
08:19 psch nope, doesn't help
08:19 psch i think there was another patch that should've reduced the constant pool, but apparently that wasn't enough for 61f3e95e to become unecessary :/
08:46 brrt joined #perl6-dev
08:59 FROGGS joined #perl6-dev
09:11 hankache joined #perl6-dev
09:13 [Sno] joined #perl6-dev
09:35 RabidGravy joined #perl6-dev
09:55 psch hrm, so the method i'm patching into the class still doesn't show up in the coderefs
09:55 psch and i don't why /o\
09:56 psch 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:57 psch and it does exist in the precompiled bc
10:27 Ulti joined #perl6-dev
10:56 psch yeah this is all kind of eh :|
10:57 psch there's clearly some spot that's not introspection that tells the SerializationReader how many methods exist
10:57 psch ...probably the .serialized file
10:58 psch hm, or is that just the string heap?
10:59 psch and then there's still the matter of the qb_$array-size method...
12:27 [Tux] This is Rakudo version 2016.06-30-g6afd0bd built on MoarVM version 2016.06
12:27 [Tux] test            16.162
12:27 [Tux] test-t           9.836
12:27 [Tux] csv-parser      22.115
13:37 nine m: role Foo { submethod new() { say self === Foo }; }; Foo.new
13:37 camelia rakudo-moar 6afd0b: OUTPUT«False␤»
13:38 nine Is this correct? ^^^
13:39 b2gills m: role Foo { submethod new() { say self ~~ Foo }; }; Foo.new
13:39 camelia rakudo-moar 6afd0b: OUTPUT«True␤»
13:46 d4l3k_ joined #perl6-dev
13:51 |Tux| joined #perl6-dev
13:52 retupmoca joined #perl6-dev
13:52 b2gills joined #perl6-dev
13:53 hoelzro joined #perl6-dev
13:54 b2gills m: role Foo { }; say Foo.new === Foo.new # I think it is creating two classes
13:54 camelia rakudo-moar 6afd0b: OUTPUT«False␤»
13:55 b2gills m: role Foo { }; say Foo.new.WHAT === Foo.new.WHAT # or not ?
13:55 camelia rakudo-moar 6afd0b: OUTPUT«True␤»
13:57 lizmat b2gills: not
13:57 lizmat === is basically eq with .WHICH
13:57 lizmat m: role A {}; say A.new.WHICH; say A.new.WHICH
13:57 camelia rakudo-moar 6afd0b: OUTPUT«A|61662320␤A|61662384␤»
13:58 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␤␤»
13:58 lizmat m: role Foo { method WHICH { "42" }}; say Foo.new === Foo.new  # Foo has now become a value type
13:58 camelia rakudo-moar 6afd0b: OUTPUT«True␤»
13:59 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
13:59 lizmat so the punning of the role creates a single class internally
14:05 psch nine: so you're looking for "is this punned"?
14:05 nine psch: yes, exactly!
14:05 nine It's for staying backwards compatible when we turn Distribution into a role with a completely different interface.
14:06 nine I want to redirect punning Distribution to some Distribution::Legacy class
14:08 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␤»
14:08 psch is the best i can think of right now
14:09 psch the name check is kinda iffy, could probably be .WHAT equality instead
14:10 psch eh, maybe not :|
14:11 psch right, can't reach the punned R.WHAT there
14:11 psch 'cause we'd have to call new to get it... :)
14:12 psch 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
14:13 psch so, yeah, in the end it's ".^name eq 'R'", which is kinda icky
14:21 psch 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␤␤»
14:21 psch nine: ^^^ that seems to be a proper MOP-y way
14:22 psch 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␤»
14:22 nine Currently I'm fighting with Stage parse      : This representation (Null) does not support associative access (for type VMNull)
14:22 nine even with the simple name check :/
14:22 psch hmm
14:23 psch well, i do retract my suggestion above vOv
14:23 psch m: role R { method new { $_ = ::?CLASS.^concretization(::?CLASS); say $_.HOW.name($_) } }; R.new; class C does R { }; C.new
14:23 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␤␤»
14:24 psch that only works after .new i suspect
14:47 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␤»
14:49 b2gills ( ignore the 「use nqp」 that's a holdover from a previous attempt )
14:51 dalek rakudo/ugexe-dist-interface: fd65fa5 | niner++ | / (5 files):
14:51 dalek rakudo/ugexe-dist-interface: Fix backwards compatibility issues with repository versions < 2
14:51 dalek rakudo/ugexe-dist-interface: review: https://github.com/rakudo/rakudo/commit/fd65fa58f5
14:51 dalek rakudo/ugexe-dist-interface: fc8c7af | ugexe++ | src/core/CompUnit/Repository/Installation.pm:
14:51 dalek rakudo/ugexe-dist-interface: Fix uninstall
14:51 dalek rakudo/ugexe-dist-interface: review: https://github.com/rakudo/rakudo/commit/fc8c7afc1d
14:51 dalek rakudo/ugexe-dist-interface: a6d71f3 | niner++ | / (9 files):
14:51 dalek rakudo/ugexe-dist-interface: Merge branch 'dist-interface' of git://github.com/ugexe/rakudo into ugexe-dist-interface
14:51 dalek rakudo/ugexe-dist-interface: review: https://github.com/rakudo/rakudo/commit/a6d71f37fa
14:52 dalek rakudo/ugexe-dist-interface: 21eff9e | niner++ | src/core/Distribution.pm:
14:52 dalek rakudo/ugexe-dist-interface: Fix backwards compatibility with installers using the old Distribution class
14:52 dalek rakudo/ugexe-dist-interface:
14:52 dalek rakudo/ugexe-dist-interface: This allows for installing modules with an unmodified panda.
14:52 dalek rakudo/ugexe-dist-interface: review: https://github.com/rakudo/rakudo/commit/21eff9ea20
15:24 lizmat joined #perl6-dev
15:34 dalek rakudo/nom: 0e4a643 | lizmat++ | src/core/Str.pm:
15:34 dalek rakudo/nom: Fix for RT #128481
15:34 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0e4a6434d6
15:40 skids joined #perl6-dev
15:57 Zoffix joined #perl6-dev
15:58 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 ( https://rt.perl.org/Ticket/Display.html?id=128457 ) ?
15:59 Zoffix 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.
16:18 dalek rakudo/nom: da5278a | lizmat++ | src/core/Array.pm:
16:18 dalek rakudo/nom: Implement Array.cow (for copy-on-write)
16:18 dalek rakudo/nom:
16:18 dalek rakudo/nom: This is basically just to get it out there and may be revoked at any
16:18 dalek rakudo/nom: time before the next release.
16:18 dalek rakudo/nom:
16:18 dalek rakudo/nom: It basically creates a copy of Array with aliases to the values:
16:18 dalek rakudo/nom:
16:18 dalek rakudo/nom:   my @a = ^10;
16:18 dalek rakudo/nom:   my @b = @a.cow;   # values are shared
16:18 dalek rakudo/nom:   @b[5] = 42;       # element #5 no longer shared
16:18 dalek rakudo/nom:
16:18 dalek rakudo/nom: This as a result of a question at The Perl Conference:
16:18 dalek rakudo/nom:   Can you do "Copy-On-Write" in Perl 6?
16:23 lizmat afk&
16:38 hankache joined #perl6-dev
16:43 jnthn I'd expect that to need my @b := @a.cow; since assignment is copying by definition...
16:46 jnthn 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 jnthn Meaning that the above program would behave the very same if the `.cow` method call wasn't made there
16:47 jnthn And just use more memory while doing the extra copy
16:47 jnthn Array assignment already copies values and gives fresh containers, though...
16:54 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: https://gist.github.com/zoffixznet/5b1740bf2ba00bc2f6a44263abbc3acf
18:15 dalek nqp: d647a3f | (Pawel Murias)++ | src/vm/js/Compiler.nqp:
18:15 dalek 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 dalek nqp: review: https://github.com/perl6/nqp/commit/d647a3f67d
18:15 pmurias joined #perl6-dev
18:40 nine Zoffix: ugexe-dist-interface changes installation code, nothing about module loading
18:40 Zoffix Cool. Then I'll try to fix that bug.
18:41 nine ++Zoffix
19:03 pmurias_ joined #perl6-dev
19:07 dalek rakudo/ugexe-dist-interface: f6a8e6c | niner++ | src/core/Distribution.pm:
19:07 dalek rakudo/ugexe-dist-interface: Fix backwards compatibility with installers using the old Distribution class
19:07 dalek rakudo/ugexe-dist-interface:
19:07 dalek rakudo/ugexe-dist-interface: This allows for installing modules with an unmodified panda.
19:07 dalek rakudo/ugexe-dist-interface: review: https://github.com/rakudo/rakudo/commit/f6a8e6c415
19:17 dalek rakudo/nom: d4a0e01 | niner++ | src/core/CompUnit/PrecompilationRepository.pm:
19:17 dalek rakudo/nom: Don't try to precompile "no precompilation" modules twice.
19:17 dalek rakudo/nom:
19:17 dalek rakudo/nom: No reason to try precompiling again, when the first time was already
19:17 dalek rakudo/nom: aborted due to "no precompilation"
19:17 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d4a0e01907
19:17 timotimo that seems like it should be a good performance win
19:22 nine I sure hope so :)
19:22 nine Noticed it while having a look at RT #128457
19:22 nine Unfortunately no idea what the cause of the actual bug might be
19:39 japhb joined #perl6-dev
20:11 japhb joined #perl6-dev
22:06 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:16 Zoffix yup
22:17 Zoffix Pretty sure that's the one I'm trying to debug right now.
22:28 japhb Oh!  Well, um ... good?  :-)
22:35 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:51 awwaiid .tell soritz I fixed the PR :)
22:51 yoleaux2 awwaiid: I'll pass your message to soritz.
23:03 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:04 Zoffix japhb, it's not present in 2016.04 FWIW

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