»ö« 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«12» | ||
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«FalseFalse» | ||
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/uToa3R2p03Undeclared routine: b used at line 1» | ||
moritz | m: say %( a => 1}.^name | ||
camelia | rakudo-moar 93987f: OUTPUT«===SORRY!=== Error while compiling /tmp/V0s4yYlc9AUnable 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«0True» | ||
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/qtLlXKyFTgTwo terms in a rowat /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/jXDNQaUUXfVariable '$a' is not declaredat /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 77 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/HJQgSAUqhYTwo terms in a rowat /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/6QSoYc9l15Cannot use bind operator with this left-hand sideat /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/DTOr0RmcAeCannot use bind operator with this left-hand sideat /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 undefok 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«Nil42 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/tmpfileUndeclared 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/tmpfileUndeclared name: Promise used at line 1Undeclared 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«3287756032877560» | ||
FROGGS | m: my $a; say $a.WHERE; my @a = ^10_000_000; say $a.WHERE | ||
camelia | rakudo-moar f8f6fe: OUTPUT«39377912Memory 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«4254821642548216» | ||
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«5100645651006456» | ||
FROGGS | m: my $a; say $a.WHERE; nqp::force_gc; nqp::force_gc; say $a.WHERE | ||
camelia | rakudo-moar f8f6fe: OUTPUT«4557925645579256» | ||
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«3766578437665784» | ||
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
|