Camelia, the Perl 6 bug

IRC log for #parrot, 2009-11-25

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:06 bogen joined #parrot
00:12 kiwichris joined #parrot
00:25 cotto_work Yay!  Short day for me tomorrow.
00:27 payload joined #parrot
00:57 abqar joined #parrot
01:40 dalek tpfwiki: Drake | PMC Documentation Guidelines
01:40 dalek tpfwiki: http://www.perlfoundation.org/parrot/i​ndex.cgi?pmc_documentation_guidelines
01:45 dalek parrot-plumage: 26e322f | japhb++ | :
01:45 dalek parrot-plumage: [METADATA] New tcl-bridge project, vadrer++
01:45 dalek parrot-plumage: review: http://gitorious.org/parrot-plumage/parrot-plumag​e/commit/26e322fc7bb648a95646440414763c7a71dc19f7
01:50 japhb With that commit, Plumage is up to 20 projects in its metadata repo
01:50 japhb w00t!
02:06 cconstantine joined #parrot
02:29 JimmyZ joined #parrot
02:40 gaz joined #parrot
02:51 Coke pmichaud: looks like "make test" is dumping a lot of debug output.
02:51 nopaste joined #parrot
02:52 Coke ah, found it.
02:56 Coke nqp-rx docs?
02:56 Coke nqp-rx?
02:56 purl nqp-rx is http://github.com/perl6/nqp-rx
03:02 * Coke tries to find the list of register types that you can use to modify a pirop in nqp...
03:04 Coke nqpdocs?
03:05 Coke nqpdocs is https://trac.parrot.org/parrot/wiki/NQPDocs
03:09 Coke pmichaud++ # partcl-nqp commits.
03:11 * Coke finds the send to the irc log about types and adds it to the wikidocs.
03:11 nopaste joined #parrot
03:12 dalek tracwiki: v7 | coke++ | NQPDocs
03:12 dalek tracwiki: https://trac.parrot.org/parrot/wiki​/NQPDocs?version=7&action=diff
03:14 ZeroForce joined #parrot
03:15 * Coke tries to figure out what's wrong with:
03:15 Coke our sub list(*@args) {                                                           return @args;
03:15 Coke }
03:15 purl } is a brace
03:16 Coke purl: no, } is <reply>
03:16 purl okay, Coke.
03:16 Coke that should take something like list(1,2,3) and return a list with 3 elements, neh?
03:27 brrant joined #parrot
03:30 lucian joined #parrot
03:35 Coke Hey, you know what would be great? if an array stringified to the number of elements in it. :P
03:35 Coke pmichaud: ping.
03:37 cotto It numifies to that.
03:39 Coke cotto: it also stringifies to it.
03:39 Coke (which is most unhelpful. =-)
03:40 cotto Ah.  My sarcasm detector was broken.
03:42 cognominal_ joined #parrot
03:48 Coke so writing [list] is trivial, but it's useless. =-)
03:53 Coke can Classes in NQP override parrot vtables?
03:57 pmichaud at present, nafaik
03:57 pmichaud I've been thinking about doing that
03:57 Andy joined #parrot
03:58 Coke pmichaud: I need a way to override RPA or use an HLL map so I can get something reasonable on stringification.
03:58 Coke any clues?
03:58 purl Dee Dee Dee!
03:58 Coke thanks, Carlos.
03:59 bogen #646 (const STRING problems) – Parrot <https://trac.parrot.org/parrot/ticket/646> hmmm....
03:59 pmichaud well, we can get stuff to appear in a 'tcl' hll namespace
03:59 bogen I think I can tackle this
03:59 pmichaud and then you could map
03:59 pmichaud er, hll_map
03:59 Coke pmichaud: (tcl hll namespace) perfect.
03:59 pmichaud (RPA stringification)  -- yeah, that's a royal pain.
03:59 Coke then I can just use my tcllist class.
03:59 pmichaud I keep running into that problem often
04:00 Tene pmichaud: i'm converting my scheme compiler over to nqp-rx, and I have a few questions...
04:00 pmichaud 02:51 <Coke> pmichaud: looks like "make test" is dumping a lot of debug output.
04:00 pmichaud ...is it still doing that?
04:00 pmichaud Tene: shoot
04:00 Coke I didn't push fix yet.
04:00 ZeroForce joined #parrot
04:00 pmichaud yeah, I might've left some debugging in there.  I was trying to get a commit in place before having to leave
04:01 Tene 1) when I use quote_EXPR, I get the delimiters included.  Am I doing something wrong, or am I supposed to just pull out the quote_atom directly?
04:01 Coke pmichaud: pushed.
04:01 Coke quite alright. =-)
04:01 pmichaud Tene: if you stringify quote_EXPR, you get the delimiters, yes.
04:01 pmichaud but if you ask for the .ast, you get the actual string inside the quotes
04:01 pmichaud including automatic conversions of any \n, \x, etc.
04:01 pmichaud in other words,  ~$<quote_EXPR>  is what was parsed
04:02 Tene Hmm.  I don't think I'm doing that anywhere, but I'll check again.
04:02 pmichaud $<quote_EXPR>.ast is the value of what is parsed
04:03 Tene 2) Looks like nqp-rx doesn't use {*} #= key, right?  So how do I do setup and teardown for blocks?  Converting over code that uses #= begin, #= end.
04:03 pmichaud nqp-rx does still have {*} #= key... it's just not needed.  As TimToady++ says -- anywhere that uses {*} is a bit of a design smell
04:04 pmichaud look for #= in NQP's grammar and you'll see it still being used for block setup and teardown
04:04 Tene What's the recommended way to do that?
04:04 pmichaud (and afaik that's the _only_ place it's being used)
04:04 pmichaud to do... what?
04:05 Tene Eh, I guess I'm asking a bad question. :)
04:05 pmichaud just couldn't reliably map "that" to a concept :)
04:06 Tene steme has several action methods that make a new block and push it onto a global @BLOCKS before going through the block, and then pops off afterward.
04:06 pmichaud we still do the same in NQP
04:07 pmichaud eventually I think that global @BLOCKS should be a dynamic variable
04:07 pmichaud (for re-entrancy into the compiler)
04:07 Tene right.
04:07 pmichaud in NQP we've also pretty much moved "make a new block" into a single rule -- blockoid
04:08 pmichaud which handles pretty much anything that acts like a block
04:08 pmichaud oh, wait, that's not it.
04:08 Coke pmichaud: any pointers on adding a HLL to partcl-nqp?
04:08 pmichaud in NQP we have a special rule  <.newpad>  that creates a new block
04:08 Coke is it just as simple as adding a .HLL directive in the .pir startup?
04:09 pmichaud then any rule that needs a new block simply does <.newpad> to push a new block onto @BLOCKS
04:09 pmichaud Coke: that's the first half
04:10 pmichaud the other half is that the two PAST::Block.new lines in Actions.pm need to have :hll<tcl> added to them
04:10 Tene pmichaud: Looks like my confusion was coming from the method also being called without {*}, so there was no $key in some invocations.
04:10 pmichaud Tene: that's correct.
04:11 pmichaud Coke:  adding :hll<tcl>  will cause any dynamically-compiled blocks to also appear in the 'tcl' hll namespace
04:11 Tene Okay, this should work. :)  Thanks.
04:12 cognominal joined #parrot
04:13 nopaste "coke" at 72.228.52.192 pasted "like this?" (32 lines) at http://nopaste.snit.ch/18845
04:13 Coke (Parent isn't a Class.
04:13 pmichaud oh, ick.
04:14 pmichaud okay, it's not quite that simple.  :-(
04:14 pmichaud the problem being that the PAST:: types aren't in the tcl hll namespace.
04:14 pmichaud (nor should they be.)
04:15 pmichaud in rakudo we work around this problem by importing the PAST types into the Rakudo hll
04:16 pmichaud that's not a long-term solution
04:17 pmichaud Ideally I'd like to find a clean (Perl 6 compatible) way to refer to hll namespaces using p6 syntax
04:17 pmichaud I also think that the compiler grammar and actions probably belong in a hll private namespace
04:18 Tene +1
04:18 purl 1
04:18 pmichaud but I fear there are a few pieces left to work out between here and there.  :|
04:19 Tene I've been thinking about that again recently.
04:19 Tene I'm pretty confident I can get there.
04:19 Coke ok. In the meantime, I just need to not be using RPA for my arrays. is there a shortcut?
04:19 pmichaud not an easy one that I know of at the moment, since RPA's are the default for :slurpy
04:20 pmichaud I suppose we could copy into some other structure, though.
04:20 pmichaud Tene: I'm more concerned about syntax than mechanics at this point
04:20 pmichaud Tene: I'm guessing we'd need to do something like   Hash:from<parrot>
04:21 cognominal joined #parrot
04:21 cognominal_ joined #parrot
04:22 Tene pmichaud: we could just import the namespace... use Hash:from<parrot>;
04:22 Tene There's syntax for specifying a different name to install it as locally, just don't remmeber.
04:22 pmichaud Tene: that sounds like it should be 'import' instead of 'use', though.
04:22 Tene use Hash:from<parrot>:as<ParrotHash>;
04:22 Tene Probably.
04:24 pmichaud also,  "use" probably wants to do a "load_bytecode" of some sort, in general.
04:25 pmichaud or a "load_module" on a compiler object.
04:26 pmichaud Coke: if you don't PAST polluting the hll namespace (which it technically already is in partcl-nqp), we could repeat the same trick that Rakudo uses for now
04:26 Tene pmichaud: Yes, and the compiler object is free to do as it wishes.  I'd expect the 'parrot' compiler object to look at the Hash namespace, find stuff already there, and just return that.
04:26 pmichaud that would get you type mapping.
04:27 pmichaud Tene: maybe.  Even so,  in the specific case of Hash there's not really a Hash namespace to be imported :)
04:27 pmichaud although perhaps 'parrot' would be smart/nice enough to give you a Hash protoobject in your namespace :)
04:28 nopaste "tene" at 24.10.252.130 pasted "quote_EXPR issue for pmichaud++" (15 lines) at http://nopaste.snit.ch/18846
04:28 pmichaud s/if you don't/if you don't mind/
04:28 Coke (same trick) yes, that's fine for now.
04:28 Coke without it, big chunks of partcl will fail.
04:28 Tene pmichaud: I'm definitely calling .ast there instead of stringifying the match object, right?
04:28 pmichaud Tene: where's the rule that calls it?
04:28 pmichaud Tene: yes, you are.
04:29 Coke pmichaud: please +1 on TT #1332 if you like.
04:29 Tene token quote:sym<dblq> { <?["]>            <quote_EXPR: ':qq'> }
04:30 pmichaud Tene: is there somewhere I can easily see the full grammar?
04:30 nopaste "tene" at 24.10.252.130 pasted "full grammar" (121 lines) at http://nopaste.snit.ch/18847
04:31 dalek TT #1332 created by coke++: change get_string on FPA, RPA (et al?)
04:31 kthakore_ joined #parrot
04:31 pmichaud Tene: ...and perhaps the actions?
04:31 nopaste "tene" at 24.10.252.130 pasted "the actions" (267 lines) at http://nopaste.snit.ch/18848
04:32 pmichaud aha
04:32 pmichaud class Steme::Grammar::Actions;
04:32 pmichaud you probably want to inherit  HLL::Actions
04:32 pmichaud otherwise you aren't getting the actions for quote_EXPR and the rest
04:33 pmichaud in the latest version fo NQP (that I pushed 5 hours ago),   .ast returns Undef instead of the matched string (recent spec change to S05)
04:33 pmichaud *of
04:33 Tene pmichaud++ :)
04:34 pmichaud also, in your grammar, you probably want to get rid of the various {*}'s that are there
04:34 pmichaud otherwise your actions get called twice
04:34 Tene Yes.
04:34 Tene I now pass several test files. :)
04:34 pmichaud I would definitely refactor the various   {*} #= begin   into a   <.newblock> subrule or something like that
04:35 pmichaud then you no longer need the {*} #= end and can just use the default :)
04:35 * Coke sighs.
04:35 Coke I fixed up [incr] so it didn't error out on MMD. now it doesn't actually update the var.
04:35 Coke I can't seem to make it do both. =-)
04:38 pmichaud Coke: I'll do the hll switch momentarily
04:38 pmichaud need to close up a few things here first... bbi10
04:38 Coke pmichaud++
04:38 Tene pmichaud: in <let>, for example, I need to set up a block, and then I also need to add things to the start of it and put things in its symbol table before parsing the actual block... that's specific to let, so should I also create a rule to do that?  <.newblock> <.letsig> ?
04:44 Coke *doh* incr is working fine, it's global that's not doing what I expect.
04:46 Coke looks like the global is taking a /copy/ of the global, not an alias to it.
05:03 Coke pmichaud: added a new todo which is hopefully a simple grammar update. (I tried to account for that whitespace and failed.)
05:03 gaz joined #parrot
05:04 dalek partcl: 57ab809 | (Will Coleda)++ | t/tcl_misc.t:
05:04 dalek partcl: Fix misc parsing test.
05:04 dalek partcl: (comment was right, but test duplicated previous test.)
05:04 dalek partcl: review: http://github.com/partcl/partcl/commit/5​7ab8098e3fa59985fe15e91f93b76198dfd2c4b
05:07 pmichaud back
05:12 * Coke wonders why partcl-nqp isn't showing up in dalek's feed.
05:14 Coke tene, did the tests for try not make it in?
05:15 pmichaud Coke: I think it's a feed per repository
05:15 pmichaud so the partcl/partcl repository is separate from partcl/partcl-nqp
05:15 Coke pmichaud: yah, i added that.
05:15 pmichaud hmm, I don't know then.
05:15 pmichaud I just pushed the hll_map changes.
05:16 Tene Coke: I never wrote tests for try.
05:16 Coke ah.
05:17 pmichaud there was some try examples in a nopaste but tests didn't make it in yet.
05:17 pmichaud *were
05:17 Coke tene, can you renopaste the same?
05:17 Coke "sample"?
05:17 nopaste "tene" at 24.10.252.130 pasted "try in NQP for Coke++" (27 lines) at http://nopaste.snit.ch/18849
05:18 nopaste "tene" at 24.10.252.130 pasted "expected output" (8 lines) at http://nopaste.snit.ch/18850
05:18 Coke and no catch yet, yes?
05:19 pmichaud Coke: (new todo)  -- doesn't appear to have been pushed
05:19 Tene Coke: That's right.
05:19 Tene Coke: I'll go add catch now, I guess.
05:20 Coke pmichaud: done.
05:20 Coke basically, "exit ; " should work.
05:20 Tene pmichaud: I'll trade you CATCH for showing me what a refactored 'let' or 'lambda' would look like in steme: http://github.com/tene/steme/tree/master/src/pct/ ;)
05:31 pmichaud Tene: that'd be an excellent trade, but I seem to be fading quickly here
05:32 dalek parrot: r42802 | pmichaud++ | trunk/compilers/pct/src/PAST/Compiler.pir:
05:32 dalek parrot: [pct/past]:  Allow :pirop<opcodesig> as well as :pirop<opcode sig>.
05:32 dalek parrot: Add 'find_dynamic_lex' opcode to piropsig table.
05:32 dalek parrot: review: https://trac.parrot.org/parrot/changeset/42802/
05:32 Tene pmichaud: I'm just about done.  Compiling and testing...
05:34 pmichaud Coke: whitespace before command separator should now be fixed.
05:34 Coke pmichaud++ # hll conversion
05:34 Coke I have a fix for set a [list 1 2 3]; puts $a
05:37 Coke pushed.
05:38 Coke pmichaud: any ideas on global? (the var I end up with is apparently a copy, not the original)
05:38 Coke <-- needy!
05:38 nopaste "coke" at 72.228.52.192 pasted "./pmtcl t/tcl_misc.t" (12 lines) at http://nopaste.snit.ch/18851
05:39 Coke (that's 10 passes before we blow up, not bad. =-)
05:41 pmichaud Coke: (1) what happens if we say    "global a"   and a hasn't been set yet?
05:42 Tene pmichaud: how can I check for Undef in NQP properly?
05:42 Tene I must be misremembering: Method 'defined' not found for invocant of class 'Undef'
05:42 pmichaud Tene: currently the only good way is    pir::defined($value)
05:42 Tene pmichaud: will this DWIM: unless $past.handlers() { ... }
05:42 pmichaud Parrot doesn't have a .defined method on its PMCs :-(
05:43 pmichaud Tene: if WIM is that you want to check that there are handlers, likely yes.
05:43 Coke pmichaud: vivification, I think.
05:43 pmichaud Coke: I don't see any vivification in the current global sub, though.
05:44 pmichaud I just see that it binds  %CUR_LEXPAD{$_} to %GLOBALS{$_}
05:44 pmichaud but if %GLOBALS{$_} hasn't been vivified yet, then it comes back as PMCNULL and that's what gets stored in CUR_LEXPAD
05:45 pmichaud oh, wait, that's not what happens.  :-(
05:45 pmichaud %GLOBALS{$_} returns an Undef object, but it's not bound because %GLOBALS{$_} isn't an lvalue.
05:46 Coke the global in this case should be set before we call 'global' in a proc.
05:46 Coke (to 0)
05:47 Coke pmichaud: right, that was a /should/, not a /does/
05:47 pmichaud oh...
05:47 pmichaud $lexpad{$var} := pir::add__Nnn($lexpad{$var},$val);
05:47 Coke (but it shouldn't matter yet.)
05:47 pmichaud performs a rebind
05:48 Coke note that incr seems to work in the top level context.
05:48 pmichaud the := above is causing $lexpad{$var} to point to a new object
05:49 pmichaud which means it's no longer the same one that %GLOBAL has
05:49 pmichaud might try:  pir::set__Pn($lexpad{$var}, $lexpad{$var}+$val);
05:50 Tene pmichaud: I'm running into problems with block_immediate... it's converting Blocks into Stmts, and losing the handlers in the process.  I could also copy any handlers in that function, but handlers on Stmts are broken and useless.
05:51 Tene Oh, I know...
05:51 pmichaud Tene: probably don't want to use block_immediate then
05:51 pmichaud just do   $block.blocktype('immediate')
05:51 Tene pmichaud: well, <block> calls it... ;)
05:51 pmichaud oh.
05:51 pmichaud from blorst, yes?
05:51 Tene I just check for handlers, and don't convert if any are set.
05:52 pmichaud that seems reasonable
05:52 Coke error:imcc:The opcode 'set_p_n_n' (set<3>) was not found. Check the type and number of the arguments
05:53 pmichaud ...that's from using the set__Pn suggestion above?
05:53 Coke (i've seen this before, where there's a mismatch on the # of args given versus the error msg.)
05:53 Coke yes.
05:54 pmichaud ...why does it think there are three args?
05:54 pmichaud there's only two.
05:54 Coke exactly. :|
05:54 pmichaud oh!
05:54 pmichaud set__vPn
05:54 Coke ah
05:55 Coke at runtime, that gives another MMD error.
05:55 Coke Multiple Dispatch: No suitable candidate found for 'add', with signature 'PPP->P'
05:55 pmichaud ugh
05:55 Coke will try to set the add to a tmp and then use set on that.
05:55 pmichaud oh, simpler:
05:56 pmichaud pir::set__vPn($lexpad{$var}, pir::add_Nnn($lexpad{$var}, $val))
05:56 pmichaud better to avoid the temp, because it'll end up boxing/unboxing into the temp
05:56 pmichaud (a lot of this crud is due to parrot's insufficient support for lvalue semantics... sigh)
05:58 Coke that gives a syntax error at build time. =-)
05:58 pmichaud oh, I missed a _
05:58 pmichaud add__Nnn
05:58 Coke +1
05:58 purl 1
06:00 pmichaud oh, crap, that's not likely to work either :-(
06:00 Coke Ok. that still doesn't seem to work. (my global variable is still pegging at 1)
06:00 Coke hee!
06:00 pmichaud because $lexpad{$var} is still an rvalue here.
06:00 Coke I find it very confusing that this works outside of a proc.
06:01 Coke before + after the changes here.
06:01 pmichaud outside of a proc, the lexpad and %GLOBALS are the same hash
06:02 pmichaud so any change made to lexpad is also changing %GLOALS
06:02 pmichaud er GLOBALS
06:02 pmichaud including rebinds
06:02 pmichaud inside of a proc, the lexpad is a different hash from %GLOBALS
06:02 pmichaud so a rebind of the lexpad symbol doesn't change the %GLOBALS binding
06:02 Coke right. it's only when using a global. (when it's just the lexpad for the proc, also fine.)
06:03 Tene pmichaud: Okay, CATCH is working, now just working on getting $_ and $! set.
06:03 pmichaud what we likely have to do is to switch set to use copy semantics
06:03 ZeroForce joined #parrot
06:03 pmichaud Tene: setting $! is going to be tricky -- unlike Rakudo, not every outer sub has a $!
06:03 pmichaud and NQP doesn't like to add implicit vars
06:04 Tene Okay, I know what I'll do... :)
06:04 pmichaud I'm fine if we presume that the CATCH block has a $_ parameter, though.
06:05 pmichaud so that the exception is available as $_ inside of CATCH
06:05 pmichaud (the 'for' statement implies a $_ param on bare block bodies also, so there's precedent for this one instance of implied var, and it's always a param)
06:08 pmichaud Coke: ultimately I think two things need to happen
06:08 pmichaud (1)  the set() function should default to doing pir::copy  instead of binding
06:08 pmichaud (2)  the incr() function should use set() to change the value of a variable :-)
06:09 pmichaud (as should any other function that wants to change a variable's value)
06:09 Tene Okay, this is a little bit evil, but let's see if it works...
06:10 * pmichaud hopes for not too much evil.
06:10 Tene Well, it's approximately what you said.
06:10 Tene yay infinite loop!
06:10 pmichaud :-)
06:10 pmichaud maybe an error inside the handler that is invoking the handler again?
06:11 Tene That's exactly what it is.
06:11 pmichaud anyway, I'm really falling asleep at the kbd so I'm off to bed
06:11 Tene Goodnight, pm. :)
06:11 JimmyZ joined #parrot
06:11 pmichaud I'll look at any patch you have for CATCH tomorrow
06:11 pmichaud Coke: I'll be glad to do a bit of set/global/incr refactoring tomorrow
06:12 pmichaud goodnight, all
06:12 cotto night
06:12 Coke ~~
06:15 nopaste "tene" at 24.10.252.130 pasted "CATCH patch for nqp for pmichaud++" (112 lines) at http://nopaste.snit.ch/18852
06:16 Coke alternatively, I suppose I could eliminate %GLOBALS. =-)
06:21 Coke (no, that doesn't help)
06:22 Tene Oops, I left a debug print in there.
06:25 Tene I'm happy with this patch.  I'll just commit it and let pmichaud revert or edit if he has issues with it.
06:31 Coke syntax in p6 for that is try { stuff; CATCH {handler} } ?
06:32 JimmyZ_ joined #parrot
06:36 Tene Yes.
06:36 Tene although the 'try' there is superfluous if you have a CATCH in a block.
06:36 Tene I'm working on tests right now.
06:36 Tene and CATCH can come anywhere in the block.
06:41 nopaste "tene" at 24.10.252.130 pasted "What try/catch cases am I not testing here?" (42 lines) at http://nopaste.snit.ch/18853
06:41 Tene Coke: does that test file cover all usage you have in mind, at least?
06:42 Coke Tene: does the test with foo have the right sense?
06:42 Coke (if it's blocking control exceptions, shouldn't it not return the 1?)
06:43 Tene Coke: it *ignores* control exceptions... meaning it does not block them.
06:43 Tene Any ideas fo rbetter wording in the message?
06:43 ZeroForce1 joined #parrot
06:44 Coke allows passthrough of?
06:44 Tene Coke: So, yes, the test has the right sense.
06:44 Tene "are not caught"
06:45 Tene :)
06:45 Tene pmichaud: do we want CONTROL in nqp too?
06:50 Tene Ah, multiple CATCH blocks!
06:50 Tene Maybe we want resuming, too?
06:50 Tene i'm not sure why multiple CATCH blocks would be useful... oh, maybe for nested try.
06:51 Coke can you register catches for a particular type?
06:51 Coke (ala java's catch)
06:51 Tene There's no syntax for that in Perl 6.
06:51 Coke k.
06:52 Tene The Perl 6 way to do it is with 'when'.
06:52 Tene CATCH { when Foo { ... } when Bar { ... } default { ... } }
06:55 Coke yah, then I don't get why multiple CATCH is allowed.
06:58 nopaste "coke" at 72.228.52.192 pasted "partcl-nqp actually runs an entire partcl test!" (15 lines) at http://nopaste.snit.ch/18854
06:59 Andy joined #parrot
07:04 uniejo joined #parrot
07:06 nopaste "tene" at 24.10.252.130 pasted "try/catch test with multiple catch blocks and resumed exceptions" (69 lines) at http://nopaste.snit.ch/18855
07:08 Coke heh
07:09 Tene ?
07:09 Coke like the new test.
07:12 Tene Coke: Committed.
07:12 Tene purl: msg japhb CATCH is committed to nqp-rx, pending pmichaud's approval of my commit.
07:12 purl Message for japhb stored.
07:14 dalek nqp-rx: ef7eef0 | tene++ |  (3 files):
07:14 dalek nqp-rx: Basic implementation of CATCH and a test for try and catch.
07:14 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/e​f7eef0b3a1a4180213c8c3d092305cc020b1b04
07:15 Coke msg Infinoid "how can I get dalek to track partcl-nqp from https://trac.parrot.org/parrot/wiki/Languages ?
07:15 purl Message for infinoid stored.
07:16 JimmyZ dalek?
07:16 purl i guess dalek is #parrot's spammy little rss bot or (see: dalek plugins)
07:16 JimmyZ dalek plugins?
07:16 purl hmmm... dalek plugins is http://github.com/Infinoid​/dalek-plugins/tree/master
07:18 Coke Tene: good CATCH.
07:18 Coke -> zzz
07:18 Tene goodnight Coke
07:49 iblechbot joined #parrot
08:09 japhb joined #parrot
08:10 mj41_ joined #parrot
08:14 dalek parrot: r42803 | cotto++ | trunk (3 files):
08:14 dalek parrot: [pprof2cg] add an initial (not-quite-working) nqp port of pprof2cg
08:14 dalek parrot: review: https://trac.parrot.org/parrot/changeset/42803/
08:14 dalek parrot: r42804 | cotto++ | trunk/tools/dev/pprof2cg.pl:
08:14 dalek parrot: [pprof2cg] comment out debugging code
08:14 dalek parrot: review: https://trac.parrot.org/parrot/changeset/42804/
08:14 japhb msg purl messages
08:14 purl Message for purl stored.
08:14 japhb d'oh!
08:15 japhb Tene: excellent to hear re: CATCH.  Will take a look during my next hack session.
08:45 mikehh joined #parrot
09:05 cognominal joined #parrot
09:25 bogen joined #parrot
09:45 JimmyZ joined #parrot
10:15 iblechbot joined #parrot
10:27 theory joined #parrot
10:35 theory joined #parrot
11:01 kthakore joined #parrot
11:15 payload joined #parrot
11:44 payload joined #parrot
12:03 cconstantine joined #parrot
12:46 bluescreen joined #parrot
12:48 ruoso joined #parrot
12:57 masak joined #parrot
13:20 payload joined #parrot
13:43 tetragon joined #parrot
13:44 riffraff joined #parrot
13:55 tetragon_ joined #parrot
13:56 iblechbot joined #parrot
14:03 payload joined #parrot
14:03 slavorg joined #parrot
14:03 ruoso joined #parrot
14:06 tetragon joined #parrot
14:19 Coke seen perljam?
14:19 purl perljam was last seen on #parrot 19 hours, 20 minutes and 3 seconds ago, saying: Coke: Every year I look around for that place I saw that did  Cow(Pig(Turkey(Duck(Shrimp)))) several years ago.   I bet it was a one-time deal.
14:52 zak_ joined #parrot
14:58 pmichaud good morning, #parrot
15:02 Coke pmichaud: hio.
15:02 payload joined #parrot
15:04 Psyche^ joined #parrot
15:20 Coke pmichaud: updated status/todo a bit.
15:21 Coke I think it's nifty we can actually run a test file through.
15:28 pmichaud Coke: I'm working on global/set now.
15:28 pmichaud and continuing to curse PIR.
15:28 pmichaud (in particular, it's incredibly irregular opcode set)
15:29 pmichaud *its
15:30 pmichaud bah, I'm just going to write this in inline PIR.
15:30 pmichaud too hard to bend NQP to do it
15:36 nopaste "pmichaud" at 72.181.176.220 pasted "global works in partcl-nqp (for Coke++)" (15 lines) at http://nopaste.snit.ch/18858
15:39 bogen joined #parrot
15:46 patspam joined #parrot
15:49 Coke pmichaud: woot!
15:49 Coke (woot woot)
15:50 Coke I certainly don't mind some inline PIR. better than "all PIR"
15:50 pmichaud yeah... PAST needs to have a way to be able to specify constant keys
15:51 payload joined #parrot
15:51 pmichaud probably will need to add a 'K' operand type to the signature
15:55 Coke pmichaud: added in the t/ and lib/ files we need from partcl
15:55 pmichaud \o/
15:55 Coke is that "YAY" ?
15:55 pmichaud yes
15:55 Coke =-)
15:55 pmichaud head with two arms outstretched above it
15:56 Coke ^_^;
15:56 dalek parrot: r42805 | pmichaud++ | trunk/compilers/pct/src/PAST/Compiler.pir:
15:56 dalek parrot: [pct]:  Add 'copy' opcode to %piropsig.
15:56 dalek parrot: review: https://trac.parrot.org/parrot/changeset/42805/
16:04 Coke does nqp provide a way to iterate over the characters of a string?
16:10 * Coke chuckles at masak's meme.
16:13 mikehh All tests PASS (pre/post-config, smoke (#30181), fulltest) at r42804 - Ubuntu 9.10 amd64 (g++ with --optimize)
16:25 pmichaud nqp doesn't have a built-in mechanism, no.
16:26 Coke pmichaud: k. i just went with a barebones split for now.
16:26 NotFound A string iterator?
16:26 pmichaud yah, I think Parrot knows how to iterate strings, though.
16:27 nopaste "coke" at 72.228.52.192 pasted "pmichaud++ - this fails to parse, probably because the block is too eagerly evaluated." (3 lines) at http://nopaste.snit.ch/18859
16:27 Coke (from t\tcl_misc.t)
16:28 nopaste "pmichaud" at 72.181.176.220 pasted "parrot string iteration" (10 lines) at http://nopaste.snit.ch/18860
16:29 Coke oh, it JFW?
16:29 Coke spif.
16:30 Coke pmichaud: fixing the backslash-newline thing will help us get started on a lot more tests, btw.
16:30 pmichaud okay.
16:30 moritz that's not quite specced Perl 6 behaviour :-)
16:30 pmichaud moritz: yes, it's unfortunately a place where NQP will have to deviate from Perl 6 :-(
16:31 pmichaud at least for a while.
16:31 Coke pmichaud++
16:34 NotFound That reminds me a question: will be a good idea to add an operator $P = iter $S ?
16:39 NotFound Looks like no :D
16:40 Coke is there a stringIterator for a string instead of a String?
16:40 Coke I imagine boxing is required.
16:41 pmichaud I suppose it could be done w/o boxing, but I don't see it as being an important feature.
16:41 pmichaud string iteration is pretty rare at the moment anyway, and there's no much cost in boxing a $S prior to iterating it
16:41 NotFound Yes, just avoidig an op and a register. His usefulness will depend on how frequent is the operation.
16:42 Coke so, nah.
16:42 NotFound Given the few interest, I assume that not much frequent.
16:42 Coke pmichaud: seems that you can't name the topic in a for loop over a string.
16:42 Coke (for $a $thing) doesn't work, but (for $thing) does.)
16:43 Coke (I can work around this. just noting)
16:43 pmichaud ??
16:43 pmichaud do you mean    for $str -> $a { ... }   ?
16:44 Coke ah. newfangled sytax. danke.
16:45 pmichaud note that the newfangled syntax also allows n-at-a-time iteration
16:45 pmichaud for @list -> $a, $b, $c { ... }    # grab 3-at-a-time from @list
16:45 ruoso joined #parrot
16:47 slavorg joined #parrot
16:51 nopaste joined #parrot
16:52 Coke pmichaud: updated [split] to use that string iteration trick.
16:52 Coke compare that to runtime/builtin/split.pir
16:52 Coke (and we could probably slim it down if we had block labels. Do we? =-)
16:54 pmichaud not yet
16:57 Coke (not a priority. it's already several hundred lines shorter. =-)
17:04 pmichaud ....do you need backslash+newline in braced words also, or are quoted strings and barewords good enough for now ?
17:06 pmichaud ehhh, I'll do braced word also
17:10 dalek winxed: r216 | julian.notfound++ | trunk/winxed.winxed:
17:10 dalek winxed: add a simple heuristic to locate he stage0 compiler
17:10 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=216
17:25 dukeleto 'ello
17:29 dalek winxed: r217 | julian.notfound++ | trunk/examples/parser.winxed:
17:29 dalek winxed: assignment operator in example parser
17:29 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=217
17:29 nopaste joined #parrot
17:31 pmichaud Coke:  pushed backslash+newline handling (I think)
17:31 mikehh All tests PASS (pre/post-config, smoke (#30182), fulltest) at r42805 - Ubuntu 9.10 amd64 (gcc with --optimize)
17:42 nopaste joined #parrot
17:45 ruoso joined #parrot
17:55 Coke yup, that unblocks t/cmd_expr.t
17:55 Coke pmichaud++
17:56 payload joined #parrot
17:58 Coke pmichaud: nifty. I imagine that'll be faster than the original, as I really was doing it as a separate pass.
18:06 mikehh_ joined #parrot
18:11 cotto_work good morning
18:13 Coke ~~
18:13 dukeleto good moroning
18:14 * cotto_work morons dukeleto
18:15 japhb "Good moroning to all, and to all a good knucklehead."
18:15 * Coke wonders why http://dev.perl.org/perl6/ has the synopses so far away from teh A & E.
18:15 japhb Because at this point, they are?  ;-)
18:16 Coke then the syn should be highlighted and not on the bottom.
18:16 * Coke wonders how to die in nqp.
18:16 japhb pir::die() would probably work
18:16 Coke pir::throw the b.... ok.
18:19 joeri joined #parrot
18:20 Tene pmichaud: I committed CATCH last night.
18:21 Coke tene++
18:23 Coke Tene: so if i /want/ to catch control exceptions, am I best of just cutandpasting?
18:23 Coke "best of"
18:23 Coke "best off"!
18:23 * Coke glares at the f key.
18:25 Tene Coke: leave off the handle_types_except bit
18:26 nopaste "coke" at 72.228.52.192 pasted "tene++, does this look right to you?" (16 lines) at http://nopaste.snit.ch/18861
18:27 Coke right, "cut and paste and <that bit>" as opposed to trying to manipulate the builtin try/catch.
18:27 Tene oh, I misunderstood.
18:27 Tene I'll add CONTROL for you, then.
18:28 nopaste "coke" at 72.228.52.192 pasted "(whoops, return the retval, not "ok")" (16 lines) at http://nopaste.snit.ch/18862
18:28 Coke oooh. that would be quite nice of you.
18:37 Coke Tene: is $_ a parrot Exception PMC?
18:37 Coke (in CATCH/CONTROL) ?
18:37 Coke (in NQP)
18:41 Coke (looking at the test, looks like you did get $! to work, and that it at least ISA exception. danke.)
18:47 Tene Coke: Yes, it's a parrot exception PMC
18:47 Tene Coke: just adding a test for CONTROL
18:47 Coke woot.
18:48 nopaste "coke" at 72.228.52.192 pasted "partcl-nqp's new catch, assuming I have the syntax right." (31 lines) at http://nopaste.snit.ch/18863
18:48 Coke that look sane?
18:49 mikehh_ joined #parrot
18:49 Tene Coke: pushed
18:50 cotto_work pmichaud, what kind of plans do you have to make nqp-rx generate smarter pir, if any?
18:50 Coke If I install nqp-rx, will that overwrite the version installed by parrot?
18:50 Tene Coke: that looks sane to me.
18:53 Coke Tene: need to update the test plan.
18:53 dalek nqp-rx: 7387be6 | tene++ |  (3 files):
18:53 dalek nqp-rx: Add CONTROL blocks
18:53 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/7​387be6cd758a37d883c6b3f475d8cda11a448dd
18:53 Coke (planned 7, ran 8)
18:55 Tene Coke: Thank you.  Pushed the fix.
18:55 Tene pmichaud: there's currently a problem with try/control, in that a CONTROL block in a try {} will disable the try's default ignore handler.
18:56 pmichaud cotto_work: I do expect to try to generate smarter pir, yes.  However, the structure of Parrot doesn't allow for a lot smarter PIR.
18:57 pmichaud (I'm hoping parrot will change that... but I don't expect it to happen anytime in the near future.)
18:58 cotto_work ok.  How could Parrot enable smarter code generation?
18:58 Tene The fix isn't too bad, but I haven't done it yet.
18:58 cotto_work It sounds like that might fit in with Lorito.
18:58 pmichaud cotto_work: well, one of the big stumbling blocks at the moment is that lexicals can only be PMCs
18:58 pmichaud so anything that goes into a lexical ends up having to be boxed into a PMC
18:59 pmichaud an even bigger stumbling block is that Parrot doesn't have a good lvalue model or assignment semantics
18:59 pmichaud it tends to confuse "bind" with "assign"
18:59 pmichaud at least, it does that for most of the default PMC types
19:00 pmichaud there's also not a good reference model
19:00 pmichaud for keeping track of object references
19:01 pmichaud as a result, the code that nqp generates tends to have to be somewhat pessimistic, such as continually refetching lexical and global symbol tables because of the possibility of a symbol being rebound
19:01 Coke pmichaud,tene: > puts [list [catch barf var] $var]
19:01 Coke 1 {Could not find non-existent sub barf}
19:02 Coke whee.
19:02 cotto_work That explains some of the generated code then.
19:03 Coke pmichaud: any issue with switching partcl-nqp to build with "nqp" instead of "parrot-nqp" for now?
19:03 Coke (then I don't have to ping you to cut a new 'release' =-)
19:04 pmichaud cotto_work: I do plan to have an option whereby code can say "assume this lexical/symbol isn't being rebound"
19:04 pmichaud but since parrot doesn't have a good assignment model, most folks end up doing rebinds
19:05 pmichaud partcl-nqp just went through this yesterday (until I fixed it this morning) whereby symbols were being re-bound to new PMCs instead of changing the value of an existing multiply-bound PMC
19:05 cotto_work What's the difference between assignment and binding?
19:06 pmichaud assignment changes the value of an existing PMC
19:06 pmichaud binding causes a symbol table entry to point to a PMC
19:06 pmichaud so, for example
19:06 pmichaud $P0 = box 1
19:06 pmichaud $P1 = $P0
19:06 pmichaud these are examples of binding
19:06 pmichaud if after the above, I do:    $P0 = box 3
19:06 pmichaud then $P1 ends up still being bound to the PMC containing 1
19:07 pmichaud and $P0 is bound to a new PMC containing 3
19:07 pmichaud okay so far?
19:07 cotto_work yes
19:07 pmichaud $P0 = box 1
19:07 pmichaud $P1 = $P0
19:07 pmichaud assign $P0, 3
19:07 pmichaud in this case,  $P0 and $P1 still point to the same PMC, and the value of that PMC has changed to 3
19:07 pmichaud still okay?
19:07 cotto_work yes
19:07 pmichaud that's the difference
19:08 pmichaud now then, let's look at something like
19:08 pmichaud $P0 = new ['ResizablePMCArray']
19:08 pmichaud $P0[0] = 1
19:08 pmichaud $P1 = $P0[0]
19:08 pmichaud in this case, $P1 and $P0[0] are pointing to the same PMC  (containing 1)
19:08 pmichaud but if we then do...
19:08 pmichaud $P0[0] = 3
19:09 pmichaud that's a binding, not an assignment
19:09 pmichaud such that $P1 refers to the old PMC (1), while $P0[0] refers to the new one (3)
19:09 pmichaud in other words, changing the value in the array has broken the bind
19:09 moritz pmichaud: this is becoming an FAQ... you should put that on a wiki page or so
19:09 pmichaud moritz: well, I have a few hours car ride today, perhaps I can type it up.
19:09 pmichaud but I also plan to do a NQP/compiler tutorial
19:10 Coke pmichaud: is t/sanity.t working for you?
19:10 pmichaud Coke: it was as of my last push
19:10 cotto_work Thanks.
19:11 pmichaud where it gets *really* nasty is with
19:11 pmichaud $P0 = find_lex '$a'
19:11 pmichaud 'foo'()
19:11 pmichaud if the "foo" subroutine does   store_lex  '$a', $P99    to put a new value in lexical $a
19:11 pmichaud then when we get back from 'foo', $P0 no longer points to the PMC associated with $a
19:11 dalek nqp-rx: ae0666c | tene++ | t/nqp/44-try-catch.t:
19:11 dalek nqp-rx: Update test plan
19:11 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/a​e0666cf489a209c1aa2bffb1a829ce689a3b146
19:11 pmichaud because store_lex does a bind
19:12 pmichaud and not an assign
19:12 cotto_work Then $P0 will have an out-of-date value
19:12 pmichaud exactly
19:12 pmichaud so, every time we need access to $a, we end up having to do a re-fetch
19:12 pmichaud because it's possible some other operation will have re-bound it to a different PMC
19:13 dalek rakudo: 2eb38b5 | moritz++ | perl6.pir:
19:13 dalek rakudo: alias Object and Mu, as suggested by jnthn++; wins us back quite a few tests
19:13 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/2​eb38b5bf07f1c4392a9d1d75f3fd1cf7d877105
19:13 pmichaud ideally there would be an opcode that makes it easier to do assignment
19:13 pmichaud there is an opcode called 'assign', but it tends to do weird things with the built-in PMCs
19:14 pmichaud for example
19:14 pmichaud $P0 = new ['ResizablePMCArray']
19:14 pmichaud store_lex '$a', $P0
19:14 pmichaud which sets $a to be a RPA
19:14 pmichaud now we want to do the equivalent of  $a = 3   -- i.e., change it to an Integer 3
19:14 pmichaud $P1 = find_lex '$a'
19:14 pmichaud assign $P1, 3      #   oooops!
19:15 cotto_work That changes the length to 3, doesn't it?
19:15 pmichaud what we want is $P1 to be an Integer 3
19:15 pmichaud right
19:15 pmichaud so the 'assign' opcode doesn't do what we want here
19:15 pmichaud late last year we added the 'copy' opcode to try to do this
19:16 pmichaud so we'd have
19:16 pmichaud $P1 = find_lex '$a'
19:16 pmichaud $P2 = box 3
19:16 pmichaud copy $P1, $P2    (replace $P1 with $P2)
19:16 pjcj joined #parrot
19:16 pmichaud but it's horribly inefficient, because it involves making a clone of $P2 and then copying that structure into the PMC header for $P1
19:16 pmichaud but so far it's about the best we can do
19:17 pmichaud everything gets worse when we start talking about aggregate access
19:17 pmichaud because there's not a    copy $P0[0], $P2    opcode yet
19:18 pmichaud and this leads to allison's comment that it really should be the PMCs/vtables that determine behavior instead of opcodes
19:18 pmichaud (which is where the model completely breaks down)
19:19 cotto_work There's a lot conspiring to prevent good code generation from nqp.
19:20 cotto_work Thanks you for that explanation.
19:20 pmichaud sure thing!
19:20 dukeleto 'ello
19:21 pmichaud ultimately it's that Parrot (vtable and core types) doesn't have a good container/value/lvalue model
19:21 pmichaud or, at least, one that doesn't map well to the HLL's we're targing.
19:21 pmichaud *targeting
19:21 NotFound BTW that pmc header copying is done independently in several different places.
19:26 pmichaud Coke:  yes, my copy of partcl passes sanity.t
19:26 Coke pmichaud: ok. either my updated catch or using nqp-blead.
19:30 Coke dukeleto: hello
19:30 Coke pmichaud: would you mind if I cut a release of nqp-rx into parrot?
19:31 dalek rakudo: 2fc0a98 | moritz++ | src/setting/Object.pm:
19:31 dalek rakudo: implement Object.notdef
19:31 dalek rakudo: This wins us back most spectests. Most remaining failures are related to
19:31 dalek rakudo: autovivification returning Failure, not Mu.
19:31 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/2​fc0a9886f310a560c7d0449fa272b7baac0c8a5
19:32 pmichaud Coke: no, I don't mind at all.
19:32 pmichaud anyone can do it :)
19:32 pmichaud I don't feel that's something I need to keep control over :)
19:33 moritz it's good to keep the bus number high
19:34 Coke nqp-rx has wrong deps. (make -j3 causes some stuff to get built 3 times.)
19:34 * Coke look into that later.
19:34 Coke "will"
19:35 pmichaud -j3 doesn't work well with the bootstrapping
19:36 pmichaud we can get it to maybe work with -j3, but I fear the makefile becomes far more complicated as a result
19:36 pmichaud I'd rather have a simpler makefile.
19:36 pmichaud (if it can be done while keeping the makefile simple, I'm all for it)
19:36 Coke eh. I have plenty of other makefile sto clean up. =-)
19:37 dalek winxed: r218 | julian.notfound++ | trunk/examples/parser.winxed:
19:37 dalek winxed: add operators == and != and redo operator + in example parser
19:37 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=218
19:40 Coke pmichaud: do I need a commit bit on nqp-rx to do this?
19:40 Coke (I assume (4)  commit files in src/stage0
19:40 Coke is for the nqp-rx repo itself.)
19:41 cognominal joined #parrot
19:42 dalek winxed: r219 | julian.notfound++ | trunk/examples/parser.winxed:
19:42 dalek winxed: add parens parsing to example parser
19:42 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=219
19:49 pmichaud Coke: you don't _have_ to commit the src/stage0 files to copy them into parrot, but it'd be a good idea
19:49 pmichaud that said, you now have nqp-rx commit privs
19:55 Tene pmichaud: are you comfortable with me assuming you'll review my commits to nqp-rx and revert any problems?
20:00 Tene pmichaud: the check to prevent CONTROL from breaking try is to add a loop that walks over the handlers, checking if they're all handling only control exceptions.  Is that fine to add, or is that beyond the complexity level you want in nqp?
20:00 Coke how do I switch my checkout to point to the push-able repo?
20:00 Tene Coke: you can just edit .git/config
20:01 Coke tene++
20:01 Tene There are git commands to do it, but that's easier. :)
20:01 pmichaud Tene: I'll review your commits and revert, yes.
20:01 pmichaud Tene: as long as tests pass and we don't break anything else, I'm not too concerned at this point.
20:02 Tene Okay, great.  I'll try not to work on it until tonight, so I can get some $job work done. :)
20:02 pmichaud I don't know when I'll have a chance ot review -- we're about to leave for thanksgiving family visit (3 days)
20:02 pmichaud I should have good wifi connectivity there, though
20:02 pmichaud and I've already warned everyone that I plan to be hacking/coding :)
20:04 dalek nqp-rx: 294d493 | (Will Coleda)++ | src/stage0/ (3 files):
20:04 dalek nqp-rx: rebuild stage0 after tene++'s try/CATCH/CONTROL additions.
20:04 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/2​94d4939a6b6e6a49cf4eeb3745c7ea771eb2340
20:04 * Coke wonders why that didn't come through as coke.
20:05 Coke (does each project have its own credits file?)
20:05 Coke (from dalek's POV)
20:05 pmichaud I would think so.
20:05 pmichaud time for us to leave here -- I'll bbl
20:08 Coke ~~
20:12 dalek parrot: r42806 | coke++ | failed to fetch changeset:
20:13 dalek parrot: Update nqp-rx with try/CATCH/CONTROL work from tene++
20:13 dalek parrot: review: https://trac.parrot.org/parrot/changeset/42806/
20:17 Coke "failed to fetch changeset:" ?
20:18 Tene delicious changeset...
20:18 cotto_work it's an rss goof
20:18 cotto_work the commit looks fine
20:22 * Coke sighs as "make test" is still failing for him in partcl-nqp, and he doesn't have time fo figure out why
20:47 ruoso joined #parrot
21:01 dalek winxed: r220 | julian.notfound++ | trunk/examples/parser.winxed:
21:01 dalek winxed: function call without args in parser example
21:01 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=220
21:02 bluescreen joined #parrot
21:22 iblechbot joined #parrot
21:39 dalek tracwiki: v1 | cotto++ | WhyDoesNQPGenerateInefficientCode
21:39 dalek tracwiki: first version, direct copy/paste from irc, definitely needs reworking
21:39 dalek tracwiki: https://trac.parrot.org/parrot/wiki/WhyDoesNQPGe​nerateInefficientCode?version=1&amp;action=diff
21:39 dalek tracwiki: v2 | cotto++ | WhyDoesNQPGenerateInefficientCode
21:39 dalek tracwiki: https://trac.parrot.org/parrot/wiki/WhyDoesNQPGe​nerateInefficientCode?version=2&amp;action=diff
21:45 Andy joined #parrot
21:49 allison joined #parrot
21:51 nopaste joined #parrot
22:08 dalek winxed: r221 | julian.notfound++ | trunk/examples/parser.winxed:
22:08 dalek winxed: function call with args in parser example
22:08 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=221
22:19 donaldh joined #parrot
22:29 theory joined #parrot
22:53 dalek rakudo: f151334 | moritz++ | src/setting/ (2 files):
22:53 dalek rakudo: get rid of undef in the setting
22:53 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​1513348f71777c0ec13c46b1efe2d9b1a0f2c47
22:58 Tene pmichaud: if I define new protoregex variants during the parse, is it likely to work correctly?
22:59 patspam joined #parrot
22:59 Tene pmichaud: I'm hoping to be able to do macros in my scheme parser by having the action method for the macro definition generate a new grammar rule and action method and install them into the namespaces.
23:02 mikehh joined #parrot
23:04 kthakore um hi
23:04 kthakore leto: hi
23:04 purl privet, kthakore.
23:05 kthakore leto: you mentioned there where a couple of ppl to talk to for hacking on PCC ?
23:08 kthakore oh well some other night then
23:10 Tene kthakore: What about PCC?
23:11 Tene kthakore: I did some of the PCC refactor.
23:11 kthakore Tene: oh hello
23:12 kthakore Tene: I am at a lost for time. But I am upgrading blitzkost's to the new PCC stuff
23:12 kthakore Tene: I will talk to you later
23:12 Tene kthakore: allison is the best to ask, but she is not around so much right now.
23:13 Tene kthakore: bye
23:20 allison Tene: you can point people at https://trac.parrot.org/par​rot/wiki/PCCMigrationNotes as a start on upgrading to the new PCC
23:34 kthakore allison: I have looked at that
23:36 kthakore allison: Tene in blitzkost I get this issue‘struct parrot_interp_t’ has no member named ‘current_args’
23:36 kthakore allison: the wiki link says not to use C structs anymore and use
23:36 kthakore Parrot_pcc_get_signature(interp, ctx);
23:37 kthakore but how do I get cur_args?
23:37 kthakore or the equivalent?
23:38 kthakore Tene: that was my question? is there a place that explains the PMC * usage a little better?
23:40 xenoterracide joined #parrot
23:40 plobsing joined #parrot
23:47 allison kthakore: there is no current_args anymore
23:47 kthakore allison: ahh ...
23:49 allison you're looking for 'current_sig' in the current context
23:49 kthakore ok
23:49 kthakore allison: I am going to have to understand the logic before I proceed
23:50 kthakore allison: is there a page that explains signature usages in pmc?
23:50 allison kthakore: a signature is a PMC that stores all the arguments to a call
23:50 kthakore ok
23:51 * allison digging for the best resource to hand you
23:51 kthakore so in blizkost I am assuming they are trying to get arguments from p5 -> parrot calls?
23:51 kthakore allison: thank you.
23:52 kthakore leto: let me know ... I am super new to vm hacking
23:53 allison kthakore: yes, if they're grabbing current_args then they were likely doing some argument munging
23:54 kthakore allison: ok.
23:54 allison kthakore: okay, the documentation on CallSignature itself (src/pmc/callsignature.pmc) will give you how to pull information out of the CallSignature object, which is likely all you'll need
23:54 kthakore allison: I have to head back to sdl for a while but I will try again later. Thanks!
23:55 kthakore allison++ <-- patience with newb guy
23:55 kthakore allison: caio
23:55 allison no problem
23:55 allison pop back if you have more questions
23:55 kthakore allison: sure
23:55 allison (I'm on UK time, which is off for most of the team)
23:55 kthakore allison: I am on whenever I get to hack time which is off from the rest of the planet :p
23:56 allison kthakore: :)
23:56 kthakore allison: oh ! src/pmc/call... is extacly what I need! Thank you
23:58 dalek tracwiki: v3 | samlh++ | WhyDoesNQPGenerateInefficientCode
23:58 dalek tracwiki: Reformat for easier reading
23:58 dalek tracwiki: https://trac.parrot.org/parrot/wiki/WhyDoesNQPGe​nerateInefficientCode?version=3&amp;action=diff
23:59 allison kthakore: excellent!
23:59 purl EGG-see-lent!
23:59 kthakore heh

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

Parrot | source cross referenced