% masak has joined #parrot % Zaba has joined #parrot % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru % ejs has joined #parrot % IllvilJa has left IllvilJa!~jilves@emea-netcache1.oracle.co.uk moritz: previous versions of rakudo retuns "-0"... % ejs has left ejs!~ejs@162-145-124-91.pool.ukrtel.net % ank has left ank!~ank@ppp121-44-210-24.lns1.hba1.internode.on.net % bacek_ has left bacek_!~bacek@mcas-151.usr.optusnet.com.au % bacek_ has joined #parrot DietCoke: were you being helpful, or is the separate "set svn props" commit a problem that I should work to avoid? % Casan_ has joined #parrot r27842 | fperrad++ | pdd25cx: : [build] : - fix compiling of pdb diff: http://www.parrotvm.org/svn/parrot/revision?rev=27842 ping pmichaud I can't find pmichaud in the DNS. pmichaud: ping it so not in perl style... It should be same action! nopaste? http://pasta.test-smoke.org/ or http://paste.husk.org/ or http://nopaste.snit.ch:8001/ or http://rafb.net/paste or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ it has been said that nopaste is at http://nopaste.snit.ch/ (ask TonyC for new channels) or http://rafb.net/paste or http://paste.husk.org/ or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ or don't bother me while I'm eating or App::Nopaste allison@perl.org | A foundation for Parrot: link: http://www.perlfoundation.org/parrot/index.cgi?a_foundation_for_parrot dalek's url is at http://xrl.us/bkxq5 "bacek" at 211.29.157.151 pasted "Propogating result from try{} block to caller (for pmichaud/jonathan to review)" (35 lines) at http://nopaste.snit.ch/13075 see everyone in couple of hours. % bacek_ has left bacek_!~bacek@mcas-151.usr.optusnet.com.au allison@perl.org | Articles of Incorporation: link: http://www.perlfoundation.org/parrot/index.cgi?articles_of_incorporation dalek's url is at http://xrl.us/bkyfj % ank has joined #parrot % iblechbot has joined #parrot allison@perl.org | A foundation for Parrot: link: http://www.perlfoundation.org/parrot/index.cgi?a_foundation_for_parrot dalek's url is at http://xrl.us/bkxq5 % ejs has joined #parrot r27843 | kjs++ | trunk: : [DEPRECATED] deprecate '.namespace \n' in favor of '.namespace []\n' to indicate root namespace. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27843 % kj has joined #parrot % Casan_ has left Casan_!~IceChat7@users163.kollegienet.dk % masak has left masak!~user@nl119-200-240.student.uu.se % kj is now known as kjs_ kjs? somebody said kjs was Klaas-Jan Stol from The Netherlands or KHTML (read Safari/Koqueror)'s JavaScript engine... or called kj these days. % kjs_ is now known as kj % ruoso has joined #parrot r27844 | kjs++ | trunk: : [DEPRECATED] add a 'post ' note to the .namespace (no brackets) item. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27844 % ejs has left ejs!~ejs@80.91.178.218 % ejs has joined #parrot % IllvilJa has joined #parrot % ejs has left ejs!~ejs@nat.ironport.com % ejs has joined #parrot % AndyA has left AndyA!~andy@82.152.157.85 % AndyA_ has joined #parrot karma kjs kjs has karma of 670 karma kj kj has karma of 5 kj, slightly different :) karma purl purl has karma of 8084 % kid51 has joined #parrot % ejs has left ejs!~ejs@nat.ironport.com % ejs has joined #parrot % rdice has joined #parrot % ^conner has joined #parrot <^conner> holy crap, I'm still an op ;) <^conner> anyone have advice as to a decent php5+mysql hosting company? r27845 | jkeenan++ | searchdocs: : Instead of storing dummy .ops files in the repository -- which would require adjusting several coding standards tests so that these files would not cause them to fail -- store them in samples.pm as exportable variables. Adjust tests accordingly. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27845 % kid51 has left kid51!~jkeen@pool-71-247-44-26.nycmny.east.verizon.net % iblechbot has left iblechbot!~iblechbot@172.17-dial.augustakom.net % tetragon has left tetragon!~seneca@gw-312-705.somanetworks.com purl-- DietCoke: what? hah, no wonder his karma is so high! % gryphon has joined #parrot % jhorwitz has joined #parrot seen pmichaud pmichaud was last seen on #parrot 6 hours and 32 minutes ago, saying: try one of those, bacek :-) pmichaud was last seen on #parrot 6 hours, 31 minutes and 58 seconds ago, saying: try one of those, bacek :-) hey! 2 bots are too many for this channel! % Whiteknight has joined #parrot I iz also a bot. bacek also bot is % bacek is now known as C3PO I know billions of languages. What to translate something? % C3PO is now known as bacek pon pong % Patterner has left Patterner!~Psyche@e177239003.adsl.alicedsl.de pmichaud, good evening :) pmichaud, http://nopaste.snit.ch/13075 % Psyche^ has joined #parrot % Psyche^ is now known as Patterner is the general consensus that we should deprecate ".namespace" in favor of ".namespace []"? I know that RT#48549 said that we should enable the ".namespace []" form, but that ticket was silent (until kjs' post) on deprecating the old version. pmichaud, Is it "right way" or I miss something crucial? can't re-declare the same lexical in a scope. (the :isdecl(1) ) I have no preference. it's the sort of thing we can optimize for compilers instead of humans. pmichaud: when I proposed the .namespace [] syntax, I think i explicitly mentioned to do so in favor of deprecating .namespace kj: I would've commented then if that was the case. I'd rather not have 2 notations for the same thing pmichaud, ? somebody said pmichaud, was there an NQP test suitable for profiling? we already have 2 notations for the same thing for example, when using set_hll_global, to get at the root namespace requires not having any key. i.e., set_hll_global 'foo', $P0 and not set_hll_global [], 'foo', $P0 (the latter is currently a syntax error) yeah but that's op syntax * bacek summon pmichaud but he ignores me... :) although one can do $P1 = new 'ResizablePMCArray'; set_hll_global $P1, 'foo', $P0 my point is simply that we do have a syntax where a non-existent [] means "root namespace". anyway, I'm like Coke -- it's not a big enough deal for me to argue. But I was surprised that ".namespace" is being deprecated. I mean, if '.namespace' is preferred to indicate the root namespace, well, then IMHO, if that's the preference of the majority, let's stick to that, and not introduce another very similar way of saying the same thing; it'll confuse people later on I'm not saying ".namespace" is preferred. I'm just not in a rush to deprecate it. :-) r27846 | Whiteknight++ | gsoc_pdd09: : [gsoc_pdd09] merging from trunk r27845 diff: http://www.parrotvm.org/svn/parrot/revision?rev=27846 bacek: can't redeclare the same lexical in the same scope (the :isdecl(1) on '$!dummy') also, '$!dummy' could be an actual variable. pmichaud, there is only one lexical declaration. what if there are two 'try' blocks in the same scope? pmichaud, what is good name for such vars? pmichaud, I hope they introduce new scopes. yes, but the $!dummy you're introducing is in the outer block of the try, not in the inner block. or perhaps I'm misreading the code. at any rate, better would be to not use a lexical at all. pmichaud, is there are better way to do it? I'm sure there is... just don't know what it is yet. haven't looked at 'try' in months. pmichaud, me either :) PCT should return the result of the inner block as the result of the try. last statement in inner block is cleanup of $! (before my patch) so it returns Undef... maybe that should be first statement of inner block :-) pmichaud, no... What if I'll try to check $! under try block in CATCH? well, if CATCH is invoked then $! has already been set to the exception but yes, the inner try block should probably start with $! set to OUTER::<$!> pmichaud, I'll try to implement this. I think you may need the new 'register' PAST::Var node that has been discussed. then the results of $past could be held in a temporary register pmichaud, probably. google isn't very helpful with '%r'... pmichaud: (no rush in deprecation) ok maybe I assumed too much. It's only a small thing, but I like consistency and clarity. kj++ # consistency and clarity :-) :-) I don't know how much PCT currently relies on null namespace being representable as "" because PCT does know that it cannot always convert a namespace into "[]" in particular, the 'key' method of the CodeString PMC knows to convert a namespace with zero components into "" and not "[]" (and that feeds into set_hll_global, set_global, etc.) ooh ok. so it's not as simple as I thought then. oops. Now that I look at CodeString.key, it looks as though it converts a namespace with zero components into "]" (which is obviously wrong). I might need a test for that later. bacek: I'm thinking that perhaps 'try' nodes should have the equivalent of an 'else' parameter so that we have: PAST::Op( :pasttype('try'), $block_to_try, $catch_block, $exit_block ) where the result of the node is always the result of $block_to_try pmichaud, probably. But I didn't dig in PCT so much to give any useful feedback. pmichaud: like a try/catch/finally from java? that would be nifty. (being able to dispatch based on exception type would also be nifty, but probably overkill atm. =-) well, not exactly 'finally', because finally always executes even if an exception was thrown my 'else' is if an exception wasn't thrown pmichaud, is there anything similar to C++ destructors in parrot? bacek: that's been the subject of many discussions on parrot-porters that I've never bothered to follow very deeply. :-) pmichaud, :) bacek: so the answer is "I don't know". pmichaud: your else is the catch, right. but I saw "exit_block", which I mapped to "finally" in my head. pmichaud, anyway, idea with loading to $! value of OUTER::!$ I like more than changing of try block. bacek: well, loading $! to OUTER::$! will happen anyway as part of a standard block prologue. But we still need to "unset" $! if the try block succeeds. at least I think that's the case. pmichaud, ok. But in PIR both versions of 'try' will be exactly the same. what the point? rumour has it the point is that tom_g would prefer to have consistent coredumps than unpredictable ones :) no, in PIR they would end up being different. purl, LOL! * purl stabs bacek in the face for crimes against English the difference being in what PCT reports back as being the result of doing @a = try { ... } purl, wnat to learn some russian? bacek: bugger all, i dunno pmichaud, ... Can you explain little bit more? currently 'try' nodes return the value of the inner block as the result of the try pmichaud, yes in rakudo, we're adding an extra "$_ = undef" statement to that inner block so the result of the 'try' block always ends up being $!, which isn't what we want (change $_ above to $!) if we add an 'else' block to the try node then we would put the $! = undef as part of the else block pmichaud, yes. And passing exception to caller is language specific. and the try block would continue to report its inner block as its result why we should change common interface of PAST to support rakudo-specific behaviour? since the inner block no longer contains the $! = undef statement, the result of the try would be the (true) result of the inner block other languages may also have a situation where they want to do things that are not part of the inner block i.e., I'm not sure it's rakudo-specific behavior. pmichaud, this is how my patch works :). In a nutshell it generates '$Pn = closure(); ; .return($Pn);' yes, I know that's how your patch works. I'm thinking that the more general solution might be to give 'try' blocks the equivalent of an else clause what the difference with your proposal? I don't need to generate the extra register but how you'll call cleanup code without storing result somewhere??? in other words, I'm thinking that having an 'else' block is actually the more generic solution because in PAST I can explicitly say which block provides the result. i.e., PAST knows the results of all of the blocks. or, put another way -- the result of a block is always held in a register somewhere pmichaud, always storing result is bad idea... (well, unless the block is called in void context, in which case the result isn't stored) it will prevent some possible optimsation (or made them harder to implement) but that doesn't apply in this case, since in your example the block is explicitly being called in a non-void context. here, I'll type up the differences in the two approaches just a sec ok (have to re-build rakudo) % ejs has left ejs!~ejs@nat.ironport.com rebuilding rakudo takes half an hour on my old-good laptop... already done here. :-) pmichaud, :) afk for 10 minutes "pmichaud" at 76.183.97.54 pasted "for bacek: PIR differences in try approaches" (36 lines) at http://nopaste.snit.ch/13077 pmichaud: how about creating PAST::Block types for pre- and post-block. basically, hooks that can do setup/cleanup on *any* block, and using them for 'try'. they could do setup like $! := OUTER::$! and cleanup like $! = undef, without affecting the return value I've been thinking about that also. i'd *really* like hooks like that for profiling, debugging, etc well, we need them for ENTER/LEAVE and the like also. putting them into PAST would make them pervasive and powerful agreed. and 'return' probably fits in there as well. since that's just CONTROL ah. yes. % AndyAway is now known as Andy and that probably depends/impacts what allison is doing with exception handlers pmichaud, you right... Your version is much cleaner... also fwiw, in general I have a "working premise" that the underlying features of Perl 6 are general enough to be able to implement most other languages, so it's okay to adopt those features into the compiler toolkits I think for now I'll add an 'else' block to PAST::Op try nodes, but we may end up undoing it or rethinking it all later pmichaud, ok. one of the reasons why pre- and post-block might not work in this case is that it makes the (Perl 6) assumption that all exception handling is done at the block level. whereas some languages might have "try" bodies and clauses that aren't actually blocks. pmichaud, what about my other patches? (You already announced that 'map' is implemented :) bacek: still catching up on the patch backlog, yes. :-) today I was thinking of fixing $_, $!, and friends. pmichaud: then how about a 'trigger' block type, with custom trigger types PAST::Block( :trigger :type ) ...with a standard list of trigger types including CONTROL, ENTER, LEAVE... possibly but I still think having an 'else' clause on try nodes may be useful. * bacek just wander do we actually need to clean up lexical $!... on entering a routine, $! should be set to empty/null/undef. for other blocks, $! should default to OUTER::<$!> and the implementation of $! = OUTER::<$!> isn't exactly what I think it should be. (it's currently done with inline PIR for some reason.) should a try { } block also clear $! on entering? why not to load OUTER::<$!> with lexical $! in 'catch'? so that things like try { ... } try { ... } if $! { ... } DWIM? i think it's done with inline pir because jonathan wrote it and he tends to think that way :) ie only check the second try's $! I think it should clear $! on successful exit. not necessarily on entering. probably more intuitive that way depends on whether we think $! inside of a try block should default to OUTER::<$!> (and I'm guessing it probably should.) pmichaud, agreed $! should default to OUTER::<$!> % rdice has left rdice!~richarddi@CPE001ff33cb98b-CM00159a01d44c.cpe.net.cable.rogers.com I'd like a "make something_test" target that runs only the codingstd and docs tests that are part of normal "make test" something that we can tell rakudo programmers to be sure to run before committing, since we keep having problem with metadata and codingstd errors in the rakudo commits. (and something that is shorter than a full 'make test' on parrot) make 'coretest' is in between test and what you ask for. well, except for rakudo changes I really don't need to re-test the parrot core. and I think coretest skips the tests I'm looking for. possible. I thought it just skipped the configure tests. but, +1, seems like a reasonable request. looks like what I'm looking for are the developing_tests how do I get opengl on windows? I'm trying to test out the opengl stuff but configure.pl says that I don't have it r27847 | pmichaud++ | trunk: : [pct]: : * Add an 'else' node to PAST::Op 'try' nodes -- the 'else' : node is invoked if the tried node doesn't throw an : exception. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27847 pmichaud: is that try node's 'else' node also known as 'finally' in many languages? or is this different semantics? kj: no. 'finally' is always invoked. ooh ok oh, I thought your else was a catch block. it's an anti-catch block. My ability to misread continues to amaze me! right, it's an anti-catch. % Zaba_ has joined #parrot try nodes already have catch nodes :-) pmichaud, I'll rewrite my patch tomorrow to reflect this changes... Time to sleep bacek: already wrote it :-) I'm testing and about to commit. :-) I'll give you credit for the ideas, though. pmichaud, Hey! You stealing my karma!!! :) % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru ;) we both get karma'd. > my $a = try { 'foo'; }; say $a; foo bar baz "pmichaud" at 76.183.97.54 pasted "for bacek: new version of 'try' handler" (13 lines) at http://nopaste.snit.ch/13078 I like the new code -- very clean. pmichaud++ Much-much better! % AndyA_ has left AndyA_!~andy@82.152.157.85 just checking spectest_regression before committing Nast Ups, sorry. moritz++ for spectest_regression ;) sorry guys... It's definetly bed time here... see ya r27848 | pmichaud++ | trunk: : [rakudo]: : * Update $! handling in 'try' blocks. : * bacek++ for ideas and suggestions on this. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27848 karma bacek bacek has karma of 11 bacek++ # bonus karma % masak has joined #parrot DietCoke: (coke-floats) .... why is "20 pounds" linked to a bag of cat food? ;-) because it weighs 20 pounds. oooooooookay. I find it helpful to visualize the amount I've taken off by comparing it to stuff I can hold. makes sense. 20 pounds was a hard weight to google for; most of the hits were diet programs. =-) % jjore has left jjore!~jjore@c-24-19-49-60.hsd1.wa.comcast.net by the time I reach my initial goal, I'll have a link to a picture of one of my kids! :| % jjore has joined #parrot % jjore is now known as zz_jjore % zz_jjore is now known as jjore DietCoke: we have here bags of coal (for barbecues) that are 20 pounds ;) % AndyA has joined #parrot there you. I had one of those in my gut 3 weeks ago. :| "there you go." % cosimo has left cosimo!~cosimo@pat-tdc.opera.com % uniejo has left uniejo!~uniejo@langebro.adapt.dk r27849 | Whiteknight++ | trunk: : [t] updating tests to use ".namespace []" instead of ".namespace", which is deprecated. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27849 % ank has left ank!~ank@ppp121-44-210-24.lns1.hba1.internode.on.net % masak has left masak!~user@130.238.45.242 % iblechbot has joined #parrot % rdice has joined #parrot % Psyche^ has joined #parrot % Theory has joined #parrot r27850 | allison++ | pdd25cx: : [pdd25cx] Free continuations from the stack. Now that exception handlers don't : live on the stack, stack-based control flow and continuation-based control flow : are completely independent. Also, revamp exception handlers so they no longer : use C's unstable setjmp/longjmp (made possible by decoupling the stack from : continuations, so we have true CPS). Cleanup the related tests, and add some : new tests for resuming after handled exceptions. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27850 % Patterner has left Patterner!~Psyche@e177113084.adsl.alicedsl.de % Psyche^ is now known as Patterner allison++ allison++ * DietCoke wonders if dan or chip will be in chicago next month. allison++ yay, allison++ is dalek giving out bogus diff urls? * jhorwitz wonders if anyone seen dan at all lately he's been working on tornado, posting to his blog occasionally. dan's blog? i heard dan's blog was http://www.sidhe.org/~dan/blog/ hurm. that says no updates since 11/07; was sure I'd see a few posts this year. confound: no; feather's apache2 won't start b/c it's out of disk space... working on it. diakopter: moritz is also working on it. Are you two aware of each other's work? :) okay, Juerd. purl: forget moritz moritz: I forgot moritz confound: it's back up r27851 | Whiteknight++ | gsoc_pdd09: : [gsoc_pdd09] Adding some hooks where more information will need to go diff: http://www.parrotvm.org/svn/parrot/revision?rev=27851 Whiteknight: still looking for OpenGL help? % cjfields has joined #parrot % gryphon has left gryphon!~gryphon@dsl-209-221-185-54.zipcon.net % rdice has left rdice!~richarddi@CPE001ff33cb98b-CM00159a01d44c.cpe.net.cable.rogers.com % gryphon has joined #parrot % barney has joined #parrot I can't build the pdd25-cx branch. :| i'm pretty sure allison would like a report on that I'm testing against trunk to make sure it's not there too. JEEBUS manicheck is slow. :| you running windows? can we generate manifest from svn ls? (windows) not atm. eh. not something I care to fix atm, just whinging. hi all Back home, temporarily. hi jonathan, what a rare condition (you home) Heh hi jonathan I have no plans for any Perl events or vacations to places I don't reach by train during June and July. And no, that's not a challenge. ;-) But French Perl Workshop coming up at the weekend. particle: reported % braceta has joined #parrot % davidfetter has left davidfetter!~davidfett@start.fetter.org % slavorg has left slavorg!~tomi@windmill.london.pm.org % davidfetter has joined #parrot % slavorg has joined #parrot % itz has left itz!~itz@62.3.198.45 % Zaba has joined #parrot % chromatic has joined #parrot % rdice has joined #parrot % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru #ps time ... crap! Tene: rubyspec.org chromatic: that's the one I found. That's the only one worth looking at. % Ron has joined #parrot % ruoso has left ruoso!~ruoso@195.23.92.2 Tene: so ... how long before you get Rails working on cardinal? ;) * jhorwitz considers mod_cardinal PerlJam: I have no idea. I've never looked at the rails source, so I don't know what it needs. Tene: yeah, I figured as much. Rails probably needs *everything* anyway. I expect to have a lot of things working soon. Tene++ jhorwitz++ (I'm lurking on #ps :-) Most of my commits lately have been a tiny bit of code, and stealing class definitions from rakudo. Tene: do you have a list of what's left? If there's some reasonably small things I might be able to find the time to help with cardinal. PerlJam: the largest item that I keep blocking on is that I actually don't know ruby. Tene: heh PerlJam: The class hierarchy needs to be reworked to match ruby's. Also, the builtins for all the different classes need to be written. I've found rails at least a pleasant programming experience. I tend to guess at syntax and such and ruby obliges me by doing what I expected :) I don't know the semantics of most of the builtins. bbiab lunch seen japhb? japhb was last seen on #parrot 1 hour, 37 minutes and 7 seconds ago, saying: Whiteknight: still looking for OpenGL help? japhb was last seen on #parrot 1 hour and 37 minutes ago, saying: Whiteknight: still looking for OpenGL help? oh good, bots in stereo * japhb is snowed in by x-chat alerts sorry no problem! Just made me chuckle I've got the opengl working on my debian box already. I tried to get it working on my WinXP box, but it's b0rk I expected that. OK, which compiler environment are you using? I was trying to use Visual C++ Express edition, but I couldn't really install that my harddrive is completely screwed, can't download new stuff, can't install new stuff, etc ouch sounds like my wife's Mac after installing OS X 10.5 ... so, in short, i can't test it for you oh suckage sorry to hear that i wish i could be more help! I can tell you that it works perfectly on debian Whiteknight: basically all build tasks are much easier on any unixish environment than under windows because on unixish systems you are expected to do such things yeah, i know. That's why i made the switch in the first place on windows only if you're a ultra-l33t hacker that can solve any problem anyway Whiteknight: since I run Debian myself, it had darn well BETTER work there. ;-) you've inspired me to start coming up with some gtk bindings for parrot although, because i'm so busy, that project is on hold indefinitely I know how you feel. I don't really have time to be working on the OpenGL bindings, but they're important to me, and I got skewered in an open forum about not doing it, so my ego took over for my common sense and I got to work. ;-) I wouldn't say skewered exactly. chromatic pops out of the woodwork ... So since you're here, who/what am I waiting on for my commitbit? r27852 | bernhard++ | trunk: : #46903: [TODO] [Perl] Implement todo items mentioned in tools/dev/extract_file_descriptions.pl : Remove the script, as it seems to be unused. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27852 Looking for someone to mentor you and slap your hand if you break the build :) Not to speak for anyone, but I think the hand-slapping is already well covered. ;-) % AndyA has left AndyA!~andy@82.152.157.85 I have two concerns. One, the SVN metadata dance (which I've never liked anyway). Two, that changes to the configuration system might break configuration on other platforms for what's admittedly an optional piece of Parrot anyway. maybe he needs a branch? localize all the optional changes in a place where it doesnt really affect the rest of the build chromatic: fair enough ... but for any change to the configuration system, kid51 has already told me that he requires a patch first, and some days to inspect. And I've both kept to that in the past, and intend to do so in the future. Provided that we can encourage people on other platforms to test the branch, that works for me. % ejs has joined #parrot chromatic: and as for the SVN metadata dance ... the worst that happens is that a test fails because of missing metadata, yes? My understanding is that it doesn't actually break the build (but I wouldn't know for sure, since most of the metadata doesn't really affect Linux) And that's only if I forget to follow a commit from git with an SVN commit Yep. chromatic: my working policy is that config changes need signoff from at least one representative each of Linux, Mac OS X, and Win32. Is that good enough for you? Also good. OK, so now just need a mentor, I take it. Or at least someone to watch your commits for the first couple of weeks. % AndyA has joined #parrot ... and I can do that. % AndyA has left AndyA!~andy@82.152.157.85 chromatic: perfect, thank you. So ... next step? * moritz is surprised that purl doesn't have a helpful suggestion for "next step" % Whiteknight has left Whiteknight!~nobody@c-71-230-33-251.hsd1.pa.comcast.net % Whiteknight has joined #parrot % barney has left barney!~bernhard@dslb-084-058-173-144.pools.arcor-ip.net step 3? step 3 is PROFIT! or "Get your girl to open that box" or http://www.step3profit.com/ next step is step 3 % cjfields has left cjfields!~cjfields@newrad.igb.uiuc.edu DietCoke: so, did you want a cleaner explanation of parameter passing? ;-) as long as it ends up in the docs. it's the switching between parameter and argument that confused me, because they seemed to be used both interchangably, and distinctively. "parameter" is the thing on the receiving end -- what we define in a sub "argument" is what we send -- what we pass in a call and half of the time half of the people do confuse these two moritz: and the comments in the code also. yes, and sometimes even those of us who know the difference say the wrong one :-) % AndyA has joined #parrot I think that PDD03 uses "target" and "value" instead of "parameter" and "argument" so, in Perl 6, nearly every parameter can be matched to a named argument Think of parameters as what we use when we say .param Type foo sub foo($a) { ... } can be called using either foo(3) or foo( a => 3 ) sub foo($a, $b) { ... } can be called as foo(3,4) or foo( a => 3, b => 4) or foo( b => 4, a => 3) or foo( b => 4, 3 ) Perl 6 also has a concept of "named only" parameters -- these are parameters that can only be match to a named argument. At present, Parrot has no concept of a "named only" parameter. parrotlog? parrotlog is http://irclog.perlgeek.de/parrot/ In Perl 6, that would be sub foo(:$a) { ... } which can only be called as foo( a => 3 ) or foo( :a(3) ) or something that explicitly provides an argument named 'a' % AndyA has left AndyA!~andy@82.152.157.85 pmichaud, what would it take to add "named only" parameters to parrot? Whiteknight: I made a proposal to parrot-porters yesterday, which was then discussed today in #parrotsketch (and tabled to tomorrow's Perl 6 design meeting) essentially I think we should turn our existing :named flag to mean "named-only", and add a :positional flag that can be used to indicate "named positionals" i read the message and was lurking in #ps I think that fixing actual argument passing must be done first. okay, that answers my question or, we could flip it around and say that :named means "named positional", and add a flag that indicates "named only" I took several looks at the open argument passing bug tickets, and my impression is that the code is already too confusing. but if we do that, we still need to change Parrot's semantics for handling named positionals, because at present it prefers to fill a named parameter with a positional argument notfound... which tickets are those? Dont' remember... wait a moment. there's one in my queue, regarding turning on the check when there's no .params at all. #53926, for example. ah, this is youres X-) DietCoke, we might need Leo's comments on my patch there. right, I filed that one. :-) I think there is other with similar content, let me see... most of them are ones that I've found. :-) because the stuff I work with tends to have the greatest variety of options. :-) Then why ask me? X-) I didn't know if you found any that I didn't author. but yes, the parrot calling conventions have always been a little flaky. % AndyA has joined #parrot % Auzon has left Auzon!~ak9@24-171-76-148.dhcp.mtvr.il.charter.com pmichaud: #39844 #41132 #46457 % AndyA has left AndyA!~andy@82.152.157.85 That's all. okay. yes, any changes we make should fix those as well. % rdice has left rdice!~richarddi@CPE001ff33cb98b-CM00159a01d44c.cpe.net.cable.rogers.com % Auzon has joined #parrot % ruoso has joined #parrot % japhb has left japhb!~geoff@76-191-190-8.dsl.static.sonic.net % kj has left kj!~IceChat7@193.1.100.109 r27853 | tene++ | trunk: : [cardinal] : * Hashes start working : * Small class creation fix diff: http://www.parrotvm.org/svn/parrot/revision?rev=27853 r27854 | tene++ | trunk: : Add new file to MANIFEST and set svn props. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27854 Creating a hash works, and changing the value of an existing hash element works, but adding a new entry to the hash fails. Investigating... Ah, I have the same problem with arrays, too. * Tene compares with rakudo past. Specifically, Null PMC access in morph() % japhb has joined #parrot I wonder if it's related to using pasttype('copy') instead of calling an infix:= sub Tene: If you aren't vivifying the target of the assignment, you will get this issue. Hm. % cjfields has joined #parrot jonathan: difference between vivibase and viviself? % dolmen has joined #parrot Tene: IIRC, vivibase is what somehting like an array vivifies to, and viviself is what an element coming out of the array vivifies to. Okay, thanks. Looks like that works. vivibase says how to vivify the aggregate I did it that way because it was easier than trying to always set viviself on the aggregate pmichaud: I started switching type checking over to happen on assign today. Got a chunk of code on my laptop that I did at Prague airport. excellent I'm hoping that changes the typechecking code a fair bit? There aren't import taxes? Yeah, just a little. ;-) I'm wanting to migrate the typecheck stuff out of the rule and into the rule, if not. (and possibly even if so :-) I havn't looked at parameters yet. but I'm going to leave typechecking alone until we know how mutables are going to pan out Well, I don't want to break something that works now, so I'm refactoring it to work on the new model. :-) right now the typechecks are added as part of the action, but I think they should occur somewhat lower (like, in ) It already feels a bit cleaner. but we'll wait until we have your refactors in. I've factored some code out that I expect will give more re-use between variable and parameter types. On parameters - not got to those yet. I also looked a fair bit at signature handling, $_, and placeholders last night. Just making it work with variables first. Then parameters are up next. we have a few too many flags floating around, I think :-) Need to get is copy, is ro (as default), is rw and so on to work. Especially is ro, so we get the right semantics. :-) those are just traits on the variable, yes? Yeah. I've yet to work out a neat way to handle this yet, though. % ejs has left ejs!~ejs@40-245-124-91.pool.ukrtel.net seems like 'is ro' should simply throw an exception on assign No, no. That's the easy-ish bit. :-) Actually applying that trait. And how we apply traits to containers in general. But we ain't gonna get that right until MMD is fixed. So for now, I suspect we just want some hack for a few built-in ones. aren't the traits just more properties? Yeah, kinda. But properties aren't really something you just have a hash of. % Zaba_ has joined #parrot It's really like doing a "does" To actually set the property. r27855 | tene++ | trunk: : [cardinal] : * Adding new items to aggregates works now. (jonathan++) diff: http://www.parrotvm.org/svn/parrot/revision?rev=27855 A well-behaved trait handler will say $container does xxx($arg); somewhere inside to set the metadata on the container correctly. (from S12) So we need to figure out "does" implementation. And that + MMD so we can dispatch trait_auxilliary:is correctly = a little way off % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru okay. Thus why I think maybe we just detect a few known ones at compile time as a special case for now. I'm happy with "hack for a few built-in ones" for now. Maybe in the summer we can Do It Right. it's worked reasonably well thus far :-) getting mutables implemented is far more important than type checking at this point. or trait handling. since w/o mutables we're having trouble doing simple hashes and arrays and the like For sure. like totally! I'm not planning to spend weeks getting the type checking refactored though. oh, definitely not. Like, I hope to have the branch ready to merge back in after FPW. Which is this weekend. I definitely want to get mutables in the trunk asap. even if that means that type checking is disabled for a while. If it's going to take much beyond this weekend, then we can drop it for a while. Otherwise, I'd like to try and preserve it. I'll leave that choice up to you. :-) Since I'm already a good bit of the way there with it... I didn't have type checking in the roadmap, but it's probably around the same level as junctions. I just don't like to give folks features to play with, then have them disappear. agreed. well, type checking is not exactly the same as MMD :-) And my Dog $fido .= new(); is not something I think we should make disappear lightly. ah, to me that's not type checking, though. :-) that's just a typed variable. Oh, it's not the checking. But the checking is not the hard part here. ;-) okay. Not for now, anyway. still, one could do my Dog $fido without having to store traits on $fido Yeah, true. Well, let's see how it goes over the weekend. just make sure fido gets initialized to a Dog proto :-) We're going, at some point, to need to start building ourselves a kinda "class registry", I think. oh yes, I know that. Not in the mutables refactor. But so my Foo $x; it has to appear in the symbol table. at compile time. Will put a proto in $x if Foo is a class But if it's a role or subset or anything more complex, it's just a Failure. oh, we could still do that w/o a class registery er, registry Runtime check? just have runtim.... right. Yeah, I didn't feel like that. But you're right, of course. :-) And we have to do it anyway. For my ::T $x; When heck knows what T is. Or for my T $x; when T is a parameterized type. but we will end up with a managed symbol table anyway, simply because the token is going to require it. right now rakudo cheats by assuming that any capitalized bareword is a class/role/namespace Yeah. That's...not nice. :-) But it works for now. it's a good heuristic for the moment until we can keep a symbol table around :-) I'm not sure it'd be too bad to do. well, theoretically we should just keep such things in lexical scopes. i.e., as lexical variables. and then do find_name to look them up. Keep what symbols are registered around as lexical scopes? as lexicals in the current scope. i.e., what one scope things is a 'Dog' might differ from another scope. Ah, where doing a "use" imports names into the current scope, perhaps. Right. s/thinkgs/thinks/ (can't type) % mj41 has left mj41!chatzilla@pc-jurosz.ro.vutbr.cz Well, just some of the many tasks we have before us. :-) indeed. there are times when scheme looks more and more inviting. :-) Don't get used to it. r27856 | chromatic++ | trunk: : [IMCC] Fixed compilation on platforms where returning the results of function : that returns void isn't void enough for non-GCC compilers (Andrew Johnson, RT : #54920). diff: http://www.parrotvm.org/svn/parrot/revision?rev=27856 nopaste? http://pasta.test-smoke.org/ or http://paste.husk.org/ or http://nopaste.snit.ch:8001/ or http://rafb.net/paste or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ nopaste is at http://nopaste.snit.ch/ (ask TonyC for new channels) or http://rafb.net/paste or http://paste.husk.org/ or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ or don't bother me while I'm eating or App::Nopaste hee who turned up the verbosity on clunker? can we hush him up? one spammy bot is more than enough. =-) clunker3? rumour has it clunker3 is running from Tux_'s pc at work clunker? rumour has it clunker is a known bot Huh. I ran a tiny 10000 iteration while loop under both ruby 1.8 and cardinal. ruby was about 5x faster Tene: was it an optimized Parrot build? And what runloop, and all of that usual things. :-) I upped the iterations to 10000000, and cardinal is hanging horribly about once a second I guess that's gc. Tene: sounds GC-ish. Not optomized. I don't know how to build an optimized parrot. Default runloop. I'd be glad to re-do it with whatever changes you'd like. make clean edit the Makefile and add -O2 before -g I'm sure there's a way to set that when running Configure.pl, but I'm too lazy to learn new things. 'perl Configure.pl --optimize' or 'perl Configure.pl --optimize=' And then run parrot with -O2 -Ot, IIRC leo: ping cardinal? somebody said cardinal was http://mail.freesoftware.fsf.org/pipermail/cardinal-dev/ or the Ruby-on-Parrot project. or http://xrl.us/uyz3 Looks like I get segfaults with an optimized build. In the tests or in Rakudo? Or Cardinal? i think Cardinal is http://mail.freesoftware.fsf.org/pipermail/cardinal-dev/ or the Ruby-on-Parrot project. or http://xrl.us/uyz3 in building parrot itself. Which platform? I'm running on OS/2 on an Atari, can you help? x86_64 gmake[1]: Entering directory `/home/sweeks/src/parrot.gs/compilers/tge' ../../parrot ../../runtime/parrot/library/PGE/Perl6Grammar.pbc --output=TGE/Parser.pir TGE/Parser.pg gmake[1]: *** [TGE/Parser.pir] Segmentation fault Did you 'make clean' first? Yes. I'll make realclean and try again. This time, without -j, I get: ../../parrot ../../runtime/parrot/library/PGE/Perl6Grammar.pir --output=PGE/builtins_gen.pir PGE/builtins.pg gmake[1]: *** [PGE.pbc] Segmentation fault I've been seeing an above-average number of segfaults lately (that seem to clear up with -G) fwiw. You're on 64-bit too, right? right now 32-bit had to move to 32-bit because of some vmware clock issues (long story) but I may be moving back to 64 bit soon. I get threads failures with an optimized build. I've got Intel 32-bit here (laptop), but AMD 64-bit at home. Both Debian testing. Looks like the cardinal grammar doesn't have 'for' * Tene tries building optimized parrot on x86 % Zaba has joined #parrot Cardinal's taking a lot of continuations. That's why it's slow. If you can reduce the number of bsr LABEL operations, you can speed it up. chromatic: but can't you make continuations faster? You've made bunches of other stuff faster. ;-) Not in the short term. In the long term, the sun will burn out and it won't matter. We can only quibble about how long it'll take the medium term to arrive. % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru chromatic: which part of cardinal are you talking about? While running, or compiling? While running. I profiled t/00-sanity.t Okay. Pack of chocolate + placement of said chocolate on wifi router = almost drinking chocolate.... Of course, that could be parsing speed. mmm, chocolate ... If you had a way to dump a runnable PIR transliteration (--target=PIR doesn't give me something runnable), I could profile that and make sure. If it's bsr and ret, I suspect it's parsing. * japhb seriously needs an infusion I think PGE generates quite a few of those. Yeah, I was thinking the same thing. If only we had PIR-level profiling.... "tene" at 67.137.148.11 pasted "runnable pir for chromatic" (43 lines) at http://nopaste.snit.ch/13087 Yeah, that's what I was asking about. if you're profiling, you might want to drop the number of iterations a bit. Or dump to /dev/null IO bound. I wonder if there's a way to optimize bsr within a single sub... almost like you don't have to store a stack chunk. With an optimized parrot on i386, I'm getting a 10x speed difference That fast? compared to ruby LEt me rebuild to see if it's actually slower when optimized Tene: ruby is 10x faster? Yes. .45s vs 4.8s % cjfields has left cjfields!~cjfields@cjfields.igb.uiuc.edu What's slow: the ParrotObject PMC, specifically get/set attribute_keyed, because get_attribute_index_keyed eats up a lot of GCable headers. sorry, get_attrib_index_keyed Fix get_attrib_index_keyed, and we get a lot of speed back. % mapar has left mapar!~vic@189.143.37.121 I'm still surprised optimized would be slower... :-S I'm not surprised that that particular function could be faster. jonathan: it's clearly optimized for the wrong thing. Definitely. Just getting rid of PARROT_ASSERT should speed things up. You know, it speaks well of Parrot's design that for the last while most of the performance wins seem to be small tweaks, not "change the entire design, we screwed up". r27857 | rblasch++ | trunk: : [win32] Fix Parrot_asctime_r for Windows. : Windows has asctime, but renders single digit days with a leading zero, : instead of blank. This new implementation uses sprintf with the format : string specified in the C standard. Probably not the fastest way, but : hopefully correct. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27857 Remember though, I've focused on microoptimizations to make language hackers more productive in the short term. sure, but still you've accomplished a remarkable amount with microoptimization. It's not like the last month has added up to 10% ... you've got to be at 2x at least by this point. Probably 3x overall in the past three months. That's just damned impressive for microoptimizations, you've got to admit. % iblechbot has left iblechbot!~iblechbot@198.18-dial.augustakom.net indeed. It makes me want to say chromatic++ everytime I think about it. ditto So chromatic++ There are a few more lurking, for anyone with Callgrind, kcachegrind, spare time, and the desire to dive into some C code. my grind-fu is weak. :-/ I should write a brief introduction. It's really simple, once you learn a few things. chromatic: sounds like a good post for parrotblog Will do then. Okay, looks like on this box, cardinal on optimized parrot runs this file in 4.8s, while unoptimized parrot runs it in 5.6s, so optimized is faster here. % Whiteknight has left Whiteknight!~Whiteknig@c-71-230-33-251.hsd1.pa.comcast.net Tene: That's an optimized compile of parrot -- but did you succeed in running parrot with optimization flags? In particular, running it with something other than the slow runcore? japhb: -O2 -Ot hmmm japhb: I'll run it however you tell me to run it. in rakudo PIR, what is the right way to create a new list? I think leo had recommended -Oc once upon a time as well, but I forget how that interacts with -O2 -Ot dolmen: possibly list() Try -C new 'List' (src/builtins/range.pir)? * Tene rebuilds parrot. jonathan: -Ot *should* select the platform-fastest runcore for you. If that's not working, that's a bug .... 'list'() (src/builtins/op.pir)? Ah, OK. dolmen: yes, I suspect, depending on what you want to do. Tene: why rebuilding parrot? Tene: is there a difference? japhb: to get optimized again. Oh, you had last built it with no optimizations ... yep, gotcha dolmen: 'list'(...) will construct a list of its arguments, and flatten any other lists in there. dolmen: If you want to create a new list rather than already having some existing list, then new 'List' is OK. jonathan: there is an ancient RT from me that -O1 and -O2 are both supposed to turn on -Ot, but don't. I'd hate to think that -Ot was now itself broken. ;-) % Ron has left Ron!rblasch@62-47-188-248.adsl.highway.telekom.at japhb: Well, parrot --help doesn't even mention -Ot specifically... % sjansen has joined #parrot Which is what I was looking at. % sjansen has left sjansen!~sjansen@hq-nat2.gurulabs.com perldoc docs/running.pod % sjansen has joined #parrot jonathan, is it the same object that we get after construction? And yes, that sounds like a bug, too dolmen: Yeah, you should get an instance of List. dolmen: so, when creating a new empty list, "new 'List'" looks like more appropriate jonathan, than "'list'()" % Whiteknight has joined #parrot or even $P0 = get_hll_global 'List'; $P1 = $P0.'new'() (same as List.new() ) TMTOWTDI. :-) No change with -C or -Oc snarg Hmm... look up the proper parent class in get_attrib_index_keyed based on key value, then look up attribute index directly there? That's two fewer header allocs.... jonathan: is it just a difference in the source or will there be a difference in the PIR ? I thought you were writing PIR? * dolmen is not sure if PIR is the right word But the eventual code that is generated is different, if that's what you mean. 'list' calls a function. that is what I mean ;) new 'List' instantiates an object And what pm posted gets the protoobject and calls the new method on it. So yes, they're all different. :-) all of them result in a List object. calling 'list'() has the advantage that it can initialize the List object with some values. chromatic: two fewer allocs per call can't be bad ... I'm seeing some places in op.pir where 'list'() is called without args. Now I konw how to fix this. fwiw, 'list' is the general purpose "make a list out of these arguments in list context" function. ok r27858 | tene++ | trunk: : [cardinal] : * 'while' loops start working : * 'for' loops start working diff: http://www.parrotvm.org/svn/parrot/revision?rev=27858 Tene's commit message makes it sound like while and for just magically started working on their own, and he just noticed. ;-) r27859 | tene++ | trunk: : svn props on new test diff: http://www.parrotvm.org/svn/parrot/revision?rev=27859 japhb: The intended message is that at least some basic functionality works correctly now, but I haven't even started to test how they work beyond that. Tene: I'm just teasing. Ah. % teknomunk has joined #parrot % tetragon has joined #parrot PDD19 needs to be updated to reflect #48549. Is that the kind of thing I can do as a lowly peon, or do I need permission? r27860 | jkeenan++ | searchdocs: : Exclude t/doc/searchops/sample.pm from POD check because it contains some POD malformed for other testing purposes. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27860 Whiteknight: You can always send it as a patch to the list for feedback, if in doubt. okay, that's probably the better solution. I'll do that. Thanks jonathan++ % Khisanth has left Khisanth!~Khisanth@pool-68-237-111-126.ny325.east.verizon.net % Khisanth has joined #parrot r27861 | jkeenan++ | searchdocs: : Bring files up-to-date with trunk so that they pass the coda codingstd test. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27861 % petdance has joined #parrot % cjfields has joined #parrot % petdance has left petdance!~Andy@64.81.227.163 % braceta has left braceta!~Braceta@bl10-35-75.dsl.telepac.pt % braceta has joined #parrot % sjansen has left sjansen!~sjansen@hq-nat2.gurulabs.com % bacek_ has joined #parrot % bacek_ has left bacek_!~bacek@mcas-151.usr.optusnet.com.au % bacek_ has joined #parrot morning... % japhb has left japhb!~geoff@208.201.228.107 S03? rumour has it S03 is the operators spec or dev.perl.org/perl6/doc/design/syn/S03.html get_global returns a "symbol" from a namespace. can the "symbol" be both a function and a global variable? It'll be a PMC. right, but can it get both functions AND global variables, or only functions? functions are global variables. :-) PDD21 just says "symbol", which I find to be ambiguous a symbol simply binds a name to an object that object can be an integer, a list, a function, a class, or whatever. % ruoso has left ruoso!~ruoso@a213-22-75-39.cpe.netcabo.pt (in the case of Parrot, our "objects" are PMCs) ok, that's what I thought. I figured it would be very general r27862 | pmichaud++ | pge: : Creating a branch for some major PGE refactors. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27862 % veek has joined #parrot % Casan has left Casan!~IceChat7@users163.kollegienet.dk % dolmen has left dolmen!~dolmen@cho94-1-81-57-157-99.fbx.proxad.net % Zaba_ has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % cjfields_ has joined #parrot % cjfields has left cjfields!~cjfields@adsl-76-227-78-230.dsl.chmpil.sbcglobal.net r27863 | jkeenan++ | searchdocs: : Refine samples.pm so that it passes more of the coding standards tests. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27863 % petdance has joined #parrot r27864 | jkeenan++ | searchdocs: : Remove this prior to copying trunk copy into branch; couldn't get svn properties correct. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27864 r27865 | jkeenan++ | searchdocs: : Copy trunk version into branch in the hope that we get the SVN properties : correct. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27865 % Auzon has left Auzon!~ak9@24-171-76-148.dhcp.mtvr.il.charter.com r27866 | jkeenan++ | trunk: : Correct flaws in regexes: (1) Paragraphs should be thought of as delimited by : \n{2,} rather than strictly \n\n. (2) Allow for possibility of no arguments, : e.g., end(). diff: http://www.parrotvm.org/svn/parrot/revision?rev=27866 % Auzon has joined #parrot % veek has left veek!bd8f2579@67.207.141.120 % cjfields has joined #parrot % jhorwitz has left jhorwitz!~chatzilla@96.245.16.45 % petdance has left petdance!~Andy@64.81.227.163 % cjfields_ has left cjfields_!~cjfields@vpn3-144116.near.uiuc.edu r27867 | jkeenan++ | searchdocs: : search-ops.pl is really a Parrot developer's tool, so reposition it inside the : distribution under tools/dev/. By extension, move corresponding module out of : lib/Parrot/Docs/ into lib/Parrot/ and move tests from t/doc/ -- where they : play havoc with coding standards tests -- to new directory t/tools/dev/. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27867 % petdance has joined #parrot % contingencyplan has joined #parrot % cjfields has left cjfields!~cjfields@adsl-76-227-78-230.dsl.chmpil.sbcglobal.net % cjfields has joined #parrot % cjfields has left cjfields!~cjfields@adsl-76-227-78-230.dsl.chmpil.sbcglobal.net r27868 | Whiteknight++ | gsoc_pdd09: : [gsoc_pdd09] First stab at basic data structures for the new GC. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27868 % gryphon has left gryphon!~gryphon@dsl-209-221-185-54.zipcon.net % tetragon has left tetragon!~seneca@69-196-141-26.dsl.teksavvy.com % contingencyplan has left contingencyplan!~contingen@cpe-76-186-27-146.tx.res.rr.com % Whiteknight has left Whiteknight!~Whiteknig@c-71-230-33-251.hsd1.pa.comcast.net % tetragon has joined #parrot % cjfields has joined #parrot % cjfields has left #parrot % chromatic has left chromatic!~chromatic@sub17-30.member.dsl-only.net % cjfields has joined #parrot % cjfields has left cjfields!~cjfields@adsl-76-227-78-230.dsl.chmpil.sbcglobal.net % ank has joined #parrot % braceta has left braceta!~Braceta@bl10-35-75.dsl.telepac.pt % Zaba has joined #parrot % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru % Auzon has left Auzon!~ak9@24-171-76-148.dhcp.mtvr.il.charter.com % Auzon has joined #parrot % petdance has left petdance!~Andy@64.81.227.163 % Theory has left Theory!~Theory@c-24-21-175-208.hsd1.mn.comcast.net % uniejo has joined #parrot % teknomunk has left teknomunk!~teknomunk@r74-195-239-111.stl1cmta01.stwrok.ok.dh.suddenlink.net % UltraDM has joined #parrot