% particle has left particle!~particle@c-24-22-165-145.hsd1.wa.comcast.net % Nicholas has left Nicholas!9z5H6vNQmH@colon.colondot.net % Nicholas has joined #parrotsketch % particle has joined #parrotsketch % mdiep has joined #parrotsketch % Sartak has joined #parrotsketch % pmichaud has joined #parrotsketch % mdiep_ has joined #parrotsketch % Infinoid has joined #parrotsketch % barney has joined #parrotsketch % allison has joined #parrotsketch % allison has left allison!~chatzilla@sub17-30.member.dsl-only.net % chromatic has joined #parrotsketch % Andy has joined #parrotsketch Okay, roll call. me! :) allison was here but disappeared. * mdiep_ <- here * particle is here here % PerlJam has joined #parrotsketch * barney is here % Coke has joined #parrotsketch okay, we'll go ahead and begin. barney? % Ron has joined #parrotsketch been looking at Lisp, continuing with lexicals % allison has joined #parrotsketch catching up after two weeks of vacation .eor chromatic? I fixed several bugs, created a few, and then fixed those too. Next up: fixing src/hll.c, after the release. EOR I have nothin'. I'm just listening. Coke? * chromatic++ for fixing tcl 2x this week. (helped track down the most recent borkage) * All feature-based failures are now TODOd so we can keep an eye on Tcl going forward. . (er, I think I did something else but am blanking.) (seeing the word "blanking" reminds me of "Match Game") Infinoid? * I've been working on libparrot.dll linking on win32, but its been slow going. * I've been working with particle and Ron on it. * I see a 45% speedup when I'm also using ccache. See RT #44809 * I think I just fixed one half of the problem with a config tweak. * Sounds like Ron knows how to fix the other half. * Also, found an optimization for pmc2c that should speed builds up quite a lot. 1; mdiep? - Finished up summer internship, trying to get started back up with Parrot - Very frustrated with Parrot's messy internals - Hoping to get Parrot in a hackable state and figure out what to do with Tcl ^D particle? ~ there are still a number of warnings during compile, which i'll look at today ~ fixed bug in compiler attributes probe preventing them from working with msvc ~ getting t/src/ tests passing, thanks to infinoid++ and ron++ ~ kicked around nqp a little bit--it's fun, but i need to spend more time with it ~ i owe kid51 a response on reconfigure, which i'll do today .end pmichaud? * Preparing for August release -- plan to do the release tonight. * I'm still open for names for the release. * Through irc and mailing lists I see reports of failures on various platforms and languages, which makes me a little skittish about pushing the release. * I'd to get a list of any outstanding issues that might warrant holding the release so they can be fixed. * Updates to NEWS, PLATFORMS, etc. greatly appreciated. ---- * Lots of updates to PCT and NQP this week * Many thanks to perlDreamer++, particle++, chromatic++, and others who have been helping with NQP development. We're very close to having a fully working NQP. * Highlights of NQP and PCT updates: ** NQP can now handle subroutine *and method* definitions ! ** NQP and PCT both have much improved handling of lexicals and symbol tables. ** Created inlined PIR code for builtin NQP operations ** including things like postcircumfix:«< >» ** Better handling for parsing and generation of string literals ** Fixed NQP's handling of statement enders and whitespace. ** Lots of additional tests (perlDreamer++) * I also created a sample PAST builder for abc in languages/abc/src/abc-past.pl, written in NQP. ** NQP can already parse this abc-past.pl -- we just need to fill out the few remaining constructs. ** Namely, we need @(...), 'return', and 'for' ** Since PAST already has 'for' (Coke++), we really only need to design/implement the code to handle 'return' statements. ** I may implement a cheat on 'return' for now. Notably, all of the items implemented for NQP have direct impact and bearing on the perl6 implementation, and greatly simplify it. EOR anyone else here who wants to report? leo? tewk? allison? oh, didn't see you rejoin --- sorry. allison? yeah, firefox crashed on me - I just submitted a mod_perl book to the printer. Half the proceeds are going to the Perl Foundation, so hopefully that'll give us a little more funding for Parrot/Perl 6 development projects. - I've gone half-time at O'Reilly, working only on OSCON, so I'll be full-time on Parrot at least through December. - Next week I'll be at YAPC::EU and plan to spend the entire time hackathoning. Hopefully Jonathan and I will polish off the last bits of the new object model. EOR full-time Parrot: excellent! allison++ oh, one comment I forgot to make -- it will be very likely that in the next couple of days NQP will be able to interface with other libraries written in PIR. In particular, I'm thinking about things like the PIR-based Test library, and perhaps even SDL cool it would be neat to have a SDL demo written in NQP. Details to come. patrick, is there anything we can do to help with the release? well, releases seem to be fairly turnkey nowadays, which is good. I just need to know if there are any particular areas that need focus/checking before I start turning the keys I'm still looking for a name, of course. :-) but I'm sure I'll come up with one. This one might be named in honor of chromatic, for the incredible productivity he's had this month. There's that JIT problem I found with string_bool(), but there are a couple of options there. t/src/compiler.t is the only remaining bit for our win32 fixups. but its skipped right now, so if we don't fix it, I think its still releaseable as-is. (for that, I'll try to pick a colorful name :-) Because of Andy++'s headerizer and cage cleaning, compiling generates a lot more warnings than it used to generate. Are we happy to live with that in a release? I am. We *could* remove the flags for the release. but what's the downside of having them there? (downside) someone installing Parrot from a tarball may get a negative impression pm: cockatiel :) perljam, spinclad: noted! I think we could spin it into a positive. any warning-related bug reports we receive should get forwarded straight to Andy :) "We're working to make Parrot take advantage of compiler warnings to make it a safer build." which is completely true. I'll put a positive spin on it in the NEWS I love the fact that we have the warnings, but we really need a push to get rid of the warnings. We could just disable them when generating the Makefile if there's no DEVELOPING file. allison: Is that facetious? I can't tell. allison: there's been a big push this week for it Part of the goal of the warnings is to raise the awareness! allison: but we still have some ways to go. yup, I'm pleased to see the progress :) Speaking of the warnings though, it sounds like some people would like to remove the floating point comparison warnings. Andy: i presume allison means fix, not hide Should we discuss that? spinclad: yes :) I think if we just got rid of the floating == warnings it would be a huge improvement "remove" or "fix"? and as I mentioned on the list, I'm in favor of the -Wno-float-equal approach "remove for tarball compiles" or "fix" tarball users are a special case pmichaud: I'm concerned that future programmers won't know they're doing the wrong thing. I also like the "less warnings if no DEVELOPING", but someone else would probably need to make that patch. and that can wait for the next release let's call it a 0.5.0 feature What do we lose if we take out the float warnings? Andy: in most all cases I'd agree, in this case (floating ==) I'm not sure that eliminating the warning is worth the workarounds required in this release: Nothing We really have two issues "is it zero" and "everything else" The "is it zero" is 90% of them that should be optimized to an easy way to do it. we need -Wno-float-equal-zero well, the obvious easy way is "f == 0.0" :-) okj I have a meeting. There is no obvious and correct way to do it with a macro, I fear. is there a way that we could have a make target that compiles with lots of warnings like this enabled? I am a convert to andy's way of thinking, leave the warnings in, spin it. nm, that target wouldn't ever get utilized in a useful way coke: noted for warnings in general, any thoughts on the float warning? ... eh. leave it on until we decide what to do. IANACP, so I don't think I'll vote. =-) pmichaud: for the sake of this release, I say leave them fair enough, I'm inclined to agree. for future consideration, I'll add the thought that the 90% of useless "float ==" warnings will tend to make people not notice or bother to check the 10% that might be useful. I think we're done with the warnings issue for today. Any other comments or questions? yeah, that's the problem with our verbose build process in general * mdiep_ has a question mdiep: you're on. Parrot's core pmcs (Integer, String, Float, etc.) morph when you assign to them, like Perl 5 scalars. So `$P0 = new 'String'; $P1 = new 'Integer'; $P1 = 2; assign $P0, $P1` leaves you with two Integers. Tcl has to override all these because it doesn't morph. I suspect not morphing is the more common case. % Ron has left Ron!~rblasch@62-99-200-51.sdsl-line.inode.at should these pmcs morph? or can they be change to not morph? I'm not sure I agree that not morphing is the more common case. this has come up before a "deal with it" will suffice as long as this is a conscious design choice. I'm okay with not morphing by default, but we do need to survey the compiler developers to see what they need would 'n_assign' deal with it? spinclad: it would need a different opcode name, as n_ usually means something else. spinclad: you mean something like assign_morph? make it a separate vtable entry? spinclad: but yes, some sort of "assign_morph" could potentially help no, like n_add creates a new PMC do we have a good sense of how many of our target languages use morphing scalars and how many don't? where add morphs it in spinclad: we already have n_assign for creating a new PMC -- but it's called "set" :-) spinclad: or possibly "clone + set" ok then (I'm still tallying the languages I work with for morphing scalars) spinclad: the key feature of morphing assign is that the PMC register still points to the same PMC perl6 expects to be able to morph scalars nqp doesn't care, because it doesn't support assignment yet -- only binding. But if it had assignment, it would want morphing scalars aye, as will perl5 I think pynie will want morphing scalars -- but that's at the edge of my understanding for the moment if parrot types morph by default, does it mean half of the hll designers are SOL if they don't want that? Infinoid: it might need that we want a set of non-morphing base types Infinoid: no, they just have to override a vtable method. no, it just means they don't get appropriate warnings if they assign incompatible types allison: well, it's a bit more than that what if we make morphing a role I think if non-morphing is the default, language implementors could get morphing by using multiple inheritance (inheriting from both Integer and Scalar for Perl6Int) the base types sometimes morph in unexpected ways mdiep_: would emitting 'set $P0, $P1' work? patrick: aye, this is why I still lean toward non-morphing by default for example. "$P0 = new 'Float' \n $P0 = 2.0" leaves $P0 as an 'Integer' type (or clone + set) spinclad: no, set changes the pointer. (set changes the pointer, which is also what the n_infix opcodes do.) allison: I'd be very happy with non-morphing as long as we have a way to do assignment that morphs. We need that anyway, to be able to morph to non-base types. I'll add this as a question to the PMC PDD need to wrap that up soon I was originally surprised by the morphing behavior of the base types as well, and originally argued against it. I'm still not really arguing for it -- just noting that morphing assignment appears to be a big hole in Parrot at the moment. and so the morphing scalars is the closest we have to that. s/morphing scalars/morphing base types/ can you summarize the features you need from morphing? so I can make sure we cover them sure split 'assign' into 'morph' and 'clobber' we want to be able to do assignment where the target retains its existing type I'm all for an op named clobber, by the way. morph keeps the same PMC container, and clobber doesn't? we also want to be able to do assignment where the target morphs into the type of the source in both cases, the PMC itself needs to remain the same i.e., the PMC register needs to continue to reference the same PMC this is as opposed to 'set', which changes the value of the PMC register instead of the PMC the other item I'm missing is a way to do assignment to keyed indexes in an aggregate i.e., it would ideally be an "assign if exists, bind if not exists" operation. But that can be done in PIR for now. (but it's a lengthy sequence of PIR instructions) this is turning into a more lengthy discussion than I had intended that about covers it from what I've seen. Anything to add, mdiep? so it's three variants on assignment: 'set' throws away the PMC container, 'morph' keeps the same type, and 'clobber' takes on the type of the source? I would think morph <-> clobber morph changes the type of the target, clobber replaces the target with the new type clobber keeps the type and morph takes on a new type? okay (somehow I expect clobber to be really destructive) I'm not sure we need a separate vtable. It's one operation (assignment) that different languages implement differently. I think 'morph' is the wrong word here mdiep: aye, no decision yet on how to allocate the behaviour, just getting a handle on the variants we need to make possible essentially it's the difference between treating the PMC as a scalar (which takes the type of its source) and treating the PMC as an object (which vtables based on the type of the target) 'morph' conforms to the dest, 'clobber' replaces it with the source (different languages implement differently), which makes me wonder again if putting all the language specific info into the pmcs is the way to go. (if I assign to a PMC in Tcl that I got from Python, I expect it work like Tcl, not Python.) coke: not exactly that can be handled by converting on language boundaries, I think. so I don't agree that it's "one operation". It's different depending on if we're treating the PMC as a scalar versus as an object with its own 'assign' vtable. And within a single language there might be need for both. coke: you do expect it to conform to a certain interface (that you can assign to it) in which case the language boundaries really need to be defined. coke: but whether it keeps the same PMC container or makes a new one you really shouldn't care about actually, whether it keeps the same PMC or makes a new one is critical. that's the crux of the whole issue, at least for the languages I'm working in if a new PMC container is created, it breaks binding. A more concrete example: perl and tcl stringify lists differently. If I call a perl lib, get an array-style PMC back, and then print it... should it print tcl style or perl style? coke: and when you really need a variable to act like a native language type rather than an external language type, you just assign the value to a native PMC in my specific example, you can't deep copy containers that way easily, SFAIK. by default it acts like a pure perl array we don't want to mask different languages' behaviours by default allison: and I think that's going to make using other HLL libs quite annoying. because once you mask it, you can't get it back I say that the calling language wins. with PMCs, the callee language wins. I think that's going to surprise a lot of HLL users. well, let's leave the decision until we have a large enough subset of interoperating languages to tell at the moment, we're just guessing 'sfine. # offline okay, to recap my position and perhaps close this out for today I'm find with converting the base types to non-morphing by default, and in fact I prefer that, as long as we have some way to do a "morphing assign". which I'll call a "scalar assignment" for now. okay, and I have a good sense of the parameters we need to cover, so I'll work it into the PDD i.e., I'd like to be able to change a PMCs type and value without having to create a new container for it. Or, if a new container is created, it needs to be in such a way that any references to the old container can now refer to the new one. any other comments or questions for today? It's been one hour. (allison, pmichaud: re morph <-> clobber: for the record, actually no swap there; iiuc you were talking about different ends of the ops and read past each other.) (spinclad: I think it depends on whether we think of the target or the source as being the thing that morphs.) (right, that's the different ends) (ah, I think of the target as the one that morphs) (i was meaning morph the source to the target) (in my case, for a scalar assignment it's the target that changes type, so I think of that as being the "morphing assignment".) if the target doesn't change type, I'd call that a "value assignment". (car (cdr '(foo bar baz))) anyay, I think we're done for today. Good meeting all! See you next week. Send any thoughts about the release to me asap. Thanks! % Infinoid has left #parrotsketch thanks all! % chromatic has left #parrotsketch % pmichaud has left #parrotsketch % Sartak has left #parrotsketch allison: hi - glad that you'll join us in Vienna hi leo me too I hope the collision with Jonathan's talk isn't a problem or scheduled as such I intentionally listed the hackathon as ending just before Jonathan's talk I figured we'd all adjourn to see him speak % Andy has left #parrotsketch yep - makes a lot of sense well I'll try to move hackathon part#2 down after Jonathan's talk allison: you might place some more words towards http://vienna.yapceurope.org/ye2007/edittalk?talk_id=732 allison: schedule done and http://vienna.yapceurope.org/ye2007/edittalk?talk_id=733 the 2nd part after Jonathan's talk % barney has left barney!~bernhard@p549A1C0D.dip0.t-ipconnect.de % mdiep_ has left mdiep_!~mdiep@c-71-205-39-103.hsd1.mi.comcast.net % allison has left allison!~chatzilla@sub17-30.member.dsl-only.net % allison has joined #parrotsketch