»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
tadzik | isn't the second callable in a scalar container? | 00:00 | |
TimToady | m: (my $x = 42) += 1; say $x | ||
camelia | rakudo-moar 1aeb7c: OUTPUT«43» | 00:01 | |
TimToady | that's returning the ccontainer | ||
m: (my &x = {}) = sub foo () {} | |||
camelia | rakudo-moar 1aeb7c: OUTPUT«Type check failed in assignment to '&x'; expected 'Callable' but got 'Hash' in block at /tmp/abw2KRcOLr:1» | ||
jnthn | r: (my $x = 42) += 1; say $x | ||
camelia | rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«43» | ||
tadzik | oh wow | ||
r: my &x = Callable | |||
camelia | ( no output ) | ||
..rakudo-moar 1aeb7c: OUTPUT«Type check failed in assignment to '&x'; expected 'Callable' but got 'Callable' in block at /tmp/tmpfile:1» | |||
jnthn | It's meant to be returning the container | ||
TimToady | so assignment to &x isn't returning the container? | ||
to my &x that is | 00:02 | ||
tadzik | there, golfed it : | ||
jnthn | tadzik: oh, wow... | ||
r: my @a = Positional; | 00:03 | ||
camelia | ( no output ) | ||
jnthn | ah, but that's different... | ||
TimToady | m: (my &x = { say "hi" }).wrap({ callsame; say "lo" })() | ||
camelia | rakudo-moar 1aeb7c: OUTPUT«No such method 'wrap' for invocant of type 'Block' in block at /tmp/rVrJm3Wdpm:1» | ||
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» | ||
jnthn | r: role R { }; my R $r = R; | ||
camelia | ( no output ) | ||
..rakudo-moar 1aeb7c: OUTPUT«Type check failed in assignment to '$r'; expected 'R' but got 'R' in block at /tmp/tmpfile:1» | |||
jnthn | Aha! | ||
TimToady | no pun? | ||
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" })() | ||
camelia | rakudo-moar 1aeb7c: OUTPUT«Cannot find method 'postcircumfix:<( )>' in block at /tmp/frw4P5oBlu:1» | ||
TimToady | m: my &x = sub { say "hi" }; &x.wrap({ callsame; say "lo" }).() | ||
camelia | rakudo-moar 1aeb7c: OUTPUT«Cannot find method 'postcircumfix:<( )>' in block at /tmp/wuegN7PDNg:1» | ||
TimToady | hmm | 00:07 | |
m: my &x = sub { say "hi" }; &x.wrap({ callsame; say "lo" }).WHAT.say | |||
camelia | rakudo-moar 1aeb7c: OUTPUT«(WrapHandle)» | ||
TimToady | oh | ||
duh | |||
m: my &x = sub { say "hi" }; &x.wrap({ callsame; say "lo" }); &x | |||
camelia | ( no output ) | ||
TimToady | m: my &x = sub { say "hi" }; &x.wrap({ callsame; say "lo" }); x() | ||
camelia | rakudo-moar 1aeb7c: OUTPUT«hilo» | ||
TimToady | m: (my &x = sub { say "hi" }).wrap({ callsame; say "lo" }); x() | 00:08 | |
camelia | rakudo-moar 1aeb7c: OUTPUT«hilo» | ||
TimToady | okay | ||
jnthn | yeah, I think I see it. | 00:09 | |
00:13
rurban left
00:14
dmol left
00:18
pmurias left
00:26
BenGoldberg joined
|
|||
lue | Is there anything out there that details how putting Perl 6 stuff on CPAN/PAUSE would happen ? | 00:27 | |
00:27
hoverboard left
00:29
hoverboard joined
|
|||
jnthn spectests a fix | 00:30 | ||
All but one test of supply.t passes with that done | |||
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:34 | |
00:36
denisboyun left
|
|||
lue | BenGoldberg: nope, but that shouldn't be an issue right now because CPAN doesn't currently do Perl 6 :) | 00:38 | |
Mouq | jnthn++ | 00:40 | |
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:43 | ||
jnthn | Ugh, seems I regressed something in one of the roles tests. | 00:45 | |
Tired...will give it another look tomorrow | |||
'night, #perl6 | |||
TimToady | o/ | ||
lue | ♞ jnthn o/ | ||
BenGoldberg | In order to get cpan to do perl6, it would need to be made multi-lingual | ||
And yet, remain backwards compatible with the various perl5-only cpan tools. | 00:46 | ||
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 | |
00:47
raiph joined
|
|||
BenGoldberg | Right :) | 00:47 | |
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:50 | |
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:51 | |
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:52 | |
BenGoldberg | blag? | 00:53 | |
lue | blog :) | ||
BenGoldberg | Ahh | ||
. o O (blah + blog = blag) | |||
geekosaur | blag: xkcd.com/148/ | ||
TimToady reads it as blog + brag :) | 00:54 | ||
00:56
hoverboard left
|
|||
BenGoldberg | .ud blag | 00:57 | |
.ping | |||
yoleaux | There is no ping command; nor can this be construed as a response. | ||
01:04
hoverboard joined
|
|||
BenGoldberg | . o O (Yoleaux no longer does urban dictionary lookups? How sad) | 01:06 | |
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:07 | |
01:10
hoverboard is now known as baller
01:23
baller is now known as hoverboard
|
|||
timotimo is back | 01:27 | ||
seems like we have most of moar-conc by now. cool! | |||
colomon | \o/ | 01:32 | |
grondilu | that's fantastic. Can we hope a merge into nom soon? | 01:39 | |
I see moar at 100% on github.com/coke/perl6-roast-data/b..._rates.csv | 01:40 | ||
is that for real? | |||
timotimo | moar does unicode better than jvm at the moment :) | 01:44 | |
grondilu | k | ||
timotimo | and better than parrot, too | ||
our moarvm unidb is more capable than libicu apparently | 01:45 | ||
or maybe it's just a SMOP to tickle the data we need out of it | |||
colomon | that's a lot of tests, though. | 01:46 | |
timotimo | "Synopsis", "pass","fail","todo","skip","plan","spec" | 01:47 | |
colomon | 200 more passing than JVM? | ||
that seems odd | |||
(and awesome if true) | |||
timotimo | "S15", 234, 0, 0, 0, 234, 283 | ||
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 | ||
github.com/perl6/roast/blob/master.../uniname.t - tests like these | |||
they *should* be doable on parrot and probably on java, too | |||
colomon | ah, so we've added hundreds of new tests? | 01:49 | |
timotimo | yeah. we cheated :P | 01:51 | |
colomon | that's better than JVM regressing. :) | 01:53 | |
timotimo | :) | 01:54 | |
i'm going to bed now | |||
gnite! | |||
colomon | o/ | ||
www.roguebasin.com/index.php?title=...lenge_2014 | |||
02:10
klapperl_ joined
02:14
klapperl left,
kaare_ joined
02:16
FROGGS_ joined,
kaare_ left
02:17
kaare_ joined
|
|||
colomon wishes p6 were fast / mature enough to handle the current code he is writing. | 02:18 | ||
… actually ... | |||
02:20
FROGGS left
|
|||
grondilu thinks he should really read S17 now that it is coming (he did not use JVM). | 02:20 | ||
02:21
raiph left
|
|||
lue | blag toast! rdstar.wordpress.com/2014/03/09/perl6-and-cpan/ | 02:42 | |
02:44
ilbot3 left
|
|||
colomon | rakado-moar + JSON::Tiny seems pretty fast, at least on my toy data... | 02:44 | |
BenGoldberg | What's happened to pugs? Back in 2013-09-18, it was passing 9531 tests, and then the number of tests that it passes goes down and down and down. On 2014-02-24 it only passed 6337 tests, and then it's down to 19 or 0. | 02:45 | |
colomon | dunno exactly, but we keep changing the spec... | ||
02:46
ilbot3 joined
|
|||
Mouq | BenGoldberg: Spectests aren't run on the same machine anymore | 02:46 | |
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. | ||
colomon | Mouq: there's a perl6-ncurses in the ecosystem, I don't know anything about it. | 02:48 | |
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. | ||
Mouq | lue: Re: rdstar.wordpress.com/2011/08/06/ide...ve-perl-6/ | 02:50 | |
lue: Is "graphical depiction of the Perl 6 type hierarchy" === what we have at doc.perl6.org | |||
? | |||
lue | Mouq: it's also rdstar.wordpress.com/2012/11/22/the...partially/ :) | 02:51 | |
02:53
skids left
|
|||
Mouq | lue: Sweeet :) Lol @ rdstar.files.wordpress.com/2012/11/..._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
|
|||
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:10 | |
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 | |
s/the CPAN/that CPAN/ | |||
Mouq | lue: ok, that makes sense | 03:12 | |
03:14
hoverboard left
03:15
wooden joined
03:16
felher joined
|
|||
colomon vastly prefers programming in p6 to p5. | 03:23 | ||
Mouq | ikr | 03:25 | |
03:34
rurban joined
03:48
beastd left
03:49
__thou joined
04:03
grondilu left
04:06
flussence left,
flussence joined
|
|||
Mouq is annoyed we don't have a precendence parser available for standard Perl 6 | 04:11 | ||
We have STD.pm6's EXPR, but that cheats a bunch | 04:12 | ||
TimToady | there are only about six spots it cheats :) | ||
actually, there's only 3 lines labelled # XXX P6 at the moment | 04:13 | ||
Mouq | TimToady: I don't understand what the pmc-based self.MATCHIFYr does | 04:14 | |
TimToady | see also (sub (*@values) { | ||
return op.() unless @values.gimme(1); | |||
my $result := @values.shift; | |||
return op.($result) unless @values.gimme(1); | |||
my int $i; | |||
while my int $c = @values.gimme(1000) { | |||
$i = 0; | |||
$result := op.($result, @values.shift) | 04:15 | ||
while ($i = $i + 1) <= $c; | |||
} | |||
$result; | |||
}) | |||
oops, sorry | |||
rosettacode.org/wiki/Parsing/Shunti...thm#Perl_6 | |||
Mouq | :O | ||
So that assumes that its input has already been tokenized, whereas EXPR tokenizes as it runs | 04:18 | ||
Or am I mistaken? | |||
TimToady | EXPR calls <termish> and <infixish> to tokenize | ||
MATCHIFY mostly calls _REDUCE, which mostly is checking to see if there's an associated ACTTION routine | 04:19 | ||
Mouq | So EXPR just tricks the <infixish> action that it swallowed up the <EXPR>s around it? | 04:20 | |
s/action/action method/ | 04:21 | ||
TimToady | yeah, basically | 04:22 | |
a little more complicated with P6 because of list infixes | |||
whoops, time to go pick up quietfanatic from the train station.... | 04:24 | ||
afk & | |||
Mouq | o/ | ||
lue | Finally got around to updating the pages on that navbar in my blog :) | 04:25 | |
04:30
nebuchad` joined
04:32
nebuchadnezzar left,
perlpilot joined
04:34
PerlJam left
05:04
btyler joined
05:24
BenGoldberg left
05:25
Ben_Goldberg joined,
btyler left
|
|||
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» | ||
Mouq | r: my %e = :a<5>, :c<7>; say %e<a b c>:exists | ||
camelia | rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«True False True» | ||
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«===SORRY!=== Error while compiling /tmp/tmpfileVariable '$one__' is not declaredat /tmp/tmpfile:1------> if %e<a b c> -> $one, $two { say "$one__⏏$two" } expecti…» | 05:30 | |
Mouq | r: my %e = :a<5>, :c<7>; if %e<a b c> -> $one, $two { say "$one __$two" } | ||
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» | ||
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» | ||
05:33
Ben_Goldberg left
05:57
__thou left
|
|||
ingy | Mouq: hi | 06:07 | |
Mouq | ingy: Sup | 06:09 | |
ingy | what's the fastest way to install a perl6 on ubuntu 12.04 | ||
Mouq | ingy: git clone and perl Configure.pl? | 06:13 | |
:P | |||
What we should aim for: www.python.org/downloads/release/python-335rc2/ | 06:21 | ||
Oh, looks like for Ubuntu that would just be a source tarball anyway | |||
06:24
denyska left
|
|||
Mouq | Can we have a ./configure-moar + ./configure-parrot + ./configure-jvm that have simple, sane defaults? | 06:25 | |
Just to make things as painless as possible | |||
lue would love if Moar was more like Parrot in the "default to /usr/local like normal people" department :) | 06:26 | ||
moritz | well, most normal users don't have write privs to /usr/local/, which is why ./isntall is the saner default | 06:29 | |
lue | .oO(/usr/local is the conventionaler default though) |
06:31 | |
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:33 | ||
06:36
darutoko joined
|
|||
Mouq → bed | 06:36 | ||
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:42
kaare_ left,
Mouq left
|
|||
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:45 | |
moritz | the "convention" and "majority" arguemnt is like saying "most programmers are PHP programmers, so we should be PHP compatible" | 06:56 | |
06:56
vincent22 joined
|
|||
lue | moritz: I do think your argument is good, by the way, I just don't like it :) | 06:56 | |
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.) | ||
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‽" | ||
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 :) | ||
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:02 | ||
moritz | well, that's fixable, I guess | 07:03 | |
not trivial, though | |||
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
|
|||
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 | |
something to look into tomorrow, assuming no-one else does first :) . ♘ #perl6 o/ | |||
moritz | \o lue | 07:07 | |
FROGGS_ | lue: I can say something about Perl6 + CPAN in about a week | 07:22 | |
07:23
daniel-s left
07:24
daniel-s joined
07:32
lue left
07:55
lue joined
07:58
cognominal left
07:59
cognominal joined
|
|||
nwc10 | TimToady++ # rakudo.jvm,2014-03-08,99.31%,1fb3aff,28982,8,608,1505,31103,28583, | 08:00 | |
parrot at 99.04% | 08:01 | ||
MoarVM has quite a lead now. | |||
08:01
xinming__ joined
08:04
xinming_ left
08:11
telex left
08:12
telex joined
08:21
rurban left
08:44
kurahaupo joined
08:46
virtualsue joined
09:09
virtualsue left
09:13
FROGGS_ is now known as FROGGS,
sftp_ left
|
|||
FROGGS | tadzik: can you please apply that PR? github.com/tadzik/File-Find/pulls | 09:13 | |
09:13
sftp_ joined
09:28
spider-mario joined
09:39
virtualsue joined
|
|||
masak | can we create daemonic processes in Perl 6? | 09:43 | |
in many languages, that hangs off the threading system in some way. | |||
09:44
virtualsue left
|
|||
timotimo | code.activestate.com/recipes/278731...ython-way/ ← :\ | 09:44 | |
xfix | std: if True { } elseif True {} | 09:45 | |
camelia | std 09dda5b: OUTPUT«===SORRY!===Please use 'elsif' at /tmp/PFFkd57dhw line 1:------> if True { } elseif ⏏True {}Confused at /tmp/PFFkd57dhw line 1:------> if True { } elseif ⏏True {} expecting any of: f…» | ||
masak | std: if True { } else if True {} | 09:47 | |
camelia | std 09dda5b: OUTPUT«===SORRY!===Please use 'elsif' at /tmp/K3eI04LGpb line 1:------> if True { } else if ⏏True {}Confused at /tmp/K3eI04LGpb line 1:------> if True { } else if ⏏True {} expecting any of:…» | ||
timotimo | std: if True { } elif True { } | ||
camelia | std 09dda5b: OUTPUT«===SORRY!===Strange text after block (missing comma, semicolon, comment marker?) at /tmp/8jHDAUMpPJ line 1:------> if True { }⏏ elif True { } expecting any of: horizontal whitespace statement_controlPars…» | ||
timotimo | r: if True { } elif True { } | ||
camelia | rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileIn Perl 6, please use "elsif' instead of "elif"at /tmp/tmpfile:1------> if True { } elif ⏏True { } expecting any o…» | ||
09:53
dmol joined
10:05
tgt joined
10:06
Rotwang joined
10:30
denis_boyun joined
|
|||
lizmat | lue and others: regarding rdstar.wordpress.com/2014/03/09/perl6-and-cpan/ | 10:31 | |
for all practical purposes, PAUSE *is* a place for authors to drop their tarballs | |||
CPAN (for Perl 5) is nothing more than a layer on top of that "dropbox" | 10:32 | ||
every author on CPAN has its own directory, and its own tarballs in there | |||
FROGGS | rdstar? | ||
O.o | |||
lizmat | with distributions that may or may not conflict with the "official" version of a Perl 5 distribution | 10:33 | |
so wrt to authority and versioning, everything is more or less in place already | |||
the big thing that is stopping people from uploading Perl 6 modules to PAUSE, is CPAN-testers really | |||
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 | ||
masak | lizmat++ # investigating this | ||
lizmat | that is why the following ideas were formed at the last QA Hackathon on Lancaster | ||
1. Perl 6 distributions must have a flag that indicate they're a Perl 6 distribution | 10:35 | ||
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 | ||
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 | |
and put the distribution in there | |||
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:38 | ||
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? | ||
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 | ||
lizmat | yes, but that is all front end layer | 10:43 | |
the dist itself just lives in the top dir of the author's directory, usually | |||
3. the Perl 6 community will need to create it's own indexing logic for Perl 6 modules on PAUSE | 10:44 | ||
and to work out the internal format of META.info | |||
FROGGS | yes | ||
lizmat | and, so I was told by maintainers of CPAN last year, please don't make the same mistakes that they made | ||
FROGGS | but anyway, who is behing rdstar? | 10:45 | |
lizmat | with META.yaml :-) | ||
FROGGS | okay, I need to know about their mistakes then :o) | ||
lizmat | you will be able to ask them :-) | ||
next week | |||
FROGGS | yeah | ||
lizmat | my plan for next week's QA Hackathon is: | 10:46 | |
1. tell CPAN(-testers) that the existence of META.info is the flag for Perl 6 distribution | |||
2. make sure they all implement this in the current CPAN/PAUSE logic | |||
3. work on the internal structure of META.info, together with CPAN people and packagers like sno | 10:47 | ||
4. work on getting a CompUnitRepo that will install from CPAN | |||
FROGGS | yes, we need to switch from projects.json to CPAN somehow | 10:48 | |
lizmat | 5. if all works out, get the search.cpan.org / metacpan people to show Perl 6 distributions as well | 10:49 | |
6. if that works out, maybe even get cpanm to be able to install Perl 6 modules (one can dream, right?) | |||
FROGGS | :o) | 10:50 | |
I am working on a bundle target for panda right now btw | |||
lizmat | cool! | ||
there shouldn't be just one way to install modules :-) | 10:51 | ||
TIMTOWTIT | |||
TIMTOWTII | |||
rather | |||
10:51
rindolf joined
|
|||
FROGGS | that bundle target should propose a META.info and zip it up for uploading to PAUSE | 10:52 | |
lizmat | cool | ||
FROGGS++ | |||
FROGGS | :o) | ||
10:54
pmurias joined
|
|||
FROGGS | ahh, lue is doing rdstar? | 10:55 | |
lizmat | apparently :-) | ||
tadzik | FROGGS: sure, done :) | 10:57 | |
FROGGS | tadzik++ # \o/ | 10:58 | |
lizmat | afk& | ||
tadzik | FROGGS++ :) | ||
11:18
kaare_ joined
11:53
xenoterracide left
11:59
zakharyas joined
12:06
nebuchad` is now known as nebuchadnezzar
12:10
grep0r left
12:48
spider-mario left
12:53
pmurias left
12:55
colomon_ joined
12:56
colomon left,
colomon_ is now known as colomon
13:00
spider-mario joined
13:03
zakharyas left
13:18
daniel-s left
13:24
kivutar left
|
|||
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» | ||
..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…» | |||
..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…» | |||
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 | ||
r: say $*FOO | 13:55 | ||
camelia | rakudo-moar 1aeb7c: OUTPUT«===SORRY!===Dynamic variable $*FOO not found» | ||
..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» | |||
..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» | |||
FROGGS | perhaps class Failure should have a postcircumfix:<{ }> that returns itself? | ||
would that be sensible? | 13:56 | ||
13:56
grondilu joined
|
|||
timotimo | hm, kinda like Nil? | 14:06 | |
FROGGS | r: say Nil<hu?> | 14:08 | |
camelia | rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«Nil» | ||
FROGGS | yes :o) | ||
timotimo implemented a little cache to hold the strings for the lowered parameter names | |||
could shave off a megabyte or two | 14:09 | ||
with cache: 66.63user 0.22system 1:07.09elapsed 99%CPU (0avgtext+0avgdata 605884maxresident)k | 14:10 | ||
jnthn | What was it without? | 14:11 | |
timotimo | gimme a minute. | ||
jnthn | :) | ||
.oO( If I made the darn setting compile faster I'd not have to wait a minute... ) |
|||
FROGGS | make it faster then :o) | 14:12 | |
timotimo | without cache: 66.26user 0.19system 1:06.69elapsed 99%CPU (0avgtext+0avgdata 606332maxresident)k | ||
so half a megabyte from __lowered_param_$i alone | |||
we might want a more general solution in some other place ... | 14:13 | ||
FROGGS | what is the the perl6ish way to get an intersection of two lists? | 14:18 | |
-the | |||
tadzik | I'll turn them into sets, if you don't care for the ordering that much | ||
FROGGS | ordering does not matter at all | 14:19 | |
moritz | or a very idiomatic and slow way is @a.grep: any @b; | ||
FROGGS | can I get intersection also when the elements are hashes? | ||
ahh | 14:20 | ||
tadzik | ha, that's clever | ||
timotimo | it may be easier to @a.grep: set @b | 14:21 | |
will that work? | |||
TimToady | should | 14:22 | |
timotimo | i think smartmatch semantics should do (elem) in that case | ||
TimToady | yeah, might not work with hashes in @a | ||
14:23
Rotwang left
|
|||
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«===SORRY!=== Error while compiling /tmp/tmpfileTwo terms in a rowat /tmp/tmpfile:1------> 3, 4, 5; my @b = 4, 5, 6, 7, 8; say @a ⏏(&&) @b expecting any of: …» | ||
TimToady | intersecting two sets would be safer in that case | ||
masak | hm. | ||
14:24
salv0 left
|
|||
timotimo mumbles something about itemization | 14:24 | ||
jnthn | r: say set(<b e e f>) (&) set(<b e e r>) | ||
camelia | rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«set(b, e)» | ||
masak | r: my @a = 1, 2, 3, 4, 5; my @b = 4, 5, 6, 7, 8; say @a (&) @b | ||
camelia | rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«set(4, 5)» | ||
masak | ah, yes. | 14:25 | |
jnthn | oh, cool, it even coerces. :) | ||
masak | r: my @a = 1, 2, 3, 4, 5; my @b = 4, 5, 6, 7, 8; say (@a (&) @b).list | ||
camelia | rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«4 5» | ||
timotimo | jnthn: i don't hear "oh, cool, it coerces" often :D | ||
masak | r: say 1..5 (&) 4..8 | 14:26 | |
camelia | rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileOperators '..' and '..' are non-associative and require parenthesisat /tmp/tmpfile:1------> say 1..5 (&) 4.⏏.8 exp…» | ||
masak | r: say (1..5) (&) (4..8) | ||
camelia | rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«set(4, 5)» | ||
14:42
salv0 joined
|
|||
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 | ||
TimToady | well, except insofar as [+] oughta do that too | ||
14:56
guru joined,
guru is now known as Guest83843
14:57
[Sno] left,
Guest83843 is now known as ajr_
15:03
[Sno] joined
15:17
zakharyas joined
|
|||
timotimo | p6: sub foobar() { say "i've done it!" }; &foobar; | 15:21 | |
camelia | ( no output ) | ||
timotimo | why no "useless use of &foobar in sink context"? | ||
p6: sub foobar() { say "i've done it!" }; &foobar; 1; | |||
camelia | ( no output ) | ||
moritz | well, we have a known bug that the last statement doesn't get compile-time sunk | 15:22 | |
butw ith trailing ;1 it rally should | |||
oh, I think I know why | |||
hoelzro | is precompilation covered in one of the S's? | ||
moritz | because otherwise, sub foo { } might also warn :-) | ||
timotimo | well, sub foo { } is a declaration, though | ||
15:22
xragnar_ joined
|
|||
timotimo | and &foo is just a mention | 15:22 | |
15:23
xragnar is now known as Guest4820,
Guest4820 left,
xragnar_ is now known as xragnar
|
|||
timotimo | so that should be differentaible | 15:23 | |
differentiable* | |||
15:23
kurahaupo left
|
|||
moritz | it should be, yes | 15:26 | |
timotimo | masak: feel like submitting this LTA rakudobug? :) | ||
though it's not quite as nasty as in python | |||
where lack of () directly means mention instead of use | |||
moritz | same in JS and C | ||
timotimo | in perl 6 you have to do a bit of extra work to get a mention instead of a use | 15:27 | |
15:39
grep0r joined
15:40
grep0r left
15:41
grep0r joined
15:44
grep0r left,
[Sno]_ joined
15:46
[Sno] left,
[Sno]_ is now known as [Sno]
15:55
grep0r joined
|
|||
masak submits rakudobug | 15:56 | ||
fwiw, I don't feel Python's and JavaScript's solution to be nasty at all. | 15:59 | ||
timotimo | it's just a gotcha | 16:00 | |
masak | it's a different tradeoff. everything is. | ||
timotimo | aye | ||
well, if you warn about statements without effect, it's not that bad :) | |||
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
grep0r left
|
|||
masak | that, correctly understood, encourages various FP practices. | 16:00 | |
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
|
|||
timotimo | FWIW, i feel the way perl 6 approaches calling vs mentioning of subs is very nice. | 16:03 | |
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 | |||
so ... i suppose it's just "undefinedness" | 16:04 | ||
masak | allegedly, Python's object model was inspired by Perl's. | ||
16:04
grep0r joined
|
|||
timotimo | but python is much older than perl 5, isn't it? | 16:04 | |
and perl before 5 didn't have a proper object model, did it? | 16:05 | ||
geekosaur | didn't have an object model at all | ||
arnsholt | Yeah, I was under the impression it was the other way 'round too | ||
16:08
[particle] left
16:09
BenGoldberg joined
|
|||
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 | ||
timotimo | oh? | ||
is that not the case? | |||
vendethiel | no, functions in JS does not correspond to their eta-expansion | 16:12 | |
which is really confusing | |||
I mean that `a.b(c);` is not the same as `var f = a.b; f(c);` | |||
timotimo | oh? | 16:13 | |
o_O | |||
well, JS is insane anyway :) | |||
arnsholt | Yeah, that sounds really weird. What's the difference? | ||
timotimo | i'd like to know, too | ||
var f = a.b actually calls a.b()? | |||
masak | the this binding. | ||
vendethiel | In `a.b(c)`, `b` will have `this = a` | ||
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` | ||
arnsholt | Oooooooh, the infamous this | ||
masak | vendethiel: that doesn't mean that functions don't correspond to their eta-expansion, though. | ||
timotimo | ah | ||
masak | vendethiel: it just mean that if you don't call a method in the "intended" way, 'this' is busted. | ||
timotimo | right, that's what python has "bound methods" for | 16:15 | |
masak | Python gets that very right. | ||
timotimo | and i'm glad perl 6 requires the user to create a closure that closes over the invocant. | ||
masak | I've yet to understand fully how it manages to get it that right. | ||
timotimo | that makes it both right and explicit and unsurprising | ||
masak | Go, from 1.1 or so, also gets this very right. | ||
vendethiel | (but go gets everything else wrong, so ...) | ||
arnsholt googles bound methods | 16:16 | ||
vendethiel | that means that `a(function (b) { foo.bar(b); })` is not the same as `a(foo.bar);` | ||
masak | I don't like Ruby's solution, but I don't remember why. | ||
16:16
colomon left
|
|||
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. | ||
timotimo | how does ruby do it? | ||
vendethiel | .method :abc | 16:17 | |
masak | vendethiel: you're just expecting that eta-expansion will be valid for method expressions. it isn't. | ||
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 | ||
I really, really should get around to reading SICP | |||
timotimo | what's your comments on the way perl 6 does "mentioning of methods"? | ||
masak | vendethiel: yes, it *is* a weakness of JS. | 16:20 | |
vendethiel | you just can't rely on eta-conversion in JS | ||
masak | vendethiel: funnily enough, I've never seen a complete suggested solution to it. | ||
vendethiel: nor to the hated problem with 'this' in nested functions. | |||
vendethiel | well, people who like that also like prototypal inheritance I guess :P | 16:21 | |
in coffee/ls we provide a solution for this in nested function | |||
in ls we also have the bound access `a~b` which is `a.b.bind(a)` | |||
masak | so, like Python. | ||
vendethiel | I really don't know python well, so I'll have to take your word on that :). | 16:23 | |
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 | ||
which means JS library usually have to use their own `.bind()` not to suffer perf issues | |||
masak | vendethiel: | 16:25 | |
>>> class C: | |||
... def foo(self): | |||
... print "OH HAI" | |||
... | |||
>>> m = C().foo | |||
>>> m() | |||
OH HAI | |||
16:28
cooper left
|
|||
vendethiel | masak: ls> f = (new class => c: (-> Math.random!); b: ~> @c!)b; console.log f! | 16:29 | |
0.504... | |||
~> means bound method, -> is normal method | |||
also using -> for b and then `)~b;` would work the same | 16:30 | ||
16:30
pmurias joined
|
|||
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. | ||
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. | ||
vendethiel | I like it, though. | ||
masak | vendethiel: but note that only the symbol is rebound. not the underlying object. | ||
pmurias | wouldn't the perl6 equivalent of the javascript foo.bar be taking the method out using the meta model? | 16:33 | |
masak | yes, something like that. | 16:34 | |
.^can, for example | |||
vendethiel | masak: do you think that everything compiling to JS is a bad thing :) ? | 16:35 | |
masak | vendethiel: oh, au contraire. | ||
vendethiel | tant mieux :) | ||
masak | vendethiel: I think the syntactic/semantic experimentation is very exciting. | 16:36 | |
vendethiel: and AFAIK it's actually informed ES6 a fair bit. | |||
especially CoffeScript and TypeScript. | |||
vendethiel | masak: yeah, short function syntax etc come from Coffee | ||
Brendan Eich likes it | |||
I'm not sure TS did influence it alot, since it came some time after ... I don't really like Typescript anyywa | 16:38 | ||
although it's better than dart which doesn't even typecheck, TS type system is unsound | |||
and a type t is actually an untagged union t|null|undefined | |||
16:39
cooper joined
|
|||
masak | so far, I'm more excited about TypeScript than about CoffeeScript. though both projects are doing an awesome job. | 16:39 | |
vendethiel | I'm obviously biased ;). | 16:40 | |
masak | :) | ||
vendethiel | I'm really excited about some other things like scalaJS or PureScript. | ||
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 | |||
timotimo | how do you feel about fey and the other thing that compiles haskell to js? | ||
ah | 16:41 | ||
vendethiel | ^ my last message | ||
so other languages like bilby.js or PureScript that don't try to change every semantics is a better fit IMHO | |||
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 | ||
"UnrealScript, is that another javascript derivate?" | |||
vendethiel | I believe it is ? | ||
timotimo | i don't think so | 16:44 | |
vendethiel | I think UnrealScript looks like AS2, doesn't it ? EcmaScript with types | ||
I remember somebody asking us a coffee version that'd compile to unreal stuff | |||
timotimo | UScript is more like java, apparently? | ||
vendethiel | yeah, seems like it (+ c# and probably others with `out` thingie etc) | 16:45 | |
timotimo | didn't pascal have "out"? | 16:47 | |
i think visual basic had it, too | |||
oh well. what do i know. | |||
vendethiel | timotimo: if C# has a feature, I think VB has it too :p. | 16:48 | |
"do you like C syntax or do you like ada syntax ?" | |||
which makes me think, is niecza still develop ? | 16:49 | ||
(does it still have maintainers ?) | |||
timotimo | unfortunately not :( | ||
it only occasionally gets brought up to date for simple changes to the spec | |||
if you'd like to put some work into it, people would probably be happy | 16:50 | ||
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 | ||
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 | |
(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) | |||
vendethiel | timotimo: is it the most optimized backend ? | 16:53 | |
timotimo | niecza has been built for speed from the ground up | ||
vendethiel | ah, I see. It's true that other implems are kinda slow :p. | 16:54 | |
timotimo | "kinda"? :) | ||
vendethiel built a Game of Life in perl6 which took like 1 sec to render one frame | |||
timotimo: do you know how much slower is perl 6 (like p6-parrot) compared to perl 5 or other scripting languages? | 16:55 | ||
timotimo | niecza also has a JSON implementation that's based on some CLR thing | 16:56 | |
i can only tell you what our benchmarks show | |||
unfortunately, those are almost exclusively microbenchmarks | |||
16:56
ajr_ left
|
|||
timotimo | is some of those, the jvm almost reaches perl 5 when it's warmed up | 16:56 | |
but it's still very far away. | |||
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
|
|||
timotimo | more than that, i think | 16:57 | |
16:57
guru is now known as Guest53547
|
|||
timotimo | "an order of magnitude" is "at least 10 times"? | 16:57 | |
in that case, much more than one. | |||
16:57
Guest53547 is now known as ajr_
|
|||
vendethiel | 100 times slower :p ? | 16:57 | |
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 | ||
timotimo | nqp alone doesn't reach anywhere near perl 5 and it's a bunch of times faster than rakudo itself | ||
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? | ||
that's news to me, but i'd be glad if you're right | |||
jnthn | Pretty sure I've seen that come up in the graphs a number of times. | ||
tadzik | well, the p6 forest fire is still awfully slow, even on jvm | ||
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 | ||
jnthn | Yeah, that one is. | 17:00 | |
timotimo: Yes, including Perl 5 runs in the benchmarks is generally helpful... | |||
I've missed that in some of the recent ones I've seen. | |||
BenGoldberg | It would be pretty cool if someone could write perl6 versions of the benchmarks at shootout.alioth.debian.org/ | ||
timotimo | i think it's generally sad :) | ||
arnsholt | jnthn: I've started looking at the invokedynamic instruction. That looks really quite interesting | ||
tadzik doesn't trust that benchmark site | |||
timotimo | BenGoldberg: quite frankly, the shootout kind of sucks | ||
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. | ||
vendethiel | invokedynamic is gonna be huge | ||
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 :) | ||
vendethiel | I really hope that'll make scripting languages more competitive and people won't just dismiss them even for scripting | ||
tadzik | do they ever? | 17:03 | |
vendethiel | tadzik: do they ever ? | 17:04 | |
tadzik | I don't think I get the "dismiss them even for scripting"part | ||
BenGoldberg | I think it's been a long time since people dismised a language simply because it was a scripting language. | ||
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 | ||
cost, even | |||
vendethiel | tadzik: directly integrated ? | ||
tadzik | and _then_ they lament about performance | ||
vendethiel: what does "directly integrated" mean? | |||
vendethiel | tadzik: I mean in the main program | ||
tadzik | they _are_ the main program | 17:06 | |
I don't mean "used as a scripting part in a bigger project", no | |||
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? | ||
BenGoldberg | complaining about performance after getting one's program to produce correct output is perfectly normal. Just rewrite hot parts of it in C. | ||
vendethiel | Well, I just hope the smart minds have ideas on how to make moar/jvm/etc run faster :) | ||
BenGoldberg: that seems like an awful idea :) | |||
timotimo | vendethiel: they do have those ideas :) | 17:09 | |
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 | |
arnsholt: It's probably no worse than a couple of days work. | |||
timotimo | what is that "string serialization" thing all about? | ||
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? | ||
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 | ||
jnthn | So once NQP ran on JVM the expedient thing to do was just do the same but call it "in process" | ||
timotimo | ah, right, that's not so optimal :) | ||
jnthn | With the intent that some day, when things worked, somebody would take the time to remove the inefficiency. :) | ||
timotimo | arnsholt: seems like a good little project :) | 17:13 | |
the jit will probably be happy about that change as well | 17:14 | ||
arnsholt | jnthn: What do you mean by "we know the attribute offsets", BTW? | 17:15 | |
Presumably something clever we can do to extract the attributes of the different nodes? | 17:16 | ||
jnthn | arnsholt: The hint, passed to getattribute. | ||
arnsholt: So the switch inside there will always work out. | |||
arnsholt: And the field lookup should be quite cheap. | |||
17:18
ggherdov_ left,
ggherdov_ joined,
ggherdov_ left,
ggherdov_ joined
|
|||
timotimo | jnthn: what indicator are you waiting for for the moar-conc merge? | 17:18 | |
arnsholt | Oh, right. So the code should presumably cache the nqp::attrhintfor for the various things? | 17:20 | |
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 | ||
jnthn | timotimo: We're talking about doing this in Java code here:) | ||
timotimo | oh | 17:23 | |
of course | |||
arnsholt | Yeah, I'm starting to see how this would work | ||
timotimo | in that case the JIT will be even happier :) | ||
17:23
pmurias left
|
|||
timotimo | starting the perl5 benchmarks now | 17:23 | |
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:24 | |
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
rindolf left
|
|||
moritz | timotimo: preferably with the 'cpan' program that came with that perl5 | 17:29 | |
timotimo | where do i find that? | ||
find find . -iname 'cpanm' comes up empty | 17:30 | ||
jnthn | perl -MCPAN -e 'install Data::Alias' # iirc | ||
timotimo | er | ||
sorry, you meant "cpan" and not "cpanm" | 17:31 | ||
jnthn | .oO( MC PAN sounds like a cooking rapper... ) |
||
timotimo | jnthn: so, when will you consider merging moar-conc? will time-based scheduling be a requirement? | 17:34 | |
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 | |
timotimo: Note that the whole thing should be considered quite experimental at this point. | |||
timotimo | aye | ||
and experiment with it i shall :) | |||
jnthn | timotimo: It's going to take us a good bit more work to get it trustworthy :) | ||
timotimo | aaw | 17:38 | |
jnthn | But I figure getting it out there is the quickest way to learn how it fails :) | ||
timotimo: There are bits of the VM I know don't do the appropriate stuff yet. | |||
timotimo | sounds good to me | ||
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:39 | |
timotimo | of course | 17:40 | |
17:44
hoverboard joined
|
|||
timotimo | vendethiel, jnthn, others: t.h8.lv/p6bench/2014-03-09-every_perl.html | 17:51 | |
(this is pre-flatten-fastpath) | 17:52 | ||
vendethiel | timotimo++ | ||
timotimo | i think i'll replace the moarvm in that file with the flatten_fastpath one | 17:55 | |
hm. i don't have a nqp-flatten_fastpath | |||
ah well. in that case i won't do it. | |||
it'll turn up in 2014.03 anyway | |||
needless to say i'm still quite annoyed by the humongous performance difference between the NQPs and the rakudos | 17:58 | ||
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 | ||
that's highly speculative, though | |||
jnthn: ^ does that seem sensible to you? | |||
jnthn | timotimo: Well, teaching the specializer about the multi-dispatch cache will likely also be a huge win for Rakudo. | 18:02 | |
timotimo | how close will rakudo come to the current nqp timings, what do you figure? | 18:03 | |
18:03
[particle] joined
|
|||
jnthn | Anyway, the results kinda support what I was saying: NQP JVM does beat out Perl 5 in some cases. | 18:03 | |
Heck, on forest fire NQP Moar is coming out within a factor of 4. o.O | 18:04 | ||
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
|
|||
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 | |
18:06
beastd joined
|
|||
vendethiel | some numbers seem pretty impressive though | 18:06 | |
and not 100* slower | 18:07 | ||
jnthn pauses from $dayjob tasks (yes, on a Sunday...) to make some dinner | |||
arnsholt | Is there a simple explanation for the sudden drop in performance on Parrot for some of the tests? | ||
timotimo | you did notice each step on the y axis in there is a 2x improvement? | ||
vendethiel | while_array_set, jvm drops somehow | ||
timotimo | rc-forest-fire, rakudo-moar 794x slower than fastest | ||
rakudo-jvm: 1677x slower than fastest | 18:08 | ||
camelia | rakudo-jvm 1aeb7c: OUTPUT«===SORRY!=== Error while compiling /tmp/I53zpmd1ZJConfusedat /tmp/I53zpmd1ZJ:1------> 1677⏏x slower than fastest expecting any of: whitespace» | ||
vendethiel | hahahah yeah | ||
timotimo | i'm glad that using native types for the visit_2d_indices tests gives our nqps a litle push beyond perl5 | 18:09 | |
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? | ||
can we do it very soon? | 18:11 | ||
jnthn | timotimo: Yeah, needs guts work on all 3 backends... | 18:20 | |
timotimo is not sure he has what it takes :P | |||
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. | ||
timotimo | also, i have no idea what that stuff entails exactly | ||
jnthn | I'll try to see the native call stuff on Moar in the next few days. | 18:21 | |
*seed | |||
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? | ||
timotimo | ooooh :) | ||
jnthn | timotimo: Yes, sounds decent. | 18:22 | |
uh | |||
arnsholt: ^^ | |||
timotimo | jnthn: on which backend would the guts work needed be least terrifying? | 18:23 | |
arnsholt | Spiffy | ||
18:23
Mouq joined
18:26
ushmar joined
|
|||
arnsholt | I'll try to get that done before digging into the JAST stuff, since it's a star blocker | 18:26 | |
18:38
ajr_ left
18:42
pippo joined
18:46
stevan_ left
18:48
stevan_ joined
|
|||
Mouq | Input please, for how a module that ships <EXPR> might work: gist.github.com/Mouq/9452638 | 18:57 | |
18:57
ushmar left
|
|||
Mouq | ss/might work/might be interfaced/ | 18:57 | |
19:00
stevan_ left
19:01
stevan_ joined
19:02
stevan_ left,
stevan_ joined,
btyler joined
|
|||
lue | <lizmat> the Perl6:: modules are not in a Perl6 subdirectory, unless the author has put them there | 19:03 | |
How is that a good solution for separating P5 and P6 modules then? | |||
19:05
xenoterracide joined,
__thou joined
19:06
zakharyas left
|
|||
FROGGS | lue: this sentence is about Perl 5 modules that are in the Perl6 namespace | 19:07 | |
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. | ||
FROGGS | I don't even know how to fiddle with these dirs | 19:09 | |
but I will find out | |||
19:09
Sqirrel joined,
dpopovski joined
19:17
raiph joined
19:20
darutoko left
|
|||
Mouq | Expanded: gist.github.com/Mouq/9452638 Would anyone use this? Is it simple and usable enough? | 19:31 | |
*use Grammar::Precedence or whatever it'll be called | 19:34 | ||
masak | Mouq: looks nice. | 19:35 | |
jnthn | Mouq: Not too sure on the API for specifying the precedence levels | ||
lue | Mouq: looks good to me. I just imagined another grammar out there in the wild that goes "grammar Algebra is Arithmetic" :) | ||
masak | Mouq: nice. reminds me of strangelyconsistent.org/blog/what-y...nt-without long ago. | ||
jnthn | I think infixish and prefixish should probably be provided by the role also, as defaults. | 19:36 | |
postfixish too | |||
Mouq | masak: Ah, GGE::OPTable looks like one of the wheels I was trying to re-invent | 19:38 | |
jnthn: I agree about them being defaults | |||
jnthn: Figuring out an API has been tricky | |||
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 | ||
Mouq | jnthn: But having the precedence table as an attribute of the Grammar has benefits | ||
jnthn | Mouq: True. May be able to keep that... | 19:41 | |
perigrin | 23 | 19:42 | |
*sigh* | |||
moritz | www.usenix.org/system/files/1403_0...ickens.pdf # hilarious rant about browsers (PDF warning, and warning about 7 pages thereof) | 19:43 | |
vincent22 | cannot get the address of a method: | ||
Mouq | Ok. Thanks guys, this gives me more food for thought. I'm off to get food for lunch while that digests | ||
vincent22 | r: class c {method b { say "wow"}}; my $b = c.b; $b(); | ||
camelia | rakudo-jvm 1aeb7c: OUTPUT«wowNo 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» | ||
..rakudo-parrot 1aeb7c: OUTPUT«wowNo 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» | |||
..rakudo-moar 1aeb7c: OUTPUT«wowCannot find method 'postcircumfix:<( )>' in block at /tmp/tmpfile:1» | |||
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«wowType check failed in assignment to '&b'; expected 'Callable' but got 'Bool' in block at /tmp/tmpfile:1» | ||
jnthn | vincent22: You're calling the method. | ||
masak | Mouq: just as well you reinvent that wheel. GGE is day-before-yesterday's technology at this point. | ||
Mouq: but it represents a world order I hope we reinstate at some point: direct introspective access to Perl6::Grammar. | |||
vincent22 | jnthn: I want to get the adress and later to call it | ||
moritz | use .^can('methodname')[0] for that | 19:45 | |
jnthn | .^find_method('methodname') avoids the index :) | ||
Or just wrap it in a closure | |||
{c.b} | |||
Then you capture the invocant too | 19:46 | ||
vincent22 | Thank you | ||
r: class c {method b { say "wow"}}; my &b = {c.b}; &b(); | |||
camelia | rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«wow» | ||
vincent22 | OK | ||
jnthn | If your varialble is called &b you can also just invoke using b() :) | ||
19:47
hoverboard left
|
|||
vincent22 | Thanks for the help | 19:47 | |
19:52
dpopovski left
19:59
lichtkind joined
|
|||
lichtkind | hyper hyper op doesnt behave like specced | 19:59 | |
20:00
virtualsue joined
|
|||
FROGGS | lichtkind: example? | 20:00 | |
20:01
kvakerman joined
|
|||
lichtkind | FROGGS: almost none of syn example work as intended but i do now recompile to make more accurate report | 20:02 | |
FROGGS | k | 20:04 | |
masak | r: class Shiba { method inu { "wow" } }; my &doge = { Shiba.inu }; say doge | ||
camelia | rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«wow» | ||
masak | so meme. | ||
vendethiel | please don't :(. | 20:05 | |
masak .oO( please doge't ) | 20:06 | ||
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 | ||
? | |||
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) | ||
perigrin: it's a requirement though. For some reason. | 20:08 | ||
lichtkind | cheers masak | ||
perigrin | metacpan.org/author/CHROMATIC | ||
lue: ^^^ really? | |||
metacpan.org/author/BARBIE # another example | 20:09 | ||
FROGGS | lue: just type in your nick in that field | ||
lue | perigrin: that's curious. You have to provide a real name on the signup sheet. | ||
FROGGS | lue: just lie :o) | ||
perigrin | lue: you have to provide a *string* on the signup sheet. | ||
nothing is forcing that string to be your real name. | |||
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 | ||
and explain your situation | |||
FROGGS | lue: I can walk to they guy who would hand-process it if this would be the case :o) | ||
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. | ||
FROGGS | lue: just use "lue" too, that will work out | ||
lue | FROGGS: needs a space in the civil name though :/ | ||
FROGGS | ahh :/ | 20:12 | |
perigrin | metacpan.org/author/CHOCOLATE | ||
lue | at least on registration, maybe not when changing names | ||
I just would like to know why CPAN requires a real name, when AFAICT it's not actually necessary. | |||
perigrin | lue: metacpan.org/author/AMD | ||
I'm pretty sure you can't get more spaces than that. | |||
again you're using this phrase "requires" that seems to be ignoring the reality | 20:13 | ||
I've given you at least four examples that bely the use of "requires" there. | |||
:) | |||
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. | ||
perigrin | metacpan.org/author/DAHUT | 20:14 | |
Mouq | lue: L U E? | ||
lue | "Your full name (civil name)" which talks about spaces. | ||
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 | |
obviously that wasn't *that* required either :) | |||
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. | ||
perigrin nods | |||
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?" | ||
perigrin | because in 2003 it seemed like a good idea. | 20:16 | |
well no in 1995 it seemed like a good idea, by 2003 they'd discovered it wasn't | |||
but haven't fixed it since. | |||
so "John Smith" :) | 20:17 | ||
lue | "Poor Peter, please remember you do have a second name" | ||
perigrin: I'd probably want a more obvious Doctor Who reference though. :) "Θ Σ" | |||
perigrin | funny you don't type like an ood. | 20:18 | |
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.") | ||
*I had no issue | |||
perigrin: I wasn't referencing the ood there :) | |||
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 | ||
I had the same reaction you did when I wanted PERIGRIN for my pauseid | |||
luckily I had a friendly Pause Admin right there who just approved it | 20:22 | ||
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:23 | |
20:25
hoverboard joined
|
|||
dalek | nda/depends: 17b6624 | (Tobias Leich)++ | / (5 files): add "bundle" target that will create a tarball for uploading It builds and tests the project in cwd to reveal its dependencies, tries to get its hands on the distribution name and description, and proposes a META.info file with this just collected information. Sadly the used prompt() segfaults on moar and besides that we need to autodiscover the types it is going to provide, similar to the dependency check. |
20:28 | |
Mouq | FROGGS++ | 20:30 | |
FROGGS | I am almost prepared for wednesday \o/ | ||
20:31
Rotwang joined
|
|||
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>`? | ||
Well, no that doesn't make sense | 20:33 | ||
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 | |
Mouq: hehe, I thought the same :o) | |||
lue | FROGGS: alright, here comes mister "Life U. Everything" for an account! :) | ||
FROGGS | yay! :o) | 20:35 | |
Mouq | I suppose v6.* would refer to the Spec version that the impl follows.. so..? | ||
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:36 | |
Mouq | FROGGS: Rakudo versioning would be nice, though | 20:37 | |
FROGGS | we have tags | ||
20:37
colomon joined
|
|||
FROGGS | so it would be more like: use v6:auth<Rakudo>:ver<2014.02> or something similar | 20:38 | |
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 www.nntp.perl.org/group/perl.module...988.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:49
btyler left
|
|||
Mouq | perlcabal.org/syn/S22.html | 20:50 | |
lichtkind | FROGGS: ping | 20:51 | |
r: say (3,4,5 <<+<< 1) | 20:52 | ||
camelia | rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«3 4 6» | ||
lichtkind | yeah same as here | ||
should be 4 | |||
Mouq | O_o | ||
lichtkind | according to syn | ||
Mouq | Ohh | ||
20:52
vincent22 left
|
|||
Mouq | I thought the output was 3 5 6 | 20:52 | |
20:53
jakesyl joined
|
|||
jnthn | Precedn^Hence | 20:53 | |
Mouq | lichtkind: Where does it say that? | ||
jnthn | r: say (3,4,5) <<+<< 1 | ||
camelia | rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«4» | ||
lichtkind | ah | ||
jakesyl | is this a dead project? | ||
Mouq | jakesyl: Nope | ||
lichtkind | what is dead? | ||
jakesyl | Sorry, python fan here, and leaving | 20:54 | |
jnthn | Apparently, not this project :) | 20:55 | |
lichtkind | jakesyl: dont worry its curable :) | ||
thanks mouq | |||
Mouq points timotimo out | |||
20:55
jakesyl left
|
|||
lichtkind | yes timo like python too seen a talk from him | 20:56 | |
20:56
btyler joined
|
|||
jnthn | Most folks here work with quite a range of technologies. :) | 20:57 | |
Or many folks, at least. | 20:58 | ||
FROGGS | lichtkind: pong | ||
BenGoldberg | nr: my $i = 0; my $x := Proxy.new: FETCH => { print "(",++$i,")"; '!' }; print "<"; print $x ~ '?'; say ">" | ||
camelia | niecza v24-109-g48a8de3: OUTPUT«(1)<(2)(3)!?>» | ||
..rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c: OUTPUT«<(1)(2)(3)(4)!?>» | |||
..rakudo-moar 1aeb7c: OUTPUT«<(1)(2)(3)(4)(5)(6)(7)!?>» | |||
Mouq | Just grepped the specs, I don't see anywhere that the precedence issue for hypers like that comes up :) | ||
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 | ||
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 | ||
camelia | ( no output ) | ||
Mouq | p6: say [[1, 2], 3] «+» [4, [5, 6]] | ||
camelia | rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c, niecza v24-109-g48a8de3: OUTPUT«5 6 8 9» | ||
Mouq | That's pretty cool | ||
jnthn | arnsholt: yaya :) | ||
*yay, even | 21:00 | ||
jnthn is hoping to have a better tuit supply this next week than in the last week, despite teaching :) | |||
FROGGS giggles | 21:01 | ||
I will have tuits this week :o) | |||
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 | ||
my p6 talk is now almost complete, everything else will be polsih | |||
polish | |||
jnthn | lichtkind: Will they understand polish at the German Perl Workshop? :) | 21:04 | |
colomon | JSON5::Tiny? | ||
FROGGS | k | ||
Mouq | colomon: :P what about it? | ||
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. | ||
) | |||
Mouq | colomon: Ahh, ok. :) json5.org/ | 21:06 | |
colomon | Mouq++ | ||
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:13 | |
lichtkind | noone knows | 21:22 | |
arnsholt | In large part because noone knows exactly how Perl 6 modules are going to work, in the end =) | 21:23 | |
21:24
virtualsue left
|
|||
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 | ||
camelia | rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«An awesome ("A" => 42, "B" => 57).hash» | ||
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. | ||
FROGGS | s/prive/provide/ | ||
=VERSION and =AUTHOR is not yet used | |||
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 | ||
lue | I'll just go ahead and make my PAUSE registration then; that's the only big thing I was concerned about. | 21:29 | |
FROGGS: will =VERSION/=AUTHOR ever be supported, or is META.info sufficient for that? | 21:34 | ||
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 | ||
perl6-m -e 'shell q{perl6-m -e "prompt 1"}' | 21:38 | ||
1Segmentation fault (core dumped) | |||
jnthn | Which process SEGVs? | 21:39 | |
FROGGS | the inner | 21:40 | |
and I am unable to gdb it :/ | |||
because it somehow closes gdb's prompt | |||
maybe it also reaps the stdin of the inner process | |||
hmmm, we are ignoring the STDIN of the child... | 21:42 | ||
21:43
kaare_ left
|
|||
FROGGS | jnthn: yes, inheriting seems to do the trick | 21:44 | |
Mouq | r: role A { has %.table is Set } | ||
camelia | rakudo-parrot 1aeb7c: OUTPUT«use of uninitialized value of type Any in string context in any at src/Perl6/World.nqp:1661use of uninitialized value of type Any in string context===SORRY!=== Error while compiling /tmp/tmpfileCan't use unknown trait 'is …» | 21:45 | |
..rakudo-moar 1aeb7c: OUTPUT«use of uninitialized value of type Any in string contextUnhandled 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…» | |||
..rakudo-jvm 1aeb7c: OUTPUT«use of uninitialized value of type Any in string contextUnhandled 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) …» | |||
jnthn | FROGGS: But do we want to inherit? | ||
Mouq | Not at all annoying | ||
jnthn | FROGGS: I get it to crash here. | ||
FROGGS | jnthn: dunno, do we? | ||
jnthn | FROGGS: Well, it crrashes here in syncfile.c:eof | ||
FROGGS | I would think we need to hand over our STDIN | ||
jnthn | if ((r = uv_fs_lstat(tc->loop, &req, data->filename, NULL)) == -1) | 21:46 | |
MVM_exception_throw_adhoc(tc, "Failed to stat in filehandle: %d", errno); | |||
21:46
Khisanth left
|
|||
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. | ||
Well, should fix the bug regardless... | |||
21:47
Khisanth joined
|
|||
jnthn | FROGGS: gist.github.com/jnthn/9455271 | 21:50 | |
benabik | Doesn't segfault here, but doesn't wait for input either. | ||
masak | 'night, #perl6 | ||
Mouq | night masak! | 21:51 | |
21:56
[Sno] left
22:00
[Sno] joined
22:04
virtualsue joined
22:16
hoverboard left
22:18
pecastro left
22:21
spider-mario left,
hoverboard joined
|
|||
timotimo | 'night masak! | 22:24 | |
Mouq | github.com/Mouq/Grammar-Expression Now for the hard part... | 22:25 | |
22:40
pecastro joined
|
|||
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 | |
and if so, we will decide there and then how big a problem that would be | |||
lue | lizmat: If necessary, there's also /Perl_6/, /P6/, /»ö«/ ... :) | 22:46 | |
22:46
raiph left
|
|||
lizmat | indeed | 22:46 | |
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" | |||
*la | |||
22:46
pmurias joined
|
|||
timotimo | what does that mean? | 22:47 | |
lue | timotimo: "before the letter", though I assume deeper idiomatic meanings :) | ||
dalek | kudo-star-daily: a3f1162 | coke++ | log/ (5 files): today (automated commit) |
||
rl6-roast-data: 245625c | coke++ | / (6 files): today (automated commit) |
22:48 | ||
lizmat | before it was a rule | ||
before it was written | |||
pmurias | it would be nice to have irc.moarvm.org redirect to the moarvm channel irc log | ||
lizmat | in a way, prior art | ||
timotimo | ah | 22:49 | |
lizmat | en.wiktionary.org/wiki/avant_la_lettre | ||
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 | ||
that's the most important reason for creating a subdir with a distinctive name | |||
timotimo | jnthn: apparently the Lock class on rakudo.jvm b0rked; No such method 'condition' for invocant of type 'Lock' | ||
(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 | ||
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 :) ] | ||
pmurias: to word my concern better, "we shouldn't force unique module names across authors" | 22:52 | ||
pmurias | I would still like to have 'use Foo::Bar' use a sensible Foo::Bar | 22:53 | |
and the spec mentiones a cpan auth | |||
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. | ||
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 | ||
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. | ||
timotimo | i thought it meant "if you specify :auth<cpan> you get the version that someone claimed on cpan" | 22:56 | |
pmurias | that's what I assumed, but it hasn't been mentioned anywhere | 22:57 | |
timotimo | ok | ||
lue | never seen that in the spec before. | ||
pmurias | there is :auth<cpan:PMURIAS> | ||
lue | always saw it as :auth<cpan:JRANDOM> | ||
timotimo | oh, ok | ||
pmurias | but having an official cpan author seems really helpfull | 22:58 | |
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)" | ||
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 | ||
lizmat | the "owner" of a Perl 5 module is just the author of the version of that module that lives in the module list | ||
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 | ||
lizmat | the Perl 5 module list | ||
Perl 6 modules will not be in there | |||
timotimo | lue: in that case, if someone decides to upload a module, user's code will break, too :) | ||
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 | ||
lue | timotimo: not unless they simply *must* install every author's Foo::Bar :) | ||
pmurias | lue: and how is the prospective installer supposed to choose? | ||
23:00
Mouq left
|
|||
lue | pmurias: installer presents a list of choices (Foo::Bar:auth<cpan:JRANDOM>, Foo::Bar:auth<cpan:LWALL>, ...) | 23:01 | |
23:01
Mouq joined
|
|||
lizmat | the perl 5 installers just read the Perl 5 module list that says: e.g : Thread::Queue::Any -> ELIZABETH/ThreadQueueAny.tgz | 23:01 | |
pmurias | lue: and which of those is the correct one? | 23:02 | |
lue | pmurias: depends on what the person choosing needs. | ||
lizmat | a perl 6 module installer could also read such a list (if there is going to be any) | ||
timotimo | and how will they figure that out? | ||
and what if they are getting that module as a dependency from some other module? | |||
lizmat | that's why we need to figure out how to specify that in META.info | ||
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 | ||
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'"? | ||
lizmat | so, each modules dependencies could almost have their own "universe" of dependencies | ||
timotimo | oh no, i'm all for allowing duplicated names | ||
lue | timotimo: presumably we won't record it as "offical module", but resolve it first. | ||
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 | ||
lue | tr/official module/module v0.1 by JRANDOM/ , essentially | ||
pmurias | timotimo: it's possible to hand over modules on cpan | ||
timotimo: currently | 23:06 | ||
lizmat | pmurias, timotimo: again, this is only really about what module is in the (Perl 5) module lust | ||
timotimo | hmm | ||
lue wonders if portage's SLOTs thing is analogous to P6's auths | |||
timotimo | hm, i don't think so | ||
lizmat | so suppose I want to hand over my module Thread::Queue::Any to JRANDOM, the *module list* entry would chanfe | ||
change | |||
timotimo | slots is about having multiple major versions installable at the same time | ||
lizmat | from ELIZABETH/ThreadQueueAny.tgz to JRANDOM/ThreadQueueAny.tgz | 23:07 | |
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 | |
timotimo: I'm aware, I was just thinking if the two can be conceptualized the same way. | |||
lizmat | well, technicall, every author is the maintainer of the distributions that were uploaded | 23:10 | |
it's more a recommendation list I guess, for Perl 6 | |||
timotimo | hmm | ||
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? | ||
(one piece for developers, one for users perhaps) | |||
pmurias | pushed in the face when? | ||
lizmat | we can think about that, but the most important thing to me | ||
timotimo | when panda is finished installing a bunch of packages | ||
lizmat | is to get the basic PAUSE / CPAN-testers machinery in such a state that Perl6 distributions can be uploaded | 23:12 | |
for that, we need cooperation from the right guys | |||
timotimo | right, the rest is probably bikeshedding | ||
lue | timotimo: something like "documentation can be accessed with perl6 --doc=Man -MFoo::Bar" ? | ||
lizmat | after that works, we can start figuring out which installer is going to use what meta-info from PAUSE | ||
pmurias | seems sensible | 23:13 | |
lue | lizmat: agreed, we should prioritize just enough to make things work at all. | ||
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" | ||
lichtkind | timotimo: seen your talk on youtube lately, a bit disorganized but not bad | ||
lizmat | sleep& | ||
timotimo | absolutely disorganized, aye | ||
23:14
tgt left
|
|||
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. | ||
timotimo | it's in german unfortunately, pmurias | ||
lue | ♞ lizmat o/ | ||
timotimo | and the "slides" (rather: the output of my display) was very hard to read on the projector | ||
only in the recording, though | |||
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:16
virtualsue left
23:21
denis_boyun left
23:25
Rotwang left
23:26
dmol left
|
|||
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:31 | |
23:31
lichtkind left
23:32
pmurias left
|
|||
dalek | ecs: 2be6bfa | (Timo Paulssen)++ | S32-setting-library/Containers.pod: just a tiny whitespace fix. |
23:38 | |
timotimo | just doin' my daily contribution | 23:39 | |
:P | |||
TimToady: i'd like to get your opinion on how to handle decoding trouble (and maybe encoding trouble as well?) | 23:40 | ||
docs.python.org/2/howto/unicode.htm...icode-type this is python's prior art, see the second blob of code for the "errors" named argument | 23:46 | ||
23:48
beastd left
|
|||
timotimo | additionally there's a errors argument for the encode method named "xmlcharrefreplace" | 23:49 | |
which is kind of neat | |||
lue | timotimo: sounds like a useful thing for encode, though just to be different maybe call it :fallback instead of errors :) | 23:50 | |
timotimo | right. | 23:52 | |
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. | ||
that'd be the "call this closure" variant i've suggested | |||
unicode already specs a replacement character for encoding errors, iirc | 23:55 | ||
TimToady: though i had hoped you'd actually come up with some sensible wording :) | 23:56 | ||
Perl 6 needs to be a beacon of hope WRT encoding/decoding and handling buffers vs strings | 23:57 | ||
TimToady is a bit daylight-savings-time-lagged today... | 23:58 | ||
timotimo | i think in the future i really need to rub some coins and bills on my face | 23:59 |