% Theory has left Theory!~Theory@c-24-21-175-208.hsd1.or.comcast.net % Zaba_ has joined #parrot % bacek_ has left bacek_!~bacek@mcas-151.usr.optusnet.com.au % Ademan has left Ademan!~dan@h-68-167-207-98.snfccasy.dynamic.covad.net % bacek has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % masak has joined #parrot % slightlyoff has left slightlyoff!~slightlyo@204.14.154.209 % IllvilJa has left IllvilJa!~jilves@emea-netcache1.oracle.co.uk % tetragon has joined #parrot http://www.parrotcode.org/docs/imcc/imcfaq.html says that Named variables are either local or namespace qualified. Currently IMCC only supports locals transparently. What does that "transparently" mean? % tetragon has left tetragon!~seneca@gw-312-705.somanetworks.com % iblechbot has joined #parrot probably "without further action from the user" % IllvilJa has joined #parrot I still don't understand. Oh. Right. Emphasis on "only". That is, namespace-qualifieds aren't as well supported. % bacek has left bacek!~bacek@mcas-151.usr.optusnet.com.au % slightlyoff has joined #parrot % IllvilJa has left IllvilJa!~jilves@emea-netcache1.oracle.co.uk % slightlyoff has left slightlyoff!~slightlyo@204.14.154.209 % particle1 has left particle1!~particle@c-98-232-7-104.hsd1.wa.comcast.net % skv has joined #parrot % Ademan has joined #parrot % bacek has joined #parrot % jan has left jan!~chatzilla@89-253-66-101.customers.ownit.se % jan has joined #parrot % jan_ has joined #parrot % jan_ has left jan_!~chatzilla@89-253-66-101.customers.ownit.se t/spec/S16-filehandles/connect.t................ 4 4 0 0 0 4 pmichaud, we should remove this test from spectest_regression.. It's useless. probably S29-num/complex.t too. t/spec/S29-str/sprintf.rakudo................... 37 37 0 0 0 37 yak... all 37 tests skipped... pmichaud did some work on complex numbers recently, so we should have something in spectest_regression to check what works so far. I think it's already there. jonathan, ok, I'll test check it. t/spec/S29-num/complex.rakudo................... 129 129 3 0 1 125 3 pass, 1 todo, 125 skip the 125 skip will be a lot less as soon as I get -> working in infix position. although now that I look at that (what I just wrote) I'm not sure why -> doesn't work already. Gets parsed as infix:- And wants a term, not a > but it would need another term in order for that.... I think. and since there's no other term available, it should backtrack. Yeah, but it doesn't backtrack. Oh? I didn't think the parser backtracked... Apart from in a few cases... the operator precedence parser returns the longest complete expression Oh, OK. (at least, it's supposed to.) I'll play with that this morning. But -> isn't known to the operator precedence parser. It's only in the grammar.pg Cool, would be nice to have fixed. :-) -> doesn't have to be known to the operator precedence parser all the opp needs to know if that -> doesn't parse as part of a valid expression in operator position s/if/is/ % IllvilJa has joined #parrot OK I'll leave you, to investigate. :-) don't leave me!!!!! er.... OK. :-) ... man I have lots of email today. :-| pmichaud, (about S29-num/complex.t) all other tests depends on unpolar(), which not implemented yet. pmichaud, yak... 3 days ago.. I added unpolar(). :-) even cis() depends on unpolar(). :-) what's unpolar()? convert from polar coordinates to rectangular (in imaginary space) I don't know how to convert from polar coordinates to rectangular (in imaginary space). purl, I do -- use unpolar! :-) see S29. :-) ok is 'unpolar' a more clear name than 'rectcangular'? it's not too often that things are specified by what they ain't yes, 'unpolar' was very unfamiliar to me as well. the name is doubleplus-ungood, if you ask me polar2rectangular would work out :> or even 'torect' or even just 'rect()' yes, I think 'rect()' is in the sweet spot I'm afraid 'unpolar()' would become very unpopular ;) % Whiteknight has joined #parrot r28226 | Whiteknight++ | gsoc_pdd09: : [gsoc_pdd09] updating to trunk r28225 diff: http://www.parrotvm.org/svn/parrot/revision?rev=28226 > say 4.unpolar() Method 'unpolar' not found for invocant of class 'Int' it's only defined on Num at the moment. pmichaud, got it... * bacek still try to understand why Int is not a Num... because Parrot doesn't have it that way in the hierarchy but it should be, right? I don't know. I haven't investigated that part of the spec. pmichaud, copy-paster unpolar in Int works fine :) I don't plan to duplicate methods if I can avoid it. as things stand now in rakudo, 4.unpolar will probably start working when we get method fallbacks working. or when we figure out the relationship between Int and Num "make perl6" just failed for me. Segmentation fault. pmichaud, probably Int is Num... It's DWIM-style I would sure hope it is yes, but I don't think that Int should carry around Num's attributes. otherwise... what's the point? so it's not a simple "Int isa Num" relationahip. *relationship Num-to-Int autocoercion is an explicit exception built into the language. Perl 5 programmars would lynch us if we broke it. But yes, it's basically cheating. % tetragon has joined #parrot Guess who :) (I know that it in backward direction, but I just like this quote) pmichaud, pugs says that Int isa Num. Nom isa Nom ... lolcode needs the ... operator, except we can call it nom nom nom. * DietCoke <- dork % TiMBuS has joined #parrot probably bang bang bang is better name :) Newly passing tests: S29-list/join.t S29-list/reduce.t % particle has joined #parrot % tetragon has left tetragon!~seneca@216.126.67.44 % iblechbot has left iblechbot!~iblechbot@103.17-dial.augustakom.net bacek: I'm not saying that we won't fix Int to Num autocoercion, I'm just saying it's not immediately obvious how to do it. pmichaud, adding Num as parent of Int didn't brake spectest_regression :) % radhios has joined #parrot but probably autocoerce Int-to-Num will work too bacek: where did you find that quote, btw? Larry's mail recent email? on a mailing list? i.e., I'd like to read the surrounding conversation just a sec. I'll find it again :) http://groups.google.com/group/perl.perl6.language/browse_thread/thread/a79c24e250dbdafc bacek's url is at http://xrl.us/bmsmg Jan, 2007 thanks. what is semantic of '<:'??? in what context? Int <: Num oh, I have no idea. that's often true for me when looking at things TSa writes. it's not a Perl 6 operator. original is a very long thread. http://www.nntp.perl.org/group/perl.perl6.language/2007/01/msg26860.html pmichaud's url is at http://xrl.us/bmsmt * bacek wants something like xmlschema-0 for perl6... It was so easy to implement XQuery compiler when I had full spec... s/0/2/ http://www.w3.org/TR/xmlschema-2/type-hierarchy.gif (int-to-num) I'm guessing that fallback methods will handle a lot of this for us. either that or we'll explicitly import certain methods into the Int/Num/Str scopes. that's about all I'm prepared to worry about for now. :-) (on that topic.) (full spec) that is exactly why I concentrated on tcl instead of perl6 for so long. =-) yep. Fallbacks should solve all this problems... DietCoke, why not Smalltalk? :) % gryphon has joined #parrot probably would have been easier, in retrospect. % donaldh has joined #parrot afk # sleep... probably... pmichaud, JFYI, there is few tickets in RT for various List improvements. yes, I know. Still need to look at those. pmichaud, ok. * bacek ... need... more... karma... :) must sleep $bacek->sleep(8 * 3600); Ho. Purl is back and funny, for once purl,funny? i guess funny is at http://www.denounce.com or at http://www.pimpdaddy.com or at http://www.pimpcity.com/humor/underpants.html or [11:09] but can all browsers access perl files.. i expect so or at http://www.callahanonline.com/ or at http://www.userfriendly.org/ or http://www.rahoi.com/2006/03/may-i-take-your-order.php % nnunley has left nnunley!~nnunley@seatbelt.jerakeen.org % nnunley has joined #parrot % jhorwitz has joined #parrot % Khisanth has left Khisanth!~Khisanth@pool-68-237-111-126.ny325.east.verizon.net % Khisanth has joined #parrot % iblechbot has joined #parrot NotFound: IANACP, but shouldn't + STRING *full_name = 0; be + STRING *full_name = NULL; ? % TiMBuS has left TiMBuS!~Hurf@123-243-167-27.static.tpgi.com.au for better C coding style, yes. % particle1 has joined #parrot NotFound: in general, the patch looks good to me, though. % particle has left particle!~particle@c-98-232-7-104.hsd1.wa.comcast.net DietCoke: started working on tcl registry scripts. getting segfaults. will debug to see whose problem it is. ;-) me, you, or parrot, neh? I have a dynops file. NotFound: are Parrot_string_free_cstring and *_get_* in the strings pdd, or is this an api change that requires a pdd update? DietCoke: i'll make sure that's being pulled in. % particle1 is now known as particle jhorwitz: sorry about yesterday, my phone line went dead and i had to fix it np jhorwitz: fwiw, rakudo now has 'return' pmichaud: did you get multivalue return working? pmichaud++ pmichaud++ pmichaud++ not yet. I know how to do it, just want to figure out the appropriate factoring. * particle also had to rebuild his computer, so has lost a bunch of irc history no he didnt, and he refused to use my naive and terribly inefficient methods to do it but now #parrot is logged, so nbd :-) Whiteknight: how rude! i know, right? particle: bad day at the office, eh? yes, I'm wanting to avoid creating a hash/array for every return operation :-) jhorwitz: to say the least... * particle is installing parrot development dependencies atm * particle thinks pmichaud is lazy having return means we can "easily" get to gather/take I think. (since take is a fancy return) it's one of my vices and virtues, yes :-) which synopsis is gather/take defined in? Whiteknight: S04 I think i like to keep up on perl6, my interest in that is what lead me to parrot in the first place I haven't quite figured out gather/take yet. It's the same one that talks about "contend" (and is the only reference to contend that I can find anywhere) > for 1..10 -> $a { print "$a "; }; say "done"; 1 2 3 4 5 6 7 8 9 10 done yay. r28227 | pmichaud++ | trunk: : [pge]: : * Fix backtracking bug in OPTable. diff: http://www.parrotvm.org/svn/parrot/revision?rev=28227 pm: I thought I understood gather/take until the description was reformulated to talk about Captures and such. Now I'm fairly sure I don't quite understand them anymore. :) But most of the magic seems to be in take and take is a fancy return AFAICT From what I am gathering, the capture is implied based on the arguments you pass to take Whiteknight: was that a pun? :) ...not intentionally... Whiteknight: the last time I looked at it, it seemed the take is a no-op in a way except that it affects the return value of the gather. i.e. $a = $b; is exactly the same as $a = take $b; except that the later adds a Capture of $b to the return value of an enclosing gather. pmichaud: That patch, looks like it was more frustrating to work out why was needed, than to write. ;-) but what happens when you call take without an enclosing gather? I have no idea. jonathan: you would be entirely correct. pmichaud++ # finding the bug PerlJam: that would be an error, methinks and what if you go gather { foo(); }; sub foo { ... take $bar } ? PerlJam, okay, I can see that Does that mean my $x = -> $a { say $a } works now? PerlJam: also, I'd not describe take as a no-op, since it's lazy, so take works a bit like yield in ruby was that not working before? (I don't know if it works now.) PerlJam: that works. gather is a dynamic construct It wasn't; I thought that was the bug you were chasing, actually. I was on #perl6 when they decided that years ago well, for 1..10 -> $a { say $a; } works now and didn't before. my $x = -> $a { say $a; } doesn't work Ah. plzicanhazfix? ;-) I don't know why that one would be failing. oh, yes I do. Yes, that's a different bug from the for 1..10 -> one fixing my $x = -> $a { say $a; } will require a bit of OPTable refactoring. (the difference is the use of -> in term position versus operator position) % uniejo has left uniejo!~uniejo@langebro.adapt.dk Ah, ok If it's a pain to do now, I'm not in a huge hurry for it. it's a small pain. I was thinking the two were the same bug, but apparently not. masak: that feels wrong to me for some reason. PerlJam: the dynamicness? masak: yes. the feeling will pass, I hope it's wonderful! I agree that 'take' sounds more like .yield than return. % Zaba has joined #parrot but it's essentially the same concept. pmichaud: except that yield suspends execution and take doesn't, it just grabs a Capture of its args. PerlJam: take essentially suspends execution, yes PerlJam: except that I think that gather/take is lazy, which means we don't take until we need it. :-) % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru PerlJam: more correct to say that a request to a gather/take instigates execution :) gather/take,contend,async,lazy are all "do-like" things that all seem underspecced to me (in that they evoke more questions than answers :) PerlJam: in such a case, questions are exactly what is needed, so ask away well, I'm only going by memory rather than the spec, so I might just be way off base. true. actually, some of us are noticing that questions on p6c are taking an awfully long time to get responses/answers. pm: so answer them faster! ;) pj: in many cases I'm the one asking the questions. :-) % cognominal has left cognominal!~cognomina@82.67.232.89 I've noticed. But if Larry can talk to himself on mailing lists, you can too ...except I don't do language design. :-) Larry has the toughest job. indeed maybe he's unusually busy right now another con coming up shortly. * DietCoke hits the mailing list. * DietCoke finds that the pdd25 branch is still horked. oh, I do believe he's busy, yes. afk, errands. % Whiteknight has left Whiteknight!~nobody@c-71-230-33-251.hsd1.pa.comcast.net % Whiteknight has joined #parrot % jan_ has joined #parrot pmichaud: Is there a definition of \w or anywhere? % masak has left masak!~user@130.238.45.242 % Zaba_ has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % rdice has joined #parrot tewk: like a spec, or in the code? * particle tries to get his env set up faster for parrot develoment particle: either, I guess. I have a rule for builtin types that includes "int" however it matches against "int32_t", which it shouldn't ah, you need to anchor the end of word I'd like to put at the end of the builtin_types rule take a look at languages/squaak/src/parser/grammar.pm:191 token keyword { ['and'|'or']>> } # note the anchor I thought and >> where the same but I'll try >> i believe they are the same % davidfetter has joined #parrot huh. I'm on the smolder-users mailing list. nifty: I am shoving all the mail from my desktop into my gmail account. I am now seeing current followup RT messages having history that wasn't there a week ago before i started this. % Whiteknight has left Whiteknight!~nobody@c-71-230-33-251.hsd1.pa.comcast.net % Theory has joined #parrot Who wants to write me a chomp opcode? chompcode substr not good enough for ya? =-) ah, chomp, not chop. I could whip up a dynop for you. I could really use it, I just don't want to get off task. if this were tcl, I'd put it in my pre-existing ops file. if you can get another committer to say we need it in core, I'll add it there. =-) You write the op, I'll get it in as a core op, unless some one objects. tewk: you need an opcode, or can you use a pir lib? There are experimental core ops, it could be a pir lib too. We have substring, chopn as opcodes. chomp seems like a primitive string op. It is definitely usefull as a pir debugging aid. i think it exists today in pir that's why i ask ahh, where it has been said that ahh, is there a var that holds the total number of parms ? i don't have ack installed yet probably under runtime/parrot/library runtime/parrot/library/String/Utils.pir I still think it should be an op, but pir would work for the time being. hokay. I'm hacking PGE to provide ugly trace functionality, but I can probably find a place to generate the pir include. offtopic, but tewk loves git. I won't ever go back. % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru * confound too % Zaba has joined #parrot Someone bored can try my last patch in #44499 and do some benchmarking? rebasing is so easy, backingup local branches to arbitrary locations is easy too. % cjfields has joined #parrot % particle1 has joined #parrot jhorwitz, DietCoke: how's the heat? brutal SEATTLE -- A foot of new snow is expected Monday night for the west slopes of the north and central Cascades, the National Weather Service said in a heavy snow warning issued Monday morning. % particle has left particle!~particle@c-98-232-7-104.hsd1.wa.comcast.net that's 40mi from here % particle1 is now known as particle we had ski resorts open on memorial day unreal. * jhorwitz makes an offering to his A/C compressor maybe I can afford to fix my A/C this year... pmichaud: I would prefer that language design questions show up in p6l, which I tend to read more frequently than p6c where frequently is currently defined as less infrequently... :/ % paggas has joined #parrot it's 90 here today. was 96 here yesterday it was 59 here yesterday TimToady: would it help if there were a queue of some kind that had a list of "things that need larry"? or is the mailing list fine? whatever's easiest for you, we can adapt. p6l is best for that if I don't answer something there it's usually because I'm still thinking about it as opposed to not having noticed it that's no excuse! :P well, it's getting to the point where all the easy questions have been answered, so all you ever ask is hard questions :P "why didn't you invent tcl!?" John beat me to it let's hope you beat john to perl 6 bah, they're coming up on tcl 9! is just glad we didn't go the sun numbering route. NotFound, what kind of benchmark were you hoping for? % IllvilJa has left IllvilJa!~jilves@emea-netcache1.oracle.co.uk it looks like make && make perl6 are fine with the patch s/are/works/ i had no idea parrot was born of al qaeda: http://search.cpan.org/~simon/parrot-0.0.1/ cotto-work: forget it, I think now that the speedup I was seeing was an illusion. NotFound, I didn't have anything matching it, i think now that the speedup i was seeing was an illusion done But anyway, it avoids a lot of leaking. * DietCoke stares blankly at particle. (to be clear, I obviously don't think that just because they have a higher release number that they're better. =-) funny that purl doesn't ignore answers addressed to other irc users didn't Andy define a macro for string comparison? hurm. STREQ and STRNEQ rather than using strcmp() as a boolean ah, there they are.... and here they are here. ah. those are just for cstrings? % rdice has left rdice!~richard_d@CPE0014bfafbbd5-CM0011e6ecf48a.cpe.net.cable.rogers.com (for parrot stuff, I can use string_equal, etc?) if (string_equal(a,b)==0) seems like bad C form, though. * DietCoke thinks that if (! string_equal(a,b) ) is more idiomatic, yes? DietCoke: agree. * TimToady thinks strEQ is best :) NotFound: if you're bored, you could patch a great deal of src/pmc/*.pmc with that style update. cage ticket? DietCoke: What update? update is fine it's just that people don't apply the updates or the sql-ism for it NotFound: nevermind. string_equal has return values like strcmp, so that usage is better. ah well * DietCoke thinks we should change string_equal to just return true or vfalse, there's always string_compare if we want that return value, no? We don't have discussed yet that function name? NotFound: I can't parse that send. on a different tack, what the hell benefit does the ATTR declaration give us? =-) The name is completely mileading with the usage. * DietCoke throws away this patch to tcl. NotFound: oh, I've noticed that too. string_equal implies that it should return true when the strings are equal, but it does the opposite. if ((s1 == s2) || (!s1 && !s2)) ---> What? This is not the same as (s1 == s2) ? if the strings are equal or they're both null... wouldn't they be equal if they were both null? seems like. no not all OSes treat null comparison as eq, do they? s/eq/==/ % paggas has left paggas!panagos@adsl27-180.lsf.forthnet.gr i'd have to check the c89 spec uh, they should I think its a compiler thing, not an OS thing oh, yeah, maybe compiler that's what i think i meant. Infinoid++ could be a pessimization, check 'blame' if it's there for a reason, it should be commented. "Two null pointers, converted through possibly different sequences of casts to pointer types, shall compare equal." -- http://rm-f.net/~orange/devel/specifications/c89-draft.html (whether that's authoritative or not, I dunno, but it matches my expectations.) Parrot's "string_equal" function is totally misnamed. More questions: a null STRING * is equal to an empty string? The code says yes. string_equal returns 0 when the strings are equal. But apparently it's been like that since ~r4000 or so. Seems like a good cage task. it would seem a lot more intuitive to call it "Parrot_strcmp" or somesuch And to make the thing more funny, it returns 1 in both null-non null cases. HA! anybody know if there's going to be hackathonery around OSCON? TimToady: if there is, it will be the saturday following. aye I haven't heard the story for sunday yet. I've reserved a room for Sunday night just in case (although my flights are currently booked for Sun also -- but those can be moved.) But using strcmp style when we are interested only in equality is a vaste of time. Glo is trying to figure out hotel dates... .oO(strEQ) "particle" at 98.232.7.104 pasted "win32+msvc svn head test failure report :(" (80 lines) at http://nopaste.snit.ch/13223 the string_equal(a,b) == 0 test is used quite a bit in Parrot. I agree that something like strEQ would be worthwhile, as longas there's not too much confusion with STREQ when I first saw string_equal(a,b) == 0 (about 10 days ago) my initial thought was "What the ...?!?!" But is a PARROT_API function, it must be prefixed. TimToady: okay, I'll start posting my language+spec interpretation questions to p6l With a name like string_equals one would think the result would be a boolean. instead we get a inverted boolean result. (instead of p6c) Yes, to more confussion it does nor work really like strcmp: return 1; /* we don't care which is bigger */ * pmichaud starts writing his #parrotsketch report. 60 mins for those keeping score. * particle can't build perl 6 pdd28_strings reflects the current state? pdd28_strings reflects the wannabe state. i.e., it's a design spec but not yet implemented (iiuc) Then the current implementation of string_equal is broken, IMO. strlen - The length of the string, in bytes. {{NOTE, not in characters So the string can be character-equal and string_equal report as not equal. #ps in 1 hour? affirmative And the =item says: Compares two Parrot strings, performing type and encoding conversions if necessary. But the checked conversion is done *after* length comparaison. % barney has joined #parrot % Whiteknight has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % Zaba has joined #parrot % Whiteknight has left Whiteknight!~nobody@c-71-230-33-251.hsd1.pa.comcast.net % Whiteknight has joined #parrot % wknight8111 has joined #parrot % Ademan has left Ademan!~dan@c-69-181-114-208.hsd1.ca.comcast.net % donaldh has left donaldh!~chatzilla@proxy-sjc-2.cisco.com % donaldh has joined #parrot Anybody knows have variable name are aliased in PAST. I tried creating an node with :pasttye('bind') and :name('infix::=') but that acted like a value assignment % purl has left purl!purl@sentient.life :pasttype('bind') means the :name isn't going to be used for anything. a 'bind' node expects a PAST::Var as its first child, and some other expression as its second the first child is then bound to the second % purl has joined #parrot And how do I distinguish between assignment and aliasing ? assignment is done using an 'assign' or 'copy' opcode i.e., replace an existing PMC with a new value. pmichaud: I've got myself in a pge corner again. I added >> to builtin_type so int32_t wouldn't parse as int. int32_t now parses but int doesn't. I take out the >> and int parses but not int32_t. umm, huh? tewk: you have included 'int32_t'|'int' ?? Again on strings, the string_substr function is called by several opcodes with unchecked string register values, but does not allow a null string argument. notfound: these items would all make excellent cage tickets "this looks funny, what should it be converted to?" type things No there is a rule for parsing builtin types (int) and a different rule for parsing typedefed types. tewk: where's the code? well, the code is "THE CODE, I NEED THE CODE!!" particle: I think that deciding if to change the signature of public api functions is not a simple cage cleaning. notfound: yeah, i guess you're right. but they're excellent list questions or rt tickets much better there than over irc, because more folks will be able to respond Agree. % chromatic has joined #parrot % chromatic has changed the topic of #parrot to: Parrot 0.6.2 "Reverse Sublimation" Released | http://parrotcode.org/ | 6/661 new/open tix | logged in http://irclog.perlgeek.de/parrot/today I think will be better to completely drop the nonnull parameter usage. It's almost impossible to check his correct usage from jit. % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru After binding, with pasttype('bind'), a Past::Var $a to a Past::Var $b shouldn't $a change when $b is changed? questions can also go to the tracking with [RFC] in the subject. NotFound, did you ever send in a CLA? PS in 5. % Ivatar has joined #parrot barney: depends on how $b is being changed. If $b is rebound, that doesn't affect $a. i.e., $a still remains bound to whatever $b was bound to before the rebind chromatic: not yet, I expect to send it this week. NotFound: Send it in! You may already be a winner! (probably only makes sense in the U.S.) ... if there. =-P pmichaud: Yes, $b is rebound. That explains it. (me does get it, just poking. =-) #parrotsketch on now (for those who are interested) % Zaba has joined #parrot % Zaba_ has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru pf-proposals TV shield distributor wanted DietCoke: how urgently do you care about the ATTR stuff? I just read the mails about it. tene: meh. I care more about the HLL stuff. It's probably 90 minutes of work. % Zaba has joined #parrot DOOOO it. % allison has joined #parrot Maybe I'll try to finally churn through the builtins in the class hierarchy. for cardinal afk allison, question for you % cognominal has joined #parrot whiteknight: yes? would it be worthwhile, perhaps in the distant future, of turning the GC into a PMC? Whiteknight: and then the GC and collect itself? :) well, the scheduler is a PMC now, which is motivation for the question whiteknight: I'm trying to think of the possible benefits... plus, we would be able to hot-swap GCs during run time, convert GC-related opcodes to PMC methods, etc s/and/can/ weird brain-o there GC at the moment is a pile of function pointers, and some state data but, it's a different set of function pointers than the standard vtable set "pile of function pointers" -> methods or vtables aye true, it would require a little fudge so it's definitely conceptually close to an object I'm mostly thinking about testing, I'm looking for interfaces that would let us look into the GC for testing I think the only benefit of making it a PMC would be related to reclaiming the memory it uses, but there's only on GC "object" for each interpreter Anyway, this is a long way off in any case, definitely post-1.0. I could leave a few openings to prepare for it though true, but different compilers might like different GC cores, and we could hot-swap on an eval % Zaba_ has joined #parrot definitely keep it in mind, especially when thinking about respecting the encapsulation boundaries of the GC that'll give us cleaner code, even if the GC always remains as a unique kind of "object" It also sounds like you could have a GCed form of "shared memory" between interpreters. okay, thanks for the feedback, this isn't anything i'm going to try any time soon allison, will #parrotsketch be at the same time next week? % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru you guys could do #ps in person if everyone goes to yapc :) cotto-work: we didn't make a final call in the meeting, we often skip the weekly meetings in the middle of conferences good to know oops, missed parrotsketch * particle notices tewk missed it too :( Executive decision, no PS. okay, no PS next week I would like to see a writeup to the list of "what happened in parrot at yapc", though. Fine, I'll just hold #ps without you guys! * cotto-work struggles to avoid executed parrot jokes % Zaba has joined #parrot tewk: was there just quiet. I read parrotsketch religiously tewk: you're supposed to report your weekly soc status there % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru Will do, last week was a little slow. I've been spending my time fighting with PGE. last week was slow for me too. I've been fighting with comcast % davidfetter has left davidfetter!~davidfett@start.fetter.org % barney has left barney!~bernhard@dslb-084-058-096-066.pools.arcor-ip.net why don't you two let comcast and pge fight it out? * DietCoke finds noodles that have 0 calories. ... that's a lot of fiber. % NotFound has left NotFound!~julian@50.Red-213-96-228.staticIP.rima-tde.net % NotFound has joined #parrot % sjansen has joined #parrot pmichaud: ping "tewk" at 155.97.237.62 pasted "PGE >> troubles" (47 lines) at http://nopaste.snit.ch/13226 % cjfields has left cjfields!~cjfields@newrad.igb.uiuc.edu particle: I have a diff you can look at, but the above nopaste is a smaller illustration of my problem. tewk: why use a rule and not a token? for builtin_type? How is "$builtin_type >>" supposed to match "int Oid;" ? I guess I could add an explicit between unsigned and int. avar thats my problem! Thanks. so should I write >> or move the >> inside builtin_type and make builtin_type a token. yes the latter I take it. i'd make it a token, and put >> inside I had >> inside to start with. I made it a rule because of the whitespace between and int, but I guess I can add that explicitly. Going to try it. Works avar++ particle++. use <.ws> you don't need to capture it I wasted half a day on that one. That should teach you to enslave irc people to write your code for you My problem is that I write serious PGE code once every six months and I forget everything after a month of not using it. yeah, that is a problem file an rt ticket :-) to:parrotbug@parrotcode.org\nsubject:write more pge\n\ndear self... Maybe is better to forget all, that way you can learn the changed syntax without interferences X-) bank & When things click in PGE, it is one of the most productive tools I've ever used. I've never really tried using anything else for parsing. much. % barney has joined #parrot % barney has left barney!~bernhard@dslb-084-058-176-219.pools.arcor-ip.net % pjcj has left pjcj!~pjcj@84-73-177-217.dclient.hispeed.ch There are a lot of cool parsing tools/projects out there. Very few are maintained at production quality over time. % sjansen has left sjansen!~sjansen@hq-nat2.gurulabs.com % Zaba_ has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru How do I do a charcter class in PGE these days that accepts an X or a x? <[xX]>? yes. % davidfetter has joined #parrot % slightlyoff has joined #parrot % sjansen has joined #parrot % jhorwitz has left jhorwitz!~chatzilla@96.245.16.45 I just parsed 4880 line c program including system headers and it only took 1:30 :). ooo if I have a macro helper(.foo), and invoke it like .helper('foo'), is there a way to get that to create a named pmc called helper_foo ? % wknight8111 has left wknight8111!~nobody@c-71-230-33-251.hsd1.pa.comcast.net (I'm try to remove a bunch of boilerplate that looks up something in another namespace and provides a local pmc you can use to invoke it.) I'm parsing a 8000 line program and spending all my time in gc :( 150m RSS has been running for almost 10 minutes. Hm. It might be fun to add Role support to cardinal, even though afaict it doesn't exist in ruby. ruby has mixins, which are similar to roles. gack Similar, eh? * Tene reads. You can implement mix-ins with inheritance. "When I suggested roles, I can tell you that I did not have mixins in mind." :-) Nor interfaces. * Tene teach again bbiab. Sure, but roles can be used to provide both of those too. Could be a bug in my code as well, but I'm in GC a lot. You can drive in nails with a dull rock, but that doesn't make it a substitute for a hammer. Not a *good* substitute that is. % gryphon has left gryphon!~gryphon@dsl-209-221-185-54.zipcon.net tewk, your app should spend 25-40% of its time in GC. Adding roles to RPG will be great X-) Well its still going so it might a bug I've introduced. chromatic, is that typical of CG-ed (dynamic) languages? s/CG/GC/ I would hope it would be towards the low end of that count, and possibly further then that 10% is more reasonable. Its typical of unoptimized runtimes (parrot) and naive GC implmentations. Our sweep is very inefficient, and global stop the world mark and sweep is somewhat inefficient. for applications that aren't too memory intensive, GC should be negligible Also for long-running applications, where there are many small allocations. (In that case, avoiding memory fragmentation is a benefit.) % IllvilJa has joined #parrot % Limbic_Region has joined #parrot % Khisanth has left Khisanth!~Khisanth@pool-68-237-111-126.ny325.east.verizon.net % Khisanth has joined #parrot chromatic: something must be leaking somewhere, my parser is making progress but slowly. What can I do to profile it or provide more information? % iblechbot has left iblechbot!~iblechbot@ppp-62-216-205-124.dynamic.mnet-online.de If you can pare down the parse file to something that runs in 30 seconds or so, you can run callgrind on the parse and see what happens. A few minutes with kcachegrind should show some interesting data. This presumes you're on a platform with valgrind and kcachegrind. It starts out fast and progressively gets slower. We should be able to see trends though. The problem with an O(2n) GC (and yeah, lots of handwaving to get it there) is that it gets expensive as n goes up. ... but it's never *not really* expensive. So it should show up in any profile that does something useful. * tewk goes to try and find a ~30 second file to parse % allison has left allison!~chatzilla@dsl-241-62-167.telkomadsl.co.za % cjfields has joined #parrot 15 might be better. I've been using the Rakudo actions.pm file for profiling these past few months. % cjfields has left cjfields!~cjfields@newrad.igb.uiuc.edu % jan has left jan!~jan@89-253-66-101.customers.ownit.se It takes about 10 minutes to run a callgrind profile, which isn't too bad. % chromatic has left chromatic!~chromatic@sub17-30.member.dsl-only.net % chromatic has joined #parrot % Ivatar has left Ivatar!~graham@tu055.demon.co.uk % radhios has left radhios!~roberto@200.47.67.169 % Eevee has left Eevee!~eevee@c-67-160-3-54.hsd1.wa.comcast.net % Eevee has joined #parrot % Eevee has left Eevee!~eevee@c-67-160-3-54.hsd1.wa.comcast.net % ank has joined #parrot % Eevee has joined #parrot % chromatic is now known as chromatic_away % Whiteknight has left Whiteknight!~Whiteknig@c-71-230-33-251.hsd1.pa.comcast.net % TiMBuS has joined #parrot % grim_fandango has joined #parrot % Eevee has left Eevee!~eevee@c-67-160-3-54.hsd1.wa.comcast.net % Eevee has joined #parrot is there any pir syntax to call something directly from another namespace? % slightlyoff has left slightlyoff!~slightlyo@204.14.154.209 % AndyA has left AndyA!~andy@82.152.157.85 % donaldh has left donaldh!~chatzilla@proxy-sjc-2.cisco.com % donaldh has joined #parrot DietCoke: Not that I know of; you need to look it up and then $P0(...) % Zaba has joined #parrot * jonathan sleeps % AndyA has joined #parrot % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru % bacek_ has joined #parrot % bacek_ has left bacek_!~bacek@mcas-151.usr.optusnet.com.au % bacek_ has joined #parrot ... you can't use [] in a macro!? * DietCoke cries. (oh, right, this is why I haven't hacked on tcl in ages. =-) (... because I keep making wild claims about things that aren't true?) % chromatic_away has left chromatic_away!~chromatic@sub17-30.member.dsl-only.net % Whiteknight has joined #parrot what is qpsmtdp? % IllvilJa has left IllvilJa!~jilves@emea-netcache1.oracle.co.uk r28228 | coke++ | trunk: : [tcl] Delete unused file. diff: http://www.parrotvm.org/svn/parrot/revision?rev=28228 % Whiteknight has left Whiteknight!~Whiteknig@c-71-230-33-251.hsd1.pa.comcast.net % chromatic has joined #parrot % Limbic_Region has left Limbic_Region!~Limbic_Re@c-68-49-236-220.hsd1.md.comcast.net % Whiteknight has joined #parrot % bacek__ has joined #parrot % bacek_ has left bacek_!~bacek@mcas-151.usr.optusnet.com.au % rdice has joined #parrot % gmansi has left gmansi!~gmansi@190.55.35.246 % ruoso has left ruoso!~ruoso@a81-84-237-13.cpe.netcabo.pt hey,c. % gmansi has joined #parrot morning... pong % ank has left ank!~ank@ppp59-167-200-77.lns1.hba1.internode.on.net you get my cell? ohloh-- % Theory has left Theory!~Theory@c-24-21-175-208.hsd1.mn.comcast.net % Eevee has left Eevee!~eevee@c-67-160-3-54.hsd1.wa.comcast.net chromatic: http://tewk.com/nci.callgrind.out I ran it without any special commandline parameters % kid51 has joined #parrot % particle1 has joined #parrot % Eevee has joined #parrot % kid51 has left kid51!~jkeen@68.237.19.212 % particle has left particle!~particle@c-98-232-7-104.hsd1.wa.comcast.net % kid51 has joined #parrot % schobes has joined #parrot % schobes has left #parrot % Whiteknight has left Whiteknight!~Whiteknig@c-71-230-33-251.hsd1.pa.comcast.net % grim_fandango has left grim_fandango!~matt@bas2-kingston08-1167934364.dsl.bell.ca % grim_fandango has joined #parrot % kid51 has left kid51!~jkeen@pool-68-237-19-212.ny325.east.verizon.net tewk, a lot of bsr calls. Those can get a little expensive. 36% of all GC runs are due to those. That's probably something worth optimizing in your grammar. % sjansen has left sjansen!~sjansen@hq-nat2.gurulabs.com Looks like 20% of all GC runs are due to get_string calls on PMCProxy. 90% of those are getting object attributes, which I'd like to make somewhat cheaper. Another ~10% of GC runs come from calling name on Object PMCs. Looks like 3% of the immediate runtime costs come from converting String PMCs to STRINGs in the calling conventions. Avoiding that could get you 5-7% improvement. My (informed) guess is that you have a lot of backtracking in your grammar, and a couple of careful optimizations there could speed things up significantly. % rdice has left rdice!~richarddi@CPE001ff33cb98b-CM00159a01d44c.cpe.net.cable.rogers.com % davidfetter has left davidfetter!~davidfett@start.fetter.org % tetragon has joined #parrot % grim_fandango has left grim_fandango!~matt@bas2-kingston08-1167934364.dsl.bell.ca % petdance has joined #parrot % cotto_home has left cotto_home!~cotto@75-92-237-130.sea.clearwire-dns.net % bgeron has joined #parrot % bgeron_ has left bgeron_!bgeron@toad.stack.nl (backtracking grammar) -- yes, while tracking down a bug in PGE earlier today, I noticed quite a few bsr calls that I think we could improve on also, things will be *much* better when we have protoregexes and ltm because we can eliminate a ton of branches and backtracking If you want another speedup in Rakudo parsing, fix a couple of those easy bsrs. yes currently each alternation in rules stores another backtrack point (bsr) at least, I *think* that's what happening, based on the trace I did so, an alternation with five branches ends up with four bsrs, where only one (at a time) is really needed. with protoregexes we can eliminate quite a few of those alternations but we can also generalize alternation to be a list operator instead of binary If any of those are an hour or less of work, you could save a fair amount of amortized development time. (The rules change when pdd25cx merges though.) protoregexes are definitely more than an hour. Fixing Alt may be O(hour) what changes in pdd25cx merge? There's no bsr/Stack_Chunk_t mess in pdd25cx. So the GC characteristics of backtracking have changed somewhat. ah, yes. But what we have instead is a bit heavier, so avoiding bsrs (or their replacement) is an even bigger win, I should think at any rate, I'm sure there will always be grammars that take the alternation approach instead of the protoregex approach, so this is a particularly useful optimization to add. It's a good policy in general, but I'm not going to guess until I measure it. I was a bit surprised to see strings of 11 or so bsr's in a row. :-) That's not good. anyway, that'll be a good project for tomorrow. far too many interesting things to work on these days :-) and I need to write some journal posts. Me too. r28229 | chromatic++ | trunk: : [lib] Fixed a memory leak in isa_hash initialization for PMCs; : parrot_new_hash() allocates Hash memory already, so there's no need to allocate : it here. diff: http://www.parrotvm.org/svn/parrot/revision?rev=28229 % tetragon has left tetragon!~seneca@76-10-171-48.dsl.teksavvy.com afk for a while r28230 | chromatic++ | trunk: : [src] Changed several runtime constant strings to compile-time constant strings. diff: http://www.parrotvm.org/svn/parrot/revision?rev=28230 % chromatic has left chromatic!~chromatic@sub17-30.member.dsl-only.net % Eevee has left Eevee!~eevee@c-67-160-3-54.hsd1.wa.comcast.net % Zaba_ has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % Eevee has joined #parrot % donaldh has left donaldh!~chatzilla@proxy-sjc-2.cisco.com % donaldh has joined #parrot % Eevee has left Eevee!~eevee@c-67-160-3-54.hsd1.wa.comcast.net % petdance has left petdance!~Andy@64.81.227.163 r28231 | chromatic++ | trunk: : [PDDs] Cleaned up PDD formatting errors from the codingstd tests. diff: http://www.parrotvm.org/svn/parrot/revision?rev=28231 % Eevee has joined #parrot % uniejo has joined #parrot % Psyche^ has joined #parrot % Patterner has left Patterner!~Psyche@e177229038.adsl.alicedsl.de % Psyche^ is now known as Patterner % Eevee has left Eevee!~eevee@c-67-160-3-54.hsd1.wa.comcast.net % Eevee has joined #parrot % Zaba has joined #parrot % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru % Zaba_ has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru BREAKING NEWS: Parrot hijacks CPAN, attacks New York! # http://search.cpan.org/~simon/parrot-0.0.1/ [as noted by particle earlier] % allison has joined #parrot