Parrot Sketch - halloween edition

jesse on 2005-10-31T23:58:17

13:09 autrijus: how's the threads speccing been going with liz? 13:09 jesse: very well; collected use cases 13:09 (I conned autrijus and liz into trying to figure out how perl6 concurrency might work ;) 13:09 mostly from her Thread::* 13:09 now if we can get someone to do the same for parrot, we'll be golden 13:09 going to implement the low level abstractions (multiplex, posix threads, stm) 13:09 which all comes for free with GHC 13:10 and then build "is atomic", "is critical", "is throttled" on top of them 13:10 and then rebuild her Thread::* (the ones that are _not_ workarounds for p5 warts) on them 13:10 to test whether the low level abstractions _feel_ correct enough 13:10 the low level ones will be part of S17 13:10 and going to demand that from parrot 13:11 which according to vienna meeting is part of parrot's "vision" anyway 13:11 so should be simple matter of programming. 13:11 see my use.perl journal for some of the basic ideas 13:12 work in progress doc at http://svn.openfoundry.org/pugs/docs/AES/S17draft.pod 13:12 will seek realspace review tomorrow at amsterdam.pm meeting 13:12 cool 13:12 with p5pers such as merijn, tons, juerd, abigail(?) etc 13:12 also, it's "Concurrency" not "Threads" :) 13:12 eog 13:13 er, eof. :) 13:13 Ok. hey. no chip, leo, patrick 13:13 so let's get rolling 13:13 -!- chromatic [~chromatic@sub17-30.member.dsl-only.net] has quit [Quit: Leaving] 13:13 autrijus, what's new that's not concurrent? 13:13 and no chromatic. 13:14 object space, mostly 13:14 basically, porting the YARV instruction set to p5/hs/js/pir 13:14 only the OO-related parts anyway 13:15 problem being parrot, p5, js all got kinda rich OO semantics 13:15 p6 metamodel can build on either of them "natively" but prior experience shows deviant semantics 13:16 hence going to spec out the minimum API required on part of the host runtime to get p6 OO bootstrapped 13:16 think of it as PIL for OO stuff. 13:16 primary note at http://svn.openfoundry.org/pugs/docs/notes/object_space.txt 13:16 s/primary/preliminary/ 13:16 YARV instruction table at http://www.atdot.net/yarv/insnstbl.html and online compiler at http://www.atdot.net/yc/compile 13:16 YC is really good stuff -- recommended for parrot folks 13:17 considering targetting YARV as first tier implementation. 13:17 will review ParrotObject and report mismatches and/or slow parts. 13:17 cool 13:17 (also, "port" YARV OO instruction is not wholesale port) 13:18 and semantics would differ, eg. assigning to an attribute is not done by calling "attr=" method 13:18 but the basic idea is sound. 13:18 eof on that part. 13:18 -!- chromatic [~chromatic@sub17-30.member.dsl-only.net] has joined #parrotsketch 13:18 -!- pmichaud [~chatzilla@c-24-1-26-255.hsd1.tx.comcast.net] has joined #parrotsketch 13:18 autrijus: is that it for you? 13:19 otherwise, not blocking on anything, still comptools.pod in parrot tree would be nice 13:19 and on that note: allison. ;) 13:19 yeah, the rest are p6c stuff, not directly parrot related. 13:20 eof for me :) 13:20 what's new, allison? 13:21 oop, sorry, off looking at other things 13:21 I finished the port of version 0.05 of Luke's Language::AttributeGrammar. 13:21 to PIR 13:22 I made a few changes in the process, such as: made it more purely OO so it's not so dependent on closures, use a coroutine to generate unique ids for the nodes as I traverse the tree. 13:22 http://svn.lohutok.net/nam/trunk/parrot/modules/Language/AttributeGrammar/ 13:22 ooh svn.lohutok.net 13:22 the next steps are to try it out on more complex trees 13:23 including the output from PGE grammars 13:23 I'm tempted to take a detour, though, and fix the problem with Parrot::Test library paths 13:24 I should probably make a journal entry about it 13:24 :) 13:25 also, still need to make draft compiler tools plan public 13:25 (just so you know it's still on my TODO list :) 13:25 next step after more complex trees is to integrate it into Punie 13:25 * jesse has evil plans for todo lists ;) 13:25 I hear a rumor that the compiler tools plan will cause a milestones update to be needed? 13:26 * allison likes jesse's evil plans for to do lists, when do we see code? 13:26 the "and make your todo list public" bit is what's currently missing. 13:26 -!- leo [~lt@feather.perl6.nl] has joined #parrotsketch 13:26 leo! 13:26 hi all 13:26 I'm not sure I want to subject the perl 6 dev team to my beta toolset ;) 13:26 using RT for todo lists is probably saner for now 13:26 meeting early today ;-) 13:27 I'm here too .. since Leo jumped in 13:27 jesse: well, the original milestones called for one level of AST and we now have two, I'm not sure that's a big enough change to be significant 13:27 timezones-- 13:27 leo: http://perlcabal.org/user/autrijus/tmp/today.tmp.txt 13:27 patrick had said something about your compiler tools plan replacing a chunk of the milestones

(no chat topic is set) [1:27pm] Nicholas: I'm unconvinced of a need to stick to the old GMT time. [1:27pm] allison: jesse: lemmie look at them... [1:27pm] jesse: I'll take commentary on meeting time by email [1:27pm] jesse: allison: first: blocking on anything? [1:27pm] jesse: if not, I'll move on to harassing others [1:28pm] allison: jesse: all the work I'm doing falls in milestone 2 [1:28pm] allison: though, I wouldn't necessarily call it "Parrot AST" now. [1:29pm] allison: re: "blocking" on Parrot::Test [1:29pm] jesse: ok [1:29pm] jesse: but that's an allison-fixes, not an out-of-allison's-hands, right? [1:30pm] allison: I can't write tests for any non-core libraries because test code reads all paths as being relative to the location of Parrot::Test in the working copy of parrot [1:30pm] allison: it could be either allison-fix or, someone else fix [1:31pm] chromatic: Or "don't write non-core libraries outside of the Parrot tree", as in a technical bias for a cultural issue. [1:31pm] allison: depends on how itchy I get about the limitation [1:31pm] chromatic: Just bringing up a final possibility, not suggesting that's the right approach. [1:31pm] jesse: ok. [1:31pm] allison: but that's strange, I mean, yes we should install libraries in a standard location [1:32pm] allison: but, for testing we shouldn't have to install them [1:32pm] allison: (want to test before install) [1:32pm] chip: Parrot::Test shouldn't impose that kind of diretory tree requirement. If nothing else you might want to have multiple Parrot installs with different build options [1:32pm] chromatic: Agreed. Eventually it needs fixing. [1:33pm] Tweety joined the chat room. [1:33pm] Tweety: Hi there. I am Tweety. I am now publically logging this channel. If you don't want to be logged, please leave now. [1:33pm] chip: allison: You'd probably find a quick volunteer if you wrote a p6i message with a provocative subject ("Help save Allison's world") [1:33pm] jesse: Gee, thanks, tweety. [1:34pm] allison: chip: ok, I'll do that, thanks [1:34pm] jesse: cool. [1:34pm] jesse: who should I pick on next? [1:34pm] • chip waves his hand ... better to jump than get pushed [1:35pm] pmichaud: makes it easier to control the fall [1:35pm] chip: Actually got some good time over the weekend. THe lexical picture is shaping up. [1:35pm] jesse: cool [1:35pm] chip: I know I've been mumbling about this for a while, but this time I even got a good picture for closures. [1:36pm] chip: Short versoin: the interface for lexicals conforms to Hash, and for Tcl, they actually will be in a Hash. (Tcl is ... hardly compilable) [1:36pm] pmichaud: yay! [1:36pm] pmichaud: chip, that is *exactly* what I was wishing for this weekend [1:36pm] chip: Perl6 lexicals will be more like a pseudohash (and the shade of Graham smiles) [1:37pm] chromatic: Everyone else grimaces. [1:37pm] chip: The key/value translation belongs to the Sub, while the array thus indexed (the pad) belongs to the call frame [1:37pm] autrijus: actually I wrote Class::PsuedoHash. I like them. [1:37pm] • mdiep is just happy that chip has taken Tcl into consideration [1:37pm] chip: They're actually a useful abstraction [1:38pm] chip: anyway: I think we can get a leg up on Perl 5 closures. [1:38pm] chromatic: Agreed, I'm just interrupting. Sorry. [1:38pm] chip: In perl 5, eval STRING in a closure can't see any variables that its outer subs didn't specifically mention. I'd rather just capture all the outer pads at closure creation time. [1:39pm] chip: But is that a bad thing WRT object lifetime? [1:39pm] chip: (maybe this is a question period. autrijus think about it) [1:39pm] autrijus: chip: of course that is the way to go. [1:39pm] chip: autrijus: good. so much for that question [1:39pm] autrijus: and I think p6 depends on that as well [1:39pm] chip: Perl 5 doesn't capture all the pads, just the specific variables it's seen [1:40pm] autrijus: as far as I can remember from larry's %MY:: and %OUR:: rants in yapctoronto [1:40pm] autrijus: so pugs is snapping all pads in all its runtimes [1:40pm] autrijus: cool if parrot does that. [1:40pm] chip: ok [1:40pm] pmichaud: I agree, this will be cool [1:41pm] chip: OK then. My key resource is continued free time. Looking promising. [1:41pm] chip: ^Z [1:41pm] jesse: ok. matt? [1:42pm] jesse: wait. blocking on anything, chip? [1:42pm] chip: jesse: the 'resource' comment was meant as an answer to that: "no" [1:43pm] jesse: ok. [1:43pm] jesse: matt, then [1:43pm] mdiep: I finally figured out Tcl's lexical issues this week: Eval'ing in PIR returns a closure. [1:43pm] mdiep: Leo was kind enough to provide a way to get to the underlying Sub PMCs [1:43pm] mdiep: so those issues are still fixed [1:43pm] mdiep: err, s/still // [1:44pm] mdiep: we are still blocking on unimplemented functions in charset/unicode.c, however [1:44pm] jesse: who needs to implement those? [1:44pm] jesse: are there tests for them? [1:45pm] mdiep: I'm afraid I don't know much about those failures. coke reported them to me. [1:45pm] autrijus: oh, PGE for nonascii stuff for pugs has been blocking on those too [1:45pm] autrijus: I committed stubs and leo fixed my broken C code [1:45pm] autrijus: but many XXXs are left [1:46pm] pmichaud: mdiep: do you know which specific functions you need? [1:46pm] mdiep: pmichaud: no, I don't. but I could probably compile a list, given a little time. [1:46pm] pmichaud: mdiep: that would probably be helpful. I know that PGE is now currently blocking primarily on the find_cclass ops [1:47pm] mdiep: I'll try to compile a list and send it to p6i [1:47pm] jesse: cool. [1:47pm] jesse: Anything else good in the tcl world? [1:48pm] mdiep: not directly tcl, but I'm also waiting for chip to get back to me about my latest namespace spec draft [1:48pm] mdiep: other than that, no. [1:48pm] jesse: cool [1:48pm] chip: a-firmative [1:48pm] jesse: patrick? [1:49pm] pmichaud: it's been a very busy week for me with parrot stuff [1:49pm] pmichaud: last week I checked in the initial version of a shift-reduce parser, and a few examples in the examples/pge directory [1:49pm] pmichaud: since then I've converted PGE to now use the shift-reduce parser for parsing perl 6 rule expressions (instead of the previous rec-descent parser) [1:49pm] pmichaud: this also changes a number of the internal interfaces, but all for the better; it's a massive cleanup [1:50pm] pmichaud: as a result, the perl 6 rules code is now 30% smaller (was 2100 lines, now 1500 lines) [1:50pm] autrijus: (benchmarked? [1:50pm] pmichaud: not to mention it should be faster [1:50pm] pmichaud: I haven't benchmarked it, no, but there's a TODO item in RT for that [1:51pm] autrijus: nice [1:51pm] pmichaud: one big benefit is that PGE can now be used to parse perl 6 rule expressions; i.e., will parse out a valid perl 6 rule expression [1:51pm] pmichaud: this makes it easy to embed in grammars [1:52pm] pmichaud: I've also added the ability to define custom rules (for allison) and next I'll be implementing lookahead and closures [1:53pm] jesse: cool. [1:53pm] pmichaud: checkin is simply waiting for me to get everything sync'd up with the new code interfaces and make sure all the tests pass again [1:54pm] allison: awesome! [1:54pm] jesse: anything you're waiting on? [1:54pm] pmichaud: the biggest thing blocking me at the moment is the need to occasionally sleep [1:54pm] jesse: ice [1:54pm] jesse: nice [1:54pm] jesse: though I hear they have drugs for that. [1:54pm] pmichaud: the other thing we'll have is a nice rich set of trees (and desired transformations) that could serve as test cases for the attribute grammar code [1:55pm] pmichaud: in particular, p6rules could serve as an example, since it has to go from parse tree -> semantic tree -> optimizations -> code gen [1:55pm] autrijus: we have... a tree and AG rules for haskell [1:56pm] autrijus: (it's the place luqui copied the L::AG from) [1:56pm] autrijus: i.e. UUAG/EHC [1:56pm] pmichaud: indeed [1:56pm] pmichaud: so, I'm just continuing on that, and will update the milestones document (again) in a day or two when the new changes are folded in [1:57pm] pmichaud: leo provided some important improvements last week that enabled all of this (thanks again, leo) [1:57pm] pmichaud: $ [1:57pm] jesse: ok. leo? [1:57pm] leo: .local string report= <<"ZZ" [1:58pm] leo: var-regs hit finally the trunk [1:58pm] leo: all is owrking as expected [1:58pm] chip: *applause* [1:58pm] autrijus: *applause* [1:58pm] autrijus: leo++ leo++ leo++ [1:58pm] Nicholas: cool [1:58pm] leo: I had to rewrite tailcall argument passsing a bit [1:59pm] leo: it's not quite trivial to move arge form a->b, when the register structure changed under that [1:59pm] leo: currently an intermediate array holds arguments [1:59pm] leo: and 2 passes are done [2:00pm] leo: but the nice thing is: this is all statically known at compiletime and can be optimzed [2:00pm] leo: i.e if there would be a conflict moving arguments for the sub [2:00pm] leo: today I ci'ed [2:01pm] leo: r9677 | leo++ | trunk: [2:01pm] leo: 13:59 <+svnbot6> : Variable-sized reg frames 17 - no register limits [2:01pm] leo: * enable 'spill' tests - no spilling of course: [2:01pm] leo: 13:59 <+svnbot6> : new P60, .Integer # yeah [2:01pm] leo: the PIR line is from one of the tests [2:02pm] chip: cool [2:02pm] leo: ZZ [2:02pm] autrijus: oh I updated wikipedia "Parrot" [2:02pm] autrijus: so it no longer talk about I31 [2:02pm] leo: great - thanks [2:03pm] autrijus: [2:03pm] jesse: blocking on anything, leo? [2:03pm] leo: not yet - more cleanup will follow, then is release time [2:03pm] leo: next week a lexical PDD would be nice [2:04pm] jesse: ok. matt? [2:04pm] leo: ah - I forgot one: rafl has debianized Parrot [2:05pm] mdiep: jesse: again? I already went [2:05pm] jesse: oops [2:05pm] jesse: sorry [2:05pm] jesse: chromatic? [2:06pm] chromatic: Lots of little things -- Nick's patch, looking at the configure system, porting parts of Parrot::Test to PIR. [2:06pm] chromatic: I was traveling last week so I didn't have much time. Hopefully this week will be easier. [2:06pm] allison: ah, so I may not even need to mess with the library paths, nice [2:06pm] chromatic: It depends on when you need them. [2:06pm] allison: aye [2:07pm] chromatic: At some point I would also like a sane way to write tests for PIR code (not Parrot), much like Perl 5's bootstrapping tests in t/op. [2:08pm] allison: yeah, that would be good [2:08pm] chromatic: As far as I see now, that's partly cultural, partly a path issue, and partly a "What are the minimum bits we can rely on to write the basic tests?" [2:08pm] chromatic: Of course, it's awfully hard to test some of the libraries I've written... but I suspect we can fake out NCI at some point sometime. [2:09pm] chromatic: I'll probably have more questions about library loading and initialization in the future. It feels somewhat incomplete yet. [2:09pm] chromatic: That's about it. I'm blocking on time and attention span. [2:10pm] jesse: ok [2:10pm] jesse: who'd I miss? [2:10pm] Nicholas: me [2:10pm] jesse: oop [2:10pm] jesse: nick. what's new? [2:10pm] Nicholas: not a huge amount. Failed to get attention span. [2:10pm] Nicholas: I did apply my tweaked version of chromatic's patch [2:11pm] Nicholas: I've not yet gone for a dig to remove the old names in extend.c, and all the files using them in the parrot tree [2:11pm] leo: Nicholas: rafl has cleared dups already [2:11pm] Nicholas: Stig noticed that ponie failed to build today. For some reason now I need libparrot before libponie (to get Parrot_PMC_push_pmc) and afterwards (to give libparrot the parrot config object) so I tweaked the linker line [2:11pm] Nicholas: rafl++ [2:12pm] Nicholas: Leo was kind enough to get 2 of the things I mentioned last week done within hours. [2:12pm] Nicholas: leo__ [2:12pm] Nicholas: leo++ [2:12pm] Nicholas: oops [2:12pm] leo: hashes this week [2:12pm] Nicholas: but he didn't have time for the hash.c change, and I found the source code somewhat daunting to try to understand (cold), so didn't manage to find the calm time to deal with it [2:12pm] Nicholas: I think that that's where I am. [2:13pm] jesse: cool [2:13pm] Nicholas: I seem to be mostly blocking on my ability to get into the right state of mind. Plus work scheduling is not idea - in theory as soon as something I'm blocking on on the staging evironment unblocks, I need to deal with my part of it (at high priority). And I find that unsettles me [2:14pm] Nicholas: I think that's it. [2:15pm] jesse: less cool [2:15pm] jesse: anything else? questions? [2:16pm] Nicholas: Yes. I don't have a good idea of how much time I have, and I find that if I'm not sure i've got 'large wooly amount of time' I don't want to start. Happened this morning where I (deliberately) got up at DST time, and then found that I couldn't really use the extra hour. I might as well go into work, and get the commuting disturbance out of the way. [2:16pm] chip: I have an interface question to float (PIR and lexicals) [2:17pm] chip: (n/m I thought he meant for everyone) [2:17pm] Nicholas: so did I [2:17pm] chip: Nicholas: I'm finding the trick to be relaxing a little. Go into Pogo mode [2:17pm] jesse: Idid [2:17pm] jesse: sorry. [2:18pm] jesse: go for it chip [2:18pm] Nicholas: Pogo mode? [2:18pm] chip: "Don't take {life,Ponie} so serious. It ain't nohow permanent." [2:18pm] chip: is all PIR going to be associated with a registered HLL? [2:18pm] • chip supposes the answer is 'no' [2:18pm] allison: no [2:19pm] allison: (that is, confirmed, the answer is 'no') [2:19pm] leo: no registered HLL means native parrot semantics I presume [2:19pm] chip: and so lexical policies can be defaulted by HLL, but not tied exclusively to it. Right. [2:19pm] chromatic: A LexPad PMC for each HLL? [2:20pm] chip: chromatic: it seemed a convenient place to put the default, if there was to be one. Yes [2:20pm] leo: it's like a TclInteger which is different [2:20pm] jesse: I need to actually pay full attention to something else [2:20pm] jesse: thanks everybody. I'll grab logs a bit later. [2:20pm] jesse: sorry to have to bail. [2:20pm] jesse: keep asking questions [2:20pm] chip: cya [2:20pm] leo: thanks jesse [2:20pm] Nicholas: thanks jesse [2:21pm] chip: [ditto] [2:21pm] autrijus: thanks [2:22pm] chip: The only complication (such as it is) is that I'd _prefer_ not to have to create a new FooPad PMC for languages where the pad is just a Hash (e.g. Tcl). But it seems I'm going to have to do so, if only so the init methods can be unfiied [2:22pm] chip: unified [2:22pm] chip: in their interface, that is. [2:22pm] chip: See, a Perl6LexPad init method will need to know the Sub it's from, so it can find the key/value pairs. But a Tcl pad can just be a Hash ... but a plain old Hash init method doesn't expect to find a Sub parameter. [2:23pm] chip: And the naive [2:23pm] chip: "add a level of indirection" solution starts to look bad when it's happening on every function entry. But some optimizations can wait. [2:23pm] leo: I think there will be still a FooPad, and if it's just for it's type name [2:24pm] leo: (if a FooPad is needed of course) [2:24pm] chip: you mean, all pads being named *Pad is a good thing, even if their implementations are thin? [2:24pm] leo: like a TclFloat which afaiks inherits all from Float [2:25pm] chip: ah, now I see what you meant. [2:25pm] chip: That's a good argument, thanks [2:25pm] chip: EOQ [2:25pm] chromatic: Sometimes names aren't just names. [2:25pm] chip: that's what my Mom said when she named me "Stinky" [2:26pm] chip: ... so, who's up next? questions? anyone? [2:26pm] chip: Bueller? [2:26pm] • autrijus ponders Float::Tcl [2:26pm] allison: Question: should I just put the tree transformation stuff in the Parrot repository? [2:26pm] chromatic: Is there still an event system/ [2:26pm] autrijus: [2:26pm] autrijus: allison: now I've discovered svn.lohutok.net I'll point people to it if you don't commit them to parrot tree [2:27pm] autrijus: so to reduce your server load, committing them is probably wise *smile* [2:27pm] allison: Putting it in parrot is the simplest way to solve my immediate problem with library paths so I can write tests. [2:27pm] leo: allison: I think it's as core as PGE is, so yes [2:27pm] allison: It will still change radically over the next month or two, which is why I hesitate, but it is at least useful now. [2:27pm] pmichaud: allison: I vote yes [2:27pm] pmichaud: allison: it's okay if it changes radically -- PGE has done the same [2:27pm] allison: then where? compilers/tte? (Tree Transformation Engine) [2:27pm] allison: (Resisting the urge for a Psittacus joke: Parrot Standardized Interface for Tree Transformations: Abstract, Concrete, and Unnecessarily Silly... [2:27pm] chip: allison: I wouldn't do it if that's the reason. But don't hesitate to show work in progress. And any API changes are liekly to get automagically fixed in your code if it's in svn [2:27pm] leo: allison: all is changing more or less - ci early ci often [2:28pm] autrijus: allison: comptools.pod too [2:28pm] allison: autrijus: okay [2:28pm] pmichaud: compilers/tte works for me, although I've been thinking that some prototyped tools can start out in examples/ and then move to their proper location when they become less "example-ish" and more "developed-ish" [2:28pm] chip: allison: Never miss a chance to give in to temptation [2:29pm] autrijus: pmichaud: er but languages/* is all prototypes anyway [2:29pm] autrijus: s/all/mostly/ [2:29pm] autrijus: so why should compilers/ differ? [2:29pm] pmichaud: autrijus: I don't disagree [2:29pm] autrijus: maybe a COMPILERS file? [2:29pm] autrijus: er .STATUS [2:29pm] autrijus: same style as LANGUAGES.STATUS [2:30pm] allison: okay, how's this: I'll push it to the point that it's transforming PGE trees, then check it in as compilers/tte [2:30pm] leo: pmichaud: can you ci the 'newsub' removal code? I'll drop that opcode very likely tomorrow [2:30pm] autrijus: I'd still rather you just commit it -- if only for my sanity of not chasing more svk mirrors [2:30pm] pmichaud: leo: My new version drops 'newsub' -- it should be ci'd in a few hours -- as soon as I can finish debugging tests [2:30pm] leo: great - thanks [2:31pm] allison: EOQ [2:32pm] • leo is seeing forward allison increasing her purl karma by a steady flow of svnbot6 reports [2:32pm] autrijus: yes, go for the karma [2:33pm] allison: lol [2:34pm] autrijus: ...and I just mentioned svn.lohutok.net's existence on #perl6 [2:34pm] autrijus: (to integral, who has been dying to see them) [2:34pm] allison: I'm just about to post a journal entry I've been writing during the irc session too [2:34pm] autrijus: woot [2:35pm] autrijus: allison++ [2:35pm] leo: chip: I small (and premature) lexical Q: are we doing new .Undef the lexicals? [2:37pm] chip: ah. [2:39pm] chip: I was planning not. I was planning that they'd be null PMCs on creation. (Though a customized Pad could of course do something else) [2:39pm] leo: okie - PMCNULL is fine [2:39pm] leo: (for me) [2:39pm] pmichaud: I think I prefer pmcnull [2:39pm] chip: Reason being, I imagine that the PMC being null could be a convention that the given variable is out of scope [2:40pm] chip: consider sub foo { eval '$x'; my $x } [2:40pm] leo: or used unitialized - that's the perl5 runtime thingy w/o strict afaik [2:41pm] chip: Hm, I think that's a kind of .Undef [2:41pm] chip: but anyway, null is easier & seems OK [2:41pm] chip: (&faster) [2:41pm] leo: you can assign to .Undef, doing that with .Null throws an exception [2:42pm] chip: yeah, that was my point - sub foo { eval '$x = 1'; my $x } should throw [2:42pm] leo: (but that's just a matter of an appropriate exception handler - I'm still for .Null) [2:42pm] chip: } // answer [2:43pm] leo: thanks [2:45pm] chip: allison: are you the new boss, even though you're the old boss? [2:45pm] chip: seems like we're kind of done [2:45pm] allison: chip: okay, we're done [2:45pm] allison: Yeah, I [2:45pm] allison: I'm working my way out of boss duties [2:45pm] chip: I'll adjourn to #parrot then [2:45pm] chip: thanks all [2:46pm] leo: bye all [2:46pm] leo left the chat room. [2:46pm] chromatic left the chat room. (Quit: Leaving) [2:46pm] pmichaud left the chat room. [2:47pm] autrijus: bye [2:47pm] autrijus left the chat room. [3:11pm] allison left the chat room. (Quit: Leaving) [6:33pm] mdiep left the chat room. (Quit: mdiep)