Camelia, the Perl 6 bug

IRC log for #parrot, 2009-01-10

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 pmichaud so, why not have meta_trait look up the protoobject?
00:00 jonathan pmichaud: I did.
00:00 pmichaud not sure why I didn't do that in the first place.
00:01 jonathan But that's only _one_ of the problems.
00:01 jonathan If you run the spectests, you'll also find cases where we get failures in !meta_create.
00:02 jonathan t\spec\S12-role\namespaced.t for example triggers this
00:04 pmichaud so, our working theory is that adding the UnconstructedProto is blocking creation of the namespace
00:04 pmichaud let's try...
00:05 jonathan pmichaud: I used to think that, but then I realized - we should have a .namespace [ 'Foo' ] in the PIR.
00:05 jonathan Which menas it should exist from all the way back then.
00:05 pmichaud Yes.
00:07 pmichaud while I'm still thinking about this, let me add a couple of other items to consider
00:07 pmichaud I've since figured out that we can't completely use the namespaces to hold our unconstructedprotos, because of lexical classes.
00:08 pmichaud so placing an entry in the namespace at the time we do add_type is probably wrong.
00:08 pmichaud because it's not lexical (and whatever we're declaring might be lexical)
00:08 jonathan Yes. :-(
00:08 AndyA joined #parrot
00:08 jonathan STD.pm gets around this by having an array of pads, from what I can see.
00:09 pmichaud right
00:09 jonathan And each of those is a hash of symbols
00:09 jonathan Or something like that.
00:09 pmichaud in our case I think that our pads actually should be @?BLOCK
00:09 jonathan Can we put package names in that too?
00:09 pmichaud so adding a type X  should do  @?BLOCK[0].symbol( 'X', ...attr...)
00:09 pmichaud sure, since package names are lexical.
00:09 jonathan That could work.
00:10 jonathan We can of course check the namespace to see what's there.
00:10 pmichaud then, checking to see if we have a valid type first looks through the outer blocks, and then in the real namespaces
00:10 jonathan For already compiled stuff, e.g. from used modules, or prelude.
00:10 jonathan Yes.
00:10 pmichaud yes, you have the idea.
00:10 pmichaud maybe that's simpler overall.
00:10 jonathan That makes sense, yes.
00:10 pmichaud In fact, we already do checking for lexical types because of the ::T declarations.
00:10 jonathan Yes.
00:10 jonathan OK, great.
00:11 pmichaud it's certainly okay to have  @?BLOCK[0].symbol( 'X', :scope('package') )
00:11 jonathan That will let us do away with this under construction proto thingy.
00:11 pmichaud yes.
00:11 pmichaud also.
00:11 pmichaud (more)
00:11 jonathan True, but we also need to put something with its symbol saying it is a type.
00:11 kid51 I have a question about #include statements in a C-file.  In src/jit/i386/jit_defs.c, #include "parrot/oplib/ops.h occurs twice within 4 lines of each other.  Is it safe to eliminate one or the other of those statements?
00:11 chromatic Yes.
00:12 pmichaud jonathan: oh, you're ahead of me a bit.  If you don't want to pre-declare :scope, just use any other attribute to force creation of a type entry.
00:12 pmichaud and yes, :type(1) is fine.
00:12 pmichaud I know that we put entries in the symbol table for subs that get created -- I'm not sure how they're marked.
00:12 jonathan OK.
00:12 pmichaud anyway, I'd go with the block symbol table approach for now.
00:12 jonathan Ah, interesting.
00:13 dalek r35324 | jkeenan++ | trunk/src/jit/i386:
00:13 dalek : Eliminate duplicate '#include' statement.
00:13 jonathan Yes.
00:13 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35324
00:13 pmichaud it also makes me feel better to not have unconstructedproto (yet)
00:13 jonathan I'll want to do some stuff with subs in the symbol table at some point.
00:13 jonathan Plus it saves us now working out The Problem.
00:13 jonathan ;-)
00:14 pmichaud well, I think it's actually the right solution overall anyway.  I wasn't thinking about lexical types when I suggested the unconstructed proto approach.  Sorry about that.
00:14 pmichaud however, I'm glad we're doing it _after_ the variable refactor and not before :-)
00:14 jonathan Well, I thought it was fine too, because at that point I expected we'd be registering the types in the actions.
00:14 jonathan And we coulda known if it was lexical.
00:15 pmichaud yeah, I already knew that the grammar registers the types.
00:15 jonathan But then I wanted to try and match STD.pm more closely.
00:15 jonathan Since that tends to work out better. :-)
00:15 pmichaud okay, I think we have a plan -- let me know how it works out.  I'll let you back out the unregisterproto stuff as appropriate.
00:16 pmichaud er, unconstructedproto
00:16 jonathan Will likely do it tomorrow now.
00:16 jonathan It's latish here.
00:16 pmichaud okay, I might do it then, just to keep things clean.
00:16 pmichaud I've got some other stuff to hack in tonight -- shouldn't affect this stuff, though.
00:16 jonathan I *think* easiest is just to revert my entire last commit.
00:17 pmichaud yeah, I'm thinking that too.
00:17 jonathan I don't think there was anything else in there.
00:17 pmichaud I'll revert your commit and you can pick up again from there.
00:17 jonathan Yes, do that.
00:17 pmichaud btw, I really really really appreciate your help on the rvar branch.  Overall it came out much better than I was expecting.
00:17 jonathan It's a nice refactor.
00:18 pmichaud I'm finding it much easier to see how new things will fit.
00:18 jonathan And I'm largely to blame for the state things had got into.
00:18 pmichaud well, we needed quite a few other things in place.  And your stuff made it easier also.
00:18 pmichaud so, I don't at all see what you had written as a negative -- far from it.
00:18 jonathan Well, I made quite a lot of stuff essentially work.
00:19 pmichaud exactly.
00:19 pmichaud and pointed out where the pieces needed to go.
00:19 pmichaud If starting from scratch, it would've taken a long time.
00:19 pmichaud and we wouldn't have had the tests.
00:19 jonathan I'm just not so good at the big-picture architecture, or what needs to push down into PCT, etc.
00:19 pmichaud yeah, I just seem to have a good intuition for it.
00:20 jonathan You've also got N years more experience than me. ;-)
00:20 pmichaud PerlJam once asked me how I figured stuff like that out, and for me it's kinetic
00:20 pmichaud I literally physically feel designs that aren't "right"  :-)
00:20 jonathan I think that's something you get when architecting something.
00:21 jonathan A sense of what's just wrong, what's really right, and what'll have to change at some point but is OK for now.
00:21 jonathan I know I find it a lot easier to know those things when I've grown and designed a codebase from day 1 over when I've dug into an existing one.
00:22 pmichaud indeed.
00:22 pmichaud there is that also.  And I've been thinking about this stuff for a l-o-n-g time.
00:22 pmichaud (too long.  I should think faster.)
00:22 jonathan Well, it's not like you've always had the same spec to be thinking about. ;-)
00:22 pmichaud there is that also :-)
00:23 jonathan Anyway, I'm very happy with the state of Rakudo, and very happy to be involved. :-)
00:24 dalek r35325 | pmichaud++ | trunk/languages/perl6 (3 files):
00:24 dalek : [rakudo]:  Revert r35323 -- we're going to take a different approach.
00:24 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35325
00:24 pmichaud me too.  I'm really looking forward to the next few months.
00:24 jonathan ...and all because I drunk a load of beer at an OSCON party and said I'd implement junctions.
00:24 pmichaud heh.
00:24 pmichaud which I'm _still_ amazed at.
00:24 pmichaud I'm being asked to a basketball game, so I'll bbl.
00:24 jonathan Aye, I'm going to go relax for a bit. :-)
00:24 jonathan Later
00:26 GeJ Good morning again
00:32 Infinoid happy weekend, GeJ
00:41 nopaste "kid51" at 70.107.6.139 pasted "Add some ifdefs to src/jit/ppc/jit_emit.h" (44 lines) at http://nopaste.snit.ch/15273
00:42 kid51 Does that paste look plausible?
00:42 * kid51 is trying 'perl Configure.pl --jitcapable=1 --execcapble=1' for the first time.
00:42 kid51 Trying to silence some warnings.
00:46 chromatic kid51, it makes more sense to me to ensure that JIT_EMIT always has a value, even if that's 0.
00:51 kid51 chromatic:  I was trying to follow example of:  line 1786 src/jit/i386/jit_emit.h
00:52 kid51 ... which tests for definedness before testing for value (in 2 locations).
00:55 Whiteknight Eventually we can get rid of JIT_EMIT when we get all the executable code out of those .h files
00:55 * Whiteknight dreams about the day
00:56 GeJ Infinoid: likewise (in a few hours I believe)
00:58 chromatic kid51, there's nothing functionally wrong with your approach.  I just think it's simpler to ensure that we always define that symbol.
00:59 nopaste "kid51" at 70.107.6.139 pasted "'Bad plan test failures in t/pmc/exceptionhandler.t" (17 lines) at http://nopaste.snit.ch/15274
01:00 kid51 I think the test plan count gets confused in this file, perhaps under jit circumstances.  I don't get any real explanation as to why file terminates after 6 tests.  But there is a 'goto more_tests' in there.
01:04 kid51 Even weirder:  When I uploaded that test run to Smolder:  the file t/pmc/exceptionhandler.t is shown as passing 100% -- even though the plan (8) and the number of tests reported (6) are clearly not equal:  http://smolder.plusthree.com/app/pu​blic_projects/tap_stream/13241/224
01:04 shorten kid51's url is at http://xrl.us/beb4eh
01:07 nopaste "kid51" at 70.85.31.226 pasted "goto more_tests" (13 lines) at http://nopaste.snit.ch/15275
01:08 kid51 Could a goto throw off the plan?
01:09 kid51 GeJ:  Are you cooking something up re JIT_EMIT ?
01:13 kid51 Whiteknight:  The reason I was looking at that file in the first place was because I was poking at https://trac.parrot.org/parrot/ticket/144 ...
01:14 kid51 ... which turned out to be way above my C-fu, but I did notice notice some warnings which I figured were low hanging fruit.
01:15 Whiteknight nice, at least people are looking at it
01:18 kid51 As I believed I msg-ed you, there have actually been RT tickets about this for a long time.
01:18 kid51 In fact, I think you took one of those once :-)
01:18 Whiteknight yeah, this has been part of my process migrating the old RT tickets to trac
01:19 Whiteknight I took that stupid ticket thinking it would be easy to finish, and it ended up requiring a branch and almost two weeks
01:21 kid51 Unfortunately, my C stops well short of handling that PPC file, which is the only OS other than i386 I have access to.
01:21 * kid51 to dinner; bbl
01:50 GeJ message kid51 nothing that I could think of, why?
01:50 purl Message for kid51 stored.
01:51 jimmy joined #parrot
01:51 GeJ I opened TT #146 to convert perl tests to PIR in t/oo/, if there's anyone to review the patch.
01:52 jimmy GeJ: someone will review it at spare time
01:55 GeJ I have no doubt about that. It was just a FYI-notice.
01:56 cotto GeJ, I'm a few minutes from committing that.
01:56 cotto just a little more time for review
01:58 jimmy there is a maiillist, anyone in the mailist will received  emails when TT was changed. Am I right?
01:58 GeJ cotto: there's no rush at all. thanks for reviewing it.
01:58 cotto I'm not sure I feel good about "METH_CONFLICT".
01:58 cotto It sounds ominous.
01:59 cotto GeJ, thanks for submitting it.
01:59 GeJ cotto: new.t has changed a lot in the process, mostly because I got bored to always c'n'p the same lines over and over in all the sub-tests.
02:02 dalek r35326 | cotto++ | trunk/t/oo (3 files):
02:02 dalek : [t] convert perl OO tests to pure pir
02:02 dalek : patch courtesy of GeJ++
02:02 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35326
02:05 GeJ cotto++
02:06 cotto have you asked for a commit bit?
02:13 GeJ Nope. Should I?
02:14 GeJ I mean, do you think it's safe for the project? ;)
02:15 cotto I'd say +1.  I'll ask at the next #ps if you'd like.
02:16 cotto (it involves signing and sending in a CLA)
02:16 cotto cla?
02:16 purl cla is Contributor License Agreement or http://www.perlfoundation.org/​contributor_license_agreement or http://www.parrot.org/foundation/legal
02:22 GeJ Thanks, I'd be happy to sign in.
02:23 jimmy it needs a mail.
02:29 dalek r35327 | cotto++ | trunk (2 files):
02:29 dalek : [pmc] add push, pop, shift and unshift methods (plus tests) to ResizableStringArray
02:29 dalek : patch courtesy of GeJ++
02:29 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35327
02:30 jimmy pmichaud: Will perl6 support documentation i18n officially?
02:35 kid51 joined #parrot
02:39 jimmy msg pmichaud Will perl6 support documentation i18n officially?
02:39 purl Message for pmichaud stored.
02:50 nopaste "GeJ" at 202.22.229.231 pasted "Update MANIFEST (forgotten from r35325), fix init::manifest step of Configure.pl" (12 lines) at http://nopaste.snit.ch/15276
02:52 kid51 GeJ:  Thanks.  I'll get to it in a couple minutes.
02:54 GeJ There's no rush. thank you.
02:56 dalek r35328 | jkeenan++ | trunk:
02:56 dalek : Correct earlier failure to update MANIFEST.  Error reported by GeJ++.
02:56 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35328
02:59 * Coke_away skips review.
02:59 jimmy karma purl
02:59 purl purl has karma of 8369
02:59 Coke .
03:00 cotto jimmy, purl cheats
03:00 cotto purl--
03:00 purl cotto: excuse me?
03:00 cotto karma purl
03:00 purl purl has karma of 8369
03:03 MariachiElf joined #parrot
03:04 cotto but it works if you say purl--
03:04 cotto karma purl
03:04 purl purl has karma of 8368
03:06 jimmy wow
03:06 jimmy karma parrot
03:06 purl parrot has karma of 25
03:06 jimmy parrot ++
03:06 jimmy karma parrot
03:06 purl parrot has karma of 25
03:06 jimmy parrot++
03:06 jimmy karma parrot
03:06 purl parrot has karma of 26
03:07 jimmy karam 卓明亮
03:07 jimmy karma 卓明亮
03:07 purl 卓明亮 has karma of 1
03:07 cotto wait, what?
03:07 purl wait, is that counting penguins?
03:08 jimmy cotto: what's what?
03:08 cotto I'm confused that purl responded to that the second time, but not the first
03:09 jimmy because of blank space
03:10 jimmy parrot++
03:10 jimmy karma parrot
03:10 purl parrot has karma of 27
03:13 * kid51 just opened TT for problem reported earlier with t/pmc/exceptionhandler.t
03:17 kid51 GeJ:  Just closed your TT#135.  Thanks.
03:51 GeJ for curiosity's sake
03:51 GeJ karma GeJ
03:51 purl gej has karma of 21
04:01 elmex_ joined #parrot
04:09 dalek r35329 | tewk++ | trunk/languages/ecmascript (7 files):
04:09 dalek : [js] Objects and Arrays starting to construct
04:09 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35329
04:17 ChrisDavaz joined #parrot
04:37 japhb joined #parrot
04:56 polyglotbot joined #parrot
04:57 Infinoid befunge: "test whether ulimit -t 30 kills infinite loops"
04:57 polyglotbot No output (you need to produce output to STDOUT)
04:58 Infinoid awesome.
04:59 Infinoid I'm off to race sailboats in san fran this weekend, bye all
05:00 jimmy bye Infinoid
05:11 GeJ have fun.
05:11 purl Don't do anything I wouldn't do!!!
05:11 GeJ yep, like purl said.
06:00 dalek r35330 | pmichaud++ | trunk/languages/perl6/src/classes:
06:00 dalek : [rakudo]:  Update .PARROT method.
06:00 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35330
06:01 dalek r35331 | pmichaud++ | trunk (2 files):
06:01 dalek : [rakudo]:  Remove obsolete src/classes/Scalar.pir .
06:01 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35331
06:21 Ademan joined #parrot
06:21 Hinrik joined #parrot
06:22 dalek r35332 | pmichaud++ | trunk/languages/perl6/src (2 files):
06:22 dalek : [rakudo]:  Remove a couple of outdated Perl6Scalar items.
06:22 dalek : Now we can start using it again.
06:22 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35332
06:25 DietCoke joined #parrot
06:25 Coke chromatic: hio
06:31 * Coke runs {{{make TEST_JOBS=3 fulltest}}} to see if it's safe to remove PIC.
06:33 * Coke wonders if fulltest is now smart enough to stop if one core fails.
06:53 Coke rant. 'make fulltest' runs the jit core on my osx/86 box and fails everything.
07:09 mberends joined #parrot
07:26 japhb joined #parrot
07:54 hudnix joined #parrot
08:07 * jimmy wonders whether pir support static vars.
08:58 Tene jimmy: static vars?
09:05 jimmy yes
09:06 jimmy static variable.
09:06 purl it has been said that static variable is sky's $foo if 0
09:32 jimmy mesages
09:33 jimmy joined #parrot
09:36 cotto Does anyone think it'd be a bad idea to change EXCEPTION_ROLE_COMPOSITION_METH_CONFLICT to EXCEPTION_ROLE_COMPOSITION_METHOD_CONFLICT?
09:39 chromatic +1
09:39 purl 1
09:50 iblechbot joined #parrot
09:53 dalek r35333 | fperrad++ | trunk/languages/lua/src (2 files):
09:53 dalek : [Lua] traceback
09:53 dalek : - only with function name (step 1)
09:53 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35333
10:07 AndyA joined #parrot
10:17 dalek r35334 | cotto++ | trunk/docs/pdds/draft:
10:17 dalek : [pdd] readability changes
10:17 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35334
10:22 jimmy joined #parrot
10:47 dalek r35335 | fperrad++ | trunk/languages/lua/src (2 files):
10:47 dalek : [Lua]
10:47 dalek : - implement caller() in pure PIR
10:47 dalek : - remove previous implementation in PMC Lua
10:47 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35335
10:50 dalek r35336 | cotto++ | trunk (10 files):
10:50 dalek : [cage] change METH to METHOD in a few places
10:50 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35336
11:01 masak joined #parrot
11:17 masak why does Parrot segfault so often on 'double free'?
11:22 cotto do you have a repeatable bug?
11:23 masak cotto: aye.
11:24 cotto can you nopaste (or file a TT)?
11:24 masak check out November. do 'git checkout d21edba2'. from p6w, do 'perl6 t/html-template/09-loop-control.t'. that generates a segfault.
11:25 masak I can file a TT as well. do I need to nopaste it?
11:25 masak (oh, and this isn't a 'double free' segfault; those usually aren't repeatable. this is just a segfault.)
11:25 cotto it's better to have a minimal example if possible
11:26 cotto "November" doesn't really count as minimal.
11:26 cotto ;)
11:26 cotto I'll be glad to play with it.
11:26 masak cotto: ok. you can remove anything from that file except the first 19 lines, and the problem remains.
11:26 masak November really isn't needed. just that file and Test.pm.
11:26 cotto november?
11:26 purl i think november is at http://www.november-wiki.org/ or http://use.perl.org/~masak/journal/37212 or http://github.com/viklund/november/
11:45 masak december?
11:45 purl december is majik.  $work will cross the big red line, $500k in revenue, $10k in profits
11:45 masak purl: no, December is a sekkrit wiki written in Perl 7
11:45 purl okay, masak.
11:50 nopaste "cotto" at 96.26.202.243 pasted "results of trying to repro" (10 lines) at http://nopaste.snit.ch/15277
11:51 cotto I feel like I'm missing something.
11:53 masak ok, I'm not getting that error.
11:53 masak checking again.
11:54 cotto (with latest svn Parrot/rakudo)
11:55 masak yes, of course.
11:55 purl Indubitably.
11:56 masak cotto: ok, you're running with the parrot executable, I'm running with the perl6 fakecutable.
11:56 masak that's the first difference.
11:56 masak if I run with parrot, as you do, the test file passes here, while you get an error on feather.
11:57 masak that's the second difference.
11:57 masak I need to check out November on feather myself and try it there.
11:57 cotto by coincidence, feather is also the name of my laptop
11:58 cotto which is where I'm running it
11:58 masak oh.
11:58 masak still a good idea to try running the tests on feather. :)
11:58 cotto sure, except I don't have an account
11:59 masak I'll do it.
12:00 riffraff joined #parrot
12:01 TiMBuS joined #parrot
12:09 dalek r35337 | fperrad++ | trunk/languages/lua/src (3 files):
12:09 dalek : [Lua]
12:09 dalek : - implement traceback() in pure PIR
12:09 dalek : - remove previous implementation in PMC Lua
12:09 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35337
12:20 dalek r35338 | masak++ | trunk/languages/perl6/src/builtins:
12:20 dalek : [rakudo] added :d and :f filetest operators
12:20 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35338
12:50 jonathan hi all
12:55 jonathan masak: ping
12:55 iblechbot joined #parrot
12:55 jonathan masak: oh, don't worry, I mis-read your patch. :-)
12:59 masak jonathan: hokay.
13:07 kj joined #parrot
13:07 * jonathan should coffee before code review
13:12 * sjn reminds people about NPW talk submissions deadline tomorrow
13:13 masak sjn: I'm on it. you'll have mine today.
13:16 sjn yay! \o/
13:18 riffraff joined #parrot
13:18 szabgab sjn: oh I should also submit one I guess
13:19 kid51 joined #parrot
13:20 sjn yay! \o/
13:24 mberends joined #parrot
13:25 szabgab sjn: done
13:25 masak wow, that was fast.
13:25 szabgab anyone from legal@parrot here?
13:26 szabgab masak: I just wanna talk about Padre
13:26 masak szabgab: and I just wanna talk about November :)
13:26 jonathan sjn: It's *what*?!
13:26 szabgab we'll see if they have a spare slot for that
13:26 masak yeah.
13:27 szabgab meaning Padre of course, as November can be way more interesting as talk
13:27 szabgab I used to give these stand-up commedies about Padre
13:28 szabgab I mean I gave 3 in the local pm groups around here, all of them like 2 hours of talking :-)
13:29 masak heh
13:31 szabgab pmichaud: (or anyone for that matter) I am looking for docs of function lists for pir/pasm? sg like S29 for Perl 6 or perlfunc.pod
13:36 cognominal joined #parrot
13:45 cotto szabgab, look at src/ops/*.ops and docs/pdds/pdd19_pir.pod
13:46 * cotto notices that it's turned from late to early
13:49 sjn jonathan: what is what?
13:49 szabgab cotto: thanks
13:53 masak sjn: submitted.
13:55 jonathan sjn: The deadline. :-)
13:55 sjn jonathan: oh, you knew that, I'm sure ;)
13:55 jonathan Of course. ;-)
13:56 masak jonathan: it's just an abstract, don't worry. :)
13:56 jonathan Submitted talks: 6 # people, submit more!
13:56 * jonathan wonders if pmichaud is coming/has submitted.
13:56 sjn btw, in which other irc channels should I remind people about the deadline?
13:57 sjn pmichaud hasn't submitted anything, no :-(
13:58 szabgab sjn: qa
14:01 masak sjn: #perl6
14:01 masak (on freenode)
14:01 sjn ah
14:09 alvar joined #parrot
14:12 cotto subclassed ExceptionHandler> I want the exception.
14:12 cotto segfault> You can't handle the exception!
14:34 Whiteknight joined #parrot
14:38 lu_zero cotto ?
14:38 masak jonathan: http://irclog.perlgeek.de/​parrot/2008-12-17#i_770418
14:39 masak jonathan: don't remember if that was ever solved, or if it got an RT ticket.
14:39 masak jonathan: but I'm suddenly suffering from it again. November's tests are acting up because of something identical or very similar to this.
14:40 rob joined #parrot
14:41 riffraff I get a warning cmpiling  dynext.c shall I report it somewhere?
14:41 rob joined #parrot
14:48 riffraff another seems a possible problem: compilers/imcc/imcparser.c:4994: warning: logical ‘&&’ with non-zero constant will always evaluate as true
14:48 pmichaud yes, I'm planning to submit to npw.
14:48 pmichaud The rvar branch really took my attention away from lots of other stuff.  But I've kept in mind the Jan 11 deadline :-)
14:49 masak riffraff: say again? shouldn't that either be '||' or 'zero constant'/'false'?
14:49 riffraff masak, admittedly seems strange to me :)
14:49 masak riffraff: that's two of us.
14:50 riffraff but I guess it means that we have foo && true
14:50 riffraff where the && true is useless
14:50 jonathan masak: I expect it relates to "use" changes. Are you using pre-compiled modules?
14:51 kj joined #parrot
14:51 pmichaud fwiw, we didn't directly change anything about 'use' itself in the rvar branch.  (We did perhaps change the BEGIN semantics of classes, though.)
14:52 masak jonathan: no.
14:53 masak I think that's the new part of the problem.
14:53 masak oh, so rvar has merged now?
14:53 pmichaud yes.
14:53 jonathan masak: Yes
14:54 masak ok, then we know where to start. :)
14:54 jonathan pmichaud: Aye, I was more referring to use changes before rvar.
14:54 * masak submits rakudobug
14:57 pmichaud when is the hackathon at npw?
14:57 * pmichaud starts to figure out travel arrangements.
14:58 jimmy joined #parrot
14:58 jonathan For the two days after I think
14:58 jonathan That's what my calendar says...
14:58 masak aye, it's during the weekend.
14:58 jonathan NPW2009 will be held in Oslo, Norway on April 16th to 17th, 2009.
14:58 jonathan and
14:58 jonathan We're arranging a Perl 6 Hackathon in Oslo on April 18-19, 2009, right after the Workshop.
14:59 jonathan Ooh, isn't that in the same places as the Oslo hackathon last year?
14:59 jonathan 'twas good there.
15:00 * jonathan should make some travel plans too.
15:00 jonathan Though it's not all that far for me.
15:00 pmichaud so, I'm looking at arriving on the 15th (tax day in the US) and departing on the 20th then.
15:00 pmichaud maybe an extra day one way or another for sightseeing.
15:00 jonathan pmichaud: Oslo, and Norway generally, is beautiful.
15:01 pmichaud timing means it's unlikely Paula would be able to join me :-|
15:01 jonathan Ah, that's a shame. :-(
15:01 pmichaud someone has to stay and take care of the kids
15:01 jonathan Ah, yes. It's during term time.
15:02 jonathan So they can't be hauled along either. ;-)
15:02 jonathan OK, well, a day if you can spare it is IMO worthwhile. :-)
15:02 jonathan I'm not sure exactly what I'll do yet.
15:04 pmichaud airfares are reasonable -- roundtrip right now is around $1k
15:05 jonathan Wow, there aren't direct VIE-OSL flights?!
15:05 jonathan That's not so bad.
15:05 pmichaud not bad at all, considering the distance.
15:05 jonathan I guess it's a connection somewhere?
15:05 pmichaud yes, doesn't look like any direct flights dfw<->osl
15:06 pmichaud looks like one stop in amsterdam.
15:06 pmichaud (if flying klm)
15:06 pmichaud or frankfurt (lufthansa)
15:06 jonathan Ah, that's essentially on route.
15:06 jonathan (amsterdam more so)
15:06 pmichaud or heathrow (if BA).
15:06 jonathan Eww!
15:07 pmichaud Looks like all the airlines go through the standard hubs :-)
15:07 pmichaud so far amsterdam looks like my favorite choice :-)
15:07 jonathan Some standards are nicer than others. ;-)
15:07 jonathan Yeah, it's what I'd probably choose.
15:07 masak http://rt.perl.org/rt3//Ti​cket/Display.html?id=62162
15:07 jonathan Amusignly, my cheapest options go...through Admsterdam and Frankfurt. :-|
15:08 lathos Frankfurt airport is hell.
15:08 Whiteknight when we subclass a PMC, does the subclass have the same methods as the PMC does?
15:08 jonathan With horrible times.
15:08 jonathan Whiteknight: Should do.
15:08 * lathos came back through there on Wednesday.
15:08 jimmy good night, everybody
15:09 masak jimmy: good night.
15:09 jonathan lathos: Nowhere much to sit, and the distances you had to hike to get to a gate, were my main memories of Frankfurt.
15:09 jimmy masak: 晚上好,呵呵
15:10 masak jimmy: 晚上好
15:10 lathos Huge hike and lots of security checks.
15:10 Limbic_Region joined #parrot
15:10 jonathan Ah yes. That was the airport that wouldn't let me go through the scanner thing until I'd removed the *tissues* from my pockets.
15:11 jonathan Meh. The only direct flight Vienna - Oslo is with Austrian airlines. Whom I hate.
15:11 lathos There's a check each side of the shops, and you have to go through the shopping bit to get between transfer hubs.
15:11 pmichaud KLM - good flight, through amsterdam, round-trip $1036
15:11 jonathan pmichaud: Sounds good!
15:12 * jonathan checks if he can go by train.
15:12 * pmichaud checks if he can go by train.
15:12 jonathan pmichaud: Not until a few more lines are built and there's a tunnel under the Berring. ;-)
15:13 masak seems there are more problems introduced by rvar. :/
15:14 gp5st joined #parrot
15:14 pmichaud masak: wouldn't surprise me.  We might also have inadvertenly eliminated some previously-working-workarounds
15:15 masak interesting times ahead for November.
15:15 pmichaud masak: I'll help clean up whatever we broke.
15:15 jonathan There's also the possibility that some things before worked by accident, or weren't quite correct.
15:15 masak pmichaud: first thing is RT#62162, as posted above.
15:16 masak jonathan: that's hardly a consolation. :/
15:16 pmichaud masak: use braces.
15:16 * masak just did
15:16 masak I'm used to working around stuff.
15:16 pmichaud I think (but haven't confirmed)  that   "use v6;  class Foo;"    isn't legal.
15:16 masak oh.
15:17 pmichaud because S11 says that any "class Foo;"  statement has to be the first statement in the file.
15:17 masak so it's one or the other?
15:17 gp5st hello, in the opcode section of the docs, what are the (well there aren't any listed, but why the section) of python opcodes?
15:17 jonathan pmichaud: I spotted the bit in STD.pm that looks like it enforces that...
15:17 pmichaud (it might not work if you remove the "use v6;" yet, but I'm thinking that it's not valid Perl 6)
15:17 pmichaud jonathan: yes, I'm going to work on enforcing that as soon as I get the array parameter semantics adjusted.
15:18 masak pmichaud: I see. either of us should add that to the ticket, methinks.
15:18 pmichaud masak: soon (today) Rakudo will complain about it.
15:18 jonathan Train to Oslo = not really practical. :-(
15:18 dalek r35339 | pmichaud++ | trunk/languages/perl6/src (5 files):
15:18 dalek : [rakudo]:  Migrate to use Perl6Scalar instead of ObjectRef for true scalars.
15:18 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35339
15:18 masak pmichaud: goodie.
15:18 * masak investigates the next problem
15:22 masak turned out to be more of the same. phew.
15:23 gp5st also, what are the "Dot GNU" opcodes, too (along with the python ones?)
15:25 jonathan gp5st: I think the Dot GNU ones were there as part of an early effort to run .Net on Parrot. I think they are now removed (so must be left over doc reference - would be good to know where.)
15:26 gp5st http://www.parrotcode.org/docs/ops/ they are just sections, i didn't know if they were legacy or planned
15:27 gp5st also, in math (http://www.parrotcode.org/docs/ops/math.html) cmod seems to be defined multiple times with the same parameter list?
15:27 gp5st nm, i'm just being dumb, sorry
15:28 jonathan gp5st: They're legacy.
15:29 gp5st ok:)
15:29 DietCoke joined #parrot
15:31 gp5st i am wonder how possible it would be to build a limited VM that could run on a microcontroller
15:31 gp5st so, i'm just begining my study of the real/full VM
15:32 pmichaud gp5st: you might take a look at sm0p -- iiuc, at its core it has a very small number of basic opcodes
15:32 pmichaud er, smop
15:33 pmichaud http://www.perlfoundation.org/perl6/index.cgi?smop
15:33 gp5st thanks
15:34 pmichaud s/opcodes/operations
15:35 gp5st hmm, i was hoping to take advantage of pre-existing compilers for parrot, though
15:35 pmichaud then you want to start with parrot.  But making parrot "small" might be a challenge.
15:36 gp5st so i'm told/finding
15:37 gp5st I knew from the start I'd most likely have to drop things like IO and threading as they really aren't needed
15:37 lathos Those are not the problems.
15:38 lathos Getting PMCs working will be the first challenge.
15:38 gp5st i know, i'm just trying to think of base level cuts
15:38 lathos Doesn't work like that.
15:38 gp5st debug might help save space so i was thinking of making it a modual that i could put on larger uC's
15:38 * DietCoke stares at the remaining global opcodes on the cutting board.
15:38 gp5st i thought that PMC were references to objects?
15:39 * DietCoke doesn't bother renaming back to Coke since he is on a diet again.
15:39 pmichaud PMC are objects.
15:39 pmichaud PMC registers are references to PMCs.
15:39 gp5st oook, that would make sense
15:39 gp5st are objects that hefty?
15:40 lathos You have to implement them.
15:40 lathos That's the bulk of Parrot.
15:40 jonathan gp5st: One of the things against you, is that one of the design principles of Parrot is that RAM is, on the whole, a fairly cheap resource.
15:41 gp5st i know; i mean i havn't looked into the details of them, but do they have to be that hefty; there is no lighweight way to represenet them?
15:41 lathos If there was, we'd use it.
15:41 gp5st unless you have 512B of it:)
15:41 lathos We don't just throw code in there for the hell of it, you know.
15:41 gp5st i meant one at the expense of some of the ability to do fancy things...
15:41 gp5st I guess maybe i should just do p-code and use pascal?
15:41 pmichaud many of the languages that you want to take advantage of rely on the "fancy things"
15:42 dalek r35340 | pmichaud++ | trunk/languages/perl6/src/classes (5 files):
15:42 dalek : [rakudo]:  More converting of ObjectRef to Perl6Scalar.
15:42 gp5st I'm trying to cut quite a bit and i was hoping it wouldn't matter to much for small programs
15:42 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35340
15:42 jonathan gp5st: Right, but even if you look at say a smartphone today or something, it's got _vastly_ mroe than that.
15:42 gp5st but...
15:42 gp5st i know, i'm not critising the design:)
15:43 lathos You seem to be approaching this as though Parrot is full of unnecessary bits that you can just throw away. If that were true, we'd have done it. The code's there because we need it to be.
15:43 gp5st not so much unnessecary, but unneeded for me
15:43 lathos OK. I'm going to stop now.
15:43 gp5st i don't need advanced IO and threading on a uC
15:43 gp5st ok
15:43 lathos THOSE ARE NOT THE... argh, you've got me doing it again.
15:44 lathos left #parrot
15:44 gp5st sorry, i typed and send before i read what you said...
15:44 pmichaud I think that advanced IO and threading aren't significant portions of Parrot's size.
15:44 gp5st i'm learning that as i go threw this
15:44 jonathan gp5st: If I only had 8K of memory to play with, I'd not pick Parrot as a starting point.
15:44 pmichaud I wonder if our garbage collector even fits in 8k  :-)
15:44 gp5st i'm also figuring that point out as i go:)
15:45 jonathan Because it'd take me a heck of a lot less time to write a VM from scratch that fits in 8k (hey, that's not a lot of space for compiled output...give me a day... ;-)) than to try and work out the beginnings of a _plan_ to whittle Parrot down to that much.
15:45 gp5st i might just do p-code
15:46 jonathan Parrot would seem to be the wrong tool for the job you're wanting to do here, yes.
15:46 gp5st it's more of a toy than something i'd exepcted to be able to use in production
15:47 pmichaud let's put it a different way.  Suppose you're wanting to run a small language like lolcode on parrot in 8k.
15:47 pmichaud -rw-r--r-- 1 pmichaud pmichaud 325184 2009-01-10 09:47 lolcode.pbc
15:47 pmichaud :-(
15:48 gp5st yeah
15:49 pmichaud sometimes no matter how hard you try, you just can't get the elephant to fit in the mailbox.  Or if you do, what you have left doesn't look much like an elephant.
15:49 jonathan LOL!!
15:49 jonathan .oO( So weird mental image... )
15:49 gp5st that is, of course, if you don't know wayne zalinsky(sp?)
15:50 pmichaud (mental image)  yeah, I have no idea where that came from.
15:50 gp5st lol
15:50 pmichaud I shouldn't make analogies before having a Dr Pepper.
15:50 gp5st yeah, i guess i was under the impression that a lot of the hef was from a full set of features, not basic implmentation, sorry
15:50 gp5st lol
15:51 * jonathan hides pmichaud's Dr Pepper, for more amusing analogies
15:52 pmichaud taking short break -- bbiab
15:57 gp5st sorry, i didn't mean to sound insulting towards anyone
16:10 masak gp5st: I think that optimizing for size hasn't been a concern so far.
16:12 gp5st well, it prob hasn't been needed; but i just didn't think that the support of objects was larger than the IO and threading libraries (even if threading used fork or pthreads)
16:12 gp5st i havn't studied the source very much yet
16:14 gp5st do people routinly call it bloated or thinging (I'm not) but I've gotten quite a few people upset anytime i bring up the idea of writng and implmentation for (small) embedded enviroments
16:15 gp5st i also havn't been following parrot's history very much
16:17 gp5st i'm sorry if i brough up bad blood inadvertantly
16:17 jonathan gp5st: It's more that those of us who *do* know Parrot guts know exactly low far trying to squeeze a Parrot interpreter into 8k will get. Which is, not that much further than "hello world"
16:17 jonathan s/low/how/
16:19 jonathan Parrot provides support for a _lot_ of HLL features out of the box.
16:19 jonathan And even what looks like a simple language will use a fair few of them.
16:20 gp5st yeah, i just didn't think object support was as large as it is, that's all; not saying it's wrong, but that i was misguided at first
16:21 gp5st <joke>I could alwasy move to a large uC and quadrupal the space avaliable</joke>
16:22 dalek r35341 | pmichaud++ | trunk/languages/perl6/src/parser:
16:22 dalek : [rakudo]:  Module declarator statements carp if not first in compunit.
16:22 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35341
16:40 dalek r35342 | kjs++ | trunk (2 files):
16:40 dalek : [core] add PARROT_EXPORT to some of the new PackFile_Annotations functions. PIRC needs them, and being an external component (not in libparrot), they need to be exported.
16:40 dalek : I edited the header file manually, instead of regenerating using the headerizer. Not sure how to do this, and nmake headerizer failed for some weird reason.
16:40 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35342
16:41 kj joined #parrot
16:58 dalek r35343 | pmichaud++ | trunk/languages/perl6/src/parser:
16:58 dalek : [rakudo]:  Adjust mainline execution for compunit-scoped modules.
16:58 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35343
17:02 dalek r35344 | kjs++ | trunk/compilers/pirc/src (2 files):
17:02 dalek : [pirc] some work on annotations stuff.
17:02 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35344
17:11 dalek r35345 | pmichaud++ | trunk/languages/perl6/src/builtins:
17:11 dalek : [rakudo]:  Eliminate unused !COPYPARAM function.
17:11 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35345
18:01 szabgab who is running http://www.parrotcode.org ?, On http://www.parrotcode.org/docs/ there is a link to A "Roadmap" for Parrot leading to an empty page
18:02 szabgab Roles & Reponsibilities also leads to empty page
18:02 dalek r35346 | jquelin++ | trunk/languages/befunge:
18:02 dalek : instruction ` is greater than, not greater than or equal
18:02 dalek : this fixes the "bad: sgml spaces" report from mycology
18:02 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35346
18:02 kj joined #parrot
18:04 geof joined #parrot
18:17 dalek r35347 | pmichaud++ | trunk/languages/perl6/src/builtins (2 files):
18:17 dalek : [rakudo]:  More places where we s/ObjectRef/Perl6Scalar/ .
18:17 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35347
18:20 Theory joined #parrot
18:35 * jonathan is such a fail
18:35 jonathan I got bread for sandwiches. And forgot to buy anything to put *in* the sandwiches... :-S
18:35 lathos joined #parrot
18:36 hudnix jonathan: just preparing yourself for the tight economy, eh?
18:37 lathos OK, I'm going to start a strings branch. Anything I need to do other than issue the appropriate svn command?
18:37 jonathan lathos: OH HAI please can you help me make a Parrot whose binary fits into 64KB?
18:37 jonathan ;-)
18:37 jonathan lathos: On the branch - nope, just go for it, IMO.
18:37 lathos % du -sh parrot
18:37 lathos 36kparrot
18:37 lathos Job done.
18:38 lathos OK, will do that.
18:38 * jonathan shoulda said something about static linking too ;-)
18:38 lathos Branches live in /parrot/branches?
18:39 jonathan Aye.
18:39 lathos Right then.
18:39 jonathan lathos++
18:39 lathos Time to get hacky.
18:39 dalek r35348 | simon++ | branches:
18:39 dalek : Creating a branch to implement strings PDD
18:39 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35348
18:45 * jonathan awaits the yelps of horror as lathos uncovers nasty stuff.
18:47 lathos I'm going to be mainly gutting rather than uncovering.
18:49 ruoso joined #parrot
18:59 gp5st joined #parrot
19:07 dalek r35349 | simon++ | branches/strings (16 files):
19:07 dalek : Remove deprecated (and mainly unused) "representation" concept.
19:07 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35349
19:22 lathos OK, I take it back, and I am yelping in horror.
19:42 * jonathan doesn't dare ask what at
19:42 lathos strstart.
19:45 dalek r35350 | simon++ | branches/strings/src:
19:45 dalek : Basic DRY refactoring on bitops macro
19:45 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35350
20:01 dalek r35351 | simon++ | branches/strings/src:
20:01 dalek : More DRY refactoring of bitwise operators
20:01 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35351
20:01 lathos I think whoever wrote this was getting paid per line.
20:16 jonathan Never suspect malice when... ;-)
20:17 ask_ joined #parrot
20:18 Whiteknight is anybody else seeing test failures in some of the TGE tests?
20:19 Whiteknight I'm doing a fresh checkout now, but I was seeing a few of the tests in t/compilers/tge/* fail after a realclean
20:21 Whiteknight And for that matter, is there any reason why we still have TGE? Do any of the languages use it?
20:24 * Whiteknight DEMANDS ANSWERS!
20:26 Whiteknight Okay, I'm not seeing the test failures anymore, must have been due to a local change on my machine
20:26 Whiteknight stupid local changes
20:37 kid51 joined #parrot
20:46 DietCoke (tge) - tcl and pheme use it.
20:46 DietCoke and when asked in the past, allison sez it's not getting removed.
20:54 Whiteknight dayum sonz
20:54 dmknopp joined #parrot
20:56 DietCoke you can ask her again.
20:56 DietCoke we seem to be in a "rip things out" mood.
20:57 DietCoke question: if I have a key of ['foo'] and use get_keyed , is that identical to having a string literal of 'foo' and using get_keyed_str ?
20:58 DietCoke or do those key-ify differently?
20:58 Whiteknight If languages are legitimately using TGE then it shouldn't get ripped out
20:58 Whiteknight although it certainly seems that PCT is the more powerful and more popular compiler-building toolset
20:58 DietCoke (trying to cleanup the remaining find/store global bits; this is a difference.)
20:58 DietCoke Whiteknight: patches to convert tcl welcome!
20:59 Whiteknight I don't know enough TGE to even read it reliably, much less interpret it and convert to something better
20:59 jonathan DietCoke: They will invoke different vtable methods on the PMC.
20:59 jonathan DietCoke: So it's dependent on that PMC's behaviour.
20:59 DietCoke well, this is for the find_globals, so it's presumably the namespace bit.
21:00 jonathan In which case I'd guess they'd be equivalent.
21:00 Whiteknight I've got an IMCC patch ready now that fixes the $P0 = new ['type'] syntax and doesn't ruin any tests
21:00 DietCoke k. that /should/ make this last removal of opcodes straightforward.
21:00 DietCoke Whiteknight: ship it.
21:01 Whiteknight but it's not the nicest patch yet, and I think there are a few things left to do before I ship it
21:02 chromatic joined #parrot
21:03 DietCoke "cheeze it, it's chromatic."
21:04 dalek r35352 | chromatic++ | branches/pdd09gc_part2/src/pmc:
21:04 dalek : [PMC] Made instantiate vtable entry for Integer PMC use the new_pmc() wrapper,
21:04 dalek : instead of manipulating a PMC header directly.
21:04 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35352
21:13 pmichaud Whiteknight: I don't understand what's wrong with the $P0 = new ['type']   syntax in the first place.
21:13 pmichaud It works for me in Rakudo.
21:13 pmichaud and Rakudo uses it at least 10 or so times
21:14 Whiteknight I'm not sure either, but there was a test case that wasn't working
21:14 pmichaud then I suspect the test case, not the syntax.
21:14 pmichaud but the syntax itself appears to work.
21:16 Whiteknight the syntax "new $P0, ['Integer']" was't working
21:16 Whiteknight $P0 = new ['Integer'] did work
21:16 Whiteknight and the two should be equivalent, but they weren't
21:17 pmichaud oh, okay.  So it's a fix for   new $P0, ['type']
21:19 chromatic Lovely.
21:19 chromatic Returns a bufferlike header pool for objects of a given size. Does not check to
21:19 chromatic see if the pool already exists, so if the pool does not exist, this will return
21:19 chromatic an invalid pointer.
21:19 Whiteknight chromatic, which function is that?
21:19 chromatic get_bufferlike_pool
21:19 Whiteknight (sounds like some documentation I wrote a while back)
21:20 chromatic PARROT_WARN_UNUSED_RESULT
21:20 chromatic PARROT_CANNOT_RETURN_NULL
21:20 Whiteknight it's got my cadence and my habitual abuse of comments
21:20 Whiteknight abuse of commas*
21:20 chromatic Tonight that function dines in hell.
21:20 leto joined #parrot
21:20 Whiteknight chromatic++ # I actually laughed outloud at that
21:20 DietCoke CAAAAAAAKKKKEEEEEEEEEETOWN
21:20 Whiteknight my wife thinks I'm retarded
21:21 chromatic You haven't been married that long.  Hopefully she finds it charming.
21:21 DietCoke mine seems to.
21:21 Whiteknight she's under the weather, so most of my "charming" aspects are making her annoyed
21:21 Whiteknight that and the idiots on the food network
21:22 chromatic Mmm, cake.
21:23 Whiteknight It's actually a little bit depressing to me, in hindsight, that I documented the bad behavior of that function and didn't fix it
21:24 chromatic That was my question.
21:24 chromatic It took me as long to fix it as it would have to document it.
21:25 chromatic I replaced all (one) uses of the function with calls to make_bufferlike_pool, which does the right thing.
21:25 dalek r35353 | Whiteknight++ | trunk/compilers/imcc (4 files):
21:25 dalek : [IMCC] remove some special cases for the 'new' keyword and let the normal operator handling sugar do it's job to cover extra cases
21:25 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35353
21:25 Whiteknight I think it was one of those things where I was trying to do all the documentation at once, and I left myself notes to go back and fix things
21:25 Whiteknight but I never went back
21:25 Whiteknight ..at least we have documentation to tell us where the problems are!
21:26 chromatic I'm sending src/headers.c into src/gc/ now anyway.
21:27 dalek r35354 | coke++ | trunk (13 files):
21:27 dalek : Remove last [DEPRECATED] find_global opcode.
21:27 dalek : "make test" passes, but it seems that many things that use this (in library, e.g.) might not even be compiled.
21:27 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35354
21:31 DietCoke I swear I tried to remove that opcode 3 times, and got errors before. wierd.
21:33 Whiteknight urg, so many broken things!
21:34 Whiteknight I still can't figure out TT#133 and why tailcallmethod wouldn't be working
21:34 Whiteknight or TT#154, which is so weird I don't even know where to start
21:36 Whiteknight I was looking at it in GDB, but the line numbers must be wrong somewhere because it was like tracing through some perl files instead of the C code
21:36 chromatic You get that from PCCMETHODs in PMCs.
21:36 jonathan Whiteknight: I suspect it...yeah, what c said.
21:37 chromatic Sometimes I edit the .c files directly and remove all #line directives and rebuild.
21:37 Whiteknight oh great, what a wonderful non-hassle
21:38 Whiteknight is there a reason why PCCMETHODS have that endearing quality, or is that something I can/should fix?
21:39 jonathan Well, the thing is that it's generated code, and the Perl file it refers to is where the code is generated...
21:39 chromatic <rub item="it" position="in">I believe you're thinking of the calling_conventions branch.</rub>
21:40 chromatic We should use more binary trees in the GC.
21:41 jonathan chromatic: For faster lookups or stuff?
21:42 jonathan *of
21:42 chromatic I'm looking at how we store sized header pools.
21:42 chromatic We use the size as an index into an array.
21:43 chromatic I doubt that our distribution of sizes will be linear.
21:43 chromatic My initial impression is that something more sparse would be more useful.
21:44 chromatic But that gets into GC tuning, which is a different sort of problem.
21:44 dalek r35355 | coke++ | trunk (9 files):
21:44 dalek : Remove last variant of [DEPRECATED] store_global opcode; make test passes.
21:44 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35355
21:44 jonathan OTOH, an index into an array is *fast*.
21:45 jonathan Do we hit the sized header pools per pmc creation, though?
21:45 dalek r35356 | chromatic++ | branches/pdd09gc_part2/src:
21:45 dalek : [src] Fixed some typos.  Improved some documentation.  Tidied some code.
21:45 dalek : Switched the one use of get_bufferlike_pool() over to make_bufferlike_pool(),
21:45 dalek : as the former makes it too easy to corrupt memory even in the normal case.
21:45 chromatic No, it's for STRINGs and buffers and such.
21:45 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35356
21:46 chromatic Besides that, we already keep pointers to the appropriately sized pools from which we allocate a lot of headers, so we avoid the lookup.
21:46 jonathan Ah.
21:46 chromatic I'm just thinking of the space/time/realloc overhead for using a non-sparse array.
21:46 jonathan In that case it's probably not a performance issue, and possibly a memory usage win.
21:47 chromatic Did I ever tell you I wrote a proof of concept self-hosting garbage collector?
21:47 chromatic Not for Parrot.
21:47 jonathan No.
21:47 jonathan Self-hosting GC?!
21:47 * jonathan is curious.
21:47 chromatic It manages its own memory.
21:48 jonathan Aha.
21:48 jonathan Self-hosting in that sense.
21:48 chromatic That was a brain-twisty afternoon.
21:48 jonathan :-)
21:48 jonathan They happen now and then.
21:49 chromatic It has (naively to start) a hash of sized pools.
21:49 chromatic Each pool is some multiple of the size of its elements and a memory page.
21:49 chromatic For one-byte elements, you get one page of 4096 elements.
21:50 jonathan Page boundary sensitivity is good.
21:50 chromatic Anyway, it allocates an appropriately sized pool for a Hash structure.
21:50 chromatic Then it allocates an appropriately sized pool for a HashBucket structure.
21:51 chromatic Then it allocates an appropriately sized pool for a MemoryPool structure.
21:51 chromatic Then it assigns all of the pointers correctly so that it refers to those pools as anchored roots, and then it goes on merrily.
21:51 jonathan Whee. :-)
21:51 jonathan You make it all sound so simple.
21:52 chromatic It's not too complicated.
21:52 * jonathan didn't ever find Parrot's GC code that simple.
21:52 chromatic I wanted to see if I could avoid malloc/free for everything but pool management.
21:52 chromatic It would be easy to switch over to mmap/munmap if I wanted to be completely awesome.
21:52 chromatic sbrk is for weirdoes.
21:53 Whiteknight that's what my GC tries to do: avoid all extraneous malloc/realloc calls
21:53 DietCoke chromatic: you do want to be completely awesome.
21:53 Whiteknight unfortunately, my proof-of-concept is completely b0rked
21:53 chromatic s/want to//
21:53 Whiteknight chromatic you do be completely awesome
21:54 jonathan you grammar do be completley awesome
21:54 chromatic After that point, I decided that I needed dinner, and when I came back, I wasn't sure if I wanted to do copying or mark/sweep or try the traincar algorithm or what.
21:55 Whiteknight I keep thinking about doing a traincar GC instead
21:55 Whiteknight or even a semi-space algorithm, until I hear numbers like 1.3 million PMCs
21:56 DietCoke that is very likely not my fault. =-)
21:56 chromatic I just can't see how to do an incremental non-m/s GC.
21:58 chromatic I wish I could figure out how to force GDB to attach to a process which aborts.
21:58 chromatic Or I could change the ASSERT to force a segfault....
21:59 Whiteknight chromatic: that would probably be the easiest. We could have some kind of a flag that changes PARROT_ASSERT to do "*(0) = 0x1" and force a segfault
22:00 Whiteknight I usually just set a breakpoint on Parrot_confess, but that has it's downside
22:00 dalek r35357 | chromatic++ | branches/pdd09gc_part2 (2 files):
22:00 dalek : [src] Removed doomed get_bufferlike_pool() function, which could cause memory
22:00 dalek : corruption from innocent-looking use.  What replaces it?  Oh, you'll see....
22:00 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35357
22:00 chromatic I run the parallel tests, and once in a while I see the PARROT_ASSERT(obj) in pobject_lives abort, but I can't reproduce it except when running parallel tests.
22:01 chromatic It's tough to attach GDB there.
22:01 jonathan bbiab
22:01 dalek r35358 | Whiteknight++ | branches/pdd09gc_part1 (4 files):
22:01 dalek : [pdd09gc_part1] remove real_self from this branch, since we've removed it from trunk and it was being marked by the GC
22:01 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35358
22:03 dalek r35359 | coke++ | trunk/languages/pheme/lib (4 files):
22:03 dalek : Update pheme past recent opcode removal.
22:03 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35359
22:04 dalek r35360 | coke++ | trunk/languages/regex:
22:04 dalek : fix [regex] language to avoid removed opcodes.
22:04 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35360
22:06 dalek r35361 | chromatic++ | branches/pdd09gc_part2 (5 files):
22:06 dalek : [src] Renamed make_bufferlike_pool() to get_bufferlike_pool(), so that it's
22:06 dalek : obvious which function is safer to use.  (Hint: it's the only one which exists
22:06 dalek : anymore.)
22:06 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35361
22:08 dalek r35362 | Whiteknight++ | branches/pdd09gc_part1/src/gc:
22:08 dalek : [pdd09gc_part1] move a directive to include more random tests in the DEBUG mode only
22:08 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35362
22:13 Whiteknight what type of PMC is normally stored in ctx->handlers, ResizablePMCArray?
22:13 chromatic I think so.
22:15 TiMBuS joined #parrot
22:16 DietCoke hurm. most conversions to keys is from literal strings, so I can just do 'foo' => ['foo']
22:17 DietCoke but if foo is in $S1, how can I key that?  {{ new $P1, 'Key'\n $P1 = $S1 }} ?
22:17 Whiteknight my current GC-related segfault comes from the premature collection of a handler PMC
22:19 tewk \
22:27 dalek r35363 | pmichaud++ | trunk/languages/perl6/src/builtins:
22:27 dalek : [rakudo]:  Make assignment smarter about ObjectRef vs. Perl6Scalar.
22:27 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35363
22:28 Whiteknight The time may not be too too far off when I have to just admin defeat and toss this GC onto the trash pile
22:28 Whiteknight for my blood pressure, that might just be the most attractive option
22:30 chromatic If we had a better set of abstractions for working with the GC, that might make life easier.
22:30 Theory joined #parrot
22:30 chromatic I'm trying to move files and functions around so we have a hope of cleaning things up.
22:31 Whiteknight I may just have to wait for that cleanup work to materialize, because I'm up against the wall here with my current methods
22:31 Whiteknight on that note, you need an extra pair of hands/eyes on your branch?
22:33 tewk chromatic: have you tried SIGABRT?
22:34 chromatic How do I catch that from parallel prove?
22:34 tewk I often write a signal handler that prints "run gdb on getpid()" and then do a read on stdint.
22:34 tewk you would have to add a signal handler to parrot recompile and then run parallell prove.
22:35 tewk it essentially tells you to what pid to attach to and then suspends that process by blocking on stdin.
22:35 chromatic Clever.
22:37 chromatic Whiteknight, I'm thinking we should figure out what kind of public API we need for the GC (get_new_*_header(), pobject_lives(), collect(), etc), and stuff that in src/gc/api.c.
22:37 chromatic Then figure out how to make the backend somewhat pluggable.
22:37 tewk Very essential for SIGSEGV faults in GC code when you are using mprotect as memory barrier
22:39 tewk I've seen a code base that successfully auto launches gdb in an xterm and attaches to the offending process on SIGSEGV or SIGABORT.
22:40 chromatic Let me make two more commits.
22:40 dalek r35364 | chromatic++ | branches/pdd09gc_part2 (9 files):
22:40 dalek : [GC] Moved several GC public functions from src/headers.c into src/gc/api.c.
22:40 dalek : Re-ran headerizer.
22:40 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35364
22:40 chromatic Then I could use some help on this (especially as I have to run an errand or two).
22:45 Whiteknight I would love to help improve the API
22:45 Whiteknight I've had so many complaints about the API since I started this work
22:45 Whiteknight just let me know what and when
22:47 dalek r35365 | pmichaud++ | trunk/languages/perl6/src/classes:
22:47 dalek : [rakudo]:  Adjust flattening to understand ObjectRef vs. Scalar .
22:47 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35365
22:50 cotto DietCoke, where are you converting strings to keys?
23:01 chromatic tewk, Whiteknight, this checkin on the https://svn.perl.org/parrot/branches/pdd09gc_part2 is probably my last for today.
23:01 dalek r35366 | chromatic++ | branches/pdd09gc_part2 (9 files):
23:01 dalek : [GC] Moved src/headers.c to src/gc/pools.c and include/parrot/headers.h to
23:01 dalek : include/parrot/gc_pools.h.
23:01 dalek : Re-ran headerizer.
23:01 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35366
23:01 chromatic tewk, t/pmc/multidispatch_47.pir and t/pmc/filehandle_2.pir are the ones which show weird aborts under parallel testing sometimes.
23:10 ask_ joined #parrot
23:19 GeJ Good morning everyone
23:22 jonathan morning GeJ
23:35 tetragon joined #parrot
23:43 Whiteknight okay chromatic, anything in particular I could tackle next?
23:43 Whiteknight or, is there a checklist somewhere?
23:53 chromatic No real checklist.
23:54 chromatic Maybe what we need to do is figure out all of the functions gc_api.c needs to expose, normalize their names, and figure out how to hide differences between GCs between them.
23:54 Whiteknight I like that idea
23:54 chromatic We might need to create a GC struct which abstracts GC details.
23:55 chromatic That could move some stuff out of the Interpreter struct.
23:55 s1n what's the maximum allowable recursion depth? around 1000?
23:56 chromatic yes
23:56 chromatic by default
23:56 s1n chromatic: why the limit?
23:57 chromatic Debugging.
23:57 purl i heard debugging was for wimps! or working
23:57 s1n chromatic: is it easy to extend to an arbitrary limit?
23:57 chromatic Yes, I believe so.
23:57 chromatic You have to set a value on the current interpreter, but you can do that from within PIR.
23:58 s1n err is there any documentation somewhere about this?
23:58 chromatic There might be.
23:59 Whiteknight chromatic, I agree. There are 3 GC-related function pointers in the Arenas struct. We could separate them out into a separate structure and add more pointers for other tasks

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced