»ö« 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. |
|||
clsn | OK. Probably should have defined the method on Parameter:D instead of just Parameter. Thanks. | 00:01 | |
I did that for Signature, not Parameter. Oops. | |||
00:07
jeffreykegler left
00:09
raiph left
00:18
raiph joined
00:25
konnjuta joined
00:26
ivanshmakov left
|
|||
konnjuta | is it possible to not disclose the source code for your perl6 program (for example like how java is 'compiled' into class file) | 00:27 | |
in the current implementation of rakudo | 00:29 | ||
or possible future implementation of perl6 | |||
grondilu | you can publish the jvm or moarvm bytecode | ||
Mouq | konnjuta: I believe NQP (the Perl 6 "subset" Rakudo is built off of) can be compiled to Parrot, JVM, or MoarVM bytecode, and in fact is in the bootstrapping process | ||
grondilu: can you do that for full Perl 6 programs, though? | 00:30 | ||
grondilu | I think you can, with the --target option. Can't you? | ||
Mouq | grondilu: Oh, forgot about that. I can check | 00:31 | |
TimToady wonders whether konnjuta is working for the nsa... | |||
huf | "the client" | 00:32 | |
TimToady | well, it was "the customer" when I worked for them :) | ||
huf | oh sorry, misremembered your story | ||
FROGGS | nr: say "\c[BRAILLE PATTERN DOTS-13456]" | 00:33 | |
camelia | rakudo-parrot 1c37f3: OUTPUT«===SORRY!=== Error while compiling /tmp/DK4M4lHXIRUnrecognized \c characterat /tmp/DK4M4lHXIR:1------> say "\c[⏏BRAILLE PATTERN DOTS-13456]" expecting any of: argument list prefix …» | ||
..niecza v24-109-g48a8de3: OUTPUT«⠽» | |||
..rakudo-jvm 1c37f3: OUTPUT«===SORRY!=== Error while compiling /tmp/8Cm7KVk688Unrecognized \c characterat /tmp/8Cm7KVk688:1------> say "\c[⏏BRAILLE PATTERN DOTS-13456]" expecting any of: argument list prefix or …» | |||
FROGGS | it does not like numbers? | 00:34 | |
00:34
ivanshmakov joined
|
|||
Mouq | --target=pir works, --target=mbc dies with ===SORRY!===\nCannot dump this object; no dump method, and my perl6-j needs to be rebuilt :P | 00:35 | |
grondilu | well, it's NYI I guess | ||
Mouq | my perl6-j seems to think it's my perl6-m | ||
00:36
Lorn_ is now known as Lorn,
Lorn left,
Lorn joined
|
|||
grondilu | fun fact: the REPL in perl6-m does not work, and nobody cares. I guess this thing has been added just to do as all other languages do, but nobody really use this thing. | 00:37 | |
jnthn | grondilu: fun fact: I spent a chunk of my weekend fixing it. :/ | 00:38 | |
Mouq | grondilu: :P I use it all the time, I've just been lazy recently and reach for '-e' when i remember it doesn't work on Moar | ||
jnthn | grondilu: It works here. | ||
TimToady | I get an eternal supply of > | 00:39 | |
jnthn | Bitching people don't care when they spent a couple of hours working on it is stupid. | ||
grondilu | same, infinite prompts | ||
TimToady | probably just a linux difference or some such | ||
jnthn | bah | ||
Mouq | jnthn++ # everything you do | ||
TimToady | we much appreciate jnthn++ | ||
Mouq | jnthn++++++ | ||
TimToady | we just want more jnthn++ :) | ||
jnthn | Works nicely on Windows. Wonder what on earth isn't portable :( | 00:40 | |
grondilu | jnthn: sorry I hope I didn't offend you or anything. what you do is great, please don't doubt it | ||
00:40
ajr_ left
|
|||
grondilu | jnthn += Inf | 00:40 | |
:) | |||
diakopter | jnthn**=jnthn | ||
m: 999**=999 | 00:41 | ||
camelia | rakudo-moar 1c37f3: OUTPUT«Cannot find method 'STORE' in block at src/gen/m-CORE.setting:16352 in block at /tmp/7PC5ZtyLoX:1» | ||
diakopter | you're a STORE | ||
Mouq | m: say 999**999 | 00:43 | |
camelia | rakudo-moar 1c37f3: OUTPUT«3680634882592232678947008400605218658383382320373532046559596214370256093004722315301038736145051752186913452575898963911303931894479697716458323821923660765366311320017761759779321786587036607784657658118308278769820141240229486719756781317249580644279499…» | ||
grondilu | talking about big numbders, what's the criterium to decide a Num is Inf? I mean, I had troubles filling rosettacode.org/wiki/Combinations_a...ons#Perl_6 because of that. | 00:44 | |
m: say 10**$_ for 300, 400 ... 1000 | |||
camelia | rakudo-moar 1c37f3: OUTPUT«1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000…» | ||
grondilu | m: say 10**1000 | 00:45 | |
camelia | rakudo-moar 1c37f3: OUTPUT«1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000…» | ||
grondilu | m: say (10**$_).Num for 300, 400 ... 1000 | ||
camelia | rakudo-moar 1c37f3: OUTPUT«100000000000000005250476025520442024870446858110815915491585411InfInfInfInfInfInfInf» | ||
grondilu | I guess the explanation is somewhere in S32/Numeric | 00:48 | |
TimToady | Num is just floating point, and I doubt S32/Numeric has much to say about the conversion, but the 10**300 case there looks buggy | 00:50 | |
colomon | don't think so. | 00:51 | |
it's got 16 correct digits | |||
TimToady | it should have about 300 digits | ||
colomon | ….. oh, wait, right. | ||
TimToady | or an e | 00:52 | |
grondilu | m: say .chars given (10**300).Num | ||
colomon | you can't actually store 10**300 in a double, can you? | ||
camelia | rakudo-moar 1c37f3: OUTPUT«63» | ||
colomon | isn't the limit 200-something | ||
? | |||
grondilu | this gives me a déjà-vu feeling | ||
TimToady | there are formats that are bigger, but I think +-256 is normalish | ||
colomon | No doubt it should be Inf | 00:53 | |
does parrot do that? | |||
p: say (10**300).Num | |||
camelia | rakudo-parrot 1c37f3: OUTPUT«1e+300» | ||
colomon | ???? | ||
TimToady | using extended FP maybe? | 00:54 | |
colomon | oh, nope, 10**308 should work | ||
colomon is looking at wikipedia | |||
grondilu | colomon: you can put very big numbers in floating points, it only depends on the relative sizes of the mantissa and the exponent, if I recall the names correctly | ||
colomon | grondilu: you can put much bigger numbers in Ints | 00:55 | |
grondilu | sure | ||
00:55
dayangkun joined
|
|||
colomon | I mean, sure, in the abstract floating point can go as big as you want. But in practice, 10**308 or so is it. | 00:55 | |
so definitely a Moar big | 00:56 | ||
er, bug | |||
grondilu | precisely, I thought Num was the abstract floating point. But I may have been wrong. | ||
TimToady | nope, very IEEEish | ||
grondilu | ok | ||
but what's num, then? | 00:57 | ||
(in lower case) | |||
TimToady | same thing, but native :) | ||
someone could define a FatNum type if they wanted, however | 00:58 | ||
colomon | with Ints for the mantissa and the exponent…. | 01:00 | |
grondilu | would you say that the purpose of Num is to implement en.wikipedia.org/wiki/IEEE_754 ? If so, it might be useful to mention it in the specs. | ||
(I mean, to makes things clear) | 01:01 | ||
TimToady | well, we mention IEEE at S02:881 | ||
synopsebot | Link: perlcabal.org/syn/S02.html#line_881 | ||
colomon | grondilu: IEEE is mentioned six times in the specs, but 754 is not | ||
TimToady | that's what people mean by IEEE floating point, though | 01:02 | |
colomon | right | ||
Mouq | jnthn: Why don't we have any typed exceptions in src/vm/moar/Perl6/Ops.nqp ? | 01:17 | |
(and am I allowed to add one?) | 01:18 | ||
(or at least try) | |||
Well, hm. Actually, I'm not sure how that would work. I think Moar needs an X::Assignment::RO somewhere around src/vm/moar/Perl6/Ops.nqp:162 if .STORE doesn't exist | 01:20 | ||
*I think Rakudo | 01:21 | ||
jnthn | Mouq: There's a few missing typed exceptions. | 01:22 | |
Mouq: Just NYI. | 01:23 | ||
Mouq: S32-exceptions/misc.t indicates the places | |||
Mouq | jnthn: ok. I'd like to SYI it, but... uhm | 01:24 | |
jnthn | Mouq: The trick with those things is that there's a hash somewhere with code objects in that take args and build the exception object | 01:25 | |
Mouq | jnthn: What I don't get is that if :op('findmeth') is being added to the oplist, does that mean that if I have to check the existance of the method and throw a RO error, those things have to be added as ops too? | 01:28 | |
well, not ops | |||
But to the instruction list | |||
01:31
kaare__ left
|
|||
jnthn | Mouq: Yeah, we'll have to do some checking there | 01:33 | |
Mouq: If you use findmeth_s or so and pass it a string then it'll give null back if there's no method. | 01:34 | ||
Mouq: We may for code size actually do better to add an op though... | |||
TimToady | r: say Q[@A`DO world!]~|<HeLhg> | 01:35 | |
camelia | rakudo-parrot 1c37f3, rakudo-jvm 1c37f3, rakudo-moar 1c37f3: OUTPUT«Hello world!» | ||
TimToady | xfix: save a byte by using <> instead of q{} | ||
01:37
kaare__ joined
|
|||
jnthn | Mouq: That is, a Rakudo specific one. | 01:37 | |
Mouq | jnthn: Ok. I've only just started looking closely at the Moar stuff... I think I may try my hand at making some of the other errors in Ops.nqp typed first | 01:38 | |
TimToady | xfix: oh, you got that one already | ||
Mouq | r: try { sub dead (-->Int) {"oh my!"}; dead}; say $!.WHAT # Namely | ||
camelia | rakudo-moar 1c37f3: OUTPUT«(X::AdHoc)» | ||
..rakudo-parrot 1c37f3, rakudo-jvm 1c37f3: OUTPUT«(X::TypeCheck::Return)» | |||
jnthn | Mouq: Aye :) | 01:40 | |
That should be easier | |||
'night, #perl6 | 01:48 | ||
Mouq | night jnthn++ | 01:50 | |
:) | |||
01:50
stevan_ joined
01:51
dayangkun left
01:52
dayangkun joined
01:53
jnap left
01:55
kbaker joined
02:18
grondilu left
02:24
jnap joined
|
|||
Mouq | r: my Int $a; $a := "die! muahaha!" | 02:25 | |
camelia | rakudo-jvm 1c37f3: OUTPUT«Type check failed in binding; expected 'Int' but got 'Str' in block at /tmp/6ajz7A5cqa:1» | ||
..rakudo-parrot 1c37f3: OUTPUT«Type check failed in binding; expected 'Int' but got 'Str' in block at /tmp/c16f8fmdyq:1» | |||
..rakudo-moar 1c37f3: OUTPUT«Type check failed in bind; expected Int but got Str in any bind_error at src/vm/moar/Perl6/Ops.nqp:229 in block at /tmp/Vqv83_1vWq:1» | |||
02:28
jnap left
02:35
konnjuta left
|
|||
Mouq | \o/ | 02:41 | |
$ perl6-m -e'try {my Int $a; $a := "die! muahaha!"}; say $!.WHAT' | |||
(X::TypeCheck::Binding) | |||
$ perl6-m -e'try {sub f(-->Str){5}; f}; say $!.WHAT' | |||
(X::TypeCheck::Return) | |||
timotimo | good work! | 02:42 | |
Mouq | timotimo: thanks! I think I might know how to do the error I was talking about originally too, so I'll try that before PR'ing | 02:44 | |
TimToady | timotimo: I thought you fixed the tmpfile thing... | 02:45 | |
timotimo | oh no i told someone else to actually work the fix in :) | ||
i just formulated a line that could go in there by trial & error | |||
clsn | Argh, forgot to make ACCEPTS multi, that's why it's not letting superclasses show through... Oh well. PR will be ready again soon. | 02:46 | |
I think I may have screwed up some by doing my work in the nom branch of my fork instead of making a new branch for it. | |||
Mouq | timotimo: for camelia? | 02:47 | |
timotimo | evalbot, yeah | 02:48 | |
geekosaur | git stash branch? | ||
clsn | mm, maybe... I dunno, my github-fu is still weak. | ||
timotimo | clsn: that's no problem at all, you can just git rebase origin/nom to get your changes transplanted onto a current upstream | 02:49 | |
and then do the relatively awkward reset dance: | |||
git checkout nom; git checkout -b my_awesome_work; git checkout nom; git reset --hard origin/nom | |||
i shouldn't have said "i told someone else", i should have said "i said someone else had to do it" | 02:56 | ||
anyway, afk | |||
clsn | Doesn't there have to be a commit in there someplace? Or wait, that checkout -b creates the branch and the reset branches the old one off... or something... | ||
Whatever, rebuilding anyway. | |||
timotimo | yeah | ||
and the reflog will help you get back to any state you had before | |||
clsn | I'll figure it out I guess. Thanks. | 02:58 | |
Mouq | timotimo: point to what you did; I've done work on the evalbot before, and was just thinking about how to fix the tmp/ thing when TimToady++ brought it up | 03:01 | |
*point out to me, and I'll see if I can put it to good use | 03:02 | ||
03:26
kbaker left
|
|||
clsn fixes and pushes his change, hopefully not having screwed things up too badly with various git muckings-about. | 03:36 | ||
03:46
wooden left
03:59
pdcawley left
04:00
pdcawley joined
04:05
molaf joined
04:07
preflex_ joined,
ChanServ sets mode: +v preflex_
04:08
preflex left,
preflex_ is now known as preflex
04:17
molaf left
04:53
jeffreykegler joined
04:58
jeffreykegler left
|
|||
dalek | rl6-roast-data: 9d24ef9 | coke++ | / (6 files): today (automated commit) |
05:07 | |
05:25
[Sno] left
05:26
jnap joined
05:31
jnap left
05:32
thou left
05:55
SamuraiJack joined
06:08
kaleem joined
06:17
SamuraiJack_ joined
06:18
SamuraiJack left
|
|||
raiph | Mouq: irclog.perlgeek.de/perl6/2014-01-18#i_8138277 | 06:18 | |
dalek | kudo/nom: c8ec1df | Mouq++ | src/vm/moar/Perl6/Ops.nqp: Throw X::TypeCheck::{Binding,Return} on MoarVM Use typed errors instead of dying in Ops.nqp |
||
Mouq | raiph: Oh! Thank you | 06:22 | |
06:23
SamuraiJack_ left
06:27
jnap joined
06:28
[Sno] joined
06:30
BenGoldberg left
06:31
jnap left
06:37
FROGGS left
|
|||
Mouq | So, sorry, #perl6, got caught in doing other things :p I don't see a problem with just putting timotimo's line in the obvious spot in the evalbot script. it means that if somebody does this: | 07:00 | |
r: say "My file's in some/dir/tmp/dkmedjdkf4/something" | 07:01 | ||
camelia | rakudo-jvm 1c37f3: OUTPUT«(timeout)» | ||
..rakudo-parrot 1c37f3, rakudo-moar 1c37f3: OUTPUT«My file's in some/dir/tmp/dkmedjdkf4/something» | |||
Mouq | it'll end up as "My file's in some/dir/tmp/tmpfile/something" | ||
But then again, this is filtered too, already: | 07:03 | ||
07:03
SamuraiJack_ joined
|
|||
Mouq | nqp-p: say("I like being called from Subway's!") | 07:03 | |
camelia | nqp-parrot: OUTPUT«I like being » | ||
07:11
raiph left
|
|||
Mouq | ...hmm. Welllll, ok. If no one's going to comment on it, I think I'll just resort to the push-and-await-backlash methodology | 07:16 | |
If that's cool | |||
dalek | albot: 35a28d0 | Mouq++ | evalbot.pl: Filter tmpfile names to merge error results |
07:17 | |
Mouq | timotimo++ | ||
timotimo++ again because I forgot to put it in the commit summary | 07:18 | ||
Mouq-- | |||
thank you moritz++ for merging my PR | 07:25 | ||
Mouq → bed | |||
xfix | imgur.com/niA0JyZ - hm, interesting, my Perl 6 code golf is most upvoted today, according to the moderator panel. | 07:30 | |
07:30
sqirrel joined
07:33
Mouq left
07:46
FROGGS joined
|
|||
moritz | j: say 'test' | 07:48 | |
camelia | rakudo-jvm c8ec1d: OUTPUT«Can't call method "syswrite" on an undefined value at /home/p6eval/jvm-rakudo/eval-client.pl line 32.» | ||
moritz | j: say 'test' | ||
camelia | rakudo-jvm c8ec1d: OUTPUT«Can't call method "syswrite" on an undefined value at /home/p6eval/jvm-rakudo/eval-client.pl line 32.» | ||
moritz | j: say 'test' | 07:50 | |
camelia | rakudo-jvm c8ec1d: OUTPUT«test» | ||
FROGGS | morning | ||
07:50
darutoko joined
|
|||
moritz | good morning FROGGS, * | 07:51 | |
FROGGS | r: say 1 1 # moritz: where is the code that needs to be fixed for unifying the $*PROGRAM_NAME? | ||
camelia | rakudo-parrot c8ec1d: OUTPUT«===SORRY!=== Error while compiling /tmp/1_9nsOt9eqTwo terms in a rowat /tmp/1_9nsOt9eq:1------> say 1 ⏏1 # moritz: where is the code that needs expecting any of: postfix infix stop…» | ||
..rakudo-jvm c8ec1d: OUTPUT«===SORRY!=== Error while compiling /tmp/YnRmK_cft9Two terms in a rowat /tmp/YnRmK_cft9:1------> say 1 ⏏1 # moritz: where is the code that needs expecting any of: postfix infix stopper…» | |||
..rakudo-moar c8ec1d: OUTPUT«===SORRY!=== Error while compiling /tmp/FHo_OngbLYTwo terms in a rowat /tmp/FHo_OngbLY:1------> say 1 ⏏1 # moritz: where is the code that needs expecting any of: postfix infix stoppe…» | |||
07:52
dmol joined
|
|||
moritz | FROGGS: prolly lib/EvalbotExecuter.pm | 07:52 | |
FROGGS | ahh, I see | 07:53 | |
07:53
broquaint left
08:05
Rotwang joined
|
|||
dalek | albot: c578363 | (Tobias Leich)++ | lib/EvalbotExecuter.pm: unify the program name in output string |
08:07 | |
FROGGS | I hope I don't mess anything up | ||
moritz: I am allowed to restart it? | |||
s/I am/am I/ | 08:08 | ||
08:09
broquaint joined
|
|||
FROGGS hopes for forgiveness | 08:09 | ||
evalbot control restart | |||
08:09
camelia left
|
|||
FROGGS | k, I can shut it down as it seems | 08:09 | |
ó.ò | |||
08:10
camelia joined
|
|||
FROGGS | uhh | 08:10 | |
\o/ | |||
nr: 1 1 | |||
08:11
ChanServ sets mode: +v camelia
|
|||
camelia | rakudo-jvm c8ec1d: OUTPUT«===SORRY!=== Error while compiling /tmp/GZgfT9CIUPTwo terms in a rowat /tmp/GZgfT9CIUP:1------> 1 ⏏1 expecting any of: postfix infix stopper infix or meta-infix st…» | 08:11 | |
..niecza v24-109-g48a8de3: OUTPUT«===SORRY!===Two terms in a row at /tmp/slUZ0KM9VV line 1:------> 1 ⏏1Parse failed» | |||
..rakudo-parrot c8ec1d: OUTPUT«===SORRY!=== Error while compiling /tmp/Ph1RfYaUoOTwo terms in a rowat /tmp/Ph1RfYaUoO:1------> 1 ⏏1 expecting any of: postfix infix stopper infix or meta-infix …» | |||
moritz | evalbot control pull | ||
camelia | (success) | ||
FROGGS | ahh | ||
moritz | evalbot control restart | ||
08:11
camelia left
08:12
camelia joined
|
|||
moritz | p6: say $*PROGRAM_NAME | 08:12 | |
FROGGS | that will saves a lot of bytes in the clogs when it works :o) | ||
08:12
berekuk joined
|
|||
moritz | and, more to the point, it doesn't obscure that the outputs are actually the same | 08:13 | |
08:13
ChanServ sets mode: +v camelia
|
|||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d, niecza v24-109-g48a8de3: OUTPUT«/tmp/tmpfile» | 08:13 | |
moritz | uhm | ||
FROGGS | and you don't miss messages that are between these huge blocks of text | ||
moritz | did you hardcode it to a certain tempfile? | ||
FROGGS | no | ||
unless it resolves <program> in the subst somehow | |||
nr: 1 1 | |||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileTwo terms in a rowat /tmp/tmpfile:1------> 1 ⏏1 expecting any of: postfix infix stopper infix or meta-in…» | 08:14 | |
..niecza v24-109-g48a8de3: OUTPUT«===SORRY!===Two terms in a row at /tmp/tmpfile line 1:------> 1 ⏏1Parse failed» | |||
moritz | oh, you cheated. Nasty FROGGS :-) | ||
FROGGS | I... I did? | ||
moritz | yes, you did | ||
FROGGS | nice | ||
how so? | |||
moritz | the non-cheating solution would have been to actually use the same tempfile for all processes that are started in one batch | ||
FROGGS | well, easy solution is easy | 08:15 | |
moritz | aye :-) | ||
much better than before | |||
FROGGS++ # cheating is technique | |||
08:15
rindolf joined
|
|||
FROGGS | but why do I see that filename there instead of a literal "<program>"? | 08:15 | |
github.com/perl6/evalbot/blob/mast...er.pm#L141 | 08:16 | ||
moritz | $ git grep tmpfile | 08:17 | |
evalbot.pl: $tmp_res =~ s|/tmp/\w{10}|/tmp/tmpfile|g; | |||
FROGGS: because you didn't read the comments :-) | |||
FROGGS | Filter tmpfile names to merge error results | ||
master | |||
commit 35a28d0ff9630895db2fd3d7cd21eb7d3ba3f993 1 parent 5ad7f7c | |||
Mouq authored an hour ago | |||
haha | |||
moritz | FROGGS: $filename is the file that the result is written to | 08:18 | |
FROGGS | eww | ||
I'll revert then | |||
Mouq++ | |||
08:19
zakharyas joined
|
|||
moritz | FROGGS: and $program_file_name contains what its name suggests | 08:19 | |
dalek | albot: dc58e94 | (Tobias Leich)++ | lib/EvalbotExecuter.pm: Revert "unify the program name in output string" This reverts commit c578363c1b6e3df335517927011687444e38c738. |
||
FROGGS | (Tobias Leich)-- | ||
moritz | evalbot control pull | ||
camelia | (success) | ||
FROGGS | # nothing happened, continue programming | 08:20 | |
08:20
berekuk left
|
|||
FROGGS | r: say "\c[BRAILLE PATTERN DOTS-13456]" | 08:20 | |
moritz | evalbot control restart | ||
08:20
camelia left
|
|||
FROGGS | umm | 08:20 | |
:p | |||
moritz | sorry for killing camelia under your feet :-) | 08:21 | |
08:21
camelia joined
|
|||
FROGGS | np | 08:21 | |
moritz | FROGGS++ # trying | ||
08:21
berekuk joined
08:22
ChanServ sets mode: +v camelia
|
|||
FROGGS | r: say "\c[BRAILLE PATTERN DOTS-13456]" | 08:24 | |
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileUnrecognized \c characterat /tmp/tmpfile:1------> say "\c[⏏BRAILLE PATTERN DOTS-13456]" expecting any of: …» | ||
FROGGS | cool | ||
I will report (and maybe fix) that | |||
08:26
fhelmberger joined
08:27
SamuraiJack_ left
08:29
berekuk left,
jnap joined
08:32
berekuk joined
08:34
jnap left
08:41
broquaint left
08:43
berekuk left
08:52
berekuk joined,
pecastro left
09:10
PZt left
09:12
Rotwang left
09:18
PZt joined
09:19
fhelmberger_ joined
|
|||
moritz | huh, when I compile perl-j, it seems to hang after stage jast | 09:20 | |
the java process has already eaten up 27 minutes CPU time | 09:21 | ||
moritz kills it | |||
09:22
fhelmberger_ left,
fhelmberger_ joined,
fhelmberger left
09:25
dakkar joined
09:29
jnap joined
09:34
jnap left
09:46
LLamaRider joined
|
|||
FROGGS | moritz: can you bisect it? | 10:15 | |
moritz | FROGGS: dunno if I can :-) | 10:20 | |
FROGGS | my nqp/rakudo built for all backends at HEAD successfully | 10:21 | |
10:21
pecastro joined
|
|||
moritz | with nqp/master? | 10:22 | |
bisecting a hang is no fun :( | 10:24 | ||
FROGGS | :/ | 10:25 | |
with master I'd say | |||
moritz | and it hangs so hard that a ctrl+c doesn't kill it | 10:26 | |
needs a kill -9 | |||
FROGGS | I don't know how else we should hunt that down | ||
moritz tries to find a good starting point for the bisect | 10:27 | ||
jnthn | It musta built fairly recently | 10:30 | |
'cus I was fixign the stack overflow bug just a couple of days ago | |||
moritz | yes | ||
I kinda fear it's something in my environment | |||
jnthn | oh :S | 10:31 | |
FROGGS | t/spec/S06-advanced/callframe.rakudo.parrot ..................... Failed 1/9 subtests | ||
(less 1 skipped subtest: 7 okay) | |||
that happens not only for me, right? | 10:32 | ||
dalek | p: 290a87b | (Arne Skjærholt)++ | src/vm/jvm/runtime/org/perl6/nqp/ (3 files): Progress towards pointer members in CStructs. CArrays and CPointers should work now, but CStructs inside CStructs are broken, due to a wrinkle in how we dynamically generate and load classes. 8c378e7 | (Tobias Leich)++ | src/HLL/Grammar.nqp: align charname to std Which allows things like \c[BRAILLE PATTERN DOTS-13456] |
10:33 | |
10:33
dalek left
|
|||
arnsholt | Aww, dalek dieded | 10:34 | |
FROGGS | arnsholt++ # anyway | ||
10:34
dalek joined,
ChanServ sets mode: +v dalek
|
|||
jnthn | FROGGS: I saw taht in the daily run | 10:34 | |
arnsholt++ # progress | |||
FROGGS | k | ||
and something about enums | |||
t/spec/S12-enums/pseudo-functional.t ............................ Failed 1/11 subtests | |||
arnsholt | jnthn: Could you review github.com/perl6/nqp/commit/c9c5f7...57c166d22e for me? | 10:35 | |
It changes P6Opaque a tiny bit as well, so a second opinion would be nice | 10:37 | ||
jnthn | oh wow... | ||
That sounds like a pretty good optimization.. | |||
arnsholt | Spiffy! | 10:38 | |
jnthn | arnsholt: That said... | ||
arnsholt: I think we might be better making an instance of it, and hanging it off GlobalContext. | |||
arnsholt: So it works out properly-er with evalserver. | 10:39 | ||
arnsholt | Right | ||
jnthn | arnsholt: Then we can share it between CStructand P6opaque | ||
10:39
fhelmberger_ left
|
|||
arnsholt | Yeah, definitely | 10:40 | |
I almost did that too, but wasn't confident enough that there wasn't some threading-related thing I'd missed =) | |||
arnsholt | The evalserver, is that a JVM thing we're using to do stuff, or something Perl-specific? | ||
nwc10 | is there an easy way to see which tests fail on Moar, but pass on JVM or pass on Parrot? | ||
FROGGS | nwc10: not that I know.... no | 10:43 | |
moritz | arnsholt: jvm-specific | ||
arnsholt: 'cause it's the one with very high startup time | |||
FROGGS | moritz: but it is our (sorear++'s) invention, not a thing jvm provides ootb, right? | 10:44 | |
jnthn | Yes, it's a sorear++ creation :) | ||
10:48
berekuk left,
berekuk joined
|
|||
timotimo | nwc10: almost all the tests that don't pass on parrot or jvm should be fudged | 10:49 | |
nwc10 | if it's not obvious, I'm curious what Parrot can do that MoarVM can't do yet | ||
timotimo | moritz: could the hard hang of the jvm possibly be related to trying to dump a very, very, very big core? | ||
i had that before that i couldn't kill a process while it was dumping core | 10:50 | ||
or rather, i killed it and it hung for a whole while because it had to dump core | |||
i have another feature request for camelia | 10:52 | ||
10:53
fhelmberger joined
|
|||
timotimo | r: say "hey, heyo, heya".split(", ").tree>>.comb.tree.perl | 10:54 | |
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«LoL.new(("h", "e", "y").list.item, ("h", "e", "y", "o").list.item, ("h", "e", "y", "a").list.item)» | ||
timotimo | r: say "hey, heyo, heya".split(", ").tree>>.comb.perl | ||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«(("h", "e", "y").list, ("h", "e", "y", "o").list, ("h", "e", "y", "a").list)» | ||
timotimo | r: for "hey, heyo, heya".split(", ").tree>>.comb.perl -> @a { say @a.perl } | 10:55 | |
camelia | rakudo-moar c8ec1d: OUTPUT«Nominal type check failed for parameter '@a'; expected Positional but got Str in block at /tmp/tmpfile:1» | ||
..rakudo-jvm c8ec1d: OUTPUT«Nominal type check failed for parameter '@a' in block at /tmp/tmpfile:1» | |||
..rakudo-parrot c8ec1d: OUTPUT«Nominal type check failed for parameter '@a'; expected Positional but got Str instead in block at /tmp/tmpfile:1» | |||
timotimo | r: for "hey, heyo, heya".split(", ").tree>>.comb.perl -> $a { say $a.perl } | ||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«"((\"h\", \"e\", \"y\").list, (\"h\", \"e\", \"y\", \"o\").list, (\"h\", \"e\", \"y\", \"a\").list)"» | ||
timotimo | ooph, haha | ||
r: for "hey, heyo, heya".split(", ").tree>>.comb -> @a { say @a.perl } | |||
camelia | rakudo-moar c8ec1d: OUTPUT«Nominal type check failed for parameter '@a'; expected Positional but got Str in block at /tmp/tmpfile:1» | ||
..rakudo-jvm c8ec1d: OUTPUT«Nominal type check failed for parameter '@a' in block at /tmp/tmpfile:1» | |||
..rakudo-parrot c8ec1d: OUTPUT«Nominal type check failed for parameter '@a'; expected Positional but got Str instead in block at /tmp/tmpfile:1» | |||
timotimo | r: for "hey, heyo, heya".split(", ").tree>>.comb -> $a { say $a.perl } | ||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«"h""e""y""h""e""y""o""h""e""y""a"» | ||
timotimo | r: for "hey, heyo, heya".split(", ").tree>>.comb.tree -> $a { say $a.perl } | ||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«("h", "e", "y").list.item("h", "e", "y", "o").list.item("h", "e", "y", "a").list.item» | ||
timotimo | that's better ... kind of | 10:56 | |
now how do i ... | |||
timotimo takes it to a local repl instead of spamming the chat | |||
10:59
denis_boyun joined
11:00
kivutar joined
|
|||
timotimo | r: gist.github.com/timo/8538083 | 11:02 | |
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileVariable '$common-prefix' is not declaredat /tmp/tmpfile:6------> $common-prefix⏏ = @pieces[0].substr(0,$_); e…» | 11:03 | |
timotimo | d'oh | ||
r: gist.github.com/timo/8538083 | |||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«rakudo-{parrot,jvm,moar} c8ec1d» | ||
timotimo | what this doesn't do is leave out pieces that don't fit, like "niecza blahblah" | ||
rn: say "test" | 11:04 | ||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, niecza v24-109-g48a8de3: OUTPUT«test» | ||
timotimo | moritz: ^ it ought to have rakudo-moar in it, too, no? | 11:05 | |
11:06
bjz_ left
|
|||
timotimo | oh hey, rakudo-moar reached 98.84% | 11:07 | |
nice work! | |||
11:07
bjz joined
|
|||
timotimo | 90 more test passes :) | 11:07 | |
(since yesterday, i mean) | 11:08 | ||
jnthn | So close to the 99%... | ||
timotimo | m: say "only {28379 - 28169} more tests until i've caught up with rakudo-parrot!" | ||
camelia | rakudo-moar c8ec1d: OUTPUT«only 210 more tests until i've caught up with rakudo-parrot!» | ||
11:09
preflex left
|
|||
moritz | timotimo: yes | 11:09 | |
jnthn | To folks in Germany: seems that the German Perl Workshop submissions closed before I got chance to submit. Didn't think it'd happen so early. | ||
timotimo | m: say "and {28499 * 0.99 - 28169} needed to get to 99% of rakudo-jvm; even without parallelism stuff!" | ||
camelia | rakudo-moar c8ec1d: OUTPUT«and 45.01 needed to get to 99% of rakudo-jvm; even without parallelism stuff!» | ||
timotimo | now we need to figure out how to make 0.01 test pass :\ | ||
jnthn | Just pass 46... | 11:10 | |
FROGGS | jnthn: I can talk to them if you want | ||
timotimo | jnthn: oh shoot, i didn't submit anything either! | ||
(and i'ven't even begun thinking about a topic) | |||
jnthn | FROGGS: Well, no, they already have a schedule sorted, I shouldn't barge in. | ||
timotimo | jnthn: but you're jnthn! | ||
jnthn | timotimo: But still, it's not really fair to expect them to kick somebody off the schedule who already got a talk accepted. | ||
timotimo | that's right | 11:11 | |
maybe they'll add a slot somewhere :P | |||
jnthn | Especially when those folks were more proactive than me. :) | ||
FROGGS | jnthn: I will ask them anyway if there are free slots that want filling | ||
jnthn | FROGGS: OK, but plesae don't pressure them to find one. | ||
FROGGS | sure | ||
jnthn | I've got FOSDEM and invites to other workshops...it's not like I ain't gonna get chance to speak at some places this year :) | 11:12 | |
Anyway, I guess my question was gonna be: if I ain't speaking, I'm not really hugely feeling a need to be at the workshop, given I won't understand most of the talks anyway. But I know some folks had hackathon-around-that-time ideas. Did anything concrete get planned? | 11:14 | ||
FROGGS | jnthn: I dunno if pmichaud still wants to come to gpw to meet you... | 11:15 | |
11:15
kivutar left
11:17
kivutar joined
|
|||
FROGGS | jnthn: I'm not sure that there is a hackathon at all... but I want to propose something: let us meet in late february? then I might even meet moritz :o) | 11:18 | |
timotimo should probably have another look at the calendar around that time | 11:21 | ||
FROGGS | jnthn: is there already a workshop/hackathon in feb where we could meet? | 11:22 | |
11:31
jnap joined
|
|||
timotimo thinks maybe this problem may make a good candidate for a code golf actually | 11:36 | ||
dalek | p: 523a33f | (Tobias Leich)++ | src/QRegex/P6Regex/Actions.nqp: fix \C[MUMBLE], negated version of \c[MUMBLE] |
||
11:36
jnap left
|
|||
dalek | kudo/nom: bc98d54 | (Tobias Leich)++ | tools/build/NQP_REVISION: pull in \C fixes |
11:37 | |
11:37
broquaint joined
|
|||
timotimo | this should give more passing tests on the two other backends as well, no? | 11:37 | |
FROGGS | 34 passes on all three, yes | 11:39 | |
dalek | ast: 32c36c7 | (Tobias Leich)++ | S05-mass/named-chars.t: untodo now working \C tests |
||
FROGGS | err, 54 actually | ||
jnthn | FROGGS: Well, I think Pm is open with regard to exactly when he comes. One other idea I have for that is that the Czech and Polish Perl workshops are very close together in time. | ||
FROGGS | may does not work though for moritz | 11:41 | |
jnthn | FROGGS: I already got somebody coming to visit late Feb so can't really do that... | ||
FROGGS | k | ||
jnthn | FROGGS: I'd be open to coming for some weekend hackathon in Germany sometime in the next month or two, though. | ||
11:41
grondilu joined
|
|||
grondilu | r: say first *>10, ^100 | 11:41 | |
moritz | you should plan without me; anything I plan for the next ~6 months is very unreliable | ||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«11» | 11:42 | |
jnthn | FROGGS: If it were to happen on the weekend after GPW, I could easily come down to Hannover on the Friday, meet in the evening, and hack for the weekend. | ||
timotimo could make any weekend except 2/21-2/23 work | |||
11:42
fhelmberger left
|
|||
moritz | and as much as I'd like to meet all of you, I don't think it would be productive to rely on my plans | 11:42 | |
FROGGS | jnthn: that sounds acceptable :o) | ||
jnthn | FROGGS: Hannover is one of the easily-reached-by-train bits of Germany from here. :) | ||
I suspect I could either return on Monday or take a late train on the Sunday. | |||
11:43
fhelmberger joined
|
|||
timotimo attends a birthday party on the evening of the 28th of march | 11:43 | ||
jnthn | timotimo: Ah | ||
timotimo | i can contribute via telepresence, though ;) | 11:44 | |
11:45
kivutar left
|
|||
jnthn | Hm, the train trip is not quite so convenient as I thought to go back late on Sunday. | 11:46 | |
11:46
kivutar joined
11:47
kivutar left
11:48
kivutar joined
11:57
kivutar left
11:58
kivutar joined
|
|||
FROGGS | nr: say "\c[BRAILLE PATTERN DOTS-13456]" | 12:03 | |
camelia | niecza v24-109-g48a8de3: OUTPUT«⠽» | ||
..rakudo-parrot c8ec1d, rakudo-jvm c8ec1d: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileUnrecognized \c characterat /tmp/tmpfile:1------> say "\c[⏏BRAILLE PATTERN DOTS-13456]" expecting any of: argument list …» | |||
12:03
SubTerra joined
|
|||
timotimo | r: say [1, 2, 3, 4].keys.combinations.perl; | 12:05 | |
camelia | rakudo-parrot c8ec1d: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in method combinations at gen/parrot/CORE.setting:8109 in block at /tmp/tmpfile:1» | ||
..rakudo-moar c8ec1d: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in method combinations at src/gen/m-CORE.setting:8089 in block at /tmp/tmpfile:1» | |||
..rakudo-jvm c8ec1d: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in method combinations at gen/jvm/CORE.setting:8089 in block at /tmp/tmpfile:1» | |||
timotimo | r: say [1, 2, 3, 4].keys.combinations(*).perl; | ||
camelia | rakudo-moar c8ec1d: OUTPUT«Cannot call 'combinations'; none of these signatures match::(List : Int $of, Mu *%_):(List : Range $of = { ... }, Mu *%_) in method combinations at src/gen/m-CORE.setting:8089 in block at /tmp/tmpfile:1» | ||
..rakudo-parrot c8ec1d: OUTPUT«Cannot call 'combinations'; none of these signatures match::(List : Int $of, Mu *%_):(List : Range $of = { ... }, Mu *%_) in any at gen/parrot/BOOTSTRAP.nqp:1219 in any at gen/parrot/BOOTSTRAP.nqp:1210 in method combinations at gen/pa…» | |||
..rakudo-jvm c8ec1d: OUTPUT«Cannot call 'combinations'; none of these signatures match::(List : Int $of, Mu *%_):(List : Range $of = { ... }, Mu *%_) in any at gen/jvm/BOOTSTRAP.nqp:1212 in any at gen/jvm/BOOTSTRAP.nqp:1202 in method combinations at gen/jvm/CORE.se…» | |||
timotimo | huh. | ||
12:05
Ayiko left
|
|||
timotimo | why isn't it taking the range version with the default value? | 12:06 | |
r: say [1, 2, 3, 4].keys.combinations(0..*).perl; | |||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«([0], [1], [2], [3], [0, 1], [0, 2], [0, 3], [1, 2], [1, 3], [2, 3], [0, 1, 2], [0, 1, 3], [0, 2, 3], [1, 2, 3], [0, 1, 2, 3]).list» | ||
12:07
woolfy1 joined
|
|||
timotimo | oh | 12:07 | |
the proto method has a $ in its signature | |||
maybe that ought to be $? | |||
12:07
berekuk left
12:08
bjz left,
woolfy left,
bjz joined
12:09
berekuk joined
|
|||
hoelzro | does --gen-moar not work? I feel like it's broken the last few times I've tried it | 12:10 | |
FROGGS | hoelzro: I know about issues on osx, but it should work for anybody else... | 12:11 | |
hoelzro | hmm | ||
I'm on an ARch VM | |||
FROGGS | *except 32bit users | ||
hoelzro | I did perl Configure.pl --prefix=$HOME/.mokudo --backends=moar --gen-moar | 12:12 | |
64-bit Arch | |||
FROGGS | do I would guess you can build MoarVM itself? | ||
how does it fail? | |||
12:12
kivutar left
|
|||
hoelzro | I can build Moar no problem | 12:13 | |
it doesn't even try | |||
hang on, I'll paste the output | |||
FROGGS | k | ||
hoelzro | FROGGS: pastebin.com/98gAmZ9v | 12:15 | |
jnthn | If you add --gen-nqp does it then do the two? | ||
hoelzro tries | |||
ah, that's it I think | |||
yeah, it's building Moar now at least | |||
I guess I just figured --gen-moar implied --gen-nqp | |||
--gen-parrot does, right? | |||
moritz | it does, yes | 12:16 | |
feel free to patch Configure.pl to make it more consistent | |||
hoelzro | noted =) | ||
12:17
berekuk left,
berekuk joined
|
|||
grondilu | timotimo: $? would not work | 12:17 | |
but | |||
timotimo | why wouldn't it? :( | 12:18 | |
grondilu | r: proto f($?) {*}; multi f($x) { $x }; say f; | ||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«===SORRY!===CHECK FAILED:Calling 'f' requires arguments (line 1) Expected any of: :($x)» | ||
grondilu | but you can do proto f($ = 0..*) {*} | ||
timotimo | er ... i can? | ||
grondilu | r: proto f($ = 2) {*}; multi f($x) { $x }; say f; | ||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«===SORRY!===CHECK FAILED:Calling 'f' requires arguments (line 1) Expected any of: :($x)» | ||
grondilu | oops | 12:19 | |
I tired it locally and it worked :/ | |||
r: proto f($ = 2) {*}; multi f($x = 1) { $x }; say f; | |||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«1» | ||
grondilu | weird | ||
timotimo | well, clearly perl6 is broken | 12:20 | |
moritz | I think the signature of the proto is just checked | ||
grondilu | do we have to put a proto anyway? | ||
timotimo is not sure when putting a proto is necessary | 12:21 | ||
grondilu | it's not nqp, so it should be fine, right? | ||
moritz | you only need to use an explicit proto if you want to put constraint on all candidates, or if you want to hide an outer proto | 12:23 | |
timotimo | the latter case i knew about | 12:24 | |
or you could use "only method foobar" | |||
jnthn | Putting a proto is needed if (a) you're writing NQP, (b) you're writing CORE.setting, (c) you want to hide an outer set of multis, or (d) you want to control what &thingy.arity or &thingy.count will return, which can be useful if you want to work well with map, reduce, etc. | 12:25 | |
timotimo | b i'm not understanding, d is actually pretty cool | ||
jnthn | Oh, and you want to constraint all candidates in some way, like moritz++ said. | ||
timotimo: b is because auto-generating a proto doesn't work in the setting | 12:26 | ||
grondilu | hang on, $? *should* work | ||
timotimo | ah, fair enough | ||
grondilu | r: proto f($?) {*}; multi f($x = 1) { $x }; say f; | ||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«1» | ||
tadzik | hm, don't you need a proto when you export a multi? | ||
grondilu | yeah, I forgot to put a default in the multi | ||
jnthn | grondilu: It worked, the error you got was 'cus the multi itself didn't handle the optional case, and you had no zero-arity multi candidate. | ||
tadzik: You don't have to have one, but it may be convenient in so far as you get to export all the candidates | |||
tadzik | hm, I remember wrong then :) | 12:27 | |
grondilu | timotimo: feel free to add ? in the combinations proto | 12:28 | |
timotimo | r: my %foo{Any}; %foo{$[1, 2, 3]} = 5; say %foo.perl; | ||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileUnsupported use of $[ variable; in Perl 6 please use user-defined array indicesat /tmp/tmpfile:1------> my %foo{Any}; %foo{⏏…» | ||
timotimo | r: my %foo{Any}; %foo{$(1, 2, 3)} = 5; say %foo.perl; | ||
camelia | rakudo-parrot c8ec1d, rakudo-jvm c8ec1d, rakudo-moar c8ec1d: OUTPUT«Hash[Any,Any].new($(1, 2, 3) => 5)» | ||
timotimo | fair enough | ||
12:29
kaleem left
12:30
kivutar joined
12:31
jnap joined
|
|||
grondilu | talking about combinations, I notice that the Int multi is not lazy (it does not use gather/take) | 12:35 | |
arnsholt | jnthn: Spectesting an NQP patch with the ByteClassLoader hanging off the GlobalContext now | ||
12:36
jnap left
|
|||
timotimo | you could check the output of time to see if it reduces the overall memory usage by much | 12:36 | |
this may even help with garbage collecting grammars | |||
because if i understood correctly, it would have created one p6opaque per grammar, and one classloader per p6opaque | |||
12:38
kivutar left
12:40
berekuk left
12:42
berekuk joined
|
|||
grondilu | proto foo($) { gather {*} }; multi foo(A $x) { for do-stuff { take something } } # <- Is something like this supposed to work? | 12:47 | |
timotimo | sounds about right, yeah | 12:48 | |
jnthn | whoa | ||
Does it work? :) | |||
timotimo | i would like that | ||
grondilu | no, but it used to | ||
jnthn | m: proto foo($) { gather {*} }; multi foo($x) { .take for ^$x }; say foo(10) | 12:49 | |
grondilu | I used to write this for same fringe in RC: gist.github.com/grondilu/8539314 | ||
camelia | rakudo-moar bc98d5: OUTPUT«» | ||
jnthn | r: proto foo($) { gather {*} }; multi foo($x) { .take for ^$x }; say foo(10) | ||
camelia | rakudo-parrot bc98d5, rakudo-jvm bc98d5, rakudo-moar bc98d5: OUTPUT«» | ||
jnthn | Hmm | ||
r: proto foo($) { gather {*} }; multi foo($x) { say 'here'; .take for ^$x }; say foo(10) | |||
camelia | rakudo-parrot bc98d5, rakudo-jvm bc98d5, rakudo-moar bc98d5: OUTPUT«» | ||
jnthn | Curious. | 12:50 | |
moritz | I guess it parses it as gather { } with a Whatever in there | ||
not as a {*} | |||
jnthn | Oh!! | ||
r: proto foo($) { gather { {*} } }; multi foo($x) { say 'here'; .take for ^$x }; say foo(10) | |||
camelia | rakudo-parrot bc98d5: OUTPUT«heresplice() not implemented in class 'Mu' in method reify at gen/parrot/CORE.setting:7243 in method reify at gen/parrot/CORE.setting:7241 in method reify at gen/parrot/CORE.setting:7241 in method reify at gen/parrot/CORE.setting:7337…» | ||
..rakudo-moar bc98d5: OUTPUT«here0 1 2 3 4 5 6 7 8 9» | |||
..rakudo-jvm bc98d5: OUTPUT«herecontrol operator crossed continuation barrier in block at /tmp/tmpfile:1» | |||
grondilu | neat | 12:51 | |
moritz | moar++ | ||
grondilu | the result is still not right, though: | 12:52 | |
timotimo | i'm really glad [eq] exists | ||
grondilu | m: gist.github.com/grondilu/8539314 | ||
camelia | rakudo-moar bc98d5: OUTPUT«1..6ok 1 - ok 2 - ok 3 - not ok 4 - not ok 5 - not ok 6 - # Looks like you failed 3 tests of 6» | ||
timotimo | :o | 12:53 | |
12:54
skids left
12:56
raiph joined,
atroxaper joined
12:57
berekuk left
12:59
telex left,
berekuk joined
|
|||
grondilu | though maybe at times where a gather was in proto, I had failed to notice that the result was incorrect. So it may have never truly worked, after all. | 13:03 | |
colomon | grondilu: is the code really meant to have recursive calls to gather? | 13:08 | |
seems like what you want is a wrapper function that calls gather, and then the recursive multi called from that. | 13:09 | ||
grondilu | that's what is being done in the current RC entry | 13:12 | |
but it's inelegant, imho | |||
r: proto foo($) { gather { {*} } }; multi foo(Int) { foo $_ for <foo bar> }; multi foo(Str $s) { take $s }; say foo(Int); | |||
camelia | rakudo-jvm bc98d5: OUTPUT«control operator crossed continuation barrier in block at /tmp/tmpfile:1» | ||
..rakudo-moar bc98d5: OUTPUT«» | |||
..rakudo-parrot bc98d5: OUTPUT«Cannot call 'foo'; none of these signatures match::(Int ):(Str $s) in any at gen/parrot/BOOTSTRAP.nqp:1219 in any at gen/parrot/BOOTSTRAP.nqp:1210 in block at /tmp/tmpfile:1» | |||
grondilu | m: proto foo($) { gather { {*} } }; multi foo(Int) { foo $_ for <foo bar> }; multi foo(Str $s) { take $s }; say foo(Int); | 13:13 | |
camelia | rakudo-moar bc98d5: OUTPUT«» | ||
grondilu was expecting "foo bar" | |||
colomon | grondilu: but what is the point of making fringe (Any) be gather take $leaf ? | ||
jnthn | Why? | ||
13:13
benabik left
|
|||
jnthn | The fall to foo in the first multi will establish a new gather | 13:14 | |
And then you throw away the results of it. | |||
*call | |||
grondilu | hum | ||
jnthn | The proto is called on each foo call | ||
colomon | I get the impression grondilu is thinking the proto is only called once | ||
grondilu | oh yeah | ||
jnthn | And take finds the nearest | ||
So recursion kinda kills the cute idiom, sadly :( | 13:15 | ||
grondilu | m: proto foo($) { gather { {*} } }; multi foo(Int) { take foo $_ for <foo bar> }; multi foo(Str $s) { take $s }; say foo(Int); | ||
camelia | rakudo-moar bc98d5: OUTPUT«foo bar» | ||
grondilu | ah | ||
jnthn | That does it, yes :) | ||
grondilu | m: gist.github.com/grondilu/8539314 | ||
camelia | rakudo-moar bc98d5: OUTPUT«1..6ok 1 - ok 2 - ok 3 - ok 4 - ok 5 - ok 6 - » | ||
grondilu | cool | ||
jnthn | That is kinda neat. | 13:16 | |
colomon | but why would you ever want to call gather take to return one value? it's incredibly wasteful. | ||
jnthn | Though...what colomon said :) | ||
It's going to be slow. | |||
13:16
kivutar joined
|
|||
jnthn | Well. It's going to be slower than it need be. | 13:16 | |
It makes sense if the candidates may take many things of course. | |||
grondilu | once you reach a leaf, you only have one value to return. I don't know about efficiency, but it does make sense. | 13:17 | |
colomon | grondilu: no, it doesn't make sense | ||
grondilu | :/ | ||
notice that even with a wrapper function (as in the current RC entry), you'll also have a multi that only takes one thing. | 13:18 | ||
13:19
berekuk left
13:20
berekuk joined
13:23
kivutar left
13:24
kivutar joined
|
|||
colomon | grondilu: the point is, the RC version has one gather which collects all of the takes. Yours has one gather call for every node and leaf of the $tree | 13:25 | |
grondilu | well, RC is a wiki after all. I'll put the code there. If someone is not happy with it, we'll discuss it there. | ||
13:25
kivutar left,
arnsholt left
|
|||
grondilu | colomon: indeed | 13:26 | |
13:26
arnsholt joined
13:27
kivutar joined,
berekuk left
|
|||
grondilu | good point | 13:28 | |
colomon is trying to think of how he can clearly demonstrate how mixed up this is | |||
grondilu | maybe with a samewith or something like that? I mean, it's possible to call an other candidate without calling the proto, isn't it? | 13:30 | |
grondilu doesn't know well the samewith, nextwith and similar :/ | 13:31 | ||
colomon | maybe? I've never understood all the rules for that. | ||
jnthn | Thing is... | ||
13:31
berekuk joined
|
|||
jnthn | m: proto foo($) { gather { {*} } }; multi foo(Int) { take foo $_ for <foo bar> }; multi foo(Str $s) { take $s }; say foo(Int); | 13:31 | |
camelia | rakudo-moar bc98d5: OUTPUT«foo bar» | ||
jnthn | m: proto foo($) { {*} }; multi foo(Int) { foo $_ for <foo bar> }; multi foo(Str $s) { $s }; say foo(Int); # I bet it does the same with the gather/take removed :) | 13:32 | |
camelia | rakudo-moar bc98d5: OUTPUT«foo bar» | ||
grondilu thought this had been tried earlier | 13:33 | ||
colomon | jnthn: right | ||
the original uses gather / take so that it is lazy | |||
jnthn | Ah... | ||
colomon | but doing a gather on each bit of the recursive call means it's only kind of lazy | ||
grondilu notices that there is not gather/take at all | 13:34 | ||
jnthn: no comment on the samewith/nextwith suggestion? | 13:35 | ||
jnthn | I have a bad feeling that the first thing eqv does on two lists is .elems them | ||
Which, of course, evaluates the whole thing | |||
nextwith is for iterating the current candidate list - that is, those valid in the initial dispatch. | 13:36 | ||
samewith will invoke the proto gain. | |||
*again | |||
grondilu | k | ||
jnthn | So I don't think either help in this case | ||
colomon | jnthn: you're totally right about eqv | 13:37 | |
that's annoying | |||
jnthn | Well, in the non-lazy case it's the fastest way to determine two things differ | 13:38 | |
grondilu | m: gist.github.com/grondilu/8539314 | 13:39 | |
camelia | rakudo-moar bc98d5: OUTPUT«1..6ok 1 - ok 2 - ok 3 - ok 4 - ok 5 - ok 6 - » | ||
grondilu | the non-lazy version is not too bad for RC | ||
13:40
kivutar left,
kivutar joined
|
|||
hoelzro | hmm | 13:41 | |
when the synopses say that alphanumeric characters may not be used as delimiters for m{ ... }, what's the definition of "alphanumeric"? | 13:42 | ||
STD seems to consider _ as alnum: | |||
std: m _o_ | |||
camelia | std 09dda5b: OUTPUT«===SORRY!===Alphanumeric character is not allowed as delimiter at /tmp/CpdiOGTXJp line 1:------> m ⏏_o_Parse failedFAILED 00:01 120m» | ||
colomon | Seems to me we need an easy way to determine if a List (Array, etc…) is lazy. | 13:44 | |
because (for example) infix:<eqv> is efficient if its inputs are not lazy, and wildly incorrect if they are. | |||
TimToady: ^^ RC, same-fringe, and eqv | 13:45 | ||
13:45
berekuk left
|
|||
dalek | p: 6ee4813 | (Arne Skjærholt)++ | src/vm/jvm/runtime/org/perl6/nqp/ (7 files): Only use a single ByteClassLoader, attached to the GlobalContext. In a few cases (Java interop), we still have to create additional ByteClassLoaders, but this should cut down memory use a bit. |
13:47 | |
13:47
berekuk joined
13:48
bjz left,
ajr joined
13:49
kaleem joined,
ajr is now known as Guest27614,
Guest27614 is now known as ajr_
13:50
bjz joined
|
|||
hoelzro | ah, apparently _ are considered alnums by NQP/Rakudo as well | 13:51 | |
13:53
sqirrel left
13:55
kivutar left,
jnap joined
13:56
kivutar joined
13:58
berekuk left
13:59
jnap left
|
|||
[Coke] | m: say "Only { 28499*.99-28169} tests left for moar to hit 99%" | 14:01 | |
camelia | rakudo-moar bc98d5: OUTPUT«Only 45.01 tests left for moar to hit 99%» | ||
nwc10 | what's the ratio of Moar to Parrot? | 14:02 | |
[Coke] | m: say "Moar is at {100*28169/28379}% of parrot." | 14:04 | |
camelia | rakudo-moar bc98d5: OUTPUT«Moar is at 99.260016% of parrot.» | ||
hoelzro | wow | 14:05 | |
14:05
kivutar left
|
|||
hoelzro | such passing | 14:05 | |
many test. | |||
grondilu | .oO( sounds like a doge. Intentional? ) |
14:06 | |
14:06
kivutar joined
14:10
berekuk joined
|
|||
hoelzro | maaaaaaybe | 14:11 | |
14:15
kivutar left,
kivutar joined
14:16
araujo joined
14:19
berekuk left,
kbaker joined
14:20
sqirrel joined
14:23
berekuk joined
14:25
kivutar left
|
|||
[Coke] | crapcrapcrap I had a 3 day weekend to work on my perl 6 presentation, and did not. | 14:25 | |
14:25
kivutar joined
14:29
skids joined
14:30
berekuk left
14:32
araujo left
14:36
kaare__ left
14:37
salv0 left,
ajr_ left,
jnap joined,
salv0 joined
14:38
ajr joined,
ajr is now known as Guest97702,
Guest97702 is now known as ajr_
14:39
kaleem left,
jnap1 joined
14:40
jnap left,
kivutar left
14:41
kivutar joined
14:46
sqirrel left
|
|||
grondilu | for some reason I have to run make install twice until I can run tests. | 14:46 | |
FROGGS | I guess all of us have that problem | 14:47 | |
14:49
berekuk joined
|
|||
jnthn don't... | 14:49 | ||
colomon | I tried make spectest on jvm (I think) yesterday and it ran a bunch of tests and then hung, very odd | 14:51 | |
dalek | kudo/nom: 58b1a27 | moritz++ | Configure.pl: [Configure] --gen-moar should imply --gen-nqp |
14:52 | |
14:53
berekuk left
14:54
berekuk joined
14:56
thou joined
15:00
btyler joined,
smls joined,
kivutar left
|
|||
smls | Is there any user-friendly documentation that explains when binding should be used instead of assignment (and when not)? | 15:02 | |
15:02
kivutar joined
|
|||
grondilu | r: use MONKEY_TYPING; class Foo { my sub talk { say "hi" } }; augment class Foo { method talk { talk } }; Foo.new.talk; | 15:03 | |
camelia | rakudo-parrot bc98d5, rakudo-jvm bc98d5, rakudo-moar bc98d5: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileUndeclared routine: talk used at line 1» | ||
smls | For example, in yesterday's log I see a bunch of "my $s := Supply.new;" - why the binding? | ||
dalek | ast: 6bb4aad | (Tobias Leich)++ | S05-mass/properties-general.t: unskip tests that are meant to work on moar |
||
moritz | smls: I don't think it matters in that case | ||
15:03
johnmilton joined
|
|||
moritz | smls: doc.perl6.org/language/containers tries to explain what binding is, but not really when to use it | 15:04 | |
smls | Also, many Perl 6 examples floating around the net use binding for storing a lazy list in an array, but even that seems to work with assignment... | ||
p: my @array = 1..*; say @array[4] | |||
camelia | rakudo-parrot bc98d5: OUTPUT«5» | ||
grondilu | when I do monkey typing, the 'my'-scoped lexical variables and functions are not visible inside an 'augment' block? | ||
moritz | smls: the assignment only works properly when the compiler can find out that the list is infinite | 15:05 | |
grondilu | (see example above) | ||
moritz | smls: otherwise it might reify lots of list items that you don't want; which is why binding is safer in the context of laziness | ||
grondilu | r: use MONKEY_TYPING; class Foo { our sub talk { say "hi" } }; augment class Foo { method talk { talk } }; Foo.new.talk; | ||
camelia | rakudo-parrot bc98d5, rakudo-jvm bc98d5, rakudo-moar bc98d5: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileUndeclared routine: talk used at line 1» | ||
grondilu | r: use MONKEY_TYPING; class Foo { our sub talk { say "hi" } }; augment class Foo { method talk { self::talk } }; Foo.new.talk; | 15:06 | |
moritz | grondilu: lexicals are lexically scoped | ||
camelia | rakudo-jvm bc98d5: OUTPUT«Could not find symbol '&talk' in method <anon> at gen/jvm/CORE.setting:12133 in any at gen/jvm/Metamodel.nqp:2610 in any find_method_fallback at gen/jvm/Metamodel.nqp:2609 in any find_method at gen/jvm/Metamodel.nqp:947 in any at gen/j…» | ||
..rakudo-parrot bc98d5: OUTPUT«Could not find symbol '&talk' in method <anon> at gen/parrot/CORE.setting:12154 in any at gen/parrot/Metamodel.nqp:2693 in any find_method_fallback at gen/parrot/Metamodel.nqp:2681 in any find_method at gen/parrot/Metamodel.nqp:948 i…» | |||
..rakudo-moar bc98d5: OUTPUT«===SORRY!===Could not find symbol '&talk'» | |||
moritz | so, no, not visible in an augment | ||
grondilu | ok | ||
r: use MONKEY_TYPING; class Foo { our sub talk { say "hi" } }; augment class Foo { method talk { Foo::talk } }; Foo.new.talk; | 15:07 | ||
camelia | rakudo-parrot bc98d5, rakudo-jvm bc98d5, rakudo-moar bc98d5: OUTPUT«hi» | ||
smls | moritz: does the spec define the cases in which the compiler can be assumed to figure this out? | ||
moritz | smls: I don't know | 15:08 | |
colomon | smls: not very well, so far as I know. | ||
smls | also, wasn't there supposed to be a "lazy" keyword to tell the compiler when you want lazyness? | ||
colomon | p: my @array = 1...*; say @array[4] | ||
camelia | rakudo-parrot bc98d5: OUTPUT«5» | ||
moritz | smls: yes | ||
smls | re. doc.perl6.org/language/containers, I still can't make head or tail of it... First it says: "a variable is not a user-exposed object in Perl 6", but then a little later: "objects of type Scalar are everywhere in Perl 6". Which is it? | 15:11 | |
moritz | a variable isn't an object of type Scalar | ||
it can contain one | |||
smls | then what is a Scalar? | ||
moritz | it's a container. | 15:12 | |
15:12
sqirrel joined
|
|||
smls | So there are 3 levels: variable - container - value ? | 15:12 | |
moritz | yes | ||
smls | why would users need to deal with Scalar as an object? | 15:13 | |
moritz | it plays a critical role in understanding whether something will flatten in list context | 15:14 | |
p: my $x = (1, 2, 3); my $cnt = 0; ++$cnt for $x; say $cnt | |||
camelia | rakudo-parrot bc98d5: OUTPUT«1» | ||
moritz | p: my \x = (1, 2, 3); my $cnt = 0; ++$cnt for x; say $cnt | ||
camelia | rakudo-parrot bc98d5: OUTPUT«3» | ||
moritz | the difference here is that $x is containerized, so it doesn't flatten | 15:15 | |
colomon | news.ycombinator.com/item?id=7095532 # may be the nicest thing I've ever seen about p6 on HN | ||
15:15
ajr_ left
15:17
kivutar left,
ajr_ joined
15:18
kivutar joined
15:19
Leland joined
|
|||
smls | Wait, what? Variables without sigils? | 15:19 | |
what are those called? | |||
p: my $x = (1, 2, 3); my $cnt = 0; ++$cnt for @$x; say $cnt # Also, you could have just used this, no? | 15:20 | ||
camelia | rakudo-parrot bc98d5: OUTPUT«3» | ||
moritz | smls: my intention was to demonstrate that Scalar containers matter, not to iterate over a list :-) | 15:21 | |
smls | ok :) | 15:22 | |
but why do non-containerized, sigil-less variables exist? | |||
15:22
Alina-malina left
|
|||
smls | (Other than to confuse Perl 5 developers like myself?) | 15:23 | |
15:23
Alina-malina joined
|
|||
moritz | smls: mostly to be able to pass around stuff without imposing context | 15:23 | |
PerlJam | mostly? What else? | 15:24 | |
moritz | PerlJam: performance optimization | ||
PerlJam: aesthetics, maybe | |||
btyler | colomon: or about perl at all, if you take the thread as a whole | ||
PerlJam | ah, I hadn't considered that there would be opportunity for optimization | 15:25 | |
But yes, certainly aesthetics | |||
moritz | one less object to allocate | ||
smls | Can't $scalar variables be optimized to avoid the indirection in many cases? | ||
moritz | smls: that's a bit tricky, because variables can be passed to methods, and you generally don't know to which method a call dispatches at compile time | 15:26 | |
but there are cases that have potential for optimization, yes | 15:27 | ||
jnthn | Yeah. "Not easily". | ||
But MoarVM knows what containers are, at least. | |||
Once it type specializes, and provided it inlines methods, a bunch more opportunities might open up. | |||
smls | But isn't that a reason *against* making Scalar containers so user-visible? | 15:30 | |
moritz | smls: how would you control whether something flattens? | ||
smls | $foo, @foo, $@foo, list $foo | ||
jnthn | smls: In general, "hide stuff and make it magical" is not really the Perl 6 way. | 15:31 | |
smls: We tend to encode most things through the type system somehow. | |||
moritz | smls: ok, and if you bind that stuff to a sigilless parameter, you need to preserve that | ||
smls: so you need runtime information about whether something flattens | 15:32 | ||
(same for returning stuff) | |||
15:32
kivutar left,
kivutar joined
|
|||
smls | What about Perl 5, does it also use this sort of "lexpad entry -> container -> value" indirection? | 15:35 | |
(behind the scenes) | |||
[Coke] | colomon: were you using the eval server? | ||
colomon | [Coke]: … errr … when? | ||
moritz | smls: not really, but it has tie and magic | ||
15:35
bluescreen10 joined
|
|||
moritz | smls: and for symbol tables it has the 'typeglob' layer | 15:36 | |
smls | moritz: "if you bind that stuff to a sigilless parameter" - well, why allow sigilless parameters then? | ||
as for tie, yeah, I can imagine how that might make things more complicated/slow | 15:37 | ||
moritz | smls: it's very important to be able to pass stuff around without imposing a context; the setting uses it all over the place | 15:38 | |
smls: for example for delegation | |||
15:38
berekuk left
|
|||
moritz | smls: also, you still have the same problem for returns | 15:38 | |
15:39
berekuk joined
|
|||
smls | but won't the compiler know the target context when it puts the whole program together? | 15:40 | |
moritz | no | 15:41 | |
and, more importantly, it's fine to return an item in list context | |||
if you want it to not flatten | |||
otherwise you couldn't build nested data structures | |||
I think we all would be happy if we could get rid of a level of indirection, but so far none of us have managed | 15:43 | ||
PerlJam | smls: If you didn't have sigilless parameters, how would you tell the compiler "pass the context through unchanged"? (You'd kind of shoe-horn it in "scalar context" like P5 does. P6 tries to be better :) | ||
15:43
ajr_ left
|
|||
smls is still not convince that a little magical "shoe-horning" is worse than allocating an additional object for each value. | 15:44 | ||
moritz | smls: also, how do you make 'is rw' params without containers? | 15:45 | |
smls | magical aliasing? :P | ||
moritz | or rw accessors? | ||
smls: maybe you should apply your magic to rakudo to make it faster :-) | 15:46 | ||
smls | how does Perl 5 do it? | ||
it also aliases function parameters | |||
15:46
berekuk left
|
|||
PerlJam | smls: magic should be used sparingly. | 15:47 | |
15:47
berekuk joined,
kivutar left
15:49
benabik joined
15:54
yves_ left
15:56
woolfy1 left
15:59
smls_ joined,
Psyche^_ joined,
smls left
16:00
sqirrel left
16:01
lizmat left
16:02
Psyche^ left
|
|||
smls_ | On a completely unrelated note: I was wondering, is Damian Conway no longer involved with Perl 6 development? | 16:03 | |
16:04
kivutar joined
|
|||
smls_ | He was always the "Perl celebrity" I associated most with the Perl 6 project, besides Larry. | 16:05 | |
FROGGS | I've not seen nor talked to him since I am here (Oct '12) | 16:07 | |
16:07
kivutar left
|
|||
grondilu | he talked about Perl and Perl 6 at OSCON 2013: www.youtube.com/watch?v=MxcVjbyKzQA | 16:08 | |
but he does not stick around here, as far as I know (but I know little :) ) | 16:09 | ||
16:11
kivutar joined,
raiph left
|
|||
arnsholt | From what I gather, Damian doesn't do IRC, but he's still around | 16:12 | |
16:16
berekuk left
16:17
kivutar left
|
|||
diakopter | he withdrew from helping with Programming Perl 6 | 16:18 | |
16:18
kivutar joined
|
|||
diakopter | so there's that | 16:18 | |
16:18
sqirrel joined
16:19
atroxaper left,
[Sno] left
16:20
berekuk joined
|
|||
benabik | Hm. Looks like recent changes to \c cause test failures with nqp-p | 16:22 | |
diakopter | well the tests were updated to match latest unicode | 16:23 | |
benabik | Parrot uses icu, which should be up to date. Had problems with the vowel separator well before Moar did. | ||
diakopter | well yeah icu upstream should be up to date | 16:24 | |
but that doesn't mean the packages are anywhere close | |||
benabik | Three failures: t/qregex/01-qregex.t 428,429,430 all labeled "hex (\c[])" | 16:25 | |
FROGGS | umm | ||
nqp: say("A" ~~ /\c[65]/) | 16:26 | ||
camelia | nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«A» | ||
FROGGS | nqp: say("A" ~~ /\c[]/) | ||
camelia | nqp-jvm: OUTPUT«Unrecognized \c character at line 2, near "[]/)" in panic (gen/jvm/stage2/NQPHLL.nqp:378) in charspec (gen/jvm/stage2/NQPHLL.nqp) in backslash:sym<c> (gen/jvm/stage2/NQPP6QRegex.nqp) in !protoregex (gen/jvm/stage2/QRegex.nqp:756) in backslash (gen…» | ||
..nqp-parrot: OUTPUT«Unrecognized \c character at line 2, near "[]/)"current instr.: 'panic' pc 15952 (gen/parrot/stage2/NQPHLL.pir:5947) (gen/parrot/stage2/NQPHLL.nqp:425)» | |||
..nqp-moarvm: OUTPUT«Unrecognized \c character at line 2, near "[]/)" at gen/moar/stage2/NQPHLL.nqp:369 (/home/p6eval/rakudo-inst-1/languages/nqp/lib/NQPHLL.moarvm:panic:119) from <unknown>:1 (/home/p6eval/rakudo-inst-1/languages/nqp/lib/NQPHLL.moarvm:charspec:367) from <…» | |||
16:26
kaleem joined
|
|||
FROGGS looks at the test | 16:26 | ||
benabik | home-brew packages icu4c 42.1, which appears to be the most recent. | ||
diakopter | ok | 16:27 | |
16:27
kivutar left
|
|||
benabik | Actually.... I'm having that problem on -j and -m as well. | 16:28 | |
16:28
kivutar joined
|
|||
benabik | So, I'm going to revise that to "recent changes to \c cause test failures on my machine" | 16:28 | |
Passes all the TODOed \C33 tests though. | 16:30 | ||
Moar is notably faster than Parrot on this test. | 16:31 | ||
FROGGS | r: say "abc!!def" ~~ /\c[33,33]/ | ||
camelia | rakudo-jvm 58b1a2: OUTPUT«(timeout)» | ||
..rakudo-parrot 58b1a2, rakudo-moar 58b1a2: OUTPUT«「!」» | |||
benabik | It appears to fail on all the tests with commas. | 16:32 | |
FROGGS | r: say("abc!!def" ~~ /c \c[33,33] d/) # that is the problem | 16:33 | |
camelia | rakudo-parrot 58b1a2, rakudo-jvm 58b1a2, rakudo-moar 58b1a2: OUTPUT«Nil» | ||
benabik | nqp: say("abc!!def" ~~ /c \c[33,33] d/) | ||
FROGGS | it was meant to has a width of two | ||
camelia | nqp-moarvm: OUTPUT«Substring length (-5) cannot be negative at gen/moar/stage2/QRegex.nqp:1127 (/home/p6eval/rakudo-inst-1/languages/nqp/lib/QRegex.moarvm:Str:22) from gen/moar/stage2/NQPCORE.setting:674 (/home/p6eval/rakudo-inst-1/languages/nqp/lib/NQPCORE.setting.moarvm:…» | 16:34 | |
..nqp-parrot: OUTPUT«» | |||
..nqp-jvm: OUTPUT«java.lang.StringIndexOutOfBoundsException: String index out of range: -5 in Str (gen/jvm/stage2/QRegex.nqp:1127) in (gen/jvm/stage2/NQPCORE.setting:674) in print (gen/jvm/stage2/NQPCORE.setting:673) in say (gen/jvm/stage2/NQPCORE.setting:680) in …» | |||
FROGGS | r: say("abc!!def" ~~ /c \c[33,33]+ d/) # that is the problem | ||
camelia | rakudo-parrot 58b1a2, rakudo-jvm 58b1a2, rakudo-moar 58b1a2: OUTPUT«「c!!d」» | ||
16:34
jnap1 left
|
|||
FROGGS | damn, so there was a reason nobody converted it into an enumcharlist :( | 16:34 | |
16:35
zakharyas left,
kivutar left
16:36
kivutar joined
|
|||
grondilu | timotimo: FYI github.com/rakudo/rakudo/pull/240 | 16:38 | |
benabik | Wow. nqp/m-test takes 0:36. nqp/p-test takes 2:42 | 16:41 | |
arnsholt | Wow. I should get hacking on Moar =) | ||
benabik | j-test takes approximately forever, of course. ;-) | 16:42 | |
arnsholt | Sounds about right | 16:44 | |
16:44
berekuk left
16:47
berekuk joined
|
|||
TimToady | backlogus enormus enormus est | 16:49 | |
benabik | Is \C[33,33] supposed to be the same as \C[33]\C[33]? | 16:50 | |
FROGGS | benabik: yes | ||
benabik | Or is it a negated literal match? (i.e. any two characters as long as they aren't \c[33,33]) | ||
(i.e. would match \c[32,33]) | 16:51 | ||
*e.g. | |||
FROGGS | I think \C[33,33] should match \c[32,33] | ||
16:52
jnap joined
|
|||
TimToady | a third alternative is that it act like a character class an advance only one char regardless of how much it's matching | 16:53 | |
16:53
djanatyn left
|
|||
TimToady | *and | 16:53 | |
16:53
djanatyn joined
|
|||
FROGGS | I implemented that as an enumcharlist right now by accident | 16:53 | |
TimToady | which would make it equiv to [<!before \c[33,33]> .] | 16:54 | |
benabik | That seems... surprising. | ||
TimToady | is consistent with how <-[]> is defined | ||
16:54
berekuk left
|
|||
benabik | But \c isn't like <[]>. | 16:55 | |
TimToady | sure it is | ||
16:55
kaleem left
|
|||
benabik | <[!!]> would only match one character. \c[33,33] matches two. | 16:56 | |
TimToady | especially when you compare to how tr looks up characters | ||
FROGGS | you talk, and I mop up the blood after dinner :o) | ||
16:56
FROGGS left
16:57
berekuk joined
|
|||
TimToady | in the abstract, we have an alternation of characters, and some of those could be longer than one position, depending on the Unicode level or language | 16:58 | |
the negated forms always advance by a . regardless | |||
(the positive forms advance by the actual length matched) | 16:59 | ||
dalek | kudo-star-daily: fcee223 | coke++ | log/ (5 files): today (automated commit) |
||
sqirrel | pleas tell me that "mop up blood after dinner" is a programmers joke....or should I get prepared for a bloodbath before my husband arrives at home? o.O | 17:00 | |
TimToady | arguably \C[33,33] is not an alternation, unless you count it as an alternation of 1 :) | ||
17:00
fhelmberger left,
kivutar left
|
|||
TimToady | but consider whether \C[10,13]* should stop at the second 10 in "\c[10,10,13]" | 17:01 | |
17:01
kivutar joined
|
|||
[Coke] | colomon: (eval server) when the jvm spec test died on you. | 17:02 | |
TimToady | and then it starts looking a lot more like a negated character class that happens to support the CRLF "grapheme" | ||
colomon | [Coke]: I just said "make spectest" | ||
TimToady | er, I guse those 10's and 13's should be swapped | 17:03 | |
guess, even | |||
or you're processing spanish, and want to match everything up to a \C[ll] | 17:04 | ||
well, except that form doesn't work :) | |||
17:06
cognominal__ joined,
benabik_ joined
|
|||
TimToady will think a bit to see if there are arguments for the other approaches | 17:07 | ||
dalek | kudo/nom: 7adb6dd | grondilu++ | src/core/List.pm: Update List.pm adds a ? to the prototype signature so that it can be called with no arguments, as suggested by timotimo. |
17:08 | |
kudo/nom: 695493b | timo++ | src/core/List.pm: Merge pull request #240 from grondilu/patch-1 Update combinations prototype in List.pm |
|||
17:09
benabik left,
ivan`` left,
markov left,
djanatyn left,
bluescreen10 left,
cotto left,
benabik_ is now known as benabik,
PZt left,
cognominal left,
cotto joined
17:10
ivan`` joined,
bluescreen10 joined,
djanatyn joined,
ivan`` left,
ivan`` joined
17:12
raiph joined,
kivutar left
17:13
berekuk left,
kivutar joined
17:15
berekuk joined
17:18
FROGGS joined
17:19
berekuk left,
pecastro left
17:21
berekuk joined
17:23
kivutar left,
kivutar joined
17:24
markov joined
|
|||
xfix | .u ☃ | 17:24 | |
yoleaux | U+2603 SNOWMAN [So] (☃) | ||
17:26
berekuk left
17:28
berekuk joined
17:33
kivutar left
17:34
kivutar joined
|
|||
TimToady | jnthn: I believe OSCON has a submission deadline coming up soonish, if you want to consider that | 17:36 | |
17:37
djanatyn left,
djanatyn joined,
berekuk left
17:38
berekuk joined
17:43
sqirrel left,
kivutar left,
kivutar joined
17:46
PZt joined
17:48
ajr joined
17:49
jeffreykegler joined,
ajr is now known as Guest12855,
spider-mario joined
17:50
Guest12855 is now known as ajr_
17:51
[Sno] joined
17:52
kivutar left
17:53
lizmat joined
17:54
berekuk left
17:55
census joined
17:57
berekuk joined
18:01
dakkar left
18:04
LLamaRider left
18:07
berekuk left
|
|||
timotimo | fwiw, rakudo-parrot doesn't start up much slower than rakudo-moar does | 18:07 | |
0.31s vs 0.21s respectively | |||
diakopter | yeah it's pretty much the same for me too | 18:08 | |
lee__ | 33% faster! :P | 18:09 | |
benabik | 2.16s vs 0.72s here. Although I'm running debug builds of both. | 18:11 | |
18:11
Rotwang joined
|
|||
timotimo | i have --debug=3 of moarvm, too | 18:11 | |
but --optimize=1 (which is the default) | |||
japhb | Which is faster? (I haven't backlogged yet.) | 18:12 | |
18:12
telex joined
|
|||
benabik | Moar | 18:13 | |
benabik work & | |||
18:14
berekuk joined
|
|||
raydiak | good morning #perl6 | 18:15 | |
timotimo | hello raydiak :) | 18:16 | |
japhb | Wow, 1.5x to 3x faster startup? Very nice indeed! | 18:17 | |
japhb wonders how many of his personal tools can already have s/perl6-p/perl6-m/ in the shebang for an instant win. | |||
timotimo | any that don't need sockets at the very least | 18:18 | |
and i think dir() is also currently not perfect | |||
18:18
berekuk left
|
|||
jnthn | japhb: Now imagine that for your concurrent ones too... :) | 18:20 | |
18:21
berekuk joined
|
|||
TimToady | eqv was lazy when I tested it, but maybe I tested it on niecza at the time | 18:21 | |
timotimo | raydiak: can you try to run pray under rakudo-moar? | ||
TimToady | I would say that an eqv that calls .elems first is simply incorrect in the face of laziness | 18:22 | |
raydiak | timotimo: sure, give me some time to compile it [thought it scares me...jvm is slow enough atm :) ] | 18:23 | |
which reminds me, japhb: did you decide anything on your priority list you were talking about a few days ago? I'm almost at a stopping point and will be able to work on that math lib you conceived of | 18:24 | ||
[Coke] | r: say $a=; | ||
18:24
pecastro joined
|
|||
camelia | rakudo-parrot 58b1a2, rakudo-jvm 58b1a2, rakudo-moar 58b1a2: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileVariable '$a' is not declaredat /tmp/tmpfile:1------> say $a⏏=; expecting any of: postfix» | 18:24 | |
timotimo tries to hook up perl6-bench and rakudo-moarvm | |||
[Coke] | ^^ was that Mouq++ ? | ||
18:26
berekuk left
|
|||
timotimo | was what exactly? | 18:26 | |
what's necessary to let rakudo-moar run from outside the rakudo dir? | 18:28 | ||
jnthn | timotimo: That already worked for me. How does it fail for you? | 18:29 | |
timotimo | Missing or wrong version of dependency 'gen/moar/stage2/QRegex.nqp' | ||
jnthn | timotimo: Oh, that one. Zap your install dir... | ||
timotimo | will do | ||
18:29
raiph left
|
|||
jnthn | timotimo: We used to install things in wrong places, it seems. | 18:29 | |
[Coke] | timotimo: note that there was one single response, not three different ones becaue the temp file changed. | ||
jnthn | timotimo: And then stopped, but now old versions sit somwehere in install... | ||
timotimo | fair enough! | 18:30 | |
yes, Mouq++ did that | |||
18:30
berekuk joined
18:43
berekuk left
18:45
berekuk joined
18:46
locsmif joined
18:48
eternaleye left
|
|||
dalek | ecs: 1206d5e | larry++ | S03-operators.pod: eqv must respect laziness |
18:50 | |
18:51
raiph joined
18:54
eternaleye joined
|
|||
[Coke] | huh: www.gnu.org/software/perl/manual/ | 18:54 | |
18:57
pecastro left
19:03
berekuk left
|
|||
raydiak | "because they found it useful to have the core Perl documentation available in Info and other formats" | 19:03 | |
in what way is that useful? | |||
timotimo | info is the best help system ever devised | ||
geekosaur | ...except for all the others... | 19:04 | |
raydiak | guess I don't know much about it, than | ||
*then | |||
moritz | ... except that nobody uses it | ||
timotimo | yeah, it's stupid unintuitive to use | ||
dalek | ecs: 8601457 | larry++ | S05-regex.pod: \c \C \x \X \o \O create "long characters" |
19:06 | |
japhb__ | jnthn, Yes, fast startup for my concurrent stuff will be VERY VERY NICE. | 19:07 | |
japhb__ wants ALL THE THINGS. | |||
dalek | ast: 1bf7816 | (Tobias Leich)++ | S05-mass/properties-derived.t: fix test about Unassigned and ID_Continue \x[9FC4] is in both ID_Continue and ID_Start. In fact, all ID_Start are in ID_Continue. \x[27EC] is an assigned char now (MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET), so choosed something else. |
19:08 | |
timotimo pulled all the commits | 19:09 | ||
japhb__: can we teach perl6-bench to cache git repositories if they have the same address? | |||
japhb__ blinks | |||
.oO( What makes tonight different from all other nights? ) |
19:10 | ||
timotimo | well ./bench fetch will fetch the same stuff like 4 times | ||
arnsholt | Yeah, I'm sure info is awesome (it certainly sounds good), it's just that the interface is atrocious | ||
japhb__ | timotimo, It's fetching into the local master mirrors, and then fetching from the mirrors into the individual copies. | ||
Only one fetch happens "over the wire" | |||
timotimo | fair enough | 19:11 | |
FROGGS | TimToady: so \C[1,2] matched one but \c[1,2] two chars? just wanna confirm, before I fix nqp :o) | ||
and btw, is <:Any> specced somewhere? | 19:12 | ||
timotimo tries his rakudo-moar config for perl6-bench | |||
japhb__ | That said, any way that you know of to speed up that operation while at the same time retaining the isolation properties, I'm all ears. | 19:13 | |
19:13
eternaleye left
|
|||
timotimo | what are isolation properties? :| | 19:13 | |
also, i'd love a fancier display during benchmarking to see where things are going and perhaps an estimation of the remaining time | |||
and all kinds of convenient things like that :P | |||
japhb__ | When I can count on everyone being able to use r-m (i.e. when an r-m is released that supports panda and all the piping and such bench does), I'll consider doing that stuff concurrently. | 19:14 | |
timotimo | i probably asked this already, but what are our plans for testing the same benchmark across historical versions of given backends? | ||
yes, that would be quite cool | |||
especially since the builds could parallelize, but don't | |||
19:14
eternaleye joined
|
|||
japhb__ | timotimo, the isolation is that you can't accidently mess things up in the mirror or in another clone when "trying stuff out" in one of the child clones. | 19:14 | |
timotimo | ah, good point. i hadn't considered that | 19:15 | |
you already use the "make hardlinks" feature, right? | |||
japhb__ | timotimo, It's automatic when you do a same-local-disk clone. | ||
timotimo, Historical benchmark history? I think we need a few things there: 1) more tests, 2) a fair way to summarize all the test results to one (or a small number) of results per-backend-per-rev, 3) an accessible place to store the data, 4) a decent UI to display that data, 5) some otherwise idle systems donating time to run the tests fairly, and 6) retroactive runs to fill in older data (optional, but may be desirable), | 19:18 | ||
timotimo | what i mean is a single benchmark over time | 19:20 | |
TimToady | FROGGS: yes, \C[1,2] only matches one char when \c[1,2] doesn't match at this position | 19:21 | |
arnsholt | Summarisation of several runs should probably be the median, with interquartile range or something like that if you want to show variation too | 19:22 | |
FROGGS | k, thanks | ||
arnsholt | (Can't remember how p6bench does that, even though I attended japhb__'s talk) | ||
japhb__ | timotimo, Yes, I'm saying that while it will be nice to track e.g. rc-forest-fire over time, since it includes enough different idioms to be "interesting" by itself, for a lot of the microbenchmarks, you want to aggregate them like with speed.pypy.org | ||
arnsholt, most of the benchmarks are better served with fastest-of-N rather than showing performance variation, because almost all of the variation for a given compiler, test, and scale will end up being external effects (cron jobs firing and suchlike). | 19:24 | ||
timotimo | well... i guess | ||
arnsholt | Yeah, that's true | 19:25 | |
timotimo | hm. my old laptop is no longer needed for laptopy things | ||
japhb__ | I'm not doing things like DB accesses, or (other than rc-forest-fire), any randomized inputs. | ||
timotimo | i could make it wake up once a day and do a benchmark run of the newest commit | ||
japhb__ | Ooh, that's a cool idea. | ||
19:25
bjz left
|
|||
japhb__ | You could have it do runs when "Europe is asleep", because that's when people have mostly gotten in their commits for the day. | 19:26 | |
arnsholt | Yeah, that'd be awesome! | ||
TimToady | and <:Any> appears to have been defined by Perl 5 | ||
arnsholt | Could save us some day when it turns out we have a massive performance regression somewhere too =) | ||
19:26
bjz joined,
darutoko left
|
|||
TimToady | FROGGS: see the mktables script in the P5 distribution for more about 'Any' | 19:27 | |
japhb__ | arnsholt, definitely. | ||
FROGGS | TimToady: I will! | ||
japhb__ | It already found some really weird performance corner cases during the run-up to YAPC::NA last year. | ||
raydiak | timotimo: Pray gives "Cannot find method" errors under moar. Anything specific jump to mind that I might tweak to make it work? | ||
timotimo | aaw :( | ||
no clue, sorry | 19:28 | ||
raydiak | can't find anything special about those methods either, so far | ||
timotimo | japhb__: i now get Compiler variant 'rakudo-parrot' is unknown! To list compiler variants, use: | 19:30 | |
for parrot, moar and jvm | |||
what could i have done wrong? | |||
--list-variants displays absolutely nothing! =o | |||
ah, i dropped a { from compilers.pl | 19:31 | ||
and didn't get an error out of it :( | 19:32 | ||
hm. i could also use my *new* laptop for benchmarks, as it's quite a bit faster than the old one and i'm more likely to keep its system maintained properly | 19:36 | ||
japhb__ | timotimo, really, no error? Funky. | ||
Oh right, Perl 5 eval. Sigh. | |||
timotimo | heh :) | ||
hm. i still don't know what the exact status of my richards benchmark is and wether or not somebody is porting it to perl5 | 19:37 | ||
japhb__ | TimToady, feel free to chastise the Perl 5 designer. He could use it. ;-) | 19:38 | |
Is there a status question *other* than the porting one? | 19:39 | ||
Because if that's all that's needed, I could probably find some tuits somewhere. | |||
(Steal them from Net--IRC, maybe.) | |||
timotimo | i'm not exactly sure if i made it work properly the last time i tried :| | ||
as in: does the benchmark give the expected results? | |||
i *think* i did make it work | 19:40 | ||
japhb__ | Oh, gotcha. OK, that's worth looking at. | ||
timotimo | ah, i only have an nqp version | 19:41 | |
after this benchmark run completes ( i'm not sure if it's doing moar right now?) i'll push commits to enable moar building and timing :) | 19:42 | ||
should we start measuring maxrss in addition to time? | |||
moritz | rss isn't all that interesting | 19:47 | |
virtual memory usage is | 19:48 | ||
timotimo | ah? | ||
19:55
pdcawley left
|
|||
moritz | just today I watched parts of a talk by tim bunce where he tried to explain that | 19:55 | |
19:56
pdcawley joined
|
|||
moritz | blog.timbunce.org/2012/10/05/introd...emory-use/ | 19:56 | |
timotimo | not a single parrot benchmark could be run :o | 19:58 | |
beh. the videos have been removed from blip.tv | 19:59 | ||
even with --verbose, timeall didn't output the error message rakudo-parrot gave | 20:01 | ||
20:04
zakalwe left
20:09
SHODAN left,
eternaleye left,
SHODAN joined
20:12
eternaleye joined
|
|||
timotimo | blergh, the jvm benchmarks take soooo loooong | 20:13 | |
20:13
smls_ left
|
|||
benabik | s/ benchmarks// | 20:14 | |
jdv79 | isn't that why jvms are usually long running like a daemon or a j2ee app server;) | 20:17 | |
working with j2ee stuff was easy when i did it for a few months because most of my time was spent waiting for the server to restart. | |||
timotimo | yeah, but these are our microbenchmarks :\ | 20:18 | |
we really ought to come up with better benchmarks | |||
japhb__ | timotimo, Yes, measuring mem size as well as runtime would definitely be nice. | ||
timotimo | forest fire is nice enough, but it's actually so slow that it hardly does even one iteration and "sometimes one data point" is useless | ||
japhb__ | timotimo, Well, you can turn up the test run time to capture more data points. | 20:19 | |
jnthn | I'm not sure that's the benchmark's fault :P | ||
20:19
eternaleye left
|
|||
japhb__ | Oh, and timotimo++ for perl6-bench Moar patches. | 20:19 | |
timotimo | :) | ||
anyway, the jvm benchmark run is going to take another like 5 hours | 20:20 | ||
after that i can look into why the parrot backend benchmarks didn't run | |||
then i'll be able to show some results :) | |||
japhb__ | Wow, that's one SLOW computer! | ||
(And I should know, I have some very slow ones of my own.) | |||
timotimo | hah :) | 20:21 | |
the 10 runs done to measure the compile time definitely don't help | |||
each takes almost 5 seconds | |||
japhb__ | It's all tuneable, just less accurate when tuned down *too* much. But if the compiles are really slow, they probably have lower relative variance, so you'd probably be fine. | 20:22 | |
timotimo | so that's like 20 minutes wasted on finding out the startup times :P | ||
20:25
eternaleye joined
20:26
benabik left
|
|||
skids | You're welcome to throw my Sum module in there as a macro-benchmark :-) | 20:26 | |
It is *dreadfully* slow :-) | |||
timotimo | oh yikes :) | 20:27 | |
have you already looked if it runs under moarvm? | |||
20:27
SHODAN left
|
|||
timotimo | i'm not aware of a specific reason why it would be much faster there, but ... you never know :) | 20:27 | |
skids | No I haven't had the time to compile other than star. | ||
timotimo | fair enough | ||
some time in the future we'll get proper compact/native arrays. that'll be very nice. | |||
20:28
SHODAN joined
|
|||
skids | I did replace some hypers with equivalent X ops at one point but other than that and trying to tighten types up I haven't done any tweaking for performance. | 20:29 | |
And yes, proper native types is probably the key to that. | |||
timotimo | properly natively typed code has no reason to be much slower than compiled C. I WANT. | 20:30 | |
20:31
eternaleye left
20:32
kst` is now known as kst
|
|||
skids waiting 90+ minutes for a mysql database restore at the moment :-) | 20:33 | ||
with no status bar. | 20:34 | ||
timotimo | oh mysql, you so wacky | ||
skids | eh, it gave me time to google for and find "SHOW TABLE STATUS" so there's an upside. | 20:36 | |
20:37
eternaleye joined
20:39
araujo joined,
araujo left,
araujo joined
|
|||
raydiak | r: class A { has $.a = 0 }; for ^2 { my $a = .a given A.new; say $a; } | 20:41 | |
camelia | rakudo-moar 695493: OUTPUT«0(Any)» | ||
..rakudo-parrot 695493, rakudo-jvm 695493: OUTPUT«00» | |||
raydiak | where are moar bugs reported? | ||
timotimo | oh wow, that's weird | 20:42 | |
jnthn: did you see that? wow! | |||
raydiak | reduced from my Pray failure | ||
moritz | raydiak++ | 20:43 | |
raydiak: [email@hidden.address] like all rakudo bugs | |||
r: .say given 42; | |||
camelia | rakudo-parrot 695493, rakudo-jvm 695493, rakudo-moar 695493: OUTPUT«42» | ||
moritz | r: for ^2 { .say given 42; } | 20:44 | |
camelia | rakudo-parrot 695493, rakudo-jvm 695493, rakudo-moar 695493: OUTPUT«4242» | ||
timotimo | does it not thunk the A.new? | ||
raydiak | :q | ||
hugme hugs raydiak, good vi(m) user! | |||
raydiak | heh, mt | ||
timotimo | r: class A { has $.a = 0; submethod new { say "hi"; self.bless() } }; for ^2 { my $a = .a given A.new; say $a; } | 20:45 | |
camelia | rakudo-moar 695493: OUTPUT«hi0hi(Any)» | ||
..rakudo-parrot 695493, rakudo-jvm 695493: OUTPUT«hi0hi0» | |||
timotimo | r: class A { has $.a = 0; submethod new { say "hi"; my $res = self.bless(); say $res.a; $res } }; for ^2 { my $a = .a given A.new; say $a; } | ||
camelia | rakudo-moar 695493: OUTPUT«hi00hi0(Any)» | ||
..rakudo-parrot 695493, rakudo-jvm 695493: OUTPUT«hi00hi00» | |||
grondilu | m: class A { has $.a = 0 }; for ^2 { say my $ = .a given A.new } | 20:46 | |
camelia | rakudo-moar 695493: OUTPUT«00» | ||
20:46
eternaleye left
20:47
zakharyas joined,
jeffreykegler left
20:48
eternaleye joined
|
|||
dalek | ast: 51f135a | (Tobias Leich)++ | S05-mass/properties-derived.t: LEFT PARENTHESIS does not have prop OtherMath |
20:51 | |
20:54
berekuk joined
|
|||
[Coke] | (moar bugs) rakudo-moar bugs are rakudobug'd. if you know for sure it's a moar bug, can put it on moar's github page, I think. | 20:56 | |
(but if you don't know, that's fine, just rakudobug it) | |||
timotimo | my benchmarks are almost halfway done | 20:57 | |
20:57
eternaleye left
|
|||
raydiak | bug filed | 20:57 | |
dalek | p: f9e23e6 | (Tobias Leich)++ | src/QRegex/P6Regex/Actions.nqp: align \c\C to latest spec \C[13,10] behaves like an enumcharlist while \c[13,10] literal-ish. github.com/perl6/specs/commit/8601...5a4a8c2bd3 |
||
jnthn | rylinaux: Wow, nice golf | 20:58 | |
20:58
daxim_ left
|
|||
jnthn | uh, raydiak | 20:58 | |
d'oh | |||
timotimo | knowing jnthn, the bug is probably going away tonight :3 | ||
moritz | raydiak++ | ||
20:58
eternaleye joined
|
|||
skids discovers shapecatcher.com, has geekgasm, then notices all the subpages are borked. | 20:59 | ||
raydiak | jnthn: thanks :) | ||
jnthn | Though, it does golf rather further. | 21:00 | |
m: for ^2 { my $a = $_ given 0; say $a; } | |||
camelia | rakudo-moar 695493: OUTPUT«0(Any)» | ||
timotimo | so the second time it's executed the given does nothing? | ||
21:02
rindolf left,
berekuk left,
dayangkun left
|
|||
raydiak | m: for ^2 { my $a = 0 given True; say $a; } | 21:03 | |
camelia | rakudo-moar 695493: OUTPUT«0(Any)» | ||
timotimo | oh, huh | ||
raydiak | the whole thing before given apparently does nothing the 2nd time | 21:04 | |
timotimo | m: for ^2 { my $a = say "test" given True; say $a } | ||
camelia | rakudo-moar 695493: OUTPUT«testTruetest(Any)» | ||
timotimo | but it does run | ||
23rd out of 43 benchmarks ... | |||
jnthn | yeah, looking | ||
raydiak | between the = and the given, then | ||
timotimo | raydiak: do you want to put a test case into roast? :) | 21:05 | |
jnthn | Yes, a test case would be great | ||
21:06
araujo left
|
|||
raydiak does not know about roast | 21:06 | ||
but will go look; I'm sure I could | |||
ah, roast is just what you call the test suite | 21:07 | ||
jnthn | spectesting a fix | ||
timotimo | yup | ||
21:07
berekuk joined
|
|||
raydiak | looking to see where that might belong... | 21:08 | |
jnthn | In a given.t I guess | 21:09 | |
S04-statement-modifiers/given.t | |||
moritz | that looks right | ||
21:10
btyler left
|
|||
raydiak | giving it a shot...never wrote a test before, but it all seems simple | 21:10 | |
dalek | p: 2dcf199 | (Arne Skjærholt)++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/CStruct.java: Properly tag Structure classes for CStruct as by reference. This fixes the problem with CStructs in CStructs. Last CStruct related TODO is CArray of CStruct, then callbacks and refreshing from native memory are all that's left. |
21:11 | |
FROGGS | awesome! | ||
arnsholt | That one turned out to be a lot easier than I feared (thankfully) | 21:12 | |
timotimo | arnsholt++ # jvm NativeCall stuffs | ||
jnthn | yo dawg, I heard you like CStructs... | ||
arnsholt | CArray of CStruct should be mostly a matter of plumbing, refreshing likewise | ||
jnthn | arnsholt++ | ||
21:12
btyler joined
|
|||
arnsholt | I haven't looked to hard at callbacks, but from the looks of it JNA makes it reasonable | 21:12 | |
timotimo | so, rakudo-jvm star in february seems absolutely doable | 21:13 | |
i think the january release is going to happen Real Soon™? | |||
jnthn | Thursday | 21:14 | |
e | |||
dalek | kudo/nom: bbacaa2 | jnthn++ | src/Perl6/Actions.nqp: Fix statement modifying given on Moar. raydiak++ for golfing a bug down to this construct. |
||
jnthn | argh | ||
timotimo | indeed, in 2 days | ||
jnthn | Aaaaand...masak is on the hook for it :) | ||
FROGGS | umm, <:Any> is weird: All Unicode code points: [\\x{0000}-\\x{10FFFF}] | ||
arnsholt | Yeah, I think NativeCall should be in shape for a February release | ||
Thursday is a bit harder, since I suspect my advisor wants me to write on my thesis (and not just doing Perl 6 hackery) | 21:15 | ||
21:16
eternaleye left
|
|||
arnsholt | jnthn: Also, it turns out JNA and C# have different approaches to how to signal "this struct should be flattened/not flattened" | 21:16 | |
21:16
treehug88 joined
|
|||
timotimo | and tadzik will do the star release i see. | 21:16 | |
arnsholt | JNA has it as an intrinsic property of the type, while C# does it at the member level | 21:17 | |
21:18
eternaleye joined
21:19
raiph left
21:20
dayangkun joined
|
|||
lue | FROGGS: where is <:Any> defined? | 21:22 | |
jnthn | arnsholt: Curious, given that sturct vs class in C# is a properly of the type... | ||
FROGGS | lue: in Perl 5's guts | 21:23 | |
like Word | |||
lue | FROGGS: huh. Sounds to me like /./ in any case | ||
FROGGS | nr: say "a" ~~ /<:Word>/ | ||
dalek | ast: ce545c7 | raydiak++ | S04-statement-modifiers/given.t: Add test for RT #121049 - postfix given in a loop |
||
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121049 | ||
camelia | rakudo-parrot 695493: OUTPUT«Unicode property 'Word' not found in regex at /tmp/tmpfile:1 in method ACCEPTS at gen/parrot/CORE.setting:12497 in method ACCEPTS at gen/parrot/CORE.setting:778 in block at /tmp/tmpfile:1» | ||
..rakudo-jvm 695493: OUTPUT«java.util.regex.PatternSyntaxException: Unknown character property name {Word} near index 7\p{Word} ^Error while creating backtrace: Cannot unbox a type object in block at gen/jvm/CORE.setting:10596 in block at gen/jvm/CORE.setti…» | |||
..niecza v24-109-g48a8de3: OUTPUT«===SORRY!===WORD does not exist as a UCD table at /tmp/tmpfile line 1:------> say "a" ~~ /<:Word⏏>/Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 1502 (d…» | |||
21:23
cognominal__ is now known as cognominal
|
|||
FROGGS | lue: yeah, hence the "weird" | 21:24 | |
21:24
Mouq joined
|
|||
lue | P5's /./ didn't match \n though... | 21:24 | |
arnsholt | jnthn: What're the differences between the two in C# again? I can't remember | ||
jnthn | arnsholt: struct is a value type, allocated on the stack or directly in an array or other class/struct body rather than being a GCable object | ||
arnsholt | At any rate, the C# FFI thing (name escapes me ATM) uses annotations to signal whether a member struct is inlined or a pointer | ||
Ah, right | |||
jnthn | And C# calls annotations attributes ;) | 21:25 | |
arnsholt | Not sure how structs interact with the FFI facilities. It's been a while since I looked at the C# side of the fence | ||
21:25
daxim joined
|
|||
timotimo | are we making progress on the rakudo .net backend yet? :) | 21:25 | |
[Coke] | timotimo: *thwap* | ||
raydiak | (now to recompile moar, which takes longer than it took jnthn++ to fix the bug) | 21:26 | |
tadzik | timotimo: uh-oh :> | 21:27 | |
btyler | on the topic of r-m bugs - is there anything folks on osx/linux platforms could do to help diagnose the REPL problem in r-m? | ||
21:27
treehug88 left
|
|||
FROGGS | in case my math is correct, we are down to 184 fails... and we miss 42 test from IO-Socket-INET.t | 21:28 | |
umm, somebody fudged IO-Socket-INET.t wrong >.< | 21:29 | ||
it skips everywhere with: 'rakudo.jvm systemic failures/OOM error' | 21:30 | ||
jnthn | btyler: Yes, apply gist.github.com/jnthn/8548807 in Moar and make install it and then try again (no need to rebuild anything else) | 21:32 | |
btyler: Let me knwo if it helps or not | |||
btyler | jnthn: roger! | ||
[Coke] | FROGGS: looks like it was me - the #?rakudo.jvm emit should only be emitting on rakudo.jvm | ||
FROGGS | hmmm, my wifi is laggy... must push harder... | 21:33 | |
timotimo | 10 more tests to go | 21:34 | |
[Coke] | and it looks like rakudo.moar is running the .t, and rakudo.jvm is running the .rakudo.jvm | ||
which platform are you seeing the skips where you shouldn't? | |||
dalek | ast: dc71d4b | (Tobias Leich)++ | S32-io/IO-Socket-INET.t: emit skip for rakudo.jvm only |
||
21:34
eternaleye left
|
|||
[Coke] | OH. | 21:34 | |
FROGGS | [Coke]: well, that is the plan if there is no actual fudge for moar | ||
21:34
kaare__ joined
|
|||
timotimo | hehehehe | 21:34 | |
[Coke] | I bet we need #?rakudo.jvm emit's on the 2 lines interspersed there. | ||
checking... | 21:35 | ||
FROGGS | [Coke]: it skipped on parrot too | ||
timotimo | yeah, the emit lines did nothing | ||
and the following lines were unconditionally in the file | |||
21:35
eternaleye joined
|
|||
[Coke] | yup. my bad. fixing. | 21:36 | |
timotimo | froggs already fixed it, though | ||
dalek | rl6-roast-data: de807de | coke++ | / (6 files): today (automated commit) |
21:37 | |
FROGGS | [Coke]: just pull and lean back :o) | ||
[Coke] | FROGGS++ | 21:38 | |
Mouq | jnthn: That patch you made gives me: | ||
error: too many arguments to function call, expected 2, have 3 | |||
GET_REG(cur_op, 0).s = MVM_file_readline_fh(tc, GET_REG(cur_op, 2).o, GET_REG(cur_op, 4).s); | 21:39 | ||
[Coke] | good catch. (and thanks for improving parrot's numbers at the expense of jvm & moar. :) | ||
21:39
locsmif left
|
|||
FROGGS | Mouq: more like this I think: GET_REG(cur_op, 0).s = MVM_file_readline_fh(tc, GET_REG(cur_op, 2).s); | 21:39 | |
jnthn | uh, .o but yes | ||
readlineint takes one extra arg | 21:40 | ||
Its the final one that needs to go | |||
FROGGS | yeah: this GET_REG(cur_op, 0).s = MVM_file_readline_fh(tc, GET_REG(cur_op, 2).o); | ||
21:40
eternaleye left
|
|||
jnthn | Yeah, try that | 21:40 | |
Mouq | Ok | ||
jnthn | It's not a patch to apply (though I did intend it to build :)) so much as one to try and eliminate a possible cause. | ||
timotimo | oh, we're down to only 99.09 of JVM, because of some unskipped tests | 21:41 | |
21:41
eternaleye joined
|
|||
FROGGS | yeah, I wanted to play fair and unskipped stuff that works on the jvm | 21:42 | |
I hope it works on all jvms out there | |||
btyler | drat, mouq beat me to it :) was making a gist | 21:43 | |
timotimo | not on avian i'm afraid | ||
Mouq | jnthn: readline from filehandle requires an object with REPR MVMOSHandle | ||
timotimo | (they don't have indy) | ||
[Coke] | FROGGS: thanks. that was on my list of things to do (make tickets or unfudge all rakudo skips/todos) | 21:44 | |
Mouq | I can gist the full error from perl6-m if you want | ||
FROGGS | Mouq: you get one from openfh | ||
[Coke] | FROGGS++ | ||
Mouq | FROGGS: What? | ||
FROGGS | [Coke]: there are still lots of unneeded/wrong skips | ||
Mouq: the object you pass as the second parameter, must be a filehandle you get from open() | 21:45 | ||
Mouq: though, I have no idea what you are up to, so if I am telling rubbish... that's why | |||
jnthn | FROGGS: I think it's stdin that should be making it in there... | ||
btyler | FROGGS: just trying to figure out the repl borked-ness on linux/osx for r-m | 21:46 | |
[Coke] | FROGGS: well, once something is skipped, someone has to go through and check them. | ||
Mouq | Oh, I had an incorrect number :/ | ||
[Coke] | and some of the java stuff was skipped when were at this point in the process. (I haven't skipped anything in moar yet to avoid this, because I want tickets for everything when we skip it for moar) | ||
see also "nom regression" for more evil. | 21:47 | ||
Mouq | K, how 'bout "Failed to seek in filehandle: 9" from perl6-m | ||
FROGGS | [Coke]: yeah, skip and forget :/ | ||
21:47
lizmat left,
LLamaRider joined
|
|||
FROGGS | Mouq: that sounds like a place where you actually have to hack something | 21:47 | |
Mouq | Coming from "my $code := nqp::readlineintfh($stdin, ~$prompt);" | 21:48 | |
21:48
Alula left
21:49
[Sno] left
21:50
eternaleye left,
eternaleye joined,
kbaker left
|
|||
btyler | the full error, with git diff for the patch applied: gist.github.com/kanatohodets/ca61c...f2d8776f6e | 21:52 | |
hoelzro | new PR for pygments lexer \o/ | 21:53 | |
Mouq | If someone wants to fix an R-M S32-exceptions test, btw, they could make 6model/6model.c:44 read "No such method '%s' for invocant of type '%s'", and Rakudo will substitute a typed exception for it | 21:54 | |
I don't know how to get the type name | 21:55 | ||
r: 1.foo | |||
camelia | rakudo-moar 695493: OUTPUT«Cannot find method 'foo' in block at /tmp/tmpfile:1» | ||
..rakudo-parrot 695493, rakudo-jvm 695493: OUTPUT«No such method 'foo' for invocant of type 'Int' in block at /tmp/tmpfile:1» | |||
21:56
zakharyas left
|
|||
Mouq should've followed Moar closely, is pretty lost trying to hack on MoarVM related things | 21:58 | ||
timotimo | 2:30h for moar+jvm benchmarks | 21:59 | |
i'm pretty sure more than half the time was spent on jvm, maybe even two thirds | |||
ah, the rakudo-parrot build just failed | 22:01 | ||
22:01
skids left
|
|||
dalek | p: 0b57c7d | (Tobias Leich)++ | tools/build/MOAR_REVISION: bump moar rev for unicode fixes |
22:02 | |
FROGGS | timotimo: the build failed?? | ||
timotimo | yup. i'll soon see why | 22:03 | |
Mouq | Looks like MVM_platform_lseek is failing | 22:08 | |
Well, obviously | |||
but specifically, MVM_platform_lseek(handle->body.u.fd, offset, flag) | 22:09 | ||
timotimo | i seem to be able to build rakudo-parrot just fine; huh? | ||
FROGGS | and this is the seek used in eof check? | ||
timotimo | are offset and flag correct? | ||
FROGGS | Mouq: I tried to set ...u.fd = type in getstdstream, but this segfaults at some point | 22:10 | |
timotimo | time for the benchmarks | ||
Mouq | It's in void MVM_file_seek | ||
timotimo | wow, it's so much faster | ||
FROGGS | timotimo: u.fd is not set I think | ||
jnthn | timotimo: What's the "it" here? :) | 22:12 | |
timotimo | jnthn: startup time of parrot vs jvm | ||
raydiak | .oO(or startup time of a diesel engine in alaskan winter vs jvm, for that matter) |
22:14 | |
timotimo | :) | ||
dalek | p: d0c5f84 | (Tobias Leich)++ | t/qregex/rx_metachars: un-todo passing \C tests |
22:17 | |
kudo/nom: 0d90b30 | (Tobias Leich)++ | tools/build/NQP_REVISION: bump nqp rev for unicode fixes |
|||
Mouq | How do I check the "errno" returned by a func in C? | 22:18 | |
As per pubs.opengroup.org/onlinepubs/00969...lseek.html | |||
timotimo | print errno ← in gdb | ||
errno is a global variable | |||
Mouq | timotimo: Ok, thanks | 22:19 | |
FROGGS | printf("%d\n", errno); | ||
Mouq | So it is being printed already :P | ||
timotimo | perror("seek") | ||
FROGGS | TIMTOWTDI, even in C :P | ||
Mouq | Sooo then EINVAL "The whence argument is not a proper value, or the resulting file offset would be negative for a regular file, block special file, or directory." | 22:21 | |
22:22
Ayiko joined
22:23
SubTerra left
|
|||
Mouq | And the offset is 0 | 22:25 | |
...so? | |||
Mouq is not a C hacker | |||
timotimo | something about ttys? | ||
FROGGS | Mouq: what is in u.fd? | ||
geekosaur | what is the whence? (flag) | ||
FROGGS | as I mentioned, I think it is not initialized for streams | 22:26 | |
I guess SEEK_CUR | |||
geekosaur | see, uninitialized would normally get you EBADF unless it just happens to contain a value which is a valid fd | 22:27 | |
hoelzro | new PR for rakudo moar-support: github.com/rakudo/rakudo/pull/242 | 22:28 | |
22:29
[Sno] joined
|
|||
timotimo | 34 of 43 benchmarks done ... | 22:29 | |
Mouq | handle->body.u.fd is -1312510592 (?) | 22:30 | |
timotimo | hoelzro: moar-support is dead | ||
long live nom! | |||
hoelzro | what? | ||
='( | |||
Mouq | hoelzro: merged! | ||
hoelzro | wow, that's great news! | ||
since when? | |||
timotimo | a couple of days | ||
hoelzro | I'll fix my PR then | 22:31 | |
22:32
spider-mario left
|
|||
Mouq | Well, handle->body.u.fd changes with each run, but printf'ing it to "%d" indicates that it's at least initialized | 22:32 | |
hoelzro | ugh, had to create a new one =/ | ||
dalek | p: e3e0d0b | jnthn++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp: Fix incorrect call to get new register. |
||
p: b50229c | jnthn++ | src/vm/moar/QAST/QAST (2 files): Fix some named param usages. Moar didn't detect these before. |
|||
p: 0e91789 | jnthn++ | / (2 files): Start emitting extra named args check. |
|||
hoelzro | github.com/rakudo/rakudo/pull/243 | ||
22:33
cognominal left
|
|||
dalek | kudo/nom: 3552c6e | (Rob Hoelz)++ | tools/lib/NQP/Configure.pm: Make sure --gen-moar implies --gen-nqp It does only if --backends is not set. Well, it did. Now it always does! |
22:33 | |
kudo/nom: f888a9a | (Tobias Leich)++ | tools/lib/NQP/Configure.pm: Merge pull request #243 from hoelzro/nom Make sure --gen-moar implies --gen-nqp |
|||
hoelzro | \o/ | 22:34 | |
thanks FROGGS | |||
FROGGS | you're welcome :o) | ||
dalek | kudo/nom: 774f761 | jnthn++ | src/Perl6/Actions.nqp: Fix bind lowering of proto method foo (|) { } Got away with it before 'cus we didn't check for excess named args. |
22:36 | |
kudo/nom: 07c483e | jnthn++ | tools/build/NQP_REVISION: Bump to Moar/NQP that finds excess named args. |
|||
22:37
BenGoldberg joined
|
|||
timotimo | now i've got the benchmarks | 22:40 | |
jnthn | uh-oh :) | 22:41 | |
timotimo | but i seem to no longer have access to my webspace | ||
well, it's not all bad | |||
a general theme seems to be: in "foobar-baz", moar is faster, in "foobar-baz-native", parrot is faster | |||
jnthn | Yes. | ||
timotimo | we don't do anything with native stuff yet? | ||
jnthn | Well, one of the things my named args work just turned up is that we aren't hanlding inlinability stuff yet. | 22:42 | |
timotimo | ah, fair enough | ||
jnthn | This in turn means we never save AST to inline, which in turn means we never inline int + int | ||
timotimo | ah! | ||
jnthn | And it's the inlining that makes it have any chance of performing. | ||
timotimo | yeah, that'd make a difference | ||
jnthn | mebbe I should fix that | 22:43 | |
btw, I got tomorrow set aside for Perl 6 stuff. :) | |||
timotimo | in trim_string, parrot beats moar pretty handily | ||
in reduce_range parrot is a bit ahead all the time | |||
in all the for_concat tests (native and nonnative, "_2" and ""), parrot beats moarvm by a very big amount | 22:44 | ||
in fact, the shape of the curve is drastically different | |||
LLamaRider | jnthn++ any Perl6 day is a day well spent :) I'm jut trying MoarVM and make test is impressively fast. Thanks to all involved :) | ||
timotimo | moar goes straight down while parrot stays horizontal | ||
jnthn | That's itnresting... | 22:45 | |
I suspect profiling will be revealing. | |||
timotimo | now where do i upload my results? :\ | 22:47 | |
i'll just dropbox a tarball | |||
www.dropbox.com/s/qkub8n24okbu3ns/...21.tar.bz2 | 22:48 | ||
Mouq | timotimo: timo.github.io? | ||
timotimo | that would certainly be an option | ||
22:50
Rotwang left
|
|||
Mouq | timotimo++ # tarball works fine though | 22:50 | |
22:51
denis_boyun left,
LLamaRider left
22:53
sftp left
22:54
sftp joined
22:57
johnmilton left
|
|||
dalek | p: b7252c9 | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp: Save inlinability info. |
22:58 | |
22:58
wooden joined
22:59
bluescreen10 left
|
|||
clsn made it home, finally. Yow. | 23:05 | ||
23:05
jeffreykegler joined
|
|||
clsn | Ran roast with my Signature changes; turns out it broke one or two other things because my .perl for Parameters isn't the same and tests were testing against the string. Fixed the tests. | 23:06 | |
23:10
btyler left
23:15
bjz left
23:16
bjz joined
|
|||
timotimo | japhb__: i think i'll investigate google charts api to replace jqplot in the benchmark plots | 23:17 | |
one bad thing about it is, that you are not allowed to rehost or download it for offline use >_< | 23:18 | ||
on the other hand, it's maintained actively | |||
clsn | In a .t file, is it better to have a big list of Test, Expected-Value and then loop through them, or a bunch of ok/nok statements? | 23:30 | |
Huh. Because in Signature literals, an unspecified variable is Mu, I made Mu not show up as a type unless necessary. However, in subroutine signatures, an unspecified variable is Any. | 23:31 | ||
colomon | clsn: if there's not any framework, I'd say a bunch ok ok/nok statements is preferable. | 23:32 | |
clsn | I guess ok/nok statements would allow people to put in ?skip comments easier. | ||
colomon | right | ||
and also makes figuring out what test just failed much easier | |||
I will use a loop if each test requires a lot, though. | 23:33 | ||
clsn | OK. | ||
colomon | but if it can be a comfortable one line "ok", that's the best way to do it, IMO. | ||
dalek | p: 46ac27f | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp: Mapped ops need inline info setting too. |
||
diakopter | .oO( I remember back in the day there used to be these things called servers.. ) |
23:34 | |
23:36
thou left
23:37
daniel-s_ joined
23:40
benabik joined
23:43
thou joined
23:44
dmol left
23:52
telex left
23:53
thou left
23:54
telex joined
23:56
telex left
|