»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
TimToady | p6: gist.github.com/2847343 | 00:00 | |
p6eval | pugs: OUTPUT«*** No such subroutine: "&temp" at /tmp/5zc0Kon5ul line 5, column 9-25» | ||
..rakudo b2068e: OUTPUT«[[], [], [2, 4]][[2], [], [1, 4]][[3, 4], [], [1, 2]][[4], [], [1, 3]]» | |||
..niecza v18-1-gc86e3f0: OUTPUT«[[1, 2], [], [3, 4]][[1, 3], [], [2, 4]][[1, 4], [], [2, 3]][[2, 3], [], [1, 4]][[2, 4], [], [1, 3]][[3, 4], [], [1, 2]]» | |||
TimToady | rakudo doesn't seem to like --temp @mask[$k] | ||
diakopter | phenny ask moritz what if rn: or nr: invoked both rakudo and niecza | 00:01 | |
phenny ask sorear what if rn: or nr: invoked both rakudo and niecza | |||
jnthn | TimToady: It looks weird to my eyes :P | 00:02 | |
TimToady | well, it doesn't like temp @mask[$k] -= 1 either | ||
sorear | diakopter: you need more colons | ||
jnthn | That surprises me a bit more. | ||
diakopter | phenny: ask moritz what if rn: or nr: invoked both rakudo and niecza | ||
phenny | diakopter: I'll pass that on when moritz is around. | ||
jnthn | What does "doesn't like" mean? | ||
TimToady | see output above | 00:03 | |
niecza produces the correct output | |||
jnthn | r: my $x = 2; { temp $x -= 1; say $x; }; say $x | ||
p6eval | rakudo b2068e: OUTPUT«12» | ||
sorear | diakopter: I proposed r: n: syntax once. I think I got assent but noone could be bothered to actually do it, including me | ||
jnthn | r: my @x = 1,2,3; { temp @x[1] -= 1; say @x[1]; }; say @x[1] | 00:04 | |
p6eval | rakudo b2068e: OUTPUT«12» | ||
TimToady | jnthn: it might have more to do with the semantics of the @mask is copy parameter | ||
sorear | I keep wanting to read that as @masak | 00:05 | |
jnthn | sorear: Same! | ||
TimToady: Maybe | |||
TimToady | sorear: yer the one wrote @mask first! | ||
jnthn | TimToady: I'm too tired to golf it righ tnow... | ||
sorear | also, I am somewhat amused that the algorithm I came up with looks rather different from what everyone else is doing | 00:06 | |
jnthn -> sleep | 00:08 | ||
00:09
lestrrat left,
lestrrat joined
00:10
cognominal_ joined
00:13
cognominal left
00:21
skids left
00:26
cognominal joined
00:28
cognominal_ left
00:38
skids joined
00:46
aesundstrom joined
01:01
scott_ joined,
scott_ is now known as Guest48656
01:05
vlixes joined,
aesundstrom left,
fgomez left
01:08
thou left
01:39
Guest65270 left
01:45
fgomez joined
01:46
tokuhiro_ joined
02:10
vlixes left
02:11
immortal joined,
immortal left,
immortal joined,
erkan left
02:23
aesundstrom joined
02:24
fgomez left
|
|||
diakopter tries to golf it | 02:26 | ||
02:26
alvis joined
|
|||
dalek | p: 0631f83 | duff++ | src/PAST/NQP.pir: Add nqp::stat |
02:28 | |
nqp: 0d86ce0 | duff++ | src/PAST/NQP.pir: | |||
nqp: Add nqp::does | |||
02:28
dalek left
|
|||
diakopter | poor dalek | 02:29 | |
02:29
dalek joined
|
|||
dalek | kudo/nom: 4aea135 | duff++ | src/ (2 files): s/pir::stat\w+/nqp::stat/g |
02:29 | |
kudo/nom: f4357fd | duff++ | src/ (4 files): Use nqp::does Start on release announcement for June |
|||
02:29
dalek left
|
|||
diakopter | poor dalek | 02:29 | |
too triggery happ | |||
er | |||
trigger happy | |||
02:29
dalek joined,
ChanServ sets mode: +v dalek
|
|||
diakopter | dalek: wb | 02:30 | |
as I golf it, I'll just assume niecza's behavior is consistently correct, and as long as rakudo differs, I'm still golfing | 02:31 | ||
02:31
fgomez joined
02:43
xinming left,
xinming joined
03:00
tokuhiro_ left
03:04
broquaint joined
03:06
masonkramer left
03:12
cognominal left
03:22
aesundstrom left
03:25
lestrrat left
03:26
lestrrat joined
|
|||
diakopter | TimToady: I golfed it | 03:28 | |
rakudo's LEAVE blocks aren't called enough | |||
erm, I take that back | 03:31 | ||
still not sure | |||
03:53
odoacre joined
03:55
am0c left
|
|||
04:46
estebann joined
|
|||
TimToady wishes again that there were a .take form of take | 05:04 | ||
would make gist.github.com/2847343 a bit cleaner | 05:06 | ||
PerlJam | you do wield the power of the spec ;) | 05:07 | |
TimToady | well, .take already occurs twice in the spec | 05:08 | |
diakopter | TimToady: | ||
r: gist.github.com/2848989 | |||
p6eval | rakudo 696a71: OUTPUT«c is 3 at depth 3c is 3 at depth 2c is 3 at depth 1» | ||
TimToady | S02:4822 for instance | ||
diakopter | n: gist.github.com/2848989 | 05:09 | |
p6eval | niecza v18-1-gc86e3f0: OUTPUT«c is 3 at depth 3c is 2 at depth 2c is 1 at depth 1» | ||
diakopter | I golfed your golf | ||
niecza is right here, I assume | 05:10 | ||
TimToady | yes | ||
05:10
woosley left,
woosley joined
|
|||
diakopter | took me two hours of golfing, I dare confess. | 05:11 | |
TimToady | it's a good think you only dared to confess it, and didn't really confess it | ||
diakopter | while sipping a frappucino listening to tinny music | 05:14 | |
*frappuccino | 05:15 | ||
05:15
slavik1 left
|
|||
TimToady | as long as you weren't listening to frappuccini | 05:16 | |
05:16
birdwindupbird joined,
birdwind1pbird joined
|
|||
diakopter | phenny: ask jnthn I golfed yer thingamabob. compare r: with n: gist.github.com/2848989 | 05:18 | |
phenny | diakopter: I'll pass that on when jnthn is around. | ||
05:18
fhelmberger joined
|
|||
diakopter | so you want .take to be a method on Mu? | 05:22 | |
or a special form like .WHICH | |||
er | |||
whatever that uppercase special form is | |||
TimToady | I don't see why it has to be that special | ||
PerlJam is waiting on his compile with method take { take self } in Mu | 05:23 | ||
TimToady | Take me! Take me! | ||
dalek | kudo/qrpa: 6e7868e | pmichaud++ | / (2 files): QRPA: Add init, destroy, mark, elements, unshift_pmc, and some native variants. |
05:24 | |
kudo/qrpa: c42e429 | pmichaud++ | / (2 files): Add defined_*, exists_*, and unshift_* for native types. |
|||
kudo/qrpa: 07ced37 | pmichaud++ | / (2 files): QRPA: Add clone, get_iter, splice. |
|||
kudo/qrpa: f57053a | pmichaud++ | src/pmc/qrpa.pmc: Add some useful optimizations. |
|||
diakopter | I'm surprised dalek didn't get booted for that outburst | ||
PerlJam | whoa, someone left the Pm on tonight | ||
TimToady | or the dalek is in wayback mode | 05:25 | |
pmichaud | it's the Pm | 05:27 | |
PerlJam | pmichaud: is that everything a RPA replacement needs? It looks fairly complete. | 05:28 | |
05:28
cognominal joined
|
|||
pmichaud | I don't know if it's everything. When I try to switch List to use it, though, I get some weird exceptions. I'll work on it more tomorrow | 05:30 | |
TimToady | pmichaud++ | ||
pmichaud | There's certainly not much left to do if it's not complete. It should be a *ton* more performant for queue-like operations, which is what Lists and iterators basically are | 05:31 | |
diakopter | tomorrow++ | ||
TimToady | mañana, mañana, I love you, mañana, you're always a day away... | ||
pmichaud | I don't know why it didn't hit me before today that having a O(n) shift_pmc operation on RPA would be detrimental to our list model | 05:32 | |
I mean, I knew it at some level... but didn't really think it through properly. | |||
diakopter | "tomorrow's just a future yesterday..." -Craig Ferguson song | ||
TimToady | well, tomorrow is certainly unevenly distributed | 05:33 | |
well, except at midnight on the date line | |||
I kinda think of iterator lists as Lisp cons lists with fancy car nodes for batched items | 05:35 | ||
s/batched/batched or delegated/ | |||
but yeah, if it's expensive to shift, that's gonna bite | 05:36 | ||
pmichaud | yes, I think of it conceptually that way also | ||
(cons lists and car nodes) | |||
anyway, the new shift code replaces the O(n) memmove function with a couple of integer ops | 05:37 | ||
we also get some performance improvements in splice and unshift in the process | |||
moritz | \o | ||
phenny | moritz: 00:02Z <diakopter> ask moritz what if rn: or nr: invoked both rakudo and niecza | ||
TimToady | o/ | ||
moritz | phenny: tell diakopter +1 to rn|nr | 05:38 | |
phenny | moritz: I'll pass that on when diakopter is around. | ||
diakopter | o/ | ||
phenny | diakopter: 05:38Z <moritz> tell diakopter +1 to rn|nr | ||
TimToady | maybe p5: should just do that, and reserve perl5: for "everyone" | ||
pmichaud | hmmm, I remember "rn". Once used that program quite a lot :) | ||
TimToady | I've heard of that one | ||
code was pretty grotty, I hear.... | 05:39 | ||
diakopter | read news? | ||
PerlJam mumbles something about being doomed to repeat rn | |||
TimToady | sacrificed readability to get the bytes up on the screen faster... | ||
funny thing is that I dropped rn in order to work on Perl because I thought I might rewrite rn in Perl to be able to do bitwise ops on article ranges better... | 05:41 | ||
took a while before Perl got there though | 05:42 | ||
diakopter | n: ++temp .say | 05:44 | |
p6eval | niecza v18-1-gc86e3f0: OUTPUT«Any()Internal error in exception dispatch: Writing to readonly scalar at <unknown> line 0 (KERNEL Scalar.TEMP @ 0)  at <unknown> line 0 (ExitRunloop @ 0) » | ||
diakopter | r: ++temp .say | ||
p6eval | rakudo 696a71: ( no output ) | ||
diakopter | on ho I feel a bout of fuzzing coming on | 05:45 | |
dalek | kudo/nom: 50b77f3 | duff++ | src/core/Mu.pm: Give TimToady .take |
||
TimToady | now if only temp worked... :) | ||
diakopter | n's error is cute | 05:46 | |
writing to readonly scalar in exception dispatch? | |||
phenny: ask sorear try n: ++temp .say | 05:47 | ||
phenny | diakopter: I'll pass that on when sorear is around. | ||
diakopter | n: ++.say | 05:48 | |
p6eval | niecza v18-1-gc86e3f0: OUTPUT«Any()Unhandled exception: Writing to readonly scalar at /tmp/wXR4TZRS2R line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3910 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3911 (module-CORE @ 558)  at /home/p6eval/niec… | ||
diakopter | oh. | ||
r: say "alive"; my $a = let $a; | 05:50 | ||
p6eval | rakudo 696a71: ( no output ) | ||
diakopter | erm | ||
std: temp temp temp temp $_ | 05:52 | ||
p6eval | std f179a1b: OUTPUT«ok 00:00 41m» | ||
dalek | ast: fcd46f4 | duff++ | S04-statements/gather.t: Added a test that uses .take |
||
05:57
wtw joined
|
|||
diakopter | well that's odd. | 05:58 | |
rakudo just exits with no eror on that input | |||
errorlevel/exitcode 0 | |||
05:59
kaleem joined
|
|||
pmichaud | goodnight, all -- bbt | 05:59 | |
PerlJam | g'night pm | ||
PerlJam didn't realize that p5p has also been talking about a 'safe deref' | 06:04 | ||
diakopter | PerlJam: did you merge nqp's pull request | 06:05 | |
PerlJam | no, I didn't. | 06:06 | |
Didn't know there was one. | |||
diakopter | from kboga | 06:07 | |
adding nqp defined and such | |||
PerlJam | aye, I see it now | ||
(I don't normally look at repos through the lens of github) | |||
06:07
estebann left
|
|||
diakopter | hm it seems it conflicts with your commit | 06:07 | |
since it can't automatically be merged | 06:08 | ||
PerlJam | yeah, he used some slightly different names than I did | ||
06:23
am0c joined,
woosley left
06:43
Entonian joined
06:44
Entonian left
|
|||
dalek | p: b1fb4b3 | kboga++ | / (16 files): pir::defined to nqp::defined, pir::find_not_cclass__Iisii to nqp::findnotcclass, pir::find_method__PPs to nqp::findmethod |
06:45 | |
06:57
lestrrat left
06:58
lestrrat joined
07:03
brrt joined
07:11
bbkr1 joined
07:31
terrence joined
07:35
immortal left,
erkan joined
07:39
viji joined
|
|||
viji | hi | 07:40 | |
moritz | hello viji | ||
brrt | hello viji | ||
viji | Hello | ||
Hi guys, this is the first time joining | 07:41 | ||
moritz | welcome to #perl6 | 07:42 | |
brrt | i'm not going to repeat moritz :-) what brings you here? | ||
viji | I really don't know where I can start up with | 07:43 | |
moritz | perl6.org/ has lots of good links | 07:44 | |
viji | I have around 4 years of working experience in perl | ||
Enthusiastic to explore more. | |||
brrt | thats good :-) | 07:45 | |
but as a word of warning, perl6 is much unlike perl 5 | 07:46 | ||
if you expect to learn it as a 'new' language you should be fine.. if you expect an 'extended perl5' then you might not | 07:47 | ||
07:47
xinming left
|
|||
viji | Ok, I think starting step would be to go through the perl6 documentation. | 07:47 | |
brrt | .. probably | 07:48 | |
there is a book | |||
moritz | the starting step should be to install a Perl 6 compiler, rakudo or niecza | ||
and then get the 'Using Perl 6' book (pdf download is free), and start to play with it | |||
07:48
kresike joined
|
|||
kresike | morning all you happy perl6 people | 07:49 | |
brrt | small snippets of perl6 can also be sent to p6eval | ||
(the irc bot) | |||
as in: | 07:50 | ||
p6: say 4 ~~ 1 .. 10; | |||
p6eval | rakudo 50b77f, niecza v18-1-gc86e3f0: OUTPUT«True» | ||
..pugs: OUTPUT«» | |||
moritz | r: say <hello hi greetings>.roll, ', viji' | ||
p6eval | rakudo 50b77f: OUTPUT«hello, viji» | ||
brrt | i do like the roll method | ||
07:51
woosley joined
07:52
fgomez left
|
|||
viji | When do you think full fledged perl6 version will be released. | 07:54 | |
brrt | the question of the beast :-) | ||
personally i have no idea | 07:55 | ||
perl6 is positively huge | |||
(the specification) | |||
but most of it is 'usable' right now in the form of rakudo star releases | |||
07:59
rafl joined
|
|||
dalek | albot: 683d255 | moritz++ | evalbot.pl: install 'rn' and 'nr' aliases for rakudo+niecza also refactor the aliasing mechanism to handle multiple implementations |
08:00 | |
moritz | and niecza is often much faster at run time, though less of the ecosystem works with it | ||
brrt | oh, btw | 08:01 | |
i was under the impression that 'nom' was the new 'master'? | |||
moritz | well, the main development branch, yes | 08:02 | |
brrt | so the documentation on rakudo.org is just old? | ||
08:03
viji left
|
|||
moritz | it might be | 08:03 | |
what does it say? | |||
ah, it still has the 'How to get Rakudo nom' links | 08:04 | ||
moritz removes it | 08:06 | ||
08:06
p6eval left,
p6eval joined,
ChanServ sets mode: +v p6eval
|
|||
moritz | rn: say "fast at {<run compile>.pick} time" | 08:06 | |
hm, first executiong after restart taking ages again | 08:07 | ||
I'd really like to know what's going on there | |||
p6eval | rakudo 50b77f, niecza v18-1-gc86e3f0: OUTPUT«fast at compile time» | ||
brrt | hey, its fixed | ||
rn: say "i'm quick" | 08:08 | ||
p6eval | rakudo 50b77f, niecza v18-1-gc86e3f0: OUTPUT«i'm quick» | ||
brrt | thats much faster | ||
moritz | curiously, I run two instances of p6eval, one for freenode, one for irc.perl.org | ||
and only the freenode instance takes ages on the first execution | |||
08:16
lestrrat left
08:18
lestrrat joined
08:38
Khisanth joined
|
|||
jnthn | morning o/ | 08:42 | |
phenny | jnthn: 05:18Z <diakopter> ask jnthn I golfed yer thingamabob. compare r: with n: gist.github.com/2848989 | ||
jnthn | I'm very happy folks are jumping on the pir -> nqp effort. This one can't live though: | 08:44 | |
github.com/perl6/nqp/commit/0d86ce...2a32fdfc9f | |||
That pir::does is nothing to do with 6model and calls down to Parrot's object system. Which we need to further eliminate our usage of, not abstract away. | 08:45 | ||
moritz | fwiw I hadn't done 'pir::defined' => 'nqp::defined', because I thought that maybe the repr_defined thing might be a better match | ||
08:48
masonkramer joined
|
|||
jnthn | moritz: Yeah, I was wondering what to do on that one. | 08:55 | |
08:57
mucker joined
09:00
sergot joined
|
|||
sergot | hi o/ ! :) | 09:00 | |
09:01
am0c left
|
|||
moritz | \o sergot | 09:03 | |
tadzik | hello #perl6 | 09:18 | |
jnthn | o/ sergot, tadzik | 09:19 | |
09:23
kaleem left
09:34
masonkramer left
09:57
mucker left,
mucker joined
10:02
mucker left
10:05
mucker joined
10:08
snearch joined
10:10
woosley left
10:18
birdwind1pbird left,
birdwindupbird left
10:23
JimmyZ joined
10:26
birdwindupbird joined,
birdwind1pbird joined
10:28
snearch left,
Guest48656 left
10:31
birdwind1pbird left,
birdwindupbird left
10:46
birdwindupbird joined,
birdwind1pbird joined
10:59
daxim joined
11:01
ab5tract joined
11:02
brrt left
11:04
MichalWriter joined
|
|||
MichalWriter | hello | 11:04 | |
11:06
bbkr1 left
|
|||
MichalWriter | Culd someone tell me where I can find some reliable history about perl6 and perl5, I would like to write some articles concerning How it came to being:) | 11:07 | |
11:10
kaleem joined
|
|||
JimmyZ | hello MichalWriter, I think most people are not here now. | 11:14 | |
11:19
kboga left
|
|||
gfldex | MichalWriter: you can read up on the early history here: blob.perl.org/perlweb/dev/perl6/ta...-Perl6.pdf | 11:20 | |
daxim | MichalWriter, strangelyconsistent.org/blog/happy-...ary-perl-6 | 11:21 | |
and for perl 5: history.perl.org/PerlTimeline.html perldoc.perl.org/perlhist.html socialtext.net/perl5/history www.shlomifish.org/lecture/Perl/New...slides.pdf | |||
11:24
MichalWriter left
11:25
birdwindupbird left,
birdwind1pbird left
11:26
kaleem left,
kaleem joined,
terrence left
11:27
terrence joined,
cognominal left,
cognominal joined
11:28
birdwindupbird joined
11:33
birdwind1pbird joined
11:37
snearch joined
|
|||
pmichaud | good morning, #perl6 | 11:41 | |
terrence | it's already evening in china :) | 11:42 | |
JimmyZ is in China :) | 11:43 | ||
moritz | good am, pm | ||
jnthn | o/ pmichaud | 11:47 | |
11:47
JimmyZ left,
JimmyZ joined
|
|||
dalek | kudo/qrpa: 02b5ec6 | pmichaud++ | src/Perl6/Actions.pm: Add nqp::qlist() to obtain QRPA instead of RPA. |
11:48 | |
kudo/qrpa: f4373c6 | pmichaud++ | src/pmc/qrpa.pmc: QRPA: Fix pointer typo in QRPA.clone. |
|||
moritz | so, how far along is qrpa? | 11:49 | |
pmichaud | the PMC itself I think is pretty much complete. When I start trying to use it in List, though I get "WarningWarning" and everything stops. I'm just starting to look into that now. | 11:50 | |
jnthn | Oh | ||
There's an islist op iirc | 11:51 | ||
pmichaud | it checks directly for RPA? | ||
jnthn | Yeah | ||
perl6_is_list | |||
pmichaud | oh, if it's perl6_is_list I can probably do something with that | ||
jnthn | I added it because I was tired of whatever was there before slowing down list guts. | 11:52 | |
(Change based on profile data.) | |||
pmichaud | yes, I'm also a little concerned that there may be other C code that is looking specifically for RPA | 11:53 | |
11:54
birdwindupbird left
|
|||
dalek | ast: b1c5468 | moritz++ | S09-autovivification/autovivification.t: unfudge a few autovivification tests |
11:54 | |
moritz | .. for rakudo. | ||
moritz hates it when he fails to add information to commit messages, and finds out one second after 'git push' | |||
11:54
skids left
11:55
krunen left
|
|||
jnthn | pmichaud: the type mapping stuff does | 11:55 | |
pmichaud: We may also need to teach the serializer about this new PMC. | |||
pmichaud: But that'll be very easy. | |||
pmichaud | oh! | ||
I forgot to write freeze/thaw | |||
jnthn | ? | ||
pmichaud | in qrpa | 11:56 | |
jnthn | Oh, bs doesn't use freeze/thaw | ||
You may get away with it :) | |||
11:56
birdwind1pbird left,
birdwindupbird joined
11:57
birdwind1pbird joined
|
|||
pmichaud | github.com/parrot/parrot/pull/778 # huh? wish parrot folks could make up their minds :-) :-) | 12:01 | |
moritz | *shrug* not much effort remove a .loadlib line... | 12:02 | |
felher | r: while True { say (0 but True); } | ||
p6eval | rakudo 50b77f: OUTPUT«(signal ABRT)00000000» | ||
felher | :/ | ||
But at least i golfed it down :D | |||
pmichaud | [Coke]++ already noted that parrot went through a fair bit of effort to move the OS pmc to a dynpmc, now someone is moving it back. Weird. | 12:03 | |
felher: maybe that's just Rakudo's way of refusing to do contrived code. :-) :-) | |||
moritz | r: say (0 but True); | ||
p6eval | rakudo 50b77f: OUTPUT«0» | ||
moritz | r: loop { say (0 but True); } | 12:04 | |
p6eval | rakudo 50b77f: OUTPUT«(signal ABRT)000000000» | ||
felher | pmichaud: :D | ||
moritz | felher++ # golfing segfaults | ||
jnthn | That's the same thing as the bool.t segv | ||
pmichaud | r: say (0 but True); say (0 but True); say (0 but True); say (0 but True); say (0 but True); say (0 but True); say (0 but True); say (0 but True); say (0 but True); | ||
p6eval | rakudo 50b77f: OUTPUT«(signal ABRT)0000000» | ||
pmichaud | looks like it always occurs on the eighth one. | 12:05 | |
jnthn | It explodes during the GC run, I think. | ||
It's not clear why :/ | |||
moritz | r: for ^10 { say $_ but True } | ||
p6eval | rakudo 50b77f: OUTPUT«(signal ABRT)0123456» | ||
jnthn | I need to golf it further; "but" does quite a bit | 12:06 | |
felher | On my maschine i can say it ~~ 200 times :) | ||
jnthn | Yeah, it's probabalistic-y. | ||
Such is heap corruption. | |||
It looks like it may be double-freeing of libtommath things | |||
(Almost certainly the fault of P6opaque or P6bigint though) | |||
moritz is glad to have a reproducable case | 12:11 | ||
it seems that I've occasionally run into segfaults that then went away when unrelated stuff changed | |||
like the one in qbootstrap that went away when merged into nom | |||
r: role A { }; say 0 but A for ^20 | 12:12 | ||
p6eval | rakudo 50b77f: OUTPUT«00000000000000000000» | ||
moritz | r: enum A <b c>; say 0 but A for ^20 | ||
p6eval | rakudo 50b77f: OUTPUT«(signal ABRT)00000000000» | ||
jnthn | r: say 0 but 'foo' for ^20 | 12:14 | |
p6eval | rakudo 50b77f: OUTPUT«(signal ABRT)foofoofoofoofoofoofoo» | ||
jnthn | r: say 'x' but 1 for ^20 | ||
p6eval | rakudo 50b77f: OUTPUT«xxxxxxxxxxxxxxxxxxxx» | ||
jnthn | r: say 'x' but 1 for ^2000 | ||
p6eval | rakudo 50b77f: OUTPUT«xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | ||
jnthn | The target of the mixin has to be an Int. | 12:15 | |
moritz | and it needs to be not a role, but something else | 12:16 | |
jnthn | r: role A { }; say 0 but A for ^200 | 12:17 | |
p6eval | rakudo 50b77f: OUTPUT«000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||
jnthn | Hmm. | ||
12:18
ab5tract left
12:20
nwc10 joined
12:21
xinming joined
12:26
birdwind1pbird left,
birdwindupbird left,
birdwindupbird joined
12:27
birdwind1pbird joined
12:31
replore joined
12:32
fgomez joined
12:35
snearch left
|
|||
[Coke] | +# 05/31/2012 - rakudo++ (22355); niecza (91.47%); pugs (34.66%) | 12:53 | |
dalek | kudo/qrpa: cf75879 | pmichaud++ | src/ops/perl6.ops: QRPA: Update nqp::islist to be QRPA-aware. |
12:54 | |
13:02
birdwindupbird left
13:03
snearch joined
13:04
birdwind1pbird left
13:08
wtw left
13:10
Patterner left
13:12
Psyche^ joined,
Psyche^ is now known as Patterner
13:13
replore left
13:14
kaleem left
13:17
replore_ joined
13:19
kaleem joined
13:22
kaleem left
|
|||
dalek | kudo/qrpa: 725acab | pmichaud++ | / (2 files): QRPA: Add QRPA.get_number(). |
13:24 | |
kudo/qrpa: 94483a2 | pmichaud++ | / (2 files): QRPA: Add QRPA.get_bool, get_bool and get_number tests. |
|||
13:25
terrence left
13:28
thou joined
13:31
skids joined,
terrence joined
13:34
kaleem joined
|
|||
dalek | p: bfea0f7 | duff++ | / (15 files): Use new nqp ops nqp::defined, nqp::typeof, nqp::rindex, nqp::find_not_cclass, nqp::open, nqp::new, nqp::isa, nqp::find_method, nqp::does, nqp::stat |
13:36 | |
pmichaud | Hmmm.... I'm not sure there should be a nqp::new | 13:37 | |
actually, I'm not comfortable with several of those. | |||
moritz | nqp::defined is a bit suspicious because it's the parrot defined that's tested, not the repr thingy | 13:38 | |
pmichaud | right | ||
these are all too parrot-specific to be in the nqp:: space. | |||
moritz | and find_not_cclass depends on parrot-specific constants | ||
pmichaud | I'm going to request that one be reverted. | ||
moritz | find find_method violates the 'no underscore' principle | ||
that we held up so far | |||
pmichaud | This is bringing the nqp:: namespace waaaaaaay too close to parrot. | ||
moritz | PerlJam: please revert :-) | 13:39 | |
pmichaud | I also want those nqp:: opcodes to go away. If we're doing something Parrot specific, then pir:: is the proper place. | ||
the nqp:: space should be reserved only for those things that are going to be vm-independent. | |||
moritz | +1 | 13:40 | |
13:41
isBEKaml joined
|
|||
pmichaud | for example, the correct way to verify type in NQP is by using nqp::istype, not nqp::typeof | 13:41 | |
jnthn | arrrghh...please everybody stop doing the nqp ops!!! | 13:42 | |
pmichaud | yes, these are very wrong. | ||
jnthn | I'm going to have to revert half of this. | ||
pmichaud | well, someone needs to revert it, yes. | ||
jnthn | I want Parrot specific things taht I want to kill left looking Parrot specific. | ||
pmichaud | right -- see above | 13:43 | |
13:39 <pmichaud> I also want those nqp:: opcodes to go away. If we're doing something Parrot specific, then pir:: is the proper place. | |||
jnthn | Right. | ||
pmichaud | jnthn: out of curiosity, why did you add nqp::can, though? | ||
jnthn | pmichaud: Because nqp::can makes sense at a 6model level. | 13:44 | |
pmichaud | as in, 6model properly implements vtable can? | ||
jnthn | pmichaud: Think so, but even looking to VMs beyond Parrot, I would want an nqp::can | ||
moritz | r: nqp::say pir::defined(Int) | ||
p6eval | rakudo 50b77f: OUTPUT«0» | ||
moritz | r: nqp::say pir::defined(1) | 13:45 | |
p6eval | rakudo 50b77f: OUTPUT«1» | ||
jnthn | pmichaud: The alternative is to just expose an nqp::findmethod and then use nqp::isnull on the result or something | ||
moritz | it also seems that it implements the defined vtable :-) | ||
jnthn | pmichaud: But it's just too common. | ||
moritz: It does...but I'm not too happy on that. | |||
pmichaud | I'm fine if there's an nqp::can, as long as it's consistent with 6model objects | ||
moritz | jnthn: I know | ||
pmichaud | for example, we also have nqp::clone which is the same way | ||
jnthn | pmichaud: clone I'm not happy with at the moment | 13:46 | |
pmichaud: 6model does not handle the clone vtable | |||
pmichaud: There's a representation level clone operation. | |||
pmichaud | okay, so that one we might need some work on. | ||
jnthn | The problem we have at the moment is that half the things are 6model-y and half are not. | ||
pmichaud | Anyway, new/defined/typeof/etc all have to go. | ||
jnthn | In NQP land, that is. | ||
Indeed. | |||
13:47
mucker left
|
|||
jnthn | I appreciate the effort and intent behind these patches, but nqp:: needs careful design, not to be the same mess pir:: is. | 13:47 | |
13:48
felher left
|
|||
pmichaud | right... the purpose is not to simply make the word "pir" go away but keep all of its warts. | 13:48 | |
13:48
crazedpsyc left
|
|||
jnthn | *nod* | 13:48 | |
13:48
crazedpsyc joined
|
|||
moritz | so, we're all in violent agreement | 13:48 | |
jnthn | :) | 13:49 | |
moritz | and just have to tell PerlJam++ and kboga++ | ||
jnthn | Aye. | ||
pmichaud | well, except the commits haven't been reverted yet. :-) | ||
13:49
crazedpsyc is now known as Guest29889
|
|||
jnthn | Note that a bunch of the commits were OK | 13:49 | |
This latest one not, but kboga++ did many pir -> existing nqp ops that were sensible. | |||
pmichaud | as opposed to a full-scale revert, I propose simply removing the nqp:: opcodes we disagree with and then patch things to work again :-) | ||
jnthn | +1 | 13:50 | |
13:50
felher joined
|
|||
nwc10 | I don't see any comment in src/PAST/NQP.pir explaining this policy | 13:50 | |
(the policy makes total sense to me. But that's not saying much, as I'm likely very out of context) | |||
jnthn | pmichaud: Hah! Guess how many gigabytes of RAM this allocates? | 13:51 | |
my $string = 'x' x 30000; | |||
my @matches = $string.match(/./, :global); | |||
:) | |||
13:51
terrence left
|
|||
jnthn thinks he knows why too :) | 13:51 | ||
pmichaud | no guess | ||
jnthn | 4GB! | ||
pmichaud | only 4? | ||
jnthn | Exhaust all the 32-bit address space :) | 13:52 | |
pmichaud: It's transcoding to ucs4 for every single match | |||
pmichaud: And then keeping target around in the Cursor | |||
moritz | ouch | ||
jnthn | So we end up with 30000 * 4 * 30000 :) | ||
r: say 30000 * 4 * 30000 | |||
p6eval | rakudo 50b77f: OUTPUT«-694967296» | ||
jnthn | uh :) | 13:53 | |
moritz | r: say 30000 * 4 * (30000) | ||
jnthn | Also, the optimizer needs to be smacked... | ||
p6eval | rakudo 50b77f: OUTPUT«3600000000» | ||
pmichaud | I can certainly release $!target at the end, if that's not being done already. | ||
jnthn | pmichaud: Or !cursor_init gets a :target to set it explicitly? (more) | ||
pmichaud | but really things improve greatly when our native string type can handle fixed-width unicode natively | ||
jnthn | I'm also bothered that LANG suffers the same thing. | 13:54 | |
nwc10 | when smacking the optimiser, I'm not sure if there is a mathematically reliable way to determine whether integer multiply has overflowed | ||
jnthn | That is, every time we hit a regex in CORE.setting compilation, for example, we do a LANG switch, and re-transcode the entire of CORE.setting. | ||
That's probably part of why S05-mass/rx.t apparently takes an age to compile too :) | 13:55 | ||
13:55
Guest29889 is now known as crazedpsyc
|
|||
flussence | jnthn: is that a new bug or something that's always been there? | 13:55 | |
moritz | nwc10: oh, there is | ||
nwc10: just do the computation in bigint land | 13:56 | ||
nwc10: and look if the result can safely be unboxed | |||
jnthn | flussence: It's been there a while...it's over-eager "make it native" | ||
isBEKaml | and suffer the penalty of boxing types. :) | ||
s/of/for/ | |||
flussence | one of my biggest gripes right now is how slow string munging is in rakudo. maybe I won't have anything to complain about soon :) | 13:57 | |
moritz | nwc10: alternatively, on the CPU level the result of a multiplication is always twice as wide, so you can just look at the upper half to detect overflow | ||
pmichaud | jnthn: I agree that LANG is an issue; I'm not sure that :target is the right answer. | ||
I'll think about it a bit today, though. That one needs solving soon-ish. | 13:58 | ||
jnthn | pmichaud: Ah, your suggestion may not help for the /./ case above (more) | ||
nwc10 | moritz: I'm not convinced about that. | ||
jnthn | pmichaud: We can easily release $!target if we know we won't backtrack into the thing again, but for normal regexes I guess backtracking is enabled. | ||
nwc10 | moritz: oh, you can in the upper half, if you have a multiply that's twice as wide, available for you to use | 13:59 | |
pmichaud | well, that's as much a problem with the implementation of :global as anything else then | ||
moritz | nwc10: is there any modern instruction set where that's not the case? | 14:00 | |
nwc10 | I don't know. I tend to think "what can C give you?" | ||
colomon keeps on thinking this would be a fun Niecza project: www.makershed.com/Getting_Started_w...lick=37845 | |||
nwc10 | also, if you are already using 64 bit integers on a 64 bit machine, no good idea | ||
moritz | nwc10: C can't. The CPU can. | ||
jnthn | .oO( Some assembly required ) |
14:01 | |
moritz | anyway, we have a bigint library available | ||
jnthn | For constant folding that works out fine | 14:02 | |
I think TimToady expects our native multiply to throw if it overflows, though... | |||
moritz | aye :( | ||
and I think then it's not 'native' anymore :/ | |||
jnthn | I did try to argue that :) | ||
nwc10 | but overflow as wrap isn't useful to anyone | 14:03 | |
pmichaud | can the native multiply simply do nextsame on overflow? | ||
moritz | uhm | ||
jnthn | nwc10: Yes, but C performance is useful to many people ;) | 14:04 | |
moritz | you can only do really efficient calculations with natives if you can determine at compile time that the return type is a native one | ||
jnthn | What moritz said | ||
moritz | and a nextsame means that you always potentially get a boxed Int back | ||
so you need one GCable per operation :( | 14:05 | ||
jnthn | Right. Then the optimizer can't inline the next operation. | ||
nwc10 | jnthn: yes. Although for some, advice from Klortho #11912 seems to be the key part. :-( | ||
14:05
SHODAN left
|
|||
pmichaud | well, clearly 30000 * 4 * 30000 as optimized is less good than if the optimization wasn't there. | 14:06 | |
moritz | I'm fine with never overlflowing operations from literals | ||
pmichaud | that *has* to be fixed somehow. | ||
jnthn | Agreed | ||
moritz | but if the programmer explicitly requests native types, he should get them, with all the problems they have | ||
jnthn | But we should actually be constant folding that in the first place, I suspect | ||
moritz | pmichaud: I don't think anybody contests that | ||
pmichaud | same if we have my int $a = 30000; my int $b = 4; $a * $b * $a | ||
r: my int $a = 30000; my int $b = 4; say $a * $b * $a | 14:07 | ||
p6eval | rakudo 50b77f: OUTPUT«-694967296» | ||
jnthn | pmichaud: There you've declared you're working in native types. | ||
moritz | and native types overflow. | ||
jnthn | pmichaud: If you didn't declare it then yeah, big integer semantics. | ||
14:07
SHODAN joined
|
|||
pmichaud | r: my int $a = 30000; say $a * foo() * $a | 14:07 | |
p6eval | rakudo 50b77f: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&foo' called (line 1)» | ||
pmichaud | oops | 14:08 | |
but you get the point -- how do I know how foo() was declared? | |||
moritz | by looking it up in a lexical scope | ||
jnthn | r: my int $a = 30000; sub foo() { 4 }; say $a * foo() * $a | 14:09 | |
p6eval | rakudo 50b77f: OUTPUT«3600000000» | ||
moritz | one approach that could work is to default literals to the non-native type | ||
jnthn | r: my int $a = 30000; sub foo() returns int { 4 }; say $a * foo() * $a | ||
p6eval | rakudo 50b77f: OUTPUT«Type check failed for return value; expected 'int' but got 'Int' in sub foo at /tmp/fWPl9Tddb4:1 in block <anon> at /tmp/fWPl9Tddb4:1» | ||
jnthn | Ah...that that bit is NYI... | ||
moritz | and allow unboxing when assigning them to natively-type variables | ||
jnthn | moritz: That could work, yes | ||
moritz | r: my int $a = 30000; sub foo() returns int { nqp::unbox_i(4) }; say $a * foo() * $a | 14:10 | |
p6eval | rakudo 50b77f: OUTPUT«Type check failed for return value; expected 'int' but got 'Int' in sub foo at /tmp/cLOezGpqiw:1 in block <anon> at /tmp/cLOezGpqiw:1» | ||
pmichaud | what happens with $a + 1, then? | ||
is the 1 boxed or unboxed? | |||
moritz | that would be boxed in my proposal | ||
pmichaud | so do we not get the infix:<+>(int,int) version? | ||
jnthn | pmichaud: Right now, it emits that as an (already unboxed) 1 | ||
pmichaud: And then we hit the int,int version | |||
pmichaud | jnthn: right, I'm asking about what happens in moritz' proposal | 14:11 | |
jnthn | pmichaud: It'd have to unbox the 1 every time, iiuc. | ||
pmichaud: Which doesn't seem desirable, but isn't an allocation at least... | |||
nwc10 | Oh, confident that you can be sure they won't overflow if both values are less than the square root of the largest permissble value. (ie fit in 16 bits, if you have a 32 bit multiply, etc) | 14:12 | |
moritz | at some point we'll realize that you can't have speed, safety *and* magic (all boxing/unbox implicit) | ||
pmichaud | afk for a bit | 14:18 | |
somewhere QRPA is causing a segfault :-| | |||
14:21
fhelmberger left,
PacoAir joined
|
|||
pmichaud | back again, I think I know where the error(s) may be | 14:22 | |
yup | |||
dalek | kudo/qrpa: eadaa34 | pmichaud++ | src/pmc/qrpa.pmc: QRPA: Restore the custom_mark_destroy flags that were in init(). Oops. |
14:25 | |
jnthn | :) | 14:27 | |
14:28
tokuhiro_ joined
|
|||
dalek | kudo/qrpa: c5b2ca2 | jnthn++ | src/binder/types.c: Ensure the type mapper knows how to map a QRPA to Parcel. |
14:33 | |
jnthn | pmichaud: Did ^^ for you :) | ||
tadzik | argh. Is it just me, or every train reservation website around is absolutely terrible? | ||
moritz | I can certainly attest that the German one is | 14:34 | |
isBEKaml | that's supposedly a *feature* :P Train journey's *supposed* to be terrible | ||
tadzik | well, a roundtrip air ticket from WAW to SXB almost exceeds my monthly salary... ;) | 14:35 | |
14:35
domidumont joined
|
|||
tadzik | or maybe I fail at searching again | 14:35 | |
moritz generally likes travelling by train, as compared to its alternatives | |||
tadzik | trains, when done right, are pretty cool | 14:36 | |
colomon wishes traveling by train was even occasionally a sane move in North America | |||
moritz | tadzik: which days do you want to travel? | ||
tadzik | leg room, electricity, no wireless communication limitations, almost seamless movement (compared to buses for example) | ||
moritz: I was thinking about 28 June - 2 July | |||
or something of this sort | 14:37 | ||
there is supposed to be a train from WAW to Karlsruhe, EuroNight | |||
moritz | tadzik: 334 EUR wound trip | 14:38 | |
tadzik | ugh | ||
thanks. Where did you find that? | |||
moritz | www.swoodoo.com/de/flugsuche/Warsch...a8a755891e | ||
tadzik | oh, that's even flugzug | 14:39 | |
isBEKaml | phenny: flugzug? | 14:40 | |
tadzik | phenny: "flugzug"? | ||
phenny | tadzik: "Flugzug" (de to en, translate.google.com) | ||
tadzik | phenny: "flugzeug"? | 14:41 | |
phenny | tadzik: "plane" (de to en, translate.google.com) | ||
pmichaud | wow, after that last fix only four spectest files fail with qrpa | 14:42 | |
moritz | isBEKaml: train to the airport | ||
tadzik | I guess I'll go with a bus again :) | 14:43 | |
jnthn | pmichaud: Oh, we're using qrpa? | ||
pmichaud: I didn't see the thing to enable use of it in the branch. | |||
14:43
adu joined
|
|||
pmichaud | I haven't committed/pushed those | 14:43 | |
isBEKaml | moritz: ah, okay. | ||
jnthn | Oh :) | ||
pmichaud | and I'm only using it in one place at the moment | ||
jnthn | 4 spectests feels rather triagable. | ||
tadzik | but then I'll have to skip one of my exams :/ | 14:44 | |
pmichaud | well, considering it was a lot more an hour ago, I'm happy. | ||
jnthn | moritz: Are you ging to FPW? | ||
pmichaud | I'll go ahead and push the other qrpa changes now. I'm not really planning to do a branch merge with this branch, tho -- it's just to explore how well it works. When things work out, qrpa will move to nqp and I'll cherry-pick items back into the nom branch | 14:45 | |
moritz | jnthn: no | ||
jnthn | pmichaud: ah, ok | ||
Makes sense. | 14:46 | ||
14:50
fgomez left
14:51
kaleem left
14:57
cognominal_ joined
15:00
cognominal left,
fgomez joined,
GlitchMr joined
|
|||
diakopter | nr: my $a=1; { temp $a=2; temp $a=3 }; say $a # golfed further | 15:00 | |
p6eval | rakudo 50b77f: OUTPUT«2» | ||
..niecza v18-1-gc86e3f0: OUTPUT«1» | |||
GlitchMr | perl6: my @s = 1, 2, 3; print (@s.pick(*)while![<=]@s).perl | 15:01 | |
p6eval | rakudo 50b77f: OUTPUT«===SORRY!===Unable to parse postcircumfix:sym<( )>, couldn't find final ')'» | ||
..pugs: OUTPUT«***  Unexpected "while" expecting term postfix, operator or ")" at /tmp/JuMtco5ee7 line 1, column 35» | |||
..niecza v18-1-gc86e3f0: OUTPUT«===SORRY!===Two terms in a row (listop with args requires whitespace or parens) at /tmp/8sKRgHCYeV line 1:------> s = 1, 2, 3; print (@s.pick(*)while![<=]⏏@s).perlParse failed» | |||
15:01
fhelmberger joined
|
|||
GlitchMr | perl6: my @s = 1, 2, 3; @s.pick(*)while![<=]@s; print @s | 15:01 | |
p6eval | niecza v18-1-gc86e3f0: OUTPUT«===SORRY!===Two terms in a row (listop with args requires whitespace or parens) at /tmp/lAbnJe5yOR line 1:------> my @s = 1, 2, 3; @s.pick(*)while![<=]⏏@s; print @sParse failed» | ||
..pugs: OUTPUT«***  Unexpected "@s" expecting dot, ":", "(", term postfix or operator at /tmp/C3cCawZ54u line 1, column 38» | |||
..rakudo 50b77f: OUTPUT«===SORRY!===Confusedat /tmp/RjUH_wCcGe:1» | |||
GlitchMr | ok... | ||
moritz | GlitchMr: but whitespaces between terms and infix operators | ||
s/but/put/ | |||
GlitchMr: and also between terms and keywords | |||
GlitchMr | I know | ||
diakopter | nr: my @s = 1, 2, 3; @s.pick(*)while![<=] @s; print @s | 15:02 | |
p6eval | rakudo 50b77f, niecza v18-1-gc86e3f0: OUTPUT«123» | ||
jnthn | hah, calling temp twice in the same block :) | ||
GlitchMr | I was just checking how it worked for that guy: codegolf.stackexchange.com/a/398/3103 | ||
But I think it's because it was working long time ago | |||
15:02
cognominal___ joined
|
|||
jnthn | s/block/scope/ | 15:02 | |
diakopter | jnthn: I think it's the same problem as the the recursed temp | 15:03 | |
I mean, it makes sense that the fix for one would fix the other one | |||
moritz | r: my @s = 3, 1, 2; @s=.pick(*) while ![<=]@s | ||
p6eval | rakudo 50b77f: OUTPUT«===SORRY!===Confusedat /tmp/m1WV6gUHYl:1» | ||
moritz | r: my @s = 3, 1, 2; @s=.pick(*) while ![<=] @s | ||
p6eval | rakudo 50b77f: ( no output ) | ||
moritz | r: my @s = 3, 1, 2; @s=.pick(*) while ![<=] @s; say @s | ||
p6eval | rakudo 50b77f: OUTPUT«use of uninitialized value of type Any in string context in block <anon> at /tmp/_6_WKViX2L:1» | ||
pmichaud | I'm getting a test failure in nqp/qregex | ||
moritz | pmichaud: I think I also got one last I ran those tests | 15:04 | |
pmichaud: something about an error message being off | |||
jnthn thought he'd fixed everything at one point... | |||
diakopter | it's been there a week or more | ||
moritz | r: my @s = 3, 1, 2; @s=.pick(*) until [<=] @s; say @s | ||
p6eval | rakudo 50b77f: OUTPUT«use of uninitialized value of type Any in string context in block <anon> at /tmp/p4M4zQFOuI:1» | ||
colomon | there's a method form of take? | ||
moritz | r: my @s = 3, 1, 2; @s.=pick(*) until [<=] @s; say @s | ||
p6eval | rakudo 50b77f: OUTPUT«1 2 3» | ||
moritz | r: my @s = 3, 1, 2; @s.=pick:* until [<=] @s; say @s | 15:05 | |
p6eval | rakudo 50b77f: OUTPUT«===SORRY!===Confusedat /tmp/dLHiRUPaE0:1» | ||
diakopter | colomon: PerlJam added it to Mu last night | ||
moritz | r: my @s = 3, 1, 2; @s.=pick: * until [<=] @s; say @s | ||
TimToady | \o/ bogosort | ||
p6eval | rakudo 50b77f: OUTPUT«1 2 3» | ||
GlitchMr | I've already optimized it into @s.=pick(*)until[<=] @s | ||
moritz | GlitchMr++ | ||
15:05
cognominal_ left
|
|||
colomon | diakopter: why? | 15:05 | |
GlitchMr | I've noticed that even while he called it "code golf", it wasn't really optimized | 15:06 | |
jnthn | colomon: I think there was some discussion of it in the backlog | ||
diakopter | colomon: because TimToady said it was already mentioned a couple times in the syn | ||
15:06
tokuhiro_ left
|
|||
dalek | p: 69d548e | jnthn++ | / (17 files): Toss various nqp:: ops that are too Parrot-specific. |
15:07 | |
GlitchMr | Bogosort is really easy to implement in Perl 6. | ||
But I really like this: | |||
[min] @array | |||
15:08
fhelmberger left
|
|||
pmichaud | or even @array.min :-) | 15:09 | |
GlitchMr | Oh right | ||
colomon | jnthn, diakopter, TimToady: I see "(Using the term "label" loosely, to include other solutions besides the label syntax, such as .gather and .take methods on some identity object.)" which seems to be the opposite of what has been implemented. | ||
GlitchMr | There is more than one way to do it | ||
Or: | |||
min @array | |||
Why "min" is operator anyways? | 15:10 | ||
TimToady | so you can compose it more ways | ||
$x min= 42 | 15:11 | ||
moritz | r: say <42 -3 4>.min | ||
p6eval | rakudo 50b77f: OUTPUT«-3» | ||
TimToady | @a Zmin @b | ||
colomon | or @x >>min<< @y | ||
pmichaud | @a >>min<< @b | ||
TimToady | Xmin has to be good for something... | ||
pmichaud | I think that Xmin is some sort of league of mutant heroes or something like that. :-P | 15:12 | |
tadzik | ;) | ||
benabik | A very small league. | ||
GlitchMr | What about Xmax? | ||
diakopter | a minimal size league | ||
tadzik | small step for humanity | ||
or from humanity... | |||
isBEKaml | oh, they are not humans at all.... | 15:13 | |
GlitchMr | And what about Xminmax? | ||
TimToady | Perl 6 will be done by Xmax | ||
GlitchMr | So it's no longer Xmas, but Xmax? | ||
diakopter | 'twas a joke's eve | 15:14 | |
GlitchMr | Also, I'm not sure, but what is the difference between ..., !!! and ??? | ||
pmichaud | jnthn: I was going to reject nqp::findmethod altogether | 15:15 | |
TimToady | fail, die, warn | ||
pmichaud | jnthn: if you're comfortable with keeping it, though, I'm okay with that. | ||
jnthn | pmichaud: What do you plan to replace it with? | ||
timotimo | how far are the perl6es to get debuggers? | ||
jnthn | pmichaud: I'm not thrilled with the name. | ||
pmichaud | jnthn: what's the p6 equivalent? | ||
jnthn | pmichaud: But I don't ahve a better one. | ||
GlitchMr | rakudo: ???; print 3 | ||
p6eval | rakudo 50b77f: OUTPUT«Stub code executed in block <anon> at /tmp/3H9AgrnreJ:13» | ||
GlitchMr | rakudo: !!!; print 3 | ||
p6eval | rakudo 50b77f: OUTPUT«Stub code executed in block <anon> at /tmp/I8sb6gaoa2:1» | ||
GlitchMr | niecza: ???; print 3 | 15:16 | |
p6eval | niecza v18-1-gc86e3f0: OUTPUT«Unhandled exception: >>>Stub code executed at /tmp/sLonKb0Ywp line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3910 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3911 (module-CORE @ 558)  at /home/p6eval/niecza/lib/CORE… | ||
jnthn | pmichaud: There kinda ain't one...you'd really do $obj.^find_method('blah') | ||
pmichaud: But that skips the method cache | |||
GlitchMr | Makes sense | ||
pmichaud | I'm fine with findmethod for now, then | ||
jnthn | pmichaud: In Perl 6 a bunch of the cases we use it for are covered by things like $obj.Foo::bar(), $obj."$foo"(), etc. too | ||
pmichaud | the nice thing about an ugly name is that we don't have many qualms with changing it later :) | ||
jnthn | OK | ||
TimToady | looks like niecza isn't trapping the ??? warning right | ||
pmichaud | jnthn: oh, and ARGGGGGH your patch conflicts with mine :-) | 15:17 | |
jnthn: you *just* beat me to the push | |||
jnthn | oy noes! | ||
pmichaud | I'll adopt yours and fold my changes in | ||
GlitchMr | At least Git is somewhat clever about changes happening while you modify your code. | 15:18 | |
jnthn | :) | ||
pmichaud: I've got a Rakudo patch to do similar cleanup almost done | |||
pmichaud | usually, yes. In this case jnthn++ and I were both making almost identical changes | ||
jnthn: I'm only changing src/PAST/NQP.pir; I'll let others (you) take care of the rest :) | |||
kresike | bye all | 15:19 | |
15:19
kresike left
|
|||
GlitchMr | You can make branches and merges usually work. | 15:19 | |
jnthn | pmichaud: Oh, I did :) | ||
pmichaud | jnthn: I'm going to list the explicitly rejected opcodes in PAST/NQP.pir (and we can comment them out or make them throw exceptions at some point) | ||
that way someone else will hopefully not be tempted to do the same thing again, and also to note that there are some opcodes that we don't want | 15:20 | ||
jnthn | pmichaud: +1 | ||
pmichaud | and if we set them to throw exceptions we can use those to point to the correct opcode | 15:21 | |
dalek | p: 365eda1 | jnthn++ | src/HLL/Compiler.pm: Toss a method that assumes Parrot namespaces, and is unused. |
||
pmichaud | Heh. That method was actually an early version of PDD31. | ||
jnthn | Oh :) | ||
GlitchMr | I guess that it will be possible to make bad code in Perl 6? | ||
pmichaud | GlitchMr: and not only that, but there will be more than one way to do so. | 15:22 | |
GlitchMr | But good code will be possible too? | ||
jnthn | You don't even have to be talented to make bad code in Perl 6! :) | ||
In fact, if you can make bad code in any other language, you're perfectly qualified! | 15:23 | ||
pmichaud | Of course. There's a ton of good code in Perl 6. :-) | ||
jnthn | ;) | ||
TimToady | what we hope is that it will be harder to make bad code by accident when you're trying to make good code | ||
GlitchMr | I guess that because of this, Perl 5 will be more useful for golf except for certain cases (bogosort). | 15:24 | |
TimToady | Perl 6 is not optimized for golf, 'tis true. | 15:25 | |
dalek | kudo/nom: abd4abf | jnthn++ | / (15 files): Eliminate some uses of nqp:: opcodes that we've outlawed. |
15:26 | |
GlitchMr | But who would use Bogosort if in worst case it's O(∞). | ||
jnthn | Optimists :) | ||
TimToady | nonetheless, the typical Perl 6 solution might still be smaller than the typical Perl 5 solutions | ||
jnthn | pmichaud: Cleared up nqp:: bits in Rakudo now too :) | 15:27 | |
GlitchMr | Default "use strict" makes things more difficult for code golf. | ||
And many edge cases simply don't exist in Perl 6. | |||
perl6: print so (True but False) | 15:28 | ||
p6eval | rakudo 50b77f, niecza v18-1-gc86e3f0: OUTPUT«False» | ||
..pugs: OUTPUT«*** Cannot cast from VBool False to VCode (VCode) at Prelude.pm line 541, column 5-16» | |||
GlitchMr | perl6: print True but False | ||
p6eval | rakudo 50b77f: OUTPUT«False» | ||
..niecza v18-1-gc86e3f0: OUTPUT«True» | |||
..pugs: OUTPUT«*** Cannot cast from VBool False to VCode (VCode) at Prelude.pm line 541, column 5-16» | |||
GlitchMr | What should be result of this? | ||
TimToady | mass confusion, obviously :) | 15:29 | |
I'd like to hear arguments from both camps as to why their answer is correct. :) | 15:30 | ||
GlitchMr | What True but False should be on stringify? | 15:31 | |
TimToady | but this is too near the boolean circularity saw for me to rush in | ||
GlitchMr | perl6: print False but True | ||
p6eval | pugs: OUTPUT«*** Cannot cast from VBool True to VCode (VCode) at Prelude.pm line 541, column 5-16» | ||
..niecza v18-1-gc86e3f0: OUTPUT«False» | |||
..rakudo 50b77f: OUTPUT«True» | |||
GlitchMr | perl6: print so (False but True) | ||
p6eval | pugs: OUTPUT«*** Cannot cast from VBool True to VCode (VCode) at Prelude.pm line 541, column 5-16» | ||
..rakudo 50b77f, niecza v18-1-gc86e3f0: OUTPUT«True» | |||
GlitchMr | Makes sense | ||
TimToady | now nr is available to leave pugs out | 15:32 | |
nr: say False but True | |||
p6eval | niecza v18-1-gc86e3f0: OUTPUT«False» | ||
..rakudo 50b77f: OUTPUT«True» | |||
GlitchMr | I'm not sure, but I think that "False but True" should retrun "False" on stringify | ||
jnthn | TimToady: The Rakudo store on this is almost certainly tied to how unboxing works in 6model | 15:33 | |
colomon | nr++ | ||
jnthn | *story | ||
TimToady: It might be a moderate pain to change. | |||
GlitchMr | nr: print False but role { method Bool() { return True } } | 15:34 | |
p6eval | niecza v18-1-gc86e3f0: OUTPUT«False» | ||
..rakudo 50b77f: OUTPUT«True» | |||
jnthn | Right, that's what "False but True" desugars to. | ||
colomon | TimToady: I dunno, I kind of thing Pugs is right here.... | ||
GlitchMr | nr: print +(42 but ("string", False)) | 15:35 | |
p6eval | niecza v18-1-gc86e3f0: OUTPUT«string» | ||
..rakudo 50b77f: OUTPUT«No such method 'specialize' for invocant of type 'Perl6::Metamodel::ClassHOW' in <anon> at src/gen/Metamodel.pm:2125 in <anon> at src/gen/Metamodel.pm:2121 in any compose at src/gen/Metamodel.pm:2119 in any mixin at src/gen/Metamodel.pm:959 in sub infix:<… | |||
colomon | nr: print +(42 but 42.1) | 15:36 | |
p6eval | rakudo 50b77f, niecza v18-1-gc86e3f0: OUTPUT«42» | ||
GlitchMr | ... haven't I asked to use it in numeric context? | ||
colomon | nr: print (42 but 42.1).Rat | ||
p6eval | rakudo 50b77f, niecza v18-1-gc86e3f0: OUTPUT«42.1» | ||
jnthn | I don't even know what you just tried to do :) | ||
15:36
SatoAmbush joined
|
|||
colomon | nr: print (42 but 42.1).Real | 15:36 | |
15:36
SatoAmbush left
|
|||
p6eval | niecza v18-1-gc86e3f0: OUTPUT«Unhandled exception: Unable to resolve method Real in type Int+{Rat} at /tmp/sqAdiKZZ0f line 1 (mainline @ 4)  at /home/p6eval/niecza/lib/CORE.setting line 3910 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3911 (module-CORE @ 558)  at /h… | 15:36 | |
..rakudo 50b77f: OUTPUT«42» | |||
colomon | nr: print 42.Real | 15:37 | |
p6eval | rakudo 50b77f: OUTPUT«42» | ||
..niecza v18-1-gc86e3f0: OUTPUT«Unhandled exception: Unable to resolve method Real in type Int at /tmp/Usz_FtpvF9 line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3910 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3911 (module-CORE @ 558)  at /home/p6… | |||
colomon | whoops | ||
cognominal___ | jthn, will we eventually have a way to dump parse trees of Perl 6 programs? It is currently broken. | 15:38 | |
it has been for a while. | |||
15:38
cognominal___ is now known as cognominal
|
|||
GlitchMr | nr: so (42 but (True, False)) | 15:38 | |
p6eval | niecza v18-1-gc86e3f0: ( no output ) | ||
..rakudo 50b77f: OUTPUT«No such method 'specialize' for invocant of type 'Perl6::Metamodel::ClassHOW' in <anon> at src/gen/Metamodel.pm:2125 in <anon> at src/gen/Metamodel.pm:2121 in any compose at src/gen/Metamodel.pm:2119 in any mixin at src/gen/Metamodel.pm:959 in sub infix:<… | |||
GlitchMr | niecza: print so (42 but (True, False)) | ||
p6eval | niecza v18-1-gc86e3f0: OUTPUT«False» | ||
GlitchMr | False? | ||
colomon | n: say (42 but (True, False).WHAT | 15:39 | |
p6eval | niecza v18-1-gc86e3f0: OUTPUT«===SORRY!===Unable to parse parenthesized expression at /tmp/c2wgkjEZZF line 1:------> say (⏏42 but (True, False).WHATCouldn't find final ')'; gave up at /tmp/c2wgkjEZZF line 1 (EOF):------> say (42 but (True, … | ||
colomon | n: say (42 but (True, False)).WHAT | ||
p6eval | niecza v18-1-gc86e3f0: OUTPUT«Int+{Bool},{Bool}()» | ||
dalek | ecza: ea3d97a | (Solomon Foster)++ | lib/CORE.setting: Add Mu.take. (Not 100% convinced it is a good idea, but it is in spec and roast and was dead easy to do.) |
15:40 | |
15:40
adu left
|
|||
ast: d1bba41 | (Solomon Foster)++ | S04-statements/gather.t: Fix test not to use .munch and unfudge it for Niecza. |
|||
pmichaud | I'm a little uncomfortable that the method form calls the sub form there, fwiw. (Not uncomfortable enough to say it ought to be changed... but it feels a little backward.) | 15:42 | |
GlitchMr | nr: print ('cake' does Int(42)).perl | ||
p6eval | niecza v18-1-gc86e3f0: OUTPUT«Unhandled exception: Cannot use 'does' operator with an immutable object at /home/p6eval/niecza/lib/CORE.setting line 1401 (die @ 5)  at /home/p6eval/niecza/lib/CORE.setting line 1340 (infix:<does> @ 8)  at /tmp/owdWM82qWp line 1 (mainline @ 3)  at … | ||
..rakudo 50b77f: OUTPUT«Cannot mix in non-composable type Int into object of type Str in sub infix:<does> at src/gen/CORE.setting:11057 in block <anon> at /tmp/4TOkNoHvHW:1» | |||
PerlJam | Ah ... good $localtime all. | 15:43 | |
Sorry about the trouble. (I read the scrollback already) | |||
pmichaud | np, we're fixing it :) | ||
I'm adding references to nqp-opcode.txt in the NQP.pir file, too. | |||
PerlJam promises not to be so bull-in-china-shop in the future :) | 15:44 | ||
GlitchMr | perl6: print 'e' == 'f' # I know that I should use eq or === | ||
p6eval | pugs: OUTPUT«1» | 15:45 | |
..rakudo 50b77f: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏e' (indicated by ⏏) in method Numeric at src/gen/CORE.setting:9309 in sub infix:<==> at src/gen/CORE.setting:2451 in sub infix:<==> at src/gen/CORE.setting:2451 in bloc… | |||
..niecza v18-1-gc86e3f0: OUTPUT«Unhandled exception: Cannot parse number: e at /home/p6eval/niecza/lib/CORE.setting line 1401 (die @ 5)  at /home/p6eval/niecza/lib/CORE.setting line 3473 (ANON @ 11)  at /home/p6eval/niecza/lib/CORE.setting line 3475 (NumSyntax.str2num @ 5)  at /ho… | |||
dalek | p: d63dec6 | pmichaud++ | / (2 files): Update notes about rejected nqp:: operations -- no functional changes. |
||
GlitchMr | Error messages are good enough :) | ||
perl6: package Cake | 15:46 | ||
p6eval | pugs: ( no output ) | ||
..niecza v18-1-gc86e3f0: OUTPUT«===SORRY!===Unable to parse package definition at /tmp/GQNd69W3sI line 1 (EOF):------> package Cake⏏<EOL>Parse failed» | |||
..rakudo 50b77f: OUTPUT«===SORRY!===Unable to parse $*PKGDECL definition at line 2, near ""» | |||
GlitchMr | perl6: package Cake; | ||
p6eval | pugs: ( no output ) | ||
..niecza v18-1-gc86e3f0: OUTPUT«===SORRY!===Semicolon form of package definition indicates a Perl 5 module; unfortunately, STD doesn't know how to parse Perl 5 code yet at /tmp/OLoHUC7sPW line 1:------> package Cake⏏;Parse failed»… | |||
..rakudo 50b77f: OUTPUT«===SORRY!===This appears to be Perl 5 code. If you intended it to be Perl 6 code, please use a Perl 6 style package block like "package Foo { ... }", or "module Foo; ...". at line 2, near ""» | |||
GlitchMr | Parsing Perl 5 code doesn't look hard if you want to also run it... but there may be problems like "wantarray". | 15:47 | |
colomon | About gather / take -- it seems like there are a lot of cases which are better documented in the spec than method .take, but don't appear in roast at all. Like take-rw. Or the value returned by take. | ||
dalek | kudo/nom: 0f9975c | jnthn++ | src/Perl6/World.pm: Fix typo spotted by diakopter++. |
||
GlitchMr | return wantarray ? @a : "@a" | 15:48 | |
Perl 6 doesn't have wantarray, am I right? | |||
tadzik | right | ||
jnthn | Right. | ||
It does context the opposite way around to Perl 5. | |||
GlitchMr | The way which makes more sense? | ||
TimToady | makes more sense for Perl 6 :P | 15:49 | |
GlitchMr | But this could be problem when dealing with Perl 5 code, but I'm sure that some way will be found. | ||
jnthn | Well, the Perl 6 way makes more sense when your language also has multiple dispatch :) | ||
15:50
cognominal left,
cognominal joined
|
|||
dalek | kudo/nom: 1886ee9 | pmichaud++ | src/core/Parcel.pm: Use nqp::shift($rpa) instead of $rpa.shift. |
15:51 | |
GlitchMr | paste.uk.to/52dd9a4d | 15:52 | |
This could be a problem... | |||
If Perl 5 code would work in Perl 6, wantarray would have to be implemented. | |||
diakopter | s/wantarray/lots/ | 15:53 | |
moritz | there could be syntax for explicitly calling a p5 routine in a certain context | ||
Juerd | p5list(...) | 15:55 | |
pmichaud | I suspect wantarray in that context would end up returning 'false' or throwing an exception :-) | ||
or, if we know that we're calling a p5-sub, then perhaps context becomes available again. | 15:56 | ||
(since there's no multisub involved) | |||
just speculatin | 15:57 | ||
GlitchMr | perl6: print (* * *)(3, 4) | 15:58 | |
p6eval | pugs: OUTPUT«*** Cannot cast from VNum Infinity to VCode (VCode) at /tmp/p6MsxpKrYy line 1, column 7 - line 2, column 1» | ||
..rakudo 50b77f, niecza v18-1-gc86e3f0: OUTPUT«12» | |||
moritz | rn: print (* * *)(3, 4) | 15:59 | |
p6eval | rakudo 50b77f, niecza v18-1-gc86e3f0: OUTPUT«12» | ||
Juerd | wantwantarray | ||
pmichaud | jnthn: (binder/types.c) I've been thinking that we might use QRPA_is_list() (or some other global function) throughout rather than constantly looking up qrpa_id and doing a test for == qrpa_id and == enum_class_ResizablePMCArray | ||
GlitchMr | Why * is used for that anyways | 16:00 | |
pmichaud | I'm fine if we call it nqp_islist(), too. | ||
jnthn | pmichaud: +1 | ||
GlitchMr | But well, ok, $ would be too confusing | ||
$ * $ would confuse everybody | |||
16:00
nwc10 left
|
|||
pmichaud | GlitchMr: "*" is often used in a "wildcard" sense | 16:01 | |
e.g., in filename globs and the like | |||
so it somewhat makes sense as the marker for "Whatever" | |||
GlitchMr | Single * is whatever | ||
But when connected to some operator, it's closure | |||
pmichaud | it's actually a WhateverClosure :) | 16:02 | |
rn: say (* * *).WHAT | |||
p6eval | rakudo 50b77f: OUTPUT«WhateverCode()» | ||
..niecza v18-2-gea3d97a: OUTPUT«{ ... }» | |||
pmichaud | er, WhateverCode. Whatever. :) | ||
GlitchMr | It reminds me Python's lambda keyword... except more simple to use. | 16:03 | |
And less flexible, but if you want flexibility there is sub {} and -> {} | |||
And of course, $^a | |||
TimToady | nr: gist.github.com/2847343 | 16:05 | |
p6eval | rakudo 50b77f: OUTPUT«Cannot call 'push'; none of these signatures match::(Any:U \$self, *@values, Mu *%_) in method push at src/gen/CORE.setting:1169 in block <anon> at /tmp/0067Ejdx1Q:6 in method reify at src/gen/CORE.setting:5045 in method reify at src/gen/CORE.setting:4940… | ||
..niecza v18-2-gea3d97a: OUTPUT«[[1, 2], [], [3, 4]][[1, 3], [], [2, 4]][[1, 4], [], [2, 3]][[2, 3], [], [1, 4]][[2, 4], [], [1, 3]][[3, 4], [], [1, 2]]» | |||
GlitchMr | niecza: paste.uk.to/52dd9a4d | ||
p6eval | niecza v18-2-gea3d97a: OUTPUT«===SORRY!===Confused at /tmp/vRp9bOTtNq line 1:------> http⏏://paste.uk.to/52dd9a4dUndeclared routine: 'http' used at line 1Parse failed» | ||
GlitchMr | ok, expected :P | ||
It's not possible to implement every single pastebin ever invented | 16:06 | ||
dalek | kudo/nom: 6365270 | jnthn++ | src/core/operators.pm: Make let/temp cope sanely with temp'ing/let'ing the same variable twice. |
16:07 | |
pmichaud | afk, errands | 16:08 | |
16:08
fgomez left
|
|||
dalek | ast: 38cc5b7 | diakopter++ | S04-blocks-and-statements/temp.t: test recursive nested and multiple temps; rakudo will need these fudged unless jnthn++ fixes them soon |
16:08 | |
ast: c3b1c0e | diakopter++ | / (3 files): Merge branch 'master' of git://github.com/perl6/roast |
|||
ast: 4f873a6 | diakopter++ | S04-blocks-and-statements/temp.t: increment plan twice |
16:09 | ||
diakopter | rn: gist.github.com/2853248 | 16:11 | |
p6eval | niecza v18-2-gea3d97a: OUTPUT«ok 1 - recursive nested temps are restored properlyok 2 - multiple temps in the same scope are restored properly» | ||
..rakudo 50b77f: OUTPUT«not ok 1 - recursive nested temps are restored properly# got: '3'# expected: '1'not ok 2 - multiple temps in the same scope are restored properly# got: '2'# expected: '1'» | |||
16:12
jaldhar left
16:15
fgomez joined
16:17
GlitchMr left,
replore_ left
16:20
aesundstrom joined
|
|||
diakopter | moritz++ nr|rn | 16:22 | |
16:25
spider-mario joined
16:26
Vlavv_ joined
16:30
aesundstrom left
|
|||
TimToady | diakopter: jnthn's patch appears to fix test 2 but not test 1 | 16:38 | |
diakopter | oh | 16:40 | |
16:40
daxim left
|
|||
jnthn | They're separate issues. | 16:41 | |
I suspect the recursion one is actually about LEAVE phasers more generally too. | |||
16:53
not_gerd joined
|
|||
not_gerd | jnthn: my cleanup branch got finally merged, so no mor --intval="long long" on Windows | 16:54 | |
jnthn | \o/ | 16:57 | |
not_gerd++ | |||
17:02
spaceships joined
|
|||
JimmyZ | not_gerd++ indeed | 17:03 | |
not_gerd | JimmyZ++ for making the merge happen | 17:04 | |
JimmyZ | github++, click merge button is very easy :P | 17:05 | |
17:07
JimmyZ left
17:16
Chillance joined
|
|||
sorear | good * #perl6 | 17:30 | |
phenny | sorear: 05:47Z <diakopter> ask sorear try n: ++temp .say | ||
17:30
majrmovies joined
17:31
brrt joined
|
|||
pmichaud | back from errands, lunch | 17:32 | |
dalek | kudo/qrpa: e2a9ed3 | pmichaud++ | src/core/List.pm: Switch List.gimme to initialize $!items with QRPA. |
17:33 | |
kudo/qrpa: 4fc8fa0 | pmichaud++ | src/core/Parcel.pm: Use nqp::shift($rpa) instead of $rpa.shift(). |
17:34 | ||
17:43
colomon joined
|
|||
sorear | o/ colomon, majrmovies | 17:44 | |
colomon | \o | ||
sorear: what do you think of the idea of a Mu.take method? | 17:49 | ||
dalek | p/altnfa: 32d6a49 | jnthn++ | src/QRegex/P6Regex/Actions.nqp: Start saving per-alternation NFAs. |
17:50 | |
p/altnfa: 1aa896e | jnthn++ | src/QRegex/NFA.nqp: Split merging part of mergesubrules out into mergesubstates. |
|||
p/altnfa: 72fc431 | jnthn++ | src/QRegex/Cursor.nqp: Sketch out alternation NFA running. |
|||
sorear | colomon: it's a little strange to have Mu.take but not Mu.return | 17:52 | |
17:52
birdwindupbird joined
|
|||
sorear | colomon: but I see nothing technically wrong with it | 17:52 | |
colomon | sorear: logical, but I fear it just means even more Mu methods! ;) | ||
sorear | Mu methods are cheap | 17:53 | |
colomon | easy to implement, for sure, but they do pollute the entire P6 class namespace once they are there. | 17:54 | |
17:55
kaare_ joined
|
|||
sorear | so do Cool and Any methods, and we have a million of those. | 17:56 | |
colomon | Cool methods only pollute cool classes; by default user-defined classes don't get them. | ||
sorear: btw, what's your take on Mu.take-rw? (It's not implemented or spec'd anywhere so far as I know.) | 17:57 | ||
actually, gotta go for a few minutes, but will backlog | |||
17:58
colomon left
|
|||
sorear | Also not technically problematic. | 17:58 | |
18:05
majrmovies left
|
|||
pmichaud | down to two failing spectest files, both likely due to changes in nom not folded into the qrpa branch. | 18:08 | |
18:08
colomon joined,
majrmovies joined
|
|||
dalek | kudo/qrpa: 80d406d | pmichaud++ | src/ (3 files): QRPA: Update binder to know about QRPA as well as RPA. now to spread it more widely throughout List and ListIter and see if anything breaks. |
18:10 | |
awwaiid | pmichaud++ # failing (less) spectests ftw | ||
18:16
am0c joined
18:17
mtk left,
thou left
|
|||
dalek | kudo/qrpa: 2ef6948 | pmichaud++ | src/core/List (2 files): Migrate more nqp::list -> nqp::qlist for testing. |
18:20 | |
ecs: 8f29a46 | diakopter++ | S02-bits.pod: 5 |
18:22 | ||
18:23
thou joined
18:27
mtk joined
18:28
thou left
18:31
adu joined
18:33
thou joined
18:34
cognominal left
18:35
cognominal joined
|
|||
dalek | p/altnfa: 51c3726 | jnthn++ | src/ops/nqp.ops: Add an op for pushing a label onto a label stack. |
18:38 | |
p/altnfa: fbb1811 | jnthn++ | src/QRegex/Cursor.nqp: Use NFA run results to push marks for possible branches onto the bstack. |
|||
p/altnfa: c774ec8 | jnthn++ | src/QAST/Compiler.nqp: Update QAST::Compiler's alt handling to use LTM. The NQP it builds will actually parse enough to try an 'aa' ~~ /a|\w+/ style example and get it right! However, it chokes right after a semicolon...thus failing all the tests. |
|||
18:38
cognominal left
18:40
cognominal joined
|
|||
brrt | or, how do i call a VTABLE something on a PMC? | 18:40 | |
because i can call methods | |||
18:41
thou left
|
|||
sorear | channel? | 18:41 | |
brrt | very much so | ||
sorry :-) | |||
pmichaud | huh. Just switching to use qrpa makes things a bit slower (0.05sec on $N == 100000) than before | 18:44 | |
that's.... a little surprising. maybe something pathological going on somewhere | |||
pmichaud tries with $N == 1000000 | 18:45 | ||
jnthn | That's a little surprising. | ||
pmichaud | yes, for $N == 1000000 I get 13.278 (nom) versus 13.964 (qrpa) | 18:46 | |
18:46
thou joined
|
|||
pmichaud | yeah, the more things I convert to QRPA, the slower the 1..1000000 test gets. Something must be slowing things down somewhere. | 18:56 | |
I wonder if it's the GET_ATTR_* stuff being slower | |||
18:58
snearch left
|
|||
pmichaud | or maybe new $P0, "QRPA" takes significantly longer than new $P0, "ResizablePMCArray" | 18:58 | |
18:59
alester joined
|
|||
pmichaud | new $P0, "QRPA" seems faster than new $P0, "ResizablePMCArray" | 19:02 | |
(about 3%) | |||
so.... | |||
get_pmc_keyed(_int) is slower | 19:03 | ||
that would explain it. | 19:04 | ||
19:06
not_gerd left
19:22
thou left
19:23
kaare_ left
19:28
thou joined
|
|||
pmichaud | gist.github.com/2854610 # get_pmc_keyed_int speed, qrpa versus rpa | 19:32 | |
now to figure out why | |||
jnthn back | 19:36 | ||
r: say 0.3 / 0.42 | 19:37 | ||
p6eval | rakudo 636527: OUTPUT«0.714286» | ||
pmichaud | gist.github.com/2854662 # qrpa code | 19:39 | |
gist.github.com/2854676 # rpa code | |||
I'm thinking it _has_ to be the GET_ATTR_* that slows things down :-/ | 19:41 | ||
jnthn | I...right. | ||
But that's easy to circumvent. | |||
pmichaud | well, in this case, yes. :) | ||
jnthn | At the start just do | ||
pmichaud | are we using GET_ATTR_* in some of our other classes? | ||
s/classes/PMCs? | |||
jnthn | Parrot_QRPA_attributes *stuff = PARROT_QRPA(SELF); | ||
And then look at stuff | |||
Probably | |||
Though they probably ain't so hot-path as this. | 19:42 | ||
pmichaud | we might want to adjust those too, if there's a 33% performance difference to be had | ||
jnthn | True. | ||
Hm. LexPad/LexInfo. :) | |||
pmichaud | exactly what I was thinking. | ||
anyway, let me adjust this and see if I get the performance back, first :) | |||
diakopter | sorry for the dumb/naive question - why are they ATTR? does that just make them end up being a part of a struct? | 19:43 | |
pmichaud | well, not "just" | ||
jnthn | diakopter: It checks if we're really look at an object subclass of a PMC and then delegates to getattribute or something if so... | ||
In the common case it's just overhead of flag checking. | 19:44 | ||
pmichaud | ...but that overhead seems overbroad here | ||
jnthn | Plus we're doing more pointer chasing than we need to, probably. | ||
pmichaud: You're paying for it 3 times, in an otherwise rather cheap routine. | |||
pmichaud | jnthn: yeah, I guess so. | 19:45 | |
afk for a bit | |||
diakopter | surely there's a way to get at the attribute without going through those checks | 19:46 | |
pmichaud | diakopter: yes, what jnthn++ posted above. But that doesn't work for inherited PMC types | ||
jnthn | diakopter: Yes, that's what I just suggested :) | ||
pmichaud | however, I don't expect anything to inherit from QRPA, so I'll remove the checks. | ||
jnthn | pmichaud: We're never gonna inherit from this using Parrot's inheritance. :) | ||
pmichaud: And if we were, how would storing a pointer to a C array ever work out? | 19:47 | ||
diakopter | I wasn't suggesting the idea; I knew that jnthn already suggested it. I was wondering whether there was already a facility in parrot for doing so. | ||
pmichaud | diakopter: well, the PARROT_QRPA(self) is provided by Parrot. | ||
so then I can just do stuff->elems, stuff->start, etc. | 19:48 | ||
and PARROT_QRPA(self) is also quite cheap. | |||
diakopter | oh | ||
pmichaud | anyway, afk and I'll adjust things when I get back. | 19:49 | |
diakopter | jnthn: the semicolon thing is weird | 19:52 | |
jnthn | Ain't it just... | ||
Well, comparing --rxtrace of the new and old is interesting :) | 19:56 | ||
19:57
brrt left
|
|||
jnthn | Firstly because we eliminate a few more choices earlier on | 19:57 | |
But for debugging this mostly because master in eat_terminator doesn't end up calling terminator, and altnfa does. | |||
oh. | 19:58 | ||
terminator doesn't parse a ;, it just checks we are before one. | 19:59 | ||
diakopter | but eat_terminator eats one | ||
jnthn | Did when we considered the branches in order. | 20:00 | |
diakopter | oh yeah. | ||
jnthn | We're meant to tie-break on that though... | ||
oh, I get I'm not... | 20:01 | ||
*bet | |||
jnthn tries something | |||
20:03
Teratogen left
|
|||
diakopter | the ? in eat_terminator and those in terminator: are redundant | 20:03 | |
jnthn | I think they're deliberate | 20:04 | |
Oh, I see what you mean... | |||
We only need one of them. | |||
diakopter | (not that that would cause the problem) | ||
jnthn | Right | ||
diakopter | std has <?before ')' | ']' | '}' > | ||
it doesn't have a ?; | 20:05 | ||
it must be getting MARKED | 20:08 | ||
eh | |||
in !alt_nfa | 20:13 | ||
why is the increment $fate line before the next line | |||
jnthn | diakopter: Following what happens in !protoregex_nfa | 20:15 | |
20:15
fibo joined
20:16
thou left
|
|||
jnthn | ah, what the heck... | 20:18 | |
Calling value | |||
Pushing fate 14140840 - 1 | |||
...the same branch twice? o.O | |||
20:21
thou joined
|
|||
geekosaur so wants to read that as "tempting fate..." | 20:22 | ||
pmichaud | okay, so now I have | 20:24 | |
gist.github.com/2854928 # new get_pmc_keyed_int for QRPA | |||
and with that code I get | 20:25 | ||
gist.github.com/2854930 | |||
:-( | |||
diakopter | jnthn: try this: gist.github.com/2854944 | 20:26 | |
jnthn | r: say 0.32 / 0.41 | 20:27 | |
p6eval | rakudo 636527: OUTPUT«0.780488» | ||
jnthn | Hm. No real improvement... | ||
20:28
thou left
|
|||
pmichaud | which tells me that the speed loss must be from something like dispatch to a dynpmc, or.... I dunno. | 20:28 | |
jnthn | That seems strange. | ||
I mean, I can't imagine why the dispatch to a v-table would be any slower. | |||
jnthn guesses it can't be any difference in optimization level when compiling... | 20:29 | ||
pmichaud | I can't either. I can't imagine any reason that there'd be a 33% difference between the two. | ||
oh, wait | |||
maybe | |||
jnthn | I was gonna ask what GC marking looks like, but just saw it...looks fine. | ||
pmichaud | my minimum allocation might be too small | 20:30 | |
just a sec | |||
diakopter | jnthn: note the example I gave | ||
pmichaud | (also doesn't seem likely, but perhaps it's a alignment issue, or ... I dunno.) | ||
also, both of these arrays have exactly one element | 20:31 | ||
pmichaud@kiwi:~/p6/rakudo-qrpa$ make dynext/perl6_group.so && install/bin/parrot z.pir | 20:32 | ||
jnthn | diakopter: yeah but the NQP I get out ain't good enough to compile it...so I'd have to run the stage 1 on it...trying to fathom what on earth is going on with the NFA for value at the moment though... | ||
pmichaud | make: `dynext/perl6_group.so' is up to date. | ||
qrpa[$I0] = 0.459558010101318 rpa[$I0] = 0.304605960845947 | |||
diakopter | jnthn: mine compiles it | ||
20:33
thou joined
|
|||
jnthn | pmichaud: Is it really re-building each time there? | 20:35 | |
jnthn notes the "is up to date" | |||
Doesn't that normally mean "I did nothing"? | |||
pmichaud | I just re-ran it a second time. | ||
yes, it was compiled correctly. | |||
jnthn | OK. | ||
pmichaud | gist.github.com/2854999 # the full compile and results | 20:36 | |
diakopter | jnthn: your nqp won't run my gist? | ||
20:37
skids left
|
|||
jnthn | diakopter: No, due to local patches | 20:37 | |
diakopter | ohh; it reproduces the problem just fine in mine from that branch | ||
jnthn: commenting out the ; line in terminator: makes nqp pass the whole test suite except 1 file | 20:39 | ||
jnthn | diakopter: Which line exactly | 20:40 | |
? | |||
The | |||
| ';' | |||
one? | |||
diakopter | no | ||
the ; in terminator: | |||
token terminator:sym<;> { <?[;]> } | |||
to make it more like std | |||
and it parses most of the one file it fails on | 20:41 | ||
20:41
PacoAir left
|
|||
diakopter | I think that indicates it's a problem with <? | 20:42 | |
jnthn | No, I think the problem is tie-breaking fail | 20:44 | |
The <?terminator> and ';' have equal length prefixes. | 20:45 | ||
diakopter | <?terminator>'s prefix should be the empty string | ||
jnthn | But ';' should win by two different tie-breaking rules. | ||
I don't think it works like that. A zero-width assertion counts, but terminates LTM beyond it. | 20:46 | ||
The ; literal, however, should win by virtue of (a) being first, but also (b) by being a longer *literal* prefix. | 20:47 | ||
diakopter | it doesn't make sense to me that a zero-width assertion like <? would count what it sees | 20:48 | |
pmichaud | consider / <?[abc]> . / | ||
you definitely want the [abc] to be part of the ltm | |||
if it doesn't count at all, then you get no benefit | 20:49 | ||
20:49
BlueT_ joined
20:50
thou left
|
|||
diakopter | jnthn: this is interesting. the outcome differs depending on whether I add --rxtrace | 20:56 | |
20:56
thou joined
|
|||
pmichaud | if there's an unbroken tie, different results can occur just depending on hash entry ordering (i.e., somewhat random) | 20:57 | |
jnthn | oh, I think it is getting ordering right already for tie-breaking... | ||
diakopter | pmichaud: someday you'll want to look at the mess I made of quant in NFA.nqp and do it right.. | 21:00 | |
21:01
thou left
|
|||
diakopter | although I fiddled with it for many hours trying to make it more eficient and/or written more elegantly. any change I made would break some rakudo test somewhere, surprisingly. | 21:01 | |
pmichaud | diakopter: okay, I'll take a look sometime | 21:02 | |
jnthn: think the qpra slowness might be related to Parrot hll segregation somehow? (e.g., hll_map and friends?) | 21:04 | ||
21:05
bruges joined
|
|||
jnthn | pmichaud: hll_map would only have an effect when you create a new instance, iirc. | 21:05 | |
pmichaud | yeah, I'm grasping at straws here a bit | ||
21:06
birdwindupbird left
|
|||
jnthn | My profiler ain't crazily informative. | 21:08 | |
21:08
thou joined
|
|||
jnthn | oh, I don't have your other changes here, mind. | 21:09 | |
ah, they ain't pushed | |||
Oddly though, it puts a bunch of the cost on pmichaud@kiwi:~/p6/rakudo-qrpa$ cat z.pir | |||
.loadlib 'perl6_group' | |||
.sub 'main' :main | |||
.local int N | 21:10 | ||
.local num t0, t1 | |||
.local pmc p, q | |||
p = new "ResizablePMCArray" | |||
q = new "QRPA" | |||
$P0 = box 'abc' | |||
$I0 = 0 | |||
p[$I0] = $P0 | |||
q[$I0] = $P0 | |||
N = 10000000 | |||
arrrgh"! | |||
It puts a bunch of the cost on: | |||
return slots[start + pos]; | |||
Like, 10% of runtime on the one line | |||
diakopter | what about on the same line in RPMCA | 21:11 | |
pmichaud | I can test it without the + | 21:12 | |
jnthn | The inclusive samples found in the profiler shows the same kinda difference as we're measuring in wallclock time. | 21:13 | |
diakopter | pmichaud: if you double N in your test, do the times double? | 21:14 | |
jnthn | oh, this profile doesn't really pikc out the line with + one either | ||
It does pick out GETATTR_QRPA_elems(interp, _self, elems); though | 21:15 | ||
pmichaud | pmichaud@kiwi:~/p6/rakudo-qrpa$ make dynext/perl6_group.so && install/bin/parrot z.pir | ||
make: `dynext/perl6_group.so' is up to date. | |||
qrpa[$I0] = 0.826143980026245 rpa[$I0] = 0.635416030883789 | |||
yes, the times double. | |||
oh, and this one is *without* the cost of the addition | 21:16 | ||
i.e. | |||
return qrpa->slots[pos]; | |||
(assuming that qrpa->start is zero, which it should be in this test) | |||
I'll fix the PMC code and push | 21:17 | ||
dalek | kudo/qrpa: 138fcb2 | pmichaud++ | src/pmc/qrpa.pmc: QRPA: Try to make get_pmc_keyed_int as fast as RPA's, fail so far. |
21:18 | |
jnthn | pmichaud: OK, I'm confused... | 21:19 | |
I just did a patch locally and managed to get my profiler to show 'em equal | |||
21:19
bacek left
|
|||
jnthn | Well, within 5% or so of each other anyway | 21:19 | |
gist.github.com/2855195 | 21:20 | ||
Hm, your patch looks...just the same. | |||
pmichaud: Crazy. My patch and your seemingly identical one make different amounts of difference. | 21:21 | ||
I'd have thought yours was better... | 21:22 | ||
pmichaud | rpa[$I0] = 0.61777400970459 | ||
qrpa[$I0] = 0.821776866912842 | |||
(after reversing them) | |||
jnthn: can I see your patch, ooc? | |||
jnthn | gisted it several lines ago :) | 21:23 | |
< jnthn> gist.github.com/2855195 | |||
pmichaud | yeah, our patches look the same to me | ||
jnthn | Semantically | ||
Mine reads all of the things from the struct together at the top | |||
I wonder if that hits better with the cache, or there's some multi-word copy that can happen, or something... | 21:24 | ||
Or just pre-fetching. | |||
But you'd tend to think they'd all be on one cache line... | |||
diakopter | is the order of ->elems ->start ->slots relevant? | 21:25 | |
21:25
Telgalizer joined
|
|||
jnthn is curious if pmichaud gets closer results with his patch | 21:26 | ||
diakopter: ordering stuff in a struct can matter...but normally to get related stuff on a single cache line | 21:27 | ||
pmichaud | I can try it with the cache, yes. Although RPA doesn't do any such ordering/caching. | ||
i.e, RPA does the fetches in the middle of the function, not all-at-beginning | |||
jnthn | pmichaud: Yeah...it's a bit of a mystery. | 21:29 | |
pmichaud | gist.github.com/2855237 # with this version, I get | 21:30 | |
gist.github.com/2855240 | 21:31 | ||
jnthn | r: say 0.64 / 0.78 | ||
p6eval | rakudo 636527: OUTPUT«0.820513» | ||
jnthn | :S | ||
pmichaud | re-running it again gives | ||
rpa[$I0] = 0.714040040969849 | |||
qrpa[$I0] = 0.879395961761475 | |||
jnthn | Closer but still dunno if it's noise... | ||
r: say 0.71 / 0.88 | |||
diakopter | you can put the 2nd comparison of pos with 0 inside the block of the first comparison | 21:32 | |
p6eval | rakudo 636527: OUTPUT«0.806818» | ||
pmichaud | it doesn't seem like noise. qrpa is consistently slower than rpa | ||
jnthn | pmichaud: No, I mean the difference between my patch and your one. | ||
pmichaud | oh, yeah. | ||
that's probably noise-ish. | |||
jnthn | pmichaud: On a slightly different topic: after we match an alternation, do I need to clear the backtracking stack of the things I pushed? | 21:33 | |
diakopter | the second comparison can only be true if the first comparison was true | ||
jnthn | pmichaud: 'cus I'm not and I'm wondering if that's having...consequences... | ||
pmichaud | diakopter: yes, that's a good point but I was also following the structure of the RPA code there | ||
jnthn: you clear the backtracking if ratcheting is on | |||
jnthn | pmichaud: OK, and if I am failing to do so...I may get oddnes? :) | ||
pmichaud | i.e., you need a mark_commit | ||
jnthn | After the end label of the alternation, yes? | 21:34 | |
pmichaud | yes | ||
(mark_commit clears backtracking up to a known mark point) | |||
diakopter | pmichaud: maybe qrpa is 20-30% slower for accesses but loads faster for shift/unshift/pop/push | ||
jnthn | ah, so I push a mark before any alternation work, then mark_commit after... | 21:35 | |
pmichaud | so, you keep track of the first mark you push, and mark_commit to that mark when you exit the alternation | ||
or yes, you can push a mark rather than keep track of the first one | |||
mark_commit discards backtracking up to a mark, but keeps any captures that may have occurred | |||
jnthn | Well, we don't always know the first one, 'cus that's what the LTM is dynamically deciding :) | 21:36 | |
diakopter | pmichaud: also, the third comparison (pos >= elems) can be put in an else block of the first comparison | ||
but you have tested negative accesses. :) | |||
pmichaud | diakopter: also a good point, I'm still wondering why the difference though. | 21:37 | |
I'll try those changes and see if they affect the timing. | |||
with those changes | 21:39 | ||
rpa[$I0] = 0.643483877182007 | |||
qrpa[$I0] = 0.770877122879028 | |||
:-( | |||
diakopter: I suspect that qrpa is loads faster for shift/unshift/pop/push. But since get_pmc_keyed_int is *the* most common operation on any of our arrays (by far more common than the others).... well, it seems like fixing the 25% problem is pretty high priority first before going that path | 21:40 | ||
diakopter | is get_pmc_keyed_int dispatched any differently for non-built-in pmcs? | 21:41 | |
jnthn | Shouldn't be...it's just a call thorugh a function pointer, afaik | 21:42 | |
pmichaud | yes, this is all very disappointing somehow :-| | 21:44 | |
21:45
fibo left
|
|||
jnthn is running out of guesses | 21:45 | ||
21:47
b1rkh0ff left
|
|||
PerlJam stubbornly clings to his extra deref idea. | 21:47 | ||
jnthn | Unless it really is just calling across the compilation unit boundary. | 21:48 | |
pmichaud | PerlJam: I think the number of derefs is effectively the same between the two. | ||
21:48
am0c left
|
|||
jnthn | www.gentoo.org/proj/en/hardened/pic-guide.xml | 21:48 | |
PerlJam | jnthn: is there a way to test that? Just make QRPA built-in? | ||
21:48
anon___ joined
|
|||
pmichaud | oh, I suppose I could try it in pure parrot, yes. | 21:49 | |
that would be interesting. | |||
and not hard. | |||
brb, need dp | |||
diakopter | mmm in Texas you can get cane sugar Dr. Pepper | ||
so much better. | 21:50 | ||
I haven't had that in 10 years | |||
pmichaud | indeed we can and do. And I live about 3 miles from Dr Pepper HQ | 21:51 | |
goo.gl/maps/Aw8d :-) | 21:52 | ||
21:56
jtpalmer joined
21:59
anon___ left,
b1rkh0ff joined
22:02
Gothmog_ joined
|
|||
pmichaud | oh! perhaps the headerizer makes a difference here somewhere? | 22:12 | |
rpa has been headerized, qrpa hasn't (afaik) | |||
jnthn | hmmm | 22:14 | |
It adds a bunch of annotations. | |||
pmichaud | I'm wondering if those annotations tell gcc about optimization possibilities (or prevent certain checks) | ||
anyway, that's another difference between the two | 22:15 | ||
jnthn | .u 119 104 105 | ||
phenny | jnthn: Sorry, no results for '119 104 105'. | ||
jnthn | oops | ||
22:28
thou left
|
|||
diakopter | pmichaud: did you try building parrot with qrpa as part of its built-ins? | 22:33 | |
22:34
thou joined
22:36
whiteknight joined,
fridim_ joined,
majrmovies left,
whiteknight is now known as Guest67605
22:37
mdmkolbe joined
|
|||
dalek | p/altnfa: ddf6d6b | jnthn++ | src/NQP/Grammar.pm: eat_terminator needs sequential alternation (STD has it that way too; vaguely reassuring that we also need it now we have LTM for alternations). |
22:45 | |
p/altnfa: bb0350f | jnthn++ | src/QAST/Compiler.nqp: Don't leave leftovers on the bstack after an alternation. |
|||
p/altnfa: dc8561c | jnthn++ | src/QRegex/ (2 files): We sometimes accidentally lost alternation branches if we could not build an NFA for them. Make sure we don't do this. |
|||
sergot | good night! o/ | 22:46 | |
22:46
sergot left
22:48
adu left
22:51
skids joined,
alester left
|
|||
pmichaud | diakopter: I'm going to add qrpa to parrot and see what happens; haven't done that yet and may be leaving shortly for the evening | 22:55 | |
but yes, I'll do that next. | |||
jnthn | pmichaud: NQP passes all t/nqp now with altnfa | 22:56 | |
pmichaud: A copule of tests in t/qregex fail but I think they may be wrong | |||
pmichaud | jnthn: that's entirely possible | ||
spider-mario | what is that branch supposed to improve? | ||
I don’t know much about nqp :/ | 22:57 | ||
pmichaud | spider-mario: it gets alternations to use "real" ltm semantics | ||
spider-mario | ok :) | ||
pmichaud | previously the regex engine would not recognize that a | aaa should prefer 'aaa' over 'a' | ||
spider-mario | oh | ||
thanks | 22:58 | ||
pmichaud | jnthn++ # altnfa branch working | 22:59 | |
diakopter | jnthn++ | ||
spider-mario | jnthn++ | ||
jnthn | in NQP now, for example: | 23:03 | |
> say('aa' ~~ /a|\w+/) | |||
aa | |||
> say('aa' ~~ /\w+|a/) | 23:04 | ||
aa | |||
...not cheating ;) | |||
diakopter | nr: my $b = 4; repeat while $b-- { $^a.defined } | 23:12 | |
p6eval | niecza v18-2-gea3d97a: OUTPUT«Unhandled exception: No value in ANON available for parameter $a at /tmp/h66JwHxDX8 line 1 (mainline @ 6)  at /home/p6eval/niecza/lib/CORE.setting line 3911 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3912 (module-CORE @ 558)  at /home/… | ||
..rakudo 636527: ( no output ) | |||
diakopter | jnthn: which do you deem correct, so I can fudge the proper one | ||
commute to coffeeshop& | 23:14 | ||
spider-mario | good night \o | 23:15 | |
23:15
spider-mario left
|
|||
pmichaud | I'll keep the discussion mainly on #parrot for now, but when qrpa is compiled into parrot as a builtin, I get | 23:16 | |
rpa[$I0] = 0.658792972564697 | |||
qrpa[$I0] = 0.609246969223022 | |||
jnthn | whoa | 23:17 | |
pmichaud | so, it looks like something related to dynpmc may be the culprit. | ||
I'll create a dynpmc version of qrpa in my parrot repo and then we can test the three side-by-side | |||
but that will have to be later or tomorrow --w e're going out for the evening here. bbl | |||
jnthn | pmichaud++ | ||
Have a nice evening o/ | |||
dalek | kudo/altnfa: f335c7f | jnthn++ | src/Perl6/Grammar.pm: Update a couple of places in the grammar that need || insted of |. |
23:18 | |
kudo/altnfa: fb45990 | jnthn++ | src/Perl6/Grammar.pm: Add ident so we can LTM on it. |
|||
jnthn | I've had enough for now, but that branch needs some work. | 23:19 | |
Current failure is line 80 of CORE.setting compilation. It chooses the wrong branch in variable, it seems. | 23:20 | ||
(token variable, that is) | |||
23:22
spaceships left,
spaceships joined
23:25
fridim_ left
|
|||
diakopter goes to work on altnfa | 23:39 | ||
jnthn goes to bed | 23:43 | ||
'ngiht o/ | |||
diakopter | o/ | ||
23:45
stephenlb joined
|
|||
diakopter | hrm. compiling CORE.setting is taking forever. probably looping. | 23:48 | |
PerlJam | CORE.setting always takes forever | 23:51 | |
diakopter | not this long | ||
starting it over ,timing it this time | 23:52 | ||
it's worrisome b/c jnthn said it fails on line 80 of CORE.setting, but surely it gets past line 80 in 5 minutes | 23:57 |