»ö« 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. |
|||
jnthn | Well, no, the hard problem is you need to arrange an early return of the block that invoked the binder also. | 00:00 | |
Which probably needs a little C-level work... | |||
timotimo | ah, so that's something i know nothing about agani :) | 00:01 | |
again* | |||
jnthn | That's why it's not quite an LHF | ||
timotimo | where do i have to look to find the code that calls this specific piece of binder? | ||
colomon | jnthn! \o/ | ||
jnthn | It lives in BOOTSTRAP | ||
Oh, that calls it? The moar version of Ops.nqp. That's where p6bindsig is generated from | |||
timotimo | OK | 00:02 | |
jnthn | Oh, there's a non-C way... | ||
Change the code-gen | |||
timotimo | i've done code-gen before, but not much for moar | ||
jnthn | If the thing p6bindsig calls returns non-null, immediately do a return_o on it. | ||
Otherwise continue | |||
timotimo | that seems easy enough! | ||
jnthn | Then make the non-Junction path of the appropriate method in BOOTSTRAP return null | 00:03 | |
And done. | |||
timotimo | cool. consider it maybe perhaps done! | ||
jnthn | That is more robust than C hacking even if it's a couple of extra instructions... | ||
timotimo | o> | ||
oh. is it enough to change the implementation of p6bindsig in Ops.nqp? | 00:04 | ||
or do i have to go all the way into the QASTCompilerMAST? | |||
jnthn | Just in Ops.nqp | 00:05 | |
timotimo | great | 00:06 | |
00:15
mohij left
|
|||
timotimo | jnthn: aren't we wasting a lot of performance by making binding a method call on the binder object? | 00:18 | |
or is a method call on a WVal compile-time-resolved? | |||
jnthn | timotimo: Method calls aren't *that* expensive. | 00:19 | |
timotimo: No, compile time isn't right, but that's the place where something like invokedynamic or Moar's type specializer stuff come in. | 00:20 | ||
timotimo: Further, within a month or two I'll have many cases of binding doing something cheaper than the full-blown binder anyways... | 00:21 | ||
timotimo | right. cool :) | ||
what :decl do i use for a local? | 00:22 | ||
:decl('var')? | |||
the return_o would be a QAST::VM.new( :mastop('return_o'), QAST::Var.new( ... ) ), yes? | 00:23 | ||
ah, decl('var') is correct | 00:24 | ||
jnthn | timotimo: Oh, I'd do the code-gen a little more manually than that | 00:25 | |
timotimo | yup, moarop | ||
maybe at first i'll make it a QAST tree and then do the MAST out of it if it works? | |||
jnthn | That is, compile the existing thing we have, push those instructions onto a new list (see other ops for examples), then use fresh_o to get a temporary register, etc. | ||
Well, could do, but this is hot/common enough to deserve being done without creating a full-on local... | 00:26 | ||
timotimo | how come there's :foo('bar') so often in that file rather than :foo<bar>? | ||
jnthn | Habbit, I guess. :) | 00:27 | |
timotimo | oh, a local is more than one register? | ||
jnthn | It's one register, but it's lifetime is for the frame. | ||
timotimo | i put it into a Stmts in the hopes of getting fresh registers that way and have them deallocated afterwards | ||
jnthn | No, locals are per frame. | ||
timotimo | oops :) | ||
jnthn | Which is why I'm saying not to do it that way :) | 00:28 | |
Or, a reason... :) | |||
timotimo | it would perhaps be cool if we could do something on the QAST level that gets us registers instead of full locals if we can prove something or other | ||
because at that level we already have an optimizer that can do stuff | 00:29 | ||
also, that could explain why my "lexicals to locals" optimization made no performance difference whatsoever | |||
i have to tell $qastcomp.as_mast what register to store its results in, right? | 00:30 | ||
jnthn | No, just make sure you pass :want($MVM_reg_obj) and then the object you get back will have a .result_reg | 00:31 | |
Various examples like this should exit | |||
*exist | |||
timotimo | 'k | ||
that way i won't even have to do the regalloc dance! :) | 00:32 | ||
jnthn | You still need to release that obj register | 00:33 | |
And you'll need a fresh_i temporary too for the result of isnull I guess... :) | |||
timotimo | oh? right. | ||
jnthn | Dance, regalloc monkey! | 00:34 | |
timotimo | fresh_i will give me an int64? or should i get a smaller one? | 00:35 | |
jnthn | Yeah, and that's what you want | ||
timotimo | good | ||
00:38
Rotwang left
|
|||
timotimo | oh. the p6bindsig should probably return the result of the bind_sig method call, aye? | 00:39 | |
that means i shouldn't release the register, right? | |||
jnthn | No, p6bindsig is always in void context. | ||
timotimo | OK | ||
what do i pass to the constructor of MAST::InstructionList then? | 00:40 | ||
jnthn | So you can hand back MAST::VOID or so instead of a register | ||
timotimo | just the @ops? | ||
ah, ok | |||
jnthn | And I think there's an $MVM_reg_void for the kind | ||
timotimo | excellent. let me try to compile it | ||
i had to copypaste $MVM_reg_void first, but now it could work | 00:45 | ||
jnthn | yay | 00:48 | |
timotimo | This REPR cannot change type | 00:49 | |
not quite sure what i dun wrongs :| | |||
oh, wait | |||
jnthn | wtf... :) | ||
timotimo | i'm not actually invoking the autothreader at all yet | ||
i think i need to re-read how i'm supposed to implement this | |||
jnthn | hehe | ||
00:50
hoverboard left
|
|||
timotimo | ah, i think i implemented it wrongly | 00:50 | |
i return nqp::null if it was a junction | |||
where i should do Junction.AUTOTHREAD($caller, $sig), right? (or perhaps |$sig?) | |||
dalek | kudo/moar_autothread: 63a4f5e | (Timo Paulssen)++ | src/ (2 files): first attempt at autothreading for moarvm |
00:52 | |
timotimo | you can have a look at how i misunderstood you :P | ||
jnthn | You can't return nqp::null if it was a junction | 00:53 | |
You need to return the junction result! | |||
timotimo | isn't that what i did? | ||
jnthn | < timotimo> i return nqp::null if it was a junction | ||
timotimo | yes, that's what i did wrong :) | ||
look at the diff now | |||
oh, haha | |||
it's kinda late here %) | 00:54 | ||
jnthn | That nqp::null(); needs to be an extra level out | ||
Well, or in an else, more like. | |||
timotimo | oh? i put a return in front of the Junction.... instead | ||
jnthn | Off the if $bind_res { | ||
But you don't return null if the bind is OK | |||
00:54
finanalyst joined
|
|||
timotimo | ah, now i understand | 00:54 | |
jnthn | That nqp::null is dead code as you have it. | ||
timotimo | it is! :) | 00:55 | |
and now: it was! | |||
finanalyst | jnthn: how do i get a perl6 using the jvm? | ||
jnthn | The code-gen looks right... | ||
timotimo | now i'm getting somewhere | 00:56 | |
jnthn | finanalyst: Well, easy way is something like perl Configure.pl --backend=jvm --gen-nqp | ||
timotimo | i got through stage parse this time :) | ||
finanalyst | i've tried looking on the net, and read your blogs, but I couldnt find any info on the configure | ||
jnthn: thanx. Can i do this in the same rakudo star directory as the parrot one? i mean will this clobber perl6 under parrot? | 00:57 | ||
jnthn | finanalyst: You missed the "Building Rakudo on JVM" section of the README too? :P | ||
timotimo | jnthn: will there be any reason to have an op that never checks for null, instead knowing that no junction could have ever come here? | ||
jnthn | finanalyst: Oh...there's not a JVM-based Rakudo Star yet. | ||
finanalyst: That's probably why you missed it. This is just for building a Rakudo on JVM... | 00:58 | ||
timotimo | timo@schmetterling ~/p/rakudo (moar_autothread)> ./perl6-m -e 'say 10|20|30' | ||
any(10, 20, 30) | |||
that's not quite it %) | |||
oh | |||
wait, it is! | |||
jnthn | timotimo: It is 'cus say gists junctions... | ||
00:58
hoverboard joined
|
|||
jnthn | timotimo: Try say 1 + 2 | 3; | 00:58 | |
timotimo | This type does not support elems at src/gen/m-CORE.setting:3204 (/home/timo/perl6/rakudo/../install/languages/perl6/runtime/./CORE.setting.moarvm:AUTOTHREAD:12) | ||
this i can work with. | |||
1 + 2 | 3 gives me any(3, 3) | 00:59 | ||
so .. that would be right? | |||
jnthn | What's 1 + (2 | 3) give? :) | ||
timotimo | the error seen above | ||
i'll have a closer look | |||
might be |$sig is wrong | |||
jnthn | moment... | 01:00 | |
timotimo: I think you're passing the wrong things... | 01:01 | ||
timotimo | yes, i might :| | ||
jnthn | Junction.AUTOTHREAD($caller, |$sig); | ||
timotimo | that's my current code, isn't it? | 01:02 | |
jnthn | Yeah | ||
timotimo | OK | ||
jnthn | It's the capture you want though... | ||
timotimo | oh, i have to pass ... yeah | ||
|ed? | |||
it seems like AUTOTHREAD has |args in its signature | |||
and deconts that and gets its $!list from the Capture class | 01:03 | ||
jnthn | Yeah, but I don't think you can just | it | ||
You need to get the positional and hash bit of it I think... | |||
timotimo | i'll have to do the equivalent of parrot's implementation where it unshifts the ... oh? | ||
i think i can do that | |||
jnthn | No, MVMCallCapture is not that mutable... | ||
Getting the hash bit is easy, I think... | 01:04 | ||
timotimo | yeah, i can nqp::getattr the $!list and $!hash | ||
from the Capture class | |||
jnthn | No, no... | ||
$capture isn't one of those | |||
It's a low-level MoarVM CallCapture thingy | 01:05 | ||
timotimo | oooh | ||
jnthn | nqp::capturenamedshash($capture) will get you the hash part. | ||
timotimo | thanks | ||
jnthn | See the code that fills up @pos_args starting around line 578 for how to extract the positionals, boxing them as you go. | 01:06 | |
Then that @pos_args, and the thing nqp::capturenamedshash gives you, are both things you can | into the arglist. | |||
timotimo | thanks | ||
so i |@my_pos_args, |%(nqp::getnamedshash(...))? | 01:07 | ||
Heap corruption detected: pointer 0x7f5d228d91f8 to past fromspace | 01:09 | ||
>_< | |||
jnthn | Something like that... | 01:10 | |
eek | |||
More torture needed, evidently... | |||
timotimo bisects | |||
if i remove my loop, it's all fine and dandy | 01:11 | ||
this happens when compiling the bootstrap, fwiw | |||
jnthn | I suspect it's heisenbug... | ||
timotimo | yes, seems heisenbugish | 01:13 | |
commenting out either one of the three push + box + captureposarg lines, it passes | 01:14 | ||
01:17
jnap joined
01:28
cognominal left,
cognominal joined
01:35
espadrine left
|
|||
dalek | kudo/moar_autothread: 3ead913 | (Timo Paulssen)++ | src/ (2 files): first attempt at autothreading for moarvm |
01:38 | |
01:39
dayangkun joined
|
|||
jnthn | 'night, #perl6 | 01:41 | |
colomon | \o | ||
01:44
Mouq left
|
|||
timotimo | Type check failed in bind; expected Str but got Str 1 | 01:54 | |
that 1 there is the result of nqp::istype($got, $want) | |||
m) | |||
01:57
dayangkun left
02:05
Mouq joined
02:09
dayangkun joined
02:30
Mouq left
02:31
ssutch joined
02:32
ssutch left
02:38
Mouq joined
02:40
jnap left
03:38
xinming_ left
03:40
xinming joined,
nnunley_ left,
xinming left
03:44
pmurias left
03:45
finanalyst left,
xinming joined
03:56
atroxaper joined
04:01
ssutch joined
04:26
ssutch left
04:37
preflex left
04:39
preflex joined,
ChanServ sets mode: +v preflex
05:07
raiph left
05:17
Mouq left
05:31
test0123 joined,
test0123 left
06:16
cibs joined
06:51
finanalyst joined
06:52
raiph joined
06:54
takesako joined
07:01
kaleem joined,
MihaiPop joined
07:02
MihaiPop left
07:08
sqirrel joined
07:25
thou left
07:32
sqirrel left
07:34
darutoko joined
07:39
Guest65081 left,
Guest65081 joined,
sjohnson left,
FROGGS left
07:48
torbjorn joined,
hoelzro joined,
yogan joined,
Celelibi joined,
pnu joined,
japhb_ joined,
rurban joined,
tokuhirom joined,
atrodo joined,
dylanwh joined,
zakalwe left
07:49
zakalwe joined
07:50
sqirrel joined
07:59
sjohnson joined,
sjohnson left,
sjohnson joined
|
|||
moritz | timotimo: containerization fail? | 08:03 | |
08:08
zakharyas joined,
sqirrel left
|
|||
arnsholt | timotimo: How'd you get that result? That sounds really weird... | 08:15 | |
08:16
BenGoldberg left
08:17
slavik joined
08:18
baest_ is now known as baest
08:20
FROGGS joined
08:26
bibifuc left
08:34
raiph left
08:36
[particle] left
08:37
[particle] joined
|
|||
moritz | breaking the autothreader would do that :-) | 08:43 | |
08:44
erkan joined,
erkan left,
erkan joined
08:46
finanalyst left,
espadrine joined
08:55
sqirrel joined
|
|||
masak | good morning, #perl6 | 08:56 | |
FROGGS | o/ | ||
08:58
finanalyst joined
|
|||
xfix | codegolf.stackexchange.com/a/17726/3103 | 09:08 | |
Interesting how Perl 6 can make nice code golf programs (but I still lost to GolfScript). | |||
rn: say [~] pick *,^9 | 09:09 | ||
camelia | rakudo-parrot e5268b: OUTPUT«653170482» | ||
..rakudo-jvm e5268b: OUTPUT«827341506» | |||
..niecza v24-109-g48a8de3: OUTPUT«(timeout)[auto-compiling setting]» | |||
xfix | Uh oh. Timeout during compilation. This won't break stuff, right? | ||
masak | xfix: ^9 is 0 to 8, not 0 to 9 | 09:10 | |
xfix | lol, fail | ||
fixed | 09:11 | ||
rn: say [~] pick *,^9 | |||
rn: say [~] pick *,^10 | |||
camelia | rakudo-jvm e5268b: OUTPUT«037426815» | ||
..niecza v24-109-g48a8de3: OUTPUT«(timeout)[auto-compiling setting]» | |||
..rakudo-parrot e5268b: OUTPUT«861047523» | |||
rakudo-jvm e5268b: OUTPUT«8730126954» | |||
..niecza v24-109-g48a8de3: OUTPUT«(timeout)[auto-compiling setting]» | |||
..rakudo-parrot e5268b: OUTPUT«9145730628» | |||
xfix | rn: say [~]pick *,^10 | 09:14 | |
std: say [~]pick *,^10 | 09:15 | ||
09:15
mathw_ is now known as mathw
|
|||
camelia | rakudo-jvm e5268b: OUTPUT«===SORRY!=== Error while compiling /tmp/DyR3OxY2EqTwo terms in a rowat /tmp/DyR3OxY2Eq:1------> say [~]⏏pick *,^10 expecting any of: argument list postfix infix stopper …» | 09:15 | |
..niecza v24-109-g48a8de3: OUTPUT«(timeout)[auto-compiling setting]» | |||
..rakudo-parrot e5268b: OUTPUT«===SORRY!=== Error while compiling /tmp/RbjR_FOk6eTwo terms in a rowat /tmp/RbjR_FOk6e:1------> say [~]⏏pick *,^10 expecting any of: argument list postfix infix stopper…» | |||
std 09dda5b: OUTPUT«===SORRY!===Two terms in a row (listop with args requires whitespace or parens) at /tmp/3iNTbZlQNY line 1:------> say [~]⏏pick *,^10 expecting any of: POST argument list feed_separator infix or meta-i…» | |||
09:15
lestrrat left
09:17
lestrrat joined,
atroxaper left
|
|||
hoelzro | morning #perl6! | 09:20 | |
FROGGS | xfix: looks more like niecza is broken on the server where camelia is running | ||
09:21
aindilis left
09:24
darutoko- joined
09:25
darutoko left
09:26
SamuraiJack joined
09:32
dakkar joined
09:37
yves joined
|
|||
jnthn | morning o/ | 09:41 | |
masak | jnthn! \o/ | 09:43 | |
09:44
denis_boyun joined
09:46
[Sno] left
|
|||
FROGGS | morning jnthn | 09:47 | |
09:47
[Sno] joined
09:48
darutoko joined
09:51
darutoko- left
09:53
mtj_ left
09:55
mtj_ joined
09:58
hoverboard left
10:01
Zitrus joined,
Rotwang joined
|
|||
moritz | n: 42 | 10:04 | |
camelia | niecza v24-109-g48a8de3: OUTPUT«(timeout)[auto-compiling setting]» | ||
10:09
Zitrus left
10:10
rjbs left,
rjbs joined
10:20
sqirrel left
10:23
wooden left
10:25
daniel-s_ joined
10:31
grondilu joined
10:38
aindilis joined
10:59
mohij joined
11:10
SamuraiJack left
11:16
berekuk joined
|
|||
dalek | kudo/moar-support: ccf4e13 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp: Fix optional array/hash params. |
11:19 | |
jnthn | That fixes the split tests, at least... | ||
FROGGS | jnthn++ | 11:20 | |
jnthn | j: my $a = nqp::null() | 11:45 | |
camelia | rakudo-jvm e5268b: OUTPUT«java.lang.NullPointerException» | ||
jnthn | p: my $a = nqp::null() | ||
camelia | rakudo-parrot e5268b: OUTPUT«Cannot assign a non-Perl 6 value to a Perl 6 container in block at /tmp/MFHoaPyitD:1» | ||
11:47
sqirrel joined
11:59
brother| is now known as brother
12:02
pmurias joined
|
|||
pmurias | how does the speed of nqp-moar compare to nqp-parrot? | 12:02 | |
12:02
darutoko- joined
|
|||
grondilu | pmurias: from what I've tried (not much), moar is a bit slower so far. | 12:03 | |
12:05
atroxaper joined,
darutoko left
|
|||
jnthn | Probably depends what you do. It runs NQP "make test" faster at least... | 12:06 | |
12:06
darutoko joined
|
|||
jnthn | And parses CORE.setting faster. Loses out due to slow stage at the end, though... | 12:06 | |
pmurias | I'm considering if it makes sense to switch nqp-js to use nqp-moar instead of nqp-parrot | 12:07 | |
jnthn: what's the slow stage? | |||
FROGGS | stage mast | ||
jnthn | pmurias: QAST -> MAST | ||
code-gen | |||
12:07
shinobicl joined
|
|||
grondilu tried only basic stuff, like counting in for loops. | 12:07 | ||
FROGGS | pmurias: you might want to wait another week, so more spectests pass | 12:08 | |
12:08
darutoko- left
|
|||
pmurias | nqp-js so the amount of spectests nqp-moar passes isn't a big concern | 12:09 | |
jnthn: why is that so expensive? | |||
jnthn | pmurias: Dunno yet. | 12:10 | |
pmurias: More focused on getting stuff working at the moment... | 12:11 | ||
pmurias | seems resonable | 12:18 | |
12:18
darutoko left
|
|||
pmurias | :), nqp-js hasn't bitrotten recently | 12:22 | |
12:23
darutoko joined
|
|||
FROGGS | pmurias: good for you :o) | 12:26 | |
when I leave v5 unattended for more than two weeks, it is broken most times | 12:27 | ||
12:29
slavik left
12:31
Guest65081 left
12:39
daniel-s_ left
|
|||
pmurias | do we have NaN and infinities in nqp numbers? | 12:39 | |
FROGGS | yes | 12:40 | |
nqp: say(nqp::inf) | 12:41 | ||
camelia | nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«Inf» | ||
FROGGS | nqp: say(nqp::isnanorif(nqp::inf)) | ||
camelia | nqp-moarvm: OUTPUT«Error while compiling op isnanorif (source text: "nqp::isnanorif(nqp::inf)"): No registered operation handler for 'isnanorif'frame_name_1109» | ||
..nqp-parrot: OUTPUT«Error while compiling op isnanorif (source text: "nqp::isnanorif(nqp::inf)"): No registered operation handler for 'isnanorif'current instr.: '' pc 57054 (gen/parrot/stage2/QAST.pir:21045) (gen/parrot/stage2/QAST.nqp:3631)» | |||
..nqp-jvm: OUTPUT«Method 'type' not found for invocant of class 'NQPMu' in coerce (gen/jvm/stage2/QAST.nqp:4205) in as_jast (gen/jvm/stage2/QAST.nqp:2988) in (gen/jvm/stage2/QAST.nqp:3785) in compile_all_the_stmts (gen/jvm/stage2/QAST.nqp:3773) in as_jast (gen/jvm…» | |||
FROGGS | nqp: say(nqp::isnanorinf(nqp::inf)) | ||
camelia | nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«1» | ||
12:42
ilbot_pg joined
12:43
ilbot_pg left
12:44
ilbot_pg joined
|
|||
arnsholt crosses fingers | 12:44 | ||
FROGGS | arnsholt: what's up? | ||
12:44
cognominal left
|
|||
arnsholt | Trying a bit of a long shot at fixing NQP #46 | 12:45 | |
12:45
cognominal joined
|
|||
colomon | arnsholt++ | 12:45 | |
arnsholt | But no =/ | 12:46 | |
12:46
slavik joined
|
|||
FROGGS | :/ | 12:47 | |
jnthn | Well, in NQP I think it is syntactic about how it flattens (array vs hash) | ||
May be an easier fix in Rakudo... | 12:48 | ||
pmurias | why do we have both log10 and log (which takes a base)? | ||
pmurias is fixing NQP #130 | 12:49 | ||
arnsholt | jnthn: The reason it bugs me is that both the subrule call and the method call parse the argument list using the main arglist rule, and thus should have the same AST for it | 12:50 | |
And there's the annoying hash flattening problem on JVM, which I'm not sure if is related or not (but probably not, I think) | 12:51 | ||
pmurias | nqp::log_n and nqp::ln_n appear to do the same thing | ||
shouldn't we remove one? | |||
moritz | +1 | 12:53 | |
arnsholt | I agree | 12:54 | |
pmurias | which one gets to stay? | ||
12:54
xenoterracide left
|
|||
pmurias | nqp::log_n is used by rakudo, so it would be easier to remove nqp::ln_n | 12:56 | |
jnthn | Yeah, if they're dupe, remove one. | ||
And removing the one Rakudo ain't using is easiest. May be worth looking over the various backends to find the dupe. | |||
If it's more widespread. | |||
arnsholt | I think all three backends have both ops | 12:57 | |
dalek | kudo/moar-support: 21a1699 | jnthn++ | src/vm/moar/ops/container.c: Disallow assigning null. |
12:58 | |
kudo/moar-support: 0397a49 | jnthn++ | src/core/ (2 files): Get runtime backtrace reporting working on Moar. |
|||
jnthn | [Coke]: 0397a49 should mean that today's run gives much more informative failure modes. | ||
FROGGS | jnthn++ # \o/ | 12:59 | |
dalek | p: 6d67680 | (Pawel Murias)++ | t/nqp/83-log.t: Add a test for nqp::log_n. |
||
13:00
berekuk left
13:02
nebuchadnezzar left
|
|||
dalek | kudo-js: bd301f6 | (Pawel Murias)++ | run_tests: Switch to using nqp-p for running QAST tests. |
13:03 | |
kudo-js: 1573742 | (Pawel Murias)++ | run_tests: Remove comment. |
|||
kudo-js: 6ba98c7 | (Pawel Murias)++ | nqp: Update the submodule to newest nqp. |
|||
kudo-js: fc92369 | (Pawel Murias)++ | / (3 files): Implement nqp::log_n. |
|||
kudo-js: 3b97d73 | (Pawel Murias)++ | run_tests: Add passing test to run_tests. |
13:04 | ||
nwc10 | \o/ rakudo-js is back | 13:05 | |
13:05
xenoterracide joined
|
|||
nwc10 | watch out MoarVM, the race is back on | 13:05 | |
FROGGS | :P | ||
13:06
espadrine left
13:07
berekuk joined
13:08
espadrine joined
13:09
kaleem left
13:12
nebuchadnezzar joined
13:17
camelia left,
dmol joined
13:19
berekuk left
|
|||
dalek | rl6-roast-data: 5d56d9e | coke++ | / (3 files): today (automated commit) |
13:24 | |
13:24
camelia joined
13:26
ChanServ sets mode: +v camelia
13:34
xinming left,
denis_boyun left
13:38
berekuk joined
|
|||
[Coke] | diakopter: fyi, I'm pushing the runtimes of the daily stuff on host06 earlier today, trying to get them towards your original request, which I think was "done before you wake up". | 13:39 | |
jnthn | 78.42% \o/ | 13:40 | |
timotimo | jnthn: did you see the way moarvm + autothreader fails now? | ||
jnthn | timotimo: Ah, was gonna ask you what current state is... :) | ||
How's it fail now? | |||
timotimo | i can tell you :P | ||
the code it gens for p6bindassert looks like "get the value, then the type. run the istype op on it and if it returns 1, skip to success" | 13:41 | ||
it doesn't skip to success and running nqp::istype on the values just like the codegen would returns 1 | |||
so ... heisenbug? missing root or something in istype? | |||
jnthn | Lemme look... | ||
Ah... | 13:43 | ||
13:47
ggoebel118 joined
13:50
kbaker joined
|
|||
dalek | kudo/moar-support: 095c777 | jnthn++ | src/vm/moar/Perl6/Ops.nqp: Missing decont in p6bindassert. |
13:53 | |
13:53
kaleem joined
|
|||
jnthn | timotimo: ^^ | 13:53 | |
timotimo | yay | ||
i'll try that | |||
jnthn | say any(-1,2).abs # works with that :) | 13:54 | |
timotimo | \o/ | ||
13:56
xinming joined
|
|||
xfix | Interesting. Ruby 2.1.0 has 1/3r syntax, which does what 1/3 does in Perl 6. | 14:02 | |
timotimo | not ok 88 - an & junction right of a | junction will be autothreaded first | 14:05 | |
# got: 'all(any("\x[64]\x[6f]\x[67]\x[20]\x[31]\x[20]\x[31]\x[30]", "\x[64]\x[6f]\x[67]\x[20]\x[32]\x[20]\x[31]\x[30]"), any("\x[64]\x[6f]\x[67]\x[20]\x[31]\x[20]\x[32]\x[30]", "\x[64]\x[6f]\x[67]\x[20]\x[32]\x[20]\x[32]\x[30]"))' | |||
# expected: 'all(any("dog 1 10", "dog 2 10"), any("dog 1 20", "dog 2 20"))' | |||
how did that happen? %) | |||
grondilu | r: say <1/3>.WHAT | ||
camelia | rakudo-parrot e5268b, rakudo-jvm e5268b: OUTPUT«(Str)» | ||
grondilu | n: say <1/3>.WHAT | ||
camelia | niecza v24-109-g48a8de3: OUTPUT«(timeout)[auto-compiling setting]» | 14:06 | |
timotimo | i mean ... the string matches, but why is it escaped like that? | ||
xfix | timotimo, overescaping in `.perl`, perhaps. | ||
(but I agree, this is silly... considering it's almost impossible to debug this) | |||
timotimo | yeah, but the source is the same, how does moar get the idea that it *should*? | ||
xfix | I'm almost sure that if "p" function in Ruby would escape like that, nobody would use it. | 14:07 | |
timotimo | maybe nqp::iscclass( nqp::const::CCLASS_PRINTING ) done goofed up? | 14:08 | |
jnthn | timotimo: Potentially | ||
timotimo: Does auto-threading now work in general? | 14:09 | ||
timotimo | it seems so! :D | ||
but yeah, the iscclass gives 0 for "d", which is obviously not correct | 14:10 | ||
timotimo looks into it | |||
also, i bet the perl method for Str could be much more efficient | |||
jnthn | timotimo: yay | ||
jnthn hopes timotimo++ will push the junction thing before today's roast run starts :) | |||
timotimo | oh. yeah sure i can rebase and push :) | 14:11 | |
dalek | kudo/moar-support: 279cb49 | (Timo Paulssen)++ | src/ (2 files): implement autothreading for junctions |
14:13 | |
timotimo | ah, the PRINTING cclass isn't implemented in moarvm | 14:15 | |
jnthn: can has moarvm commit bit? :) | 14:17 | ||
dalek | p: 2eed549 | (Tobias Leich)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp: return the encoding we set, so we return something |
14:18 | |
14:19
bluescreen10 joined
|
|||
dalek | kudo/moar-support: 9d045f1 | (Tobias Leich)++ | src/core/control.pm: pass decontainerized ENV to shell/run and spawn |
14:20 | |
14:23
wooden joined
|
|||
timotimo | without an internet connection to my desktop it is surprisingly hard to find out the definition of printing characters in Unicode | 14:25 | |
masak | just iterate over all of them an test them against [:print:] | 14:26 | |
:P | |||
timotimo | sounds like a great idea | ||
jnthn | timotimo: Commit bit given | 14:29 | |
14:30
johnmilton joined
14:44
kaleem left,
kaleem joined
|
|||
timotimo | hum. libicu says printing is true for anything but the general category C | 14:45 | |
there is no UPV_C* constant in moarvm :( | |||
masak is back to looking at t4 submissions | 14:47 | ||
timotimo makes it so | |||
14:48
ajr joined
|
|||
jnthn | [Coke]: Am just working on fixing the Test.pm mis-pre-compile so that hopefully JVM spectest will go faster | 14:49 | |
14:49
ajr is now known as Guest810,
Guest810 is now known as ajr_
|
|||
[Coke] | jnthn: is it recompiling Test.pm so it builds each time? (that's got to be doubly slowo on the jvm) | 14:55 | |
jnthn | yeah...got it fixed locally, it seems | ||
[Coke] | today's run just started, but the individual impls's don't checkout until it's there turn, so there's hope. :) | 14:56 | |
14:56
kaleem left
|
|||
dalek | kudo-star-daily: c6402d0 | coke++ | log/ (5 files): today (automated commit) |
14:57 | |
timotimo | jnthn: how are you testing it? with a BEGIN say "omg it compiles!"? :) | ||
jnthn | timotimo: Well, just doing a spectest run to see we make it some way into it... :) | ||
timotimo | ah, hehe | 14:58 | |
14:58
ilbot_pg left
|
|||
dalek | kudo/nom: 5669b2a | jnthn++ | tools/build/Makefile-JVM.in: Put Test.jar in the right place for spectest. Should speed up the JVM spectest run a good bit. |
14:58 | |
masak | TimToady++ # RENAME(1) | ||
timotimo | \o/ | ||
FROGGS | RENAME(1) ? | 14:59 | |
what is that about? | |||
diakopter | [Coke]: heh I didn't have a timeframe on my request :P | 15:00 | |
masak | FROGGS: 'man rename' | ||
FROGGS: think of it as multiplayer 'mv' | |||
moritz | mv with perl (5) expression support | 15:01 | |
FROGGS | masak: I see :o) | ||
moritz | rename '$_=uc' *.txt | ||
15:04
thou joined,
ilbot_pg joined
15:08
raiph joined
|
|||
arnsholt | Wow. I had no idea it's really impractical to bundle JARs you depend on in your JAR | 15:11 | |
15:18
robinsmidsrod left
15:20
robinsmidsrod joined
15:24
sqirrel left
15:26
Vilas_M joined,
shinobicl left
15:28
Vilas_M left
15:57
SamuraiJack joined
15:58
Psyche^_ joined
16:02
denis_boyun joined
16:03
Psyche^ left
16:10
jnap joined,
pmurias left
16:13
Lorn joined
|
|||
sjn | hey, anyone here planning on going to FOSDEM? | 16:23 | |
(other than lizmat and woolfy :) | |||
FROGGS | sjn: ask dagurval | ||
sjn | wow, another Norwegian in #perl6? :) | 16:25 | |
dagurval: you going? :) | |||
16:26
d4l3k_ joined,
dalek left,
FROGGS left,
d4l3k_ is now known as dalek
|
|||
dalek | kudo/moar-support: 5896eaa | jnthn++ | src/vm/moar/ops/perl6_ops.c: Avoid invalid capturelex operations. Fixes various (maybe not all) wrong-frame errors. |
16:26 | |
sjn | jnthn: if you're going, I'd like to direct your attention here: fosdem.org/2014/schedule/event/who...y_battery/ :) | 16:30 | |
masak | jnthn is going, AFAIK. | 16:31 | |
sjn | ok, cool | ||
jnthn | Yeah...need to get hotel and flight done though...d'oh | ||
sjn | masak: how about you? | 16:32 | |
jnthn: don't wait, it's filling up | |||
16:33
sqirrel joined
|
|||
sjn | jnthn: I'm here; www.booking.com/hotel/be/nhatlanta.en-gb.html | 16:34 | |
s/here/staying here during FOSDEM/ | |||
masak | sjn: I'm not coming this year. would be great fun, but... @stuff | 16:38 | |
sjn | mm :-\ | 16:40 | |
masak | my modest aim this year is to make it to YAPC::EU. | 16:42 | |
jnthn | .oO( See if from Sofia, not from the sofa! ) |
16:43 | |
16:44
SamuraiJack left
16:48
sqirrel left
16:49
ajr joined,
ajr_ left
16:50
ajr is now known as Guest56871,
sqirrel joined,
colomon left
16:51
sqirrel left,
Guest56871 is now known as ajr_
16:52
colomon joined
|
|||
[Coke] | r: say 24356 - 22311 | 16:54 | |
camelia | rakudo-parrot 5669b2, rakudo-jvm 5669b2: OUTPUT«2045» | ||
16:55
btyler joined
16:59
SamuraiJack joined
17:01
xinming left
17:02
xinming joined,
lichtkind joined
|
|||
lichtkind | i have here a possible rakudo bug | 17:04 | |
[Coke] | shoot. | ||
17:07
jlaire left
|
|||
lichtkind | my class has @!sieb; but if i declare it as a has Array of Int @!sieb; i get weird error msg that its an Array[Int] not an int but im assigning that int to one cell so it should be right | 17:08 | |
17:08
jlaire joined,
FROGGS joined
|
|||
jnthn | lichtkind: You may just one has Int @!sieb; | 17:08 | |
lichtkind: The "array of" is implicit 'cus of the @ sigil | 17:09 | ||
lichtkind | ah | ||
thank you | |||
i dind know that maybe syn should be clearer on that | |||
17:10
raiph left,
REPLeffect joined
|
|||
lichtkind | jnthn: i currently restarted to do euler with perl 6 and rproduce some nice out of memory crashes because i cant have array with 4 mill elements :) | 17:12 | |
17:12
ajr_ left
17:13
ajr_ joined
17:19
raiph joined
17:20
raiph left
|
|||
masak | japhb_: ping | 17:22 | |
17:24
telex left
17:26
atroxaper left
|
|||
japhb | pong | 17:29 | |
I felt a disturbance in the force ... I wasn't even caught up in logs. :-) | 17:30 | ||
timotimo | someone here commented that moarvm is slower than parrot in the bytecode generation stage | ||
that's not 100% accurate | |||
after stage post/pir, there's a whole different process stage where parrot compiles the .pir file to a .pbc which takes quite a while, too | |||
moritz | parrot's bytecode generation include the call that compiles .pir to .pbc | ||
timotimo | it does? in that case, it does the thing twice. | 17:31 | |
17:31
telex joined
|
|||
japhb | Erm, masak? You were looking for me? | 17:33 | |
17:35
ssutch joined,
jnap left
17:39
jnap joined
|
|||
masak | japhb_: yes, you possess higher knowledge that I'd like to have. | 17:41 | |
japhb | Uh ... | ||
That's just the opening line to a catastrophe. ;-) | 17:42 | ||
masak | mwhahaha | ||
jnthn tells me that you auto-generate classes in github.com/japhb/p6-pb | |||
jnthn | .oO( <masak> All I wanna do is eat your brain... ) |
17:43 | |
masak | :) | ||
japhb | Why yes, I do. | ||
masak | japhb_: do you know how, given a list of names like <foo bar baz>, to produce a class with those attributes? | 17:44 | |
japhb | Yes. | ||
masak | \o/ | ||
hm, that's not even what I'm really after. | |||
let me regroup and rephrase. | |||
japhb | masak: Start here: github.com/samuraisam/p6-pb/blob/m...tor.pm#L39 | 17:45 | |
That method is strong with the metamodel. | |||
timotimo | masak: maybe my ADT module is of a bit of help to you, too? | ||
17:45
zakharyas left
|
|||
masak | given 'class C { has $.x }', how do I endow the attribute $.x with a Proxy that writes "fetch" on all fetches from it, and "store" on all stores. | 17:46 | |
17:47
berekuk left
|
|||
masak | I'm fine with an answer along the lines of "just give C this trait" -- what I want to avoid is doing things manually with each attribute. | 17:47 | |
japhb | Erm. Why not just do 'has $!x' and write your own accessor? | ||
moritz | in fact, for masak's requirement, there's even no need for an attribute | ||
japhb | For that particular use case, it feels a little like you're reaching for the big tool, when the little one will do just fine. | 17:48 | |
moritz | you can just write a method x that returns a Proxy | ||
17:48
mavcunha joined
|
|||
masak | moritz: yes, I guess so. | 17:48 | |
japhb | moritz: I was assuming he needed to keep *some* sort of state, but you're right that it could just disappear into the closure. | ||
masak | moritz: but I have a lot of methods like that, and I want to hide all the boilerplate. | ||
17:48
berekuk joined
|
|||
masak | closures ~~ objects :) | 17:48 | |
moritz | masak: you can write that method once, and then .^add_method it as many times as you want. | 17:49 | |
japhb | masak: <channelling diakopter> So does your mom. | ||
jnthn | If you're constructing the classes anyway, you could subclass Attribute, override compose (which does accessor generation) and use that attribute meta-object instead... | ||
japhb | And in fact, p6-pb does a lot of "subclass Attribute" type stuff. | 17:50 | |
17:51
jnap left
|
|||
masak | subclassing attribute would be quite nice, yes. | 17:51 | |
17:54
BenGoldberg joined
|
|||
lichtkind | is the a way to set an init vlue for an whole array? | 17:55 | |
moritz | p: my @a is default(42); say @a[23] | 17:56 | |
camelia | rakudo-parrot 5669b2: OUTPUT«42» | ||
moritz | lichtkind: ^^ | ||
lichtkind | ver cool | 17:57 | |
FROGGS | hi lichtkind | ||
lichtkind | hai froogs | ||
FROGGS | :o) | ||
lichtkind | hope to see you in hannover | ||
FROGGS | I will be there | ||
lichtkind | i got Can't use unknown trait 'is default' in an attribute declaration. | 17:58 | |
expecting any of: | 17:59 | ||
rw | |||
readonly | |||
box_target | |||
maybe its not yet available for attributs | |||
jnthn | No, it's NYI for attributes | ||
[Coke] | huh. new run today really confused my script to find abort failures root causes. nifty. | 18:00 | |
dalek | kudo/moar-support: 88dbdac | jnthn++ | src/vm/moar/Perl6/Ops.nqp: Complete p6return op. |
||
18:03
xinming_ joined
|
|||
japhb | I must say, the r-m progress has been phenomenal to watch. Y'all are kicking ass. | 18:03 | |
colomon | +1 | ||
18:04
REPLeffect left
18:05
xinming left
|
|||
timotimo | r: my %esc = '$' => '\$', '@' => '\@'; say 'foo$ bar\$ baz@ quux\@'.comb(/%esc/); | 18:09 | |
camelia | rakudo-parrot 5669b2, rakudo-jvm 5669b2: OUTPUT«» | ||
timotimo | r: my %esc = '$' => '\$', '@' => '\@'; say 'foo$ bar\$ baz@ quux\@'.comb(/@(%esc.keys)/); | ||
camelia | rakudo-parrot 5669b2, rakudo-jvm 5669b2: OUTPUT«$ $ @ @» | ||
18:15
FROGGS[mobile] joined
18:17
dakkar left
|
|||
lichtkind | thanks jnthn | 18:17 | |
18:17
FROGGS[mobile] left,
FROGGS[mobile] joined
|
|||
japhb | masak: Came across this in the logs: irclog.perlgeek.de/perl6/2014-01-03#i_8066095 -- What are Nomic, Dark, and secretary bot? | 18:20 | |
18:21
REPLeffect joined
|
|||
timotimo | r: say "foobar" ~~ / <[:Print:]>+ / | 18:21 | |
camelia | rakudo-parrot 5669b2, rakudo-jvm 5669b2: OUTPUT«「r」» | ||
timotimo | r: say "foobar" ~~ / <[Print]>+ / | ||
camelia | rakudo-parrot 5669b2, rakudo-jvm 5669b2: OUTPUT«「r」» | ||
timotimo | how do i ... | ||
r: say "foobar" ~~ / <:Print>+ / | 18:22 | ||
camelia | rakudo-parrot 5669b2, rakudo-jvm 5669b2: OUTPUT«「foobar」» | ||
timotimo | ah! | ||
benabik | japhb: I would assume nomic refers to a tracker for the game: en.wikipedia.org/wiki/Nomic | ||
18:27
abnorman left
|
|||
timotimo | r: my %esc = '$' => '\$', '@' => '\@'; say 'foo$ bar\$ baz@ quux\@'.comb(/<-%esc.keys>/); | 18:27 | |
camelia | rakudo-parrot 5669b2: OUTPUT«===SORRY!===Unrecognized regex metacharacter < (must be quoted to match literally)at /tmp/REGOGxMzo7:1------> '; say 'foo$ bar\$ baz@ quux\@'.comb(/<-⏏%esc.keys>/);Unrecognized regex metacharacter - (mus…» | ||
..rakudo-jvm 5669b2: OUTPUT«===SORRY!===Unrecognized regex metacharacter < (must be quoted to match literally)at /tmp/tLaJRRTO21:1------> '; say 'foo$ bar\$ baz@ quux\@'.comb(/<-⏏%esc.keys>/);Unrecognized regex metacharacter - (must b…» | |||
timotimo | r: my %esc = '$' => '\$', '@' => '\@'; say 'foo$ bar\$ baz@ quux\@'.comb(/<-@(%esc.keys)>/); | ||
camelia | rakudo-jvm 5669b2: OUTPUT«===SORRY!===Unrecognized regex metacharacter < (must be quoted to match literally)at /tmp/aruVVkKCVP:1------> '; say 'foo$ bar\$ baz@ quux\@'.comb(/<-⏏@(%esc.keys)>/);Unrecognized regex metacharacter - (mus…» | ||
..rakudo-parrot 5669b2: OUTPUT«===SORRY!===Unrecognized regex metacharacter < (must be quoted to match literally)at /tmp/hwhU_PfXo3:1------> '; say 'foo$ bar\$ baz@ quux\@'.comb(/<-⏏@(%esc.keys)>/);Unrecognized regex metacharacter - (…» | |||
timotimo | r: my %esc = '$' => '\$', '@' => '\@'; say 'foo$ bar\$ baz@ quux\@'.comb(/<-[@(%esc.keys)]>/); | ||
camelia | rakudo-parrot 5669b2, rakudo-jvm 5669b2: OUTPUT«f o o $ b a r \ $ b a z q u u x \» | ||
timotimo | how do i? :\ | 18:28 | |
moritz | eval! | ||
or (.) <!{ %esc{$1}:exists}> | |||
18:33
jnap joined
18:41
skyheights joined
|
|||
timotimo | i'm porting this from code to regex to improve performance | 18:41 | |
so i was hoping i could introduce the keys of the hash to the regex engine | |||
because the regex engine is pretty fast | 18:42 | ||
moritz: you think i could get any more performance out of JSON::Tiny by looking intently at the code and regex codegen and stuff? | 18:43 | ||
18:48
skyheights left
18:49
ajr joined,
ajr_ left
18:50
ajr is now known as Guest29902,
Guest29902 is now known as ajr_
|
|||
lichtkind | hm even with simulated bit array i got memory error | 18:52 | |
moritz | timotimo: I have no idea; might be worth trying | 18:57 | |
18:58
beastd joined
19:01
darutoko left
19:03
xinming joined
19:05
telex left
19:06
abnorman joined,
raiph joined,
xinming_ left
19:08
telex joined
19:11
ggoebel119 joined
19:12
ggoebel1110 joined
19:14
ggoebel118 left
|
|||
arnsholt | t/nqp/83-log.t | 20 ++++++++++++++++++++ \o/ | 19:15 | |
19:16
ggoebel119 left
19:17
ivan``_ left
|
|||
timotimo | arnsholt: you made a whole bunch of new tests? | 19:19 | |
arnsholt | Nope. pmurias++ did | 19:20 | |
19:20
ivan`` joined
|
|||
colomon | sweet! | 19:23 | |
masak | japhb: Nomic is a game in which a move is proposing a rule change and having it voted on. I made a sketch for a Perl 6 implementation, and I figure it's time to start implementing it. | 19:25 | |
diakopter | masak: that's like meta-game meta-theory | 19:26 | |
masak | Nomic is a very meta game. | ||
arnsholt | jnthn: Should I just remove nqp::ln_n, or would you prefer a bit more warning to (non-Rakudo) users? | ||
masak | japhb: Dark is a web engine (with one static and one dynamic part) based around feeds (as in Atom), operators on feeds, and projections from feeds into pages. | ||
diakopter | there's no I in meta | ||
19:26
ajr_ left
|
|||
arnsholt | See also en.wikipedia.org/wiki/Nomic | 19:27 | |
[Coke] | There is an I in meat pie, though. | ||
diakopter | there is a meat pie in I, too | ||
19:28
sqirrel joined
|
|||
masak | japhb: secretary bot (occasionally named "mishu", but it's just a working name) is my attempt to (finally!) get an online agent. event-based, programmable, shouldn't ever need to be rebooted. it's a second system. | 19:29 | |
japhb: incidentally, the things I asked you about tonight were for Nomic. | |||
japhb: here's the sketch. gist.github.com/masak/5237570 -- I think you'll be able to see why I need what I asked for. ;) | 19:30 | ||
tadzik | just a working name. It's funny because mishu is working | 19:31 | |
masak | in fact, I'm going to make it tonight's mini-challenge. | ||
write an attribute trait that will make an attribute "sense" when it's being read from and written to. | |||
yes, you too can win... an Internet! | |||
diakopter | is sensible | 19:32 | |
masak | :P | ||
tadzik | sub sight is sense | ||
masak | tadzik: "mishu" MI4SHU1 秘书 is Mandarin for "secretary". | ||
tadzik | yeah, that rings a bell, from PPW and YAPCEU talk :) | 19:33 | |
masak | aye. | ||
tadzik | btw folks, PLPW 2014 registration is open | ||
masak | \o/ | ||
tadzik | this time in Poznań, on the wild west | ||
diakopter | google wants me to PLOW 2014 instead | 19:34 | |
tadzik | it's like twice as close to()from) germany as PLPW 2013 was! | ||
19:35
ashleydev joined
|
|||
tadzik | what a bargain! | 19:35 | |
masak | ss/twice as close/half as far/ :P | ||
tadzik | hey, I know better where it is! :P | ||
Rotwang | poznan is the worst city ever | 19:39 | |
jnthn | arnsholt: I think we can just remove it... | ||
Rotwang | tadzik: have you given any thoughts to my pull request? | ||
masak | Rotwang: I like Poznan. | 19:45 | |
then again, I like anything that has pierogi in it :) | |||
arnsholt goes to remove nqp::ln_n | 19:46 | ||
colomon | pierogi++ | 19:47 | |
tadzik | Rotwang: I was mostly out of internet recently, let me see | 19:53 | |
masak .oO( but you can win one, if you do the mini-challenge! ) | 19:54 | ||
tadzik | ok, I have mixed feelings | ||
1st, it sort of defeats the purpose of Builder whatsoever | |||
masak | does anyone think blogs.perl.org/users/joel_berger/20...ubref.html could be done in Perl 6? | ||
I don't think so, because you cannot do $!x or $.x outside of a class. | |||
tadzik | other than choosing a file to copy to blib | 19:55 | |
which may be a good thing | |||
19:55
felipe joined
|
|||
tadzik | but: do you have a particular usecase that this change will solve? | 19:55 | |
in other news, the first thing I want to do once I get back to rakudo hacking, is get us rid of manual precomp, forever | 19:56 | ||
jnthn | r: class A { has $.x }; my $m = method () { say self.x }; A.new().$m() | ||
camelia | rakudo-parrot 5669b2, rakudo-jvm 5669b2: OUTPUT«(Any)» | ||
tadzik | so panda can stop doing it wrong | ||
19:56
laidback_01 joined
|
|||
jnthn | r: class A { has $.x }; my $m = method () { say self.x }; A.new(x => 42).$m() | 19:56 | |
camelia | rakudo-parrot 5669b2, rakudo-jvm 5669b2: OUTPUT«42» | ||
jnthn | r: class A { has $.x }; my $m = method () { say $.x }; A.new(x => 42).$m() | ||
camelia | rakudo-parrot 5669b2, rakudo-jvm 5669b2: OUTPUT«42» | ||
jnthn | masak: Does work :) | ||
$.x just needs a self | |||
lichtkind | (rakudo devs)++ | ||
jnthn | masak: It's $!x you can't do, which I think we want to keep that way :) | 19:57 | |
lichtkind | the error messages are sometimes reall useful | ||
masak | oh, right, the 'method' keyword. | 19:58 | |
yes, I agree -- that's the right level of encapsulation. | |||
I haven't seen someone play around with ad-hoc methods that way. | |||
dalek | p: 7245cb4 | (Arne Skjærholt)++ | src/vm/ (3 files): Remove superfluous nqp::ln_n op from all three backends. |
19:59 | |
Rotwang | tadzik: "manual precomp"? | ||
20:03
ivan`` left
20:06
ivan`` joined
20:16
raiph left,
Mouq joined
|
|||
dalek | p/replace-shift-with-control-in-strings: 8c8ff30 | masak++ | t/jvm/01-continuations.t: s/shift/control/g in strings in 01-continuations.t |
20:16 | |
20:24
Guest65081 joined
|
|||
dalek | kudo/moar-support: 7de1934 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp: Fix p6isbindable, fixing unpack-object.t. |
20:28 | |
20:29
rindolf joined
|
|||
masak | p: sub trait_mod:<is>(Attribute:D $attr, :$sensitive!) { say "how to I proceed from here?" }; class C { has $.x is sensitive } | 20:44 | |
camelia | rakudo-parrot 5669b2: OUTPUT«how to I proceed from here?» | ||
masak | more exactly, how do I make $.x notice it's being read from and written to? | ||
FROGGS | I'd grep for FETCH and STORE in rakudo's source | 20:45 | |
timotimo | class foobar { has @.feelings ... }@ | 20:46 | |
FROGGS | like src/Perl6/Metamodel/BOOTSTRAP.nqp:311: Proxy.HOW.add_method(Proxy, 'FETCH', ($PROXY_FETCH := nqp::getstaticcode(sub ($cont) { | ||
maybe you can add that method to the attr? | |||
masak | I know about FETCH and STORE, and about proxies. | 20:49 | |
I just don't know how to tie the knot from an attribute trait_mod:<is> to a Proxy. | |||
jnthn | masak: I think you need a custom meta-attribute | 20:51 | |
masak: Oh, or not... | 20:52 | ||
masak: I guess given you know your trait mod runs before accessor method generation, and accessor method generation is suppressed by installing a method...you can just beat it to install an accessor :) | |||
masak: So really you want to be doing add_method or so :) | 20:53 | ||
tadzik | Rotwang: the fact that we have to explicitely precompile stuf, instead of rakud ohandling this for us | ||
think python | |||
masak | jnthn: but I should do add_method to... the class HOW object, no? | 20:54 | |
nwc10 | so, do I stay up to watch the SpaceX launch? If I go to bed, is it less likely to be scrubbed? | ||
jnthn | masak: Yeah, you an get hold of what I think with .package on the Attribute instance you were passed. | 20:55 | |
Rotwang | tadzik: indeed, so when is it supposed to happen? | 20:57 | |
I'm wondering, because I have this module that compiles a native library in the Build.pm | |||
after installation the module is supposed to find the library searching through @*INC at compile time | 20:58 | ||
so currently it is not possible to install the module with panda, or at least I think so | |||
21:02
dayangkun left
21:05
FROGGS[mobile] left,
FROGGS[mobile] joined
21:06
raiph joined
21:10
grondilu left
21:11
grondilu joined
|
|||
masak | p: sub trait_mod:<is>(Attribute:D $attr, :$sensitive!) { my $name = $attr.name.substr(2); my $class := $attr.package; $class.HOW.add_method($class, $name, sub ($c) { say "it tickles!"; $attr.get_value($c) }) }; class C { has $.x is sensitive }; my $c = C.new(:x(5)); say $c.x | 21:11 | |
camelia | rakudo-parrot 5669b2: OUTPUT«it tickles!5» | ||
masak | ok, I can definitely work with this. | 21:12 | |
jnthn++ | |||
21:17
dayangkun joined
|
|||
timotimo | plpw is only 9 hours away from me. via train. | 21:21 | |
nwc10 | before I forget | ||
timotimo | only costs 100 euros | ||
nwc10 | if there is a plan to have a hackathon at the German Perl Workshop, could it be decided soon | ||
before I book travel and hotel | |||
please :-) | |||
dalek | kudo/moar-support: 6ce3436 | (Tobias Leich)++ | src/ (2 files): implement p6decodelocaltime and make $*TZ available |
21:22 | |
masak | seems there is only one mention of FETCH and STORE methods on the whole spec. | 21:24 | |
and in that example, the sub for STORE has *one* parameter, whereas the examples I see in Rakudo have *two*. | 21:25 | ||
spec wrong? | |||
jnthn | FROGGS: We get some more tests out of that? :) | ||
japhb_ | masak: Thanks for explaining the projects. :-) | ||
21:26
Rotwang left
|
|||
masak | p: sub trait_mod:<is>(Attribute:D $attr, :$sensitive!) { my $name = $attr.name.substr(2); my $class := $attr.package; $class.HOW.add_method($class, $name, sub ($c) { Proxy.new(FETCH => { say "read"; $attr.get_value($c) }, STORE => -> $, $v { say "write"; $attr.set_value($c, $v) }) }) }; class C { has $.x is sensitive }; my $c = C.new(:x(5)); $c.x = 42; say $c.x | 21:27 | |
camelia | rakudo-parrot 5669b2: OUTPUT«writereadreadreadreadreadread42» | ||
masak | \o/ | ||
FROGGS | jnthn: 187 | 21:28 | |
masak | except... why does it print 'read' 6 times? | ||
moritz | masak: try say ~$c.x | ||
it might be read for the multi dispatch, for the type check, a few times in .gist, ... | 21:29 | ||
21:29
sqirrel left
|
|||
masak | p: sub trait_mod:<is>(Attribute:D $attr, :$sensitive!) { my $name = $attr.name.substr(2); my $class := $attr.package; $class.HOW.add_method($class, $name, sub ($c) { Proxy.new(FETCH => { say "read"; $attr.get_value($c) }, STORE => -> $, $v { say "write"; $attr.set_value($c, $v) }) }) }; class C { has $.x is sensitive }; my $c = C.new(:x(5)); $c.x = 42; say ~$c.x | 21:31 | |
camelia | rakudo-parrot 5669b2: OUTPUT«writereadreadreadreadreadreadreadreadread42» | ||
masak | 9 times!? | ||
anyway, it's no biggie. | |||
Mouq | seems efficient | ||
masak | it's just going to result in a bunch of over-firings. | ||
timotimo | i'll probably go to the gpw2014 | 21:32 | |
since it's so close | |||
japhb_ | Elephant in room is an elephant. | ||
21:32
raiph left
|
|||
japhb_ | That kind of thing is why it would be nice to coalesce profile call counts by classification of routine -- generated accessor, other generated method, hand-written method, sub, pointy, etc. | 21:33 | |
masak | aye. | ||
I'm almost tempted to report this as a rakudobug. | 21:34 | ||
diakopter | heh, put continuation shifts in those lolol | ||
japhb_ | masak: I understand both your reasoning and your hesitation. | ||
jnthn | You can't rely on that, really... | 21:35 | |
moritz | masak: if you submit it as a rakudobug, prepared for the question "how many reads are OK, exactly?" | ||
*be prepared | |||
masak | diakopter: I had a feeling it wasn't right. I'll delete the branch, then. | ||
japhb_ | rely on what, jnthn? | ||
masak | moritz: I'd expect 1. | ||
jnthn | japhb_: How many times it'll decont... | ||
diakopter | masak: er | ||
masak | or else Proxy is less useful. | ||
diakopter | masak: I wasn't addressing the branch | ||
FROGGS | timotimo: \o/ | 21:36 | |
moritz | masak: but you do notice that you've passed this as an argument to a named routine, which needs the value for type checking and multi dispatch and all that fancy stuff? | ||
japhb_ wonders if we need BFWs for all the things rakudo's design just assumes are very cheap. | |||
masak | p: class C { method x { Proxy.new(FETCH => { say "read"; 2 }, STORE => -> $, $v { say "write $v" }) } }; given C.new { .x = 5; say .x } | ||
camelia | rakudo-parrot 5669b2: OUTPUT«write 5readreadreadreadreadread2» | ||
jnthn | japhb_: Well, thing is, a decont normally *is* very cheap (pointer de-ref) | ||
masak | moritz: yes, I see what you are saying. | 21:37 | |
moritz: I just know that there is a preferred way in which I would want Proxy to work. | |||
moritz | so doing it in one fetch would require *another* layer of indirection | ||
21:37
FROGGS[mobile] left
|
|||
masak | yes :/ | 21:37 | |
moritz | the cocontainer :-) | ||
japhb_ | jnthn, Well, I can turn it around and say "BFW on Proxy that it breaks [one or more] assumptions that certain things are really fast, so Proxy is likely to have disproportionately large effects on performance" | ||
masak | moritz: no, but nice try :P | 21:38 | |
well, there are other parts of Perl 6 that promise to calculate the value only once and then cache it. '5 < $x < 10' comes to mind. | |||
so it *is* possible, in some sense. | |||
question is whether it is in this case, and if so, at what cost. | |||
moritz | be wary of "calculate the value only once" | 21:39 | |
diakopter | masak: count how many the chained comparator does ;) | ||
moritz | the spec says that if $x is an expression, it is only evaluated once | ||
japhb_ | Under concurrency, beware of "recalculating is pure" | ||
moritz | but fetching a thing from its container isn't the same as evaluating an expression | ||
japhb_ | Sure, no argument. | 21:40 | |
masak | moritz: yes, you're right. | ||
jnthn | Note that you can probably dump a backtrace in each FETCH call if you're curious where they're happening... | ||
masak | moritz: also, I can live with this behavior. Nomic (and the engine that drives it) will still work fine as-is, it'll just be slightly inefficient. | ||
japhb_ | I just never like finding out that things that in theory should have relatively minor effect really won't. | ||
masak | I won't submit a rakudobug. | 21:41 | |
japhb_ | It's worth asking if there will ever be redundant *writes*. | ||
masak | but I would like to note for the record that my expectation was 1 'read'. | ||
moritz goes to sleep less troubled | |||
japhb_ | o/ # "less troubled" sleep is best sleep | ||
lue | masak: is your Nomic game just a normal one written in Perl 6, or are the submitted rules bits of Perl 6 code? | 21:42 | |
jnthn | masak: I'm surprised it's so many, but not really at all surprised it's multiple... | ||
masak | lue: the submitted rules are patches to the Perl 6 code that (currently) makes up the game. | 21:44 | |
21:44
ilbot_pg left
|
|||
lue | that should be mind-bendingly fun :D | 21:44 | |
masak | lue: that is, you're using the *same* application to propose rule changes, discuss them, and then change the actual rules. | ||
21:48
bluescreen100 joined
21:49
bluescreen10 left
21:53
FROGGS[mobile] joined
|
|||
[Coke] | IO::Handle.copy is deprecated. Please use IO::Path.copy instead. -- this probably needs to be updated to the new DEPRECATED. Also, it's in roast. | 21:53 | |
S32-io/copy.t | |||
21:53
kbaker left
21:56
hoverboard joined
|
|||
timotimo | right | 21:56 | |
masak | diakopter: oh, I thought you were talking about the branch. | 21:58 | |
diakopter: did you see it? | 21:59 | ||
diakopter: was it what you wanted? | |||
diakopter: should I merge it? | |||
tadzik | bah, Rotwang's gone | ||
22:00
Mouq left
|
|||
tadzik | preflex, tell Rotwang as soon as it's needed, so it may happen the first time someone runs a program that uses a module | 22:00 | |
preflex | Consider it noted. | ||
nwc10 | T -6 minutes, if anyone is interested: www.spacex.com/webcast/ | ||
masak | oh boy oh boy | 22:01 | |
nwc10 | T -1 | 22:05 | |
masak | woooooooooooow | 22:06 | |
jnthn | nice! | 22:07 | |
masak | I love that it traveled 6 km in one minute. | ||
...and THEN passed the sound barrier! | |||
22:08
lichtkind left
|
|||
masak | not such a good view of the planet this time around. | 22:09 | |
still, that's clearly ours. | |||
*sniff* | |||
PerlJam | at least until the aliens come down and take it from us. | 22:10 | |
nwc10 | they seem to have a new camera for stage 2, showing the engine from the side, I think as IR | ||
masak | yeah. | 22:11 | |
maybe that's what we saw last time too, though. | |||
yes, it seems to be flipping back and forth. | |||
colomon | dang, didn't look down at the IRC window in time to notice and watch the launch. :( | 22:12 | |
[Coke] | what's with the all the pixelated video? they clearly need more bandwith. :) | ||
masak finds himself wishing the vehicle could go around the planet so that the planet obscures that bright nearby star | 22:13 | ||
nwc10 | yeah, the full colour live stream from the *rocket in flight* is a bit mangled. #firstworldproblem :-) | ||
22:13
thou left
|
|||
nwc10 | oh, and it's not HD | 22:13 | |
masak | yeah, if space has that bad connectivity, I'm not sure it's worth it. | ||
I'm glad I found this out *before* I moved! | |||
[Coke] | not HD? pshaw! | 22:14 | |
22:14
thou joined
|
|||
nwc10 | and the frame rate seems a bit low | 22:14 | |
masak | that's a nice red glow. | 22:15 | |
something must have made it very hot recently. :P | |||
lue | I just decided to check out that webcast link, and to my infinite surprise it needs flash :/ | 22:16 | |
colomon | look at all those people in space! | ||
masak | colomon: :D | 22:18 | |
I thought the day couldn't get any better, but then I saw a live stream of human engineers *propelling an object into orbit*. | |||
'night, #perl6 | 22:19 | ||
colomon | \o | ||
lue | does anyone else experience problems with Moar's CFLAGS somehow overriding Parrot's? Because I can make a pull request after a while with a fix for that. | 22:20 | |
22:23
berekuk left
|
|||
dalek | p: 79c72d8 | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp: Don't take a null dispatcher. |
22:26 | |
22:28
rindolf left
|
|||
dalek | kudo/moar-support: 3f17cbf | jnthn++ | src/vm/moar/ops/perl6_ops.c: Implement p6finddispatcher. |
22:28 | |
22:29
berekuk joined
22:33
berekuk left
22:34
ajr joined
22:35
ajr is now known as Guest3914,
Guest3914 is now known as ajr_
22:42
ssutch left,
berekuk joined
|
|||
dalek | ast: 83e0589 | (Timo Paulssen)++ | S02-literals/quoting.t: skip quoting tests requiring openpipe on moarvm |
22:54 | |
ast: ac60f26 | (Timo Paulssen)++ | .gitignore: ignore rakudo.moar fudged test files |
|||
timotimo | that gives us about 40 more tests | ||
i wonder why version comparisons b0rk | 22:55 | ||
ah, hehe | |||
timotimo is probably about to make another 24 tests pass that used to fail | 22:57 | ||
jnthn | src/vm/moar/ops/perl6_ops.c(609) : error C2079: 'tm' uses undefined struct 'tm' | 22:59 | |
:( | |||
23:00
johnmilton left
|
|||
timotimo | :( | 23:01 | |
23:06
beastd left
23:09
mohij left
|
|||
dalek | kudo/moar-support: cf92e81 | jnthn++ | src/vm/moar/ops/perl6_ops.c: Fix p6decodelocaltime build on Win32. |
23:10 | |
kudo/moar-support: a94270c | jnthn++ | src/vm/moar/ops/perl6_ops.c: Implement p6argsfordispatcher. |
|||
jnthn | timotimo: Fine, though it's better we don't start fudging too much too soon... | ||
diakopter | jnthn: needz an asterisk after tm? | 23:15 | |
jnthn | diakopter: In the decl? | 23:17 | |
No, it's stack allocated | |||
um | |||
(&tm)->tm_sec | |||
diakopter | I thoguht that was the error you got if you nested a struct inside itself instead of a pointer to a struct | ||
jnthn | ....that should be tmp.tm_sec... | ||
(should as in, "it's shorter and means the same") | 23:18 | ||
dalek | kudo/moar-support: afac8b6 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp: Fix native auto-unboxing of params. |
23:30 | |
kudo/moar-support: 78e9800 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp: Complain about excess args. |
|||
23:33
denis_boyun left
23:36
ssutch joined
|
|||
dalek | rl6-roast-data: dfb2456 | coke++ | / (4 files): today (automated commit) |
23:39 | |
[Coke] | If you fudge a roast ticket for moarvm, be sure to open a ticket. | 23:40 | |
otherwise we'll end up with more of the mess I created with all the "nom regression" todos. | |||
jnthn | [Coke]: Was JVM test run less awfully slow today? | 23:45 | |
23:50
mavcunha left
|
|||
lue | perl6-m still doesn't work outside the git repo :( [rakudo commit 7de193412] | 23:52 | |
[Coke] | not by much, it felt. probably swamped by lack of eval server. | ||
[Coke] kicks off another run of moar to improve the test abort list. | 23:53 | ||
jnthn | [Coke]: hang on... | 23:54 | |
23:54
mavcunha joined
|
|||
lue | The specific error is "Missing or wrong version of dependency 'gen/moar/stage2/QRegex.nqp'", for those interested. | 23:54 | |
jnthn | [Coke]: OK, just pushed. Use latest Moar now :) | ||
preflex | jnthn: you have 1 new message. '/msg preflex messages' to read it. | ||
jnthn | [Coke]: Just fixed all the tests that depend on custom operators... :) | ||
23:58
baest_ joined,
ggoebel1111 joined
|