»ö« 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.
[Coke] .tell pmurias I'm just using a shotgun here. Feel Free to fix any of my stupids. (esp in re: the _I variants which I know are wrong) 00:02
yoleaux [Coke]: I'll pass your message to pmurias.
00:04 fridim__ left
dalek p: 72c955f | coke++ | docs/ops.markdown:
Convert from Int -> Any
00:11
p: 108c2d6 | coke++ | docs/ops.markdown:
Add ops from Numerics::Basics
p: 7388952 | coke++ | docs/nqp-opcode.txt:
Add pointer to new docs.

  (Remove ops already in new file)
00:12 Psyche^_ joined 00:15 Psyche^ left
BenGoldberg r: say join "", "", "a".."z" 00:16
camelia rakudo 223075: OUTPUT«abcdefghijklmnopqrstuvwxyz␤»
BenGoldberg r: say join "\c[combining low line]", "", "a".."z" 00:17
camelia rakudo 223075: OUTPUT«̲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␤»
BenGoldberg r: say join "\c[combining double low line]", "", "a".."z"
camelia rakudo 223075: OUTPUT«̳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␤»
BenGoldberg Quick question: do those three lines look like they're the same length (amount of screen width) as each other, to anyone?
00:17 krokite joined, krokite left, krokite joined
BenGoldberg This is an irc viewer / unicode display question rather than a perl question, I hope no one minds :) 00:18
Mouq BenGoldberg: Yes 00:20
The "z␤»" is at the same place in all three for me; monospaced font here, though. 00:21
BenGoldberg On mIRC, the all look like they're different lengths (even though I'm using Courier New font, which is supposed to be monospaced) 00:22
Mouq I think the font renderer counts 25 characters that take up space and so renders it like that
I'm in iTerm
BenGoldberg Thank's Mouq... next question: do the second and third lines look like underlined (and double underlined) a-z?
timotimo the z isn't underlined in any of the lines (for a good reason) 00:23
TimToady the logs appear off-by-1 on the underlining, at least under firefox
00:23 fridim__ joined
BenGoldberg D'oh, combining means combine with previous, doesn't it? 00:23
Mouq ... no, they're all collapsed into a single space for me.
timotimo why the « gets one is a mistery to me, though
Mouq Except z
TimToady oh, wait, that's what you printed 00:24
timotimo why the z doesn't get one makes sense.
(because join)
TimToady combiners are supposed to follow their combinee
Mouq timotimo: because of the ""
timotimo oh!
BenGoldberg r: say join "\c[combining low line]", "a".."z", ""
camelia rakudo 223075: OUTPUT«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 you did that!
sneaky :)
TimToady many of the combiners are actually wrong in my terminal 00:25
BenGoldberg r: say join "\c[combining double low line]", "a".."z", ""
camelia rakudo 223075: OUTPUT«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̳␤»
BenGoldberg Do those show up with the z underlined?
TimToady yes, and the NL after it :)
timotimo to me, yes (gnome-terminal)
TimToady but not the a
because gnome-terminal is buggy that way
timotimo huh? with my gnome-terminal, the a does get underlined 00:26
TimToady innersing
*sting
Mouq BenGoldberg: irclog.perlgeek.de/perl6/2013-09-18#i_7599829
In other words, yes
TimToady my firefix does it right but my gnome-terminal does it wrong 00:27
BenGoldberg r: say join "\c[synchronous idle]", "", "a".."z"
camelia rakudo 223075: OUTPUT«abcdefghijklmnopqrstuvwxyz␤»
timotimo what the hell is that o_O
oh, wait, perhaps this isn't even gnome-terminal
TimToady lucky you 00:28
timotimo nope, it totally is
Mouq r: say join "\c[symbol for synchronous idle]", "", "a".."z"
camelia rakudo 223075: OUTPUT«␖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␤»
Mouq :D
BenGoldberg r: say join "\c[information separator for one]", "", "a".."z"
camelia rakudo 223075: OUTPUT«===SORRY!=== Error while compiling /tmp/P7jok7tdkI␤Unrecognized character name information separator for one␤at /tmp/P7jok7tdkI:1␤------> y join "\c[information separator for one⏏]", "", "a".."z"␤»
BenGoldberg r: say join "\c[information separator one]", "", "a".."z"
camelia rakudo 223075: OUTPUT«abcdefghijklmnopqrstuvwxyz␤»
Mouq Oh \c[synchronous idle] is basically ^V 00:29
TimToady is running gt 3.6.1
timotimo: what is your version?
timotimo 3.6.1 as well 00:30
Mouq Doensn't X manage fonts? I thought…
timotimo though maybe mint (or the ubuntu it's based on) has some patches in there?
monaco 9 is the font on my end, perhaps that has something right and your font has something wrong?
TimToady is ubuntu, so maybe mint, font is just Monospace 17 00:33
Mouq en.wikipedia.org/wiki/FreeType 00:34
TimToady hmm, doesn't even provide Monaco, seemingfully
dalek p: 648a121 | coke++ | docs/ops.markdown:
add trigonometric codes
00:35
p: 783df30 | coke++ | docs/ (2 files):
Add Relational ins opcodes
TimToady lemme check from Mint
timotimo i installed monaco manually
Mouq I think you guys may be using FreeType, and if so, maybe different versino 00:36
Excuse my accent
TimToady buggy on mint too, with Monospace 10 00:38
timotimo hoelzro: when you said the github person followed through, did that refer to the pygments stuff and language guessing module?
colomon is pondering if he could implement ISO 10303-11 in NQP as part of his current contract $work 00:39
BenGoldberg r: for (((0..15) X (0..15)).pick(64)) -> $f, $b { print "", $f, ",", $b,"X" } 00:40
camelia rakudo 223075: OUTPUT«8,1X12,7X8,8X5,10X13,1X8,4X7,10X6,10X2,11X13,9X6,0X5,12X14,11X6,13X3,12X12,15X3,11X1,0X13,2X15,8X6,5X2,2X6,9X3,5X15,2X14,0X13,10X8,3X2,0X6,12X9,12X14,7X4,9X4,2X12,0X10,12X10,14X7,5X11,11X9,1X14,14X13,6X10,13X10,11X15…»
[Coke] GAH. 00:41
BenGoldberg r: for (((0..15) X (0..15)).pick(64)) -> $f, $b { print "X" } 00:43
camelia rakudo 223075: OUTPUT«XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX»
00:44 cognominal left
BenGoldberg I wonder if there's a way to tell perl that (for a particular task) particular sequences should be treated as zero width sequences, for the purpose of measuring a string 00:44
dalek p: 965a55e | coke++ | docs/ops.markdown:
add sections for more opcodes
00:45
Mouq colomon: sounds cool
colomon Mouq: it's a massive pain-in-the-neck I have to solve something. doing it in NQP would just be a way to make it more interesting.
s/something/somehow/ 00:46
Mouq [Coke]++ #NQP documentation
colomon: Sounds even cooler :) 00:47
[Coke] Mouq: just grunt work at the moment, you're welcome. (and welcome to join in! I can give you a list of short op names if you want to fill in a section. ;)
00:49 cognominal joined
Mouq Sure 00:49
'/msg me if you want 00:50
[Coke] new fun game: when asked for your name when waiting for a food order, give the name of someone on channel instead of yours. 00:51
Mouq
.oO( …And get the most out of that credit card you found at YAPC )
00:52
[Coke] (I hate giving out my name when they don't need it. :P) 00:53
geekosaur reminded of old acquaintance who used "N. Ritchie Kernighan" 01:00
01:02 benabik joined
BenGoldberg Hi, my name is dalek and I'd like to order a .... 01:04
Hi, my name is hugme and I'd like to order a double order of hugs :) 01:05
Mouq Hi, my name is dale- FLOOD ERROR 01:09
01:12 stevan__ joined 01:14 stevan_ left, FROGGS_ joined 01:18 FROGGS left 01:28 btyler joined 01:58 FROGGS_ left 02:00 btyler left 02:03 dalek left, dalek joined, ChanServ sets mode: +v dalek 02:04 benabik left 02:18 benabik joined, EvanTeitelman left
dalek p: 436f7a5 | Mouq++ | docs/ops.markdown:
Add Hash opcodes to ops.markdown
02:21
p: 165d8e5 | jimmy++ | docs/ops.markdown:
Merge pull request #131 from Mouq/master

Add Hash opcodes to ops.markdown
02:21 FROGGS joined 02:27 btyler joined 02:28 FROGGS left 02:34 raiph left
Mouq When one is speaking about an array, does one say "…do this to array @a at position $i…"? 02:55
02:56 juiko left 02:59 panchiniak_ joined 03:05 cognominal left, cognominal joined 03:06 preflex_ joined, ChanServ sets mode: +v preflex_ 03:08 preflex left, preflex_ is now known as preflex 03:11 bruges_ joined
[Coke] that seems reasonble. 03:12
03:12 bonsaikitten joined 03:13 kshannon joined, xenoterracide joined, JimmyZ_ joined, prammer_ joined, araujo left, DrEeevil left, salv01 left, bruges left, mattp_ left, masak left, noxgirl left, kshannon_ left 03:14 autumn joined, mattp_ joined 03:18 araujo_ joined, araujo_ left, masak joined, Util joined 03:22 stevan_ joined 03:23 stevan_ left, stevan_ joined 03:25 stevan__ left, stevan_ left 03:26 stevan_ joined 03:27 araujo joined 03:28 salv0 joined
dalek p: f6e2b7b | Mouq++ | docs/ops.markdown:
Add Array opcodes to ops.markdown. nqp::splice not documented

Someone who knows what they're talking about should document splice.
03:38
p: 5b1a452 | Mouq++ | docs/ops.markdown:
[ops.markdown] s/$b/$v/
p: 3c4f80a | Mouq++ | docs/nqp-opcode.txt:
Remove ops documented from nqp-opcodes.txt
p: 677b1f1 | Mouq++ | docs/ops.markdown:
[ops.markdown] (int %hash…) etc doesn't make sense
p: 1189dd6 | jimmy++ | docs/ (2 files):
Merge pull request #132 from Mouq/master

   Add Array opcodes to ops.markdown
Mouq Thanks JimmyZ 03:39
Mouq → bed
JimmyZ_ good night 03:40
03:40 JimmyZ_ is now known as JimmyZ 03:41 panchiniak_ left 03:45 Mouq left 04:02 BenGoldberg left 04:27 fridim__ left 04:44 slavik left 04:55 btyler left 04:58 xenoterracide left, slavik joined 05:14 FROGGS joined 05:18 FROGGS left
moritz good morning 05:42
I have given Mouq++ an NQP commit bit
JimmyZ morning 05:45
05:52 denis_boyun joined 05:56 denis_boyun__ joined 05:57 denis_boyun left 06:28 pernatiy joined 06:29 kaleem joined 06:33 FROGGS joined 06:39 slavik left 06:40 FROGGS left, slavik joined 06:41 slavik left 06:51 slavik joined, FROGGS joined
FROGGS o/ 06:54
07:02 woolfy joined, pernatiy left 07:08 rindolf joined 07:09 zakharyas joined 07:10 dayangkun joined 07:12 domidumont joined 07:19 sqirrel joined
masak morning, #perl6 07:24
07:26 GlitchMr left
moritz \o masak, FROGGS, * 07:27
FROGGS morning :o)
07:28 GlitchMr joined 07:37 jlaire joined, domidumont left 07:38 domidumont joined 07:40 jlaire left
nwc10 wonders how scary jnthn's alarm clock is today 07:40
07:41 denis_boyun__ left 07:47 mberends joined 07:54 dmol joined 08:01 frettled joined 08:05 yeltzooo joined 08:16 sqirrel left 08:20 connectanot joined 08:21 connectanot left 08:22 yeltzooo6 left 08:25 dmol left
hoelzro timotimo: yes 08:34
(also, good morning #perl6)
08:34 SamuraiJack joined 08:35 trnh joined 08:39 bruges_ left 08:43 GlitchMr left
masak nwc10: not so scary, it would seem :) 08:45
08:46 GlitchMr joined
nwc10 it's still morning. There's hope yet 08:47
jnthn morning o/ 08:48
Didn't set alarm today :)
Wanted to get lots of sleep, 'cus I know I gotta be at the airport by 7am tomorrow... :) 08:49
nwc10 7am. Yuk
hoelzro can I haz rakudo commit bit? I'm rolling that failing case into a test file for the repository 08:53
hmm
tadzik hoelzro: did you send the CLA?
hoelzro maybe I should check roast for an analogous test first, though...
moritz hoelzro: we don't hand out rakudo commit bits as liberally as for other repos
hoelzro ah
moritz hoelzro: you need to sign the CLA, and send in a few good patches
until then you have to send old-fashioned patches or pull requests 08:54
tadzik I believe hoelzro's got the second point covered
hoelzro oh, ok
it's not imperative
whoa 08:55
I just typed '$?VM' into rakudo-jvm (the REPL) and it freaked out
tadzik :)
I believe $*VM works
08:55 GlitchMr left
hoelzro try $?VM; see if you see what I saw 08:55
because it's crazy 08:56
tadzik but here's exception
so throw me maybe
I'm sorry
hoelzro hahaha
masak tadzik++ 08:57
08:57 dakkar joined 09:02 GlitchMr joined 09:04 daxim joined 09:09 GlitchMr left 09:10 GlitchMr joined 09:12 huf joined 09:20 pernatiy joined
masak rn: say "1a23b45c6" ~~ / [ \d <( <[abc]> )> \d ]+ / 09:21
camelia rakudo 223075: OUTPUT«「c」␤␤»
..niecza v24-95-ga6d4c5f: OUTPUT«「a」␤␤»
masak I would like to make a case for the correct reply here being 「abc」.
thoughts?
jnthn :/
Not sure how what'd work 09:22
*that'd
masak the fact that Rakudo and Niecza disagree is interesting on its own.
OK, let's start with the conservative option, then: the above is disallowed.
or, more generally, <( )> inside a quantifier is disallowed. 09:23
jnthn Thing is, quantified things typically result in an array
But here we're talking about the top-level Match...
09:23 GlitchMr left
masak yeah. 09:23
I'm pretty sure there is a wonderful, correct answer. but I don't quite see it now.
jnthn Which is why I'm not sure what to do...
masak anyway, OK if I submit rakudobug for not following the conservative option? 09:24
09:24 pmurias joined
dalek kudo-js: b55521f | (Pawel Murias)++ | / (11 files):
Make nqp-compiler.js pass a bunch of tests (using a cross compiled setting).

Add NQP::Compiler, HLL::Compiler to nqp-compiler.nqp. Support negative indexes in array lookup e.g. @foo[-1]. Implement nqp::islt_s. Implement nqp::radix. Implement nqp::ctxlexpad. Implement nqp::ctxouter. Stub nqp::lexprim. Implement iterating over contexts. Set WHO for knowhow STables. Hashes numify to their number of elements. Hack to allow numfixing nulls. Make nqp::unshift work on type objects. Implement nqp::preinc and nqp::predec. Disable broken static vars inlining.
09:24
09:25 GlitchMr joined
moritz IMHO we should forbid <( and )> inside a quantifier 09:25
jnthn masak: Maybe a spec ticket, if the spec doesn't alrady say (no, I didn't check...)
masak: Would prefer we file Rakudo bugs based on spec'd stuff, so spec ticket feels better to track the issue, then file a Rakudo one when the spec one is resolved. 09:26
masak jnthn: gotcha. filing. 09:28
jnthn I just looked through all mentions of <( in S05 and don't see any wording on it being inside a quantified thingy.
masak *nod*
moritz or more general 09:29
repeated use of <(
nr: say 'abc' ~~ /a<(b<(c/
camelia niecza v24-95-ga6d4c5f: OUTPUT«「bc」␤␤»
..rakudo 223075: OUTPUT«「c」␤␤»
moritz same problem
niezca takes the first one, rakudo the last one 09:30
FROGGS nr: say 'abc' ~~ /a)>b<(c/
camelia rakudo 223075: OUTPUT«#<failed match>␤»
..niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: System.ArgumentOutOfRangeException: Cannot be negative.␤Parameter name: length␤ at System.String.Substring (Int32 startIndex, Int32 length) [0x00000] in <filename unknown>:0 ␤ at Niecza.CtxMatchStr.Get (Niecza.Variable obj) [0x00…»
09:31 fhelmberger joined
masak github.com/perl6/specs/issues/60 09:33
09:33 pernatiy left
moritz masak++ 09:33
09:36 SamuraiJack_ joined, fhelmberger_ joined
masak rn: say "abc\n" ~~ /abc\n^^/ # why doesn't this match? 09:37
camelia rakudo 223075, niecza v24-95-ga6d4c5f: OUTPUT«Nil␤»
09:37 fhelmberger left
moritz rn: say "abc\n\n" ~~ /abc\n^^/ 09:37
FROGGS ha, you included my rediculous example *g*
camelia rakudo 223075, niecza v24-95-ga6d4c5f: OUTPUT«「abc␤」␤␤»
moritz masak: because there is neither a line after the \n, nor the start of the string
masak isn't the position at the end of my string the beginning of an (empty) line? 09:38
09:38 SamuraiJack left
moritz masak: an empty line would be "\n", not "" 09:39
p5eval: "abc\n" =~ /abc\n^/m
p5eval moritz: No output
masak moritz: you're saying lines are \n-terminated, not \n-separated?
...and whatever comes after the last \n is *not a line*?
FROGGS well, there is nothing 09:40
moritz hm
p5eval: "abc\na" =~ /abc\n^/m
p5eval moritz: 1
moritz huh
erm
I call this inconsistent
Perl 6 is consistent with Perl 5 here
and both are inconsistent in themselves
masak fwiw, I was parsing a file when all this struck me. 09:41
currently trying to make the grammar work against all the cases.
will need to write tests for the grammar. :)
nwc10 I don't think that you should assume that Perl 5 is right, or good 09:42
09:42 dayangkun left, cognominal left
nwc10 just because it's been paying for the party for the past decade or two 09:42
09:42 cognominal__ joined
moritz sure 09:43
masak well, of course.
moritz just wanted to check, because often p5 regexes behavior *is* well thought-out
masak aye.
here's my mental model, fwiw: a "line" is any maximal run of characters that don't contain a logical \n. thus ^^ at the end of a string that finishes with a "\n", should match. 09:44
moritz agreed 09:45
masak in defense of this interpretation, I'd also like to point out that there's absoltely nothing that says a (text) file has to end in a "\n". 09:46
(and thus that final "\n" doesn't so much end the previous line, as it begins a new one)
moritz there is something
two decades of UNIX tradition 09:47
(not saying that's valid, just that it exists)
09:47 bruges joined
masak indeed -- not contesting that there is tradition. 09:47
but I've also seen plenty of files not containing that final newline. 09:48
btw, all this reminds me about the special case put into Perl 5's &split.
feels like the same issue twice in slightly different guise.
moritz "the" special case? you mean there's just one? :-) 09:49
masak $ perl -E 'say for split /\|/, "a|b|c|"' 09:50
a
b
c
that one.
the one that says "the last delimited doesn't count if there's nothing after it". 09:51
delimiter*
moritz trailing empty elements are removed from split's output
unless you add a -1 as limit
masak that's what I mean.
it doesn't happen for leading empty elements.
anyway, taking the delimiter as \n, we basically have our current case.
rn: .say for "a|b|".split('|') 09:56
camelia rakudo 223075, niecza v24-95-ga6d4c5f: OUTPUT«a␤b␤␤»
masak Perl 6 does *not* have the special case.
shouldn't for newlines either. 09:57
...for newlines in grammars, I mean.
10:00 fhelmberger_ left, fhelmberger joined
FROGGS masak: you have convinced me fwiw 10:00
masak submits rakudobug
10:04 risou_awy is now known as risou 10:07 risou is now known as risou_awy
masak .oO( that brief moment when you look at the last line of PgUp'd backlog, and go "but moritz, we talked about this already? why bring it up again!?" ) :P 10:07
s/\?/./ 10:08
moritz why do we have a file src/core/Any2.pm
jnthn hm, I thought we only had that in a branch...
moritz ah, it seems to be a pseudo-Any stuff 10:09
jnthn: a branch named nom :-)
jnthn Part of the postcircumfix refactors, anyways
ah, I thought lizmat was keeping it more segregated than that...
Anyway, it's temporary.
masak & 10:10
10:15 risou_awy is now known as risou, fhelmberger_ joined 10:16 denis_boyun joined
hoelzro what are the roast/integration tests for? 10:17
just general failures that we find and and test for regressions?
10:18 fhelmberger left
jnthn hoelzro: Tests that exercise multiple features together 10:19
hoelzro ok
I'm just wondering where this belongs: gist.github.com/hoelzro/6607190
hoelzro filed rakudobug 10:28
we'll sort it out later
10:37 domidumont left
dalek kudo-js: aa5c92c | (Pawel Murias)++ | runtime.js:
Fix nqp::isne_s.

This was causing a bug in the precedence parses in nqp-on-js.
10:39
10:43 FROGGS left 10:44 risou is now known as risou_awy 10:49 rindolf left 10:50 rindolf joined, ssutch left 10:55 GlitchMr left 10:58 GlitchMr joined 11:10 GlitchMr left, GlitchMr joined 11:15 GlitchMr left 11:17 denis_boyun left 11:18 GlitchMr joined 11:24 fhelmberger_ left 11:31 pernatiy joined 11:33 GlitchMr left 11:34 denis_boyun joined, GlitchMr joined 11:37 ksh left
masak waves from a train! 11:38
moritz trains from a wave
11:38 daniel-s left
tadzik traves from a wain 11:39
moritz .. in vain!
masak .oO( always in this vein ) 11:42
11:49 domidumont joined
pmurias jnthn: I don't fully undestand nqp::freshcoderef, it seems to clone the code ref and it's static how does the latter change? 11:54
yoleaux 00:02Z <[Coke]> pmurias: I'm just using a shotgun here. Feel Free to fix any of my stupids. (esp in re: the _I variants which I know are wrong)
jnthn pmurias: iirc, iIt's used to make sure the serializer knows the diference between different coderefs rather than them all being closure clones of the thunk on NQP::World or Perl6::World. 11:59
11:59 jnap joined 12:06 iSlug joined, iSlug left 12:07 ksh joined, FROGGS joined 12:09 denis_boyun left 12:11 alester left, PZt left 12:12 rindolf left, PZt joined, rindolf joined 12:16 PZt left 12:17 PZt joined 12:19 iSlug joined 12:24 GlitchMr left 12:26 GlitchMr joined, isBEKaml joined 12:30 GlitchMr left, isBEKaml left 12:32 GlitchMr joined 12:35 isBEKaml joined 12:37 denis_boyun joined 12:42 isBEKaml left 12:48 fridim__ joined 12:50 rindolf left 12:51 rindolf joined, kbaker joined 12:52 SamuraiJack_ left 12:54 fridim__ left 12:56 iSlug left 13:00 huf left, huf joined 13:02 prevost joined 13:03 lizmat joined
mberends o/ lizmat 13:11
lizmat mberends o/
moritz \o mberends, long time no see 13:12
mberends aye, nice to see you again :-)
lizmat too bad the two of you didn't meet at the RaNIW :-( 13:13
nwc10 have to have another one. Obviously.
lizmat nwc10: will you attend then ? 13:14
nwc10 probably not. still.
lizmat
.oO( one reason less to organize another one)
;-) 13:15
13:16 ajr joined, ajr is now known as Guest70625, Guest70625 is now known as ajr_ 13:28 kaleem left 13:33 prevost left 13:36 flussence left, flussence joined
lizmat moritz, jnthn: re: irclog.perlgeek.de/perl6/2013-09-18#i_7601349 it's already gone in my repo, but waiting to commit until after the release 13:37
lizmat caught up on yesterdays/todays backlog and wonders whether she should look at the past weekend's backlog 13:38
moritz lizmat: would you mind pushing it into a branch? 13:39
lizmat I guess I could
without the upcoming release, I would have committed it already
moritz oh right, tomorrow is rakudoday! 13:43
13:45 prevost joined
dalek kudo/method2sub: 031ff96 | (Elizabeth Mattijsen)++ | src/Perl6/ (2 files):
Change op generation for [] and {} from method to sub
13:46
kudo/method2sub: 1cd2597 | (Elizabeth Mattijsen)++ | / (4 files):
Remove method [] and {} handling, merge Any2 into Any again

Still needs implementation of []:exists and {}:delete
13:47 denis_boyun left, integral_ is now known as integral
moritz lizmat++ 13:47
lizmat please also note that when this gets merged, we will need to implement lift 13:49
because classes will not be able to simply override [] and {} no more
*any more
jnthn We need to implement lift at some point anyway. :)
I highly doubt this case is any worse than the operator case, though. 13:50
Mostly I've seen people just override the single element case
13:51 xenoterracide joined 13:53 ksh left 13:57 lizmat left
pmurias which unicode version does nqp supprt (for codepointfromname) 13:59
13:59 lizmat joined
timotimo it relies on the underlying backend i believe 14:01
jnthn Probably varies by backend.
timotimo so on parrot the icu version you linked against, moarvm has the super optimized self-made database thingie, JVM has whatever JVM has 14:02
jnthn Or with Parrot, even by which version of ICU is used, I guess.
The MoarVM one gets all its data from the standard UCD, I think at 6.0 was used to generate the current .c/.h etc. 14:04
14:07 jnap left
colomon lift! lift! lift! 14:08
timotimo is that like "chug! chug! chug!"? 14:09
moritz lift will totally trash inlining and other compile time optimizations
timotimo yeah, there'll be much to be done with JITs i fear :| 14:10
14:10 grondilu joined
moritz and the problem is that we need to do use lift virtually everywhere where operators are used in the setting 14:10
which is, like, everywhere
jnthn Wait, what?
If you inline something that lifts, you throw away the lift.
And job done.
timotimo oh, huh
jnthn 'cus you're already in the caller's lexical scope. 14:11
moritz category error
just to make sure we're talking about the same thing
sub do_something($a, $b) { lift &infix:<+>; return $a + $b } 14:12
that uses the caller's &infix:<+>, right?
let's rather use
sub do_something(Int $a, Int $b) { lift &infix:<+>; return $a + $b }
so the optimizer inlines the infix:<+>(Int, Int), because it knows that $a and $b are both Int 14:13
and the caller has an infix:<+> for subtypes of Int
and then the lift has no effect anymore
WAT?
or did I misunderstand lift? 14:14
commute&
14:14 ajr_ left
timotimo i think what jnthn means with "inline something that lifts" and "throwing away the lift" refers to inlining that do_something into the caller 14:15
jnthn timotimo: yes 14:16
14:16 ajr joined
jnthn Inlining a thing with a lifted op is a problem, I agree. 14:16
14:16 ajr is now known as Guest68027 14:17 ksh joined
jnthn I was thinking about inlining of things that inside of them use lift. 14:17
14:17 btyler joined, Guest68027 is now known as ajr_ 14:20 alester joined
pmurias shouldn't it be sub do_something($a,$b) { return lift $a + $b }? 14:21
as "lift &infix:<+>;" is a noop
timotimo ah, that's how it's used, yes 14:22
pmurias is it allowed to use lift outside of a multi? 14:23
timotimo why wouldn't it be?
oh 14:24
lift allows access to lexicals without requiring variables to be defined "is dynamic"?
pmurias yes
timotimo there goes my lexical-to-local transformation optimisation for rakudo.
pmurias that's what I thought while reading the lift spec ;) 14:25
dalek p: 42dde67 | jimmy++ | src/vm/parrot/ops/nqp.ops:
removed unused codes
14:26
p: 034ed97 | jonathan++ | src/vm/parrot/ops/nqp.ops:
Merge pull request #108 from zhuomingliang/master

removed dead code
pmurias timotimo: if you could detect lift usage you could salvadge the optimisation 14:27
dalek p: a67c607 | (Peter Rabbitson)++ | tools/lib/NQP/Configure.pm:
Saner git pull address

The http:// is more likely to work in limited environments, hence it will work for more people trying to compile with --gen-X
p: 9416e3b | (Peter Rabbitson)++ | src/NQP/Grammar.nqp:
Remove parasithic lookaheads

According to jnthn leftovers from when the LTM wasn't too smart
p: f9578fe | jonathan++ | / (2 files):
Merge pull request #128 from ribasushi/sanificationz

Some minor grammar nit (vers 2)
pmurias sanificationz++ 14:28
timotimo pmurias: but what if out of nowhere a new sub enters the picture and destroys everything! :(
jnthn pmurias: Didn't check the spec, but I'd hope it's only lifting calls, not variable access...
timotimo no, it lifts variable access, too
jnthn dammit 14:29
Well, we didn't implement that bit of spec yet anyways.
pmurias heh
jnthn I'll happily push for limiting it.
timotimo me, too :)
jnthn checks exactly what is said
timotimo perlcabal.org/syn/S04.html#The_lift...ent_prefix 14:30
oh, i misread!
14:30 fhelmberger joined
pmurias timotimo: what did you misread? 14:31
timotimo "these are taken at face value" 14:32
jnthn wonders exactly what this means:
Note that in each piece of lifted code there are references to
variables defined in the multi, such as C<$a>, C<$b>, and C<&f>.
These are taken at face value.
pmurias my understanding is that if you define something in the multi it takes precedence over the stuff from your callers lexical scope 14:33
jnthn I think it may only be talking about variables defined in the multi, not variables in general?
pmurias yes
if we defined a &infix:<+> in the multi it also would be taken at face value
jnthn Right 14:34
I'm not sure why lift should do anything about variables.
That is, I thought the point was entirely about operators.
timotimo i can't think of a good use case
pmurias aren't subroutines just variables with a fancy sigil
?
jnthn Sure.
timotimo i wouldn't call it sigil o_O
pmurias the & sigil
jnthn And contextuals are just variables with a * twigil, and attributes are just variables with a ! sigil 14:35
timotimo all subroutines have the & sigil
jnthn But we handle both of those very differently. :)
timotimo oh, i misread *again*
i thought you said "operators are subs with a fancy sigil"
pmurias yes, because they have a twigil, which causes strange effects
jnthn Anyway, we probably want to look at constraining lift... 14:36
If nothing else, I don't have to implement it in NQP. :)
So we can always do the lexical -> local optimization there :)
pmurias can lift be use in multi methods?
s/use/used/
jnthn Yeah. Which also raises interesting questions. :) 14:37
'cus if it's called via the proto then the proto's frame is on the stack.
But for the sub case auto-generated protos are inlined.
14:37 lichtkind joined
jnthn So "caller" varies :) 14:37
Anyway, we can see what TimToady thinks. It's possible the lift definition sucking in ordinary variables rather than just callable things isn't intended or is no longer desired 14:38
I spot one example also does Str::leg, which is almost certainly wrong nowadays :) 14:39
pmurias if lift is only used in multi subs and not multi methods then we could analyse it to an extent
lizmat pmurias: and multi subs is where they seem to be needed most atm 14:42
14:46 amkrankruleuen left, amkrankruleuen joined, amkrankruleuen left, amkrankruleuen joined 14:49 krokite left 14:57 jnap joined 14:58 grondilu left
TimToady is having trouble lifting his eyelids 14:59
timotimo chug some coffee? 15:00
TimToady you mean chug moar coffee
15:01 berekuk joined
dalek ecs: 710337e | (Elizabeth Mattijsen)++ | S32-setting-library/Containers.pod:
Sanitize @.delete|exists to define existence as being different from default
15:01
lizmat TimToady: just unlifted the meaning of @.exists and @.delete
can methods be "is export" , and if so, what does that mean ? 15:02
dalek kudo-js: 5192fbb | (Pawel Murias)++ | / (4 files):
Implement nqp::codepointfromname.
15:03 dmol joined
pmurias TimToady: could you clarify some things about lift? is it possible to use it from inside a multi method (as opposed to a multi sub), and from inside a sub? 15:04
jnthn lizmat: Yes, they are exported as if they were subs...
masak rn: class A { method foo is export { say "OH HAI" }; foo(A.new)
camelia niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===␤␤Unable to parse block at /tmp/bnlAwA_a3m line 1:␤------> class A {⏏ method foo is export { say "OH HAI" }; ␤Couldn't find final '}'; gave up at /tmp/bnlAwA_a3m line 1 (EOF):␤------> o is export { …»
..rakudo 223075: OUTPUT«===SORRY!=== Error while compiling /tmp/4J_02QaA2t␤Unable to parse expression in block; couldn't find final '}'␤at /tmp/4J_02QaA2t:1␤------> o is export { say "OH HAI" }; foo(A.new)⏏<EOL>␤ expecting any of:␤ postfi…»
masak rn: class A { method foo is export { say "OH HAI" } }; foo(A.new)
camelia rakudo 223075: OUTPUT«===SORRY!=== Error while compiling /tmp/G3LN7_vTzT␤Undeclared routine:␤ foo used at line 1␤␤» 15:05
..niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'foo' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1502 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 36) ␤ at /…»
masak er. I guess I have to import it too.
can that be done through p6eval? or do I need a .pm file?
jnthn rn: class A { method foo is export { say "OH HAI" } }; import A; foo(A.new)
camelia rakudo 223075: OUTPUT«OH HAI␤»
..niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===␤␤Action method statement_control:import not yet implemented at /tmp/p321B1ZZ6k line 1:␤------> o is export { say "OH HAI" } }; import A⏏; foo(A.new)␤␤Unhandled exception: Unable to resolve method statem…»
TimToady lizmat: S12:1383 talks about exporting methods
synopsebot Link: perlcabal.org/syn/S12.html#line_1383
pmurias TimToady: and are normal $ sigiled variables accesible through lift (without an is dynamic on them)
?
TimToady pmurias: not awake enough to think about lift yet 15:06
timotimo lifting ought to wake you up a bit :)
15:07 jnap left
masak TimToady: when you're awake enough, it'd be nice to get some kind of ruling (or weighing in) on github.com/perl6/specs/issues/60. 15:09
TimToady: also, why do we have S05:792 but not the special case in split from Perl 5? 15:11
synopsebot Link: perlcabal.org/syn/S05.html#line_792
15:11 jnap joined
lizmat and finally UPS delivers our Rakudo Perl 6 tuits with a full-color Camelia on them 15:12
moritz masak: because we don't use split in such cases, but comb
TimToady well, split(/^/) turned into lines() 15:13
timotimo today i'll be attending a perl mongers meeting \o/ 15:15
tadzik \o/ 15:16
moritz tadzik: have fun!
lizmat timotimo: Karlsruhe.pm
? 15:17
tadzik moritz: thanks! :)
timotimo indeed 15:18
(they are apparently not yet .compose'd)
lizmat :-) 15:19
timotimo but i'll be giving them perl community tuits
that ought to help
lizmat hehe
tadzik timotimo: if you see pari, please slap him from me :) 15:21
timotimo is that supposed to be a friendly slap, or more like a mafia type of slap? 15:22
tadzik more like "obtw, tadzik slaps you" 15:23
timotimo how do i know it's pari? 15:24
tadzik maybe not slap him literally ;)
hm
timotimo i will lexically slap him :)
15:27 mberends left
tadzik :) 15:27
15:29 skids joined
masak moritz: split and comb were two sides of the same coin, and which one to use depends on whether content or separator is easier to describe. 15:31
tadzik lizmat: wooah
pics?
(of tuits)
timotimo whoa, full-color?! i thought it would be b&w like all other tuits 15:32
pics please!
lizmat woolfy's working on pictures
woolfy Yeah yeah, hold your horses. I'm just our of bed and my feet are cold. :-) 15:33
timotimo beh, cold feet are the worst
masak .oO( cold sausage is the wurst ) 15:34
detrain & 15:35
15:35 fhelmberger left 15:41 mberends joined 15:46 prevost left
tadzik fun fact: in python, backtrace is spelled traceback 15:48
timotimo at least it's a simple to spot anagram 15:49
not something like "kellerabzug"
tadzik it's like their ",".join(list)
15:55 prevost joined
arnsholt Join being a method on Str in Python annoys me 15:59
Feels much more natural for it to be on lists
sjohnson how comes?
oh right.
daxim perl6: [0..9].reverse.join(",").say 16:00
camelia rakudo 223075, niecza v24-95-ga6d4c5f: OUTPUT«9,8,7,6,5,4,3,2,1,0␤»
daxim pugs: [0..9].reverse.join(",").say 16:01
camelia pugs: OUTPUT«9,8,7,6,5,4,3,2,1,0␤»
16:01 daxim left 16:03 Ulti left
arnsholt sjohnson: Yeah, it's mostly a Perl-ism 16:03
Heck, now that I think about it, it -is- join(',', @list) in Perl 5 16:04
TimToady P6 too, for endweight considerations 16:05
sjohnson not sure why PHP decided to change join/split to implode/explode respectively. 16:06
i have to use a visual mneumonic of stuff blowing up to remember it.
woolfy So you want to pictures of the Camelia Tuits? The ones that came in today?
Well, I just made a few. Now on my Flickr page.
www.flickr.com/photos/wendyga/sets/...619932186/
TimToady sjohnson: prior art from other languages, I believe
algol maybe 16:07
16:07 ajr_ left
sjohnson hmm, interesting they had that technology for some of the older languages. 16:07
benabik woolfy++
geekosaur implode/explode is lisp
arnsholt woolfy: Oh, cool! 16:08
geekosaur (maclisp at least)
timotimo that is beautiful.
arnsholt wants
TimToady obviously php is more like lisp than perl... :)
16:08 ajr joined
FROGGS sjohnson: implode/explode just take a string as delimiter instead of a regex, that is the difference 16:08
woolfy Want some of those Tuits? Meet me somewhere... :-)
16:08 ajr is now known as Guest3527
FROGGS sjohnson: and in php you have to put a regex into a string, so it makes sense to have some different sub for saying: "I want to split by a string" 16:09
sjohnson FROGGS: not to mention preg_split and the like...
a lot to remember!
FROGGS: i just keep forgetting which is which, implode, explode.. hence the visual mneumonic. 16:10
JimmyZ woolfy++ 16:11
TimToady asplode should do explode then return the bits in random order 16:12
16:15 Guest3527 is now known as ajr_
FROGGS sjohnson: true 16:18
16:19 Ulti joined, Ulti left
FROGGS and asplode should have another uncommon signature then 16:19
TimToady suspects it only really works on type Brain
FROGGS like: asplode(limit, delim, string) or so
benabik limit.asplode(string, delim) 16:20
TimToady there is no limit on asploding branes
16:20 Ulti joined
TimToady they always asplode completely 16:20
PerlJam I find it really weird that I was in a meeting a few minutes ago talking about implode/explode/asplode and now when I look on IRC, you guys were talking about them too 16:22
FROGGS we were all there O.o 16:23
mberends woolfy++: very nice :-) 16:26
Ulti does .asplode break things into a byte array?
JimmyZ It's a coincidence
mberends some MoarVM hackers might find this C macro cross reference useful: gist.github.com/mberends/6606401 16:28
FROGGS woolfy: nice!!
mberends++ 16:29
benabik mberends++
PerlJam mberends: is that document the start of moarguts? :)
mberends :) hopefully...
dalek kudo/nom: 20854f0 | (Elizabeth Mattijsen)++ | src/core/List.pm:
Simplify List.at_pos so that it doesn't refer to .exists anymore

This is needed because at_pos will be needed by .exists in the future
16:30
jnthn It...it will? 16:32
16:35 jnap left 16:37 denis_boyun joined
lizmat well, exists needs to determine whether the value is equal to the dafault 16:38
*default
if the index provided is in range and the self is DEFINITE 16:39
*or* we need a bit for each element in a list to check whether it exists
jnthn I thought we were gonna use nqp::null() as a magical value for that :) 16:40
lizmat tries to recall the discussion but fails 16:43
16:44 ssutch joined
lizmat r: my $a = nqp::null 16:44
camelia rakudo 223075: OUTPUT«Cannot assign a non-Perl 6 value to a Perl 6 container␤ in block at /tmp/5jEv0AVCxX:1␤␤»
16:48 dakkar left 16:49 prammer_ is now known as prammer
lizmat r: my @a=0..10; @a.delete(0); say @a.exists(0) # jnthn: exists/delete currently broken on [] 16:49
camelia rakudo 223075: OUTPUT«True␤»
lizmat r: my @a=0..10; say @a.elems; @a.delete(10); say @a.elems; say @a.exists(10) # jnthn: only time exists/delete works 16:50
camelia rakudo 223075: OUTPUT«11␤10␤False␤»
TimToady suspects that existence is a more basic concept than defaultness, but maybe that's because he is not a Platonist 16:51
16:51 trnh left
lizmat r: my @a is default(42); say @a[1000] 16:52
camelia rakudo 223075: OUTPUT«42␤»
lizmat does @a[1000] exist or not? 16:53
TimToady no
benabik It's not unusual to say that if @a[1] exists, then @a[0] also exists. 16:54
TimToady r: my @a is default(42); @a[582] = 42; say @a[582]; # but this does
camelia rakudo 223075: OUTPUT«42␤»
16:54 zakharyas left
jnthn Right, so it's not just default value 16:54
lizmat: not =, but :=
TimToady inverting those implies that it's impossible to set a value to the default without deleting it 16:55
jnthn aye
TimToady but those are specialized semantics for KeyHashes
we don't want to inflict those semantics on every Array/Hash 16:56
16:56 denis_boyun left, pernatiy left 16:57 denis_boyun joined
lizmat on Hashes, we don't need to 16:57
because we can check for the existence of the key
but in Arrays, how do we check for existence of the index?
just 0 .. @array.end ? 16:58
TimToady by whether the slot is null or a pointer to something
jnthn lizmat: $idx < nqp::elems($!storage) && !nqp::isnull(nqp::atpos($!storage, $idx)) or so
In fact, you can skip the first check
As it's done inside the repr 16:59
lizmat ok, will try that
jnthn And delete should nqp::bindpos($!storage, $idx-to-delete, nqp::null()) or so
And I guess then shorten if we delete at the end.
lizmat ok
jnthn nqp::pop($!storage) while $!storage && nqp::isnull(nqp::atpos($!storage, nqp::elems($!storage) - 1)); # or so 17:00
dalek kudo/nom: c2f7f74 | (Elizabeth Mattijsen)++ | src/core/List.pm:
This approach was the wrong way :-) Nothing like commit driven discussion :-)

This reverts commit 20854f0bf9f60215df876405bcc81e6d870cc832.
17:01
17:03 krokite joined
TimToady we've done remarkably well at keeping the flaming egos out of Perl 6 development :) 17:04
well, except for mine... :)
woolfy lizmat is listening to www.youtube.com/watch?v=2rjbtsX7twc and says "cool" (ok, nothing to do with P6) 17:06
diakopter some peoples' egos overflow and wraparound
PerlJam woolfy: heh! 17:08
diakopter Infinities will make you cry
Kiss your fields goodbye 17:09
woolfy I am a bit sorry (hehe, not really) for taking away so many minutes of productivity from Perl 6 heroes...
17:11 pmurias left 17:13 jnap joined 17:15 SamuraiJack_ joined 17:19 SamuraiJack__ joined 17:21 SamuraiJack_ left 17:22 kaleem joined
lizmat jnthn: seems the "$idx < nqp::elems($!storage)" is needed: QRPA: index out of bounds 17:22
in method exists at src/gen/CORE.setting:7664
in t/spec/S02-types/array_extending.t
d^_^b so is rakudo all I need to start writing Perl6? 17:23
err rakudo star*
lizmat I would say yes to that
d^_^b I am also johnny5_ btw among other nicks 17:24
lizmat jnthn: apparently for negative indexes
d^_^b this is my vps account.
lizmat: k
lizmat jnthn: $ perl6 -e 'my @a; say @a.exists(-1)' 17:25
QRPA: index out of bounds
should this be fixed at the nqp::at_pos level ?
I guess it is :-)
17:26 spider-mario joined
jnthn lizmat: Hmm... For now I'd go with checking $idx >= 0 for now 17:28
lizmat yup, doing that right now 17:29
17:31 Rotwang joined 17:35 ajr_ left 17:37 kst`` is now known as kst
dalek ecs: 4128913 | larry++ | S05-regex.pod:
Explain semantics of <( )> inside []* and ()*

fixes #60
17:40
17:42 kaleem left
[Coke] (camelia tuits) squee! 17:42
no spectest diffs for a few days. Almost like everyone was busy or something. 17:43
lizmat also, upcoming release 17:44
[Coke] someone has that covered, ja?
lizmat is about to break some non-parakudo tests
[Coke] today's run is already started, go for it. ;)
[Coke] is in a much better mood at work today, and blames the workshop. 17:45
tadzik I was productive like crazy today
[Coke] \o/
lizmat good to hear!
this month's release is by masak, I'm told 17:46
[Coke] lizmat, woolfy: bought some kids books for my wife. didn't even thing of this at the time, but one of them is the very hungry caterpillar. Guess what he turns into at the end of the story!
lizmat :-)
tadzik VELOCIRAPTOR
woolfy [Coke]: a flying camel?
lizmat suggests Karlsruhe.pm as the name for the release
[Coke] tadzik: YOU NEED TO WRITE THAT BOOK NOW.
tadzik [Coke]: I'm writing it down on my book ideas list 17:47
lizmat seems appropriate with timotimo going to the first Karlsruhe meeting in ages
[Coke] woolfy: a schmetterling, of course. :)
woolfy d'oh
Papillon
[Coke] ok, back to dayjob. later, peeps. 17:48
TimToady masak: Perl 6 considers \n to be a line terminator, and text files ending without a final \n to be aberrant, but tolerated
pmichaud good afternoon, #perl6
tadzik hello pmichaud
TimToady so "abc\n" ~~ /abc\n^^/ will not match 17:49
diakopter pmichaud: good afternoon
lizmat pmichaud: o/
TimToady \o 17:50
lizmat wonders the message of a super hungry caterpillar in a kid's world with SuperSizeMe
*about
pmichaud how was the perl 6 course thingy this past weekend? 17:51
diakopter rn: say so "" ~~ /^^^^^^^/
camelia rakudo c2f7f7, niecza v24-95-ga6d4c5f: OUTPUT«True␤»
TimToady yes, ^^ always matches at the start of the string
diakopter r: say so "" ~~ /^^^^^^^$$$$$$$^$^^^$^$^$^$$^^^^$$$$^^^$^$/ 17:52
camelia rakudo c2f7f7: OUTPUT«True␤»
TimToady ayup
lizmat pmichaud: the thingy went quite well
pmichaud: also check 6guts.wordpress.com/2013/09/17/mate...ls-course/
pmichaud checking!
oooh! course materials! 17:53
17:53 PZt left
TimToady huh, interestingly, echo -n "this" >foo; wc -l foo returns a line count of 0 17:58
anyway, \n termination is considered normative
diakopter echo -n "this" | wc -l 17:59
TimToady I see no reason to make a whole bunch of code return final null elements just because normative is not completely enforced (lookin' at you, emacs) 18:00
dalek rl6-roast-data: ef0d847 | coke++ | / (3 files):
today (automated commit)
18:02
TimToady this particular consistency looks kinda hobgoblin colored to me
lizmat hmmm… in a recent spec change, I changed [].delete from taking multiple params to a single parameter only 18:03
18:03 benabik left
TimToady doesn't care what .delete does, but :delete has to be able to return the whole slice 18:03
lizmat indeed
that was my thought as well 18:04
lizmat adjust spectest
18:04 benabik joined
TimToady doesn't even care whether .delete exists (or .exist deletes, for that matter :) 18:04
as internal methods, they should probably be spelled differently anyway 18:05
lizmat if they are truly internal, then maybe they shouldn't be documented in S32 ?
TimToady that's what I've always thought, but didn't push it before :delete was implemented 18:06
didn't push it after either, for that matter :) 18:07
18:07 panchiniak joined, PZt joined
lizmat r: my @a=^10; @a.delete(*-1); say @a # should .delete be smart enough to handle *-1 ? 18:09
camelia rakudo c2f7f7: OUTPUT«0 1 2 3 4 5 6 7 8␤»
TimToady why are you asking me about internal methods? :) 18:11
lizmat :-)
lizmat goes on with further changing spectests 18:12
pmichaud it looked to me like lizmat was asking rakudo :)
TimToady it's really neat that rakudo is smart enough to understand comments now :P
18:14 SamuraiJack__ left, mberends left
lizmat rakudo is really getting good at reading between the lines, siriously :-) 18:14
GlitchMr It would be nice if Rakudo would download the specification, and do exactly what it says. 18:15
(but that's impossible)
TimToady it's impossible for us too :)
I said from the very start that we were trying to do something impossible, and that we would fail, fsdo. :) 18:16
18:16 telex left
GlitchMr Perl 7 should support code golf, by allowing you to do everything with 0 bytes. 18:16
TimToady already possible with alternate settings 18:17
diakopter hah 18:18
18:18 telex joined
TimToady Perl 6 makes some impossible things merely hard, but a few of them it makes easy. :) 18:19
[Sno] moritz: I figured out the parrot build error reported Monday (parrot_version.pir installed separately without being in config_lib.pir) 18:22
moritz: it's because of parallel builds - avoid "make -jn" with n >= 2
FROGGS [Sno]: what was it?
ahh
good catch!
[Sno] but well, MoarVM is ready to be delivered before christmas :P 18:23
diakopter eh
[Sno] so I don't dig deeper and fix parrot
but wait for MoarVM
and flag lang/parrot for MAKE_JOBS_SAFE=no :)
moritz STEVE_JOBS_SAFE=no 18:24
[Sno] well, that's already been decided by cancer ;) 18:25
TimToady he's a lot safer than he used to be...
[Sno] but it fails securely on Darwin, SunOS and NetBSD
TimToady though that depends on whether the cult evolves into a religion 18:26
[Sno] well, I usually move around religions where ever I can 18:28
so I cannot argue there
TimToady hopes that Perl does not evolve into a religion after he is dead, or that if it does, he is not held responsible for it... :)
[Sno] so let's evolve it while you're alive 18:29
pmichaud I'm afk for a while again
TimToady well, that worked for L. Ron Hubbard, but I'm not sure I want to share a circle of hell with him. 18:30
[Sno] this is the main problem of famous people: they don't have a choice 18:31
their lambs do the choice - meh
hoelzro sweet 18:33
my Parrot allocation tracker works!
hmm 18:34
18:34 rindolf left
hoelzro of over 4 million allocations performed when compiling CORE.setting, over 2 million are Perl6::Grammar objects 18:34
tadzik ...Grammar? 18:35
that at least looks weird
hoelzro yeah, i was shocked too 18:36
lizmat hoelzro++
hoelzro hang on; I'll upload the results
arnsholt I think the cursor used to match will be a Perl6::Grammar
hoelzro that's what I figured
jnthn yes, it's Cursor objects 18:37
you allocate the grammar you're matching
arnsholt That works out to about 200 allocations of Perl6::Grammar per line of CORE.setting 18:38
hoelzro hoelz.ro/files/parrot-alloc-results.txt
arnsholt Don't think that's too shocking a result, given the complexity of the grammar
hoelzro how many Grammar objects need to be alive at a given time, I wonder? 18:39
I was thinking of having an object pool for commonly allocated objects
arnsholt O(maximum depth of the parser recursion) probably 18:40
18:41 mberends joined
arnsholt An object pool for Cursor objects might make sense, I think. jnthn would know 18:41
hoelzro waits for jnthn's response
diakopter A generic object pool for types detected high-churn would be nice too at the vm level 18:44
(Assuming we add the ability for user (byte)code to tell the VM it's ok to reuse a given object)
(when leaving a scope)
18:46 kbaker left 18:49 EvanTeitelman joined 18:55 btyler left
TimToady most cursors should probably be C structs with dynamic particulars stored in a simple linked list rather than a hash 18:56
since most such lists will be very short
but mostly moving everything we can into the struct itself 18:59
dalek kudo/nom: 6f86684 | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Properly implement internals [].exists|delete, according to new semi-spec
19:03
ast: bc14b79 | (Elizabeth Mattijsen)++ | S (4 files):
Fudge/Unfudge for latest [].exists|delete fixes
19:06
ast: fecf003 | (Elizabeth Mattijsen)++ | S (2 files):
Oops, some premature fixes slipped in
jnthn TimToady: Cursor is a P6opaque and doesn't have any kind of Hash inside of it at present, just an integer array for backtracking marks and a (lazily allocated) object array for cursors we capture... There's no hash until Match construction. 19:10
TimToady: position is stored as a native int in the Cursor, for example...
hoelzro jnthn: would it be possible to recycle cursor objects? 19:12
it seems like it would be a big win
jnthn hoelzro: Cursor objects generally follow the generational hypothesis: they either live for a long time 'cus they get attached into the overall parse result, or live for a very short time 'cus they fail. 19:13
hoelzro I figured
but for each creation, the VM needs to find a chunk of memory, and it's another object to clean up later
19:14 iSlug joined
jnthn The first of those should be decidedly cheap on a good VM :) 19:14
19:15 domidumont left
hoelzro yes 19:15
but considering what we have to work with =P
19:16 jnap left
benabik Well, as time goes there's always moar things to work with... 19:16
jnthn I think the biggest win is to look into making places that want to explicitly produce a fail cursor re-use a single one 19:17
masak TimToady++ # hobgoblin colored
nwc10 and maybe other VMs will be captured in Perl6's .net
masak TimToady: and yes, I agree.
nwc10 jnthn: effectively, make a fail cursor singleton? 19:18
jnthn For example, when a protoregex has no matching thing, it does a !cursor_start, which produces a new, failed cursor. But if we cache one in ParseShared I *think* we can get away with it.
nwc10: Yeah, something like that.
It *may* save a lot of 'em.
nwc10 quick, find a minion. You've got 15 now :-)
it doesn't sound like a terrible idea even if it only saves a few (thousand)
jnthn Well, it could save a lot 19:19
I mean, everywhere we call EXPR, at least the final attempt to find another infix will fail.
And !protoregex is an easy place to do this.
moritz wonders if anybody noticed that parrot didn't have a release yesterday 19:21
nwc10 I did.
jnthn The 120,584 QAST::Var objects feels like a fair few... 19:22
PerlJam moritz: does that mean that rakudo shouldn't have one either? ;)
jnthn As in, the ratio between QAST::Op and QAST::Var surprises me a bit
moritz PerlJam: tomorrow
19:22 trnh joined, trnh left, trnh joined, zwut00 joined
masak moritz: well, technically... :) 19:23
moritz: two days after the Parrot release.
PerlJam (it certainly means that it's time to change that bit in the release_guide that talks about how rakudo's release schedule is based on parrot's release schedule)
masak aye.
lizmat maybe Util has some more info ?
masak anyway, I'm perfectly willing to cut a release tomorrow no matter what the release_guide says.
:)
PerlJam hoelzro: is there a way to easily find out how long-lived those objects are on average? 19:24
hoelzro PerlJam: my next step is to find out when they're dealloc'd
mainly to find how many objects of each type are alive at one time
nwc10 I think the rakudo release happened on "time" even when parrot 5.0.0 was unfortunately late 19:25
lizmat hoelzro: on the way to Frankfurt, mberends was telling about measuring longevity of an object by number of bytes changed in the system between creation and garbage collect
PerlJam hoelzro: some measure of churn would be nice.
hoelzro lizmat: how would that measurement occur, though? brk()? malloc info?
lizmat maybe mberends has more pointers 19:26
lizmat was driving at 100+ miles / hour at the time :-)
hoelzro does a rimshot
get it? pointers? =P 19:27
lizmat wrecks her brain to thing of a pun that would be to the point
*think
hoelzro the problem with measuring deallocations vs allocations is that just because an object hasn't been free()'d yet doesn't mean it's still reachable 19:28
so for *really* reliable stuff, I'd probably have to invoke the GC on every call to nqp::create
it would (hopefully) result in some interesting data, though
jnthn hoelzro: You could instrument !cursor_start and !cursor_start_all to see where most cursors are created 19:29
hoelzro ooooh
that would be helpful =)
jnthn hoelzro: You could do similar for !cursor_pass to see how many of those pass. 19:30
So we know where the common failure paths are.
hoelzro cursors seem to be the big culprit here
mhmm
jnthn Well, they're numerous, we can say that match.
uh, much
:)
nwc10 fingers in autopun mode?
jnthn goes back to being sort-of-around...
nwc10 get packing! 19:31
PerlJam instrumenting !curpos_pass could tell you how much of a win that singleton fail-cursor will be 19:32
er, !cursor_pass even
19:32 jeffreykegler joined
dalek kudo/method2sub: 23e9d51 | (Elizabeth Mattijsen)++ | / (7 files):
Move sub [] and sub {} to separate files for easier maintenance
19:32
19:33 prevost left
nwc10 [Coke]: you bought a German language copy of The Very Hungry Caterpilar? 19:36
lizmat r: my %h=a=>1; say %h{}:delete; say %h # another bug now exposed by moving to sub {} 19:40
camelia rakudo 6f8668: OUTPUT«("a" => 1).hash␤("a" => 1).hash␤»
19:40 ksh left
d^_^b So one thing that I want to do consistantly is produce executables of my application. Right now on windows I am having to use cava packager. I am able to produce an exe natively in P6? 19:40
well I don't want to do it per say, but it is easier to manage an exe vs a Perl installation on multiple machines. 19:41
19:42 ksh joined
FROGGS d^_^b: I think it is not yet available, but hopefully it is not impossible 19:42
you could make it use the sfx-hack for example
d^_^b huh? 19:43
self-extracting? 19:44
19:44 jnap joined
FROGGS I packed a Perl 5 game once (or twice), using a self extracting archive which runs the perl exe with the right command args to invoke the game 19:45
there might be a nicer way (like perl5's staticperl) but this would be a lot more work I suppose
d^_^b cava works and does that. just its a hassle if the exe does work I have to go and add the dep that it missed when packaging. 19:46
FROGGS yeah
19:47 thou left
timotimo lizmat: sadly, there were only 3 people in karlsruhe.pm this time :( (including me) 19:49
lizmat it's a start 19:50
Amsterdam.pm had meetings with fewer people in the beginning :-)
hoelzro sweet, the POD is building 19:56
hoelzro laughs maniacally
FROGGS *g*
20:00 iSlug left
lue hello world o/ 20:03
hoelzro ahoy lue
lizmat lue o/ 20:06
timotimo lizmat: it's said there's either ~14 people or ~2 ;) 20:08
20:08 pernatiy joined, berekuk left
timotimo hoelzro: good work so far! :) 20:11
hoelzro thanks!
20:11 berekuk joined 20:16 iSlug joined 20:17 flussence left, flussence joined 20:21 flussence left, flussence joined, spider-mario left 20:22 spider-mario joined 20:27 ajr joined, ajr is now known as Guest96139 20:28 Guest96139 is now known as ajr_, odoacre left, berekuk left, stevan_ left 20:31 berekuk joined 20:35 jeffreykegler left
hoelzro there's no DESTROY method in Perl 6, is there? 20:42
jnthn In the spec, yes. In Rakudo, no.
hoelzro I'd like to try out an object pool for cursors, but I'm not sure how I'm going to mark them as "free"
ah
jnthn Object pool sounds fraught.
hoelzro yeah 20:43
timotimo wouldn't you like to try a constant "failure" cursor first?
jnthn Did you try the singleton fail cursor thing I suggested?
hoelzro I'd probably have to actually return cursors to the pool from the outside
not yet
jnthn That's actually sane and reasonable-about.
timotimo or at least analyze how often, in relation, failure cursors are made
hoelzro I'm still wrapping my head around Cursor.nqp =/
and I'm building the Perl6 docs
which is taking 80% of my memory =S
diakopter I would guess that it's not the allocation or gc of all the objects that takes the most time, but the copying/initializing of their fields 20:44
jnthn Well, we don't know anything much about time either :)
We just know allocation counts.
hoelzro yeah
I'm just going on a hunch
diakopter my point is that even with a pool, whether created by the qast compiler or by the vm, I don't think it'd remove the main cost 20:45
20:45 mberends left
hoelzro that would be interesting to test 20:46
hoelzro has to figure out how to dump some data on program exit in NQP
diakopter if it's just normal exit, have the qast compiler wrap the main
error exit, much harder I guess 20:47
hoelzro ah, good point
normal exit should be fine
timotimo i suggest just streaming it out to stderr during run and collect the pieces externally
hoelzro oh yeah
that's pretty much what I did for the alloc counts =/
timotimo that's failsafe
yeah, so what. this is a one-off as far as i'm concerned ;) 20:48
hoelzro indeed
it's just some simple instrumentation
I thought someone told me that Parrot has some sort of profiling of how long each opcode takes in a program?
do we have any data on that? 20:49
that would probably shed some light on time spent allocating/binding attrs/etc 20:50
diakopter doesn't know... a different runcore or something?
timotimo i ran rakudo through perf once 20:51
i think it was mostly allocating stuff or something?
20:52 cjwelborn joined
hoelzro I'll try that 20:54
cjwelborn I was just reading "Masterminds of Programming" and the creator of Perl was talking about Perl6, it sounds cool. Is Perl6 code going to be backward-compatible with Perl5?
timotimo no, but there will be interop. 20:55
FROGGS cjwelborn: so one day you might be able to load Perl5 modules and run you Perl5 code inlined...
like: use FooBar:from<Perl5>; 20:56
timotimo i don't know the status of (or even how to use) blizkost
cjwelborn Perl5 came with Ubuntu on my machine, i guess because they use perl scripts for some of their own stuff. Is it possible for me to install a copy of Perl6 side-by-side with Perl5?
timotimo yes, they will not conflict
cjwelborn awesome, thank you.
masak cjwelborn: Perl 6 is pretty cool. however, it has to compete with not just Perl 5 (which Perl, in its time, didn't), but all the other nice and successful dynamic languages that have blossomed since. 20:57
diakopter (and static)
masak which is not to say it isn't awesome -- it is.
cjwelborn masak: true, i'm actually a Python programmer (among a few other things) myself.
diakopter (and all other orientations)
timotimo ha! another one! ;)
i came to perl6 from python as well
masak it's just that it's awesome against a backdrop of not-too-bad.
I've been dabbling in Python lately :)
jnap cjwelborn: just to let you know, if you do end up playing with Perl5 as well, I'd recommend side loading it with a tool like perlbrew, rather than use the Perl that came with ubuntu. System Perls sometimes get upgraded or changed from under you and its annoying 21:00
cjwelborn good to know, ::looking up perlbrew:: 21:01
21:02 skids left 21:04 dalek left 21:05 dalek joined, ChanServ sets mode: +v dalek
tadzik I recommend plenv if perlbrew doesn't work for you 21:05
(perlbrew is a little quirky) 21:06
timotimo tadzik: did you listen to hellsongs - paranoid? it's pretty beautiful 21:07
tadzik timotimo: yeah, it's nice :) 21:12
I've listened to everything they published. On spotify, of course, legally, of course
21:13 spider-mario left
tadzik it's nice to listen to it once or twice, but gets a bit tiring/boring after a while, imho 21:13
timotimo sure 21:15
jnthn Early flight...'night, #perl6 21:16
tadzik like all lounge coverers, I'd say
good knight jnthn
hoelzro night jnthn
tadzik but Hellsongs is one of the more interesting
21:17 donaldh joined
timotimo richard cheese is hard to top; the amount of showmanship put on top is quite something ;) 21:17
tadzik oh yes :) 21:18
one of the few performers from whom I prefer "live" recordings
timotimo gaaaah 21:20
21:20 lichtkind left 21:21 denis_boyun left
tadzik hm? 21:22
timotimo i'm still struggling to create the compile-time switch between bindattr_i resolving to with or without hints 21:23
21:24 denis_boyun joined 21:27 iSlug left, yannickberthoud joined
timotimo IT COMPILES 21:28
21:29 yannickberthoud left 21:30 cjwelborn left 21:33 FROGGS left 21:36 Rotwang left
timotimo huh. for none of the accesses through nqp::getattr_i it will actually successfully create a hint :( 21:40
oh, actually bindattr_i
21:41 trnh left 21:44 pmurias joined
pmurias [Coke]: do you think we could (semi)easily have smartlinks to the tests in our ops docs? 21:44
masak 'night, #perl6 21:45
lizmat gnight masak! 21:47
21:48 denis_boyun left, FROGGS joined 21:52 donaldh left
timotimo Error while compiling op bind (source text: ":="): Cannot infer type from '' :( 21:55
22:01 FROGGS left
d^_^b so once rakudo ships with MoarVM will there be really any functionally different from a developers perspecitve? 22:02
diakopter not at first probably 22:03
d^_^b or is JVM work and MoarVM separate?
timotimo it's only partially separate
the parallelisation stuff is jvm-exclusive at the moment 22:04
lue jnthn's slides are fun to read (still on day 1). I think I'll go back after reading them and do the exercises :)
diakopter lue++ 22:05
good fun! and have luck!
22:09 PZt left 22:10 trnh joined, trnh left, trnh joined 22:11 baest joined 22:18 BenGoldberg joined 22:21 PZt joined 22:22 FROGGS joined
timotimo i think i'm doing this thing with the compile time value wrong :| 22:26
22:26 jnap left
timotimo - QAST::WVal(ParseShared) - this doesn't "has_compile_time_value" and/or QAST::SVal($!highwater) - this doesn't has_compile_time_value 22:27
is has_compile_time_value the wrong approach?
because - QAST::Var+{QAST::CompileTimeValue}(lexical $?CLASS) - this does has_compile_time_value, curiously
i suppose i'll have to check for isinstance QAST::WVal and SVal respectively? 22:29
lizmat fwiw, feels right 22:34
timotimo a getattr is always right, right? even if a getattr_i/_n/_s would be "better"? 22:35
because i think i could turn getattr into getattr_$foo at compile time under the same circumstances that i can calculate the hint
22:37 FROGGS left
timotimo invoke() not implemented in class 'QAST::IVal' - the what now? 22:37
lizmat da bin ich überfragt
timotimo :)
ich besichtige die sehenswürdigkeiten 22:38
lizmat :-) 22:39
timotimo what was that twilight fanfiction called that was kind of like friendship is optiomal? 22:45
lizmat no idea… :-) 22:46
and also gnight #perl6!
timotimo gnite lizmat :)
now i can calculate the hint, but not add it to the op because it chokes on the IVal ;_; 22:47
22:50 pmurias left, [Sno] left
timotimo DOH 22:51
DOH DOH DOH
i forgot the .new
22:51 [Sno] joined 22:58 mtk0 left 23:01 trnh left, jdv79_ joined 23:02 skids joined
timotimo so far i get no debug output when compiling rakudo with my optimisation ... :/ 23:04
that kind of makes me sad
but perhaps the grammar etc benefitted a bit from this
oh, there we go! :) 23:05
nqp::getattr_i($param, Parameter, '$!flags') - that sounds helpful :)
nqp: say(nqp::r_elems(Str)) 23:09
camelia nqp: OUTPUT«Cannot do repr_elems on a type object␤current instr.: '' pc 93 ((file unknown):61) (/tmp/Wg0GK39koI:1)␤»
timotimo huh
23:12 dmol left
dalek p/awesome_bindattr: 1af1098 | (Timo Paulssen)++ | src/vm/parrot/ (3 files):
WIP on bind/set/getattr with hints
23:25
p/awesome_bindattr: b04f59f | (Timo Paulssen)++ | src/vm/parrot/QAST/Operations.nqp:
this actually works!
23:28 panchiniak left
timotimo i figured the _n ops wouldn't get used often, so i can just skip the crufty code 23:28
lue now realizes why all the NQP node-related code looked familiar; it reminds him of Lisp a bit. 23:35
23:38 stevan_ joined
timotimo well yeah, it is a tree and trees tend to look like that :) 23:43
[Coke] nwc10: (caterpillar) ja. 23:44
timotimo probably also with op nodes having the op names in them at the beginnings makes it look much more like sexp
[Coke] .to pmurias - re smartlinks - let's start with checking to see if every variant listed in the docs has a test. (and that every variant in the code has doc) 23:46
yoleaux [Coke]: I'll pass your message to pmurias.
lue Ending the construction of a QAST::Op with )))); doesn't help matters :P 23:47
[Coke] lue: indent often.
((it's the only way I can read those)
timotimo hehe
lue One thing I didn't like about elisp when I was getting to know it was how )))))) was somehow preferred over )\n)\n ... (with proper indentation of closing parens, of course) 23:49
23:49 pernatiy left 23:56 ajr_ left