Camelia, the Perl 6 bug

IRC log for #parrot, 2008-05-16

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:05 dalek r27527 | chromatic++ | trunk:
00:05 dalek : [PMC] Plugged a few memory leaks in NameSpace PMC.
00:05 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27527
00:08 TonyC joined #parrot
00:14 AndyA joined #parrot
00:20 dalek r27528 | chromatic++ | trunk:
00:20 dalek : [src] Plugged a memory leak in Parrot_cx_handle_tasks.
00:20 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27528
00:42 wknight8111 joined #parrot
01:23 IllvilJa joined #parrot
01:31 davidfetter joined #parrot
01:38 dalek r27529 | chromatic++ | trunk:
01:38 dalek : [src] Plugged several more memory leaks.  All tests pass for me; we'll see what
01:38 dalek : happens.
01:38 dalek : (A big leak remains in the JIT when passing strings to C functions.)
01:38 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27529
02:10 Theory joined #parrot
02:12 mire_ joined #parrot
02:25 grim_fandango joined #parrot
02:26 Tene chromatic++
02:50 Ademan joined #parrot
02:51 Ademan joined #parrot
03:00 pnutr joined #parrot
03:19 zostay joined #parrot
03:27 cjfields joined #parrot
03:33 Tene pmichaud: ping?
03:46 Theory joined #parrot
03:48 Zaba_ joined #parrot
04:04 Theory joined #parrot
04:23 Psyche^ joined #parrot
04:29 Tene I really need to automate something to post a list of currently-failing spectests online somewhere.
04:34 Zaba joined #parrot
04:54 dalek r27530 | tene++ | trunk:
04:54 dalek : [rakudo]
04:54 dalek : * Rework topic handling.
04:54 dalek :   This looks more correct, and doesn't fail any more tests, but I'm not very
04:54 dalek :   confident about it.
04:54 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27530
05:01 tewk joined #parrot
05:01 DietCoke joined #parrot
05:08 Zaba joined #parrot
05:36 Tene Specifically, the spec says that $_, when used in a bare block, should be treated as a formal parameter.
05:36 Tene When used in a bar eblock that doesn't use placeholders, that is.
05:36 Tene It doesn't say anything about what should happen when the block does use placeholders, or in other sorts of blocks.
06:10 cotto_work joined #parrot
06:10 iblechbot joined #parrot
06:11 uniejo joined #parrot
06:12 Theory joined #parrot
06:16 Tene Mmm, builtins are low-hanging fruit.
06:22 dalek r27531 | tene++ | trunk:
06:22 dalek : [rakudo]
06:22 dalek : * Incomplete List::uniq builtin.  Doesn't handle custom tests.
06:22 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27531
06:30 dalek r27532 | chromatic++ | pdd25cx:
06:30 dalek : [src] Changed name of 'run_handler' to 'Parrot_ex_throw_from_op'.
06:30 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27532
06:31 dalek chromatic@wgz.org | Concurrency Tasks:
06:31 dalek link: http://www.perlfoundation.org/pa​rrot/index.cgi?concurrency_tasks
06:31 shorten dalek's url is at http://xrl.us/bjqpy
06:36 dalek r27533 | chromatic++ | trunk:
06:36 dalek : [PMC] Fixed a stupid crash-inducing typo I introduced in r27526.
06:36 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27533
06:46 dalek r27534 | chromatic++ | trunk:
06:46 dalek : [Rakudo] Fixed a couple of typos.
06:46 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27534
07:30 dalek r27535 | tene++ | trunk:
07:30 dalek : [rakudo]
07:30 dalek : * Add a basic isa_ok to Test.pm
07:30 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27535
07:41 Zaba_ joined #parrot
07:52 mj41 Static vs. Dynamic Languages, Adam Turoff, 14.5.2008, notes-on-haskell.blogspot.co - http://notes-on-haskell.blogspot.com/20​08/05/static-vs-dynamic-languages.html
07:52 shorten mj41's url is at http://xrl.us/bkmso
08:17 dalek allison@perl.org | Concurrency Tasks:
08:17 dalek link: http://www.perlfoundation.org/pa​rrot/index.cgi?concurrency_tasks
08:17 shorten dalek's url is at http://xrl.us/bjqpy
08:25 donaldh joined #parrot
08:26 iblechbot joined #parrot
08:53 ruoso joined #parrot
09:11 jan joined #parrot
09:26 mire_ joined #parrot
09:50 tetragon joined #parrot
09:57 cognominal joined #parrot
10:17 dalek r27536 | jonathan++ | trunk:
10:17 dalek : [rakudo] Factor out a large chunk of method scope_declarator. Patch courtesy of moritz++.
10:17 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27536
10:18 moritz my first code contribution to rakudo ;-)
10:18 jonathan :-)
10:19 moritz <irony>I have to blog about it!</irony>
10:41 dalek r27537 | jonathan++ | trunk:
10:41 dalek : [rakudo] Implement declaration and calling of private methods.
10:41 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27537
10:45 moritz jonathan: did you test that with t/spec/S12-methods/private_methods.t ?
10:46 moritz jonathan: it dies with "Could not invoke non-existent sub private", although there is no sub call at all (only method calls)
10:46 moritz or am I being too impatient? ;-)
10:47 jonathan moritz: Hmm, I'd have expected that test to pass now...
10:47 moritz jonathan: it doesn't for me
10:48 jonathan Oh!
10:49 jonathan my method !private...
10:49 jonathan I'd got my method private implemented, but not with the ! there.
10:50 moritz there's just 'my method private' in the test
10:50 jonathan In http://svn.pugscode.org/pugs/t/sp​ec/S12-methods/private_methods.t ?
10:50 shorten jonathan's url is at http://xrl.us/bkmxg
10:50 jonathan I see a !private there.
10:51 moritz jonathan: my fault, I scrolled down to the second class
10:51 jonathan OK. Removing the ! makes it work...
10:52 jonathan curious though, that as the comment in the test file says, the ! is only mentioned in the roles section.
10:52 moritz jonathan: the difference is that 'my method !foo' can only be called as self!foo, whereas 'my method foo' also can be called as self.foo
10:52 moritz indeed
10:52 jonathan moritz: But only inside the class?
10:52 moritz jonathan: as far as I understand, yes
10:52 jonathan Otherwise it's not very private... :-)
10:52 * moritz summons TimToady
10:53 * jonathan fears TimToady may be sleeping at this time
10:53 moritz wait, I think the test case is flawed
10:53 jonathan From S12
10:53 jonathan Private methods are declared using my:
10:53 jonathan my method think (Brain $self: $thought)
10:53 jonathan (Such methods are completely invisible to ordinary method calls, and are in fact called with a different syntax that uses ! in place of the . character. See below.)
10:54 moritz so the 'my method !foo' syntax is only applicable for roles?
10:55 moritz I'll clean up that test
10:56 moritz btw implementing $! in rakudo would be a great help for the tests
10:56 moritz so that one can write a lives_ok sub for Test.pm
10:56 jonathan moritz: S12 isn't completely clear either way.
10:56 jonathan I don't think it is, anyways.
10:57 moritz jonathan: ok, I'll write to p6l to ask for a clarification
10:57 jonathan Thanks, that'd be great.
10:59 dalek allison@perl.org | Bylaws:
10:59 dalek link: http://www.perlfoundation.o​rg/parrot/index.cgi?bylaws
10:59 dalek r27538 | fperrad++ | trunk:
10:59 dalek : [Lua]
10:59 dalek : - translates more opcodes
10:59 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27538
11:00 jonathan moritz: On $!, I was glancing over the specs for that.
11:00 jonathan Last week.
11:01 jonathan Pondering how to implement it. Will give it another read today.
11:06 mj41 TapTinder is back ... http://tt.perl6.cz/
11:19 moritz jonathan: ok, I asked the list (and also lost myself in philosphy ;)
11:21 jonathan moritz: Thanks. Hopefully @Larry replies with sane answers. :-)
11:22 cognominal joined #parrot
11:38 masak joined #parrot
11:46 iblechbot joined #parrot
11:53 bacek joined #parrot
11:54 bacek hi there
11:54 jonathan bacek: hi
11:54 purl what's up, jonathan.
11:55 bacek I have a stupid question about 'morph' :vtable method.
11:55 jonathan It's probably not stupid. :-)
11:55 jonathan Go ahead.
11:56 bacek I try to implement morphing from List to Per6Hash, but 'morph' just doesn't called on 'copy $P0, $P1'.
11:57 bacek I've added stub '.sub "morph" :vtable" into src/classes/Hash.pir with only 'say "morphing"'...
11:58 bacek any ideas what I doing wrong?
12:00 dalek r27539 | jonathan++ | trunk:
12:00 dalek : [rakudo] Add clone v-table method for protoobjects, which resolves the bug that showed up after we switched to using the copy opcode for :pasttype('copy').
12:00 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27539
12:01 bacek http://pastebin.org/36351
12:01 jonathan bacek: I'd have expected what you're doing to work...
12:01 jonathan $P0 is the PMC that you implemeted morph on, yes?
12:02 bacek jonathan: I hope so
12:03 jonathan bacek: OK, looks to me like there's two issues at least.
12:03 jonathan First, it appears that the morph v-table method doesn't support overriding.
12:04 jonathan But deeper than that, looking at the copy opcode, we already call the destory vtable method before calling morph
12:05 jonathan Meaning that the association with the class will have disappeared by morph-time. Which means we can't locate the morph method, even if we did support overriding it.
12:05 jonathan So, hmm. :-S
12:05 bacek jonathan: its in set.ops?
12:05 jonathan Yes.
12:05 jonathan search for inline op copy
12:05 pmichaud is the goal to be able to create a Hash from a List?
12:06 bacek jonathan: yes. I'm rebuilding parrot with this 2 lines commented out
12:07 bacek pmichaud: Probably. List.pi defines 'infix:,' op and builds list from (a=>b, c=d..) pairs.
12:07 pmichaud ah.  Converting that into a hash is the job of the 'hash' function.
12:08 bacek pmichaud: there is now 'hash' function at the moment.
12:09 bacek pmichaud: is it 'right way' to build Perl6Hash objects?
12:09 pmichaud actually, there shouldn't even be a Perl6Hash :-)
12:09 pmichaud I'm working on that at the moment.
12:09 jonathan pmichaud: HLL? :-)
12:09 pmichaud Protoobjects, actually.
12:09 jonathan Ah, OK.
12:09 pmichaud afaict, there's no need to create a separate Perl6Hash class -- just use Hash directly.
12:09 * bacek is parrot-newbie
12:10 jonathan pmichaud: Not unless you can someohow make that derrive from Any.
12:10 bacek pmichaud: It was a svn commit comment some time ago: "Use Hash directly". But later it was reverted to Perl6Hash
12:10 pmichaud jonathan: ah.  good point.
12:11 jonathan pmichaud: Yeah. That's why I've not used any PMCs directly now.
12:11 jonathan Everything needs to be an Object and (expect from Junction) an Any.
12:12 pmichaud okay.
12:12 pmichaud There's a patch that proposes 'hash' -- just a sec.
12:12 bacek I've rebuilt parrot with lines 497-498 commented out. Doesn't help.
12:12 pmichaud we are *really* going to need a container type soon
12:12 bacek pmichaud: ok. Thanks.
12:12 pmichaud I think I may do that after finishing the protoobject re-implementation.  (which, by the way, is looking really good)
12:12 jonathan pmichaud: Scalar type?
12:13 pmichaud yes, but I don't think I'll call it 'Scalar'
12:13 pmichaud it'll really be for all variables
12:13 jonathan Including arrays, hashes and so on?
12:13 pmichaud (if I'm understanding the types correctly)
12:14 pmichaud essentially   $x, @a, %h, etc are just containers.  @a and %h differ from $x in terms of the properties set on them and what they will accept
12:14 bacek BTW, where I can read more about protoobjects? (Google little bit stupid and offer replace it with 'photoobjects')
12:14 pmichaud (and, of course, they syntactically impose a different context)
12:15 pmichaud bacek:  synopsis 12
12:15 bacek pmichaud: 10x
12:16 jonathan pmichaud: OK, but List, Hash and so on are already containers.
12:16 pmichaud there's a patch for a 'hash' function in RT#53016.  (It still needs a bit of work.)
12:17 pmichaud jonathan: yes, but there's a difference between List and Array
12:17 pmichaud List is what we currently think of as ResizablePMCArray
12:17 pmichaud Array is a container that is allowed to reference List-like objects
12:17 moritz shouldn't a List (in Perl 6) be read-only?
12:18 moritz for example (2, 3, 4).push(5) should be forbidden
12:18 pmichaud yes
12:19 jonathan Would my @a = (1,2,3) create an Array or a List?
12:19 pmichaud at the language level, Lists appear immutable.  Underneath the hood there are various implementation strategies, as long as it appears that way.
12:19 pmichaud my @a is an Array that references a List (1, 2, 3)
12:19 pmichaud my $x = 3;     my $x is a Scalar that references an Int (3)
12:21 jonathan OK, so my @a = (1,2,3); @a.push(4);
12:21 jonathan @a now references the list, and then another element 4?
12:21 pmichaud conceptually:  @a.push(4)  creates a new list that is  ((1, 2, 3), 4)  and stores that in @a
12:22 jonathan OK, but when you iterate over @a, it's flattened?
12:22 pmichaud (in reality that's not what happens underneath, but that's how it appears conceptually)
12:22 bacek yet another stupid question: how 'hash' function will be called?
12:22 pmichaud bacek: it will depend on context
12:22 pmichaud ((1, 2, 3), 4) is already "flat"
12:22 moritz I think that the ((1, 2, 3), 4) behaviour isn't even visible in slice context
12:22 pmichaud as opposed to ([1, 2, 3], 4)  which isn't "flat"  :-)
12:23 bacek pmichaud: hmm... What about '%h = (a=>b, c=>d)'?
12:24 pmichaud bacek: because we're assigning to a hash type (%h), whatever implements assignment will coerce the list into a mapping
12:24 pmichaud er, Mapping
12:25 pmichaud (Mapping being the immutable form of a set of pairs with no duplicate keys)
12:26 moritz so Mapping <=> Hash is the same relation as List <=> Array?
12:26 pmichaud other way around
12:26 purl other way around is not better
12:26 pmichaud Hash (mutable) is to Mapping (immutable) as Array (mutable) is to List (immutable)
12:27 pmichaud jonathan: @a.push(4)  conceptually means "  create a new List from @a that has a 4 tacked on the end, and make @a reference that new List "
12:27 moritz did I say something different? ;-)
12:28 pmichaud oh, you did
12:28 pmichaud I read one of them backwards.
12:28 jonathan pmichaud: OK, but in the implementation we can optimize that some.
12:28 pmichaud jonathan: yes, exactly.
12:29 pmichaud But what I finally figured out yesterday is that "@a" is a container just like "$x" -- the difference being its properties
12:29 pmichaud this also means we move %properties out of the immutables and into variables (mutables) like they should be.  :-)
12:29 moritz pmichaud: so what's the difference between a @a and a $s container?
12:30 pmichaud @a has properties on it that say "I hold a List object"
12:30 moritz a type constraint, ok
12:31 jonathan pmichaud: I think the @ sigil just promises that whatever it holds does the Positional role.
12:31 jonathan Yes, a type constraint.
12:31 pmichaud jonathan: yes, that's better.
12:32 jonathan Grrr. I'm tempted to just not use the Capture PMC and write it directly in PIR.
12:32 pmichaud hmmm?
12:32 jonathan Just looking at getting captures vaguely working.
12:33 pmichaud personally, I think we may have to make some modifications to the parrot calling conventions for that
12:33 jonathan Only really want 'em for implementing .* and .+ method calls...
12:33 pmichaud either that or we'll need to layer a bunch of stuff in/out of perl 6 subs
12:33 jonathan Yeah, I saw that thread.
12:34 pmichaud ...but why should Capture PMC versus PIR make a difference?
12:34 jonathan However, what did occur to me too was that we need to think about postcircumfix:[] and postcircumfix{} more generally.
12:34 jonathan pmichaud: Because the Capture PMC doesn't have the right semantics, I don't think.
12:34 jonathan It is mutable, for one.
12:35 pmichaud well, at the implementation level all of the types can be "mutable".  It's more how they're used
12:35 jonathan Sure.
12:35 pmichaud I know that the Capture PMC doesn't yet have a scalar component -- I was going to add that.
12:35 pmichaud however, the Capture_PIR object does have a scalar component.
12:36 pmichaud that is another thing on my task list -- to convert the various tools over to the Capture PMC instead of Capture_PIR
12:36 pmichaud (hoping to get some speed improvements)
12:37 pmichaud (postcircumfix:[] versus postcircumfix:{})    PCT is adding a keyed_int PAST::Var scope
12:37 jonathan OK.
12:37 pmichaud that was really the underlying reason I implemented the register coercions this week.
12:38 pmichaud so that I can easily (and smartly) coerce the X in  $P0[X]  to be an int.
12:38 jonathan But more generally, what if people define their own postcircumfix:[] methods? I guess maybe we can just make set_pmc_keyed_int in Object just delegate to the multi-method, though...
12:39 pmichaud either that, or we specially recognize postcircumfix:[] and cause it to generate a :vtable('...')  flag.
12:39 pmichaud I was kinda aiming for the latter.
12:39 jonathan Oh, that would work nicely too.
12:40 pmichaud when it comes to generating custom operators, I think we'll do it with special cases
12:40 jonathan Sure.
12:40 jonathan Well, that's a little way off yet.
12:40 pmichaud that's why operator overloading is near the bottom of the roadmap :-)
12:46 * bacek still don't understand how 'hash' function should be called...
12:47 pmichaud bacek: you mean in   %h = ( a=>1, b=>2 )   ?
12:47 bacek pmichaud: exactly...
12:47 purl Well, plus or minus 2%.
12:47 pmichaud bacek: well, the longer answer is that your question involves some Deep Magic that we haven't implemented yet
12:48 bacek pmichaud: yeek.
12:48 pmichaud but essentially it will be called "automatically" whenever %h (a Hash) recognizes that it's being assigned to.
12:49 pmichaud i.e., when the %h container gets an assignment, it will automatically call 'hash' on the value to convert it into a Mapping
12:49 bacek pmichaud: heh. Where is the source of Deep Magick so I can at least look at it? :)
12:50 pmichaud in the short term we'll have to tell Rakudo programmers to explicitly write    %h = hash( a=>1, b=> 2);
12:50 pmichaud (source of Deep Magick   --->   "we haven't implemented yet" )
12:51 bacek pmichaud: But looks like it already implemented for lists.
12:51 pmichaud or if you just want to know how it works, the answer is Synopsis 2, but I didn't understand it myself yesterday.
12:51 pmichaud er, "until yesterday"
12:52 pmichaud (implemented for lists)  -- actually, what we have now is that Rakudo just fakes lists tolerably well.
12:52 pmichaud but even there we can find holes :-)
12:55 pmichaud I really wish I had an easy answer today.  My best guess is that we'll have an easy answer in a week or two.
12:55 pmichaud (or, at least, easier)
12:58 pmichaud alas, I have to do about an hour's worth of $otherjob this morning
12:58 pmichaud I'll keep the window open but may be slow to respond
12:58 pmichaud jonathan: do my musings on Scalar make any sort of sense?
13:00 bacek pmichaud: have a good day. It's 11pm here :)
13:01 mj41_ joined #parrot
13:02 pmichaud bacek: have a good night, then.  Sorry I didn't have any more straightforward answers yet.
13:02 bacek BTW, I have another stupid question about parrot/rakudo.
13:02 pmichaud (stupid questions -- no such thing)
13:02 bacek token fatarrow {
13:02 bacek <key=ident> \h* '=>' <val=EXPR: 'i='>        # EXPR(%item_assignment)
13:02 bacek {*}
13:02 bacek }
13:04 bacek And it rejects statements like "'a' => 'b'".
13:04 bacek Because "'a'" is not "ident"
13:05 pmichaud right
13:06 bacek In STD.pm "ident" declared as "alpha*", so (as I think) pugs should rejects such statements as well. But it accept them.
13:06 pmichaud 'a' => 'b'  is handled by   infix:« => »
13:06 pmichaud not by <fatarrow>
13:07 pmichaud (in fact, STD.pm didn't have infix:=>  until this past Monday :-)
13:08 jonathan pmichaud: Are you thinking, create a Scalar that we can use as the container, which in turn references the PMC representing the value?
13:08 pmichaud jonathan: yes.
13:08 bacek pmichaud: there is no 'infix:=> in grammar...
13:08 pmichaud token infix:sym« => » ( --> Item_assignment)
13:08 pmichaud line 3265
13:08 jonathan OK, but not do this for list and array? Because they already are containers?
13:08 pmichaud jonathan: no
13:09 pmichaud my precisely, my thoughts
13:09 pmichaud 1.  create a Mutable PMC  that does what we think of for "Scalar"
13:09 jonathan It seems that we may just have to do this to get the correct semantics in a neat way.
13:09 pmichaud 2. "Scalar", "Mutable", "Hash" are subclasses of Mutable
13:10 pmichaud sorry
13:10 pmichaud can't type
13:10 purl that would be tkil.
13:10 pmichaud 2.  "Scalar", "Array", "Hash" are subclasses of Mutable
13:10 bacek pmichaud: hmm... In STD.pm?
13:11 pmichaud Array and Hash differ from Scalar in terms of how they implement the <assign> opcode -- primarily they enforce a constructor on the value  (either 'list' or 'hash')
13:11 pmichaud all of the mutables have a %properties attribute that limits how we can assign to them
13:11 pmichaud (e.g., type checking)
13:12 pmichaud variables then are instances of Scalar, Array, Hash, etc.
13:12 pmichaud values, on the other hand, tend to be the immutables
13:12 pmichaud values can be containers, yes, but they aren't variables
13:12 pmichaud bacek:  yes, line 3265 in STD.pm
13:13 jonathan I think actually having a distinct container type, is probably the only sane way we can expect to support things like tying, further down the road.
13:13 pmichaud so, a List is a container, yes, but @a (the variable) is not itself a List.  It's an Array that references a list.
13:13 pmichaud or, think of it this way if it helps:
13:14 pmichaud my $x = [ 1, 2, 3 ];
13:14 pmichaud my @a = (1, 2, 3);
13:14 pmichaud in both cases we have a List with elements 1, 2, and 3
13:14 pmichaud in both cases we have a variable that references a List
13:14 bacek pmichaud: 10x... Got it... There is 800+ lines diff between my and current version of STD.pm...
13:15 pmichaud so $x and @a are both implemented as Mutable -- i.e., they reference a value of some sort
13:15 pmichaud both $x and @a can reference List objects
13:15 pmichaud if we do .WHAT on $x or @a, then we get back the protoobject for what they reference, not the protoobject of the variable itself
13:16 jonathan Right. It just delegates everything to its value, aside from assign?
13:16 pmichaud pretty much.  There may be a couple of other things that aren't delegated or have to be otherwise intercepted
13:17 moritz and it handles binding, probably
13:17 moritz or does binding replace the container?
13:17 pmichaud I'm thinking neither (haven't thought deeply about binding yet)
13:17 jonathan moritz: I think binding would replace the container.
13:17 pmichaud to me, binding is just tying a symbol to a mutable
13:18 jonathan Right, which means changing the entry in the lexpad to point to another mutable (container)
13:18 pmichaud so  my @a;  my $x := @a;   means that $x and @a are the same mutable
13:19 jonathan OK, I think I agree with the Mutable idea.
13:20 particle tene: i'm still in scrollbackland, but i noticed you added isa_ok to Test.pm. you should also add it to the list of tests that fudge understands (inside fudge) if it's not already there
13:20 pmichaud well, that's the path I'm going to take for now and see how far I get.  I'm guessing I can take some implementation cues from the delegate pmc
13:20 pmichaud particle: how long are we going to let the list of fudge-understandable-tests get?
13:20 particle moritz: yes, please do blog about your rakudo patches!
13:21 pmichaud I'm thinking that fudge gives us a nice "spec" for what a Test.pm ought to implement.
13:22 pmichaud (isa_ok is already in fudge.)
13:22 pmichaud (just checked)
13:22 bacek pmichaud: Does it mean that someone have to add roto infix:«=>» is equiv(infix:<=>) { ... }  into grammar-opr.pir?
13:23 bacek s/roto/proto/
13:23 pmichaud bacek: yes.
13:23 pmichaud bacek: exactly.  And write a sub for it.
13:23 pmichaud (adding the proto should get 'a' => 'b' to parse properly, though.)
13:24 pmichaud fudge currently has:  my $IS = '\\b(?:is|ok|is_deeply|is_approx|isnt|like​|unlike|eval_dies_ok|cmp_ok|isa_ok|use_ok|​throws_ok|dies_ok|pass|flunk)(?:\\b|_)';
13:24 bacek pmichaud: yes it is.
13:25 pmichaud (fudge $IS)   that seems like a reasonable set of test methods.  :-)
13:25 * bacek got +2 to Deep Magick
13:25 pmichaud bacek++
13:26 * pmichaud remembers that he still has about an hour of $otherjob to go, but is having too much fun chatting on #parrot.
13:27 bacek pmichaud: 'undef $otherjob'
13:28 pmichaud bacek:  heh.  that may happen soon, yes.
13:28 pmichaud since I've had $otherjob for over 18 years.
13:28 donaldh I suspect $otherjob.funds($parrot)
13:28 pmichaud (even though my role in $otherjob has changed frequently -- it's still the same employer for 18 years)
13:28 donaldh Or rather $otherjob.funds(%pmichaud['parrot'])
13:29 bacek donaldh: You shoud use angle braces :)
13:29 donaldh :)
13:30 * donaldh is parrot-newbie too.
13:30 * bacek Geofrey mode=on
13:30 bacek rt #53666
13:30 * bacek Geofrey mode=off
13:30 * particle wishes more of the perl 6 talk would happen on #perl6
13:30 particle ...greater, more focused audience
13:31 donaldh Much of this seems to be 'how to implement Perl 6 in Rakudo'
13:31 donaldh No?
13:31 purl well, maybe.
13:32 pmichaud rt#53666 looks good to me.  It probably should have some POD documentation in front of the .sub, and we should check if there are any relevant spec tests.
13:33 particle pmichaud: if you could, put tasks like converting Capture from PIR to PMC in rt, so somebody can pick it up
13:34 pmichaud we already have a Capture PMC that looks like a reasonable implementation
13:34 pmichaud I think it got converted/implemented as part of pdd17pmc
13:34 bacek pmichaud: ok. I'll add do it.
13:34 pmichaud it's just missing a scalar component, and some methods
13:35 pmichaud the trickier part of the conversion is switching PGE and PCT to using the Capture PMC instead of Capture_PIR.
13:35 pmichaud so, is it two tickets, or just one?
13:35 cognominal pmichaud, I thougt   @a = [1,2,3]  was supposed to conceptuellement copy the list to make it an array
13:36 cognominal under the wood, it may morph the list, but that's antoehr sotry
13:36 jonathan At the moment, I'm trying to work out why subclassing a Capture in PIR doesn't seem to work out too well.
13:36 bacek Just another... hmm... question. Is anyone implemnting 'sort' for right now? Because I going to practice in PIR programming and implement trivial merge-sort.
13:36 bacek for 'List'
13:36 pmichaud bacek: I don't think 'sort' has been implemented.
13:37 bacek pmichaud: definetly not.
13:37 pmichaud jonathan: it often has to do with ProxyPMC versus native PMC
13:37 pmichaud bacek: afaik, nobody else is working on 'sort' at the moment
13:38 bacek pmichaud: excelent (from my egoistick POV :)
13:41 jhorwitz joined #parrot
13:43 bacek pmichaud: Ho! Will 'Dark Magick' work if I'll replace 'infix:=' pirop=>'copy' with handcrafted assignement?
13:44 DietCoke don't rewrite sort.
13:44 DietCoke just use the sort method you'd inherit from the parrot PMCs.
13:44 pmichaud bacek: no.
13:44 pmichaud infix:=  is pretty special.  There's a fair amount of Dark Magick to be done there, even.
13:45 pmichaud e.g., getting  infix:=  to recognize when the rhs is to be parsed at item assignment or list assignment level
13:46 bacek DietCoke: Inherited methods works only on integers AFAIK.
13:47 bacek pmichaud: This magick is definitly dark...
13:47 pmichaud bacek: as an example, take a look at  infix:sym< = >   in STD.pm :-)
13:49 bacek pmichaud: infix_postfix_meta_operator?
13:50 pmichaud bacek: are you asking what that is?
13:50 pmichaud bacek: or is that related to infix:sym<=> somehow?
13:52 cjfields joined #parrot
13:52 bacek pmichaud: related to  infix:sym<=>.
13:52 pmichaud (infix_postfix_meta_operator) is what handles operators like   +=  *=  /=  //=   etc.
13:52 bacek token infix:sym<=> ()
13:52 bacek {
13:52 bacek <sym>
13:52 bacek { self.<sigil> eq '$'
13:52 bacek ?? make Item_assignment($/)
13:52 bacek }
13:52 bacek Looks pretty simple... Or I miss somthing...
13:53 pmichaud right.  For infix:= , we check the sigil of the left hand operator, and use that to decide whether to parse the rhs as an Item_assignment or a List_assignment.
13:53 pmichaud s/left hand operator/left hand argument/
13:53 particle (still in scrollback but much closer to realtime) pmichaud: fudge list should be just reasonable Test.pm funcs, and isa_ok is reasonable (and already in there, TimToady++)
13:54 pmichaud particle: agreed.  I'm just wanting to avoid a huge amount of test function proliferation in fudge (and by extension, in Test.pm)
13:54 pmichaud it does beg the question, however, if Test.pm should be renamed
13:54 pmichaud e.g., to SpecTest.pm
13:55 particle donaldh: yes, this is implementation talk for rakudo, but rakudo isa perl6. if it's talk about changes required to *parrot* to implement rakudo, it belongs here (#parrot)
13:55 pmichaud having SpecTest.pm might avoid naming conflicts with other Test::* modules
13:55 pmichaud and make it clear that it's intended for testing specs.
13:56 particle pmichaud: capture and pge/pct -- tickets are cheap. make two and relate them
13:56 pmichaud particle: I almost need a ticket just to remind me of all the tickets I need to create :-P
13:58 particle what about Spec::Test, or Test::Spec?
13:59 particle is parsing namespace colons too much for a baby perl6 implementation to handle?
13:59 pmichaud it might be.
14:00 AndyA joined #parrot
14:00 pmichaud I suspect a baby perl6 implementation might be able to fudge it, though.
14:00 pmichaud I'm not sure I want it to go into the Test:: hierarchy.
14:01 pmichaud maybe Perl6::Spec::Test is better?
14:02 pmichaud anyway, keep-it-simple is the order of the day for now.
14:05 cognominal pmichaud, is there a reason for nqp not supporting  infix:<or>?
14:07 pmichaud cognominal: just haven't implemented it, I guess.
14:08 pmichaud feel free to add <or>, <and>, <not>, <true>
14:08 cognominal you forgot the ultimate "looser" operator :)
14:08 pmichaud hmm?
14:08 cognominal they have a loose precedecence
14:08 pmichaud oh.
14:09 pmichaud it's not so much "forgot" as following a principle of not adding things until I needed them.  :-)
14:09 pmichaud nqp aims at conciseness and regularity instead of completeness and dwimminess
14:09 slightlyoff joined #parrot
14:10 cognominal less surprise is good too
14:11 Zaba joined #parrot
14:11 pmichaud well, it depends.  Almost by definition we expect nqp programmers to be okay with a bit of rigidity -- nqp isn't intended to be a general-purpose programming language.
14:11 pmichaud (It might evolve to that someday, but at present it's not.)
14:12 pmichaud DietCoke: (late night gaming) -- yeah, that's starting to be an issue for me also.  :-P
14:16 * jonathan is having a hard time working out why subclassing Capture to use in Rakudo isn't working out.
14:18 pmichaud what's not working?
14:18 purl see "doesn't work"
14:19 jonathan pmichaud: You try to push things onto it, and get back a "push_pmc not implemented in class Undef" message.
14:20 pmichaud push from PIR?
14:20 pmichaud as in      push capture, $P0   ?
14:20 jonathan Yes. Tracing through it with the C debugger, I can see what where it should be getting an instance of the Capture PMC back, it's getting an Undef instead.
14:20 jonathan (Inside class.pmc)
14:21 pmichaud oh, I think I know why.
14:21 jonathan It's strange because inheriting form ResizablePMCArray to get List works just fine. And I can't see that much different.
14:22 jonathan Other than the use of ATTR in Capture.pmc.
14:22 jonathan Which I don't think should affect things...
14:24 pmichaud (checking.)
14:27 pmichaud oh, perhaps that's now resolved.  There used to be cases where individual methods had to check for PMCProxy before dispatching other operations
14:27 pmichaud but perhaps that's being handled by the PARROT_CAPTURE(SELF) macro
14:27 pmichaud iirc, the issue is that SELF in an object of the inherited class refers to the ProxyPMC self and not the Capture self
14:28 jonathan OK, but I don't understand why Capture has this issue, and other PMCs that we subclass don't.
14:28 pmichaud right
14:28 jonathan Like Hash, ResizablePMCArray and so forth.
14:28 pmichaud oh
14:28 pmichaud probably because of the ATTR
14:28 jonathan OK.
14:28 pmichaud I don't think any of the other PMCs use ATTR
14:28 jonathan No
14:29 jonathan It appears not.
14:29 jonathan I think for now I'll just do a PIR hack to get me what I need, and drop a message to the list asking for thoughts on this.
14:29 pmichaud so, in the case of capture.pmc,  PARROT_CAPTURE(SELF) returns the <data> element, but that holds the wrong value for a PMCProxy
14:29 pmichaud what we really need is
14:29 bacek Thanks everyone. I'm going to sleep...
14:30 jonathan OK, but the PMCProxy is in the parents list, we should have a "Proxy" attribute being set on an individual object that has an instance.
14:30 * bacek got segfault after trying to add infix:=>...
14:33 pmichaud prior to pdd17pmc, the way we would solve it is to explicitly do   if (PObj_is_object_TEST(SELF)) { ... get data out of PMCProxy... }
14:38 pmichaud anyway, if you put a breakpoint on Parrot_Capture_push_pmc, you may find that pmc->pmc_ext->data refers to something other than a Parrot_Capture struct
14:39 pmichaud (and I suspect that none of the other PMC types are using the pmc_ext field, since they aren't using ATTR)
14:39 jonathan pmichaud: The problem is not this. The problem is that we never actually get to making a call to Parrot_Capture_push_pmc
14:40 jonathan Well, the problem might be related to this.
14:40 pmichaud oh.
14:40 jonathan There's a codepath that asks for the Proxy object (the instance of, say, the Capture PMC) that we can dispatch on to call it's push_pmc method.
14:41 pmichaud okay, you're right.
14:41 jonathan However, in the case of the Capture PMC, instead we get an instance of Undef.
14:41 jonathan And I can't work out, how on earth this could come to be.
14:42 pmichaud well, I vote send a message to the list then.  :-)  chromatic will probably pick it up and can get a fix real quick.
14:42 pmichaud write up a quick test example in PIR.
14:43 jonathan Seems something more complex is going on...
14:43 jonathan nopaste?
14:43 purl somebody said nopaste was at http://nopaste.snit.ch/ (ask TonyC for new channels) or http://rafb.net/paste or http://paste.husk.org/ or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ or don't bother me while I'm eating
14:43 nopaste "jonathan" at 85.216.151.226 pasted "this works" (8 lines) at http://nopaste.snit.ch/12983
14:43 jonathan That prints "ok"
14:45 jonathan So it seems that it's only inside Rakudo, when we also make it a parent of Any, Object too...
14:46 pmichaud (1) try creating a subclass using add_parent instead of subclass
14:46 jonathan Heh. That doesn't fail either.
14:46 pmichaud (2) try creating a subclass with multiple parents
14:46 nopaste "jonathan" at 85.216.151.226 pasted "this works too" (12 lines) at http://nopaste.snit.ch/12984
14:50 nopaste "jonathan" at 85.216.151.226 pasted "even this works" (13 lines) at http://nopaste.snit.ch/12985
14:50 jonathan (that latest nopaste is #2)
14:50 pmichaud right
14:50 Theory joined #parrot
14:50 pmichaud can I see the code you're using to create the class in Rakudo ?
14:51 nopaste "jonathan" at 85.216.151.226 pasted "capture.pir" (89 lines) at http://nopaste.snit.ch/12986
14:52 pmichaud ...and it fails even with the # lines commented out, as in the nopaste?
14:52 jonathan Yes.
14:53 jonathan I'd just commented them out now, to test that...doesn't work with or without them.
14:53 pmichaud well, even with 'Any' not being a parent class, make_proto still adds 'Perl6Object' as a parent.
14:53 jonathan True.
14:54 jonathan This is the latest checked in version, if you want to play with it locally.
14:54 jonathan Just run my $x = \(1,2,3); to trigger the bug.
14:54 pmichaud I'll have a conference call in six minutes, so it may have to wait until later.
14:54 jonathan OK, sure.
14:55 jonathan Any objections if I put a PIR version in for now, that allows me to progress on the other things I wanted to get in?
14:55 jonathan We can replace it with the PMC version as soon as we work out the issue.
14:55 pmichaud no objection... although there's already a PIR version in library/Parrot/Capture_PIR.pbc
14:55 pmichaud might run into some protoobject conflicts there, though.
14:56 jonathan Yeah
14:56 pmichaud (which would be resolved by my new protoobject stuff, but that won't be until later tonight)
14:56 jonathan I've got a PIR version for Rakudo that works OK for what I want, so will do that.
14:56 jonathan OK.
14:56 pmichaud okay, that's fine.
14:56 jonathan By the way, are .list, .item and .hash methods the things to call on something to get it to evaluate in item, list and hash context?
14:56 pmichaud yes
14:57 jonathan Ah, that'd make @( ... ) just be a method call?
14:57 pmichaud according to TimToady, yes.
14:57 pmichaud and this is the way it's now implemented in NQP.
14:57 jonathan Yeah, that's where I spotted it.
14:57 jonathan OK, that makes life rather easy. :-)
14:57 jonathan I'll drop those in later on today.
14:58 pmichaud what are you wanting to do with captures, anyway?
14:58 jonathan .+ and .* return captures
14:58 jonathan Which are slightly odd things to implement, but relatively easy.
14:59 pmichaud actually, .* and .+ return a list of captures
14:59 pmichaud where "capture" is really just "return value"
14:59 jonathan Sorry, yes, that's what I meant to write.
15:00 jonathan Brain -> fingers translation didn't quite work out.
15:00 pmichaud so you could implement .* and .+ as a list of return values without having to turn the return values into captures
15:00 pmichaud because methods/subs/whatever really return captures anyway.
15:00 DietCoke bacek; I don't understand what you mean, "inherited methods only works on integers". I am using the inherited sort in tcl now, it works.
15:00 jonathan Sure, but you need some way to capture returns more complex than just single values.
15:01 pmichaud right, but that's a function of overall subroutine calling conventions and not specific to .* and .+
15:01 pmichaud essentially, every sub call returns a capture
15:02 jonathan True. Will we actually implement it like this, though?
15:02 jonathan Or just build a capture on-demand if we need to?
15:03 pmichaud conceptually:   $x = foo()    is the same as    $x = (foo()).item()
15:03 pmichaud @a = foo()   is    @a = (foo()).list()
15:04 pmichaud how we actually implement it -- I don't know yet.  We could either have every sub always return a capture, or we could get the caller to supply some context
15:05 jonathan Always returning a capture won't play nice with language interop.
15:05 pmichaud either way,  .+ and .* would seem to simply call all of the methods (in Capture context) and simply create a list of the returned objects
15:05 pmichaud (language interop)  I agree, which is why I think we may need to do a bit more with Parrot's calling conventions
15:05 pmichaud I think it would be really nice if Parrot calling conventions generalized to using captures.
15:06 pmichaud we can still do positional and named arguments in such a scheme, but there's also a way to grab all of the arguments and invocant into a single package
15:06 pmichaud e.g.:
15:06 pmichaud .param pmc args    :capture
15:07 pmichaud or
15:07 pmichaud ($P0 :capture) = foo()
15:07 particle i've often thought that would be nice for pcc
15:07 particle propose to list?
15:07 pmichaud I think might've mentioned it on-list once before, I'll check my archives though and re-send
15:10 slavorg joined #parrot
15:10 pmichaud anyway
15:10 pmichaud the other possibility for now is to do
15:10 pmichaud ($P0 :slurpy, $P1 :slurpy :named) = obj.foo()
15:11 pmichaud and then
15:11 DietCoke pmichaud: ZOMG, someone reads my blog.
15:11 pmichaud $P2 = 'prefix:\'($P0 :flat, $P1 :named :flat)   # create the capture object
15:11 pmichaud and then push $P2 onto the list
15:12 jonathan Yes, that's what I'd planned to do.
15:12 pmichaud (oh.  what I said earlier about    $x = (foo()).item()   is wrong.  ignore the blabbering idiot behind the 'pmichaud' nick)
15:12 jonathan Though I don't think it's implemented as infix:\...
15:12 pmichaud (although I suspect @a = (foo()).list() is correct.)
15:13 jonathan hmm
15:13 jonathan token capterm { '\\(' <capture> ')' {*}
15:13 jonathan }
15:13 pmichaud oh, sorry.
15:13 pmichaud you're right, '\\(' is a separate token from prefix:<\\>
15:14 jonathan However, that doesn't handle \@array, which also creates a capture
15:14 pmichaud there *is* a prefix:<\\>  --- it's just that it's not the same as \(...)
15:14 pmichaud (and by "is" a prefix:<\\>  I mean that it's defined in S03 even though it's not in STD.pm yet.)
15:15 pmichaud we were discussing it a bit earlier in the week or late last week.
15:16 jonathan OK, and that's what handles things like, \@array, \$scalar, \%hash and so forth?
15:16 pmichaud yes.
15:16 jonathan OK.
15:17 jonathan And we know what slot to put the thing in by looking at the sigil of what follows, or the type?
15:17 pmichaud (did you find it in S03?  look for   prefix:<\>
15:18 jonathan Yeah, found it, but it also suggests that this handles the more complex case - \($invocant: $pos1, $pos2, :named($arg))
15:18 pmichaud yes, I think that's probably a mis-write.
15:18 pmichaud because \(...) is described earlier.
15:19 jonathan Right.
15:19 pmichaud I think we know what slot to put the thing in by looking at the type of what follows.  I'm not sure prefix:<\> is a syntactic construct.
15:20 pmichaud (and we need to decide if we're going to write it as prefix:<\\> or prefix:<\> in text :-)
15:20 jonathan OK, and once we have our Mutable container type, it'll be easy to say "OK, it's a $ container, put it in the $ slot of the capture"
15:20 pmichaud right.
15:21 jonathan OK, I'll punt on prefix:\ until we get that in place.
15:21 Zaba_ joined #parrot
15:21 pmichaud good idea.  but you can still implement \(...) if you wish.  :-)
15:22 jonathan Already done here, apart from not the : part to specify the scalar slot.
15:22 jonathan Need to look at how that's parsed more generally, though, so I can do it for naming the invocant of a method.
15:22 pmichaud for the Capture PMC, I vote we wait until after protoobjects are cleared up a bit.
15:22 pmichaud i.e., your PIR version is good for now.
15:23 jonathan my $x = \(1,2,3,foo => 42); say $x[2]; say $x<foo>
15:23 jonathan 3
15:23 jonathan 42
15:23 jonathan Have nasty hack in too, until keyed_int type is ready in PCT. :-)
15:25 lichtkind joined #parrot
15:26 dalek r27540 | jonathan++ | trunk:
15:26 dalek : [rakudo] A PIR implementation of captures for now, since trying to get them working with the Capture PMC has proved problematic.
15:26 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27540
15:35 Tene joined #parrot
15:44 pmichaud I'll probably be trying to convert PGE and PCT to use the Capture PMC, so maybe I can figure out what's going on then.  I guarantee those will be subclassing Capture :-)
15:44 pmichaud (and using protoobjects)
15:44 jonathan OK, sounds good.
15:44 purl speakers so loud they blow women's clothing off!
15:48 lichtkind jonathan: hello what was the name of the other guys who made something on perl 6 docs?
15:49 jonathan lichtkind: Not quite sure what you're referring to, though remember us talking about docs at some point...
15:49 jonathan Maybe it was Perl 6 version of perldoc?
15:49 jonathan In which case I think it was particle
15:49 lichtkind jonathan: we talked in erlangen if you remember
15:50 jonathan Sure, remember having the conversation, just trying to recall the content. :-)
15:50 lichtkind :)
15:50 lichtkind jonathan: im not done much lately except some articles about perl 6
15:51 Zaba joined #parrot
15:51 jonathan IIRC, you'd got a bunch of Perl 6 documentation, and I was saying it might be good to try and get it into a form that we could make available through a perldoc implementation, which I think we have some progress on in the Rakudo source tree.
15:52 pmichaud (perldoc)  I think we just have a parser at this point.  :-)
15:53 lichtkind pmichaud:  yes you wanted to point me to some end user docs in parrot svn :)
15:53 lichtkind pmichaud: great talk btw
15:53 pmichaud thanks.  :-)
15:55 lichtkind pmichaud: there were some bits i have the feel to find some better words but your great in your perception, getting stuff done, and much better team player than many, so im happy that you able to spread  euphoria for the right reasons
15:57 lichtkind jonathan: yes but my goal is just deliver what we have throug a perl5 module,
16:01 wknight8111 joined #parrot
16:04 jonathan lichtkind: OK, making them available easily is certainly a good thing...
16:04 jonathan You had them in a wiki format so far, I think?
16:05 lichtkind jonathan: no i was just speaking about material not written by me, translating my stuff and adding is next step
16:10 dalek r27541 | jonathan++ | trunk:
16:10 dalek : [rakudo] Fix PIR thinko in the last ci.
16:10 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27541
16:10 jonathan lichtkind: OK, and I mentioned some back in Erlangen?
16:10 dalek r27542 | jonathan++ | trunk:
16:10 dalek : [rakudo] Implement $( ), @( ) and %( ) contextualizers.
16:10 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27542
16:11 lichtkind jonathan:  you mentioned some guy with an effort that would fit nicely
16:11 jonathan OK, and it wasn't perldoc?
16:11 japhb oh?
16:12 japhb sorry, wrong window
16:12 lichtkind jonathan: i think it had something like that in the name
16:12 jonathan I think I mentioned the implementation (incomplete, mind - how much I don't know) of perldoc that ships with Rakudo
16:13 jonathan And mentioned it would be good to try and work out how to integrate the content you have got with that, somehow.
16:13 jonathan If that was it, the guy is Jerry Gay (particle on this channel)
16:14 jonathan If it was someone else with content, I'm struggling to remember now... :-(
16:14 lichtkind jonathan: thanks
16:15 lichtkind jonathan: its great to see that you make such progress on rakudado, seems to be soon that i can start a article for some major magazine (couldnt do that until some examples work)
16:16 Tene lichtkind: what examples?
16:16 purl i heard examples was Figure 1: A Pear
16:16 iblechbot joined #parrot
16:17 lichtkind Tene: examples showing various perl 6 features
16:17 Tene purl: no, examples is http://shorl.com/bynygruhofrebru
16:17 purl okay, Tene.
16:18 lichtkind Tene: that example i would write when its time :)
16:18 lichtkind Tene: i already writing a perl 6 course for foo magazine
16:18 lichtkind Tene: but writing for iX magazine is something different
16:18 Tene The way I like to work is to have existing examples that don't yet work to focus on.
16:19 Tene t/spec++
16:19 lichtkind Tene:  understand but the point i was making that i need certain percentage working features to publish in iX
16:20 lichtkind Tene: its no problem in foo because thats a paper for perl enthusiasts
16:20 lichtkind but iX is boring i mean professional programming magazine :)
16:20 Tene lichtkind: feel free to mention anything specific you want me to work on.
16:20 jonathan lichtkind: Same. :-)
16:21 lichtkind Tene: thanks maybe i do
16:21 lichtkind good to hear
16:22 Tene I prefer when someone else tells me what to work on.
16:22 lichtkind jonathan: i even wrote the transliteration of the talk i gave in erlangen :)
16:22 lichtkind jonathan: i mean i don't
16:23 lichtkind Tene: allrigth but first i have to chekc what works
16:23 lichtkind but the highligts i like to see in action are things like for loop that iterates over several values
16:23 lichtkind simple junctions and chained compasions
16:24 Tene Aw, we have no evalbot in here.
16:25 jonathan lichtkind: Simple junctions and chained comparrisons already work, I think.
16:25 Tene As do for loops.
16:25 lichtkind jonathan:  i think also i read that
16:25 jonathan Tene: Sure, but not iterating over several items at once, I believe.
16:26 lichtkind tene: things i like to work are oviosly on http://wiki.perl-community.de/bin/​view/Wissensbasis/PerlTafelAnhangC
16:26 shorten lichtkind's url is at http://xrl.us/bkm88
16:26 Tene jonathan: hm?
16:26 lichtkind shure you cant german but you will recognize perl
16:27 Tene hm, looks like interactive mode could use a flush() somewhere.
16:27 lichtkind have to go now was great talk guys
16:27 Tene bye, lichtkind.  thanks for stopping by.
16:27 lichtkind will appear more stuff on the link i pushed now
16:29 Tene Ah, for() needs to inspect the arity of the block it's working on.
16:29 jonathan lichtkind: Nice to see you, take care. :-)
16:29 jonathan Tene: Yes, something like that.
16:29 jonathan It's easy enough at PIR level though, I think.
16:29 Tene > for 1..16 { say "$^a - $^b" }
16:29 Tene too few arguments passed (1) - 2 params expected
16:30 jonathan As just call .arity method
16:30 jonathan Think it's a PCT change though.
16:30 Tene yeah
16:30 Tene ran into a potential pct bug last night.
16:30 Tene > my @a = 1..10; say (@a)[0]
16:30 Tene Method 'viviself' not found for invocant of class 'PAST::Stmts'
16:31 Tene Unsure if rakudo needs to generate a different ast there, or if pct needs to be able to handle a Stmts node in a keyed lookup.
16:33 jonathan Hmmm
16:33 jonathan Maybe we need to diddle the AST a little.
16:34 Tene It dies the same way on a PAST::Op, too
16:34 jonathan Yeah.
16:34 jonathan I worked around that in my very last ci.
16:37 pmichaud PCT's 'for' type already understands arity.
16:37 pmichaud Make sure that the PAST::Block has its arity set.
16:38 Tene Ah, right.
16:38 pmichaud i.e.,   'for' can already handle     for @foo -> $a, $b { ... }
16:38 Tene I can do that right now!
16:38 Tene Placeholders weren't incrementing the arity.
16:38 pmichaud I'm not sure why say (@a)[0]  isn't working.
16:39 Tene pmichaud: keyed lookup presumes it's working on a PAST::Var
16:39 pmichaud sure, but (@a) _should_ be a PAST::Var
16:39 Tene what about foo()[0]?
16:39 pmichaud so I'm guessing that circumfix parens isn't handling the ast correctly
16:39 Tene Should that be a var?
16:40 jonathan pmichaud: circumfix rule makes (@a) a statement list.
16:40 pmichaud keyed lookup is a PAST::Var, but it doesn't presume that the base is a PAST::Var
16:40 pmichaud in   foo()[0], the entire expression is a PAST::Var node, but the first child of that node (representing foo() ) doesn't have to be a PAST::Var
16:40 pmichaud although I think that might indeed be a PCT bug, now that I think about it.
16:41 pmichaud vivibase might be trying to read from viviself of the base.
16:41 Tene Ah.  What I was saying was that in the 'keyed()' function, it's presuming that the first child is a PAST::Var
16:42 pmichaud eek
16:42 pmichaud that code in keyed looks completely wrong
16:42 pmichaud $P1 never gets used.
16:43 pmichaud so it's a PCT bug, yes.  Beyond that, keyed nodes shouldn't require the first child to be a PAST::Var.
16:45 Tene pmichaud: It seems to me that some things might be simplified quite a bit if PCT had explicit support for a signature on a block.  Has this been considered?
16:45 pmichaud Tene: I'm waiting for the updated mmd implementation.
16:45 Tene Ahh.  Thanks.
16:45 pmichaud then I'll decide.
16:46 pmichaud blocks already support arity, though.  I'm not sure what other signature information we'd need, other than types.
16:46 Zaba joined #parrot
16:47 pmichaud it's possible that blocks will get an explicit 'signature' node, which is where parameters and other type information could exist.
16:47 jonathan Types are fun. Especially once we get into parametric ones.
16:47 pmichaud (i.e., instead of using the [0] trick that compilers are doing now.)
16:48 Tene pmichaud: that's what I was talking about.
16:48 pmichaud I kinda like the [0] trick, though.  :-)
16:48 pmichaud it means that compilers are able to do processing even before handling the parameters.
16:49 pmichaud and that might be useful/necessary.
16:49 Tene Hm.  The arity is set properly, but it's still not passing in enough arguments.
16:51 Tene http://pleasedieinafire.ne​t/~tene/0001-rakudo.patch
16:51 * Tene needs to go to work now.
16:51 davidfetter joined #parrot
16:51 pmichaud I'll look at it a bit later
16:51 * Tene nods.
16:51 pmichaud I have a conference call in 9 mins
16:52 pmichaud and I need lunch - I can tell I'm getting low blood sugar
16:55 * davidfetter passes the food
16:55 Tene Looks like rakudo can't parse -> $a, $b { ... }
16:56 DietCoke pmichaud: want a glucometer? I have some spares. =-)
16:56 particle easy enough to fix... probably with <semilist>
16:56 davidfetter /dcc-send pmichaud muffaletta
16:59 nopaste "tene" at 166.70.38.237 pasted "past of for loop with two params" (149 lines) at http://nopaste.snit.ch/12988
17:18 dalek r27543 | fperrad++ | trunk:
17:18 dalek : [Lua]
17:18 dalek : - translates more opcodes
17:18 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27543
17:36 dalek r27544 | jonathan++ | trunk:
17:36 dalek : [rakudo] Implement .?, .+ and .* method calling for literal method names.
17:36 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27544
17:45 particle jonathan: nice patch
17:48 ambs joined #parrot
17:49 ambs .
17:50 Zaba_ joined #parrot
17:57 jonathan particle: Not sure how many folks will use it, but it's another little bit of S12 to tick off.
17:58 particle where's coke when i need him?
18:02 dalek r27545 | jonathan++ | trunk:
18:02 dalek : [rakudo] Make .?, .+ and .* work for non-literal method names too.
18:02 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27545
18:04 * particle kicks dalek
18:04 jonathan OK, I'm off to get a pizza.
18:05 jonathan More hacking later.
18:05 particle well-earned pizza
18:09 barney joined #parrot
18:12 pmichaud correct, rakudo has some difficulties with -> $a, $b
18:13 pmichaud I have plans to fix that with a term:<< -> >>  but I have to re-work the operator precedence parser in PGE for that.
18:13 AndyA joined #parrot
18:14 pmichaud jonathan:  and when you see this, I think that the Mutable implementation also means that we can get rid of :viviself in the PAST (because each Mutable can be initialized to the appropriate protoobject)
18:19 pmichaud (another revelation at lunch :-)
18:33 jonathan pmichaud: Awesome!
18:33 purl somebody said awesome was not that word
18:34 jonathan Just going to eat and then study some Slovak, back in ~ 1 hour.
18:52 dalek r27546 | bernhard++ | trunk:
18:52 dalek : Remove trailing spaces.
18:52 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27546
18:57 teknomunk joined #parrot
19:02 Tene pmichaud: that PAST looks correct to me.  I'm going to dig into PCT to confirm it's handling of arity for for loops.
19:13 pmichaud Tene: can you nopaste the PAST ?
19:13 pmichaud oh, you already did
19:13 pmichaud just a sec
19:14 pmichaud how about the PIR ?
19:14 purl the PIR is a bofh at tufts or http://www.pir.net or Passive Infra Red or Parrot Intermediate Language (and almost an acronym) or the Price is Right. or http://www.parrotcode.org/​docs/art/pp001-intro.html
19:15 pmichaud hey!  where's my arity!
19:15 pmichaud I know it was there before....
19:17 Tene Still want the PIR?
19:17 pmichaud nope -- I can tell from the code that arity isn't there.
19:17 pmichaud But I'm sure I had it there.
19:20 pmichaud I wonder if it was only in PAST-pm
19:22 pmichaud well, I'm totally lost then.  I'll have to add it.
19:22 Tene Fantastic.
19:22 pmichaud maybe I lost a commit somewhere.
19:22 Tene I'm interested to see the diff.  I need to get into PCT more.
19:24 pmichaud maybe I implemented it but forgot/decided not to commit
19:24 pmichaud oh well.
19:24 pmichaud it's surprisingly straightforward.
19:24 Tene Maybe there are gremlins lurking in your transistors.
19:24 pmichaud (or maybe it isn't straightforward once I get into it, which might be why I didn't commit...)
19:34 pmichaud oops, I have to go pick up kids.  back in 25.
19:34 pmichaud I'll go ahead and commit my arity patch, though -- you can test it.
19:34 Tene Fantastic!
19:34 pmichaud My perl6 doesn't set arity on placeholder blocks yet.
19:35 pmichaud r27547.
19:35 pmichaud back in 25.
19:35 dalek r27547 | pmichaud++ | trunk:
19:35 dalek : [pct]:
19:35 dalek : * Add checking of arity to 'for' loops.
19:35 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27547
19:38 Zaba joined #parrot
19:40 Tene For rakudo, I'm confused about when I should add tests to t/ versus t/spec/
19:41 Tene pmichaud: looks like no.
19:41 Tene Well, lemme do a realclean.
19:44 mj41 jonathan Prečo sa ty učíš po Slovensky? Moje materščina je Čeština a to je velmi podobný jazyk.
19:46 nopaste "tene" at 67.137.148.11 pasted "Arity test for pmichaud++" (223 lines) at http://nopaste.snit.ch/12989
19:46 Tene Ack, I forgot to also capture stderr
19:47 nopaste "tene" at 67.137.148.11 pasted "Arity test for pmichaud++ with stderr" (230 lines) at http://nopaste.snit.ch/12990
19:47 Tene That's better.
19:47 particle tene: at this point, *always* add tests to t/spec/
19:47 Tene particle: thanks.
19:48 * Tene leaves to find compressed air.
19:52 sjansen joined #parrot
20:00 jonathan mj41: Erm, I don't understand enough to have much clue what you wrote yet!
20:00 ambs joined #parrot
20:00 * jonathan started studying it less than a week ago.
20:02 dalek r27548 | bernhard++ | trunk:
20:02 dalek : [Plumhead PHC]
20:02 dalek : Adding an enclosing PAST::Block
20:02 dalek : let's most tests pass.
20:02 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27548
20:07 ambs huh
20:07 ambs if (!base && !(i && scale) && (!emit_is8bit(disp) || 1)) {
20:07 ambs can anybody explain me that || 1 part?
20:08 ambs src/jit_emit.h:231
20:09 dalek r27549 | bernhard++ | trunk:
20:09 dalek : [Plumhead PHC]
20:09 dalek : past_xml_to_past_pir.xsl has been replaced with past_xml_to_past_nqp.xsl
20:09 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27549
20:16 dalek r27550 | allison++ | pdd25cx:
20:16 dalek : [pdd25cx] Rip out the old exceptions code that used interp->exceptions and the
20:16 dalek : related free list. For now leave one last vestige, in the form of a stack of
20:16 dalek : runloop jump targets, which allow exceptions to resume the runloop at a point
20:16 dalek : where it's safe to run an exception handler.
20:16 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27550
20:17 pmichaud Tene: can you go ahead and commit your changes for placing <arity> on placeholder blocks so I can try it locally?
20:20 tewk ambs: Might be a debugging code change that got checked in?
20:21 ambs tewk, not sure
20:21 ambs sent it to the mailing list
20:22 cotto_work languages/perl6/src/classes/Capture.pir has a trailing space on line 80
20:22 pmichaud ambs:  see my reply on the list.  :-)
20:22 pmichaud cotto_work: good catch, will fix.  Thanks.
20:23 ambs pmichaud, correct
20:23 pmichaud I don't know if that makes any difference in this case :-)
20:23 ambs neither do I
20:23 pmichaud the equivalent would seem to be to call emit_is8bit(disp) unconditionally as the first statement in the 'if'
20:24 pmichaud also, is that file automatically generated, perhaps?
20:24 ambs pmichaud, it doesn't include any disclaimer, I think
20:24 pmichaud just curious.
20:24 contingencyplan joined #parrot
20:24 ambs btw, should make testj pass all tests under linux?
20:25 tewk If it isn't debug, thats very bad practice, even for generated code.
20:25 dalek r27551 | pmichaud++ | trunk:
20:25 dalek : [rakudo]:
20:25 dalek : * Fix trailing space in Capture.pir (reported by cotto++)
20:25 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27551
20:26 cotto_work thanks, pmichaud
20:26 cotto_work emit_is8bit doesn't have any side-effects
20:27 japhb particle: Can you test the latest patch in 54148?  I'd like to get that committed, or know what to fix, before the release.
20:27 ambs Failed Test                        Stat Wstat Total Fail  List of Failed
20:27 ambs ----------------------------------------​---------------------------------------
20:27 ambs t/compilers/imcc/syn/regressions.t    1   256     3    1  2
20:27 ambs t/op/trans.t                          1   256    22    1  13
20:27 ambs this without changing anything
20:27 ambs cotto_work, thanks
20:28 ambs removed it, not making and runing make testj
20:28 pmichaud odd, I can't run "svn blame" on jit_emit.h
20:28 pmichaud svn: 'jit_emit.h' has no URL
20:28 ambs generated?
20:28 purl somebody said generated was right
20:29 pmichaud no, it's in the repo
20:29 pmichaud I think it's ignored.
20:29 pmichaud yes, it's in the svn:ignore list.
20:29 ambs :-S
20:29 pmichaud I wonder why, though.
20:29 cotto_work the file I looked at was src/jit/i386/jit_emit.h
20:30 ambs src/jit_emit.h, in my case
20:30 cotto_work symlink?
20:30 purl well, symlink is create a symbolic link to a file or something else or (: junction)
20:30 ambs probably
20:30 purl Really? Probably? Are you Certain it's not certain? Are you sure it's unsure? I think you need to look harder.
20:30 pmichaud no, it's actually in the repo.
20:30 ambs or copied during configuration
20:30 pmichaud http://svn.perl.org/parrot/trunk/src/jit_emit.h
20:31 cotto_work it's copied, then
20:31 cotto_work I didn't see it after a make realclean
20:31 pmichaud so we should remove it from the repo?
20:31 ambs pmichaud, probably
20:31 pmichaud you're correct that it's copied.
20:32 ambs interesting
20:32 ambs run configure and it didn't replace it
20:32 pmichaud it's probably generated/copied as part of 'make'
20:33 * ambs removes it and runs configure
20:33 pmichaud $(SRC_DIR)/jit_emit.h : $(SRC_DIR)/jit/i386/jit_emit.h $(CP) $(SRC_DIR)/jit/i386/jit_emit.h $(SRC_DIR)/jit_emit.h
20:33 pmichaud oops, two lines
20:33 pmichaud $(SRC_DIR)/jit_emit.h : $(SRC_DIR)/jit/i386/jit_emit.h
20:33 pmichaud $(CP) $(SRC_DIR)/jit/i386/jit_emit.h $(SRC_DIR)/jit_emit.h
20:33 pmichaud (from the root Makefile)
20:34 pmichaud I vote to remove it from the repo.  In fact, I'm going to cast my vote by running "svn remove"  :-)
20:34 ambs pmichaud, lol
20:35 dalek r27552 | ambs++ | trunk:
20:35 dalek :
20:35 dalek : Removed always true condition from jit_emit.h
20:35 dalek : make testj fails the same tests it failed before
20:35 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27552
20:35 ambs pmichaud, I was unable to remove src/jit_emit.h, anyway
20:36 ambs probably because it is under svn:ignore
20:36 ambs :)
20:36 pmichaud oh, maybe I'm wrong about it being in the repo.
20:36 pmichaud I don't see it now.  Oh well.
20:36 pmichaud Maybe I need my eyes checked.  Or my brane.
20:37 ambs pmichaud, the interesting thing is that I removed it from the src dir, run configure and make, and it didn't get there again
20:39 Tene pmichaud: committed.
20:39 purl The chicken is involved, but the pig is *committed*.
20:39 dalek r27553 | tene++ | trunk:
20:39 dalek : [rakudo]
20:39 dalek : * Properly increment the arity on a block when using placeholders.
20:39 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27553
20:40 * pmichaud does 'make realclean', rebuilds
20:41 pmichaud well, wherever that line came from, it's old
20:41 pmichaud it's been that way since r3704
20:45 pmichaud Tene:  aha.  I was taking the arity of the wrong node.
20:46 pmichaud (although I wonder if we should use the 'for' node's arity instead of the arity of its child[1] for this.
20:46 Tene That would be awkward.
20:47 pmichaud well, I'm wondering if there might be a language or situation where the number of things to be taken in each iteration differs from the arity of the thing being executed.
20:47 Tene Could be.
20:47 pmichaud if that's the case, then it should be an attribute of the 'for' node and not the attribute of its body
20:48 Tene In that case, for rakudo, we just copy the child[1]'s arity into the for node.
20:48 pmichaud from a rakudo perspective it's not awkward -- just have the <for> node copy the arity of its block (which it already has.)
20:48 Tene ++
20:48 pmichaud ...beat me to it.  :-)
20:48 pmichaud maybe it shouldn't be 'arity' in the for node, though
20:49 ambs heh
20:49 ambs so many failing tests
20:49 ambs Failed Test              Stat Wstat Total Fail  List of Failed
20:49 ambs ----------------------------------------​---------------------------------------
20:49 ambs t/codingstd/copyright.t     1   256     2    1  1
20:49 ambs t/codingstd/perlcritic.t  255 65280    16   32  1-16
20:49 pmichaud yes, I think I prefer it to be an attribute of the 'for' node.
20:49 pmichaud what to call it, though?
20:50 Tene How about we call it brb-i-have-to-go-check-a-pile-of-optical-drives?
20:50 pmichaud that might be too short.  Need a more descriptive (i.e., longer) name.
20:51 pmichaud so, perhaps   number-of-things-to-take-at-each-itera​tion-and-pass-to-the-body-of-the-loop ?
20:51 cotto_work snappy, that
20:52 pmichaud heh.  pdd26 already says that it's the <arity> attribute of the 'for' node itself.
20:54 japhb child_arity?
20:54 japhb block_arity?
20:54 pmichaud I'm thinking the child might not be a block (in non-perl6 languages)
20:54 japhb nodnod
20:54 pmichaud ch_arity?
20:55 pmichaud (i.e., it needs donations. :-)
20:55 japhb nice
20:55 japhb stride?
20:55 japhb (from OpenGL parlance)
20:55 jonathan how_many_to_grab
20:55 pmichaud :by
20:55 japhb Interesting side effect -- in OpenGL, stride 0 means 'use the child's stride'
20:55 jonathan :-)
20:56 pmichaud :by looks possible, it's similar to    1..5:by(2)
20:56 pmichaud I'd prefer "stride undef" means "use the child's stride"
20:56 pmichaud although stride zero makes sense.
20:57 pmichaud that's another reason to have 'for' not use the child's arity -- the child might have an arity of zero but we still want to iterate over the list
20:57 pmichaud example:   for @list { say "hello"; }
20:57 japhb I agree re: undef
20:58 japhb OpenGL is constrained by seeing the whole world through a double filter of C and Fortran
20:58 dalek r27554 | ambs++ | trunk:
20:58 dalek : svn attributes fixed
20:58 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27554
20:59 pmichaud so, I propose:  (1) we go ahead and use the 'arity' attribute on the for node  (2) if that is undef, then use the arity of the child if any.
20:59 japhb makes sense to me
20:59 pmichaud and if the child doesn't have an arity, assume 1.
20:59 japhb yep
20:59 dalek r27555 | ambs++ | trunk:
20:59 dalek : Some more svn attributes fixed.
20:59 pmichaud if I end up not liking it, we can change it.  It's not as if it shows up in a lot of code.  :-)
20:59 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27555
21:00 japhb true!
21:00 japhb No snappy comeback, purl?
21:00 purl japhb: huh?
21:00 pmichaud "huh?" may be as snappy as it gets. :-)
21:01 ambs huh?
21:01 ambs why is tools/util/dump_pbc.pl empty?
21:02 japhb ambs: because someone did a partial commit of my patch.  It needs to be fully committed by somebody.
21:02 japhb And I don't have commit rights to fix it,
21:02 japhb though I am probably going to ask for same after this release cycle
21:03 pmichaud japhb: turned in a cla?
21:03 japhb Haven't started on the procedure yet.  Just got this week two committers recommending that I do, which according to bylaws is the first step.
21:03 ambs japhb, then, I can't fix the failing tests for now :)
21:04 Tene japhb: is there a reason nobody has committed the rest of it?
21:05 dalek r27556 | pmichaud++ | trunk:
21:05 dalek : [pct]:
21:05 dalek : * Fix 'arity' handling in for loops.  The for node itself is allowed
21:05 dalek :   to have an arity, otherwise it uses any arity of its body (child).
21:05 dalek :   (Tene++, japhb++, cotto++ for helpful inspiration and comments.)
21:05 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27556
21:05 pmichaud japhb: I'll see about committing -- let me rebuild.
21:05 japhb Tene: supposedly someone was going to test my latest version on Windows, but it is already known to work on Linux.
21:06 japhb pmichaud: thank you
21:07 particle please just commit japhb's patch. it's not core, so not of the utmost importance that it works on windows
21:07 particle if my time frees up, i'll test it on windows this weekend
21:07 japhb particle: thank you
21:08 pmichaud japhb: what patch, again?
21:08 pmichaud is the patch already in (part of) the repo?
21:08 japhb 54148, latest patch
21:08 Tene I'd be glad to commit it.  I was also going to commit your opengl update tonight.
21:08 japhb Tene: Thanks!
21:08 pmichaud okay, I'll let Tene do it.  I'm eager to get back to working on protoobjects.
21:08 pmichaud and then mutables.
21:08 * particle needs lunch&|nap &
21:09 Tene I'm a bit confused about why you don't have commit rights.  All I did to get commit rights as I recall was a few lolcode patches.
21:09 nopaste "pmichaud" at 76.183.97.54 pasted "for Tene: placeholders in for as of r27556." (7 lines) at http://nopaste.snit.ch/12991
21:09 particle tene: it's a lower bar for hll devs to get commit rights
21:09 Tene Oh, right.
21:09 Tene particle: thanks.
21:09 pmichaud Tene++  # placeholders in 'for' work.
21:10 Psyche^ joined #parrot
21:11 japhb Since we're talking about it,
21:11 * japhb starts going through the procedure to get commitbit
21:11 AndyA joined #parrot
21:11 nopaste "pmichaud" at 76.183.97.54 pasted "for Tene: placeholders in for as of r27556 (more dramatic)" (7 lines) at http://nopaste.snit.ch/12992
21:12 jonathan Tene++, pmichaud++
21:12 Tene (mutual karma society)++
21:12 ambs all++
21:13 ambs purl karma all
21:13 purl all has karma of -8
21:13 pmichaud all needs work.
21:13 ambs huh :-S
21:13 ambs all++
21:14 japhb all++
21:14 lichtkind purl karma all
21:14 purl all has karma of -6
21:15 lichtkind i though all here get a ++ :)
21:15 lichtkind purl karma lichtkind
21:15 purl lichtkind has karma of 2
21:15 lichtkind ah
21:15 lichtkind all++
21:15 cognominal gnole++
21:16 cognominal karma gnole   # french pun
21:16 purl gnole # french pun has neutral karma
21:16 cognominal arf
21:16 cognominal karma gnole
21:16 purl gnole has karma of 104
21:17 lichtkind Tene++
21:17 lichtkind purl karma Tene
21:17 purl tene has karma of 61
21:17 dalek r27557 | jonathan++ | trunk:
21:17 dalek : [rakudo] Allow specification of a name for the invocant of a method using the : syntax (method test($inv: $x, $y) { ... }).
21:17 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27557
21:19 * japhb grumbles about having to move cat bed to reach printer so as to produce dead tree version of CLA to send via snail mail to a completely online foundation
21:19 Tene I just had my hotel fax it for me.
21:19 pmichaud I handed mine directly to Allison.  :-)
21:19 japhb pmichaud ftw
21:19 pmichaud and used her dead trees, too.  :-)
21:20 japhb heh
21:20 japhb the cat is displeased
21:21 Eevee wow, that diff was not very complicated
21:21 dalek r27558 | bernhard++ | trunk:
21:21 dalek : [Plumhead PHC]
21:21 dalek : Fiddle with builtins.pir, making remaining tests succeed
21:21 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27558
21:23 * cognominal reading the excellent "JavaScript, the good parts" and had the strange feeling to read the pascal manual. That must be the railroad presentation of grammar instead of bnf
21:25 pmichaud for those who haven't heard yet
21:25 pmichaud http://news.perlfoundation.org/2008/0​5/tpf_receives_large_donation_in.html
21:25 shorten pmichaud's url is at http://xrl.us/bknqc
21:25 barney What is the empty tools/util/dump_pbc.pl for ?
21:26 Eevee barney: git-svn gone wrong, iirc
21:26 Eevee pmichaud: wow, awesome
21:27 Tene barney: it's a mistake I made
21:27 iblechbot joined #parrot
21:27 pmichaud yes, it's very awesome.  rdice++
21:27 barney Ian Hague += 200000
21:27 pmichaud heh
21:27 ambs can somebody please commit tools/util/dump_pbc.pl_
21:27 ambs ?
21:28 Tene I'll do it right now.
21:28 * japhb chuckles
21:28 ambs Tene++
21:28 jonathan Awesome about funding! :-)
21:28 ambs jonathan, indeed :)
21:29 szbalint wow good news
21:29 japhb Holy cow, that's awesome
21:30 ambs and, rdice++, indeed
21:30 japhb Good thinking for the donor to stipulate spending half improving TPF's ability to seek more donations, so that no one can complain when TPF makes that choice ....
21:30 dalek r27559 | tene++ | trunk:
21:30 dalek : Apply japhb's dump_pbc work.
21:30 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27559
21:30 Zaba joined #parrot
21:30 Tene Is that right?
21:31 * japhb finishes reading CLA ... longish, but surprisingly sane
21:31 japhb Tene, checking
21:31 Eevee $100k to figure out how to get more donations seems like a lot
21:31 * ambs runs the failing tests
21:31 Eevee how exactly do you spend money on finding donations anyway
21:31 pmichaud Eevee: believe me, it's a good investment.
21:32 jonathan Eevee: Because to get donations this large takes a LOT of work.
21:32 Tene Eevee: build tiny money-seeking robots
21:32 japhb Eevee: I'm guessing ... hire a full-time donations-seeker, and fund their travel and schoozing
21:32 japhb er schmoozing
21:32 Tene Feh.  I like my plan better.
21:32 pmichaud at the university I worked for, we funded a vp for development for about that much (probably more)
21:32 Eevee Tene++ for best of those four responses
21:32 japhb And I agree with pmichaud:  It's an excellent investment
21:32 Eevee although a title of Official Schmoozer is entertaining too
21:32 pmichaud within just a couple of years we had earned it back 10-fold.  Within ten years we had earned it back almost 100-fold.
21:33 Eevee okay, as long as it's being used well
21:33 ambs Tene, why is the file... erm... replicated three or four times?
21:33 Tene eh?
21:33 Tene Wow, I'm incompetent.
21:34 Tene I'm not sure.
21:34 * japhb sees the problem
21:34 japhb that's ... weird
21:35 japhb I kept my copy ... do you need me to resend or nopaste just that file, Tene?
21:35 ambs japhb, please svn up
21:36 ambs and diff your file with current file
21:36 dalek r27560 | ambs++ | trunk:
21:36 dalek : Removed triplicated script from file tools/util/dump_pbc.pl
21:36 dalek : Hope to get it right now
21:36 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27560
21:36 japhb ambs: in progress
21:36 Tene ambs++ # fixing my incompetence
21:36 Tene Tene--
21:36 ambs Tene, was just luck :-P
21:38 nopaste "japhb" at 76.191.190.8 pasted "dump_pbc.pl diff" (47 lines) at http://nopaste.snit.ch/12993
21:38 pmichaud in src/ops/core.ops lines 656-680, are we missing some "=cut" directives there?
21:38 ambs damn
21:38 * ambs applies
21:40 ambs ambs-- # removed the wrong copy from the file
21:40 dalek r27561 | ambs++ | trunk:
21:40 dalek : Fixed file tools/util/dump_pbc.pl. japhb++
21:40 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27561
21:41 wknight8111 joined #parrot
21:41 japhb ambs: thank you, looks right now
21:42 ambs japhb, thanks
21:42 japhb Tene: what side of the planet are you on?  (So I know what "tonight" means.  :-)
21:42 ambs LOL
21:43 ambs machine named castro... hmmms.. Cuba? :)
21:43 Tene japhb: North America
21:43 purl rumour has it North America is like 30% Spanish... it's more like 95% in South and Central America... there's out of the way places like the Philipines... and, most of western Europe at least UNDERSTANDS it
21:43 Tene ambs: my previous employer named all of his servers after dictators.
21:44 ambs LOL
21:44 Tene castro, stalin, mussolini, mao, etc
21:44 ambs Any salazar around?
21:44 Tene nope
21:44 Tene hussein
21:44 ambs damn
21:44 ambs salazar was the portuguese one :)
21:44 Tene he was going to name one 'clinton', but the business died before we got another server.
21:45 ambs hehehe
21:45 Tene Although with how much I've fouled up this patch, I should be cautious about trying another one.
21:45 Tene Or just do the next one with git, not svn.
21:45 ambs :)
21:45 ambs well, night, folks
21:46 Tene g'night
21:46 Ivatar joined #parrot
21:48 barney good night
21:48 purl sleep well too
21:54 japhb OK, I believe I now have my BitCard account set up.  And I've filled out and signed the CLA; need to walk up the street to copy and send it.  According to submissions.pod, the next step is to request commit rights for my BitCard account.
21:55 davidfetter joined #parrot
22:03 dalek r27562 | jonathan++ | trunk:
22:03 dalek : [rakudo] Remove useless variable declaration from my last commit.
22:03 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27562
22:07 dalek r27563 | jonathan++ | trunk:
22:07 dalek : [rakudo] Implement prefix:<^>. Note that the list case doesn't work, but that's because of a bug in infix:X rather, which it calls. Metaclass case and int/num cases to produce ranges work fine, though.
22:07 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27563
22:07 Limbic_Region joined #parrot
22:09 pmichaud mmm... prefix:<^>
22:09 pmichaud wish I was implementing more of these operators -- but I keep trying to fry bigger fish :-)
22:09 pmichaud oh, ouch.
22:10 pmichaud well, maybe okay
22:10 pmichaud I'm wondering how mutables will play with mmd :-|
22:10 japhb The meat doesn't taste as good without the sauce, and the sauce doesn't provide nearly the nutritional value without the meat.
22:10 pmichaud I guess if the 'isa' vtable method is functional it may work out okay.
22:11 jonathan pmichaud: Yeah, that might or might not be kinda nasty. :-(
22:11 jonathan MMD needs a good going over anyway, mind.
22:11 Eevee I need to find something simple to tinker with implementing before jonathan++ gets all the low-hanging fruit
22:12 Tene Eevee: there are still a lot of builtins you could implement.
22:12 jonathan Eevee: Fix infix:X
22:12 Tene I added List::uniq last night.  It was very small.
22:12 jonathan pmichaud: I'm pondering adding an actual Range object at some point soonish.
22:13 pmichaud sure, that sounds good.
22:13 pmichaud one other nice consequence of mutables is that I think that lazy lists become much simpler, too :-)
22:13 jonathan :-)
22:14 pmichaud as you can guess, I'm pretty eager to see the implemented now that I know what we need :-)
22:14 pmichaud so that's likely my weekend project
22:14 jonathan Nice.
22:14 dalek r27564 | infinoid++ | pdd13pbc:
22:14 dalek : [pdd13] Merge changes from trunk (-r27311:27563) into pdd13pbc branch.
22:14 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27564
22:14 jonathan Mine will involve writing more slides than code.
22:14 Eevee Tene: now that you mention it I don't think I've even had a look at S29 since it was first written..
22:14 pmichaud oh, it also looks like I'm very likely to make it to YAPC::EU
22:14 jonathan High on my list is to give roles a good going over.
22:14 pmichaud 85% probability at this point.
22:15 jonathan Nice. :-)
22:17 jonathan Also, I need to work out class initialization a tad more, so has declarations can have default values set upon them and types.
22:17 pmichaud the protoobject refactor I'm doing will change that somewhat.
22:17 pmichaud (it'll be a tad cleaner than what we have now)
22:17 jonathan Great.
22:18 jonathan There's the whole BUILD submethod and so forth to consider.
22:18 jonathan Need to get that lot straight in my head.
22:18 pmichaud oh, I think I have that one straight.
22:18 pmichaud It'll go into (Perl6)Object
22:18 pmichaud submethods may be another issue, though :-)
22:19 pmichaud haven't quite figured out how to do that one in Parrot.  Perhaps create them as subs with the first argument as the invocant.
22:19 pmichaud but getting Parrot to honor that method syntax may be tricky.
22:20 jonathan My plan for that was, get them created as Submethod PMC type, and then override find_method vtable method to ignore them.
22:20 pmichaud that sounds very reasonable.
22:20 pmichaud then we just need a way to specify a Submethod PMC type in PIR :-)
22:21 jonathan Argh, I was going to write a mail about that...
22:22 mire_ joined #parrot
22:25 jonathan ...sent.
22:25 pmichaud jonathan++
22:26 Eevee speaking of S29: since undef is an object, will undef.defined()/undef.isa()/undef.can() work?
22:26 pmichaud undef is a function.
22:26 jonathan It is?
22:26 purl Oh no it isn't!
22:26 Eevee well
22:26 pmichaud oh
22:26 pmichaud wait
22:26 Eevee it..  returns undefined
22:26 pmichaud undef returns a Failure object
22:26 Eevee oh, really
22:26 pmichaud (which is undefined, yes.)
22:26 jonathan That's what we do in Rakudo, yes.
22:26 jonathan I think it's correct.
22:26 pmichaud See exceptions in S04.
22:27 jonathan though undef is a keyword rather than a function.
22:27 Eevee looking at http://perlcabal.org/syn/S29.html#Scalar
22:27 Eevee which calls it a 0-ary function
22:27 pmichaud the synopses that are at http://dev.perl.org/ should supercede S29 when there's a conflict.
22:29 Zaba_ joined #parrot
22:31 * jonathan reads the MMD PMC
22:32 jonathan Looks like we 'just' subclass MultiSub
22:33 Eevee interesting.  spec for Failure is a pretty clever way to combine both "returns false on error" and "throws on error"
22:33 pmichaud yes.
22:33 jonathan pmichaud: Was the final MMD algorithm actually settled upon? Was some kinda topographical sorting?
22:33 pmichaud jonathan: I don't know.  It's in the synopses, I think.
22:34 mj41 joined #parrot
22:37 jonathan pmichaud: Aha, found it.
22:47 Eevee pir.vim is the first vim syntax file I have had to "compile"
22:49 Eevee jonathan: what exactly is this bug in infix:X?
22:50 jonathan my @x = (1,2) X (3,4); for @x -> { say $_ }
22:50 jonathan See S03 for what it should do for (1,2) x (3,4)
22:50 jonathan But it sure ain't doing the Right Thing.
22:50 jonathan (It's meant to give all permutations)
22:51 jonathan Oh, hmm
22:51 jonathan my @x = (1,2) X (3,4); for @x -> $x { say $x } # gives output
22:51 Eevee yeah
22:52 Tene jonathan: try just: for @k { say $_ }
22:52 jonathan Oh, yeah!
22:52 jonathan d'oh!
22:52 * jonathan should learn Perl 6 some day
22:52 Tene I can fix that to work if you'd like, but I'm unsure if it's correct or not.
22:52 jonathan Me either.
22:52 Eevee jonathan: I hear that's a pretty cool language
22:52 Eevee jonathan: er.  do you just get "1\n2\n"?
22:53 jonathan yes
22:53 Tene yes
22:53 Tene Which is wrong.
22:53 jonathan But should get 13\n14\n23\n24
22:53 Eevee that's not even close
22:53 pmichaud list context, again
22:53 jonathan I'm sure it worked at *some* point in the past.
22:54 pmichaud things may be flattening that shouldn't be.
22:54 pmichaud although that's not a clear explanation, either.
22:54 pmichaud because then we'd still see 1\n3\n1\n4\n2\n3\n....
22:54 Eevee my @x := [[1,2] X [3,4]]; for @x { say $_ }
22:54 Eevee that works
22:54 Eevee is = binding more tightly than X?
22:54 pmichaud oh, it may be a precedence problem then.
22:54 Eevee no..
22:55 dalek r27565 | fperrad++ | trunk:
22:55 dalek : [Lua]
22:55 dalek : - translates more opcodes
22:55 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27565
22:55 Eevee or..  wait.
22:55 pmichaud .... does   [1,2] even work?
22:55 pmichaud in rakudo?
22:55 Eevee `my @x := [[1,2] X [3,4]]; for @x { say $_ }` => 13 14 23 24
22:55 Eevee substituting spaces for \n
22:55 pmichaud oh, that looks closer.
22:55 Eevee `my @x = ([1,2] X [3,4]); for @x { say $_ }` => 1 3 1 4 2 3 2 4
22:56 pmichaud I suspect it's the ongoing list context bug.
22:56 pmichaud that really is high on my list of things to fix, but I need to get protoobjects and classes and variables fixed first, I think.
22:56 Eevee `for (1,2) X (3,4) { say $_ }` => 13 14 23 24
22:56 jonathan Ah.
22:57 jonathan Curious.
22:57 * purl hands jonathan a dead cat
22:57 pmichaud note that "13", "14", etc. are probably also wrong.
22:57 Eevee checking spec
22:57 pmichaud I think it should be    1 3\n1 4\n2 3\n2 4\n
22:58 pmichaud (i.e., spaces between the individual elements on each line.)
22:58 pmichaud ...but that feels wrong too.
22:58 pmichaud oh well, I'll let you all work it out.  :-)
22:58 pmichaud (back to protoobjects.)
22:58 Tene Does X return a list, or the elements of a list?
22:59 Ademan joined #parrot
22:59 Eevee "the X operator returns all possible lists formed by taking one element from each of its list arguments"
22:59 Eevee This becomes a flat list in @ context and a list of arrays in @@ context:
23:00 * Tene nods
23:00 Eevee say @(<a b> X <1 2>)
23:00 Eevee 'a', '1', 'a', '2', 'b', '1', 'b', '2'
23:00 Eevee say @@(<a b> X <1 2>)
23:00 Eevee ['a', '1'], ['a', '2'], ['b', '1'], ['b', '2']
23:00 pmichaud I guarantee that rakudo can't yet properly handle     my @a = (<a b> X <1 2>);
23:00 pmichaud er
23:00 pmichaud I guarantee that rakudo can't yet properly handle     my @a = <a b> X <1 2>;
23:00 pmichaud because it doesn't know list assignment yet.
23:01 pmichaud (it may be able to do the paren version.)
23:01 pnutr joined #parrot
23:01 Eevee the code/results I pasted in backticks above are what rakudo actually does now
23:01 Eevee so.  sorta.  a bit.
23:02 mj41_ joined #parrot
23:04 Eevee well..  er.  is the argument list of say() just @ context?
23:04 pmichaud yes.
23:04 pmichaud but note
23:04 pmichaud my $x = [1, 2];   say $x    # "1 2\n"
23:04 pmichaud my @a = 1, 2;    say @a   "12\n"
23:04 pmichaud (forgot a # there.)
23:05 pmichaud the argument list to say is @ context, but each element of the list is evaluated in string context.
23:05 pmichaud and string context on a list joins w/spaces.
23:06 Eevee X acting differently with @ and @@ just seems weird..  and I can't imagine quite so much use for the @ result
23:07 dalek r27566 | jonathan++ | trunk:
23:07 dalek : [rakudo] Stub in a Range class with a couple of methods. Note that we've some work to go before it's ready to be used by the .. operator.
23:07 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27566
23:16 jonathan OK, I think that's all from me today.
23:16 pmichaud great work today, again.
23:17 jonathan Will do write-up tomorrow, it'll be more coherent.
23:17 Tene jonathan++
23:17 jonathan Not that what I've done today has been especially coherent, it's been bits all over.
23:17 Eevee jonathan is going to absurd amounts of karma by the time rakudo is done
23:17 Tene purl: karma jonathan
23:17 purl jonathan has karma of 538
23:18 Tene purl: karma eevee
23:18 purl eevee has karma of 4
23:18 Eevee :(
23:18 jonathan karma pmichaud
23:18 purl pmichaud has karma of 1209
23:18 jonathan :-)
23:18 Tene MOAR COMMITS EEVEE
23:18 jonathan I got some catching up to do with pm... ;-)
23:18 Eevee I don't even have commit access to the parrot repo!
23:19 Tene Send patches to me and I'll commit for you.
23:19 Eevee maybe I will
23:19 Tene Or, y'know, just send 'em to RT and someone else can get them.
23:19 jonathan pmichaud: By the way, it'd be really good if you cross-posted your use.perl.org posts onto rakudo.org - I suspect there may be people who read there that don't read use.perl.org
23:19 pmichaud oh, yes.
23:19 Eevee I will be sure to give you a pre-written commit message that happens to have a lot of code examples involving variables named $eevee and postincrement
23:20 jonathan I find you can literally copy-paste the HTML from one to the other.
23:20 pmichaud for some reason I thought that was happening automagically.
23:20 jonathan Sadly not. :-(
23:20 jonathan rakudo.org isn't an aggregator
23:20 * pmichaud makes it happen manualmagically.
23:20 Tene hehe
23:20 jonathan Cool, thanks.
23:21 Eevee (I'm not sure that's genuine magic)
23:21 confound fake magic
23:21 pmichaud (It is when *I* do it. :-)
23:23 AndyA joined #parrot
23:23 pmichaud uhhhhh.... how do I post to rakudo.org?  ;-)
23:23 pmichaud I don't see a link to log in or to post
23:24 sjansen joined #parrot
23:24 jonathan pmichaud: http://www.rakudo.org/cgi-bin/mt/mt.cgi
23:24 jonathan Do you have an account there? If not, ask Andy.
23:24 pmichaud I'm pretty sure I have one.
23:25 nopaste "japhb" at 76.191.190.8 pasted "Quick hack for finding duplicated lines across files, for those who were around when I asked about that yesterday" (84 lines) at http://nopaste.snit.ch/12994
23:26 japhb Warning: will litter HTML files next to all the files you compare, because I haven't implemented outputting to a separate dir yet.
23:29 pmichaud I have a movable type account but don't see how to post a new article.
23:29 pmichaud the cgi-bin/mt/mt.cgi link keeps taking me somewhere else
23:29 pmichaud I'll have to ask Andy.
23:29 jonathan pmichaud: Did you manage to log in?
23:30 jonathan Try http://www.rakudo.org/cgi-bin/mt/mt.cgi?_​_mode=view&amp;_type=entry&amp;blog_id=6
23:30 shorten jonathan's url is at http://xrl.us/bknvs
23:33 pmichaud I don't have any way of knowing if I'm logged in or not.
23:33 Eevee quality software
23:33 pmichaud I get the "sign in" page, enter my mt username/password, click "sign in" and it takes me to a form to update my profile.
23:34 pmichaud if I follow the link to "original page" it takes me to perlbuzz.com.
23:35 pmichaud oh
23:35 pmichaud hrm
23:35 pmichaud signing out and back in again seems to have worked -- at least to the point of letting me add a comment to existing articles.
23:35 pmichaud now I'll try the mt.cgi link again
23:35 jonathan heh
23:36 pmichaud no, neither of the mt.cgi links work for me.
23:37 pmichaud I'll have to check with Andy, I guess.
23:40 Tene pmichaud: problem with the arity:
23:40 Tene for 1..15 { say "$^b - $^a" }
23:40 Tene ends with:
23:40 Tene 14 - 13
23:40 Tene StopIteration
23:40 Tene >
23:40 purl 1
23:41 pmichaud that's because the List type doesn't understand unshift from an empty list.
23:41 pmichaud or, more precisely, because Iterator stops.
23:41 pmichaud we probably need a new iterator.
23:42 pmichaud I don't know that it's PCT's job to work around this directly.
23:42 pmichaud anyway, it can be filed as a bug ticket so we come back to it.
23:43 jonathan Aye, file a ticket.
23:43 jonathan I'll continue work on the Range object and get its iterator support into shape for this.
23:47 pmichaud PCT will probably change so that it doesn't create the iterator directly, but rather expects its first child to be something that understands 'shift'
23:47 pmichaud (of which an Iterator would be valid)
23:49 tetragon joined #parrot
23:49 codeguy joined #parrot
23:50 jonathan pmichaud: Why not just use the iter opcode?
23:50 pmichaud it's listed as 'experimental'
23:50 jonathan Which in turns calls the get_iterator v-table function...
23:50 pmichaud but yes, using 'iter' works for me.
23:50 pmichaud I'd like it to be a bit more 'official' then.
23:50 jonathan If we start using it and it works, it gets less experimental. ;-)
23:50 pmichaud fair enough.
23:51 jonathan I guess just fire a mail off to the list to make sure there are no plans to get rid of it.
23:51 jonathan But I don't see what it would go away.
23:51 pmichaud well, even if it does go away, it's easy enough to fix things
23:51 pmichaud that's one of the advantages of generated code -- so much less to change when a core component changes :-)
23:51 jonathan :-)
23:57 jonathan OK, I'm off to drink some weird Slovak alcohol and then sleep.
23:57 jonathan Night all
23:58 pmichaud later, jonathan

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

Parrot | source cross referenced