% moritz has joined #parrotsketch % Whiteknight has joined #parrotsketch % cognominal has left cognominal!~cognomina@82.67.232.89 % rdice has joined #parrotsketch % tewk has joined #parrotsketch % Whiteknight has left Whiteknight!~Whiteknig@c-71-230-33-251.hsd1.pa.comcast.net % davidfetter has joined #parrotsketch % particle has joined #parrotsketch % cognominal has joined #parrotsketch % Auzon has joined #parrotsketch % DietCoke has joined #parrotsketch % Whiteknight has joined #parrotsketch % NotFound has joined #parrotsketch % jhorwitz has joined #parrotsketch % allison has joined #parrotsketch % cotto_work has joined #parrotsketch % smash has joined #parrotsketch % barney has joined #parrotsketch % pmichaud has joined #parrotsketch % chromatic has joined #parrotsketch % wknight8111 has joined #parrotsketch Hello, everyone. * jhorwitz waves Hello! hi greetings ahlan wa sahlan % jonathan has joined #parrotsketch * moritz waves hi Last #ps was on June 10? * barney waves ho there was no PS last week due to yapc::na yes, last #ps was June 10. speaking of yapc... It was nice meeting a lot of you this past week (some of you for the first time!). We've had a lot of movement behind the scenes for parrot in that time, which I suspect others will cover in their reports. let's go allison, particle, jhorwitz, chromatic, pmichaud and then I'll figure it out after that. - The hackathon was very productive, and it was great to spend time talking with Parrot hackers. - I added 2 new opcodes for patrick (on the pdd25 branch) that allow rapid branchs/returns within a subroutine. Currently named 'pbj' and 'pbr', but probably going to change to 'local_branch' and 'local_branch_return' (or something equally lengthy and descriptive). - The rest of my time has been spent on debugging the pdd25 branch. The number of failing tests keeps dropping, but still a few to go. EOR had a few commits over yapc, nothing to brag about face-to-face meetings at yapc were very productive mainly doing parrot foundation setup work, expect that to continue won't have much time for parrot development work until my job situation settles down (no eta) .end YAPC talks went well. Had lots of positive feedback. Not surprisingly, the concept of mod_lolcode generated a lot of excitement, so I worked on it and it's now bundled with mod_parrot. Will have live demos for OSCON. Focus now is on expanding mod_parrot's access to apache data structures to pave the way for other volunteers to work on higher level stuff like mod_perl6. EOR Applied a lot of patches and closed some bugs. Spending some time in IMCC -- made a couple of optimizations and plugged some memory leaks. I'm not sure it's worth anyone's time doing more fixes in IMCC; it's just wrongly designed in a lot of ways that'll take a lot of energy to tease apart. I'd really like to help with pdd25cx, but it's not clear what to do or where to start, and I hate to see it slip another release. Still working with wknight8111 on the new GC; it's getting close. EOR ** Rakudo spectest_regression: 66 files, 849 passing tests (+7, +144 from 06-10) == Overall : Very productive YAPC::NA, glad to see so many of you there == Parrot stuff : Fixed get_parrotclass method of P6object to avoid MMD : Recognize CCLASS_NEWLINE and CCLASS_ANY for unicode strings on systems w/o ICU : Spent a lot of time tracking down lexical and :outer issues == PCT stuff : Updated HLL compiler to automatically transcode source to a fixed-width representation when possible (for faster parsing) == PGE stuff : Added .chars method to Match objects == NQP stuff % cjfields_ has joined #parrotsketch : No changes to NQP -- it just works == Rakudo stuff : Lots of test updates : Updated Range class : Added implementation for Complex : Added an implementation of ternary ?? !! : Many grammar refactors to more closely align with STD.pm : Fixed named 0-ary parsing : Removed some obsolete rules from grammar : Rakudo now parses utf8 characters in source (transcoding to iso-8859-1 for speed when possible) : Created docs/spectest-progress.csv to keep track of spectest progress : tools/test_summary.pl now also summarizes the reasons for skipped tests Queue two items for discussion. EOR. * Tene balances a book on DietCoke's head. * Tene goes now. * Missed YAPC::NA because I needed to find a new place to live * Cardinal parses more competently and about 80% faster * Cardinal hashes can now do some rubyish magic with default values * Start of a smalltalk implementation, under the name ChitChat * Modified the evalbot from #perl6 to support --target={parse,past,pir} and uploading to pastebin for parrot languages * polyglotbot is running in #parrot and supports (kind of) abc APL bf cardinal chitchat lolcode lua perl6 pheme plumhead punie pynia squaak tcl * I don't think it's actually rebuilding the parrot tree, and it needs a couple of minor fixups I'm unlikely to get around to. It's running on feather3. * Started working on implementing gather/take, but I'm apparently blocking on pdd25cx, I think * KTHXBAI * allison queues questions for tene and chromatic * barney kicks in Migrated Plumhead from TGE to NQP. .eor * tewk goes now. I have a $DAYJOB issue; I tag allison. NCI GSoC * Split CPP(pre-processing) out of c99. * Using gcc to pre-proccess c code right now. * moved c99 to compilers/ncigen * Added alot of gnu extension support to c99 parsing. * Figuring out PCT so I can generate PIR signatures EOR DietCoke: okay I'll go then, since it's a free-for-all * I updated docs/memory_internals.pod to be less wrong. * Worked on some other docs, and function-level documentation * Did a little IMCC work, and got .macro_const working in *.PIR files * The new GC is "code complete" and compiles, but doesnt work properly yet EOR * jonathan goes * On last week's Rakudo day... ** Did some refactoring and STD.pm tracking ** Got the does operator for roles in place ** Support for anonymous enum constructor ** Variety of type variable stuff - we can now write generic subs/methods * Parrot core ** Maybe got :instanceof sorta working * Meta ** Need some brain cycles to finish working out how to implement type-parameterized roles; I'm part of the way there, but have been too sick to think about anything hard for the last few days :-| ** Doubt I'll do that on the next Rakudo day (which will hopefully be on Thursday); will maybe look at getting the Method / Sub etc stuff in place, and maybe signature objects too, since they're likely useful for MMD. EOR have we missed anyone? okay, questions, pmichaud had 2 from my post to the mailing list: Any thoughts about short-term fixes for :outer() handling? (RT#56274) also related to the discussion: I now know why RT#56184 is a problem and we may need some substantial re-thinking somewhere. (although fixing RT#56274 may obviate the need to worry about #56184 for a while.) on RT#56274, is this as an alternative to md5 hashed sub names? no. they are totally unrelated. (we could potentially make use of this as an alternative to md5 hashed subnames, but 56274 is really a separate and more problematic issue) for those who didn't read my mailing list post: :outer(...) doesn't give sufficient resolution. but the solution is essentially to have some unique name or id for every sub whether we tack on the the namespace, or generate a unique id if I have .sub 'foo' :outer('bar') and there are multiple .sub 'bar' in the compilation unit, then 'foo' always attaches to the first 'bar'. by compilation unit, do you mean file? yes. (although it could be a string with PIR code.) and, you have multiple subs because you have, say methods and regular subs with the same sub name? yes. or subs that are :multi or multiple namespaces. and that's what really makes this different from the md5 issue -- where I needed a way to locate otherwise anonymous subs. in this case I _have_ to use the supplied name, or do lots of name mangling. multiple namespaces is fixable by using full sub names, but the method/sub/multi problem is more complex the first quick fix didn't work out, is there another short-term solution we could use? couldn't we do name-decoration for multis, like we do for similarly-named ops? yes, name decoration for type of sub could work (not ideal in the long-term) at the moment it's the sub-in-separate-namespaces that is causing the most difficulty. how about a simple user-defined id token that's what I proposed in my mailing list message, yes. .sub MySub :theycallme('Ishmael'), like that? so, you set the token on the sub, and then refer to it :outer. yes. I proposed :lexid or somesuch yup, that works for me, especially since the problem is local to a file make it so mod_parrot assumes that sub names in PIR are the same as in the HLL. as long as that assumption is still valid, then +1. yeah, it wouldn't affect the sub name I like :lexid * jhorwitz seconds and :outer could fall back to sub name if it can't find a given lexid actually, any sub that doesn't provide :lexid uses its name as the lexid it would only affect the way the sub is treated for looking up :outer the patch I tried would always look for the most recent version of a sub, as opposed to the first. That "worked", except that it only worked for .pir files and not .pbc yeah, you can't count on compilation order (I don't know enough about bytecode formatting to know what is needef ro .pbc) er, *needed for .pbc) :lexid is preferable anonymous subs can have a lexid, yes? yes, please. Sure, why not? and, by default, what's the lexid of an anonymous sub? yes, so it solves an earlier problem we had of how to have :outer subs referring to an anoymous sub default lexid of anonymous sub could be PMCNULL (i.e., doesn't have one) particle: it has none by default just like it doesn't have a name. but for named subs, lexid is the name of the sub for named subs lexid defaults to name of sub * particle asks leading questions to get to the heart of the matter right, and anonymous subs have no name, so thaey have no lexid it's a bit confusing, since anon subs do have a name in the source file you have to specify a lexid for an anonymous sub if you want to define an outer block for it but that's just syntax and it's specced if anon sub has a name in the source file, then that's its lexid there's no real conflict there. particle: they do, but only because parrot requires some name you don't want anon subs to have a lexid by default. period. even if they have a name in the pir why not? if they have a name in pir, the :lexid can default to it, might as well since it's there .sub 'foo' :anon ; ... ; .sub 'foo' ; ... any sub that expects to be an outer should provide a :lexid % cognominal has left cognominal!~cognomina@82.67.232.89 in the case you just gave, .sub 'foo' should provide a :lexid failing to provide a :lexid is asking for trouble. :-) but if the name is something like .sub '' :anon (which may not even be valid at the moment, but should be) then it has no :lexid and one could conceivably do .sub 'foo' :anon :lexid('') .sub 'foo' without :anon has a default lexid of 'foo' .sub 'foo' :anon must specify a lexid or it has none particle: yes, and so does .sub 'foo' :anon particle: why require .sub 'foo' :anon to specify a lexid? we'll keep it consistent for sanity there's no conflict if it has one. there's no conflict if two subs have the same lexid? yes, there's a conflict if two subs have the same lexid. but any sub that expects to be an :outer should provide a unique lexid. regardless of being :anon or not. the "default lexid" is simply to keep existing code working. so, how do we check for unique lexids? what about evaled subs? we don't have to check for unique lexids -- that's the responsibility of whatever is generating the code. evaled subs are no different. a lexid hash would associate a single function with a single lexid keep in mind that they only need to be unique within compilation unit, at least with the current implementation of lexicals. (since :outer doesn't cross comp unit boundaries) * DietCoke returns. So you can't eval a sub that has a pre-existing :outer tewk: in the current implementation, that's correct. even so, I'm not worried about being able to generate unique lexids. if my code generator creates an anon sub with the same name as a named sub, neither of which specify :lexid, there's a collision if your code generator is generating subs w/o :lexid, it's broken. which there already is now, :lexid just gives us a way to resolve the collision when there is one ok, so the default is just for humans with silly little code, and code generators will always specify :lexid particle: yes. that works for me. yeah just needs to be documented as such code generators don't have to specify :lexid if they know that a block doesn't have any lexically nested subs. but it's easier to just always generate one. Do we have a volunteer to implement this schemne? that was my next comment -- Rakudo is blocked on a lot of tests due ot this. If someone writes up what needs to happen, I'm happy to poke at this. I've already gone negative on my SAN stat due to recent IMCC work. essentially we're unable to handle lexically nested subs I think jonathan also indicated he might work on it. pmichaud: can you summarize on the ticket the new :lexid() and its interaction with :outer, then c or j can claim it as a todo. will do immediately following this meeting. I'd even be willing to write up a doc patch if someone else writes up the code. =-) % cognominal has joined #parrotsketch my next question is much simpler: Any thoughts on ETA to merging the pdd25cx branch into trunk? the last 6 failing tests are nasty some of them I may just todo, if I can demonstrate that all the languages are working even with those tests failing the biggest thing right now is a few PGE failing tests, and TCL failing to compile I couldn't figure out the PGE failing tests. If you wrote up some information on them, I (and I can guess that NotFound too) would be happy to look at them. I suspect those are related. but I didn't look on it much past the hackathon, so I can look again. I'll take a look and see if I can narrow down what is causing tcl to fail to build. chromatic: okay, though I don't have much more to say than what's immediately obvious from running the failing tests when I last looked at the hackathon, the failures I was getting were pretty opaque. But I need to look again. chromatic: I'll be in Seattle Wednesday night, if you want to do some interactive debugging Let's track any blockers on this ticket: http://rt.perl.org/rt3/Ticket/Display.html?id=54930 Portland, I mean That was my queued question for chromatic The one for tene was what he needed from the pdd25cx branch allison: resumable exceptions pmichaud++ ah, okay, yes, that should work after the merge we want resumable exceptions for gather/take (resumable at a PIR opcode, not resumable at a random C instruction) How should I be getting the continuation to invoke from the exception? Tene, it's passed in when you call 'throw' (implementing lexid) if it's not done by my Rakudo day on Thursday, I can look at it then How should I get it in the exception handler? does pdd25 not say? or is pdd25 out of date? Not that I could find. I'm checking again. sorry, pdd23 is exceptions. Tene: "handled" opcode exception handlers receive a continuation as a parameter, which they can then invoke. % blah has joined #parrotsketch ""Active exception handlers (if any) will be invoked with EXCEPTION as the only parameter. aha, pdd23 is internally inconsistent. yes, the return continuation is stored in the exception % blah has left blah!~blah@82.67.232.89 so, how do we get the continuation from the exception? sorry, interrupted I'll set up a test case as an example that would be awesome. allison: tcl builds in pdd25cx. interactive version seems to work. 'make test' hangs on the first test. % cognominal has left cognominal!~cognomina@82.67.232.89 DietCoke: okay, thanks I'll look at pge issues tonight. any other outstanding questions or discussion points? or did we get them all? I'd also like to welcome moritz++ as a new committer. thanks pmichaud ;) moritz++ allison: I have a backtrace for you. looks like a loop of handler invocations. http://nopaste.snit.ch/13383 :: I just stopped cutting and pasting at #100 okay, I've seen that elsewhere generally when a different exception is thrown in the middle of handling another exception I do that a bit as I often want to translate an exception from parrot-speak to tcl-speak. I'm not sure when "in the middle" occurs, though: once I call get_results, aren't I done handling? catch an exception and throw it differently? there's no op to say "my handler is over." s/it/or a new one/ I can probably track down where in PIR this is happening. it's any time before the handler is popped oh, I bet you're using scoped handlers doesn't a handler get popped upon catching an exception...? handlers are persistent, like event handlers is this strictly for the "push_eh $P0" sort of handler, or also "push_eh label" ? ... er, how does that work? because if I try to pop_eh after a push_eh label, I get an error. I often do push_eh/pop_eh with labels. seems to go off the rails in *** switching to BYTECODE_src/PCT/HLLCompiler.pir under the old implementation, yes # Back in sub 'parrot;PCT::HLLCompiler;init', env 823068c it invokes that several hundred times before, I think, running out of memory and failing an assertion. HLLCompiler? in tcl? I get 8 errors in 'make test' in pdd25cx I'm as surprised as you are. =-) I can keep the old functionality for backward compatibility if there's a new/better way to do this, I can update code in the branch, that's nt a problem. * particle points to #parrot seems like the meeting's over, no? I agree. Oh, no allison there. % cognominal has joined #parrotsketch allison: can you tell me which of the failures in here you're not also seeing: http://nopaste.snit.ch/13384 ? tene: I'm seeing all of those Hm. I thought you said 6. Nevermind. % cotto_work has left #parrotsketch sorry, 6 root causes (I divided up the failing tests by symptoms) ahh, clever. (presuming that the pge failures are due to the other ones. :-) I have to go, DietCoke, I'll think of an alternative for you. With resumable exceptions we can't just delete handlers once they've been called once, because we may resume in a loop, and throw the same exception on the next iteration after the loop Ok. if I have to add something to clear the _eh from inside my handler, I can do that. I wonder if that's the cause of some of the other issues you're seeing. ~~ yes, it likely is the cause of one, now that I think about it doesn't rethrow do that, or does rethrow only work on the same exception object? clearing the handler from inside the handler would work I don't have a problem with clearing the handler (pop_eh?) inside the handler -- it was really what I expected to be doing. But that didn't seem to work in current Parrot. tene: rethrow isn't the same as throwing a different exception expecting the same handler % cjfields_ has left #parrotsketch pmichaud: yah, that doesn't work in trunk. it was pre-cleared. pmichaud: it doesn't work in current parrot, because current parrot does delete the handler as soon as it retrieves it (one of many reasons exceptions weren't resumable before) right, no problem. just need to know what to switch to :-) Want us to start adding in the pop_eh's in the branch? (It's not just tcl using that style.) DietCoke: see if it fixes the failing test, and if so, add it pge and pct have quite a few push_eh's that don't have pop_eh's (at least, don't have them when the exception is caught) if it doesn't fix the failing test, then it's not needed well, I'm going to have to add it in a LOT of places to verify that it worked. =-) pmichaud: that could very well explain the failing PGE tests let's give it a shot, we can always rollback. DietCoke: just the ones relevant to that first failing test should do the trick that will still take some time, but ok. =-) I'll have to do mine a bit later -- have other tasks on my stack that need to be addressed first. (but should get to it tonight/tomorrow morning) I'll plan on putting them in right after any .get_results in the label. okay, I have a shorter way to test this... (auto delete the handler!) committing a fix that deletes the handler when it's first invoked hold on (we can always change it later when we need it for more complex resumable exceptions try r28685 and, I really have to go now, I have a meeting in 3 hours, in a town that's 3.5 hours drive from where I am now gogogo get a helicopter ;) email me the results of testing :) % allison has left #parrotsketch % jhorwitz has left #parrotsketch % chromatic has left #parrotsketch % smash has left smash!~smash@gil.di.uminho.pt % Auzon has left #parrotsketch % NotFound has left #parrotsketch % barney has left barney!~bernhard@dslb-084-058-131-114.pools.arcor-ip.net % jonathan has left #parrotsketch % Whiteknight has left Whiteknight!~Whiteknig@c-71-230-33-251.hsd1.pa.comcast.net % rdice has left rdice!~richard_d@CPE0014bfafbbd5-CM0011e6ecf48a.cpe.net.cable.rogers.com % japhb has left japhb!~geoff@76-191-190-8.dsl.static.sonic.net % wknight8111 has left wknight8111!~nobody@c-71-230-33-251.hsd1.pa.comcast.net % japhb has joined #parrotsketch % rdice has joined #parrotsketch % japhb has left japhb!~geoff@76-191-190-8.dsl.static.sonic.net % japhb has joined #parrotsketch % particle has left particle!~particle@c-98-232-28-49.hsd1.wa.comcast.net % davidfetter has left davidfetter!~davidfett@start.fetter.org % rdice has left rdice!~richarddi@CPE001ff33cb98b-CM00159a01d44c.cpe.net.cable.rogers.com % particle has joined #parrotsketch % cognominal has left cognominal!~cognomina@82.67.232.89 % paco has left paco!~chatzilla@139.Red-80-36-122.staticIP.rima-tde.net % pmichaud has left pmichaud!pmichaud@feather.perl6.nl % ilbot2 has left ilbot2!moritz@faui2k3.org % PerlJam has left PerlJam!duff@193.200.132.135 % moritz has left moritz!moritz@ssh.faui2k3.org % leo has left leo!lt@feather.perl6.nl % cognominal has joined #parrotsketch % pmichaud has joined #parrotsketch % moritz has joined #parrotsketch % paco has joined #parrotsketch % leo has joined #parrotsketch % ilbot2 has joined #parrotsketch % PerlJam has joined #parrotsketch % japhb has left japhb!~geoff@192.82.17.44 % japhb has joined #parrotsketch % contingencyplan has left contingencyplan!~contingen@cpe-76-186-27-146.tx.res.rr.com