Camelia, the Perl 6 bug

IRC log for #parrot, 2011-04-06

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 davidfetter dukeleto, http://wiki.postgresql.org​/wiki/PgCon_2011_PL_Summit <-- a lot sketchy atm. selena's organizing
00:06 mtk left #parrot
00:09 tcurtis whiteknight: Do you know if there have been any advances in LALR parsing table creation since "Effficient Computation of LALR(1) Look-Ahead Sets"?
00:09 whiteknight in terms of the underlying theory, no
00:10 whiteknight I'm sure there have been tons of tricks and optimizations found at the implementation level
00:11 sorear I recommend trying to read and understand the source of a couple major LALR systems (bison, happy, antlr)
00:12 sorear if you can't, it means you don't understand the theory well enough
00:12 sorear and you'll know if there are any improvements in standard practice
00:13 mtk joined #parrot
00:13 dukeleto mtk: welcome!
00:14 * theory just wants to be understood.
00:14 dukeleto whiteknight: imcc_compreg_pmc "make test" passed on g++ 4.4.3 on 64bit ubuntu (minus the tests that I broke in extend_vtable :) )
00:15 dukeleto theory: in what way?
00:15 whiteknight yy!
00:15 theory dukeleto: responding to what sorear said. :-)
00:18 bubaflub tcurtis: there is a pretty good ANTLR book, haven't grok'd all of it but that might be a good place to look
00:33 cotto ~
00:35 cotto What's the appeal of bcc?  All it does is make me sad and break my email filters.
00:36 petdance joined #parrot
00:37 sorear It probably seemed like a good idea at the time
00:42 petdance ping dukeleto
00:44 davidfetter cotto, in my case, it's helped me mediate some disputes.
00:55 whiteknight Parrot has preposterously few disputes that need mediation
00:56 whiteknight compared to my work with other projects and communities, that is
00:57 bubaflub whiteknight: i've used it to mediate problems at work as well
00:57 benabik We're just awesome that way.  :-D
01:00 dalek Rosella: 237774e | Whiteknight++ | src/test/ (4 files):
01:00 dalek Rosella: Add a little message at the end of the test run giving the status
01:00 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/237774e311
01:00 dalek Rosella: fcbf696 | Whiteknight++ | src/test/Listener/TAP.winxed:
01:00 dalek Rosella: some docs for TAP listener
01:00 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/fcbf696054
01:05 davidfetter left #parrot
01:06 kid51 joined #parrot
01:19 petdance left #parrot
01:42 whiteknight left #parrot
01:47 bubaflub left #parrot
02:05 hudnix left #parrot
02:13 petdance joined #parrot
02:19 kid51 left #parrot
02:26 dafrito_ is now known as dafrito
03:26 * soh_cah_toa says goodnight to parrot
03:26 soh_cah_toa left #parrot
03:33 Eduardow left #parrot
03:35 Eduardow joined #parrot
03:51 jrtayloriv joined #parrot
03:52 rblackwe left #parrot
03:53 rblackwe joined #parrot
04:12 benabik left #parrot
04:16 dalek parrot: 96a2ce1 | petdance++ | include/parrot/interpreter.h:
04:16 dalek parrot: The interpreter args get splint annotations, too
04:16 dalek parrot: review: https://github.com/parrot/parrot/commit/96a2ce1448
04:16 dalek parrot: 90907c6 | petdance++ | src/hll.c:
04:16 dalek parrot: Fixing the splint arg annotation
04:16 dalek parrot: review: https://github.com/parrot/parrot/commit/90907c6119
04:21 benabik joined #parrot
04:48 benabik cottom bacek, dukeleto and anyone else interested: I clarified the "Bugfix" and "Work continutes" lines in my GSoC proposal. https://gist.github.com/899867
04:48 benabik *cotto ^^
04:49 bacek_at_work benabik, still looks good :)
04:52 cotto benabik, reading now
04:53 JimmyZ joined #parrot
04:55 JimmyZ left #parrot
05:01 AzureStone left #parrot
05:07 AzureStone joined #parrot
05:08 simcop2387 left #parrot
05:08 simcop2387_ joined #parrot
05:08 simcop2387_ is now known as simcop2387
05:18 dalek parrot: 3ddb811 | petdance++ | src/io/buffer.c:
05:18 dalek parrot: consting local vars
05:18 dalek parrot: review: https://github.com/parrot/parrot/commit/3ddb811da0
05:18 dalek parrot: f7917a6 | petdance++ | / (3 files):
05:18 dalek parrot: updating splint annotations
05:18 dalek parrot: review: https://github.com/parrot/parrot/commit/f7917a6f7d
05:18 dalek parrot: 3b2a395 | petdance++ | src/gc/mark_sweep.c:
05:18 dalek parrot: fixing splint annotations
05:18 dalek parrot: review: https://github.com/parrot/parrot/commit/3b2a395082
05:20 theory left #parrot
05:23 simcop2387 left #parrot
05:23 simcop2387_ joined #parrot
05:23 simcop2387_ is now known as simcop2387
05:25 benabik It's starting to get early, I should sleep.  G'night, #parrot
05:29 cotto 'night benabik
05:30 petdance left #parrot
05:36 dalek parrot: a044b31 | petdance++ | src/gc/string_gc.c:
05:36 dalek parrot: consting locals
05:36 dalek parrot: review: https://github.com/parrot/parrot/commit/a044b31cc8
05:36 dalek parrot: 7785900 | petdance++ | / (2 files):
05:36 dalek parrot: updating splint annotations
05:36 dalek parrot: review: https://github.com/parrot/parrot/commit/778590076a
05:39 simcop2387 left #parrot
05:53 simcop2387 joined #parrot
06:00 simcop2387 left #parrot
06:01 simcop2387 joined #parrot
06:05 simcop2387 left #parrot
06:06 simcop2387 joined #parrot
06:11 he__ joined #parrot
06:11 simcop2387 left #parrot
06:13 simcop2387 joined #parrot
06:15 ShaneC1 joined #parrot
06:16 ShaneC left #parrot
06:23 woosley joined #parrot
06:58 * tcurtis should also sleep soon but needs to do a bit more work on and then post proposal to melange.
06:58 bacek left #parrot
07:14 * tcurtis submitted updated proposal.
07:15 tcurtis To melange, specifically. I'll email a link to parrot-dev now.
07:17 * tcurtis sent the email.
07:17 * tcurtis sleeps now.
07:20 cotto tcurtis, awesome
07:27 he__ So, I've finally found out some about why some new(?) tests in 3.2.0 fail on NetBSD.
07:27 he__ Smolder report on http://smolder.parrot.org/app/​projects/report_details/13975
07:27 he__ It turns out that parrot always sets the st_rdev member to 0, while perl does not.
07:28 he__ Ref. stat_buf_to_array() in dynpmc/os.pmc.
07:34 cotto seen fbrito
07:34 aloha fbrito was last seen in #parrot 68 days 13 hours ago leaving the channel.
07:35 cotto dukeleto, ping
07:46 he__ and stat(2) may not modify the st_rdev member, so leaves whatever garbage was there from before.
07:47 he__ Fix?  The tests for stat and lstat should do "$s[6] = 0; # Parrot does this internally; value irrelevant for plain files"
07:54 mtk left #parrot
07:58 contingencyplan left #parrot
08:01 mtk joined #parrot
08:06 dodathome joined #parrot
08:08 bacek joined #parrot
08:15 fperrad left #parrot
08:26 silug left #parrot
08:28 dafrito left #parrot
08:28 bacek ~~
08:36 dafrito joined #parrot
08:36 dodathome left #parrot
08:39 dodathome joined #parrot
09:13 bacek seen moritz
09:13 aloha moritz was last seen in #perl6 3 hours 29 mins ago saying "\o/".
09:13 bacek seen sorear
09:13 aloha sorear was last seen in #perl6 3 hours 22 mins ago saying "o/ moritz".
09:13 * moritz was last seen when I looked into a mirror
09:14 bacek moritz, question about grammars. Here or better move to #perl6?
09:15 moritz bacek: I don't mind, most people that can answer are in both channels :-)
09:18 ShaneC1 left #parrot
09:35 UltraDM joined #parrot
09:39 jrtayloriv left #parrot
09:41 dalek parrot/jit_prototype: ce26842 | bacek++ | / (2 files):
09:41 dalek parrot/jit_prototype: [opsc] Fix parsing of enclosed EXPR. moritz++ and jnthn++ for help
09:41 dalek parrot/jit_prototype: review: https://github.com/parrot/parrot/commit/ce26842c16
09:49 dd070 joined #parrot
09:53 dd070 left #parrot
10:32 woosley left #parrot
10:32 UltraDM left #parrot
11:14 nopaste "he" at 192.168.1.3 pasted "Fix for stat/lstat tests" (20 lines) at http://nopaste.snit.ch/39539
11:15 he__ Hoping someone might pick up this two-line fix.
11:18 JimmyZ joined #parrot
11:19 JimmyZ he__: please submit to trac. http://trac.parrot.org/
11:19 he__ ok, then.
11:33 woosley joined #parrot
11:36 JimmyZ left #parrot
11:55 Patterner left #parrot
11:55 Psyche^ joined #parrot
11:55 Psyche^ is now known as Patterner
12:01 he__ JimmyZ: I must be stupid.  I've successfully logged in to http://trac.parrot.org/, but for the life of me I can't find a butten called "(Create) New ticket".  Help?!?  My top menu only says "Wiki", "Timeline", "Roadmap", "Browse Source", "View Tickets", and "Search".  And "View Tickets" is indeed only "View".
12:05 moritz he__: might be related to the newest ticket spam wave
12:05 UltraDM joined #parrot
12:13 he__ Well, I'll then just have to wait for a friendly soul with a "commit bit" to pick up the diff, which is now, btw, committed to NetBSD's pkgsrc to make parrot 3.2.0 packaged there pass all its tests.
12:13 moritz where is the diff?
12:13 moritz ah, there's a nopaste in the backlog
12:15 moritz he__: testing now, will push if it passes tests here
12:21 moritz he__: should I use your ircname as attribution for the patch?
12:22 Hackbinary left #parrot
12:26 whiteknight joined #parrot
12:26 lucian joined #parrot
12:31 moritz ... timeout.
12:31 dalek parrot: 3d5abb6 | moritz++ | t/dynpmc/os.t:
12:31 dalek parrot: fix stat on NetBSD. Patch courtesy by Havard Eidnes
12:31 dalek parrot: review: https://github.com/parrot/parrot/commit/3d5abb682f
12:32 moritz he__++
12:39 benabik left #parrot
12:41 lucian g'day
12:42 estrabd left #parrot
12:42 estrabd joined #parrot
12:51 hudnix joined #parrot
12:54 bluescreen joined #parrot
12:55 he__ moritz: sorry, had gaze elsewhere.  Thanks for committing, though.
12:56 moritz you're welcome. Thanks for the patch.
12:59 bluescreen left #parrot
13:05 tadzik I don't get it. If "Parrot does this internally", why the need to add it?
13:10 benabik joined #parrot
13:14 bluescreen joined #parrot
13:28 lucian_ joined #parrot
13:31 lucian left #parrot
13:33 whiteknight good morning, #parrot
13:38 tadzik good morning whiteknight
13:39 rohit_nsit08 joined #parrot
13:41 whiteknight hello tadzik: how are you?
13:41 rohit_nsit08 whiteknight: hello, good morning
13:41 whiteknight hello rohit_nsit08
13:42 tadzik whiteknight: nothing fancy, how about you?
13:43 benabik 'lo whiteknight!
13:44 rohit_nsit08 whiteknight: i wanted to know more about parrot objects? got some good comments from cotto about my proposal today .
13:45 moritz we have design documents that are worth reading
13:45 rohit_nsit08 I have read the wiki book, is it there?
13:45 moritz http://docs.parrot.org/par​rot/latest/html/pdds.html
13:46 rohit_nsit08 moritz: thanks !
13:46 benabik rohit_nsit08: I've found the wiki book to be slightly out of date.  The concepts are usually right, but the details are sometimes wrong.
13:46 lucian joined #parrot
13:47 rohit_nsit08 benabik: ya it was mentioned in it, I used it for concepts of PCT
13:49 lucian_ left #parrot
13:50 whiteknight I wrote that wikibook, and I haven't updated it in years
13:51 simcop2387 left #parrot
13:51 simcop2387 joined #parrot
13:59 whiteknight rohit_nsit08: I think you can ignore the object model initially, and just use Hashes for all your objects
14:02 whiteknight the JS "object model" is pretty simplistic semantically
14:02 Andy_ whiteknight: The always-use-PMCNULL is fine with me.
14:03 whiteknight Andy_: good! I'm more in favor of consistancy than I am in favor of any particular route to get there
14:04 Andy_ I'd also like to some point float the idea that we make some vmethods take const args.
14:05 he__ left #parrot
14:05 Andy_ For instance, if you're comparing two PMCs, can they both be declared const?  Can we safely restrict whatever vmethods come down the pipe to the restriction of "If you want to compare two things, you have to do it without modifying them"?
14:06 whiteknight Andy_: I like that idea
14:06 Andy_ How about deciding if a PMC is booleanly true?
14:06 Andy_ etc
14:06 whiteknight any get_* vtables are good candidates
14:07 benabik Haven't we already had to start deciding that for the GC write barriers?
14:07 Andy_ I don't know squat about how PMCs are working inside, so it might not be feasible.
14:07 whiteknight benabik: sort of
14:07 Andy_ benabik: I don't know.  What's a GC write barrier? :-)
14:07 Andy_ benabik: Have we met?
14:07 Andy_ I mean here on IRC?
14:07 Andy_ You'll find that I know C and that's about it. :-)
14:08 whiteknight benabik is one of our prospective GSoC students
14:08 Andy_ Aha.
14:08 benabik Andy_: Not sure of details, but I think we had to add markings to some operations to tell the GC "hey, we're changing things in here".
14:08 benabik Andy_: And no and what whiteknight said.
14:09 whiteknight benabik: we added write barriers to the code generator by default to certain vtables. They can still be added manually if needed elsewhere
14:09 benabik whiteknight: So we've declared "these vtables definitely aren't const", but not "these ones must be const"
14:09 whiteknight right
14:10 Andy_ Are you talking about the tables, or the methods pointed to by the tables?
14:10 whiteknight Andy_: I can think of at least one data structure (Splay Tree) that would want to modify its internals in response to a read. Parrot doesn't use that internally now, but I would hate to create a situation where it could not be used by an extension
14:11 Andy_ RIght, that's what I was a fraid of.
14:11 whiteknight for almost any modification, it's possible to think of an imaginary fringe situation that would be detrimented by it
14:11 Andy_ Right
14:11 benabik Also, determining some values might require heavy calculation that could be cached.
14:11 whiteknight so that's not a great argument to do nothing
14:11 benabik That's the most generic "fringe" situation I can think of.
14:11 Andy_ Even if we just say "Every arg is ARGMOD()" that's a help.
14:12 whiteknight benabik: right, caching is quite important to consider as well. Several of our built-in PMCs do aggressive caching
14:12 Andy_ Because right now, splint knows nothing about anything.
14:12 Andy_ If it's a vmethod, it has no help.
14:12 UltraDM left #parrot
14:12 whiteknight Andy_: okay, so that's an interesting project. Adding ARGMOD to vtable args should be easy enough to do at the pmc2c level
14:12 Andy_ oh, sure
14:13 Andy_ and the vtable_h.pl, etc.
14:13 whiteknight if only there was a group of available developers who were looking to start making commits to parrot, to prove their skills....
14:13 Andy_ but I bet there are some we can reliably say "this is still const"
14:13 Andy_ can_method_t
14:13 Andy_ does_method_t
14:13 whiteknight Andy_: yes, that's probably true
14:13 Andy_ get_namespace_method_t
14:13 whiteknight Andy_: any STRING argument should be const
14:14 whiteknight and ARGIN
14:14 Andy_ the stuff that is about the PMC itself, not the values
14:14 Andy_ whiteknight: Just doing ARGIN(const STRING *) would be a good starting point.
14:14 whiteknight yes, I suspect so
14:15 Andy_ I don't know if you've noticed, but on master I've changed PARROT_INTERP to ARGMOD(ParrotInterp *)
14:15 whiteknight it's hard to imagine we would get any performance benefit. The big drain there is the indirect method call itself, not anything to do with the args
14:15 Andy_ No, i'm not concerned about performance.
14:15 whiteknight Andy_: no, I hadn't noticed
14:15 benabik Andy_: What're you working on?
14:15 whiteknight Andy_: right, but getting more help from splint in proving correctness is almost as good
14:16 Andy_ My goal is to have every pointer annotated
14:16 Andy_ benabik: splint and static analysis.
14:16 Andy_ splint and other static analysis tools
14:17 benabik Andy_: Ah.  Occasionally grueling, but very useful.
14:17 whiteknight extremely useful
14:17 Andy_ And all I can help with, because I don't have the big brains to handle the VM stuff. :-)
14:17 Andy_ benabik: And occassionally on ack 2.0
14:18 whiteknight Andy_: is there an ETA on ack2.0?
14:18 Andy_ No
14:18 Andy_ I haven't touched its code in weeks.
14:18 * whiteknight curses quietly
14:18 Andy_ Been working on slides for CodeConf.
14:18 benabik Andy_: Bah.  Everyone's better at something than others and Parrot's big enough to need a little of everything.
14:19 Andy_ benabik: Understood, and that's why I do what I do.
14:19 Andy_ You're cheering to the captain of that cheer squad.
14:19 whiteknight I think I'm the only person at work who uses ack. From the commandline I can find things much faster than the rest of the goobers with their built-in VisualStudio search
14:20 Andy_ Their loss. :-)
14:20 Andy_ It's amusing and heartening to see ack-specific questions on StackOverflow now.
14:20 * benabik is ashamed to say he just uses `grep -R`, although `git grep` is more common these days.
14:21 whiteknight Andy_: I was interested in doing an implementation of Boyer-Moore for Parrot, but I think it would not work well with Parrot's string system. We would lose a lot of the potential optimizations
14:22 whiteknight Without that, there isn't going to be a compelling alternative to ack running on Parrot any time soon
14:22 Andy_ benabik: and sometimes I blog to Perlbuzz, as in: http://perlbuzz.com/2011/04/perlbuz​z-news-roundup-for-2011-04-06.html
14:26 Andy_ And sometimes I do actual work for my employer, because I have to get a project out by monday night so the website is ready for TLA.
14:26 Andy_ http://www.txla.org/annual-conference
14:27 Andy_ Oooh, book cart drill team! http://www.txla.org/bookcart
14:28 Andy_ Ok, back to work.
14:36 darbelo joined #parrot
14:44 lucian left #parrot
14:46 bluescreen left #parrot
14:46 lucian joined #parrot
14:50 lucian left #parrot
14:51 lucian joined #parrot
14:52 contingencyplan joined #parrot
14:57 bluescreen joined #parrot
15:00 dd070 joined #parrot
15:04 dd070 left #parrot
15:07 whiteknight yay, another proposal submitted
15:08 benabik Boo, more competition.  ;-)
15:08 benabik I mean, yay!
15:09 rohit_nsit08 left #parrot
15:09 whiteknight benabik: if your proposal is sufficiently high quality, that's not a concern
15:10 PerlJam benabik: or if the others are of sufficiently low quality  ;>
15:10 whiteknight I think it's time for some espionage!
15:10 NotFound Are you thinking about making vtables const again? I think it will be yet another waste of time.
15:10 benabik Well not only am I the most awesome person ever, I know everyone else is horrible so I win both ways, right?  ;-D
15:12 * benabik is pretending to have self-esteem and hope he's not over doing it. ;-)
15:12 Andy_ NotFound: "Yet another" waste of time?
15:14 NotFound Andy_: It was done another time. And been reverted because we never know when the PMC values needs to change.
15:16 Andy_ NotFound: And that's a valuable decision to be made and to explicitly document.
15:16 Andy_ and annotate for splint.
15:17 NotFound Andy_: What decision?
15:17 Andy_ That we can't const PMCs.
15:17 NotFound Andy_: is easy: none.
15:18 Andy_ Yes, yes, I know, you think this is all stupid.
15:18 Andy_ Anything else to add?
15:18 NotFound Is not stupid, is just wrong.
15:18 Andy_ What is "just wrong"?
15:19 NotFound Attempting to const vtable functions.
15:19 Andy_ Not wrong at all.
15:19 Andy_ We can, for instance, const the STRINGs passed in.
15:19 Andy_ We can probably const the args in methods like can_method_t.
15:19 M_o_C joined #parrot
15:20 NotFound Andy_: we can't. STRINGs can always change. For example, its hash value mey need to be evaluated.
15:20 Andy_ And when we figure which args can be consted and which can't, we can then explicitly annotate them.
15:21 sorear NotFound: cases like that are why the standards allow 'casting away constness'
15:22 Andy_ sorear: If we're allowing casting away constness, we are making constness pointless.
15:23 Andy_ sorear: Where in the docs does it say that?
15:25 sorear I read it in a commentary somewhere, I forget where
15:25 Andy_ I see nothing in and .pod in the tree
15:25 sorear By 'standards' I meant C89 and C++89
15:26 sorear Not pddXX
15:26 NotFound sorear: the standard allow casting away constness for people that know what they are doing. And there are not a great quantity of such people.
15:28 NotFound Most just says "Uh, C sucks" when something goes wrong because of wrong usages of such features.
15:29 PerlJam I'm confused  ... a second ago you guys seemed to be on opposite sides of an argument and now it seems like you're really agreeing.
15:29 PerlJam :-)
15:29 NotFound In particular, make a function parameter const just by casting away constness inside it is never correct.
15:30 benabik PerlJam: Let them argue, it seems to make them happy. ;-)
15:30 NotFound PerlJam: consting is good when weel done. My point is that in parrot vtables it cannot be done well.
15:37 mj41 joined #parrot
15:38 lucian_ joined #parrot
15:38 sorear casting away constness to emulate C++ "mutable" seems fine to me
15:39 NotFound sorear: is not.
15:40 NotFound sorear: if mutable was not needed to do that, C++ will not have introduced it.
15:40 Andy_ If a function needs to cast away constness of an arg, then it should not be declared const.
15:40 Andy_ You'd be upset if strlen(p) modified *p, wouldn't you?
15:40 NotFound If we want mutable, we should switch to C++.
15:41 NotFound An I think that battle has been already fought, long time ago.
15:41 lucian left #parrot
15:41 lucian_ is now known as lucian
15:42 Eduardow left #parrot
15:43 * TimToady thinks mutable vtables is a good way to pessimize a VM
15:44 TimToady arguing about C/C++ semantics is kinda beside the point, if the problem is in parrot design
15:46 TimToady this is somewhat symptomatic of the impedance mismatch between the dynamic typing mindset and the gradual typing mindset
15:47 TimToady the point of gradual typing is to be able to nail things down that look nailable, not to keep everything as dynamic as possible forever
15:47 sorear TimToady: 'vtable' in this context is somewhat of a misnomer; the subject of the discussion is whether $object.get_hash_code is allowed to cache the hash code even if $object is declared const
15:48 sorear Andy and NotFound are taking a philosophical stand against modifying memory through const pointers
15:49 Andy_ It's not even philosophical.
15:49 Andy_ I'm saying that if we need to modify memory through a pointer, that pointer should not be consted.
15:49 NotFound sorear: not philosophical at all. Lying to the compiler generates hard to debug bugs.
15:49 Andy_ And that if you have to cast away the constness, then the solution is not to cast away the constness but to change the constness of the arg.
15:50 PerlJam "lying to the compiler"?
15:50 Andy_ PerlJam: Imagine you have implemented strlen.
15:50 Andy_ And your implementation of strlen(p) modifies *p
15:50 NotFound PerlJam: if you tell the compiler that something is const and it can optimize based on that assumption, and then you modify it, you are lying.
15:50 whiteknight I'm perfectly happy making parameters in certain PMC operations const, if those operations are not overidable by subclasses in any way
15:51 Andy_ If inside of strlen you say "char * fake_p = (char *)p; *fake_p = 'x'"
15:51 Andy_ you are lying to the compiler
15:51 whiteknight as soon as you open the operation up for general use by coders who are not us, there are going to be problems
15:51 sorear If an attempt is made to modify an object defined with a const-qualified type through use of an lvalue with non-const-qualified type, the behavior is undefined.
15:51 Andy_ and then, what if you call strlen("foo")
15:51 Andy_ You are now modifying an immutable string.
15:51 Andy_ etc etc etc
15:51 NotFound sorear: yeah, and undefined means: "You are doomed"
15:52 NotFound sorear: Have you hear about the DeathStation?
15:52 sorear STRINGs are never ever defined with const-qualified tye
15:52 sorear so that undefined behavior doesn't apply to us
15:52 TimToady .o(slippery slope arguments considered harmful)
15:52 Andy_ sorear: But we're not talking just about STRINGs.
15:52 NotFound sorear: Is a mytical machine that in any usage of C undefined behaviour kills you.
15:53 sorear Andy_: oh?
15:53 NotFound That can be done with strict observance of the standards.
15:53 Andy_ sorear: Yes, we are not just talking abotu STRING *
15:53 TimToady the const abstraction can be thunk of at more than one level
15:53 Andy_ For instance, can we say that can_method_t functions have its self arg be declared const?
15:54 Andy_ I'd think we could.
15:54 TimToady a type can have const-y semantics on an abstract leve, but non-const-y infrastructure to support it, like COW or caching or whatever
15:55 TimToady *level, can't type with this stupid write brace
15:55 TimToady *wrist, grr
15:55 sorear Andy_: I agree that consting PMCs is dubious at best
15:56 Andy_ sorear: Great.
15:56 Andy_ And if we don't const them, that's fine.  And we annotate them as ARGMOD() so that splint knows that they can be modified.
15:56 lucian TimToady: i'd love some persistent data structures in parrot (offtopic)
15:56 NotFound Problem is: we use PMC internals a lot inside parrot, we don't only call functions that can be written carefully to allow that abstractions.
15:57 Andy_ I'm more interested in making the interface explicit than I am specifically consting anything.
15:58 theory joined #parrot
15:58 NotFound Andy_: I'm perfectly happy with documenting what vtables are supposed to be logically cont.
15:58 NotFound const.
15:59 Andy_ I don't care about logically const.  I want to document what the compiler can know is const.
15:59 PerlJam NotFound: you just don't want your compiler carping at you when you violate that logic on purpose?
15:59 NotFound For example, documenting that get_integer is not supposed to change the viewable behaviour of the PMC.
16:00 Andy_ NotFound: If you want to document that, great.  That's at a higher level than I'm working.
16:00 NotFound But that and making the SELF of that vtable const are very different things.
16:00 NotFound Andy_: is just an example.
16:00 Andy_ Yes, I know.
16:00 Andy_ I know they are different.
16:03 NotFound PerlJam: sometimes you can violate that logic on purpose in a safe way, but is not easy.
16:03 NotFound Specially in target as moving as parrot.
16:12 bluescreen left #parrot
16:15 bluescreen joined #parrot
16:24 PerlJam whiteknight: I just read your response to the template engine proposal and it made me chuckle a little bit when you asked which testing library he'd use because earlier, I was going to tell you that you should push yours a little bit on all of the GSoCers so that it gets well used.  :-)
16:24 whiteknight PerlJam: I've been mentioning it, but I have not been pushing it on anybody
16:25 whiteknight I want people to use whatever is best and easiest for the job
16:25 whiteknight and I want to give plenty of examples that the best and easiest is Rosella :)
16:35 dukeleto This looks interestting: https://github.com/cscott/TurtleScript
16:41 benabik dukeleto: It does look interesting.  I like that he's borrowing yadda from P6.  I wish more languages had it.  When I was building my compiler last quarter I kept writing a nyi() function to throw UnsupportedOperationExceptions.
16:41 mj41 left #parrot
16:45 benabik Ah, well.  Off to school.  midterms--
16:47 benabik left #parrot
16:53 particle1 joined #parrot
16:57 particle left #parrot
17:01 Eduardow joined #parrot
17:04 cotto_work ~
17:05 dmalcolm joined #parrot
17:11 lucian allison: ping
17:12 mj41 joined #parrot
17:24 rohit_nsit08 joined #parrot
17:38 ShaneC joined #parrot
17:39 M_o_C left #parrot
17:43 benabik joined #parrot
17:43 benabik left #parrot
17:52 rohit_nsit08 whiteknight: i was going through the parrot's object model and prototype object model of javascript, how should i mention them in the proposal?
17:52 whiteknight rohit_nsit08: Whatever you think is relevant. If you think you have to do work, mention it
17:52 whiteknight if not, say you won't
17:52 dalek nqp/ctmo: 3befd15 | jonathan++ | src/stage0/ (7 files):
17:52 dalek nqp/ctmo: Update bootstrap with latest changes.
17:52 dalek nqp/ctmo: review: https://github.com/perl6/nqp/commit/3befd1502f
17:54 rohit_nsit08 It may or may not be required, depends on the situation that time , i know that i'll be using parrot's PMC  to implement JavaScript objects and hierarchy but it will be only a guess right now
17:57 tadzik aloha: clock?
17:57 aloha tadzik: LAX: Wed, 10:57 PDT / CHI: Wed, 12:57 CDT / NYC: Wed, 13:57 EDT / UTC: Wed, 17:57 UTC / LON: Wed, 18:57 BST / BER: Wed, 19:57 CEST / TOK: Thu, 02:57 JST / SYD: Thu, 03:57 EST
17:59 lucian can PMCs be cloned easily? if yes, it'd be quite easy to implement a crummy prototypal object system
18:00 NotFound lucian: clone $P1, $P2
18:01 whiteknight define "easy" and "cummy"?
18:01 whiteknight "crummy"?
18:01 lucian whiteknight: it'd be easy because you'd only need Classes for base objects
18:02 lucian crummy because it'd likely be slow and not great design
18:02 whiteknight In a naive JavaScript implementation, I don't think we need to use Classes or Objects at all
18:02 lucian i don't see how you could get away without JS objects
18:03 whiteknight for instance, if every JavaScript object were a Hash, you could implement all operations you would need
18:03 lucian do you mean just implement JS's 'object' with a hash?
18:03 whiteknight right
18:03 dalek winxed: r937 | NotFound++ | trunk/ (3 files):
18:03 dalek winxed: Stages 1 and 2 now can't be invoked directly from command line
18:03 dalek winxed: and don't have fakecutables.
18:03 NotFound Note the "naive".
18:03 dalek winxed: Non installed driver uses load_bytecode for stages 1 and 2.
18:03 lucian then you'd need to do obj.prototype
18:03 dalek winxed: Auxiliary methods in the compiler object to workaround lack of features
18:03 dalek winxed: in non installed driver.
18:03 dalek winxed: Makefile changes to adapt it to the other changes.
18:03 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=937
18:03 whiteknight the only place where you would need somethign tricky is in function objects. Those could be a hash with an attached "invokable" property
18:03 lucian whiteknight: there's obj.apply() in JS
18:04 whiteknight lucian: We can easily have a fallback mechanism to find method objects for built-in types
18:05 lucian whiteknight: anyway, you'd have to reimplement object attribute resolution
18:05 whiteknight and there's no reason we can't insert a .apply invokable attribute on an invokable object. They're all hashes. All we need to do is set up the right prototypes
18:06 whiteknight invokable.prototype could have a .apply method in it
18:10 lucian whiteknight: it does seem like reimplementing a lot
18:10 whiteknight lucian: Maybe I'm oversimplifying. It doesn't seem to me like we need to do a whole hell of a lot
18:11 lucian the biggest issue to me seems dispatch
18:11 whiteknight we set up a few hashes ahead of time as prototypes for the builtin "types", then just treat everything like annotated hashes
18:11 lucian you'd have to write that, when Object or 6model would provide it
18:11 whiteknight I don't see the problem with dispatch
18:11 whiteknight $P1 = $P0["foo"] \n $P1()
18:12 whiteknight JS doesn't have inheritance or anything like that
18:12 lucian sure, but you have to walk the prototypal chain
18:12 lucian sure it does
18:12 lucian plenty of inheritance
18:12 whiteknight once you clone the prototype, you create a flat Hash which contains all the necessary methods
18:12 lucian if an attribute isn't in obj, look for it in obj.prototype. then obj.prototype.prototype
18:12 whiteknight there's no walking any chain for method dispatch
18:13 lucian that'd be wrong semantics
18:13 lucian if the prototype changes, your hash wouldn't change
18:13 whiteknight right, because when you clone, you create a separate copy
18:13 lucian and that's not how JS works
18:13 whiteknight you can change the copies without any references between them
18:14 lucian whiteknight: but why copy at all?
18:14 whiteknight so you're talking about taking a lazier approach?
18:14 lucian you need a reference to the prototype object, that's all
18:14 lucian js's attribute dispatch is lazier, semantically
18:14 whiteknight that's fine. We can annotate the Hash object.
18:14 lucian go ahead and cache, sure
18:15 whiteknight all PMCs in Parrot have properties, which can be set and used independently of attributes.
18:15 whiteknight we can easily have a "prototype" property, in addition to normal entries in the Hash
18:16 lucian right. and then you don't need to copy anything when you make a new object
18:16 whiteknight and we can have a simple dispatch function written at the PIR level which can recursively search for prototypes
18:16 lucian yeah, that sounds roughly correct
18:16 whiteknight good. So we've got a lazy implementation and *still* don't need to use Class or Object types
18:16 lucian i'm not sure how NaN, null, undefined and numbers work into that
18:17 lucian whiteknight: don't need, no
18:17 lucian it's very similar to my plan for python3 if 6model is crap
18:17 whiteknight considering the deficiencies of our current MOP, we probably don't want it either
18:20 lucian whiteknight: from what people've been telling me, 6model should fit python's object model reasonably well
18:20 lucian if so, JS's too
18:21 lucian it _should_ be faster and cleaner
18:22 whiteknight 6model is probably the better MOP for the JS compiler, yes. I don't think it's worthwhile to do anything fancy with the JS object model during GSoC
18:22 lucian 6model being fancy?
18:22 whiteknight I  mean, we can get it working well with Hashes, then swap out once we have a better option built into Parrot itself
18:22 whiteknight it's fancy in that it's external to Parrot
18:22 lucian right
18:22 whiteknight once it's part of Parrot, it's a no-brainer
18:23 lucian yeah, i was thinking similarly for python
18:23 lucian but for python, it might be harder to implement it with hashes than with 6model
18:23 whiteknight Maybe, yes. There are no hard and fast rules here
18:24 jnthn_ Using an underlying hash and using 6model are not mutually exclusive.
18:24 dalek winxed: r938 | NotFound++ | trunk/pir/winxed_compiler.pir:
18:24 dalek winxed: update installable compiler
18:24 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=938
18:24 jnthn_ OK, Parrot folks, I've come to strike terror into your hearts.
18:24 jnthn_ I have a problem with IMCC.
18:24 whiteknight jnthn_: ?
18:24 jnthn_ Of note, if you do
18:24 jnthn_ .lex 'foo', $P0
18:24 jnthn_ .lex 'bar', $P1
18:24 jnthn_ .lex 'baz', $P2
18:25 whiteknight jnthn_: I have a huge IMCC refactor branch going to merge in tonight or tomorrow probably
18:25 whiteknight doesn't change any semantics, but I'm not going to be making unrelated changes to IMCC until that happens
18:25 jnthn_ And you didn't previously assign to $P0, $P1 or $P2 then it actually seems to give the same register mapping to all of those lexicals.
18:25 whiteknight ...lolwut?
18:25 whiteknight are you kidding?
18:25 jnthn_ No :'(
18:25 whiteknight damnfartcrap
18:25 soh_cah_toa joined #parrot
18:25 whiteknight I hate our lexicals
18:26 jnthn_ We never ran into it much before because nobody ever implemented the whole static lexpad thing
18:26 jnthn_ Then I did in a dynpmc
18:26 jnthn_ And then I found multiple lexicals sharing a register O_O
18:28 jnthn_ Anyway, I'm...a little stuck for any way to actually work around this too :/
18:30 jnthn_ To make matters more confusing, at least comments in IMCC suggest it should do the right thing
18:30 jnthn_ in reg_alloc.c:
18:30 jnthn_ /* all lexicals get a unique register */
18:30 jnthn_ allocate_lexicals(interp, unit);
18:31 soh_cah_toa does parrot use any llvm libraries?
18:32 jnthn_ whiteknight: Do you happen to know that use_count is on line 659 of reg_alloc.c?
18:32 jnthn_ whiteknight: does .lex 'foo', $P0 count as a usage?
18:32 whiteknight I have no idea
18:33 whiteknight soh_cah_toa: not yet. We are planning to use LLVM for our JIT, but we haven't implemented that yet
18:33 whiteknight bacek is working on a prototype
18:33 whiteknight jnthn_: Can you create a ticket and assign it to me?
18:33 jnthn_ whiteknight: Give me a moment to dig a little further first.
18:34 jnthn_ There's always a chance I can send a patch too...
18:34 jnthn_ With the emphasis on "chance" :P
18:34 soh_cah_toa hmm...okay. regardless, does parrot perform profile-driven optimizations or runtime optimizations?
18:34 whiteknight soh_cah_toa: right now, now
18:34 whiteknight no
18:34 soh_cah_toa good
18:35 soh_cah_toa b/c i had an idea for stepping backwards in the debugger
18:35 soh_cah_toa if it performed runtime optimizations, some code may be changed during re-execution
18:36 whiteknight we do most of our optimizations at the PAST, POST, and PIR levels
18:37 soh_cah_toa basically you'd keep a step count and if you want to move backwards n steps, you re-execute the program (either two passes or one) until step count - n occurs
18:37 whiteknight We treat bytecode as mostly immutable once it's loaded to help with threading issues
18:37 whiteknight of course, we don't have threading right now, so that's a moot point
18:37 soh_cah_toa ah, that too
18:37 soh_cah_toa good, b/c the only experience w/ threads that i have is w/ java
18:37 lucian whiteknight: i'd vote for bytecode staying immutable
18:38 whiteknight lucian: yeah, that's my vote. If we're going to be optimizing bytecode at all, it should be prior to loading in the interpreter
18:38 whiteknight we can do all the crazy optimizing we want at the compilation stage. After that, we can't be changing bytecode if various things are pointing into it
18:39 lucian whiteknight: not only that, but there are some jit techniques that are hard with mutable bytecode
18:39 soh_cah_toa that's the traditional way. even though that's easier to manage, the optimizations may not be too accurate
18:40 soh_cah_toa b/c optimization is based of the patterns of the developer and not the user
18:40 soh_cah_toa *off
18:40 whiteknight soh_cah_toa: in short, treat bytecode as if it's immutable. If you can step backwards, that's fine
18:40 lucian i think it's more than fine, in fact :)
18:41 soh_cah_toa that makes things easier, good.
18:41 soh_cah_toa i'd also like to know if there is an interrupt opcode
18:41 soh_cah_toa or trap, whatever
18:44 whiteknight maybe. If there is, it's old and crufty
18:44 whiteknight https://github.com/parrot/​parrot/tree/master/src/ops
18:44 whiteknight the *.ops files contain the op definitions
18:45 soh_cah_toa ok good
18:45 whiteknight there's a debug opcode
18:45 whiteknight core.ops
18:46 whiteknight ah, trap opcode in experimental.ops
18:46 soh_cah_toa b/c i was reading about an interesting way to implement breakpoints. the user specifies where the set the breakpoint, and you overwrite the first byte of the insutruction in memory w/ the value for the interrupt/trap instruction. when that instruction gets executed, you capture the trap
18:47 soh_cah_toa but then you have to worry about re-writing the original instruction back and stuff. just thinking whether or not it's do-able
18:47 whiteknight I was thinking that when you set a breakpoint, you could do a search through the annotations for a matching symbol
18:48 whiteknight search for a file annotation, then search for a matching line annotation
18:49 soh_cah_toa that's an idea
18:49 soh_cah_toa i need for find out more about packfile annotations
18:49 soh_cah_toa does pbc_dump list annotations?
18:51 soh_cah_toa i know i'd use the PackfileAnnotation pmc but i need to find out about the different types of annotations
18:52 whiteknight jnthn_ is the original author of annotations, I think
18:52 whiteknight plobsing has done some work on it recently too
18:53 soh_cah_toa alright, i'll talk to them
18:53 soh_cah_toa i think the debugger is going to be pretty kickass
18:54 whiteknight it better be!
18:54 whiteknight :)
18:54 soh_cah_toa haha
18:54 soh_cah_toa well, i definitely plan on sticking around afterwards to implement future improvements
18:54 soh_cah_toa can't just leave you guys hanging
18:55 whiteknight We're definitely happy to have you
18:55 PerlJam soh_cah_toa++ I hope you get one of the slots.
18:56 Andy_ I laffed: http://i.imgur.com/AKUiT.jpg
18:56 whiteknight interacting with the community is very very important.
18:56 * soh_cah_toa crosses his fingers
18:56 cotto_work Andy_: that's great
18:56 PerlJam Andy_: heh!
18:57 soh_cah_toa that's hilarious!
18:57 whiteknight It's important that we get to know the students, that we assess the capabilities of the student, etc. This is why having technical conversations with students and accepting patches from students is so important
18:58 soh_cah_toa yeah, i think i'm going to dig around the trac tickets this weekend for something to fix. all i got so far are some mistakes i've noticed in the docs since i've been reading all of them
18:59 cotto_work soh_cah_toa: that's a good start
18:59 whiteknight soh_cah_toa: last I looked, we have a tragic lack of function-level documentation in src/debug.c
19:00 whiteknight that seems like it's right up your alley
19:00 soh_cah_toa good idea
19:01 whiteknight docs/debug.pod and docs/debugger.pod probably could use some editing, spellchecking, revising, expanding too
19:01 whiteknight I don't know how much of a writer you are
19:02 soh_cah_toa i'm actually very good
19:02 soh_cah_toa i'm not english major but i can make a pretty good research project
19:03 PerlJam soh_cah_toa++
19:03 soh_cah_toa must be all that cyberpunk i read :)
19:04 jnthn_ My word, I'd forgotten how totally nuts imcc is...
19:05 bubaflub joined #parrot
19:05 soh_cah_toa oh that reminds me. i've got some low resource machines i can benchmark imcc on
19:05 bubaflub ~~
19:05 davidfetter joined #parrot
19:08 soh_cah_toa would i just run "make benchmark_tests" and send the results to parrot-dev?
19:08 whiteknight soh_cah_toa: I don't think we have a standard place to send those kinds of results to
19:08 whiteknight compile them to post them here in a gist or something
19:09 soh_cah_toa okay
19:09 whiteknight if the numbers are absurd, we can open a ticket to address them. If the numbers look good they will probably just be forgotten
19:09 soh_cah_toa alright
19:10 soh_cah_toa i've got some old machines i could use but could i use a virtual machine as well?
19:10 whiteknight I use VMs sometime
19:10 soh_cah_toa okay and just tinker w/ the amount of ram
19:10 whiteknight although it's hard to get accurate performance benchmarks on a VM that's sharing resources
19:10 soh_cah_toa true
19:11 soh_cah_toa is there any specific os that it hasn't been tested on or not as much?
19:13 whiteknight Windows is the big under-represented system
19:13 whiteknight the BSDs are not tested as well as linux. Solaris also
19:14 whiteknight I gave up on solaris myself after the oracle purchase, and I couldn't get Parrot to install and run tests on the offshoot systems
19:14 whiteknight illumos might be more mature now if you want to test that
19:15 soh_cah_toa good. i've got a windows xp machine i'm building for my mom that be perfect
19:15 soh_cah_toa i pick up all the pc components i can find at my local recycling center so i can experiment w/ ram anywheres from 64mb to 1gb
19:32 ambs joined #parrot
19:41 ambs_ joined #parrot
19:41 ambs left #parrot
19:41 ambs_ is now known as ambs
19:44 ambs left #parrot
19:46 ambs joined #parrot
19:47 dalek tracwiki: v19 | benabik++ | ParrotGSoC2011Students
19:47 dalek tracwiki: Adding links to my proposal
19:47 dalek tracwiki: http://trac.parrot.org/parrot/wiki/ParrotG​SoC2011Students?version=19&amp;action=diff
19:51 pjcj left #parrot
19:51 soh_cah_toa how do i add a link to my proposal on http://trac.parrot.org/parrot​/wiki/ParrotGSoC2011Students ? i've submitted to google-melange and also gist but it's not there for some reason
19:52 whiteknight soh_cah_toa: you have to add it there if you want it
19:52 whiteknight are you set up as an editor for trac?
19:53 soh_cah_toa not yet. i guess that means i should do that
19:53 whiteknight create an account on trac. We'll have to give you permissions to edit
19:54 whiteknight we've been having a spam problem, so we temporarily locked down editing permissions.
19:54 cotto_work whiteknight: have we gotten any wiki spam?  It might be useful to allow authenticated users to edit the wiki.
19:55 whiteknight ah, that's true enough
19:55 soh_cah_toa alright, made an account
19:55 whiteknight brb phone
19:55 soh_cah_toa sure
19:56 cotto_work soh_cah_toa: try editing something.  it should work now
19:57 lucian left #parrot
19:57 rohit_nsit08 left #parrot
19:57 soh_cah_toa it works now. thanks
19:58 lucian joined #parrot
19:58 cotto_work great.  If you get the urge to sell pharmaceuticals from the wiki, I recommend you resist. ;]
19:59 soh_cah_toa haha
20:06 rblackwe I need pharmaceuticals to keep happy til parrot is fully flying.
20:10 soh_cah_toa aww...parrot doesn't make you parrot?
20:10 soh_cah_toa *happy
20:10 rblackwe soh_cah_toa: its existance makes me very happy.  The fact it is not everywhere makes me sad.
20:11 rblackwe I organized
20:11 rblackwe Parrot Virtual Machine Workshop 2009
20:11 rblackwe at YAPC::NA|10
20:12 rblackwe I loves me some parrot
20:12 rblackwe just don't get to play much with it.
20:12 pjcj joined #parrot
20:12 PerlJam rblackwe: you just need to find some excuse for using it at work  :)
20:13 rblackwe true
20:13 rblackwe That is what we need.
20:13 rblackwe Parrot on a wearable defibrillator.
20:13 soh_cah_toa ha
20:14 PerlJam rblackwe: Sure, then we start in on the dead parrot jokes for *real*
20:14 Eduardow left #parrot
20:14 rblackwe hah
20:15 rblackwe At texas linux fest
20:15 rblackwe http://www.aristanetworks.com/
20:16 dodathome left #parrot
20:16 rblackwe was there showing off there switch
20:16 rblackwe They have implimented the cisco commands in python running on linux
20:16 rblackwe Made me think mmmmmm perl 6 grammar for cisoco command set ....
20:17 rblackwe If people were imprsed with "grep" what though I don't think they could handle that.
20:19 dalek tracwiki: v20 | soh_cah_toa++ | ParrotGSoC2011Students
20:19 dalek tracwiki: http://trac.parrot.org/parrot/wiki/ParrotG​SoC2011Students?version=20&amp;action=diff
20:20 rblackwe BTW: we are planning Pittsburgh Perl Workshop
20:20 rblackwe I would love me some parrot folks in the house.
20:23 whiteknight what are the dates? I doubt I can attend, but I never rule it out
20:23 Eduardow joined #parrot
20:23 rblackwe Oct 8-9 at CMU
20:24 bubaflub rblackwe: my employer is a sponsor of PPW, i might be there
20:24 rblackwe and no whiteknight you don't get the sheets off my bed this time
20:24 rblackwe bubaflub: who is that?
20:24 bubaflub rblackwe: Grant Street Group
20:24 rblackwe ah indeed
20:24 rblackwe great sponsor
20:24 bubaflub rblackwe: they take perl very seriously, i'm happy i work there now
20:26 PerlJam bubaflub: I've seen them at YAPC and such, but I really have no idea what GSG does with perl.
20:26 whiteknight rblackwe: wouldn't have been a problem if I had sheets of my own to use
20:26 rblackwe whiteknight: Luckily I had a spare.  I was happy to enable sleep.
20:27 bubaflub PerlJam: websites that host cities / counties taxes, and separate platforms to host auctions for all kinds of things
20:29 bubaflub also, we're hiring :-)
20:31 whiteknight left #parrot
21:04 cotto_work dukeleto: ping
21:07 jnthn_ Finally, I managed to golf an example of the IMCC bug I'm blocking on.
21:07 jnthn_ https://gist.github.com/906525
21:07 * cotto_work prepares for ouch
21:07 jnthn_ foo and bar end up getting allocated the same register, despite being lexicals.
21:08 jnthn_ (the output is "oh no", should be a null PMC access)
21:09 jnthn_ Start removing things or even change register numbers around a bit, and it starts working :/
21:11 cotto_work Can you do it in pasm with explicit register numbers?
21:13 jnthn_ cotto_work: I golfed this from generated code
21:13 jnthn_ cotto_work: as in, generated by PCT
21:14 jnthn_ I doubt it'd be a trivial change to make it use explicit register numbers just for this case.
21:14 jnthn_ Well, maybe it's not so bad. But still...better to fix the issue if possible.
21:15 jnthn_ Especially since we have it down to 17 lines of PIR with no dependencies.
21:16 cotto_work jnthn_: I'm not saying you should work around by using pasm, just asking if a smaller test case is possible using that.  Still, it's a very good test case as is.
21:16 cotto_work jnthn++
21:17 jnthn_ cotto_work: Oh, I see
21:17 jnthn_ cotto_work: I think the bug would disappear then
21:17 jnthn_ cotto_work: As in, I think it's the register allocator that's somehow doing this wrong.
21:17 ambs left #parrot
21:17 jnthn_ It seems to do a bunch of work and then throw most of it away and just use the vanilla allocator...
21:19 jnthn_ I've seen the outcome of the allocation and it's post-allocaiton that it's setting the same register number into the LexInfo for different symbols.
21:28 bluescreen left #parrot
21:32 bacek ~~
21:32 bacek Good morning, humans
21:33 theory left #parrot
21:35 cotto_work good morning, bacek
21:35 bacek aloha, cotto
21:36 cotto_work jnthn_ has an interesting imcc bug with the imcc register allocator and lexicals: https://gist.github.com/906525
21:37 jnthn_ I may also have a completely hacky patch
21:37 bacek cotto_work, oookey. RegAlloc is broken in imcc
21:39 mj41 left #parrot
21:39 jnthn_ It appears to do work and throw it away again. :S
21:41 jnthn_ Here's what I can figure so far. It looks like .lex 'foo', $P0 isn't considered an instruction, but just saying "this lexical goes in this register". If that's the only mention of $P0, then there's no "first instruction". It builds a du-chain, then throws away $P0 from the "needs allocation" list because it confuses it with an unused register due to optimization.
21:42 jnthn_ This patch: https://gist.github.com/906599
21:43 jnthn_ Will make the issue "go away"
21:43 jnthn_ But is potentially sub-optimal and hacky at best, and may result in an infinite loop in the register allocator at the worst.
21:43 jnthn_ It probably explains the issue enough for somebody who knows this area a bit better to make a better patch though.
21:44 bacek seen plobsing
21:44 aloha plobsing was last seen in #perl6 1 days 20 hours ago joining the channel.
21:44 jnthn_ :)
21:44 cotto_work bacek: I agree
21:44 bacek bad luck... I have no idea about IMCC guts.
21:45 cotto_work In the general case I don't think that's bad luck.
21:45 cotto_work In this case it is though.
21:46 jnthn_ The only dangerous part of the patch really is that it might make the quicksort unstable. That is probably easy to deal with.
21:46 jnthn_ But I'm too tired now to do so.
21:48 cotto_work jnthn_: thanks
21:52 jnthn_ cotto_work: http://trac.parrot.org/parrot/ticket/2087
21:52 jnthn_ All the info is in there.
21:52 cotto_work great
21:52 cotto_work jnthn++
21:52 jnthn_ This is a (hard) blocker. I'd hoped to get a bunch of NQP stuff done tonight before I ran into this. :(
21:52 dalek TT #2087 created by jonathan++: Register allocator and lexicals bug
21:52 dalek TT #2087: http://trac.parrot.org/parrot/ticket/2087
21:53 cotto_work jnthn_: does your imcc patch at least let you get back to nqp until we find a proper fix?
21:54 jnthn_ cotto_work: Yes, if applied it seems to deal with the issue.
21:55 jnthn_ cotto_work: It'd be good to get a second opinion (though a less tired me would do ;)) on the patch from somebody who vaguely groks what it's doing though.
21:55 jnthn_ Or at best, understands really well what it's doing :)
21:56 cotto_work ok.  I'll make it a priority to either grok the situation myself or find someone who does.
21:56 jnthn_ OK, thanks.
21:56 cotto_work aloha: clock?
21:56 aloha cotto_work: LAX: Wed, 14:56 PDT / CHI: Wed, 16:56 CDT / NYC: Wed, 17:56 EDT / UTC: Wed, 21:56 UTC / LON: Wed, 22:56 BST / BER: Wed, 23:56 CEST / TOK: Thu, 06:56 JST / SYD: Thu, 07:56 EST
21:57 cosimo joined #parrot
21:59 jnthn_ Guess I should sleep. Night
21:59 cotto_work jnthn_: 'night
22:00 cotto_work msg plobsing Can you take a look at tt #2087 (imcc register allocator bug)?
22:00 aloha OK. I'll deliver the message.
22:24 cosimo left #parrot
22:31 particle joined #parrot
22:34 particle1 left #parrot
22:53 ttbot Parrot dc1985e5 i386-linux-thread-multi make error http://tt.taptinder.org/cmdinfo/63831
22:55 kid51 joined #parrot
23:10 theory joined #parrot
23:18 jrtayloriv joined #parrot
23:20 darbelo ~~
23:21 sorear hello darbelo
23:22 darbelo Hi.
23:37 kid51 left #parrot
23:46 bacek_at_work ~~
23:48 ligne joined #parrot
23:48 dukeleto ligne: howdy
23:48 dukeleto ~~
23:49 ligne hey!
23:55 kid51 joined #parrot
23:56 darbelo left #parrot
23:58 bacek_at_work ~~
23:58 cotto_work As a general principle, I'd encourage mentors to leave comments on Melange in addition to voting.

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

Parrot | source cross referenced