»ö« 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/DyR3OxY2Eq␤Two terms in a row␤at /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_FOk6e␤Two terms in a row␤at /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«write␤read␤read␤read␤read␤read␤read␤42␤»
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«write␤read␤read␤read␤read␤read␤read␤read␤read␤read␤42␤»
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 5␤read␤read␤read␤read␤read␤read␤2␤»
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