»ö« 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:00
hoverboard joined
00:01
cognome joined
|
|||
timotimo | parse_json is faster, array_set_xx is slower, huh. | 00:01 | |
jnthn | Curious. | ||
timotimo | but forest fire is faster, so well done! :) | ||
00:03
cognome_ joined,
avuserow left
|
|||
timotimo | jnthn: did you measure the impact on stage parse? :) | 00:04 | |
00:06
cognome left
00:07
cognome_ left
|
|||
jnthn | Yeah. Faster. :) | 00:08 | |
Stage MAST used to be around the 14.xs mark for me, now it's down to 11.xs | |||
timotimo | no numbers? | ||
00:10
BenGoldberg left
00:12
thou joined
|
|||
timotimo | going to bed now :) | 00:13 | |
jnthn | 'night timotimo | 00:14 | |
00:17
thou left,
avuserow joined
|
|||
jnthn sleeps too | 00:17 | ||
'night | |||
timotimo | tomorrow will see a weekly spanning two weeks | 00:18 | |
00:20
rurban1 left,
rindolf joined
00:25
cognome joined
00:29
cognome left
|
|||
dalek | blets: 684fdd1 | (Herbert Breunung)++ | docs/appendix-d-delta.txt: backlink design trends properly |
00:30 | |
ast: df19092 | (David Warring [email@hidden.address] | integration/99problems-21-to-30.t: replace invalid autothreading ~~ with subset (<=) |
|||
dwarring reads better anyway | 00:31 | ||
00:35
virtualsue left
00:41
BenGoldberg joined
00:47
atroxaper joined
00:51
atroxaper left
00:59
dayangkun joined
01:04
FROGGS_ joined
01:08
FROGGS left
01:09
kivutar left
01:11
raiph joined
01:20
raiph left
01:21
rurban1 joined
01:22
raiph joined
01:25
rurban1 left,
cognome joined
01:30
cognome left,
figoe left
|
|||
raiph | .tell timotimo gist.github.com/raiph/c1202f874c2477b09d1f irc summary trawl | 01:31 | |
yoleaux | raiph: I'll pass your message to timotimo. | ||
01:45
fling_ is now known as fling
01:46
klapperl_ joined
01:50
klapperl left
01:51
lizmat joined
02:01
thou joined
02:05
lizmat_ joined
02:06
thou left,
Guest81465 left
02:08
lizmat left
02:12
bowtie joined,
bowtie is now known as Guest44954
02:20
noganex joined
02:22
rurban1 joined,
kst joined,
noganex_ left
02:24
rurban2 joined,
itz joined
02:25
cognome joined
02:26
rurban1 left,
itz_ left
02:28
rurban2 left
02:30
lustlife joined,
cognome left
02:34
ventica2 left
02:38
dayangkun left
02:47
atroxaper joined
02:51
atroxaper left
02:55
Akagi201 left
02:56
Akagi201 joined
02:57
colomon left
03:00
BenGoldberg left
|
|||
lizmat_ is spectesting last version, and finds it ~5% slower / using 5% more CPU than before :-( | 03:00 | ||
03:00
lizmat_ is now known as lizmat
03:03
figoe joined
03:05
figoe left
03:06
Akagi201 left,
rurban1 joined,
Akagi201 joined
03:07
figoe joined
|
|||
lizmat | Files=907, Tests=31845, 232 wallclock secs ( 9.44 usr 4.31 sys + 1466.85 cusr 181.28 csys = 1661.88 CPU) | 03:14 | |
with MVM_SPESH_DISABLE=1: Files=907, Tests=31951, 221 wallclock secs ( 8.84 usr 3.87 sys + 1421.61 cusr 154.11 csys = 1588.43 CPU) | 03:15 | ||
FWIW, the timing with MVM_SPESH_DISABLE=1 are more like the timings I've seen before | |||
03:19
araujo left
03:20
[Sno] left
03:25
ventica2 joined,
cognome joined
03:29
cognome left
03:32
raiph left,
chenryn joined
|
|||
ventica2 | m: say $*PID; | 03:39 | |
camelia | rakudo-moar 319a78: OUTPUT«8067» | ||
ventica2 | m: say $PID; | ||
camelia | rakudo-moar 319a78: OUTPUT«===SORRY!=== Error while compiling /tmp/OY0IZgD_dDVariable '$PID' is not declaredat /tmp/OY0IZgD_dD:1------> say $PID⏏; expecting any of: postfix» | ||
lizmat | ventica2: is there something here you didn't expect ? | 03:40 | |
ventica2 | no | ||
but not grokkin the $* twigil generally | |||
m: say $( 1 & 2 & 3 ); | 03:43 | ||
camelia | rakudo-moar 319a78: OUTPUT«all(1, 2, 3)» | ||
03:43
rurban1 left
03:49
dayangkun joined,
thou joined
03:50
rurban1 joined
|
|||
ventica2 | say $( 1, 2, 3, ); | 03:50 | |
m: say $( 1, 2, 3, ); #oops | |||
camelia | rakudo-moar 319a78: OUTPUT«1 2 3» | ||
ventica2 | ok now that I didn't expect | 03:51 | |
should it coerce down to a scalar value? | |||
shouldn't* | |||
03:54
thou left
|
|||
lue | r: say (1,2,3).perl; say $(1,2,3).perl; | 03:55 | |
camelia | rakudo-{parrot,jvm,moar} 319a78: OUTPUT«(1, 2, 3)$(1, 2, 3)» | ||
lue | ventica2: it is a scalar, just in the programming sense of "one object" (in this case, one Parcel), and not the math sense of "one value" | 03:56 | |
ventica2 | i'm trying to use $() to say "I gave you an array, but I want a scalar. Pick one and DWIM." | ||
and I mean scalar in the P5 sense | |||
lue | ventica2: if you want any one of them, then you want @list.pick or @list.roll :) | ||
ventica2 | surely P6 distinguishes between a scalar value and other kinds of "single" things | ||
hrm | |||
lue | r: say (1,2,3).roll(5) | ||
ventica2 | not grokking the overall idea then | ||
camelia | rakudo-moar 319a78: OUTPUT«3 3 2 1 2» | ||
..rakudo-jvm 319a78: OUTPUT«3 2 1 3 3» | |||
..rakudo-parrot 319a78: OUTPUT«2 2 2 3 3» | |||
ventica2 | what's the point of $()? | ||
03:57
rurban1 left
|
|||
lue | to force item context instead of list context (lemme try to make an example real quick) | 03:57 | |
s/list context/some other context/ | |||
ventica2 | k thx, appreciated | ||
03:57
chenryn left
|
|||
lue | r: say $_.perl for (1,2,3); | 03:58 | |
camelia | rakudo-{parrot,jvm,moar} 319a78: OUTPUT«123» | ||
lue | r: say $_.perl for $(1,2,3); | ||
camelia | rakudo-{parrot,jvm,moar} 319a78: OUTPUT«$(1, 2, 3)» | ||
ventica2 | the second loop executed just once, no? | ||
lue | when that list of three elements is seen in list context, you go through each item in the list. When the list is forced into item context, it's seen as a singular item. | 03:59 | |
ventica2 | ok yeah i'm getting it | ||
m: say $_.perl for 1 & 2 & 3 | 04:00 | ||
camelia | rakudo-moar 319a78: OUTPUT«all(1, 2, 3)» | ||
ventica2 | ok, so all/any/etc act a little bit like $() | ||
the junction is treated as a single item | 04:01 | ||
lue | perhaps, though using Junctions with that thought in your head will surely lead to Bad Things™ | ||
ventica2 | haha ok | ||
lue | A Junction is really multiple things at once, rather than a collection of things. | ||
ventica2 | yes | ||
04:02
kaare__ joined
|
|||
ventica2 | so, what I'm really looking for is a "collapse" function for the Junction... "Take this thing that can be ANY or ALL of these things and make it a TRULY single thing" | 04:02 | |
how do I do that? | 04:03 | ||
lue | r: sub foo($a) { say $a }; foo((1,2,3)); foo(any(1,2,3)); # here's a quick way to show the difference between a list and junction | ||
camelia | rakudo-{parrot,jvm,moar} 319a78: OUTPUT«1 2 3123» | ||
lue | (and yes, the list in the first call was itemized because it was stuffed into a $ variable) | ||
04:04
rurban1 joined
|
|||
lue | ventica2: in your case it would probably be best to use a normal list and just .pick a value | 04:05 | |
r: say (1,2,3).pick | |||
camelia | rakudo-jvm 319a78: OUTPUT«2» | 04:06 | |
..rakudo-{parrot,moar} 319a78: OUTPUT«3» | |||
04:13
Pleiades` left
04:17
Pleiades` joined
04:22
atroxaper joined
04:24
nbrown joined,
atroxaper left
04:25
cognome joined
04:26
figoe left
04:27
chenryn joined
04:28
nbrown left
04:29
cognome left
04:34
chenryn left
04:35
rurban1 left
04:45
gfldex joined
04:46
kaare__ left
|
|||
avuserow | .tell itz thanks for the PR. what tests started failing on parrot 6.6.0? I think Rakudo 2014.07 used Parrot 6.6.0, so I wouldn't expect it to be that bad | 04:50 | |
yoleaux | avuserow: I'll pass your message to itz. | ||
avuserow | timotimo++ # resuming weekly updates | 04:53 | |
m: say (so any(1,2,3)).perl | 04:56 | ||
camelia | rakudo-moar 319a78: OUTPUT«Bool::True» | ||
avuserow | m: say (+any(1,2,3)).perl | ||
camelia | rakudo-moar 319a78: OUTPUT«any(1, 2, 3)» | ||
avuserow | right. | 04:57 | |
05:07
dayangkun left
05:19
kaare__ joined
05:21
dayangkun joined
05:22
[Sno] joined
05:23
ventica joined
05:24
rurban1 joined,
ventica2 left
05:25
raiph joined,
cognome joined
05:28
rurban1 left
05:30
cognome left,
dayangkun left
05:31
chenryn joined
05:33
Guest44954 left
05:35
kaare_ joined,
kaare__ left,
chenryn left
05:37
thou joined
05:40
kurahaupo left
05:41
gfldex left
05:42
thou left
05:43
bowtie joined,
woolfy joined,
bowtie is now known as Guest81399
05:44
dayangkun joined
05:47
jack_rabbit joined
05:50
Guest81399 left
05:52
ventica2 joined
05:53
ventica left
05:55
bowtie_ joined
06:00
jack_rabbit left
06:01
[Sno] left
06:05
virtualsue joined
06:09
gamo joined
06:15
dayangkun left
06:16
raiph left
06:17
chenryn joined
|
|||
sergot | hi o/ | 06:19 | |
06:21
woolfy left
06:24
bowtie_ left,
hoverboard left
06:25
cognome joined
06:29
bowtie_ joined,
cognome left
06:32
chenryn left
06:35
c1sung left,
FROGGS[mobile] joined,
c1sung joined
06:38
xinming_ joined
06:41
xinming left
|
|||
ventica2 | avuserow: thanks | 06:43 | |
say (so 1 | 2 | 3).perl | 06:44 | ||
m: say (so 1 | 2 | 3).perl # oops | |||
camelia | rakudo-moar 319a78: OUTPUT«Bool::True» | ||
ventica2 | aha | ||
m: say (so 0 & 2 & 3).perl | |||
camelia | rakudo-moar 319a78: OUTPUT«Bool::False» | ||
ventica2 | there we g | ||
m: say 1 + 2 & 3 | 06:45 | ||
camelia | rakudo-moar 319a78: OUTPUT«all(3, 3)» | ||
ventica2 | m: say 1 + (2 & 3) | ||
camelia | rakudo-moar 319a78: OUTPUT«all(3, 4)» | ||
ventica2 | nice | ||
06:51
xinming_ left
07:06
FROGGS[mobile] left,
FROGGS_ is now known as FROGGS
|
|||
virtualsue | o/ | 07:10 | |
raydiak | \o | 07:14 | |
07:17
virtualsue_ joined,
virtualsue left,
virtualsue_ is now known as virtualsue
|
|||
avuserow | huh, I'm a little surprised that junctions don't drop duplicate values | 07:20 | |
07:21
dayangkun joined
|
|||
avuserow | m: my $j = 2; $j &= 2 for ^5; $j.perl.say | 07:21 | |
camelia | rakudo-moar 319a78: OUTPUT«all(all(all(all(all(2, 2), 2), 2), 2), 2)» | ||
FROGGS | you need that, otherwise you cannot map that against the input... | 07:22 | |
07:22
salv0 joined
|
|||
FROGGS | m: say 2 ~~ 1 | 2 | 2 | 2 | 2 | 3 | 07:22 | |
camelia | rakudo-moar 319a78: OUTPUT«True» | ||
moritz | avuserow: at least the one() junction wouldn't work if it dropped duplicate values | ||
FROGGS | m: say 2 ~~ all 1 | 2 | 2 | 2 | 2 | 3 | ||
camelia | rakudo-moar 319a78: OUTPUT«True» | ||
FROGGS | err | ||
moritz | you create an all-junction with one value, which is an any-junction | 07:23 | |
avuserow | right, one() is special here. for some reason, the other junctions seem like they'd be more set-like than list-like in my mind. or maybe bag-like | 07:24 | |
07:25
dayangkun left
|
|||
avuserow | I mean, certainly my idea does not pan out if you expected to be able to get the values from a junction, but IIRC that temptation is a bit discouraged | 07:25 | |
TimToady | seems like one(1,2,2,2,3) could be optimized to one(1,3) | 07:26 | |
avuserow | (except bags might still work?) | ||
07:26
thou joined,
nbrown joined
|
|||
avuserow | m: say so one(1, 2, 2, 2, 3) | 07:27 | |
camelia | rakudo-moar 319a78: OUTPUT«False» | ||
avuserow | m: say so one(1, 3) | ||
camelia | rakudo-moar 319a78: OUTPUT«False» | ||
avuserow | oh I see | ||
TimToady | m: say so one(1,2,2,2,3) == 2 | ||
camelia | rakudo-moar 319a78: OUTPUT«False» | ||
TimToady | m: say so one(1,2,2,2,3) == 3 | ||
camelia | rakudo-moar 319a78: OUTPUT«True» | ||
avuserow | m: say so one(1, 3) == 2 | 07:28 | |
camelia | rakudo-moar 319a78: OUTPUT«False» | ||
TimToady | so it's still worthwhile finding the duplicates, but you do something different with them, is all | 07:29 | |
just as ^^ can short circuit on the second true | 07:30 | ||
07:30
[Sno] joined,
[Sno] left,
chenryn joined
|
|||
TimToady | m: say True ^^ False ^^ True ^^ die "oops" | 07:30 | |
camelia | rakudo-moar 319a78: OUTPUT«Nil» | ||
07:30
[Sno] joined,
dayangkun joined,
thou left
07:31
dmol joined,
nbrown left
|
|||
FROGGS | somehow the v5 code that got translated from NQP to Perl 6 does not like multi tokens at all :o( | 07:32 | |
(except token term...) | |||
avuserow | m: sub infix:<!>(**@values) { Junction.new(@values, :type<none>); }; say (1 ! 2 ! 3).perl | 07:33 | |
camelia | rakudo-moar 319a78: OUTPUT«===SORRY!=== Error while compiling /tmp/ut_aiZURSWNegation metaoperator not followed by valid infixat /tmp/ut_aiZURSW:1------> n.new(@values, :type<none>); }; say (1 !⏏ 2 ! 3).perl expecting any of: …» | ||
avuserow | m: sub infix:<&!>(**@values) { Junction.new(@values, :type<none>); }; say (1 &! 2 &! 3).perl | 07:34 | |
camelia | rakudo-moar 319a78: OUTPUT«none(none(1, 2), 3)» | ||
avuserow | still I wonder if junctions of a certain size would be better as Bags, assuming the values are hashable... | 07:35 | |
07:35
chenryn left
|
|||
avuserow | junctions aren't mutable right? | 07:35 | |
moritz | right | 07:36 | |
TimToady | no, so sets are good enough | ||
though you'd need a second set to track one construction, so you'd know to remove that 2 and keep it removed | 07:37 | ||
avuserow | or just de-duplicating a list by hand, since that doesn't require hashability, you'd only do it once, and lists are cheaper? | ||
TimToady | well, requires a sort of some sort, likely | 07:38 | |
but a sorted list could be searched with a binary search, if you don't want to hash | |||
avuserow | do we have unhashable things in perl6? or is that $other-lang brain damage that I'm thinking of? | 07:39 | |
TimToady | but a hash might be a good way to handle some ops $value eq any(@lots) | ||
mutable objects including containers hash to their identity, not their contents | 07:40 | ||
moritz | but if you construct the hash for just one comparison, it's slower than going through it linearly | ||
TimToady | sure | ||
07:46
pecastro left
07:49
dwarring left
|
|||
TimToady | zzz & | 07:51 | |
07:51
bjz joined
07:52
darutoko joined
07:55
bjz left,
hoverboard joined
07:56
bjz joined
07:57
zakharyas joined
08:02
bjz left
08:04
bjz joined
08:06
Maddingu1 is now known as Maddingue
|
|||
timotimo | o/ | 08:07 | |
yoleaux | 01:31Z <raiph> timotimo: gist.github.com/raiph/c1202f874c2477b09d1f irc summary trawl | ||
08:07
dayangkun_ joined,
virtualsue_ joined
08:08
dayangkun left
08:09
virtualsue left,
virtualsue_ is now known as virtualsue
|
|||
raydiak | \o | 08:10 | |
timotimo | hey raydiak! | ||
good to see you :) | |||
raydiak | thanks, you too :) | ||
08:11
gamo left
08:16
xinming joined
|
|||
timotimo | it'd be interesting if we could extract benchmarks from pray | 08:19 | |
have you tried pray recently? | 08:20 | ||
especially yesterday and the day before that jnthn has improved performance nicely | 08:21 | ||
even though some people are actually reporting performance hits | |||
raydiak | that was one of the thoughts I had as I was beginning it...I'm going to be working on math::threed and pray more very soon, so adding some stuff to it specific to benchmarks is a possibility | ||
nwc10 | has anyone run the benchmarks since ++jnthn++'s work? | ||
timotimo | i have, but it was missing parser speed improvements | ||
raydiak | I have tried it enough to confirm that it still works | ||
timotimo | so startup time would have been overestimated | ||
raydiak | (Pray I mean) | 08:22 | |
timotimo | thought so | ||
raydiak | problem is I got a new (well, new to me) laptop, so comparing the speed of this to anything else is meaningless | 08:23 | |
timotimo | ah, of course | ||
did you know perl6-bench is a nice tool to build rakudo at different revisions? | |||
raydiak | oh, I think I was running them on my server before anyway...I ought to build a new rakudo on the vps and try pray again | 08:24 | |
is it? | |||
timotimo | like ./bench extract rakudo-moarvm/2014-05 rakudo-moarvm/2014-06 rakudo-moarvm/2014-07; ./bench build rakudo-moarvm/2014-05 rakudo-moarvm/2014-06 rakudo-moarvm/2014-07 | ||
raydiak | oh neat | ||
I usually use rakudobrew | |||
timotimo | in the bench case you don't need the "switch" part | ||
but you don't get a perl6 binary for your path | 08:25 | ||
08:25
Ven joined
|
|||
raydiak | might not want historical versions in your path anyway :) | 08:26 | |
Ven | o/, #perl6. | ||
timotimo | that's correct | ||
hey ven | |||
raydiak | hi Ven | ||
are the performance improvements specific to moar? | |||
timotimo | partially | ||
a big chunk of them are | 08:27 | ||
raydiak | I'll build that first them | ||
*then | |||
timotimo | recent improvements to moar are a big chunk of "make more things inlinable at spesh time", so if pray happens to have been blocking on that in some place or other, there could certainly be a nice speed boost in store for you :) | 08:29 | |
08:30
kaleem joined
|
|||
timotimo | that might also explain the performance hit some people saw so far; we can do more inlinings and maybe they don't end up benefiting performance as much as they take to be done | 08:31 | |
08:31
denis_boyun joined,
chenryn joined
|
|||
timotimo | only speculations at this point, though | 08:32 | |
raydiak | hard to say what my bottleneck is...I think Pray is blocking on the fact that at least in the master branch no attempt has ever been made to pay any attention to performance | ||
timotimo | oh, you mean the pray code isn't performance-optimized? | 08:33 | |
raydiak | heck no :) | ||
timotimo | that's good, though | ||
it'd point us at things that'd appear in "regular code" that ought to be faster, but isn't | |||
raydiak | to an extent...I'm sure some of it is just outright wrong in retrospect, I'll be finding out as I dig back in | 08:34 | |
timotimo | hah, all right :) | ||
i'm just glad you chose to fly with perl6 airlines | |||
raydiak | heh me too | ||
getting new hardware helped...Pray was developed on a VPS w/half a gig ram, via a half-broken laptop from 2007 w/no hard drive | 08:35 | ||
08:35
FROGGS_ joined
08:36
chenryn left
|
|||
timotimo | ah, that does sound like something you may want to update | 08:36 | |
08:36
tempire_ left
08:37
FROGGS left
|
|||
raydiak | I kinda prided myself on being able to limp it by with lean desktops and excessive console use, but that looses entertainment value after a certain amount of time | 08:37 | |
timotimo | mhm | ||
i've gone back and forth between "geek pride" "hard core" setups and "end-user fancy flashy stuff" multiple times in the past | 08:38 | ||
kde3 followed by awesome (then xmonad and then i3) | |||
and then xfce4 | |||
08:38
tempire joined
|
|||
raydiak | I've been through so many...back in my gentoo days I'd change window managers a few times a week for a while...using mint kde atm | 08:39 | |
timotimo | at some point i was on gentoo, even did a stage1 build at some point, but that was after (i think) debian and followed by debian, later on fedora | ||
oh, debian, then mint (with cinnamon) and then fedora | 08:40 | ||
raydiak | I've tried to some extent or another at some point between the 90s and now slackware, gentoo, redhat, debian, ubuntu, mint, arch, mandrake, puppy, knoppix, portage... | 08:42 | |
can't remember it all, or at least I try not to | |||
timotimo | hah, i also used mandrake for a short while | ||
back when it was actually called mandrake and not mandriva | 08:43 | ||
that was my very second linux distro ever | |||
back then i didn't really know what to do with a linux system; i was much more into gaming then than i am now | |||
masak | good antenoon, #perl6 | ||
raydiak | yeah they had the best hardware autodetection back in the day, I loved the lesser extent I had to futz with kernel modules and so forth | 08:44 | |
\o masak | |||
masak | m: my $jnthn; say ++$jnthn++ | ||
camelia | rakudo-moar 319a78: OUTPUT«Cannot assign to an immutable value in sub postfix:<++> at src/gen/m-CORE.setting:4561 in block at /tmp/DaBFPrSdkk:1» | ||
masak | m: my $jnthn; say (++$jnthn)++ | ||
camelia | rakudo-moar 319a78: OUTPUT«Cannot assign to an immutable value in sub postfix:<++> at src/gen/m-CORE.setting:4561 in block at /tmp/SYaGRCX_xc:1» | ||
masak | m: my $jnthn; say ++($jnthn++) | ||
camelia | rakudo-moar 319a78: OUTPUT«Cannot assign to an immutable value in sub prefix:<++> at src/gen/m-CORE.setting:4553 in block at /tmp/Tn1QylpxaJ:1» | 08:45 | |
jnthn | ++ returns the value, not the container | ||
masak | turns out pre-post-incrementing jnthn's karma is too much :) | ||
masak .oO( circumincrement ) | |||
08:46
Mouq_ joined
08:49
Mouq_ left
08:50
virtualsue left
|
|||
masak | prompted by Perl Weekly -- why are formats so rarely used? | 08:55 | |
is it due to a shift in what's fashionable/interesting? or were they always rarely used? | |||
timotimo | masak: formats, as in @foobar.fmt("this thing in here") #? | 08:56 | |
masak | hehe, no :) | ||
as in `perldoc perlform` | |||
as in www.learning-perl.com/2014/07/formats/ | |||
08:56
kurahaupo joined
|
|||
timotimo | oh! | 08:57 | |
that's kinda cute | |||
masak | as in www.perl.com/pub/2004/02/27/exegesis7.html | 08:58 | |
as in github.com/mathw/form/ | |||
Ven | oh, I never knew about that | ||
timotimo | that's far from implemented, isn't it? | ||
did it actually end up as part of the spec? | 08:59 | ||
masak | no, and that's part of my point. | ||
it was exiled to module-land from the start. | |||
timotimo | ah | ||
masak | E07 has no synopsis. | ||
timotimo | well, yeah, i can see how it'd be quite good in a module | ||
masak | S07 today is about something else (lists and iteration). | ||
my question is about the history and evolution of the use of formats. | 09:00 | ||
where do they come from originally? were they a Perl invention? | |||
were they once wildly popular? | |||
moritz | they were pretty popular once, yes | 09:02 | |
09:03
[particle]1 left
09:04
[particle] joined
09:05
kurahaupo_mobile joined,
bjz left
|
|||
masak | moritz: about the only data I have to support that is the "R" in "Perl" :) | 09:05 | |
09:05
bjz joined
|
|||
raydiak | my general impression was that they are crufty and limited...ascii soup, weird scoping rules iirc, stuff like that, and not something that likely belongs in the core anyway, given our shift away from dot-matrix printers and monospaced characters for typographic layout | 09:05 | |
straight out of perlform: | |||
"Pretty ugly, eh? It's a common idiom though, so don't be too surprised when you see it." | 09:06 | ||
09:06
kurahaupo left
|
|||
ventica2 | what is gabor szabo's nick? (i'm watching his YT video tutorials) | 09:06 | |
timotimo | szagab usually | ||
!seen szagab | |||
ventica2 | thx | ||
timotimo | yoleaux: seen szagab | ||
how do i ... | |||
masak | szabgab usually. | 09:07 | |
timotimo | oh | ||
masak | it's a Hungarian thing, I think, to put the last name first. | ||
ventica2 thinks of cracking bad pun about hungarian notation... | |||
09:07
chenryn joined
|
|||
masak | heh. | 09:08 | |
timotimo | oh hey ventica2 | ||
ventica2 | yes | ||
timotimo | i see you've "discovered" junctions | ||
ventica2 | haha yeha, i used quantum:: back in the day | ||
timotimo | it felt like i was the only person to like junctions when i last worked on them | ||
09:08
ivan`` left
|
|||
ventica2 | yeah, I think it will become a killer-app feature of langs after p6 hits mainstream... :) | 09:09 | |
timotimo | i do agree that if you do something like return junctions from your module's interface-defined subs and methods, that's pretty evil | ||
ventica2 | hmm, not sure it's evil... a search function for example might want to say "i found one of X or Y or Z" | 09:10 | |
timotimo | it does funky things with calls :) | ||
ventica2 | implementation bug? | 09:11 | |
timotimo | no | ||
ventica2 | or arch bug? | ||
timotimo | anyway, you usually have to declare your variables to hold a Mu if you want to handle junctions | ||
that's just how junctions work | |||
FROGGS_ | .seen szabgab | ||
ventica2 | k | ||
yoleaux | I haven't seen szabgab around. | ||
timotimo | m: sub do_something($a) { say "i'm doing something with $a. cool, huh?"; return Bool.pick }; say do_something(1 | 2 | 3).perl | ||
camelia | rakudo-moar 319a78: OUTPUT«i'm doing something with 1. cool, huh?i'm doing something with 2. cool, huh?i'm doing something with 3. cool, huh?any(Bool::False, Bool::False, Bool::True)» | ||
masak | I used to be wildly in love with junctions, too. | 09:12 | |
timotimo | this is called "autothreading" (not actually multi-threading across cores/threads though (yet)) | ||
masak | nowadays I consider them to be one of those rather narrow power features to be used in a limited, controlled scope. | ||
timotimo | i think the next thing i ought to do with junctions is apply the same optimizing transformation to any(<foo bar baz>) that would happen to "foo" | "bar" | "baz" (in boolean context, that is) | 09:13 | |
moritz | ventica2: Gabor mostly stopped using IRC about two years ago, IIRC | ||
timotimo | irc is quite the time sink :) | 09:14 | |
moritz | ventica2: but it should be possible to reach him by e-mail | ||
ventica2 | moritz: ah | ||
09:14
ivan`` joined
|
|||
timotimo | or twitter, i think | 09:14 | |
ventica2 | was jst curious if he's around to say "nice job!" on the tuts | ||
09:14
thou joined
|
|||
timotimo | can send a comment on youtube/google+ | 09:14 | |
09:14
kivutar joined
|
|||
ventica2 | m: sub foo($a) { return "blah $a"; }; foo(1|2|3); | 09:15 | |
camelia | ( no output ) | ||
ventica2 | m: sub foo($a) { return "blah $a"; }; say foo(1|2|3); #oops | ||
camelia | rakudo-moar 319a78: OUTPUT«any(blah 1, blah 2, blah 3)» | ||
ventica2 | m: sub foo($a) { say "blah $a"; }; foo(1|2|3); | ||
camelia | rakudo-moar 319a78: OUTPUT«blah 1blah 2blah 3» | ||
ventica2 | oooooooooookay | ||
finally | |||
timotimo | you see now how that can cause unexpected things? :) | 09:16 | |
ventica2 | it seems that junctions aren't considered a readability feature? | 09:17 | |
timotimo | they are totally good for readability | ||
ventica2 | yeah... but... seems like they could be made a bit more DWIMmy | ||
timotimo | consider if $x & $y == -1 | 0 | 1 | ||
how so? | |||
09:18
lustlife left
|
|||
ventica2 | hmm, maybe i just need more time with them... it seems they should be a little more eager to resolve to "classical" states, i.e. to "de-junctionize" | 09:18 | |
Ven | timotimo: took me some time to understand what that meant | ||
09:19
thou left
|
|||
timotimo | ventica2: they de-junctionize if you .Bool them | 09:19 | |
ventica2 | m: my $x = 1; my $y = 0; say ($x & $y == -1 | 0 | 1).perl; | ||
camelia | rakudo-moar 319a78: OUTPUT«all(any(Bool::False, Bool::False, Bool::True), any(Bool::False, Bool::True, Bool::False))» | ||
moritz | ventica2: if you want a non-boolean result out of a junction, you shouldn't be using a junction (but a Set) | 09:20 | |
ventica2 | timo: aha! let me try: | ||
m: my $x = 1; my $y = 0; say ($x & $y == -1 | 0 | 1).Bool.perl; | |||
camelia | rakudo-moar 319a78: OUTPUT«Bool::True» | ||
timotimo | m: my $x = 1; my $y = 0; say so $x & $y == -1 | 0 | 1; | ||
camelia | rakudo-moar 319a78: OUTPUT«True» | ||
ventica2 | theeeeeeeere we go! | ||
ha, u guys made my night | |||
Ven | yay :) | ||
timotimo | being able to .say a Junction is considered A Feature | ||
ventica2 | what is the mnemonic for 'so' | ||
? | |||
timotimo | "opposite of not" | 09:21 | |
ventica2 | as in "it is so" ? | ||
timotimo | yup | ||
ventica2 | lol TimToady | ||
timotimo | that's also why we have ... ?? ... !! ... instead of ... ? ... : ... | ||
ventica2 | that's got to be his idea | ||
timotimo | not only because the : is for other things now | ||
because prefix:<?> is the opposite of prefix:<!>, i.e. boolification without negation | 09:22 | ||
ventica2 | m: my $x = 1; my $y = -1; say ($x & $y == -1 | 0 | 1).Bool.perl; | ||
camelia | rakudo-moar 319a78: OUTPUT«Bool::True» | ||
ventica2 | m: my $x = 1; my $y = 2; say ($x & $y == -1 | 0 | 1).Bool.perl; | ||
camelia | rakudo-moar 319a78: OUTPUT«Bool::False» | ||
timotimo | so in the ternary operator, the ?? comes before what is the result for a "true" condition, and after the !! is the result for a "false" condition | ||
ventica2 | m: my $x = 1; my $y = 2; say ($x | $y == -1 | 0 | 1).Bool.perl; | ||
camelia | rakudo-moar 319a78: OUTPUT«Bool::True» | ||
ventica2 | ^ exactly what I expect | 09:23 | |
timotimo | great, huh? :) | ||
ventica2 | :D | ||
timo: Yeah, same as C | |||
timotimo | that's the part of junctions i really enjoy having | ||
bwahaha | |||
ventica2 | just different squigglies :P | ||
timotimo | would $x | $y == -1 | 0 | 1 in C actually work? %) | ||
through some ridiculous coincidence of bit masks | |||
ventica2 | moritz: OK, I haven't gotten to sets yet | ||
timo: No, i meant the ternary operator | 09:24 | ||
masak | no, no, the mnemonic of "so" is children going "not X!" -- "so X!" | ||
ventica2 | lol | 09:25 | |
masak | or "that is *so* true" as an opposite of "that is *not* true" | ||
ventica2 | "dude, that is so X!" where "X == cool" | ||
timotimo | m: say so "perl6" ~~ Cool | ||
camelia | rakudo-moar 319a78: OUTPUT«True» | ||
jnthn | m: say so not True # :-) | ||
camelia | rakudo-moar 319a78: OUTPUT«False» | ||
09:26
hoverboard left
|
|||
timotimo | m: say not so True | 09:26 | |
ventica2 | lol... p6 poetry... | ||
camelia | rakudo-moar 319a78: OUTPUT«False» | ||
ventica2 | wait... how does "perl6" match Cool?? | 09:27 | |
timotimo | m: say "perl6".^mro | ||
camelia | rakudo-moar 319a78: OUTPUT«(Str) (Cool) (Any) (Mu)» | ||
masak | m: for ^10 { say EVAL "not " x $_ ~ "True" } | ||
camelia | rakudo-moar 319a78: OUTPUT«TrueFalseTrueFalseTrueFalseTrueFalseTrueFalse» | ||
ventica2 | lol ... um | ||
timotimo | m: say (True, not * ... *)[^10 | ||
camelia | rakudo-moar 319a78: OUTPUT«===SORRY!=== Error while compiling /tmp/FBDCI1Z5G7Unable to parse expression in subscript; couldn't find final ']' at /tmp/FBDCI1Z5G7:1------> say (True, not * ... *)[^10⏏<EOL> expecting any of: …» | ||
timotimo | m: say (True, not * ... *)[^10] | ||
camelia | rakudo-moar 319a78: OUTPUT«True False True False True False True False True False» | ||
Ven | timotimo: oh wow, that's cool :DD | 09:28 | |
ventica2 | hrm, not grokking that | 09:29 | |
timotimo | the ... operator? | ||
Ven | well, it's the sequence operator using a closure as the "next" | ||
ventica2 | looks like * is somehow using the "last" value in constructing the lazy array slice? | ||
am i completley off? | |||
masak | m: enum Trool <False Meow True>; sub knot(Trool $t) { Trool(($t + 1) % 3) }; for ^10 { say EVAL "knot " x $_ ~ "Trool::False" } | 09:30 | |
camelia | rakudo-moar 319a78: OUTPUT«FalseMeowTrueFalseMeowTrueFalseMeowTrueFalse» | ||
Ven | it's the Whatever, and here, it creates a closure | ||
timotimo | no, that's right; but it's the ... operator that is responsible for that | ||
ventica2 | but where's the closure coming from? | ||
masak | strangest code I've written in a while ;) | ||
09:30
zakharyas left
|
|||
Ven | m: (not *)(True); # ventica2 | 09:30 | |
camelia | ( no output ) | ||
Ven | m: say (not *)(True); # ventica2 / ENOSAY | ||
camelia | rakudo-moar 319a78: OUTPUT«False» | ||
timotimo | the ... operator takes, on its left hand side, a list of initial values. but if the list of initial values ends in a callable, it'll be using that as the generator for new values | 09:31 | |
ventica2 | ohhhhhh | ||
timotimo | maybe you've read it as "True, not (* ... *)" | ||
ventica2 | so you can have (* ... foo())? | ||
masak | m: enum Trool <False Meow True>; sub knot(Trool $t) { Trool(($t + 1) % Trool.WHO.elems) }; for ^10 { say EVAL "knot " x $_ ~ "Trool::False" } | ||
camelia | rakudo-moar 319a78: OUTPUT«FalseMeowTrueFalseMeowTrueFalseMeowTrueFalse» | ||
timotimo | ventica2: that would use foo to determine whether or not to stop creating new values | ||
ventica2 | oh | 09:32 | |
8| | |||
09:32
zakharyas joined
|
|||
timotimo | what you're looking for would probably look more like this: 1, &foo ... * > 10 | 09:32 | |
or something similar | |||
ventica2 | k | ||
timotimo | m: .say for (1, &rand ... * < 0.01) | 09:33 | |
camelia | rakudo-moar 319a78: OUTPUT«10.638060994320480.996002666440030.6279997920345360.4247952602877130.7739973866346550.9303324307219080.07311290344025330.6246901871597230.3784981433625090.9006332959395460.1671873150442060.7700911656816230.97043794096…» | ||
timotimo | m: say rand(10) | ||
camelia | rakudo-moar 319a78: OUTPUT«===SORRY!=== Error while compiling /tmp/ep0hFjK1tSUnsupported use of rand(N); in Perl 6 please use N.rand or (1..N).pickat /tmp/ep0hFjK1tS:1------> say rand⏏(10)» | ||
timotimo | ah, ok | ||
m: .say for (1, { rand * $_ } ... * < 0.01) | |||
camelia | rakudo-moar 319a78: OUTPUT«10.8924135751632730.8228276428109020.7590990229217230.01628043407933650.01232533462638690.00537682554377414» | ||
timotimo | m: .say for (1, { rand * $_ } ... * < 0.01) | ||
camelia | rakudo-moar 319a78: OUTPUT«10.6747181204989330.5045762038956480.2770713110468840.2729186597933910.2405955047677050.1908533935342450.1630295489758170.08197905256091010.06486924375315010.02797661661995960.01721906786426680.01454569460162950.00034…» | ||
timotimo | m: .say for (1, *.rand ... * < 0.01) | ||
camelia | rakudo-moar 319a78: OUTPUT«10.6969975110736130.6142488758769160.3381226516161650.02890011311976550.00732885836923004» | ||
timotimo | m: .say for (1, *.rand ... * < 0.0001) | 09:34 | |
camelia | rakudo-moar 319a78: OUTPUT«10.8943755621741170.637483541424070.5092481414685450.3604505557554230.3162681969422320.2825775934254150.2493812632293180.1831633007495470.1367883931396080.1329641638959220.03316984935810320.004579380709505570.00281906…» | ||
timotimo | ^- perfectly useful sequence of "randomly" spaced decreasing numbers | ||
09:37
pecastro joined
|
|||
moritz | wy does that only produce decreasing numbers? | 09:38 | |
*why | 09:39 | ||
ah, because we call .rand on the previous number | |||
Ven | moritz: because .rand will never produce something greater than its self | ||
ventica2 | m: say 1 .. 10; | ||
moritz | clever | ||
jnthn | Because the previous thing is what we call .rand on | ||
camelia | rakudo-moar 319a78: OUTPUT«1..10» | ||
ventica2 | m: say (1..10).perl; | ||
camelia | rakudo-moar 319a78: OUTPUT«1..10» | ||
ventica2 | m: say $_ for (1..10); | ||
camelia | rakudo-moar 319a78: OUTPUT«12345678910» | ||
ventica2 | m: say $_ for (1,3...10); | 09:40 | |
camelia | rakudo-moar 319a78: OUTPUT«(timeout)1357911131517192123252729313335373941434547495153555759616365676971737577798183858789919395979910…» | ||
ventica2 | oops | ||
wait, what? | |||
Ven | ventica2: it doesn't hit 10, so doesn't stop :) | ||
m: say $_ for (1,3... * > 10); | 09:41 | ||
camelia | rakudo-moar 319a78: OUTPUT«1357911» | ||
ventica2 | i see | ||
moritz | m: say $_ for (1,3...^ * > 10); | 09:42 | |
camelia | rakudo-moar 319a78: OUTPUT«13579» | ||
ventica2 | i think it should detect > 10 in a DWIMmy way | 09:43 | |
otherwise, too susceptible to hang conditions | |||
unintended | 09:44 | ||
masak | no no, it's a *fun* way to teach people to be careful with infinity! :P | ||
Ven | it used it, afaik | ||
it used to* | |||
ventica2 | Ven: yeah, in szabgab's tuts, he shows it stopping before 10 for odd no.s | 09:45 | |
masak: perhaps... but seems to me to violate the principle of least surprise... :\ | 09:46 | ||
masak | the scheme that dwam 10 was way complicated. | ||
and the complexity bit more than it served. | 09:47 | ||
Ven | yeah, you need to deduce the "direction", right ? | ||
masak | yep. | ||
Timbus | ? | 09:48 | |
m: say 5 ... 1 | |||
camelia | rakudo-moar 319a78: OUTPUT«5 4 3 2 1» | ||
masak | m: say 11, 9 ... 0 | ||
camelia | rakudo-moar 319a78: OUTPUT«(timeout)» | ||
masak | (oops, missed) :) | 09:49 | |
moritz | ventica2: we had automagic detection of upper limits once | ||
ventica2: it was a complete mess with non-monotonic sequences | |||
masak | queue moritz retreading my steps :P | ||
moritz++ | |||
ventica2 | seems to me that non-monotonic is the problem | ||
personally, i'd say dispense non-monotonic and preserve principle of least surprise for monotonic sequences | 09:50 | ||
masak | now you're just insisting on things being as simple as you'd like :) | ||
jnthn | Well, infix:<...> is just an operator, so you an always write a module that implements the ... you'd like. | ||
masak | sure, if you can prove monotonicity, then you can do clever things with detecting timeouts. | 09:51 | |
moritz | ... and be surprised how many corner cases lurk in such a seemingly simple operator | ||
ventica2 | masak: perhaps... or maybe it's not abt simplicity so much as not introducing unintended bugs when using variables in a sequence construction | ||
$init, $next ... $final | |||
moritz | what does that do when $next < $init < $final ? | 09:52 | |
masak | ventica2: I can definitely see a case for special-casing the simple linear case. but it does feel a little like a slippery slope. | ||
ventica2 | for any value of init, next and final, I know what thta means (or error) for monotonic sequences... for non-monotonic, I have no idea what's going to happen | ||
jnthn | ventica2: A hang is a pretty obvious bug; I seem to recall the ones introduced by the DWIM-y end point were much more subtle and harder to figure out. | ||
masak | moritz: that could also be detected. | ||
moritz | masak: sure it can; but what to do? | ||
also | |||
ventica2 | idk, I just think of it as a range() function baked into the syntax | ||
moritz | one must be careful not to introduce different behavior between 1, 3 ... 10 and 1, *+2 ... 10 | ||
masak | moritz: why is that important? | 09:53 | |
moritz | masak: consistency | ||
jnthn | 'cus I'd expect to be able to do a refactor like that without changing the semantics. | ||
masak | this is about catching statically-determinable beginner mistakes. | ||
moritz | oh | 09:54 | |
you want extra compile-time analysis | |||
masak | moritz: if one dies at compilation, and the other loops infinitely, then that's not immediately "different behavior" to me. it's just we caught one of them. | ||
yes. | |||
ventica2 doesn't see a large distinction between beginner(self) and expert_hasnt_used_this_feature_in_a_couple_months(self) | |||
masak | could even be a warning :) | ||
moritz | masak: I missed that part | ||
Ven | .oO( ERROR: it seems you're unable to count up to 10 ) |
||
masak | we detect all kinds of wrong signature binding at compile time. why not wrong sequences? | 09:55 | |
moritz | m: say (100, 45, *%* ... 0)[*-2] | ||
camelia | rakudo-moar 319a78: OUTPUT«5» | ||
moritz | I still love that GCD implementation | ||
ventica2 | O.o | ||
Ven | haha nice | 09:56 | |
mathw | ah yes, formats. definitely better in a module. | 09:57 | |
masak | mathw++ # making that module | 09:58 | |
mathw | yeah shame I never maintain it... | ||
and have never finished it... | |||
masak | mathw: we could hackathon it sometime. | ||
mathw | might be a good idea | ||
give me a Perl 6 knowledge refresh/update too | |||
masak | oh, 'd love to! | ||
mathw | so focussed lately on C# at work, and using Clojure for some home stuff | 09:59 | |
was using Haskell but got bitten by the dependency hell so backed off for a while | |||
timotimo | #perl6 memes. today: GMM; Good Man Masak | ||
masak | :P | ||
timotimo | in perl6 land we got rid of the "dependency hell" by not having any modules you can depend on! | ||
mathw | My local PM group are going to start having technical talks, they want something Perl 6-ish and of course they're all looking at me... | ||
masak | mathw: dependency hell in Haskell? I thought those people were all into immutable stuff... | 10:00 | |
xiaomiao | dependency hell is just a matter of having good policies and a package manager available | ||
masak | xiaomiao: "just", huh? :P | ||
xiaomiao | e.g. perl5: no cyclical dependencies in cpan, ever | ||
mathw | yeah... it's not that simple in Haskell-land | ||
xiaomiao | that's a massive lesson that the ruby people won't learn, so their stuff is impossible to install | ||
masak | xiaomiao: are there package managers with cyclical dependencies!!??? h... how? | ||
moritz | xiaomiao: and reliable infrastructure, and packages declaring all deps correctly, ... | ||
mathw | cyclical dependencies??? | ||
masak | I... how? | ||
mathw | no, Haskell has problems with versioning | 10:01 | |
xiaomiao | mostly tests depending on things that need that package installed to run | ||
mathw | package A depends on B 1.0.3, package C (which you also want) uses B 1.0.5 | ||
xiaomiao | so you have to disable all tests to install things | ||
mathw | this usually causes some sort of explosion | ||
moritz | if you have some kind of transaction thingy, and deps don't need to be satisfied inside the transaction, you can have cyclic deps | ||
xiaomiao | e.g. gem :) | ||
mathw: you should never need such precise deps, unless your code is so fragile that you'll bundle that in directly | 10:02 | ||
bundling is bad! | |||
10:02
fhelmberger joined
|
|||
timotimo | bundling is fun! | 10:02 | |
mathw | especially as Hackage (Haskell-like CPAN) has a lot of packages with upper version bounds that are way too tight or just too cautious | ||
xiaomiao | usually, most of the time, <=1.0.0 would be ok | ||
mathw | a lot of packages have broken interfaces on 0.0.1 increments etc. | ||
xiaomiao | forcing =1.0.3 like ruby people like to do is bad | ||
Ven | you can have cyclical deps in JS :P | ||
mathw | bad policies, no enforcement etc. | ||
xiaomiao | bad code :) | ||
mathw | Haskell library community needs to mature | ||
and they're trying to find a good solution | 10:03 | ||
xiaomiao | they all need to mature, and mostly get rid of the stupid | ||
timotimo | i hope we're doing well with the learning from other people's mistakes with perl6 on this topic | ||
xiaomiao | e.g. python/pip, it's ... augh | ||
mathw | and it's a shame, because it's the only thing holding me back from trying to get everyone using Haskell for everything they're not using Perl 6 for | ||
Ven | JS land has specifically-pinned version everywhere | 10:04 | |
xiaomiao | Ven: JS is based on bundling | ||
Ven | (and I use it too, because sometimes your stuff breaks in a minor update and you're like wtf) | 10:05 | |
xiaomiao | always stapling everything together | ||
10:06
xfix left,
fhelmberger left
|
|||
Ven | mathw: looks like the paris pm group will also stuff perl 6 stuff soon :) | 10:06 | |
10:09
xfix joined,
xfix left,
xfix joined
|
|||
mathw | Ven: they all want Perl 6 to happen, it seems, because I've been teasing them about how cool it is | 10:10 | |
Ven | m: say "{" | ||
camelia | rakudo-moar 319a78: OUTPUT«===SORRY!=== Error while compiling /tmp/rQrhVcMnoGUnable to parse expression in double quotes; couldn't find final '"' at /tmp/rQrhVcMnoG:1------> say "{"⏏<EOL> expecting any of: statement lis…» | ||
Ven | mathw: hehe, exactly :o) | 10:11 | |
Ven teased them in a talk where he barely had 2 slides which some baby perl 6 code | |||
mathw | unfortunately the amount of happening Perl 6 has already had isn't quite enough for them at this point in time | ||
and most of them are working with big Perl 5 codebases so there's that problem to deal with | |||
they're all on board with modern Perl though, which is great | |||
and then I sometimes get a bit jealous because my job is C# and it's annoying | 10:12 | ||
especially when we've all got F# development environments because it comes with Visual Studio | |||
timotimo | and you're not allowed F# at all? | ||
10:13
xfix left
|
|||
mathw | it's something I need to start trying to persuade people to do | 10:14 | |
10:14
xfix joined,
xfix left,
xfix joined
|
|||
mathw | unfortunately they look at C# and it's familiar and the tooling's big and sophisticated (ReSharper) | 10:14 | |
jnthn can't use ReSharper; it's just too noisy | 10:15 | ||
Plain VS stays out of my way enough. | |||
mathw | and they look at F# and it's weird and therea ren't any {} and ReSharper doesn't support it (not that F# really needs that much help) and it's just new and weird and... | ||
I now rely on a few ReSharper features, but that's just saving me time when I'm dealing with C#'s peculiarities | |||
if we were using a proper language... | 10:16 | ||
timotimo | that's a jetbrains product, isn't it? | ||
mathw | yeah | ||
jnthn | Yeah. It's decent enough. It just doesn't fit with the way I work. | ||
timotimo | jetbrains make really good stuff | ||
mathw | really expensive addon for Visual Studio (which is really expensive) that gives it loads of features it should've already had | ||
and a load of other features you shouldn't need | |||
timotimo | can't wait for the stuff they come up with when perl6 actually gets popular %) | ||
mathw | marvellous work they've done on it, but it's a solution for a problem that we shouldn't have | 10:17 | |
10:17
ssutch joined
10:19
sam_ left
10:29
isBEKaml joined,
isBEKaml left,
isBEKaml joined,
chenryn left,
nbrown joined,
xfix left
10:31
xfix joined,
xfix left,
xfix joined
10:34
nbrown left
10:37
kaare_ left
|
|||
Ven | m: say (1.11)[*/2] | 10:37 | |
camelia | rakudo-moar 319a78: OUTPUT«Index out of range. Is: 0.5, should be in 0..0 in method gist at src/gen/m-CORE.setting:12892 in sub say at src/gen/m-CORE.setting:13830 in block at /tmp/adZBsxKCKy:1» | ||
Ven | "should be 0..0" ? | ||
Timbus | not much wiggle room there | ||
how about 0..0.1 | 10:38 | ||
10:38
dayangkun_ left
|
|||
masak | yes, that error shouldn't happen. | 10:41 | |
since if it didn't, the 0.5 would be successfully rounded down to 0. | 10:42 | ||
masak submits rakudobug | |||
10:42
cibs left
|
|||
Ven | masak: you don't think that should be an error ? | 10:43 | |
masak | I think it shouldn't be an error. | ||
fractional indices don't exist, 0.5 gets rounded down to 0, which is a legal index. | |||
more philosophically, you're doing */2 because you want the middle index, which should work for a 1-element thing. | 10:44 | ||
Timbus | ya its common to.. ^ that | ||
Ven | meh. | ||
masak | this is a case of "validation should happen *after* dwimming the parameter". | 10:45 | |
rt.perl.org/Ticket/Display.html?id=122423 | 10:47 | ||
10:48
xfix left
10:52
xfix joined,
xfix left,
xfix joined
10:55
xfix left
10:57
chenryn joined,
isBEKaml left
10:59
cibs joined,
colomon joined
|
|||
dalek | kudo/nom: fd2b197 | (Tobias Leich)++ | src/Perl6/Actions.nqp: do not try to locate a macro when we do not have a name A ternary expression resulted if an QAST::Op(if &infix:<>) where the ope name is ignored, but we still tried to find a macro called &infix:<>, which is bogus. |
11:01 | |
11:02
thou joined,
xfix joined,
xfix left,
xfix joined
11:05
Ven left
11:06
xfix left
11:07
thou left
11:13
xfix joined,
xfix left,
xfix joined
11:17
xfix left
11:18
xfix joined,
xfix left,
xfix joined
11:20
cognome joined
11:22
cognome_ joined,
cognome left
11:24
kaare_ joined,
aoseki left
11:26
cognome_ left
11:29
virtualsue joined
|
|||
hoelzro | morning #perl6 | 11:41 | |
11:42
virtualsue left
|
|||
rindolf | hoelzro: morning. | 11:43 | |
dalek | kudo-star-daily: 3450b6d | coke++ | log/ (14 files): today (automated commit) |
||
moritz | timotimo: perlpunks.de/paste/show/53d6384a.5ff2.12a | 11:47 | |
oh, wrong channel | |||
12:05
rindolf left
12:10
virtualsue joined,
chenryn left
12:11
mr-foobar left
12:17
kaleem left
12:19
mikegrb left
12:20
cognome joined
12:25
cognome left
12:27
Vendethiel joined
12:28
cognome joined
12:32
cognome left
12:33
raiph joined,
colomon left
12:46
takesako left
12:51
thou joined
12:55
thou left
12:59
takesako joined
13:20
cognome joined
13:21
chenryn joined
13:23
akaseki joined
13:24
cognome left
13:26
user3 joined
13:27
virtualsue left
13:30
SamuraiJack joined
13:32
nbrown joined
13:36
nbrown left,
user3 left
|
|||
dalek | ast: b289b17 | duff++ | S02-lists/indexing.t: Add a test for RT #122423 |
13:36 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122423 | ||
13:40
jnap joined
13:42
virtualsue joined,
pmurias joined
|
|||
pmurias | what would be a good way of testing nqp::printfh in combination with nqp::getstdout()/nqp::getstderr()? | 13:43 | |
dalek | p-js: fee00df | (Pawel Murias)++ | TODO: Add TODO item. |
13:45 | |
kudo/nom: 6be1028 | duff++ | src/core/Any.pm: Add a fix for RT #122423 |
|||
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122423 | ||
13:48
Pleiades` left
13:52
Pleiades` joined
13:53
btyler joined
|
|||
dalek | kudo/nom: 3abaf60 | duff++ | t/spectest.data: Add new file to spectests |
13:54 | |
13:56
chenryn left
|
|||
dalek | kudo/nom: d3988a9 | Carlin++ | src/core/ (2 files): Disallow file operations on directories This prevents rakudo performing file operations on directories on platforms where the OS itself does not disallow this. This fixes RT #122358 |
13:57 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122358 | ||
kudo/nom: 7d92f4c | lizmat++ | src/core/ (2 files): Merge pull request #297 from carbin/nom Disallow file operations on directories (RT #122358) |
|||
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122358 | ||
masak | PerlJam++ # nice fix | 13:58 | |
13:58
thou joined
|
|||
PerlJam | m: .say for 0b11..0xa) | 14:02 | |
camelia | rakudo-moar fd2b19: OUTPUT«===SORRY!=== Error while compiling /tmp/4mgJswD1v5Unexpected closing bracketat /tmp/4mgJswD1v5:1------> .say for 0b11..0xa⏏)» | ||
dalek | p-js: 7c29c9d | (Pawel Murias)++ | src/vm/js/nqp-runtime-node/ops/fs.js: nqp::printfh works with nqp::getstdout() and nqp::getstdin(). We need tests for that. |
||
PerlJam | m: .say for 0b11..0xa | ||
camelia | rakudo-moar fd2b19: OUTPUT«345678910» | ||
timotimo | m: .base(2).say for 0b1..0b1111 | 14:03 | |
camelia | rakudo-moar fd2b19: OUTPUT«1101110010111011110001001101010111100110111101111» | ||
timotimo | fwiw, i ran features.json through json_verify and it claimed it was valid json | 14:06 | |
so i don't know why the feature comparison matrix doesn't get updated | |||
ChoHag | I've managed to trigger a missing symbol error against a symbol I'm not using. | 14:07 | |
dalek | p-js: 4389197 | (Pawel Murias)++ | TODO: Expand on the TODO list. |
14:11 | |
p-js: 682a7b5 | (Pawel Murias)++ | src/vm/js/QAST.nqp: Add missing file. |
|||
14:16
lizmat left
|
|||
dalek | p: 3c49975 | duff++ | / (2 files): Allow other integer representations for ranges in ** quantifier |
14:17 | |
14:18
lizmat joined,
araujo joined,
araujo left,
araujo joined
14:20
cognome joined
14:25
cognome left
|
|||
pmurias | HLL::Compiler should close stdout? | 14:25 | |
jnthn: closing the stdout at src/HLL/Compiler.nqp:241 looks like a bug | 14:27 | ||
14:27
rurban1 joined
14:29
woolfy joined
|
|||
jnthn | 241? | 14:30 | |
jnthn sees no close there | 14:31 | ||
PerlJam | I thihnk he means :262 | ||
pmurias | jnthn: sorry, 262 | ||
jnthn | ah | ||
I dunno if it's a bug. Typically beyond that point we're existing the program anyway. | 14:32 | ||
*exiting | |||
FROGGS_ | might that explain that I only see the ast printing partial? | 14:34 | |
jnthn | Hm, maybe? | 14:36 | |
FROGGS_ | hmmm | ||
jnthn | But I'd hope we'd have flushed before closing... | ||
Feel free to try patching it | |||
FROGGS_ | will do, have to fiddle with nqp anyway... | 14:37 | |
14:37
SamuraiJack left
|
|||
pmurias | shouldn't closing flush? | 14:37 | |
FROGGS_ | (if/while statements in v5 do not work, the 'immediate' block vanishes) | ||
dalek | p-js: fa7ae23 | (Pawel Murias)++ | TODO: Remove extra whitespace from TODO. |
||
p-js: 9cbad51 | (Pawel Murias)++ | src/vm/js/nqp-runtime-node/ops/fs.js: Support closing stderr and stdout. They are also true when treated as bools. |
|||
p-js: ae24e3e | (Pawel Murias)++ | / (3 files): 'make nqp-js.js' works. |
|||
timotimo | not only perl6 has the :D → plus.google.com/u/0/11021484805976...5qA2RKtWJH | 14:38 | |
PerlJam | timotimo++ nice! | ||
14:38
rurban left
|
|||
pmurias | node ./nqp-js.js --optimize=off -e 'say("Hello World")' | node now works | 14:38 | |
FROGGS_ | \o/ | 14:39 | |
14:40
treehug88 joined,
jnap left
14:41
`matija left,
aoseki joined
14:42
jnap joined
14:43
chenryn joined,
akaseki left
14:44
woolfy left
|
|||
lizmat | PDX -> AMS commute& | 14:45 | |
14:46
lizmat left
|
|||
hoelzro | lizmat: safe flight! | 14:47 | |
[Coke] | pmurias++ | 14:48 | |
14:48
chenryn left
|
|||
pmurias | the current biggest problem with the build process is that I'm depending on a preinstalled nqp-p to build the cross-compiled-to-parrot nqp-js | 14:49 | |
dalek | blets: 301d306 | (Herbert Breunung)++ | docs/ (3 files): preparing and modernize op tablet + related bits |
||
14:50
rindolf joined,
chenryn joined
|
|||
jnthn | I'm not sure I'd call a longhaul flight a commute... :P | 14:50 | |
14:51
brrt joined
|
|||
hoelzro | pmurias++ | 14:54 | |
14:55
chenryn left
14:57
matija joined
|
|||
dalek | ast: bffb321 | Carlin++ | S (5 files): Test that file operations on directories fail On some platforms the OS itself does not enforce this |
14:58 | |
14:58
psch left
14:59
psch joined
|
|||
Vendethiel | pmurias++ | 15:03 | |
carlin | \o/ one OpenBSD spectest failure down | 15:05 | |
if my moar pull req gets merged it'll be clean | |||
oh except for S02 KERNEL and DISTRO failures but they're more informative than actual failures... | 15:06 | ||
masak | carlin++ | 15:09 | |
15:10
denis_boyun left
15:11
prevost joined,
chenryn joined,
brrt left,
telex left
15:12
telex joined,
dayangkun joined
15:13
raiph left
|
|||
dalek | p: 294a1fe | (Tobias Leich)++ | src/HLL/Compiler.nqp: flush filehandles and do not close stdout AST printing was broken on my machine, also pmurias++ found the bug where we close stdout when this is either not wanted or sane. |
15:17 | |
FROGGS_ | I'm not going to bump revision in rakudo, because that is just a bit more than cosmetics | ||
ventica2 | m: say so "good", "morning", "#perl6"; | ||
camelia | rakudo-moar 7d92f4: OUTPUT«Truemorning#perl6» | ||
FROGGS_ | hi ventica2 | ||
ventica2 | hi | ||
m: say so ("good", "morning", "#perl6"); #oops, precedence | 15:18 | ||
camelia | rakudo-moar 7d92f4: OUTPUT«True» | ||
masak | apparently 'so' considers itself a prefix op, not a sub. | ||
m: say &so | |||
camelia | rakudo-moar 7d92f4: OUTPUT«===SORRY!=== Error while compiling /tmp/PiL3Yb0DxLUndeclared routine: &so used at line 1» | ||
masak | m: say &prefix:<so> | ||
camelia | rakudo-moar 7d92f4: OUTPUT«sub prefix:<so> (Mu) { #`(Sub+{<anon>}|139915261910160) ... }» | ||
masak | that... makes sense, since prefix:<not> is an op. | 15:19 | |
Vendethiel | masak: yeah, it's an op. | ||
carlin | ventica2: True morning to you to :p | ||
masak | not False morning to you, ventica2! | ||
15:20
raiph joined,
cognome joined
15:21
hoverboard joined
15:24
cognome left
15:27
rindolf left,
rindolf joined
|
|||
masak | whuu, Python can do string concat through juxtaposition. | 15:28 | |
TimToady | that's...not a feature | ||
that's a bug | |||
FROGGS_ | *g* | 15:29 | |
TimToady: there is more than one way to concat :P | |||
timotimo | masak: explain that to me please? | ||
pmurias | "a" "b" | ||
timotimo | juxtaposition? as in, just writing strings next to each other? | ||
pmurias | timotimo: yes | ||
timotimo | why is that not a feature? | ||
TimToady | destoys self-clocking | 15:30 | |
15:30
zakharyas left
|
|||
TimToady | *stroys | 15:30 | |
same reason P5-style indirect objects was a bad idea | |||
timotimo | psst | ||
self-clocking is only a feature in perl6 | |||
no other language cares for that sillyness | 15:31 | ||
TimToady | well, it's a feature in P5 too, just not done as well | ||
awwaiid | self-clocking? | ||
TimToady | an extra channel of information that lets you know if you've gotten out of sync | 15:32 | |
many human languages have self-clocking features for redundancy | |||
UPC codes are self-clocking | |||
every pair of bars and spaces will add up to a width of 7 | |||
FROGGS_ | timotimo: C does too | 15:33 | |
TimToady | self-clocking let's you catch errors much earlier | ||
awwaiid | er. example plz? | ||
TimToady | like leaving out the semicolon | ||
FROGGS_ | btw, first time I've seen P6 being mentioned besides other languages: en.wikipedia.org/wiki/Comparison_of...strings%29 | 15:34 | |
awwaiid | ah. Or even the presence sigils | ||
TimToady | well, they're noun markers, so it's easy to see if you've accidentally put two nouns in a row | ||
awwaiid | ya, ok | ||
15:36
hoverboard left
15:38
treehug88 left
15:41
dayangkun left,
colomon joined
15:44
mr-foobar joined
15:48
Vendethiel left
|
|||
dalek | rl6-roast-data: c5d9f80 | coke++ | / (5 files): today (automated commit) |
15:53 | |
15:59
gfldex joined
|
|||
[Coke] | FROGGS: did some diving, the perl 6 reference was added by Dreftymac on 31 Oct 2006. | 16:02 | |
Do we have a rakudo-jvm champion at the moment? aa | 16:04 | ||
pmurias | what's the state of rakudo-jvm is it progressing or has the development shifted to rakudo-moar? | 16:05 | |
[Coke] | no one is doing active dev on rakudo-jvm as far as I can tell. lots of daily failures. Much more interesting stuff going on for moar. | 16:06 | |
as someone who has said he'd use rakudo-jvm at work, I should probably try harder to fix the fails. | 16:07 | ||
16:18
cognominal joined,
cognome joined
16:20
Akagi201 left,
xinming left
|
|||
ventica2 | carlin masak: haha thx | 16:24 | |
masak | this just in: only string *literals* in Python juxtapose. I guess that saves self-clocking. | 16:27 | |
16:27
xinming joined
|
|||
masak | (because that means N juxtaposed string literals are isomorphic to a single one) | 16:28 | |
in other news, you may (or may not) remember the discussion a few months back about Python indentation, merge conflicts, and redundancy. | 16:29 | ||
I just realized that the colons are a form of redundancy in Python, just as good as '{', basically. | |||
but there's still no '}' analogue. | |||
ventica2 is a secret fan of indentation ala YAML, but not Python-style where the indentation is directly chained to the syntax... | 16:31 | ||
masak | ventica2: what's the difference? | ||
more specifically, isn't YAML indentation also "directly chained to the syntax"? | 16:32 | ||
ventica2 | well I misspoke it's not so much the syntax as what the semantics... YAML is a data language and my brain "groks" the indentation of data ... but indentation to create syntactical structures seems bureaucratic to me | 16:33 | |
masak | interesting. | 16:34 | |
ventica2: do you have the same objection to pseudocode? | |||
ventica2 | So, a YAML hash entry is created by foo: followed by an indent.... another element can be added to the hash by a dedent, bar: and then another indent... that makes sense to me | ||
16:34
Rotwang joined
16:35
chenryn left
|
|||
ventica2 | masak: probably | 16:36 | |
masak: I pretty much buy into the Perl philosophy of whitespace... whitespace should be freely and liberally used to visually format visible syntactical elements | 16:37 | ||
16:37
rurban1 left
|
|||
ventica2 | I compulsively line up ='s... i had to install Tabular in vim lol | 16:37 | |
but I also think a well-designed data-serialization format can accomplish this: pastebin.com/8paDRaSM | |||
do we have a .yaml like the .perl and .gist? | 16:38 | ||
ruby does and I like that idea | |||
masak | I used to compulsively line up = signs, and many other elements, too. seems I somehow stopped doing that, at least most of the time. | ||
ventica2: no .yaml built in, no. | |||
ventica2 | k | ||
16:38
xinming left
|
|||
ventica2 | i assume thre is a way to add that in without hacking the core? | 16:39 | |
16:39
xinming joined
|
|||
ventica2 | i think i'm thinking of adding a method to Mu class? (have not got to the OO synopsis yet...) | 16:41 | |
m: my @a=<a b c>; for @a -> $x, $y { say $x; say $y; }; | 16:43 | ||
camelia | rakudo-moar 7d92f4: OUTPUT«abNot enough positional parameters passed; got 1 but expected 2 in block at /tmp/iuvXk_oGml:1» | ||
ventica2 | interesting, dyn. failure | ||
PerlJam | ventica2: use MONKEY_TYPING; class Mu { method yaml(...) { ... } } # something like that. | ||
jnthn | m: my @a=<a b c>; for @a -> $x, $y? { say $x; say $y; }; # can make it optional if you want to not explode | 16:44 | |
camelia | rakudo-moar 7d92f4: OUTPUT«abc(Mu)» | ||
ventica2 | seems a little DWIM-deficient? What about just using Whatever when passing an odd-numbered array to a pointy-block with even-numbered arguments? | ||
PerlJam: thx | |||
16:44
japhb left
|
|||
ventica2 | jnthn: OK | 16:44 | |
16:45
pmurias left
|
|||
ventica2 | masak: I find myself doing it increasingly more... it's like a bad habit that just gest worse :P | 16:46 | |
masak | ventica2: well, make sure you at least have editor support for it, so you don't waste your time doing it manually. | ||
ventica2 | no doubt... hence Tabular | 16:47 | |
afk & | 16:48 | ||
16:49
`matija joined
16:50
japhb joined
16:52
[Sno] left
16:53
`matija left
|
|||
carlin | clang's output while building moar/rakudo hurts to look at... probably why it's called clang | 17:00 | |
17:03
pecastro left
|
|||
ventica2 | is there a .bytes? | 17:06 | |
m: say "foo".chars; | |||
camelia | rakudo-moar 7d92f4: OUTPUT«3» | ||
ventica2 | m: say "foo".bytes; | ||
camelia | rakudo-moar 7d92f4: OUTPUT«No such method 'bytes' for invocant of type 'Str'Did you mean '.encode($encoding).bytes'? in block at /tmp/_FlgGbuUBb:1» | ||
ventica2 | m: say "foo".utf8.bytes; | 17:07 | |
camelia | rakudo-moar 7d92f4: OUTPUT«No such method 'utf8' for invocant of type 'Str' in block at /tmp/8qqx81fF0l:1» | ||
carlin | m: say "foobar".encode("ascii").bytes | ||
camelia | rakudo-moar 7d92f4: OUTPUT«6» | ||
ventica2 | aha | ||
ty | |||
17:09
rindolf left,
adu joined
17:10
rindolf joined
|
|||
ventica2 | m: my %h = 'foo' => 1, 'bar' => 2; for %h.keys -> $k {say $k} | 17:12 | |
camelia | rakudo-moar 7d92f4: OUTPUT«foobar» | ||
ventica2 | m: my %h = 'foo' => 1, 'bar' => 2; for %h :k -> $k {say $k} | 17:13 | |
camelia | rakudo-moar 7d92f4: OUTPUT«===SORRY!=== Error while compiling /tmp/T_BYZ1so4nYou can't adverb thatat /tmp/T_BYZ1so4n:1------> y %h = 'foo' => 1, 'bar' => 2; for %h :k⏏ -> $k {say $k} expecting any of: pair value» | ||
17:14
vendethiel joined
|
|||
ventica2 | m: my %h = 'foo' => 1, 'bar' => 2; for %h<foo bar> :k -> $k {say $k} | 17:14 | |
camelia | rakudo-moar 7d92f4: OUTPUT«foobar» | ||
ventica2 | m: my %h = 'foo' => 1, 'bar' => 2; for %h<foo bar> :exists :k -> $k {say $k} | ||
camelia | rakudo-moar 7d92f4: OUTPUT«Unsupported combination of named parameters (exists, k) passed to Hash %h in method gist at src/gen/m-CORE.setting:12903 in sub say at src/gen/m-CORE.setting:13841 in block at /tmp/lMDXcfeav7:1» | ||
ventica2 | m: my %h = 'foo' => 1, 'bar' => 2; for %h<foo bar> :exists -> $k {say $k} | 17:15 | |
camelia | rakudo-moar 7d92f4: OUTPUT«TrueTrue» | ||
ventica2 | m: my $a=0; say $a infix:<+> 1; | 17:19 | |
camelia | rakudo-moar 7d92f4: OUTPUT«===SORRY!=== Error while compiling /tmp/FZoPAbTVrdTwo terms in a rowat /tmp/FZoPAbTVrd:1------> my $a=0; say $a ⏏infix:<+> 1; expecting any of: postfix infix stopper infix …» | ||
ventica2 | m: $a=13; say :2($a); say :16($a); | 17:21 | |
camelia | rakudo-moar 7d92f4: OUTPUT«===SORRY!=== Error while compiling /tmp/Z_3THAxrFEVariable '$a' is not declaredat /tmp/Z_3THAxrFE:1------> $a⏏=13; say :2($a); say :16($a); expecting any of: postfix» | ||
rindolf | Hi all. | 17:22 | |
TimToady: hi, how are you feeling? | |||
17:22
Ven joined
|
|||
timotimo | carlin: you're of course free to fix some of teh warnings clang comes up with :) | 17:23 | |
17:23
go|dfish left
|
|||
raydiak | good morning #perl6 | 17:26 | |
timotimo | it's no fun hacking in more and more ops for the jit to use when it segfaults really early into stage compile and even nqp builds ;( | ||
ventica2 | m: sub f { return @_.perl }; say f("hi!"); | 17:29 | |
camelia | rakudo-moar 7d92f4: OUTPUT«Array.new("hi!")» | ||
ventica2 | m: say -> { return "foo" }; | 17:30 | |
camelia | rakudo-moar 7d92f4: OUTPUT«-> () { #`(Block|140384833825296) ... }» | ||
17:31
itz left,
itz joined
|
|||
rindolf | raydiak: morning. | 17:35 | |
17:36
treehug88 joined
17:45
rindolf left
|
|||
raydiak | timotimo: re performance improvements you were talking about last night, it seems that moar is much faster than jvm for pray now, but if memory serves, jvm has gotten substantially slower (though I haven't actually tested an old version yet for direct comparison) | 17:51 | |
timotimo | oh | 17:52 | |
that's not good :( | |||
raydiak | like, if I'm right, it's around half as fast as it was earlier this year... | ||
timotimo | that seems better | ||
bad* | |||
FROGGS_ | wow | ||
raydiak | I'll actually test it today, but I think it's the same scene on the same version of pray on the same vps, gets like 20 pixels/sec now, used to be more like 45 | 17:54 | |
timotimo | it would be fantastic if you were able to verify that | ||
that's a pretty bad performance hit | |||
[Coke] | is rakudo-jvm on rakudo-bench? | ||
timotimo | unfortunately, the IP address of my home computer seems to have changed, so i can't use it to benchmark properly now :( | ||
yes, you can just build it | |||
raydiak | sure, I'll start building an old version right now | 17:55 | |
timotimo | thank you | ||
raydiak | yesterday's moar got like 30 or 35 on the same scene though, in happy news :) | 17:56 | |
17:56
zakharyas joined
|
|||
timotimo | that's not as much as 45 :( | 17:57 | |
raydiak | better than it used to be | ||
which I suppose is a painfully obvious statement | 17:58 | ||
18:01
Ven left
|
|||
timotimo | :) | 18:01 | |
it'd also be interesting if we regressed | |||
not as nice, but still good to know | |||
18:01
virtualsue left
18:02
rindolf joined
|
|||
raydiak | I seem to have regressed on my ability to use p6bench | 18:02 | |
18:03
xinming left,
xinming joined,
raiph left
|
|||
timotimo | how can i help you? | 18:03 | |
also, did you pull recently? | |||
raydiak | yep | 18:04 | |
18:04
kaleem joined
|
|||
raydiak | how do I get a version from like december installed of rakudo jvm? | 18:04 | |
well, not *installed* but built...you know what I mean | |||
timotimo | ./bench build rakudo-jvm/2013.10 | ||
we have tags for releases that are YYYY.MM, so you can use that | |||
well, have to extract first, then build | 18:05 | ||
raydiak | why .10? would expect 11 or 12 for december | ||
jnthn | .12 would be December | 18:06 | |
The other consideration is JVM version. | |||
raydiak | .10 fails configuring nqp with "Unknown option: backends" | 18:07 | |
jnthn: I had wondered whether something was wrong with my jvm, got updated/replaced, or something like that | |||
jnthn | raydiak: I got a slowdown on a newer JVM vs the one I initially did the port on :( Didn't get to investigate further, or see if latest is better again. | 18:08 | |
18:08
treehug88 left
|
|||
raydiak | well, when 2013.12 finishes building, I'll know for sure if it's that or not | 18:09 | |
jnthn | ok :) | ||
raydiak | though tbh I'm not sure if I've done any maintinence to my server this year like updates :P | 18:10 | |
18:10
dwarring joined
18:12
raiph joined
18:16
Ven joined
|
|||
raydiak | argh building failed because I have to shove -Xms and -Xmx params into one of the build files at a certain step to get it to work on this machine...starting over | 18:16 | |
18:18
[Sno] joined
|
|||
timotimo | raydiak: i have to do a linear search (and use my fingers) each time i want to get from month-name to number and back | 18:20 | |
raydiak: so i guessed | |||
raydiak | timotimo: I know what you mean, I just have an easier time with the ones closer to the ends | 18:21 | |
after 30 years, I have 1-4 and 10-12 down pretty well :) | 18:22 | ||
18:23
kaleem left
|
|||
dalek | blets: f736d43 | (Herbert Breunung)++ | docs/appendix-c-classtree.txt: classtree stub, remove misleading stuff |
18:31 | |
18:31
treehug88 joined
|
|||
timotimo | raydiak: the date you were using must have been at a point when we still had Configure.pl and ConfigureJVM.pl | 18:32 | |
we have moritz++ to thank for the new system with --backends | |||
raydiak | ah, cool | 18:34 | |
I'd certainly hate to have a different configure for each backend | 18:35 | ||
timotimo | aye. | ||
back then you could only build a single backend per checkout of the source tree | |||
raydiak | moritz++ indeed | 18:37 | |
[Coke] | timotimo: which is what all the normal kids do anyway, even with the new system. :) | 18:44 | |
FROGGS_ | [Coke]: not true :o) | ||
raydiak | theres normal kids around here? | 18:45 | |
colomon | errr… "Heap corruption detected: pointer 0x10776ae98 to past fromspace" | ||
geekosaur | ...what is this "normal" of which you speak? | 18:46 | |
carlin | I tried being normal once, it was the worst 2 minutes of my life | 18:47 | |
raydiak | geekosaur: he must mean a vector perpendicular to a plane | ||
timotimo | [Coke]: well, i don't ... | 18:48 | |
FROGGS_ | raydiak: *g* | 18:49 | |
[Coke] | I am usually testing something; I want the fastest build time to get each platform I'm testing. Can't wait for java when all I want is moar. | 18:50 | |
not like the build really has any steps in common for the backend. | 18:51 | ||
timotimo | that's why there is m-install, j-install and p-install targets :) | ||
[Coke] | timotimo: yes, but why -build- java if I'm interested in the latest moar? | ||
FROGGS_ | because you can... | 18:52 | |
[Coke] | makes the turnaround time for testing horrible. (... which probably explains why my daily runs still have the most jvm failures. :( ) | ||
FROGGS_: apparently I need an upgrade on my primary dev machine, then. :P | 18:53 | ||
timotimo | [Coke]: m-install will not build java | ||
m-install will only build moar for you and install that | |||
colomon | jnthn: "Heap corruption detected: pointer 0x10776ae98 to past fromspace" ? | ||
[Coke] is really glad that option works for folks. I just don't see how it helps. | |||
jnthn | colomon: -> MoarVM bug report with whatever details you can offer to reproduce it | 18:54 | |
FROGGS_ | colomon: others have reported that too, but there is no knowledge about what's going on atm | ||
[Coke] | timotimo: it won't even build nqp-jvm? ok. | ||
colomon | jnthn, FROGGS_: seeing what I can do. but the very quick version is, I got this running t/08-combinations.t from List::Utils | 18:55 | |
FROGGS_ | I usually build for all backends, because I wanna test my changes on all of them... (even when I tend to not run j-spectest) | ||
timotimo | well, building nqp and such isn't part of the "make" step, it's part of the "configure" step (or, if you don't use --gen-nqp, the make step for nqp) | ||
(i personally don't use --gen-* in my working copy) | 18:56 | ||
[Coke] | timotimo: right - does it build nqp-jvm as part of the configure step, even if I'm only going to runb make m-install? It has to, right? | ||
I always use gen | |||
timotimo | if you use the gen option, then yes, it has no influence | ||
i personally build rakudo way more often than nqp, though | |||
[Coke] | as do i. the gen option only builds if needs be. | 18:57 | |
(based on revision, not backend) | |||
[Coke] tries a rakudo.jvm on his mac, it's been a while. | 18:58 | ||
jnthn | colomon: OK; flussence++ also reported a possibly related explosion and was bisecting earlier... | ||
19:01
woosley joined,
ivanshmakov left
|
|||
colomon | jnthn: I'm utterly baffled by this at the moment. | 19:03 | |
jnthn: I haven't been able to duplicate it. | |||
jnthn: but something has happened twice now -- once (unknown failure) in the smoke run overnight, and then the time I reported above. | 19:04 | ||
haven't seen it happen again. :\ | |||
19:05
ivanshmakov joined
|
|||
[Coke] wonders tools/build/gen-cat.pl is using perl5 and not nqp. | 19:05 | ||
*why* | 19:06 | ||
seems like a LHF to move that over and use a little more dogfood. | |||
19:08
raiph left
19:09
darutoko left
19:10
Ven left
|
|||
PerlJam | Coke: which nqp? nqp-j, nqp-p, or nqp-m ? (seems like an extra little hurdle to jump there) | 19:14 | |
19:18
zakharyas left,
brrt joined
|
|||
raydiak | okay, pray's first example scene does render somewhat faster using december rakudo jvm, but nowhere near the huge discrepency I was talking about | 19:19 | |
19:20
itz_ joined
|
|||
raydiak | I'm starting to think I may have used a sphere instead of a cube back then, but in any case, as much as I'm able to test right now, moar is a good 60+% faster than jvm | 19:20 | |
19:21
itz left
|
|||
jnthn | raydiak: And faster than JVM was back then too? | 19:21 | |
19:22
Woodi left
|
|||
colomon | jnthn: oh, managed to get the Heap corruption again. | 19:22 | |
raydiak | jnthn: well I have recollections of getting about 15-20% higher speeds than I do now under any circumstances, but I think I was probably testing with a phere instead of a cube back then | 19:23 | |
jnthn: but faster than I test old jvm to be now, yes | |||
^^*sphere | |||
jnthn | So I've nothing to phere? :) | 19:25 | |
raydiak | ha, it does seem that way :) after a few different runs, it's around this neighborhood: old jvm: 20; new jvm: 15; new moar: 30 | ||
timotimo | sweet :) | 19:26 | |
[Coke] | PerlJam: we're using it in rakudo's build, so it should be whatever the nqp used to build rakudo is, since you already had to build it or have it. no hurdle. | 19:27 | |
jnthn should spend some time teaching the JVM some of the things we've learned in the Moar backend. | |||
[Coke] | if you can do that, maybe you can pre-teach js? ;) | ||
19:28
PZt left
19:29
liztormato joined,
rindolf left
19:30
rindolf joined
19:31
itz joined
19:32
Bucciarati_ is now known as Bucciarati
|
|||
raydiak | walk to the corner store & | 19:32 | |
19:33
itz_ left
19:34
raiph joined,
adu left
|
|||
liztormato is waiting for her flight, which has been delayed ~2 hours | 19:34 | ||
timotimo | :| | 19:35 | |
did you bring your coat? | |||
liztormato | No. Should I have? | ||
19:37
brrt left
|
|||
timotimo | not sure | 19:39 | |
the meme this comes from did not prepare me for this question | |||
jnthn | liztormato: ugh, delay. But safe travels. | ||
liztormato: Is this the cross-atlantic leg? | |||
liztormato | Yup | 19:40 | |
PDX -> AMS | |||
timotimo | airplanes are safer than walking | ||
liztormato | By number of km travelled, yes! | 19:41 | |
19:41
Ven joined
|
|||
liztormato | By number of persontrips, I'm not too sure | 19:42 | |
nwc10 | as a child (before the first shuttle accident) I think I estimatd that space travel was safer still, per passenger km | ||
timotimo | also, most people who try to walk across the ocean would probably die | ||
liztormato | Lies, damn lies and statistics! | ||
nwc10 | the moon is a long way | ||
exactly. | |||
19:43
beastd joined
|
|||
liztormato | And a harsh mistress | 19:43 | |
19:43
treehug88 left
|
|||
timotimo | and people who somehow manage to walk towards the moon will soon find they didn't bring enough breathable air with them | 19:43 | |
[Coke] | safe travels, liztormato! | ||
liztormato | If you can walk to the moon, you don't need air | ||
19:43
itz_ joined
|
|||
liztormato | Thanks all! | 19:44 | |
Ven | o/ | 19:45 | |
timotimo | heyo ven | ||
Ven | hey timotimo, do you plan to do a weekly ? | ||
19:46
itz left
|
|||
timotimo | yes | 19:46 | |
i just opened the wordpress editor | |||
and grumbled about google keep keeping (haha, get it?) my data on my phone and not syncing it to the web ... | |||
Ven | good :). timotimo++ raiph++ | ||
19:47
denis_boyun joined
|
|||
timotimo | the irc summaries weren't terribly helpful this time around | 19:49 | |
i wonder why | |||
19:50
liztormato left
|
|||
raydiak | back | 19:53 | |
timotimo | i has something to push :3 | 19:54 | |
dalek | kudo/nom: c9fc8af | (Timo Paulssen)++ | src/vm/moar/ops/perl6_ops.c: if available, use MVM_spesh_get_and_use_facts. |
19:55 | |
timotimo | this ought to work with a master moar and a split_get_use_facts moar | ||
ventica2 | m: for 1 .. * -> $a, $b { say $a; last if $b > 4 }; | 19:56 | |
camelia | rakudo-moar 7d92f4: OUTPUT«135» | ||
ventica2 | general implementation questions: 1) how do later statements "track back" to the lazy list they are touching and tell it "give me another one!" and 2) do overwritten values of a lazy list just "go away" or do they hang around and take up space? In the above loop, 3 overwrites 1 in $a... what happened to that 1 in terms of the memory model? | 19:58 | |
20:01
kurahaupo_mobile is now known as kurahaupo_
|
|||
timotimo | ... what | 20:01 | |
lazy lists have a "reified" part, which is basically a regular list, and at least one generator part | 20:02 | ||
so if you overwrite (or even read) any given position that's beyond the reified part, all entries up to that point will be reified for you | |||
20:02
treehug88 joined
|
|||
timotimo | now i understand what you mean with "3 overwrites the 1" | 20:03 | |
in this case it's actually more like a second call to the pointy block, so the $a that used to be will no longer be there | |||
but since lists keep their initial part reified, the 1 will still be there | |||
20:03
brrt joined
|
|||
timotimo | it might be the case that we use a RangeIter or something in this case so we don't actually keep the list around | 20:04 | |
jnthn | It'll be a GatherIter I think | ||
And I think it'll be munching its way through the data rather than keeping it. | |||
timotimo | that'd be nice | ||
ventica2 | thx, that helps... so it looks like the implementation can either keep the values around or discard them, as appropriate | 20:05 | |
i just have this foggy worry that if I do a loop a billion times (perfectly reasonable), and i use a lazy list for the iterator, I don't want a billion unused entries in memory that only came into existence as transient counter values | 20:06 | ||
20:17
liztormato joined
|
|||
timotimo | we already turn for ^$n { } into a simple c-style loop; maybe at some point we'll do betetr with more complicated lists, too | 20:19 | |
20:21
liztormato left
|
|||
ventica2 | m: ^3 { say "hi"; } | 20:22 | |
camelia | rakudo-moar 7d92f4: OUTPUT«===SORRY!=== Error while compiling /tmp/DE9WOtC4FxUnexpected block in infix position (two terms in a row, or previous statement missing semicolon?)at /tmp/DE9WOtC4Fx:1------> ^3 ⏏{ say "hi"; } expecting…» | ||
ventica2 | m: for ^3 { say "hi"; } | ||
camelia | rakudo-moar 7d92f4: OUTPUT«hihihi» | ||
20:28
Ven left
20:32
Ven joined
20:35
lizmat joined
|
|||
Ven | so, so, onto warn and fail ... *tries to get a grasp of Perl 6's exception-like thinges* | 20:37 | |
20:38
kaare_ left
|
|||
[Coke] | j: say "hi" | 20:44 | |
camelia | rakudo-jvm c9fc8a: OUTPUT«hi» | ||
20:45
Khisanth left
|
|||
lizmat | j: say 42.WHY | 20:45 | |
camelia | rakudo-jvm c9fc8a: OUTPUT«Life, the Universe and Everything» | ||
lizmat | sane, I would say :-) | 20:46 | |
[Coke] | -1. :P | ||
github.com/perl6/roast/blob/master...ched.t#L78 | 20:47 | ||
tests 34 and 38 (38 is the last) are explicitly testing that the cache was used, yes? | |||
FROGGS_ | ahh, that feels good... v5 (written in Perl 6) passes now the first three tests since the rewrite... | 20:48 | |
[Coke] | according to S06, that seems like an over eager test. | 20:49 | |
"The compiler is free to choose any kind of caching algorithm (including non-expiring, random, lru, pseudo-lru, or adaptive algorithms, or even no caching algorithm at all)." | |||
20:50
hoverboard joined
|
|||
dalek | ast: 4da0e24 | coke++ | S02-names/is_cached.t: add link to RT #122425, fudge for jvm |
20:56 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122425 | ||
20:57
Khisanth joined
|
|||
masak only now realizes that the Easter egg would have made a lot more sense if "Life, the Universe and Everything".WHY was 42 | 21:03 | ||
timotimo | that's true | 21:04 | |
itz_ | I'm seeing perl6-p fails with t/spec/S02-types/bool.t and modules/jsonrpc/t/server.t | ||
21:05
aoseki left
|
|||
Ven | lazy, sink, quietly, contend don't get much docs. I'll try to check roast ... | 21:06 | |
21:06
akaseki joined
|
|||
jnthn | I think contend may well be fossil | 21:07 | |
timotimo | what, did we kick out STM again? :( | 21:08 | |
sergot: do you have something i should report in this weekly (which also covers the week before last week)? | |||
p6weekly.wordpress.com/?p=203&s...6bc4a3b55c - this is the draft so far | 21:10 | ||
21:11
dmol left
|
|||
lizmat | timotimo: yes, STM is kicked out for the moment | 21:12 | |
definitely post 6.0 | |||
timotimo | okay | ||
lizmat: how's your flight? are you on it yet? | |||
lizmat | nope, waiting for the plane to get ready | ||
it was delayed out of Amsterdam because of the bad weather therel, I suppose | 21:13 | ||
timotimo | OK | ||
gtodd | is there a nice way match the first 10 characters of a string and move them to the end ... p6-ishly? (my $new = $old) =~ s/^(\d{10})(.*)/$2$1/dg; | ||
timotimo | we have a nice little thunderstorm in karlsruhe right now as well | ||
lizmat | I'm looking at the plane now, and the captain and crew already entered the plane | ||
so I guess they're doing their pre-flight checks | 21:14 | ||
gtodd | or better yet which pod doc page to read :-| | ||
timotimo | m: say <1 2 3 4 a b c d>.rotate(3); | ||
camelia | rakudo-moar c9fc8a: OUTPUT«4 a b c d 1 2 3» | ||
21:14
Ven left
|
|||
timotimo | m: say "Sixteen characters.".comb.rotate(-10).join | 21:14 | |
camelia | rakudo-moar c9fc8a: OUTPUT«haracters.Sixteen c» | ||
21:14
raiph left
|
|||
gtodd | I think I am running into TATMNWMTOWDI | 21:14 | |
too many new waywa to do it | |||
ways | 21:15 | ||
dalek | kudo/nom: c00999a | (Elizabeth Mattijsen)++ | src/core/ (2 files): Properly easter egg 42 |
||
gtodd | argh ... you see I knew there was a .method for my madness | ||
lizmat | masak++ | ||
21:16
raiph joined,
brrt left
|
|||
timotimo | %) | 21:16 | |
it's not as efficient as doing a substr + concat, though | |||
dalek | ecs: 51502a2 | (Elizabeth Mattijsen)++ | S04-control.pod: Powderize contend fossil |
21:17 | |
timotimo | m: say(my $s = "Sixteen characters.").substr(10) ~ $s.substr(*-10) | ||
camelia | rakudo-moar c9fc8a: OUTPUT«Sixteen characters.===SORRY!===Start of substr out of range. Is: 10, should be in 0..4» | ||
timotimo | m: say (my $s = "Sixteen characters.").substr(10) ~ $s.substr(*-10) | ||
camelia | rakudo-moar c9fc8a: OUTPUT«aracters.haracters.» | ||
masak | lizmat: ;) | ||
gtodd | timotimo: ok I have string objects ... errm not lists :-D | 21:18 | |
21:18
rindolf left
|
|||
gtodd | forgot | 21:18 | |
timotimo | m: say (my $s = "Sixteen characters.").substr(10) ~ $s.substr(10, *-10) | ||
camelia | rakudo-moar c9fc8a: OUTPUT«===SORRY!===Length argument to substr out of range. Is: -1, should be in 0..Inf; use *-1 if you want to index relative to the end» | ||
timotimo | gtodd: that's what .comb is for | ||
gtodd: .comb without arguments turns a string into a list of its characters | 21:25 | ||
lizmat | boarding's starting, see you on the other side of the pond& | 21:30 | |
21:30
lizmat left
21:33
denis_boyun left
21:34
gfldex left
21:36
kivutar left
21:37
nbrown joined
|
|||
masak | lizmat: safe flight! | 21:39 | |
21:41
nbrown left
22:14
pecastro joined
22:18
xubuntu joined,
xubuntu is now known as Guest17235
22:19
Guest17235 left
22:36
dmol joined
22:42
prevost left
|
|||
masak | 'night, #perl6 | 22:44 | |
timotimo | gnite masak! | 22:45 | |
looking forward to your further work on escape analysis :) | |||
22:53
dalek left,
dalek joined,
ChanServ sets mode: +v dalek
22:54
treehug88 left
23:28
thou left
23:31
kurahaupo_ left
23:37
hoverboard left
23:49
dmol left
|
|||
ventica2 | m: say "foo".comb; #checking it out... | 23:50 | |
camelia | rakudo-moar c00999: OUTPUT«f o o» | ||
ventica2 | nice | ||
timotimo | comb is, so to speak, the opposite of split | 23:51 | |
hm, not the opposite, i guess | |||
the congruent operator maybe? | |||
23:52
BenGoldberg joined,
xragnar_ joined,
xragnar is now known as Guest27915,
Guest27915 left,
xragnar_ is now known as xragnar
|
|||
gtodd | ventica2: when I use .comb I think of that song by Jim White "www.youtube.com/watch?v=nZEAhyib-lw" Combing my hair in a brand new style | 23:56 | |
timotimo | www.1-script.com/forums/perl/learni...39094-.htm - what just happened | 23:57 | |
ventica2 | :P | ||
m: say "foo".split(); | 23:58 | ||
camelia | rakudo-moar c00999: OUTPUT«Cannot call 'split'; none of these signatures match::(Cool: Regex $pat, Any $limit = { ... }, Any :all($all), *%_):(Cool: Cool $pat, Any $limit = { ... }, Any :all($all), *%_):(Str:D: Regex $pat, Any $limit = { ... }, Any :all($all), *%_):(Str:…» | ||
ventica2 | m: say "foo".split(//); | ||
camelia | rakudo-moar c00999: OUTPUT«===SORRY!=== Error while compiling /tmp/fAAlPNX2fUNull regex not allowedat /tmp/fAAlPNX2fU:1------> say "foo".split(//⏏);» | ||
ventica2 | hrm | ||
timotimo | m: say "foobar".split("") | ||
camelia | rakudo-moar c00999: OUTPUT«f o o b a r» | ||
BenGoldberg | m: say "foobar".comb | 23:59 | |
camelia | rakudo-moar c00999: OUTPUT«f o o b a r» | ||
BenGoldberg | m: say Mu.comb | ||
camelia | rakudo-moar c00999: OUTPUT«No such method 'comb' for invocant of type 'Mu' in block at /tmp/Bxg0ttJjf_:1» | ||
BenGoldberg | m: say Any.comb | ||
camelia | rakudo-moar c00999: OUTPUT«No such method 'comb' for invocant of type 'Any' in block at /tmp/YEy9nKOnAr:1» | ||
lue | timotimo: I think (based just on reading the article) the fancy word to describe comb and split would be "obversion" en.wikipedia.org/wiki/Obversion |