% avar has left avar!~avar@dsl-228-236.hive.is % avar has joined #parrotsketch % avar has left avar!~avar@dsl-228-236.hive.is % avar has joined #parrotsketch % mdiep has left mdiep!~matt@bursley-219-72.reshall.umich.edu % mdiep has joined #parrotsketch My pre-pasted report: - Working on a couple C-level patches in my spare time - 41511 Parrot_call_sub* Incompatible with Multisubs - 40490 Flat/Slurpy Named Parameter Passing Errors - 39844 [BUG] Parrot doesn't do args checking for a sub without params - The code there is too convoluted to understand. Trying to rewrite/refactor (making the patches harder and more substantial). - In particular, parameter passing uses a state machine. This makes things more complicated than I think they need to be. - 0.4.11 is 2 weeks away: - People haven't been tackling tickets like I'd hoped they would: http://xrl.us/veso - I suspect everyone is busy with other things Question: 1. I briefly looked through PDD15 and noticed there are a lot of methods on the Class and Object PMCs. How do you envision this working with languages that don't have those methods? For example, a Python class should use the invoke vtable for object creation - not a "new" method. I think this means that if Python wants interop it would have to create *two* PMCs for a class: one that maps to Parrot and one that wraps to Python. This is mdiep: question cut off at "this is" I briefly looked through PDD15 and noticed there are a lot of methods on the Class and Object PMCs. How do you envision this working with languages that don't have those methods? For example, a Python class should use the invoke vtable for object creation - not a "new" method. I think this means that if Python wants interop it would have to create *two* PMCs for a class: one that maps to Parrot and one that wraps to Python. This is the reason for vtable functions. % kjs has joined #parrotsketch % pmichaud has joined #parrotsketch % smash has joined #parrotsketch % jonathan has joined #parrotsketch % bernhard has joined #parrotsketch % allison has joined #parrotsketch % chromatic has joined #parrotsketch % Coke has joined #parrotsketch hello, everyone. No agenda today, just the usual reports + questions. hi coke hi everyone coke: I thought I had a discussion item, but I'm now recanting that allison, why don't you go first. (then bernhard, chromatic, jonathan, mdiep, particle, pmichaud, smash, tewk). (if anyone can spot my devious ordering scheme, I'll give them a cookie) - I spent the week working on the objects PDD, and am just about to move it out of draft. I know! it's alphabetical! (curses. there goes my cookie. and I see mdiep has already reported) - Then I'll spend a couple of days on Punie, as a reward/break. EOR Removed config/auto/bc.pm Refactored TGE grammor of 'Plumhead partridge' END_REPORT I like cookies, except with raisins. s/or/ar/ I continued to try to release all memory at shutdown. I applied most of speters' patches. Yay. I tracked down a couple of bugs and reported a few more. I'll take a look at any open ticket on the list that anyone asks me to look at, starting with the nested structs issue. EOR Not had so much time in the last week, but mostly been doing PDD15 stuff in what I've had... * C3 MRO now works, so inheritance in the new class model works as it does in the current one; we'll go pluggable sometime, when it's specced * Roles made up of other roles are now implemented, added some tests too * Made role conflict resolution match the changes to PDD15: implemented resolve, changed semantics of alias and s/without/exclude/ * Class.new() now accepts a slurpy hash and sets the attributes * Implemented can and get_class v-table methods for the Object PMC Got some questions for question time. .end * Very happy to see allison++ clarifying lots in PDD15, and done various postings on list to further clarify stuff/suggest stuff * Other than that, did a couple of PCC* fixes, including to the new Parrot_PCCINVOKE by tewk++ danke. particle? ~ the majority of my code this week was the Exporter PMC ~ it's close to complete, but MMD and PCCMETHODs don't play nice yet ~ reviewing dickdawg++'s new implementation of ecmascript v3 -- looks almost ready for initial commit ~ i modified the style of pmc documentation a bit in Exporter. it's much clearer, and more complete. i suggest everyone should start documenting pmc source this way ~ likely i'll write something up to the list, but i wanted to announce it here so folks in attendance can review and offer comments .end Commentary: * allison++ # long-needed improvements to objects PDD * jonathan++ # long-needed improvements to object implementation Current status: * Finally back at work on Parrot this week after lots of real-life distractions throughout March. * Today I'm working on implementing some of the S05 changes into PGE, especially the new quoting rules. * Should have those checked in today * This will involve adding a new --syntax option to 'pgc', so that systems using pgc can specify the grammar syntax to be used for the input * Default will initially be --syntax=PGE::P6Regex * Today/tomorrow I'll be updating the perl6 and pynie grammars to the new syntax * I also want to convert to the new Exporter interfaces * Then I'll be chipping away at 01-sanity/ again, probably initially starting with 'for' loops * However, if there's likely to be any change to Iterator (cf: recent messages to parrot-porters) then perhaps I should target something else first .end "no report" ok. tewk's last... unless I missed someone? ok. questions. pmichaud? pmichaud: i wouldn't wait for iterator, if i were you. those discussions have gone on for decades (so it seems) with no real action yet particle: noted 18:39 ~ likely i'll write something up to the list, but i wanted to announce it here so folks in attendance can review and offer comments is it worth writing up that something as a pdd? (EOQ) pmichaud: yes, once we've come to agreement, it should be documented also, where *is* Exporter? Is it a built-in PMC? in the meantime, the wiki is a good place for us to come to agreement? yep, src/pmc/exporter.pmc oh coke: sure, i'll start a wiki page, and publish the link to p2 so, is the documentation format really more appropriate for C-based code, or does it work well for PIR-based stuff also? pmichaud: i haven't thought beyond c-based pmcs perhaps it could be extended okay, for some reason I was expecting Exporter to be pir-based instead of C-based I've found the C-based descriptions don't work quite so well for pir-based subs and methods now that we have pcc in c, we get the best of both worlds PCC is only one part of the work needed to make C and PIR play nice together. I'll save my remaining comments for the mailing list or the wiki (or #parrot) ok. Jonathan, your questions are up next. * jonathan tries to remember them all First, a kinda practical one. A recent on-list discussion suggests that Class is the base of all classes *but* it just implements the v-table methods, so it's good for HLL implementers to extend (if it gives the semantics they want) And the one with all the nice sugar (methods et al) is called ParrotClass. In fitting with [OtherHLLNameHere]Class Trouble is, we already have a ParrotClass PMC, and I suspect I'm going to break lots of stuff that currently works if I just change it to use the new PDD15 stuff. actually, I'm leaning more toward the role implementation anyway Particularly as the new implementation doesn't know how to inherit from PMCs yet, which is unspecced and problematic. (problem being that we don't have roles in low-level PMCs yet (role implementation)++ Yes, exactly. And PMCs are potentially changing quite a bit generally, with all the various proposals on the table. Roles could make the C-based PMCs much simpler too. i'd like to keep the vtables flat, though so, create a subclass called ClassMethods, for now, and when we implement roles for PMCs we can change it to a role I'm not sure I really want to see people being able to use the new PDD15 stuff blocking on changes to PMCs. OK, sounds good. Or, for that matter, keep the methods in Class for now and split them out when we have roles OK, that's fine too. Let's do that. jonathan: did you have another q? allison: Are the PMC changes next in your design TODO list? that's actually my q for the day, when you're done with your qs Which I think he is. tag you're it. I think that's enough for now. :-) Okay, the question is, which PDD is currently the greatest blocker for forward progress? I'll work on that one next. My list of candidates are threads and events, low-level PMCs I have no preference atm. =-) IO PDD depends on PDD15 and figuring out interation between that and PMCs. Objects (and an implementation for it) has been my biggest blocker. I'm not sure of any other blockers at the moment. threads and events are both needed for the implementation of I/O So my vote is getting low-level PMC stuff sorted. Seems like figuring out how to inherit from low-level PMCs would fix a lot of bugs. They're needed for parts of I/O. my vote is also pmc inherit from low-level PMC is something I definitely need at this point low-level PMCs are needed for getting the inheritance to high-level objects (what c said) okay, PDDs 4 and 2 it is, then Yay. datatypes and vtables? what about pddxx_pmc.pod? or cstruct, for that matter? i suppose they're all related pddXX_pmc leo is proposal on cstruct s/leo is/is leo's/ and will be rolled into the other pdds though, I can definitely see possibilities for moving much of the details on pmcs out of pdd4 on datatypes there's also pdd17 basic_types And PDD8 ;-) yes, which needs an overhaul, but later (17, that is) ok, so a definition of low-level pmcs is my next goal i expect our basic types will be our roles, plus more and I'll be pulling input from PDDs 2, 4, 8, 14, 17, and 2 XX proposals (and possibly rearranging them into more sensible groupings of related concepts) thanks and EOQ any one else with qs? I'm giving a talk at PDX.pm next Wednesday about the design of Parrot and PIR. * particle idly wonders if he can attend who's presenting at yapc? (yapc proposals due this week) I'm submitting a proposal (haven't yet) patrick, are you talking there, or too busy organizing? I'll probably submit mine. I'm definitely planning to talk, yes ok, good (I'm not at all involved in organizing yapc, afaik) allison: You know what you're proposing for YAPC::Europe yet? Don't want to submit anything conflicting... Or could just submit whatever and let the organizers figure it out. :-) jonathan: I submit a Parrot overview talk and a parrot internals talk leo won't be presenting at YAPC::EU, because he's too busy organizing Good job I asked, I was going to submit the second of those myself. :-) (internals) is it worth submitting anything about pynie? I'm probably submitting a yapc paper. we should coordinate on the list. jonathan: well, let's email about it, we might share it, or divide up the topics (or perhaps the wiki) or is that too off-topic for perl? i think anything parrot related is fair game. pmichaud: it's not too offtopic, it's a good example of parrot's capabilities Perl 6 might be more on-topic. allison: Sure. pmichaud: i don't think it's off topic at all, for a dynamic language virtual machine well, especially since I put pynie together in <1 day :-) So, is anyone not having fun? at least the initial working compiler :-) write python in less than 24 hours actually, that might be a good talk title "How to write a python compiler in less than 1 day using Parrot" coke: definitely having fun :) anything left for me to present at yapc::europe ? smash: of course coke has turned invisible shadow puppets with parrot after everyone submits their presentations i'll see if i can talk about anything else don't have to worry about yapc:na overlapping with yapc:eu talks, I don't think. nope, but i'm guessing some ppl here will attend yapc::eu smash: I'll start an email thread with you, me, jonathan, and anyone else who's interested in speaking about parrot at yapc::eu % mdiep_ has joined #parrotsketch plz don't start the thread with me, i'll reply when appropriated should i expect mmd to work with pccmethods? alrightee. anyone have anything else? As always, feel free to ping the list in between meetings. particle, yes. But not now. * particle wants a ponie I'm not a huge fan of the way Multi works... fresh out, sorry. okay, this will mean that Exporter.'import'(src, dest, 'list of globals') won't work for a bit, yet But it seems that the PCCMETHOD could check if it has a multi, then push the sub onto the array. Making that work would involve implementing something like a MultiNCI PMC, analgous to MultiSub. you'll have to array = split ' ', 'list of globals' first At least, I guess that'd be the way to go about it. The only problem is identifying conflicting signatures. I think we only do that today at call-time with PIR multis? Okay, so for now that's not a problem. Eventually we might need to do it at declaration time. Sure. particle: cannot 'import' get a PMC as the third argument, and then do a split if it's a String? instead of trying to use MMD to handle it? oh, i think i'm mixing things up yes, it can, and will :) I see in the PDD list there's no MMD PDD. Guess one day there should be. jonathan: please open a ticket. =-) (no MMD PDD) that's been brought up before shouldn't mmd be part of the parrot calling conventions PDD? mdiep_: would you care to re-iterate your question? allison: Up to you, I don't mind where it is, provided it's spec'd. you're the architect. you tell us. :-) lol :) Coke: sure. * jonathan will file a generic "please spec MMD" ticket. :-) I'll add "look at PCC PDD and see if it needs MMD split out" to my list jonathan: yes, thanks i expect pccmethod et al will end up in the calling conventions pdd, as well *nod* ...i'm editing that dev doc now. particle: yes, makes sense The documentation for PCCMETHOD needs updating to mention Parrot_PCCMETHOD - will try and get to taht this weeek if nobody beats me. I was looking over pdd15. There are a lot of methods on the Class and Object PMCs. How do you see those working with HLLs that might not have those methods? For example, Python doesn't have a "new" method on its classes. Do you anticipate Python creating 2 Class PMCs? One for internal and one for external/interop use? mdiep: ah-ha, you've hit upon the mailing list thread from last night mdiep_: They're all going to become v-table methods, and then a role will be mixed in provided the methods. s/provided/providing/ mdiep: great minds think alike allison: ah, okay. I've fallen a bit behind on list traffic. :-) mdiep: I love the independent verification "this is a good idea" (I'll check in the changes soon after parrotsketch is over) allison: We also have a void become_parent(PMC* class) Should that go? allison: from what i read, you're thinking about a single new vtable item, right jonathan: that tells a class to add itself as a parent of another class? I'm...really not sure. :-) I guess so! ok, I'll look at it It feels...wrong. welcome to parrot development! if so, I'd favor add_parent over become_parent allison: There is both. add_parent - adds a parent to a class # you'd expect this... become_parent - er, add yourself as a parent to a class # weird... unless there's a substantially good reason to have both, I'm inclined to delete become_parent Me too. but, I'll look at it Sure. anything else? particle: You asked allison, but - I think a couple of new vtable methods. add_role, and inspect Maybe remove_role too Nothing else from me. particle: or did you mean, a single vtable item for 'new'? i meant a single for meta stuff, like jonathan said inspect, that's the one the smaller we can keep the vtable, the better for it to fit in caches etc yeah, rather than relying on keyed access or attribute-level access, which may vary for different HLLs another way to organize would be to hang a pointer to another vtable off it the invoke vtable could actually work well as "new". it buys us some things that could be nice. (pir subclasses of PMCs don't enter a secondary runloop with invoke()) so class/object based methods are one more indirection $P0.inspect.thingy() (the notional equivalent) yep yeah, it's possible We don't really have anything to support nested v-tables at the moment though. I've been thinking of introspection more like keyed access by name * jonathan would be happy to avoid the complication and go with an inspect v-table method taking a string name of what to get. there may be cases where you need more than that... I'm not sure they're common enough that they make overriding 'inspect' problematic I'll leave it bubbling in the back of my brain for a while thanks! you may want to check src/ops/experimental.ops, which has: classname, getclass, new, instantiate, etc oh, and pmcinfo yeah, I was looking at pmcinfo last night (as well as new and instantiate) fab it's not too far off (pmcinfo, that is) yes, it could work and I liked the name 'instantiate' better than 'new' (we don't need both) * particle mutters something about huffman huffman is why introspection doesn't get a hundred different method names vtable method names, that is i'm beginning to see a world where most pir is human-generated, and compilers go from past -> pbc but, i digress that's a good point IMO, the main thing we need for that to work is a stable spec of POST, then someone can implement BCG. (Bytecode generation, from POST) I mainly diverged from 'new' because of the confusion when instantiating classes, versus instantiating roles Instantiating roles? er, meant to type objects heh. i can see the confusion (in fact I specifically thought "type objects, you don't mean roles" and then typed roles) EPEBCAK darn, and i missed my chance to add that error code to parrot for april fool's :) sounds like we're about wrapped up, I'm going to find some food thanks all! see everyone next week. thanks! % chromatic has left #parrotsketch % smash has left #parrotsketch % bernhard has left bernhard!~bernhard@p549a1cb9.dip0.t-ipconnect.de % kjs has left #parrotsketch % jonathan has left #parrotsketch % pmichaud has left #parrotsketch % Steve_p has joined #parrotsketch % dickdawg has joined #parrotsketch % avar has left avar!~avar@dsl-228-236.hive.is % mdiep_ has left mdiep_!~matt@udhcp-macvpn-313.public.engin.umich.edu % particle has left #parrotsketch % particle has joined #parrotsketch % particle has left particle!~particle@144.81.84.207 % avar has joined #parrotsketch % particle has joined #parrotsketch % particle has left particle!~particle@144.81.84.207 % particle has joined #parrotsketch % particle_ has joined #parrotsketch % particle has left particle!~particle@144.81.84.207 % particle_ is now known as particle % avar has left avar!~avar@85.197.228.236 % avar has joined #parrotsketch % particle has left particle!~particle@144.81.84.207 http://nopaste.snit.ch:8001/9859 http://nopaste.snit.ch:8001/9859 http://nopaste.snit.ch:8001/9859 http://nopaste.snit.ch:8001/9859 % dickdawg has left dickdawg!~richard@136.159.broadband2.iol.cz % dickdawg has joined #parrotsketch % avar has left avar!~avar@dsl-228-236.hive.is % avar has joined #parrotsketch % particle has joined #parrotsketch