Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2009-04-02

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:06 PhatEddy joined #perl6
00:08 PhatEddy cspenser: w. regard to prefix ops - I don't really know the area much but poking around a bit I noticed that t/spec/S06-operator-overloading/sub.t might be relevant/ helpful
00:13 davidad joined #perl6
00:18 pmichaud cspencer: yes, I think that overloading Num is the standard mechanism for numification.  (Haven't seen anything official on that, but it's consistent with using Str for stringification)
00:19 cspencer is that implemented at the moment?
00:19 pmichaud I don't think it is.
00:19 cspencer i was having issues getting it working
00:19 pmichaud I could probably work on it a bit, though.
00:19 cspencer well, that'd explain it then :)
00:19 pmichaud I think that Str overloading is implemented, but I don't think num overloading it.
00:19 pmichaud *is
00:19 pmichaud there's also a question about how that plays with Int
00:20 pmichaud i.e., if I overload Num, should that affect .int ?  (Is there still a .int?)
00:20 pmichaud and do we have both .int and .Int?
00:20 cspencer would it be done similar to the Str implementation?
00:20 cspencer if you point me to where the Str is implemented, i wouldn't mind taking a crack at it myself :)
00:20 pmichaud I think possibly yes, with the exception of resolving the num/int issues.
00:21 cspencer ah ok
00:21 pmichaud The Str stuff is implemented in src/classes/Object.pir, I think.
00:21 pmichaud Look specifically for get_string
00:21 pmichaud ( :vtable('get_string'), likely)
00:22 cspencer will do, thank you :)
00:23 cspencer that's looks straight forward enough
00:23 cspencer i imagine you'd prefer clarification on the int issue before implementing it though?
00:24 pmichaud try implementing get_number and let's see what fails (if anything)
00:24 cspencer sure
00:24 pmichaud oh, there must be some other piece to the puzzle, though.
00:24 pmichaud hm.
00:25 cspencer how's that?
00:25 pmichaud hmmm, maybe not.
00:25 pmichaud I'm not sure what keeps   Str  (Perl6Str) from getting the incorrect .Str call
00:25 brunoV joined #perl6
00:26 pmichaud anyway, try it and let's see what breaks.  :-)
00:26 pmichaud or if it even works :-)
00:27 cspencer sure, i'll let you know :)
00:32 cspencer it does what it was supposed to in a superficial example, running the spectests right now
00:32 pmichaud excellent.
00:43 Cybera joined #perl6
00:46 eisgang joined #perl6
00:50 dKingston joined #perl6
00:55 eisgang left #perl6
00:55 eisgang joined #perl6
01:04 eternaleye joined #perl6
01:08 Tene_ joined #perl6
01:08 cspencer pmichaud: all the spec tests seems to have passed
02:01 hercynium joined #perl6
02:01 alester joined #perl6
02:17 cspencer pmichaud: i've sent in the numification patch
02:17 pmichaud cspencer: excellent!  I should be applying patches a bit later.
02:20 s1n frioux|home: around
02:39 davidad1 joined #perl6
02:40 s1n what the heck does this rakudo error mean:
02:40 s1n Null PMC access in can()
02:42 s1n rakudo: use v6; package Foo { class Bar { method baz { say "baz"; } }; Bar.baz; }
02:42 p6eval rakudo e5f4a3: OUTPUT«Null PMC access in can()␤current instr.: '!dispatch_method' pc 16868 (src/builtins/guts.pir:104)␤»
02:42 pugs_svn r26043 | pmichaud++ | [t/spec]:  Update some quotes in S05-mass/properties.t .
02:43 s1n rakudo: use v6; package Foo { class Bar { method baz { say "baz"; } }; Foo::Bar.baz; }
02:43 p6eval rakudo e5f4a3: OUTPUT«Null PMC access in getprop()␤current instr.: 'parrot;P6object;HOW' pc 60 (runtime/parrot/library/P6object.pir:100)␤»
02:44 s1n rakudo: use v6; package Foo { class Bar { method baz { say "baz"; } } }; Foo::Bar.baz;
02:44 p6eval rakudo e5f4a3: OUTPUT«baz␤»
02:44 pmichaud rakudo doesn't always understand nested namespaces yet.
02:45 s1n rakudo: use v6; package Foo { class Bar { method baz { say "baz"; }; self.baz; } }
02:45 p6eval rakudo e5f4a3: OUTPUT«Lexical 'self' not found␤current instr.: 'parrot;Foo;Bar;_block23' pc 124 (EVAL_19:62)␤»
02:45 s1n pmichaud: ahh okay
02:45 s1n so should i keep my namespaces flat for now or what?
02:45 pmichaud that'd be my guess, until someone has time to work on namespace issues.
02:47 s1n it works outside of the package just fine, but within the package/module definition it has trouble
02:48 justatheory joined #perl6
03:13 awwaiid joined #perl6
03:18 awwaiid How do I make rakudo dump a parse tree? I've been able to get pir with --target=pir
03:19 awwaiid or a PAST would be fine too
03:21 cspencer --target=PAST should do that, i think?
03:21 awwaiid I tried that but didn't get any output. I was also using -e... I'll try with a file
03:22 kjwcode joined #perl6
03:22 awwaiid ah, that did it!
03:32 PerlJam rakudo:  "a:b:c:d".split(/:/,2).join(" ").say
03:32 p6eval rakudo e5f4a3: OUTPUT«perl6regex parse error: Quantifier follows nothing in regex at offset 17, found ':'␤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10253 (compilers/pge/PGE/Perl6Regex.pir:1219)␤»
03:32 PerlJam rakudo:  "a:b:c:d".split(/\:/,2).join(" ").say
03:32 p6eval rakudo e5f4a3: OUTPUT«a b:c:d␤»
03:32 PerlJam rakudo:  "a:b:c:d".split(/\:/,1).join(" ").say
03:32 p6eval rakudo e5f4a3: OUTPUT«a:b:c:d␤»
03:32 alc joined #perl6
03:32 PerlJam rakudo:  "a:b:c:d".split(/\:/,0).join(" ").say
03:32 p6eval rakudo e5f4a3: OUTPUT«␤»
03:33 PerlJam rakudo:  "a:b:c:d".split(/\:/,-1).join(" ").say
03:33 p6eval rakudo e5f4a3: OUTPUT«␤»
03:33 PerlJam Where's the spec for split?
03:35 meppuru joined #perl6
03:36 bacek_ PerlJam: S32?
03:37 cspencer rakudo: say ~(0.. ^10)
03:37 p6eval rakudo e5f4a3: OUTPUT«0 1 2 3 4 5 6 7 8 9 10␤»
03:43 lambdabot joined #perl6
03:51 Alias joined #perl6
03:52 pmichaud rakudo:  say "\c[SMILE]"
03:53 p6eval rakudo e5f4a3: OUTPUT«say requires an argument at line 1, near " \"\\c[SMILE"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
03:57 dalek rakudo: 4d74d0c | pmichaud++ |  (2 files):
03:57 dalek rakudo: Add initial support for \cC and \c[UNICODE CHAR NAME].
03:57 dalek rakudo: Bump PARROT_REVISION to get latest PGE features.
03:57 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4d74d0c2ed22640413049395568fe144ade63842
03:57 dalek rakudo: 64e33af | pmichaud++ | build/PARROT_REVISION:
03:57 dalek rakudo: Another bump of PARROT_REVISION to get Parrot/PGE bugfixes.
03:57 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/64e33af023a605fab171e789dbb31f6b41177ff6
03:57 jnthn joined #perl6
03:57 bubaflub joined #perl6
03:57 cspencer joined #perl6
03:57 Woody4286 joined #perl6
03:57 Patterner joined #perl6
03:57 Maghnus joined #perl6
03:57 PZt joined #perl6
03:57 c9s joined #perl6
03:57 dukeleto joined #perl6
03:57 lumi joined #perl6
03:57 meteorja1 joined #perl6
03:57 Maddingue joined #perl6
03:57 simcop2387 joined #perl6
03:57 PacoLinux joined #perl6
03:57 kst joined #perl6
03:57 Caelum joined #perl6
03:57 charsbar joined #perl6
03:57 rafl joined #perl6
03:57 buu joined #perl6
03:57 plu joined #perl6
03:57 ingy joined #perl6
03:57 bacek_ joined #perl6
03:57 Grrrr joined #perl6
03:57 r0bby joined #perl6
03:57 krunen joined #perl6
03:57 integral joined #perl6
03:57 Matt-W joined #perl6
04:01 pmichaud rakudo: say 'hello';
04:01 p6eval rakudo e5f4a3: OUTPUT«./perl6: error while loading shared libraries: libparrot.so.1.0.0: cannot open shared object file: No such file or directory␤»
04:01 pmichaud rakudo:  die "while loading shared libraries";
04:01 p6eval rakudo e5f4a3: OUTPUT«./perl6: error while loading shared libraries: libparrot.so.1.0.0: cannot open shared object file: No such file or directory␤»
04:03 cognominal joined #perl6
04:07 pmichaud rakudo: say 'hello';
04:07 p6eval rakudo e5f4a3: OUTPUT«sh: ./perl6: No such file or directory␤»
04:09 PerlJam pm: so, if I have ICU installed, and I pull the latest rakudo, I can use \c[FOO] from rakudo?
04:09 pmichaud that's the theory.
04:10 pmichaud it's working on my box :-)
04:10 * PerlJam installs ICU and tries it out
04:12 PerlJam Is there a way to force a parrot rebuild from rakudo's config?
04:12 * PerlJam guesses not
04:14 bubaflub hello y'all.  i'm looking to get started hacking on rakudo.  could someone help me out?
04:14 PerlJam bubaflub: are you a college student?
04:14 bubaflub PerlJam: i'm a grad student
04:15 PerlJam bubaflub: Have you considered applying to the Google Summer of Code to hack on rakudo?  :)
04:16 PerlJam pm: works on my box too oddly enough  :-)
04:16 pmichaud I've got a few more commits/fixes to make.
04:16 bubaflub PerlJam: actually, yes.  i emailed someone about it, and after talking with them i decided to apply.  i think my application would look pretty good if it had some functioning code attached to it...
04:17 bubaflub PerlJam: i was thinking about doing some Math:: stuff.  my undergrad was in Math & Computer Science with a focus on numerical analysis and number theory / cryptography.
04:17 PerlJam bubaflub: heh, it was me you emailed about it  :)
04:17 bubaflub PerlJam: bahahahah
04:18 bubaflub PerlJam: well, i git clone'd rakudo, got everything compiled and up and running.
04:18 wayland76 joined #perl6
04:20 PerlJam bubaflub: So what, specifically, do you need help with?
04:21 PerlJam bubaflub: and send in that gsoc application  :)  Make sure you follow the template from http://www.perlfoundation.org/perl5/index.cgi?gsoc_2009_proposal_template
04:22 wayland76 dataweaver++ (Jon Lang, for S08 work)
04:23 wayland76 (But that will be reversed if we don't see a commit to the repo :) )
04:25 bubaflub PerlJam: well, i guess just some high-level overview stuff.  i'm swimming in documentation right now.  what exactly would i have to do to implement a simple math function, like greatest common denominator?
04:26 pmichaud sub gcd($x, $y) { ... }   # maybe a good start?
04:26 mikehh joined #perl6
04:27 PerlJam bubaflub: learn perl6 and edit src/setting/Any-num.pm with your subroutine.
04:28 cspencer is there an Any.gcd() method?
04:28 PerlJam cspencer: there can be :)
04:29 wayland76 Shouldn't it be on Numeric or something instead?
04:29 pmichaud "34".gcd(46)   # valid?
04:29 PerlJam wayland76: I don't know .... what pmichaud just said.
04:30 wayland76 Ok, good point :)
04:30 wayland76 Anyway, gcd is not specced :)
04:31 bubaflub so is there a low-hanging fruit of a function that is specced that i can work on?
04:31 bubaflub or am i boldly going where no wo/man has gone before?
04:32 dalek joined #perl6
04:32 wayland76 I don't have a functioning rakudo at the moment, but the relevant spec for numeric stuff is S32-setting-library/Numeric.pod
04:32 awwaiid ah! reading the compiler_overview.pod doc I didn't realize that PAST _is_ the final output of rakudo and the input to parrot. I kept looking for the step after PAST in the doc
04:33 wayland76 OTOH, it looks like the GSOC stuff is non-core, and thus not specced
04:33 pmichaud awwaiid: the Parrot Compiler Toolkit takes care of going the rest of the way to PIR and bytecode.
04:33 awwaiid since compiler_overview.pod just says "... into the equivalent abstract syntax tree (PAST) representation..." not mentioning what the P in PAST is for :)
04:35 pmichaud awwaiid: a patch to improve that text would be very welcome.  :-)
04:35 awwaiid ok
04:36 meppuru good night
04:38 wayland76 meppuru: 'night
04:39 meppuru ;)
04:40 PerlJam bubaflub: to get your feet wet, you could just implement some math functions that you think are useful and then submit them as patches.  They may or may not be used, but the point would be to get some experience and some feedback
04:40 bubaflub PerlJam: yeah.  gsoc or not, i'd love to do some real guts development.  i'm looking at the Numeric.pod spec stuff right now.
04:41 PerlJam bubaflub: if you got a commit bit to the pugs repository you could patch the spec to include your functions too  ;)
04:42 bubaflub PerlJam: there is no GCD method, maybe I'll pick something from this spec that isn't implemented yet.  voting is now open for favorite functions...
04:42 wayland76 I'd love to have information on which numeric types inherit from which other ones.
04:43 wayland76 rakudo: true.succ
04:43 p6eval rakudo 64e33a: OUTPUT«Method 'succ' not found for invocant of class 'Failure'␤current instr.: 'parrot;P6metaclass;dispatch' pc 637 (src/classes/ClassHOW.pir:161)␤»
04:43 PerlJam I wouldn't mind seeing gcd and lcm added  :)
04:43 wayland76 rakudo: my Bool $t; $t = true; $t.succ;
04:43 p6eval rakudo 64e33a: OUTPUT«Statement not terminated properly at line 1, near "= true; $t"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
04:43 bubaflub PerlJam: right on, i'll whip up a quick script to do it.
04:44 wayland76 rakudo: my Bool $t; $t = True; $t.succ;
04:44 p6eval rakudo 64e33a: OUTPUT«Type mismatch in assignment.␤current instr.: 'die' pc 15621 (src/builtins/control.pir:204)␤»
04:44 wayland76 rakudo: my Bool $t; $t = 1; $t.succ;
04:44 PerlJam bubaflub: but submit that gsoc proposal! :)   there's time for "bonding" later.
04:44 p6eval rakudo 64e33a: OUTPUT«Type mismatch in assignment.␤current instr.: 'die' pc 15621 (src/builtins/control.pir:204)␤»
04:45 bubaflub roger that.
04:45 wayland76 rakudo: my Bool $t; $t = 1; print $t.succ;
04:45 p6eval rakudo 64e33a: OUTPUT«Type mismatch in assignment.␤current instr.: 'die' pc 15621 (src/builtins/control.pir:204)␤»
04:45 wayland76 rakudo: my Bool $t; $t = True; print $t.succ;
04:45 p6eval rakudo 64e33a: OUTPUT«Type mismatch in assignment.␤current instr.: 'die' pc 15621 (src/builtins/control.pir:204)␤»
04:45 wayland76 rakudo: my Bool $t; $t = (1 == 1); print $t.succ;
04:45 p6eval rakudo 64e33a: OUTPUT«Null PMC access in isa()␤current instr.: 'parrot;List;!flatten' pc 5960 (src/classes/List.pir:227)␤»
04:46 cognominal_ joined #perl6
04:46 wayland76 hmm.  rakudobug?
04:46 wayland76 rakudo: my Bool $t; $t = (1 == 1);
04:46 p6eval rakudo 64e33a:  ( no output )
04:46 wayland76 rakudo: my Bool $t; $t = (1 == 1); $t
04:46 p6eval rakudo 64e33a:  ( no output )
04:46 wayland76 rakudo: my Bool $t; $t = (1 == 1); print $.perl
04:46 p6eval rakudo 64e33a: OUTPUT«Lexical 'self' not found␤current instr.: '_block14' pc 103 (EVAL_17:51)␤»
04:46 wayland76 rakudo: my Bool $t; $t = (1 == 1); print $t.perl
04:46 p6eval rakudo 64e33a: OUTPUT«Bool::True»
04:46 wayland76 rakudo: my Bool $t; $t = Bool::True; print $t.perl
04:46 p6eval rakudo 64e33a: OUTPUT«Bool::True»
04:46 wayland76 rakudo: my Bool $t; $t = Bool::True; print $t.pick
04:46 p6eval rakudo 64e33a: OUTPUT«0»
04:47 wayland76 rakudo: my Bool $t; $t = Bool::True; print $t.succ
04:47 p6eval rakudo 64e33a: OUTPUT«Null PMC access in isa()␤current instr.: 'parrot;List;!flatten' pc 5960 (src/classes/List.pir:227)␤»
04:47 wayland76 rakudo: my Bool $t; $t = Bool::True; print $t.aowreign
04:47 p6eval rakudo 64e33a: OUTPUT«Method 'aowreign' not found for invocant of class 'Bool'␤current instr.: 'parrot;P6metaclass;dispatch' pc 637 (src/classes/ClassHOW.pir:161)␤»
04:47 wayland76 rakudobug!
04:48 pmichaud is .succ defined on True?  or is it the generic .succ for enums?
04:48 wayland76 Well, it should be defined on a bool, yes?
04:49 wayland76 At least according to S32 (which admittedly needs some work)
04:49 pmichaud In general I take S32 with salt.
04:49 wayland76 rakudo: Bool::True.succ
04:49 p6eval rakudo 64e33a:  ( no output )
04:49 PerlJam .succ on Bool seems weird.
04:49 wayland76 pmichaud: Good idea.
04:49 pmichaud well, I know that Bools support postincrement/decrement
04:50 pmichaud so .succ and .pred isn't too far fetched
04:50 pmichaud but  based on that model, I'd expect Bool::True.succ to be Bool::True, and Bool::False.pred to be Bool::False
04:50 PerlJam right.
04:51 PerlJam (still seems weird)
04:51 PerlJam But if programming languages were cities, Perl 6 would be Austin where the motto is "Keep Austin Weird"
04:51 wayland76 Hmm.  I think I agree there, pmichaud :)
04:52 wayland76 rakudo: print Bool::True++
04:52 p6eval rakudo 64e33a: OUTPUT«1»
04:52 wayland76 rakudo: print Bool::True--
04:52 p6eval rakudo 64e33a: OUTPUT«1»
04:52 wayland76 rakudo: $t = Bool::True; $t++; print $t.perl
04:52 p6eval rakudo 64e33a: OUTPUT«Scope not found for PAST::Var '$t' in ␤current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (src/PCT/HLLCompiler.pir:102)␤»
04:52 wayland76 rakudo: my $t = Bool::True; $t++; print $t.perl
04:52 p6eval rakudo 64e33a: OUTPUT«Bool::True»
04:53 wayland76 rakudo: my $t = Bool::True; $t--; print $t.perl
04:53 p6eval rakudo 64e33a: OUTPUT«Bool::False»
04:53 wayland76 There we go :)
04:53 wayland76 Increment and decrement on non-<Str> types are defined in terms of the
04:53 wayland76 C<.succ> and C<.pred> methods on the type of object in the C<Scalar>
04:53 wayland76 container.
04:53 wayland76 (S03)
04:53 PerlJam rakudo: my $t = Bool::True; $t--; $t--; say $t.perl
04:53 p6eval rakudo 64e33a: OUTPUT«Bool::False␤»
04:53 PerlJam just checking
04:53 wayland76 So presumably Bool needs a .succ and .pred
04:54 pmichaud perhaps, but it could also be that postfix:<++> is overloaded for Bool types.
04:54 wayland76 Hmm.  "
04:54 wayland76 If the type does not support these methods, the corresponding increment
04:54 wayland76 or decrement operation will fail.
04:54 wayland76 "
04:54 wayland76 (More S03)
04:56 wayland76 Btw, pm, you're right about the ++ always returning true
04:56 wayland76 @karma $t
04:56 lambdabot $t has a karma of 0
04:56 wayland76 @karma t
04:56 lambdabot t has a karma of 0
04:58 wayland76 Anyway, I'll submit a bug about that Null PMC unless someone complains soon
04:59 cspencer joined #perl6
05:00 pmichaud We have to redesign rakudo's handling of Bool anyway.
05:00 pmichaud (yes, bug report would be fine)
05:00 wayland76 ok, thanks
05:00 wayland76 Btw, do any of the numeric classes inherit from each other?
05:01 wayland76 (sorry, numeric immutable types)
05:02 pmichaud inherit, no.
05:02 pmichaud But we have a special rule in place so that Int ~~ Num
05:02 wayland76 Ok
05:02 pmichaud (i.e., the code is made to think that Int does Num)
05:03 wayland76 Does that mean that all the methods on Num can also be used on Int?
05:04 pmichaud are there any methods on Num?  ;-)
05:04 wayland76 (in theory?)
05:05 wayland76 Yes, according to S32 :)
05:05 pmichaud example?
05:05 wayland76 What I want to know is, if I rewrite S32 to say Int does Num, with a note that implementors are free to optimise this away(?), would that have the same effect?
05:06 wayland76 Well, succ and pred are also on Num, as are floor, ceiling, abs, and some others
05:06 pmichaud I thought that floor, ceiling, and abs are on Any.
05:06 pmichaud '-32'.abs()   # valid?
05:06 wayland76 That might be a good idea, but it's not what S32 says
05:07 pmichaud see my earlier point about S32 and salt.
05:07 wayland76 Yes, but I'm trying to improve S32
05:07 wayland76 hence my constant references to it :)
05:07 pmichaud S32 is largely wrong in this respect.
05:07 pmichaud many of the methods that it claims to belong to a specific class actually belong on Any
05:08 pmichaud that's not conjectural -- it's simply a place where S32 wasn't kept up-to-date with decisions being made in the Perl 6 design
05:08 PerlJam wayland76: You could improve it by making sure that any operation that can be done on a number that may have started off life as a string representation of a number, are in Any  :)
05:08 wayland76 Hmm.  If I made a list of all functions grouped into packages, could you tell me which ones belong on Any?
05:08 pmichaud it's actually pretty simple
05:08 wayland76 ok, I like simple..
05:09 pmichaud in general, if I expect to be able to do    $x.abs   where $x could be any of an int, num, str, array, whatever (i.e., $x is treated in numeric context), the method belongs on Any
05:09 * PerlJam is hard pressed to come up with a Num-only example actually
05:09 wayland76 Ok, I'll try to remember to rewrite it with that in mind.
05:10 wayland76 PerlJam: I doubt there are any, except on Complex
05:10 pmichaud thus,  grep, join, sort, etc are defined on Any and not List or Array
05:11 cspencer how does one convert a p6 Int to a Num?
05:11 pmichaud afaict, the design team has thus far been reluctant to make a blanket declaration that the relationship between Int and Num is equivalent to "Int does Num".
05:11 pmichaud part of that is implementation concerns, but I think part of it is also unwanted side effects.
05:11 PerlJam pm: I hereby predict that this will be the next thing that changes in the spec (because of the Junction stuff) that will cause a ripple effect throughout the code   ;)
05:12 wayland76 Fine by me.  With your recent notes, the Int does Num stuff is less important in redoing S32
05:12 pmichaud pj: I'm expecting that the junction stuff won't change significantly based on the list discussion.
05:12 cspencer so if a method is supposed to return a Num but it ends up returning an Int, that's ok?
05:12 pmichaud depends on what we mean by "supposed to return a Num"
05:13 cspencer well, if you have a signature that says: our Num multi method foo() { ... }
05:13 PerlJam pm: everytime I think that, Larry shows up with some left-field idea that changes everything.  (thus my prediction)
05:13 wayland76 Anyway, I've made a note of your ( pmichaud's ) comments.  Have to go now &
05:14 pmichaud PerlJam: I've seen Larry do that also.  But the discussion on Junctions is now in its 3rd or 4th repetition cycle.
05:14 pmichaud (i.e., we've had these exact discussions before on the list)
05:15 PerlJam pm: I know ... I've been ignoring it almost completely (except for spot checking) because it seems like the same arguments over and over again.
05:16 PerlJam pm: or ... maybe the elimination of want will happen in some way that changes everything  :)  That's my other prediction.
05:17 pmichaud in that case, I'm thinking that many other changes we've made may be leading to the elimination of want
05:17 pmichaud i.e., it follows a set of other changes as opposed to precedes them.
05:20 * PerlJam sleep &
05:24 awwaiid pmichaud, documentation patch submitted
05:25 awwaiid feedback welcome :)
05:27 pmichaud awwaiid++ # thanks
05:29 parduncia joined #perl6
05:39 cspencer pmichaud: did parrot 1.0 get Inf/NaN support for int's?
05:39 pmichaud cspencer: no.
05:39 pugs_svn r26044 | pmichaud++ | [t/spec]:  Update S05-mass/named-chars.t
05:39 pugs_svn r26044 | pmichaud++ | * Semicolon separators in \c[...] should be commas.
05:39 pugs_svn r26044 | pmichaud++ | * \c[LINE FEED], \c[FORM FEED], \c[FF], \c[LF]  don't appear to be valid
05:39 pugs_svn r26044 | pmichaud++ |   Unicode char names
05:39 pugs_svn r26044 | pmichaud++ | * #?rakudo skip \C, \X in enumerated character classes
05:39 pmichaud cspencer: afaik, that's still in the design/review phase
05:40 cspencer ok, i thought i'd read it'd been slated for the 1.0 release
05:40 pmichaud Part of me doubts that ints will get Inf/Nan
05:41 cspencer it'll be reserved for Integer pmc's instead?
05:41 pmichaud I don't even know if Integer PMCs will get Inf/NaN
05:41 cspencer ok :)
05:42 pmichaud although if Parrot gets built-in bigint support, then having Integer PMCs get Inf/NaN should work out okay
05:42 cspencer that's the part still getting hashed out, eh?
05:43 pmichaud among other things
06:00 pugs_svn r26045 | pmichaud++ | [t/spec]:  Add some #?rakudo skip for S02-literals/char-by-name.t
06:08 sri_kraih joined #perl6
06:14 moritz_ good morning
06:14 dukeleto mornin
06:20 pmichaud rakudo:  say "\c[SMILE]";
06:20 p6eval rakudo 64e33a: OUTPUT«⌣␤»
06:21 pmichaud rakudo:  say "\c9786";
06:21 p6eval rakudo 64e33a: OUTPUT«☺␤»
06:22 pmichaud rakudo:  say "\c[WHITE SMILING FACE]";
06:22 p6eval rakudo 64e33a: OUTPUT«☺␤»
06:22 pmichaud better.
06:22 moritz_ rakudo: say "\c[white smiling face]"
06:22 p6eval rakudo 64e33a: OUTPUT«☺␤»
06:22 moritz_ it's good not to force people to scream ;-)
06:23 pmichaud rakudo: say "\c[white star]"
06:23 p6eval rakudo 64e33a: OUTPUT«☆␤»
06:23 pmichaud rakudo: say "\c[black telephone]"
06:24 p6eval rakudo 64e33a: OUTPUT«☎␤»
06:24 moritz_ rakudo: say "\c[blue mountain]"
06:24 pmichaud rakudo: say "\c[umbrella with rain drops]"
06:24 p6eval rakudo 64e33a: OUTPUT«perl6regex parse error: Unrecognized character name at offset 8, found 'b'␤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10496 (compilers/pge/PGE/Perl6Regex.pir:1309)␤»
06:24 p6eval rakudo 64e33a: OUTPUT«☔␤»
06:25 bubaflub that's pretty neat;  i wasn't aware of the "\c[]" syntax
06:25 pmichaud rakudo:  say "\c?".ord
06:25 p6eval rakudo 64e33a: OUTPUT«127␤»
06:25 pmichaud rakudo:  say "\c@".ord
06:25 p6eval rakudo 64e33a: OUTPUT«0␤»
06:26 pmichaud rakudo:  say "\cJ".ord
06:26 p6eval rakudo 64e33a: OUTPUT«10␤»
06:27 moritz_ that's a bit more obscure ;-)
06:27 moritz_ but specced nontheless
06:28 pmichaud rakudo:  say "\c[72,101,108,108,109]"
06:28 p6eval rakudo 64e33a: OUTPUT«Hellm␤»
06:28 pmichaud oops.
06:28 bubaflub haha
06:28 pmichaud rakudo: say "\c[WHITE RIGHT POINTING INDEX]"
06:28 p6eval rakudo 64e33a: OUTPUT«☞␤»
06:29 pmichaud rakudo: die "\c[SKULL AND CROSSBONES]"
06:29 p6eval rakudo 64e33a: OUTPUT«☠␤current instr.: 'die' pc 15621 (src/builtins/control.pir:204)␤»
06:30 pmichaud just too scary.
06:30 pmichaud rakudo: say "\c[YIN YANG]"
06:30 p6eval rakudo 64e33a: OUTPUT«☯␤»
06:31 moritz_ rakudo: say "\c[capital letter a with diaresis]"
06:31 p6eval rakudo 64e33a: OUTPUT«perl6regex parse error: Unrecognized character name at offset 8, found 'c'␤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10496 (compilers/pge/PGE/Perl6Regex.pir:1309)␤»
06:31 moritz_ rakudo: say "\c[capital letter a with diaeresis]"
06:31 p6eval rakudo 64e33a: OUTPUT«perl6regex parse error: Unrecognized character name at offset 8, found 'c'␤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10496 (compilers/pge/PGE/Perl6Regex.pir:1309)␤»
06:31 moritz_ rakudo: say "\c[latin capital letter a with diaeresis]"
06:31 p6eval rakudo 64e33a: OUTPUT«Ä␤»
06:32 moritz_ pmichaud: did you add any test files yet?
06:32 pmichaud I have a fix locally that gives a better error message.
06:32 pmichaud moritz_: didn't have to... there are thousands of tests already that depend on this :-)
06:32 pmichaud (which is part of the reason I implemented it)
06:33 moritz_ pmichaud: I meant to t/spectest.data ... or are they already in?
06:33 pmichaud I'm spectesting now.
06:33 pmichaud as soon as it's done I'll git push
06:33 moritz_ ok, thanks
06:33 pmichaud there's a bunch of tests that I'm not quite sure how to deal with, though.
06:33 pmichaud we'll have to get Parrot to expose more unicode information from ICU.
06:35 pmichaud on the plus side, we can now do things like:
06:35 pmichaud rakudo:   say ?("A" ~~ /<[\x40..\x5f]>/)
06:35 p6eval rakudo 64e33a: OUTPUT«1␤»
06:36 cspencer pmichaud: not sure if Range was destined for the setting, but I've just submitted a patch that moves a lot of its functionality from PIR to P6
06:37 pmichaud cspencer: it is destined for setting, yes.  But it's also very tricky to get right... and I think the specs are clearly wrong in quite a few places.
06:37 cspencer ok
06:37 pmichaud if it passes the spectests it's likely a good start.
06:37 cspencer at the moment, it (the p6 version) is passing all of the spectests
06:37 pmichaud what's the ticket #?
06:37 pmichaud it hasn't hit my inbox yet, apparently.
06:37 cspencer 64370
06:38 cspencer it's not that old :)
06:38 cspencer thought i've noticed a bit of lag from RT -> email lately
06:38 cspencer my email, at least
06:38 pmichaud well, it has to go RT -> perl6-compiler -> recipients
06:38 cspencer right, ok :)
06:39 cspencer i'm off for the evening, if you've got any suggestions, i'd be glad to revise things tomorrow
06:39 pmichaud I'm not sure we should be duplicating the 'has' declarations.
06:39 cspencer i'd used the to provide the from/to methods
06:40 cspencer s/the/them/
06:40 pmichaud just write the from/to methods explicitly is probably better.
06:40 pmichaud oh, maybe not.  hmmm.
06:40 pmichaud I'll have to think about that.
06:40 cspencer ok :)
06:40 cspencer good night!
06:45 pmichaud moritz_: ping
06:46 moritz_ pmichaud: pong
06:47 pmichaud one other item I forgot to mention -- I can add these new tests to spectest.data.... but they require ICU in order to run/pass.
06:47 pmichaud I suppose I can find a way to do a 'skipall' if ICU isn't present.
06:48 moritz_ or we just don't skip and wait until ICU in parrot becomes mandatory
06:48 moritz_ and document in README that we require it until then
06:48 pmichaud according to discussion earlier today, ICU in parrot won't be mandatory until at least August, and possibly as late as December
06:48 dalek rakudo: 1a618d0 | pmichaud++ | build/PARROT_REVISION:
06:48 dalek rakudo: Bump PARROT_REVISION to handle \c, \x, \o in enumerated character classes
06:48 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1a618d0bde7038c0f86bc4db04a7055e89fe9f9f
06:48 moritz_ oh my.
06:49 pmichaud we can make it "mandatory" for Rakudo if we wish, though.
06:49 moritz_ possibly in Configure
06:50 moritz_ maintaining platform dependant skips/todos is a pain
06:50 moritz_ I'd appreciate it if we didn't get that far :)
06:50 pmichaud well, it would just be one at the beginning of the relevant files (only two so far)
06:50 pmichaud and it could even be platform independent
06:50 moritz_ actually there are more
06:50 moritz_ in uc.t for example
06:51 moritz_ we currently skip them for rakudo, even though they pass with ICU enabled
06:51 moritz_ (or they passed last I looked ;)
06:51 pmichaud but even for that, it could be:
06:53 pmichaud eval(q< 'ó'.uc >) eq 'Ó'  or skip_rest(....)
06:53 pmichaud (or otherwise abort processing if we can't do even a simple unicode transformation)
06:53 moritz_ well, but who's going to maintain these skips?
06:53 pmichaud and that's not really platform-dependent.
06:54 moritz_ I can't test them, because all my machines have ICU
06:54 pmichaud (you can build parrot --without-icu :-)
06:54 DemoFreak joined #perl6
06:55 moritz_ but I don't have to like it, do I? ;-)
06:55 pmichaud no.  in fact, you don't even have to do it --I'll do it tomorrow (too tired tonight to reliably do it)
06:56 pmichaud I figure a one-line test like that at the beginning of relevant files is probably maintainable.
06:56 pmichaud at least, for files that have lots of unicode-related tests, if nothing else.
06:57 pmichaud yes, the longer solution is to require folks to have icu with rakudo.
06:57 moritz_ where's the discussion about why mandatory ICU is delayed for parrot?
06:57 pmichaud it was during today's conference call
06:58 pmichaud it basically has to do with parrot deprecation cycles
06:58 pmichaud making something mandatory that was previously optional really ought to have a deprecation notice
06:58 pmichaud (i.e., we're taking away the ability to do something that was once valid)
06:58 moritz_ if it goes in now, it can be enabled right after the april release, no?
06:59 pmichaud not in the new-world of parrot
06:59 moritz_ ...
06:59 pmichaud deprecation cycles are based on the "supported releases"
06:59 moritz_ what a brave new world ...
06:59 pmichaud 1.0 (march) was the last supported release
07:00 pmichaud that means that the ability to build without icu needs to remain in place through the next supported release (july)
07:01 pmichaud so, the first parrot release that could require icu would be august.
07:01 pmichaud and that will depend on developer tuits (and july/august are always very busy times for the parrot team), so it could be later than that.
07:01 pmichaud anyway, we'll come up with something for rakudo.
07:02 * moritz_ thought about a big all-caps warning in Configure.pl
07:02 pmichaud The two tests that are ready to be added to spectest are S05-mass/named-chars.t and S02-literals/char-by-name.t
07:03 pmichaud yes, what I really need to do with Configure.pl is to have it check parrot's Configure and see if parrot is being built with icu, and abort w/warning if it's not.  (Ideally we would do this _before_ going through a Parrot compilation, though.)
07:03 pmichaud then have an option to Rakudo's Configure to go ahead and build Rakudo w/o icu if that's what the person wants.
07:05 pmichaud Anyway, it's 02h00 here, so I'm off to bed.  I'll look at ICU options in the morning.
07:05 moritz_ good night ;-)
07:06 pmichaud (and I should write a blog post about all of this)
07:06 moritz_ aye
07:06 moritz_ speaking of which, I just published my tidings 2009-04 post
07:06 pmichaud url?
07:06 moritz_ http://perlgeek.de/blog-en/perl-6/tidings-2009-04.html
07:08 pmichaud moritz++ # relevant and useful
07:08 moritz_ thanks. I felt this issue was a bit biased ;-)
07:08 pmichaud biased how?  towards rakudo?
07:09 moritz_ I'm used to that; it's hard to get information about the other implementation
07:09 moritz_ about selection of what I wrote about, some opinions went into it
07:10 pmichaud well, smop also is having to deal with the fact that an underlying premise is changing, requiring some significant rework (meaning other progress might stall).  We've had that happen more than a few times with pge and rakudo.
07:11 pmichaud but even with that, it's okay to be biased in what you think is interesting :-)
07:11 moritz_ ;-)
07:13 Matt-W Good morning
07:14 moritz_ hi Matt-W
07:16 Matt-W Lovely morning
07:17 moritz_ indeed it is
07:17 Matt-W I get into work and discover that the network's crapped out
07:17 Matt-W something made my computer reboot overnight
07:17 moritz_ sun is shining... ;-)
07:17 Matt-W and all the network drives... where my work is... are inaccessible
07:17 pmichaud Matt-W: ...conficker?  ;-)
07:17 Matt-W seems unlikely
07:17 Matt-W they took some fairly radical precautions, but the servers are all solaris boxes
07:18 iblechbot joined #perl6
07:18 Matt-W And I was all set for some C++ template abuse too
07:19 * Matt-W ponders starting again from memory for the time being
07:19 moritz_ there *are* some cool (and evil) uses for templates ;-)
07:19 Matt-W yup
07:19 bubaflub PerlJam: i've completed my GSoC application.  i'm out for tonight.
07:20 moritz_ for example a linear algebra library that I'm using does "lazy" evaluation and optimization at compile time due to templates
07:20 dalek rakudo: eda14fa | (Moritz Lenz)++ |  (2 files):
07:20 dalek rakudo: [Configure] use list-form of system() to deal with white spaces in file names
07:20 dalek rakudo: Based on a patch by Vasily Chekalkin, bacek++. Hopefully closes RT #64054.
07:20 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/eda14fa060dc08050e21d6703d3aadbc697ab01c
07:20 Matt-W moritz_: some of the stuff Boost do with templates terrifies me
07:20 Matt-W moritz_: what I'm doing is trivial baby stuff by comparison
07:21 moritz_ Matt-W: same here ;-)
07:21 moritz_ but I can't publish papers on C++ templates, I have to get results from my numerics first ;-)
07:21 Matt-W :)
07:21 Matt-W This is so irritating
07:21 Matt-W I was really looking forward to getting stuck in to this
07:21 Matt-W It's pure data structure design stuff
07:21 Matt-W Don't get to do that very often
07:22 * Matt-W wonders if he can sneak in the back
07:22 Matt-W hmm no
07:22 Matt-W the servers just aren't talking
07:31 moritz_ rakudo: say "Ä" ~~ / \c[latin capital letter a with diaeresis] /
07:31 p6eval rakudo eda14f: OUTPUT«Ä␤»
07:31 dukeleto moriz: no mention of roots() for Complex numbers in http://perlgeek.de/blog-en/perl-6/tidings-2009-04.html :(
07:32 moritz_ dukeleto: I didn't want to emphasize another small sub-project I was involved int
07:33 moritz_ have to run now, bbl
07:33 dukeleto moritz: understandable
07:37 Matt-W Woohoo! Network drives!
07:44 dalek rakudo: 685bff1 | (Moritz Lenz)++ | docs/ChangeLog:
07:44 dalek rakudo: [docs] ChangeLog for \c implementation
07:44 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/685bff1e421cbfdd75e6f6a9113a7fdf56c46c37
08:01 mjk joined #perl6
08:06 xinming_ joined #perl6
08:20 ejs joined #perl6
08:27 M_o_C joined #perl6
08:44 bsb joined #perl6
09:00 szabgab joined #perl6
09:04 cognominal joined #perl6
09:11 smtms joined #perl6
09:23 jnthn morning
09:24 moritz_ good morning jnthn
09:29 jnthn moritz++ # nice report
09:29 moritz_ thanks
09:31 jnthn Actually somehow I'd missed that you'd been writing these.
09:31 moritz_ they apear on planetsix
09:35 jnthn 294 tickets!!
09:49 bacek good evening
09:51 jnthn evening, bacek
09:51 bacek morning, jnthn :)
09:51 moritz_ krunen++ # you're my hero (re: taucs compilation, a few days ago)
09:53 ashizawa joined #perl6
09:57 icwiener joined #perl6
10:10 M_o_C joined #perl6
10:13 pugs_svn r26046 | jnthn++ | [t/spec] Tweaks and fudging for Rakudo for S16-filehandles/unlink.t.
10:20 masak joined #perl6
10:22 masak bacek: so, you hate me sometimes, huh? :)
10:23 masak I know it's a widespread belief that people who report bugs are somehow also the cause of them...
10:23 bacek masak: of cause! :)
10:23 masak ...but it turns out there is not much empirical evidence for this.
10:23 masak also known as "don't shoot the messenger".
10:25 * moritz_ shoots masak, just for fun
10:26 jnthn OH HAI masak
10:26 * masak is flung through the air, lands on bacek
10:26 masak jnthn: can't talk right now, I'm being shot!
10:26 jnthn masak: Oh come on, surely that's not a huge distraction?
10:27 masak jnthn: so far, it's actually quite OK...
10:27 masak but I suspect I'm in shock.
10:27 bacek masak: hey! I didn't shot you, moritz_did!
10:27 masak bacek: it's not my fault that you stood right behind me, though.
10:28 masak bacek: it's as if you were using me as cover. :P
10:28 * moritz_ goes to lunch and hopes that masak++ respawns in the mean time
10:28 masak I can do that?
10:28 Maghnus joined #perl6
10:28 masak great!
10:29 bacek spawn??? Rakudo uses threads!
10:29 * masak .clone()
10:30 wayland76 nonono
10:30 wayland76 while(1) { $masak.clone(); }
10:30 wayland76 :)
10:30 masak even I see problems with that...
10:30 masak let's just say you wouldn't want... hey, don't crowd me!
10:30 bacek wayland76: good GC will wipe all clones ASAP.
10:31 wayland76 for(1..5) { $clone = $masak.fork($appropriate_person); }
10:31 masak must... open... door...
10:31 wayland76 bacek: But won't it keep the clone around when the extra references get deleted?
10:32 wayland76 It'll sort of be like the man who wouldn't die :)
10:32 wayland76 $whileloop.last() :)
10:33 bacek wayland76: class Masak { has @.clones; method clone_me { @.clones.push(self.clone}; @.clones[*-1] }; while (1) { $masak.clone_me() }
10:33 bacek this will work :)
10:33 masak oh, can you make while loops end from another thread?
10:33 masak that'd be neat.
10:34 wayland76 Not that I know of
10:34 wayland76 But I figured while I was doing Perl pseudocode, I might as well have a pony :)
10:34 masak heh.
10:34 * masak and all his clones go to lunch
10:35 masak &
10:35 wayland76 "The day the world was eaten!" :)
10:35 wayland76 #perl6: The B-grade movie :)
10:46 pugs_svn r26047 | jnthn++ | [t/spec] Add tests for re-binding $*OUT and $*ERR.
10:58 broquain1 joined #perl6
10:58 broquaint joined #perl6
10:59 masak jnthn: ooh! I thought about rebinding of $*OUT yesterday. :)
10:59 masak it would do wonders for test mocking.
11:00 jnthn masak: $*OUT test is passing locally, commit coming soon.
11:00 masak \o/
11:00 jnthn Made an easy start to the day.
11:00 jnthn Also, we pass half of unlink.t, so fudged and adding to spectest.data.
11:02 masak rakudo: say "A"; my $collector; { my $temp = $*OUT; $*OUT = class { method print($s) { $collector ~= $s } }; print "OH HAI"; $*OUT = $temp }; print "B"; print $collector
11:03 p6eval rakudo 685bff: OUTPUT«A␤OH HAI»
11:03 masak on my box, that segfaults after the "OH HAI".
11:03 masak jnthn: does it work locally for you? :)
11:04 masak (with the order 'A\nB\nOH HAI", too?)
11:05 jnthn masak: I'd been doing := rather than = (rebinding... ;-))
11:05 masak oh, ok.
11:05 jnthn Wonder if assignment would work too though. Hmm.
11:05 masak as long as something works, I'm happy. :)
11:06 jnthn (Or if it doesn't, why it wouldn't.)
11:06 dalek rakudo: ef59b9d | jnthn++ | t/spectest.data:
11:06 dalek rakudo: Add S16-filehandles/unlink.t to the spectests.
11:06 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/ef59b9d1e022f6cb2446d31fc4b2aa8edf6c2735
11:06 dalek rakudo: db0264d | jnthn++ | src/ (3 files):
11:06 dalek rakudo: Make various built-ins that should use $*OUT and $*ERR actually use them.
11:06 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/db0264dfc80dfe0536aaa11112580022f6ea6355
11:06 dalek rakudo: 3ad32e1 | jnthn++ | t/spectest.data:
11:06 dalek rakudo: Add S16-unfiled/rebindstdhandles.t to the spectests that we run.
11:06 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/3ad32e12815ee9256204794add560eed998df750
11:07 * masak rebuilds
11:15 eiro joined #perl6
11:15 eiro hello
11:19 masak eiro: greetings.
11:19 masak rakudo: say <eiro: hello from Rakudo, too!>
11:19 p6eval rakudo 3ad32e: OUTPUT«eiro:hellofromRakudo,too!␤»
11:19 masak rakudo: say <eiro: hello from Rakudo, too!>.fmt('%s')
11:19 p6eval rakudo 3ad32e: OUTPUT«eiro: hello from Rakudo, too!␤»
11:20 masak that's better.
11:23 * jnthn has got START working as a term as well as a statement now.
11:30 jnthn std: my multi bar() { }
11:30 p6eval std 26047: OUTPUT«ok 00:02 34m␤»
11:34 jferrero joined #perl6
11:34 eiro masak, thx
11:35 eiro i previously came to this chan (as khatar)
11:35 masak eiro: so, tried Rakudo yet? :)
11:35 masak eiro: aha.
11:35 masak well, welcome back.
11:35 eiro i changed my nick (because noone can tell it correctly)
11:36 pugs_svn r26048 | jnthn++ | [t/spec] Unskip term:START tests, and s/skip/todo/ for a soft failure.
11:36 eiro masak, yep: i have some little scripts allready in use
11:36 masak cool.
11:36 eiro basically to replace little perl5 or shell scripts
11:36 eiro now i want to write a MARC lib
11:37 eiro the perl6 MARC::Record
11:37 eiro (but i want it better ;-) )
11:37 masak that's a good goal.
11:37 eiro i have a question: is there a way to use a grammar with a filehandle
11:38 dalek rakudo: 46987f7 | jnthn++ | src/parser/ (2 files):
11:38 dalek rakudo: Implement START term; small refactoring so we can use same code as for START statement.
11:38 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/46987f737a02c03650f3f7c528222d681f8d1bb8
11:38 M_o_C joined #perl6
11:38 eiro i mean: i want to find marc records in a open file (say $marcdump)
11:38 jnthn .parsefile takes a filename, .parse takes a string...so I guess nothing takes a filehandle directly.
11:38 eiro but i don't want to read all the file
11:38 eiro parsefile!
11:39 eiro perfect! and it reads only required data ?
11:39 jnthn eiro: At the moment, I believe it reads the lot. :-(
11:39 jnthn eiro: However, I hope we will be able to optimize that in the future.
11:39 eiro jnthn, but it will change :)
11:39 masak jnthn: couldn't .parsefile have a multi variant that took a fh?
11:39 jnthn masak: Perhaps. ;-)
11:39 eiro i mean: the expected way is: read only needed tada
11:40 pjcj joined #perl6
11:40 masak come to think of it, maybe open() should, too...
11:40 jnthn Sure. And it may well turn out that some refactors that are on the way in the not too distant future may let us do that...
11:40 jnthn (Cursor stuff that I think pmichaud will be working on in the not too distant future...)
11:40 eiro parsefilehandle coould be cool to write a protocol handler
11:41 jnthn Aye, true.
11:44 cognominal joined #perl6
11:53 diakopter rakudo: warn
11:53 p6eval rakudo 46987f: OUTPUT«Warning!  Something's wrong␤␤»
11:53 * diakopter smiles
11:53 diakopter rakudo: warn !!!
11:53 p6eval rakudo 46987f: OUTPUT«Syntax error at line 1, near "!!!"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
11:53 diakopter rakudo: warn ???
11:53 p6eval rakudo 46987f: OUTPUT«Statement not terminated properly at line 1, near "???"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
11:53 diakopter rakudo: warn ...
11:53 p6eval rakudo 46987f: OUTPUT«No exception handler and no message␤current instr.: 'return' pc 15298 (src/builtins/control.pir:39)␤»
11:55 eiro oops .. i can't use my grammar with a filter as i can't use $grammar.parsefile($*STDIN);
11:55 eiro right ?
11:55 jnthn Right.
11:55 jnthn It's spent $*IN, but you still can't.
11:56 jnthn In fact, that makes me think we really do need a third variant that takes a file handle...
11:56 eiro oops ... too many perl5 habits
11:56 jnthn :-)
11:57 dac524 joined #perl6
11:57 eiro sure! we baddly need it ( for sockets, filters and fun )
11:57 eiro (filters: the unix way)
11:58 jnthn Aye, you've sold me on it (but I'm implementor, not designer ;-))
11:58 dalek rakudo: d981bae | (Carl Masak)++ | src/builtins/control.pir:
11:58 dalek rakudo: tidied up default warning message slightly
11:58 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d981bae46b6d0a3dd1c11dd8c79f2829773bb306
11:58 dalek rakudo: 4c2f0ce | (Carl Masak)++ | :
11:58 dalek rakudo: Merge branch 'master' of git@github.com:rakudo/rakudo
11:58 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4c2f0ced3f19159cbae43688afae0e1c2d7302db
11:59 masak note to self: always Do It In a Branch.
11:59 masak even when it's Just One Commit. :)
12:00 jnthn rakudo: my $x = 42; role Foo { method x { say $x } }; Foo.new.x
12:00 p6eval rakudo 46987f: OUTPUT«Lexical '$x' not found␤current instr.: 'parrot;Foo[];x' pc 260 (EVAL_20:105)␤»
12:00 jnthn Hmpfh
12:05 bacek masak: do "git pull --rebase" just before pushing
12:05 masak bacek: ooh! thanks for the tip.
12:06 bacek git is something like Perl6 in VCSs. There is many ways to shot your foot :)
12:07 rgs that's probably why the python guys switch to mercurial.
12:07 masak I've already been shot today. no need for special treatment of the feet.
12:08 bacek rgs: indeed.
12:08 masak rgs: aye, but I agree with chromatic: that Perl-as-line-noise was kind of a low blow.
12:08 * bacek just finishing watching http://www.youtube.com/watch?v=JzIWdJVP-wo
12:08 bacek incredible talk by TimToady at Google
12:10 jnthn Ah.
12:10 * jnthn just found a wrong spectest, it seems.
12:11 jnthn my sub foo(*@args, *%named) { 1 }
12:11 jnthn eval_lives_ok q/foo;      /, 'call with no args, no parens';
12:11 jnthn That won't work out.
12:11 jnthn Because the code is eval'd in Test.pm
12:11 jnthn And thus in its lexical scope.
12:11 jnthn And not the lexical scope of the test, where the sub foo is defined.
12:11 masak huh.
12:12 jnthn I just discovered this after implementing lexical subs... ;-)
12:12 masak so maybe eval_lives_ok shouldn't be used here.
12:12 jnthn Well, maybe a lexical sub shouldn't be used too. ;-)
12:12 masak right.
12:14 masak I've signed up as a mentor for GSoC. can I send student applications, too?
12:15 M_o_C joined #perl6
12:16 meppl joined #perl6
12:17 masak ah, seems not. http://code.google.com/opensource/gsoc/2008/faqs.html#0.1_mentor_and_student
12:22 * jnthn eats lunch while his latest tweaks to lexical subs smoke
12:31 moritz_ masak: if you resign as a mentor, you can
12:31 masak moritz_: I guess. but I don't want to resign as a mentor.
12:32 masak it seems that I'll get to mentor two wonderful projects.
12:32 masak turning those down doesn't feel like an option.
12:32 moritz_ which two?
12:32 moritz_ literal's I know
12:33 masak moritz_: a guy has contacted me about November. he wants to implement widget plugins.
12:35 moritz_ masak: nice
12:35 masak aye, I'm happy about that.
12:35 moritz_ how many projects had we funded last year?
12:35 masak I lost count somewhere in January. :)
12:36 moritz_ there was Auzon's, tewk's, Math::GSL bindings, another parrot project
12:36 moritz_ a bricolage project whose student never appeared
12:36 moritz_ and a graphical CPAN frontend
12:36 moritz_ would be 6
12:37 ruoso joined #perl6
12:38 moritz_ there are already at least 5 very fine proposals submitted that I'd like to see funded
12:38 ruoso Hi!
12:38 masak ruoso: oh hai
12:39 ruoso I've been spamming around to see if we get more proposals
12:39 moritz_ that would be great
12:39 moritz_ because then we'd get more slots
12:40 moritz_ last year we had around 12 or 14 applications
12:41 masak make sure to hint at how great it is to write Perl 6 code for money.
12:42 masak that's why I wouldn't mind writing tests all summer, like Auzon did. :)
12:43 masak Auzon++
12:43 moritz_ ah, but writing something that actually runs and does something cool is even more satisfactory
12:43 masak I guess, yes.
12:44 masak I plan to feed on literal's satisfaction from writing psi. :)
12:44 ruoso I've already commented with him... psi is already the name of a widely known XMPP client
12:44 pugs_svn r26049 | jnthn++ | [t/spec] Correct a test that wrongly assumed lexicals used in an eval are in the scope of the place where the eval string is constructed, not in that where eval is called.
12:44 ruoso I'd use a different name
12:45 masak ruoso: that's fine with me.
12:45 masak although keeping the name is fine too. it wouldn't be the first time two different things shared a name.
12:45 pugs_svn r26050 | jnthn++ | [t/spec] Unfudge a couple of tests for lexical subs for Rakudo.
12:47 wayland76 Just for the record, Melbourne-PM had a notice about GSoC on their mailing list
12:48 dalek rakudo: 8bd87bb | jnthn++ | src/parser/actions.pm:
12:48 dalek rakudo: Implement lexical subs for the non-multi case.
12:48 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/8bd87bbe307521e6d66995f26f0439fba689e58c
12:48 dalek rakudo: 8eb5225 | jnthn++ | :
12:48 dalek rakudo: Merge branch 'master' of git@github.com:rakudo/rakudo
12:48 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/8eb5225098e7152774fc9352558fb0dd0477c6c6
12:48 dalek rakudo: c40f3b9 | jnthn++ | src/parser/actions.pm:
12:48 dalek rakudo: Corret mistake in anonymising lexical subs.
12:48 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c40f3b92451eb802df5d9516fee56b4327c6f8e8
12:48 wayland76 Btw, in regards to using grammars and filehandles together, I'm thinking the other component for a really wonderful protocol handler is the Event Handling stuff that has been proposed in the very-drafty S17 :)
12:51 masak jnthn: ohandIshouldremindyouaboutthe'new'methodthingincaseyouseemedtohaveforgotten.
12:52 masak maybe I should submit a rakudobug about it? :)
12:52 * jnthn is glad English has spaces...
12:52 jnthn masak: Did you not find a way to make it work?
12:53 masak now that you mention it, maybe I did...
12:53 * masak checks the logs
12:53 moritz_ I did :-)
12:53 moritz_ more or less
12:54 masak ah: http://irclog.perlgeek.de/perl6/2009-03-31#i_1028989
12:54 moritz_ rakudo: class A { has $!a; method new($x) { self.bless(a => $x) } }; A.new(4).WHAT.say
12:54 p6eval rakudo c40f3b: OUTPUT«A␤»
12:54 moritz_ rakudo: class A { has $.a; method new($x) { self.bless(a => $x) } }; A.new(4).a.say
12:54 p6eval rakudo c40f3b: OUTPUT«4␤»
12:55 masak ok, that enables a few improvements to Druid and Web.pm... :)
12:55 M_o_C joined #perl6
12:58 M_o_C joined #perl6
12:58 literal I don't mind changing psi's name as long as we find something that's short and sweet
12:58 literal terseness++
12:59 moritz_ isp
12:59 moritz_ oh no, that's taken as well ;-)
12:59 moritz_ p6s
12:59 moritz_ "Perl 6 Show"
12:59 moritz_ ipd, interactive perl doc
13:00 literal or pdoc
13:00 literal maybe too similar to perldoc
13:00 jnthn 6doc
13:00 moritz_ literal: pdoc is already taken
13:00 literal oh
13:00 moritz_ literal: pdoc.sourceforge.net
13:00 masak rakudo: class A { submethod BUILD($a: $b, $c) {} }; A.new # what am I doing wrong?
13:00 p6eval rakudo c40f3b: OUTPUT«too few arguments passed (2) - 3 params expected␤current instr.: 'parrot;A;BUILD' pc 110 (EVAL_19:59)␤»
13:01 masak 6i?
13:01 moritz_ masak: what the error message says ;-)
13:01 moritz_ masak: the invocant is the class, the first positional is the object being constructed
13:01 masak moritz_: that does not explain it to me.
13:01 moritz_ where should the third come from?
13:02 masak remove one param?
13:02 moritz_ yes
13:02 masak ah.
13:02 moritz_ attributes are handled by named parameters
13:02 literal pid ? (your ipd spelled differently)
13:02 masak moritz_: thanks.
13:02 moritz_ literal: pid = process identifier
13:02 literal yeah, but there's no pid(1) yet though, is there?
13:03 masak pux? "Perl Userdocs eXplainer"
13:03 * moritz_ likes pux
13:03 literal or pud, Perl user documentation
13:03 masak moritz_: might want to work on the explansion, though.
13:03 masak s/l//
13:03 wayland76 I'm trying to work out how we can name it Pux of Pooks Hill :)
13:04 masak wayland76: :)
13:04 literal pud is also only one letter away from Pod :P
13:04 moritz_ or maybe we shouldn't look for abbreviates, but for the name of a character the explains Perl 6 to you
13:04 wayland76 Pud is also slang for penis
13:04 literal wayland76: I was unaware of that
13:05 moritz_ "Fee explains Perl 6" (Fee is German for fairy as well)
13:05 moritz_ or any other nice name
13:05 wayland76 I figured, but I thought it was probably a good idea to mention it
13:05 wayland76 We have a cognate "fay"
13:05 masak moritz_: I think we should go for an orange dog or a paperclip.
13:05 moritz_ masak: point taken :/
13:05 masak what could possibly go wrong?
13:06 wayland76 "It looks like you are writing a suicide note.  Would you like some help with this?"
13:08 wayland76 Ooh, we can name the pux section about OO programming "poox"
13:08 literal "see" maybe? that's straightforward
13:08 wayland76 grok?
13:09 * masak likes grok
13:09 wayland76 http://www.onnoot.com/uploaded/images/word-suicide-note.jpg
13:09 literal grok is nice
13:09 wayland76 It's taken
13:09 wayland76 It's a web framework
13:09 masak rakudo: class A { has $.foo; submethod BUILD($obj) { $obj.foo = 7 } }; A.new # is there a way to set $!foo in $obj in the BUILD without making $.foo rw?
13:09 p6eval rakudo c40f3b: OUTPUT«Cannot assign to readonly variable.␤current instr.: 'die' pc 15631 (src/builtins/control.pir:204)␤»
13:10 literal wayland76: I'd say that's different enough to not cause much of a conflict...
13:10 wayland76 package naming?
13:10 masak wayland76: perl6-grok
13:10 wayland76 ok
13:11 wayland76 But it means I'll have no opportunity to write pux poox :)
13:11 masak literal: feel free to update u4x/README, if you like.
13:11 literal ok
13:12 masak anyway, about my question above: is there?
13:13 ruoso what's wrong with the simple ideas like p6d?
13:14 ruoso or p6doc
13:14 masak ruoso: nothing, really. but 'grok' has personality.
13:15 masak doesn't BUILD have access to private attributes? if not, where would be the proper place to initialize private attributes?
13:16 wayland76 Hmm.  Having said all that, I like the idea of the name starting with P
13:17 ruoso masak, yes... BUILD has access to private attributes
13:17 masak ruoso: how? could you show me?
13:18 ruoso rakudo: class A { has $.foo; submethod BUILD($obj) { $!foo = 7 } }; say A.new.foo;
13:18 p6eval rakudo c40f3b: OUTPUT«Null PMC access in getprop()␤current instr.: 'infix:=' pc 13871 (src/builtins/assign.pir:21)␤»
13:18 * masak submits rakudobug
13:18 masak ruoso: also, how would that affect $obj?
13:19 ruoso ah
13:19 ruoso sorry
13:19 ruoso rakudo: class A { has $.foo; submethod BUILD($obj) { $obj!foo = 7 } }; say A.new.foo;
13:19 p6eval rakudo c40f3b: OUTPUT«Could not locate a method '!foo' to invoke on class 'A'.␤current instr.: 'die' pc 15631 (src/builtins/control.pir:204)␤»
13:19 masak not implemented yet.
13:20 jnthn I don't think $obj!foo would ever work like that...
13:20 masak that's what I suspected as well.
13:20 masak why would it?
13:20 hexmode joined #perl6
13:20 masak BUILD is just a 'normal' submethod.
13:20 jnthn (Since $!foo is a storage location, and $obj!foo is trying to call a private method foo)
13:20 masak oh, and that too.
13:20 jnthn However, using $!foo in BUILD should not fail like that.
13:20 jnthn That is the real bug.
13:20 masak aye.
13:21 masak but my original question remains unanswered.
13:21 jnthn If BUILD is the right place to do that?
13:21 masak I don't know.
13:22 masak if it isn't, what is the right place?
13:22 masak I mean, something somewhere has to have access to those private attributes...
13:24 masak rakudo: class A { has $.a; method foo { self.bar }; submethod bar { $!a = 7 } }; A.new.foo
13:24 p6eval rakudo c40f3b:  ( no output )
13:24 masak something specifically to do with BUILD, then.
13:24 masak (the Null PMC Access above)
13:25 jnthn masak: Yes, I have a good idea what that is.
13:25 ruoso masak, jnthn, in fact... TimToady had said that the build signature receives the object as the invocant....
13:25 ruoso not as a second positional argument
13:25 masak ruoso: that kinda helps :)
13:25 * masak submits a rakudobug about that too
13:26 ruoso which would mean that BUILDALL would invoke BUILD like $obj.($class)::BUILD(%initializers)
13:26 ruoso std: my $obj; my $class; $obj.($class)::BUILD()
13:26 p6eval std 26050: OUTPUT«##### PARSE FAILED #####␤Syntax error (two terms in a row?) at /tmp/1XR2Kib8aZ line 1:␤------> [32mmy $obj; my $class; $obj.($class)[31m::BUILD()[0m␤    expecting any of:␤       POST␤   infix or meta-infix␤        infix stopper␤    postfix␤        postfix_prefix_meta_operator␤
13:26 p6eval ..     standard stopper␤ statem...
13:26 ruoso hmm...
13:26 ruoso there's some way of doing it...
13:27 ruoso std: my $obj; my $class; $obj.::($class)::BUILD()
13:27 p6eval std 26050: OUTPUT«ok 00:02 35m␤»
13:30 skids joined #perl6
13:33 icwiener joined #perl6
13:35 grwi joined #perl6
13:40 ruoso rakudo: class A { submethod foo { say 1 } }; class B is A { submethod foo { say 2 } }; my $b = B.new; A.HOW.dispatch($b,'foo',());
13:40 p6eval rakudo c40f3b: OUTPUT«too many arguments passed (3) - 1 params expected␤current instr.: 'parrot;A;foo' pc 173 (EVAL_20:69)␤»
13:40 ruoso rakudo: class A { submethod foo { say 1 } }; class B is A { submethod foo { say 2 } }; my $b = B.new; A.HOW.dispatch($b,'foo',\());
13:40 p6eval rakudo c40f3b: OUTPUT«too many arguments passed (3) - 1 params expected␤current instr.: 'parrot;A;foo' pc 184 (EVAL_21:70)␤»
13:40 ruoso rakudo: class A { submethod foo { say 1 } }; class B is A { submethod foo { say 2 } }; my $b = B.new; A.HOW.dispatch($b,'foo',\($b: ));
13:40 p6eval rakudo c40f3b: OUTPUT«Statement not terminated properly at line 1, near ": ));"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
13:40 jnthn try A.HOW.dispatch($b,'foo')
13:41 ruoso rakudo: class A { submethod foo { say 1 } }; class B is A { submethod foo { say 2 } }; my $b = B.new; A.HOW.dispatch($b,'foo');
13:41 p6eval rakudo c40f3b: OUTPUT«1␤»
13:41 ruoso hmm... where does the capture go?
13:41 jnthn (Not actually taking a capture there yet)
13:41 ruoso ah... ok...
13:42 ruoso jnthn, btw... that should be a clean way of invoking BUILD correctly
13:42 jnthn erm. And why is it calling 1 and not 2 there...
13:42 jnthn oh
13:42 jnthn A.HOW...
13:42 jnthn Nice. :_)
13:43 masak indeed.
13:43 ruoso certainly cleaner than $b.::($variable_with_protoobject_of_a)::BUILD
13:43 wayland76 Anyway, it's after midnight again.  Bye all &
13:43 masak wayland76: o/
13:44 jnthn $b.A::BUILD ?
13:45 ruoso jnthn, not if you only have A in a variable
13:45 jnthn ah, don't think we need to huffmanize that case so much...
13:45 ruoso like when you're traversing its isa to get the superclasses to call BUILD
13:45 ruoso jnthn, it's not about huffmanization...
13:46 Lorn joined #perl6
13:46 jnthn Sure, but that doesn't need something syntactically neat.
13:46 jnthn Especially as not all implementations would write that bit in Perl 6 anyway.
13:47 ruoso right... but calling a method from the perspective of a different class is supposed to be valid Perl 6
13:47 ruoso not only used in BUILDALL
13:47 PhatEddy joined #perl6
13:47 ruoso at least that's why the weird construct above is parsed by std (I think)
13:48 jnthn I think normally you know what that class is by name, and thus can write the name.
13:48 ruoso except when you don't ;)
13:48 jnthn Alternatively, $proto.^dispatch(...) or the thing you showed above.
13:49 jnthn IMO, if you're doing weird introspective stuff it needn't be any shorter than Perl 6 already allows.
13:49 ruoso agreed... but the fact is that STD does support that syntax ;)
13:49 jnthn Sure.
13:50 jnthn Not disagreeing it should probably work, just that we don't need anything more compact.
13:51 ruoso oh... I wasn't trying to get one...
13:52 moritz_ jnthn: I'm running autounfudge now, and so far no hits... 'my sub' parsed before, and most test didn't really need lexical subs
13:53 cognominal joined #perl6
13:54 jnthn ruoso: Oh, OK - then sorry, I misunderstood. :-)
13:54 jnthn moritz_: Aye.
13:54 jnthn moritz_: Do you know if we have any tests for lexical multis?
13:55 moritz_ jnthn: no, but I might have some tuits tonight
13:55 jnthn OK, I may write some now anyway
13:55 jnthn Because I want to make sure I got various things right.
13:56 moritz_ then I can extend them later on (and bomb you with tickets :-)
13:56 PhatEddy rakudo: 1000000[1]
13:56 jnthn Sounds awesome. :-)
13:56 p6eval rakudo c40f3b: OUTPUT«elements() not implemented in class 'Integer'␤current instr.: 'postcircumfix:[ ]' pc 3937 (src/classes/Positional.pir:108)␤»
13:56 masak we still haven't found someone whose job it is to keep the ticket count down, have we? (except for the implementors, that is.)
13:57 masak PhatEddy: what did you expect that to do?
13:58 PhatEddy according to an old ticket it was giving some parrot errors
13:58 PhatEddy rt 57790 http://rt.perl.org/rt3/Public/Bug/Display.html?id=57790
13:58 masak PhatEddy: ah.
13:59 masak August... I didn't recognize it. :)
14:00 masak I think we can close that one.
14:03 masak RT++
14:03 jnthn We maybe want to give a better error than that, but yes, it's expected to aprse, but runtime fail.
14:06 masak which it does.
14:06 thepler left #perl6
14:09 PhatEddy At the risk of sounding uppity, may I suggest that if a better error is desired, the ticket could be reopened with a comment could be noting the current improvement and some idea of the desired error output.
14:09 masak feel free.
14:11 PhatEddy rakudo: abc[100]
14:11 p6eval rakudo c40f3b: OUTPUT«Could not find non-existent sub abc␤current instr.: '_block14' pc 58 (EVAL_16:40)␤»
14:12 PhatEddy Any thoughts on approaching appropriate error output?
14:13 PerlJam PhatEddy: how about just make it work rather than error?
14:13 jnthn PerlJam: What would you expect it to do?
14:14 PerlJam jnthn: I like the idea of Scalar[$index] returning the Scalar  (so, 10[1] == 10)
14:14 PerlJam er, 10[0]
14:14 PerlJam oh
14:14 * PerlJam was operating under a different set of assumptions  :)
14:17 PerlJam PhatEddy: I hereby retract what I just said and suggest the error be whatever the error should be for things like  my Int[5] @a;  (assuming I got the syntax right for specifying the max elements in @a)
14:17 PerlJam Something like "Can't index past the end of the thingy" :)
14:20 PhatEddy rakudo: my %a; say %a[ 2 ]
14:20 p6eval rakudo c40f3b: OUTPUT«Method 'postcircumfix:[ ]' not found for invocant of class 'Perl6Hash'␤current instr.: 'postcircumfix:[ ]' pc 3926 (src/classes/Positional.pir:100)␤»
14:20 PhatEddy OK ?
14:25 PhatEddy something like -"Method 'postcurcumfix:[]' not found for invocant " with some further elaboration ?  ok ??
14:26 PerlJam I don't like it, but I'm probably in the minority  :)
14:27 masak PerlJam: but it describes the symptom perfectly.
14:27 jnthn PhatEddy: Something like that looks good to me.
14:28 ZuLuuuuuu joined #perl6
14:31 PerlJam masak: well,  should 10[0]  work or not?  I like the idea that it should.
14:31 masak PerlJam: me too. but that's decidedly a different (not yet created) ticket.
14:31 PerlJam 10[1] would then just be indexing beyond the bounds of the scalar.
14:32 PerlJam Just like my Int[5] @a;  @a[12] is indexing beyond the bounds of @a
14:32 amoc joined #perl6
14:36 PhatEddy rakudo: say "abc"[0]
14:36 p6eval rakudo c40f3b: OUTPUT«Method 'postcircumfix:[ ]' not found for invocant of class 'Str'␤current instr.: 'postcircumfix:[ ]' pc 3926 (src/classes/Positional.pir:100)␤»
14:36 skids It isn't a particularly useful thing.  Perhaps it would be better not to define its behavior in case someone figures out something useful to do with 10[1] syntax -- I dunno, binary bitfield extraction or something?
14:38 [particle] joined #perl6
14:38 brunoV joined #perl6
14:40 pugs_svn r26051 | moritz++ | some small unfudges
14:43 Tene joined #perl6
14:44 skids Perhaps the best error for 10[2] would be "Maybe you meant :10[2]?"
14:45 PerlJam what does *that* do?
14:45 * moritz_ finds Method 'postcircumfix:[ ]' not found for  invocant of class 'Str'
14:45 masak skids: well, maybe the user meant "10".substr(2) or (10,)[2] ...
14:45 moritz_ not all that bad
14:45 masak moritz_: nod.
14:46 PhatEddy Comment was added to the ticket (57790) but I don't have permission to re-open ...
14:46 dKingston joined #perl6
14:48 nihiliad joined #perl6
14:51 masak PhatEddy: hold on, I'll do it.
14:52 masak I'll rename it while I'm at it.
14:53 pmichaud good morning #perl6
14:53 literal hi
14:53 jnthn hi pm
14:55 PerlJam morning pm
14:55 moritz_ RT #64360 looks good - opinions?
14:55 masak pmichaud: oh hai
14:55 [particle] pmichaud: did your unicode patch give a good bump in passing spec tests?
14:56 moritz_ and RT #64368 looks also nice IMHO
14:56 eiro hmm .. i know this is a parrot question but ... does someone knows if pynie will grown fast ?
14:57 masak eiro: I think allison works on pynie. maybe ask her?
14:57 moritz_ eiro: allison said she'll work on it in the next few months
14:57 [particle] eiro: it will be worked on soon by allison, at least
14:57 moritz_ lol
14:57 masak heh.
14:57 [particle] for pycon
14:57 masak eiro: more to the point, what is it that you'd like in pynie?
14:58 eiro hehe ... the fact that python communauty will test parrot
14:59 PerlJam pynie is going to be python 3 rather than 2 AIUT
14:59 eiro ok
15:00 eiro that's a good idea: python2 is not so smart
15:00 literal AIUT? as I understand that?
15:01 masak argh! seems my recent boldness in refactoring Druid after adding the tests has in fact broken the CLI in various places. :/
15:01 PerlJam literal: as i understand things
15:01 masak oh well, no-one's fault but my own.
15:03 jnthn .oO( I wasn't quite expecting to implement part of what we'll need to do lift along the way to doing lexical multi-subs, but anyways... )
15:04 pmichaud [particle]: (unicode + passing spec)   a smaller bump than i had hoped.  So far only around 287 tests (out of a possible 2200)
15:04 Psyche^ joined #perl6
15:04 pmichaud we'll need to figure out how Parrot wants to expose character properties
15:05 pmichaud but we are able to do things like
15:05 pmichaud rakudo:  say "\c[black telephone]"
15:05 p6eval rakudo c40f3b: OUTPUT«☎␤»
15:06 pmichaud also the refactoring means I'm not having to re-write the "parse \x, \c, \o" code over and over again.
15:06 ruoso [black telephne]++ ;)
15:06 pmichaud (previously it existed in about 3-4 different places)
15:06 [particle] rakudo: say "\[neither less-than nor greater-than]"
15:06 p6eval rakudo c40f3b: OUTPUT«[neither less-than nor greater-than]␤»
15:07 jnthn ...nice character!
15:07 * moritz_ wonders why it works with black telephone, but not with blue mountains ;-)
15:07 pmichaud rakudo: say "\c[hot beverage]"
15:07 p6eval rakudo c40f3b: OUTPUT«☕␤»
15:07 [particle] rakudo: say "\c[asterism]"
15:07 p6eval rakudo c40f3b: OUTPUT«⁂␤»
15:08 ruoso rakudo: say "\c[beer]"
15:08 [particle] why not neither less-than nor greater-than?
15:08 p6eval rakudo c40f3b: OUTPUT«perl6regex parse error: Unrecognized character name beer at offset 8, found 'b'␤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10552 (compilers/pge/PGE/Perl6Regex.pir:1323)␤»
15:08 ruoso ahhh
15:08 moritz_ [particle]: forgot c after \
15:08 [particle] ack.
15:08 [particle] rakudo: say "\c[neither less-than nor greater-than]"
15:08 p6eval rakudo c40f3b: OUTPUT«≸␤»
15:08 [particle] joy.
15:08 masak Rakudo++
15:08 [particle] we should implement that op to compare NaN
15:08 jnthn rakudo: say "\c[REVERSED ROTATED FLORAL HEART BULLET]"
15:08 p6eval rakudo c40f3b: OUTPUT«☙␤»
15:09 jnthn .oO( The unicode character name drinking game could be interesting... )
15:09 moritz_ ;-)
15:09 pmichaud anyway, now the trick will be for us to figure out how to "require" ICU for rakudo
15:10 PerlJam rakudo: say "    \c[Combining Cyrillic Millions Sign]"
15:10 p6eval rakudo c40f3b: OUTPUT«    ҉␤»
15:10 pmichaud rakudo: say "\c[keyboard]"
15:10 p6eval rakudo c40f3b: OUTPUT«⌨␤»
15:10 PerlJam oops, left the spaces in
15:11 PerlJam say "\c[white square]"
15:11 PerlJam rakudo: say "\c[white square]"
15:11 p6eval rakudo c40f3b: OUTPUT«□␤»
15:12 [particle] pmichaud: you can probe parrot-config for HAS_ICU
15:13 pmichaud [particle]: yes, I know that part.  The question is what to do if HAS_ICU is false.
15:13 ruoso rakudo: say "\c[hot springs]"
15:13 p6eval rakudo c40f3b: OUTPUT«♨␤»
15:13 dalek rakudo: 7a56d9e | pmichaud++ | docs/spectest-progress.csv:
15:13 dalek rakudo: spectest-progress.csv update: 340 files, 8049 passing, 0 failing
15:13 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7a56d9e718c8f9818af74766efa3eb7c638936eb
15:14 hercynium joined #perl6
15:20 PhatEddy rakudo: $_ = "a"; say /b/ ?? "yes" !! "no"
15:20 p6eval rakudo 7a56d9: OUTPUT«yes␤»
15:20 DemoFreak joined #perl6
15:20 pmichaud rakudo doesn't always know how to do immediate-match-against-$_
15:20 PerlJam you know ... everywhere I find unicode character sets, they always give the hex code for them, yet the spec says that you can only use decimal numbers inside of \c[...].  It would be nice to be able to say "\c[x405,x415,x425]" instead of "\c[1029,1045,1061]"
15:21 moritz_ PerlJam: that's what \x is for
15:21 pmichaud rakudo:  say "\x[405,415,425]"
15:21 p6eval rakudo 7a56d9: OUTPUT«ЅЕХ␤»
15:21 pugs_svn r26052 | jnthn++ | [t/spec] S06-multi/lexical-subs.t did not test multi subs, but just single dispatch lexical subs; moving it.
15:22 PerlJam Sure.  I guess I was really wondering why only decimal numbers in \c[]
15:22 PerlJam or eve why decimals in the first place
15:22 pmichaud well, at one time it was  \d[...]
15:23 PhatEddy The match problem is from ticket 61662 (http://rt.perl.org/rt3/Public/Bug/Display.html?id=61662) which seems to describe a changing topic problem which really seems to be an always matches problem described in t/spec/S05-metasyntax/regex.t
15:23 pmichaud i.e., there used to be separate \c[...] and \d[...]
15:23 pmichaud I think \d[...] was eliminated to reduce confusion between it and the regex \d
15:23 M_o_C joined #perl6
15:24 PerlJam that makes sense.  Anything to reduce the number of special cases I have to remember :)
15:26 PhatEddy I didn't find a ticket for the always matches problem and, if no objection, will try to make 61662 and the always matches problem in the tests point to each other.
15:27 pmichaud can we call it something other than 'always matches'?   That's not really accurate.
15:28 pmichaud with    say /b/ ?? "yes" !! "no"    the real issue is that no match is performed at all -- the regex simply considers itself to be true.
15:29 pmichaud but beyond that, I wonder if /b/ _should_ be doing an immediate match there (and if so, how do we know that?)
15:30 PerlJam pmichaud: it should because /b/ is in a boolean value context  :)
15:30 pmichaud so, all Regexes in boolean context match themselves against $_ ?
15:30 jnthn Did somebody unfudge something in S16-filehandles/unlink.t while I wasn't watching?
15:30 pmichaud say   regex { b } ?? "yes" !! "no";
15:31 pmichaud my $a = /b/;   say $a ?? "yes" !! "no";
15:31 moritz_ jnthn: I did, yes
15:31 moritz_ jnthn: does it fail on windows?
15:32 jnthn moritz_: Yes. :-(
15:32 moritz_ jnthn: ah. It passes here :/
15:32 PerlJam pm: the spec would be simpler I think if Larry just make m// always match and if you want a regex object, you have to use rx// or one of the other forms.
15:32 jnthn moritz_: Yeah, that's what I suspected when I saw it unfudged. :/
15:32 pmichaud m//  always matches already.
15:32 PerlJam s/make/made/
15:32 PerlJam pm: I mean //
15:32 jnthn moritz_: It is only test 6 that fails, I should note.
15:32 jnthn (The very last one.)
15:33 moritz_ jnthn: I'll re-fudge
15:33 pugs_svn r26053 | jnthn++ | [t/spec] Add some initial tests for lexical multis.
15:33 PerlJam // should just be a short-cut for m// for when you don't need adverbial modification.
15:33 pmichaud and rx//  is a shortcut for regex {}   ?
15:34 pugs_svn r26054 | moritz++ | [t/spec] re-fudged test that fails on windows. moritz--
15:34 PerlJam aye
15:34 pmichaud I wonder how that impacts the anchoring provisions
15:34 moritz_ jnthn: does it pass now again?
15:35 jnthn moritz_: Well, good to know it's platform specific...
15:35 payload joined #perl6
15:35 jnthn moritz_: Yes
15:35 moritz_ good
15:36 pmichaud PerlJam: note also that what you suggest would change:    @a.grep( /foo/ )
15:36 PerlJam I think I can live with a little extra typing there.
15:37 alester joined #perl6
15:37 PhatEddy rakudo: say "\c[rhythm]"
15:37 PerlJam I don't know how much of the current spec on // is just history versus huffman though
15:37 p6eval rakudo 7a56d9: OUTPUT«perl6regex parse error: Unrecognized character name rhythm at offset 8, found 'r'␤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10552 (compilers/pge/PGE/Perl6Regex.pir:1323)␤»
15:38 dalek rakudo: 13ddade | jnthn++ | src/ (3 files):
15:38 dalek rakudo: First cut at implementing lexical multi subs.
15:38 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/13ddade4783a9420e4dba60d0c5f1e983259ac3f
15:38 dalek rakudo: 9cdadc2 | jnthn++ | t/spectest.data:
15:38 dalek rakudo: Add S06-multi/lexical-multis.t to spectest.data.
15:38 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9cdadc2e9220bc42388f3ad846fc67905eb87b8e
15:38 [particle] so, multi circumfix:</ />(Regex $) ?
15:38 pmichaud [particle]: close.... / /   is a quote operator.
15:38 [particle] ah, right.
15:39 [particle] i don't like the lack of a leader there
15:39 [particle] i never use bare /.../ in perl 5
15:39 pmichaud well, it's not so bad...   /.../  (regex)  is analogous to {...} (block)
15:40 [particle] and '...' (string), yes
15:41 [particle] still, rx{...} isn't a block
15:41 pmichaud sure it is.
15:41 [particle] and there's no alternate delimiter syntax for blocks
15:41 pmichaud rx{...} is a block.
15:41 [particle] is qq/.../ ?
15:42 pmichaud no.
15:42 [particle] rx/.../ ?
15:42 pmichaud yes.
15:42 pmichaud (all regexes are blocks)
15:42 [particle] ok.
15:42 pmichaud it's a block by virtue of being a regex, not because of the syntax used to create it
15:43 [particle] yes, i see now.
15:43 [particle] still... something bugs me about strings not being blocks.
15:43 moritz_ Perl 6: Everything Is A Block
15:43 [particle] i mean, you're using different parsers for regexen, blocks, and strings
15:43 [particle] two of the three are blocks
15:44 moritz_ well, in some sense strings are blocks also, in that they only interpolate when the string is actually used
15:44 moritz_ that is, at run time
15:44 [particle] a different two of three have alternate delimiter rules
15:44 [particle] moritz_: that's what i'm getting at.
15:45 moritz_ ... and now you want to unify blocks, strings and regexes
15:45 [particle] YES
15:45 pmichaud well, I don't think I want a string to be a block.
15:45 [particle] pmichaud: and i want to hear why. i'm sure there are good reasons
15:45 PerlJam If // always matched, where else would be need rx//?   @a.grep(rx/.../)  $str.split(rx/.../)   and ... ?
15:46 pmurias joined #perl6
15:46 pmichaud from a purely implementation perspective:  blocks right now correspond to new lexical scopes and (in Parrot) to separate invocation subs
15:46 moritz_ my $x = rx/.../
15:46 pmichaud having every string constant correspond to a new lexical scope and (Parrot) block invocation would get expensive.
15:47 pmichaud PerlJam: anywhere that we currently expect to pass a regex to a function or method
15:47 moritz_ pmichaud: I think it's more about the notion, not about them being an actual block
15:47 pmichaud moritz_: because I don't think   String ~~ Block   (how's that?)
15:47 PerlJam pm: yeah, but what are the common places?  I'm suffering a failure of imagination or something because I can't think of many  :)
15:48 moritz_ pmichaud: better ;-)
15:48 pmichaud PerlJam: maybe we should look through the test suite?
15:48 moritz_ actually, if we expand the analogy, we'd introduce a syntax for blocks with different delimiters.... but I don't see how that would make sense
15:48 [particle] BEGIN ... END
15:48 [particle] :)
15:48 moritz_ for regexes and strings it makes sense because the contents can collide with the delimiter
15:48 pugs_svn r26055 | jnthn++ | [t/spec] More tests to exercise lexical multi subs.
15:49 moritz_ actually, much less in Perl 6
15:49 [particle] moritz_: that can happen in blocks, too, if you create postfix:<}>
15:49 PerlJam The flip side of could be to make // always create a regex object and require m// to actually match.  That's slightly more huffman.
15:49 pmichaud and we do have block introducers:   ->   <->
15:49 justatheory joined #perl6
15:49 PerlJam s/of //
15:49 [particle] pmichaud: so those could take alternate delimiters.
15:50 pmichaud one could conceivably do it that way, yes.
15:50 [particle] just like we have regex/token/rule, block/string/regex can be unified, with various adverbs to distinguish them
15:51 [particle] {:regex ...}, or maybe it's {...} :string
15:51 pmurias hi
15:51 pmichaud I'm still not certain that all DSL's should automatically correspond to blocks.
15:51 PerlJam [particle]: you get an end-weight problem with that last example
15:51 moritz_ neither am I, but it's interesting to exercise the idea
15:52 [particle] perljam: yes, definitely
15:52 pmichaud PerlJam: yes, I'd prefer to see that m/.../ always mean "immediate match" and leave the // and rx// forms for "scanning regexes"
15:52 [particle] and it's probably more that qq{} === {:!lexpad :string<interpolate> ...}
15:53 [particle] pmichaud: i agree there
15:53 moritz_ pmichaud: so would $a ~~ m/../ match the regex immediately against $_, and then match $a against the Match object
15:53 pmichaud moritz_: I'd treat smart match as syntactically special in that instance.
15:53 moritz_ or what does 'immediately' mean?
15:53 pmichaud Indeed, it already is.
15:54 moritz_ ok
15:54 moritz_ I think the main reason for /.../ was to allow $str.split: /.../ and such methods
15:54 moritz_ where perl 5 even allowed m/.../
15:54 PerlJam moritz_: $a ~~ /.../ is fine though, and if you need adverbs,  $a ~~ rx:foo/.../
15:55 pmichaud yes, smart match has some dwimminess built-in that causes it to treat m/.../   rx/.../   and /.../  identically
15:55 pmichaud but smart match is syntactically empowered to do such things.
15:55 pmichaud ?? !!   doesn't have quite that much syntax help.
15:55 lambdabot !!   doesn't have quite that much syntax help.
15:56 pmichaud why does lambdabot think that every non-word character has some sort of important meaning?
15:56 [particle] @stupid bot
15:56 lambdabot Unknown command, try @list
15:56 PhatEddy hoping this means that $str.split: /.../ will continue to work without requiring m/.../
15:56 PerlJam like all bots, lambdabot is stupid  :)
15:57 pmichaud PhatEddy:   $str.split: /.../    and $str.split: m/.../   mean different things
15:57 [particle] set up irssi to prefix all non / messages with a space
15:57 pmichaud the first says to split on the regex.  The second says to immediately match $_ against the regex and then split on that.
15:58 pmichaud (short answer to your question:   $str.split: /.../  will do what you expect.)
15:59 PerlJam pm: but then how does $str.split: m/.../ know how to treat the result of m/.../?  Should it just assume ~$/ for purposes of dispatch?  (I'm not saying the others make sense, just how does the dispatcher know which to use)
15:59 pmichaud PerlJam: it would likely go to   .split(Any $x)
15:59 pmichaud so it will do whatever happens to $x in that case
16:00 pmichaud if the default is to treat $x as a string, then it will stringify the Match object and split on that
16:00 pmichaud i.e., if there's not a special   .split(Match)   method, then it likely dispatches to .split(Any)  and we go from there.
16:01 PerlJam This is one of those  things where I think I'd want the parser giving me hints about what it thinks I meant  :)
16:01 PerlJam $str.split: m// is so bizarre
16:01 pmichaud which is why I wouldn't expect to see it used much.
16:01 pmichaud that's why the 'm' is in the front :-)
16:02 PerlJam I can see it happening by accident because that m is so small.
16:02 pmichaud sure, I can also.
16:02 moritz_ m like bizarre?
16:02 pmichaud We could always have   .split(Match)  throw a warning.
16:03 moritz_ pmichaud: good idea
16:03 PerlJam yeah.
16:03 PerlJam (but so far, we're still conjecturing.  Or should one of us change the spec and incur the ire of Larry?  :-)
16:03 pmichaud multi method split(Match $) { die 'You probably mean ~$/ or ~m/.../ instead'; }
16:04 moritz_ or /.../
16:04 literal judging from the above conversation, rx// and // would be like Perl 5's qr//, while m// will stay the same?
16:04 pmichaud like qr// but without the string interpolation semantics
16:04 PerlJam but basically right
16:06 pmichaud we'd probably want syntax help for     if /foo/  { ... }     also
16:06 PhatEddy I am not sure split with m// is really that rare.  I use m!/! for web applications in p5 often
16:06 PerlJam pm: indeed.
16:07 pmichaud okay.  I'm heading off to lunch, then I'll be back to write bunches of messages.
16:08 literal it seems kind of confusing to me that m// be special in that it demands a match, that'd be like defining a subroutine that demands to be run straight away
16:08 literal why not just prepend a ~~ if one wants to match straight away?
16:09 pmichaud literal: because matching against the topic ($_) wants huffmanization
16:09 literal like you would append a () or .() to a sub you want to execute straight away
16:09 PerlJam literal: because writing $_ ~~ /.../ everywhere kind of defeats the purpose of having a short-cut
16:09 pmichaud i.e.,   m/foo/   is equivalent to  $_ ~~ /foo/
16:09 pmichaud although maybe it should be ./foo/   :-P
16:10 [particle] yeah, i was thinking about .m/.../
16:10 [particle] does .() invoke $_ ?
16:10 pmichaud std:  .()
16:10 p6eval std 26055: OUTPUT«ok 00:02 35m␤»
16:10 pmichaud it might :-)
16:11 [particle] ./.../ or .m/.../ is short enough for me
16:11 [particle] make that ./.../ or .m(...) # or other alternate delimiters
16:12 literal that seems logical
16:13 pmichaud please no
16:13 PerlJam I don't really see how ./.../ could work.
16:13 pmichaud you're conflating two syntaxes there.
16:13 pmichaud .foo(...)  already has a meaning
16:13 pmichaud we don't want to treat .m(...) as being special
16:13 [particle] .m is calling the m method on $_
16:13 pmichaud fine
16:14 pmichaud but the method invocation syntax is (...), not /.../
16:14 literal .m: /.../ ?
16:14 literal hm, no
16:14 pmichaud .m($x)    probably should not mean   $_ ~~ /$x/
16:14 pmichaud literal:   .match: /.../   already exists, I think.
16:15 literal when /.../
16:15 pmichaud that works but has extra semantic baggage
16:15 literal how so?
16:16 pmichaud it skips to the end of the block after matching
16:16 literal ok
16:16 pmichaud i.e.,   when /.../    isn't the same as   if m/.../
16:23 ashizawa joined #perl6
16:24 PhatEddy rakudo: my $x = "a" ~~ s/a/c/;
16:24 p6eval rakudo 9cdadc: OUTPUT«Statement not terminated properly at line 1, near "/;"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
16:26 [particle] std: my $x = "a" ~~ s/a/c/;
16:26 p6eval std 26055: OUTPUT«ok 00:04 37m␤»
16:26 PerlJam PhatEddy: I don't think rakudo groks s/// yet. But there's a .subst() method you can call IIRC
16:28 PerlJam rakudo: my $x = "a";  say $x.subst(/a/,"c");
16:28 p6eval rakudo 9cdadc: OUTPUT«c␤»
16:29 PhatEddy I noticed - just a thought in progress(?) about consistency for topic matches.
16:30 PerlJam you mean if m// always matches against $_, so should s/// ?
16:30 PerlJam so that $foo ~~ s/// doesn't make sense any more?
16:31 PhatEddy Wondering perhaps - getting possibly way ahead of myself - if // ?? !! could be a void context type error for the moment until s/// works.
16:34 PerlJam I don't get it.
16:36 pmichaud $foo ~~ s///  would likely still work for the same reason that  $foo ~~ m//   does   (syntactic help)
16:45 pugs_svn r26056 | jnthn++ | [t/spec] Fudging for Rakudo.
16:52 dalek rakudo: 1bf637c | jnthn++ | t/spectest.data:
16:52 dalek rakudo: Add S06-advanced_subroutine_features/lexical-subs.t to spectest.data.
16:52 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1bf637c3e13edf33f2967dad5e2ca67ceafcdee8
16:54 rindolf joined #perl6
16:55 mncharity joined #perl6
16:56 pasteling "mncharity" at 98.216.110.149 pasted "Alternatives to Elf" (25 lines, 1.5K) at http://sial.org/pbot/35823
16:57 mncharity pmichaud: I'm uncertain I'll actually post this anywhere, but could you reality check the Rakudo/Parrot paragraph?  My thanks.
16:58 dKingston joined #perl6
16:59 PerlJam mncharity: I would call rakudo the best all around perl 6 implementation myself  :)
17:00 pmichaud mncharity: I'm obviously a bit biased, but I suspect pugs is no longer the best all-around implementation
17:00 pmichaud I'm not saying rakudo beats it, but in many places pugs is working off of outdated specs
17:00 pmichaud it would be very interesting to see a spectest report for pugs
17:02 pmichaud for rakudo I would also note that the non-small p6 development efforts that do exist are generally targeting rakudo.
17:02 mncharity what non-small p6 development efforts exist other than elf?
17:02 mncharity re rest, hmm, ok.  I'll need to capture the concept that
17:03 pmichaud I'm sorry, I was using the phrase in the same sense that I thought you were using it in the paragraph
17:03 pmichaud There is very little
17:03 pmichaud track-record to suggest how non-small p6 development will fare
17:03 mncharity not "best wrt current spec coverage", but "best wrt running hunks of p6 code".
17:03 pmichaud I'd even go for "best wrt running hunks of p6 code"
17:03 pmichaud but that's highly subjective, and it depends on what parts of p6 you expect to work.
17:03 mncharity re track-record, ahh, another ambiguity to rephrase away.
17:04 pmurias mncharity: re perl5 and Moose implementation it's an easy way to get large chunk of features but you will struggle horribly to get the rest
17:04 pmurias s/large/a large/
17:04 mncharity re hunks, my impression was/is rakudo doesn't have anything like pugs's ext/* .   no?
17:06 mncharity re struggle horribly, oh yes, indeed.  hmm, so my unstated hypothesis is that a near-term usable implementation of p6, be it pugs, rakudo, elf, smop, or whatever, is almost certainly going to serve as a throwaway, just good enough to generate interest, and support bootstrapping a full p6 compiler.
17:06 pmichaud we don't host them within rakudo's repo, no
17:08 pmichaud odd,  November isn't listed on perl6-projects.org
17:08 pmichaud mncharity: Web.pm is being built for Rakudo
17:08 jnthn Form.pm also.
17:09 pmichaud others have built URI parsers and the like
17:09 pmichaud so why Rakudo doesn't have as much as ext/*, a lot is being developed "as we speak"
17:10 pmichaud and, fwiw, I disagree with your unstated hypothesis, but I think that's just an area where we agree to disagree.
17:10 pmichaud Rakudo is totally intended to be a full p6 compiler.  The hypothesis that a full p6 compiler must be bootstrapped I don't agree with.
17:11 mncharity I tend to think of parrot delivering a usably fast vm as a still open question.  If we have to use LLVM i
17:11 pugs_svn r26057 | pmurias++ | [re-smop] ported m0ld over
17:12 mncharity nstead, then the easiest path there seems a compiler written in p6.  running on rakudo, or wherever.
17:12 pmichaud I agree that Parrot's speed remains an open question.
17:12 pmichaud but that doesn't mean that translating to a different backend requires doing so in p6
17:12 pmurias parrots design seems very performance oriented
17:13 pmichaud parrot's design is performance oriented.  Its implementation is an open question.  :-|
17:13 aindilis joined #perl6
17:13 pmichaud or, phrase another way, parrot targets a language that has features a lot like p5.  Unfortunately, p6 isn't such a language.
17:16 mncharity hmm.  I almost suggested attempting a consensus "State of P6" post for end of quarter.  Punted thinking the parrot/non-parrot division might generate more unhelpful heat than light.  Might have been the wrong call.
17:16 Kisu joined #perl6
17:18 jnthn re having a stable subset of Perl 6 to do compiler development in - we do have one (NQP).
17:18 mncharity re 'doesn't mean that translating to a different backend requires doing so in p6', indeed.  but what are the choices?  p5, p6, hs, and... what else?
17:18 pmichaud depends on the backend
17:19 pmichaud i.e., if I decided to target .net, I'd use .net tools
17:19 pmichaud (yes, there are all sorts of reasons not to target .net or why it might not work -- but the backend somewhat indicates the choice of tools available)
17:19 pmichaud in the case of Parrot, we used tools available for Parrot (or built them as needed)
17:20 pmichaud you are correct that now that we have some usable implementations it may be possible and worthy to rewrite some of those tools in p6.  but I see that happening "as we need them" as opposed to being a prerequisite for having things work "at all"
17:21 pmichaud that's why my next major phase of development is to refactor PGE, and to do the refactoring with an eye towards porting it to other backends
17:22 pmichaud because I think what pugs and rakudo and std teaches us is that a Perl 6 implementation is not really useful without a working grammar engine
17:22 pmichaud (and the fact that pugs didn't have one is what started getting in its way)
17:22 mncharity oh yeah.  # re not really useful
17:23 pmichaud so, I thik that any p6 implementation somewhat has to start with a grammar engine.
17:23 pmichaud *think
17:24 pmichaud if we can write an efficient grammar engine in p6 (or a useful subset of p6), that will be cool.  That's part of what I'm hoping to do.  But it's one goal among many, and not my primary one at this point.
17:24 pmichaud (i.e., having a more complete grammar engine is more important than having one written in p6)
17:25 mncharity re pugs, well, I'd suggest the nuance that it was pugs not fully exporting its parse tree which got in the way of alternate pugs backends only.  it was the 'bogging down in pugsbugs' problem which blocked the move from hs to p6 prelude.  and then audreyt leaving of course.
17:25 pmichaud I think it's more that pugs' grammar wasn't really based on perl 6 rules
17:26 moritz_ pmichaud: I don't think that was the primary problem
17:26 mncharity and that was a problem for doing what?
17:26 pmichaud "exporting the parse tree"
17:26 pmichaud i.e., pugs' parse tree wasn't really following the p6 design
17:27 pmichaud rakudo's parser has always been written in Perl 6.
17:27 mncharity no, well, yes, if there was a match tree, one might export it.  but no, the problem wasn't the form of the tree, but that it didn't contain object declaration information.
17:28 mncharity one could have had a pugs-style tree, with oo info, which would have been just fine for alternate backends.
17:28 pmurias doesn't pugs use PIL as the parse tree?
17:28 barney joined #perl6
17:28 pmichaud but that wouldn't have really been Perl 6.  IIUC, part of the reason Larry did STD.pm was because the implementations weren't converging on a parsing solution
17:29 pmichaud at _some_ point Pugs would've had to adapt to something more STD.pm-like
17:30 mncharity re PIL, yes but, take a simple  class A is B { has ... blah etc }, and look at the pil dump.
17:31 pmichaud One reason Pugs was able to take off much faster than Rakudo was because it went with Parsec as its parser engine (and Parsec was already highly developed)
17:31 pmichaud whereas Rakudo always went with Perl 6 expressions.
17:31 moritz_ rakudo: class A { if (0, 1).pick { has $.a }; }; say A.new(a => 3).a
17:31 p6eval rakudo 1bf637: OUTPUT«Attempt to define attribute $!a outside of class, role, or grammar at line 1, near "}; }; say "␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
17:32 pmichaud but using Parsec also meant that it wasn't going to be the official p6 grammar.
17:33 mncharity re "wouldn't have really been Perl 6", and... why does that matter?
17:33 pmichaud if the point is getting to a full p6 implementation, there were some obstacles there to doing so.
17:34 pmichaud I'm not at all saying they were insurmountable obstacles, and if anyone could do so, I'd bet on audreyt
17:39 mncharity that may actually be at the heart of the parrot/non-parrot split in perspective.  (a)"you start with C, and work up", vs (b)"you start with a good language, and write mostly in p6".  it's neat,
17:40 pmichaud keeping in mind that parrot's goals are quite different from simply  "implement Perl 6"
17:40 mncharity nod
17:44 pmichaud I'd best get lunch now, or I shan't get any
17:44 mncharity to illustrate the split in perspective, some things like "wouldn't have really been Perl 6" and followups, have a big "Huh?!?" impact for me.  Like someone saying "I going to get lunch, because cats are smaller than trains.".
17:44 mncharity lol
17:44 mncharity # re lunch coincidence
17:44 pmichaud indeed
17:44 Khisanth joined #perl6
17:45 pmichaud anyway, back to the paragraphs you wrote -- I don't have any major issues with them at all.
17:45 mncharity my thanks.
17:45 pmichaud there are some things that I think might be tweaked to be a bit more accurate, but they're largely subjective and depend on point-of-view
17:45 * ruoso .oO( following #perl6 gets harder each day... soo many things happening... )
17:46 pmichaud so I can't say that they're *in*accurate
17:46 pmichaud (and wouldn't want to claim that anyway)
17:46 mncharity I'll tweak to clarify.  Simpler if its a consensus statement.
17:46 mncharity Beats my usual "I've a policy of not commenting on parrot, sorry."
17:46 pmichaud that would be great.  We do need to update perl6-projects.org with the other projects that are targeting Rakudo.
17:48 pmichaud there's also eric256's perl6-exmaples repository at github... but perhaps we can make that more prominent
17:48 mncharity good thought.  for people contemplating writing some little thing in p6, that may be more useful to them than language coverage info.
17:48 mncharity a sense of what's possible.
17:49 PerlJam But what happens when they go "I don't understand all of this syntax"  ?  There's really no good docs, just lots of reading synopses.
17:49 mncharity the other bit is how hard it was to get it working.  eg, the ext/* code was only half the story.  the other half was how much effort working around pugsbugs to get to something working was.
17:50 pmichaud right... rakudobugs have the same impact.  Hopefully the rakudobugs are being cleared though (if somewhat slowly).
17:50 pmichaud the folks working with rakudo all comment that there's drastic improvement over time
17:51 ruoso mncharity, getting late in the train... p6-in-p5 was already tried, but you can only get very few of the p6 semantics there, that was when KP6 started, building a runtime on top of p5... Perl 6 is a language that no VM can support today, some are close, but p5 is not one of them...
17:52 mncharity might be worth asking folks coding things to write up a blog-like experience doc as they go.  which might also be a learning tool, and feedback for what language docs are most needed.
17:52 pmichaud (blog-like experience doc)...   I almost always ask folks writing stuff with rakudo to blog about the effort.  Unfortunately, coming from me that seems to be more of a "do as I say, not as I do" sort of thing (which I _really_ need to fix)
17:53 pmichaud okay, lunch.  back later.
17:53 PerlJam mncharity: gabor szabo has a perl6 newletter that's good.
17:53 szabgab PerlJam++
17:53 mncharity hi ruoso.  re
17:53 ruoso hi mncharity
17:53 pmichaud that newsletter probably ought to be mentioned on perl6-projects.org also.
17:53 mncharity PerlJam: linked from http://perl6-projects.org/  ?
17:53 PerlJam pm: indeed.  (you're never going to lunch :)
17:54 pmichaud it also needs to be mentioned on rakudo.org
17:54 [particle] or added to planet.perl6, and mention planet
17:54 pmichaud and yes, it should go on planet.perl6 also.
17:54 ruoso I think I'm not aware of szabo's newsletter
17:54 ruoso url?
17:54 szabgab szabgba.com/perl6.html
17:54 pmichaud and I think it should go on  dev.perl.org/perl6/lists   too, perhaps.
17:54 szabgab http://szabgbab.com/perl6.html
17:55 * gravity wants to get rakudo installable to the system using a system-installed parrot before writing code and blogging about it
17:55 ruoso http://www.szabgab.com/perl6.html actually
17:55 szabgab http://szabgab.com/perl6_tricks_and_treats.html
17:55 mncharity re 'p6-in-p5 was already tried', err, yes, by elf.  works nicely. :)   and the PIL-Run backend for pugs.  Worked well there too.  re kp6... I do try to avoid saying negative things about other peoples' projects.  let's just say p6-on-p5-ness wasn't kp6's problem.
17:55 szabgab the other one is the link to the training material
17:56 mncharity ruoso: the key thing is
17:56 ruoso mncharity, no... really... kp6 was not a p6-on-p5 projet
17:56 ruoso mp6 was, v6-alpha was
17:56 ruoso but kp6 wasn't
17:56 ruoso which was when it became inpractical because of the performance
17:56 ruoso mncharity, I'm talking about pre-elf experiments
17:57 PhatEddy Just touching back on rt 61662 for the moment, I think it might make sense to close that one and maybe open a [TODO] for huffman coding of topic matching ...
17:58 pmichaud PhatEddy: when I get back from lunch I plan to write a message to p6l asking about /.../ matching
17:58 pmichaud unless someone beats me to it.
17:58 pmichaud instead of closing 61662 it might be worthwhile to change it to a TODO with the issues
17:58 szabgab can I be greedy and ask that the Padre::Plugin::Perl6 would be also mentioned on perl6-projects.org ?
17:58 ejs joined #perl6
17:59 pmichaud szabgab: you can add it directly if you wish :-)
17:59 pmichaud it's part of the pugs repo
17:59 mncharity you can't do a naive translation.  Yes, if you tried to container and box everything, performance would be dreadful.  But even quite dumb analysis can do a lot of decontainering and unboxing.  So it's clear you can do p6-like while fudging deep p6 semantics, and it seems at least plausible one can get at least some deep semantics with a bit of compiler smarts.
17:59 szabgab ah
17:59 szabgab yeah I can spam that page :-)
17:59 PhatEddy (sorry - I already finished my lunch and had lost track a bit ...)
18:00 pmichaud szabgab: docs/feather/perl6-projects.org
18:00 szabgab yeah I found it, thanks
18:00 ruoso mncharity, well.. you can try to translate p6 code to p5 in the sense of "let's see what the user meant", but you're not getting p6 semantics, and nothing even close to that...
18:01 cognominal joined #perl6
18:01 szabgab busy trying to convince someone to do a Padre GSoc
18:01 pmichaud okay, I'm really leaving for lunch now.
18:01 szabgab or to apply for one
18:01 ruoso szabgab, I think we kinda have more mentors than students atm
18:03 szabgab with 24 hours left that does not look good on the student side
18:03 [particle] ruoso: that's no different from previous years
18:03 [particle] and we'll have more applications than slots, too
18:03 ruoso sure...
18:03 mncharity re 'kp6 performance', kp6's impractical performance was caused by design decisions other than p5-ness.  re pre-elf, pugs had a p5 backend.  passed something like half the test suite.  performance wasn't great, but usable.  elf is in some spiritual sense just that backend freed from pugs's parse-tree incompleteness by the ruby or gimme5 STD parse-tree dumps.
18:05 ruoso mncharity, kp6 performance was bad because it wasn't trying to translate p6 semantics to p5... it was implementing the whole p6 runtime on top of p5... so, I don't think kp6 really fits in the p6-in-p5 world
18:05 mncharity re 'but you're not getting p6 semantics, and nothing even close to that', hmm, I suspect it...
18:05 mncharity huh?  "don't think kp6 really fits in the p6-in-p5 world"?
18:06 ruoso it really wasn't p5
18:06 mncharity oh, a distinction between p6 IN p5, vs p6 ON p5??
18:06 ruoso the code kp6 generated
18:06 mncharity /me still puzzled
18:07 ruoso kp6 implemented a calling convention on its own
18:07 ruoso it wasn't p5, really
18:07 ruoso it was written in p5
18:07 mncharity so does elf, so?
18:07 ruoso but it wasn't p5
18:07 ruoso doesn't elf use the object system of the host language?
18:08 ruoso kp6 didn't... kp6 implemented an object system on its own...
18:08 ruoso in order to provide p6 semantics
18:08 mncharity it ran on perl5.  hmm, you're (mabye) saying that kp6 didn't emit p5 code, so was unable to "touch the metal", and thus was slow?
18:09 ruoso kp6 did emit p5 code... but it wasn't really p5 code...
18:09 charsbar joined #perl6
18:09 ruoso it was a giberish that happened to be ran by the p5 interpreter
18:11 mncharity would you consider Moose p5?
18:11 ruoso Moose is p5
18:12 ruoso it uses p5 object system
18:12 ruoso even if in a very interesting way
18:12 ruoso but it does
18:12 ruoso kp6 really implemented everything from scratch
18:12 ruoso and no, Moose does not provide all the semantics Perl 6 defines...
18:13 mncharity ah, ok.  I see the "non p5" position now I think.
18:13 ruoso when smop started (yap6 at that time), it was largely based on what kp6 implemented
18:13 ruoso but instead of being written in p5, it was written in C
18:14 ruoso at the time I started it, I was considering it as a prospective backend for kp
18:14 ruoso k6p
18:14 ruoso kp6
18:16 mncharity It would seem to be a continuum, yes?  as for instance, Moose is a mix.   and especially with a compiler backend which controls the code so you don't have to worrying about human writeability.  from it's all native oo, to oo used with increasing extra mechanism, to native oo is used less and less, to native oo is only used to implement a non-native oo layer.
18:16 mncharity yes?
18:17 * ruoso trying to parse that
18:18 ruoso kp6 didn't use p5 oo at all
18:18 szabgab what is this p6-in-p5 world ? I could not understand from the backlog yet
18:20 ruoso szabgab, by p6-in-p5 I mean the Perl 6 to Perl 5 translators... i.e. v6-alpha
18:20 mncharity on that continuum, elfp5 is native-oo with extra mechanism (autobox and such), elfcl is currently native-oo used in a non-standard manner, and will become non-"native"-oo as soon as someone gets around to it.  Though in CLOS, calling it non-native doesn't quite work as a concept, as the object system is set up for games this.
18:20 szabgab so not embedding perl 6 in perl 5 ?
18:20 ruoso szabgab, not embedding. no...
18:21 mncharity /me now very confused.
18:21 mncharity "translators"?  but not "embedding"?  hmm, mabye punt, and go back to
18:21 [particle] szabgab: perl 6 implemented in perl 5
18:22 szabgab ok
18:22 ruoso [particle], but my argument here is not just "implemented in perl 5" but that actually use p5 semantics to run p6 code
18:23 ruoso i.e.... translating p6 classes to moose classes
18:23 mncharity [particle]: re "implemented", yeah, that was my default interpretation, but it doesn't seem that's it...
18:24 ruoso as a basic test...
18:24 [particle] ok, a perl 5 runtime for perl 6
18:24 mncharity re 'but you're not getting p6 semantics, and nothing even close to that', hmm, I suspect this will depend on what "p6 semantics" mean.  Let's see, does pugs have them?  rakudo?
18:25 hercynium joined #perl6
18:25 ruoso mncharity, it gets to fundamental things as binding, for instance
18:25 ruoso it doesn't apply only to exotic features
18:25 pmurias mncharity: re Moose, Moose is idiomatic perl5
18:26 mncharity re binding, there are CPAN modules to do binding, no?
18:26 ruoso not with the P6 semantics
18:26 ruoso in p5 there is only the value
18:26 ruoso there isn't a container and a value
18:26 cdarroch joined #perl6
18:26 ruoso the value is the SV*
18:26 pmurias you can fake containers with tie
18:28 mncharity /me quite confused, steps back to look around
18:28 ruoso well... I don't remember where the things got weird...
18:29 ruoso but trying to bring p6 semantics to p5 was tried before...
18:30 pugs_svn r26058 | szabgab++ | links to blogs of Moritz Lenz, Gabor Szabo and Inline::Rakudo
18:30 mncharity Hmm, let's take binding.  And agree binding might be classed as important p6 semantics.  Though elf doesn't support it, and one can imagine writing a large p6 program without it.  Binding is a compile-time issue no?  A compiler can implement it with no runtime support.  So does it matter that p5 doesn't have a native binding construct?
18:31 pmurias binding is a runtime thing
18:31 ruoso mncharity, ::= is compile-time, := is runtime
18:31 fehagethzdt joined #perl6
18:31 mncharity ah, ok, nm.  hmm.
18:31 fehagethzdt hi
18:31 pmurias fehagethzdt: hi
18:32 ruoso mncharity, binding, in fact, is one of the most important concepts of p6 in terms of runtime
18:32 ruoso every method or sub invocation implies in binding a capture to a signature
18:32 mncharity ::= or := ?
18:32 ruoso :=
18:32 rindolf joined #perl6
18:32 PhatEddy left #perl6
18:33 mncharity /me wonders whether to try and straighten out the misunderstanding that just went by... punts...
18:33 mncharity ok, how about this,
18:36 mncharity in any language implementation porting project, there's the 80% (bogus numbers) which is easy, the 17% which is hard, and the 3% which is a world of pain which requires either structuring your entire effort around them, sometimes crippling it, or declaring a 97% success is good enough.
18:37 ruoso mncharity, the problem is that when talking about Perl 6, the easy part is well below 30%
18:37 ruoso I'd say at least other 30% are the "world of pain"
18:38 ruoso and maybe only 40% is hard
18:39 mncharity the fact that signature/capture is speced as := , doesn't mean a compiler actually has to implement it that way, certainly not in the general case.  there may well be some use that is hard/slow, and perhaps even some that just can't plausibly be done on p5, even with XS support.  maybe.  but... I've not seen an argument that that's the case as yet.
18:39 ruoso mncharity, bar(grep {...}, map {...}, foo()),
18:39 ruoso that needs actual p6 semantics to work as expected
18:41 mncharity re well below 30%, the iblech's pugs javascript backend was, while glacial (all js was glacial 5 years ago), was passing >60% of the pugs test suite.  could have been much more but, as mentioned, pugs wasn't providing its backends with oo info.  so I don't believe the "well below 30%".  though perhaps were using different X% _of what).
18:42 mncharity phone
18:43 ruoso TDD is actually misleading when you dpnt have a very represesntative test suite
18:45 PerlJam ruoso: that statement doesn't make sense (to me)
18:46 mncharity gotta go.  re bar, yes, but  bar(3,4)  doesn't, and the compiler is free to emit the two differently.  re TDD, more tests++.
18:46 PerlJam TDD is about creating tests that test the features you want to implement before you implement them.  If you don't have a representative test suite then you aren't doing TDD
18:46 mncharity thanks all.  thanks pm.
18:47 pugs_svn r26059 | szabgab++ | fix link titles, add link to Padre::Plugin::Perl6
18:48 payload joined #perl6
19:04 ruoso PerlJam, the problem is when the tests only cover a small fraction of the features, and you write something targetting the incomplete test suite...
19:04 ruoso instead of targetting the actual features...
19:04 ruoso using the test suite as validation
19:08 pmurias ruoso: is it possible to create shared libraries which automatically import other shared libraries
19:08 pmurias ?
19:08 ruoso you mean shared libraries that are linked with other shared libraries?
19:08 pmurias yrd
19:08 pmurias * yes
19:09 ruoso yes it is
19:09 dKingston joined #perl6
19:10 pmurias ruoso: how can we do it? i'm working on re-mildew and hard coding all the shared libs is tedious
19:10 ruoso well, maybe you can have a libmildew in smop
19:10 ruoso that makes all the initializing
19:10 ruoso and links to all the libraries
19:11 ruoso but you just set the -lfoo as a linker parameter, as you would set when compiling a progra
19:12 moritz_ szabgab: actually I'd prefer it if you got your blog into planetsix, to reduce the number of links on perl6-projects.org
19:13 szabgab I asked webmaster@perl.org a week or two ago to add it there
19:14 szabgab maybe if you asked it would be more successful
19:14 moritz_ I'll try
19:14 szabgab thanks
19:15 szabgab this is the feed: http://szabgab.com/blog/Perl%206.rss
19:23 renormalist joined #perl6
19:26 eisgang joined #perl6
19:27 payload is there a way to give me a list of the attributes and methods of an object?
19:28 moritz_ pugs: "abc".^methods.perl.say
19:28 p6eval pugs: OUTPUT«[reverse,chop,index,quotemeta,join,chars,bytes,split,LIST,ITEM,bless]␤»
19:28 moritz_ payload: it is specified, but mostly not immplemented
19:30 eisgang left #perl6
19:32 smtms joined #perl6
19:36 payload pugs: class foo { method bar {} }; foo.new.^methods
19:36 p6eval pugs: OUTPUT«*** No such method in class Class: "&methods"␤    at /tmp/iYE0dqehVz line 1, column 30 - line 2, column 1␤»
19:44 [particle]2 joined #perl6
19:45 cj joined #perl6
19:46 justatheory joined #perl6
19:47 skids S09 Compact Structs
19:47 skids class A is int8 { has int8 $.b }; my @a of A; # How packed/serialized?
19:47 skids And do we have a name for the "attribute" these autoboxed types have?
19:47 skids That is, the value?
19:52 skids Oh I guess scratch the second question ( "self", duh!)
19:56 ejs joined #perl6
19:59 FurnaceBoy joined #perl6
20:03 PerlJam skids: A is as packed as any other class in perldom.  and $.b is as packed as an int8 can be.  (my guess)
20:06 skids I think the DWIM would be to pack int8 self int8 .b given int8 is an autobox.  Seems the logical thing, just S09 would need to spell that out.
20:12 skids pmichaud: Still using http://www.perlfoundation.org/perl6/index.cgi?perl6_tasks or is that over on rakudo/github now?
20:13 cspencer joined #perl6
20:16 pugs_svn r26060 | pmurias++ | [re-smop] added a dummy s1p
20:16 pugs_svn r26060 | pmurias++ | [re-mildew] started porting over mildew
20:16 pugs_svn r26060 | pmurias++ | '1;' compiles correctly fails during execution
20:34 amoc joined #perl6
20:38 jrockway_ joined #perl6
20:50 ilogger2 joined #perl6
20:50 pmurias ruoso: i'm removing the an object with a NULL RI is it's own RI hack
20:53 renormalist pugs: [1,2].map: { $_ + 1 }
20:53 p6eval pugs:  ( no output )
20:53 renormalist pugs: [1,2].map: { $_ + 1 }.say
20:53 p6eval pugs: OUTPUT«23␤»
20:53 renormalist pugs: ([1,2].map: { $_ + 1 }).say
20:53 p6eval pugs: OUTPUT«23␤»
20:56 ZuLuuuuuu left #perl6
21:04 sri_kraih_ joined #perl6
21:05 PZt joined #perl6
21:07 M_o_C joined #perl6
21:10 renormalist pugs: (["aaa","bbb"].map: { "(" ~ $_ ~ ")" })
21:10 p6eval pugs:  ( no output )
21:10 renormalist pugs: (["aaa","bbb"].map: { "(" ~ $_ ~ ")" }).say
21:10 p6eval pugs: OUTPUT«(aaa)(bbb)␤»
21:10 renormalist rakudo: (["aaa","bbb"].map: { "(" ~ $_ ~ ")" }).say
21:10 p6eval rakudo 1bf637: OUTPUT«(aaa)(bbb)␤»
21:14 renormalist rakudo: (["aaa","bbb"].map: { "(" ~ $_ ~ ")" }).perl
21:14 p6eval rakudo 1bf637:  ( no output )
21:14 renormalist rakudo: (["aaa","bbb"].map: { "(" ~ $_ ~ ")" }).perl.say
21:14 p6eval rakudo 1bf637: OUTPUT«["(aaa)", "(bbb)"]␤»
21:14 renormalist pugs: (["aaa","bbb"].map: { "(" ~ $_ ~ ")" }).perl.say
21:14 p6eval pugs: OUTPUT«("(aaa)", "(bbb)")␤»
21:14 moritz_ perl6: (["aaa","bbb"].map: { "(" ~ $_ ~ ")" }).perl.say
21:14 p6eval pugs: OUTPUT«("(aaa)", "(bbb)")␤»
21:14 p6eval ..rakudo 1bf637: OUTPUT«["(aaa)", "(bbb)"]␤»
21:14 p6eval ..elf 26060: OUTPUT«Use of uninitialized value in subroutine entry at ./elf_h line 197.␤Can't use string ("") as a subroutine ref while "strict refs" in use at ./elf_h line 197.␤ at ./elf_h line 5881␤»
21:17 cspencer moritz: so that Range patch i'd sent in...
21:17 cspencer it seems to build and test okay on OS X, which is what i'd created it on
21:17 cspencer though it doesn't work properly on Linux
21:18 cspencer which is presumably what you'd tested it on :)
21:18 cspencer sorry about that
21:19 moritz_ cspencer: actually I might have forgotten a realclean
21:19 cspencer hmmm
21:19 cspencer i'll rebuild on linux again, but i think you're right
21:20 moritz_ or maybe I remebered clean, but forgot to reconfigure ;-)
21:20 moritz_ anyway, I'll try again now
21:20 moritz_ git-am++
21:21 moritz_ it's so easy, 'git am -s $patch', I don't even have to fiddle with patch's -p option ;-)
21:21 pugs_svn r26061 | pmurias++ | [m0ld] () and not [()] should be used as the unit type
21:22 moritz_ cspencer: it gets past the offending test now
21:22 cspencer the realclean did it?
21:22 cspencer whew
21:22 moritz_ cspencer: if the smoke is clean, I'll push it
21:22 moritz_ clean + configure
21:23 moritz_ sorry for the noise :/
21:23 cspencer no problem, i thought i'd totally missed something late last night :)
21:24 cspencer hmmm...still failing on some for me
21:24 dKingston joined #perl6
21:25 cspencer though perhaps i just needed to use --gen-parrot to pull the latest
21:25 moritz_ 'make parrot' also does that
21:25 cspencer ah, ok
21:25 pugs_svn r26062 | pmurias++ | [re-smop] removed the NULL RI hack entirely
21:25 cspencer i wasn't aware of that make option
21:27 moritz_ cspencer: http://nopaste.snit.ch/16073 that's what I use on p6eval's server for rebuilding rakudo
21:27 moritz_ so far it was very reliable
21:28 cspencer great, thanks :)
21:28 moritz_ you won't need the update-revision thing
21:31 mncharity joined #perl6
21:33 mncharity TimToady: I just heard you were down the street yesterday.  Bummer.  If you are still around Bos and would like to chat, I'm logistically flexible.
21:34 mncharity announcement was even in my inbox.  sigh.
21:36 moritz_ rakudo's smoke sometimes leaves a temp file tempfile_filehandles_io.. in the main directory
21:36 moritz_ that's generated by t/spec/S16-filehandles/io.t
21:36 moritz_ but whenever I run that script separately it nicely cleans up after itself
21:36 moritz_ any idea what might go wrong?
21:37 sri_kraih joined #perl6
21:37 mncharity hmm, s/yesterday/day before $&/.   still, big sigh.
21:46 Cybera_away joined #perl6
21:54 jnthn Report for today: http://use.perl.org/~JonathanWorthington/journal/38741
21:59 cspencer moritz: did make spectest give you any problems after the make realclean?
22:00 moritz_ cspencer: no, works fiine
22:00 cspencer ok, whew :)
22:01 moritz_ cspencer: just reviewed another patch, pushing now
22:01 cspencer great, thanks!
22:02 Limbic_Region joined #perl6
22:02 ashizawa joined #perl6
22:03 pmichaud I was thinking that we should change Range to be a complete class definition, instead of 'is also'
22:04 dalek rakudo: 913094f | (Moritz Lenz)++ | docs/compiler_overview.pod:
22:04 dalek rakudo: [docs] extend compiler_overview.pod
22:04 dalek rakudo: Patch courtesy of awwaiid@thelackthereof.org, closes RT #64368
22:04 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/913094f0634b1630f40475cbd19653aac40f5bde
22:04 cspencer pmichaud: i'm working on moving the rest of the class over right now
22:05 moritz_ uhm, why didn't dalek report 2752e0e62e6eb7479c35e763f69dbffa934fbd3c
22:05 moritz_ anyway, cspencer++
22:16 pmichaud cspencer++  # moving rest of class to settings
22:16 pasteling "mncharity" at 98.216.110.149 pasted "Perl 6 project Elf - 2009 Q1 status report [DRAFT-0]" (131 lines, 6.4K) at http://sial.org/pbot/35829
22:16 pmichaud I'd start by getting rid of the 'is also', and the class creation in src/classes/Range.pir
22:17 mncharity Comments encouraged.
22:21 Tene ack, where is purl?
22:22 Tene TimToady: is $s different from $ſ ?
22:23 PerlJam Tene: it looks different to me.
22:23 mncharity I, personally, could be doing so much more with elf.  But I'm completely burned out on the whole 'no colleagues, collaborators, or clients' thing.  Way beyond not -Ofun.
22:23 mncharity ah well
22:25 PerlJam mncharity: Hmm. Why is rakudo and other implementations gaining community but elf languishes?
22:25 moritz_ I have an idea about that
22:25 moritz_ (currently on phone, will write more in 5min)
22:26 mncharity what implementation is gaining community?  rakudo seems about steady state ~5(?)ish active developers.  smop stable at 2.  STD at 1.  ?
22:27 mncharity /me looks forward to idea
22:27 jnthn mncharity: Rakudo didn't *start* with ~Nish active developers, however many we can count as avtive now.
22:28 moritz_ mncharity: first of all, very nice and accurate writeup
22:29 moritz_ (back from phone)
22:29 jnthn For my part, Perl 6 on Parrot is a lot older than the maybe 18 months I've been working on it.
22:29 mncharity jnthn: hmm.  pm, jnthn, moritz, ... I'm missing some, on rakudo side,  allison, chrom, I'm blanking on someone's name, others(?) rakudo side.  who is new?
22:29 moritz_ mncharity: I think what's really missing are public, not too technical blog posts and status reports, showing off achievements
22:29 mncharity s/rakudo side<period>/parrot side/
22:29 moritz_ mncharity: we just invited cspencer++ today ;-)
22:29 moritz_ (to rakudo, that is)
22:30 mncharity the cspencer attraction mechanism was public, not too technical blog posts?
22:31 moritz_ don't know exactly, but we got lots of contributions after the "builtins can now be written in Perl 6" post
22:31 jnthn A lot of the blog posts about Rakudo show code that couldn't be run before that with latest work can be.
22:32 Tene PerlJam: the issue is whether Perl 6 normalizes compatibility equivalence in addition to canonical equivalence.
22:32 * mncharity surfs parrot git, listens...
22:33 mncharity s//rakudo
22:34 PerlJam mncharity: I tend to count things like adding perl6 to padre and writing a newsletter about perl 6 tips and tricks as part of the rakudo-effect  :-)
22:34 jnthn It's for sure that time has been spent by people working on Rakudo, or writing code to run on Rakudo, to tell others about what is going on, and quite often.
22:36 jnthn Another thing is that I imagine people who want to get involved with developing Perl 6 will be doing so at least partly because they want a completed Perl 6 implementation.
22:37 skids joined #perl6
22:37 jnthn And I suspect that contributing to one that is further along and is being talked about more is kinda more motivating.
22:38 wayland76 I have a question
22:38 wayland76 Is there any reason that elf couldn't be used as the Perl6 prelude
22:38 wayland76 s/prelude/setting/
22:38 wayland76 which would kinda merge it with rakudo and/or smop?
22:38 moritz_ http://nopaste.snit.ch/16074 # commits to rakudo in the past days (by contributor, not commiter)
22:39 moritz_ wayland76: probably there's a mismatch between the subsets of Perl 6 used by elf and provided by rakudo and/or smop
22:40 wayland76 ok, that's a reason they can't be merged now.  But as the subsets increase, is there a reason it couldn't be done later?
22:40 PerlJam wayland76: you could, but why add another tool to the toolchain if the ones you already have are working just fine?
22:40 jnthn I think that a common prelude that implementations choose to diverge from a little in the places they need to is a good goal.
22:41 mncharity back,
22:41 wayland76 Ok.  Is there any reason we couldn't morph the elf project into that?
22:41 wayland76 (with mncharity's permission, of course)
22:42 wayland76 My thought is, people are probably currently picking the Perl6 implementation they think has the most chance of being useful, and helping with that
22:42 moritz_ wayland76: note that elf is much more than a prelude/setting... but that part might be merged, yes
22:42 wayland76 If elf and rakudo were working together, maybe there would be more contributors :)
22:43 mncharity wayland76: elf could scavange rakudo settings code, but it uses much more of the language, so there's not much gain beyond (the very non-trivial) having executable spec.   the non-primitive elf prelude, such as it is, could probably be dumped into rakudo as is.  and elf will eventually be able to run on rakudo, though
22:44 mncharity once rakudo is capable of running elf, it's not the current elf code you want to run, but elf next-generation X, using multimethods, named arguments, etc.
22:44 Khisanth joined #perl6
22:44 wayland76 I don't understand the setting well enough to understand what you ( mncharity ) wrote :)
22:45 PerlJam wayland76: and *that* is the problem with elf  ;)
22:45 mncharity rakudo, the last time I checked, was unusably slow to compile even the files it might have understood.  so an elf-sized project on rakudo would need more fragmentation and build infrastructure than elf has at present.  it's almost certainly a "wait for later" kind of thing.
22:45 payload joined #perl6
22:46 skids jnthn: Q:PIR{ $P0 = find_lex 'blah'  $S0 = $P0 } <-- $S0 is a copy.  Any way to get something suitable to pass to rw substr_r?
22:46 mncharity PerlJam: ?
22:47 moritz_ skids: I don't think a String ($S0) can ever be an rw
22:47 wayland76 mncharity: He's saying that my lack of understanding is preventing there being more contributors
22:47 PerlJam mncharity: I think elf isn't "more popular" because there aren't enough people who understand it or the direction it's heading.
22:47 wayland76 Let me ask a different question -- what else does Rakudo need in the way of features to be able to run elf?
22:47 PerlJam wayland76: yep, it's all your fault.
22:48 skids moritz_: proto for rw substr is (inout STR, in INT, in INT, in STR) so I would assume...
22:48 pugs_svn r26063 | moritz++ | [S32/Str] spec Str.trim()
22:49 moritz_ skids: yes, but a variable containing a string is a PMC on parrot level
22:49 wayland76 (I ask because I think elf-on-rakudo is a worthy goal :) )
22:49 mncharity actually, I don't think there's any elf prelude that isn't either primitive, or likely already existant as PIR.  so no scavanging from elf for rakudo's setting. ;)
22:49 moritz_ skids: (at least that's my limited understanding)
22:49 PerlJam mncharity: your "unusably slow" comment makes me think we should be publishing stats like "compiles N lines per second" for rakudo  :)
22:49 payload1 joined #perl6
22:51 mncharity re stats, could be.  There's always http://perlcabal.org/svn/pugs/view/misc/elf/elf_h_src/IRx1_Nodes.pm . ;)
22:51 wayland76 What does IR stand for?
22:52 moritz_ intermediate representation
22:52 mncharity hmm, though I don't know if it's spec to refer to a class X as package X.
22:52 mncharity and then there's the whole 'extend' cruftiness.
22:52 skids moritz_: /src/builtins/any-str.pir line 93, assuming my file is fresh.
22:53 skids Problem is in inline PIR you can't I think get what the param types in that PIR sub give you -- an actual reference to the string rather than a copy.
22:53 moritz_ that's in .sub ':d' :method
22:54 mncharity rakudo: class A { method bark { say "bow"; self} }; class A { method ouch { say "ow"; } };  A.new.bark.ouch;
22:54 p6eval rakudo 913094: OUTPUT«Re-declaration of type A at line 1, near ";  A.new.b"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
22:55 mncharity wayland76: but the main point is, if rakudo would run elf, elf wouldn't be interesting.  Some other body of code implimenting a p6 compiler would be, but it wouldn't have any more than a spiritual connection with elf.
22:55 mncharity s/would/could/
22:55 mncharity sigh
22:55 skids moritz_: haha that was the line number off my grep :-) hold on.
22:56 mncharity wayland76: but the main point is, if rakudo could run elf, elf wouldn't be interesting.  Some other body of code implimenting a p6 compiler would be, but it wouldn't have any more than a spiritual connection with elf.
22:56 * skids slaps self
22:57 skids moritz: line 818 "substr result, pos, substringlen, replacement"
22:57 ruoso mncharity, I'd be happy enough if we manage to get an standard API in things like ClassHOW, RoleHOW
22:57 wayland76 mncharity: Ok.  I have a slightly better grip on elf now, and see why that's so.
22:57 ruoso and maybe even a REPR API
22:57 skids ".param string replacement"
22:57 mncharity elf exists because rakudo can not as yet run anything like elf.  or couldn't.  as long as rakudo/parrot doesn't die, that's always been something that would change at some point, modulo performance.
22:58 skids erm, I mean ".local string self"
22:59 skids erm, I should just stop trying to type today ".local string result"
23:01 moritz_ skids: sorry, I can't follow you, but that's probably because it's 1am here and I need sleep... if nobody can help you here, maybe send a mail to p6c
23:01 mncharity once rakudo can run something like elf, then one writes in it the p6 equivalent of rubinius or pypy, and backends for CL, javascript, etc, etc (again, as with ruby, and python, and lua, and etc.
23:01 skids moritz_: I'm not making terribly coherent sense anyway :-)
23:01 skids And it isn't even 1am here :-)
23:02 moritz_ off to sleep &
23:02 justatheory joined #perl6
23:03 mncharity but rakudo has improved a lot.  setting http://github.com/rakudo/rakudo/tree/913094f0634b1630f40475cbd19653aac40f5bde/src/setting is notable.  it's getting up towards pugs's http://perlcabal.org/svn/pugs/view/src/perl6/Prelude.pm .
23:03 bacek_ joined #perl6
23:04 mncharity and its appreciated. :)   no more puzzled "why would you want to write anything in p6, rather than pir?"
23:04 bacek joined #perl6
23:05 wayland76 :)
23:06 mncharity g'night moritz_
23:07 wayland76 Anyway, I should probably have some breakfast :)
23:07 wayland76 goodnight moritz_
23:07 mncharity thanks for the questions
23:11 mncharity moritz_: re 'public, not too technical blog posts', the thing is, what elf really needs is one or more good compiler writers.  the lowest skill level that would help elf is probably prelude, s//setting/, documentation and implementation.  so it's not clear to me non-technical posts would help with that.
23:12 mncharity hmm, that's something which should go in the note.
23:15 Tene what's the motivation for someone to work on elf instead of rakudo?
23:15 mncharity just now pondering that
23:16 mncharity more the underlying 'what elf provides vs rakudo', than the human motivation issue
23:17 Tene sound like you were saying that you needed human motivation.
23:17 mncharity rakudo isn't currently set up for alternate backends.  so what parrot doesn't provide, rakudo can't have.
23:18 mncharity re sound like..., true, but it helps to separate the 'why would one logically want to' from the 'wanting to'.  politicians and salesmen reorder those two, but for engineers... ;)
23:20 mncharity ... can't have.  so, for instance, the lexical stuff from the Fall which pm finally dealt with (me gropes over fuzzy memory), or the argument passing now.  there have repeatedly been order-year+ size limitations on what rakudo could do, created by parrot limitations.
23:22 mncharity in contrast, surface capabilities at least are easier to deal with in elf.  that's not going to get you smop-like deep oo substructure compliance, but is fine for "I need named arguments and I need them fast".  Well, only Moose fast on elfp5.  elfcl could do true fast.
23:24 jnthn You've picked two issues where Parrot didn't help Rakudo and ignored the tens where it provided what was needed.
23:24 mncharity I don't know how well rakudo is set up to do IR analysis.  My impression is it's mostly direct-to-pir, rather than groveling over the non-local meaning of p6 code.  so that might be easier in elf.
23:24 jnthn Or provided something that was good enough for the time being.
23:25 Tene IR analysis?
23:25 jnthn (example: we just used Parrot's own multi-dispatch support to get us running the test harness, so we didn't have to plug in our own until later, and so forth)
23:25 mncharity jnthn, the question I'm pondering is 'in light of rakudo's current capabilities, what role if any is there for elf'.  being able to avoid the constraints of parrot is one such.  how much parrot helps, doesn't quite bare on the particular question.
23:26 jnthn You talk as if Parrot is this thing the Rakudo developers have no influence over.
23:27 jnthn Sure, *everyone* working on Rakudo knows Parrot has its weaknesses.
23:28 jnthn However, a bunch of them that used to exist, no longer do.
23:29 mncharity hmm.  perhaps it's a "what's the goal" divergence again.  my understanding is there have been things that have been blockers for non-small scale use of rakudo, due to parrot issues, which have persisted for year-sized timescales, despite repeated discussion by rakudo developers.  that suggests
23:30 Tene mncharity: cut off after (that suggests...)
23:30 mncharity at a minimum that fixing it was harder than the discussion (which with elf might actually not be the case), even if fixing them rapidly was not seen as an issue since getting to non-small scale use isn't where rakudo's focus is.
23:31 mncharity no?
23:32 jnthn Fixing bugs usually is harder than talking about them. ;-)
23:32 jnthn In reality, some are a bigger deal than others.
23:33 jnthn The lexicals stuff got to the point where it really was blocking people from doing much with Rakudo, at which point a bunch of time was put into it and at that point the time scale was not years at all.
23:34 jnthn OTOH, Parrot hasn't provided the ability to pass positional parameters as named directly, though I don't really see that as something hugely getting in the way of people wanting to use Rakudo to write programs.
23:34 mncharity re "Fixing bugs usually is harder than talking about them.", especially when you're working in C rather than p5, PIR rather than lisp. ;)
23:34 jnthn *sigh*
23:35 jnthn OK, I give up.
23:35 mncharity ?
23:35 jnthn Sorry, but it feels like there's little I can say that you're going to agree with.
23:36 mncharity Tene: re IR analysis?,
23:36 mncharity hmm...
23:36 * mncharity goes back to look at what was said but not agreed with...
23:36 Tene mncharity: I think jnthn is mostly saying "What you're asking about doesn't seem correct from my experience working with rakudo"
23:37 jnthn Rakudo by now implements a bunch of stuff stably, and with tests to make sure it keeps working, and it does a bunch of stuff that no other implementation I'm aware of is capable too.
23:38 mncharity agreed.
23:38 mncharity :)
23:38 jnthn :-)
23:39 jnthn tbh, I think our major difference is that I see Parrot as something that makes a bunch of stuff possible, whereas it feels your viewpoint is that it gets in the way more than it helps.
23:40 skids If anyone cares, I don't mind writing PIR at all, I don't see that as the blocker -- lots of people are trying their hand.  But understanding Parrot is another matter -- not much in the way of "this is how we handle stacks" just pointers to generic articles about how great continuations are.
23:41 skids My blocker for digging in is time to understand it by reading the whole source and wrapping my head around it, which really should not be necessary.
23:41 mncharity I suggest the following, "there exists a set of features X, which rakudo doesn't have because parrot currently makes it difficult" and "some subset of them have the property that they would be straightforward to implement in elf".
23:41 mncharity that goes to the problem which existed with pugs, of
23:42 jnthn skids: Oh, how I wish just reading the source gave understanding. ;-)
23:42 skids hehe :-)
23:43 skids And, a lot of the comments that should help you understand it are stale or just "TODO: comment this"
23:43 mncharity ...of pugsbugs and things not yet implemented creating an impenetrable maze preventing non-small scale usage.
23:44 Tene mncharity: rakudo development is tied to parrot development.  Parrot isn't this mysterious impenetrable black box...
23:45 jnthn I imagine though that we can swap around elf and rakudo there, though.
23:45 skids Tene: but it is at least viscous and brown.
23:45 jnthn For a different set of features, obviously.
23:45 mncharity my observation is the smaller and more limited but more malleable elf tends to have the property of being able to bulldoze holes through that maze when one needs too.  but again, that capability isn't something that's seemed to be a priority for rakudo.  but in determining whether
23:45 jnthn skids: Parts of Parrot could do with an order of magnitude more comments, for sure...
23:46 mncharity elf still has a role, since that was a key focus of elf, it is of significance.
23:47 jnthn It seems your premise with elf - correct me if I'm wrong - is that if some set of features are known to be implemented and stable, you can write software using them and trust that it won't break.
23:47 mncharity yes and no,
23:48 jnthn However, you could probably pick such a set of features from Rakudo that are well tested and have been stable for a while, restrict yourself to those, and get the same outcome, no?
23:49 mncharity no, let's see...
23:52 mncharity the premise of elf is (1) we are only going to get to Xmas with large scale p6 development.  both setting, and compiler core.  (2) there is no existing implementation in which one can do large scale p6 development.  (3) it is possible to create an implementation on which one can do large scale development if you make that your design focus.
23:52 mncharity that means,
23:56 mncharity both the speed for p6 development to be at least plausible, ideally pleasant, day in and day out.  sufficient p6 oo to be not stuck in ruby/python land (mostly multi dispatch).  and sufficient transparency and malleability that one doesn't "get stuck" or spend one's life trying to work around bugs.
23:59 jnthn I don't think the compiler has to be written entirely in Perl 6, though Rakudo already partly is. Also, with the Perl 6 setting we increasingly have that in Perl 6 too.
23:59 jnthn I'd like to hear "large scale" defined though.

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

Perl 6 | Reference Documentation | Rakudo