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