% Zaba has joined #parrot % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru % bacek has joined #parrot % masak has joined #parrot % barney has joined #parrot % uniejo has left uniejo!~uniejo@193.88.64.250 % bacek has left bacek!~bacek@122.110.31.242 % barney has changed the topic of #parrot to: "Parrot 0.6.4" release is underway, please update NEWS and PLATFORMS % barney has changed the topic of #parrot to: "Parrot 0.6.4: St. Vincent Amazon" release is underway, please update NEWS and PLATFORMS % uniejo has joined #parrot r29470 | bernhard++ | trunk: : [build] clean up generated directory lib/Parrot/OpLib diff: http://www.parrotvm.org/svn/parrot/revision?rev=29470 % iblechbot has joined #parrot chromatic++ for editing NEWS barney++ # taking care of the release % Debolaz has joined #parrot pmichaud++ see above "moritz" at 89.13.227.19 pasted "failure in t/tools/dump_pbc.t" (8 lines) at http://nopaste.snit.ch/13579 anyone else seeing that? r29471 | fperrad++ | trunk: : [Pipp] : - add PCRE version diff: http://www.parrotvm.org/svn/parrot/revision?rev=29471 % bacek has joined #parrot % bacek has left bacek!~bacek@122.110.29.171 % bacek has joined #parrot * barney wonders whether the Bugday is worth announcing in case of doubt, it is ;-) % bacek has left bacek!~bacek@122.110.78.11 oh, is it Release Day today? r29472 | bernhard++ | trunk: : [distro] Regenerated MANIFEST.SKIP diff: http://www.parrotvm.org/svn/parrot/revision?rev=29472 masak: yes \o/ % Zaba_ has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru hey, rakudo has +950 passing spectests since last release ;-) that's really not bad. [++] @devs hm, that's not right :) <<++>> @devs @devs >>++; ah, right :) Perl 6 is implemented faster than I can learn it these days :) that's partly true for me as well for example I never used generics in Perl 6, and they are implemented now and all this role and class stuff - I know some of it, but not really in depth ah, yes. generics is there a convincing use case for generics? I mean, Perl 5 is a very weakly typed language, and suddenly in Perl 6 we have generics. what are they intended for? give the type fetishists what they want? ;-) hehe are there things like Java's and in Perl 6's generics capabilities? * masak has to go read up on Sxx situations like "return something of the same types as you gave me" and "expect two parameters of same type" aren't all that uncommon true masak: maybe there's also something interesting on http://www.dlugosz.com/Perl6/ , ISTR that he worked a bit on generics good idea masak: Good Idea: Stopping to smell the roses. Bad Idea: Stopping to feel the roses. purl: your wisdom baffles me sometimes masak: excuse me? ...and sometimes not. % skv has left skv!~skv_@87.242.97.68 % bacek has joined #parrot make fulltest looks fine under Linux * barney is about to commit changes for Parrot 0.6.4 % tuxdna has joined #parrot % tuxdna has left tuxdna!~saleem@122.163.54.90 % Zaba has joined #parrot r29473 | bernhard++ | trunk: : Changes for Parrot release .... diff: http://www.parrotvm.org/svn/parrot/revision?rev=29473 % tuxdna has joined #parrot r29474 | bernhard++ | trunk: : [docs] Pop up editor for commit message. Pasting with -m option is dangerous. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29474 % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru r29475 | fperrad++ | trunk: : [PLATFORMS] : - MinGW gcc 3.4.5 updated diff: http://www.parrotvm.org/svn/parrot/revision?rev=29475 % iblechbot has left iblechbot!~iblechbot@ppp-62-216-197-166.dynamic.mnet-online.de r29476 | bernhard++ | trunk: : [docs] don't recommend to use '-s',capture more verbose output from 'make' diff: http://www.parrotvm.org/svn/parrot/revision?rev=29476 % bacek has left bacek!~bacek@122.110.69.220 r29477 | bernhard++ | RELEASE_0_6_4: : tagged release 0.6.4 diff: http://www.parrotvm.org/svn/parrot/revision?rev=29477 % iblechbot has joined #parrot % uniejo has left uniejo!~uniejo@193.88.64.250 % kj has joined #parrot % ruoso has joined #parrot % barney has changed the topic of #parrot to: "Parrot 0.6.4 "St. Vincent Amazon" Released | http://parrotcode.org/ | 15/648/80 new/open/stalled tix | logged in http://irclog.perlgeek.de/parrot/today". bernhard.schmalhofer@gmx.de | Parrot: link: http://www.perlfoundation.org/parrot/index.cgi?parrot Parrot 0.6.4 flies, http://en.wikipedia.org/wiki/St._Vincent_Amazon barney++ % bacek has joined #parrot congratulations everyone cheers! r29478 | jkeenan++ | parallel: : Correct wrong no. of tests in plan. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29478 % mj41 has left mj41!~chatzilla@pc-jurosz.ro.vutbr.cz % uniejo has joined #parrot r29479 | jkeenan++ | parallel: : Consolidate multiple test files per configuration step into a single file. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29479 % mj41 has joined #parrot perl6: say log(-1+0i,) OUTPUT[0␤] perl6: say sqrt(-1+0i,) OUTPUT[6.12303e-17+1i␤] that's better ;) % iblechbot has left iblechbot!~iblechbot@ppp-62-216-199-11.dynamic.mnet-online.de * barney just bought ticket for YAPC::EU so sad that I can't go there :( barney: ping jonathan: wednesday I'll be gone all day on a business trip, so thu or fri are better barney: you now have comaint on the modules in question -- try requesting a reindex pmichaud: you accidentially duplicated the "added generic type declarations" lines in NEWS but I noticed only after the release moritz: oops. chromatic and I ended up editing NEWS at the same time and so I had to go clean up the conflicts and I guess I missed one. it's not too bad -- we'll just claim we added generics in two steps. :-) "twice as generic as before!" should I remove one? or is NEWS a historical document that shouldn't change in retrospect? lol remove one. "bacek" at 58.111.0.124 pasted "Complex.log() implementation for pmichaud/moritz" (30 lines) at http://nopaste.snit.ch/13583 % wknight8111 has joined #parrot message kid51 re #56928: i haven't built parrot in two weeks, and i trust andy dougherty, so if it looks like it works fire away Sorry, I've never seen kid51 before. r29480 | moritz++ | trunk: : [NEWS] removed (nearly) duplicate line diff: http://www.parrotvm.org/svn/parrot/revision?rev=29480 bacek: I just wonder if they should really go into src/builtins/any-str.pir moritz: actually no. And forget this patch for the moment. bacek, I didn't have anything matching this patch for the moment complex methods we've been putting into Complex It didn't work in 'clean' checkout pmichaud: ok, thanks for clarifying bacek: applies cleanly nonetheless, testing now =item sqrt should probably read =item log :-) pmichaud: already fixed that locally moritz: test will fail moritz++ I noticed, yes ;) % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru "bacek" at 58.111.0.124 pasted "Correct Complex.log() implementation for pmichaud/moritz" (101 lines) at http://nopaste.snit.ch/13584 much better version :) % Zaba has joined #parrot moved log() to any-num +exported from Complex. I've been keeping the functions in alphabetical order inside of any-num.pir other than that, the patch looks good. pmichaud: ouch. Didn't notice it. I'll change patch pmichaud: 'int()' in wrong place :) I left int() next to truncate, though since they're really the same thing. but I guess it can be alphabetized also. * barney requested reindexing "bacek" at 58.111.0.124 pasted "#3 Correct Complex.log() implementation for pmichaud/moritz" (125 lines) at http://nopaste.snit.ch/13585 with reordered functions ( int() as well) bacek: ok, I'll smoke & apply bacek++ ./rakudo -e 'say log(-1+0i)' 0+3.14159i log10 is harder... I can just '!EXPORT' it... * moritz wonders if we should start implementing the two arg form of log and we need to test it % gryphon__ has joined #parrot % wknight8111 has left wknight8111!~chatzilla@66.252.102.38 % wknight8111 has joined #parrot % Zaba_ has joined #parrot pmichaud: How I can invoke parent's method from child's override? SUPER:: ?? there's not a way to do it at present. at least, not that I'm aware of. do you mean a parent's vtable method or just a parent method? (a parent method in PIR) just method given that class Foo is a parent of Bar if you have Foo's protoobject you can do $P0 = find_method fooproto, 'methodname' % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru bar.$P0(...) i.e., look up the parent method specifically and invoke it will it work for vtable? like bar.$P0(self,..)? no, it doesn't work for vtable, since find_method doesn't retrieve vtable methods ok, thanks also, you don't need to pass self, since bar is self (I meant 'bar' here to be an instance of class Bar) ah, ok. so I probably should've said self.$P0(...) pmichaud: so, I assume, using this technique we can implement authothreading for Junctions? override 'find_method' in Junction and construct proper closure on fly. Or my thought totally wrong? r29481 | moritz++ | trunk: : [rakudo] add Complex log() and re-arranged any-num.pir, bacek++ : Patch Curtesy of Vasily Chekalkin diff: http://www.parrotvm.org/svn/parrot/revision?rev=29481 you mean autothreading for methods on junctions? yes, essentially we'll override find_method, I suspect. But even then it'll be a bit tricky. can we add bacek to CREDITS to shorten the attribution in the commit messages? moritz: jonathan did it already the attributions are supposed to be that way for anyone w/o a commit bit at least, that's what I was once told pmichaud: ok moritz: and you've made typo in my email :) oh dammit, sorry somehow copy&paste doesn't work in the vim instances that "svn ci" spawns so I retype it every time, and hope I don't amke a mistake moritz-- missppeelled "courtesy" also moritz: no worries (It was first phase that I learned to say in all situations in Australia :) me-- again karma me bacek has karma of 52 karma (me) (me) has neutral karma not so bad :) pmichaud: I failing to implement 'log10()' for Complex... There is log10 implementation in src/pmc/complex.pmc, but I can't call it from rakudo's Complex.log10 I don't see log10 in complex.pmc ok, here begins the fun: log(-1i) -> 0-1.5708i. The test checks for 1i*pi*1.5, which is also correct, but on a different complex plane. What should I do? should we standardize on one complex plane? or adapt the tests to deal with any complex plane? what do most other languages do? To me, standardizing on one complex plane sounds right, but I'd check with p6l Mathematica returns the same result as Rakudo but I don't know if it does so consistently pmichaud: my bad... sorry perl6: say ((1|2) + (3&4)).perl OUTPUT[get_string() not implemented in class 'Junction'␤current instr.: 'infix_junction_helper' pc 7790 (src/gen_builtins.pir:5050)␤called from Sub '_block11' pc 67 (EVAL_13:21)␤called from Sub 'parrot;PCT::HLLCompiler;eval' pc 806 (src/PCT/HLLCompiler.pir:481)␤called from Sub ..'parrot;PCT::HLLCompiler;evalfiles' pc 1088 (src/PCT/HLLCompiler.pir... it should be possible to write .perl for Junction perl6: say ((1|2) + (3&4)).values OUTPUT[get_string() not implemented in class 'Junction'␤current instr.: 'infix_junction_helper' pc 7790 (src/gen_builtins.pir:5050)␤called from Sub '_block11' pc 67 (EVAL_13:21)␤called from Sub 'parrot;PCT::HLLCompiler;eval' pc 806 (src/PCT/HLLCompiler.pir:481)␤called from Sub ..'parrot;PCT::HLLCompiler;evalfiles' pc 1088 (src/PCT/HLLCompiler.pir... note that ((1|2) + (3&4)).values would likely still be a Junction (a List of junctions, anyway) I find the fact that | and & are no more binary or/and kinda confusing which one takes priority, '|' or '&' ? masak: & probably ok, so a list of two | junctions then (4|5, 5|6) yes, that seems right there oughta be a method to deeply de-junctify a value masak: so, what would we get in the case of the above? pmichaud: I don't know exactly. something well-behaved. maybe a List subclass that indicates that it contains and-ed values, and the elements similarly instances of a subclass indicating or-ed values or if we prefer to not subclass, separate classes for that. or something else. perhaps something akin to the inner structure of $/ sure, those can work % wknight8111_ has joined #parrot if the $/ alternative is feasible, I like that one the best although "a List subclass that indicates that it contains and-ed values" sounds a lot like and(), with the exception of not being a List subclass :-) % wknight8111 has left wknight8111!~chatzilla@66.252.102.38 moritz: autothreading not implemented for Junctions (yet) % wknight8111_ is now known as wknight8111 % wknight8111 has left wknight8111!~chatzilla@66.252.102.37 we had autothreading for junctions implemented at one point but it slowed things down a fair bit so I disabled it until we do more work on dispatching in general pmichaud: why it slowed things? pmichaud: the exception being that I can examine a List object, whereas a junction behaves like a value with MPD well, I can examine a Junction, too, with: $junc.values[3] and for "nested junctions", it's then $junc.values[0].values[1] which looks a lot like $/ :-) % britneypire has joined #parrot (autothreading on junctions) -- actually, I'm guessing that methods don't autothread over the invocant now that I think about it a bit more so there's no need to overload find_method pmichaud: I'm pretty happy with that % britneypire has left britneypire!~britneypi@212-198-248-33.rev.numericable.fr what's the way to test whether what I'm holding is radioac... er, junctive? $x ~~ Junction ? but of course. thanks. that means that I can write my deep dejunctifier, should I ever need it I'm contented. pmichaud: last 4 tests in S29-str/index.t... does $x ~~ SomeClass return true whether $x is of SomeClass? Zaba_: yes nice. no .isa()? I think there's .isa also, but ~~ does more I know that ~~ is used for regex matching too for example if SomeClass is actually a role, and $x does SomeClass, ~~ will return True and .isa will false oh. interesting. so $obj ~~ Type actually checks if "$x is of type Type", for a useful value of "is of type" $obj ~~ Something checks whether $obj is of type Something, or does role Something, and that's all? depends on what Something is, but yes. if Something is a type name, yes % jhorwitz has joined #parrot r29482 | pmichaud++ | trunk: : [rakudo]: spectest-progress.csv update, 95 files, 1695 passing tests diff: http://www.parrotvm.org/svn/parrot/revision?rev=29482 moritz: around? nope. bacek: partially partially is already too much w/o proper locking or shared PMCs purl, forget partially moritz: I forgot partially purl, forget around? moritz: I forgot around barney: let me know if the reindexing fails/succeeds pmichaud: OK, maybe we make it Friday so I get a full day on it. jonathan: works for me Congrats to everyone on the Parrot release! (backtrack) methods called on a junction are methods on the junction object itself Anyone happen to know what the news item '+ improved IMCC register allocator' referred to? Improved how? "bacek" at 58.111.0.124 pasted "2-args log implmentation for moritz" (72 lines) at http://nopaste.snit.ch/13586 note that the "2-arg" implementation is really supposed to be done with an optional arg :-) does it make a difference? pmichaud: How's things on the lexicals/closures? I saw the post on p6l... jonathan: no response on p6l yet. Until I get a response there, I'm not sure I can progress moritz: S29 shows log as having a named arg pmichaud: logick is quite different. My first version was with optional arg. But this one is much easy to understand (for me at least) pmichaud: OK. Bob seems to have put a patch in that keeps us and him happy for now, though. jonathan: I agree, so I may just let it simmer a while OK. however, I think we may quickly run into difficulty with recursion or closures Closures make washort's CS teacher happy or both The recursion example that used closures that I hand-compiled worked... :-) There are other cases though, that I'm not convinced will. Well, I guess we can just find what's broken and add them to tests as fudged. hand-compiled? Zaba_: I took the source in Perl and wrote PIR that was close to what I'd expect it to compile down to. aha jonathan: I'm worried about something like if cond { $a = &foo; } pmichaud: Does that do a newclosure on foo? by definition, the newclosure generated for &foo won't be in the same scope that defines foo Right. Someone wants to look at the .parrot_current_rev issue before releasing? NotFound: I think the release already happened. Then not ;) jonathan: that simple case is why I think that newclosure as presently constituted can't solve our problems (unless we do lots of really odd manipulations to move the newclosure operation out of the nested block) anyway, on sat/sun I was feeling fairly comfortable that I could come up with a clean spec, but I really need an indication of what happens for the examples I posted to p6l pmichaud: OK, I think clone is what we actually want to emit. (for reference taking) I agree. % cognominal has left cognominal!~cognomina@82.67.232.89 OK Guess we can arrange later on, what I look at on Friday I'll have time to think about things while on the planes tomorrow If you've no particular goals, I may do anonymous classes, which should be easy-ish. OK. today is a little hectic preparing for trips and getting ready for extended travels starting next week Sure, I'm pretty busy today too. originally my trip tomorrow was for one 90 minute meeting. In the past 24 hours it's increased to be four meetings (ranging from 30 mins to 120 mins) % cognominal has joined #parrot % iblechbot has joined #parrot Ouch! well, they all pay pretty well. :-) Getting paid = good. :-) afk, errands % kjs_ has joined #parrot % DietCoke has joined #parrot I need some PCT guidance. % kj has left kj!~IceChat7@193.1.100.109 ee. % tuxdna has left tuxdna!~tuxdna@122.163.54.90 * Tene prods DietCoke For tcl, my plan is to fake the non grammar by pretending the builtin functions are originally part of the language syntax. Right. but I don't want to paint myself into a corner when I have to implement [rename], (which lets you rename even the builtins). So I was thinking that I was going to need a sub somewhere that corresponded to the runtime version... but I think if I am going to support changing the grammar anyway (to remove things), I can just make rename support changing the grammar so that [rename puts say] DTRT. ... so I think I just talked myself down from a ledge there. so, "we'll be able to update the grammar at runtime at some point, right?" (I also need to allow user defined proces to re-parse themselves if they're invoked after the grammar changes. and also only run one command at a time.) DietCoke: will not be easier to not trying to fake the non grammar? also, how do I mark a string literal in a grammar so my action can tell if it was present? NotFound: ... I can't parse that. DietCoke: $='zomglolwtf' ? DietCoke: if tcl parsing is oriented to runtime, trying to do it at compile time can be impossible. DietCoke: don't parse things at the language level you don't have to parse, and internally have a number of parsing helper functions? % Zaba has joined #parrot % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru You could take the approach I'm moving lolcode away from. ;) back NotFound, moritz: at which point, what's the point of using PCT? DietCoke: maybe none. I will refrain from making a snarky comment about dynamic language support. =-) DietCoke: dunno. % uniejo has left uniejo!~uniejo@193.88.64.250 % teknomunk has joined #parrot in trunk, partcl does the runtime dispatch just fine. I was trying to use PCT to provide some pre-compiled versions of the standard builtins. (rather than having to handroll PIR for everything, which I'm doing now.) Abusing the grammar in this fashion seemed a reasonable compromise. I'm open to suggestions. DietCoke: You can't just call the standard builtins in the same way as user defineds? yes. I can. see trunk. So what are you trying to do, pre-compile the calls to them? Trying to unroll them for speed. puts $a -could- compile down to "say $P1" if we were clever. HLL JITting ;) right now it compiles down to an insane amount of PIR plus the entire tcl runtime. DietCoke: A nigthmare solution can be to make an opcode for each buitin, an have the implementation for that opcode check at runtime if the function has been redefined. that would involve writing the builtins in C which is even worse than writing them in PIR. =-) You can at the same time build a way to define opcodes implemented in pir ;) So, anyway, back to my PCT approach. =-) % donaldh has joined #parrot tene: something like: 'puts' $=[ '-nonewline'? ] ';' ? pmichaud: should we be calling NQP files ".pm" ? (as opposed to ... .nqpm, I suppose.) $=['-nonewline']? is what I was thinking or [$='-nonewline']? NQP is a subset of Perl 6. All NQP programs are valid Perl programs with the same meaning, yes? .oO(Should NQP's test suite also be running the tests with rakudo?) Tene: my current annoyance is that all my editors want to treat it as perl5 source. Maybe the answer is "Not Quite" X-) DietCoke: # vim: ft=perl6 modelines++ of course that only works for vim, though I have plans to work on lolcode and cardinal again tonight. I plan to have lolcode generating a normal AST by the end of the week and completely removing the ugly runtime lookup stuff. I should be able to then take that same approach to improve cardinal quite a bit. DietCoke: I'm calling them .pm, yes. In theory anything that NQP compiles Perl 6 should be able to compile. % teknomunk has left teknomunk!~teknomunk@r74-195-239-111.stl1cmta01.stwrok.ok.dh.suddenlink.net what does [rename] do, exactly? if I rename a builtin, does it stay that way permanently? moritz: that should be added to the language shell. pmichaud: yes. so, just replace the existing builtin with the new one which is fine when everything is runtime dispatch. Not so fine if the grammar is at all smart about the builtin processing. where "grammar is smart" means...? let's say I define [if] in the grammar to take advantage of the if past nodes. then someone calls rename. say, [rename if iffy] so if I've added it to the grammar, I have a lot of things to update when that happens, and there may not be a simple builtin func to call at that point. (whereas in trunk, everything is a sub. I just change the name of the sub in the main:: namespace.) can you have a symbol table that is updated at parse time? I'd probably start by not using the if past nodes i.e., keep [if] as a runtime op for now yes, this might mean that pct is not very useful for tcl then you could parse for an identifer, and check if it's the current name for 'if' we don't really have the concept of 'thunks' yet in parrot or pct I guess I'm not seeing the value of pct for me at all, then. =-) there might not be one. once we have protoregexes, though, it might be easier to redefine 'if' and other "keyword"-like tokens ....actually come to think of it well, come to think of it is how the zombie monkies come in the night and pluck the brains from unsuspecting children while they sleep * pmichaud smiles evilly you probably don't want to change the grammar as much as you want to change the action method -- the part that produces the PAST and *that's* very easy to do. I do want to change the grammar. because 'if' parses differently after it's been renamed? oh, because the keyword itself has changed so, you want to dynamically look up keywords from a hash or array if my grammar has 'puts [$=-nonewline] ' before, and someone creates a user defined proc called puts that overrides it, I can't have that nonewline stuff in the grammar anymore. okay you're definitely after protoregexes then Was hoping to use PCT to avoid a lot of the manual argument mangling I have to do. with a protoregex you'd have term:puts { $ [$=-nonewline] } in the original grammar er, I was missing a ? there. but after someone redefines puts it'd replace that rule with something less specific i.e., you'd end up with a derived grammar and then parse using the derived grammar. Perl 6 will be doing the same thing. I figured in that case, I'd just have a default "command" dispatch, and by removing puts, it would fall back to the current trunk-like behavior. that can work also. is -nonewline part of the grammar normally in Tcl? grammar? no. it's an argument to puts. so why is it parsed specifically in the grammar? % cognominal has left cognominal!~cognomina@82.67.232.89 so I don't have to do by hand when redefining puts isn't something that happens all the time. can't the default puts (function) simply parse -nonewline as part of its arguments? ... I keep having the same conversation over and over here. =-) yes. that's what I'm doing in trunk right now. I'm missing something. I am trying to generate more efficient bytecode. I'm questioning why 'puts' appears in the grammar at all, if the builtin sub already does the argument processing I don't want the builtin sub. I am forced to have it in trunk. you want something more efficient okay, I got back to what I said earlier, then so puts doesn't appear in trunk's grammar. you don't want to do the "more efficient" part in the grammar -- you want to do it in the action methods it only appears in the tcl_pct's branch's grammar. let the action method decide if it's safe to use the more efficient version or to use the built-in version DietCoke: can the rename be traced at compile time? and where would I define this more efficient version? DietCoke: A fast an efficient tcl will not be counter-natural? X-) DietCoke: or can you do stuff like if rand < 0.5 [rename foo bar]? moritz: sure you cna. we don't need to trace the rename at compile time unlike many of the other compilers we're working with, tcl's model would likely be "parse one command, execute it" (especially if we're running the compiler after every command anyway) i.e., it's more of an interpreter than a compiler. pmichaud: by doing this in the actions, though, i'd always need to have a fallback of a runtime version of a command, no? % cognominal has joined #parrot DietCoke: no. in the actions you can do: the equivalent of if sub puts exists then generate past to call that sub else generate past to do XYZ directly pmichaud: Wait for the day I implement a Basic line oriented, able to modify his own code by POKE. That day you'll know what a pure interpreter is X-) i.e., inside the action methods we can query the state of the current runtime and choose to do different things based on that pmichaud: I'd need something to keep track of renames and be able to dispatch based on that. the original builtin 'puts' could be renamed to 'say', e.g. That approach might work. So then I could write my "compiled" versions in NQP/past instead of how I do it now. DietCoke: correct. and PAST even allows inlined PIR segments what about user-defined procedures? My original plan was to basically recompile them if someone had called 'rename' anywhere. (since if they call puts and someone's called rename since the proc was defined, it needs to use the new behavior.) DietCoke: it might be worthwhile to keep the PAST tree around in fact hmmmm (thinking) I think I have to go back to my earlier comment, that I'd start by doing the builtins as subs and then figure out ways to optimize after that :-) "that's trunk" yes, I got that part. :-) except mdiep and I handrolled our own way of optimizing things. if you already have the builtins in trunk, then doing a first cut of a simple pct-version is easier too, yes? not for me, no. =-) my pct-fu is "start with a brand new empty shell" I would not be averse to someone trying out PCT against tcl as it stands today, but I suspect that'd be non-trivial for me to do. this is something I would _love_ to sink my teeth into, honestly, and I probably will at some point. But it'd be late august before I can do it maybe I can bug tene into doing it. =-) r29483 | cotto++ | trunk: : [pmc] add resizablebooleanarray test, fix codingstd goof diff: http://www.parrotvm.org/svn/parrot/revision?rev=29483 erands -- bbiaw % AndyA has left AndyA!~andy@ca93nt.hexten.net % AndyA has joined #parrot % Infinoid has left Infinoid!infinoid@quack.glines.org % Infinoid has joined #parrot pmichaud: reindexing worked for the individual module, but http://search.cpan.org/~bschmal/parrot-0.6.4/ is still said to be unauthorized % rlb3 has joined #parrot r29484 | coke++ | trunk: : update ticket pointer to new system. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29484 % Zaba_ has joined #parrot % masak has left masak!~user@130.238.45.242 barney: you need to submit a request to reindex iirc % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru i forget if that's via pause, or if you need to email brian_d_foy et al we should write that down if it's not already in the doc. i think brian wrote a doc about it docs/project/pause_guide.pod I reindexed parrot-0.6.4.tar.gz. Right now I requested to reinedex parrot-0.6.4.meta % sjansen has joined #parrot % julian_ has joined #parrot % cjfields has joined #parrot r29485 | julianalbo++ | trunk: : Update .parrot_current_rev in Configure if possible diff: http://www.parrotvm.org/svn/parrot/revision?rev=29485 % paco has joined #parrot r29486 | julianalbo++ | trunk: : Update .parrot_current_rev in Configure if possible-fix diff: http://www.parrotvm.org/svn/parrot/revision?rev=29486 % Zaba has joined #parrot r29487 | bernhard++ | remove_getfd: : #48310: [DEPRECATED] getfd opcode : Create branch 'remove_getfd' for working on RT #48310 diff: http://www.parrotvm.org/svn/parrot/revision?rev=29487 % paco has left paco!~user@dy022235.etu.univ-rennes1.fr % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru r29488 | julianalbo++ | trunk: : Update .parrot_current_rev in Configure if possible-fix 2 diff: http://www.parrotvm.org/svn/parrot/revision?rev=29488 % Zaba_ has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru I don't think I did anything this week for #ps * Tene reads svn log orite, lolcode switches for jhorwitz purl: parrotsketch? parrotsketch is a status meeting for parrot core committers held every Tuesday at 18:30 UTC in #parrotsketch 1.5 hr tene: if you're bored you could figure out why ../../parrot tcl.pbc library/tcltest/tcltest.tcl is losing track of a command name and replacing it with a $P register. % chromatic has joined #parrot (or convert tcl in trunk over to using PCT with as little other modifications as possible.) Tene: or look at RT #56828 r29489 | julianalbo++ | trunk: : Update .parrot_current_rev in Configure if possible-fix 3 diff: http://www.parrotvm.org/svn/parrot/revision?rev=29489 http://search.cpan.org/~bschmal/parrot-0.6.4/ is now authorized YaY r29490 | moritz++ | trunk: : [rakudo] add and test Str.trans, cjfields++ : Patch courtesy of Chris Fields : Adds one file to spectest_regression, +37 passing tests diff: http://www.parrotvm.org/svn/parrot/revision?rev=29490 That's odd. If I don't make an update after the commit, svn info does not reflect the commited rev number. NotFound: that's because your revision number could be out of date NotFound: if somebody changed other parts of the repo between your last 'svn up' and 'svn ci' moritz: but svn knows what is the number, it tells it at commit end. NotFound: yes, but the rest of your repo is not in that state Ah, yes, I see the point. % gryphon__ has left gryphon__!~gryphon@dsl-209-221-185-54.zipcon.net DietCoke: and if I'm not bored? Then I presume you have other things to work on. Someone can test this last commit and tell if Configure.pl shows the correct revision number? NotFound, looks ok to me on linux/x86 of course, the arch shouldn't make much difference for something like that % cjfields_ has joined #parrot should Configure.pl print the revision number? it should be part of Configure.pl's output r29491 | coke++ | trunk: : [tcl] Remove some useless global lookups (these are now done in the TGE : step and are, as far as I can tell, not needed here. All tests pass. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29491 moritz: It already printed it, I don't touch that part. ah yes grep++ ;-) In any case, it must not print a wrong one. cotto_work: it might if he's somehow using the svn binary where we don't have one. (no clue if he is, though.) % cjfields has left cjfields!~cjfields@newrad.igb.uiuc.edu If svn is not used, the package must include a .parrot_current_rev file. % Theory has joined #parrot if it's a package, it should be a release #, not a rev number we're using to track things. A snapshot package, I mean. (unless someone is constructing packages based on svn revision, which would be... odd. % iblechbot has left iblechbot!~iblechbot@189.18-dial.augustakom.net what is "a snapshot package" ? A daily snapshot of the repo. http://svn.perl.org/snapshots/parrot/ We can probably have robert include that, sure. barney: I've seen no announcement on perlmonks.org - are you going to do that also? tjh++ r29492 | bernhard++ | remove_getfd: : [codingstd] Remove hard tab. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29492 moritz: I'm not active there, so I skipped that. Please go ahead and announce it there. Same for Reddit, Slashdot ... barney: ok, I'll post to perlmonks later * DietCoke wonders if the .HLL mapping stuff is going to catch anyone's eye. barney: wrong branch? Comments or ideas about pdb renaming? NotFound: perhaps pbc_debug to stick with our newfound pbc naming scheme. DietCoke: trunk wasn't up to date Parrot Byte Code debug? Makes sense. r29493 | bernhard++ | trunk: : [codingstd] remove hard tab diff: http://www.parrotvm.org/svn/parrot/revision?rev=29493 just out of curiosity, how many people here use awk regularly? (N/y) cotto_work: directly, or by using shell scripts that uses it? re: pbc_debug Can't we debug PIR as well? directly barney: actually not. DietCoke: what .HLL mapping stuff? But what I mean is that it debugs at bytecode level, so the name makes sense. pbc_debug++ jhorwitz: .HLL_map doesn't seem to work anymore. ah i thought there was progress i didn't hear about... but this is anti-progress nope. used to work, stopped some thousands of revisions ago. =-) I think I'm failing some of the tcl spec tests as a result. chromatic: ping I think pmichaud is working on that (.HLL mapping) maybe on a branch, but I'm not sure he's working on it for -pct- IIRC, not for the .HLL_map directive. so PCT can keep track of some of this before things ever get to aprrot. * DietCoke stares at the mess that parcl is. "partcl" on the phone with Anders Heljsberg Anders Heljsberg is he lead architect of C# no, Anders Heljsberg is the lead architect of C# okay, DietCoke. all we need... c# on parrot. % Zaba has joined #parrot % kjs_ has left kjs_!~IceChat7@193.1.100.109 % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru monoparrot X-) % donaldh has left donaldh!~chatzilla@proxy-sjc-2.cisco.com % donaldh has joined #parrot I wouldn't worry about that just yet. % Zaba_ has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru I would be happy with anything on parrot at this point. ^_- pancakes? i guess pancakes is "Don't! take pancakes off my plate and ruin my day." * DietCoke feels like crap and ponders just going home now. I'll not be available for #parrotsketch tonight tools/dev/mk_language_shell.pl anything That makes you happy? * DietCoke presumes NotFound is joking. moritz: feel free to pre-paste your report Looks like I might not be here for #ps DietCoke: Trying, at least I've been working on getting PCT to understand HLL namespaces in preparation for using .HLL and .HLL_map, but I'm not using .HLL_map yet. (not even in the branch) but I'm hoping we can start using it soon. thus it better work :-) % wknight8111 has joined #parrot pmichaud: pretty sure it's ingored completely these days. "ignored" but I'll be happy to find myself proven wrong. =-) Did we have some test for it? I remember unbreaking it at least once. % apeiron has left apeiron!~apeiron@c-76-124-253-113.hsd1.pa.comcast.net Well, part of the problem is that there's no defined set of what it's supposed to do. (ticket open for that) so you may have fixed part of it, but not the part I cared about. t/library/hllmacros.t ? ... that's something else entirely. % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru % Zaba has joined #parrot (which I did add tests for, after it lay broken for years. =-) Yeah, it's difficult to unbreak things without tests. it's hard to write tests without a spec. =-) (yes, yes, I could just go write the spec. sometimes I like just being the crotchety HLL programmer.) chromatic: see tcl's runtime/builtin/list.pir for an example of a HLL_map workaround. (at one point, :slurpy gave me a TclList instead of a ResizablePMCArray) chromatic: did you look at the last messages about RT#39669? (trying without it now) (unbreaking things)++ nope, still borked. NotFound, I think RT #39669 is okay now. Let me review the tests, but I think you're right. (closing old tickets)++ chromatic: I'll see about adding a test for the particular HLL_map feature that's borked there. NotFound, close it. DietCoke, thanks. Good. "nope, still borked" is like the catch phrase for my entire project #ps in 3 % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % Zaba has joined #parrot japhb: the register alligator improvements are that it wastes less memory and has a smaller t in its awful O(t * n^8) behavior. n^8 ?!? Holy cow Holy cow is here's the play at the plate... holy cow, I think he's gonna make it! I honestly don't think I've ever seen an algorithm between n^5 and 2^n before I heard about an n^7 once ... 8 could be an estimate. t is at least 8 n^4 is more likely though. sigh, afk again ... I'll have to ask more about it later, I guess. If you're motivated, you could own it. % wknight8111_ has joined #parrot % wknight8111 has left wknight8111!~chatzilla@66.252.102.38 % wknight8111_ is now known as wknight8111 % julian_ is now known as jjore2 % DietCoke has left #parrot % Zaba_ has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % Theory has left Theory!~Theory@h-67-101-1-55.sttnwaho.dynamic.covad.net % cjfields_ has left cjfields_!~cjfields@cjfields.igb.uiuc.edu r29494 | bernhard++ | trunk: : [docs] Add escape sequence \" in double quoted strings. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29494 % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru % Zaba has joined #parrot r29495 | allison++ | trunk: : [pdd] Clarification on literal strings from #parrotsketch meeting. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29495 % chromatic is now known as chromatic_lunchy % barney has left barney!~bernhard@p549A01E6.dip0.t-ipconnect.de % wknight8111 has left wknight8111!~chatzilla@66.252.102.37 chromatic_lunchy: motivated, yes. Have time, not so much (I haven't even had OpenGL hacking time, and that's saying something). Still ... is there already an RT open for it? (er, it == register allocator algorithmic slowness) % iblechbot has joined #parrot % Theory has joined #parrot % iblechbot has left iblechbot!~iblechbot@204.4-dial.augustakom.net % Sartak has joined #parrot r29496 | julianalbo++ | trunk: : Rename pdb to parrot_debugger after Reini Urban suggestions and later discussion diff: http://www.parrotvm.org/svn/parrot/revision?rev=29496 % chromatic_lunchy has left chromatic_lunchy!~chromatic@nat-147-1.oreilly.com % grim_fandango has joined #parrot % ruoso has left ruoso!~ruoso@201.45.49.162 % chromatic has joined #parrot japhb, no real ticket anywhere. I sent a message to the list three weeks ago about it. If you've still got it in your sent mail, just resend it to parrotbug. :-) I think there is a ticket that mentions that some routines are unable to handle register numbers greater than 255 Beacuse they use an unsigned char for the number. % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru NotFound: limiting registers to 255 keeps that n^8 in the register allocator low. ;) r29497 | Whiteknight++ | gsoc_pdd09: : [gsoc_pdd09] update to trunk r29495 diff: http://www.parrotvm.org/svn/parrot/revision?rev=29497 % jhorwitz has left jhorwitz!~chatzilla@96.245.16.45 % Zaba has joined #parrot The problem with the n^8 is that IMCC uses SymReg everywhere for any kind of symbolic entity in PIR, not just registers -- constants, Subs, everything. Tene: don't know if the limit in the amount of registers is reasonable, but the in his numbers is not. That means when the alligator wants to look at all registers, it has to loop through all of the SymRegs in the current compilation unit and filter out only register registers. Oh, and if it wants to look at only P-regs or S-regs, it still has to loop. And loop. And loop. And loop. another historic design flaw - greetinx all Anyway, my conclusion in that message was that fixing it meant rewriting a lot of IMCC, which may not be worth it. ...and that brings us back to the bigger question: How much work needs to be done to make PIRC take over the job? We need a good way to generate PBC in memory or on disk. POST -> PBC would be most ideal. For various reasons which should be obvious. register allocation written in PIR???\ The pdd about pbc format reflects the current state or the intended changes? Why not write one in PIR? speed? speed is, like, too subjective, I think HA soryy, but the best efforts in C so far are slow % Zaba_ has joined #parrot with PIR you take a factor of x200 (average interpreter slowdown for Joe Averages's code) Our best efforts in C are algorithmically awful. Even the naive allocator. % cjfields has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru there is only compilers/imcc/reg_alloc.c - where are the others? There are two allocators in there. The interesting one is #defined out. * Whiteknight sees a massive need for function-level documentation in reg_alloc.c % cjfields has left cjfields!~cjfields@cjfields.igb.uiuc.edu is still the vanilla_reg_alloc in charge? Yes. % toft has joined #parrot % toft has left #parrot well, if there's a faster C algorithm (which is hard) then you could translate that to PIR ;) It wouldn't surprise me if a better implementation of the same algorithm would be faster. different algorithm, yes or moving the inner loops re (I,P,N,S) outside % Zaba has joined #parrot % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru is there a standard error-message function I can call that doesn't require an interp parameter? i know internal_exception does it, but I thought that function was being phased out % Zaba_ has joined #parrot You don't have an interpreter? % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru in config/platforms/win32/env.c:Parrot_setenv I'm fixing that function up and want to fill in some of the warnings slots, but no interp argument internal_exception is intended to just die with a more or less nice message, I think. % Zaba has joined #parrot % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru yeah, but I heard that internal_exception was being phased out maybe i misunderstood that error By the way, GetEnvironmentVariable is macro that can map to the unicode or ansi version. The current Parrot_getenv interface is not able to handle encoding and charset issues. Whiteknight: maybe a change in name, but we always need a way to say "Completely unable to keep working in a sane way" I'll use internal_exception now, then. We can ack it later if we want to change it Under the current interface, you can only do that, or just ignore the errors. Whiteknight, it gets renamed in pdd25cx. Not ignoring we can at least know possible problems. At least, if I'm not confusing internal_exception and real_exception. % teknomunk has joined #parrot % Zaba_ has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % Limbic_Region has joined #parrot anybody want to give a second opinion on rt#56968? I think we can close it pretty quick unless there's a problem I'm going to need to check out pdd25cx and play around with it i guess % Zaba has joined #parrot % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru Go ahead and remove it, Whiteknight. That's all I needed to hear I found this while trying to clean out my rt backlog, so I'm not shirking my GC duties You can clean out my RT backlog too. I don't mind. I'll probably be useless next week too; Foo Camp + working in the office + OSCON = tired. It hink that if we want a warning function able to be called without an interpreter if mus be declared in extern.h and follows his guidelines. s/if mus/it must How do we know which filehandle to print the warning to without an interpreter? Just ignore, or write something to stderr. I agree. last ditch effort -> spam stderr at that point, you have bigger problems to solve then proper logging of your output handle But while we don't know if we want, do not write it. The function, not the message ;) Right. r29498 | Whiteknight++ | trunk: : [core] Remove function Parrot_warn_s, which was unused except in a few tests. Also, remove those tests. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29498 % Psyche^ has joined #parrot does taking a ticket mean I *will* fix it, or just that I intend to when I get the tuits? % Patterner has left Patterner!~Psyche@e177234083.adsl.alicedsl.de % Psyche^ is now known as Patterner I've been interpreting it as the late later * cotto_work: I think is just way of saying: if you start to work in this, talk with me first, please. or "I'm going to lead the way" At least it is how must be seen, whatever the intention of the owner. % kid51 has joined #parrot The intention, looks like is almost always the second. When I take the pdb rename some hours ago, it was the first ;) % Zaba_ has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % ruoso has joined #parrot purl is apparently no longer handling private messages purl is lazy purl? yes, Whiteknight? purl, why did you tell me: "Sorry, I've never seen particle before."? kid51: bugger all, i dunno % teknomunk_ has joined #parrot % teknomunk has left teknomunk!~teknomunk@r74-195-239-111.stl1cmta01.stwrok.ok.dh.suddenlink.net r29499 | jkeenan++ | trunk: : Merge noautopack branch into trunk per http://rt.perl.org/rt3/Ticket/Display.html?id=56928. This deletes configuration step auto::pack and an associated test file. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29499 r29500 | jkeenan++ | noautopack: : Branch has been merged into trunk and is no longer needed at head. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29500 r29501 | jkeenan++ | noautopack-29452: : Branch to which tag corresponded has been merged into trunk, so tag may be : deleted. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29501 % bacek_ has joined #parrot r29502 | jkeenan++ | parallel: : Correct two errors: "my" variable ... masks earlier declaration in same scope. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29502 % AndyA has left AndyA!~andy@ca93nt.hexten.net % donaldh has left donaldh!~chatzilla@proxy-sjc-2.cisco.com % donaldh has joined #parrot % AndyA has joined #parrot % Psyche^ has joined #parrot % Patterner has left Patterner!~Psyche@e177227117.adsl.alicedsl.de % Psyche^ is now known as Patterner % Zaba has joined #parrot % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru I've got my coverage reports working again: http://thenceforward.net/parrot/coverage/configure-build/coverage.html % kid51 is now known as kid51_at_dinner chromatic, you still here? Briefly. What's on your mind? just going to invite you, if you have some tuits, to take a look at my branch Give me 15 - 20 to get back to my hotel and I will. I gutted the sweep code, simplified it down to nothingness, and I'm still getting prematurely freed PMCs no rush, but I'm basically blocked on this Okay. Did you follow my "How to debug GC problems" guide? (sorry, I have to ask) % chromatic has left chromatic!~chromatic@nat-147-1.oreilly.com Yeah, but I'll read it again and make sure I'm not missing anything % AndyA has left AndyA!~andy@ca93nt.hexten.net % bacek has left bacek!~bacek@pa58-111-0-124.pa.nsw.optusnet.com.au % AndyA has joined #parrot Whiteknight - they have pills for that premature freeing that is % chromatic has joined #parrot it's the number one problem among male programmers GC? GC is the boehm conservative garbage collector at http://reality.sgi.com/boehm/cg.html or a really really bad perl "programmer" or GrandCentral.com purl can be remarkably unhelpful sometimes Whiteknight: huh? purl, GC is also branches/gsoc_pdd09 okay, Whiteknight. purl, GC is also a travesty against god okay, Whiteknight. Whiteknight - consider that purl's factoid database is cross channel - so certain entries don't make sense out of context (#parrot) it's my goal to ensure that none of them make sense to anybody Whiteknight++ I'm failing all the PGE tests, which makes sense because I can't build PGE a lot of other tests are passing though, so that's reassuring % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % Zaba has joined #parrot % s1n has joined #parrot % Zaba_ has joined #parrot % kid51_at_dinner has left kid51_at_dinner!~jkeen@pool-71-247-46-24.nycmny.east.verizon.net % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % Theory has left Theory!~Theory@c-67-160-131-113.hsd1.or.comcast.net Whiteknight, see t/op/string.t Some interesting failures there; they look suspicious. the string subsystem has been bonkers for a while though. I suspect the same kinds of offset failures from the compacting code are coming into the rest of the string system you are right, lots of interesting failures Did you re-enable compacting? no i am making the blind assumption that compacting isn't necessary for proper operation % Zaba has joined #parrot Certainly bad for efficiency to disable it, but I don't think it's strictly necessary Agreed. That means compacting isn't the problem here. A good test might be to disable compacting in my trunk checkout and run the test suite there but that's time I would rather not waste right now % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru The good news is that most of the string tests are small and self-contained, so they'll be easy-ish to fix. Compared to PGE anyway. Of course, disabling the compacting code doesn't necessarily fix that problem we were having with string pointers being messed up so maybe it's just hiding a symptom, not the problem Right. with compacting enabled, it makes it to the same point in the build process. I'll debug to see if I am getting the same segfault % kid51 has joined #parrot ...yes, exact same error at the same point. The compacting code isn't affecting it at all Good to know, but let's leave the compacting code off for now. r29503 | chromatic++ | gsoc_pdd09: : [src] Fixed some codingstandards violations. No functional changes. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29503 ./parrot t/op/string_3.pasm should print 4 If I set a breakpoint at Parrot_length_i_s and step into string_length, the string looks correct. % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % Zaba has joined #parrot If I set a breakpoint after that at Parrot_print_i and look at the contents of IREG(1), it's also correct. % kid51 has left kid51!~jkeen@pool-71-247-46-24.nycmny.east.verizon.net Within PIO_printf, the string created for printing is also correct. Hmm. AHA !!!? if I add print "\n" to the end of the code, it prints so we're not flushing a buffer PROBABLY because the buffer gets flushed during destruction? % cjfields has joined #parrot You think that's the case? That explains a lot of these failures. % Andy has joined #parrot PIO by default is line buffered, but when Parrot exits it needs to flush these buffers. That's good though. It means at least this part of strings isn't broken. Sweep code for strings and the sized pools is disabled and the finalization is caput I think it's PIO finalization that we're missing here. I can't enable finalization as-is without introducing new order-of-destruction errors Even sweeping backwards? it sweeps starting at the last arena but in each arena, it sweeps back-to-front I could redo that tonight/tomorrow and try it again It works in trunk, so the algorithm can't be entirely wrong. ./parrot t/op/gc_4.pasm There's a segfault. src/scheduler.c:692 sched_struct->wait_index gets reaped early (its vtable is 0xdeadbeef) yeah, that's like errors I was seeing somehow, some PMCs are still being sweeped early which means either my crippled sweep code is still wrong, or my mapping from card<->pobj isn't correct Is pobject_lives calling mark appropriately? it should be, it looks it to me I'm thinking about ditching the separate cards and using the PObj flags like in PDD09 We lose some speed in the sweep (at least, when the sweep is running at full-speed), but other then that cache locality should keep the cost low % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru Let's benchmark it when we get it working. % Zaba has joined #parrot Interesting. The scheduler gets marked and marks its kids, but they get swept and it doesn't. How confident are you of your state transitions? becoming less and less The child PMCs of the Scheduler are mostly all ResizablePMCArrays. I've kept state transitions to a minimum for this exact reason those would trigger the PObj_data_is_PMC_array flag I'm just waiting for something to click in your head again while I explore. I'm racking my brain here, it all seems like it should work Here's my strategy. I'm going to look for a fork and see if there are still cookies in the lobby. You (if you want) should set a breakpoint in Parrot_Scheduler_mark, grab the address of one of the child PMCs, and then set a conditional breakpoint somewhere in the sweep code to check for the conditions which trigger the sweep for that PMC. And also hope that there are cookies in the lobby, because I want one and I don't really want to walk across the street to the grocery store. Okay. I probably don't have the time tonight, but I can do that tomorrow shit, if we can get this resolved I'll bake you a batch of cookies quick question, in gdb if I have the address of a PObj, how can I look at the adjacent header? can I do pointer arithmetic on it? I believe so. (no cookies, but I did find a microwave and plastic utensils, so not all a failure) Okay, I'll play with that. If I can see the header, I can find the corresponding card and track when it gets updated Looks like setting a conditional breakpoint on Parrot_dod_free_pmc will catch the point at which we collect the PMC. right, but even for simple programs we call that function a hundred times or so break Parrot_dod_free_pmc if pmc == 0x822a52c can you do that? * Whiteknight is still a gdb newbie You can and it's awesome. % Zaba_ has joined #parrot conditionals rock % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru and it's getting called from gc_it_sweep_PMC_arenas mark == GC_IT_CARD_WHITE is true # define IT_HDR_to_PObj(p) ((PObj*)((Gc_it_hdr*)(p)+1)) Is that right? The PObj is one byte after the GC header? it's pointer arithmetic, it's 1 Gc_it_hdr after it Let me throw in some more parens there and see if that fixes anything You don't need sizeof (Gc_it_hdr)? no, in C pointers and arrays are interchangable, the compiler does the sizeof calculations for pointers automatically p + 1 == p[1] Where's the array though? it doesn't matter where, C just does the pointer arithmetic as if it were an array at least, it's supposed to Right, but how does C know in this case that 1 means sizeof (Gc_it_hdr)? because of the cast to (Gc_it_hdr*) I jammed in there we cast the pointer to (Gc_it_hdr*), then add 1, and then cast the result to (PObj*) The PObj_to_IT_HDR macro does the process in reverse Ah, so that's why you wonder if adding more parentheses might help. right in (cast)p + 1, I can't remeber whether (cast) or + bind more tightly I never trusted casts like that myself. I assumed the cast did /* Increase allocated space to account for GC header */ pool->object_size += sizeof (Gc_it_hdr); right, I allocate the headers directly next to the objects, so the allocated space needs to be big enough for both of them ...and more parenthesis produces the same segfaults I modified the macros. that's fine, modify away by the time I'm done debugging, not a shred of my original design is going to be left of course, that's probably for the best Hash problems. Blah. # define PObj_to_IT_HDR(o) ((Gc_it_hdr *)((o) - sizeof (Gc_it_hdr))) # define IT_HDR_to_PObj(p) ((PObj *)((p) + sizeof (Gc_it_hdr))) # define cPObj_to_IT_HDR(o) ((const Gc_it_hdr *)((o) - sizeof (Gc_it_hdr))) % cjfields_ has joined #parrot just to be sure, cast the arguments to (char*) to make sure it's all in bytes ((Gci_it_hdr *)((char*)(o) - sizeof(Gc_it_hdr))) beyond that, I'm fine with the change Ah, much better. % cjfields has left cjfields!~cjfields@adsl-76-199-4-241.dsl.chmpil.sbcglobal.net % cjfields has joined #parrot That didn't fix anything though. % sjansen has left sjansen!~sjansen@75-169-83-227.slkc.qwest.net Okay, don't waste any more of your time. I'm going to bed. I'll get into gdb nirvana tomorrow after work and see if I can find anything Okay. Hmmm. Here's a thought. ? Are you flipping all marked cards back to unmarked when you sweep? % cjfields_ has left cjfields_!~cjfields@vpn3-144201.near.uiuc.edu yes, right during the sweep. If it's white, we free them, and if it's black we switch it to white I could separate that out into two steps, but since I differentiate between free and white cards, I can't do a memset Makes sense. I see the code now. I do that so in the sweep code I don't try to finalize anything that's already free but I suppose i can determine that a different way I ran into this when I was working with constants. If something's already marked live, we don't mark its kids. So if the Scheduler gets created and doesn't have its card flipped, the second GC run will sweep up its kids. But every time the scheduler is marked, the kids should be marked during the trace too % cjfields has left cjfields!~cjfields@adsl-76-199-4-241.dsl.chmpil.sbcglobal.net I could be more aggressive marking the kids in pobject_lives or something Let me try that. Doesn't seem to fix it either. I must have some mixup in the trace code, it must not be marking children black like I think it should be Seems as plausible as anything. Okay, i'm definitely heading to bed now. Thanks for everything tonight. I'll run with some of your suggestions tomorrow and see what happens % Limbic_Region has left Limbic_Region!~Limbic_Re@c-68-49-236-220.hsd1.md.comcast.net % verve has left verve!a5847f73@67.207.141.120 goodnight good luck! it has been said that good luck is all I can say. % Whiteknight has left Whiteknight!~nobody@c-71-230-33-251.hsd1.pa.comcast.net % tjh has joined #parrot % cjfields has joined #parrot % Zaba has joined #parrot % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru % cjfields has left cjfields!~cjfields@adsl-76-199-4-241.dsl.chmpil.sbcglobal.net % Zaba_ has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % tjh has left tjh!~chatzilla@user-0cdfo61.cable.mindspring.com % teknomunk_ has left teknomunk_!~teknomunk@r74-195-239-111.stl1cmta01.stwrok.ok.dh.suddenlink.net % verve has joined #parrot % Theory has joined #parrot % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru % Zaba has joined #parrot % Ademan has joined #parrot % grim_fandango has left grim_fandango!~matt@bas2-kingston08-1167935462.dsl.bell.ca % iblechbot has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % Zaba has joined #parrot % davidfetter has left davidfetter!~davidfett@start.fetter.org % Ademan has left Ademan!~dan@h-68-167-207-88.snfccasy.dynamic.covad.net I just pulled out all of the expr-parse and var-or-function mess in lolcode. All tests pass. Time to write more tests! purl++ % verve has left verve!a5847f73@67.207.141.120 % verve has joined #parrot purl++ indeed % Ademan has joined #parrot % Andy has left Andy!~Andy@64.81.227.163 % iblechbot has left iblechbot!~iblechbot@ppp-62-216-200-40.dynamic.mnet-online.de % Psyche^ has joined #parrot % Patterner has left Patterner!~Psyche@e177235033.adsl.alicedsl.de % Psyche^ is now known as Patterner % teknomunk_ has joined #parrot % Theory has left Theory!~Theory@c-67-160-131-113.hsd1.wa.comcast.net % Zaba_ has joined #parrot % teknomunk_ has left teknomunk_!~teknomunk@r74-195-245-171.stl1cmta01.stwrok.ok.dh.suddenlink.net % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % donaldh has left donaldh!~chatzilla@proxy-sjc-2.cisco.com % donaldh has joined #parrot % uniejo has joined #parrot % uniejo has left uniejo!~uniejo@193.88.64.250 % uniejo has joined #parrot r29504 | fperrad++ | trunk: : [install] : - clean up test.php diff: http://www.parrotvm.org/svn/parrot/revision?rev=29504 r29505 | fperrad++ | trunk: : [Lua] shootout : - more TODO & SKIP diff: http://www.parrotvm.org/svn/parrot/revision?rev=29505 % Zaba has joined #parrot % bacek has joined #parrot % Ademan has left Ademan!~dan@h-68-164-169-199.snfccasy.dynamic.covad.net % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru % bacek_ has left bacek_!~bacek@mcas-151.usr.optusnet.com.au % verve has left verve!a5847f73@67.207.141.120 % UltraDM has joined #parrot % Ademan has joined #parrot % Zaba_ has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % chromatic has left chromatic!~chromatic@216-31-236-219.static-ip.telepacific.net % Ademan has left Ademan!~dan@h-68-164-169-199.snfccasy.dynamic.covad.net % barney has joined #parrot