»ö« 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. |
|||
00:02
woolfy left
00:03
Vico_Wu1 joined,
berekuk left,
Vico_Wu left
00:06
berekuk joined,
xenoterracide_ joined
00:07
xenoterracide left
|
|||
timotimo | it seems like inspecting lexical variables for native-int-ness is somehow not working the same way on jvm as it is on parrot | 00:11 | |
BenGoldberg | rn: (^Inf).infinite.say | ||
camelia | niecza v24-88-g1f87209: OUTPUT«Unhandled exception: Unable to resolve method infinite in type Range at /tmp/8Uh2jGLaxf line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4579 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4580 (module-CORE @ 576)  at /… | ||
..rakudo 59f060: OUTPUT«True» | |||
timotimo | nqp-jvm: say(nqp::objprimspec(int)) | ||
camelia | nqp-jvm: OUTPUT«1» | ||
00:11
xenoterracide_ left
|
|||
BenGoldberg | Is there (will there be) an official way to test if a list is infinite? | 00:12 | |
timotimo | hm, is .infinite not official? | ||
perlcabal.org/syn/S07.html#The_.infinite_method - it's specced at least. | 00:13 | ||
BenGoldberg | Oh | 00:14 | |
00:14
nugged joined
|
|||
BenGoldberg | nevermind, then :) | 00:14 | |
r: say Mu | 00:15 | ||
camelia | rakudo 59f060: OUTPUT«(Mu)» | ||
BenGoldberg | r: say gather { }.infinite | ||
camelia | rakudo 59f060: OUTPUT«Nil» | ||
timotimo | oh. nope, it was just lines that should have been removed still being there | ||
BenGoldberg | The spec says it should return Mu if it's unknown whether the list is infinite | 00:16 | |
00:16
grondilu left
|
|||
timotimo | the lists spec is headed for a rewrite by pmichaud | 00:16 | |
but he's pretty swamped with other work :( | |||
no, hold on. i think it's S06 instead? | 00:17 | ||
no, er ... | |||
why is s07 so short? i remember it being much longer! | |||
00:18
colomon joined,
woolfy joined
|
|||
timotimo | i love the way the jvm just parses the core setting 3x as fast as parrot | 00:18 | |
colomon | it does? | 00:19 | |
00:19
nugged left
|
|||
timotimo | just 40 seconds for stage parse on my computer | 00:19 | |
segomos | are sockets good to go in jvm? | ||
timotimo | (and 4 seconds for the optimizer) | ||
not yet, but there's a bit of progress | |||
oh | 00:27 | ||
OH! | |||
mega facepalm engage | |||
i was changing op.name instead of op.op all the time | 00:28 | ||
that would really have 0 effect on performance | |||
[Coke] | updated gist.github.com/coke/5879701 , it's been a while | 00:29 | |
slavik | jnthn: arnsholt: sorry for bugging, but NativeCall can be used in a method, right? (specifically, the declaration of a sub from a library), for example: git_repository_open only makes sense in the constructor. | ||
also, how can I handle a pointer to a pointer? | 00:30 | ||
timotimo | github.com/arnsholt/Net-ZMQ/blob/m.../Socket.pm - here's some example usage of nativecall being used together with methods | 00:31 | |
00:31
dayangkun joined
|
|||
slavik | ty | 00:31 | |
timotimo | i'd try CArray[CArray[something]] but what do i know ;) | ||
slavik | timotimo: I am wondering if I can put the my sub line inside a method | ||
timotimo: thanks, that gives me something to go on :) | |||
timotimo | i think you should be able to no-prob | ||
slavik | timotimo: I owe you a GOOD beer. :) | 00:32 | |
timotimo | haha, no way :) | ||
slavik | how come? | ||
00:33
pmurias left,
benabik left
|
|||
timotimo | it's nothing ;) | 00:36 | |
slavik | :( | 00:37 | |
00:37
xinming left
00:40
xinming joined,
colomon left
|
|||
BenGoldberg | If jvm runs so much faster than parrot... how silly would it be to use jvm-rakudo to cross-compile to parrot-rakudo? | 00:43 | |
00:43
benabik joined
00:44
colomon joined
|
|||
colomon | timotimo: hmmm, parsing is 72s versus 162s for me, so closer to 2x than 3x faster here. Still a substantial improvement! | 00:44 | |
timotimo | i have 40 vs ~110 | ||
slavik | BenGoldberg: I don't see the point of something like that | 00:47 | |
BenGoldberg | Speed? | ||
timotimo | i see no more obvious and dumb mistakes in my nqp optimizer, but i also see no performance change whatsoever :( | ||
slavik | timotimo: give it some drugs :P | 00:48 | |
timotimo: do you know what { * } specifically means when importing stuff from libs? {} is a block, but what is * in that context? | 00:49 | ||
timotimo | {*} has something to do with protos | ||
if you have a proto method/sub foo() {*} it means that it does no special dispatching | |||
it is then also called an "onlystar proto" | |||
in other contexts, it can be interpreted in any way | 00:50 | ||
r: sub foo() { * }; say &foo.onlystar; | |||
camelia | rakudo 59f060: OUTPUT«False» | ||
timotimo | oh? | ||
r: proto sub foo() { * }; say &foo.onlystar; | |||
camelia | rakudo 59f060: OUTPUT«True» | ||
timotimo | right. | ||
BenGoldberg | r: *.say | ||
timotimo | only for protos you see | ||
camelia | rakudo 59f060: ( no output ) | ||
benabik | r: sub foo() { * }; say foo, foo.WHAT | ||
camelia | rakudo 59f060: OUTPUT«*(Whatever)» | ||
BenGoldberg | r: *.gist.say | ||
camelia | rakudo 59f060: ( no output ) | ||
BenGoldberg | r: *.WHAT.say | 00:51 | |
camelia | rakudo 59f060: OUTPUT«(Whatever)» | ||
benabik | BenGoldberg: *.say creates a sub. | ||
timotimo | r: (*.gist.say).gist.say | ||
camelia | rakudo 59f060: ( no output ) | ||
BenGoldberg | my $a = *; $a.say | ||
r: my $a = *; $a.say | |||
camelia | rakudo 59f060: OUTPUT«*» | ||
BenGoldberg | :) | ||
timotimo | r: my $a := *.gist.say; say $a.WHAT; | 00:53 | |
camelia | rakudo 59f060: OUTPUT«(WhateverCode)» | ||
timotimo | r: my $a := *.gist.say; say $a(<hi there>); | ||
camelia | rakudo 59f060: OUTPUT«hi thereTrue» | ||
BenGoldberg | So that's like | ||
r: say(<hi there>.gist.say) | 00:54 | ||
camelia | rakudo 59f060: OUTPUT«hi thereTrue» | ||
timotimo | yes | ||
BenGoldberg | :) | ||
timotimo | does the codegen perhaps still build the coerce ops even though i annotated correct return types everywhere i could figure them out and turned add_n into add_i? | 00:55 | |
having any amount of coerce_n2i(add_n(corece_i2n(foo), coerce_i2n(bar))) in the code should cause performance decreases in my opinion :( | 00:56 | ||
maybe i'm chipping away at milisecond differences in the context of a program that runs for a minute | |||
BenGoldberg | Learning how dwim-y things work is fun :) | 00:57 | |
00:57
jeff_s1 left,
jeff_s1 joined
|
|||
BenGoldberg | Hmm... | 00:57 | |
Maybe you're optimizing the wrong part of the program? | 01:00 | ||
timotimo | i'm optimising any occurence of +, - and * in all stuff that's written in nqp across nqp and rakudo | 01:01 | |
at least if both arguments can be proven to be ints | |||
my debug output says i'm transforming quite a bunch of additions, subtractions (hardly any multiplications) | 01:02 | ||
benabik | I wouldn't expect optimizing math to make a big difference for parsing... I'd expect parse to be dominated by string operations and object creation. | ||
timotimo | it also does a bunch of cursor pushing and such | ||
BenGoldberg | Sure, but if those +, -, and * aren't called very often, or aren't in tight loops, then they're not that important overall... is there a profiler for nqp? | 01:03 | |
timotimo | and lots of loops are based on an integer loop var that gets +1'd | ||
there is one for rakudo, not sure if there's one for nqp | |||
BenGoldberg | I forget, is the parser in rakudo or nqp? | 01:04 | |
timotimo | nqp | ||
BenGoldberg | There exist jvm parsers... | ||
Err, I meant there exist jvm profilers | 01:05 | ||
If you use rakudo on jvm, and use a jvm profiler, would it tell you what parts of the parser take the longest to run? | 01:06 | ||
timotimo | good question | ||
benabik | It should, although you might get odd answers like __block_231 or however NQP/JVM names things. | 01:07 | |
BenGoldberg | On a related note... when rakudo on jvm generates java bytecode, does it put debugging info (file names and line numbers) into that bytecode? | 01:08 | |
timotimo | i believe it does, otherwise how would we get lines from backtraces? | ||
nqp-jvm: sub foo() { die "omg" }; foo(); | |||
camelia | nqp-jvm: OUTPUT«Cannot stringify this in FAILGOAL in blockoid in routine_def in routine_declarator:sym<sub> in !protoregex in routine_declarator in term:sym<routine_declarator> in !protoregex in term in termish in EXPR in statement in statementlist in comp_un… | ||
timotimo | oh ... no line number | 01:09 | |
BenGoldberg | nqp: sub foo() { die "omg" }; foo() | ||
camelia | nqp: OUTPUT«Unable to parse expression in blockoid; couldn't find final '}' at line 2, near "die \"omg\" "current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)» | ||
timotimo | you need () around die in nqp | 01:10 | |
BenGoldberg | nqp: sub foo() { die("omg") }; foo() | ||
camelia | nqp: OUTPUT«Could not find sub &diecurrent instr.: 'foo' pc 71 ((file unknown):54) (/tmp/gRCoZX6JPm:1)» | ||
BenGoldberg | nqp-jvm: sub foo() { die("omg") }; foo() | ||
timotimo | oh, and you need nqp::die i think | ||
camelia | nqp-jvm: OUTPUT«Lexical '&die' not found in foo in <anon> in <anon> in eval in evalfiles in command_eval in command_line in MAIN in <anon> in <anon>» | 01:11 | |
BenGoldberg | nqp-jvm: sub foo() { nqp::die("omg") }; foo() | ||
camelia | nqp-jvm: OUTPUT«omg in foo in <anon> in <anon> in eval in evalfiles in command_eval in command_line in MAIN in <anon> in <anon>» | ||
BenGoldberg | nqp: sub foo() { nqp::die("omg") }; foo() | ||
camelia | nqp: OUTPUT«omgcurrent instr.: 'foo' pc 68 ((file unknown):55) (/tmp/Y9bT940XNY:1)» | ||
timotimo | i'll run actual nqp microbenchmarks now. | ||
BenGoldberg | r: my @a = gather { .take $_ for ^Inf } but role { sub infinite { True } }; for @a { .say; last }; say 'done'; | 01:13 | |
camelia | rakudo 59f060: OUTPUT«===SORRY!=== Error while compiling /tmp/uNJq2gKht_Two terms in a rowat /tmp/uNJq2gKht_:1------> my @a = gather { .take ⏏$_ for ^Inf } but role { sub infinite {  expecting any of: method arguments postfix … | ||
BenGoldberg | r: my @a = gather { .take $_ for (^Inf) } but role { sub infinite { True } }; for @a { .say; last }; say 'done'; | ||
camelia | rakudo 59f060: OUTPUT«===SORRY!=== Error while compiling /tmp/VpqpW9rLXaTwo terms in a rowat /tmp/VpqpW9rLXa:1------> my @a = gather { .take ⏏$_ for (^Inf) } but role { sub infinite  expecting any of: method arguments postfix … | ||
BenGoldberg | r: my @a = gather { take $_ for (^Inf) } but role { sub infinite { True } }; for @a { .say; last }; say 'done'; | ||
camelia | rakudo 59f060: OUTPUT«(timeout)» | 01:14 | |
BenGoldberg | r: my @a = gather { take 1; say 'x' } but role { sub infinite { True } }; for @a { .say; last }; say 'done'; | ||
timotimo | of course the benchmark framework builds a new parrot each time ... at least it won't try to build a complete jvm :P | ||
camelia | rakudo 59f060: OUTPUT«xThis type does not support elems in method REIFY at src/gen/CORE.setting:7492 in method reify at src/gen/CORE.setting:6718 in method reify at src/gen/CORE.setting:6705 in method gimme at src/gen/CORE.setting:7138 in method eager at src/gen/CORE.setting:… | ||
01:14
Targen left
|
|||
timotimo | anyway. this'll take quite a while, i shall lay down and get a head start on my bedtimes | 01:15 | |
01:16
berekuk left
01:17
TimK1 joined,
berekuk joined
01:18
berekuk left
|
|||
TimK1 | Confused... | 01:18 | |
> any(1, 2) != 1; | |||
False | |||
Shouldn't that be "any(False, True)"? | |||
01:22
Mouq left
|
|||
[Coke] | r: say any(1,2) != 1; | 01:30 | |
camelia | rakudo 59f060: OUTPUT«False» | ||
[Coke] | r: say 1|2 != 1; | ||
camelia | rakudo 59f060: OUTPUT«False» | ||
lue | r: say 1 != any(1,2); | 01:31 | |
camelia | rakudo 59f060: OUTPUT«False» | ||
lue | r: say 1 == any(1,2); | 01:32 | |
camelia | rakudo 59f060: OUTPUT«any(True, False)» | ||
lue | r: say 1 !== any(1,2); | ||
camelia | rakudo 59f060: OUTPUT«False» | ||
TimK1 | Exactly what I was getting on my local install. | 01:33 | |
01:35
colomon left
01:37
colomon joined
01:39
Mouq joined
02:16
nugged joined
|
|||
benabik | comparisons collapse junctions | 02:18 | |
TimK1 | Then why... | ||
r: say 1 == any(1,2); | |||
camelia | rakudo 59f060: OUTPUT«any(True, False)» | ||
benabik | Or at least I think they're supposed to? | ||
TimK1 | Indeed, this does collapse the junction... | 02:19 | |
r: say ?(1 == any(1,2)); | |||
camelia | rakudo 59f060: OUTPUT«True» | ||
02:19
Kiralexis left
|
|||
benabik | $a !== $b is the same as not $a == $b | 02:20 | |
So the _negation_ collapses the junction. | |||
S03:3215 | |||
synopsebot | Link: perlcabal.org/syn/S03.html#line_3215 | ||
02:21
nugged left
|
|||
TimK1 | Ah… It didn't always used to be that way, I gather. Some tutorials note that with junctions, $a != $b might not be the same as !($a == $b). That disturbed me. (See, e.g., perlgeek.de/en/article/5-to-6#post_08.) | 02:23 | |
Thanks for the clarification & spec reference! | 02:25 | ||
02:26
Kiralexis joined
02:33
colomon left
|
|||
BenGoldberg | There are a few other ways to collapse a junction... in addition to "!", there are "not", "?", and "so" | 02:34 | |
not is like !, but lower precedence | 02:35 | ||
? coerces it's argument to Bool, and has similar precedence to ! | |||
so does the same thing as ?, but has lower precedence (similar precedence to not) | |||
r: r: say 1 == any(1,2) | 02:36 | ||
camelia | rakudo 59f060: OUTPUT«===SORRY!=== Error while compiling /tmp/4Fvsh1D9GOTwo terms in a rowat /tmp/4Fvsh1D9GO:1------> r⏏: say 1 == any(1,2) expecting any of: argument list postfix infix stopper infix or meta-inf… | ||
BenGoldberg | r: r: say (1 == any(1,2)) | ||
camelia | rakudo 59f060: OUTPUT«===SORRY!=== Error while compiling /tmp/LskHZ1Jj59Two terms in a rowat /tmp/LskHZ1Jj59:1------> r⏏: say (1 == any(1,2)) expecting any of: argument list postfix infix stopper infix or meta-i… | ||
02:36
zacts left
|
|||
BenGoldberg | r: (1 == any(1,2)).say | 02:36 | |
camelia | rakudo 59f060: OUTPUT«any(True, False)» | ||
BenGoldberg | r: (1 == any(1,2)).so.say | ||
camelia | rakudo 59f060: OUTPUT«True» | ||
BenGoldberg | r: (1 == any(1,2)).not.say | ||
camelia | rakudo 59f060: OUTPUT«False» | ||
BenGoldberg | r: (1 == any(1,2)).!.say | ||
camelia | rakudo 59f060: OUTPUT«===SORRY!=== Error while compiling /tmp/MMH69oo7n8Confusedat /tmp/MMH69oo7n8:1------> (1 == any(1,2)).⏏!.say expecting any of: postfix dotty method or postfix» | ||
BenGoldberg | r: say ?(1 == any(1,2)) | 02:37 | |
camelia | rakudo 59f060: OUTPUT«True» | ||
BenGoldberg | r: say !(1 == any(1,2)) | ||
camelia | rakudo 59f060: OUTPUT«False» | ||
02:39
panchiniak_ joined
02:40
cognominal left
02:41
panchiniak_ left
|
|||
flussence | rn: (1 == any(1,2)).&prefix:<!>.say | 03:01 | |
camelia | rakudo 59f060, niecza v24-88-g1f87209: OUTPUT«False» | ||
03:04
colomon joined
03:12
wtw joined
03:14
wtw_ left
03:31
preflex_ joined,
ChanServ sets mode: +v preflex_,
preflex left
03:32
preflex_ is now known as preflex,
TimK1 left
03:35
BenGoldberg left
03:43
xenoterracide_ joined
03:46
araujo left
03:47
araujo joined
04:03
Khisanth left
04:06
xenoterracide_ left
04:09
fridim_ left
04:19
Khisanth joined,
Khisanth is now known as Guest55283
04:32
colomon left
04:43
crab2313 joined
04:47
nugged joined
04:51
birdwindupbird joined,
xinming left,
nugged left
04:53
xinming joined
05:07
Vico_Wu1 left
05:13
mdn joined
|
|||
moritz | good morning | 05:19 | |
diakopter | o/ | 05:22 | |
JimmyZ | \o/ | 05:23 | |
05:39
crab2313 left
05:46
crab2313 joined,
lizmat joined,
mdn left
05:57
FROGGS joined
06:00
sidus joined
|
|||
FROGGS | r: say "test" ~~ rx{^ <-[e]>+ $} # segomos, BenGoldberg, I think this was what you meant | 06:05 | |
camelia | rakudo 59f060: OUTPUT«Nil» | ||
FROGGS | the <![e]> timed out because it has no width, so the cursor doesnt move... | 06:07 | |
r: say "test" ~~ rx{^ . <![e]>+ $} | |||
camelia | rakudo 59f060: OUTPUT«Nil» | ||
FROGGS | r: say "test" ~~ rx{^ . <![e]>+} | ||
camelia | rakudo 59f060: OUTPUT«Nil» | ||
FROGGS | r: say "test" ~~ rx{. <![e]>+} | ||
camelia | rakudo 59f060: OUTPUT«(timeout)» | ||
FROGGS | hmmm, this could work I think | 06:08 | |
r: say "test" ~~ rx{<-[e]>+} | |||
camelia | rakudo 59f060: OUTPUT«「t」» | ||
06:21
Guest55283 is now known as Khisanth
06:27
cognominal joined
06:32
grondilu joined
|
|||
slavik | I am completely lost at how to create references/pointers in perl6 ... I can't find anything relating to proper syntax | 06:34 | |
moritz | slavik: well, usually you just don't, because it's all implicit | ||
slavik: see perl6advent.wordpress.com/2011/12/1...nces-gone/ | 06:35 | ||
slavik | is it wrong to think of 'my $t = @a;' as $t being a reference to an array? | 06:37 | |
06:37
nugged joined
|
|||
slavik | moritz: in the off chance you may know, any idea if NativeCall can handle a CPointer to a CPointer (which points to a CStruct)? | 06:38 | |
moritz | slavik: you can always use a CArray[CArray[YourCstruct]] and only use index 0 | 06:40 | |
it's a hack, but it usually works | |||
slavik: the problem with saying that $t is a reference is that @a is also a reference | 06:41 | ||
slavik: which is why we say "$t is scalar that holds an array" or something like that | |||
arnsholt | A CPointer to a CPointer doesn't really make sense, since the pointer is opaque | 06:42 | |
slavik | moritz: I see | ||
arnsholt: this is in the sense of int ** a (in c/c++) | |||
moritz | arnsholt: but for many applications it would help a lot to have transparent pointers | ||
or maybe s/transparent/dereferncable/ | 06:43 | ||
arnsholt | Yeah, I'm mulling over how we could do some kind of non-opaque pointer | ||
Nothing concrete yet, though | |||
slavik: At any rate, what moritz suggested is the only way to do what you want ATM | 06:44 | ||
The syntax is a bit annoying, but the semantics are what you want | |||
moritz -> venue | 06:45 | ||
grondilu | r: my $t = my @a = ^10; say @$t | 06:46 | |
camelia | rakudo 59f060: OUTPUT«0 1 2 3 4 5 6 7 8 9» | ||
06:46
Khisanth left
|
|||
slavik | ok, cool | 06:46 | |
thanks | |||
06:49
shachaf joined
06:50
woolfy left
06:51
lizmat left
06:55
Su-Shee joined
|
|||
Su-Shee | good morning everyone. | 06:55 | |
moritz | oh hai Su-Shee | 06:56 | |
06:56
kaleem joined
|
|||
masak | Su-Shee! \o/ | 06:58 | |
07:00
Khisanth joined
|
|||
Su-Shee | how's it going at the yapc? nice outcome of perl 6 interested people? :) | 07:01 | |
moritz | Su-Shee: so far it's been great | 07:02 | |
Su-Shee | good. :) | 07:03 | |
07:04
lizmat joined
07:05
dmol joined
|
|||
masak | yeah, people are enthusiastic about the new threading goodies. | 07:11 | |
and the presence on the JVM. | |||
moritz: are you going to the txtspeak talk? I'm thinking about it. | |||
moritz | masak: no | 07:12 | |
masak | ok. | 07:13 | |
moritz | I'm staying in room 0 | ||
*main room | |||
masak | oh well. if his talk is brilliant, I bet I'll hear about it afterwards. | ||
I liked "room 0" :) | |||
07:15
thou left
|
|||
grondilu | still no video of yapc::eu 2013 on youtube :/ | 07:17 | |
masak | grondilu: *during* the conference? hah! | 07:19 | |
tadzik | hello hello | 07:26 | |
dalek | kudo/nom: b581774 | (Elizabeth Mattijsen)++ | src/Perl6/World.nqp: Make any container named ?*foo dynamic by default |
07:28 | |
kudo/nom: c0814ab | (Elizabeth Mattijsen)++ | src/core/PseudoStash.pm: No longer need to check name for OUTER:: access |
|||
07:33
Mouq left
|
|||
tadzik wonders if it's worth to go on the Language Numbering talk | 07:33 | ||
moritz | I'll go (or rather stay) there | 07:35 | |
masak too | 07:42 | ||
07:42
nugged left
07:44
berekuk joined
07:45
FROGGS left,
dmol1 joined
07:46
dmol left
|
|||
tadzik | well, let me know if it happens to be any constructive :) | 07:47 | |
07:51
lizmat left
|
|||
nine_ | jnthn: why Promise.anyof/allof and not use the existing any/or in Perl6? | 07:53 | |
moritz | nine_: because any/all are for junctions, I'd guess | 07:54 | |
nine_ | moritz: but anyof/allof stroke me as very similiar to junctions. I wonder if they could not have been realised using junctions. | 07:55 | |
moritz | nine_: it's a dangerous thing to try to unify, I think | 07:56 | |
07:58
fhelmberger joined
|
|||
nine_ | dangerous but probably even more powerful. It just seems strange to have special methods that do almost the same for this. Perl 6 is full exploitation lwn.net/Articles/411845/ everywhere else | 07:59 | |
08:01
nugged joined
08:03
nugged left
|
|||
tadzik | I was thinking about this too | 08:05 | |
moritz | nine_: it feels very perl 5-y to use the same operator for different things | ||
(I'm not totally against the idea, I just don't think it fits our design philosphy) | 08:06 | ||
08:06
FROGGS joined
|
|||
nine_ | moritz: but are they really different? I'm not suggesting using the same operator, I'm asking if allof/anyof could not have been implemented simply using junctions. | 08:06 | |
08:06
xenoterracide joined
|
|||
moritz | nine_: I don't think so, but I'll look at the code to find out | 08:08 | |
nine_ | Maybe I'm not understanding junctions well enough. I've never even used Perl 6 after all :) | ||
08:22
berekuk left
08:24
dmol1 left
|
|||
FROGGS | .tell jnthn For a regex like / a | b | c /, we could evaluate the three branches in parallel, right? I think this could speed-up parsing a lot... | 08:38 | |
yoleaux | FROGGS: I'll pass your message to jnthn. | ||
preflex | yoleaux: you have 2 new messages. '/msg preflex messages' to read them. | ||
08:40
rindolf joined
|
|||
JimmyZ | FROGGS: sregex looks like is in parallel | 08:40 | |
FROGGS | JimmyZ: good to know, even I fear I can't steal the logic from it | 08:41 | |
08:41
SHODAN joined
|
|||
JimmyZ | FROGGS: actually from swtch.com/~rsc/regexp/regexp2.html | 08:42 | |
JFI.. :) | |||
FYI | |||
FROGGS | yeah, I remember that article... | 08:43 | |
this could be a nice project :D | |||
JimmyZ | FROGGS: sregex is the nice project | ||
and jited | |||
FROGGS: github.com/agentzh/sregex | 08:44 | ||
FROGGS | JimmyZ: yes sure, but I certainly won't be able to rewrite our regex engine | ||
I'm not pmichaud :o) | 08:45 | ||
JimmyZ | FROGGS: yeah, just for you information :P, I won't be able to... | ||
FROGGS: and I have a nice libuv branch ... | 08:46 | ||
FROGGS | yeah | ||
but I think I might be able to make our regex engine threaded... | |||
JimmyZ | that's great | ||
08:48
berekuk joined
08:50
ssutch left
08:58
mdn joined
09:03
dmol joined,
dmol left
09:04
dmol joined,
PacoAir joined
09:07
lizmat joined
09:08
PacoAir left
09:10
PacoAir joined
|
|||
diakopter | FROGGS: did you see the discussion here a while ago about sregex? | 09:11 | |
(for all I remember, you were part of it) | |||
FROGGS | diakopter: I think I remember, yes | ||
09:12
domidumont joined
|
|||
FROGGS | diakopter: but my understanding was that we can't use it because of backtracking... is that wrong? | 09:14 | |
09:14
denis_boyun joined
09:15
PacoAir left
|
|||
timotimo | cannot see any of masaks talks until people put them onto youtube ;_; | 09:16 | |
FROGGS | yes ó.ò | ||
timotimo runs nqp benchmarks, this time with the commit that actually has any optimizations rather than a seemingly random one | 09:18 | ||
09:20
lizmat_ joined,
dmol left
09:21
denis_boyun_ joined,
denis_boyun left
09:22
lizmat left
|
|||
mathw | morning o/ | 09:25 | |
timotimo | hello mathw :) | 09:29 | |
09:35
denis_boyun_ left
09:40
denis_boyun joined
09:43
birdwindupbird left
09:44
crab2313 left
09:47
dmol joined,
denis_boyun left
09:48
denis_boyun joined
09:50
lizmat_ left
09:52
pmurias joined
|
|||
timotimo | t.h8.lv/p6bench/nqp-optimization.html - make out of this what you will | 09:55 | |
09:56
SamuraiJack joined
09:57
mdn left
09:58
nugged joined
10:00
denis_boyun left,
birdwindupbird joined
|
|||
timotimo | wow, those benchmark graphs really are counterintuitive. this is an improvement of 300% for jvm and 30% for parrot on that one arithmetic-intensive benchmark | 10:01 | |
10:07
berekuk left
10:08
rindolf left
10:09
dmol1 joined
10:10
dmol left
10:18
not_gerd joined
|
|||
not_gerd | www.youtube.com/watch?v=fUwY3K35yAc # first yapc talk video?! | 10:18 | |
10:23
dmol1 left
10:24
denisboyun joined
10:26
berekuk joined
|
|||
pmurias | timotimo: aren't those pointless micro benchmarks? | 10:28 | |
10:28
nugged left
10:29
denisboyun left
|
|||
pmurias | s/pointless/not approximating a real situation/ | 10:29 | |
timotimo | yes, they are :) | ||
10:29
cogno joined
|
|||
timotimo | still makes me happy to finally see an improvement :D | 10:29 | |
pmurias | they do demonstrate that the optimalisation is doing something ;) | 10:30 | |
10:32
berekuk left
|
|||
pmurias | the benchmarks for dart/javascript seem interesting but the shortest one is 539 lines | 10:32 | |
so it's a lot to port over | |||
developers.google.com/octane/benchmark | 10:33 | ||
timotimo | yeah :( | 10:34 | |
especially to nqp, where things can be a bit more ... roundabout | |||
10:36
PacoAir joined
|
|||
pmurias | they shouldn't be much more roundabout that in the orginal javascript version ;) | 10:36 | |
timotimo: code.google.com/p/octane-benchmark/...ichards.js - the shortest one | 10:37 | ||
timotimo | fortunately has craptons of comment lines | ||
nqp has :decl(param), i like that | 10:39 | ||
10:40
PacoAir left
10:45
mdn joined
|
|||
pmurias | re octane benchmark writing a simple js subset -> nqp translator should be possible/fun | 10:45 | |
hmm, maybe if I added some interop to node-js it would be possible to do that using something like esprima.org/ ;) | 10:46 | ||
s/node-js/nqp-js/ | |||
10:54
denisboyun joined
10:58
cogno left
|
|||
timotimo | nqp: say(1 / 2) | 11:00 | |
camelia | nqp: OUTPUT«0.5» | ||
timotimo | pmurias: would a var(local foo_bar :decl(var)) be acceptable inside the first stmts of a block if it's wrapped by an op(bind)? | 11:01 | |
or could that lead to the local not being declared correctly? | |||
11:01
berekuk joined
|
|||
timotimo | or should i replicate the var :decl(var) and put the bind after that? | 11:01 | |
11:05
Su-Shee_ joined
11:06
Su-Shee left,
daxim joined
11:08
colomon joined,
benabik left
11:09
iSlug joined
11:14
denisboyun left
11:22
denisboyun joined
|
|||
pmurias | timotimo: I think it would be acceptable | 11:23 | |
- QAST::Op(bind) $foo | 11:24 | ||
- QAST::Var(lexical $foo :decl(var)) | |||
- QAST::WVal(NQPMu) | |||
tadzik | I got a riddle | 11:25 | |
I have function foo($socket) | |||
$socket is created like my Mu $socket := nqp::socket() | |||
now imagine foo($socket?) | |||
so: how can I tell if $socket was passed there or ont? | |||
masak | in nqp? | ||
moritz | tadzik: nqp::defined($socket) ? | 11:26 | |
tadzik | oh, $socket =:= Mu seems to work too | ||
masak | r: my $N = 5; my $rx = "a?" x $N ~ "a" x $N; say "a" x $N ~~ /<$rx>/ | ||
camelia | rakudo c0814a: OUTPUT«「aaaaa」» | ||
masak | r: my $N = 32; my $rx = "a?" x $N ~ "a" x $N; say "a" x $N ~~ /<$rx>/ | ||
tadzik | moritz: oh yes, that'd work too | ||
camelia | rakudo c0814a: OUTPUT«(timeout)» | ||
masak submits rakudobug | |||
TimToady++ # suggesting submitting that as a rakudobug | 11:27 | ||
pmurias | jnthn: ping | ||
TimToady | jnthn++ is setting up to talk in about 3 minutes | ||
11:27
nugged joined
|
|||
masak throws in swtch.com/~rsc/regexp/regexp1.html as a reference | 11:27 | ||
pmurias | ah ok | ||
11:29
berekuk left
11:30
lizmat joined
11:33
dmol joined,
pdcawley joined
11:34
lizmat left,
denisboyun left
11:35
mdn left
11:38
pdcawley left
|
|||
timotimo | nqp: nqp::istype(QAST::VarWithFallback.new(), QAST::Var) | 11:39 | |
camelia | nqp: ( no output ) | ||
timotimo | nqp: say(nqp::istype(QAST::VarWithFallback.new(), QAST::Var)) | ||
camelia | nqp: OUTPUT«1» | ||
timotimo | oh! | 11:40 | |
11:40
not_gerd left
|
|||
timotimo | if you don't descend into VarWithFallback nodes, you're going to have a bad time. | 11:41 | |
11:42
not_gerd joined
|
|||
timotimo has a hard time making if statements that span lines look good | 11:44 | ||
aaw, i'm getting erroneous code out on the other end :( | 11:50 | ||
11:51
nugged left
11:55
colomon left,
not_gerd left
|
|||
dalek | rlito: 72b2b6d | (Flavio S. Glock)++ | / (3 files): Perlito5 - XS - emitter stub |
11:59 | |
12:03
crab2313 joined
12:05
nebuchadnezzar left
12:08
daxim left
12:09
dmol left
12:10
crab2313 left
12:17
dmol joined
12:18
mdn joined,
dmol left,
dmol joined
12:20
lizmat joined,
daniel-s joined
12:27
nugged joined
12:30
rindolf joined
12:34
nugged left
12:43
PacoAir joined,
ivanoff joined
12:47
berekuk joined
|
|||
pmurias | timotimo: how does nqp::curlexpad() work with your to local optimalisation? ;) | 12:49 | |
tadzik | omg lol | 12:50 | |
I just fetched projects.list with JVM :) | |||
dalek | rlito: d725979 | (Simon Bertrang)++ | / (2 files): start emitting some xs parts |
||
FROGGS | tadzik: lol | 12:51 | |
:D | |||
timotimo | pmurias: i have no idea! :) | ||
tadzik | FROGGS: even with LWP::Simple :D | 12:52 | |
and it required like 3 hacks | 12:53 | ||
mostly removing 'Buf' as a type constraint | |||
I'm so excited, I just can't hide it | |||
12:53
berekuk left
|
|||
FROGGS | yeah, must be Blob now, rigth? | 12:53 | |
right | |||
tadzik | I don't know | ||
timotimo | it's cool :) | ||
tadzik | it's sometimes Blob, sometimes it's... utf8 | ||
moritz | pull request it (or push it) | ||
tadzik | that's some implementation of IO::Socket::INET I wrote, which is nothing like the one we have | 12:54 | |
but it seems to read() and write() at least | |||
timotimo | ah, right, in nqp you can just get the lexpad of your caller, too, right? and there's no "is dynamic" trait that you can set | ||
in that case, the optimization is never safe :| | 12:55 | ||
moritz | :( | ||
12:55
mdn left
|
|||
pmurias | timotimo: curlexpad allows you to get the lexpad of yourself, and send it somewhere else | 12:55 | |
s/send it somewhere/show it to a different routine/ | |||
timotimo | is that the only problem? | ||
pmurias | with curlexpad? | 12:56 | |
timotimo | because in that case i can just turn off the optimization if "curlexpad" is used inside the current block | ||
dalek | rlito: a2a9ed2 | (Simon Bertrang)++ | / (2 files): Perlito5 - XS - first example xs output compiles |
||
timotimo | i think there's things like getlexouter etc? | ||
pmurias | we need to have dynamic variables markerd yes | 12:57 | |
otherwise we would have to turn the optimalization anytime we call a sub or a method | |||
tadzik | fun fact: it takes 25 seconds to load LWP::Simple with URI and fetch a webpage on jvm | ||
(without precompilation) | 12:58 | ||
pmurias | :(( | ||
timotimo | that's JVM for you ... | 12:59 | |
lizmat | pmurias: since this morning, all dynamic variables *are* marked, afaik | ||
timotimo | lizmat: not in nqp :) | ||
pmurias | timotimo: is the optimizer you are working on public somewhere? | ||
lizmat | ah, ok, :-( | ||
timotimo | pmurias: i can push my current status to nqp on github | ||
12:59
nugged joined
|
|||
dalek | p/nqp-optimizer: 271de83 | (Timo Paulssen)++ | src/NQP/Optimizer.nqp: working build, lots of debug output, more intelligence. |
13:00 | |
p/nqp-optimizer: a338192 | (Timo Paulssen)++ | src/NQP/Optimizer.nqp: nqp-jvm doesn't like negative nums in substr |
|||
p/nqp-optimizer: bc1f073 | (Timo Paulssen)++ | src/NQP/Optimizer.nqp: this should have been gone already. |
|||
p/nqp-optimizer: ee4151d | (Timo Paulssen)++ | src/NQP/Optimizer.nqp: little improvements. actually finds symbols now. |
|||
p/nqp-optimizer: 6de1913 | (Timo Paulssen)++ | src/NQP/Optimizer.nqp: removed debug output |
|||
p/nqp-optimizer: 215ac4c | (Timo Paulssen)++ | src/NQP/Optimizer.nqp: try to turn lexicals into locals. |
|||
13:00
berekuk joined
|
|||
timotimo | everything but the last commit is apparently safe. | 13:00 | |
doesn't change anything in the rakudo build, either | |||
as in test failures | |||
tadzik | I must say I don't understand much about our current Buf situation. Some things are Buf, some or Blob, some are utf8 (?!?), and they work alike but are incompatible type-wise | ||
timotimo | the last commit breaks a few, though | ||
13:01
ajr joined,
jaldhar_ left,
ajr is now known as Guest97388
|
|||
FROGGS | tadzik: true | 13:01 | |
13:02
Guest97388 is now known as ajr_
|
|||
FROGGS | maybe jnthn has to draw a map for us :o) | 13:02 | |
moritz | Buf does Blob | 13:03 | |
13:03
SamuraiJack left
|
|||
moritz | and Buf is a role | 13:03 | |
Buf is a Blob[uint8] | 13:04 | ||
and utf8 is a class that does Blob[uint8], but not Buf | 13:05 | ||
dalek | rlito: 21e2693 | (Simon Bertrang)++ | / (2 files): Perlito5 - XS - handle packages outside CompUnit and adjust semicolon placement |
13:06 | |
FROGGS | so, utf8 is about encoding, but Buf is just about a binary stream of octets? | ||
PerlJam | good morning #perl6 | ||
timotimo | yeah, utf8 objects must always contain properly encoded utf8 | ||
FROGGS | hi PerlJam | ||
right, that is like a Buf + a constraint | 13:07 | ||
makes sense somehow | |||
(not that I expect something else from jnthn :o) | |||
was this specced that way? | |||
13:08
iSlug left
|
|||
tadzik | but Blob is not an acceptable Buf | 13:08 | |
oh, of course | |||
timotimo | right, because blobs are read-only? | ||
tadzik | yes | ||
dalek | p: 777fb17 | (Pawel Murias)++ | t/nqp/77-curlexpad.t: Add a test for nqp::curlexpad(). |
||
tadzik | I have a feeling that line numbers in errors are off on JVM | 13:10 | |
FROGGS | tadzik: off by one? | ||
tadzik | usually | ||
13:10
berekuk left
|
|||
pmurias | should the lexpad returned by nqp::curlexpad() be writable? | 13:10 | |
* writeable | 13:11 | ||
13:11
nugged left
|
|||
FROGGS | pmurias: yes, I think so | 13:11 | |
I see code like: | 13:12 | ||
my $BLOCK := $*W.cur_lexpad(); | |||
$BLOCK[0].push(QAST::Op.new | |||
... | |||
moritz thought the lexpeds were immutable at runtime | |||
FROGGS: World.cur_lexpad vs. nqp::curlexpad() | |||
FROGGS | ohh, that is in Perl5::Grammar.pm | ||
13:12
fridim_ joined
|
|||
FROGGS | ahh, okay, different things then | 13:12 | |
13:14
dmol left,
ivanoff left
13:16
dmol joined
|
|||
pmurias | moritz: it seems I can't add new lexicals but can bind to existing one on nqp-parrot | 13:17 | |
moritz | pmurias: sounds sensible | 13:18 | |
13:19
Su-Shee_ is now known as Su-Shee
|
|||
masak | o/ | 13:22 | |
timotimo | hello masak :) | ||
masak seems to have survived his two talks :) | 13:23 | ||
moritz | and I liked both! | ||
masak | \o/ | ||
FROGGS | \o/ | 13:25 | |
tadzik | yeah, they were cool :) | ||
pmurias | masak: still using your awesome slides software? ;) | ||
tadzik | hrm. Does ./perl6 -e 'my Buf $content .= new()' throw up on jvm for you too? | 13:26 | |
timotimo | tadzik: fwiw, i think the parrot-based socket implementation needs at least 1 change which is allowing the user to specify how many incoming connections should be able to wait for an accept. | 13:27 | |
dmol | masac++ | ||
timotimo | maybe you can design a better socket api and someone else can port that over to rakudo-parrot? | ||
tadzik | timotimo: I plan to port it over myself once I battle-prove it on JVM :) | ||
timotimo: but yes, this backlog thing is one of the things | |||
13:28
iSlug joined
|
|||
masak | pmurias: same as PLPW -- Perl 6 converting Markdown to HTML+reveal.js | 13:28 | |
13:28
iSlug left
|
|||
timotimo | cool :) | 13:28 | |
masak | it's not perfect, but it's pretty nice. | ||
dalek | kudo-js: 23d3f5c | (Pawel Murias)++ | nqp-src/nqpmo.pm: Add missing nqpmo. |
||
kudo-js: c8ff861 | (Pawel Murias)++ | runtime (4 files): Implement nqp::clone(). |
|||
kudo-js: b3e70ec | (Pawel Murias)++ | / (5 files): Make nqp::clone work on hashes, implement nqp::curlexpad(). Pass test 66. |
|||
kudo-js: 4d9d90e | (Pawel Murias)++ | run_tests: Add passing test 77 to run_tests. |
|||
timotimo | masak: how long until you use pod6 instead of markdown? :) | 13:29 | |
tadzik | masak: is it published? | ||
so, who has rakudo-jvm compiled? | 13:30 | ||
relatively recent | |||
don't make me compile it myself :P | |||
13:30
daxim joined
|
|||
masak | tadzik: previous talks that use that library are published (as in "on github"), yes. | 13:30 | |
moritz | tadzik: I'm compiling it right now | ||
tadzik | okayo | ||
masak | timotimo: I actaully have one talk that I wrote in Pod. with a custom translator to SVG. | ||
timotimo | oh, to svg, eh? | ||
masak | timotimo: but I think I like Markdown better for talks. | 13:31 | |
actually, I don't think I've been "sold" on Pod yet, sorry to say. | |||
dalek | rlito: fd8ea18 | (Simon Bertrang)++ | / (2 files): Perlito5 - XS - adjust declarations and make return initially functional |
||
rlito: b7c68a0 | (Simon Bertrang)++ | t5-xs/ (8 files): Perlito5 - XS - add tests |
|||
masak | if I made a programming language from scratch, I'd do the Pod equivalent as Markdown. | ||
pmurias | you can always use a perl6 module | 13:32 | |
masak | *nod* | ||
timotimo | right | ||
13:33
bluescreen10 joined
|
|||
tadzik | java.lang.Throwable: Nominal type check failed for parameter '$got' | 13:33 | |
that error message is up-Throwable :P | |||
masak .oO( unless you count throwing up your hands in frustration ) | 13:34 | ||
13:40
btyler joined,
berekuk joined
|
|||
Su-Shee | masak: nearly everybody wishes today that POD were markdown - i'm pretty sure you can make pod6 markdown and everybody will be happy ;) | 13:41 | |
dalek | rlito: 370d1e9 | (Simon Bertrang)++ | t5-xs/Makefile: Perlito5 - XS - test strings |
13:42 | |
rlito: 0819178 | (Simon Bertrang)++ | t5-xs/Some-Thing/t/Hello-World.t: Perlito5 - XS - test for the changed input |
|||
rlito: 599dbd2 | (Simon Bertrang)++ | / (3 files): Perlito5 - XS - custom implementation of escape_string to get string support initially working |
|||
13:44
fridim_ left
|
|||
tadzik | gist.github.com/tadzik/6231215 it quite funny | 13:46 | |
jnthn: ^^ | |||
13:47
dmol left
|
|||
dalek | : 64d6e01 | (Tobias Leich)++ | / (3 files): allow `map EXPR LIST` |
13:49 | |
13:51
lizmat left,
cosimo left
13:53
berekuk left
13:56
thou joined
|
|||
moritz | LHF: make rakudo-jvm compile the restricted setting | 13:56 | |
rakudo-jvm can compile it, it's just missing from the Makefile | |||
13:59
kaleem left
14:03
kbaker joined
14:08
cosimo joined
|
|||
timotimo | i think i'll try to implement richards in nqp and perl6 | 14:08 | |
moritz | prompt() doesn't work on rakudo-jvm yet | 14:09 | |
> my $x = prompt "number"; say uc $x | |||
numberMethod 'flush' not found | |||
FROGGS | nqp-jvm: say sprintf("%s", [42]) | 14:11 | |
camelia | nqp-jvm: OUTPUT«Confused at line 2, near "say sprint" in panic in comp_unit in TOP in parse in parse in <anon> in compile in eval in evalfiles in command_eval in command_line in MAIN in <anon> in <anon>» | ||
FROGGS | nqp-jvm: say nqp::sprintf("%s", [42]) | ||
camelia | nqp-jvm: OUTPUT«Confused at line 2, near "say nqp::s" in panic in comp_unit in TOP in parse in parse in <anon> in compile in eval in evalfiles in command_eval in command_line in MAIN in <anon> in <anon>» | ||
FROGGS | nqp-jvm: say(nqp::sprintf("%s", [42])) # -.- | ||
camelia | nqp-jvm: OUTPUT«No registered operation handler for 'sprintf' in compile_op in as_jast in as_jast in <anon> in process_args in <anon> in <anon> in compile_op in as_jast in as_jast in <anon> in compile_all_the_stmts in as_jast in as_jast in <anon> in compi… | ||
FROGGS | ? | ||
nqp-jvm: say(sprintf("%s", [42])) # -.- | 14:12 | ||
camelia | nqp-jvm: OUTPUT«Lexical '&sprintf' not found in <anon> in <anon> in eval in evalfiles in command_eval in command_line in MAIN in <anon> in <anon>» | ||
FROGGS | hmpf | ||
nqp-jvm: say(nqp::sprintf("%d", [42])) # where is the error?? | 14:13 | ||
camelia | nqp-jvm: OUTPUT«No registered operation handler for 'sprintf' in compile_op in as_jast in as_jast in <anon> in process_args in <anon> in <anon> in compile_op in as_jast in as_jast in <anon> in compile_all_the_stmts in as_jast in as_jast in <anon> in compi… | ||
timotimo | nqp: say(+^4) | 14:14 | |
camelia | nqp: OUTPUT«Confused at line 2, near "say(+^4)"current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)» | ||
timotimo | what's the "bitwise negation" op? | ||
14:14
daxim left
|
|||
timotimo | in nqp? | 14:14 | |
nqp: say(+!4) | 14:15 | ||
camelia | nqp: OUTPUT«0» | ||
FROGGS | nqp-jvm$ ./nqp -e 'say(nqp::sprintf("%d", [42]))' | ||
42 | |||
timotimo | nqp: say(^4) | ||
camelia | nqp: OUTPUT«Confused at line 2, near "say(^4)"current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)» | ||
FROGGS | r: say +^4 | ||
camelia | rakudo c0814a: OUTPUT«-5» | ||
FROGGS | timotimo: I think nqp has no such op | ||
timotimo | nqp: say(nqp::bitneg_i(4)) | ||
camelia | nqp: OUTPUT«error:imcc:syntax error, unexpected IREG, expecting '(' ('$I5003') in file '(file unknown)' line 150638363» | ||
timotimo | nqp: say(nqp::bitneg(4)) | ||
camelia | nqp: OUTPUT«Error while compiling block : Error while compiling op call (source text: "nqp::bitneg(4)"): Error while compiling op bitneg (source text: "nqp::bitneg(4)"): No registered operation handler for 'bitneg'current instr.: '' pc 51451 (src/stage2/QAST.pir:18765) (src/stage2/QAST… | ||
timotimo | mhm | ||
bitneg_i does exist, though | 14:16 | ||
FROGGS | but what is wrong with this nqp-jvm here? why is nqp::sprintf not known? is it that old? | ||
timotimo | nqp: say(nqp::bignet_i(5)) | ||
camelia | nqp: OUTPUT«Error while compiling block : Error while compiling op call (source text: "nqp::bignet_i(5)"): Error while compiling op bignet_i (source text: "nqp::bignet_i(5)"): No registered operation handler for 'bignet_i'current instr.: '' pc 51451 (src/stage2/QAST.pir:18765) (src/sta… | ||
timotimo | nqp: say(nqp::bitneg_i(5)) | ||
camelia | nqp: OUTPUT«error:imcc:syntax error, unexpected IREG, expecting '(' ('$I5003') in file '(file unknown)' line 145534747» | ||
FROGGS | it wants a PMC | 14:17 | |
timotimo | ah, is that so? | ||
FROGGS | I think so | ||
timotimo | nqp: say(nqp::bitneg_i(nqp::box_i(5, Int))) | ||
camelia | nqp: OUTPUT«error:imcc:syntax error, unexpected IREG, expecting '(' ('$I5003') in file '(file unknown)' line 161157783» | ||
timotimo | how do i do that again? | ||
FROGGS | QAST::Operations.add_core_pirop_mapping('bitneg_i', 'bnot', 'Ii', :inlinable(1)); | 14:18 | |
timotimo | multi prefix:<+^>(int $a) { nqp::bitneg_i($a) } <- this is in rakudo, isn't that a native int? | ||
FROGGS | yes | ||
14:19
Traceur joined
14:20
Traceur left,
Traceur joined
|
|||
timotimo | nqp: say(nqp::bitneg_i(nqp::box_i(5, int))) | 14:20 | |
camelia | nqp: OUTPUT«error:imcc:syntax error, unexpected IREG, expecting '(' ('$I5003') in file '(file unknown)' line 42» | ||
timotimo | nqp: say(nqp::bitneg_i(nqp::box_i(5, 'int'))) | ||
camelia | nqp: OUTPUT«error:imcc:syntax error, unexpected IREG, expecting '(' ('$I5003') in file '(file unknown)' line 42» | ||
timotimo | nqp: say(nqp::bitneg_i(nqp::box_i(5, 'Int'))) | ||
camelia | nqp: OUTPUT«error:imcc:syntax error, unexpected IREG, expecting '(' ('$I5003') in file '(file unknown)' line 42» | ||
timotimo | i don't even ... | ||
[Coke] wonders if anyone is looking into fixing "is dynamic" for the jvm. that broke a bunch of tests when it went in. | 14:24 | ||
14:27
fhelmberger left
14:32
bearman joined
14:34
prammer joined
|
|||
timotimo | what's the syntax for an int constant in nqp? :o | 14:34 | |
neither my int constant $foo nor my constant int $foo seem to work | |||
14:35
Traceur left
|
|||
timotimo | apparently there isn't even constant in nqp | 14:35 | |
14:36
ssutch joined
14:38
Psyche^_ joined
14:39
lizmat joined
|
|||
timotimo | nqp: my @l; @l[1] := 1; | 14:39 | |
camelia | nqp: ( no output ) | ||
14:41
dmol joined
14:42
Psyche^ left
14:43
bbkr left,
bbkr joined
14:45
lizmat left
14:48
dmol left
|
|||
dalek | rlito: 14d237e | (Simon Bertrang)++ | src5/lib/Perlito5/XS/Emitter.pm: Perlito5 - XS - fix escape_string escape handling |
14:48 | |
rlito: c1ac75d | (Simon Bertrang)++ | / (4 files): Perlito5 - XS - implement some parts of print |
|||
14:49
birdwindupbird left
|
|||
timotimo | nqp: say(4 +> 1) | 14:50 | |
camelia | nqp: OUTPUT«Confused at line 2, near "say(4 +> 1"current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)» | ||
timotimo | nqp: say(nqp::bitshift_r(4, 1)) | ||
camelia | nqp: OUTPUT«Error while compiling block : Error while compiling op call (source text: "nqp::bitshift_r(4, 1)"): Error while compiling op bitshift_r (source text: "nqp::bitshift_r(4, 1)"): No registered operation handler for 'bitshift_r'current instr.: '' pc 51451 (src/stage2/QAST.pir:1… | ||
timotimo | nqp: say(nqp::bitshiftr_i(4, 1)) | ||
camelia | nqp: OUTPUT«2» | ||
pmurias | timotimo: are you porting the octane benchmarks? ;) | 14:51 | |
timotimo | only the richards one so far | 14:52 | |
dalek | rlito: 4ed2c2a | (Simon Bertrang)++ | / (4 files): Perlito5 - XS - add a warn implementation |
14:53 | |
14:53
Traceur joined
14:54
Traceur is now known as Guest72817
|
|||
moritz | are the folks here at YAPC::EU planning to have dinner together? I'd join you this time :-) | 14:58 | |
timotimo | nqp: class Foo { has $.a }; my $a := Foo.new(); $a.a := 100; say($a.a) | 15:01 | |
camelia | nqp: OUTPUT«Unable to parse expression in blockoid; couldn't find final '}' at line 2, near "has $.a };"current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)» | ||
timotimo | have to create custom accessors, yes? | ||
15:01
ajr_ left
|
|||
moritz | yes | 15:02 | |
timotimo | how do i create a nqp::list prepopulated with $num 0s? | ||
15:02
ajr joined
15:03
ajr is now known as Guest26609,
Guest26609 is now known as ajr_
|
|||
timotimo | nqp: my @a; nqp::setelems(@a, 1000); say(+@a); | 15:04 | |
camelia | nqp: OUTPUT«1000» | ||
timotimo | oh, neato | ||
nqp: my @a := nqp::list_i(); nqp::setelems(@a, 1000); say(+@a); say(@a[0]); | |||
camelia | nqp: OUTPUT«get_number() not implemented in class 'ResizableIntegerArray'current instr.: '' pc 55 ((file unknown):46) (/tmp/VIlG8Kt7WR:1)» | ||
timotimo | nqp: my @a := nqp::list_i(); nqp::setelems(@a, 1000); say(@a[0]); | ||
camelia | nqp: OUTPUT«0» | ||
timotimo | nqp: my @a := nqp::list_i(); nqp::setelems(@a, 1000); say(@a[50]); | ||
camelia | nqp: OUTPUT«0» | ||
timotimo | that's neat :) | ||
nqp: my @a := nqp::list_i(); nqp::setelems(@a, 1000); say(@a[500000]); | |||
camelia | nqp: OUTPUT«0» | ||
timotimo | oh, that's how it is. | ||
how performant are these accessors that have a *@ argument and decide based upon +@foo wether to set or return? :| | 15:06 | ||
pmurias | + | 15:07 | |
timotimo: compared to what? | 15:08 | ||
timotimo | compared to having two methods | ||
15:08
slava left
15:10
ajr_ left
|
|||
pmurias | a method call seems much more expensive then an if | 15:11 | |
rakudo uses the ones with a *@ | |||
so the benchmark should use those | |||
timotimo | ok | 15:12 | |
15:12
bearman left
15:13
berekuk joined,
berekuk left
15:14
btyler_ joined
|
|||
dalek | kudo-js: 58fd0bf | (Pawel Murias)++ | run (3 files): Implement nqp::setcontspec, nqp::assign, nqp::assignunchecked. Pass test 67. |
15:14 | |
15:14
btyler left
|
|||
pmurias | down to one failing test in nqp/t/nqp :) | 15:15 | |
(which compiles rules at runtime and so requires bootstraping or tricks I'm not willing to use) | 15:16 | ||
tadzik | nice! | ||
FROGGS | pmurias: so, next big thing is bootstrapping? | 15:17 | |
moritz | pmurias++ | ||
pmurias | nqp/t/qregex | ||
FROGGS | ahh, I see | 15:18 | |
15:18
SmokeMac_ left
15:29
rindolf left
15:34
SmokeMachine joined
15:35
egor joined
15:36
egor left,
benabik joined
15:37
ajr_ joined
15:46
nebuchadnezzar joined
|
|||
timotimo | okay, back to work on richards | 15:51 | |
15:52
denis_boyun joined
|
|||
timotimo | does "var peek, next = queue" in js work like "var peek = queue; var next = queue;"? | 15:52 | |
PerlJam | timotimo: no, only next would be assigned; peek would still be undefined. | 15:53 | |
timotimo | ah, ok | 15:54 | |
15:54
FOAD joined
15:58
silug left
16:00
p5eval joined,
p5eval left
|
|||
timotimo | i'm getting "error while compiling op bind (source text: ":=") first child of a bind op must be a qast::var" | 16:01 | |
apparently comes from "return self" | |||
16:01
dmol joined
|
|||
timotimo | why can't i return self? :| | 16:02 | |
16:03
slava joined
|
|||
timotimo | nqp: class Test { method foo() { return self } }; say(Test.new()) | 16:04 | |
camelia | nqp: OUTPUT«Test<1066528866>» | ||
16:04
dmol left
|
|||
timotimo | huh, i can apparently do that | 16:04 | |
ah, ok, i commented out the return self and it still shows that in the source text | |||
oh of course | 16:05 | ||
how do i method new in nqp? >_> | 16:08 | ||
ah, self.CREATE, then bindattr? hm. | 16:09 | ||
16:09
kaare_ joined,
dmol joined,
pmurias left
16:12
berekuk joined,
xinming left
16:13
dmol left
16:14
xinming joined
16:16
dmol joined
16:19
p5eval joined
16:20
rindolf joined
16:21
FOAD left,
silug joined
16:23
FOAD joined
16:28
kbaker left
|
|||
timotimo | d'oh. there's some error in my richards translation | 16:31 | |
16:31
spider-mario joined
|
|||
timotimo | somehow a ResizableIntegerArray is making its way to a place where it really shouldn't go | 16:34 | |
16:34
kbaker joined
|
|||
timotimo | ah. it's always good to actually return the object you created from a .new | 16:34 | |
16:35
dmol left
16:38
colomon joined
|
|||
timotimo | can't tell if benchmark wrong or running ... | 16:38 | |
how long is such a richards run supposed to take? well, for nqp probably a few minutes >_> | 16:39 | ||
it kind of deadlocks :| | 16:40 | ||
16:43
EvanTeitelman joined,
FROGGS left
16:44
berekuk left
|
|||
timotimo | missing methods with 1 passed argument apparently don't err out when they are called | 16:47 | |
16:48
SamuraiJack joined,
bbkr_ joined
16:49
bbkr left
16:51
denis_boyun left
16:52
domidumont left
16:55
FROGGS joined
|
|||
timotimo | ah the classic while loop without incrementing the counter | 16:56 | |
16:56
genehack joined
16:59
bluescreen10 left,
denisboyun joined
17:05
EvanTeitelman is now known as evant
17:08
skids joined
17:15
btyler_ left
17:17
geekosaur left
17:18
geekosaur joined
17:20
l30n1du5 joined
|
|||
segomos | that is a classic | 17:26 | |
timotimo | my richards scheduler seems to just throw away the tasks after running them once or something :| | 17:27 | |
17:28
SmokeMachine left
17:30
berekuk joined
|
|||
timotimo | ah, my "STATE_SUSPENDED_RUNNABLE" constant was actually more like RUNNING_RUNNABLE | 17:34 | |
>_> | |||
17:34
SmokeMachine joined
17:38
spider-mario left
17:40
domidumont joined
17:41
spider-mario joined
17:50
rindolf left
17:51
skids left,
spider-mario left
17:52
spider-mario joined
17:57
Vlavv left
17:59
btyler joined
|
|||
timotimo | i cannot fathom how the original code is supposed to be right, this just makes no sense to me | 18:01 | |
the scheduler is waiting for a tcb to be "neither suspended nor held" and will skip over them if they are either of those | |||
if a tcb has .run called on it and it is "suspended runnable", which three of my tcbs are, it will start running, but it never gets allowed to run because of the "neither suspended nor held" requirement | 18:02 | ||
and when a resource is released, it removes the held bit, but that isn't set for any of the tcbs | 18:03 | ||
18:07
domidumont left
18:10
Vlavv joined
|
|||
timotimo | my implementation of "neither suspended nor held" was incorrect ... | 18:11 | |
18:16
abnorman joined
|
|||
dalek | : 1689592 | (Tobias Leich)++ | STATUS.md: fudged sprintf2.t and pack.t |
18:23 | |
18:23
denisboyun left
18:29
sqirrel joined
|
|||
timotimo | i made it work finally | 18:39 | |
slava | is it possible to compile perl6 to pbc? | 18:42 | |
or does it have to be pir and then something else uses pbc | 18:43 | ||
18:43
zwut00 joined
|
|||
FROGGS | perl6 --target=pbc -e '1' | 18:43 | |
ohh no | 18:44 | ||
PerlJam | I don't think that actually works. | ||
(not sure if it ever did) | |||
FROGGS | slava: it looks like nqp/perl6 emits pir, and parrot compiles it to pbc | ||
slava | going to have to play with it :), I wonder if there is any speed up that can be head by having pbc | 18:45 | |
PerlJam | slava: you'd only save on the "parsing the program" step, which is (generally) small compared to the rest of the execution. | 18:46 | |
slava | I see | ||
also, grammars are cool. :D | |||
18:47
Guest72817 left,
denis_boyun joined
|
|||
FROGGS | PerlJam: I must disagree, when writing the SDL module, the execution speed difference was enormous | 18:48 | |
(precompiled using ufo <=> normal way) | |||
that was eight months ago though | |||
hmmm, maybe I just remember wrong | 18:49 | ||
PerlJam | slava: Do it and let us know the results :) | ||
(blog about them even!) | |||
timotimo | r: my int $foo = 8; $foo +>= 1; say $foo | 18:50 | |
camelia | rakudo c0814a: OUTPUT«Cannot modify an immutable value in block at src/gen/CORE.setting:15312 in block at /tmp/WWFiKPb0UW:1» | ||
timotimo | r: my Int $foo = 8; $foo +>= 1; say $foo | ||
camelia | rakudo c0814a: OUTPUT«4» | ||
timotimo | that's a pretty operator | ||
FROGGS | interesting | 18:51 | |
timotimo | can i pre-initialise list slots for a perl6-List, too? | 18:53 | |
er, or an array? | |||
18:53
xinming left
18:55
xinming joined
|
|||
FROGGS | you can splice elements to it, but I dunno how efficient this is :/ | 18:57 | |
timotimo | these lists are supposed to be very small anyway, so it's no big deal | ||
18:58
SamuraiJack left,
not_gerd joined
|
|||
not_gerd | slava: you can precompile modules, but not scripts | 18:58 | |
FROGGS | yeah, I mean parrot offers FixPMCArrays and setting list sizes... but I guess this isn't exposed to perl6 land | 18:59 | |
not_gerd | slava: it's a two-step process: .pm -> .pir via perl6 and .pir -> .pbc via parrot | ||
timotimo is porting the richards benchmark over to perl6 | |||
not_gerd | I actually made it work in a single step, but that was never merged | ||
slava | not_gerd: two step is fine (I don't think it's a big deal, since it can be easily scripted) | 19:01 | |
not_gerd: by precompile, you mean pm to pir? | |||
not_gerd | slava: ultimately, pm to pbc | 19:02 | |
timotimo | r: constant int foo = 10; | 19:03 | |
camelia | rakudo c0814a: OUTPUT«===SORRY!=== Error while compiling /tmp/cKBCUFjW9yMissing initializer on constant declarationat /tmp/cKBCUFjW9y:1------> constant int ⏏foo = 10; expecting any of: statement list prefix or term pref… | ||
timotimo | is the "int" wrong here? | ||
not_gerd | timotimo: NYI as far as I know | 19:04 | |
19:06
telex left
19:07
telex joined
19:21
sqirrel left
|
|||
timotimo | i'm annoyed that Rakudo::Debugger can't be built | 19:29 | |
FROGGS | :/ | ||
timotimo | "error:imcc:loadlib directive could not find library `perl6_group' in file 'perl6-debug.pir' line 1" | 19:30 | |
i don't even ... | |||
FROGGS | I believe this is due to the jvm refactorings... there was once a perl6_group, but now it is called --vmlibs=perl6_ops, you can see that in the makefiles | 19:32 | |
timotimo | ....oh? | ||
19:33
frettled left,
frettled joined,
l30n1du5 left
|
|||
FROGGS | timotimo: github.com/rakudo/rakudo/commit/15...f85#diff-9 | 19:34 | |
so, it broken now for about 3 months | |||
timotimo | that makes it work | 19:35 | |
FROGGS | cool | ||
timotimo | nobody used to be able to help me fix that | ||
for AGES | |||
FROGGS | :o) | ||
timotimo | and then you're just like "ah yeah, just change this bit here in the makefile" | ||
couldn't you have done that a bit earlier? :( | |||
FROGGS | I remember because I had to adjust v5's makefile too | ||
timotimo | i've had to cope without the debugger for a loooong time ;_; | ||
FROGGS | ó.ò | 19:36 | |
poor timotimo | |||
19:36
Mouq joined
|
|||
timotimo | huh | 19:36 | |
not work, just build. | |||
19:37
jaffa4 joined
|
|||
FROGGS | error message? | 19:37 | |
timotimo | null pmc access in get_pmc_keyed, method mu not found for invocant of class parcel | 19:38 | |
19:38
not_gerd left
|
|||
FROGGS | --ll-exception? | 19:38 | |
where does this happen? | |||
19:39
celesta joined
|
|||
celesta | ahoi #perl6 | 19:39 | |
jaffa4 | hi all | ||
What backends are made based on qast? | |||
FROGGS | $ ./p5 'say sprintf "%1.1s", "abc"' | 19:40 | |
Perl5: a | |||
v5: '1.1s' is not valid in sprintf format sequence '%1.1s' | |||
# another TODO for JVM's nqp::sprintf | |||
timotimo | perl6-debug.nqp lines 445 -> 1 -> 489 -> NQPHLL and compiler, p6d.nqp -> line 445, some more nqphll, qregex, grammar, perl6-debug line 403, ... | ||
FROGGS | jaffa4: nqp and rakudo uses qast | ||
jaffa4 | what else? | 19:41 | |
FROGGS | v5 as a smaller project | ||
timotimo: might make sense that I try to debug at on my machine | |||
moritz | well, all the backends use QAST, because QAST ist what they get from the frontend | 19:42 | |
timotimo | when i type 'say "hello"' into the rakudo::debugger shell, i get null pmc access in pmc_get_keyed | 19:47 | |
when i type 1, it says "unable to load setting core maybe it's missing you_are_here?" | |||
19:51
denis_boyun left
|
|||
FROGGS | timo | 19:52 | |
timotimo | that's me | 19:53 | |
FROGGS | timotimo: first you get the NPMC-Access, after that you get the other error | ||
timotimo | rakudo::debugger probably missed to chase some changes in the compiler/grammar/... | ||
yeah, in two separate lines | |||
when running my richards script through it | 19:54 | ||
gist.github.com/timo/5a86e4e2df103f401767 | |||
19:57
denis_boyun joined
|
|||
FROGGS | yeah, I get almost the same for ./perl6-debug --ll-exception -e '1' | 19:58 | |
I have no idea what to do now | 19:59 | ||
20:01
stevan_ joined
20:02
kaare_ left
20:04
denis_boyun_ joined
20:05
denis_boyun left
20:11
prammer left
20:13
prammer joined
20:15
jeff_s1 left
20:18
jaffa4|2 joined
20:20
jaffa4 left
|
|||
[Coke] casts a yapc asia jnthn++ to his tv and is surprised at jnthn-voice. | 20:32 | ||
FROGGS | [Coke]: why surprised? | 20:34 | |
[Coke] | first time I've heard him speak, I think | 20:35 | |
FROGGS | ahh, okay | 20:36 | |
PerlJam | [Coke]: what did you expect him to sound like? :) | ||
dalek | rl6-roast-data: b4246f3 | coke++ | / (5 files): today (automated commit) |
20:38 | |
20:38
notjack left
20:42
spider-mario left
|
|||
[Coke] | PerlJam: I have no idea. ;) | 20:43 | |
apparently a different british. | |||
stackoverflow.com/questions/1823497...rl-5-and-6 | 20:46 | ||
PerlJam | wow | 20:47 | |
I wonder why he thinks it "needs" to run on both P5 and P6? | |||
tadzik | boss requires that? :P | 20:48 | |
colomon | future proofing by making it totally unworkable now? | ||
masak | o/ | 21:03 | |
21:03
kbaker left,
dayangkun left
|
|||
celesta | \o hej masak | 21:03 | |
masak | celesta: hi! | 21:04 | |
timotimo | "I seem to recall that Perl6 originally had a design goal of being able to execute Perl5 code [citation needed], but I don't think that's been done, and I wouldn't count on it ever actually happening." - someone's become cynical over the last 13 years | ||
masak | who are you quoting? | 21:05 | |
to some extent, that's already "actually happening". | 21:06 | ||
21:06
jaffa4|2 left
|
|||
timotimo | the stackoverflow conversation | 21:06 | |
masak looks | 21:07 | ||
yeah, the question seems... ambitious. | 21:08 | ||
std: $] | |||
camelia | std c2215f0: OUTPUT«===SORRY!===Unsupported use of $] variable; in Perl 6 please use $*PERL_VERSION at /tmp/zZkKFxyvyB line 1:------> $]⏏<EOL>Parse failedFAILED 00:00 41m» | ||
timotimo | catch that exception! :) | 21:09 | |
masak | it's interesting how "[citation needed]" has come to need "don't take my word for it". | ||
timotimo | it seemed more like "i don't even believe it" or something | 21:10 | |
[Coke] | ~. | 21:12 | |
masak | I read it as "this is how I seem to remember it, but an actual source would be a good thing to confirm" | ||
timotimo | right, i'm just cynical sometimes | 21:13 | |
[Coke] | figured someone here would be motivated to citate. | ||
(yes, I know that isn't a word. :P) | |||
lue | S01 should placate citeless fears | 21:14 | |
geekosaur | citing sites lest someone be psyched? | 21:15 | |
masak .oO( it's not "citate", it's "tricarboxylic acid cycle" ) | |||
21:16
dayangkun joined
21:17
nugged joined
|
|||
slava | would it be safe to assume that the modules that come with rakudo* are part of 'core' ? | 21:17 | |
FROGGS | no | ||
masak | no | ||
tadzik | on | 21:18 | |
FROGGS | it is just like strawberryperl bundles useful modules | ||
tadzik | we have 3 core | ||
masak | slava: when dealing with Perl 6, you need to assume a whole lot of "distributedness", and not so much "officialness". | ||
FROGGS | but these arn't core either | ||
21:18
lizmat joined
|
|||
tadzik | slava: perlgeek.de/blog-en/perl-6/how-core-is-core.html | 21:18 | |
lue | How existing is the use v5 in rakudo? | 21:20 | |
FROGGS | I think it is awesome :P | 21:23 | |
lue | would I be able to suggest its usage to the stackoverflow question, or would that answer be more a "when it's ready..." ? | 21:24 | |
FROGGS | but if you meant how useful it is, then I re-ask: how useful is Perl 5 without all the cool modules? because I'd think that none of them will work yet | ||
I'd wait before advertising v5 | 21:25 | ||
21:27
lizmat left
|
|||
lue | alrighty then. I kinda want to mention v5 as something as planned (too bad I can't leave comments on stackoverflow yet). | 21:27 | |
PerlJam | lue: Why? | ||
lue: Why not wait until it's "ready" (whatever that means) then tell people it exists? | |||
lue | quote: "add comment (requires 50 reputation)" | 21:28 | |
PerlJam | lue: sorry, that was "Why do you want to mention that v5 is something that's planned?" | ||
lue | Because current discussion on the question seems to be saying that "P5 and P6 are completely different, what you want is hopeless" when that is (eventually) not the case. | 21:29 | |
I won't mention it though, since it's really only appropriate as a comment methinks. | |||
masak | Perl 5 and Perl 6 *are* different in the sense that they are different runloops. | ||
I'm sometime hesitant to go all the way and call them different languages, even though that is the community consensus. there's some sense in which they are and some in which they are not. | 21:30 | ||
PerlJam | lue: even with the existence of v5, I think what he wants is hopeless if only because he seems to be all sorts of confused about what he wants. :) | ||
lue | It'd just be nice to dispel the implied conclusion that P5 and P6 cannot coexist in the same file. | ||
slava | tadzik: thanks, that makes sense | 21:31 | |
masak | lue: yes, but if we're not quite there yet (according to the main developer of v5), then it might not be time to tell about it. | ||
yet. | |||
lue | which is why I agreed not to. yet. :) | ||
FROGGS | :o) | 21:32 | |
PerlJam | I also find it interesting that the guy said "This code works on both versions or perl without error:" | 21:34 | |
slava | that actually confused me | ||
lue | r: say $] | 21:35 | |
camelia | rakudo c0814a: OUTPUT«===SORRY!=== Error while compiling /tmp/bQ267__iqCNon-declarative sigil is missing its nameat /tmp/bQ267__iqC:1------> say ⏏$] expecting any of: argument list prefix or term prefix or meta-prefix»… | ||
lue | std: say $] | ||
camelia | std c2215f0: OUTPUT«===SORRY!===Unsupported use of $] variable; in Perl 6 please use $*PERL_VERSION at /tmp/30I9vo1peV line 1:------> say $]⏏<EOL>Parse failedFAILED 00:00 42m» | ||
PerlJam | yes, he clearly did not execute that code on a Perl 6 compiler. So what were "both" versions? | ||
masak | lue: feel free to submit rakudobug. | ||
lue | oh. I was just testing the most suspicious part of the "Works on Perl 6 too" example in the question. | 21:36 | |
lue files rakudobug | |||
21:36
nugged left
21:37
sorear joined
|
|||
slava | lol | 21:40 | |
shouldn't something like $} have a twigil and a more descriptive name? | |||
wait, nvm, it does say what to use | |||
masak | yeah, we tend to provide "next steps" in the Perl 6 error messages. | 21:42 | |
21:43
TimK1 joined
|
|||
lue | I can't recall the specifics anymore, but I remember a couple times where I wish I could turn off the P5 errors to use otherwise-valid P6 code. | 21:44 | |
masak | std: say | ||
camelia | std c2215f0: OUTPUT«===SORRY!===Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/xYV7ed74t1 line 1:------> say⏏<EOL>Check failedFAILED 00:00 41m» | ||
masak | std: say #OK | ||
camelia | std c2215f0: OUTPUT«===SORRY!===Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/GsLXHKh1JA line 1:------> say⏏ #OKCheck failedFAILED 00:00 41m» | 21:45 | |
masak | oh, that one isn't suppressible. | ||
timotimo | std: say() | 21:46 | |
camelia | std c2215f0: OUTPUT«ok 00:00 41m» | ||
lue | r: say <>; # what if I wanted a simple-to-type empty list and I also hate seemingly unnecessary spaces, thus ruling out < > ? | ||
camelia | rakudo c0814a: OUTPUT«===SORRY!=== Error while compiling /tmp/Tgs7yc74p1Unsupported use of <>; in Perl 6 please use lines() to read input, ('') to represent a null string or () to represent an empty listat /tmp/Tgs7yc74p1:1------> say <⏏>; # what if I… | ||
PerlJam | lue: () is just as easy to type as <> | 21:47 | |
masak | what PerlJam said. | 21:48 | |
lue | [This is definitely not that annoying use case I found a long time ago, but it's the only one I thought of quickly.] But... what if I *want* to use angle brackets for their aesthetics? | ||
masak | timotimo: oh! I ususally go `say ''`, because I usually use `say` as a listop. | ||
FROGGS | but it would be cool to have a pragma that says: hey, I am a Perl 6 dev and I know what I do | ||
PerlJam | lue: then we modify your desires so that you conform to the norm ;) | ||
masak | lue: then you have to wait until Perl 6.7, when they're de-deprecated again because Perl 5 is going out of production. | 21:49 | |
FROGGS: there will be modules. :) | |||
FROGGS | a module that changes the grammar? :P | ||
lue | My point is that I think a "no P5 warnings" switch/flag/etc. would exist, simply for people (like me) who are not liable to accidentaly a language they never learned. | ||
s/would/should/ | 21:50 | ||
PerlJam | lue: I can see that. | ||
lue | FROGGS: sure. Just use a slang :) | ||
masak | right. | 21:52 | |
FROGGS | one would just have to know out the special_variables category... | 21:54 | |
knock out* | |||
21:55
stevan_ left
|
|||
lue is still waiting to be able to implement use X::Insulting | 21:58 | ||
FROGGS | lue: yeaah! I wanna have that too! | ||
21:58
pmurias joined
|
|||
FROGGS | "Redeclaration of variable $x you useless lump!" | 21:59 | |
lue | r: use MONKEY_TYPING; augment class X::AdHoc { supersede method message() { "Humorous Comment: " ~ $.payload.Str } }; die 42; # :( | ||
camelia | rakudo c0814a: OUTPUT«===SORRY!=== Error while compiling /tmp/xkfz1ZdWhe"supersede" not yet implemented. Sorry. at /tmp/xkfz1ZdWhe:1------> "Humorous Comment: " ~ $.payload.Str } ⏏}; die 42; # :( expecting any of: method arguments … | ||
pmurias | timotimo: what are the results of the richards benchmark? | ||
21:59
xinming left
|
|||
FROGGS | r: use MONKEY_TYPING; augment class X::AdHoc { method message() { "Humorous Comment: " ~ $.payload.Str } }; die 42; | 22:00 | |
camelia | rakudo c0814a: OUTPUT«===SORRY!=== Error while compiling /tmp/ZTFT78KGhXPackage 'X::AdHoc' already has a Method 'message' (did you mean to declare a multi-method?)at /tmp/ZTFT78KGhX:1------> » | ||
lue | My example uses the (likely incorrect) assumption that augment means 'modify object' and supersede means 'replace object' | ||
FROGGS | I think your assumption is correct | ||
masak | yeah, I don't know why that use of 'augment' doesn't work. | 22:01 | |
22:01
xinming joined
|
|||
timotimo | r: use MONKEY_TYPING; augment class X::AdHoc { only method message() { "Humorous Comment: " ~ $.payload.Str } }; die 42; | 22:01 | |
camelia | rakudo c0814a: OUTPUT«===SORRY!=== Error while compiling /tmp/bARLhF4FNrPackage 'X::AdHoc' already has a Method 'message' (did you mean to declare a multi-method?)at /tmp/bARLhF4FNr:1------> » | ||
timotimo | r: use MONKEY_TYPING; augment class X::AdHoc { supercede method message() { "Humorous Comment: " ~ $.payload.Str } }; die 42; | 22:02 | |
camelia | rakudo c0814a: OUTPUT«===SORRY!=== Error while compiling /tmp/KY2yjiarxXPackage 'X::AdHoc' already has a Method 'message' (did you mean to declare a multi-method?)at /tmp/KY2yjiarxX:1------> » | ||
timotimo | who knows. | ||
pmurias | timotimo: you have fully ported over the richards benchmark? | ||
timotimo | to nqp, yes | ||
to perl6, no. | |||
pmurias | awesome | ||
lue | I personally like the idea of having to use supersede on the method as well as augment the class, as a reminder to myself that I'm replacing an existing method. | ||
timotimo | could not debug it and it behaves strangely | ||
want to have it? :) | |||
pmurias | I could take a look | 22:03 | |
pmurias likes debugging others people code ;) | |||
timotimo: if you put in on github I can try to fix it | 22:04 | ||
timotimo | can't seem to gist it right noo | 22:05 | |
probably just the multi-file gist problem | |||
i'm pretty certain i missed some changes when porting it over from nqp, i made changes here and there | |||
oh, i can't create any gists at alls | |||
lue would also like the alternate spelling of "supercede", as he somehow continually tries that spelling first. That's one for the modules though, I would guess. | 22:06 | ||
timotimo | gist.github.com/timo/6236138 is the nqp version | ||
pmurias | re nqp version, is there a different version? | ||
timotimo | has both versions | 22:07 | |
refresh please | |||
pmurias | what's the benefit of gist over a repo? | 22:08 | |
timotimo: the perl6 version behaves strangely? or the nqp one? | 22:09 | ||
timotimo | perl6. | 22:11 | |
a gist is a repo, too | |||
22:12
fridim_ joined
|
|||
evant | pmurias: Gists are fast. They're like pastebin. | 22:12 | |
masak | 'night, #perl6 | ||
segomos | FROGGS: still trying to figure out where i can override the 'use' keyword, any hints? | ||
22:14
zwut00 left
22:15
jeff_s1 joined
|
|||
pmurias | timotimo: so now we need a benchmarking harness which runs the test multiple, avarages the results, computes a score etc.? | 22:16 | |
timotimo | that already exists | ||
perl6-bench in japhb's account | |||
22:18
benabik left
|
|||
pmurias | did you try using it with the richards benchmark? | 22:21 | |
timotimo | not yet | 22:22 | |
i wasn't able to get the perl6 version up before my frustration ceiling has been reached | |||
pmurias | hmm perl6-bench doesn't seem like what we want | 22:26 | |
it seem to run the benchmark every time in a new process, which would make the startup time heavily dominant | 22:27 | ||
timotimo | no | 22:28 | |
it calculates the startup time | |||
you need to take a SCALE argument on the commandline that can go down to 0 | |||
pmurias | calculates the startup time? | 22:29 | |
22:29
ajr_ left
|
|||
pmurias | how? | 22:29 | |
timotimo | run a no-work workload | ||
22:32
btyler_ joined
22:34
btyler left
|
|||
pmurias | doesn't seem sane | 22:35 | |
timotimo | you think so? | 22:36 | |
pmurias | the startup time of a hello world and a bigger thing doesn't have to be equal | 22:38 | |
timotimo | uh ... | 22:39 | |
pmurias | the richards benchmark can run like 700 hundred time per second on dart | ||
timotimo | well of course not. | ||
that's why you run the benchmark with zero workload | |||
and not a hello world | |||
pmurias | github.com/dart-lang/benchmark_har..._base.dart seems simple enough for me to port | 22:40 | |
timotimo | yeah okay but why? | ||
22:41
denis_boyun_ left
|
|||
pmurias | for one it would allow better comparision | 22:41 | |
with dart and js | |||
timotimo | haha, you really think we're going to compete? | 22:43 | |
you cray. | |||
22:59
btyler_ left
|
|||
pmurias | timotimo: competing and winning are different things ;) | 23:07 | |
23:09
Colby` joined,
Pleiades` left,
Colby` is now known as Pleiades`
|
|||
pmurias | timotimo: with enough effort nqp/rakudo-js should be able to compete with dart-js | 23:10 | |
23:12
berekuk left,
berekuk joined
23:14
berekuk left
|
|||
celesta | good night #perl6 | 23:20 | |
23:20
celesta left
23:30
sidus left
|