Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2010-04-20

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 diakopter TimToady: q about STD.pm6 ^^ this morning
00:03 jnthn rakudo: say &[+]
00:03 p6eval rakudo 35bcd5: OUTPUT«Unable to parse postcircumfix:sym<[ ]>, couldn't find final ']' at line 11␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
00:06 colomon jnthn++
00:07 lue o hai
00:08 jnthn hellue!
00:08 jnthn colomon:  o/
00:17 daemon joined #perl6
00:20 jnthn > say sort(&[<=>], <1 10 2 3>).perl
00:20 jnthn ("1", "2", "3", "10")
00:22 lue that's a good thing, right?
00:22 lue rakudo: say sort(&[<=>], <1 10 2 3>).perl
00:22 p6eval rakudo ba1943: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class ''␤current instr.: '!postcircumfix:<[ ]>' pc 10733 (src/builtins/Role.pir:90)␤»
00:23 pugssvn r30412 | lwall++ | [S02] define the term 'now'
00:23 pugssvn r30412 | define math on instants and durations
00:24 jnthn lue: Yeah, just implmented that work.
00:24 jnthn gah
00:24 jnthn *form
00:25 baisong joined #perl6
00:25 TimToady diakopter: dunno, probably depends on the position of the type
00:26 diakopter mostly the contextuals
00:26 TimToady gimme5 will parse --> but do the wrong thing with it currently
00:26 TimToady well, p5's my and our accept a typename but (last I heard) ignore it
00:26 diakopter well, the contextuals and all the scalar/list declarations without initializers
00:26 diakopter O_O
00:29 TimToady bbl &
00:29 diakopter std: (now)()
00:29 p6eval std 30412: OUTPUT«[31m===[0mSORRY![31m===[0m␤Undeclared routine:␤      'now' used at line 1␤Check failed␤FAILED 00:01 107m␤»
00:45 dalek rakudo: f162a26 | jonathan++ | src/glue/subset.pm:
00:45 dalek rakudo: Correc the order we do checks of subtypes from most general to most specific, so we at least always consider type first before the extra conditions.
00:45 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​162a2644c7c34037cd95d481c43065c82687891
00:45 dalek rakudo: 1f9b1dd | jonathan++ | src/Perl6/ (2 files):
00:45 dalek rakudo: Implement &[+] shortcut form for infix ops.
00:45 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​f9b1dda95397e1216120352b06da116909dd92d
00:46 colomon oh, that's &[+] instead of &infix:<+>?
00:47 ash_ joined #perl6
00:48 colomon (and hi back to the hi's earlier, I got shanghai'd into reading good night stories for a while there.
00:48 colomon )
00:50 yinyin joined #perl6
00:51 jnthn colomon: Yes :-)
00:51 lue of course ya did :)
00:51 jnthn colomon: Heh, it was your ticket. ;-)
00:51 colomon The &[+] was?
00:51 colomon (I saw that you did Rat.new.Str, which was mine...)
00:52 jnthn colomon: Yes :-)
00:52 colomon Dang, I totally don't remember that.
00:53 colomon Please tell me it was from last year, at least.  :)
00:53 jnthn Date:  Wed, 29 Jul 2009 08:55:54 -0400
00:53 jnthn http://rt.perl.org/rt3/Tic​ket/Display.html?id=65588
00:53 jnthn std: say "\123"
00:53 p6eval std 30412: OUTPUT«[31m===[0mSORRY![31m===[0m␤Unrecognized backslash sequence: '\1' at /tmp/aQmtsVrzvv line 1:␤------> [32msay "\1[33m⏏[31m23"[0m␤Check failed␤FAILED 00:01 107m␤»
00:54 colomon crazy!  nine months ago, seems like a lifetime.
00:57 jnthn We're back under 630 tickets.
00:57 colomon \o/
00:57 jnthn I musta given moritz++ about ten or so of them to write or check we have tests for too.
00:57 lue Yay!
00:58 jnthn (or anyone who fancies writing tests of course)
00:59 colomon any chance you'll have some time to look at my role issues?  (wants a pleading face smiley...)
01:00 jnthn colomon: It's like 3am and I"m kinda meant to work tomorrow. Harrass me about it tomorrow.
01:00 colomon jnthn++
01:00 colomon sure thing.
01:00 jnthn Tonight I just wanted to finsih my hash slice patch which has been sitting half-done on my computer for about a week.
01:00 jnthn And then got sucked into LHF and reviewing RT. :-)
01:00 colomon ah, I thought the check-in early was it.
01:00 colomon (misread, obviously it was it.)
01:01 lue what is LHF?
01:01 colomon low-hanging fruit, the kind that is easy to pick.
01:02 jnthn colomon: Yes, I did finish it. :-)
01:02 jnthn Then got sucked in. ;-)
01:03 colomon sucked into the bug-fixing vortex!
01:03 colomon jnthn++
01:04 colomon should I try to get chromatic looking at the memory usage of the mandelbrot script?
01:04 lue *slurp*
01:04 jnthn 627. :-)
01:05 jnthn colomon: Maybe, yeah...he may be able to determine at least if it leaks or is just having a hungry.
01:06 lue the stalled ones bug me :)
01:07 pugssvn r30413 | lwall++ | [STD] implement now term
01:07 pugssvn r30413 | [CORE.setting] a few more time-related names
01:08 lue those 5 stalled bugs. Let's do something about them :)
01:08 * jnthn didn't know we only had 5 of them :-)
01:09 lue the numbers are coming up...
01:11 lue #52242 #58922 #62068 #62224 #67064
01:11 gurjeet joined #perl6
01:11 dalek rakudo: b05155e | (Martin Berends)++ | src/cheats/setup-io.pm:
01:11 dalek rakudo: [src/cheats/setup-io.pm] implement $*PID and make the source code even more cheaty.  Parrot TT#1564 requests a less cheaty feature.
01:11 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​05155eea4cf7e6c79e8046e40edc440048a1bbd
01:12 lue .oO( oh, and get rid of the cheating at some point :) )
01:13 jnthn Wow. I've trawled through the whole RT queue tonight. :-)
01:14 lue :O
01:14 lue rakudo: my @a = (1); @a[0] := @a; @a.perl # starting with #58922
01:14 p6eval rakudo ba1943: OUTPUT«:= binding of variables not yet implemented␤current instr.: '&die' pc 17194 (src/builtins/Junction.pir:404)␤»
01:15 lue Ah! D:
01:16 lue that is really annoying at this point
01:16 orafu joined #perl6
01:17 jnthn Aye.
01:18 lue It's a problem with self-referent structures and how .perl should handle them
01:18 jnthn Ok, I think I'm done for tonight. I didn't plan to stay up until 3:20am!
01:18 lue good night then o/
01:18 * jnthn has quite a lot of $dayjob tasks tomorrow. :-)
01:18 jnthn night o/
01:19 lue afk (but _not_ goodnight)
01:38 diakopter sorear: ping
01:41 * diakopter ponders how to implement contextuals
01:42 * diakopter considers a very hacky thing
01:46 diakopter sigh. a bunch of dynamic checks will have to suffice until I or someone else can think of a more elegant/efficient implementation.
01:56 diakopter does rakudo do contextuals?
01:56 diakopter (i've forgotten)
01:57 Psyche^ joined #perl6
01:58 diakopter TimToady: if a routine assigns to a contextual more than once in a single code path, to which value does it revert when the routine returns?
01:58 diakopter I guess the original?
02:01 * diakopter figures out an efficient way to solve it.  whee.
02:01 diakopter contextuals coming right up.
02:04 sail0r joined #perl6
02:06 awwaiid joined #perl6
02:23 gurjeet joined #perl6
02:23 snarkyboojum joined #perl6
02:25 diakopter the only check at runtime will be 1 int comparison for each contextual that could possibly have been assigned-to in the routine at the end of the routine.
02:27 huf joined #perl6
02:29 nihiliad joined #perl6
02:36 dual joined #perl6
02:39 agentzh joined #perl6
03:06 molaf joined #perl6
03:25 gfx joined #perl6
03:33 diakopter this is taking quite a long time to code up.
03:46 sorear diakopter: pong
03:47 hejki usually when something takes longer than estimated it's either caused by bad design or too much simultaneous ircing while working
03:48 sorear don't plan to throw one away
03:48 sorear plan for 8
03:56 diakopter hejki: :D but I didn't estimate...
03:58 diakopter no srsly it's a lot of coding.  I can't think of a more efficient design....
04:00 sorear oh wow
04:01 sorear bug closings!
04:19 alester joined #perl6
04:24 meppl joined #perl6
04:49 quester_ joined #perl6
04:55 CokeBot9000 szabgab: ping.
04:55 szabgab CokeBot9000, reping
04:55 szabgab hmm, is this really a bot?
04:56 diakopter almost there..
04:56 diakopter "stay on target..."
04:58 hicx174 joined #perl6
04:58 CokeBot9000 szabgab: no, it's Coke.
04:59 CokeBot9000 szabgab: are you still having trouble building rakudo on windows?
04:59 CokeBot9000 http://rt.perl.org/rt3/Tic​ket/Display.html?id=67574 ?
04:59 CokeBot9000 Looks like you were trying to build it without a parrot in your path.
04:59 szabgab I have built it since then I am quite sure
04:59 ReiniUrban joined #perl6
05:00 szabgab so from my pov that ticket is irrelevant
05:00 CokeBot9000 Danke. Closing...
05:00 szabgab ty
05:01 szabgab what happened to the real Coke?
05:01 CokeBot9000 someone on freenode stole my nick!
05:01 CokeBot9000 or, you know, registered it several years before I bothered to show up.
05:01 szabgab oh
05:03 CokeBot9000 question on http://rt.perl.org/rt3/Tic​ket/Display.html?id=68662 - shouldn't that test be checking for $frew == 5 instead of 15?
05:06 CokeBot9000 rakudo build question - why dump all the .pm files into the giant core.pm ? why not just build those pms individually?
05:08 CokeBot9000 (68662) - nevermind, test was fixed, ticket is still borked.
05:09 CokeBot9000 rakudo: multi sub infix:<+=> (Num $a, Num $b) { $a -=
05:09 CokeBot9000 $b }
05:09 p6eval rakudo b05155: OUTPUT«Unable to parse blockoid, couldn't find final '}' at line 11␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
05:09 CokeBot9000 rakudo: multi sub infix:<+=> (Num $a, Num $b) { $a -= $b}
05:09 p6eval rakudo b05155:  ( no output )
05:09 CokeBot9000 rakudo: multi sub infix:<+=> (Num $a, Num $b) { $a -= $b}; my $joe = 10; $joe += 4; say $joe;
05:10 p6eval rakudo b05155: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 17194 (src/builtins/Junction.pir:404)␤»
05:10 CokeBot9000 rakudo: multi sub infix:<+=> (Num $a, Num $b) { $a = $a - $b}; my $joe = 10; $joe += 4; say $joe;
05:10 p6eval rakudo b05155: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 17194 (src/builtins/Junction.pir:404)␤»
05:11 CokeBot9000 I can't build rakudo-current. getting complaints on Undef.
05:11 CokeBot9000 invoke() not implemented in class 'Undef'
05:13 finanalyst joined #perl6
05:15 finanalyst alpha: $_="a\tb\tc"; my ($k,@f) = map { .trim }, .split("\t"); @f.perl.say;$k.say
05:15 p6eval alpha 30e0ed: OUTPUT«["b", "c"]␤a␤»
05:15 finanalyst rakudo:$_="a\tb\tc"; my ($k,@f) = map { .trim }, .split("\t"); @f.perl.say;$k.say
05:15 finanalyst rakudo: _="a\tb\tc"; my ($k,@f) = map { .trim }, .split("\t"); @f.perl.say;$k.say
05:15 p6eval rakudo b05155: OUTPUT«Could not find sub &_␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
05:16 finanalyst rakudo: $_="a\tb\tc"; my ($k,@f) = map { .trim }, .split("\t"); @f.perl.say;$k.say
05:16 p6eval rakudo b05155: OUTPUT«[["b", "c"]]␤a␤»
05:17 aesop perl 5.12!!
05:20 finanalyst rakudo: $_="a\tb\tc"; my $k,@f = map { .trim }, .split("\t"); @f.perl.say;$k.say
05:20 p6eval rakudo b05155: OUTPUT«Symbol '@f' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)␤»
05:23 diakopter perlesque: my $*a = 5; say($*a); my $b = sub int () { $*a = 7; say($*a); return 1 }; $b(); say($*a)
05:23 p6eval perlesque: OUTPUT«5␤7␤5␤»
05:23 diakopter perlesquel: .
05:23 p6eval perlesquel: OUTPUT«5␤7␤5␤real 0.04␤user 0.05␤sys 0.00␤»
05:24 diakopter and, I present to you, contextuals.
05:26 quester_ rakudo: multi sub infix:<+=> (Num $a is rw, Num $b) { $a = $a - $b}; my $joe = 10; $joe += 4; say $joe;
05:26 p6eval rakudo b05155: OUTPUT«6␤»
05:27 diakopter heh
05:28 kaare joined #perl6
05:28 quester_ CokeBot9000: your infix:<+=> just needs "is rw" on $a.
05:33 finanalyst alpha: $_ = "a\tb\tc\td"; my @f=map { .trim }, .split("\t"); my %h; %h{@f[0]} = @f[1 ..^ +@f]; %h.perl.say
05:33 p6eval alpha 30e0ed: OUTPUT«{"a" => ["b", "c", "d"]}␤»
05:33 finanalyst rakudo: $_ = "a\tb\tc\td"; my @f=map { .trim }, .split("\t"); my %h; %h{@f[0]} = @f[1 ..^ +@f]; %h.perl.say
05:33 p6eval rakudo b05155: OUTPUT«{"a" => Seq.new()}␤»
05:35 finanalyst alpha: my @a = 1,2,3,4; my %h= @a[0] => @a[1 ..^ +@a]; %h.perl.say
05:35 p6eval alpha 30e0ed:  ( no output )
05:36 finanalyst alpha: my @a = 1,2,3,4; my %h; %h{@a[0]} = @a[1 ..^ +@a]; %h.perl.say
05:36 p6eval alpha 30e0ed: OUTPUT«{"1" => [2, 3, 4]}␤»
05:36 finanalyst rakudo: my @a = 1,2,3,4; my %h; %h{@a[0]} = @a[1 ..^ +@a]; %h.perl.say
05:36 p6eval rakudo b05155: OUTPUT«{"1" => Seq.new()}␤»
05:37 CokeBot9000 quester_: can you patch the spectest for that?
05:38 CokeBot9000 Actually I guess I can. =-)
05:38 diakopter rakudo: my $*a = 5; say($*a); my $b = sub () { $*a = 7; say($*a); return 1 }; $b(); say($*a)
05:38 p6eval rakudo b05155: OUTPUT«5␤7␤7␤»
05:38 diakopter perlesque: my $*a = 5; say($*a); my $b = sub () { $*a = 7; say($*a); return 1 }; $b(); say($*a);
05:38 p6eval perlesque: OUTPUT«5␤7␤5␤»
05:38 diakopter pugs: my $*a = 5; say($*a); my $b = sub () { $*a = 7; say($*a); return 1 }; $b(); say($*a);
05:38 p6eval pugs: OUTPUT«␤7␤7␤»
05:38 quester_ Cokebot9000: Oh.  Good thing, I don't have a commit bit.
05:40 pugssvn r30414 | coke++ | Since we're modifying the LHS, it needs to be rw.
05:40 pugssvn r30414 |
05:40 pugssvn r30414 | quester++ on #perl6
05:40 diakopter oh, it's 'my' on the inner contextual.  oh yeah...
05:40 diakopter heeeeee
05:40 finanalyst rakudo: my @a = 1,2,3,4; my %h; %h{@a[0]} = @a[1 ..^ +@a]; %h.say
05:40 p6eval rakudo b05155: OUTPUT«1  2 3 4␤␤»
05:41 diakopter oh, that's easier.  SIGH
05:41 quester_ finanalyst: I think the .perl method is the culprit:
05:41 finanalyst Yes just come to that conclusion
05:41 quester_ rakudo: my @a = 1,2,3,4; my %h; %h{@a[0]} = @a[1 ..^ +@a]; %h<1>.eager.perl.say
05:41 diakopter hejki: you were right; incorrect design :)
05:41 p6eval rakudo b05155: OUTPUT«(2, 3, 4)␤»
05:41 hejki diakopter: not preplanning all logical steps usually leads to that :>
05:42 diakopter I guess I could bother to read the spec, too, instead of relying on faulty memory
05:42 hejki :P
05:42 quester_ finanalyst:  .perl could call .eager at each structure level, although that would cause other mischief with real lazy list.
05:42 diakopter ah well; I should be able to make the change quickly now that the reversion structure is in place.
05:42 diakopter after all, it's a syntactic difference only
05:42 quester_ ... err, s/list/lists/
05:42 sorear diakopter: you ping me, then you ignore me. :(
05:43 finanalyst is this worth a bug report?
05:43 diakopter sorear: o hai
05:43 quester_ finanalyst:  Yes... I'm not sure how it's speced though.
05:44 diakopter sorear: sry. I was just going to ask if you've implemented dynamically scoped variables before
05:44 diakopter merely curious.
05:44 finanalyst rakudo: my @a= ^5; say @a[1 ..^ *]
05:44 sorear yes
05:44 p6eval rakudo b05155:  ( no output )
05:44 sorear perl 6 contextuals are a little weird though
05:45 finanalyst alpha: my @a= ^5; say @a[1 ..^ *]
05:45 p6eval alpha 30e0ed: OUTPUT«1234␤»
05:45 sorear because they aren't just dynamically scoped - they're also thread-local
05:45 sorear does CLR support TLS?
05:45 diakopter ?
05:46 * diakopter will have to read up on that.
05:46 diakopter I bought "Concurrent Programming on Windows" a few weeks ago, and have barely cracked it.
05:46 diakopter it covers both CLR stuff and C++
05:47 diakopter and most of the CLR stuff applies to linux/mono
05:47 sorear what does C++ have to do with concurrent programming
05:47 diakopter that's kindof a combative question
05:49 sorear not really
05:49 diakopter I mean, how would I know?
05:49 sorear C++ is one of many programming languages
05:49 sorear and it's not a programming language designed to research concurrency issues (like CSP)
05:49 diakopter the book is not a research book.
05:49 sorear so... why is it treated as part of "concurrent programming"
05:50 diakopter the book has nothing to do with academia
05:50 diakopter feel free to read about it on Amazon if you're curious.
05:52 diakopter sorear: to answer your question, I assume the book focuses on C++ and the CLR because those are the languages/environmenets most Windows programmers use.
05:57 uniejo joined #perl6
06:00 snarkyboojum joined #perl6
06:03 |Jedai| joined #perl6
06:05 diakopter I'll correct the contextual semantics tomorrow night.
06:06 jonasbn joined #perl6
06:20 clintongormley joined #perl6
06:51 yinyin left #perl6
06:54 quester_ Does anyone have an opinion on what   "my $a=(1,1,* + * ... *); $a.perl.say;"   should print?  Does   'GatherIterator(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ???)"   look about right?
06:55 moritz_ quester_: not quite, since evaling it back doesn't return the original sequence
06:56 TimToady I'd think it should say "1, 1, *+* ... *"
06:56 moritz_ problem is, currently we don't serialize closures
06:56 moritz_ or any type of code objects, for that matter
06:56 TimToady well, 1,1,<mumble>...* for now :)
06:57 moritz_ 1,1,{...}...* probably
06:57 TimToady looks like a mumble to me :)
06:57 quester_ Umm, well, yes, it would be nice if it were that intelligent, but if the seqence is, say, an IO object, that's going to be much, much, more difficult.
06:58 quester_ I was thinking we could print the first n values, for some value of n, and it would be of some help in debugging.
06:58 quester_ Moreover, it would finish in finite time, unlike the current implementatio.
06:58 TimToady that would be something other than .perl
06:58 moritz_ quester_: well, it would be an improvement
06:59 pugssvn r30415 | moritz++ | [t/spec] unfudge some tests that rakudo now passes
06:59 pugssvn r30415 |
06:59 pugssvn r30415 | <rant>A test file with all tests fudged for the same implementation doesn't
06:59 pugssvn r30415 | really make sense - who does such a thing?</rant>
06:59 quester_ Okay... does the first ten values strike you as reasonable, and add {???} at the end if there are more?
07:00 moritz_ I think it's an improvement, but it's not quite correct
07:00 TimToady I think that's a reasonable thing for *say* to do with an infinite list
07:00 moritz_ std: 1 [+] 2
07:00 p6eval std 30414: OUTPUT«ok 00:01 109m␤»
07:02 sorear quester_: it's perfectly legal to form a sequence where computing the 10th value requires 15 billion years
07:02 pugssvn r30416 | moritz++ | [t/spec] more tests for &[+] and [+] short forms
07:02 TimToady but I'd say first thirty or forty values in that case
07:02 sorear so I don't really think "just the first ten" makes much sense
07:02 sorear personally I support TimToady's initial proposal
07:02 sorear I played with FORTH once, my favorite feature was the integrated decompiler
07:03 quester_ TimToady:  So...  in your opinion, and perhaps just as a stopgap measure until [some] code can be serialized, (1,1,* + * ... *).perl.say should print...?
07:03 sorear 1, 1, {...} .. * ?
07:03 moritz_ '1, 1, {...} ... *'
07:03 sorear rakudo: (* + *).perl.say
07:03 p6eval rakudo b05155: OUTPUT«{ ... }␤»
07:04 quester_ Oh.  Hmm.  Okay, but I can't write a patch that sophisticated...
07:05 moritz_ isn't there an internal interface for finding out which values are already evaluated?
07:06 TimToady that's what I keep saying, a list is just like an array, in the sense that it has a reified part and an imaginary part
07:06 clintongormley joined #perl6
07:06 TimToady I'd think the reified part of a list would (internally) look very much like an array
07:06 TimToady (a reified array)
07:07 TimToady the difference between a list and an array is in the
07:07 TimToady API
07:07 TimToady but the internals are almost identical
07:07 moritz_ TimToady: and you still believe people listen to you, just because you're the language designer? :-)
07:08 TimToady well, sometimes I have to repeat myself till either I change my mind or everyone else does...
07:08 moritz_ rakudo: sub foo($a?, $b) { }
07:08 p6eval rakudo b05155: OUTPUT«Can't put required parameter after optional parameters at line 11, near ") { }"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
07:08 clintongormley it's almost like believing that the french listen to the les immortels
07:08 TimToady std: sub foo($a?, $b) { }
07:08 p6eval std 30414: OUTPUT«[31m===[0mSORRY![31m===[0m␤Can't put required parameter after optional parameters at /tmp/BZjReZ3qDN line 1:␤------> [32msub foo($a?, $b[33m⏏[31m) { }[0m␤Check failed␤FAILED 00:01 108m␤»
07:09 TimToady std: sub foo($a?, $b) { }; 42 43
07:09 p6eval std 30414: OUTPUT«[31m===[0mSORRY![31m===[0m␤Can't put required parameter after optional parameters at /tmp/A6w5xbl3K9 line 1:␤------> [32msub foo($a?, $b[33m⏏[31m) { }; 42 43[0m␤Two terms in a row at /tmp/A6w5xbl3K9 line 1:␤------> [32msub foo($a?, $b) { }; 42 [33m⏏[31m43[0m␤
07:09 p6eval ..expecti…
07:09 spinclad sorear: 'perl 6 contextuals [are] thread-local' -- as i recall the spec, it's rather that they are easily thread-localized, with a 'my'.
07:09 moritz_ jnthn++ # giving me 15 tickets last night
07:09 gfx joined #perl6
07:10 spinclad the les immortels -- is that like the hoi theoi?
07:10 quester_ rakudo: my $a=(1,2,4...*); $a.get.say; $a.get.say; $a.get.say;
07:10 p6eval rakudo b05155: OUTPUT«1␤2␤4␤»
07:10 clintongormley http://en.wikipedia.org/wiki/Les_Immortels - the members of the académie francaise, who decide what is allowable french and what is not
07:11 clintongormley otherwise known as the last bastion against the english
07:11 quester_ The "get" method is the only public method I see in src/cheats/gatheriterator.pir
07:12 moritz_ quester_: you can still use private methods internally
07:12 TimToady std: now now
07:12 p6eval std 30414: OUTPUT«[31m===[0mSORRY![31m===[0m␤Two terms in a row at /tmp/JbW6uR8mFO line 1:␤------> [32mnow [33m⏏[31mnow[0m␤    expecting any of:␤        bracketed infix␤  infix or meta-infix␤      statement modifier loop␤Parse failed␤FAILED 00:01 107m␤»
07:13 moritz_ TimToady: re latest spec changes, now + 300 # isn't that precisely what you wanted to discourage, because it's wrong in the presence of leap seconds?
07:13 quester_ So no, unless I'm missing somethngi, there doesn't appear to be any notion of reified (cached?) values in the GatherIterator.
07:13 dalek rakudo: 027ff40 | moritz++ | t/spectest.data:
07:13 dalek rakudo: [t/spec] enable S03-operators/nesting.t
07:13 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​27ff404a6b005bc3182d07095fd22864b5b51fc
07:13 spinclad clintongormley: sorry, just snarking on the double article.
07:14 quester_ moritz_:  True, but !gather_coroutine and !GATHER don't look very useful in this context...
07:14 TimToady moritz_: instants and durations have no $#@#$ clue about leap seconds
07:14 clintongormley oh did i? :)  i was about to write the immortals, then changed it :)
07:14 TimToady leap seconds are civil time, not atomic
07:14 * moritz_ isn't civil :-)
07:15 moritz_ -> decommute &
07:15 spinclad 11:59:00 + 120 over a leap second = 12:00:59, because the 120  is true seconds
07:15 spinclad /is/are
07:16 spinclad oop, /11/23/ and /12/00/
07:17 TimToady yes, you don't want the X-ray machine running an extra second merely because there happened to be a leap second in the middle
07:18 TimToady civil time is like having a number system in which 2 sometimes equals 3
07:18 sorear quester_: if it's in /cheats/, all is not how it appears
07:19 TimToady if all iterators eventually allow unget, then all iterators will eventually require a reified part, at least optionally
07:19 sorear there's a lot of monkeypatching and clandestine cooperation in /cheats/, the dark underworld of Rakudo
07:20 sorear spinclad: Contextuals in Perl 6 are defined in terms of walking up the call stack, which is always a thread-local structure
07:20 quester_ sorear:  No doubt....  I've noticed that almost everything I've looked at in rakudo, not just /cheats/.
07:20 sorear the stack is the mother of all thread-local structures
07:21 TimToady sorear: whatever spawned your thread is the caller of the thread
07:21 TimToady so all threads eventually converge on the same outer scopes
07:21 sorear yes
07:21 TimToady they all see the same $*PID, for instance, unless the thread itself redefines is
07:21 TimToady *it
07:22 sorear fun implementation trick of the day: On Linux (i386 kernel mode), stacks are 8kb in size and 8kb aligned.  To access thread local data, the top N-13 bits of the stack pointer are masked off, and the TLS block is located at a fixed offset from the stack bottom
07:22 TimToady for readonly values, it makes no difference whether values are copied into the thread (as env vars are into Unix processes), or if you just keep walking up the call stack
07:23 sorear user TLS doesn't use quite such a clever implementation, mostly because user stacks can grow
07:23 TimToady for rw values, locking or some such will be needed outside of a thread
07:23 sorear values are bound into the thread, then
07:23 TimToady the value of a rw var is its container's identity
07:24 TimToady that can be copied in, but the contained value is shared by all dynamic scopes, incl threads
07:24 TimToady if one thread changes is, they all see it
07:25 TimToady a thread can explicitly copy in the current value, of course
07:25 spinclad 'the lvalue of a rw var'?
07:25 TimToady and make its own thread-local version at the top scope of the thread
07:25 iblechbot joined #perl6
07:26 jaldhar_ joined #perl6
07:26 TimToady currently 'temp $*PID;' at the top of the thread would make the thread have its own copy
07:27 TimToady that's short for something like 'my $*PID = DYNAMIC::<$*PID>;'
07:27 riffraff joined #perl6
07:27 TimToady unless that finds the new one by accident :)
07:29 IllvilJa o/
07:29 spinclad \p
07:31 * spinclad to bed lest he fall asleep on channel  &
07:31 * TimToady 2 &
07:34 * quester_ afk
07:36 jaldhar_ joined #perl6
07:36 * sorear wonders if temp $*PID; is Perl6 for fork()
07:37 hercynium joined #perl6
07:41 sorear hmm, S17 looks very drafty
07:43 moritz_ draftiness is a nearly monotonic function of the synopsis number
07:57 ejs joined #perl6
08:01 sorear wait, Date is in the /setting/
08:01 sorear ?
08:01 sorear no 'need Date;'?
08:01 moritz_ right
08:03 ejs joined #perl6
08:04 sorear src/core/Date.pm looks like a good application for an anonymous module
08:05 moritz_ how so?
08:06 moritz_ the helper subs maybe just need to go inside the class
08:06 moritz_ haven't tried that yet
08:07 sorear import (module { sub private { ... }; sub public is export { ... }; })
08:08 sorear actually this could have ramifications on the separate setting compilation project
08:08 sorear put all the /core/ bits in named modules, and make the setting 'use Rakudo::Any; use Rakudo::Num; use Rakudo::Date; ...; YOU_ARE_HERE"
08:09 moritz_ I think the bigger problem is currently how to handle traits
08:09 sorear is Rakudo::Date supposed to export anything beyond 'Date'?
08:09 sorear How so?
08:09 moritz_ because they are defined in the setting
08:09 moritz_ and needed by the setting
08:10 moritz_ so maybe we need to add another compilation stage
08:10 mberends fwiw, to reduce the size of the main executable when Date is not used, I would like Date.pm to be a separate file that the application "use"s, and that is always installed with Rakudo.
08:11 mberends it would be a first experiment with system components loadable at runtime, an important technique for scalability
08:11 moritz_ mberends: what would happen then when you don't use Date, and say DateTime.now.Date?
08:12 moritz_ would it blend? :-)
08:12 mberends moritz_: I'll figure that answer out later, I'm sure it's solvable
08:14 mberends it may fall out of a to-be-specced pluggable locale design
08:15 mberends hopefully Rakudo can load Date.pbc or Date.pir quite efficiently
08:16 mberends also there should be a complementary Time.pm for symmetry
08:17 sorear rakudo: $*PID.say
08:17 p6eval rakudo 027ff4: OUTPUT«22600␤»
08:19 mberends moritz_: I would spec it that if you want Date only without time, the program *must* contain "use Date;", and then DateTime.now.Date would cease to exist.
08:21 moritz_ that would be very sad
08:21 moritz_ if DateTime and Date didn't integrate properly
08:22 moritz_ also if we move Date out of core (and make available as a module), then I'd love to see that for lots of other stuff too
08:22 moritz_ DateTime, KeyBag, KeySet, ...
08:22 mberends moritz_: it's one of those "where to draw the line" questions. I'm for a compact (and faster) core.
08:23 moritz_ I'd be fine with that - you have to get consensus from TimToady here
08:23 mberends sure :-)
08:25 mberends btw, TimToady++'s X-ray scanner example at 07:17 of why civil time is so dumb is really good http://irclog.perlgeek.de/​perl6/2010-04-20#i_2243817
08:27 mberends unfortunately most computers rely on a CMOS clock that is set to civil time, and Parrot knows no more than that.
08:28 masak joined #perl6
08:33 masak oh hai, #perl6
08:33 m6locks oh hai
08:33 mathw oh hai masak
08:33 masak nice to see jnthn++ cause a lot of closages in RT :)
08:35 moritz_ he transferred 15 tickets to me
08:35 dakkar joined #perl6
08:35 mathw closages?
08:35 masak sorry, I meant closifications.
08:36 mathw ah that's okay then
08:36 masak jnthn: ah, yes #71478 was the one I thought of in my kitchen a few weeks back. the scary one :)
08:36 masak thanks for closifying that.
08:42 sorear civil time should be called astronomical time
08:42 sorear civil time is about taking real time, and fudging it so that the revolution of the Earth, Moon, and Earth-around-Sun are all "neat"
08:43 sorear it's important to some people that the Sun be directly overhead at 12:00
08:43 huf which is ultimately silly, as the entire situation is temporary
08:43 huf the earth isnt the center ;)
08:43 sorear but you can't get that with real time, because the earth is randomly speeding up and slowing down like one of those chaos pendulum toys
08:44 sorear it basically /is/ one
08:44 mberends hence leap seconds
08:45 huf just count seconds with the usual prefixes
08:46 sorear atomic time should be called proper time
08:46 sorear proper time is a relativity concept - time measured by a perfect clock in a sealed box
08:46 sorear your X-ray machine gives off radiation by the proper-second
08:47 sorear time, as observed by the machine
08:47 sorear under normal circumstances (computer and operator are ~ at relative rest), proper time is likely to be what the user expects too
08:47 sorear CPU clocks count in proper time
08:48 sorear proper time has the annoying disadvantage that you can't meaningfully compare it
08:48 sorear proper time measured on Earth does not tick synchronously with proper time in orbit
08:49 sorear when Perl 6 starts being used for programming on spacecraft and satellites, this is going to be a lot more important
08:50 moritz_ and you think those people will use the built-in time mechanisms?
08:50 sorear only if we let them
08:50 sorear only if we force them to
08:51 sorear no, let was correct
08:51 mberends internet connected computers often use NTP which is based on UTC, which is offset from TAI by the leap seconds. http://en.wikipedia.org/wiki/Network_Time_Protocol
08:51 moritz_ Perl 6 never tries to force anybody to do anything in a particular way :-)
08:51 sorear if we use built-in time mechanisms that are stuck in the first millenium, then yes spacecraft engineers will NIH time
08:52 sorear I think it would be awesome if Perl 6 was the first mainstream programming language to embrace the distinctions between proper, civil, and coordinate time
08:52 sorear we're already mostly there
08:52 moritz_ I don't think there are sufficiently many use cases for built-in relativistic time diletation calculations :-)
08:53 mathw Just as long as I don't have to say my $f = DateTime::Gregorian::Civil::Factory.new; my $time = $f->time(DateTime::TimeZone::SYSTEM); to get the time.
08:53 sorear we don't even need to calculate, we can let the user do that
08:53 sorear but we should draw lines in the sand
08:53 sorear "this Time is a ProperTime"
08:54 sorear earthbound people can treat ProperTime as Interval and things will work
08:54 jnthn morning o/
08:54 moritz_ \o jnthn
08:54 sorear we can't automatically translate between ProperTime and CoordinateInterval, anyway
08:54 sorear the conversion factors depend on your trajectory
08:54 moritz_ jnthn: will you fix the two regressions in syntax.t before the release tomorrow, or should I fudge them out?
08:55 masak jnthn++: mroing! :)
08:58 jnthn moritz_: Feel free to fudge, I'd *like* to fix 'em but didn't actually get down to the root cause of them yet.
08:58 jnthn moritz_: Please file a ticket so we don't forget. :-)
08:58 jnthn masak: oh hai
09:00 moritz_ sure, will do
09:01 masak std: now
09:01 moritz_ http://www.perlmonks.org/?node_id=835731 chromatic++
09:01 p6eval std 30416: OUTPUT«ok 00:01 109m␤»
09:01 jnthn moritz_++ # thanks
09:01 moritz_ std: then
09:01 p6eval std 30416: OUTPUT«[31m===[0mSORRY![31m===[0m␤Undeclared routine:␤      'then' used at line 1␤Check failed␤FAILED 00:01 107m␤»
09:01 jnthn std: later
09:01 p6eval std 30416: OUTPUT«[31m===[0mSORRY![31m===[0m␤Undeclared routine:␤      'later' used at line 1␤Check failed␤FAILED 00:01 107m␤»
09:01 masak std: laterz
09:02 p6eval std 30416: OUTPUT«[31m===[0mSORRY![31m===[0m␤Undeclared routine:␤      'laterz' used at line 1␤Check failed␤FAILED 00:01 107m␤»
09:04 masak chromatic++ indeed
09:05 jnthn chromatic++
09:05 jnthn That *is* a good post.
09:05 masak sorear: sounds like a good idea for a module.
09:05 masak (the relativistic stuff)
09:06 masak "You just need to be a little bit patient, a little bit stubborn, a lot interested, and humble enough to be willing to learn and to experiment." -- that puts it better than I've ever managed.
09:17 mathw the second comment, however, is astonishing
09:17 mathw and kind of insulting
09:18 mathw and also displays great ignorance
09:18 mathw it's not like the perl 6 grammar engine is a simple instance of a context-free parser
09:18 mathw most of us could write one of those without too much difficulty
09:18 mathw excellent node though
09:18 mathw chromatic++
09:28 masak mathw: AFAIU pmichaud's background, he has just that, skills 'acquired in universities(preferably good ones) where professors teach courses like "Formal Languages and Automata" or "Compiler theory"'.
09:28 masak he even taught such courses himself.
09:29 masak oh! moritz_++ says as much in a reply.
09:32 mathw quite
09:32 mathw and I've done those courses at least...
09:32 mathw not that I'd really care to take on the perl 6 grammar engine by myself
09:32 mathw because pmichaud's a lot cleverer than me :)
09:32 mathw and as you point out, has much greater experience as well
09:32 * mathw -> meeting/argument
09:35 moritz_ rakudo: say <a b c>.Seq.perl
09:35 p6eval rakudo 027ff4: OUTPUT«Seq.new()␤»
09:35 moritz_ seems like a LHF to improve that
09:36 masak it does.
09:40 masak interesting to see how many comments are written by 'Anonymous Monk' in the http://www.perlmonks.org/?node_id=835419 thread. feels like a much higher ratio than usual on perlmonks.
09:40 moritz_ and there are at least two different anon monks
09:40 masak aye.
09:40 moritz_ one full of FUD, and one genuinely interested
09:41 moritz_ probably more than one of the latter category
09:42 masak I count at least two of the latter category.
09:47 snarkyboojum joined #perl6
09:48 sorear does "my method" currently make sense?
09:48 jnthn yes
09:48 sorear what does it do?
09:49 masak install the method in the lexical scope.
09:49 * sorear has just had a revelation on how to solve most of our hll interop problems using a new notion of lexical methods, henceforth termed methodicals
09:50 sorear masak: what does a method that's not installed in a class mean?
09:51 masak that's a good question.
09:51 quester_ masak and moritz_:  I'm working on a patch for Seq.perl (and also GatherIterator.perl, although that one is too deep to take more that a superficial swipe at.)
09:51 sorear and where should I talk about methodicals?  p6l?
09:51 masak aye. or here.
09:51 masak rakudo: class A { my method foo() { say "OH HAI" }; A::foo(A) }
09:52 p6eval rakudo 027ff4: OUTPUT«too many positional arguments: 2 passed, 1 expected␤current instr.: 'perl6;Failure;' pc 15153 (src/builtins/Array.pir:77)␤»
09:52 masak rakudo: class A { my method foo() { say "OH HAI" }; A::foo() }
09:52 p6eval rakudo 027ff4: OUTPUT«Can not find sub A::foo␤current instr.: 'perl6;Perl6Exception;throw' pc 14719 (src/builtins/Seq.pir:41)␤»
09:52 jnthn The second is what I expected
09:52 jnthn The first is...er...oops :-)
09:53 jnthn Anyway
09:53 jnthn write "our" for that.
09:53 masak jnthn: first one if a bug, that's what you mean?
09:53 * masak grins
09:53 masak s/if/is/
09:54 masak rakudo: class A { method foo() { say "OH HAI" }; A.foo }
09:54 p6eval rakudo 027ff4: OUTPUT«OH HAI␤»
09:55 sorear masak: I need more space to explain what they are and why they're awesome.  At least a few paragraphs.
09:56 sorear so I'll pitch them on p6l tomorrow.
09:56 sorear I've had lots of nice insights about interop and blizkost tech today... expect interesting things tomorrow
09:56 jnthn masak: Yes, it's a bug and I know why too.
09:56 * masak submits rakudobug
09:57 jnthn (the thingy that throws the "OMFG that doesn't exist!!1!!" thing gets upset about arguments :-))
09:57 sorear jnthn: can you give me a /working/ example of what my method needs now?
10:00 jnthn rakudo: class A { method foo() { say 42 }; foo() } # won't find it
10:00 p6eval rakudo 027ff4: OUTPUT«Could not find sub &foo␤current instr.: 'perl6;A;_block45' pc 302 (EVAL_1:136)␤»
10:00 jnthn rakudo: class A { my method foo() { say 42 }; foo() } # will
10:00 p6eval rakudo 027ff4: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤current instr.: 'perl6;A;foo' pc 387 (EVAL_1:172)␤»
10:00 moritz_ just needs an invocant, no?
10:00 jnthn rakudo: class A { my method foo() { say 42 }; foo(A) } # but of course needs something passed as invocant
10:00 p6eval rakudo 027ff4: OUTPUT«42␤»
10:01 jnthn Note you're doing sub dispatch there
10:01 jnthn Not method dispatch.
10:01 sorear my method installs into the namespace /as well as/ the class, then?
10:01 jnthn But the method itself is just a routine. It doesn't really care how you call it.
10:01 jnthn NO *not* the namespace!
10:01 sorear but installs it as a sub?
10:01 jnthn That's what our does.
10:01 sorear lexical namespace
10:01 jnthn my puts it in the *lexpad8
10:01 sorear not package namespace
10:02 sorear a namespace is something that maps names to values
10:02 jnthn I'm not sure I've really heard it called a "lexical namespcae" before.
10:02 jnthn lexpad is the more common terminology. :-)
10:02 moritz_ a lexpad also maps names to values
10:02 jnthn namespace has too much connotation of package.
10:02 moritz_ but only from the inside
10:02 masak my:lexpad :: our:package :: has:vtable -- correct?
10:02 sorear I've never heard the term 'lexpad' used outside Parrot.  Also, I'm tired.
10:03 masak sorear: 'lexpad' just means 'the thing that binds names in your lexical scope to things'. even if the term isn't the same in other languages, it's a very common thing.
10:03 masak 'environment' is another common term for the same thing.
10:03 jnthn masak: Correct
10:03 masak \o/
10:05 jnthn BTW, if anyone is in the Malmö area and a member of Dataföreningen, I'll be giving a talk for the user group a week today on Perl (with some focus on Perl 6 too).
10:06 Psyche^ joined #perl6
10:07 * jnthn hopes that flights will be back in order in time for the Nordic Perl Workshop too.
10:11 yinyin joined #perl6
10:11 yinyin_ joined #perl6
10:14 colomon morning!
10:14 moritz_ c\olo/mon!
10:15 colomon :)
10:15 jnthn o/ colomon
10:16 colomon I did send the mandelbrot script to chromatic++ last night.
10:16 jnthn k
10:18 colomon I suspect that if he can unravel what is going on, it will be a big win all around.
10:22 pmurias joined #perl6
10:22 JimmyZ joined #perl6
10:23 jnthn Indeed.
10:28 riffraff joined #perl6
10:34 Intensity joined #perl6
10:54 araujo joined #perl6
10:56 jaldhar_ joined #perl6
11:09 REPLeffect joined #perl6
11:12 muixirt joined #perl6
11:18 molaf joined #perl6
11:25 XaeroOne joined #perl6
11:30 [particle]1 joined #perl6
11:33 moritz_ http://paste-it.net/public/bc8442c/ # build failure of latest rakudo
11:33 moritz_ reported by alexn_org++ on #parrot
11:34 moritz_ somehow this seems vaguely familiar to me, but I'm not sure
11:35 mberends I'll try a build with my recent $*PID code commented out
11:41 jnthn oh noes
11:42 jnthn mberends: I suggest wrapping the $*PID setup code in an exception handler.
11:42 jnthn Just in case it accidentally the fejl.
11:42 moritz_ mberends: I've asked the reporter to do the same
11:44 mberends ok, after I learn how to wrap code in an exception handler (istr something about begin_eh)
11:44 jnthn masak: Your ticket is wrong.
11:44 jnthn 74520
11:44 moritz_ a bug in a rakudobug!
11:44 * masak looks
11:44 jnthn The bug is not that it didn't find the sub
11:45 jnthn It shoudln't
11:45 jnthn The bug is it gave an internals error rather than a good one.
11:45 renormalist joined #perl6
11:45 jnthn I guess more succinct is:
11:45 jnthn rakudo: A::foo # right error
11:45 p6eval rakudo 027ff4: OUTPUT«Can not find sub A::foo␤current instr.: 'perl6;Perl6Exception;throw' pc 14719 (src/builtins/Seq.pir:41)␤»
11:45 jnthn rakudo: A::foo(42) # I think this is what is broken
11:45 p6eval rakudo 027ff4: OUTPUT«too many positional arguments: 2 passed, 1 expected␤current instr.: 'perl6;Failure;' pc 15153 (src/builtins/Array.pir:77)␤»
11:45 masak ok, I'll add that to the ticket.
11:46 jnthn Yeah, that's the thing I was saying to submit
11:46 masak so next question: how *does* one call a 'my' method?
11:46 jnthn We're right to fail, just wrong the fail in that way
11:46 jnthn foo()
11:46 masak o.O
11:46 jnthn ?
11:46 masak not foo(self) or something?
11:46 jnthn well, yes with args
11:46 masak oh phew.
11:46 jnthn My point was not the package qualifier out front.
11:46 masak right.
11:47 * quester_ submitted RT #74526: [PATCH] Fix Seq.perl to not say Seq.new(). Interim fix for Iterator.perl to fix infinite loops
11:47 jnthn That is, class A { my method foo() { }; foo(A) } # should work
11:47 masak because it's not associated with the package, it's associated with the lexpad.
11:47 jnthn That is, class A { my method foo() { }; A::foo(A) } # rightly should not work
11:47 jnthn Correct
11:47 masak rakudo: class A { my method foo() { say "OH HAI" }; foo(A) }
11:47 p6eval rakudo 027ff4: OUTPUT«OH HAI␤»
11:47 masak \o/
11:47 masak rakudo: class A { my method foo() { say "OH HAI" }; foo(42) }
11:47 p6eval rakudo 027ff4: OUTPUT«OH HAI␤»
11:48 masak no invocant checking :P
11:48 jnthn Yeah, I knows.
11:48 jnthn That's already ticketed though. :-)
11:48 masak I knows. :)
11:48 jnthn omgzlaundry!
11:48 jnthn brb
11:53 christine joined #perl6
11:53 jaldhar_ joined #perl6
11:54 leon joined #perl6
11:57 leont Anyone care to give me some feedback on this before I go post it on reddit & co? : http://blogs.perl.org/users/leon_timmerm​ans/2010/04/why-perl-6-is-different.html
11:58 * masak looks
11:59 mberends leont++: it's great exactly as is stands
11:59 mberends *it stands
11:59 quester_ leont:  great, but... macro's with an apostrophe?  That's unusual.
12:00 mberends leon is Dutch, that's why ;)
12:00 leont Yup, that's why
12:00 leont But I just fixed that
12:01 masak 'but Perl 6 that to a new level' missing 'takes' or equiv.
12:01 masak 'it is build' -> 'it is built'
12:03 sorear joined #perl6
12:03 s1n joined #perl6
12:03 ascent_ joined #perl6
12:04 mberends 'overstate the profound' -> 'overstate how profound'
12:04 pmichaud good morning, #perl6
12:04 masak 'Perl 6ys' -> "Perl 6's"
12:04 masak pmichaud: \o
12:04 mberends good morning pmichaud
12:04 leont Good morning
12:04 frettled pmichaud: \o/
12:04 masak hm, actually, s/Perl 6ys 's/Perl 6's/
12:04 frettled pmichaud: How are you doing?  /me worries.
12:05 masak leont: very nice article. I fully agree with the sentiment.
12:05 jnthn morning, pmichaud
12:05 quester_ leont++
12:05 * jnthn reads leont's article
12:05 bluescreen joined #perl6
12:05 * leont blushes
12:06 pmichaud leont++ # good article!
12:07 masak granted, modifying the language/grammar is probably not something that you do every day, even in a language where that is made easy like Perl 6. (though I'm willing to state in five years or so that I was wrong on that point.)
12:07 jnthn leont++
12:07 masak thing is, even if it isn't, it might still mean a lot for everyday module consumers.
12:09 pmichaud p6eval: rakudo:  my $a = 'hello';   say "$a.chars";
12:09 p6eval pmichaud: rakudo 027ff4: OUTPUT«hello.chars␤»
12:09 pmichaud oops
12:09 pmichaud oooh, nice
12:09 pmichaud p6eval: rakudo:  my $a = 'hello';   say "$a.chars()";
12:09 p6eval pmichaud: rakudo 027ff4: OUTPUT«5␤»
12:11 mberends rakudo:  my $a = 'hello';   say "{$a.chars}";
12:11 p6eval rakudo 027ff4: OUTPUT«5␤»
12:11 leont Thanks all for your feedback :-)
12:11 alexn_org joined #perl6
12:11 gurjeet joined #perl6
12:12 pmichaud rakudo:  my $a = 'hello';  say "$a.chars.chars()"
12:12 p6eval rakudo 027ff4: OUTPUT«1␤»
12:12 alexn_org hi people ... is anyone else having this bug? ... http://rt.perl.org/rt3/Tic​ket/Display.html?id=74524
12:13 frettled leont: inspiring, thanks for writing that!
12:18 pmichaud rakudo:  my $a = 'hello';  say "$a.chars.chars"
12:19 p6eval rakudo 027ff4: OUTPUT«hello.chars.chars␤»
12:19 pmichaud rakudo:  my $a = 'hello';  say "$a.chars.chars.()"
12:19 p6eval rakudo 027ff4: OUTPUT«invoke() not implemented in class 'Integer'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
12:19 jnthn rakudo:  my $a = 'hello';  say $a.chars.chars.()
12:19 p6eval rakudo 027ff4: OUTPUT«invoke() not implemented in class 'Integer'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
12:20 jnthn Ah, not specific to interpolation at lesat.
12:20 pmichaud rakudo:  my $a = 'hello';  say "$a.chars().chars()"
12:20 p6eval rakudo 027ff4: OUTPUT«1␤»
12:20 jnthn mberends: Did you figure out the exception thingy?
12:20 pmichaud rakudo:  my $a = 'hello';  say "$a.chars().chars"
12:20 p6eval rakudo 027ff4: OUTPUT«5.chars␤»
12:20 pmichaud how/where does it know to look for the trailing ()?
12:20 jnthn pmichaud: See, iirc, termish
12:20 jnthn And $*QSIGIL
12:20 mberends jnthn: no, but it *is* possible to reproduce the error by putting in a  wrong function name
12:21 jnthn mberends: Actually
12:21 jnthn You have a line like $P0 = dlfunc ...
12:21 jnthn mberends: After it just do a
12:21 jnthn unless $P0 goto skip_pid
12:21 jnthn mberends: I mean, if we can't find it, what can we do...but we shouldn't crash. :-)
12:21 jnthn But that's cheaper/easier than an exception handler to catch it if it does go wrong.
12:22 mberends jnthn: thanks. It means OS X will not get a $*PID though :-(
12:22 jnthn pmichaud: Yes, certainly it's termish.
12:22 pmichaud jnthn: yes, I see it now.  Icky, but I guess it works.
12:22 jnthn pmichaud: Our factoring is pretty much the same as STDs, modulo a hack because we don't have <afer> yet
12:22 jnthn *after
12:22 jnthn pmichaud: But otherwise it follows STD.
12:23 pmichaud STD doesn't seem to use after
12:23 jnthn mberends: Well, they have other shiny things.
12:23 * leont posted it to reddit programming, hopes it doesn't get snowed in
12:23 pmichaud afk, school trip
12:24 jnthn pmichaud: here:
12:24 jnthn || <?{ $*QSIGIL eq '$' }> [ [<!before '\\'> <POST>]+! <?after <[ \] } > ) ]> > ]?
12:24 jnthn ||                          [<!before '\\'> <POST>]+! <?after <[ \] } > ) ]> >
12:24 pmichaud oh, there it is.
12:24 jnthn ooh, I think the <!before '\\'> in STD is new since I copied from it though.
12:25 pmichaud what about  »  ?
12:25 pmichaud afk
12:25 jnthn Yeah, adding » to the list could also be sane.
12:26 jnthn I almost wonder if we should just generalize it to <!after \w>
12:29 SmokeMachine joined #perl6
12:30 envi^home joined #perl6
12:33 quester_ Good night, #perl6.  sleep &
12:34 mberends jnthn++: your suggestion worked. Testing a bit more before committing...
12:35 quester_ left #perl6
12:36 jnthn \o/
12:36 mberends does any OS X user know the Darwin equivalent of the Linux 'getpid' in 'libc' (or of the MSWin32 'GetCurrentProcessId' in 'kernel32') ?
12:38 * masak has no idea
12:38 masak what does Google say?
12:38 leont It really should have getpid
12:39 pmichaud I would expect getpid, if it's posix-like.
12:39 masak over lunch, since I'm so into scoping of different kinds right now, we got to talking about class-bound variables again. my colleague jonalv, whose home language is Java, thought that it was a shocking omission not to have class-based variables.
12:40 masak I explained how 'my' and 'our' didn't do what was intended, since lexpads and packages are orthogonal to OO inheritance.
12:40 mberends google says other people are asking the same question :/
12:40 leont http://developer.apple.com/mac/library/documentat​ion/Darwin/Reference/ManPages/man2/getpid.2.html
12:41 masak when I talked about 'state' variables, he was a bit mollified and admitted that the need wasn't as great for class-bound variables.
12:42 masak and when I explained about the non-need for class-level methods due to type objects, I had almost convinced myself that we don't need class/static variables :)
12:43 snarkyboojum joined #perl6
12:43 masak but one use case that I can see is something akin to a constant defined in a class, which ought to be reachable from all its methods and the methods in derived classes.
12:43 masak same with enums. sometimes that might be useful.
12:43 masak snarkyboojum: hi!
12:44 snarkyboojum hello masak-san
12:44 snarkyboojum o/ :)
12:44 masak I've started in on blocks in Yapsi.
12:45 snarkyboojum you're a machine :)
12:45 masak no, just single and obsessive :P
12:46 masak http://github.com/masak/yapsi/commits/blocks
12:46 arnsholt masak: There's a difference? O=)
12:46 mberends thanks leont. Nevertheless, cheats/setup-io.pm uses it fine on Linux but not on OS X :-(  I have just pushed a default to 0 if the function cannot be found.
12:46 snarkyboojum masak: heh
12:46 masak snarkyboojum: 'started in on' here means that it parses and runs the blocks.
12:46 snarkyboojum masak: perusing the blocks branch atm
12:47 masak snarkyboojum: but it currently runs *all* blocks, even the non-immediate ones.
12:47 snarkyboojum masak: heh - interesting
12:47 masak I'll have to put in some restrictions there, because I don't want to handle the complexity of non-int values just yet.
12:48 dalek rakudo: d0e93e5 | (Martin Berends)++ | src/cheats/setup-io.pm:
12:48 dalek rakudo: [cheats/setup-io.pm] set $*PID to 0 if the getpid() function cannot be
12:48 dalek rakudo: found
12:48 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​0e93e5fba51fb6759493a83624577fe0e4fe425
12:48 masak but currently, this works: 'my $a = 42; { say $a }'
12:48 iblechbot joined #perl6
12:48 snarkyboojum I'm going to have to build alpha on my new laptop I see :)
12:48 masak and this runs but prints when it shouldn't: 'my $a = 42; my $b = { say $a }'
12:49 masak and this runs and prints a warning though it shouldn't: 'my $a; { my $a }'
12:49 masak and this runs and prints the wrong thing: 'my $a = 42; { my $a; say $a }'
12:49 masak basically, it's aware of blocks syntactically, but not semantically yet.
12:50 snarkyboojum sounds pretty cool to me :)
12:52 masak the next step is kinda the big one.
12:52 masak breaking the SIC up into sub-like units, like PIR.
12:52 masak but the road ahead seems clear, at least.
12:52 snarkyboojum what's next?
12:54 masak after that? probably if statements and while loops.
12:55 CokeBot9000 moritz_: hio.
12:56 pmichaud mberends what does dlfunc return if the requested library function isn't found?
12:56 pmichaud this line looks suspicious:
12:56 pmichaud +        unless $P0 goto setup_io_no_getpid_func
12:57 mberends pmichaud: null or 0, I think.
12:57 mberends I tested it with a bogus function name and it followed the goto path
12:57 pmichaud if so, then the test needs to be "if null"
12:57 masak snarkyboojum: but it'd be really nice to have yapsi and tardis talking to each other by the 2010-05-01 release, too. :)
12:57 pmichaud hmmmm
12:58 pmichaud traditionally, boolean tests on null cause a "Null PMC" error.
12:58 mberends I'll check the parrot opcode docs
12:58 pmichaud :docs don't seem to say :-(
12:58 REPLeffect joined #perl6
12:58 jnthn It gives Undef
12:58 snarkyboojum masak: :)
12:59 pmichaud okay, Undef works.
12:59 masak snarkyboojum: I'll see if I can do the Yapsi part of that, i.e. write the calls to the hooks in the runtime.
12:59 ReiniUrban joined #perl6
13:00 mberends pmichaud: would that be better written: if undef $P0 goto ... ?
13:00 pmichaud nope, "undef" isn't a valid PIR keyword
13:00 pmichaud if dlfunc returns undef (which it does), then what you have written is probably okay for now.
13:01 pmichaud at least, as long as NCI PMCs return "true" for boolean-ness :-)
13:01 * mberends crosses fingers
13:02 pmichaud feels like $*PID should return a Failure object if we weren't able to find the PID, though.
13:03 pmichaud instead of 0.
13:03 PerlJam good morning
13:03 mathw That seems fairly sensible
13:04 CokeBot9000 even though it's just NYI?
13:04 pmichaud CokeBot9000: yes.  Better to return an error value than to return something that could be considered valid.
13:04 pmichaud *explicit error value
13:05 CokeBot9000 hurm. can you mark a Failure with a NYI attribute?
13:05 pmichaud sure, the Failure can carry a NYI message
13:06 pmichaud so that "say $*PID"  results in  a warning of  "$*PID not yet implemented on this system"
13:06 CokeBot9000 gnifty.
13:06 mberends good idea. I'm doing something else, but I can add that shortly.
13:07 pmichaud CokeBot9000: Failures are one of the neat pieces of Perl 6 -- we're no longer limited to failure sentinel values; we can actually return Failure objects that contain the explanation of the failure
13:07 arnsholt mberends: IIRC the correct PIR incantation to check for Null PMC is isnull
13:07 pmichaud arnsholt: it is, but dlfunc doesn't return null PMCs, it appears.
13:08 arnsholt Oh, right. How convenient
13:10 jnthn Yeah, I was a tad surprised they gave Undef rather than Null
13:10 jnthn (Since Parrot often uses Null to indicate failure/non-existence)
13:10 arnsholt Maybe something that can be changed?
13:10 pmichaud probably pre-dates the exposure of pmcnull to PIR
13:11 pmichaud early versions of parrot tended to try to hide PMCNULL from PIR programmers as much as possible
13:11 rgrau joined #perl6
13:11 jnthn True
13:11 jnthn arnsholt: Heh, if they change it we gotta go patch up a load of code. :-/
13:11 pmichaud arnsholt: could be changed yes, but needs a deprecation cycle :)
13:12 arnsholt Yeah, there is that
13:12 pmichaud jnthn: do we use dlfunc all that much?
13:12 CokeBot9000 best bet is probably to add a new opcode that DTRT /now/ and deprecate the old one.
13:12 pmichaud I wouldn't think it'd be a lot of code to fix.
13:12 jnthn pmichaud: No
13:12 jnthn pmichaud: Zavolaj uses it though, of course. :-)
13:12 pmichaud CokeBot9000: Yeah.  OTOH, since NCI handling itself seems to be deprecated, we can just wait for that.
13:12 CokeBot9000 I'm just glad that we're down to Null & Undef. (Used to also have None)
13:13 CokeBot9000 pmichaud: there you go.
13:13 jnthn NCI itself had best not be deprecated!
13:13 CokeBot9000 there will be nci.
13:14 jnthn phew. :-)
13:14 pmichaud okay, not NCI itself, but NCI signatures.
13:14 jnthn Current state sucks though.
13:14 pmichaud TT #1565
13:14 jnthn The previous frame builder but ripped out.
13:14 arnsholt I'd guess that means the current implementation is being deprecated
13:14 jnthn *got
13:14 pmichaud I meant ... what arnshold++ said
13:14 arnsholt Hopefully in favour of something shinier
13:14 pmichaud *arnsholt++
13:15 pmichaud (argh, can't type today.)
13:15 mberends (Whatever)arnsholt++ ?
13:15 jjames joined #perl6
13:15 * jnthn can't believe it's *that* hard to write one that works on the major platforms.
13:16 jnthn Tricky and annoying to write, though.
13:16 CokeBot9000 jnthn: kind of like writing perl6? ;)
13:16 jnthn Yes, but more tricky than annoying in Perl 6. ;)
13:17 jnthn Whereas a frame builder is annoying in that various platforms want things *slightly* different. :-)
13:21 Lorn joined #perl6
13:21 astinus joined #perl6
13:23 CokeBot9000 is there a need for all the various .pm files to be combined into core.pm or could that be done after they were individually compiled to pir?
13:23 CokeBot9000 (I'm just wondering if that would be a temporary speed up for compilation.)
13:24 pmichaud CokeBot9000: they're not entirely independent
13:24 REPLeffect joined #perl6
13:24 pmichaud some files want to know the definitions coming from previous files
13:24 moritz_ CokeBot9000: mberends and I have been working on branches to split the compilations
13:24 mberends CokeBot9000: moritz_++ and I have tried to do separa...
13:24 moritz_ CokeBot9000: it seems doable, but not trivial
13:24 CokeBot9000 hokay.
13:25 PerlJam alternatively ... parrot could just be made faster  ;)
13:25 mberends moritz_: the state of those branches is quite out of date, it might be easier to just delete them and start afresh
13:26 jnthn The other problem is that they all need to form a coherent outer lexical scope
13:27 jnthn We could go down the "export and then import them into one lexpad" thing I guess.
13:27 moritz_ and then there's the problem with traits being defined in the setting, and later on needed in the setting...
13:27 jnthn That too.
13:29 CokeBot9000 So, "not trivial". that's all I needed. =-)
13:39 masak Alias: ping
13:39 masak std: [+]
13:39 p6eval std 30416: OUTPUT«[31m===[0mSORRY![31m===[0m␤Prefix requires an argument at /tmp/cGbaRKgDuD line 1 (EOF):␤------> [32m[+][33m⏏[31m<EOL>[0m␤Parse failed␤FAILED 00:01 110m␤»
13:39 masak TimToady: [+] no longer parses as a listop?
13:40 moritz_ mberends++ # fixing $*PID on Mac
13:40 araujo joined #perl6
13:41 learnperl6 joined #perl6
13:42 the_raven joined #perl6
13:42 pugssvn r30417 | moritz++ | [t/spec] some unfudges for rakudo
13:42 the_raven righto
13:42 pugssvn r30418 | moritz++ | [t/spec] fudge failing tests for rakudo in syntax.t - the ticket on RT is re-opened for them
13:43 dalek joined #perl6
13:43 REPLeffect joined #perl6
13:44 colomon "Why Perl 6 is different" is at the top of Hacker News at the moment... :)
13:45 jnthn masak: Matches my expectations from sTD, where it's parsed as a prefix.
13:45 masak ISTR it was once parsed as a listop.
13:45 jnthn see token PRE
13:45 masak what about `[+] 1, 2, 3` ?
13:45 jnthn Me too, but not before Rakudo copied it from current STD
13:46 jnthn ?
13:46 jnthn Still a prefix
13:46 PacoLinux joined #perl6
13:46 masak ah, I guess it comes down to precedence.
13:46 * moritz_ also thought that [+] parses as listop
13:46 masak and why shouldn't it? it feels perfectly natural.
13:47 * masak raises the 'formal protest' flag
13:47 masak :)
13:47 jnthn It's an operator, it should parse in one of the operator categories.
13:47 moritz_ listop = list operator (isn't that an operator category?)
13:47 jnthn And yes, it has %list_prefix precedence so it sucks up da whole list.
13:48 jnthn moritz_: There's no syntactic category listop afaik.
13:48 masak the practical difference between listop and list prefix is that 'say [+];' gets disallowed.
13:49 masak I wonder why that choice was made.
13:49 jnthn I consider that a benefit.
13:49 masak I don't.
13:49 masak I liked it :)
13:49 jnthn It looks too close to say &[+]
13:49 jnthn Which means something quite different.
13:49 masak meh.
13:49 jnthn Anyway
13:49 jnthn You can do say [+] ()
13:49 masak yes, but why would I need parens there and nowhere else? :(
13:50 ruoso joined #perl6
13:50 masak *that's* the exception, and that's what I don't like.
13:51 Cristina_ joined #perl6
13:51 jnthn Why would you want to write such a thing anyway?
13:53 masak as the limit case of a series of example expressions?
13:53 masak [+] 1, 2
13:53 masak [+] 1
13:53 masak [+]
13:53 dalek rakudo: 5a0581f | moritz++ | t/spectest.data:
13:53 dalek rakudo: one more passing test file
13:53 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​a0581fec1dc8415b021fe0dbe79e6e195f943e2
13:53 colomon should >>.= work?
13:54 masak sure, why not?
13:54 jnthn I think it maybe even does work
13:54 jnthn rakudo: my @a = 1,-2,3,-4; @a>>.=abs; say @a.perl
13:54 colomon rakudo: my @a = -5..5; @a >>.= abs; say @a.perl
13:54 p6eval rakudo d0e93e: OUTPUT«[1, 2, 3, 4]␤»
13:54 p6eval rakudo d0e93e: OUTPUT«Missing << or >> at line 11, near " abs; say "␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
13:54 jnthn No, you can't put the space there.
13:55 colomon great minds think alike, but mine is a little buggy.
13:55 jnthn std: my @a = 1,-2,3,-4; @a>>.=abs; say @a.perl
13:55 p6eval std 30416: OUTPUT«ok 00:01 109m␤»
13:55 masak one can never have space before ops in the postfix or postcircumfix categories.
13:55 jnthn std: my @a = -5..5; @a >>.= abs; say @a.perl
13:55 p6eval std 30416: OUTPUT«[31m===[0mSORRY![31m===[0m␤Missing << or >> at /tmp/mxIDkTACbt line 1:␤------> [32mmy @a = -5..5; @a >>.=[33m⏏[31m abs; say @a.perl[0m␤    expecting infix_circumfix_meta_opera​tor__S_267LtLt_GtGt␤Parse failed␤FAILED 00:01 109m␤»
13:55 jnthn The error is...not the most helpful in a sense...
13:55 jnthn ...but we at least match STD.
13:57 colomon I just used >>.= for work.  :)
13:57 colomon afk
14:02 sorear joined #perl6
14:02 alester joined #perl6
14:05 meppl joined #perl6
14:06 dalek rakudo: e135f23 | moritz++ | docs/ChangeLog:
14:06 dalek rakudo: [docs] update ChangeLog
14:06 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​135f23e211692135534e02f949e8a268858ec1a
14:08 moritz_ jnthn: I'm thinking about names for the upcoming release... what was the conference in Russia you were attending? was Moscow.pm involved?
14:08 CokeBot9000 .u degree
14:08 CokeBot9000 phenny: .u degree
14:09 moritz_ ENOPHENNY
14:09 jnthn moritz_: It was a commercial one, RIT
14:09 jnthn Though I did have beer with Moscow.pm
14:09 jnthn ;-)
14:10 jnthn Actually I think I've had beer with Moscow.pm folks a few times by now
14:10 jnthn But never actually spoken at a YAPC::Russia or Moscow.pm meeting.
14:11 moritz_ hm, maybe then it's LTA as a release name
14:11 jnthn Beer is awesome!
14:11 jnthn But yes.
14:11 jnthn :-)
14:11 moritz_ jnthn: any other ideas? .pm groups you have visited lately?
14:12 jnthn We already used all the ones I've been to recently.
14:12 masak joined #perl6
14:12 * jnthn ponders
14:13 jnthn lolitstakak
14:16 masak Firefox is stable yet again.
14:22 jnthn masak: How many tabs this time? :-)
14:22 masak jnthn: I think I lost some in the reboot, so I'm down to 1.5k
14:22 masak Firefox starts to become really unreliable around 2k.
14:23 sorear joined #perl6
14:23 dalek rakudo: ad01dca | moritz++ | docs/announce/2010.04:
14:23 dalek rakudo: first draft for 2010.04 release announcement
14:23 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​d01dca8433a8386608e2a8211fd12510a45a6dd
14:24 * moritz_ still thinks that masak's workflow might benefit from having a queue of URLs, rather than having the full page open for each to-be-read article
14:24 moritz_ but of course I wouldn't try to impose any "work"flow on masak++ :-)
14:26 masak moritz_: that's basically what it boils down to, though.
14:26 moritz_ I know
14:26 masak since I start up Firefox and pull the ethernet cable, so only the URLs actually load.
14:27 sahadev joined #perl6
14:27 moritz_ it just feels like having a whole memory page for each byte, or so
14:28 * masak .oO( sounds like Parrot )
14:28 * masak hides
14:29 jnthn masak: I...thought that and wasn't going to say it! :-P
14:29 ejs joined #perl6
14:30 masak great teases think alike.
14:32 jnthn The rain is teasing me at the moment.
14:32 jnthn Keeps looking like it'll stop, then doesn't.
14:32 colomon rakudo: sub postfix:<!>($n) { $n > 0 ?? $n * ($n - 1)! !! 1 }; say 7!
14:32 p6eval rakudo 5a0581: OUTPUT«5040␤»
14:33 colomon rakudo: sub postfix:<!>($n) { $n * ($n - 1)!  }; sub postfix:<!>(0) { 1; };  say 7!
14:33 p6eval rakudo 5a0581: OUTPUT«maximum recursion depth exceeded␤current instr.: 'parrot;P6object;HOW' pc 54 (runtime/parrot/library/P6object.pir:98)␤»
14:33 jnthn rakudo: multi postfix:<!>($n) { $n * ($n - 1)! }; multi postfix:<!>(0) { 1 }; say 7! # I like this formulation a little more ;-)
14:33 p6eval rakudo 5a0581: OUTPUT«5040␤»
14:33 masak rakudo: say 7!; sub postfix:<!>($n) { $n > 0 ?? $n * ($n - 1)! !! 1 }
14:33 p6eval rakudo 5a0581: OUTPUT«Confused at line 11, near "say 7!; su"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
14:33 jnthn Win.
14:34 colomon rakudo: multi postfix:<!>($n) { $n * ($n - 1)!  }; multi postfix:<!>(0) { 1; };  say 7!
14:34 p6eval rakudo 5a0581: OUTPUT«5040␤»
14:34 jnthn colomon: multi. But Rakudo shoulda complained.
14:34 masak so... the grammar changes after the parsing of the sub?
14:34 jnthn masak: Exactly.
14:34 jnthn How godis that?
14:35 colomon \o/
14:35 moritz_ there's a ticket for that :-)
14:36 moritz_ (though not for operators specifically)
14:36 molaf joined #perl6
14:37 jnthn moritz_: Aye, I spotted the ticket yesterday when I was going through the whole RT
14:37 colomon the grammar doesn't change after parsing a normal sub, does it?
14:38 jnthn colomon: no
14:39 colomon rakudo: multi postfix:<!>($n) { $n * ($n - 1)!  }; multi postfix:<!>(0) { 1; };  ((1..10)>>!).perl.say
14:39 p6eval rakudo 5a0581: OUTPUT«Could not find sub &postfix:<!>␤current instr.: '' pc -1 ((unknown file):-1)␤»
14:40 colomon rakudo: our multi postfix:<!>($n) { $n * ($n - 1)!  }; our multi postfix:<!>(0) { 1; };  ((1..10)>>!).perl.say
14:40 p6eval rakudo 5a0581: OUTPUT«maximum recursion depth exceeded␤current instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)␤»
14:40 colomon :\
14:40 jnthn :-/
14:40 dalek rakudo: cf4eb89 | Coke++ | docs/announce/2010.04:
14:40 dalek rakudo: untypo
14:40 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​f4eb892ac2647b28f13b87ff87bd407d44fcb5a
14:41 jnthn I know we have the our bug
14:41 jnthn er, bug that means we need our
14:41 jnthn But I expected that to work.
14:41 jnthn our multi postfix:<!>($n) { $n * ($n - 1)!  }; our  multi postfix:<!>(0) { 1; };  ((1..10).Seq>>!).perl.say
14:41 jnthn rakudo: our multi postfix:<!>($n) { $n * ($n - 1)!  }; our  multi postfix:<!>(0) { 1; };  ((1..10).Seq>>!).perl.say
14:41 p6eval rakudo 5a0581: OUTPUT«[1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]␤»
14:41 jnthn Ah
14:41 colomon rakudo: our sub postfix:<!>($n) { [*] 1..$n; };  ((1..10)>>!).perl.say
14:41 p6eval rakudo 5a0581: OUTPUT«maximum recursion depth exceeded␤current instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)␤»
14:42 jnthn Needs .Seq for some inexpelicable reason.
14:42 jnthn Submit rakudobug.
14:42 colomon rakudo: our sub postfix:<!>($n) { [*] 1..$n; };  ((1...10)>>!).perl.say
14:42 p6eval rakudo 5a0581: OUTPUT«[1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]␤»
14:43 colomon jnthn: I think you need to say masakbot: submit rakudobug.  ;)
14:43 colomon I've got it.
14:43 pyrimidine joined #perl6
14:44 jnthn :-)
14:44 colomon unless you meant to say "submits rakudobug", ala masakbot.
14:44 jnthn Anyway, yes, once that works properly...quite.
14:44 jnthn no, no
14:44 jnthn I was trying to invoke masakbot
14:45 colomon rakudo: our sub postfix:<!>($n) { [*] 1..$n; };  (-<<(1..10)).perl.say
14:45 p6eval rakudo 5a0581: OUTPUT«maximum recursion depth exceeded␤current instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)␤»
14:45 jnthn It's just rnages and >> I think
14:45 jnthn rakudo: say (1..10)>>.say
14:45 p6eval rakudo 5a0581: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤1111111111␤»
14:45 jnthn oh.
14:45 colomon just trying to find a simpler example.
14:45 colomon rakudo: (-<<(1..10)).perl.say
14:45 p6eval rakudo 5a0581: OUTPUT«maximum recursion depth exceeded␤current instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)␤»
14:45 jnthn ah
14:45 colomon rakudo: (-<<(1...10)).perl.say
14:45 p6eval rakudo 5a0581: OUTPUT«[-1, -2, -3, -4, -5, -6, -7, -8, -9, -10]␤»
14:45 jnthn rakudo:  (-<<(1..10))
14:46 p6eval rakudo 5a0581: OUTPUT«maximum recursion depth exceeded␤current instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)␤»
14:46 jnthn rakudo:  (-<<(1..10)); say "omg I live!"
14:46 p6eval rakudo 5a0581: OUTPUT«maximum recursion depth exceeded␤current instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)␤»
14:47 masak should I submit a rakudobug above? sorry for the lag :)
14:47 colomon I just did.
14:47 colomon using the shorter version (no need to muck about with factorial)
14:47 [particle] colomonbug++
14:48 pugssvn r30419 | pmurias++ | [mildew] add missing file
14:49 pmurias diakopter: hi
14:49 masak the "Perl 6 is different" is making my Twitter client vibrate with "Perl 6" live search results. leont++
14:49 masak colomon++
14:51 jnthn IIRC, we moved #rakudosketch to be Tuesday, yes?
14:51 jnthn Can anyone remember what time? :)
14:52 [particle] it used to overlap the sixperl call by half an hour, so i'm guessing now it overlaps parrotsketch by half an hour :/
14:52 jnthn I'm not sure attendance hugely overlaps.
14:53 [particle] i see last tuesday's started at 12p pdt
14:53 [particle] i think i'm -8 utc
14:53 jnthn I think I'm +2 utc
14:53 [particle] er, utc - 8 of course
14:53 jnthn .oO( my timezone did +2 utc )
14:54 PacoLinux joined #perl6
14:54 * [particle] wonders if there's a foxclocks equivalent for chrome
14:54 jnthn That'd mean 10pm here for me. I'm not sure that's right.
14:54 justatheory joined #perl6
14:56 colomon Wasn't the old time four hours from now?
14:57 jnthn That sounds righter to me.
14:57 jnthn That's 9pm my time.
14:57 jnthn Let's go for that.
15:00 colomon is anyone over there right now?  I just got strange results when I tried to join the room...
15:00 * jnthn appears to be in #rakudosketch
15:01 colomon ah, that's better.  danke.
15:01 jnthn :-)
15:01 colomon not sure what I did wrong the first time.
15:05 rurban joined #perl6
15:06 * jnthn bbiab
15:12 ejs joined #perl6
15:19 snarkyboojum std: ;
15:19 p6eval std 30419: OUTPUT«ok 00:01 108m␤»
15:20 masak :)
15:20 masak moritz_: autarch++ has a nice message about Date.daycount on p6l.
15:26 Kyril joined #perl6
15:30 sunnavy re
15:35 rv2733 joined #perl6
15:37 * jnthn back
16:11 REPLeffect joined #perl6
16:16 ejs left #perl6
16:32 IllvilJa joined #perl6
16:33 TimToady std: has constant $.pi = 3;
16:33 p6eval std 30419: OUTPUT«ok 00:01 110m␤»
16:33 jnthn o.O
16:34 REPLeffect joined #perl6
16:34 TimToady masak++ was conjecturing class-based constants, but it already falls out
16:36 TimToady in fact, that was one of the reasons the constant declarator moved from being a scope_declarator to being a type-declarator, so we could use it in arbitrary scopes
16:36 jnthn ...I guess I missed the change where constant stopped being a scope declarator.
16:37 TimToady well, but I think you know that constants "default" to our
16:37 TimToady what can that mean, other than that you can put other scopes?
16:38 TimToady but anyway, no one to blame but myself, for putting constants in the wrong place to begin with :)
16:39 jnthn I guess it wants to do something like $*SCOPE ||= 'our' or something.
16:40 jnthn Hmm. I don't see STD doing anything there.
16:40 jnthn oh, but maybe doesn't need to.
16:44 TimToady there's probably a bug in there somewhere, but maybe only for add_name, which seems to default to 'my'
16:44 TimToady add_variable seems to default to 'our'
16:45 nihiliad joined #perl6
16:47 TimToady it's really something that should be specified on all type_declarator:*, but we don't have our protos set up for that yet
16:48 TimToady we need a way to write our proto block such that it functions as a wrapper around the dispatch to various specific rules
16:49 TimToady that would simplify the 'is endsym' stuff too
16:49 TimToady well, maybe not
16:49 jnthn :/
16:49 jnthn That sounds...weird.
16:50 leon__ joined #perl6
16:50 TimToady well, internally, (in STD at least), the type_declarator proto is the routine you're actually calling to dispatch to all its alternatives
16:50 TimToady so there's no magic in the <type_declarator> call itself, only lower down
16:51 jnthn Ah, I see.
16:51 TimToady and certainly the current default is fine, where an empty proto defaults to the redispatch
16:51 TimToady but if we could have a way to say "insert sub-dispatch here" then we get more power
16:52 TimToady currently gimme5 just rewrites any proto into a sub-dispatcher directly
16:52 REPLeffect joined #perl6
16:53 batta joined #perl6
16:54 TimToady hmm, I made up a <...> assertion, but that's completely redundant, when you can write {...} just about as easily
16:55 TimToady also, you might want to write some proto rules as methods rather than as regexen
16:55 TimToady such as in this case, where you want to throw in a 'my $*SCOPE //= "our"'
16:56 batta left #perl6
16:56 jnthn s/my/temp/ ?
16:56 diakopter pmurias: after another hour thinking about it, I figured out how to do the contextuals correctly & efficiently; I'll make the changes in 8 hours or so.
16:57 TimToady well, actually, it's $*SCOPE ||= 'our'
16:57 jnthn ah, ok
16:57 TimToady no declarator, since $*SCOPE is rw and already scoped to the statement
16:57 jnthn nod
16:57 TimToady and is already defined to '', in fact
16:59 TimToady well, scoped to the current declaration, anyway
16:59 TimToady declarations are terms, not statements
17:00 diakopter sorear: re TLS, Perl 6 contextuals will not be implemented directly by perlesque contextuals.
17:01 diakopter sorear: and the STD-from-STD won't be multithreaded :P
17:07 sorear pmichaud: ping
17:07 sunnavy joined #perl6
17:12 hercynium joined #perl6
17:15 sunnavy joined #perl6
17:17 szabgab joined #perl6
17:20 thowe joined #perl6
17:21 sorear Jonathan Worthington — Perl 6 talk in Malm&#246;
17:21 sorear (re-escaping escaped text)--
17:21 thowe I am curious if there is a page that explains the canonical way of licensing ones own software under the Artistic 2.0 license.  Something that says what's normal to do like "include the file here, named this.  add the license to these files" etc...  Is there such a document?
17:21 jnthn sorear: ugh, fail.
17:23 thowe like, don't the GPL people like a file called "COPYING"
17:23 diakopter thowe: no page that I know of.  usually there is a file named COPYING that has any copyright notification and also says something like "you can redistribute the source code of this software under the terms of the license found in the file named LICENSE"
17:23 diakopter afaicg
17:24 diakopter that's what I would do, anyway
17:24 thowe OK.  My practice with ISC code was to always include it in the header file and point the source file there (for C/C++) but the artistic license is long...
17:25 thowe That sounds like the way to go.
17:25 thowe Thanks
17:25 diakopter I think the parrot source includes a copyright notice at the top of every source file
17:26 sorear all software licenses are used in the same way
17:27 sorear personally, I don't like the whole license boilerplate on every file thing
17:27 PerlJam sorear: me either.  But there's liking something and then there's something that's legally defensible.
17:27 pjcj joined #perl6
17:30 plobsing apparently rakudo will see a huge startup improvement if parrot gets a fix for freeze/thaw of complex PMCs. Can someone describe what needs work in that area?
17:31 iblechbot joined #perl6
17:33 oskie i get a little scared when i see that the perl6 binary on my system is 22 MB... i mean, the perl5 binary is only 7K, and the libperl so is 1.5 MB
17:34 oskie anyone know why that is?
17:34 stephenlb joined #perl6
17:34 plobsing oskie: parrot bytecode (which gets baked into perl6.exe) isn't very compact ATM. it does compress well however.
17:35 astrojp joined #perl6
17:35 jnthn It's been in theory more optimized for fast reading (machine sized ints) and immediately mmap-n-run than it has for being compact.
17:36 oskie ah, I see. it compressed to 700K (basic test with bzip2)! that's pretty good
17:37 jnthn plobsing: While that is in some senses true (on the freeze/thaw), it's probably not so much just that Parrot can do the work and suddently we're faster. Rakudo would need changes to catch up with it too.
17:37 jnthn plobsing: In a sense, we almost need to be able to say "freeze everything that's currently in memory" or something close to that.
17:37 jnthn And then thaw it and run from there.
17:38 jnthn Part of the issue is with dynpmcs.
17:38 jnthn Which I think you can't freeze/thaw at all today.
17:38 plobsing jnthn: so this is about pre-calculating the language prelude?
17:39 TimToady s/prelude/setting/ these days, at least for Perl 6
17:39 hercynium joined #perl6
17:39 jnthn plobsing: Right
17:40 TimToady a setting establishes one or more outer lexical scopes
17:40 jnthn plobsing: Modulo terminology as TimToady pointed out. ;-)
17:40 jnthn Well, a little more than terminology in some senses.
17:40 jnthn But probably not in a way that affects what we need to be able to freeze.
17:41 TimToady depends on whether you need to be able to freeze a lexical scope and then compile inside that :)
17:41 plobsing So if I were able to "freeze everything in this namespace" (including dynpmcs, methods with dynops, other nastiness) rakudo could get a startup improvement?
17:41 jnthn TimToady: There's a way in Parrot to take something and dynamically set its outer scope
17:41 jnthn TimToady: That's how we do it today.
17:42 jnthn plobsing: Well, lexpads too.
17:42 jnthn We store a decreasing amount in the namespace.
17:42 TimToady but you need to be able to freeze a lexical scope in order to pull it in and link to it
17:43 TimToady package freezes aren't quite up to that
17:43 jnthn TimToady: Right.
17:43 plobsing er... ok. It boils down to "freeze this continuation" then?
17:43 jnthn Hmm. :-)
17:44 jnthn Just about I guess. :-)
17:44 jnthn Well
17:44 TimToady that's perhaps...overkill...but only slightly
17:44 jnthn We don't actually care about where the program counter is.
17:44 TimToady if you *could* freeze a continuation, that would do very well for freezing a setting :)
17:45 jnthn A Closure has a pointer to a lexpad which is the one it was last invoked with.
17:45 TimToady though it's still not quite right
17:45 jnthn So we'd need to freeze the lexpad hanging off there.
17:45 jnthn That'd *probably* do it.
17:46 TimToady if you have a setting like for -p with an outer loop, you don't actually want to freeze a continuation at the YOU_ARE_HERE, I think
17:46 jnthn No, probably not
17:46 jnthn I don't think we want it to be continuation-y
17:46 TimToady you really want the setting's compilation frozed at approximately its CHECK time
17:46 TimToady *zen
17:47 jnthn Sounds about right.
17:47 diakopter *dao
17:47 diakopter *tao
17:47 diakopter sigh
17:47 diakopter YApunfail
17:47 TimToady so the while loop in the setting is compiled, and the lexical scope inside is remembered, but we don't actually start running the while loop till the user's program runs
17:48 TimToady otherwise how would we know which file to open?
17:48 TimToady actually I think the spec currently requires such a loop to be written in a MAIN sub
17:48 TimToady that defers it already
17:48 diakopter my head spins
17:49 diakopter what was the question?
17:49 TimToady what mechanisms are necessary to compile settings as specced
17:49 plobsing what would I have to do to be able to store the setting library?
17:50 diakopter oh
17:50 jnthn I'm not quite sure I follow the question.
17:50 jnthn I expect we'd get a PBC file out, if that's what you mean.
17:50 jnthn That has the frozen PMCs and the code in it.
17:50 masak joined #perl6
17:51 plobsing yup, thats it exactlly. I'm thinking it would get rolled into the main rakudo exe
17:51 diakopter oh; I don't see a way to get around the toplevel of the setting being executed directly on every run
17:51 masak TimToady++ # has constant
17:51 jnthn plobsing: Yes.
17:51 TimToady diakopter: yes, but if the setting is all declarations, there's nothing much to run
17:51 TimToady (at INIT time, I presume)
17:52 TimToady probably before INIT time, actually
17:52 diakopter ok. 'tis straightforward in perlesque realm, afaict
17:52 plobsing jnthn: is there any gradual way to do this? or is this a 2 step thing with 1) make it work in parrot 2) make rakudo use it?
17:53 TimToady given that loops can go into MAIN, we might actually be able to run the setting at compile time and take a continuation if we hit a YOU_ARE_HERE that isn't hidden in a sub
17:53 TimToady but that's conjectural for now
17:54 masak plobsing: hi; are you a Parrot person?
17:54 TimToady esp. since we don't require continuations in Perl 6 :)
17:54 nihiliad joined #perl6
17:54 plobsing masak: yes.
17:54 masak nice.
17:54 PerlJam He's very parroty
17:54 jnthn plobsing: I'm not sure about a gradual way tbh.
17:55 masak I like it when Parrot people hang out on #perl6.
17:55 jnthn plobsing: I mean, you can certainly build up a set of tests.
17:55 jnthn plobsing: Trying to persist and resurect more and more complex things.
17:55 astrojp left #perl6
17:55 TimToady masak: even if they later sneak off to #parrot and complain about how much we talk :)
17:55 jnthn plobsing: We could then start a Rakudo branch.
17:56 jnthn plobsing: And try it, iterate until it works. :-)
17:56 plobsing I guess that's what I'll do. I'll get back to you when I've got either lexpads or continuations with dynpmcs and dynops freezeable/thawable
17:56 PerlJam plobsing++
17:56 jnthn plobsing++
17:56 jnthn If you can do that, then, well, wow. :-)
17:59 jnthn plobsing: Any news on NCI frame building?
18:00 masak TimToady: there's something quite odd about #parrot complaining how much others talk... :)
18:00 diakopter TimToady: given that perlesque supports reified continuations, would you speculate on how that might be syntaxified in Perl 6?  call/cc? let/cc? both? some crazy symbol sequence?
18:00 plobsing not much to speak of. I did sneak some hooks into 2.3 so a library could be created at a later time to support more signatures.
18:00 plobsing also tons of deprecations of blockers
18:00 diakopter masak: I just repeat what I hear
18:01 masak diakopter: $SNAPPY_COMEBACK :)
18:02 TimToady maybe just goto $continuation;  #  :D
18:02 plobsing jnthn: I'm thinking of updating zavolaj after I make some of the improvements
18:02 uniejo joined #perl6
18:03 TimToady errands &
18:07 jnthn plobsing: OK, cool! :-)
18:07 jnthn plobsing: It's the limit on what signatures are possible that makes Zavolaj less useful today really.
18:08 diakopter TimToady: ok, but how to create them, seeing as how a continuation savepoint needs to be statically recognizable by the compiler
18:09 diakopter (there's always COMEFROM)
18:09 diakopter o_O
18:10 diakopter or RETURNHERE
18:11 diakopter or RETURN_TO_ME (David Duchovny/Minnie Driver/Bonnie Hunt)
18:13 batta joined #perl6
18:14 batta left #perl6
18:20 plobsing jnthn: If you want more signatures, you can compile a dynlib for parrot using the nci_thunk_gen tool. After loading that library, parrot will have the additional signatures available. Not as good as a JIT, but maybe it'll help you.
18:25 * PerlJam slightly increases the odds that plobsing will be a mentor this summer
18:29 * jnthn noms, #rs in 30
18:32 xinming joined #perl6
18:41 finanalyst joined #perl6
19:06 smash_ joined #perl6
19:06 smash_ hello everyone
19:07 pmichaud #rs is on tuesday now?
19:08 [particle] pmichaud: yes, that's new. it's going on now.
19:08 jnthn pmichaud: Yes, after a bunch of people couldn't do Wednesday
19:10 ShaneC joined #perl6
19:10 ShaneC left #perl6
19:20 gurjeet joined #perl6
19:21 gurjeet moritz_: Good afternoon
19:21 gurjeet A quick question..
19:21 gurjeet Do you think there's any uptake of the IRC logs you have been generating?
19:24 diakopter gurjeet: uptake?
19:24 gurjeet I mean, do people go back an look up past conversations? Or are the search engine results helping people find useful info?
19:24 diakopter all the time
19:24 diakopter lots of people backlog using the web irclog
19:24 diakopter incl me
19:25 gurjeet Thanks.. that'd help me make a case at #postgresql .
19:26 gurjeet How about people finding info via google etc.?
19:26 arnsholt I've occasionally found the logs with google
19:27 CokeBot9000 google is helpful. being able to throw links to convos on tickets++.
19:27 * mberends too, I posted the url of a home webserver in #perl6 and google and yahoo came to crawl it every 6 hours.
19:29 obra joined #perl6
19:30 hercynium joined #perl6
19:37 M_o_C joined #perl6
19:40 rurban Will the new rakudo release not complain about parrot -r0?
19:40 rurban (installed parrot-2.3.0)
19:51 rurban docs/announce/2010.04 contains March, not April
19:51 mberends rurban: that's normal when getting Parrot from a tarball instead of svn.
19:52 rurban I known, but I want to release it properly :)
19:52 mberends although it does look a bit silly in perl6 -v
19:52 rurban A normal version check is better than a svn rev check.
19:52 rurban Even if the reality parrot-wise is different
19:53 rurban But at least the monthly releases are matching the parrot version exactly
19:54 rurban BTW: When will it be released?
19:57 [particle] usually thursday following parrot tuesday
19:57 rurban Hmm, I get PMC has attributes but no auto_attrs or manual_attrs ...
19:58 rurban In PMCEmitter:744 for the p6 pmc's
19:58 CokeBot9000 is that with svn-latest or the released version of parrot?
19:59 rurban 2.3.0 release
19:59 rurban That's what I'm testing and releasing
19:59 christine joined #perl6
20:00 CokeBot9000 easy enough fix: the perl6 pmcs need one of those in the pmclass def.
20:02 slavik kids, don't upgrade a DB unless you have a backup
20:03 Guest52061 i think even kids know that :>
20:04 h_ joined #perl6
20:12 rurban FWIW All tests and spectests pass on cygwin with current rakudo-git, released parrot-2.3.0
20:12 rurban TODO passed:   4-6, 11-13, 544-546, 550
20:12 jnthn rurban: which fail?
20:13 jnthn er
20:13 jnthn file?
20:13 rurban t/spec/S05-mass/properties-general.rakudo for the TODO
20:13 jnthn Ah, OK
20:14 M_o_C joined #perl6
20:15 ash__ joined #perl6
20:17 rurban Is there a plan to remove the final . from @*INC?
20:17 moritz_ rurban: it seems it's not passing them on all platforms
20:19 nihiliad joined #perl6
20:19 rurban I have it at first on cygwin
20:19 rurban (speaking of security riscs)
20:19 moritz_ yes, will be removed in the long run
20:21 rurban you cannot do a build-time check to add it temporarily?
20:21 moritz_ the question is not "you cannot" :-)
20:21 rurban ok, it gets slower
20:23 pmichaud ('cool' branch review)  overall looks good.  I'm not sure why we need src/core/Cool.pm, it appears to be empty.
20:23 jnthn Empty?
20:23 * jnthn is a tad surprised by that
20:24 pmichaud well, it's essentially   "augment class Cool { }"
20:24 jnthn I thought all the Cool methods would be in it?
20:24 jnthn Oh. Are the methods in PIR?
20:24 pmichaud they tend to go in Cool-str, Cool-num, etc.
20:24 jnthn oh, I see!
20:24 jnthn Maybe it's for the benefit of the export code-gen.
20:24 moritz_ pmichaud: I wanted to add a postcircumfix:<{ }> method there
20:24 moritz_ pmichaud: but I forgot
20:24 jnthn Ah, OK.
20:24 pmichaud I don't believe postcircumfix:<{ }> belongs in Cool.
20:25 colomon I forgot we almost have Cool!  \o/
20:25 jnthn If it's doing auto-viv, no, I agree not.
20:25 moritz_ it does not
20:25 moritz_ it just returns self if the argument is 0, and Nil otherwise
20:25 moritz_ so that <foo bar>[0] and <foo>[0] both work
20:25 pmichaud do you mean perhaps  postcircumfix:<[ ]>, then?
20:26 moritz_ erm, yes
20:26 moritz_ sorry
20:26 alexn_org joined #perl6
20:26 lisppaste3 colomon pasted "Roles and multis" at http://paste.lisp.org/display/98058
20:26 moritz_ you're right, { } doesn't have a place in Cool
20:26 pmichaud <foo>[1]  should probably return a failure
20:26 alexn_org hei ... I'm trying to play with Rakudo ... does perl 6 has an equivalent "perldoc" ?
20:27 pmichaud although I suppose Nil is possible
20:27 moritz_ alexn_org: not really yet
20:27 pmichaud I'm not sure Parameter should inherit from Cool.
20:27 SmokeMachine joined #perl6
20:28 alexn_org moritz_:  how can I discovers the methods available on an object?
20:29 moritz_ rakudo: say 5.^methods(:local)».names.join(', ')
20:29 p6eval rakudo cf4eb8: OUTPUT«Method 'names' not found for invocant of class 'Perl6MultiSub'␤current instr.: '!dispatch_method_parallel' pc 359 (src/glue/dispatch.pir:72)␤»
20:29 jnthn colomon: Is that nopaste The Bug?
20:29 pmichaud other than those two items, my quick-scan didn't see any major flags with the cool branch
20:29 moritz_ rakudo: say 5.^methods(:local)».name.join(', ')
20:29 p6eval rakudo cf4eb8: OUTPUT«get_attr_str() not implemented in class 'Sub'␤current instr.: 'perl6;Code;name' pc 13209 (src/builtins/Str.pir:68)␤»
20:29 moritz_ alexn_org: buy guessing; or introspection when it works; or reading source code
20:29 moritz_ alexn_org: or by implementing perldoc, and using it :-)
20:29 colomon jnthn: I don't know if it's The Bug, but it's certainly A Bug.  Doing different things got different bad reactions, but that's the first one I've been able to easily isolate.
20:29 alexn_org :)
20:30 alexn_org moritz_:  thanks
20:30 jnthn colomon: If you mark them all multi does it work out any better?
20:30 jnthn colomon: In this case though, the only method in the class should probably just win.
20:30 _buno_ joined #perl6
20:30 moritz_ pmichaud: I couldn't think of any reason why Paramater should not be Cool
20:30 moritz_ it's a builtin type after all
20:31 pmichaud It just feels weird.  It's not a normal "value type"
20:31 colomon jnthn: nope, same get_attr_str error.
20:31 jnthn colomon: OK
20:31 jnthn colomon: Debugging.
20:31 pmichaud I'd tend to keep things out of Cool until we have a good reason for them to be in.
20:31 colomon \o/
20:31 jnthn Parameters just ain't Cool enough.
20:31 pmichaud as opposed to assuming they're Cool until we decide they shouldn't be.
20:32 moritz_ pmichaud: afaict the idea was that all builtin types are Cool, unless they have a very good reason not to
20:32 pmichaud I think that's more for value types than "all types"
20:33 pmichaud I can be argued into it, yes.
20:33 moritz_ what definition of "value types" are you currently using?
20:33 pmichaud but from a deprecation perspective, it's much easier to put things into Cool than it is to take them out.
20:33 moritz_ $thing eq $thing.WHICH
20:33 pmichaud Num, Str, Array, Hash, etc.  tend to be "value types" to me
20:34 pmichaud and we expect them to automagically work in other contexts
20:34 pmichaud Parameter (as an object) doesn't feel to me like something that should behave like a numeric just whenever it wants
20:34 * jnthn buys pmichaud's argument
20:34 moritz_ I'll spectest with having 'is Cool' removed from Parameter
20:35 pmichaud i.e., I wouldn't expect to be able to do:    my Parameter $x = &sub.signature.whatever;   say $x.sin;
20:35 pmichaud doing .sin on a Parameter object doesn't feel Cool.  :-)
20:35 pmichaud whereas I would expect  "3.14".sin to work, because Str is Cool
20:40 colomon I thought delegation to Cool was supposed to be automatic, rather than through normal subclassing?
20:41 jnthn No, it's just subclassing
20:41 moritz_ colomon: nope, only the conjectural fallback mechanism is magical
20:41 japhb pmichaud or jnthn: could we get one of you for a couple minutes in #ps?
20:41 jnthn There is some spec-ulation that there's some fallback mechanism too.
20:41 pmichaud japhb: I'm in.
20:41 colomon subclassing++, magic--
20:41 jnthn pmichaud++
20:41 * jnthn doesn't even appear to be on that IRC server
20:42 * jnthn reads the logs
20:42 japhb thanks, pmichaud
20:42 jnthn pmichaud: +1
20:43 pmichaud jnthn/others:  any reason to believe that the Rakudo release won't target Parrot 2.3.0 ?
20:43 pmichaud i.e., it's okay for Parrot to start merges?
20:43 jnthn pmichaud: Can they hold for 10 mins?
20:44 jnthn pmichaud: My spectest run against 2.3.0 will be done then.
20:44 pmichaud jnthn: have you had any errors yet?
20:44 jnthn No.
20:44 [particle] heh, you're asking a lot ;)
20:44 pmichaud that's good enough for me.
20:44 jnthn But I'm only down to S05. ;-)
20:44 pmichaud in other words, we're not going to be doing things against parrot trunk until after the release
20:44 moritz_ jnthn: I've already spectested successfully a revision *very* close to parrot 2.3.0, only doc and test changes since then
20:44 jnthn moritz_: And passed?
20:45 moritz_ jnthn: yes :-)
20:45 jnthn pmichaud: Right, jsut normal procedure.
20:45 moritz_ would have screamed if not
20:45 jnthn moritz_++
20:45 jnthn OK, in that case I'm happy to give Parrot folks the go-ahead.
20:46 pmichaud I just did.  :)
20:46 pmichaud they're merging in the immutable_strings branch.
20:46 moritz_ \o/
20:46 [particle] and the line numbering fix
20:46 moritz_ oh, that exists?
20:47 PacoLinux joined #perl6
20:47 [particle] (1:14:50 PM) chromatic: I worked on line numbering and have a branch ready to merge there.  That should fix up a lot of problems.
20:47 [particle] chromatic++
20:47 * moritz_ still looks for a release name for #28
20:48 pmichaud Moscow.pm
20:48 jnthn \o/
20:48 moritz_ pmichaud: why?
20:48 pmichaud they invited me to present at their conference.  jnthn++ went in my place :)
20:48 pmichaud jnthn++ can add more reasons why :)
20:48 moritz_ I thought it wasn't their conference...
20:49 moritz_ well, wfm
20:49 pmichaud okay, it wasn't their conference, but they made sure Perl 6 was represented :)
20:49 pmichaud *well represented
20:49 jnthn It wasn't, but I rather suspect that Moscow.pm did help...right, what pmichaud++ said.
20:49 jnthn Plus they have had Perl conferences before, and are Perl 6 friendly.
20:49 jnthn *and* they took me for beer.
20:49 pmichaud more to the point, they made sure Rakudo was well represented :)
20:49 moritz_ do you know any web page of that conference?
20:49 [particle] should you name it in cyrillic?
20:50 jnthn ;-)
20:50 moritz_ [particle]: I actually thought about that...
20:50 [particle] fear not utf-8
20:50 pmichaud anyway, I vote for Moscow.pm .  :-)
20:50 slavik Москва.пм
20:50 jnthn Just don't ask me for the translation. ;-)
20:50 moritz_ [particle]: but since I don't read cyrillic very well, I was afraid to mis-spell it
20:50 jnthn moritz_: What slavik++ said :-)
20:50 pmurias joined #perl6
20:50 nihiliad joined #perl6
20:50 [particle] yes, we'd hate for it to translate to 'pants.pm'
20:50 pmichaud if we do use cyrillic, be sure to tag the ascii version also :-)
20:51 moritz_ pmichaud: I'll use the ASCII version, but mention the "real" name in the announcement
20:51 pmichaud and we might want to go back and fix any other names we've anglicized
20:51 pmichaud moritz_: +1
20:51 jnthn пиво.пм
20:51 slavik when?!
20:51 slavik I want
20:51 pmurias diakopter: get_continuation()?
20:51 jnthn It *would* be an awesome PM group!
20:51 moritz_ so... link to that conference?
20:52 pmichaud wfm
20:52 slavik not as awesome as Водка.пм
20:54 slavik Еслиб было море водки, я бы стал подводной лодкой.
20:54 moritz_ was it DevConf?
20:54 slavik Еслиб было море пиво, яб дельфином стал красивым.
20:54 slavik :)
20:54 jnthn moritz_: RIT
20:54 jnthn moritz_: But IIRC masak++ is going to speak at DevConf
20:54 jnthn moritz_: So essentially Perl 6 is represented at two conferences in Moscow!
20:55 jnthn Has been at one, and will be at another. :-)
20:55 hercynium joined #perl6
20:55 jnthn slavik: I'd even take up swimming!
20:56 slavik :)
20:57 moritz_ ok, merging master into Cool makes just t/spec/S12-introspection/parents.t fail
20:58 moritz_ (I remvoved Cool.pm and Cool from Parameter.pm)
20:58 moritz_ should I merge?
20:58 jnthn Yes, unless pmichaud++ has any objections.
20:58 pmichaud no objections
20:58 jnthn colomon: I have a fix for you.
20:59 lumi_ joined #perl6
21:00 ReiniUrban joined #perl6
21:01 scheriii joined #perl6
21:03 scheriii hallo?
21:04 moritz_ monster commit coming up
21:04 moritz_ erm, s/monster/merge/
21:04 colomon jnthn: \o/
21:05 m6locks omg
21:05 dalek rakudo: 10b0ff4 | jonathan++ | build/PARROT_REVISION:
21:05 dalek rakudo: Bump PARROT_REVISION to 2.3.0.
21:05 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​0b0ff4d8460ffc576d9466d65636cf66ced89d0
21:05 dalek rakudo: 698ba87 | jonathan++ | src/builtins/Multi.pir:
21:05 dalek rakudo: Add a .name method to Multi. Fixes various issues with introspection and also role composition, which uses this introspection.
21:05 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/6​98ba87aa795d4eea6d0d34d7ff0e302d0db6138
21:05 m6locks gettin ready
21:05 m6locks to build my rakudo
21:06 pugssvn r30420 | moritz++ | [t/spec] in inheritance hirarchies, take Cool into account; also remove some test for parents of builtins, they are underspecced
21:06 ash__ you can have anonymous classes right?
21:06 scheriii ok.. somebody there who could help me? perhaps? i have no idea about irc, but no idea about perls either ;) but i have to solve an easy  (for me quite difficult) problem with perls...
21:07 ash__ scheriii: what kind of problem?
21:07 moritz_ scheriii: if it's a Perl 6 problem, we can try
21:07 ash__ rakudo: my $a = (class { has $.a; has $.b; }).new; # should work?
21:07 p6eval rakudo cf4eb8: OUTPUT«Invalid namespace key in set_pmc_keyed␤current instr.: 'perl6;ClassHOW;new' pc 3809 (src/metamodel/ClassHOW.pir:27)␤»
21:08 moritz_ ash__: yes, should work. There's also a ticket for that in RT
21:08 ash__ cool, was going to add one if there weren't any
21:09 moritz_ masak++ took care of that :-)
21:10 colomon jnthn: afk on walk, but will see where role patch gets us asap.
21:11 pmurias diakopter: get_continuation()?
21:11 colomon after that, I mean
21:11 jnthn ash__: NYI, in my plans for $soon :-)
21:12 ash__ rakudo: multi foo(Int $a) { say $a; nextwith("and then..."); }; multi foo(Str $a) { say $a }; foo(1);
21:12 p6eval rakudo cf4eb8: OUTPUT«1␤Null PMC access in clone()␤current instr.: '&nextwith' pc 17662 (src/builtins/assign.pir:34)␤»
21:12 ash__ is that in the bug tracker? i didn't see it from my searching... but i might be using the wrong keywors
21:12 scheriii :D ok dont know if it works... tried to write moritz... hm ... i'll try to explain ;) doing an internship and its my first day i got a own webserver to "play" with and an exercise to write a pearls programm... i'm a little bit lost ;)
21:12 ash__ you probably mean perl 5... i'd guess
21:12 moritz_ scheriii: doesn't sound like Perl 6 - http://www.perlmonks.org/?node=SoPW might be a good address for your questions
21:12 moritz_ scheriii: or /join #perl
21:13 scheriii ah ok... thank you...
21:14 clintongormley joined #perl6
21:15 jnthn ash__: That is tracked iirc. It's also...debatable how to fix that.
21:17 dalek rakudo: aa12544 | moritz++ |  (3 files):
21:17 dalek rakudo: a wee bit uncooling
21:17 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​a1254495f26693fb80f31525b1d640351bab78a
21:17 dalek rakudo: 77b52fd | moritz++ |  (24 files):
21:17 dalek rakudo: Merge branch 'cool'
21:17 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7​7b52fd30a759a4b555fe4f85bec39750c128b25
21:17 dalek rakudo: d3b8168 | moritz++ | docs/ (2 files):
21:17 dalek rakudo: next release will be named "Moscow"
21:17 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​3b816890b9514486c8299bd287ae64b33b64f5f
21:17 dalek rakudo: bdc5dca | moritz++ |  (3 files):
21:17 dalek rakudo: Merge branch 'master' of github.com:rakudo/rakudo
21:17 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​dc5dca46b209e3c02c05bf6f64a0efb30326989
21:17 moritz_ rakudo: sub infix:<@@> ($x, $y) { $x + $y }; say 3 @@ 4
21:18 p6eval rakudo cf4eb8: OUTPUT«A method named '>' already exists in class 'Perl6;Grammar'. It may have been supplied by a role.␤current instr.: 'parrot;P6metaclass;add_method' pc 422 (runtime/parrot/library/P6object.pir:326)␤»
21:18 moritz_ weird
21:18 pugssvn r30421 | moritz++ | [t/spec] test that subs without an "our" are not entered into the namespace
21:18 railk joined #perl6
21:19 moritz_ fwiw the error above is trigged by a fudged-out test in t/spec/S06-advanced_subroutine_features/lexical-subs.t
21:19 ash__ rakudo: sub infix:<@!> ($x, $y) { $x + $y }; say 3 @! 4
21:19 p6eval rakudo cf4eb8: OUTPUT«A method named '!>' already exists in class 'Perl6;Grammar'. It may have been supplied by a role.␤current instr.: 'parrot;P6metaclass;add_method' pc 422 (runtime/parrot/library/P6object.pir:326)␤»
21:19 ash__ does @ mean something like escape?
21:20 ash__ or is it happening to mean something like escape by accident?
21:20 moritz_ it should not
21:24 ash__ something odd is happening with @, i am trying it in different ways, and @ seems to be the common denominator...
21:25 railk i was reading through A05 and something puzzles me with the rule that is supposed to be equivalent to <%hash> (under section variable interpretation), it states `$val := <%hash.prop{valuematch}> # find value <( $val eq %hash{$val} )>  # assert eq` but wouldn't that second part have to be `<( $val eq %hash{$key} )>`? am i missing something?
21:25 moritz_ railk: don't read A05, but rather S05
21:25 railk oh
21:26 moritz_ railk: the Apocalypses documents are long out of date, and not maintained anymore
21:26 ash__ the A## are a bit older, and probably not the same as S##
21:26 moritz_ railk: and we've abandoned hash interpolation in favor or proto regexes, iirc
21:31 pugssvn r30422 | moritz++ | [t/spec] test various rakudo oddities when overloading postcircumfix:<{ }>
21:32 jnthn colomon: OK, great, let me know how it goes when you get to it. :-)
21:33 jnthn moritz_: That @ thing - I've hit that before somewhere.
21:34 * moritz_ goes to bed
21:34 jnthn I think it's because masak++ bakes every @ he sees.
21:34 jnthn ;-)
21:34 moritz_ :-)
21:34 moritz_ 'night
21:34 jnthn moritz_++ # nice test stuff!
21:34 jnthn o/
21:34 dalek rakudo: 5530662 | moritz++ | t/spectest.data:
21:34 dalek rakudo: run S06-operator-overloading/methods.t
21:34 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​530662f95038587549cbc6e4822da4c1861a17c
21:39 diakopter pmurias: well yeah :)
21:42 pugssvn r30423 | jnthn++ | [t/spec] Fudge a chunk of S12-methods/multi.t; going to start working through getting more of these working again, but good to test the bunch that do work.
21:46 dalek rakudo: cdb2b8f | jonathan++ | t/spectest.data:
21:46 dalek rakudo: Turn on S12-methods/multi.t.
21:46 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​db2b8f8be6bee1818779260e69abc8f5d6be769
21:47 diakopter std: sub infix:<' '> ($x, $y) { $x + $y }; say 3' '4     # TimToady   infinite loop?
21:47 p6eval std 30421: OUTPUT«ok 00:01 111m␤»
21:47 diakopter oh.
21:47 diakopter rakudo: sub infix:<' '> ($x, $y) { $x + $y }; say 3' '4
21:47 p6eval rakudo bdc5dc: OUTPUT«7␤»
21:47 pmurias diakopter: the runtime will be written in perlesque
21:47 pmurias ?
21:47 pmurias s/will/should
21:47 diakopter yeah, but that doesn't mean contextuals will be *implemented* using perlesque conditionals.
21:47 diakopter contextuals.
21:48 pmurias contextuals are not the first think i'm worried about when writting a backend
21:49 pmurias diakopter: what are the other uses of pelesque contextuals?
21:49 diakopter STD/Cursor use them heavily
21:49 diakopter so yes, STD's compilation of itself to perlesque would use perlesque contextuals directly.
21:49 pmurias how did you implement them
21:49 astrojp joined #perl6
21:49 pmurias ?
21:49 diakopter they're not correct yet
21:49 diakopter but ...,
21:50 diakopter each frame that assigns to a contextual gets a slot for it
21:51 pmurias and a lookup for a contextual walks the call chain?
21:51 diakopter and the first assignment in that frame that occurs, sets another flag slot for that contextual, and it's reverted when the frame returns
21:51 diakopter no
21:51 diakopter each variable, contextual or not is at most 2 pointers away
21:51 diakopter so effectively, a contextual is a global
21:52 diakopter but the frames themselves reset the values upon return
21:52 pmurias so where are the contextuals kept?
21:52 diakopter slots in the top-level frame, always
21:52 diakopter no matter where they are initially declared
21:53 pmurias and the flags?
21:53 diakopter each frame
21:53 diakopter per-contextual
21:53 diakopter a machine word, 0 or non0
21:53 pmurias that breaks with concurency
21:54 diakopter yes, like I said to sorear, STD's compilation of itself to perlesque doesn't need concurrency.,
21:54 pmurias perlesque isn't intended to be generall purpose?
21:55 diakopter no, it's not intended to grow into Perl 6
21:55 diakopter it's just a subset.
21:55 diakopter Perl 6 will have to be implemented *in it*, using STD/viv(/mildew) as a front-end.
21:56 diakopter (or rakudo/nqp-rx/past)
21:56 colomon jnthn: "Currently, adding multiple methods of the same name is not supported." :\
21:56 pmurias what i meant in general purpose was that if it was supposed to be a backend for a full compiler or a special cased viv translator
21:56 colomon That's with multis on each instance.
21:56 colomon with multi on just the first, it works.
21:56 jnthn colomon: Aha.
21:56 diakopter pmurias: yes, special case viv runtime.
21:56 diakopter or rakudo/nqp-rx/past runtime.
21:56 jnthn colomon: OK, I suspected we may hit that one...
21:57 diakopter using Perl6-ish and Perl5-ish features
21:57 colomon jnthn: at the very least, a much nicer fatal error.  ;)
21:57 jnthn colomon: Well, yes. :-)
21:57 jnthn colomon: The one you were meant to get to before.
21:57 jnthn So now I guss my task is the NYI feature. :-)
21:57 colomon well, let me see how this works on real code.  (sic)
21:58 diakopter pmurias: but the thing is, the entire compiler framework is exposed to perlesque code as an API (since it's just .NET classes also), so yes, entire compilers can be implemented on it.
21:58 diakopter but the contextual implementation is so brain-dead easy (because of the multi-stage compilation in csmeta) that it could be done just as easily in perlesque.
21:58 jnthn colomon: I did just fudge a bunch of S12-methods/multi.t so I could at least see what is passing and what is not.
21:59 diakopter probably even easier, in fact.
21:59 jnthn colomon: And certainly there's todos in there. :-)
22:00 colomon :)
22:00 pmurias diakopter: done just as easily in perlesque - what do you mean by that?
22:01 diakopter the implementation of contextuals.
22:01 diakopter just as easily in perlesque as I did in "C#"
22:01 pmurias you mean if perlesque was written itself in perlesque?
22:01 snarkyboojum joined #perl6
22:02 diakopter it'll need another level of indirection for thread-local storage, but that's smop.
22:02 diakopter pmurias: no.
22:02 diakopter if Perl 6 contextuals were written in perlesque.
22:03 pmurias so why add them to perlesque?
22:03 colomon jnthn: if I add method "abs" to Numeric, perl 6 builds, but you get "Null PMC access in find_method('!select')" when you try to run it.
22:04 diakopter pmurias: b/c the first stage is to directly translate STD to perlesque.
22:04 diakopter not "implement Perl 6"
22:04 diakopter transliterate, I should say.
22:04 pmurias why is that the first step?
22:04 diakopter what are the other options?
22:05 pmurias implement enough Perl6 to run STD
22:05 diakopter that's not feasible.
22:05 diakopter it's already in enough of a Perl5 subset that gimme5 can more-or-less directly transliterate it to p5.
22:06 jnthn colomon: Got a patch I can try locally?
22:06 jnthn colomon: Did you remove it from elsewhere, or?
22:06 colomon one sec.
22:07 jnthn OK
22:07 * jnthn is hacking on another patch ATM too, though not a multi/role one...
22:07 lisppaste3 colomon pasted "jnthn++ add this to Numeric.pm (warning: breaks p6)" at http://paste.lisp.org/display/98066
22:08 jnthn colomon: Ah, that'll be very easy for me to try and test. :-)
22:08 pmurias diakopter: one you have a transliterated STD what will you do?
22:08 diakopter compile it to CIL using csmeta/perlesque.
22:08 diakopter then run it in mono.
22:08 eternaleye rakudo: grammar Test { regex TOP { <foo><bar> }; regex foo { foo }; regex bar { bar }; }; class TestActions { method TOP { say 'TOP'; }; method foo { say 'foo'; }; method bar { say 'bar'; }; method baz { say 'baz' }; }; Test.parse( 'foobar', :actions(TestActions.new);
22:09 p6eval rakudo bdc5dc: OUTPUT«Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 11␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
22:09 eternaleye rakudo: grammar Test { regex TOP { <foo><bar> }; regex foo { foo }; regex bar { bar }; }; class TestActions { method TOP { say 'TOP'; }; method foo { say 'foo'; }; method bar { say 'bar'; }; method baz { say 'baz' }; }; Test.parse( 'foobar', :actions(TestActions.new) );
22:09 p6eval rakudo bdc5dc: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤current instr.: 'perl6;TestActions;foo' pc 1677 (EVAL_1:618)␤»
22:10 pmurias diakopter: what i meant what's the next step after that
22:10 eternaleye Hm. I was tring to figure out what happened when an action object defined a method with no corresponding regex in its grammar, but this doesn't tell me much.
22:10 eternaleye *trying
22:11 jnthn colomon: afk for a little bit, back soonish
22:12 diakopter pmurias: oh; I'll write action routines (in perlesque) that build up csmeta's internal AST (runsharp's), and start writing the Perl 6 runtime (in strongly-typed perlesque) to support it.
22:12 diakopter so, there will be a viv-equivalent in CIL
22:12 eternaleye The reason I want to know this is that I'm thinking of writing a group of syntax hilighters, which output using actions. However, some languages (say, brainf***) don't have some components, like variables, and therefore the grammar for it won't define a 'variable' regex. I want to know if I can use the same actions object for all hilighters
22:14 bkeeler It shouldn't hurt anything to have methods which never get called
22:15 eternaleye Okay, good
22:15 pmurias diakopter: so you want to write a Perl 6 compiler in perlesque?
22:16 pmurias (firstly hacking together a STD.pm to perlesque translator)
22:16 diakopter yes :)
22:16 pmurias :(
22:17 diakopter why?
22:17 diakopter yes, if by "hacking together", you mean "using STD to parse/compile itself"
22:18 diakopter it's actually the most direct route to bootstrap, imho.
22:19 diakopter instead of implementing a full duplicate front-end and a full-blown backend, implement three front-ends and a backend for a much less complex language.
22:21 * diakopter hopes he's communicating clearly
22:21 pmurias so you would have to make perlesque a proper language if you want to write a Perl 6 compiler in it
22:21 diakopter what do you mean by "proper language"?
22:21 diakopter (as opposed to ... what?)
22:21 pmurias error message that don't make you want to kill someone
22:21 pmurias * messages
22:22 diakopter :/
22:22 diakopter ok ok, I'll make them all say "parsefail" :P
22:22 pmurias the error messages in perlesque would make sure that noone would use it again
22:23 pmurias diakopter: parsefail plus position in source is acceptable
22:24 diakopter whew. :) that's doable.
22:24 pmurias if you don't output the postition you'll have to read STD.perlesque to search for the syntax error the translator did
22:25 pmurias s/did/produced
22:25 diakopter yeah
22:26 Spreadsheet_ joined #perl6
22:26 Spreadsheet_ When will Perl6 be released?
22:26 pmurias the reason why i don't like the translate STD and write the compiler in perlesque is that seems like a tons of work that's likely to fail
22:26 Spreadsheet_ Is it too late to suggest new features
22:27 pmurias diakopter: like elf did
22:27 diakopter oh
22:27 diakopter the thing is, there's already a complete compiler toolkit/framework in csmeta
22:27 diakopter type-checking and everything
22:28 pmurias type-checking? for Perl 6
22:29 ash__ Spreadsheet_: perl6 doesn't have a scheduled release date, but it should come out on christmas, eventually
22:29 ash__ Spreadsheet_: and if you have any comments on the current spec's then by all means send an email to the perl6-language mailing list or ask here
22:30 pmurias diakopter: you mean at runtime?
22:31 diakopter pmurias: compile time.
22:31 diakopter AST generation time.
22:31 quester_ joined #perl6
22:32 pmurias diakopter: so that would be useless for Perl 6
22:32 diakopter (eye roll)
22:32 diakopter there are several layers of type systems.
22:32 pmurias as Perl 6 is a dynamic language
22:32 diakopter (eye roll)
22:32 diakopter everything's a strongly-typed language at one level or another.
22:33 diakopter or more.
22:34 diakopter for instance, rakudo's runtime objects *behind*the*scenes* don't just up and change type.
22:35 pmurias you want to check that
22:35 diakopter ?
22:35 diakopter want to check what?
22:35 pmurias you want to type check a perl 6 program
22:36 diakopter no.  you want to type check the code the perl 6 program is being JITted to.
22:37 pmurias that will only give you some guaranties about the correctness of the compiler
22:37 diakopter yes.  the Perl6-level type-checking is at a higher level, yes.
22:37 diakopter or not-very-existent.
22:37 diakopter but definitely existent for variables that have type annotations.
22:38 pmurias at runtime
22:38 ash__ some things are type checked, for instance, all multi-methods, and operators
22:38 diakopter yeah, of course.  that's a runtime thing.
22:38 Spreadsheet_ ash__: thanks
22:39 ash__ but some of that can happen at runtime, you can also have type inference on some things too
22:39 diakopter but (luckily) the native types in Perl 6 map nicely to CLR vm native types.
22:39 diakopter so, the native types are type-checked
22:39 ash__ like, if you use a infix:<+> operator, you know both sides will be at least Num's and the result is a num (assuming its using the built in +)
22:40 ash__ oops
22:40 ash__ i said runtime, i meant compile time
22:41 pmurias ash__: type inference is a very different thing from type checking
22:41 pmurias you try to infer some type info, rather then prove that all the type info is correct
22:42 ash__ yes, but you can use that to do some type checking at compile time, if someone did "my Str $a = 1 + 2"; you can check that at compile time
22:42 ash__ you don't have to get to execution time to figure out that they just assigned a Num-like object to a Str
22:42 pmurias thats correct
22:43 pmurias perl6: my Str $a = 1 +2;
22:43 p6eval elf 30423, pugs:  ( no output )
22:43 p6eval ..rakudo cdb2b8: OUTPUT«Type check failed for assignment␤current instr.: '&die' pc 17223 (src/builtins/Junction.pir:404)␤»
22:43 pmurias hm?
22:43 ash__ rakudo is doing that at runtime
22:43 diakopter I don't think so
22:43 diakopter not certain
22:43 diakopter oh, I'm wrong
22:43 jnthn Rakudo is doing that check at runtime.
22:44 jnthn (Which is fine)
22:44 jnthn In the future, we should be able to spot that one at compile time.
22:44 ash__ perl 6 doesn't say you have to do it at compile time, but a compile time check might be useful for optimization and/or error checking
22:44 jnthn Right
22:46 pmurias diakopter: will the translated STD be fully correct (to the extent STD.pm5 is)?
22:47 diakopter hopefully :)
22:47 diakopter I mean, that's the goal, yes.
22:47 colomon afk # dinner
22:47 pmurias and faster?
22:48 diakopter wishful thinking, but yeah, maybe :P
22:49 jnthn clockan öl \o/
22:52 wknight8111 joined #perl6
22:55 Spreadsheet_ So where can I read a draft of Perl 6? It seems really interesting
22:55 Spreadsheet_ Will it have concurrency? Concurrency is trendy now
22:56 Spreadsheet_ Will I be able to read my code after writing it?
22:56 pmurias Spreadsheet_: that depends only on you
22:56 pmurias and the quality of your screen
22:56 Spreadsheet_ What about concurrency?
22:57 pmurias yes
22:57 diakopter :)
22:58 jnthn Spreadsheet_: There's various things to read, and even compilers to download and play with. :-)
22:58 jnthn Spreadsheet_: www.perl6.org has links to many things, including spec, where to get a Perl 6 implementation, etc. :-)
22:58 Spreadsheet_ Will there be a Programmming Perl (camel book) for 6?
22:59 diakopter so the rumors say, yes
23:00 ash__ Spreadsheet_: http://perlcabal.org/syn/ is a good site too
23:00 thowe Is pugs stil under development?
23:00 ash__ no, its still maintained so it will compile with current version of ghc, but its not actively developed
23:02 pmurias diakopter: got the private msg?
23:03 christine joined #perl6
23:03 Spreadsheet_ left #perl6
23:04 cj cotto_work, diakopter: do we have a decision on the p6 on dlr thing?  miguel and mhutch are asking me if I'd be willing to work on a different project with them.
23:09 orafu joined #perl6
23:10 pmurias sleep&
23:22 quester_ left #perl6
23:26 [synth] joined #perl6
23:29 lue hello there!
23:30 jnthn hellue!
23:32 lue rakudo: my @a = 1,2,3; my @b := @a; say @b
23:32 p6eval rakudo cdb2b8: OUTPUT«:= binding of variables not yet implemented␤current instr.: '&die' pc 17223 (src/builtins/Junction.pir:404)␤»
23:33 lue ah! D:
23:33 lue I'd fix it myself, but I haven't learnt the deep magic yet :)
23:35 ash__ rakudo: my &infix:<:=> = &infix:<=>; my $a := 5; say $a # lol i am bad peoples
23:35 p6eval rakudo cdb2b8: OUTPUT«5␤»
23:36 ash__ does nqp := mean the same as perl6 := ?
23:39 bkeeler Semantically yes, but I think things are more complex under the hood in p6
23:40 spreadsheet joined #perl6
23:40 spreadsheet Will there be an interactive interpreter for perl 6? is there one for perl 5?
23:40 spreadsheet Something like Python interactive or IRB
23:41 jnthn ash__, bkeeler: Both correct. :-)
23:41 lue for rakudo at least, there is the REPL
23:41 jnthn spreadsheet: We kinda have one in Rakudo already but it's not great.
23:41 lue but it's not very good
23:41 jnthn spreadsheet: We plan to improve it soonish.
23:41 jnthn spreadsheet: But it exists at lesat. :-)
23:42 lue i.e. if you type: my $a = 3 <Return> say $a
23:42 lue you get an error
23:43 spreadsheet I think it should be more like ipython (if you have heard of that)
23:43 spreadsheet ipython is a much better version of the standard python interactive prompt
23:44 jnthn spreadsheet: I haven't; what do you like about it?
23:44 spreadsheet It has tab completion, auto-formatting, and you can scroll back in history one function (subroutine) at a time, instead of line by line
23:44 lue REPL, by the way, is what you get when you type `perl6'. It's not separate, like ipython.
23:44 jnthn spreadsheet: Ah, interesting.
23:44 lue The one crummy thing about the standard python interpreter is that you automagically forget about indentation.
23:45 ash__ there are lots of good things with can do with a commandline interface, and many of them will be worked on eventually, but i don't think they are high priority
23:45 ash__ like readline support would be nice
23:46 jnthn ash__: I think that if you manage to get a Parrot built with readline support, Rakudo's command line will use it.
23:46 jnthn afaik anyway.
23:46 ash__ with readline you could do a bunch of new things, like have a history, and with cursres or ncurses you could add tab competition
23:46 jnthn ash__: I already get history here, fwiw.
23:47 jnthn Ooh. I have a patch for anonymous class support.
23:47 ash__ oh, it works here too, never noticed it before
23:47 jnthn That gets it a bunch more right than we did in alpha.
23:47 jnthn ash__: yay :-)
23:47 spreadsheet jnthn: whoa
23:48 pugssvn r30424 | jnthn++ | [t/spec] Tweak and unfudge some more of the anonymous class tests.
23:48 eternaleye joined #perl6
23:49 jhuni joined #perl6
23:50 TimToady std: [+];
23:50 p6eval std 30423: OUTPUT«ok 00:01 109m␤»
23:50 jnthn std: [+]
23:50 TimToady putting whitespace after it causes it to want arguments
23:50 p6eval std 30423: OUTPUT«[31m===[0mSORRY![31m===[0m␤Prefix requires an argument at /tmp/WoHRF4KviA line 1 (EOF):␤------> [32m[+][33m⏏[31m<EOL>[0m␤Parse failed␤FAILED 00:01 108m␤»
23:50 jnthn TimToady: Oh, I thought it was just verboten outright.
23:50 TimToady not sure why
23:51 jnthn (Thought and hoped ;-))
23:51 TimToady rakudo: say [*]; # should be 1
23:51 p6eval rakudo cdb2b8: OUTPUT«␤Method 'postcircumfix:<[ ]>' not found for invocant of class 'Bool'␤current instr.: '!postcircumfix:<[ ]>' pc 10752 (src/builtins/Role.pir:90)␤»
23:51 jnthn wtf.
23:51 ash__ lol
23:51 jnthn Well. That's a bug.
23:51 ash__ alpha: say [*];
23:51 p6eval alpha 30e0ed: OUTPUT«say requires an argument at line 10, near " [*];"␤in Main (file src/gen_setting.pm, line 2593)␤»
23:52 TimToady rakudo: say [*](); # should be 1
23:52 jnthn TimToady: What tells the OPP not to want a term after a prefix?
23:52 p6eval rakudo cdb2b8: OUTPUT«1␤»
23:52 jnthn ...after *that* prefix, I mean?
23:52 jnthn [ <?before '('> || <?before \s+ [ <?stdstopper> { $<O><term> = 1 } ]? > || { $<O><term> = 1 } ]
23:52 TimToady ; is supposed to be a terminator
23:52 jnthn Is it that bit?
23:53 jnthn TimToady: We seem to be missing that piece from Rakduo's reduce parsing.
23:53 TimToady rakudo: say [*] ; # should be 1
23:53 p6eval rakudo cdb2b8: OUTPUT«␤Method 'postcircumfix:<[ ]>' not found for invocant of class 'Bool'␤current instr.: '!postcircumfix:<[ ]>' pc 10752 (src/builtins/Role.pir:90)␤»
23:53 jnthn TimToady: I think because I didn't understand what it did at the time, and also ain't too sure how to translate $<O><term> to rakudo-speak.
23:54 TimToady std: say [*] ;
23:54 p6eval std 30423: OUTPUT«ok 00:01 107m␤»
23:54 TimToady a week or two ago I removed the implied ; at EOF
23:54 jnthn ah.
23:55 TimToady not sure why stdstopper doesn't count $ as a terminator, hmm
23:56 TimToady std: say ([*]    )
23:56 p6eval std 30423: OUTPUT«ok 00:01 108m␤»
23:56 dalek rakudo: 7f8397d | jonathan++ | src/Perl6/Grammar.pm:
23:56 dalek rakudo: Bring our morename rule more in line with STDs.
23:56 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7​f8397d0a1303b542d33f2bc1a3d9331bc0687b6
23:56 dalek rakudo: 22805bd | jonathan++ | src/glue/role.pir:
23:56 dalek rakudo: A nudge in the direction of getting anonymous roles working (they don't yet, this is just part one :-)).
23:56 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/2​2805bd22e63e64b0ca44086b63c2f1d7072fd10
23:56 dalek rakudo: ea1760c | jonathan++ | src/ (4 files):
23:56 dalek rakudo: Get anonymous classes (mostly) working. Passes all the anonymous class tests apart from those that depend on Numeric and Stringy. Also we can remove some hacky stuff I put in earlier.
23:56 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​a1760c428463dfa07ab97f0db3b08dc3388807d
23:56 dalek rakudo: 07fd77b | jonathan++ | t/spectest.data:
23:56 dalek rakudo: Turn on S12-class/anonymous.t.
23:56 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​7fd77bcc5f1d8624522c9860bd8ca49a5d8bbee
23:57 TimToady anyway, the fact that bare [+] doesn't work is an accident
23:57 jnthn TimToady: OK. I'd taken it to mean it shouldn't. :-)
23:58 jnthn I (or some other enterprising soul) will fix Rakudo up at some point, I'm sure.
23:59 lue parrot came out today, correct?

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo