Parrot 3.0.0 Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Goals: Deprecations as data, merge/cleanup, AutomatedHLLTesting, clean up false test failures | Schedule next weekend's Summit: doodle.com/4phzuaiahkgd3ie5
Set by moderator on 22 January 2011.
00:15 kid51 joined
dalek rrot: 09d0567 | jkeenan++ | config/gen/makefiles/root.in:
Add 'test_prep' prerequisite to several testing targets so that user can call them after configuration and get a parrot executable with which to run the tests.
01:02
rrot: 727bbd2 | jkeenan++ | / (2 files):
Parrot_Test.t needs parrot executable, so we need to add 'test_prep' prerequisite to 'perl_tests' target.
01:26
01:45 hudnix joined 02:00 whiteknight left 02:03 whiteknight joined
plobsing ping whiteknight 02:05
whiteknight pong
how are you tonight, plobsing? 02:06
plobsing can I kill Parrot_run_native() and the enternative op? they're in embed.c
whiteknight plobsing: kill with prejudice 02:07
plobsing \\o/ goodbye global variable!
whiteknight and if your mighty hellfire damages the surrounding code, so be it 02:08
plobsing the only thing it will damage is large swaths of (old) embedding tests. not sure if you care about those.
whiteknight ...no 02:09
kill those too
did you get my email from earlier? 02:11
KaeseEs how much traffic does the mailing list tend to get btw?
whiteknight KaeseEs: not too much 02:12
plobsing whiteknight: no sorry. I was out of commission most of today. will read now.
whiteknight okay, no rush 02:13
02:32 wagle left 02:34 wagle joined
whiteknight plobsing: I'm heading off to bed now. We can chat tomorrow or whenever 02:48
plobsing ok 02:49
02:49 whiteknight left 03:09 hudnix left
dalek rrot: df1c5ac | plobsing++ | compilers/imcc/ (4 files):
string constants are stored separate from (and before) PMC constants now
03:28
rrot: ca961cb | plobsing++ | src/ops/core_ops.c:
ops2c --core
rrot: 986fa1b | plobsing++ | / (7 files):
eliminate Parrot_run_native, enternative, and run_native (old embed API, non-reentrant)
rrot: d7b03e7 | plobsing++ | src/ops/core (2 files):
CONST_STRING() -> Parrot_string_new_constant
rrot: 2cac97d | plobsing++ | t/src/ (2 files):
eliminate/fix tests depending on Parrot_run_native
rrot: 476000d | plobsing++ | t/compilers/opsc/06-opsfile.t:
update opcount in test
ttbot Parrot 986fa1b5 i386-linux-thread-multi make error tt.taptinder.org/file/cmdout/889.txt (tt.taptinder.org/buildstatus/pr-Parrot) 03:30
plobsing ah, ttbot my old nemesis. we meet again. 03:35
dalek rrot: 26aa06e | plobsing++ | / (5 files):
eliminate unused wrapper__ opcode
04:01
04:11 kid51 left
dalek rrot: de77515 | plobsing++ | t/compilers/opsc/06-opsfile.t:
update core ops count in test
05:18
rrot: 2f0d61c | plobsing++ | / (3 files):
remove remaining references to Parrot_run_native
rrot: 2bc2128 | plobsing++ | / (4 files):
remove remaining references to enternative and wrapper__
05:45 Patterner left, Psyche^ joined, Psyche^ is now known as Patterner 05:51 rurban_ joined 05:55 rurban left, rurban_ is now known as rurban 07:51 fperrad joined 08:16 fperrad_ joined 08:19 fperrad left 08:20 fperrad_ is now known as fperrad 09:27 theory left 09:31 fperrad_ joined 09:34 fperrad left, fperrad_ is now known as fperrad
dalek rrot: be3c419 | (Gerd Pokorra)++ | tools/release/ (2 files):
fix typo remove not allowed comma for crow program
09:57
09:58 cogno joined 10:16 cogno left
dalek a: d9c8363 | fperrad++ | t/lua-TestMore:
update submodule lua-TestMore
10:17
a: c45c4d3 | fperrad++ | t/lua-TestMore:
update submodule lua-TestMore
10:50
11:09 cogno joined 11:13 aantn joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#4814) fulltest) at 3_0_0-196-gbe3c419 - Ubuntu 10.10 i386 (g++-4.5) 11:16
11:18 cogno left, cogno joined 11:34 whiteknight joined 11:47 fperrad_ joined 11:49 fperrad left 11:50 fperrad_ is now known as fperrad 11:55 jan left
dalek a: b77264b | fperrad++ | lua/lib/luaaux.pir:
now, parrot is strict with string encoding
12:17
TT #1872 closed by mikehh++: t/pmc/fixedstringarray.t fails coretest 64 bit with g++-4.5
TT #1872: trac.parrot.org/parrot/ticket/1872
TT #1987 created by mikehh++: Warnings from make headerizer 12:33
TT #1987: trac.parrot.org/parrot/ticket/1987 12:34
12:41 jan joined 12:44 kid51 joined
dalek rrot/whiteknight/imcc_interfaces: bd68dbf | Whiteknight++ | compilers/imcc/main.c:
remove old section of imcc_run which was handling the -r arguments. That's in the frontend now
12:46
rrot/whiteknight/imcc_interfaces: ffd1f41 | Whiteknight++ | frontend/parrot/main.c:
start rearranging the frontend code, adding in some stub logic to properly handle -r and -o from the frontend instead of in IMCC
rrot/whiteknight/imcc_interfaces: 6e800f9 | Whiteknight++ | frontend/parrot/main.c:
+func docs
rrot/whiteknight/imcc_interfaces: 2f0411b | Whiteknight++ | src/embed/api.c:
Add a new prototype API function to write a PackFile PMC out to a .pbc file. This will be used to implement the -o and -r commandline options in the front-end
rrot/whiteknight/imcc_interfaces: 9aac389 | Whiteknight++ | include/parrot/api.h:
headerize
rrot/whiteknight/imcc_interfaces: fa228c7 | Whiteknight++ | / (3 files):
handle -o and -r options from the frontend. delete some code in IMCC that checked them for errors, that wrote packfiles out to file, etc. Some tests fail, look mostly like tests for exact text of error message
12:46 cogno left
dalek TT #1873 closed by jkeenan++: Windows2000 version requirement impeded build 13:06
TT #1873: trac.parrot.org/parrot/ticket/1873
p-rx/nom: e282329 | jonathan++ | src/HLL/Grammar.pm:
Get two of the cheats into HLL::Grammar proper. This first one adds .O (just a wrapper around the PIR) and the second translates .panic into NQP.
13:08
kid51 whiteknight: ping 13:14
13:14 fperrad_ joined 13:17 fperrad left 13:18 fperrad_ is now known as fperrad 13:19 aantn left
dalek TT #30 closed by jkeenan++: make shared libparrot with an already installed shared libparrot 13:22
TT #30: trac.parrot.org/parrot/ticket/30
TT #1123 closed by jkeenan++: Make Test errors on OS X 10.6.1
TT #1123: trac.parrot.org/parrot/ticket/1123
whiteknight kid51: pong 13:33
kid51 Andrew, you are set up to be the automatic assignee for certain categories of Trac tickets, including 'docs'. 13:35
I wonder whether you really want to take something like ...
whiteknight I am set up for some categories. I don't know which ones
I know I'm set up for the embedding/extending stuff. Docs may have been an old thing
kid51 ... TT #1976 13:36
whiteknight no, that's probably something for dukeleto
kid51 I was re-reading one of your blog posts from about Nov 21 yesterday. It seemed to suggest that that was when you took over several categories. 13:37
whiteknight I probably don't want to be automatic assignee for docs
kid51: I did take over a few categories around then, but I think I was already set up for a handful previously
kid51 Can you go to the admin interface and check which categories are assigned to you?
whiteknight okay
done 13:41
13:48 cogno joined
dalek rrot: a823c01 | (Gerd Pokorra)++ | tools/release/templates.json:
change the text output a little bit
13:50
13:51 rurban_ joined 13:55 rurban left, rurban_ is now known as rurban
whiteknight ooh, I have a commit coming up that rips out a LOT of dead IMCC code 14:01
14:08 JimmyZ joined, cogno left
dalek p-rx/nom: 250d2a3 | jonathan++ | src/HLL.pir:
Re-shuffle include order so that for the earlier bootstrap stages the old cheats in HLL::Grammar take precedence.
14:09
p-rx/nom: a0f4265 | jonathan++ | src/HLL/Grammar.pm:
Add LANG, MARKER, MARKED. Partial ports to NQP, with some embedded PIR still.
14:44 cogno joined
dalek TT #1988 created by jkeenan++: lib/Parrot/Pmc2c/PMCEmitter.pm: Is this file useless? 14:45
TT #1988: trac.parrot.org/parrot/ticket/1988
p-rx/nom: 583c7bf | jonathan++ | src/HLL/Grammar.pm:
Add EXPR and related, plus ternary, to HLL::Grammar.
14:46
p-rx/nom: 659a99f | jonathan++ | src/HLL/Grammar.pm:
Get the remaining HLL::Grammar cheats put into NQP bodies, and in one case just port entirely to PIR. In theory, this should be all that's needed to switch Grammar/Actions over to 6model. In reality, there's some bug(s) somewhere. :-(
15:02
15:08 cogno left 15:40 cogno joined, kid51 left
dalek rrot/whiteknight/imcc_interfaces: 661f90d | Whiteknight++ | / (25 files):
remove the PASM emitter from IMCC. It has never worked, the RT ticket it pointed to was WONTFIX, and the error message was obnoxious. Remove tests which relied on the feature. We have no more tests for the IMCC optimizer, but it's stable and devs aren't exactly lining up to modify it.
15:51
16:01 cogno left 16:07 mberends joined 16:59 JimmyZ left
dalek p-rx/nom: 3887fc5 | jonathan++ | src/ (3 files):
Switch grammars over to 6model. This includes changes to get protoregexes working again. Sadly, due to some other bug, much is still broken.
17:20
p-rx/nom: 28c49b3 | jonathan++ | src/Regex/Cursor2.pir:
Unbreak language transitioning - probably a copy-pasto.
p-rx/nom: 37173b1 | jonathan++ | src/HLL/Grammar.pm:
Fix a translate-o in HLL::Grammar.LANG.
p-rx/nom: 5763b4a | jonathan++ | t/nqp/45-smartmatch.t:
Skip some tests that are Parrot-dependent and could never work in a portable NQP.
p-rx/nom: 43af670 | jonathan++ | src/NQP/Actions.pm:
Avoid trying to emit meta-object calls for methods/regexes that are written outside of a package; cleans up the last issues with the tests and mostly unbreaks NQP setting compilation.
17:36 theory joined, nwellnhof joined
dalek rrot/whiteknight/imcc_interfaces: b7727ba | Whiteknight++ | compilers/imcc/ (3 files):
remove unnecessary write_pbc field from imcc_info_t
17:48
rrot/whiteknight/imcc_interfaces: b53d916 | Whiteknight++ | / (6 files):
move IMCC preprocess logic into it's own interface function, and call it from the frontend.
rrot/whiteknight/imcc_interfaces: 8c2d323 | Whiteknight++ | / (4 files):
rearrange the signatures for some IMCC functions so they aren't taking a PMC** argument to output to
rrot/whiteknight/imcc_interfaces: c86db10 | Whiteknight++ | frontend/parrot/main.c:
remove old localization code. This is handled in the IO system now
Heuristic branch merge: pushed 600 commits to parrot/nwellnhof/gc_dynamic_threshold by nwellnhof 18:08
18:29 cogno joined
whiteknight I'm having too much fun ripping up this old IMCC code 18:29
hard to believe this is work
tadzik ...ing? 18:31
whiteknight no, it works just fine 18:32
jnthn 600 commits? Glad the heuristic merge tracking is implemented! 18:33
tadzik I mean, did you mean "hard to believe this works"? 18:34
whiteknight tadzik: No, I can't believe this is work. Like, people get paid for this 18:37
but I'm having too much fun
dalek rrot/whiteknight/imcc_interfaces: a5ef678 | Whiteknight++ | compilers/imcc/main.c:
move all input file logic into the determine_input_file_type function, where it belongs. rip out dead code relating to -r and -o options. imcc_run is small enough to fit on a single screen of code
18:39
rrot/whiteknight/imcc_interfaces: 2c11c10 | Whiteknight++ | compilers/imcc/main.c:
merge compile_to_bytecode into imcc_run. We now have a much clearer picture of what is required to compile a file with IMCC
rrot/whiteknight/imcc_interfaces: 4187a2f | Whiteknight++ | compilers/imcc/main.c:
misc cleanups and consolidations
18:41 cogno left 19:00 cogno joined 19:11 cogno left 19:18 cogno joined 19:33 cogno left
dukeleto ~~ 19:38
tadzik o/ 19:40
dukeleto tadzik: wazzup? 19:43
tadzik dukeleto: learning your favourite math analysis :) 19:44
cotto ~ 19:47
seen kid51 19:48
aloha kid51 was last seen in #parrot 6 hours 10 mins ago saying "Can you go to the admin interface and check which categories are assigned to you?".
dalek rrot: dff0be2 | plobsing++ | src/p (3 files):
silence headerizer warnings
19:49
dukeleto tadzik: hilbert spaces? 19:54
cotto: mornin'
cotto hi dukeleto 19:55
tadzik dukeleto: nah. Integrals on circles, Laurent series, differential equations using the "Operator method" (Laplace transformata)
dukeleto tadzik: i named my cat after Cauchy's Integral Theorem :) 19:58
tadzik so how do you call him?
dukeleto her name is Cauchy, and I used to joke that she left a resiude at each pole, but thankfully she doesn't :)
residue, even
dukeleto ruins the joke
dalek p-rx/nom: 125d4ab | jonathan++ | src/setting/Hash.pm:
Unbreak setting compilation.
19:59
p-rx/nom: 910fcac | jonathan++ | src/NQP/ (2 files):
Only add the return exception handler when there's a return statement in a routine. On Parrot, adding one to a sub that doesn't use it makes the invocation over 3 times more costly; since EXPR and so forth are now wrapped in NQP subs, we really need to save on this.
p-rx/nom: 6a1bb2a | jonathan++ | src/metamodel/reprs/P6opaque. (2 files):
A little sloppy programming saw every attribute get/bind in P6opaque accidentally cause the creation of two GC-ables. This brings that down to zero, as it was intended to be.
dukeleto tadzik: i assume lots of math jargon is different across English to Polish, so some jokes may not translate well
tadzik dukeleto: a second ago 3 persons laughed at it :)
dukeleto cotto: thanks for shedding a tear in my direction about the gcc bug 20:00
cotto ;( 20:01
dukeleto tadzik: what are you hacking on?
tadzik: can you commit the script you used to generate deprecated.json ? 20:02
tadzik: we are thinking that we want to use YAML instead, since it is easier for humans to edit and read. And source code still seems to get written by meatbags
cotto At least it isn't another 323
tadzik dukeleto: I don't want to share that source code :(
unless I must (: 20:03
nwellnhof cotto: i'd consider 323 a Linux bug.
tadzik and I'm not hacking on anything, I have this math exam tomorror
cotto a disadvantage is that we'll need a yaml parser
tadzik isn't there a JSON parser in Parrot? 20:04
dalek rrot: 2d5b09b | nwellnhof++ | src/hash.c:
Zero the correct amount of memory when expanding hashes

This fixes linear hash iteration. Strange that this hasn't been noticed before.
cotto tadzik, there is one for json 20:05
tadzik wklej.org/id/463001/ -- this is this horrible script
dukeleto tadzik: i have written code at least 100 times worse than that :) 20:06
tadzik the 'depr2' is an output of `pod2text DEPRECATED.pod`
...how is _that_? :)
dukeleto: it's the "I'm lazy and I want this done" code ;) 20:07
dukeleto tadzik: gotcha
cotto That's good. We have lots of "this is ugly and I want to make it better" people.
dukeleto cotto: do we want to use YAML if parrot doesn't have a YAML parser yet?
cotto: we can just use Perl 5's YAML.pm, it won't become a dependency, since it is only developers that will generate that file 20:08
cotto I can pretty easily imagine myself getting annoyed with json's lack of multi-line strings.
wfm
dukeleto cotto: and I want to make a web interface to deprecated.(json|yaml), so it is easy for people to say "tell me which code is deprecated for this github project" or something like that 20:09
cotto especially since we won't have to write it
dukeleto, awesome
dukeleto really should be working on his TPF grant
nwellnhof: how did you find that bug?
nwellnhof: i don't see a test in that commit. Is that hard to test? 20:10
nwellnhof dukeleto: one of the new tests in hashiterator.t broke when i was hacking on GC related stuff 20:11
cotto dukeleto, gcc.gnu.org/bugzilla/buglist.cgi?qu...mp+warning 20:12
cotto makes a note for future reference
whiteknight what's interesting about that bug is that I don't get the warning on every API function, even though every API function calls setjmp in the same way through a macro 20:18
weird
cotto whiteknight, is it safe to say that Parrot_pf_get_current_code_segment and Parrot_pf_get_current_packfile, which return interp->code and interp->initial_pf, should never return NULL? 20:19
dalek rrot: 2cb55d9 | cotto++ | / (4 files):
silence remaining headerizer warnings
20:32
cotto plobsing, don't forget to bump PBC_COMPAT when removing an op. 20:36
dalek rrot: 6b0ed4c | mikehh++ | src/packfile/output.c:
fix codetest failure - linelength, update copyright and fix header documentation
20:40 slavorg left
plobsing cotto: with dynops mapping, we no longer need that coarse-grained mechanism for tracking oplib changes. we can use a mechanism for oplib versioning, all the parts are there, with the exception of ops2c, which has no syntax for specifying the version. 20:43
dalek TT #1987 closed by cotto++: Warnings from make headerizer 20:45
TT #1987: trac.parrot.org/parrot/ticket/1987
cotto plobsing, ok. What would a new mechanism look like? 20:48
whiteknight++ # die "damnit" 20:50
plobsing cotto: no idea. we just need some way of specifying the version that gets into the op_lib_t. 20:51
20:51 Kovensky left, Kovensky joined
plobsing probably a statement in the ops file 20:51
cotto op_lib_t only knows about parrot version, not bytecode, Maybe we need to move that out of pbcversion.h. 20:53
20:53 slavorg joined
plobsing op_lib_t has a major, minor, and patch. those are for the oplib itself. 20:53
that way you don't try to load an incompatible version of a dynoplib 20:54
currently they are tied to parrot version for core and zeroed for dynops. that is LTA. 20:55
dalek p-rx/nom: 5d9c643 | jonathan++ | src/metamodel/how/NQPClassHOW.pm:
Fix a really silly bug in method cache construction.
20:56
p-rx/nom: 1e0c709 | jonathan++ | src/metamodel/rakudoobject.c:
A cleaned up version of the method finding code. No functional changes, was just easier to reassure myself this bit wasn't the problem by factoring it this way, when hunting the issue fixed in the previous commit.
NotFound whiteknight: I think the throw/rethrow thing is fixable, factoring the common part of throw and rethrow out of the throw functions, calling that common part from the rethrow ones, and cleaning the iterators and backtraces in the non common part of the throw functions. 21:02
dalek p-rx/nom: e11a117 | jonathan++ | src/stage0/ (5 files):
Update the bootstrap to use 6model during the parsing all the way through the build. At this point, there's still a bunch of clean-up work to do to eliminate the old cursor and the rename Cursor2 back to just Cursor.
21:03
rrot: 8208489 | nwellnhof++ | t/pmc/hashiterator.t:
[t] Improve hashiterator.t

Now there's a better chance to trigger the condition fixed by my previous commit.
21:04
nwellnhof dukeleto: that's the best i can do
dukeleto whiteknight: i have been told that the ANSI 89 C standard is ambiguous about what happens when setjmp/longjmp happens, and each compiler does whatever they want
nwellnhof++
sorear NotFound: I'm pretty sure your last comment to #1981 was meant to go on #1978 21:15
NotFound sorear: uh... Epic historial fail. 21:17
21:18 plobsing1 joined 21:23 plobsing left
dalek p-rx/nom: ff8c915 | moritz++ | build/PARROT_REVISION:
bump PARROT_REVISION to something non-ancient
21:25
p-rx/nom: 1401ec6 | jonathan++ | build/gen_parrot.pl:
Apply gen_parrot.pl fix as also found in Rakudo's gen_parrot.pl to avoid a Win32 issue.
21:30
jnthn Hm. I'm guessing Parrot_gc_allocate_fixed_size_storage doesn't give back zeroed out memory? 21:44
sorear Why should it? 21:45
sbrk gives back zeroed memory because free pages can contain other users' sensitive data
but everything in the Parrot process trusts everything else
jnthn sorear: I wasn't really saying it should or shouldn't. 21:46
sorear: Just trying to get confirmation that it did. 21:47
or didn't
:)
Found now in the source where it's clear that it doesn't.
plobsing1 my understanding is that it could eventually, but it hasn't been a high priority
jnthn plobsing1: It doesn't matter to me either way, tbh. 21:48
plobsing1: I can easily clear it.
21:49 plobsing1 is now known as plobsing
plobsing we have functions for zeroed memory somewhere IIRC 21:50
jnthn plobsing: Yes, I was using one of them before.
plobsing: But wasn't using the fixed size allocator before
Hmm. An unscientific initial result says it shaves 5%-10% off the nqp-rx test suite. 21:51
(over malloc) 21:52
Given parsing allocates a LOAD of cursors, which are all the same size, it'll get a good hit rate I guess.
nwellnhof and there's still a bit room for improvement in the fixed size allocator. 21:53
21:53 rurban_ joined
jnthn Nice. :) 21:54
21:55 rurban left, rurban_ is now known as rurban
dalek p-rx/nom: f508992 | jonathan++ | src/metamodel/reprs/P6opaque.c:
Switch from malloc to the fixed size allocator for object bodies.
21:56
22:31 PacoLinux left 22:52 Limbic_Region joined 22:53 nwellnhof left
whiteknight jnthn: the fixed-size allocator shaves 5% off the nqp-rx test suite for you? 23:11
jnthn whiteknight: It wasn't very scientific. 23:13
It seems consistently about that much faster over a few runs.
whiteknight still, I'm very happy about any positive results there. that was my design originally and I'm glad to see it's not completely stupid
as nwellnhof mentioned there are some opportunities to improve it 23:14
jnthn whiteknight: Every 6model object allocation now is malloc-less; it's a PMC heaeder and then a body allocated with the FSA.
Well, every one using the P6opaque REPR, which is the common case at the moment.
whiteknight awesome
jnthn It's almost certainly a win at parse time.
When loads of cursor objects are created.
whiteknight right 23:15
cursors are PMCs? 23:19
jnthn Cursors are objects 23:20
6model objects live inside a PMC but it's a shim.
At heart, 6model on Parrot cares about what PMCs are just the same as it cares about what CLR objects are in the CLR implementation, or JVM objects are in the JVM implementation. They're the language the VM speaks so it has to deal with them. 23:24
whiteknight: BTW, were you looking at exceptiony stuff of late? 23:26
If so, see gist.github.com/792205 if you have a moment.
Summary: the way to do return exception handlers carries some serious overhead. 23:27
Even when no exception is ever thrown.
NotFound jnthn: if you want to be able to catch a exception, you should set up a handler. 23:33
jnthn NotFound: HuH/
NotFound: That's what the code does. How should it do it correctly/more efficiently? 23:34
'foo' is with no handler. 'bar' is the same thing but sets up a handler, which in the end is never used (a quite common case).
And just setting up the handler makes things 3-4 times slower. 23:35
NotFound Sorry, english fail. I mean, that's the way is supposed to work. The overhead is required by design,
jnthn Then the design is wrong.
Wasting time at runtime to set up something that exists statically is really not helpful from a performance perspective. :( 23:36
NotFound If the function does not need the handler, the compiler should be able to optimize it out.
jnthn Well, yes, I've put in a change to do that in nqp-rx. I'm not sure we can do that so easily in full-blown Perl 6. 23:37
But I think my point still stands. The .Net CLR manages to keep exception regions as static meta-data rather than having per-invocation setup work.
23:38 luben joined
NotFound The ExceptionHandler probably can be a const PMC, the push_eh must be at runtime, with the current design. 23:39
23:40 fperrad left
jnthn I'm not sure which of those two carries the main cost. Could be worth looking into. 23:40
NotFound push_eh is not as cheap as it can be. 23:41
cotto ooc, when exception handers are in use, is it the common case to have more than one exception hander active at once? 23:45
jnthn cotto: In what scope? Within the current block?
cotto: From a Perl 6 point of view, the commonest case is just one (the return exception handler). 23:46
Of course, there's plenty of them "active" up the call chain, but only one liable to be hit at a given point in time.
whiteknight jnthn: Yes, we've known for a while that ExceptionHandlers should be able to be const'd and not rebuilt every time 23:47
cotto ok. I'm just thinking about optimization possibilities.
NotFound cotto: that is one of weak points. We don't optimize the one handler case.
cotto No. I was noticing that. 23:48
plobsing why can't we simply define a range of bytecode as being handled by an exception handler similar to how annotations work? 23:49
NotFound cotto: I've looked at that several times, but haven't found a way yet,.
jnthn plobsing: That's basically what the CLR does, fwiw. 23:50
plobsing I stole the idea from dan's blog
jnthn :)
cotto NotFound, that'd still be papering over the problem. It'd be nice if we could do what plobsing is talking about.
NotFound RFCs welcome 23:51
plobsing fwiw, I suspect actually throwing exceptions would become more expensive in the general case under such a strategy
cotto That's not such a big deal if exceptions are exceptional. 23:52
NotFound I suspect that control exceptions aren't exceptional in some langauges. 23:53
cotto I don't think they are in nqp-rx. 23:54
jnthn Yeah, control exceptions can be very normal. 23:56
At the moment, though, setting up an exception handler seems to cost 2-3 times as much as a sub invocation.
So if there's a slight cost increase for throwing, the end result could still be a notable win. 23:57
luben Parrot exceptions are full continuations, they are not cheap 23:58
whiteknight plobsing: in NCI, what does the signature "PJt" mean?
the P and J I understand, the t not so much
plobsing t = c string 23:59
null terminated
automagical. bad idea.
whiteknight plobsing: Oh, obviously. What's the symbol for a Parrot string? S?