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