Parrot 1.8.0 Zygodactyly released | Latest modified TT's: icanhaz.com/parrotbugs | Parrot Languages: icanhaz.com/parrotlang
Set by moderator on 23 November 2009.
pmichaud japhb: it's following the Perl 6 specification 00:09
japhb Really? I'll be darned. Is that to put decimal in line with other bases (which are often specified in unsigned form)? 00:10
pmichaud well, the spec recently changed 00:14
so that now +\\- is part of number parsing
so NQP will likely follow suit
PerlJam Where is the method control on PAST::Blocks documented? 00:15
pmichaud ...method control?
oh, .control
it might not be documented yet.
basically it sets a control handler for the block
PerlJam it's not in pdd26
Coke PerlJam++ 00:16
pmichaud++
pmichaud the special value 'return_pir' simply adds PIR code to catch return exceptions and return the payload
looks like +\\- was added to number parsing on Nov 18 00:17
Coke adds a test to partcl-nqp to make sure we don't regress on the if {$a==} test... 00:18
pmichaud what problem was the .nows supposed to fix in partcl expr handling? I forget. 00:19
oh, is wb<0>
that's the default in the new version
at least, it should be the default.
Coke pmichaud: puts [expr 2eq3] ? 00:20
er, this one:
puts [expr 2eq 3]
(all other whitespace combos seem to work. 00:21
pmichaud looking. 00:22
PerlJam puts [expr 2 eq3] does ... interesting things. 00:25
Coke WOOF.
must have missed that one. =-)
PerlJam++
if I want a copy instead of an assignment in NQP... ? 00:27
pmichaud pir::copy
probably pir::copy__PP for now -- I'll add it so the __PP isn't needed.
(also note that NQP doesn't do assignment, only set/bind)
00:28 abqar joined
Coke er, yes. 00:28
pmichaud > puts [expr 2eq 3] 00:30
0
> puts [expr 2 eq3]
0
> puts [expr 3 eq3] 00:31
1
Coke is that with a local fix?
pmichaud yes.
Coke +1
purl 1
pmichaud pushed.
I guess I should eliminate the item from TODO, also
00:32 plobsing joined
pmichaud TODO pushed. 00:32
Coke I think I have something close on <global> 00:33
pmichaud are you switching set() to use copy instead of bind? 00:34
nopaste "coke" at 72.228.52.192 pasted "close but no cigarillo." (17 lines) at nopaste.snit.ch/18822
pmichaud while %LEXPAD.outer {
%LEXPAD := %LEXPAD.outer;
}
infinite loop 00:35
purl see infinite regress
pmichaud currently I have the outermost lexpad pointing to itself.
Coke whoops.
pmichaud but that doesn't quite fit my conception of how it should work
just a sec
(checking tcl specs) 00:36
I think that global should create entries in the current lexpad that are bound to the corresponding PMCs of the global lexpad
and then set($var, $value) should generally use copy instead of binding 00:37
Coke ... I thought that was what I was doing there. =-)
pmichaud oh, you're right.
Coke (changed it to while %LEXPAD.outer != %LEXPAD.outer { 00:38
... er..
pmichaud that's not likely to help either
Coke while %LEXPAD != %LEXPAD.outer {
pmichaud that either, since you're essentially comparing two Hashes :-(
probably want !=:= but NQP doesn't implement that yet
still easier would be to make LexPad #0 always available somewhere.
instead of following the chain of outers 00:39
Coke Sure.
pmichaud unless there are multiple globals
Coke per-interpreter, perhaps.
pmichaud (e.g., with namespaces -- I haven't investigated tcl namespaces yet)
00:39 tetragon joined
pmichaud src/PmTcl.pir is the code that sets up the global lexpad 00:39
you could just bind it into a package or global symbol somewhere
my suggestion would be to add 00:40
Coke set_hll_global '%GLOBALS', lexpad
?
pmichaud yeah
exactly
then in global(), you can do our %GLOBALS
and it'll be the same one
Coke do I need to bind it? or just declare it? 00:41
pmichaud just declare it.
(set_hll_global '%GLOBALS' does the binding)
(our %GLOBALS just says that %GLOBALS is a package var)
Coke ok. global is now trying to do the right thing, apparently not finding the var. (I'm getting an empty string back trying to dump the value...) 00:47
pmichaud I suspect the var has to be vivified somehow in the global lexpad 00:48
Coke I am doing "set a 2" in the outermost scope.
pmichaud maybe push what you have already, so I can look? or nopaste the diff somewhere?
Coke not sure if that's really the same lexpad I should be looking at.
pmichaud it should, yes.
nopaste "coke" at 72.228.52.192 pasted "pmichaud++" (49 lines) at nopaste.snit.ch/18823 00:49
Coke (I had just split the bindingt into 2 lines on the off chance that mattered.)
pmichaud oh 00:50
not %GLOBALS<$_>
you want %GLOBALS{$_}
and %CUR_LEXPAD{$_}
Coke [:facepalm:]
pmichaud++ 00:51
pmichaud it works?
Coke ayup. 00:52
pmichaud \\o/
I might've implemented [globals] in terms of [upvar] though :-)
Coke fair enough... until someone redefines upvar on you. =-) 00:53
dalek TT #1329 created by plobsing++: [PATCH] extend scope of t/codingstd/c_indent.t
pmichaud well, I had also been thinking of keeping "pure" versions in a namespace somewhere 00:54
anyway, nice work on [global] 00:55
I can probably get uplevel #0 {code} to work pretty simply 00:56
Coke I'm trying to get a test for the global before committing... moment. 00:57
pushed 00:59
nopaste "pmichaud" at 72.181.176.220 pasted "uplevel #nn {code} for Coke" (17 lines) at nopaste.snit.ch/18824 01:00
pmichaud gotta run to the store
bbi30ish
01:05 payload joined 01:20 bogen joined
Coke how to know if an optional arg was passed into nqp? 01:26
(nevermind, I can do it manually)
01:34 kid51 joined 02:34 JimmyZ joined
dalek TT #1330 created by plobsing++: [PATCH] deprecate "v" to denote empty nci pararameter list 02:57
03:01 cconstantine joined
dalek kudo: 0a61bee | (Kyle Hasselbacher)++ | build/gen_parrot.pl:
Make gen_parrot.pl die more gracefully, thanks to Timothy Bollman
03:07
04:52 davidfetter joined 05:19 uniejo joined 05:48 xenoterracide joined 07:04 uniejo joined 07:20 payload joined 07:28 fperrad joined 07:30 fperrad_ joined 07:33 TiMBuS joined 08:18 iblechbot joined 08:23 riffraff joined 09:45 szabgab joined 09:51 abqar joined
dalek rrot: r42796 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
[distutils] now installables are striped
10:05
10:07 shockwave joined
shockwave Hi 10:08
purl hola, shockwave.
shockwave I was reading here about the Parrot debugger: www.parrotcode.org/docs/debugger.html 10:09
10:09 Taulmarill joined
shockwave this other page mentioned that it was being fused with parrot: en.wikibooks.org/wiki/Parrot_Virtua...t_Debugger 10:09
Can anyone tell me the current status of the debugger?
I don't actually need to use it. I working on the semantic analysis of my language now. I'm just curious. 10:10
moritz I think dukeleto++ put a lot of work into the debugger 10:14
shockwave: maybe ask him when he's around 10:15
shockwave moritz, Ok, thanks.
10:54 zak_ joined 11:02 lucian joined 11:07 mikehh joined
mikehh messages 11:08
11:09 jsut_ joined 11:32 JimmyZ joined 11:44 theory joined 11:57 whiteknight joined 11:58 cconstantine joined
whiteknight good morning #parrot 11:59
12:04 cognominal joined 12:12 Taulmarill joined
mikehh All tests PASS (pre/post-config, smoke (#30152), fulltest) at r42796 - Ubuntu 9.10 amd64 (g++ with --optimize) 12:16
12:27 bluescreen joined 12:36 ruoso joined 12:38 JimmyZ joined 12:50 masak joined 12:56 davidfetter joined 12:59 gaz joined
Coke ovid++ #cobol 13:08
davidfetter parrot.privatepaste.com/2d905e0566 13:11
Coke dcolish? 13:12
duncan?
purl i think duncan is mailto:duncan@thorn.net
moritz dduncan? 13:13
purl well, dduncan is using them anyway or Indiana Jones
13:13 plobsing joined
davidfetter Coke, dcolish is daniel colish. grad student in portland 13:14
plobsing hi #parrot 13:15
Coke moritz, davidfetter, danke. 13:18
davidfetter bitte :)
whiteknight good morning everybody 13:22
plobsing hi whiteknight
dalek rrot-linear-algebra: 8edd836 | Whiteknight++ | src/pmc/complexmatrix2d.pmc:
Some refactors to ComplexMatrix2D. Untested
rrot-linear-algebra: 2bbe500 | Whiteknight++ | t/complexmatrix.t:
Add several test stubs for complexmatrix.t, and add a test for iterate_method_inplace
whiteknight hello plobsing 13:23
plobsing i've given up my plan to write a lorito prototype
after asking a couple questions, i realize that lorito isn't (just) about jit 13:24
its so much more
I was just coming at it from the JIT angle
whiteknight what else do you mean?
plobsing it seems to me its more about internal optimization and not using C for most stuff 13:26
like not having to cross pcc-c barriers so often 13:27
and various optimizations not offered by available C compilers
Coke (not crossing pcc/c barriers) that was a big item, yes. 13:48
13:53 iblechbot joined
dalek trixy: dbf7de5 | Whiteknight++ | .gitignore:
add a .gitignore file with some common stuff
14:00
trixy: e1bf102 | Whiteknight++ | (4 files):
remove some old diagnostics messages. Brute-force a solution to abs.t. One test fails on comparison between NumMatrix2D, ComplexMatrix2D
whiteknight plobsing: you're right about the barrier-crossing optimizations. Those are a nice benefit 14:10
I had been sort of ignoring them for now, looking for a naive and simple initial approach to get JIT working 14:11
but then again, it probably doesn't make any sense to be too naive about it all
probably better to just do it right the first time
Coke whiteknight: well, we missed that chance. =-) 14:19
let's do it right this time, though. =-) 14:20
when's that kid gonna pop?
whiteknight the kid was due 4 days ago
so "any minute now"
and he's going right to his room for being late
Coke is there a "that's it, we're going in" cutoff date? 14:21
whiteknight I really don't know. If my wife had her way, that would have been about a month ago
Coke heh. my first was a month early. we naively expected he'd show up on time.
pro tip: get a good night's sleep for as long as you can. =-) 14:22
Coke sees Dan comment on a parrot post. 14:26
Coke goes, "whoa."
PerlJam Coke: which post would that be? 14:29
whiteknight link?
purl or "Link is ... like ... this pointy eared goblin that walks around in midi-music land with a letter opener attacking circles and things and wooing princesses but not bannon, you know?" or preaction is Error.
Coke facebook. 14:32
purl facebook is probably a social networking site used at most large universities or about 30% less annoying than myspace or too high friction to be really useful or i174.photobucket.com/albums/w89/pic...ebook2.jpg or a high school reunion where you can weed out the losers. Venue still sucks, though or failbook or assbook or a broken, glorified telephone
Coke in response to ovid's tweet/post about making money by doing cobol on parrot. 14:33
14:33 fperrad joined
Coke (basically a thumbs up) 14:33
whiteknight Austin had that same exact idea back at YAPC 14:34
pmichaud good morning
whiteknight I started writing a COBOL grammar at one point, but I didn't want to waste the several years of my life to do it
good morning pmichaud 14:35
pmichaud whiteknight: did you happen to see the discussion chromatic and I had last week about compilation performance and gc ?
14:36 Taulmarill left
pmichaud irclog.perlgeek.de/parrot/2009-11-20#i_1751189 # start of thread 14:36
Tene whiteknight: I was three weeks overdue. :) 14:38
pmichaud I was six. 14:40
whiteknight pmichaud: no, I haven't seen that thread
Coke pmichaud: holy crap. 14:41
purl only in the Vatican, my friend
whiteknight luckily for my wife, I think the doctors are going to induce earlier then 6 weeks overdue
Coke pitocin? 14:42
14:42 fperrad_ joined
Tene My mother allegedly climbed a mountain at two weeks, hoping to induce labor. 14:42
Coke (just seeing if purl had something witty to say.)
(JFP)
whiteknight pmichaud: Really outlines the need for a proper generational GC. a stable set of "old" PMCs (mostly Captures in your example) wouldn't need to get marked so often 14:44
of course there is added complexity of maintaining inter-generational pointer lists, but that should not be too bad in comparison 14:45
14:56 cognominal joined 15:07 fperrad joined 15:08 cognominal joined 15:09 bubaflub joined 15:11 Psyche^ joined
Coke wonders if perl6-internals is forwarding to parrot-dev. 15:13
15:15 fperrad_ joined
Coke (or, "did anyone else see ovid's post?) 15:17
allison Coke: I got ovid's post 15:19
Coke: but not as a forward, I'm still subscribed
dalek p-rx: 0ce5b09 | pmichaud++ | src/Regex/P6Regex/Actions.pm:
Automatically add ļæ½ lexical to regex blocks.
15:22
Coke I thought we had already killed that list. 15:27
is that a cent sign?
allison I think we left it up for a while because RT was still forwarding to it. Can be killed off now. 15:28
Tene Yes. 15:33
particle Coke: yes, that's dollar-cent
Coke is it a Perl6 thing? I don't see anything matching 'cent' in pugs/docs/Perl6 15:35
whiteknight if there's any reason in the world why I wouldn't use Perl6, it's because my keyboard just doesn't support it 15:37
moritz Coke: it's an internal thing, mostly 15:40
Coke: and something the end-user won't see
unless he pokes into the guts of the regex engine
Coke so, rakudo-only-internals?
moritz STD.pm uses the same thing 15:41
Coke so it's standard, then, and should be documented? =-)
(even if obscure?)
moritz probably
particle it's not in S05? 15:42
Coke particle: possible. I don't see the english text "cent" in there, but as just mentioned on #perl6, I can't do much with utf-8 at the moment. 15:45
dalek nxed: r205 | julian.notfound++ | trunk/winxed.winxed:
options -L and -I in compiler driver
15:49
nxed: r206 | julian.notfound++ | trunk/examples/parser.winxed:
a bunch of cleaning, refactor and improvements in example parser
15:58
16:04 cosimo joined
Coke pmichaud: I have a lot of code in runtime/builtins/*.pir to handle argument processing. can NQP help out with that, or am i basically going to have to reroll the pIR into NQP? 16:08
(since parrot doesn't really support rolling your own argument processing (perhaps after callsig, maybe)
pmichaud Coke: I'm not sure I understand the question fully (more)
You can either use the PIR, or you can rewrite the code into NQP, or you can do a mixture of the two.
Coke right, I was hoping for something more syntactical. 16:09
(basically, all of the tcl stuff uses *@args and hand-rolls the checks. 16:10
pmichaud I'm not sure what you mean by "more syntactical"
Coke pmichaud: I do not wish to write code.
perhaps more declarative would be a better choice of words. 16:11
Tene whiteknight: your OS doesn't provide extra support in typing characters not printed on the keys?
Coke uses character map for that on windows, and ... the similarly named thing on os x. 16:12
pmichaud Coke: do you have a more specific example (from builtins/*.pir) that can explain what you're looking for? 16:13
whiteknight Tene: it does, but that's still obnoxious
pmichaud oh!
or are you asking if you can have signatures ?
whiteknight and I'm not going to open character map and type out a bunch of U+ codes just to write a simple program
Tene whiteknight: in vim, I just type ^KCt 16:14
16:16 bogen left
Coke github.com/partcl/partcl/blob/maste...in/set.pir 16:16
set takes a varname and an optional value. I have to hand-roll all that code to get the right error message.
whiteknight Tene: if Vim is the solution, I would rather stick with the problem
Coke brb.
pmichaud Coke: right... I think you're looking for multisubs and smart dispatch
Coke pmichaud: tcl doesn't have multisubs. 16:17
and even if it did, I'd then need to override the error generated by an invalid MMD.
pmichaud right
Coke if I have to override the error /anyway/, why not just do it once?
pmichaud so, how does tcl do its argument processing ?
Coke no clue. brb. 16:18
16:19 Coke joined
Tene whiteknight: anywhere else, I just type Compose,c,| 16:19
Coke back
moritz++ #utf-8 help.
pmichaud Coke: however tcl does its native argument processing -- we should probably be doing the same 16:20
pmichaud reads a bit more tcl spec
Coke pmichaud: except for the fact that we're running on top of parrot, sure.
I don't think you'll find that in the spec.
pmichaud Coke: well, something in Tcl is able to take a list of arguments and easily filter it out into the various option processing things
it's like a tcl-specific version of getopts 16:21
Coke pmichaud: I've already written that.
in pir.
pmichaud can't the builtins just use that?
the set code you pointed me to looks... set-specific.
Coke those aren't options. 16:22
so, yes, i can refactor my code to do all that myself.
but I already /have/ all that code.
pmichaud if you're asking whether we can switch nqp to use the builtins you've already written, the answer is yes
Coke no. 16:23
I'm asking if nqp provides anything that would let me avoid writing that as handrolled code in the first place.
pmichaud well, nqp just follows what Perl 6 does, and in Perl 6 those would be multis
so short answer appears to be "no"
Coke Danke.
pmichaud that said, it shouldn't be hard to write a couple of helper routines to make it much simpler 16:24
i.e., to hopefully more closely follow whatever Tcl does
Coke pmichaud: tcl appears to have it handrolled for set: 16:26
tcl.cvs.sourceforge.net/viewvc/tcl/...iew=markup , line 1453.
"do we have 2 args?" (really 1, assuming there's an interp in there.), do we have 3 (really 2), oh, die with error message. 16:27
pmichaud Coke: I agree, it appears handrolled.
dalek nxed: r207 | julian.notfound++ | trunk/ (11 files):
Backward incompatible syntax change: arguments for init require parentheses in
Coke I would vastly prefer to use the NQP-style sub declarations and override the error message. I could use :callsig, but I'm not sure that buys me anything for such simple examples. 16:28
pmichaud I don't think you need callsig here anyway 16:29
if you have
our sub set($var, $value, *@args) { ... }
Coke and then die if args is defined. that works for this simple case, yes.
pmichaud then you can throw an error if @args > 0
Coke that fails for things like puts. 16:30
pmichaud re-reads puts
Coke whose signature has 1, 2, or 3 args, and the 2 arg version could be either a channel or an option as the first arg.
you cannot define a user-defined proc to do that except by handrolling, mind you. 16:31
pmichaud right.
Coke so it's all a little squishy.
pmichaud in that case I think it pretty much needs to be sub puts(*@args) { ... } and you just pick out the args yourself
note that I had to do this for sub if() 16:32
Coke yup, which is exactly how the pir version are written.
pmichaud: yah, if is one of the worst in that regard. =-)
pmichaud but if wasn't so bad in nqp
16:32 payload joined
Coke pmichaud: well, the PIR version is probably doing more atm. 16:32
we'll compare it again once we're passing t/cmd_if.t =-) 16:33
Coke wonders what the next big stumble was.
wasn't [regexp] going to require some nqp changes?
pmichaud I'm pretty sure that the version of 'if' I have is reasonably complete, except for error handling.
but even then error handling should be pretty straightforward.
Coke (one can hope =-) 16:34
pmichaud [regexp] needs an implementation of p5 regexes, I bet. 16:35
16:35 zak_ joined
Coke I'd prefer Tcl =) (seriously, p5 is going to be much closer than the p6 stuff.) 16:36
pmichaud oh, yes, we could go ahead and write the Tcl variant directly
Coke but for today, even having the p6 stuff /might/ be sufficient.
www.tcl.tk/man/tcl8.5/TclCmd/re_syntax.htm
PerlJam pm: check out the options to switch -- tmml.sourceforge.net/doc/tcl/switch.html
Coke PerlJam: the option parsing there is one of the things that I wrote for partcl. 16:37
(so you can use something like getopt to handle those.)
dalek rrot: r42797 | fperrad++ | trunk/tools/dev/mk_language_shell.pl:
[languages] fix templates
16:38
Coke pmichaud: (tcl variant) Any idea how much work that is?
pmichaud Coke: I'm guessing not too much
(for me, of course)
Coke biggest issue I see is that tcl's re syntax is really 3 different syntaxes 16:39
PerlJam Coke: (I half expect that pm has it already mostly done and is just waiting for the proper moment to spring it on you ;)
Coke PerlJam: heh.
16:39 patspam joined 16:41 gaz joined
Coke wonders if stuff written with nqp-rx will be amenable to mod_parrotization. 16:41
PerlJam Coke: re the 3 different syntaxs ... are you referring to the different "flavors"?
(i.e. posix REs, extended REs, and advanced REs) 16:42
16:43 jsut joined
pmichaud no, I don't have it mostly done yet. 16:45
Tene Coke: can you ask a more-specific question about nqp-rx and mod_parrot? 16:48
dalek p-rx: fb49c3e | pmichaud++ | src/NQP/ (2 files):
Treat leading '-' as part of numeric literals.
16:53
p-rx: fafe401 | pmichaud++ | src/Regex/P6Regex/Grammar.pm:
Add error message on incorrect range quantifiers.
p-rx: d982340 | pmichaud++ | src/stage0/ (3 files):
Update bootstrap.
Coke PerlJam: yes. 16:56
Tene: no
Tene ... okay.
:) 16:57
Coke I can be more verbose, though; at one point, hlls using pct were basically "mod_parrot-ready". i am wondering if partcl, if the -nqp variant replaces the current version, will have the same benefit.
dalek rrot-linear-algebra: c4cd881 | Whiteknight++ | (9 files):
move the tests for pmc types into the t/pmc/ folder. Break the tests apart so we only run these tests if the sanity tests pass
Tene There were problems using mod_parrot earlier with partcl? 16:58
PerlJam Coke: how do you syntactically distinguish between them? (e.g., in a command that takes a RE, how do you tell it which syntax to use for your RE? Or do some commands take one RE flavor and others take another?)
Coke tene, sfaik, it never worked, yes.
pmichaud afaik, the -nqp version of partcl should be much more amenable to working with mod_parrot
dalek rrot: r42798 | pmichaud++ | failed to fetch changeset:
[nqp]: Update with latest fixes to ļæ½, 1..x, negative literals.
pmichaud perhaps even "seamless"
PerlJam has anyone written a mod_parrot thing that uses the new NQP? 16:59
Tene PerlJam: No.
pmichaud PerlJam: you mean written mod_parrot with NQP, or that uses NQP?
Tene Coke: Yes, I expect the nqp version of tcl should run fine on mod_parrot.
pmichaud note that for most HLLs, once compiled the "NQP" part disappears. 17:00
Tene I'd be very surprised if nqp-rx was different from nqp in terms of mod_parrot issues.
pmichaud same.
17:00 iblechbot joined
Tene Not quite shocked, but very surprised. 17:00
pmichaud at the moment the compilers built with NQP still just create instances of PCT::HLLCompiler and use that interface 17:01
Coke PerlJam: ... I thought that was mentioned in the regexp docs at one point. hurm.
pmichaud Coke: my guess is that we just create an ARE compiler in partcl
PerlJam pmichaud: that's what I would think 17:02
pmichaud not trivial... but certainly doable and doesn't require much PIR
Tene Coke: if you're interested in mod_parrot experimentation, I'd love to help you over the long weekend. :) 17:03
Coke pmichaud: ARE should certainly be the default. 17:05
(trying to figure out if you can even use the others anymore.)
ah. (?b) = rest of RE is a BRE, (?e) rest of RE is an ERE 17:06
pmichaud so, they all start out as ARE, but can switch to BRE/ERE in the middle
Coke right. 17:07
sounds almost sixian. 17:08
pmichaud: if you can get me something that does, e.g. literal atoms and a quantifier or two, I can work on expanding it. 17:09
pmichaud Coke: I can do that.
Coke: I can do a bit more than that... probably not until much later today though
Coke I'll gladly take as many tuits as you offer. =-)
PerlJam: if you're bored, catch is basically just eval with an exception handler. =-) 17:11
PerlJam has no clue how to do exception handling. 17:12
pmichaud ...yeah, NQP really wants 'try' implemented. :)
it can be done with Q:PIR, though. :-)
Coke (I'd point you at catch.pir in partcl, but it probably has been converted to use HLL macros.) 17:13
PerlJam break/continue would seem simpler from my position of ignorance :)
Coke sure. those are mainly just copies of return. 17:14
Tene pmichaud: I can do try in NQP for you.
Coke (also error)
PerlJam Tene++
Tene pmichaud: do you want catch too?
17:15 cognominal_ joined
pmichaud Tene: I'd happily review a patch :-) 17:16
(yes, please)
Coke pmichaud: btw, I never applied your uplevel patch.
(figured you could have the karma - looked reasonable.)
pmichaud Coke: I'm not even sure where it is right now :-)
Tene pmichaud: give me an nqp snippet that you'd like me to make work. 17:17
Coke pmichaud: I'll see if I can track it down.
PerlJam bets that tcl AREs could be built by cribbing bunches of Regex/P6Regex/Grammar.pm
pmichaud PerlJam: you're correct.
Tene: I haven't even gotten that far yet 17:18
PerlJam for some reason I was mildly surprised that P6Regex were defined in Perl 6 :)
Coke pmichaud: huh. already applied. Danke.
pmichaud Coke: oh, I must've applied it w/o knowing about it then
dalek rrot: r42799 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
[distutils] _has_strip checks custom cflags
Coke pmichaud++ # magic code from nowhere.
PerlJam pmichaud: applying patches in your sleep?
pmichaud Tene: in the simplest case, we want try { ... } to catch any non-control exceptions, just like P6
I'm not sure what to do with them, though. 17:19
Coke I would imagine that try{} by itself would just eat the exception.
pmichaud yeah, it's the CATCH that's the tricky part.
Coke you can define exception handlers that only take a certain type. I dont know if you can define them to only take NOt a certain type. 17:20
(in parrot)
pmichaud: regarding "default values for args to proc" - I think that the string of arg info is being split on whitespace instead of "into words". (I think that explains the oddness on the "required args" error message.) 17:23
pmichaud Coke: I don't follow the question 17:25
Coke implied, "does my analysis look right to you"
the followup being, "I wonder how to change that" =-)
(the args to a proc is a list. if one element of the list is itself a list with two elements, the first is the var name and the second is the default value if it wasn't passed) 17:26
pmichaud oh, right.
yes.
Coke aha!
and looking at the code (should have done), you are doing a split. muahaha. 17:27
I might be able to fix that..
PerlJam making a real list data type sounds useful :) 17:30
Coke PerlJam: well, we have that in partcl. I am not sure which parts of it matter in -nqp. 17:31
(the biggest bits being stringification and listification)
Tene Coke: you can define EHs that take all types except those specified. 17:32
Coke Tene: ah, so there you go, just avoid control-type exceptions. 17:33
Tene pmichaud: CATCH is pretty easy. Just stuff the block into the 'control' attribute of the block it's in.
Coke tene++
pmichaud Tene: I'm more interested in where we stick the exception.
Tene Ah.
pmichaud Tene: but I'd be very happy with a version of try/CATCH that doesn't worry about where to put the exception yet :) 17:34
Coke hurm. I see in "our sub proc" where the variables are declared for the block. looking at parrot's PAST/Compiler.pir, I don't see an option to Var to say "and here's the default." 17:35
pmichaud Coke: viviself 17:36
purl well, viviself is certain to get run?
Coke will that only set a value if none was provided? 17:37
pmichaud for variables of :scope('parameter'), yes. 17:38
oh, in some other cases too.
basically :viviself says how to vivify the variable if it doesn't already exist.
...and it can be any PAST tree 17:39
Coke can it be a string literal?
dalek rrot: r42800 | pmichaud++ | failed to fetch changeset:
[nqp]: Latest fixes to $/, $ļæ½, and match handling.
pmichaud yes.
(string and numeric literals in PAST trees are treated as PAST::Val nodes)
lunch needed here -- bbiah 17:40
cotto pmichaud, is "for 1 .. 10 { ... }" planned for nqp-rx?
pmichaud cotto: 'for' already exists 17:41
cotto: the question is what NQP should do about the non-existent range type
(since Parrot doesn't have ranges)
cotto sounds like a feature request 17:42
Tene pmichaud: 'try' is statement-control or statement_prefix? 17:43
Hmm. Looks like the former. 17:44
Coke PAST::Var.new( :scope<parameter>, :viviself<@argument[1]> )
I presume I'm abusing the syntax horribly there.
pmichaud viviself(@argument[1])
<...> is a literal
<@foo> is literal ('foo') 17:45
er,
drat
<@foo> is literal ('@foo')
cotto: I suppose that NQP could treat $start..$end (infix:<..>) as a request to build an RPA from $start to $end
Coke ok. that is trying to instantiate a class of type "b" where b was the default value i wanted. 17:46
pmichaud ohhhhh
drat
Coke so very close. =-)
pmichaud :viviself handles strings differently, for backwards compatibility reasons
:viviself(PAST::Val( :value(@argument[1]) ))
have to explicitly use a PAST::Val node there (sorry) 17:47
er, PAST::Val.new
(I really need lunch)
Coke pmichaud++ # default values now work. 17:48
pmichaud #ps in 39? 17:51
whiteknight ah right, #ps 17:52
17:53 cconstantine_ joined
Coke pmichaud, PerlJam: got [llength] and default values for args. 17:56
(both involved 'treating things as lists')
that leaves catch and regexen as the two big things left.
dalek nxed: r208 | julian.notfound++ | trunk/examples/parser.winxed:
if statement and empty statement, and some changes in code generation in example
18:01
Coke ... except for all the other small things that are left. I'll update the TODO.
18:02 darbelo joined
cotto_work #ps in 30 18:03
er, 27
whiteknight 26.5
darbelo cues up the Johnny Cash. 18:04
Coke PerlJam, pmichaud: updated the TODO list for partcl-nqp; some of those are pretty smallish. 18:06
18:06 estrabd joined
nopaste "tene" at 97.117.77.36 pasted "nqp try (ignores all errors) for pmichaud++" (32 lines) at nopaste.snit.ch/18834 18:11
18:12 lucian joined
nopaste "tene" at 97.117.77.36 pasted "basic try test for nqp" (6 lines) at nopaste.snit.ch/18835 18:16
18:23 kj joined
mikehh #ps time 18:30
cotto_work kinda like business time, but not 18:31
Coke I cannot run the meeting today. 18:33
18:34 cognominal joined
Coke Tene++ 18:35
any parrot commiters want a google wave invite? 18:36
PerlJam I want to know why I have no invites to hand out. 18:37
(or if I do, where are they?) 18:38
Tene I've got plenty of invites.
Coke tene: i would love some help with the partcl-nqp experiment!
Tene 'kay
Coke I can make you a collaborator on partcl-nqp if you like.
Tene Sure. 18:39
Coke "tene" ?
(github)
Tene Yes.
Coke tene: done. check out: 18:40
git clone git@github.com:partcl/partcl-nqp.git
allison got the time wrong again 18:47
cotto_work dst-- 18:48
Tene Hi allison! Come rescue me from the mos thorrible #ps ever!
allison Tene: have we done priority review? 18:49
Tene We solicited recommendations for priorities, and got back "optimization, or turkies" 18:50
Coke can you make a turducken with a parrot? 18:57
PerlJam doesn't imagine that parrot tastes very good 18:58
dalek tracwiki: v3 | allison++ | DocsTasklist
tracwiki: trac.parrot.org/parrot/wiki/DocsTa...ction=diff
Tene pmichaud: there's a basic 'try' patch for nqp up there, btw. 18:59
PerlJam 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.
19:11 gaz joined
Coke ponders creating a Parrot Dev Wave. 19:21
Coke does so. 19:22
Tene = tenebrackets@googlewave.com 19:24
Coke tene: done 19:25
pmichaud: 19:27
> puts [set a "foo"]
extra characters after close-quote at line 1, near "]\\n"
pmichaud oops. 19:28
just remove the <.panic's> for now
I forgot about that particular case -- was trying to be a little advanced 19:29
Coke this whole chunK: 19:30
[ <?before \\S> <.panic: 'extra characters after close-brace'> ]?
?
(except the other one)
pmichaud yes 19:32
probably need to remove both of them (or comment them out), so that puts [set a {foo}] doesn't result in the error either. 19:33
Coke gone. 19:34
with that, partcl's t/tcl_misc.t parses. 19:37
19:42 kthakore joined 19:51 payload joined
nopaste "coke" at 72.228.52.192 pasted "why does this always go through the toupper branch, even when invoked with a first arg of "compare" ?" (20 lines) at nopaste.snit.ch/18837 19:52
Coke (that's in NQP-rx)
pmichaud because you're using == instead of eq 19:53
Coke ... if this were written in tcl, I would have tried that first!
pmichaud (== is numeric compare, eq is string compare)
cotto_work because... what he said
Coke does nqp have a < for strings? 19:55
pmichaud lt
same as Perl
Coke danke
pmichaud eq ne lt le gt ge
we don't yet have leg or <=> yet but those are likely to be added :)
pmichaud goes to look at Tene++'s try/catch patches 19:56
Tene: I think that 'try' is a statement prefix now. 19:57
19:57 bubaflub left
Coke <- idiot. 19:59
ok. two [string] subcommands done.
PerlJam: your incr code has an MMD failure, methinks. 20:00
cotto_work I'm not seeing anything like what chromatic saw with Capture's mark eating up ~88% of the time. 20:02
pmichaud hmmm 20:03
perhaps you could characterize what you do see then? (when you get a chance -- doesn't have to be immediate)
Tene Is it allowed to say "try foo();" ?
pmichaud Tene: yes.
Tene Okay, I'll change it.
Coke PerlJam: fixed. 20:08
Tene: the next thing partcl-nqp needs is catch. =-)
(which is our way of spelling try). no pressure. =-)
Tene Coke: give me a small tcl snippet and point me at the repo again and I'll do it. 20:11
Coke one thing just occurred to me; you're /not/ trapping control exceptions? 20:13
(I think tcl might need that.) 20:14
cotto_work seen chromatic
purl chromatic was last seen on #parrot 3 days, 3 hours, 3 minutes and 15 seconds ago, saying: msg kid51 RT #56110 can stay closed. The final message in RT #60000 can become a new TT. [Nov 21 17:10:18 2009]
nopaste "coke" at 72.228.52.192 pasted "for tene++: simple tcl catch samples" (11 lines) at nopaste.snit.ch/18838 20:16
mikehh All tests PASS (pre/post-config, smoke (#30160), fulltest) at r42800 - Ubuntu 9.10 amd64 (gcc with --optimize)
Coke partcl-nqp? 20:17
purl partcl-nqp is at github under partcl/ , nopaste shows the issue.
Tene Coke: Oh, actually, the patch I pasted does catch control exceptions too. I'll fix that for nqp also, thanks.
Coke Tene: well, I /do/ want to catch those. =-)
but I don't think we need it for right now.
Tene Well, that's easier then. That's the default.
Coke spif
partcl-nqp is also on github under partcl/partcl-nqp 20:18
purl okay, Coke.
Coke the numbers there are pulled from:
www.tcl.tk/man/tcl8.5/TclCmd/return.htm#M5 20:19
but at this point, I really just need the "try" aspect.
no, partcl-nqp is github.com/partcl/partcl-nqp 20:20
purl okay, Coke.
pmichaud try in nqp needs to (as much as possible) match the perl 6 semantics for 'try' 20:22
so if p6 doesn't catch control exceptions, then nqp shouldn't. 20:23
dalek nxed: r209 | julian.notfound++ | trunk/winxedst0.cpp:
allow more than one parent in class
Coke that's fine for partcl also, I can always implement catch based on tene's work for the builtin try. 20:24
Tene pmichaud: I'm working on it right now... just distracted by work. 20:26
dalek nxed: r210 | julian.notfound++ | trunk/examples/parser.winxed:
function args and for in statement in example parser
20:28
Coke Tene: added a catch variant that is more like [eval] as a placeholder. 20:35
20:35 kurahaupo joined
dalek nxed: r211 | julian.notfound++ | trunk/ (3 files):
drop from the stage 0 compiler the options now handled by the driver, freeing it
20:42
20:43 bluescreen joined 20:45 gaz joined
Coke pmichaud: fyi, partcl-nqp is currently slower than partcl at running t/sanity.t (when running partcl with the -q option to prevent including the stdlib.) 20:52
(only slightly slower.)
(about .50 for partcl, .55 for partcl-nqp) 20:53
pmichaud Coke: okay, good to know. 21:02
Tene pmichaud: okay, I have a better patch for you now. 21:05
nopaste "tene" at 97.117.77.36 pasted "try patch for nqp-rx for pmichaud" (44 lines) at nopaste.snit.ch/18839 21:06
pmichaud Tene: ... that still shows statement_control ? 21:07
21:07 joeri joined
Tene Oh, you want me to change that too? 21:07
Sure.
pmichaud + $past<handlers> := @handlers; 21:08
shouldn't that be $past.handlers(@handlers) ? 21:09
Tene Sure.
Really, I'd like to be able to autovivify $past<handlers> as an array. Can I do that? 21:10
pmichaud with pir::vivify, perhaps. 21:11
or you could do
oh wait
no
I don't want to be using the hash interface to set PAST node values.
(there's a reason we provide the method interface :-)
Tene Is there array literal syntax in nqp? []? 21:12
pmichaud yes
[] creates a RPA
Tene Okay, great.
pmichaud so you could do $past.handlers([ PAST::Control.new(...) ])
Tene I only set that default if there are no other handlers already present... I'll add CATCH and CONTROL blocks next, if you'd like. 21:13
pmichaud that would be excellent
dalek tracwiki: v4 | allison++ | DocsTasklist
tracwiki: trac.parrot.org/parrot/wiki/DocsTa...ction=diff
tracwiki: v5 | allison++ | DocsTasklist
tracwiki: trac.parrot.org/parrot/wiki/DocsTa...ction=diff
Tene Oh, yay, failure... Method 'isa' not found for invocant of class 'String' 21:14
Ah, I didn't save my grammar changes. :) 21:16
dalek tracwiki: v6 | allison++ | DocsTasklist 21:17
tracwiki: trac.parrot.org/parrot/wiki/DocsTa...ction=diff
Tene If we have statement_prefix:try, does that mean we have a postfix form of CATCH? 21:18
foo() CATCH { ... };
allison msg japhb I put in a start on the API discussion in the doc tasklist 21:21
purl Message for japhb stored.
japhb allison, nice timing! I just now got back, haven't even had time to backlog 21:22
Coke allison, pmichaud: going to try to reply to chromatic's message this long weekend.
allison japhb: :)
japhb: feel free to extend, alter, break into more detailed tasks, etc, I figured it was worth getting a stub in 21:23
japhb allison, thank you, I will, as soon as I get caught up. 21:24
Coke pmichaud: I suspect that if we can duplicate some of the builtins in the Grammar, we'll see a speedup.
pmichaud Tene: no, CATCH can only be used with the block form 21:29
Coke: ... duplicate some of the builtins in the grammar? 21:30
oops, have to pick up kid, bbi10
Tene pmichaud: I'm not quite sure about the semantics of :handlers on PAST::Stmts... if the exception is handled, it returns.
Which is probably wrong.
pmichaud Tene: enclose the statement in a block
Tene Yes, that's what I'm doing. 21:31
pmichaud bbi10
Coke pmichaud: that is, add protoregex for, e.g. command<for> that do the work of for as part of the grammar. 21:32
nopaste "tene" at 97.117.77.36 pasted "pmichaud: are these semantics right?" (37 lines) at nopaste.snit.ch/18840 21:34
"tene" at 97.117.77.36 pasted "the patch to make that work" (48 lines) at nopaste.snit.ch/18841 21:36
21:37 zak_ joined
pmichaud Coke: you mean precompile for statements instead of doing it dynamically? 21:38
er, [for] commands ?
Coke right. 21:39
(and [while] and a few others.)
pmichaud that's along the same lines of what I was thinking for [proc] 21:40
Coke pmichaud: turns out we need [regsub] also, btw. but I imagine that's trivial if [regexp] is working. 21:41
pmichaud Coke: in general what I've been thinking of doing is having a way to precompile strings into blocks and refer to them from code directly 21:43
dalek rrot-plumage: f841db9 | japhb++ | :
[METADATA] mt19937 update from fperrad++
21:44
Coke is there a way to copy over lib/test_more.tcl and t/** from partcl ? 21:46
pmichaud Coke: you mean "...and preserve history?" 21:47
Coke "via git", yah.
as opposed to just doing an offline copy/import.
pmichaud I imagine there is, but I don't know it.
Coke I have lib and t/ copied over in my checkout, trying to run any of the tcl based tests finds at least one thing to be fixed. =-) 21:51
Tene Coke: Yes, it's completely possible. Why do you want to do it, though? 21:53
pmichaud Coke: I think we could speed things up a fair bit if we cached the results of eval, expr, and proc. 21:54
and that wouldn't require modifying the grammar :-)
Tene pmichaud: is that try impl. good? 21:55
Coke Tene: just to share some files between partcl & partcl-nqp
for now, I'm just doing this in my checkout, which is fine.
pmichaud Tene: semantics look good 21:56
Tene Coke: What you'd do is use a tool to generate a set of commits containing only the given files, and then do a merge, or just paste the commits onto the top.
pmichaud looking a code
*at
21:57 Andy joined
pmichaud Tene: code looks awesome. do you have a commit to nqp-rx ? 21:57
Tene I... don't know. Lemme check.
Looks like no.
pmichaud github id? 21:58
Coke "tene" 21:59
Tene Yes.
pmichaud You now have commit.
Tene pmichaud: how do I update the bootstrap? Or should I just let you deal with that? 22:01
pmichaud Tene: I'll do it; Coke, do you need try/catch "right away"?
well, let me write it down here just so there's a record somewhere
the normal bootstrap procedure is
Coke IWBN, but it's not a priority, no.
pmichaud (1) make test in nqp-rx
Coke "soon", not "asap"
pmichaud (2) make bootstrap-files 22:02
(3) make clean test # to verify that the bootstraps work
Tene oh, we could use some 'try' tests, I bet.
pmichaud (4) commit files in src/stage0
Tene I need to do stuff for $work. AFK.
pmichaud (5) copy files in src/stage0 to parrot/ext/nqp-rx/src/stage0
test parrot, commit
yes, we do need 'try' tests 22:03
dalek TT #1331 created by allison++: Mac OS 10.5 configuration fix 22:04
Tene My nopaste would be a good place to start. That should cover everything we need.
pmichaud yes, I think the nopaste is a good start
dalek p-rx: b42c475 | tene++ | src/NQP/ (2 files):
Basic implementation of "try".
22:06
Coke dalek?
purl dalek is probably #parrot's spammy little rss bot or (see: dalek plugins)
Coke dalek plugins?
purl dalek plugins is github.com/Infinoid/dalek-plugins/tree/master
allison rebooting after system software update 22:08
22:09 cconstantine joined
Coke apparently when I added partcl-nqp to the language list before, I never submitted. 22:11
Coke pokes dalek with a stick.
22:12 zak_ joined
dalek tracwiki: v111 | coke++ | Languages 22:13
tracwiki: add partcl-nqp
tracwiki: trac.parrot.org/parrot/wiki/Langua...ction=diff
pmichaud decides to add caching to partcl-nqp
22:13 ruoso joined 22:17 cognominal joined
Coke pmichaud: > puts [expr 0==2] 22:18
The opcode 'iseq_i_n' (iseq<2>) was not found. Check the type and number of the arguments
== is defined as:
dalek nxed: r212 | julian.notfound++ | trunk/winxedst0.cpp:
fix a mistake in the output file name
nxed: r213 | julian.notfound++ | trunk/examples/parser.winxed:
fix local variables handling and add define var capability to for in
Coke 108:token infix:sym<==> { <sym> <O('%compare_numeric, :pirop<iseq Inn>')> }
pmichaud hmmm, I think nqp bug. 22:19
hmmm, I think maybe not.
okay, I'm not sure. 22:20
Coke (just fixed the name of that, btw, it's 'equality_numeric', not 'compare_numeric'
oddly, used in an expression in an if, that error doesn't show, it assumes that 2==0, and then goes down the wrong code path. 22:21
(at the tcl level)
pmichaud I think the problem is in the EXPR handling in nqp/hll 22:22
it's likely omitting 0 constant nodes from the tree
(due to incorrectly testing for true/false)
22:35 sjn joined 22:36 theory joined 22:40 allison joined
Tene purl: msg japhb nqp-rx has 'try' now. It will get 'CATCH' soon. 22:47
purl Message for japhb stored.
dalek nxed: r214 | julian.notfound++ | trunk/examples/parser.winxed:
one step towards assignment in example parser
japhb Tene, *pick a huzzah meme here* 22:48
Tene I think you wanted it for something?
pmichaud I have a few other commits for nqp, so will get bumped to parrot shortly.
japhb Yup. So far my best attempt at try without syntactic support is as seen at gitorious.org/parrot-plumage/parrot...qp#line194 22:50
which is ... not pretty
definitely LTA
And it was WAY worse before some previous NQP-rx improvements landed. For one thing, 22:51
the code you're looking at wouldn't have worked a week or so ago.
Tene because of no pointy blocks, right? 22:52
japhb Tene, because I couldn't refer to $!error within a pointy block, because there was no way to get to self.
dalek nxed: r215 | julian.notfound++ | trunk/Makefile:
fix make clean
Tene ah
japhb Tene, so what would that look like with the new try? 22:53
Tene japhb: there's no CATCH yet, so you'd just: try { ...; $errors=0 }; if $errors { ... } 22:55
cotto_work Has anyone verified the high amount of time spent in Context's mark while building nqp-rx's Actions.pm?
s/Context/Capture/
japhb Tene, but I wouldn't be able to get to $e, right? I actually need that ... it's how Config::JSON reports parse failures. 22:56
s/failures/error messages/
Tene Ah.
Yeah, that's right. It'll be passed to CATCH though. 22:57
japhb OK cool. Let me know when that's there, and I will *so* be making use of it. :-)
I love it when I can delete code from Glue.pir. 22:58
Tene japhb: what's up with the signature of that catch block? 22:59
$e, &c, @args
exception, continuation pulled from the exception, and what?
japhb The exception, the code PMC that was originally called, and the args that had been fed to it. Basically, the exception, followed by the first two arguments to try. Because it also works if you change the pointy block to some other invokable, and there were (are?) cases where I use one handler sub to handle multiple try's. 23:00
Tene Oh. 23:01
japhb I am just forced to use a pointy block when I'm doing try() within a method, if I want to be able to do anything to self . Otherwise, I have lexical search fail.
23:01 payload joined
Tene anyway, try { Readconfig($path); CATCH { $!error := "Failed to ... $path ... $_" } } 23:02
is what it'll be.
pmichaud +1
purl 1
japhb yeah, that will be one step closer to my happy place, definitely
Tene I think. I need to read up on $_ vs $! in CATCH blocks.
and the 'try' is unnecessary there, even.
pmichaud we'll likely want to keep try for NQP
japhb Fine by me. 23:03
pmichaud I'm pretty sure CATCH blocks start out with the exception in both $_ and $!
(if we can easily do CATCH blocks in NQP without the 'try' keyword, that's okay also)
(I prefer whatever keeps the code simplest/cleanest)
Tene pmichaud: it would be more-difficult to forbid CATCH outside of try. 23:04
pmichaud Tene: that makes sense also. 23:05
Tene pmichaud: oh... did you want me to add try/CATCH to ng as well? or are they already there? 23:06
pmichaud Tene: there's a version there, but it might be minimal and/or simply copied from master
Tene: you're very welcome to add/update them there
dalek tracwiki: v7 | japhb++ | DocsTasklist 23:07
tracwiki: Slightly rewind link to beginning of parrotsketch discussion (my original question)
tracwiki: trac.parrot.org/parrot/wiki/DocsTa...ction=diff
Tene Yeah, master uses the 'try' pasttype, which catches everything. 23:08
and doesn't ignore control exceptions.
dalek rrot: r42801 | pmichaud++ | failed to fetch changeset:
[nqp-rx]: Bump nqp with latest updates for .ast, try, more.
23:18
japhb dang it, this is on the tip of my tongue ... what's the positive word meaning non-conflicting in the sense of a list of statements or rules not conflicting with itself? 23:23
pmichaud compatible?
coherent?
purl coherent is, like, still in use
pmichaud stable?
purl Biologists have a term for systems which are "stable"... it is "dead". or a place that's filled with crap. or defecating.
Tene consistent
japhb Tene++
That's the one
thank you!
Tene :)
japhb That was driving me insane 23:24
Tene a list of statements or rules or... roles?
23:24 davidfetter joined
cotto_work Can it be Thanksgiving time please? 23:28
japhb cotto_work, I'm too full from lunch ... need to hold off a bit. :-) 23:29
cotto_work I don't care too much about food. I just don't want to be here at work.
It's kinda lonely. It's a ghost town. 23:30
pmichaud partcl incoming 23:37
dalek tracwiki: v8 | japhb++ | DocsTasklist 23:38
tracwiki: Summarize and collate comments from linked #parrotsketch discussion
tracwiki: trac.parrot.org/parrot/wiki/DocsTa...ction=diff
japhb allison, I think I've got most of my thoughts and last week's #ps discussion into trac.parrot.org/parrot/wiki/DocsTasklist now
pmichaud Coke: try the latest version of partcle and see if you get a performance win. It now caches the results of any compiled expressions or evals to avoid re-compiling them again later.
*partcl
afk, long dinner 23:39
23:44 mariano joined 23:47 kid51 joined 23:55 payload1 joined
cotto_work msg chromatic I've run valgrind --tool=callgrind ./parrot ext/nqp-rx/nqp-rx.pbc --target=pir ../nqp-rx/src/NQP/Actions.pm with an optimized and non-optimized Parrot and it only spends 20-22% of its time in gc_ms_mark_and_sweep. This seems inconsistent with the high amount of time you found to be spent in Capture's mark VTABLE function. 23:57
purl Message for chromatic stored.