»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
00:06 vladtz left
timotimo not 100% sure why nqp-jvm explodes there 00:06
nqp: say("i'm fine");
camelia nqp-{moarvm,parrot}: OUTPUT«i'm fine␤»
..nqp-jvm: OUTPUT«(signal ABRT)»
timotimo that might explain it :)
00:06 woolfy left 00:07 lizmat left, [Tux] left
ugexe ha timotimo++ 00:07
00:15 jack_rabbit left 00:27 ab5tract left 00:30 thou left 00:31 kjs_ joined, BenGoldberg joined 00:34 risou is now known as risou_awy, risou_awy is now known as risou 00:37 Diederich is now known as Diederich-away
timotimo a frame with 8 set instructions and 6 "actual" instructions 00:45
00:47 cognominal joined 00:52 thou joined 00:58 kjs_ left 00:59 thou left
timotimo gist.github.com/timo/85052abeab6aa330ff0c 01:01
01:12 anaeem1 left 01:13 anaeem1 joined 01:15 lizmat joined 01:16 [Tux] joined
japhb Can you alias a class during import? (Can you say 'use Some::Really::Long::Class::Name as Foo;' or somesuch?) 01:16
01:16 woolfy joined
timotimo you should be able to 01:18
timotimo has never done "advanced" uses
01:18 awwaiid joined, anaeem1 left
timotimo i think you can use import after a use to alias something like that 01:18
well, "alias" in scare quotes
01:18 raiph left 01:20 anaeem1 joined 01:21 jfredett joined 01:24 davido___ left 01:25 anaeem1 left, jfredett left, davido___ joined 01:46 leont left
ugexe re: hash keys; is it intended that all keys are stringified? or should the key's type be checked so the appropriate unbox_ can be applied to it? 01:46
timotimo are you talking about nqp or perl6? 01:49
ugexe rakudo/src/core/Hash.pm, so that its not neccesary to use ~ on hash keys in certain situations 01:51
timotimo you can define your hash to have Any keys instead of Str
then you'll have object keys
that will not get stringified for you
gist.github.com/timo/e879a950bea3d4c2340e ← you've gotta love our code-gen
ugexe rather i want to use an Int as a hashkey so i want it stringified. i can do that explicitly with %h{~$someInt} but was wondering if thats how it should be done or if automatic stringification was NYI 01:55
timotimo er 01:56
ugexe well, for exists_key, delete_key
timotimo automatic stringification should happen
oh
ugexe sorry i meant for those
timotimo exists_key and delete_key are "internal"
and they expect you've done all the work already
ugexe right on 01:57
timotimo japhb: are you still here? :) 01:58
02:02 not_tadzik left 02:08 chenryn joined 02:11 ab5tract joined 02:13 xinming_ joined 02:14 xinming left
dalek p: 005b2f3 | ugexe++ | docs/ops.markdown:
Document ops.markdown cleanup; ambigious two/to

Fixes statements that could be interpreted multiple ways. i.e.:
Return non-zero if $l is greater than or equal two $r. ('two' should be 'to' for equals-to, not 2 for 2*$r) Return non-zero if $l is greater than two $r. ('two' left in from c&p?)
02:15
p: 1e8c67e | jimmy++ | docs/ops.markdown:
Merge pull request #201 from ugexe/patch-1

Document ops.markdown cleanup; ambigious two/to
02:16 ab5tract left
dj_goku timotimo: you around? 02:22
timotimo yup, hey 02:26
dj_goku timotimo: so you wrote the gtk-simple bindings. I think I want to try that for qt, but have no idea where to start. 02:27
02:28 KCL joined 02:31 KCL_ left 02:34 wolv- joined, kjs_ joined
timotimo oh 02:36
well, building bindings for a C++ library is about 20000000000 times harder
but if you do build qt bindings, i'll happily use them :)
02:36 wolv left, tinyblak joined
timotimo because i like qt a lot more than i do gtk 02:36
there's something called SMOKE 02:37
dj_goku I don't even know where to start. 02:38
timotimo it's basically a C API with which you can get information about classes, methods, ...
02:39 kaare_ joined
timotimo well, i've wanted to start building a qt binding for perl6 a swell 02:39
and i didn't get anywhere at all
i don't want to discourage you ... but starting with a C++ binding when there is no "prior art" is a big challenge 02:41
02:41 anaeem1 joined
BenGoldberg It seems to me, the place to start would be find a way to do C++ bindings :) 02:42
timotimo well ... yeah
there's lots of binding generators out there
SWIG and shiboken come to mind 02:43
in python space alone there's like four different ones
SWIG, Boost::Python, shiboken and SIP
BenGoldberg What's used for binding qt to perl5?
timotimo SMOKE
i'll be AFK for a bit 02:45
02:46 kjs_ left, anaeem1 left 02:54 anaeem1 joined, yeahnoob joined
dj_goku is there a binding for qt anymore for perl5? qt4 is the last binding I could find. 02:57
KDE has perl5 qt bindings, but nothing for the general public.
02:58 anaeem1 left 03:07 anaeem1 joined, anaeem1 left 03:12 BenGoldberg left 03:16 tinyblak left 03:17 tinyblak joined, tinyblak left
dj_goku this might sounds kind of weird. but could you write a C binding them just use the C binding?! 03:25
sounds like something like inception.
found this: irclog.perlgeek.de/perl6/2013-10-23 03:27
with bits of C++ comments.
03:50 tinyblak joined
timotimo dj_goku: building a C API around a C++ api is how most (if not all) c++ binding generator approaches work 03:51
timotimo is off 03:56
04:00 ab5tract joined
dj_goku timotimo: interesting. I think for now I'll just write tests for perl6 rosettacode. 04:00
04:02 adu joined 04:04 rmgk_ joined, rmgk is now known as Guest85130, Guest85130 left, rmgk_ is now known as rmgk, ab5tract left 04:05 sorear left 04:09 Juerd_ joined, clkao_ joined 04:10 kst` joined 04:11 ugexe_ joined, sorear joined 04:12 kaare_ left, erdic_ joined, telex left, Tekk_` joined, Juerd left, salv0 left, m_athias left, ugexe left, yogan_ left, clkao left, Tekk_` left, Tekk_ left, ChoHag left, erdic left, kst left, _sri left, ChoHag joined, Tekk_` joined, Juerd_ is now known as Juerd, _sri joined, salv0 joined 04:13 erdic_ is now known as erdic 04:14 clkao_ is now known as clkao, anaeem1_ joined, telex joined, anaeem1_ left 04:15 anaeem1_ joined 04:17 m_athias joined 04:18 Guest62564 left 04:19 zakharyas joined 04:20 bowtie joined, bowtie is now known as Guest97404 04:21 yogan joined 04:23 ab5tract joined 04:27 kaleem joined 04:28 ab5tract left 04:33 chenryn left 04:38 kaare_ joined, ugexe_ is now known as ugexe 04:41 chenryn joined 04:59 raiph joined 05:09 kaleem left 05:21 tinyblak_ joined 05:23 tinyblak left 05:25 adu left 05:32 jfredett joined 05:43 raiph left 05:46 kjs_ joined 05:48 [Sno] joined 05:49 xenoterracide left, xenoterracide joined
ugexe nqp: my @arr; say(nqp::push_i(@arr, 2)); 05:50
camelia nqp-parrot: OUTPUT«1␤»
..nqp-moarvm: OUTPUT«MVMArray: push expected object register␤ at /tmp/tmpfile:1 (<ephemeral file>:<mainline>:24)␤ from gen/moar/stage2/NQPHLL.nqp:1234 (/home/camelia/rakudo-inst-2/languages/nqp/lib/NQPHLL.moarvm:eval:172)␤ from gen/moar/stage2/NQPHLL.nqp:1427 (/home/camelia…»
..nqp-jvm: OUTPUT«(signal ABRT)»
ugexe anyway know what moarvm is supposed to return? 05:52
docs mention return values for jvm and parrot only 05:53
TimToady it would appear from the code in interp.c that it simply returns the array you pushed to 05:56
05:57 xenoterracide left
TimToady but it needs to be allocated with nqp::list_i or so 05:57
or maybe my int @arr
ugexe yeah, but no typed arrays yet :( 05:58
TimToady my @data := nqp::list_i;
er @arr
ugexe oh cool
TimToady nqp: my @arr := nqp::list_i; say(nqp::push_i(@arr, 2));
camelia nqp-jvm: OUTPUT«(signal ABRT)»
..nqp-moarvm: OUTPUT«2␤»
..nqp-parrot: OUTPUT«[ 2 ]␤»
ugexe parrot is giving a different result from that then my untyped example. why is that? 06:00
TimToady is probably just a different 'say' 06:02
ugexe well it should return 1
TimToady p5think 06:03
ugexe according to the docs that is
TimToady still p5think :)
ugexe Return the number of elements of @arr on Parrot
TimToady it just returns the array object, which won't be the number of elems unless you + it
nqp: my @arr := nqp::list_i; say(+nqp::push_i(@arr, 2));
camelia nqp-parrot: OUTPUT«get_number() not implemented in class 'ResizableIntegerArray'␤current instr.: '<mainline>' pc 49 ((file unknown):42) (/tmp/tmpfile:1)␤»
..nqp-jvm: OUTPUT«(signal ABRT)»
..nqp-moarvm: OUTPUT«2␤»
TimToady hmm 06:04
nqp: my @arr := nqp::list_i; say(nqp::elems(nqp::push_i(@arr, 2)));
camelia nqp-parrot: OUTPUT«1␤»
..nqp-jvm: OUTPUT«(signal ABRT)»
..nqp-moarvm: OUTPUT«This representation (P6int) does not support elems␤ at /tmp/tmpfile:1 (<ephemeral file>:<mainline>:27)␤ from gen/moar/stage2/NQPHLL.nqp:1234 (/home/camelia/rakudo-inst-2/languages/nqp/lib/NQPHLL.moarvm:eval:172)␤ from gen/moar/stage2/NQPHLL.nqp:1427 (/h…»
TimToady hmm
TimToady doesn't understand what's going on there 06:05
but the moar code is just returning the object
ugexe heh. im not actually using it, just clarifying/correcting the docs
TimToady nqp: my @arr := nqp::list_i; say(nqp::atpos_i(nqp::push_i(@arr, 2),0)); 06:07
camelia nqp-parrot: OUTPUT«2␤»
..nqp-moarvm: OUTPUT«This representation (P6int) does not support positional access␤ at /tmp/tmpfile:1 (<ephemeral file>:<mainline>:28)␤ from gen/moar/stage2/NQPHLL.nqp:1234 (/home/camelia/rakudo-inst-2/languages/nqp/lib/NQPHLL.moarvm:eval:172)␤ from gen/moar/stage2/NQPHLL.n…»
..nqp-jvm: OUTPUT«(signal ABRT)[thread 140634437474048 also had an error]␤#␤# There is insufficient memory for the Java Runtime Environment to continue.␤# »
TimToady odd
I guess moar is just returning the 2 06:08
nqp: my @arr := nqp::list_i; say(nqp::push_i(@arr, 42));
camelia nqp-parrot: OUTPUT«[ 42 ]␤»
..nqp-jvm: OUTPUT«(signal ABRT)»
..nqp-moarvm: OUTPUT«42␤»
TimToady which is kinda not what I'd expect 06:09
06:09 flussence left 06:10 flussence joined
ugexe Return the number of elements of @arr on Parrot, $v on JVM. -> Return @arr on Parrot, $v on JVM/moar ? 06:10
TimToady I don't see anywhere in nqp where the value is used, actually
er, in nom/src I should say
might be best to say the return value is currently undefined 06:12
06:12 [Sno] left
ugexe roger that 06:13
06:16 gfldex joined 06:26 kaleem joined 06:36 Woodi left, Woodi joined 06:45 kjs_ left 06:47 sqirrel_ joined 06:55 bjz left, bjz_ joined 06:59 KCL_ joined 07:00 bjz_ left 07:03 KCL left 07:04 KCL_ left 07:05 erkan left, KCL_ joined 07:10 _sri left, _sri joined, Alina-malina left 07:11 Alina-malina joined 07:17 jfredett left 07:21 erkan joined, erkan left, erkan joined 07:26 darutoko joined 07:38 ingy left 07:39 revdiablo left 07:43 rurban joined 07:44 masaq joined
masaq morning, #perl6 07:44
07:48 ptc_p6 joined, [Sno] joined 07:49 gfldex left 07:59 sqirrel_ left 08:04 pecastro left 08:21 erkan left, revdiablo joined 08:22 erkan joined 08:23 Alina-malina left 08:26 ingy joined
lizmat commute to Copenhagen& 08:27
08:28 lizmat left
masaq TypeError: __init__() got an unexpected keyword argument 'setup' 08:31
look, even Python 2 gets this right! :P
08:32 dayangkun joined, ab5tract joined 08:33 dayangkun left 08:37 abraxxa joined 08:40 Mso150 joined 08:41 woolfy left 08:45 FROGGS joined 08:47 ab5tract left 08:49 molaf_ joined 08:53 molaf__ left, smls joined 08:56 [Tux] left
smls m: say (^2 Z ^2).perl; say (^2 X ^2).perl 08:56
camelia rakudo-moar 1d3d97: OUTPUT«((0, 0), (1, 1)).list␤(0, 0, 0, 1, 1, 0, 1, 1).list␤»
smls ^ Why does Z preserve the nested Parcels but X doesn't?
jnthn masaq: And handles interface consistency how? :P 08:57
masaq smls: yeah, that seems odd. 08:58
08:58 [Tux] joined
masaq jnthn: I was trying to be inflammatory, not rational :P 08:58
jnthn: Python doesn't.
jnthn :)
As I remember, it also made delegating to the base class a pain...
masaq yes, but inheritance is in place, so... 08:59
the need for interface consistency should be just as big.
the only explanation I can think of is "they just don't consider it that important"
jnthn Trouble is, many (most?) good uses of inheritance do involve a call to super. :) 09:00
(Should qualify that with: most uses of inheritance I see in the real world are questionably good.)
09:04 abraxxa left
masaq I've become more sensitive to the kind of inheritance that just uses its base class as a container for utility methods. 09:04
since I teach Python right now, I see that quite a lot.
09:04 abraxxa joined
jnthn Seen it a bunch in C# too. 09:06
masaq it's one of those "...everything starts looking like a nail" things, with inheritance the hammer. 09:09
09:20 denis_boyun_ joined 09:22 risou is now known as risou_awy, yeahnoob left, risou_awy is now known as risou 09:25 Alina-malina joined 09:26 denis_boyun_ left
masaq did I mention this? I might've. jQuery is "re-uniting" their 1.x and 2.x lineages into a 3.x lineage: blog.jquery.com/2014/10/29/jquery-3...nerations/ 09:33
do read the post. don't read the comments.
09:36 kurahaupo joined
moritz the only weird thing (IMHO) is that they call the recommended version "jquery compat" and the leading edge "jquery" 09:37
masaq yes, I found that weird too. 09:38
moritz it would make more sense to name them "jquery" and "jquery-slim" or so
09:38 kst` left
masaq I guess there's a little wishful thinking and "betting on the future" in the naming. 09:39
leaving aside whether it'll turn out to be a good idea or not.
I don't get the sense that jQuery Compat will stay the recommended version for most people for long.
maybe it already isn't, but the market still prefers it. 09:40
09:40 fhelmberger joined
moritz it's kinda more fun to not bother yourself with IE8 support :-) 09:43
09:44 sqirrel_ joined
masaq and increasingly feasible. 09:44
masaq was going to link to theie8countdown.com/ but it seems down 09:45
jnthn
.oO( down for the count? )
moritz but at least we aren't discussin IE6 countdowns anymore :-) 09:46
09:50 espadrine` joined
masaq and the generational churn makes it hard even to explain to neophyte web devs how utterly horrible it used to be just 5 years ago. 09:51
09:52 dakkar joined 09:59 rindolf joined 10:03 pecastro joined 10:06 smls left 10:15 erdic left 10:17 erdic joined 10:27 virtualsue joined 10:48 ghostlines joined 10:53 chenryn left 11:04 ggoebel111111118 joined
arnsholt jnthn: In a QAST tree, do Blocks and Vars share a namespace or are they stored separately? 11:05
11:05 virtualsue left 11:06 ggoebel111111117 left 11:08 denis_boyun_ joined
timotimo arnsholt: we refer to blocks with a BVal and pass the block object directly into the :value IIRC 11:09
11:12 Mso150 left, sqirrel_ left 11:14 virtualsue joined
timotimo learns about the --no-checkout option to git bisect 11:15
11:18 chenryn joined
arnsholt timotimo: Right, so a Block(:name<foo>) and a Var(:name<foo>) are distinct 11:18
timotimo i think the :name for a block is only informative 11:20
arnsholt Oh, of course. BVals are constructed by passing the block itself, not itsname 11:22
Derp =)
timotimo yes 11:23
11:28 not_tadzik joined
not_tadzik Juerd: ping 11:28
timotimo hey not_tadzik, what's not_up? 11:41
11:43 exixt is now known as exixt_
masaq .oO( not_much ) 11:44
11:45 zakharyas left
jnthn arnsholt: QAST::Block's :name just sets it for introspection, rather than installs it anywhere 11:45
timotimo jnthn: did you see my hilarious examples of unfortunate code-gen from last night? 11:46
arnsholt Yeah, timotimo set me straight
jnthn timotimo: Well, it's probably because lots of cheaper things got turned into a set.
arnsholt Now just I need to figure out why I break EXPR_reduce >.<
timotimo jnthn: the sets, yeah, no problem
jnthn timotimo: uh, lots of costlier things... 11:47
timotimo jnthn: but how about the const_s and const_i64_16? %)
jnthn I agree we'd like to opt 'em out
timotimo gist.github.com/timo/e879a950bea3d4c2340e
i may try to give set removal a new try actually
do you have an idea why sometimes the optimize_method_lookup thing seems to generate two getspeshslot instructions that read from different spesh slots into the same register directly in succession? 11:48
11:48 kaleem left
jnthn timotimo: Yes, the first one is looking up the high level code object probably, and then we get the low level one out of it, and for some reason don't lose the prior instruction 11:49
timotimo oh, interesting 11:50
what's the optimization called that does that transformation?
may just need a properly placed usages--
jnthn Well, you can't usages-- it because it's the same target register
I wrote this code before we had temp registers
timotimo ah, so that may be the proper way to fix it 11:51
jnthn It's optimize_call or so. Same thing that inlines if we can
Yes, probbly
11:51 s6fllosc joined
jnthn iirc, you can't just unconditionally go deleting the first lookup 11:51
not_tadzik timotimo: I'm sad that I can't access feather :(
jnthn 'cus it may be used for something.
timotimo another thing i've started working on (and made the nqp build explode violently by implementing) is "tracking" boxing and unboxing throughout the SSA 11:52
jnthn Yeah, that'll need care between BB boundaries, I suspect...
But worthwhile opt when we can do it.
timotimo that may be the reason why it didn't work actually
i added a fact that basically says "this register basically just contains a boxed representation of the writer's first argument"
i found a piece of code where infix:<<> got in-lined twice in a row and ended up having p6bool unnecessarily inside the same BB 11:53
though of course the "p6bool basically works like box_i" thing is a tiny bit wrong
jnthn Correct. 11:54
It'll normalize the value
timotimo yeah
jnthn May make a difference
timotimo but it's correct for almost all values
(namely: all but finitely many values) 11:55
jnthn If you know how it's going to be used (like, in an if) and that this is the only use of it, then you have some space. 11:56
(To do the opt)
But if it's more involved than that, a bit less so.
masaq not_tadzik: I'm sad that I can't access feather, too :/ 11:57
11:57 sqirrel_ joined
masaq not_tadzik: it's a foretaste of feather shutting down, I guess. 11:57
timotimo correct
not_tadzik yeah, I think so 11:58
timotimo how should i write code that has to do BB-border-considerations?
not_tadzik I'd be happy if I could have my last login to read the backlog and tidy stuff up
timotimo a) make sure i abort if i see a BB border is between two instructions
not_tadzik before I move the IRC session someplace else
timotimo b) write the code good in the first place so that it doesn't break
:P
jnthn: can i refer to an older version of a register and the after-spesh-codegen will make sure the value gets kept properly? 12:00
(i do realize this question boils down to "does our SSA implementation totally suck?", but ... just to be sure)
12:01 s6fllosc is now known as Ugator
timotimo because i'd like to replace multiple occurences of const_i64_16 $reg, any(0, 1) with backreferences - maybe only if they're in the same BB or something 12:01
jnthn timotimo: No, it won't. It transforms out of SSA form by throwing out the indexes. 12:06
timotimo oh 12:07
12:07 chenryn left
timotimo i may have to keep that in mind 12:07
12:10 JimmyZ joined
timotimo are we going to keep the SSA-back-transformation that simple for long? 12:10
jnthn Forever as far as I'm concerned. 12:11
It's part of the frame consistency stuff that deopt depends on. 12:12
timotimo hm, OK
jnthn So unless we want a much more complex deopt design...
timotimo so we don't "compress" frames by throwing out registers that end up unused either
jnthn Correct, 'cus we'd then have to resize them if we deopt'd. 12:13
Keeping deopt relatively cheap means we can afford it to happen.
timotimo i wonder if some of my previous optimization attempts failed because i didn't know about this
jnthn Quite possibly ;)
Note that we use usage counts as part of the deopt strategy too
Sometimes you'll see something gets a higher count than you may expect. That happens when deopt might cause it to be needed, evne though the original instruction that used it got deleted. 12:14
timotimo we don't deopt if something we've assumed about a register we don't care about no longer holds? :P
ah!
yeah, i've seen mysterious usage counts and theorized it may be for deopt
it's good to know for sure
jnthn Yeah, it was a surprisingly elegant way to handle it. 12:15
12:15 Mouq joined
JimmyZ wonders whether jnthn++ saw the allocation sinking optimization or not :) 12:16
timotimo JimmyZ: i was just thinking a bit more about that right now
jnthn JimmyZ: I saw the link, but I was on vacation and didn't read it... ;) 12:17
timotimo the fact that i must not move the writer of a register beyond the next write to it is a bit of a challenge... but i probably should get some example code up before thinking much more about this
JimmyZ timotimo: Did you see this one too? lua-users.org/lists/lua-l/2011-03/msg01096.html
timotimo jnthn: TL;DR: escape analysis is fine and good, but it quite often falls short because things get allocated before a lopsided branch happens and thus variables that only rarely escape will get treated as "always escaping" 12:18
JimmyZ jnthn: The above link is some detail about it, in case you missed this one
timotimo: usually escape analysis is for un-escapled var, but this one is for escapled var 12:20
:P
timotimo JimmyZ: are you interested in spending a bit of brainpower on a bit of code that would help people immensely?
(and by people, i mean "at least me" :P ) 12:21
JimmyZ timotimo: allocation sinking optimization is addition to( or based on) escape analysis
s/or/and/ 12:22
timotimo: ok, Did you see the benchmark code yet?
timotimo the benchmark code in lua? 12:23
JimmyZ Allocation sinking requires store forwarding and store sinking. It needs alias analysis and escape analysis. -- Said in lua-users.org/lists/lua-l/2011-03/msg01096.html 12:24
jnthn Yeah. None of which are easy :P
timotimo oh well :S
jnthn (We did plenty of uneasy things already, though. :)) 12:25
timotimo JimmyZ: anyway, perhaps you can figure out what's wrong with moarvm's origin/finite_callgraph_depth ?
jnthn Still, I think in MoarVM we'll soon want to put our opt focus on optimizing parametric 6model stuff that'll land in the next weeks (hopefully)
JimmyZ timotimo: in java or C++ is OK
jnthn And thus native array things.
timotimo jnthn: would "parametric 6model stuff" also cover having the information about a native call more readily available in code-gen or so? 12:26
JimmyZ timotimo: the key part : return new Point(x + b.x, y + b.y);
jnthn No, 12:27
timotimo:Well, I dont immediately see the connection :)
JimmyZ The optimization makes the Point Objection allocation sink to the the another frame to avoid the Point Object Allocation since it's attribute will read by another frame immediately 12:28
timotimo: ^^
timotimo: return means it escapled. .. 12:29
*escaped
timotimo well, unless we've inlined that
:P
jnthn: the call to "deopt_all" that we generate for every nativecallinvoke bothers me 12:30
it goes through the argument list and inspects every argument for a "can('cstr')"
JimmyZ the article said it needs alias analysis and escape analysis, didn't say inline :P
jnthn timotimo: Yes, that's more a "be expedient" thing than a "be good" ting :) 12:31
*thing
masaq .oO( 鼎 ) 12:32
timotimo er
why did i say "deopt_all"?
i meant "decont_all"
jnthn I read decont_all too :P 12:33
timotimo good :)
well, i'm sure it's helpful, but spesh can't make anything of it
jnthn Right.
timotimo at least it's using an nqp-level loop with an iter rather than a perl6 list iteration :P 12:34
jnthn There's a number of ways in which we might want to re-visit the way we're doing native call code-gen...
...but it's a big project.
timotimo i can imagine >_< 12:36
jnthn I suspect my tuits for the rest of the year will be focused on stability things and native array things. 12:38
(As in, rest of 2014)
timotimo yeah, it kind of seems like stability has been suffering a little bit 12:39
12:39 leont joined
timotimo it'd be cool if we could find a champion for JVM issues 12:39
for example: i don't know where exactly our "call jvm methods directly" thing is currently at 12:40
did my "dispatch based on arity" code make it into master yet? 12:41
jnthn I think on arity did. 12:43
timotimo that's reassuring :) 12:45
Ugator Hello p6 :-) I had some idea ;) is it possible to add some :nodebug flag to vars at declaration, so that code only made of those will be (hopefully much) faster? 12:46
moritz Ugator: no, but type annotations help to make code faster 12:47
Ugator :-( so just typing and shaping is all - we dont want more?
masaq also, the JIT helps make code faster. 12:48
jnthn As a Perl 6 compiler implementor, I can only say "I can't see how a :nodebug flag will help me make things faser" :)
*faster
moritz Ugator: well, I don't even know what :nodebug would do
masaq it doesn't sound like a viable idea, on the face of it.
jnthn The language is already pretty well designed for being able to optimize such things without programmer hints.
JimmyZ neither java or C# did it : 12:49
:)
jnthn Even when the name survives until runtime, we don't actually look variables up by name in almost all cases.
12:49 guru joined 12:50 guru is now known as Guest195
masaq right, it's all down to numerical indices. 12:50
12:50 Guest195 is now known as ajr_
masaq thanks to the way static lookup hangs together. 12:50
Ugator *happy :-)
does this reflect in benchmarks yet? (concerning typed vars) 12:51
timotimo native typed vars reflect very well in benchmarks
jnthn Well, in native types certainly.
timotimo and having lexicals vs using a hash or something is also much better :P
i suppose one could build a benchmark that artificially uses indirect lookup for lexical variables? 12:52
just to compare against?
doesn't seem very informative to me, though
12:53 cognominal left, cognominal joined 12:54 anaeem1_ left, telex left 12:56 telex joined
masaq no; we're already fast in that sense. 12:57
no need to linger on the past :)
we have enough of the future to worry about
timotimo true 12:58
12:58 tinyblak_ left, tinyblak joined
masaq not to mention the present 13:03
timotimo hm 13:05
so what's the sanest way to figure out if a register's value gets phi'd?
or "has gone through a PHI"
i suppose i could walk the *prev linked list until i either find the BB boundary or the writer of the register in question 13:06
well, or a PHI that writes that register
13:06 kaleem joined
timotimo actually, i would have to abort if anything writes to that register, even at a different version 13:07
13:19 sqirrel_ left 13:22 adu joined, adu left 13:24 chenryn joined, raiph joined
timotimo cool. on the one hand, the optimization gets used a few times during nqp and rakudo build, on the other hand, the build still completes cleanly 13:25
interesting: This representation (Null) cannot unbox to other types 13:26
13:27 tinyblak_ joined
timotimo at <unknown>:1 (/home/timo/perl6/rakudo/../install/languages/perl6/runtime/./CORE.setting.moarvm::4294967295) 13:29
that doesn't look healthy
13:30 masaq left 13:31 tinyblak left
jnthn Nope 13:37
That probably means you tossed an unbox you shouldn't have
And now the register just contains a null
timotimo even segfaults in trans.rakudo.moar 13:38
i only ever toss unboxes that ould have been the result of an if_o or unless_o anyway
the segfault happens in MVM_bigint_bool, interestingly enough
bool_I r4(3), r0(1) 13:40
p6bool r5(1), r4(3)
that's funny to me
(though correct)
jnthn Did the r0(1) instruction setting get eliminated?
timotimo this is just the first result when searching for bool_I 13:41
it's actually from a "Before:"
13:42 mst left, mst joined
jnthn ah, I see 13:42
Mouq perl6 -e'say $~MAIN'
Slang.new(:grammar(Perl6::Grammar), :actions(Perl6::Actions))
timotimo it's really pretty annoying that i can't dump the full traceback when attached to a core dump :(
dalek kudo/nom: 93987f1 | Mouq++ | / (6 files):
Initial stab at getting $~Vars to work
13:44
jnthn Wow 13:45
Mouq++
Ulti what are $~vars ? 13:47
nwc10 was wondering this and got as far as doc.perl6.org/language/variables#The_~_Twigil
but I don't see any good examples that make it clear to me
moritz that's because the mechanism isn't clear to anybody 13:48
nwc10 oh.
timotimo s3.amazonaws.com/static.tumblr.com..._00000.png
13:49 sergot_ joined
sergot_ o/ 13:49
Mouq Pretty much :9 Perl 6's parser is made up of a bunch of sub-languages.. MAIN, the quote lang, the Regex lang.. and any slangs added by users. $~Vars are supposed to access them
timotimo ohai sergot!
how are you doing? 13:50
sergot_ hi timotimo o/
Ulti can you write to them to set a different grammar and actions then?
sergot_ I'm fine, thanks, and you?
Mouq Ulti: Not yet
timotimo oooh
Mouq Ulti: And the semantics of that are still being figured out
sergot_ timotimo: actually, I have a problem.... Why feather doesn not work? :(
timotimo sergot_: no idea ;( 13:51
many people are plagued by that very problem
Ulti Mouq cool
sergot_ :(
timotimo jnthn: now that i actually output a BB's memory address, i can just output an instruction's BB's address in debug output to correlate where exactly my optimization fired
Juerd not_tadzik: pong
rurban Is today a US holiday? 13:52
not_tadzik Juerd: can you help me regain access to feather? SSH cuts the connection whenever I try to get to it 13:53
13:53 tinyblak_ left
Juerd not_tadzik: I'm rebooting it now. More than just ssh was broken. 13:53
sergot_ Juerd++ 13:54
not_tadzik okay :)
Juerd It looks like someone upgraded it to systemd while the kernel is too old (doesn't have the features that systemd requires)
Probably not on purpose, as systemd comes with regular dist-upgrades in unstable
13:55 ntln left, synopsebot left 13:56 [Coke] left, masak left, PerlJam left, pmichaud left 13:57 Util left, dayangkun joined, xtreak joined, sergot left
Juerd This will take a while. 13:57
13:57 tadzik left
timotimo yikes 13:58
not_tadzik I feel a great disturbance in the force
quick, write a perl one-line that greps weechat logs from the last 48 hours for your nickname :) 13:59
13:59 dayangkun left, donaldh joined 14:00 chenryn left, janicez left
moritz Juerd: is there some kind of packet blacklisting that can prevent that from happening again? 14:01
timotimo pinning should cover that feature, i believe
Juerd moritz: No need, I've just upgraded the kernel.
14:01 chenryn joined
Juerd Manually :) 14:01
It's up 14:02
moritz Juerd: \o/
timotimo you've heard it here first, kids: reboot your servers regularly
Juerd timotimo: Rebooting feather1 is only done when everything else fails :)
moritz www.cyberciti.biz/faq/debian-ubuntu...ld-option/ also has an option 14:03
14:03 donaldh left
Juerd Even with upgrades that clearly said "you should really, really reboot now" I haven't done so. Can't just kill that many irc connections just because some postinst script says so. 14:03
moritz but of course upgrading the kernel looks like the better option
Juerd With this kind of virtualization setup, the kernel lives outside the VM
So not even with root access on feather can someone upgrade it. 14:04
This used to be a great approach, and then software started *depending* on new features, instead of only using them if they're there.
14:04 kaare_ left 14:05 chenryn left
Juerd One of the original rationales for this setup was that this way, people couldn't kill their vps by upgrading the kernel to a broken one. 14:05
Now with systemd it's the other way around: now you kill your vps because upgrading your kernel is impossible.
[ OK ] Started (null). 14:06
I wonder what that service is.
Did someone not bother to name their backdoor? :D
14:08 ptc_p6 left 14:09 ptc_p6 joined 14:10 j4jackj joined
Juerd Hm, don't people autostart their screen/tmux + irssi sessions on reboot? :) 14:10
All it takes is "crontab -e" and "@reboot screen -dmS irc irssi"
14:12 alexghacker joined, tadzik joined, j4jackj is now known as janicez
tadzik \o/ 14:13
yoleaux 11 Nov 2014 17:53Z <PerlJam> tadzik: Merge my PR to the synopsebot :)
14:15 sergot_ left 14:16 [Coke] joined
[Coke] Juerd++ 14:16
alexghacker wonders what an "immutable Mu' is and what it's good for 14:18
(and also why he's finding them)
pastebin.com/EFLLsHFa 14:19
oh, morning #perl6! :)
14:20 xtreak left 14:21 tinyblak joined
[Coke] good day 14:22
14:23 tinyblak_ joined 14:26 tinyblak left
alexghacker I'm probably just doing (multiple) something(s) wrong in my attempt to write a deepclone, but so far I've been breaking my teeth on that nut 14:26
moritz m: Mu = 42 14:27
camelia rakudo-moar 93987f: OUTPUT«Cannot modify an immutable Mu␤ in block <unit> at /tmp/huamtkXcC2:1␤␤»
14:27 tinyblak_ left
moritz alexghacker: that's where you get that error from 14:27
or
m: my $x := Mu; $x = 42
camelia rakudo-moar 93987f: OUTPUT«Cannot assign to an immutable value␤ in block <unit> at /tmp/2Efqh1seDQ:1␤␤»
moritz m: sub f() { Mu }; f() = 42
camelia rakudo-moar 93987f: OUTPUT«Cannot modify an immutable Mu␤ in block <unit> at /tmp/t4ko3LMDjg:1␤␤»
alexghacker ah, so I'd guess then I'm seeing that error because $i{'b'}[2] isn't a hash (like it's supposed to be) 14:28
14:28 jfredett joined 14:30 tinyblak joined 14:31 raiph left 14:34 sergot joined
alexghacker changing line 15 to read "{ %hash2; }" makes everything happy. Is there a better way to do that? 14:34
14:34 not_tadzik left
moritz alexghacker: I'd have to see a bit more of the code to tell 14:38
dalek kudo/nom: b93fc6d | Mouq++ | src/core/Slang.pm:
Add parse to Slang.pm

Still too many issues with NQP/Perl 6 interactions, but it at least makes $~vars a little easier to play with
moritz alexghacker: { %hash2 } copies the hash and puts the result into item (scalar) context
alexghacker: if you just want item context, you can say $%hash2 or %hash2.item
alexghacker moritz++: but it would probably be better to enforce item context on the call to deepclone on line 22, wouldn't it? 14:42
moritz alexghacker: I haven't seen your line 22, so I can't comment 14:45
alexghacker: oh, you pastebin'ed something 14:46
alexghacker: sorry, I missed that
alexghacker np
moritz alexghacker: well, I'd rather make deepclone always return an item if it was passed an item 14:47
alexghacker hrm.... that sounds nice. I'm afraid I'll have to research that. 14:48
moritz alexghacker: which in turn requires you to tweak the signatures of your multi subs, because binding to an array param flattens out the item
m: sub f(@a) { @a }; .say for f [1, 2]
camelia rakudo-moar 93987f: OUTPUT«1␤2␤»
alexghacker so, "multi d(Hash:D %h) { ... }" and "multi d(Hash:D $h) { ... }"? or just the latter? 14:50
14:50 Mouq left, ajr_ left, guru joined 14:51 Mouq joined, guru is now known as Guest40648, Guest40648 is now known as ajr_, ptc_p6 left
moritz Hash:D %h would be a hash containing hashes 14:52
and $h forces itemization
so you need (Hash:d \h)
14:53 thou joined
alexghacker o 14:53
alexghacker has been completely misusing signatures 14:54
moritz m: sub f(Hash:d \h) { h.WHO ~~ Scalar }; say f { a => 1 }; say f %( a => 1)
camelia rakudo-moar 93987f: OUTPUT«False␤False␤»
moritz hrm
m: say { a => 1}.WHO.^name
camelia rakudo-moar 93987f: OUTPUT«Stash␤»
Mouq m: sub (Associative:D \h) { h.perl.say }(%(a => b ))
camelia rakudo-moar 93987f: OUTPUT«===SORRY!=== Error while compiling /tmp/uToa3R2p03␤Undeclared routine:␤ b used at line 1␤␤»
moritz m: say %( a => 1}.^name
camelia rakudo-moar 93987f: OUTPUT«===SORRY!=== Error while compiling /tmp/V0s4yYlc9A␤Unable to parse expression in contextualizer; couldn't find final ')' ␤at /tmp/V0s4yYlc9A:1␤------> say %( a => 1⏏}.^name␤ expecting any of:␤ post…»
Mouq m: sub (Associative:D \h) { h.perl.say }(%(a => 1 ))
camelia rakudo-moar 93987f: OUTPUT«("a" => 1).hash␤» 14:55
moritz m: say { a => 1}.^name
camelia rakudo-moar 93987f: OUTPUT«Hash␤»
moritz m: say %( a => 1 ).WHO.^name
camelia rakudo-moar 93987f: OUTPUT«Stash␤»
moritz how the heck do I find out if a hash is itemized?
JimmyZ m: say { a => 1; }.WHO.^name 14:56
camelia rakudo-moar 93987f: OUTPUT«Stash␤»
Mouq m: sub is_item (Associative:D \h) { nqp::iscont(h).say }; say is_item %( a=>1);
camelia rakudo-moar 93987f: OUTPUT«0␤True␤»
moritz m: sub is_item (Associative:D \h) { nqp::iscont(h).say } is_item { a=> 1}
camelia rakudo-moar 93987f: OUTPUT«===SORRY!=== Error while compiling /tmp/qtLlXKyFTg␤Two terms in a row␤at /tmp/qtLlXKyFTg:1␤------> ssociative:D \h) { nqp::iscont(h).say } ⏏is_item { a=> 1}␤ expecting any of:␤ method arguments␤ …»
moritz m: sub is_item (Associative:D \h) { nqp::iscont(h).say }; is_item { a=> 1}
camelia rakudo-moar 93987f: OUTPUT«1␤»
Mouq s/say/Bool/
moritz Mouq: but using nqp:: is cheating 14:57
Mouq: that's fine for the setting, but not for user-space code
jnthn m: say { a => 1; }.VAR ~~ Scalar
camelia rakudo-moar 93987f: OUTPUT«True␤»
Mouq jnthn++
moritz oh, it's .VAR, now .WHO
jnthn .WHO is the stash
Mouq .WHO is the namespace
moritz right
Mouq or stash or yeah 14:58
14:58 pdcawley joined 14:59 pdcawley left 15:00 raydiak left 15:03 pdcawley joined 15:05 FROGGS left
alexghacker m: sub d(Array:D is copy) { for $a.list -> $s { $s = 7 } }; my $t = [ 1, 2, 3 ]; d($t) 15:05
camelia rakudo-moar 93987f: OUTPUT«===SORRY!=== Error while compiling /tmp/jXDNQaUUXf␤Variable '$a' is not declared␤at /tmp/jXDNQaUUXf:1␤------> sub d(Array:D is copy) { for $a.list⏏ -> $s { $s = 7 } }; my $t = [ 1, 2, 3 ]␤ expecting any of:…»
alexghacker m: sub d(Array:D $a is copy) { for $a.list -> $s { $s = 7 } }; my $t = [ 1, 2, 3 ]; d($t)
camelia rakudo-moar 93987f: OUTPUT«Cannot assign to a readonly variable or a value␤ in sub d at /tmp/zW2pDmtdXS:1␤ in block <unit> at /tmp/zW2pDmtdXS:1␤␤»
alexghacker does 'is copy' imply 'is ro'? 15:06
JimmyZ $s? 15:07
alexghacker or am I carrying over bad habits from perl5?
15:07 ptc_p6 joined
moritz -> $s implies ro 15:07
<-> $s for rw 15:08
m: sub d(Array:D $a is copy) { for $a.list <-> $s { $s = 7 } }; my $t = [ 1, 2, 3 ]; d($t)
camelia ( no output )
moritz m: sub d(Array:D $a is copy) { for $a.list <-> $s { $s = 7 }; say $a}; my $t = [ 1, 2, 3 ]; d($t); say $t
camelia rakudo-moar 93987f: OUTPUT«7 7 7␤7 7 7␤»
alexghacker moritz++
thanks
moritz alexghacker: but 'is copy' on an an itemized array parameter will just copy the references 15:09
(it's not a deep clone :-)
alexghacker yes, I'm well aware of that
I've been trying to implement a general (non-safe for data structures with internal references) deep clone 15:10
tadzik nice! 15:11
alexghacker I'm making it harder than it ought to be, though, as my years of perl5 keep creeping into my perl6 15:12
15:12 Diederich-away is now known as Diederich
alexghacker I like perl6 better than perl5 (I think), and I LOVE perl5. 15:12
but I'm starting to see why someone who's really invested in perl5 might not like perl6 15:13
the two feel similar, but doing perl6 naively like you did perl5 is setting traps for yourself 15:15
Diederich well said, alexghacker++ 15:16
15:17 Ugator left 15:18 FROGGS joined 15:20 kaleem left
jnthn decommute & 15:21
15:25 kaare_ joined
dalek c: 1fa6313 | Mouq++ | / (2 files):
Begin to document Metamethods
15:28
c: e459ac8 | Mouq++ | lib/Language/mop.pod:
Document .VAR
15:29 kjs_ joined
hoelzro o/ #perl6 15:29
JimmyZ \o 15:33
15:37 rurban left 15:41 Mouq left
hoelzro would it be a terrible idea to add gist to some of the NQP data types? 15:42
it's frustrating when I call .^methods on something and the REPL complains because NQPRoutine doesn't have a gist method =/
15:42 rurban joined 15:43 beastd joined, KCL_ left
nine TimToady: you made it into LWN's quotes of the week section: lwn.net/Articles/619442/ 15:48
15:50 sqirrel_ joined, thou left
ugexe can i use internal opcodes directly from nqp code? like substr3 for example 15:51
Diederich nine++: thank you for the pointer 15:54
ugexe im aware they are not inteded to be used, im just curious 15:55
15:56 raiph joined 15:59 treehug88 joined 16:02 Ugator joined
timotimo hey hoelzro 16:04
how are you today? :)
hoelzro ahoy timotimo
not bad
slowly updating perl6/syntax this week =/
timotimo oh, syntax highlighting stuff? 16:05
16:06 PerlJam joined, LLamaRider joined 16:09 thou joined
JimmyZ good night 16:09
16:09 JimmyZ left
hoelzro timotimo: yup 16:09
trying to unify everything there
I adapted your code to generate lists of builtin operators/classes/etc
but then after looking at the results, it occurred to me that just because a class or whatever is in Rakudo, doesn't mean it's in the spec =( 16:10
so I'm combing through the spec to make my lists
16:10 zakharyas joined
timotimo oh, damn 16:11
hoelzro I started a template for generating the pygments lexer 16:13
after that's good to go, I'll start on a Vim one
and then Kate
and then Textmate
timotimo that sounds lovely 16:14
may i suggest you prioritize textmate over kate, as github is going to be using that soon (whenever that would be)
ugexe actually it looks like substr2 and substr3 are no longer used by nqp? could their mention in the docs possibly be removed?
timotimo ugexe: i suspect the compiler inspects the number of arguments to substr and emits a call to substr2 or substr3 depending on what it finds? 16:15
hoelzro timotimo: sure 16:16
I'm not too worried about them rolling that out soon, though
holidays are coming, but I'm hoping that this won't take me too long after I finish the builtin lists
I think TM highlighting is basically a list of keywords anyway 16:17
which will make the highlighting of more complex constructions interesting =/
timotimo hey, cool, i've been looking at this problem from the wrong angle the whole time!
ugexe timotimo: ill check it out more, thanks for the info. Im not familiar with quast::op
i am confused at why i can call some internal functions (like nqp::indexfrom) but not others (nqp::substr3) 16:18
timotimo in line 2111 of QASTOperationsMAST.nqp in nqp you can see there's only substr and the code-gen inserts a constant -1 if there's no third argument
ugexe i should have been grepping for substr not substr3 i see :) 16:19
timotimo perhaps :) 16:20
16:23 sqirrel_ left
japhb timotimo: You asked yesterday if I was still around ...? 16:26
timotimo oh
yeah, and now i even remember what i meant to ask!
can there be an option or something for "bench history" to not only show dates, but also commit IDs? 16:27
16:29 ghostlines left
japhb timotimo: Are you looking for the full SHA1 or something like the output of `git describe`? 16:29
timotimo the latter 16:33
jdv79 where are the :U and :D (like Int:D) modifiers documented? 16:34
16:35 erkan left
timotimo "type smileys"? 16:36
jdv79 I could only find it in the advent calendar after searching the web for quite some time. 16:37
hoelzro jdv79: I think S12 16:38
jdv79 would it make sense for that to be on doc.perl6.org/ somewhere?
hoelzro perlcabal.org/syn/S12.html#Abstract...rete_types 16:39
jdv79 ah, nice. google failed to find that for me.
timotimo it would make sense, aye
hoelzro I think a doc on types would be nice
types + signatures 16:40
jdv79: I have a local check out of the specs; I don't rely on Google anymore =/
a more intelligent search engine for S* would be nice
jdv79 yeah, i was just poking around and found it difficult to find docs quickly and easily for pieces of syntax i don't know about in examples or signatures or related. 16:41
PerlJam S12:1625
dalek rl6-roast-data: 01504f4 | coke++ | / (5 files):
today (automated commit)
jdv79 its a bit exhausting but i guess one could argue more rewarding to have to hunt down random bits 16:42
16:43 kjs_ left
PerlJam jdv79: it allows for serendipity 16:44
jdv79 is there something like Devel::NYTProf yet?
timotimo there's only the parrot-based profiler that outputs a kcachegrind-compatible file and moarvm's profiler that's per-callframe 16:46
jdv79 yeah, not like enough:) 16:47
i meant :(
hoelzro I thought there was a moar profiler that jnthn++ wrote?
16:48 zakharyas left
jdv79 i didn't find it easy to use. NYTProf is quite polished. 16:48
japhb timotimo: Distracted this morning, could you add your perl6-bench request as another github issue so I don't lose it? 16:49
hoelzro jdv79: polish is something we're missing a bit at the moment 16:50
timotimo sure
hoelzro barring tadzik, that is =P
16:50 thou left
japhb timotimo: thanks 16:50
16:51 guru joined, ajr_ left 16:52 guru is now known as ajr_, fhelmberger left
timotimo no, thank *you* :) 16:52
[Coke] jdv79: didn't find it easy to generate the profile, or navigate the output? 16:58
hoelzro do we have a forum for submitting library module names that anyone can create?
jdv79 navigate the output
[Coke] hoelzro: like, a most wanted?
16:58 zakharyas joined
[Coke] if so, 16:58
hoelzro [Coke]: well, instead of which modules I want, more like, "I came up with a name I found clever. Use it if you want"
[Coke] github.com/perl6/perl6-most-wanted
... that seems like a strange list to keep. :) 16:59
hoelzro yeah, it's really "Rob's list of awful puns" 17:00
=)
timotimo hah 17:01
i'd like to see some of those
jdv79 [Coke]: is there a way to navigate the moarvm profiler output in a code view type way?
hoelzro timotimo: off the top of my head...
"Orly - a simple ORM for Perl 6"
17:01 denis_boyun_ left
hoelzro and "Speculaas - a spec testing library for Perl 6" 17:02
dalek kudo/nom: f8f6feb | (Timo Paulssen)++ | src/vm/moar/ops/perl6_ops.c:
a p6bool "basically" boxes an int.

may want to invent a second flag "BOXED_NORMALIZED" or so that would only allow boxing/unboxing skipping if the result is used in an if/unless op.
17:03
timotimo i don't get speculaas :(
hoelzro spec + ulaas
I told you, they're terrible =)
en.wikipedia.org/wiki/Speculoos
jdv79 ORMs are a nightmare and always a ball of comprimises - surely there are better things to do;) 17:04
[Coke] jdv79: no; everything is by sub, I think.
so you can get "Routines" or "Call Graph", but not by file.
hoelzro jdv79: interestingly enough, I don't really care for ORMs for spec-based tseting =)
17:05 davido___ left
hoelzro but some people do, so I would try my hand at writing one if I had time 17:05
17:05 ajr_ left
timotimo oh 17:05
[Coke] I don't think I've ever worked on a project where I wanted an ORM or thought "wow, this ORM really simplifies things"
timotimo i know them as "spekulatius"
(and they are frigging amazing)
[Coke] almost always it's just been a nightmare the client has demanded.
timotimo [Coke]: you can get "by file" ... well, at least you can filter by file name
17:06 guru joined, davido___ joined
hoelzro [Coke]: twitter.com/j_simone/status/531968828247265284 17:06
17:06 guru left
hoelzro I wholeheartedly agree with the linked tweet (and you) 17:07
[Coke] timotimo: fair enough, but I mean "a file showing a code listing, in order..."
hoelzro so jdv79 is probably right in that there are better things to do with my time
[Coke] part of the issue there is you might be running against pre-compiled code.
17:08 guru joined
timotimo didn't tadzik build a tool at some point that does that? 17:08
17:08 guru is now known as Guest84121
timotimo [Coke]: what do you mean, "pre-compiled code"? 17:08
17:08 Guest84121 is now known as ajr_
[Coke] e.g. when you install a module, it's compiled down to .moarvm files, and then later, when you use the module, you're using that precompiled file rather than the .p6. No? 17:10
I would love to see more info on the profiler. e.g. ont he OSR/Deopt. I see a count.... is that number good? 17:12
17:13 kaleem joined 17:14 Mouq joined
timotimo [Coke]: the fewer deopts, the better 17:14
and the moarvm profiler operates on the bytecode level
so precompiled doesn't cause trouble 17:15
you would still want to fetch the source in order to get a good output going on
[Coke] Yes. but while you might have your source lying about, you might not have the source that was used to generate an installed .moarvm file.
timotimo nowadays we install the source along with the moarvm file, too :)
[Coke] but that's just a convention.
timotimo mhm 17:16
[Coke] You know people are going to ship stuff that is just .moarvm files. :)
17:16 FROGGS left
timotimo well, that's kind of like perf ... if you install the kernel debug symbols it gives you a whole lot more info 17:16
[Coke] m: say Date.new(1764,2,1).day-of-week.WHAT 17:17
camelia rakudo-moar b93fc6: OUTPUT«(Int)␤»
[Coke] ^^ how hard would it be to make that an int, since it can't ever not fit?
17:17 kjs_ joined
[Coke] Or, how can I force it to compare with ints against a literal 7? (And, would forcing it to be an int make the code run faster on moar?) 17:18
timotimo can we actually return non-boxed values from methods and subs?
17:18 espadrine` left 17:19 regreg joined, kaleem left
Mouq m: sub (Int:Foobar $x) { }(5) # ಠ_ಠ 17:19
camelia ( no output )
Mouq std: sub (Int:Foobar $x) { }(5)
17:19 camelia left
Mouq Sorry camelia T_T 17:20
jdv79 He might not appreciate me repeating this but I once asked Siracusa, the author of Rose::DB::OBject, why he created it after we were discussing some limitations and bugs and stuff. He said "youthful indiscretion".
timotimo [Coke]: when your code gets spesh'd, the day-of-week method may be in-lined and with my most recent commits to moarvm, a boxing before and unboxing after returning from the in-lined method would probably be skipped
Mouq viv dies with "In parameter declaration, typename 'Int:Foobar' must be predeclared (or marked as declarative with :: prefix)"
17:21 camelia joined
timotimo what feature is this you're testing here? 17:21
doesn't seem familiar to me
Mouq me?
camelia std : OUTPUT«Can't chdir to '/home/camelia/std/snap': No such file or directory at lib/EvalbotExecuter.pm line 166.␤ EvalbotExecuter::_auto_execute(HASH(0x1c009c8), "sub (Int:Foobar \$x) { }(5)", GLOB(0x8f27898), "/tmp/FxxVKsIoeQ", "std") called at lib/EvalbotExecuter.pm line 114…» 17:22
17:22 ChanServ sets mode: +v camelia
Mouq because I'm testing the Rakudobug that lets Int:T slip through even though :T isn't implemented 17:22
timotimo oh 17:23
i see
tony-o anyone else getting a connection refused error using panda right now? 17:31
17:33 zakharyas left
timotimo oh, tadzik did you have to restart the panda server on feather? :) 17:34
the next thing i ought to do is give set removal another try ... :S 17:35
arnsholt Anyone know what could cause a "Can't pop from an empty array" error in HLL::Grammar.EXPR_reduce?
timotimo github.com/sillymoose/Perl6-One-Liners - yay, something fun to contribute to! 17:37
tadzik timotimo: yeah, should :) 17:38
17:39 abraxxa left
tadzik just ipv4 now, will fix it Soon[tm] 17:39
17:39 panchiniak joined
timotimo OK, thanks :) 17:39
Mouq arnsholt: Maybe if you have one of `proto token {prefix,infix,postfix}` but no candidates? 17:40
Or no, wait
I have no clue :P
arnsholt No, looks like the termstack is somehow empty...
arnsholt tries updating NQP
Nope >.< 17:42
Mouq arnsholt: Empty as in it's called as EXPR_reduce([], @opstack)? 17:44
17:44 pecastro left 17:49 pdcawley left
arnsholt Aha! 17:54
I had a postcircumfix with :assoc<left>, which made it look for TWO operands
Setting :assoc<unary> fixed it
TimToady interesting failure mode 17:58
17:59 kurahaupo left
arnsholt Yeah, a bit =) 18:00
TimToady notes that you can only get in this situation if you specify your associativity directly, rather than just cloning the attributes of an existing operator
arnsholt True. This is in NQP for my Python compiler though, so I think I have to do it directly =) 18:01
TimToady ah
arnsholt In fact, I don't think Rakudo's grammars have an EXPR by default
18:02 ajr_ left
TimToady nope, one is expected to supply one's own bottom-up parsers 18:02
arnsholt Quite
I'm considering contributing a post on that for this year's advent calendar, in fact
Basically a simplistic clone of NQP's EXPR in Perl 6 18:03
TimToady at one point I went through STD's EXPR and marked the six or so lines that were Perl 6 specific
but we never did anything with that
18:03 virtualsue left 18:04 regreg left 18:08 gfldex joined, dakkar left 18:12 KCL_ joined 18:15 shlomif joined 18:16 erkan joined, rindolf left 18:17 araujo left 18:18 araujo joined 18:26 MAA11YR joined 18:30 [Sno] left
arnsholt jnthn++ # NQP and QAST and things in general 18:32
18:37 perltricks joined
timotimo oh yes 18:39
arnsholt Doing this Python stuff in NQP is turning out to be pretty feasible, for a rough draft at least 18:40
timotimo that's nice :)
arnsholt Working on function definitions now 18:42
perltricks A collection of Perl6 one liners: github.com/sillymoose/Perl6-One-Liners contributions, feedback welcome!
18:43 shlomif is now known as rindolf
timotimo perltricks: i went ahead and posted that about an hour ago :) 18:43
some of these perl5 one-liners are ... just lol.
as in: 18:44
perl6 has a primitive that turns that into basically a single method call or two
18:44 kjs_ left
perltricks ahh cool, thanks. Yeah I suspect that many of my translations are verbose due to my P6 ignorance 18:44
timotimo oh
no, i meant the *original* perl5 lines :) 18:45
perltricks lol yeah. objective #1 is to get a decent translation of most of the original P5 ones. #2 would be to add some new chapters 18:46
this is my fave so far: perl6 -e 'print ("0".."z").roll(15)' 18:47
timotimo hum. 0..z, eh?
m: say @("0".."z")
camelia rakudo-moar f8f6fe: OUTPUT«0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z␤»
timotimo well, that doesn't really surprise me 18:48
i suppose it could be what you want? %)
perltricks yes, psw generator
for example
timotimo m: say roll "0".."z", 15
camelia rakudo-moar f8f6fe: OUTPUT«===SORRY!===␤No such method 'pred' for invocant of type 'Range'␤»
18:48 kjs_ joined
timotimo m: say roll 15, "0".."z" 18:48
camelia rakudo-moar f8f6fe: OUTPUT«v l c K 1 k > ? : D 2 e V q O␤»
timotimo this version avoids havign to put ( ) around the range
18:49 anaeem1 joined, guru joined, guru is now known as Guest80840, Guest80840 is now known as ajr_
perltricks timotimo: hah! very nice. It gets addictive 18:50
timotimo hah :) 18:53
19:04 anaeem1 left 19:05 anaeem1 joined
Mouq perltricks: Oh, you === sillymoose? 19:05
19:05 rurban left
Mouq I made you a PR :) github.com/sillymoose/Perl6-One-Liners/pull/1 19:05
perltricks Mouq: yeah guilty
TimToady timotimo: p5 is getting signatures now, which is arguably p6-inspired 19:06
perltricks Mouq: thanks!
timotimo TimToady: method signatures, and heavily cut down as well, AFAICT 19:07
wait. no. subroutine signatures*
TimToady m: say roll "0".."z": 15 19:08
camelia rakudo-moar f8f6fe: OUTPUT«E S K n H j : m V i S q L C Q␤»
perltricks Mouq: merged, so much nicer without $*ARGFILES 19:09
timotimo oh, we have that now, too
perltricks: yeah, the point of argfiles is that you don't have to spell it out
tony-o m: say roll 'a'..'z':15
camelia rakudo-moar f8f6fe: OUTPUT«===SORRY!=== Error while compiling /tmp/HJQgSAUqhY␤Two terms in a row␤at /tmp/HJQgSAUqhY:1␤------> say roll 'a'..'z'⏏:15␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-…»
TimToady arguably somewhat obfuscated
tony-o m: say roll 'a'..'z': 15
camelia rakudo-moar f8f6fe: OUTPUT«i r d r m c y w q d r e i s b␤» 19:10
perltricks TimToady: thanks, adding to examples!
TimToady arguably somewhat obfuscated, with that complicated of an object expressoin
19:13 hugme left 19:15 PerlJam left, sergot left, dalek left, [Coke] left, tadzik left 19:19 vendethiel joined 19:20 psch joined
psch hi #perl6 o/ 19:20
timotimo heyo psch 19:21
psch m: say set( set(1,2), set(2,3))
camelia rakudo-moar f8f6fe: OUTPUT«set(set(1, 2), set(2, 3))␤»
psch \o timotimo
19:22 Ven joined
psch i was scared that invocation of set would be weird, re the discussion yesterday. it's not though :) 19:22
vendethiel .tell masak www.ccs.neu.edu/home/dherman/resear...ygiene.pdf
yoleaux vendethiel: I'll pass your message to masak.
vendethiel o/, #perl6.
psch m: say "hi { (.tc, '/', $_ ~ 'dethiel' given "ven") }" 19:26
camelia rakudo-moar f8f6fe: OUTPUT«hi Ven / vendethiel␤»
psch .oO( not only for regexes )
Ven yes
wat
timotimo jnthn: would it be bad if i were to give spesh a second pass that does set squishing?
psch Ven: i saw masa(q|k) doing regex-y things somewhen in the backlog... :P 19:27
Ven please :(
19:31 ab5tract joined 19:32 masak joined
masak ohayo, #perl6 19:32
yoleaux 19:22Z <vendethiel> masak: www.ccs.neu.edu/home/dherman/resear...ygiene.pdf
masak so hygiene!
vendethiel such macro
and so on and so forth
masak pushes URL onto growing to-read list
still can't access feather :/
though I saw in the backlog that Juerd++ was fixing things
I have a different error message now: "ssh: connect to host feather.perl6.nl port 22: Network is unreachable" 19:33
Juerd Sorry, fysical box crashed
Just replaced the PSU and it's now fsck'ing
vendethiel masak: you don't say :/. I think I've been suffering from a severe burnout. I've like 15 commits this month, compared to 100 commits previous months
Juerd s/fy/phy/
masak Juerd: wow. ok. 19:34
Juerd Let's hope it's entirely unrelated to the kernel upgrade that was necessary earlier :P
masak vendethiel: yeah, rest periods are important. I'm feeling the weight of $work and the lack of vacation, too.
vendethiel masak: problem is.. I've had vacations. I went to apw. It was great. But now I'm even more tired than before 19:35
19:35 colomon left
jnthn Just don't take a vacation taht give you enough jetlag you need several days to recover after... :P 19:36
timotimo :)
nine vendethiel: I have to admit, while workshops are awesome and inspiring, they are not exactly vacation. I was at LPW last weekend and really want to bulldoze through work. But there's no energy...
Juerd Aaaaand feather's up again 19:37
masak vendethiel: I'm sorry, I have no automatic global fixes to this. but make sure you do something about it, is my suggestion.
vendethiel nine: haha. I'd still do it again :-)
Juerd Just expect a lot of slow IO while everything's still booting.
19:37 hugme joined, ChanServ sets mode: +v hugme
masak Juerd++! 19:37
19:37 masak left
Juerd The host has a load of 10 now 19:37
(1 minute avg)
nine vendethiel: same here ;) Just trying to say: workshops are no substitute for real time off
vendethiel indeed. 19:38
jnthn Workshops are not restful at all for me. :P
19:38 masak joined
nwc10 I only found the workshop restful once we got to the hackathon, and basically Denis did a wonderful job of taking care of everything 19:39
jnthn Typically, I lose sleep preparing presentation, then lose sleep drinking beer, which makes my sleep worse, then it's so fun to see people that I talk with them until 2am, and then I get home happy and exhausted. :P
masak \o/ feather!
vendethiel nwc10: thanks for your work <3
nine What's also not restful: coming home from work and having to work on a master's thesis just to satisfy some arbitrary minimum pages requirement...
nwc10 (and to be fair, pepl did a wonderful job of keeping everything roughly under control at the workshop proper)
timotimo welcome back, le masaque!
19:39 [Coke] joined
jnthn nine: Bigger font? ;) 19:40
nwc10 nine: is there a maximum font size you're permitted to use?
(more words, took longer to type)
line spacing?
nine jnthn: comforting to hear that I'm not the only one losing sleep over the things you mentioned ;)
nwc10 k e r n i n g ?
nine There's a latex template we have to use, so not much room for typographical adjustments
nwc10 crafty buggers 19:41
masak nwc10: kemming! :P
er, keming*
nwc10 is it Friday? 19:42
masak almost
timotimo Intemational Keming Dæ?
19:42 tadzik joined
nwc10 jnthn: have you considered going to Tivoli for your next holiday? 19:43
jnthn nwc10: So queue! :( So Danish lager! :( 19:44
19:44 colomon joined
jnthn So no, that doesn't really appeal :P 19:44
timotimo jnthn: in spesh's optimize_bb we iterate through all "children" of a BB; that's a tree, yes? 19:45
19:45 PerlJam joined
timotimo we don't optimize_bb the same bb twice? 19:45
jnthn timotimo: Specifically, iirc, walk over the dominance tree
timotimo: Whcih has some nice properties
timotimo ah
jnthn but yes, once per bb
19:45 virtualsue joined
timotimo good 19:46
psch i think i don't quite understand how lexical symbols and lexical containers interact 19:47
the "copy and adjust stuff from somewhere else"-method brought me the following:
19:47 kjs_ left
jnthn (Generally worth knowing, is that pred/succ on BBs are about linear order, whereas parent/child is about dominance) 19:47
psch $ ./perl6 -e'my sub a { 1 }; &a := { 2 }; say &a() ~ " " ~ a'
2 1
so binding to the container clearly works, but i'd have to rebind stuff to the symbol, because symbol and container are not identical 19:48
jnthn psch: You're really not meant to rebind subs...we probalby should whine about that. 19:49
timotimo dominance is about what other BBs are impacted by changes in registers or something?
psch jnthn: there's a ticket somewhere that says we should be able to, iirc. or maybe it's just tests that assume we should be able to
jnthn: we currently die with X::Bind "Cannot bind to this RHS"
timotimo "to this RHS"? 19:50
psch err, LHS :)
timotimo are we supporting R:= now? :)
timotimo reads the wikipedia article on SSA and is enlightened 19:51
jnthn psch: If we can't forbid that, we can't inline, and if we can't inline, we're screwed, so... :)
timotimo AFAIK we're not doing any BB-spanning optimizations yet, is that correct?
(unless you count changing branching ops into gotos or throwing them out as "spanning BBs")
psch jnthn: oh, alright. i guess throwing out the tests is the thing to do, if anything
19:52 raiph left
perltricks Hey was the -f option from S19 dropped? 19:56
PerlJam perltricks: what did -f do? 19:57
perltricks oh sorry I meant "-F". I think it was to specify the autosplit expression 19:58
maybe with methods like .words, .chars etc it was considered unnecessary? 19:59
PerlJam often one wants to split on ":" or "|" or something instead, so I doubt .words caused it to go away 20:00
psch perltricks: it's there, under "Unchanged Syntactic Features". it might be NYI though
PerlJam was it ever actually implemented?
psch there is this shiny new cli opt parser PR sitting around... :) 20:01
although that's probably only slightly related 20:03
20:03 telex left 20:04 telex joined 20:05 darutoko left 20:06 hugme left
psch oh. nevermind the "toss the tests" bit above. those aren't testing for subs but for &-lexicals 20:07
binding to &-lexicals doesn't work right now, because they are wrapped in a QAST::Op(:op<ifnull>). i'm not sure walking past that could break anything, but it did pass the tests.
20:08 hugme joined, ChanServ sets mode: +v hugme
psch apparently the assumption that 'sub a { }' and 'my &a = { }' are equivalent was wrong on my part 20:08
20:08 kaare_ left 20:09 [Sno] joined 20:11 spider-mario joined 20:14 ab5tract left
moritz m: sub a { }; &a := sub { 42 }; say a() 20:15
camelia rakudo-moar f8f6fe: OUTPUT«===SORRY!=== Error while compiling /tmp/6QSoYc9l15␤Cannot use bind operator with this left-hand side␤at /tmp/6QSoYc9l15:1␤------> sub a { }; &a := sub { 42 }⏏; say a()␤ expecting any of:␤ postfix…»
moritz m: sub a { }; &a = sub { 42 }; say a()
camelia rakudo-moar f8f6fe: OUTPUT«Cannot modify an immutable Sub␤ in block <unit> at /tmp/j0eqrKN_Q_:1␤␤»
psch m: my &a = { }; &a := { 1 }; say a(); 20:16
camelia rakudo-moar f8f6fe: OUTPUT«===SORRY!=== Error while compiling /tmp/DTOr0RmcAe␤Cannot use bind operator with this left-hand side␤at /tmp/DTOr0RmcAe:1␤------> my &a = { }; &a := { 1 }⏏; say a();␤ expecting any of:␤ postfix␤ …»
20:18 ab5tract joined
ugexe nqp: sub f3 ($x, $y?, $text?) { if ! nqp::defined($y) && ! nqp::defined($text) { say('ok 4 # unpassed optional args are undef'); } else { say('ok ', $x - $y, $text); } }; f3(2); f3(8,3, ' # optional args get passed values'); 20:23
camelia nqp-jvm: OUTPUT«(signal ABRT)»
..nqp-{moarvm,parrot}: OUTPUT«ok 4 # unpassed optional args are undef␤ok 5 # optional args get passed values␤»
20:23 sergot joined
ugexe ^ does that mean the test here can be uncommented? github.com/perl6/nqp/blob/a0842ef5...args.t#L16 20:23
its in regards to using 'defined' on an optional subroutine argument 20:25
20:28 kurahaupo joined
[Coke] nqp doesn't have fudging, so the test will fail on jvm. 20:30
20:38 denis_boyun_ joined
japhb OOC, why is nqp-jvm ABRT'ing? 20:42
PerlJam Why doesn't nqp have fudging? Has it just not been needed? Or, is it just that the bang/buck ratio isn't there for the 1 or 2 tests that would benefit from it 20:43
?
Mouq Request: Request Supply methods that are sensitive to arity. Specifically, .tap and .act 20:44
s:2nd/Request//
20:45 janicez is now known as j4janicej 20:46 denis_boyun_ left
[Coke] PerlJam: IME, it's that we rely on rakudo's testing to catch issues in nqp 20:47
"fix fast, forget fudge"
tony-o .tell froggs thank you for Tuxic, this slang stuff is getting interesting 20:48
yoleaux tony-o: I'll pass your message to froggs.
20:51 bbkr joined
bbkr hi. is Promise object available somehow within start { } scope? 20:52
PerlJam bbkr: you mean the one that start is creating for you? 20:53
bbkr yes
tony-o bbkr: start returns a promise
PerlJam I doubt it. But you can make your own Promise and use that with start
timotimo tony-o: that's not what he wants :)
moritz bbkr: just curious, what would you use it for? 20:54
timotimo PerlJam: the big benefit of using the start mechanism is that you get the promise keep/break thing "guaranteed" because it handles leaving the block for you
bbkr I have a sub that takes $task param that should be ran on thread. and within that sub it may fail... so I need Promise.vow there to break promise. 20:55
tony-o m: await start { sleep 1; 'here'.say; }; '/here'.say;
camelia rakudo-moar f8f6fe: OUTPUT«here␤/here␤»
20:55 FROGGS joined
tony-o timotimo: oic ^^ 20:55
20:55 LLamaRider left
bbkr what do you meen by guaranteed? how to break promise from the start block? 20:56
my $p = start { oops_something_went_wrong }; await $p; # expect $p to be Broken 20:57
moritz bbkr: but if you simply die() from the start block, the promise will be broken
tony-o m: my $p = start { die 'dead'; }; await $p; $p.kept.say; 20:58
camelia rakudo-moar f8f6fe: OUTPUT«===SORRY!===␤dead␤»
bbkr I've tried that
moritz m: my $promise = start { die 42 }; say try $promise.result
camelia rakudo-moar f8f6fe: OUTPUT«Nil␤»
moritz m: my $promise = start { die 42 }; say try $promise.result; say $!
camelia rakudo-moar f8f6fe: OUTPUT«Nil␤42␤ in block at /tmp/XmyRMv9cUH:1␤ in block at src/gen/m-CORE.setting:20730␤ in block at src/gen/m-CORE.setting:20522␤␤»
tony-o m: my $p = start { die 'dead'; }; await $p; $p.result.say;
camelia rakudo-moar f8f6fe: OUTPUT«===SORRY!===␤dead␤»
tony-o m: my $p = start { $p.break; }; await $p; $p.result.say;
camelia rakudo-moar f8f6fe: OUTPUT«===SORRY!===␤Access denied to keep/break this Promise; already vowed␤»
PerlJam $promise.status will tell you Kept/Broken 20:59
(IIRC)
moritz m: my $promise = start { die 42 }; await $promise; say $promise.status
camelia rakudo-moar f8f6fe: OUTPUT«===SORRY!===␤42␤»
moritz m: my $promise = start { fail 42 }; await $promise; say $promise.status
camelia rakudo-moar f8f6fe: OUTPUT«===SORRY!===␤Could not find symbol '&Return'␤»
PerlJam huh
that second one is surely LTA 21:00
masak agreed.
please submit.
Mouq m: await (start { die }).then({.status.say})
camelia rakudo-moar f8f6fe: OUTPUT«Broken␤»
tony-o is there a slang tutorial or is that a good topic
arnsholt Bah. Python's scoping rules are annoying >.< 21:01
PerlJam um ... I'm not currently in a state where I can easily submit a rakudo bug
masak arnsholt: yes.
arnsholt: I can only imagine they're annoying to implement, too.
PerlJam: I'll do it.
arnsholt Also, interact annoyingly with how I wanted to implement them too
masak submits rakudobug
Mouq Did camelia ignore me? 21:02
arnsholt But any problem can be solved with another layer of indirection
Mouq m: await (start { die }).then({.status.say})
camelia rakudo-moar f8f6fe: OUTPUT«Broken␤»
arnsholt (In this case, another grammar rule)
bbkr that method will be ok, thanks!
arnsholt Which is needed to force a new NQP-level scope =D
bbkr r: my $p = Promise.new; $p.start( {die} ); 21:04
camelia rakudo-moar f8f6fe: OUTPUT«Invocant requires a type object, but an object instance was passed␤ in method start at src/gen/m-CORE.setting:20726␤ in block <unit> at /tmp/tmpfile:1␤␤»
..rakudo-parrot f8f6fe: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared name:␤ Promise used at line 1␤␤»
bbkr what is "type object" ? 21:05
moritz m: my $p = Promise.start( {die })
FROGGS o/
yoleaux 20:48Z <tony-o> FROGGS: thank you for Tuxic, this slang stuff is getting interesting
camelia ( no output )
moritz bbkr: Promise is a type object. As is Int or Str
masak m: given Str { unless .defined { say "it's probably a type object!" } } 21:06
camelia rakudo-moar f8f6fe: OUTPUT«it's probably a type object!␤»
moritz bbkr: that is, an object that represents the actual clas
masak or role, or enum, or subtype. 21:07
21:08 KCL_ left
masak 'night, #perl6 21:09
'night, feather 21:10
Mouq 'night masak
bbkr I see. A bit misleading error message - type object or object instance is passed implicitly to .start body. I thought error was about passed param inside - {die} in this case.
21:11 kjs_ joined 21:16 perltricks left, kjs_ left
tony-o FROGGS: is there docs for slangs or am i best to look at tuxic and STD ? 21:17
FROGGS tony-o: no docs yet, because we are still just doing experiments 21:18
Tuxic and v5's Perl5.pm might do
bbkr another riddle... why "await ($p).then(-> $p { say $p.status});" does not print die that happens in Promise while "$p.then(-> $p { say $p.status}); await $p" prints it? 21:19
r: my $p = Promise.start( { die 666 } ); $p.then(-> $p { say $p.status}); await $p; 21:20
camelia rakudo-moar f8f6fe: OUTPUT«Broken␤===SORRY!===␤666␤»
..rakudo-parrot f8f6fe: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared name:␤ Promise used at line 1␤Undeclared routine:␤ await used at line 1␤␤»
FROGGS tony-o: I said a little bit about slang here: irclog.perlgeek.de/perl6/2014-11-10#i_9638493 21:22
(and the following lines)
21:22 lizmat joined 21:24 woolfy joined 21:25 Mso150 joined
Mouq is going to have something on doc.perl6.org soon-ish about using slangs now 21:25
timotimo \o/ 21:26
btyler_ sub prefix:<&>($thing) { OpaquePointer.new($thing.WHERE) } # level of "omg no", 1-10? 7?
Mouq timotimo: Soonish = a few days
tony-o Mouq: can i get a sneak preview ?
i'm having a lot of trouble trying to figure out where i'm falling short 21:27
timotimo that's good enough :)
Mouq tony-o: Heh, uh, ok, it's very rough, but I'll pm you
FROGGS btyler_: 10, because .WHERE can change 21:28
btyler_ FROGGS: doh, ok 21:29
thanks
timotimo FROGGS: don't we pin objects when we get a .WHERE?
FROGGS btyler_: so do not even think about pointers that point to things managed by a GC :o)
timotimo or does that require an nqp:: op?
arnsholt Whoa. Functions! \o/
FROGGS timotimo: I am not sure 21:30
timotimo arnsholt: is this the future?!
FROGGS m: my $a; say $a.WHERE; my @a = ^10_000; say $a.WHERE
camelia rakudo-moar f8f6fe: OUTPUT«32877560␤32877560␤»
FROGGS m: my $a; say $a.WHERE; my @a = ^10_000_000; say $a.WHERE
camelia rakudo-moar f8f6fe: OUTPUT«39377912␤Memory allocation failed; could not allocate 1048576 bytes␤» 21:31
FROGGS m: my $a; say $a.WHERE; my @a = ^100_000; say $a.WHERE
camelia rakudo-moar f8f6fe: OUTPUT«42548216␤42548216␤»
FROGGS hmmm
I dunno
timotimo you can force_gc
FROGGS m: my $a; say $a.WHERE; nqp::force_gc; say $a.WHERE 21:32
camelia rakudo-moar f8f6fe: OUTPUT«51006456␤51006456␤»
FROGGS m: my $a; say $a.WHERE; nqp::force_gc; nqp::force_gc; say $a.WHERE
camelia rakudo-moar f8f6fe: OUTPUT«45579256␤45579256␤»
timotimo m: my $a; say $a.WHERE; nqp::force_gc for ^100_000; say $a.WHERE
FROGGS looks like it is stable not
btyler_ encouraging
FROGGS now*
jnthn .WHERE is not stable
Or designed to be
FROGGS see :o)
jnthn Use .WHICH if you need a persistent identifier for an object.
camelia rakudo-moar f8f6fe: OUTPUT«(timeout)34139128␤»
timotimo m: my $a; say $a.WHERE; nqp::force_gc for ^1_000; say $a.WHERE
camelia rakudo-moar f8f6fe: OUTPUT«37665784␤37665784␤»
timotimo jnthn: if you rely on this, you'll get into some massive trouble ... but that's your own fault in that case :D 21:33
jnthn timotimo: Right. :)
FROGGS gnight
21:33 FROGGS left
timotimo gnite froggs! 21:33
btyler_ night FROGGS, thanks for the pointer
jnthn About "die" inside of start, yes, it gives a broken Promise. But using "await" unpacks and rethrows any exception.
So you don't lose it. 21:34
That's usually a good thing. :)
arnsholt timotimo: See head of snake repo if you're interesting (since it looks like there's no commitbot)
s/interesting/interested/ # =D
timotimo i am very interesting! 21:35
oh ...
:S
btyler_ jnthn: is there a way to get something suitable for initializing OpaquePointer? .WHICH seemed a good fit there. mostly I'm stumbling around trying to figure out how to do ** in NativeCall
PerlJam for some reason I expect 'head of snake' to come with GI Joe puns 21:36
timotimo arnsholt: i was expecting to see example code in the t/ folder :)
btyler_ see: libgit2.github.com/docs/guides/101...nit_simple . I have it "working" by essentially doing "my $repo := OpaquePointer.new(OpaquePointer.new().WHICH);" and feeding that to git_repository_init 21:37
jnthn Oh, that likely won't work out well at all
timotimo oh yikes 21:38
jnthn I think the usual idiom there is to exploit a one element pointer array being the same as a pointer to a pointer.
timotimo yeah
btyler_ I think I used that trick but with a single member struct for the discount bindings
and felt like I was cheating horribly
lizmat waves to jnthn 21:40
jnthn waves over the sund to lizmat 21:41
lizmat: Fine journey?
lizmat yeah, the ferry accidentally had some delay, so we made it just on it and it left
just after we boarded 21:42
jnthn occasionally, delays work out useful :)
lizmat yup...
21:44 anaeem1 left
lizmat so all in all it was just an 11 hour trip, with a visit to friends in Groningen for lunch :-) 21:44
21:44 anaeem1 joined 21:45 kurahaupo left
jnthn Not bad. 21:45
21:49 anaeem1 left
ab5tract TimToady: last night's discussion of composers vs coercers inspired me, the result of which is enough writing to fill a blog post on the distinction 21:49
i guess i'll have to start a blog now :) 21:50
21:52 woolfy left, woolfy1 joined 21:57 Ven left 21:59 grondilu left 22:05 psch left 22:07 kjs_ joined 22:08 kjs_ left
ab5tract next time i will make sure to consult the relevant synopses before getting so excited 22:11
arnsholt timotimo: Yeah, I've been neglecting t/ 22:16
Should probably do something about that...
22:17 kjs_ joined 22:18 kjs_ left
tony-o i'm still getting connect refused from panda, is something happening going on? 22:21
22:21 Mso150 left 22:23 rindolf left
timotimo that would be not so awesome 22:31
i wanted to run a perl6-bench, which requires installing lots of modules as dependencies
well, not really that many
ugexe panda is working for me 22:34
arnsholt Oh. FFS, Python. Whether a list has elements or not has consequences for whether the iterator variables are defined or not >.< 22:37
timotimo "the iterator variables"? 22:38
you mean iter([]) gives an undefined object back?
as in... None?
arnsholt No 22:39
for x in thing: ...
If thing is empty, x is undefined
And accessing it will throw an exception 22:40
If thing is non-empty, accessing x after the loop will work find
*fine
timotimo aaaah
arnsholt Exactly! 22:41
=)
timotimo tony-o: need to turn off ipv6 support
tadzik: maybe panda wants to learn how to retry with a different protocol or something? 22:42
arnsholt heads sleepwards 22:43
G'night!
timotimo gnite arnsholt!
lizmat good night, arnsholt 22:44
lizmat also is very tired and definitely had too many Baileys 22:45
so good night, #perl6!
timotimo :)
tony-o: you can write 193.200.132.135 feather.perl6.nl ← this line into your /etc/hosts 22:48
actually ... that doesn't work 22:49
yeah, i get "connection refused" 22:50
even with v4-only tools and stuff
tadzik, what's wrong?
22:52 rurban joined 22:53 rurban1 joined
tony-o ugexe: are you able to connect with 'panda update' ? 22:53
ugexe no 22:55
22:57 rurban left, spider-mario left
tadzik timotimo: should be all good now 22:59
timotimo thank you 23:00
tadzik another feather reboot brought it down before 23:01
timotimo ah
where can i find the code for the daemon and the cron job that updates the metadata list thingie?
tadzik: also, you should probably bring the link to the smoke report up to date 23:03
23:06 espadrine` joined 23:07 treehug88 left 23:08 eternaleye left, bbkr left 23:09 raiph joined 23:12 panchiniak left 23:14 eternaleye joined 23:20 kjs_ joined 23:21 ptc_p6 left, Ugator left 23:22 woolfy1 left 23:23 bbkr joined 23:25 colomon_ joined, colomon left, colomon_ is now known as colomon 23:29 ajr_ left 23:33 jfredett left, jfredett joined
tadzik timotimo: in /home/tjs on feather, heh :) 23:35
23:38 jfredett left 23:43 virtualsue left 23:47 gfldex left 23:52 Diederich is now known as Diederich-away 23:53 regreg joined 23:56 rurban1 left 23:58 beastd left