»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:03 perimosocordiae left 00:06 kfo joined 00:11 MayDaniel left
dalek rixel: 7603dda | diakopter++ | sprixel/Program.cs:
more [p6]eval tweaks
00:13
rixel: dfbf4be | diakopter++ | sprixel/Program.cs:
pathsep
00:14
rixel: 381627b | diakopter++ | sprixel/Program.cs:
Path.DirectorySeparatorChar, I mean
00:16
rixel: 2a17fca | diakopter++ | sprixel/src/compiler/PerlesqueEval.cs:
another attempt
00:29
00:29 Mowah left 00:45 mtk left
dalek rixel: 946e415 | diakopter++ | sprixel/src/compiler/PerlesqueEval.cs:
add .exe back <SIGH>
00:47
diakopter yay! 00:51
perlesque: gist.github.com/798791
p6eval perlesque: OUTPUT«socks 4 50␤sunglasses 7 20␤note-case 22 80␤waterproof overclothes 43 75␤waterproof trousers 42 70␤suntan cream 11 70␤banana 27 60␤glucose 15 60␤sandwich 50 160␤water 153 200␤compass 13 35␤map 9 150␤value: 1030 weight: 396␤»
00:51 mtk joined
diakopter # knap01 example, translated from TimToady's & sorear's 00:51
00:51 Vlavv left
diakopter (speedy) :) 00:52
donri_ it runs gists? 00:54
diakopter all of the p6eval targets do ;)
dalek albot: f8923f1 | (Perl 6 Evalbot)++ | evalbot.pl:
perlesque - to save the assembly first
00:56
diakopter perlesque: my $stopwatch=Diagnostics::Stopwatch.StartNew(); my int $i=1_000_000_000; while ($i--) { }; say($stopwatch.Elapsed); # harumph 01:00
p6eval perlesque: OUTPUT«00:00:03.9364270␤»
diakopter sorear: that answers that...
01:01 Trashlord left
diakopter phenny: tell sorear see the backclog where I left this msg; a merely integer decrementing routine isn't sped up by running it after saving it to disk (but the knap01 was sped up tremendously) 01:02
phenny diakopter: I'll pass that on when sorear is around.
01:04 Vlavv joined 01:07 s1n left 01:10 icwiener_ joined 01:13 icwiener left 01:16 icwiener_ left, achilles14 joined 01:18 s1n joined
sorear wanders back 01:21
phenny sorear: 01:02Z <diakopter> tell sorear see the backclog where I left this msg; a merely integer decrementing routine isn't sped up by running it after saving it to disk (but the knap01 was sped up tremendously)
diakopter (also I got knqp01 to work in 2-3 seconds) :) 01:22
01:22 jimr23 joined
sorear diakopter: niecza/std have colored ==SORRY== output, via ansi codes, and irssi interprets it fine :) 01:22
diakopter right, I was thinking of rakudo and others 01:23
01:24 achilles14 left
sorear diakopter: I never intended to suggest disk-saving would make much of a difference 01:24
diakopter: mono and .net are both JITs; they do not save executable code in normal operation, regardless of AssemblyBuilderAccess 01:25
diakopter I didn't say you suggested disk-saving would make much of a difference
sorear (and mono --aot makes execution *slower*, not faster)
01:26 uvtc joined
diakopter I was referring to our off-channel discussion where I mentioned that mono was 20x faster in disk-saving mode 01:26
01:27 jimr23 left
diakopter so you suggested making a simple integer decrementing program and see if the different mode affects that 01:27
uvtc Can anyone please point me to that plot of Rakudo performance over time? I can't find the link.
diakopter has no idea 01:28
uvtc It had some given script (or maybe more than one) run on the various monthly releases. 01:29
sorear diakopter: oh, I completely forgot about that
uvtc: isparrotfastyet.??? 01:30
IIRC
colomon uvtc: it was more than one.
umm... I had the source open in my browser before a recent crash.
uvtc colomon: was it something you put together?
colomon nope
I was just hoping to run it against more recent Rakudos
uvtc If nothing else, it might be useful to choose a handful of the more intensive Rosetta Code examples and group them into a suite to gauge perf. 01:32
diakopter you mean the less intensive ones... 01:33
the more intensive ones won't terminate ..... ever
uvtc Well, ones that take a minute or two ... ah.
diakopter with the larger inputs, of course. 01:34
colomon now, we do have a repo for benchmark scripts:
github.com/perl6/bench-scripts
uvtc Oh, excellent. Is there any data on how long the current Rakudo/Parrot takes to run them all? 01:35
I think it would be very useful to have a tool to run the whole suite and time it -- so the total execution time can be tracked over releases. 01:36
Ooof. Kids. Gotta go. afk 01:37
01:37 uvtc left
colomon uvtc: that's the tool I had open in my browser. :( 01:37
colomon reckons that if he searches enough through the ir clog, he'll find it again. 01:38
gil.di.uminho.pt/users/smash/rakudo-bench.html is the graphs.... 01:47
ooo, and it links to the script! score!
diakopter colomon: nice find 01:48
hopefully the test scripts themselves aren't being "optimized" over time to show artificial improvement 01:49
colomon Would be much easier to find if the text of the page actually said "rakudo star benchmarks", I imagine. :)
diakopter (or at least, if they are, all the back timings would need recomputed)
colomon I think he was recomputing everything every time.
01:49 formalin14 joined
diakopter with each of the past releases? 01:50
colomon That's what I remember seeing when I was poking around the source, yes. 01:51
yeah, it looks like smash just has a directory named ~/rakudo with a bunch of rakudos in it. 01:53
01:54 formalin14 left 01:55 uvtc joined, formalin14 joined
uvtc That's it. :) Thanks for finding that, colomon. 01:55
colomon Bah, I should be getting colomon-- for not getting around to getting it all running again. 01:56
formalin14 Where can I find some cookbook or examples or tests?
uvtc colomon: might be useful if that page was linked to from rakudo.org/status 01:57
colomon formalin14: There's quite a few small examples at rosettacode.org/wiki/Category:Perl_6 01:58
uvtc: agreed.
formalin14 thanks colomon, I will take a look.
uvtc formalin14: Also github.com/perl6/perl6-examples (as linked to by the perl6.org docs page) 01:59
colomon formalin14: and also modules.perl6.org/ 02:00
02:01 noganex_ joined 02:04 formalin14 left 02:05 lopaway is now known as lopnor, noganex left, lopnor is now known as lopaway, lopaway is now known as lopnor, formalin14 joined 02:06 uvtc left 02:15 donri_ left, formalin14 left 03:05 Tene_ is now known as Tene 03:12 jrockway left 03:20 Chillance left 03:31 jrockway joined 04:03 jaldhar left, jaldhar joined 04:23 Su-Shee_ joined 04:27 Su-Shee left, nymacro left 04:30 lopnor is now known as lopaway 04:42 jferrero left 04:49 Rotwang left 05:00 zorgnax joined 05:02 woosley joined 05:04 zorgnax left 05:36 masonkramer_ joined, masonkramer left 05:37 Alias left 05:52 nymacro joined, Aphelionz joined 06:11 ymasory left
TiMBuS heeey whycome my perl6 irc bot isnt on the modules.perl6.org page? is there something wrong with my repo setup 06:20
06:26 justatheory left, justatheory joined 06:31 justatheory left 06:34 kaare_ joined 06:49 isBEKaml joined 06:51 isBEKaml left 06:53 Aphelionz left 06:58 zby_home joined 07:00 benabik joined 07:03 stifynsemons left 07:27 tt joined 07:38 rdesfo left 07:46 _ilbot left, _ilbot joined
moritz_ TiMBuS: did you add it to the ecosystem? 07:47
TiMBuS yep
i think i broke it by naming it net::irc but not actually having a net/irc.pm?
moritz_ then talk to tadzik when he appears, he has been hacking on it lately 07:48
07:48 kaare_ left
moritz_ I don't think that matters for the modules.perl6.org listing 07:48
TiMBuS oh 07:49
07:49 _ilbot left 07:50 _ilbot joined
TiMBuS hmm all i can think of is case sensitivity then 07:50
unless it needs to see a .pm file without going all the way down to ./lib/Net/IRC/ 07:51
moritz_ I also have an 'svg-plot' project which then has lib/SVG/Plot.pm 07:53
so I don't think that's the problem
07:56 envi joined
moritz_ phenny: tell colomon bumping parrot revision: either in the parrot repo type 'git describe --tags', or if you have a compiled parrot, run 'parrot_config git_describe` to get the identifier string that you then copy into build/PARROT_REVISION 07:57
phenny moritz_: I'll pass that on when colomon is around.
08:03 tt left 08:05 jtbraun1 joined 08:07 jtbraun left 08:10 jtbraun joined 08:12 jtbraun1 left 08:14 szabgab_ left, szabgab joined 08:23 envi left, envi joined 08:26 envi_ joined
moritz_ I'm now doing timings before and after gen_gc2 08:27
before: real 30m18.301s
user 54m3.967s
for a spectest run
08:30 envi left 08:31 mtk left 08:34 JimmyZ joined
sorear -> sleep 08:36
tadzik morning zebras 08:37
08:38 mtk joined
tadzik TiMBuS: what about this IRC module? 08:42
TiMBuS tadzik, i added my module to the ecosystem a while ago but its not showing up on modules.perl6.org 08:44
github.com/TiMBuS/Net--IRC this one
tadzik lemmee see 08:45
08:52 Layla_91 joined 08:53 masak joined
masak morning, zebras. 08:53
tadzik oh hello masak and Layla_91 08:54
Layla_91 hello zebras =)
moritz_ after gen_gc2: real 18m57.030s 08:55
user 35m54.595s
good morning zebras
jdhore moritz_, dude, holy crap 08:56
tadzik what timing is that, spectests?
jdhore yeah
moritz_ rakudo: my $before = 30 * 60 + 18; my $after = 18 * 60 + 57; say ($before - $after) / $before * 100 08:58
p6eval rakudo : OUTPUT«37.4587458745875␤»
jdhore 37% faster...That's pretty damn good
tadzik aye 08:59
moritz_ bacek++ 09:01
jdhore bacek++ 09:02
masak now just repeat that trick a couple of times, and Rakudo will actually be fast ;) 09:04
dalek kudo: 90ed2e2 | moritz++ | build/PARROT_REVISION:
significantly speed up spectest run

initial measurements show a 37% improvement. OK, I cheated. bacek++ did all the real work, I merely bumped PARROT_REVISION
jdhore It's kind of epic that just replacing the GC had a 37% performance improvement (generally). 09:06
[Coke] IIRC, there are still tuning opportunities available for the new GC. 09:08
tadzik 19 Net-IRC 09:09
Error for project Net-IRC : could not get github.com/TiMBuS/Net-IRC/ (project probably dead)
TiMBuS: got your problem
jdhore Yeah, i thought i saw that somewhere
moritz_ Net-IRC vs. Net--IRC ? 09:10
tadzik yeah
buid-projects-list.pl seems to be confused
do not fix the list, I'll peek into the script
$project ->{url}= "github.com/$project->{auth}/$pro...;{name}/"; 09:15
there we go
TiMBuS ack 09:20
will fix that 09:21
moritz_ tadzik++ 09:22
tadzik TiMBuS: wait, I probably fixed that, testing
TiMBuS oh cool 09:23
made it so the project name doesnt need to match the repo name?
tadzik nah. Basically, the modules.perl6.org script was ignoring the repo url, but rather it was extracting the author from it, and building the url itself 09:26
which caused a problems if the repo url wasn't exactly matching the module name, like in your case
TiMBuS odd way to do it..
tadzik also, there is a feature to support gitorious, but:
my ($auth) = $url =~ m[git://github.com/([^/]+)/];
is it safe to assume gitorious support is dead and cold? :) 09:27
masak I think mberends has a module over at gitorious... 09:28
that doesn't mean the support for it isn't dead and cold, of course...
tadzik huh, there are more errors. Testing seems broken too 09:29
that explains why it's not on the list
same reason it seems 09:31
the script could use some perltidy btw :)
hmm, does one escape '.' inside the character class? 09:32
moritz_ nope
tadzik thanks 09:33
masak std: /<[...z]>/
p6eval std 4608239: OUTPUT«===SORRY!===␤Range missing start character on the left at /tmp/vabRA6i6Fh line 1:␤------> /<[..⏏.z]>/␤Check failed␤FAILED 00:01 120m␤» 09:34
09:36 quester_ joined
quester_ nick 09:36
09:39 dakkar joined 09:45 quester_ left 09:47 Mowah joined
colomon make test on the ABC module is a bit better than 25% faster with the new GenGC Rakudo! 09:51
phenny colomon: 07:57Z <moritz_> tell colomon bumping parrot revision: either in the parrot repo type 'git describe --tags', or if you have a compiled parrot, run 'parrot_config git_describe` to get the identifier string that you then copy into build/PARROT_REVISION
masak rakudo: sub b($_) { my $l = 0; for .comb { when "]" { return False if --$l < 0 }; when "[" { ++$l } } }; my $s = "[[]]".comb.pick(*).join; say "$s {b($s) ?? "is" !! "isn't"} well-balanced" 09:52
p6eval rakudo : OUTPUT«[][] is well-balanced␤»
masak \o/
dalek kudo: 37eafa4 | colomon++ | build/README-parrot-revision:
Add moritz_++'s advice on bumping PARROT_REVISION to the repo, so it
09:53
moritz_ colomon++
masak: nice one... though relying on implicitly returning $l-- / ++$l make the thing less readable 09:54
masak hm, that wasn't my intent.
just forgot to return True at the end :P
moritz_ I'd add an $l == 0 after the loop 09:55
masak good idea.
rakudo: sub b($_) { my $l = 0; for .comb { when "]" { return False if --$l < 0 }; when "[" { ++$l } }; return $l == 0 }; my $s = "[[]]".comb.pick(*).join; say "$s {b($s) ?? "is" !! "is not"} well-balanced"
p6eval rakudo : OUTPUT«][][ is not well-balanced␤»
moritz_ masak++ 09:56
is there a rosettacode problem for balanced strings? :-)
masak heh
masak looks
not with that name, anyway. 09:57
masak makes one
tadzik masak: is your grampa project alive? 09:59
masak no. I should remove it. 10:00
the idea is a good one, but I don't have the tuits.
tadzik neceserilly, right? 10:04
nope, thanks
hrm, I can has a commit bit to modules.perl6.org? 10:05
10:08 mberends joined
moritz_ tadzik you don't have one yet? 10:08
mberends @zebras.o/
tadzik mberends \o/
moritz_ tadzik: according to github's organization listing, you should have write access
\o/ mberends 10:09
tadzik moritz_: I doubt it, that's a fresh clone, but I'll check
mberends: good to see you. Fullfil my curiosity, what's your talk for NLPW?
dalek href="https://modules.perl6.org:">modules.perl6.org: 1b20094 | tadzik++ | web/build-project-list.pl:
Project name is not necessarily repo name. Fix that, fixing Net-IRC and Testing issues
10:10
tadzik moritz_: indeed, I have. Something must've gone wrong
mberends tadzik: it's called "In 6model" which is bilingual. the slides will be in English and the audio will be in Dutch.
tadzik cool
moritz_ \o/ Net::GitHub (perl 5) now has an Organizations API 10:12
which means I can teach hugme to add people to the 'perl6' team
mberends tadzik: it is likely that I'll be free on Friday 4th March, so I'll probably be able to meet @you.
moritz_ ... which gives commit access to roast, mu, *.perl6.org etc.
tadzik mberends: cute. Well, I'll be in AMS in the very evening, as all(@you) (: 10:13
10:17 pnu_ left
Layla_91 Me likes playin with perl6-Acme-Meow ^_^ 10:20
tadzik that's my first Perl module ever :) 10:21
masak rosettacode.org/wiki/Balanced_strings 10:22
10:23 Trashlord joined
Layla_91 tadzik: Meow =) 10:23
moritz_ masak++
10:23 pnu joined
masak mberends, tadzik: looking forward to the hackathon/workshop! 10:23
tadzik Layla_91: cute :] 10:24
tadzik hacks on Cardinal 10:25
funny, the day has barely started and I fixed 3 things alredy :)
coldhead good job! that really takes the pressure off the rest of us
masak I love watching industrious people at work. 10:26
moritz_ tadzik: hm, do you want cardinal commits to be reported to #cardinal?
coldhead winston churchill said "i love hard work. i could watch people do it all day"
mberends masak: me too! I have lots of plans...
10:27 hugme left, hugme joined, ChanServ sets mode: +v hugme
moritz_ hugme: add masak to json 10:27
hugme hugs masak. Welcome to json!
10:27 Layla_91 left
moritz_ masak: sorry for the noise, just needed to test something :-) 10:27
tadzik moritz_: would be nice, yes
phenny: "industrious"? 10:28
phenny tadzik: "industrious" (fil to en, translate.google.com)
tadzik pff
masak coldhead: I thought it was Oscar Wilde... ;)
moritz_ phenny: ask sorear could you please configure dalek to join #cardinal on magnet, and allow commits to be reported there? thanks!
phenny moritz_: I'll pass that on when sorear is around.
masak tadzik: means "hard-working". think of "industry".
tadzik coldhead: I thought these were the Mayan kings
there is a theory that they died because they were doing so little they hearts have just stopped :P 10:29
masak: yeah, the "industry" thing confused me :)
moritz_ tadzik: I thought they died because they were too cool to bother with something as mundane as breathing :-) 10:30
tadzik int eresting; :)
masak tadzik: they have the same origin, it seems. in fact, "industry" seems to be derived from "industrious". 10:31
tadzik interesting too
masak tadzik: ...which in turn comes from an Old Latin verb "struere", meaning "devising inwardly, secretly".
doesn't have that meaning anymore, though. 10:32
nowadays just means "diligent, hard-working".
coldhead i think wilde and churchill would have had different reasons for enjoying men hard at work 10:34
masak hm, "instruct" also comes from "struere"... 10:35
moritz_ the Nazis attributed some quotes to Churchill, hoping to paint him in a bad light
so be careful about what he actually said
masak hm, and "construct" and "destroy"... this always happens, I seem to find the one Latin root that binds a whole group of words together... 10:36
10:39 JimmyZ left 10:42 hugme left, hugme joined, ChanServ sets mode: +v hugme
moritz_ hugme: add moritz to perl6 10:42
hugme moritz_: Error adding moritz to perl6:
moritz_ this was not very informative. 10:43
tadzik (:
10:45 hugme left, hugme joined, ChanServ sets mode: +v hugme
moritz_ hugme: add moritz to perl6 10:47
hugme hugs moritz. Welcome to the perl6 github organization
moritz_ hugme: add moritz to perl6 10:49
hugme hugs moritz. Welcome to the perl6 github organization
moritz_ \o/ it actually works!
10:50 hugme left, hugme joined, ChanServ sets mode: +v hugme
moritz_ fyi, 'add GitHubNick to perl6' adds that person to the perl6 team 10:51
10:51 risou joined
tadzik moritz_++ 10:51
moritz_ which grants commit bits to nearly all repos on github/perl6/ 10:52
including specs, roast, mu, modules.perl6.org, perl6.org, ecosystem, std, perl6-examples
let's use that, because I'm too lazy for finer graded access control 10:53
masak it only makes sense.
if we trust someone with one of those, we trust them with the others.
bacek ~~ 10:54
masak bacek! \o/
bacek masak, aloha :)
masak bacek: congratulations on the merge!
bacek masak, thanks. It was more successful on second attempt :)
Who is the "best person" (apart from pmichaud) to ask for help with converting Bison based grammar to nqp/perl6? 10:57
This www.lysator.liu.se/c/ANSI-C-grammar-y.html grammar :)
masak there are many people with grammar know-how on the channel.
moritz_, sorear, diakopter, colomon... 10:58
bacek masak, good!
moritz_ bacek: the grammar should be straight forward to translate; it's the lexer that might mean a bit more work 11:00
bacek moritz_, C lexer is trivial.
grammar is more interesting. I don't want to implement bison-style handling of priorities. 11:01
But I don't quite understand O<> notation in nqp grammar
moritz_ the operation precedence parser... I don't fully understand it either :( 11:02
arnsholt It's actually reasonably simple 11:03
masak I understand it.
I've written one. that helps :P
bacek masak, yo!
masak :)
arnsholt Hehe. I've used it, which helps as well =)
bacek I'll probably ask you in few days time :)
Tene bacek: I'd need to do a little bit of reading first to get re-acquainted with the details, but I should be able to help you out with a bit of work. This is for the C subset to use for ops? 11:04
bacek Tene, exactly.
moritz_ masak: then please do us the favor and write a proper introduction to them (once you've published your p5 review...:-)
bacek I'll hack some skeleton first in next few days.
tadzik Multiple Dispatch: No suitable candidate found for 'cmp', with signature 'PP->I' 11:05
masak bacek: check out the comment at the bottom of github.com/parrot/parrot/blob/mast...PTable.pir
it has a lot of useful information.
bacek masak, yeah, some written introduction docs will be helpful
tadzik what is that requiring me to implement?
masak bacek: it's not exactly introductory, but I trust you to decipher it.
tadzik: that's a Parrot error, but you probably know that. 11:06
tadzik oh, wrong channel again
masak tadzik: PP->I means "takes two PMCs, returns an Int"
tadzik hmm
masak that'd be cmp.
bacek masak, erm... What is difference between postfix and postcircumfix? 11:07
moritz_ bacek: postcircumfix is something like the [bar] in foo[bar] 11:08
bacek masak, and circumfix
moritz_ bacek: ie it comes after a term, and encloses something
whereas <foo bar> is a circumfix (the < ... > enclose something, and it comes in term position)
bacek moritz_, got it!
masak thought <...> is a quoting environment, rather than a circumfix. 11:09
[...] is a better example.
s/thought/though/
bacek moritz_, <...> exists in circumfix in nqp 11:11
token circumfix:sym<ang> { <?[<]> <quote_EXPR: ':q', ':w'> }
token circumfix:sym<« »> { <?[«]> <quote_EXPR: ':qq', ':w'> }
moritz_, how magical is EXPR?
or it's just { <prefix>? <term> <postfix>? } (or something like this) 11:12
masak EXPR, in my understanding, is what toggles the operator precedence parser. 11:13
arnsholt bacek: EXPR is quite magical 11:15
moritz_ bacek: it's basically [ <prefix>? <term> <postfix? ] [ <infix> <prefix>? <term> <postfix> ]*, and then rearranges according to precedence
arnsholt It takes something along the lines of what you said, and munges them as given by the precedence of the operators
masak precedence, and associativity. 11:16
arnsholt Point, point
bacek ok. Understandable magic is less scary :)
masak that's what the table at the bottom of that source file summarizes, in fact.
it lists all of the possible combinations of operators.
arnsholt Under the covers, it uses something similar to Knuth's shunting yard algorithm, if you're familiar with it 11:17
masak bacek: there's a few slides exemplifying the shunting-yard workings in masak.org/carl/osd-2010-parse-perl/talk.pdf 11:18
arnsholt en.wikipedia.org/wiki/Shunting-yard_algorithm is quite detailed as well 11:19
11:19 xabbu42 joined
masak the concept of shift/reduce also comes up a lot. 11:20
it's easy to understand, once you realize that "shift" means "push" and "reduce" means "build" :P
bacek :) 11:22
Thanks guys. I've got something for bed-time reading :)
11:46 molaf joined 12:06 kjeldahl_ joined 12:09 Trashlord left 12:18 donri joined, Su-Shee_ is now known as Su-Shee 12:29 jferrero joined 12:43 Rotwang joined
tadzik seen kthakore 13:00
aloha kthakore was last seen in #perl6 22 days 19 hours ago joining the channel.
13:16 Alias joined 13:25 icwiener joined
masak I think some people on this channel might appreciate www.hxa.name/articles/content/tract..._2010.html 13:29
(via @audreyt on Twitter)
moritz_ closes a rakudobug from August 2008 13:32
masak moritz_++
moritz_ rakudo: ??? 13:33
p6eval rakudo 37eafa: OUTPUT«Stub code executed in <anon> at line 22:/tmp/aWGRfUKuQH␤»
moritz_ rakudo: ???("foo")
p6eval rakudo 37eafa: OUTPUT«Stub code executed in <anon> at line 22:/tmp/8WqS8xHBw4␤»
tadzik (:
moritz_ rakudo: class A does Int { } 13:35
p6eval rakudo 37eafa: OUTPUT«===SORRY!===␤Can only use does with a role, but Int is not one␤»
moritz_ I'd say this is correct
13:35 woosley left
moritz_ in rt.perl.org/rt3/Ticket/Display.html?id=60176 chromatic says "Every Class implies the existence of a Role. Rakudo may not do that now, but 13:36
it should do that in the future *even if* Int remains a Class."
is that specced somewhere?
masak "The limits of my programming-language mean the limits of my imagination." -- I like that.
13:36 JodaZ joined
moritz_ rakudo: my $x is foo; 13:36
p6eval rakudo 37eafa: OUTPUT«No applicable candidates found to dispatch to for 'trait_mod:<is>'. Available candidates are:␤:(Mu $child, Role $r)␤:(Routine $r, Any :default($default)!)␤:(Code $block, Any $arg?, Any :export($export)!)␤:(Mu $child, Mu $parent)␤:(Mu $type where ({ ... }), Any :rw($rw)!)␤:(Mu
..$type…
moritz_ rakudo: sub f($x is foobar) { } 13:37
p6eval rakudo 37eafa: ( no output )
masak moritz_: I don't thing 'class implies role' is spec'd, except perhaps the part where classes pun into roles if you use them as roles.
dalek ast: 612268c | moritz++ | S06-signature/errors.t:
remove a broken test in errors.t
13:40
tadzik ha, looks like today has become a bugfixing party
13:43 risou left
tadzik rt.perl.org/rt3/Public/Bug/Display.html?id=68160 -- what is this bug actually aboutO? 13:43
moritz_ rakudo: say '/'.IO ~~ :d 13:45
p6eval rakudo 37eafa: OUTPUT«Bool::True␤»
moritz_ tadzik: it's about file tests, which have changed since it was filed
anyway, it works as specced now 13:46
so can be closed
tadzik yeah, that's what I was thinking 13:47
moritz_ tadzik: will you close it, or should I?
13:49 Trashlord joined
tadzik moritz_: I can close it 13:50
std: 1 ?? 2 : 3
p6eval std 4608239: OUTPUT«===SORRY!===␤Please use !! rather than : at /tmp/dwwqJxoqoD line 1:␤------> 1 ?? 2 :⏏ 3␤Parse failed␤FAILED 00:01 119m␤» 13:51
tadzik I have to reply to it, right?
13:51 rgrau joined
tadzik Ticket 68160: Permission Denied 13:53
but the message was sent, crap
moritz_: can you take a look at it?
masak takes a look 14:00
tadzik rakudo: my($a) = 5; say 'alive'
p6eval rakudo 37eafa: OUTPUT«===SORRY!===␤Symbol '$a' not predeclared in <anonymous> (/tmp/7DKHZSSlxu:22)␤»
tadzik LTA error message, or not? rt.perl.org/rt3/Ticket/Display.html?id=68358
masak no, it looks right to me.
that's a subcall to the sub 'my'
tadzik hmm 14:01
masak (but perhaps it should be special-cased with a better error?)
tadzik I'll run this spectest
masak #68160 closed. 14:02
jnthn moritz_: "Every class implies that a role of the same name exists" has never been in the spec, so far as I know.
tadzik not to mention the test test is broken as hell
17 + 5 is not 23, under any circumstances
jnthn moritz_: If it ever ends up being it's fair enough to have a ticket for it then, but for now the ticket is just noise.
masak +1
jnthn I've heard little argument for the spec saying such a thing here on #perl6 though. In a sense, roles punning to a class is probably enough magic. :) 14:03
tadzik changing it to 22 causes the spectest to ork
jnthn Wow, math fail! :)
tadzik fixing 14:04
14:04 donri left
dalek ast: f8adce3 | tadzik++ | S02-names/identifier.t:
17 + 5 is not 23 (:
14:05
tadzik so now the spectest runs and the ticket can be closed 14:06
so it shouldn't be skipped, righdt?
f&%#! lag
masak I'm sorry? 14:08
tadzik in roast I mean. there should be no #?rakudo skip 'RT #68358'm right? 14:09
masak I have no idea.
tadzik since it works, and the ticket will be closed. Me neither, that's why I'm asking :)
jnthn tadzik: If the test passes, then it shouldn't be skipped. :) 14:12
Unless it's obviously passing for bogus reasons, perhaps. 14:13
tadzik dunno
looks ok to me
dalek ast: b0ff379 | tadzik++ | S02-names/identifier.t:
unskip the test for RT #68358, it works now
14:14
tadzik rt.perl.org/rt3/Ticket/Display.html?id=68358 -- closable 14:17
rt.perl.org/rt3/Ticket/Display.html?id=68728 -- isn't that resolved and closable? 14:19
rt.perl.org/rt3/Ticket/Display.html?id=68744 -- and this? 14:20
moritz_ tadzik: I have a crying toddler my lap right now, but when I get the chance I'll backlog and kill all those tickets 14:23
tadzik moritz_: no worries
14:24 MayDaniel joined
tadzik rt.perl.org/rt3/Ticket/Display.html?id=69218 --closable too 14:30
masak closes
tadzik++ 14:31
tadzik std: my $a = 0; loop while $a < 10 { say $a++ }
p6eval std 4608239: OUTPUT«===SORRY!===␤Missing block at /tmp/fGeVJKPh4f line 1:␤------> my $a = 0; loop ⏏while $a < 10 { say $a++ }␤Parse failed␤FAILED 00:01 121m␤»
tadzik rakudo: my $a = 0; loop while $a < 10 { say $a++ } 14:32
p6eval rakudo 37eafa: OUTPUT«===SORRY!===␤Missing block at line 22, near "while $a <"␤»
tadzik good enough to close rt.perl.org/rt3/Ticket/Display.html?id=69180 ?
masak std: my $a = 0; loop while $a < 10 { say $a++ }
p6eval std 4608239: OUTPUT«===SORRY!===␤Missing block at /tmp/lLau31mE4l line 1:␤------> my $a = 0; loop ⏏while $a < 10 { say $a++ }␤Parse failed␤FAILED 00:01 121m␤»
masak looks like. 14:33
masak closes
tadzik I love this ticket-closing parties 14:34
masak ;) 14:35
tadzik shame it's the first one I'm on :) 14:36
masak never too late to start...
tadzik btw, can "broken on OpenSolaris" tickets be closed due to "there's no OpenSolaris"? ;) 14:37
masak I don't know the background of the "there's no OpenSolaris", but my guess is "no".
tadzik I think Oracle killed the project 14:38
14:38 lamstyle left
moritz_ but the OS still exists 14:38
as in, there are installations in the wild
dalek ast: 18d8c7f | moritz++ | S14-roles/basic.t:
remove tets for non-spec "class does class" case
14:39
tadzik hmm, probably yes
moritz_ we need a test for RT #68728 14:40
tadzik I can write it. That'd be just what's in the ticket? 14:41
mberends I had a look at OpenSolaris just a week ago for BSD compatibility testing - it is very dead, not worth supporting unless someone asks for support in 2011. For BSD testing I opted for this one because its LiveDVD was the most up to date and functional one I could find. www.rofreesbie.org/ 14:47
14:47 xinming_ left 14:49 xinming joined
dalek ast: 5a414bc | tadzik++ | S02-names/identifier.t:
Added a test for RT #72898
14:50
tadzik rt.perl.org/rt3/Ticket/Display.html?id=72898 closable now 14:51
14:58 stifynsemons joined
tadzik rakudo: 1 ?? 1 15:15
p6eval rakudo 37eafa: OUTPUT«===SORRY!===␤Confused at line 22, near "1 ?? 1"␤»
dalek kudo: 20dcba4 | tadzik++ | src/Perl6/Grammar.pm:
Improve error messages for ?? git pull (adopted from STD)
15:17
tadzik oopsie
masak oopsie?
tadzik read the commit message 15:18
masak ?? git pull
tadzik yeah
suprise middleclick it seems
a silent --force, can I?
masak if you hurry, maybe.
or just leave it be.
jnthn It's no problem really.
masak no, not really. 15:19
tadzik oh, it's my stupid zsh
changes !! to something
jnthn I mean, maybe some Perl 6 historial will come and hunt you down with an axe in 20 years time for making the version history look messy....but that's still quite unliely. :)
tadzik a lesson to put the commit message in the single quotes 15:20
jnthn *historian
masak or write it in an $EDITOR 15:21
dalek kudo: 57f6e33 | tadzik++ | src/Perl6/Grammar.pm:
Improve error messages for ?? git push (adopted from STD)
15:23
tadzik nvm the duplicate. These are not the commits you are looking for :)
#68672 updated
is someone fluent with all those --trace flags? 15:24
or I will become :) 15:25
masak please become :) 15:26
jnthn --trace flags in...? 15:27
tadzik in docs/running.pod 15:28
jnthn If in Rakudo I suspect they pass through directly to Parrot.
tadzik that's correct
dalek kudo: 655a8f4 | tadzik++ | docs/running.pod:
Linked to parrot docs for info about trace flags. RT #68416
tadzik rt.perl.org/rt3/Ticket/Display.html?id=68416 updated and closable 15:29
if we write a test for an open RT ticket, one day the test may suprisingly pass, which prove will report and we will know to close the ticket, right?
moritz_ tadzik: If the fudge message mentions the ticket, I'll notice on unfudging 15:30
tadzik cool 15:31
moritz_ tadzik: and I regularly run tools/autounfudge.pl to find those automatically
tadzik I wonder how many people I can get to make a bugfixing party on friday's LUG
15:31 Mowah left
tadzik can someone take a look at rt.perl.org/rt3/Ticket/Display.html?id=69010 ? 15:31
masak ok, I took a look. 15:33
jnthn masak: Was it pretty? 15:34
Should I look too?
masak 'break' has changed its name to 'succeed', but I'm guessing the spec still says it's a compile-time error to have it outside of a topicalizer block.
tadzik a specbug then?
15:34 am0c joined
masak no, I mean... 15:35
I guess the spec still says it's a compile-time error to have 'succeed' outside of a topicalizer block.
moritz_ std: 1 ?? 2 : 3
p6eval std 4608239: OUTPUT«===SORRY!===␤Please use !! rather than : at /tmp/0daMFr7sf9 line 1:␤------> 1 ?? 2 :⏏ 3␤Parse failed␤FAILED 00:01 119m␤»
tadzik std: my @a; @a[Inf] = 0; 15:36
p6eval std 4608239: OUTPUT«ok 00:01 122m␤»
tadzik buehehe
jnthn pmichaud's question is a good one, though.
tadzik how about wklej.org/id/479269/ instead? #73184 related
moritz_ tadzik: mind if I change the <?before '::' to <?before ':' ':'?
tadzik moritz_: well, that's a different thing 15:37
moritz_ erm, question mark after the second ':' to also catch ?? :
tadzik but yeah, it's better
oh, perlfect
moritz_ wait
I'll do it in a separate case
to get a better error message
tadzik there is one in STD
jnthn tadzik: Does the spec say we need the Inf check?
tadzik jnthn: nah. But rakudo hangs for Inf
jnthn I'm not sure that's surprising... :) 15:38
tadzik dunno what does the spec say
jnthn I'm a tad worried about putting such a check on a critical path, that's all
Guess it's trying to balance user friendliness against performance.
tadzik moritz_: github.com/perl6/std/blob/master/STD.pm6#L3767 15:39
hmm, fair enough. Should be a parse error maybe
or just not
anyway, the ticket seems resolved. There is no LTA error message anymore :) 15:40
jnthn tadzik: Well, the cases where such an error would be useful aren't the ones that are blindingly obvious.
It's where you have @foo[$thing-you-think-should-never-be-Inf] 15:41
moritz_ rakudo: for ^8 { .=fmt("%03b"); .say }
p6eval rakudo 37eafa: OUTPUT«000␤Cannot modify readonly value␤ in '&infix:<=>' at line 1␤ in <anon> at line 22:/tmp/iyVTQnsppR␤ in main program body at line 1␤»
tadzik right
rakudo: say 0xFFFFFFFFFFFFFFFF
p6eval rakudo 37eafa: OUTPUT«-1␤»
tadzik rt.perl.org/rt3/Ticket/Display.html?id=73268 looks ok now. Should there be a test for it? 15:42
moritz_ yes 15:43
jnthn yes, should be tested.
moritz_ rakudo: say (1...*)[^4] 15:44
p6eval rakudo 37eafa: OUTPUT«1234␤»
tadzik I'm missing ack for filenames 15:45
moritz_ ack -g
15:45 masak left
dalek ast: bb4c91b | moritz++ | S0 (3 files):
some unfudges found by autounfudge.pl
15:46
ast: e45259a | moritz++ | S02-names/identifier.t:
update test plan
tadzik oh, cool. moritz_++ 15:47
dalek ast: d1d07a3 | tadzik++ | S03-operators/range-int.t:
Add test for RT #73268
15:49
moritz_ tadzik: ...^ is a series, and shouldn'T got into a range test file
tadzik oops 15:50
15:50 masak joined 15:53 noganex joined
dalek ast: 042da08 | tadzik++ | S03- (2 files):
Moved the test for #73268 to the right file, moritz++ tadzik--
15:54
tadzik fixed
15:54 noganex_ left
tadzik so rt.perl.org/rt3/Ticket/Display.html?id=73268 can be closed now 15:55
moritz_ closes 16:01
rakudo: say ([[1, 2], 3] >>+<< [4, [5, 6]]).perl
p6eval rakudo 37eafa: OUTPUT«Sorry, lists on both sides of non-dwimmy hyperop are not of same length:␤ left: 2 elements␤ right: 1 elements␤At .[0]␤ in 'hyper' at line 188:CORE.setting␤ in <anon> at line 213:CORE.setting␤ in 'hyper' at line 1␤ in main program body at line 1␤» 16:02
16:02 noganex left 16:04 noganex joined
moritz_ another ticket down (RT #78368) 16:04
rakudo: sa ~(64,32,16 ...^ Rat)
p6eval rakudo 37eafa: OUTPUT«Could not find sub &sa␤ in main program body at line 22:/tmp/mnJHvaF0XK␤»
moritz_ rakudo: say ~(64,32,16 ...^ Rat)
p6eval rakudo 37eafa: OUTPUT«64 32 16␤» 16:05
masak eh?
moritz_ it doesn't re-coerce to int
it calculates 8 as 1/2 * 16
which is a Rat
(in RT #78324 it didn't terminate at all) 16:06
moritz_ renames the ticket 16:08
16:09 nymacro left
moritz_ rakudo: class Car { has @.wheels }; say Car.^attributes.perl 16:10
p6eval rakudo 37eafa: OUTPUT«Method 'attributes' not found for invocant of class ''␤ in 'Mu::attribs' at line 1290:CORE.setting␤ in 'Mu::perl' at line 1299:CORE.setting␤ in main program body at line 1␤»
moritz_ rakudo: class Car { has @.wheels }; say pir::typeof(Car.^attributes)
p6eval rakudo 37eafa: OUTPUT«Parcel␤» 16:11
moritz_ I don't understand that at all 16:12
the attributes method in ClassHOW.pir ahs
*has
result_list = '&infix:<,>'(result_list :flat)
.return (result_list)
which should return a perfectly fine Perl 6 type
16:13 risou joined
moritz_ rakudo: class Car { has @.wheels }; say Car.^attributes.PARROT 16:13
p6eval rakudo 37eafa: OUTPUT«Parcel␤»
moritz_ rakudo: for 1, 2, 3 { sub foo {}; .say }; say "alive" 16:14
p6eval rakudo 37eafa: OUTPUT«alive␤»
moritz_ (RT #78232)
16:15 Patterner left 16:16 rdesfo joined 16:17 mtk left, Psyche^ joined, Psyche^ is now known as Patterner
moritz_ rakudo: undef 16:17
p6eval rakudo 37eafa: OUTPUT«===SORRY!===␤Unsupported use of undef as a value; in Perl 6 please use something more specific:␤ Mu (the "most undefined" type object),␤ an undefined type object such as Int,␤ Nil as an empty list,␤ *.notdef as a matcher or method,␤ Any:U as a type constraint␤ or
..fail() as a failur…
moritz_ rakudo: 1 1 16:18
p6eval rakudo 37eafa: OUTPUT«===SORRY!===␤Confused at line 22, near "1 1"␤»
moritz_ std: 1 1
p6eval std 4608239: OUTPUT«===SORRY!===␤Two terms in a row at /tmp/gDzKoIcO0H line 1:␤------> 1 ⏏1␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤ statement modifier loop␤Parse failed␤FAILED 00:01 119m␤»
16:21 whiteknight joined 16:25 mtk joined 16:30 kanishka joined 16:31 MayDaniel left, MayDaniel joined
moritz_ rakudo: my $x = :a<5>; say $x.map({.key => .value + 1}).perl 16:32
p6eval rakudo 37eafa: OUTPUT«Method 'key' not found for invocant of class ''␤ in main program body at line 22:/tmp/NPDiQ3k_bG␤»
moritz_ rakudo: my $x = :a<5>; say $x.map({; .key => .value + 1}).perl 16:33
p6eval rakudo 37eafa: OUTPUT«("a" => 6)␤»
16:36 pmurias joined 16:38 kaare_ joined 16:42 rhr left 16:49 zby_home left
sorear good * #perl6 16:53
phenny sorear: 10:28Z <moritz_> ask sorear could you please configure dalek to join #cardinal on magnet, and allow commits to be reported there? thanks!
16:54 dalek left 16:56 dalek joined, ChanServ sets mode: +v dalek
pmurias sorear: hi 16:59
sorear hello pmurias 17:01
17:01 envi_ left
moritz_ rakudo: sub f($x = []) { $x.push: 2; say $x.perl }; f(); f() 17:01
p6eval rakudo 655a8f: OUTPUT«[2]␤[2]␤»
sorear perl6: sub f($x = []) { $x.push: 2; say $x.perl }; f(); f() 17:02
p6eval pugs: OUTPUT«[2,]␤[2,]␤»
..rakudo 655a8f, niecza v2-99-g1e36fcc: OUTPUT«[2]␤[2]␤»
moritz_ blog.objectmentor.com/articles/2008...lt-problem 17:03
masak perl6++ 17:05
arnsholt Sigh. That's just wrong 17:14
moritz_ what? the python behavior? 17:19
17:19 rhr joined
masak I wonder what it means in terms of lexical scopes in functions in Python? 17:25
probably not much, but... seems the same "optimizations" that led to that kind of problem could lead to problems with recursion. 17:26
dakkar it's not really an optimization… 'def' is a statement (not a declaration), so the arglist is evaluated (once) when it is first encountered 17:27
it's the same "problem" with Moose defaults: you have to write «default => sub { [] }»
masak ah.
dakkar hm. now I have to check if I can do the same in python (with lambda)
17:28 risou left
dakkar doesn't work, the lambda is (understandably) not evaluated 17:30
17:35 kjeldahl_ left 17:36 masonkramer joined, masonkramer_ left
dalek kudo: ee5d50e | moritz++ | tools/autounfudge.pl:
do not exclude stuff from autounfudge
17:43
kudo: 9ed54cf | moritz++ | src/Perl6/Grammar.pm:
also catch ?? : at parse time
masak moritz_++ 17:44
tadzik I'd add a note and suggest the STD behaviour one day 17:54
18:01 rhr left 18:04 pure1111 joined, pure1111 left 18:07 rgrau left 18:08 justatheory joined
tadzik does anyone have an older (2.10, 2.11) Parrot available? 18:10
moritz_ github has 18:11
tadzik yeah, I know that
jdhore <lazy> Question: Do old operators (say the ? : ternary op) still work in Perl 6 but are deprecated or do you have to use the new operators (In the ternary case, ?? !!)</lazy> 18:12
flussence nope
tadzik std: 5 ? 2 : 3 18:13
flussence rakudo: say 1 ? 1 : 1
p6eval std 4608239: OUTPUT«===SORRY!===␤Unsupported use of ?: for the conditional operator; in Perl 6 please use ??!! at /tmp/RSTuF2ep0r line 1:␤------> 5 ?⏏ 2 : 3␤Parse failed␤FAILED 00:01 119m␤»
rakudo 655a8f: OUTPUT«===SORRY!===␤Confused at line 22, near "say 1 ? 1 "␤»
tadzik oh look, LTA error message
moritz_ looks like an easy-ish fix
jdhore not too bad, at least it warns you.
moritz_ rakudo: while (<STDIN>) { } 18:14
p6eval rakudo 655a8f: OUTPUT«===SORRY!===␤Unsupported use of <STDIN>; in Perl 6 please use $*IN.lines at line 22, near "<STDIN>) {"␤»
moritz_ rakudo: while (my $x = <STDIN>) { }
p6eval rakudo 655a8f: OUTPUT«===SORRY!===␤Unsupported use of <STDIN>; in Perl 6 please use $*IN.lines at line 22, near "<STDIN>) {"␤»
moritz_ std: while (my $x = <STDIN>) { }
p6eval std 4608239: OUTPUT«===SORRY!===␤This appears to be Perl 5 code at /tmp/MFqxVzEk7a line 1:␤------> while ⏏(my $x = <STDIN>) { }␤Parse failed␤FAILED 00:01 117m␤»
flussence ooh, nice
rakudo: while (<>) { say $_; } 18:15
p6eval rakudo 655a8f: OUTPUT«===SORRY!===␤Unsupported use of <>; in Perl 6 please use lines() to read input, ('') to represent a null string or () to represent an empty list at line 22, near "<>) { say "␤»
moritz_ rakudo: while (<foo>) { say $_; }
p6eval rakudo 655a8f:
..OUTPUT«(timeout)()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤Any()␤…
flussence std: while (<constant-value>) { say $_; } 18:18
p6eval std 4608239: OUTPUT«ok 00:01 121m␤»
flussence I think that should probably warn to use "loop { }"...
moritz_ std: while (<foo>) { } 18:19
p6eval std 4608239: OUTPUT«===SORRY!===␤This appears to be Perl 5 code at /tmp/L3uEARyqWZ line 1:␤------> while ⏏(<foo>) { }␤Parse failed␤FAILED 00:01 117m␤»
moritz_ flussence: constant-value is not a Perl 5 identifier
flussence yes, but it *is* an infinite loop which could be written better :) 18:20
tadzik that's a room for Perl6::Critic imho
moritz_ aye
or for the constant folder in the compiler
sorear Perl6::Critic only works if we have a good way to statically parse Perl 6 *ducks* 18:21
tadzik are we planning to use tree-optimizer soon?
18:21 Sarten-X left
moritz_ tadzik: I think there's still the problem of deployment 18:21
tadzik: if the parrot folks agree to ship a snapshot of tree-optimizer compiled to PIR, I'm all for it 18:22
pmurias sorear: why is using STD for Perl6::Critic bad? 18:24
moritz_ sorear: there's works and there is "works"
Perl::Critic also doesn'T really work, but it "works" well enough in practise
sorear pmurias: STD doesn't work if modules aren't found, etc 18:25
moritz_: do you know who made dalek join #cardinal?
moritz_ sorear: no idea. Could have been diakopter 18:26
sorear: does it report there now, if configured to?
sorear He denied it.
Yes
moritz_ hm
that's... curious
which machine does it run on?
feather or appflux?
sorear host04.appflux 18:27
diakopter applux; /me goes to poke around on there... I thought I saw a separate instance of it started up under one of moritz' screens...
moritz_ I didn't attempt to touch dalek in 2011 18:28
sbp touchme: touch dalek 18:29
tadzik * touchme touches dalek and denies it
18:30 Sarten-X joined
diakopter oh; I was thinking of something else.. 18:30
masak 'touchme' would be the name of the 6bot, no doubt. 18:33
18:36 ymasory_ left, ymasory joined 18:37 __rnddim__ is now known as lue
lue hello citi-zebras o/ 18:38
diakopter \
18:41 dakkar left
masak saluton, lue. 18:50
18:52 bacek left 18:53 lamstyle joined
jnthn
.oO( salueton )
18:54
lue
.oO(Mi malpensas en Esperanton)
18:59
masak grammatical, but odd :P 19:00
"I unthink into Esperanto"
19:00 MayDaniel left
masak folks, it finally happened. 19:01
I put a sub in a sub in a sub.
tadzik :)
masak guess it was only a matter of time.
jnthn I heard you like subs... 19:02
masak yeah, but this is some sort of second degree of that... :P 19:03
I can report that it all looks very natural, and I don't regret it one bit. 19:04
it's all part of a little refactor I'm doing.
19:04 bacek joined
masak when you put subs in subs like this, you can throw away loads of parameters from your siggies :) 19:05
19:06 cognominal left
jnthn It's times like this that I'm glad Perl 6 makes subs lexical by default :) 19:06
masak oh, that's a prerequisite. 19:07
at least for sanity. :)
colomon which (if I'm understanding you) is part of the reason I consider nested methods very odd. 19:09
masak colomon: well, that conversation continued a bit, and I think TimToady found them similarly odd.
at the very least, it wasn't entirely clear how to treat their lexpads from a GC perspective. 19:10
colomon: no matter where a (named) method is declared, directly in the class scope or nested inside something else, it goes and registers itself with the class being defined. 19:11
colomon: the only difference is what outer scope it ends up getting. 19:12
19:14 moreno88 joined
masak oh, one more thing about the nested subs. 19:14
19:14 moreno88 left
masak the parameters that end up being removed are of a certain kind: they're "context", of which you might occasionally feel "I shouldn't have to pass along this" 19:14
with nested subs, you don't :)
colomon right 19:15
pmurias sorear: do we need Perl::Critic to work on modules which can't be compiled? 19:20
sorear: i can imagine it to be helpfull in some cases but i don't think it's nessesary 19:21
colomon masak: In C++, I've sometimes spawned off a mini-class to handle those context variables in a tidy fashion. But next subs is much much nicer for the average case, I'd think. 19:22
masak aye. 19:23
I still haven't found a use for nested classes in Perl 6.
colomon masak: The classic example is something like a node class nested in a tree class. (Come to think of it, I'm sure you know that.) In practice I've I think I've only wanted to do it once so far in p6, and then I changed my mind. 19:25
masak I've seen that sometime, yes.
what would be the advantage compared to keeping it outside of the class? 19:26
colomon Done properly, it's strictly an implementation detail, and no-one else outside has any reason to access it. 19:28
masak sounds like a private class. 19:31
not sure that's doable in Perl 6.
19:33 donri joined
masak rakudo: role R[::T] { multi method foo(T $t) { say "called with a {T}!" } }; class A does R[Str] does R[Int] {}; say "alive"; A.new.foo("OH HAI") 19:37
p6eval rakudo 9ed54c: OUTPUT«alive␤get_attr_str() not implemented in class 'Sub'␤ in main program body at line 7467␤»
masak submits rakudobug
jnthn: thanks for the insider information required to concoct that one :P 19:38
19:39 shi joined
jnthn masak: (private class) lexical class! 19:40
masak ooh. yes.
jnthn That...wasn't the failure mode I expected. :)
masak rakudo: role R[::T] { multi method foo(T $t) { say "called with a {T}!" } }; class A does R[Str] { multi method foo(Int $t) { say "called with an Int!" } }; say "alive"; A.new.foo("OH HAI")
p6eval rakudo 9ed54c: OUTPUT«alive␤called with a Str()!␤»
masak rakudo: role R[::T] { multi method foo(T $t) { say "called with a {T}!" } }; class A does R[Str] { multi method foo(Int $t) { say "called with an Int!" } }; say "alive"; A.new.foo(42) 19:41
p6eval rakudo 9ed54c: OUTPUT«alive␤get_attr_str() not implemented in class 'Sub'␤ in main program body at line 7467␤»
masak huh.
flussence That looks familiar...
masak rakudo: role R[::T] { multi method foo(T $t) { say "called with a {T}!" } }; class A does R[Str] does R[Int] {}; say "alive"; A.new.foo(42)
p6eval rakudo 9ed54c: OUTPUT«alive␤called with a Int()!␤»
sorear pmurias: it would be nice to do the green squiggly line thing while editing in 6ide 19:42
pmurias: I guess "need"
is fairly strong
masak so... it only fails on the multi method that was defined first...?
rakudo: class A { multi method foo(Int $t) { say "called with an Int!" }; multi method foo(Str $t) { say "called with a Str!" } }; say "alive"; A.new.foo(42) 19:43
p6eval rakudo 9ed54c: OUTPUT«alive␤called with an Int!␤»
masak rakudo: class A { multi method foo(Int $t) { say "called with an Int!" }; multi method foo(Str $t) { say "called with a Str!" } }; say "alive"; A.new.foo("OH HAI")
p6eval rakudo 9ed54c: OUTPUT«alive␤called with a Str!␤»
masak ...of course that works.
pmurias sorear: i don't think we require perl::critic to work in real time 19:44
sorear: and it's more important to handle all the modules that compile then take the ones that don't into account also 19:45
sorear: but doing a partial syntax check for incomplete filles would be great for an ide 19:46
masak rakudo: class A { multi method foo(Int $t) { say "called with an Int!" }; multi method foo(Str $t) { say "called with a Str!" } }; A.new.foo(42); A.new.foo("OH HAI")
p6eval rakudo 9ed54c: OUTPUT«called with an Int!␤called with a Str!␤»
pmurias like eclipse detects how small errors (missing semicolon) can be fixed by it
19:47 tomaw left 19:48 tomaw joined 19:52 perimosocordiae joined
masak a parser that recovers. 19:52
arnsholt Yeah, that'd be nice 19:53
jnthn masak: "Internal server error when calling a..." - what?! 19:54
arnsholt Marpa looks interesting in that department
dalek ok: d77f68f | masak++ | src/classes-and-objects.pod:
[classes-and-objects] indented code properly

Commit courtesy of Håkan Kjellerstrand.
masak jnthn: did I write that? I must have been really distracted :P 19:55
jnthn masak: Yes :P
masak now *that's* a masakbug!
masak fixes
19:55 kanishka left
masak no worries, it's not like it went out to a whole list of people or anything. 19:55
though the idea is thrilling -- how long will it be until our compilers are in the cloud? :) 19:57
19:58 MayDaniel joined
dalek ok: 23c4e5d | masak++ | src/classes-and-objects.pod:
[classes-and-objects] fixed code thinkos

  - should be Programmer.new (becuase we're using methods from Programmer)
  - s/turing problem/halting problem/
By the way, with that kind of task, the programmer is not getting paid enough.
20:02
masak rakudo: sub foo(*%params) { push( %params<cookbook>, "Cooking for Geeks" ); }; foo(foo => 42, bar => 5) 20:05
p6eval rakudo 9ed54c: OUTPUT«Method '!fill' not found for invocant of class ''␤ in 'List::push' at line 2881:CORE.setting␤ in 'foo' at line 22:/tmp/sYNxP1wsbd␤ in main program body at line 22:/tmp/sYNxP1wsbd␤»
jnthn hm 20:06
masak fellow perl6/book authors, I think we should be thinking of building some automated test solution for the code in our book.
I found this when I wanted to check whether you can really push to a non-rw slurpy hash.
(as we seem to be doing on page 57) 20:07
pmurias masak: how will it look? assertions that don't get displayed in the book? 20:08
20:08 kanishka joined 20:09 chiehwen joined
masak pmurias: not sure. I guess some form of annotation might be necessary. 20:09
there's already a mechanism for "don't display this in the rendered output". 20:10
20:10 Mowah joined
masak jnthn: check out this commit. 20:11
dalek ok: 61baf42 | masak++ | src/classes-and-objects.pod:
[classes-and-objects] removed duplicate code
masak jnthn: I think you wrote that chapter, and I just exercised a bit of forgiveness/permission on it.
jnthn masak: +1 20:13
arnsholt masak: If you have a don't-display-this mechanism, perhaps hack the rendering code to get a complementary mode where it only renders the non-rendered stuff?
jnthn masak: Though I didn't write that bit anyway :) 20:14
stifynsemons rakudo: my $x = "this is"; $x ~~ s/^(\w)//; say $x; say $/[0]; 20:15
p6eval rakudo 9ed54c: OUTPUT«his is␤Any()␤»
stifynsemons why does that not capture the "t"?
20:17 [Coke] left
flussence I was trying to do a similar thing myself, it seems like capture groups in s/// don't get set 20:17
stifynsemons works for plain matches though 20:18
masak arnsholt: sure, but extracting the code isn't even the hard part (I think). running the code in a context where it'll run is the hard part.
20:28 [Coke] joined
pmurias the non rendered stuff can set the context 20:28
just extract the code into a test and run it
20:29 jjore left 20:31 jjore joined
masak yes. something like that. 20:31
lue blog post! rdstar.wordpress.com/2011/02/20/on...of-perl-6/ 20:39
dalek ok: b2d2699 | masak++ | src/builtins.pod:
[builtins] lower-cased a word

Brings it into harmony with the rest of the entries in the table.
ok: 8687494 | masak++ | src/builtins.pod:
[builtins] added C<%>, modulo operator

Commit courtesy of Håkan Kjellerstrand.
dukeleto lue: cool logo :)
20:41 REPLeffect left, MayDaniel left
masak lue: happy anniversary! 20:42
arnsholt masak: That is definitely true 20:43
lue dukeleto, masak: merci.
nom time! afk. 20:44
20:45 molaf left
masak lue: to the extent I helped you see the TDD light, I'm happy and proud. 20:45
(to the extent I'm not, I'm still quite happy and proud, actually)
donri How does the grammar tell hashes from blocks? 20:53
jnthn donri: I think that's done in semantic analysis rather than syntactic.
20:54 REPLeffect joined
jnthn donri: github.com/rakudo/rakudo/blob/mast...s.pm#L2234 20:54
20:55 ab5tract joined
masak donri: that's a very enlightened question, by the way. 20:55
I think S02 answers it in full.
Tene I'm a little bit irked by the overloading of {} for both hashes and blocks, but it's not going away 20:58
masak donri: ah, S04:1569 has the whole scoop. 20:59
tadzik am I the only one who frequently visits irclog.perlgeek.de just to get clickable links to specs, bugs etc? :) 21:00
masak Tene: I came to the same conclusion in strangelyconsistent.org/blog/speaki...-in-perl-6
tadzik: I know moritz_ does it, too :)
21:01 AphelionZ joined 21:02 AphelionZ is now known as Guest15810 21:05 kanishka left 21:06 Guest15810 left
arnsholt *sigh* C isn't a bad language, but it kinda feeels like swimming in mud 21:06
21:07 benabik left 21:11 Intensity joined
dalek rixel: ce8e3ed | diakopter++ | / (5 files):
stub in beginning of grammar/rule/token declaration
21:11
21:12 gbacon joined
colomon tadzik: I do it too. 21:13
diakopter me3
21:20 pmurias left
donri Why is @a[-1] bad and what does 'avoids indexing discontinuities' mean? 21:22
21:23 awwaiid_ left
tadzik there should be a weechat plugin for that 21:23
masak donri: without indexing discontinuities, -1 comes before 0. 21:27
donri: it clearly doesn't in Perl 5 (in terms of indexes, that is). thus Perl 5 has indexing discontinuities. 21:28
donri: in Perl 6, you can have an array @coords[-10..10]
donri What would that mean? 21:29
masak @coords[-1] means exactly what it looks like, no magic. it is the tenth element in the array in this case. (out of 21)
now that's not the primary reason for avoiding discontinuities, but it falls nicely out of it.
sbp how do you construct @coords to work with that kind of indexing?
masak my @coords[-10..10] 21:30
sbp aha
masak (NYI in Rakudo)
see S09 for details. it's one of the coolest synopses, if you ask me :)
donri I suppose you could also do @foo[-10] = 'bar' on any array?
masak yes. 21:31
I remember there being big, serious discussions about it on p6l. about 2007, perhaps. 21:33
not only is there a discontinuity, there's also a bit of an assymmetry. 21:34
from the left, the indexes started at 0. from the right, they started at -1.
donri hehe
can't you do $a[@a] in p5 21:35
flussence oh hai I made a thing. gist.github.com/836333
donri or uh is that $#a or something, err
masak donri: $a[@a - 1] seems to work. 21:36
donri: but I wouldn't call it p5-ish.
flussence: cool! 21:37
flussence: I should make an Emacs macro that does that for me :)
'night, #perl6
flussence o/
21:37 masak left
flussence (hm, I think urxvt can make those clickable...) 21:38
21:41 shi left 21:44 molaf joined 21:46 MayDaniel joined, Mowah left 21:49 cognominal joined
donri or make some bot link them when mentioned 21:50
jnthn sleep & 21:52
21:56 kaare_ left 21:57 PacoLinux left 22:07 kjeldahl left 22:16 vmspb joined 22:20 gbacon left
dalek rixel: 90029b8 | diakopter++ | / (7 files):
finish statement_mod_cond and statement_mod_loop
22:21
diakopter perlesque: say('hi') if 1 22:23
p6eval perlesque: OUTPUT«hi␤»
diakopter perlesque: say('hi') until 0
p6eval perlesque: 22:24
..OUTPUT«(timeout)hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi␤hi􏿽xE2􏿽x90
22:25 countley joined
sorear niecza spectest run: 6m31s, 77 files, 1218 tests, 1 file failed (for-scope.t) 22:25
moritz_++
dalek rixel: d875e1a | diakopter++ | / (4 files):
allow sub calls not to have parens......... that was *too* easy........... :/
22:30
donri rakudo: say map <one two>: *.uc 22:34
p6eval rakudo 9ed54c: OUTPUT«===SORRY!===␤Confused at line 22, near "say map <o"␤»
donri indirect object notation NYI?
Tene Probably, yes. 22:37
diakopter pugs: say map <one two>: {$_.uc} 22:38
p6eval pugs: OUTPUT«ONETWO␤»
diakopter pugs: say map <one two>: {.uc}
p6eval pugs: OUTPUT«ONETWO␤»
22:38 ab5tract left
donri pugs: say map <one two>: *.uc 22:42
p6eval pugs: OUTPUT«*** Cannot cast from VList [VStr "INF"] to Pugs.AST.Types.VCode (VCode)␤ at /tmp/nqaDnWs4sL line 1, column 5 - line 2, column 1␤»
donri no WhateverCode eh
dalek ast: fe270aa | sorear++ | S04-statements/for-scope.t:
Fix typo in S04/for-scope.t
sorear niecza: say map <one two>: *.uc 22:43
p6eval niecza v2-99-g1e36fcc: OUTPUT«===SORRY!===␤␤Invocant handling is NYI at /tmp/uiXPO3mPlN line 1 (EOF):␤------> say map <one two>: *.uc⏏<EOL>␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/SAFE.setting line 377 (SAFE die @ 2)␤ at
../home/p6eval/niecza/src…
donri "Submethods are for declaring infrastructural methods that shouldn't be inherited by subclasses" haha great name then ;)
22:46 _twitch left
donri ".=" is often referred to as in-place mutation, is it treated special? 22:51
sorear no 22:52
$x .= foo is exactly the same as $x = $x.foo
donri I know, but that'll result in a new object though won't it?
sorear of course
donri Not really in-place at all? 22:53
colomon Not really in-place at all. 22:56
22:56 plobsing left, plobsing joined
Tene rakudo: my $a = "foo"; my $b := $a; $a .= uc; say $b; 22:58
p6eval rakudo 9ed54c: OUTPUT«FOO␤»
Tene sorear: I thought there was some provision in the spec to permit optimization of in-place mutation? Am I misremembering, do you know?
diakopter .= won't necessarily result in a new object (if the method returns the same object); separately, "in-place mutation" can be an appropriate description if "in-place" is referring to a shallow notion of the local lexical scope, especially with simple/value objects 22:59
(sry in advance if/where I'm wrong) 23:01
23:02 coldhead left, coldhead joined
donri stuff like 'is rw' in a signature, does that affect some behind-curtain 'binding' thingy rather than the passed object? 23:03
23:04 bacek left 23:05 ab5tract joined
donri how does nextsame et al work with multi-inheritance? 23:11
diakopter donri: an example? :) 23:12
(let's make it a test!)
donri rakudo: class A { method go { 'A' } }; class B { method go { 'B' } }; class C is A is B { }; say C.new.go 23:14
p6eval rakudo 9ed54c: OUTPUT«A␤»
donri rakudo: class A { method go { 'A' } }; class B { method go { 'B' } }; class C is A is B { method go { nextsame } }; say C.new.go
p6eval rakudo 9ed54c: OUTPUT«A␤»
23:14 cosimo joined
donri So order matters eh? 23:14
Can you call the 'same' method of a specific parent? 23:15
23:17 leprevost joined, leprevost left, leprevost joined 23:18 leprevost left, bacek joined, leprevost joined, leprevost left, leprevost joined
donri rakudo: class A { method go { 'A' } }; class B { method go { 'B' } }; class C is A is B { self.B::go }; say C.new.go 23:23
p6eval rakudo 9ed54c: OUTPUT«===SORRY!===␤Symbol 'self' not predeclared in <anonymous> (/tmp/rNjABsP7_G:22)␤» 23:24
donri rakudo: class A { method go { 'A' } }; class B { method go { 'B' } }; class C is A is B { method go { self.B::go } }; say C.new.go
p6eval rakudo 9ed54c: OUTPUT«B␤»
donri \o/
23:28 MayDaniel left