Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2014-03-09

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:00 tadzik isn't the second callable in a scalar container?
00:00 TimToady m: (my $x = 42) += 1; say $x
00:01 camelia rakudo-moar 1aeb7c: OUTPUT«43␤»
00:01 TimToady that's returning the ccontainer
00:01 TimToady m: (my &x = {}) = sub foo () {}
00:01 camelia rakudo-moar 1aeb7c: OUTPUT«Type check failed in assignment to '&x'; expected 'Callable' but got 'Hash'␤  in block  at /tmp/abw2KRcOLr:1␤␤»
00:01 jnthn r: (my $x = 42) += 1; say $x
00:01 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«43␤»
00:01 tadzik oh wow
00:01 tadzik r: my &x = Callable
00:01 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c: ( no output )
00:01 camelia ..rakudo-moar 1aeb7c: OUTPUT«Type check failed in assignment to '&x'; expected 'Callable' but got 'Callable'␤  in block  at /tmp/tmpfile:1␤␤»
00:01 jnthn It's meant to be returning the container
00:01 TimToady so assignment to &x isn't returning the container?
00:02 TimToady to my &x that is
00:02 tadzik there, golfed it :
00:02 jnthn tadzik: oh, wow...
00:03 jnthn r: my @a = Positional;
00:03 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: ( no output )
00:03 jnthn ah, but that's different...
00:03 TimToady m: (my &x = { say "hi" }).wrap({ callsame; say "lo" })()
00:03 camelia rakudo-moar 1aeb7c: OUTPUT«No such method 'wrap' for invocant of type 'Block'␤  in block  at /tmp/rVrJm3Wdpm:1␤␤»
00:04 TimToady m: (my &x = sub { say "hi" }).wrap({ callsame; say "lo" })()
00:04 camelia rakudo-moar 1aeb7c: OUTPUT«Cannot find method 'postcircumfix:<( )>'␤  in block  at /tmp/V83to6rayR:1␤␤»
00:04 jnthn r: role R { }; my R $r = R;
00:04 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c: ( no output )
00:04 camelia ..rakudo-moar 1aeb7c: OUTPUT«Type check failed in assignment to '$r'; expected 'R' but got 'R'␤  in block  at /tmp/tmpfile:1␤␤»
00:04 jnthn Aha!
00:04 TimToady no pun?
00:06 jnthn nah, scalar assignment has its own codepath for typechecking, and I suspect it's doing something bogus
00:06 TimToady m: my &x = sub { say "hi" }; &x.wrap({ callsame; say "lo" })()
00:06 camelia rakudo-moar 1aeb7c: OUTPUT«Cannot find method 'postcircumfix:<( )>'␤  in block  at /tmp/frw4P5oBlu:1␤␤»
00:06 TimToady m: my &x = sub { say "hi" }; &x.wrap({ callsame; say "lo" }).()
00:06 camelia rakudo-moar 1aeb7c: OUTPUT«Cannot find method 'postcircumfix:<( )>'␤  in block  at /tmp/wuegN7PDNg:1␤␤»
00:07 TimToady hmm
00:07 TimToady m: my &x = sub { say "hi" }; &x.wrap({ callsame; say "lo" }).WHAT.say
00:07 camelia rakudo-moar 1aeb7c: OUTPUT«(WrapHandle)␤»
00:07 TimToady oh
00:07 TimToady duh
00:07 TimToady m: my &x = sub { say "hi" }; &x.wrap({ callsame; say "lo" }); &x
00:07 camelia rakudo-moar 1aeb7c: ( no output )
00:07 TimToady m: my &x = sub { say "hi" }; &x.wrap({ callsame; say "lo" }); x()
00:07 camelia rakudo-moar 1aeb7c: OUTPUT«hi␤lo␤»
00:08 TimToady m: (my &x = sub { say "hi" }).wrap({ callsame; say "lo" }); x()
00:08 camelia rakudo-moar 1aeb7c: OUTPUT«hi␤lo␤»
00:08 TimToady okay
00:09 jnthn yeah, I think I see it.
00:26 BenGoldberg joined #perl6
00:27 lue Is there anything out there that details how putting Perl 6 stuff on CPAN/PAUSE would happen ?
00:29 hoverboard joined #perl6
00:30 * jnthn spectests a fix
00:30 jnthn All but one test of supply.t passes with that done
00:34 BenGoldberg Is there some CPAN/PAUSE mechanism in place to prevent a perl6 module from being installed when using the perl5 'cpan' command-line program to install a perl5 module of the same name?
00:38 lue BenGoldberg: nope, but that shouldn't be an issue right now because CPAN doesn't currently do Perl 6 :)
00:40 Mouq jnthn++
00:43 * lue at the moment is not confident in using CPAN or PAUSE for Perl 6, but is trying to find evidence contradicting this belief :)
00:45 jnthn Ugh, seems I regressed something in one of the roles tests.
00:45 jnthn Tired...will give it another look tomorrow
00:45 jnthn 'night, #perl6
00:45 TimToady o/
00:45 lue ♞ jnthn o/
00:45 BenGoldberg In order to get cpan to do perl6, it would need to be made multi-lingual
00:46 BenGoldberg And yet, remain backwards compatible with the various perl5-only cpan tools.
00:47 lue BenGoldberg: yeah, there's no way I can see it happening without maintaining separate CPAN/PAUSE5 and Cpan/Pause6 things underneath the shiny UIs.
00:47 raiph joined #perl6
00:47 BenGoldberg Right :)
00:50 lue (in fact, the need to maintain things as separate raises the questions of "Doesn't panda do this already?" and "What's the point of renaming panda to cpan6?")
00:51 BenGoldberg The only perl6 stuff that should go on the perl5 cpan/pause, would be Alien::Rakudo (when someone writes it), and modules to allow perl5 to interact with a perl6 library/executable, and perl5 modules for perl6 syntactic sugar for perl5.  And STD.
00:52 lue Like I said, I'm incredibly pessimistic of ever putting Perl6 stuff on CPAN, but I'd like to be proven wrong. /me decides to blag about it now
00:53 BenGoldberg blag?
00:53 lue blog :)
00:53 BenGoldberg Ahh
00:53 BenGoldberg . o O (blah + blog = blag)
00:53 geekosaur blag: https://xkcd.com/148/
00:54 * TimToady reads it as blog + brag :)
00:57 BenGoldberg .ud blag
00:57 BenGoldberg .ping
00:57 yoleaux There is no ping command; nor can this be construed as a response.
01:04 hoverboard joined #perl6
01:06 BenGoldberg . o O (Yoleaux no longer does urban dictionary lookups?  How sad)
01:07 benabik 1.  To gain, usually entrance to a restricted area or club, or some material good, through confidence trickery or cheekiness. Lying is also acceptable.   2. A better term for blog, as defined by xkcd.com
01:27 * timotimo is back
01:27 timotimo seems like we have most of moar-conc by now. cool!
01:32 colomon \o/
01:39 grondilu that's fantastic.  Can we hope a merge into nom soon?
01:40 grondilu I see moar at 100% on https://github.com/coke/perl6-roast-data/blob/master/perl6_pass_rates.csv
01:40 grondilu is that for real?
01:44 timotimo moar does unicode better than jvm at the moment :)
01:44 grondilu k
01:44 timotimo and better than parrot, too
01:45 timotimo our moarvm unidb is more capable than libicu apparently
01:45 timotimo or maybe it's just a SMOP to tickle the data we need out of it
01:46 colomon that's a lot of tests, though.
01:47 timotimo "Synopsis", "pass","fail","todo","skip","plan","spec"
01:47 colomon 200 more passing than JVM?
01:47 colomon that seems odd
01:47 colomon (and awesome if true)
01:47 timotimo "S15",         234,     0,     0,     0,   234,   283
01:48 colomon (by true, I mean, not some weird artifact or JVM being broken overnight or something)
01:48 timotimo those don't run at all on jvm and parrot
01:48 timotimo https://github.com/perl6/roast/blob/master/S15-unicode-information/uniname.t - tests like these
01:48 timotimo they *should* be doable on parrot and probably on java, too
01:49 colomon ah, so we've added hundreds of new tests?
01:51 timotimo yeah. we cheated :P
01:53 colomon that's better than JVM regressing.  :)
01:54 timotimo :)
01:54 timotimo i'm going to bed now
01:54 timotimo gnite!
01:54 colomon o/
01:54 colomon http://www.roguebasin.com/index.php?title=7DRL_Challenge_2014
02:10 klapperl_ joined #perl6
02:14 kaare_ joined #perl6
02:16 FROGGS_ joined #perl6
02:17 kaare_ joined #perl6
02:18 * colomon wishes p6 were fast / mature enough to handle the current code he is writing.
02:18 colomon … actually ...
02:20 * grondilu thinks he should really read S17 now that it is coming (he did not use JVM).
02:45 lue blag toast!  http://rdstar.wordpress.com/2014/03/09/perl6-and-cpan/
02:46 ilbot3 joined #perl6
02:46 Topic for #perl6 is now »ö« Welcome to Perl 6! | http://perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:,  niecza:, std:, or /msg camelia perl6: ... | irclog: http://irc.perl6.org | UTF-8 is our friend!
02:46 Mouq BenGoldberg: Spectests aren't run on the same machine anymore
02:47 Mouq colomon: WRT 7DRL, do we have a way to interface with Curses?
02:47 BenGoldberg But to go from over six thousand, down to basically none, sounds like something is not set up right.
02:48 colomon Mouq: there's a perl6-ncurses in the ecosystem, I don't know anything about it.
02:49 Mouq colomon: Ahh, ok, cool
02:49 colomon BenGoldberg: I don't know what's going on with pugs, but I know we've had problems setting up Haskell to run it in the past, and it would be a pretty low priority at the moment.
02:50 Mouq lue: Re: http://rdstar.wordpress.com/2011/08/06/ideas-for-me-to-improve-perl-6/
02:50 Mouq lue: Is "graphical depiction of the Perl 6 type hierarchy" === what we have at doc.perl6.org
02:50 Mouq ?
02:51 lue Mouq: it's also http://rdstar.wordpress.com/2012/11/22/the-rakudo-codebase-visualized-partially/  :)
02:54 Mouq lue: Sweeet :) Lol @ http://rdstar.files.wordpress.com/2012/11/core_twopi.png
02:54 lue Admittedly, doc.perl6.org probably has done a better job of it than my abandoned script :P
02:59 skids joined #perl6
03:10 Mouq lue: One thing your latest post didn't address was versioning. How do would you support multiple versions of a module under the current system, short of creating a new repo for each?
03:11 lue Mouq: git tags for the repo, though uploaded tarballs would sanely have some identifying mark on them. My issue was the CPAN is set up to do the version stuff all by itself, which goes counter to what Perl 6 has.
03:11 lue s/the CPAN/that CPAN/
03:12 Mouq lue: ok, that makes sense
03:15 wooden joined #perl6
03:16 felher joined #perl6
03:23 * colomon vastly prefers programming in p6 to p5.
03:25 Mouq ikr
03:34 rurban joined #perl6
03:49 __thou joined #perl6
04:06 flussence joined #perl6
04:11 * Mouq is annoyed we don't have a precendence parser available for standard Perl 6
04:12 Mouq We have STD.pm6's EXPR, but that cheats a bunch
04:12 TimToady there are only about six spots it cheats :)
04:13 TimToady actually, there's only 3 lines labelled # XXX P6 at the moment
04:14 Mouq TimToady: I don't understand what the pmc-based self.MATCHIFYr does
04:14 TimToady see also         (sub (*@values) {
04:14 TimToady return op.() unless @values.gimme(1);
04:14 TimToady my $result := @values.shift;
04:14 TimToady return op.($result) unless @values.gimme(1);
04:14 TimToady my int $i;
04:14 TimToady while my int $c = @values.gimme(1000) {
04:14 TimToady $i = 0;
04:15 TimToady $result := op.($result, @values.shift)
04:15 TimToady while ($i = $i + 1) <= $c;
04:15 TimToady }
04:15 TimToady $result;
04:15 TimToady })
04:15 TimToady oops, sorry
04:15 TimToady http://rosettacode.org/wiki/Parsing/Shunting-yard_algorithm#Perl_6
04:15 Mouq :O
04:18 Mouq So that assumes that its input has already been tokenized, whereas EXPR tokenizes as it runs
04:18 Mouq Or am I mistaken?
04:18 TimToady EXPR calls <termish> and <infixish> to tokenize
04:19 TimToady MATCHIFY mostly calls _REDUCE, which mostly is checking to see if there's an associated ACTTION routine
04:20 Mouq So EXPR just tricks the <infixish> action that it swallowed up the <EXPR>s around it?
04:21 Mouq s/action/action method/
04:22 TimToady yeah, basically
04:22 TimToady a little more complicated with P6 because of list infixes
04:24 TimToady whoops, time to go pick up quietfanatic from the train station....
04:24 TimToady afk &
04:24 Mouq o/
04:25 lue Finally got around to updating the pages on that navbar in my blog :)
04:30 nebuchad` joined #perl6
04:32 perlpilot joined #perl6
05:04 btyler joined #perl6
05:24 Ben_Goldberg joined #perl6
05:28 Mouq r: my %e = :a<5>, :c<7>; say %e<a c>:exists
05:28 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«True True␤»
05:28 Mouq r: my %e = :a<5>, :c<7>; say %e<a b c>:exists
05:28 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«True False True␤»
05:29 Mouq r: my %e = :a<5>, :c<7>; if %e<a b c> -> $one, $two { say "$one__$two" }
05:29 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/tmpfileâ�¤Variable '$one__' is not declaredâ�¤at /tmp/tmpfile:1â�¤------> [32mif %e<a b c> -> $one, $two { say "$one__[33mâ��[31m$two" }[0mâ�¤    expecti…»
05:30 Mouq r: my %e = :a<5>, :c<7>; if %e<a b c> -> $one, $two { say "$one __$two" }
05:30 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤  in block  at /tmp/tmpfile:1␤␤»
05:31 Mouq r: my %e = :a<5>, :c<7>; say "cool" if all %e<a c>:exists
05:31 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«cool␤»
06:07 ingy Mouq: hi
06:09 Mouq ingy: Sup
06:09 ingy what's the fastest way to install a perl6 on ubuntu 12.04
06:13 Mouq ingy: git clone and perl Configure.pl?
06:13 Mouq :P
06:21 Mouq What we should aim for: http://www.python.org/downloads/release/python-335rc2/
06:21 Mouq Oh, looks like for Ubuntu that would just be a source tarball anyway
06:25 Mouq Can we have a ./configure-moar + ./configure-parrot + ./configure-jvm that have simple, sane defaults?
06:25 Mouq Just to make things as painless as possible
06:26 * lue would love if Moar was more like Parrot in the "default to /usr/local like normal people" department :)
06:29 moritz well, most normal users don't have write privs to /usr/local/, which is why ./isntall is the saner default
06:31 lue .oO(/usr/local is the conventionaler default though)
06:33 lue moritz: I'd be more convinced by that argument if just about every other program ever didn't find it OK to default to /usr/local .
06:36 darutoko joined #perl6
06:36 * Mouq → bed
06:38 lue ♞ Mouq o/
06:38 moritz lue: I'm not convinced by just about every other program defaulting to a location the user doesn't have write privs to
06:45 lue moritz: it's convention though, at least for programs that want to try to be nice :/  I guess I'm just annoyed by how Moar is the singular reason why it's necessary for me to specify --prefix=/usr/local on NQP and Rakudo. (Parrot defaults there, and jvm-only picks that as a default as well, last time I tried)
06:56 moritz the "convention" and "majority" arguemnt is like saying "most programmers are PHP programmers, so we should be PHP compatible"
06:56 vincent22 joined #perl6
06:56 lue moritz: I do think your argument is good, by the way, I just don't like it :)
06:59 moritz lue: :-)
06:59 lue (Not defaulting to /usr/local is one of those little things for me that, were this some random program I download for some random thing I need to do, would make me think the developers didn't care too much for what a general audience is accustomed to. Forcing me to run autotools is another such thing.)
07:00 moritz lue: pro tip: create a shell alias for often-used configure lines
07:00 lue I once found some program that defaulted to /usr (not /usr/local), and my reaction was something like "why go against the norm? Don't you know /usr is for the package manager? why‽"
07:01 moritz alias rakudoconfig='Configre.pl --prefix=/usr/local --backends=all --gen-moar --gen-parrot --gen-nqp'
07:01 lue moritz: if nqp and rakudo honored the /usr/local configuration from MoarVM (been a while since I tried this), I wouldn't be nearly as annoyed :)
07:02 lue No, the actual issue was/is that nqp and/or rakudo won't search the standard places for moar or nqp-m, while it would for nqp-j and nqp-p
07:03 moritz well, that's fixable, I guess
07:03 moritz not trivial, though
07:04 lue yeah, IIRC how things are found for parrot is much different from jvm or moar, could be wrong though.
07:04 moritz because nqp and rakudo needs a single prefix, which means that parrot's prefix and moar's prefix need to be the same, and that condition must be error-checked
07:05 daniel-s joined #perl6
07:06 lue (Having to tell Moar to go to /usr/local is atypical of packages, but now I remember my real issue was nqp and/or rakudo not searching the standard places for moar-based stuff.)
07:06 lue something to look into tomorrow, assuming no-one else does first :) . ♘ #perl6 o/
07:07 moritz \o lue
07:22 FROGGS_ lue: I can say something about Perl6 + CPAN in about a week
07:24 daniel-s joined #perl6
07:55 lue joined #perl6
07:59 cognominal joined #perl6
08:00 nwc10 TimToady++ # rakudo.jvm,2014-03-08,99.31%,1fb3aff,28982,8,608,1505,31103,28583,
08:01 nwc10 parrot at 99.04%
08:01 nwc10 MoarVM has quite a lead now.
08:01 xinming__ joined #perl6
08:12 telex joined #perl6
08:44 kurahaupo joined #perl6
08:46 virtualsue joined #perl6
09:13 FROGGS tadzik: can you please apply that PR? https://github.com/tadzik/File-Find/pulls
09:13 sftp_ joined #perl6
09:28 spider-mario joined #perl6
09:39 virtualsue joined #perl6
09:43 masak can we create daemonic processes in Perl 6?
09:43 masak in many languages, that hangs off the threading system in some way.
09:44 timotimo http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/ ← :\
09:45 xfix std: if True { } elseif True {}
09:45 camelia std 09dda5b: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Please use 'elsif' at /tmp/PFFkd57dhw line 1:â�¤------> [32mif True { } elseif [33mâ��[31mTrue {}[0mâ�¤Confused at /tmp/PFFkd57dhw line 1:â�¤------> [32mif True { } elseif [33mâ��[31mTrue {}[0mâ�¤    expecting any of:â�¤       f…»
09:47 masak std: if True { } else if True {}
09:47 camelia std 09dda5b: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Please use 'elsif' at /tmp/K3eI04LGpb line 1:â�¤------> [32mif True { } else if [33mâ��[31mTrue {}[0mâ�¤Confused at /tmp/K3eI04LGpb line 1:â�¤------> [32mif True { } else if [33mâ��[31mTrue {}[0mâ�¤    expecting any of:â�¤â€¦Â»
09:47 timotimo std: if True { } elif True { }
09:47 camelia std 09dda5b: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Strange text after block (missing comma, semicolon, comment marker?) at /tmp/8jHDAUMpPJ line 1:â�¤------> [32mif True { }[33mâ��[31m elif True { }[0mâ�¤    expecting any of:â�¤ horizontal whitespaceâ�¤  statement_controlâ�¤Pars…»
09:47 timotimo r: if True { } elif True { }
09:47 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/tmpfileâ�¤In Perl 6, please use "elsif' instead of "elif"â�¤at /tmp/tmpfile:1â�¤------> [32mif True { } elif [33mâ��[31mTrue { }[0mâ�¤    expecting any o…»
09:53 dmol joined #perl6
10:05 tgt joined #perl6
10:06 Rotwang joined #perl6
10:30 denis_boyun joined #perl6
10:31 lizmat lue and others: regarding http://rdstar.wordpress.com/2014/03/09/perl6-and-cpan/
10:31 lizmat for all practical purposes, PAUSE *is* a place for authors to drop their tarballs
10:32 lizmat CPAN  (for Perl 5) is nothing more than a layer on top of that "dropbox"
10:32 lizmat every author on CPAN has its own directory, and its own tarballs in there
10:32 FROGGS rdstar?
10:32 FROGGS O.o
10:33 lizmat with distributions that may or may not conflict with the "official" version of a Perl 5 distribution
10:33 lizmat so wrt to authority and versioning, everything is more or less in place already
10:33 lizmat the big thing that is stopping people from uploading Perl 6 modules to PAUSE, is CPAN-testers really
10:34 lizmat we don't want CPAN-testers to start sending out bogus error reports because distributions don't build with Perl 5
10:34 FROGGS and that we can't bundle up our modules easily
10:34 masak lizmat++ # investigating this
10:34 lizmat that is why the following ideas were formed at the last QA Hackathon on Lancaster
10:35 lizmat 1. Perl 6 distributions must have a flag that indicate they're a Perl 6 distribution
10:36 lizmat that flag could be the existence of a the META.info file, as that doesn't exist in Perl 5 distributions (afaik)
10:36 FROGGS correct, they've got a META.yaml or so
10:37 lizmat 2. if such a flag is discovered, then on upload, PAUSE will create a Perl6 subdirectory in the authors directory automatically (if it doesn't exist yet)
10:37 lizmat and put the distribution in there
10:38 lizmat the fact that the distribution is stored in a sub dir, will allow remote CPAN server admins to filter on /Perl6/ in their rsync scripts
10:39 lizmat as to (dis)allow Perl 6 distributions on their servers
10:39 FROGGS lizmat: does that clash with Perl 5 modules that start with Perl6:: ? do these have a Perl6 diretory already?
10:40 lizmat the Perl6:: modules are not in a Perl6 subdirectory, unless the author has put them there
10:40 FROGGS I just thought so because you can browse the source of a dist
10:43 lizmat yes, but that is all front end layer
10:43 lizmat the dist itself just lives in the top dir of the author's directory, usually
10:44 lizmat 3. the Perl 6 community will need to create it's own indexing logic for Perl 6 modules on PAUSE
10:44 lizmat and to work out the internal format of META.info
10:44 FROGGS yes
10:44 lizmat and, so I was told by maintainers of CPAN last year, please don't make the same mistakes that they made
10:45 FROGGS but anyway, who is behing rdstar?
10:45 lizmat with META.yaml  :-)
10:45 FROGGS okay, I need to know about their mistakes then :o)
10:45 lizmat you will be able to ask them  :-)
10:45 lizmat next week
10:45 FROGGS yeah
10:45 lizmat my plan for next week's QA Hackathon is:
10:46 lizmat 1. tell CPAN(-testers) that the existence of META.info is the flag for Perl 6 distribution
10:46 lizmat 2. make sure they all implement this in the current CPAN/PAUSE logic
10:47 lizmat 3. work on the internal structure of META.info, together with CPAN people and packagers like sno
10:47 lizmat 4. work on getting a CompUnitRepo that will install from CPAN
10:48 FROGGS yes, we need to switch from projects.json to CPAN somehow
10:49 lizmat 5. if all works out, get the search.cpan.org / metacpan people to show Perl 6 distributions as well
10:49 lizmat 6. if that works out, maybe even get cpanm to be able to install Perl 6 modules  (one can dream, right?)
10:49 FROGGS :o)
10:50 FROGGS I am working on a bundle target for panda right now btw
10:50 lizmat cool!
10:51 lizmat there shouldn't be just one way to install modules   :-)
10:51 lizmat TIMTOWTIT
10:51 lizmat TIMTOWTII
10:51 lizmat rather
10:51 rindolf joined #perl6
10:52 FROGGS that bundle target should propose a META.info and zip it up for uploading to PAUSE
10:52 lizmat cool
10:52 lizmat FROGGS++
10:52 FROGGS :o)
10:54 pmurias joined #perl6
10:55 FROGGS ahh, lue is doing rdstar?
10:55 lizmat apparently  :-)
10:57 tadzik FROGGS: sure, done :)
10:58 FROGGS tadzik++ # \o/
10:58 lizmat afk&
10:58 tadzik FROGGS++ :)
11:18 kaare_ joined #perl6
11:59 zakharyas joined #perl6
12:55 colomon_ joined #perl6
13:00 spider-mario joined #perl6
13:53 FROGGS r: $*ENV<FOO> = "bar" # that error message is very LTA
13:53 camelia rakudo-moar 1aeb7c: OUTPUT«===SORRY!===␤postcircumfix:<{ }> not defined for type Failure␤»
13:53 camelia ..rakudo-jvm 1aeb7c: OUTPUT«postcircumfix:<{ }> not defined for type Failure␤  in method <anon> at gen/jvm/CORE.setting:12386␤  in any  at gen/jvm/Metamodel.nqp:2611␤  in any find_method_fallback at gen/jvm/Metamodel.nqp:2610␤  in any find_method at gen/jvm/Metamodel.nqp:948…»
13:53 camelia ..rakudo-parrot 1aeb7c: OUTPUT«postcircumfix:<{ }> not defined for type Failure␤  in method <anon> at gen/parrot/CORE.setting:12407␤  in any  at gen/parrot/Metamodel.nqp:2694␤  in any find_method_fallback at gen/parrot/Metamodel.nqp:2682␤  in any find_method at gen/parrot/Meta…»
13:54 timotimo yeah, that could conceivably trigger the Failure object to be printed instead
13:54 FROGGS well, it could state that $*ENV is not defined
13:55 FROGGS r: say $*FOO
13:55 camelia rakudo-moar 1aeb7c: OUTPUT«===SORRY!===␤Dynamic variable $*FOO not found␤»
13:55 camelia ..rakudo-parrot 1aeb7c: OUTPUT«Dynamic variable $*FOO not found␤  in method gist at gen/parrot/CORE.setting:12402␤  in method gist at gen/parrot/CORE.setting:1056␤  in sub say at gen/parrot/CORE.setting:13330␤  in block  at /tmp/tmpfile:1␤␤»
13:55 camelia ..rakudo-jvm 1aeb7c: OUTPUT«Dynamic variable $*FOO not found␤  in method gist at gen/jvm/CORE.setting:12381␤  in method gist at gen/jvm/CORE.setting:1053␤  in sub say at gen/jvm/CORE.setting:13288␤  in block  at /tmp/tmpfile:1␤␤»
13:55 FROGGS perhaps class Failure should have a postcircumfix:<{ }> that returns itself?
13:56 FROGGS would that be sensible?
13:56 grondilu joined #perl6
14:06 timotimo hm, kinda like Nil?
14:08 FROGGS r: say Nil<hu?>
14:08 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«Nil␤»
14:08 FROGGS yes :o)
14:08 * timotimo implemented a little cache to hold the strings for the lowered parameter names
14:09 timotimo could shave off a megabyte or two
14:10 timotimo with    cache: 66.63user 0.22system 1:07.09elapsed 99%CPU (0avgtext+0avgdata 605884maxresident)k
14:11 jnthn What was it without?
14:11 timotimo gimme a minute.
14:11 jnthn :)
14:11 jnthn .oO( If I made the darn setting compile faster I'd not have to wait a minute... )
14:12 FROGGS make it faster then :o)
14:12 timotimo without cache: 66.26user 0.19system 1:06.69elapsed 99%CPU (0avgtext+0avgdata 606332maxresident)k
14:12 timotimo so half a megabyte from __lowered_param_$i alone
14:13 timotimo we might want a more general solution in some other place ...
14:18 FROGGS what is the the perl6ish way to get an intersection of two lists?
14:18 FROGGS -the
14:18 tadzik I'll turn them into sets, if you don't care for the ordering that much
14:19 FROGGS ordering does not matter at all
14:19 moritz or a very idiomatic and slow way is  @a.grep: any @b;
14:19 FROGGS can I get intersection also when the elements are hashes?
14:20 FROGGS ahh
14:20 tadzik ha, that's clever
14:21 timotimo it may be easier to @a.grep: set @b
14:21 timotimo will that work?
14:22 TimToady should
14:22 timotimo i think smartmatch semantics should do (elem) in that case
14:22 TimToady yeah, might not work with hashes in @a
14:23 masak r: my @a = 1, 2, 3, 4, 5; my @b = 4, 5, 6, 7, 8; say @a (&&) @b
14:23 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/tmpfileâ�¤Two terms in a rowâ�¤at /tmp/tmpfile:1â�¤------> [32m 3, 4, 5; my @b = 4, 5, 6, 7, 8; say @a [33mâ��[31m(&&) @b[0mâ�¤    expecting any of:â�¤  â€¦Â»
14:23 TimToady intersecting two sets would be safer in that case
14:23 masak hm.
14:24 * timotimo mumbles something about itemization
14:24 jnthn r: say set(<b e e f>) (&) set(<b e e r>)
14:24 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«set(b, e)␤»
14:24 masak r: my @a = 1, 2, 3, 4, 5; my @b = 4, 5, 6, 7, 8; say @a (&) @b
14:24 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«set(4, 5)␤»
14:24 masak ah, yes.
14:25 jnthn oh, cool, it even coerces. :)
14:25 masak r: my @a = 1, 2, 3, 4, 5; my @b = 4, 5, 6, 7, 8; say (@a (&) @b).list
14:25 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«4 5␤»
14:25 timotimo jnthn: i don't hear "oh, cool, it coerces" often :D
14:26 masak r: say 1..5 (&) 4..8
14:26 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/tmpfileâ�¤Operators '..' and '..' are non-associative and require parenthesisâ�¤at /tmp/tmpfile:1â�¤------> [32msay 1..5 (&) 4.[33mâ��[31m.8[0mâ�¤    exp…»
14:26 masak r: say (1..5) (&) (4..8)
14:26 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«set(4, 5)␤»
14:42 salv0 joined #perl6
14:49 TimToady oh, duh, I was timing 0+1+2+3+4+5+6+7+8+9+10, but that's constant folded, so [+] ain't never gonna get close :)
14:49 timotimo :D
14:49 TimToady well, except insofar as [+] oughta do that too
14:56 guru joined #perl6
15:03 [Sno] joined #perl6
15:17 zakharyas joined #perl6
15:21 timotimo p6: sub foobar() { say "i've done it!" }; &foobar;
15:21 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c, niecza v24-109-g48a8de3: ( no output )
15:21 timotimo why no "useless use of &foobar in sink context"?
15:21 timotimo p6: sub foobar() { say "i've done it!" }; &foobar; 1;
15:21 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c, niecza v24-109-g48a8de3: ( no output )
15:22 moritz well, we have a known bug that the last statement doesn't get compile-time sunk
15:22 moritz butw ith trailing ;1 it rally should
15:22 moritz oh, I think I know why
15:22 hoelzro is precompilation covered in one of the S's?
15:22 moritz because otherwise, sub foo { } might also warn :-)
15:22 timotimo well, sub foo { } is a declaration, though
15:22 xragnar_ joined #perl6
15:22 timotimo and &foo is just a mention
15:23 timotimo so that should be differentaible
15:23 timotimo differentiable*
15:26 moritz it should be, yes
15:26 timotimo masak: feel like submitting this LTA rakudobug? :)
15:26 timotimo though it's not quite as nasty as in python
15:26 timotimo where lack of () directly means mention instead of use
15:26 moritz same in JS and C
15:26 timotimo in perl 6 you have to do a bit of extra work to get a mention instead of a use
15:39 grep0r joined #perl6
15:41 grep0r joined #perl6
15:44 [Sno]_ joined #perl6
15:55 grep0r joined #perl6
15:56 * masak submits rakudobug
15:59 masak fwiw, I don't feel Python's and JavaScript's solution to be nasty at all.
16:00 timotimo it's just a gotcha
16:00 masak it's a different tradeoff. everything is.
16:00 timotimo aye
16:00 timotimo well, if you warn about statements without effect, it's not that bad :)
16:00 masak what's speaking *for* JS and Python ever is that it's actually *easier* to mention a sub than to call it.
16:00 masak that, correctly understood, encourages various FP practices.
16:01 masak I tried to strike a balance and get the best of both worlds with the language I was developing -- but the result feels like a compromise, with its own pitfalls.
16:01 timotimo aye
16:01 arnsholt joined #perl6
16:03 timotimo FWIW, i feel the way perl 6 approaches calling vs mentioning of subs is very nice.
16:03 timotimo also, it occurs to me that the python way of doing attributes in classes is a bit like autovivification, except it doesn't actually autovivify
16:04 timotimo so ... i suppose it's just "undefinedness"
16:04 masak allegedly, Python's object model was inspired by Perl's.
16:04 grep0r joined #perl6
16:04 timotimo but python is much older than perl 5, isn't it?
16:05 timotimo and perl before 5 didn't have a proper object model, did it?
16:05 geekosaur didn't have an object model at all
16:05 arnsholt Yeah, I was under the impression it was the other way 'round too
16:09 BenGoldberg joined #perl6
16:10 vendethiel moritz: disagreed WRT "lack of () means mention"
16:10 timotimo did you mean to disagree with masak?
16:11 vendethiel [16:26] <timotimo> where lack of () directly means mention instead of use [16:26] <moritz> same in JS and C
16:11 timotimo oh?
16:11 timotimo is that not the case?
16:12 vendethiel no, functions in JS does not correspond to their eta-expansion
16:12 vendethiel which is really confusing
16:12 vendethiel I mean that `a.b(c);` is not the same as `var f = a.b; f(c);`
16:13 timotimo oh?
16:13 timotimo o_O
16:13 timotimo well, JS is insane anyway :)
16:13 arnsholt Yeah, that sounds really weird. What's the difference?
16:13 timotimo i'd like to know, too
16:13 timotimo var f = a.b actually calls a.b()?
16:13 masak the this binding.
16:13 vendethiel In `a.b(c)`, `b` will have `this = a`
16:13 masak yes, it aclls the right function, but without the this binding.
16:14 vendethiel but in `f = a.b; f(c)`, f will have `this = global||window`
16:14 arnsholt Oooooooh, the infamous this
16:14 masak vendethiel: that doesn't mean that functions don't correspond to their eta-expansion, though.
16:14 timotimo ah
16:14 masak vendethiel: it just mean that if you don't call a method in the "intended" way, 'this' is busted.
16:15 timotimo right, that's what python has "bound methods" for
16:15 masak Python gets that very right.
16:15 timotimo and i'm glad perl 6 requires the user to create a closure that closes over the invocant.
16:15 masak I've yet to understand fully how it manages to get it that right.
16:15 timotimo that makes it both right and explicit and unsurprising
16:15 masak Go, from 1.1 or so, also gets this very right.
16:15 vendethiel (but go gets everything else wrong, so ...)
16:16 * arnsholt googles bound methods
16:16 vendethiel that means that `a(function (b) { foo.bar(b); })` is not the same as `a(foo.bar);`
16:16 masak I don't like Ruby's solution, but I don't remember why.
16:16 vendethiel that's what I mean by "eta-expansions doesnt correspond"
16:16 masak I think it was too in-your-face about bound and unbound methods.
16:16 timotimo how does ruby do it?
16:17 vendethiel .method :abc
16:17 masak vendethiel: you're just expecting that eta-expansion will be valid for method expressions. it isn't.
16:19 vendethiel masak: it's really sad we can't rely on eta-abstraction
16:19 arnsholt I guess it'll depend on what kind of lambda form objects and methods correspond to
16:19 arnsholt I really, really should get around to reading SICP
16:19 timotimo what's your comments on the way perl 6 does "mentioning of methods"?
16:20 masak vendethiel: yes, it *is* a weakness of JS.
16:20 vendethiel you just can't rely on eta-conversion in JS
16:20 masak vendethiel: funnily enough, I've never seen a complete suggested solution to it.
16:20 masak vendethiel: nor to the hated problem with 'this' in nested functions.
16:21 vendethiel well, people who like that also like prototypal inheritance I guess :P
16:21 vendethiel in coffee/ls we provide a solution for this in nested function
16:21 vendethiel in ls we also have the bound access `a~b` which is `a.b.bind(a)`
16:21 masak so, like Python.
16:23 vendethiel I really don't know python well, so I'll have to take your word on that :).
16:24 vendethiel any solution is better than no solution, though, but sometimes it gets even worse because browser vendors optimize `Fn.bind()` very, very poorly (especially v8)
16:24 vendethiel which means JS library usually have to use their own `.bind()` not to suffer perf issues
16:25 masak vendethiel:
16:25 masak >>> class C:
16:25 masak ...     def foo(self):
16:25 masak ...         print "OH HAI"
16:25 masak ...
16:25 masak >>> m = C().foo
16:25 masak >>> m()
16:25 masak OH HAI
16:29 vendethiel masak: ls> f = (new class => c: (-> Math.random!); b: ~> @c!)b; console.log f!
16:29 vendethiel 0.504...
16:29 vendethiel ~> means bound method, -> is normal method
16:30 vendethiel also using -> for b and then `)~b;` would work the same
16:30 pmurias joined #perl6
16:30 vendethiel can you rebind `self` in python
16:30 masak I like how we're really living in a "let a thousand flowers bloom" era of JavaScript-based languages.
16:31 vendethiel masak: it's just so easy to compile to JS
16:31 masak vendethiel: I think so -- 'self' is just a lexical symbol in the method.
16:31 vendethiel I like it, though.
16:31 masak vendethiel: but note that only the symbol is rebound. not the underlying object.
16:33 pmurias wouldn't the perl6 equivalent of the javascript foo.bar be taking the method out using the meta model?
16:34 masak yes, something like that.
16:34 masak .^can, for example
16:35 vendethiel masak: do you think that everything compiling to JS is a bad thing :) ?
16:35 masak vendethiel: oh, au contraire.
16:35 vendethiel tant mieux :)
16:36 masak vendethiel: I think the syntactic/semantic experimentation is very exciting.
16:36 masak vendethiel: and AFAIK it's actually informed ES6 a fair bit.
16:36 masak especially CoffeScript and TypeScript.
16:36 vendethiel masak: yeah, short function syntax etc come from Coffee
16:36 vendethiel Brendan Eich likes it
16:38 vendethiel I'm not sure TS did influence it alot, since it came some time after ... I don't really like Typescript anyywa
16:38 vendethiel although it's better than dart which doesn't even typecheck, TS type system is unsound
16:38 vendethiel and a type t is actually an untagged union t|null|undefined
16:39 cooper joined #perl6
16:39 masak so far, I'm more excited about TypeScript than about CoffeeScript. though both projects are doing an awesome job.
16:40 vendethiel I'm obviously biased ;).
16:40 masak :)
16:40 vendethiel I'm really excited about some other things like scalaJS or PureScript.
16:40 vendethiel I'd be excited about GHCJS, but I don't think lazy evaluation works at all in the browser and is far too hard to simulate
16:40 timotimo how do you feel about fey and the other thing that compiles haskell to js?
16:40 timotimo ah
16:41 vendethiel ^ my last message
16:41 vendethiel so other languages like bilby.js or PureScript that don't try to change every semantics is a better fit IMHO
16:43 vendethiel last time I checked there were 3 haskell-to-js
16:43 timotimo i find it amusing, that the javascript camp seems to have completely made the suffix "script" their own
16:43 timotimo "UnrealScript, is that another javascript derivate?"
16:43 vendethiel I believe it is ?
16:44 timotimo i don't think so
16:44 vendethiel I think UnrealScript looks like AS2, doesn't it ? EcmaScript with types
16:44 vendethiel I remember somebody asking us a coffee version that'd compile to unreal stuff
16:44 timotimo UScript is more like java, apparently?
16:45 vendethiel yeah, seems like it (+ c# and probably others with `out` thingie etc)
16:47 timotimo didn't pascal have "out"?
16:47 timotimo i think visual basic had it, too
16:47 timotimo oh well. what do i know.
16:47 vendethiel timotimo: if C# has a feature, I think VB has it too :p.
16:48 vendethiel "do you like C syntax or do you like ada syntax ?"
16:49 vendethiel which makes me think, is niecza still develop ?
16:49 vendethiel (does it still have maintainers ?)
16:49 timotimo unfortunately not :(
16:49 timotimo it only occasionally gets brought up to date for simple changes to the spec
16:50 timotimo if you'd like to put some work into it, people would probably be happy
16:51 timotimo i know i would
16:51 vendethiel ah, I'm probably not good enough. I just wanted to know if perl6 still had a clr-compatible implem
16:52 timotimo hm, one of those days i should have a look if niecza can run all the benchmarks we have in perl6-benchmark
16:52 timotimo (still, those are mostly meaningless, but it'd still be nice to see how far it's still ahead of everything else we've got)
16:53 vendethiel timotimo: is it the most optimized backend ?
16:53 timotimo niecza has been built for speed from the ground up
16:54 vendethiel ah, I see. It's true that other implems are kinda slow :p.
16:54 timotimo "kinda"? :)
16:54 * vendethiel built a Game of Life in perl6 which took like 1 sec to render one frame
16:55 vendethiel timotimo: do you know how much slower is perl 6 (like p6-parrot) compared to perl 5 or other scripting languages?
16:56 timotimo niecza also has a JSON implementation that's based on some CLR thing
16:56 timotimo i can only tell you what our benchmarks show
16:56 timotimo unfortunately, those are almost exclusively microbenchmarks
16:56 timotimo is some of those, the jvm almost reaches perl 5 when it's warmed up
16:56 timotimo but it's still very far away.
16:57 vendethiel by what, an order of magnitude?
16:57 timotimo and we have far too few benchmarks that actually give any meaningful measurements
16:57 guru joined #perl6
16:57 timotimo more than that, i think
16:57 timotimo "an order of magnitude" is "at least 10 times"?
16:57 timotimo in that case, much more than one.
16:57 vendethiel 100 times slower :p ?
16:58 timotimo on a very good day perhaps
16:58 vendethiel I remember running a perl6 example from the advent calendar and killing it after a few minutes because I got tired :P
16:58 timotimo nqp alone doesn't reach anywhere near perl 5 and it's a bunch of times faster than rakudo itself
16:59 jnthn timotimo: That's not really true. Last I looked NQP on JVM beat Perl 5 at forest fire once it'd had chance to warm up.
16:59 timotimo oh?
16:59 timotimo that's news to me, but i'd be glad if you're right
16:59 jnthn Pretty sure I've seen that come up in the graphs a number of times.
16:59 tadzik well, the p6 forest fire is still awfully slow, even on jvm
16:59 timotimo i can go from my desktop to my laptop and let the desktop run perl5's benchmarks against the most recent nqp and rakudo benchmarks
17:00 jnthn Yeah, that one is.
17:00 jnthn timotimo: Yes, including Perl 5 runs in the benchmarks is generally helpful...
17:00 jnthn I've missed that in some of the recent ones I've seen.
17:00 BenGoldberg It would be pretty cool if someone could write perl6 versions of the benchmarks at http://shootout.alioth.debian.org/
17:00 timotimo i think it's generally sad :)
17:00 arnsholt jnthn: I've started looking at the invokedynamic instruction. That looks really quite interesting
17:00 * tadzik doesn't trust that benchmark site
17:00 timotimo BenGoldberg: quite frankly, the shootout kind of sucks
17:01 tadzik I remember when Perl 5 people took one of the alioth benchmarks and rewrote it into something that wasn't completely stupid, and then shootout people rejected it because reasons
17:01 BenGoldberg Maybe, but at least the examples resemble "real world" problems, rather than being microbenchmarks.
17:01 vendethiel invokedynamic is gonna be huge
17:02 vendethiel I think that's thanks to the jruby guy, who does really is insane with the JVM
17:02 jnthn arnsholt: Yes, I think we've only scratched the surface of what we'll be able to do with it so far :)
17:02 vendethiel I really hope that'll make scripting languages more competitive and people won't just dismiss them even for scripting
17:03 tadzik do they ever?
17:04 vendethiel tadzik: do they ever ?
17:04 tadzik I don't think I get the "dismiss them even for scripting"part
17:04 BenGoldberg I think it's been a long time since people dismised a language simply because it was a scripting language.
17:05 vendethiel BenGoldberg: because they're far slower is what I meant
17:05 tadzik every day I see "scripting" languages used in big, serious projects because of the flexibility and cheap development cots
17:05 tadzik cost, even
17:05 vendethiel tadzik: directly integrated ?
17:05 tadzik and _then_ they lament about performance
17:05 tadzik vendethiel: what does "directly integrated" mean?
17:05 vendethiel tadzik: I mean in the main program
17:06 tadzik they _are_ the main program
17:06 tadzik I don't mean "used as a scripting part in a bigger project", no
17:08 timotimo i would welcome some examples for embedding moarvm in bigger programs btw :)
17:08 arnsholt jnthn: Mostly unrelated: How big of an undertaking do you estimate it is to remove the string serialization step of JAST to bytecode compilation?
17:08 BenGoldberg complaining about performance after getting one's program to produce correct output is perfectly normal.  Just rewrite hot parts of it in C.
17:08 vendethiel Well, I just hope the smart minds have ideas on how to make moar/jvm/etc run faster :)
17:08 vendethiel BenGoldberg: that seems like an awful idea :)
17:09 timotimo vendethiel: they do have those ideas :)
17:10 jnthn arnsholt: Not overly bad; just need to traverse the JAST tree, and we know the attribute offsets so it'll even be farily cheap to walk it.
17:10 jnthn arnsholt: It's probably no worse than a couple of days work.
17:10 timotimo what is that "string serialization" thing all about?
17:11 arnsholt It's a fossil from the earliest days of the JVM backend
17:11 timotimo what's the effect? way too big .jar files? way too slow compilation?
17:12 jnthn Back in the early days, NQP was run on Parrot to produce JAST, which was dumped to text, which in turn was parsed by a program on the JVM and assembled into bytecode 'cus the JVM already had libraries for this.
17:12 timotimo ah
17:12 jnthn So once NQP ran on JVM the expedient thing to do was just do the same but call it "in process"
17:12 timotimo ah, right, that's not so optimal :)
17:12 jnthn With the intent that some day, when things worked, somebody would take the time to remove the inefficiency. :)
17:13 timotimo arnsholt: seems like a good little project :)
17:14 timotimo the jit will probably be happy about that change as well
17:15 arnsholt jnthn: What do you mean by "we know the attribute offsets", BTW?
17:16 arnsholt Presumably something clever we can do to extract the attributes of the different nodes?
17:16 jnthn arnsholt: The hint, passed to getattribute.
17:16 jnthn arnsholt: So the switch inside there will always work out.
17:16 jnthn arnsholt: And the field lookup should be quite cheap.
17:18 ggherdov_ joined #perl6
17:18 ggherdov_ joined #perl6
17:18 timotimo jnthn: what indicator are you waiting for for the moar-conc merge?
17:20 arnsholt Oh, right. So the code should presumably cache the nqp::attrhintfor for the various things?
17:21 jnthn arnsholt: Yeah, or given how JAST is quite stable even hardcode 'em :)
17:21 timotimo if you have a nqp::getattr in your code and the class and attribute name are compile-time-constant, the compiler will already try to calculate the hint
17:21 jnthn timotimo: We're talking about doing this in Java code here:)
17:23 timotimo oh
17:23 timotimo of course
17:23 arnsholt Yeah, I'm starting to see how this would work
17:23 timotimo in that case the JIT will be even happier :)
17:23 timotimo starting the perl5 benchmarks now
17:24 arnsholt I guess there's a bootstrap update in there. First implement non-serializing compile (and making sure it works), then update bootstrap to not use it at all, finally remove the offending code
17:26 jnthn yeah, something like that.
17:26 timotimo hm, how do i install Data::Alias so that the perl5 i built for the benchmark will find and use it?
17:28 moritz timotimo: preferably with the 'cpan' program that came with that perl5
17:29 timotimo where do i find that?
17:30 timotimo find find . -iname 'cpanm' comes up empty
17:30 jnthn perl -MCPAN -e 'install Data::Alias' # iirc
17:30 timotimo er
17:30 timotimo sorry, you meant "cpan" and not "cpanm"
17:31 jnthn .oO( MC PAN sounds like a cooking rapper... )
17:34 timotimo jnthn: so, when will you consider merging moar-conc? will time-based scheduling be a requirement?
17:37 jnthn timotimo: Going to get the supplies tests cleared up and fudge the time-based ones, then will consider a merge at that point.
17:37 jnthn timotimo: Note that the whole thing should be considered quite experimental at this point.
17:37 timotimo aye
17:37 timotimo and experiment with it i shall :)
17:37 jnthn timotimo: It's going to take us a good bit more work to get it trustworthy :)
17:38 timotimo aaw
17:38 jnthn But I figure getting it out there is the quickest way to learn how it fails :)
17:38 jnthn timotimo: There are bits of the VM I know don't do the appropriate stuff yet.
17:38 timotimo sounds good to me
17:39 jnthn We can't promise the right answers if you write code that contains data races. But we do need to promise the VM won't explode :)
17:40 timotimo of course
17:44 hoverboard joined #perl6
17:51 timotimo vendethiel, jnthn, others: http://t.h8.lv/p6bench/2014-03-09-every_perl.html
17:52 timotimo (this is pre-flatten-fastpath)
17:52 vendethiel timotimo++
17:55 timotimo i think i'll replace the moarvm in that file with the flatten_fastpath one
17:55 timotimo hm. i don't have a nqp-flatten_fastpath
17:55 timotimo ah well. in that case i won't do it.
17:55 timotimo it'll turn up in 2014.03 anyway
17:58 timotimo needless to say i'm still quite annoyed by the humongous performance difference between the NQPs and the rakudos
18:00 timotimo the type specializer in moarvm will likely have quite an effect on the nqp side as well as the rakudo side, but the effect may very well be much stronger on the rakudo side
18:00 timotimo that's highly speculative, though
18:00 timotimo jnthn:  ^ does that seem sensible to you?
18:02 jnthn timotimo: Well, teaching the specializer about the multi-dispatch cache will likely also be a huge win for Rakudo.
18:03 timotimo how close will rakudo come to the current nqp timings, what do you figure?
18:03 [particle] joined #perl6
18:03 jnthn Anyway, the results kinda support what I was saying: NQP JVM does beat out Perl 5 in some cases.
18:04 jnthn Heck, on forest fire NQP Moar is coming out within a factor of 4. o.O
18:05 jnthn timotimo: Hard to say. In the long run, I'd like it to beat the current NQP timings :P
18:05 timotimo i would like that, too
18:05 kivutar joined #perl6
18:06 timotimo i suppose that's what you get if "everything is an object" and you're doing method calls all the time for everything
18:06 beastd joined #perl6
18:06 vendethiel some numbers seem pretty impressive though
18:06 vendethiel and not 100* slower
18:07 * jnthn pauses from $dayjob tasks (yes, on a Sunday...) to make some dinner
18:07 arnsholt Is there a simple explanation for the sudden drop in performance on Parrot for some of the tests?
18:07 timotimo you did notice each step on the y axis in there is a 2x improvement?
18:07 vendethiel while_array_set, jvm drops somehow
18:07 timotimo rc-forest-fire, rakudo-moar 794x slower than fastest
18:08 timotimo rakudo-jvm: 1677x slower than fastest
18:08 camelia rakudo-jvm 1aeb7c: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/I53zpmd1ZJâ�¤Confusedâ�¤at /tmp/I53zpmd1ZJ:1â�¤------> [32m1677[33mâ��[31mx slower than fastest[0mâ�¤    expecting any of:â�¤        whitespaceâ�¤Â»
18:08 vendethiel hahahah yeah
18:09 timotimo i'm glad that using native types for the visit_2d_indices tests gives our nqps a litle push beyond perl5
18:10 jnthn On multi-dispatch, I've figured out that if for onlystar ones we incorporate the cache looking into the invocation protocol stuff, we can get a nice win on all those. And since Perl 6 is built out of multi calls, I think it'll help a good bit.
18:10 timotimo i don't really understand that suggestion. is that a whole lot of work?
18:11 timotimo can we do it very soon?
18:20 jnthn timotimo: Yeah, needs guts work on all 3 backends...
18:20 * timotimo is not sure he has what it takes :P
18:20 jnthn I suspect I can get to it in April. This month, after merging moar-conc, I need to focus on things that block us from having JVM Star and Moar Star.
18:20 timotimo also, i have no idea what that stuff entails exactly
18:21 jnthn I'll try to see the native call stuff on Moar in the next few days.
18:21 jnthn *seed
18:21 arnsholt jnthn: Speaking of JVM star, I've also been thinking of storing "how to compile C things" in a properties file in the NQP JAR, extracted from Perl's info in Configure.pl. That sound reasonable to you?
18:21 timotimo ooooh :)
18:22 jnthn timotimo: Yes, sounds decent.
18:22 jnthn uh
18:22 jnthn arnsholt: ^^
18:23 timotimo jnthn: on which backend would the guts work needed be least terrifying?
18:23 arnsholt Spiffy
18:23 Mouq joined #perl6
18:26 ushmar joined #perl6
18:26 arnsholt I'll try to get that done before digging into the JAST stuff, since it's a star blocker
18:42 pippo joined #perl6
18:47 stevan_ joined #perl6
18:57 Mouq Input please, for how a module that ships <EXPR> might work: https://gist.github.com/Mouq/9452638
18:57 Mouq ss/might work/might be interfaced/
19:01 stevan_ joined #perl6
19:02 stevan_ joined #perl6
19:02 btyler joined #perl6
19:03 lue <lizmat> the Perl6:: modules are not in a Perl6 subdirectory, unless the author has put them there
19:03 lue How is that a good solution for separating P5 and P6 modules then?
19:05 xenoterracide joined #perl6
19:05 __thou joined #perl6
19:07 FROGGS lue: this sentence is about Perl 5 modules that are in the Perl6 namespace
19:08 FROGGS like modules provide a Perl 6 feature for Perl 5
19:08 lue FROGGS: yes. I'm worried that the Perl6 subdir is a bad solution, if it's possible for existing P5 modules to be there.
19:09 FROGGS I don't even know how to fiddle with these dirs
19:09 FROGGS but I will find out
19:09 Sqirrel joined #perl6
19:09 dpopovski joined #perl6
19:17 raiph joined #perl6
19:31 Mouq Expanded: https://gist.github.com/Mouq/9452638 Would anyone use this? Is it simple and usable enough?
19:34 Mouq *use Grammar::Precedence or whatever it'll be called
19:35 masak Mouq: looks nice.
19:35 jnthn Mouq: Not too sure on the API for specifying the precedence levels
19:35 lue Mouq: looks good to me. I just imagined another grammar out there in the wild that goes "grammar Algebra is Arithmetic" :)
19:35 masak Mouq: nice. reminds me of http://strangelyconsistent.org/blog/what-you-can-do-with-ggeoptable-that-you-couldnt-without long ago.
19:36 jnthn I think infixish and prefixish should probably be provided by the role also, as defaults.
19:36 jnthn postfixish too
19:38 Mouq masak: Ah, GGE::OPTable looks like one of the wheels I was trying to re-invent
19:38 Mouq jnthn: I agree about them being defaults
19:38 Mouq jnthn: Figuring out an API has been tricky
19:39 Mouq jnthn: It may just be best to do what STD and Rakudo do, and have a bunch of hashes (or psuedo-hashes)
19:40 jnthn Mouq: Yeah. Well, follow STD rather than Rakudo, since Rakuod still does the string hack
19:40 Mouq jnthn: But having the precedence table as an attribute of the Grammar has benefits
19:41 jnthn Mouq: True. May be able to keep that...
19:42 perigrin 23
19:42 perigrin *sigh*
19:43 moritz https://www.usenix.org/system/files/1403_02-08_mickens.pdf # hilarious rant about browsers (PDF warning, and warning about 7 pages thereof)
19:43 vincent22 cannot get the address of a method:
19:43 Mouq Ok. Thanks guys, this gives me more food for thought. I'm off to get food for lunch while that digests
19:43 vincent22 r: class c {method b { say "wow"}}; my $b = c.b; $b();
19:43 camelia rakudo-jvm 1aeb7c: OUTPUT«wow␤No such method 'postcircumfix:<( )>' for invocant of type 'Bool'␤  in any  at gen/jvm/BOOTSTRAP.nqp:1680␤  in any  at gen/jvm/BOOTSTRAP.nqp:1663␤  in block  at /tmp/tmpfile:1␤␤»
19:43 camelia ..rakudo-parrot 1aeb7c: OUTPUT«wow␤No such method 'postcircumfix:<( )>' for invocant of type 'Bool'␤  in any  at gen/parrot/BOOTSTRAP.nqp:1692␤  in any  at gen/parrot/BOOTSTRAP.nqp:1674␤  in block  at /tmp/tmpfile:1␤␤»
19:43 camelia ..rakudo-moar 1aeb7c: OUTPUT«wow␤Cannot find method 'postcircumfix:<( )>'␤  in block  at /tmp/tmpfile:1␤␤»
19:44 vincent22 r: class c {method b { say "wow"}}; my &b = c.b; &b();
19:44 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«wow␤Type check failed in assignment to '&b'; expected 'Callable' but got 'Bool'␤  in block  at /tmp/tmpfile:1␤␤»
19:44 jnthn vincent22: You're calling the method.
19:44 masak Mouq: just as well you reinvent that wheel. GGE is day-before-yesterday's technology at this point.
19:44 masak Mouq: but it represents a world order I hope we reinstate at some point: direct introspective access to Perl6::Grammar.
19:44 vincent22 jnthn: I want to get the adress and later to call it
19:45 moritz use .^can('methodname')[0] for that
19:45 jnthn .^find_method('methodname') avoids the index :)
19:45 jnthn Or just wrap it in a closure
19:45 jnthn {c.b}
19:46 jnthn Then you capture the invocant too
19:46 vincent22 Thank you
19:46 vincent22 r: class c {method b { say "wow"}}; my &b = {c.b}; &b();
19:46 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«wow␤»
19:46 vincent22 OK
19:46 jnthn If your varialble is called &b you can also just invoke using b() :)
19:47 vincent22 Thanks for the help
19:59 lichtkind joined #perl6
19:59 lichtkind hyper hyper op doesnt behave like specced
20:00 virtualsue joined #perl6
20:00 FROGGS lichtkind: example?
20:01 kvakerman joined #perl6
20:02 lichtkind FROGGS: almost none of syn example work as intended but i do now recompile to make more accurate report
20:03 FROGGS k
20:04 masak r: class Shiba { method inu { "wow" } }; my &doge = { Shiba.inu }; say doge
20:04 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«wow␤»
20:04 masak so meme.
20:05 vendethiel please don't :(.
20:06 * masak .oO( please doge't )
20:07 lue I can't find any detail on this, but I don't suppose there's a way for me to tell the CPAN multiverse not to make my real name public, were I to get an account on it, is there?
20:07 perigrin don't give it you're real name to begin with
20:07 perigrin ?
20:07 lue (I'd much prefer if I didn't have to share it with PAUSE in the first place, but instincts tell me that's a solution that won't happen)
20:08 lue perigrin: it's a requirement though. For some reason.
20:08 lichtkind cheers masak
20:08 perigrin https://metacpan.org/author/CHROMATIC
20:08 perigrin lue: ^^^ really?
20:09 perigrin https://metacpan.org/author/BARBIE # another example
20:09 FROGGS lue: just type in your nick in that field
20:09 lue perigrin: that's curious. You have to provide a real name on the signup sheet.
20:09 FROGGS lue: just lie :o)
20:09 perigrin lue: you have to provide a *string* on the signup sheet.
20:09 perigrin nothing is forcing that string to be your real name.
20:10 lue FROGGS: I was under the impression that the registration was hand-processed, and I don't think "Life U. Everything" will pass muster :P
20:10 perigrin lue: second step find a friendly Pause Admin
20:10 perigrin and explain your situation
20:10 FROGGS lue: I can walk to they guy who would hand-process it if this would be the case :o)
20:11 lue Well, I should perhaps pick a less-obvious fake name in any case, but you get the general idea :)
20:11 perigrin lue: Actually I wouldn't.
20:11 FROGGS lue: just use "lue" too, that will work out
20:11 lue FROGGS: needs a space in the civil name though :/
20:12 FROGGS ahh :/
20:12 perigrin https://metacpan.org/author/CHOCOLATE
20:12 lue at least on registration, maybe not when changing names
20:12 lue I just would like to know why CPAN requires a real name, when AFAICT it's not actually necessary.
20:12 perigrin lue: https://metacpan.org/author/AMD
20:12 perigrin I'm pretty sure you can't get more spaces than that.
20:13 perigrin again you're using this phrase "requires" that seems to be ignoring the reality
20:13 perigrin I've given you at least four examples that bely the use of "requires" there.
20:13 perigrin :)
20:13 lue perigrin: yes, I realize now I can change my real name at a later date somehow, but the registration form still insists on a real name.
20:14 perigrin https://metacpan.org/author/DAHUT
20:14 Mouq lue: L U E?
20:14 lue "Your full name (civil name)"  which talks about spaces.
20:15 perigrin lue: when I got my PAUSE ID they were suggesting that the id should be something first initial + last name ... so in my case CPRATHER
20:15 perigrin obviously that wasn't *that* required either :)
20:15 lue perigrin: I can see now that I can get around providing an actual real name, and somehow change that field after registration if desired.
20:15 * perigrin nods
20:15 lue I'm just now curious in the more-abstract question of "why *require* a full name in the first place, or at least say you do?"
20:16 perigrin because in 2003 it seemed like a good idea.
20:16 perigrin well no in 1995 it seemed like a good idea, by 2003 they'd discovered it wasn't
20:16 perigrin but haven't fixed it since.
20:17 perigrin so "John Smith" :)
20:17 lue "Poor Peter, please remember you do have a second name"
20:17 lue perigrin: I'd probably want a more obvious Doctor Who reference though. :) "Θ Σ"
20:18 perigrin funny you don't type like an ood.
20:19 perigrin I think the original intent was some kind of ... verifiability / professionalisim / accountability
20:19 lue (I should note I'm not defiantly opposed to giving out my full name; I'm just incensed that I'm seemingly required to do it in a context where it's unnecessary. I had issue putting such info on my CLA, as an example.")
20:19 lue *I had no issue
20:19 lue perigrin: I wasn't referencing the ood there :)
20:21 lue perigrin: what really strikes me as weird about the "real name" thing is that I'd expect that from sites nowadays, not sites from the era of "pseudonyms are A-OK and have you been on our newsgroup yet?". Though I can see the verifiability etc. thing.
20:21 perigrin pseudonyms were always a bit weird
20:21 perigrin I had the same reaction you did when I wanted PERIGRIN for my pauseid
20:22 perigrin luckily I had a friendly Pause Admin right there who just approved it
20:23 lue Now my question is if I should defiantly get a PAUSE ID now, or only after Perl 6 modules are supported by the infrastructure. :) [I don't do Perl 5, infinitely less to a module-writing level]
20:25 hoverboard joined #perl6
20:28 dalek panda/depends: 17b6624 | (Tobias Leich)++ | / (5 files):
20:28 dalek panda/depends: add "bundle" target that will create a tarball for uploading
20:28 dalek panda/depends:
20:28 dalek panda/depends: It builds and tests the project in cwd to reveal its dependencies,
20:28 dalek panda/depends: tries to get its hands on the distribution name and description,
20:28 dalek panda/depends: and proposes a META.info file with this just collected information.
20:28 dalek panda/depends:
20:28 dalek panda/depends: Sadly the used prompt() segfaults on moar and besides that we need
20:28 dalek panda/depends: to autodiscover the types it is going to provide, similar to the
20:28 dalek panda/depends: dependency check.
20:28 dalek panda/depends: review: https://github.com/tadzik/panda/commit/17b66240d4
20:30 Mouq FROGGS++
20:30 FROGGS I am almost prepared for wednesday \o/
20:31 Rotwang joined #perl6
20:32 lue FROGGS: how far away do you think we are from P6-on-CPAN ? I'm wondering when I should register my PAUSE account with an obviously fake name.
20:32 Mouq So.... Can we have `use v6.X` yet? even if it's just `use Perl6:git<Karlsruhe-89-g1aeb7c3>`?
20:33 Mouq Well, no that doesn't make sense
20:34 FROGGS lue: do register, I can't really say when all is merged, but my hope is that it happens in no longer than two months
20:34 FROGGS Mouq: hehe, I thought the same :o)
20:34 lue FROGGS: alright, here comes mister "Life U. Everything" for an account! :)
20:35 FROGGS yay! :o)
20:35 Mouq I suppose v6.* would refer to the Spec version that the impl follows.. so..?
20:36 FROGGS Mouq: yes, and this would mean we give the spec a concrete number, and that rakudo implements all of it (and the stuff that does not work is just a bug)
20:37 Mouq FROGGS: Rakudo versioning would be nice, though
20:37 FROGGS we have tags
20:37 colomon joined #perl6
20:38 FROGGS so it would be more like: use v6:auth<Rakudo>:ver<2014.02> or something similar
20:39 Mouq I think that would be good
20:39 lue Hm. If I'm able to edit my "Full Name" after getting a PAUSE ID (evidenced by things such as http://www.nntp.perl.org/group/perl.modules/2014/01/msg88988.html), would it be better for me to belligerently give a fake name now, or would it be better to give my real name (or something that looks like one) and change it later?
20:50 Mouq http://perlcabal.org/syn/S22.html
20:51 lichtkind FROGGS: ping
20:52 lichtkind r: say (3,4,5 <<+<< 1)
20:52 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«3 4 6␤»
20:52 lichtkind yeah same as here
20:52 lichtkind should be 4
20:52 Mouq O_o
20:52 lichtkind according to syn
20:52 Mouq Ohh
20:52 Mouq I thought the output was 3 5 6
20:53 jakesyl joined #perl6
20:53 jnthn Precednence
20:53 Mouq lichtkind: Where does it say that?
20:53 jnthn r: say (3,4,5) <<+<< 1
20:53 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«4␤»
20:53 lichtkind ah
20:53 jakesyl is this a dead project?
20:53 Mouq jakesyl: Nope
20:53 lichtkind what is dead?
20:54 jakesyl Sorry, python fan here, and leaving
20:54 jnthn Apparently, not this project :)
20:55 lichtkind jakesyl: dont worry its curable :)
20:55 lichtkind thanks mouq
20:55 * Mouq points timotimo out
20:56 lichtkind yes timo like python too seen a talk from him
20:56 btyler joined #perl6
20:57 jnthn Most folks here work with quite a range of technologies. :)
20:57 jnthn Or many folks, at least.
20:58 FROGGS lichtkind: pong
20:58 BenGoldberg nr: my $i = 0; my $x := Proxy.new: FETCH => { print "(",++$i,")"; '!' }; print "<"; print $x ~ '?'; say ">"
20:58 camelia niecza v24-109-g48a8de3: OUTPUT«(1)<(2)(3)!?>␤»
20:58 camelia ..rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c: OUTPUT«<(1)(2)(3)(4)!?>␤»
20:58 camelia ..rakudo-moar 1aeb7c: OUTPUT«<(1)(2)(3)(4)(5)(6)(7)!?>␤»
20:58 Mouq Just grepped the specs, I don't see anywhere that the precedence issue for hypers like that comes up :)
20:58 arnsholt jnthn: I've had a look at the "how to compile stuff" stuff in Perl's Config.pm, and with a bit of luck I've found what we need
20:59 Mouq p6: [[1, 2], 3] «+» [4, [5, 6]]
20:59 arnsholt My day is pretty full tomorrow, but might be able to get some hacking in Tuesday
20:59 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c, niecza v24-109-g48a8de3: ( no output )
20:59 Mouq p6: say [[1, 2], 3] «+» [4, [5, 6]]
20:59 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c, niecza v24-109-g48a8de3: OUTPUT«5 6 8 9␤»
20:59 Mouq That's pretty cool
20:59 jnthn arnsholt: yaya :)
21:00 jnthn *yay, even
21:00 * jnthn is hoping to have a better tuit supply this next week than in the last week, despite teaching :)
21:01 * FROGGS giggles
21:01 FROGGS I will have tuits this week :o)
21:03 * lue will go with the obviously fake "Life U. Everything" on PAUSE unless someone stops him.
21:03 lichtkind FROGGS: Mouq++ laready helped me out, was my braino
21:03 lichtkind my p6 talk is now almost complete, everything else will be polsih
21:03 lichtkind polish
21:04 jnthn lichtkind: Will they understand polish at the German Perl Workshop? :)
21:04 colomon JSON5::Tiny?
21:04 FROGGS k
21:04 Mouq colomon: :P what about it?
21:05 lichtkind jnthn: when not i have to invade their brains :)
21:05 colomon Mouq: wondering what it is.  (Especially since I just started using JSON::Tiny in prototype production code.
21:05 colomon )
21:06 Mouq colomon: Ahh, ok. :) http://json5.org/
21:06 colomon Mouq++
21:13 lue Actually, before I register for PAUSE, I'd still like to know how CPAN will be modified to handle Perl 6's author and version stuff (e.g. it makes no sense for any given person to "own" a Perl6 module name, because of the :auth<> thing)
21:22 lichtkind noone knows
21:23 arnsholt In large part because noone knows exactly how Perl 6 modules are going to work, in the end =)
21:25 FROGGS lichtkind: well, we have ideas about that
21:25 Mouq r: role Awesome {method gist (|p) {"An awesome "~callsame(|p)}}; my $x = {A => 42, B => 57} does Awesome; say $x
21:25 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«An awesome ("A" => 42, "B" => 57).hash␤»
21:26 FROGGS and since we are in charge to prive our way of indexing, we can allow several same named modules by different authors
21:26 lue FROGGS: I plan on trying to formally release one of my modules in the near future (both for CPAN and because it seems like good practice ☺); is =VERSION/=AUTHOR still the way to specify those things, or is there something on the P6 language braid for that.
21:26 FROGGS s/prive/provide/
21:26 FROGGS =VERSION and =AUTHOR is not yet used
21:27 FROGGS and I don't think we are going to use that soon
21:27 lue FROGGS: oh, we'll be the ones deciding how P6 modules are sorted out on CPAN? That essentially answers that :) .
21:28 FROGGS lue: that is how I understand it, yes
21:29 lue I'll just go ahead and make my PAUSE registration then; that's the only big thing I was concerned about.
21:34 lue FROGGS: will =VERSION/=AUTHOR ever be supported, or is META.info sufficient for that?
21:35 lichtkind thanks guys for help will be soon out
21:35 FROGGS lue: META.info is just for the thing you upload to PAUSE, but we need a way to introspect a compilation unit, and that is where =VERSION/=AUTHOR would be handy
21:38 FROGGS perl6-m -e 'shell q{perl6-m -e "prompt 1"}'
21:38 FROGGS 1Segmentation fault (core dumped)
21:39 jnthn Which process SEGVs?
21:40 FROGGS the inner
21:40 FROGGS and I am unable to gdb it :/
21:40 FROGGS because it somehow closes gdb's prompt
21:40 FROGGS maybe it also reaps the stdin of the inner process
21:42 FROGGS hmmm, we are ignoring the STDIN of the child...
21:44 FROGGS jnthn: yes, inheriting seems to do the trick
21:44 Mouq r: role A { has %.table is Set }
21:44 camelia rakudo-parrot 1aeb7c: OUTPUT«use of uninitialized value of type Any in string context  in any  at src/Perl6/World.nqp:1661â�¤â�¤use of uninitialized value of type Any in string contextâ�¤[31m===[0mSORRY![31m===[0m Error while compiling /tmp/tmpfileâ�¤Can't use unknown trait 'is …»
21:44 camelia ..rakudo-moar 1aeb7c: OUTPUT«use of uninitialized value of type Any in string context␤Unhandled exception: No exception handler located for warn␤   at <unknown>:1  (/home/p6eval/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:print_exception:4294967295)␤ from src/gen/m…»
21:44 camelia ..rakudo-jvm 1aeb7c: OUTPUT«use of uninitialized value of type Any in string context␤Unhandled exception: use of uninitialized value of type Any in string context␤  in warn (gen/jvm/CORE.setting:689)␤  in warn (gen/jvm/CORE.setting:685)␤  in Str (gen/jvm/CORE.setting:1037)␤ …»
21:45 jnthn FROGGS: But do we want to inherit?
21:45 Mouq Not at all annoying
21:45 jnthn FROGGS: I get it to crash here.
21:45 FROGGS jnthn: dunno, do we?
21:45 jnthn FROGGS: Well, it crrashes here in syncfile.c:eof
21:45 FROGGS I would think we need to hand over our STDIN
21:46 jnthn if ((r = uv_fs_lstat(tc->loop, &req, data->filename, NULL)) == -1)
21:46 jnthn MVM_exception_throw_adhoc(tc, "Failed to stat in filehandle: %d", errno);
21:46 FROGGS hmmm, works fine here now
21:46 jnthn It assumes there's a ->filename, but if we got the handle from a file descriptor, there won't be.
21:46 jnthn Well, should fix the bug regardless...
21:47 Khisanth joined #perl6
21:50 jnthn FROGGS: https://gist.github.com/jnthn/9455271
21:50 benabik Doesn't segfault here, but doesn't wait for input either.
21:50 masak 'night, #perl6
21:51 Mouq night masak!
22:00 [Sno] joined #perl6
22:04 virtualsue joined #perl6
22:21 hoverboard joined #perl6
22:24 timotimo 'night masak!
22:25 Mouq https://github.com/Mouq/Grammar-Expression Now for the hard part...
22:40 pecastro joined #perl6
22:45 lizmat lue: before we turn the /Perl6/ subdirectory into "law", we will check if there are any authors on PAUSE who created such a subdir
22:45 lizmat and if so, we will decide there and then how big a problem that would be
22:46 lue lizmat: If necessary, there's also /Perl_6/, /P6/, /»ö«/ ... :)
22:46 lizmat indeed
22:46 lizmat and who knows, if an author has done so in the past, it could be exactly the right thing that author did "avant a lettre"
22:46 lizmat *la
22:46 pmurias joined #perl6
22:47 timotimo what does that mean?
22:47 lue timotimo: "before the letter", though I assume deeper idiomatic meanings :)
22:47 dalek rakudo-star-daily: a3f1162 | coke++ | log/ (5 files):
22:47 dalek rakudo-star-daily: today (automated commit)
22:47 dalek rakudo-star-daily: review: https://github.com/coke/rakudo-star-daily/commit/a3f11629fc
22:48 dalek perl6-roast-data: 245625c | coke++ | / (6 files):
22:48 dalek perl6-roast-data: today (automated commit)
22:48 dalek perl6-roast-data: review: https://github.com/coke/perl6-roast-data/commit/245625c887
22:48 lizmat before it was a rule
22:48 lizmat before it was written
22:48 pmurias it would be nice to have irc.moarvm.org redirect to the moarvm channel irc log
22:48 lizmat in a way, prior art
22:49 timotimo ah
22:49 lizmat http://en.wiktionary.org/wiki/avant_la_lettre
22:50 lue I get the feeling CPAN might not appreciate /»ö«/ , though it's the most obvious "something different happens here" name :P
22:50 lizmat as long as rsync can filter on it, it should be ok
22:50 lizmat that's the most important reason for creating a subdir with a distinctive name
22:50 timotimo jnthn: apparently the Lock class on rakudo.jvm b0rked; No such method 'condition' for invocant of type 'Lock'
22:51 timotimo (i thought these changes only happened in moar-conc?)
22:51 pmurias lue: actually it still makes sense for someone to own a module name on CPAN for perl 6
22:51 lue [ I think I'll respect the Basic Authentication System and not force a "log out" of PAUSE; feels kinda cool to interact with such an old thing :) ]
22:52 lue pmurias: to word my concern better, "we shouldn't force unique module names across authors"
22:53 pmurias I would still like to have 'use Foo::Bar' use a sensible Foo::Bar
22:53 pmurias and the spec mentiones a cpan auth
22:53 lue pmurias: if you only installed one Foo::Bar, it will :) The point of :auth (and to a smaller extent :ver) is to keep from restricting module name choices on a universal basis.
22:54 lue it can be any kind of author identifier, doesn't have to be a CPAN one.
22:54 pmurias there is a cpan auth identifier
22:55 * pmurias rechecks the spec
22:55 lue yes, I'm just saying that :auth can hold any kind of identifying name, of which CPAN is one.
22:55 timotimo i thought it meant "if you specify :auth<cpan> you get the version that someone claimed on cpan"
22:57 pmurias that's what I assumed, but it hasn't been mentioned anywhere
22:57 timotimo ok
22:57 lue never seen that in the spec before.
22:57 pmurias there is :auth<cpan:PMURIAS>
22:57 lue always saw it as :auth<cpan:JRANDOM>
22:57 timotimo oh, ok
22:58 pmurias but having an official cpan author seems really helpfull
22:59 timotimo i'm not at all sure how to handle that
22:59 lizmat lue: wrt "Actually, before I register for PAUSE, I'd still like to know how CPAN will be modified to handle Perl 6's author and version stuff (e.g. it makes no sense for any given person to "own" a Perl6 module name, because of the :auth<> thing)"
22:59 timotimo if we have a way to change which one gets "the cpan auth", people's code will break if they rely on one specific version
22:59 lizmat the "owner" of a Perl 5 module is just the author of the version of that module that lives in the module list
22:59 lue timotimo, pmurias: my emerge inspiration strikes again, and says "if the name's the same, force the prospective installer to disambiguate"
23:00 timotimo if we only use that power to change from unmaintained versions to maintained forks, that'd be fine
23:00 lizmat the Perl 5 module list
23:00 lizmat Perl 6 modules will not be in there
23:00 timotimo lue: in that case, if someone decides to upload a module, user's code will break, too :)
23:00 lizmat we, as a community, need to figure out *if* we want to do that, and if so, *how* we want to support the "official" version of a module
23:00 lue timotimo: not unless they simply *must* install every author's Foo::Bar :)
23:00 pmurias lue: and how is the prospective installer supposed to choose?
23:01 lue pmurias: installer presents a list of choices (Foo::Bar:auth<cpan:JRANDOM>, Foo::Bar:auth<cpan:LWALL>, ...)
23:01 Mouq joined #perl6
23:01 lizmat the perl 5 installers just read the Perl 5 module list that says: e.g : Thread::Queue::Any -> ELIZABETH/ThreadQueueAny.tgz
23:02 pmurias lue: and which of those is the correct one?
23:02 lue pmurias: depends on what the person choosing needs.
23:02 lizmat a perl 6 module installer could also read such a list (if there is going to be any)
23:02 timotimo and how will they figure that out?
23:02 timotimo and what if they are getting that module as a dependency from some other module?
23:02 lizmat that's why we need to figure out how to specify that in META.info
23:03 lue timotimo: some sort of recommended module thing might be good there, though at least from my emerge-inspiration, you tend to know already.
23:03 lizmat unlike Perl 5, we can "freeze" dependencies to a specific author / version
23:04 lue As a side note, I'm OK if we discover we can't sanely support duplicate module names, I'm just arguing off what the synopses currently allow for :)
23:04 timotimo but can we say "the module that was 'the official module' as of 2014-05-04'"?
23:04 lizmat so, each modules dependencies could almost have their own "universe" of dependencies
23:04 timotimo oh no, i'm all for allowing duplicated names
23:04 lue timotimo: presumably we won't record it as "offical module", but resolve it first.
23:05 timotimo something corecatcher made me aware of is that cpan is supposed to get a better model for forking other people's modules so you can "become the new maintainer"
23:05 lizmat timotimo: if that is the version number
23:05 lue tr/official module/module v0.1 by JRANDOM/ , essentially
23:05 pmurias timotimo: it's possible to hand over modules on cpan
23:06 pmurias timotimo: currently
23:06 lizmat pmurias, timotimo: again, this is only really about what module is in the (Perl 5) module lust
23:06 timotimo hmm
23:06 * lue wonders if portage's SLOTs thing is analogous to P6's auths
23:06 timotimo hm, i don't think so
23:06 lizmat so suppose I want to hand over my module Thread::Queue::Any to JRANDOM, the *module list* entry would chanfe
23:06 lizmat change
23:06 timotimo slots is about having multiple major versions installable at the same time
23:07 lizmat from ELIZABETH/ThreadQueueAny.tgz to JRANDOM/ThreadQueueAny.tgz
23:09 lue I wonder if we can adopt CPAN-for-P5's "maintainer" as a way of pointing to the recommended, instead of only, module with that name for CPAN-for-P6.
23:09 lue timotimo: I'm aware, I was just thinking if the two can be conceptualized the same way.
23:10 lizmat well, technicall, every author is the maintainer of the distributions that were uploaded
23:10 lizmat it's more a recommendation list I guess, for Perl 6
23:10 timotimo hmm
23:10 lue timotimo: thinking of some eix-like thing that lists stuff as    Foo::Bar \n (JRANDOM) 0.1 0.2 0.2-r1 \n (FOOBAR) 1.5 2.0
23:11 timotimo should we have sections of "documentation" that would be collected and pushed in the user's face?
23:11 timotimo (one piece for developers, one for users perhaps)
23:11 pmurias pushed in the face when?
23:11 lizmat we can think about that, but the most important thing to me
23:11 timotimo when panda is finished installing a bunch of packages
23:12 lizmat is to get the basic PAUSE / CPAN-testers machinery in such a state that Perl6 distributions can be uploaded
23:12 lizmat for that, we need cooperation from the right guys
23:12 timotimo right, the rest is probably bikeshedding
23:12 lue timotimo: something like  "documentation can be accessed with  perl6 --doc=Man -MFoo::Bar" ?
23:12 lizmat after that works, we can start figuring out which installer is going to use what meta-info from PAUSE
23:12 pmurias seems sensible
23:13 lue lizmat: agreed, we should prioritize just enough to make things work at all.
23:13 timotimo lue: something like "thank you for installing Foo::Bar. it can be used to Foo your Bars. For more information call perl6 --doc=man -MFoo::Bar"
23:13 lichtkind timotimo: seen your talk on youtube lately, a bit disorganized but not bad
23:13 lizmat sleep&
23:13 timotimo absolutely disorganized, aye
23:14 pmurias link?
23:14 lue timotimo: I could see some sort of oneliner key in META.info for that perhaps :) Though hopefully you can standardize the "how to access" message.
23:14 timotimo it's in german unfortunately, pmurias
23:14 lue ♞ lizmat o/
23:14 timotimo and the "slides" (rather: the output of my display) was very hard to read on the projector
23:14 timotimo only in the recording, though
23:15 Mouq r: {$^a}(1,:test)
23:15 camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«Unexpected named parameter 'test' passed␤  in block  at /tmp/tmpfile:1␤␤»
23:31 timotimo do we have something like "try to decode this as utf-8 and whenever there's some garbage data, put in the replacement character/throw an exception/call this closure with the data/..."?
23:38 dalek specs: 2be6bfa | (Timo Paulssen)++ | S32-setting-library/Containers.pod:
23:38 dalek specs: just a tiny whitespace fix.
23:38 dalek specs: review: https://github.com/perl6/specs/commit/2be6bfa128
23:39 timotimo just doin' my daily contribution
23:39 timotimo :P
23:39 timotimo TimToady: i'd like to get your opinion on how to handle decoding trouble (and maybe encoding trouble as well?)
23:46 timotimo http://docs.python.org/2/howto/unicode.html#the-unicode-type this is python's prior art, see the second blob of code for the "errors" named argument
23:49 timotimo additionally there's a errors argument for the encode method named "xmlcharrefreplace"
23:49 timotimo which is kind of neat
23:50 lue timotimo: sounds like a useful thing for encode, though just to be different maybe call it :fallback instead of errors :)
23:52 timotimo right.
23:54 TimToady just make it flexible enough that you can replace either with something fixed, or something that encodes the value some other way that is legal #BAD[FFFF] or some such
23:54 timotimo aye.
23:54 timotimo that'd be the "call this closure" variant i've suggested
23:55 timotimo unicode already specs a replacement character for encoding errors, iirc
23:56 timotimo TimToady: though i had hoped you'd actually come up with some sensible wording :)
23:57 timotimo Perl 6 needs to be a beacon of hope WRT encoding/decoding and handling buffers vs strings
23:58 * TimToady is a bit daylight-savings-time-lagged today...
23:59 timotimo i think in the future i really need to rub some coins and bills on my face

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

Perl 6 | Reference Documentation | Rakudo