parrot.org/ - clean up those smolders for the release!
Set by moderator on 20 October 2008.
00:09 AndyA joined 00:16 Debolaz joined 00:20 pjcj joined
dalek Krishna Sethuraman | Parrot Development on Windows: 00:22
link: www.perlfoundation.org/parrot/index...on_windows
pmichaud particle: All modules assigned to PARROTRE 00:25
00:35 particle joined
GeJ Infinoid: could the thread race be flirting with the GC? 01:03
GeJ reads docs/stm/thread-issues.pod/Dead Object Destruction with fear 01:04
chromatic Someone needs to run it through Helgrind.
GeJ it's part of the valgrind package, correct? 01:07
01:08 petdance joined
Infinoid yeah, its a valgrind thing 01:09
chromatic That's right.
01:14 Ademan joined 01:22 chromatic joined 01:34 purl joined
Infinoid aaw, the helgrind in valgrind 3.x hates x86-64. 01:51
...and I can't reproduce it on 32-bit linux x86 01:52
how does the command line flag "-t" and threads interact? is only the first thread traced? 02:01
chromatic Probably, but I don't know for sure. 02:02
Infinoid I don't see anything else running when the first thread goes to sleep. (the test does a "sleep 1", presumably to let a child thread let it do the stm_start thing.) 02:04
heh. with a load average of around 7, its harder to reproduce. 02:06
Infinoid reads up on STM 02:11
if you're using pthreads to support the stm test, is it fair to use a pthread conditional to make sure all the threads are ready first? 02:20
that "sleep 1" doesn't seem healthy to me.
02:41 Psyche^ joined 02:58 jsut joined 03:06 integral joined 03:15 stockwellb joined
Infinoid in fact, since I've had enough problems in the past with using sleeps for multithreaded tests, how about just replacing these tests with race-free ones? 03:16
the following nopaste contains a test which runs reliably for me, and runs a lot faster than the existing stuff.
nopaste "Infinoid" at 75.28.74.251 pasted "race-free STM test" (81 lines) at nopaste.snit.ch/14356
Infinoid that runs successfully for me 100 times in a row, on a box that was intermittantly failing basic_mt.t test #4. 03:17
ever notice how you're 10 times more likely to spot errors after you've already clicked the Send button? sigh. 03:19
stockwellb anyone familiar with "make reallyinstall"? I'm wondering why my runtime/library doesn't work. e.g. I can't run the tutorial 90_writing_tests.pir 03:24
Infinoid stockwellb: parrot doesn't install very happily. until that stuff is fixed, it's preferred to just run it out of the source directory. (maybe symlink the parrot binary into your path if it helps) 03:25
stockwellb everything works fine if I pass in the library path with -L, I just aliased that into my .bashrc and everything seems to be going smooth. Just thougt that might be a poor workaround. 03:27
Infinoid eh, that works. its more trouble to set up than just running it out of the source tree, but it sounds convenient. 03:29
stockwellb I guess I just wanted to try to run it on the system for real. Symlinking the binary, as you pointed out, does sound like a better idea. Thanks 03:31
Infinoid ok :) 03:34
the other thing I should mention is... "reallyinstall" tends to confuse things when the machine has had 2 versions of parrot installed at some point 03:35
stockwellb I really didn't have too many problems. I'm runnng ubuntu 7.10 and I had originally installed the parrott package 0.4.something so I uninstalled that and ran "reallyinstall" The only big problem was with /usr/local/lib not being in the config path. I fixed that an the basic install seems to work fine. 03:38
Infinoid cool. 03:39
03:41 chromatic joined
stockwellb There, I removed the alias and symlinked parrot from my local build. #Infinoid do you symlink any other binaries or just parrot? 03:43
Infinoid depends on what you want to do with it. you might try "make perl6" and symlinking that binary too
stockwellb I was just browsing and looking at some others that I've never used like pbc_to_exe, pbc_merge etc. 03:44
Infinoid yeah, those are internal build tools 03:45
stockwellb Cool, I'm building perl6 now. No stones please, I'm not really a perl guy. Mostly python and ruby. I do however really dig playing around with pir. 03:47
Tene stockwellb: we've got a ruby and python implementation that could both use some help. :)
Infinoid yep, cardinal and pynie 03:48
lots of languages in various stages of completion. :)
stockwellb I'm such a newbie at all of this I'm not sure I would even be a benefit. I fear I'd be more of a burden by asking all sorts of stupid questions. 03:49
Tene stockwellb: always feel free to ask questions here. If nobody wants to answer or is around, no harm done.
Infinoid yep, parrot is what we're here for after all 03:50
stockwellb This is actually my first irc. 40yo virgin! Well not anymore. 03:51
Infinoid cool. I've been on IRC for more than a decade, but ... you weren't missing much 03:52
stockwellb #Infinoid, thanks for catching me up on 10 years of chat. I feel very current now! 03:53
Infinoid that was easy, huh?
stockwellb Sure was, now could you do the same for Perl? 03:54
Tene In the beginning, there was Larry.
Infinoid and then we revved him 6 times or so
stockwellb Wow, now I'm really feeling the way of the camel. 03:55
So do you guys (#Tene, #Infinoid) do much PIR programing? 03:56
Tene Yeah, sometimes.
Infinoid I do a little. I've written a few tests
Tene I wrote most of Cardinal. 03:57
Lolcode.
purl lolcode is probably HAI CAN HAS STDIO? VISIBLE "HAI WORLD!" KTHXBYE or at lolcode.com/
stockwellb I was looking at LOLCODE the other day!
Infinoid we have that too. :)
hmm. by the way, learning perl took me a while, and wasn't exactly a straightforward process
I think it took me a couple of tries.
and I'm still trying to wrap my head around perl 6 03:58
chromatic Race free tests sound good to me. 03:59
Infinoid chromatic: I will get back to you on that, once I've got race-free versions with the same semantic coverage 04:00
stockwellb I'm just working through the tutorials for PIR and trying out little goofy things. I did a bubble sort about hour ago. So you can see I'm entry level and not so hard core as you folks.
Infinoid it isn't a competition. glad you're doing interesting things :) 04:01
stockwellb Thanks, but seeing chromatic in here makes me think there's probably a better place for a newbie to be. 04:03
04:03 Aisling joined
chromatic Oh I won't abuse you too much, don't worry! 04:03
stockwellb Thanks #chromatic, I should get some points for reading almost everything you've written. 04:04
Infinoid heh. the "when I am emperor" series is classic
anyway, if you're interested in parrot, we got parrot, you're in the right place. 04:05
chromatic I need to update that, but I really need to finish the next novel.
GeJ stockwellb: just remember it's CAPITAL_P-erl-SPACE-6 and you should be safe.
Infinoid svn commits are logged here, blog updates are logged here, we have eval bots, the works
lolcode: VISIBLE "HAI"
polyglotbot OUTPUT[HAI␤]
stockwellb I'm most gracious to all of you. 04:06
Tene stockwellb: don't feel overwhelmed. I knew nothing at all about parrot when I started hanging out here. 04:07
Infinoid I still don't know much about most of parrot... it's a big project
Tene I think there's a part where we have some compilers or something.
And, like, some tests, kinda? 04:08
Infinoid people get lost in imcc one day and never come back
now that the release is out the door, I'm going to get rid of the pdd13pbc branch and move my PMCs to trunk and just develop them there... I don't really have anything branch-worthy to do until I start migrating everything over to the PMC interface
stockwellb Maybe I could start at the absolute most bottom floor e.g. parking level -3.
Infinoid until then, merging is a pain that isn't really worth it 04:09
chromatic Even with SVN 1.5?
Tene Does 1.5 still need that tags thing everyone does? 04:10
chromatic As I understand it, 1.5 remembers merge points... so hopefully not.
Infinoid still an extra step. every time I merge I get the latest features and also the latest bugs, which means I have to pay more attention to the rest of the system to know when to merge the fixes for those. its more than I need to be paying attention to. 04:11
I have a limited attention span, I'm easily distracted by shiny things.
Tene commits a lojban grammar to languages/ 04:12
Infinoid I'm hoping that when it's time to branch (to move over parrot and pdump and everything) the branch will be short-lived this time
chromatic I'd like to see much shorter branches. 04:13
I'm glad(ish) the MMD branch merged sooner rather than later, but the fallout has been unpleasant.
Tene hllmagic branch was short!
;)
Infinoid are there any known outstanding issues from MMD? 04:14
chromatic The Complex PMC.
Re-entering the runloop from C tends to lose PIR parameter locations in the bytecode, or at least the context structure.
I fixed the nasty weird of the CPointer PMC last night. 04:15
Infinoid is that related to pmichaud's subclassing woes, or some other nasty weird? 04:19
chromatic CPointer was something else.
Infinoid oh, oops.
stockwellb I did an svn update, make clean, make. I'm still at version 0.7.1 shouldn't I be at 0.8.0? 04:23
chromatic Did you perl Configure.pl in the middle there? 04:25
I *think* that's what updates the version, but I don't know for sure.
stockwellb Uhmm I didn't configure again, I didn't think I had to do that everytime. 04:26
I'll try that right now.
chromatic Normally you don't, but that updates some files. The version number may be one of them.
stockwellb After running Configure.pl and doing make clean, make I've got all sorts of Parrot_DynOp_core_cgp_0_7_1 errors. 04:30
Infinoid confusion from the "reallyinstall"'ed files?
stockwellb should I just kill directory and pull down the files again? 04:31
chromatic Try make realclean first.
stockwellb I'm at 0.8.0 Thanks. I did have an error though. Cant' write-open packfile-c.pod: permission denied at /usr/shar/perl/5.8/Pod/Perldoc.pm 04:37
cotto what'd the release name end up as? 04:43
nm.
found it
stockwellb ls 04:44
oops sorry
what is miniparrot? 04:47
purl miniparrot is not working yet, is it?
chromatic In theory, it's a stripped-down version of Parrot written in ANSI C that we can use to bootstrap the rest of Parrot. 04:48
In practice, it's more or less the same as parrot.
stockwellb In other words, "Bruce can ignore it". 04:49
dalek r32095 | infinoid++ | trunk: 04:50
: [PDD13] Move the packfile PMCs into trunk.
: * PDD13 isn't anywhere near done, but there's no point in doing this stage
: of the work in its own branch.
: * Add EXCEPTION_MALFORMED_PACKFILE to exceptions.h.
: * Update MANIFEST.
diff: www.parrotvm.org/svn/parrot/revision?rev=32095
stockwellb Exterminate!!! 04:51
purl EXTERMINATE! EXTERMINATE! EXTERMINATE!
dalek r32096 | infinoid++ | pdd13pbc: 04:52
: [PDD13] Remove the badly-maintained pdd13pbc branch; development is occurring in trunk for now.
diff: www.parrotvm.org/svn/parrot/revision?rev=32096
Infinoid good night folks & 05:12
stockwellb Night people. Thanks for helping me out. I definately going to come back and bother you all some more. :) 05:14
chromatic Good luck!
purl good luck is all I can say.
05:16 stockwellb left 05:25 Bzek joined 06:12 cognominal joined 06:29 iblechbot joined 06:31 uniejo joined 07:08 allison joined
cotto Are there very many good recruiters, because I'm not running into any. 07:08
07:14 cosimo joined 07:15 clunker3 joined 07:36 barney joined 07:37 Zaba joined 07:45 Zaba joined 08:26 tomyan joined
dalek r32097 | rurban++ | trunk: 08:31
: [cage] fix cuddled_else.t
diff: www.parrotvm.org/svn/parrot/revision?rev=32097
09:23 mberends joined 09:24 Infinoid joined 09:38 mberends joined 09:48 barney joined 09:54 particle1 joined 10:23 mberends joined 10:28 bacek joined 10:32 kj joined
barney Is TAP::Harness required for Parrot, or only for 'languages/perl6' ? 10:53
dalek r32098 | bernhard++ | trunk: 11:06
: [perl6] Spelling and add some newlines.
diff: www.parrotvm.org/svn/parrot/revision?rev=32098
11:23 tomyan joined
dalek r32099 | bernhard++ | trunk: 11:27
: Beautify Perl 5 code in Parrot::Test::Harness.
diff: www.parrotvm.org/svn/parrot/revision?rev=32099
DietCoke cotto: Yes, there are some, but it's a crapshoot finding one. 11:42
12:04 mberends joined 12:13 Lorn joined
dalek r32100 | bernhard++ | trunk: 12:30
: [Pipp] Explicitly use use TAP::Harness 3.0.
diff: www.parrotvm.org/svn/parrot/revision?rev=32100
12:54 grim_fandango joined 13:11 gryphon joined
dalek r32101 | bernhard++ | trunk: 13:25
: [Pipp] Explicitly execute the t/pmc/*.t test files with 'parrot'
diff: www.parrotvm.org/svn/parrot/revision?rev=32101
13:53 Theory joined 15:00 hercynium joined, xinu joined 15:01 xinu left
Infinoid good morning 15:06
jhorwitz ~~ 15:08
particle1 holy crap, i can get round trip to sfo for $96 on virgin america 15:09
Tene nice 15:10
particle almost worth flying down for dinner :)
pmichaud should I be going ahead and booking flights for the summit? 15:21
particle i'll get back to you in a few hours 15:22
pmichaud okay 15:23
I just know that rates will start to go up soon
15:25 mj41 joined 15:31 allison joined 15:33 johbar joined
DietCoke apparently *really* should have gone to PPW. ah well 15:38
barney Can RT##48014 be closed, and the deprecation item be removed? It appears so from RT. 15:56
16:00 jq joined
particle pmichaud: let me know when you are able to discuss my import patch 16:05
dalek r32102 | bernhard++ | trunk: 16:06
: [doc] mmdvtregister and mmdvtablefind have been removed,
: so don't mention them in DEPRECATED.pod and in docs/book/ch13_reference.pod
diff: www.parrotvm.org/svn/parrot/revision?rev=32102
particle THANK YOU to everyone who updated NEWS and fixed bugs to make the release go more smoothly
pmichaud particle: the biggest item I notice in the patch is that it's trying to do the import from actions.pm 16:09
that won't work for a precompiled module
(either running a precompiled module that does 'use Foo', or if 'Foo' is precompiled) 16:10
particle ok, i wasn't sure about that
so, i should do it within 'require' in src/builtins/eval.pir then
pmichaud except it really doesn't belong in 'require' 16:11
it should go in 'use'
particle no, require does import as well, according to spec
pmichaud ah
then require is okay
particle the differences from perl 5 is that require does import, and that the symbols are scoped to the current block, not current package 16:12
pmichaud but it should go straight to the EXPORT::WHATEVER namespace, iterate over the symbols and bind them into the caller's namespace
oh, into the current block
particle *caller's block
pmichaud that's going to be a real issue
particle yeah.
pmichaud we may have to create our own LexPad PMCs for that
for the time being I'd bind into the caller's namespace, though, just to get things moving.
particle urk. hadn't connected those dots 16:13
pmichaud oh, it might not be so bad, actually 16:14
after loading the module (via 'require') we can iterate over the EXPORT::WHATEVER namespace and use that to define lexicals in the current block
at any rate, the iteration needs to be over the EXPORT NameSpace itself.
particle yes 16:15
pmichaud as opposed to trying to walk the AST tree
particle ok. that part aside, you can see that tree walking is ugly
i don't have a valid use case for doing it now, though 16:16
pmichaud ...because you're looking for a specific type of node?
particle yes
this is where tge is nicer
pmichaud correct
particle find me all the Op nodes under this one, and do this {...} 16:17
pmichaud at some point I expect someone will come up with a Perl 6 equivalent (see the articles on p6l about tree pattern matching)
particle yep
we may need captures in nqp then
pmichaud but we could also provide some stuff in PCT to make it easier to find nodes
$block.find_node(...query parameters...)
particle hrmm
moritz speaking of exporting... when I compile a script to PIR, and the script uses Test.pm, it can't find plan() when I execute the PIR
pmichaud moritz: yes, this is exactly the issue we're looking at resolving. 16:18
particle ayep
moritz ah, ok
that will make the November hackers happy ;)
particle i'm halfway there, moritz :)
in the meantime, Test.pm can be annotated with 'is export()'
pmichaud ....well, if testing becomes part of the builtins, then eventually Test.pm itself will disappear (or, more likely, become part of the prelude) 16:19
particle yes, but that hasn't happened yet
pmichaud but yes, annotating with 'is export' would be a very good thing soon.
particle i'll annotate them now
pmichaud bbiab 16:20
DietCoke bleats at tge.
dalek r32103 | particle++ | trunk: 16:28
: [rakudo] mark Test.pm with export traits
diff: www.parrotvm.org/svn/parrot/revision?rev=32103
DietCoke ok. someone help me out with latest debugging techniques.
Tene Sure. 16:30
What's up?
purl Your face, Tene. That's what.
DietCoke I have a parrot exception that is not getting any line # information reported.
so it's coming from somewhere in the bowels of tcl.
or pge. or tge.
Tene Ouch.
What's the message?
purl Perhaps you mean "messages", or "message nickname blah blah", or "messages help", or.. eh, just forget it.
DietCoke Null PMC access in invoke() 16:31
Tene Ew.
DietCoke which makes sense, since I'm trying to fix the bits where I'm looking up "foo::bar" but really mean ['foo'; 'bar']
parrot -t4 doesn't help; since that ends up running different code. (at least, I get a different error msg.) 16:32
hurm. perhaps -D60 will help, and I can just look at the last EVAL_ file for a likely culprit.
oooh! someone at work just asked me about a potential use of perl. whee. 16:34
Tene Nice.
DietCoke (I work in CFMX all day)
Tene Hmm. I think I'll go try to learn where the stack trace information comes from to deal with the rethrow issue.
CFMX?
DietCoke cold fusion. 16:35
purl Coming soon in just 20 years!
DietCoke no, the other cold fusion
CFMX is cold fusion (the php-ish kind, not the nuc-u-lar kind)
Tene I'm trying to deal with a problem through Oracle tech support in the middle of class right now. 16:36
It's... typical Oracle. 16:37
DietCoke wonders why line_number = get_hll_global ['PGE';'Util'], 'line_number'
is used in PGE instead of get_root_global
er, in PGE/Util
particle does it matter? isn't parrot both the default hll and root? 16:38
dalek r32104 | bernhard++ | trunk: 16:39
: #58238: [PROPOSAL][PIR] remove special handling of "addr" -> set_addr instruction mapping
: Removed pseudo opcode 'addr'
diff: www.parrotvm.org/svn/parrot/revision?rev=32104
DietCoke particle: great. what if you're not IN the default HLL when you're invoked? 16:41
hurm. at this point, I can't even find pge/util's split, it seems. 16:42
16:43 jq joined
dalek r32105 | bernhard++ | trunk: 16:43
: [doc] Start a NEWS section for the November 2008 release
diff: www.parrotvm.org/svn/parrot/revision?rev=32105
Tene DietCoke: when code is running in PGE, it's hll is parrot. 16:46
nopaste "coke" at 72.228.52.192 pasted "PGE/Util borked?" (19 lines) at nopaste.snit.ch/14360
"coke" at 72.228.52.192 pasted "PGE/Util borked?" (9 lines) at nopaste.snit.ch/14361 16:47
DietCoke tene; yes, but PGE/Util isn't -in- PGE.
is it?
purl it's it!
particle that's a big bug 16:50
DietCoke ticket opened. 16:52
Tene DietCoke: is it .include'd or .load_bytecode'd?
DietCoke again wonders why that patch got applid to trunk.
in my bug, it's load bytecoded.
particle tene: svn diff -c 31862 runtime/parrot/library/PGE/Util.pir
Tene ah
Tene bbiab
DietCoke "invalid option character c" 16:53
particle how old is your svn, coke?
-c was like 1.3 or something
DietCoke svn, version 1.3.2 (r19776) 16:55
Tene I see what you mean now.
particle need to load_bytecode P6object.pbc in pge
Tene I was rather confused by what you meant.
particle coke: add load_bytecode 'P6object.pbc'
Tene particle: probably PGE should be doing that. 16:56
particle just before .local pmc p6meta
Tene Ah, that's what you're saying.
particle in PGE/Util.pir
Tene needs reading skills.
nopaste "coke" at 72.228.52.192 pasted "p6object insufficient?" (12 lines) at nopaste.snit.ch/14363 16:58
particle P6object should be loaded in pge, and pge rebuilt
DietCoke that doesn't help those of us trying to hit the 0.8.0 release.
but yes. =-)
particle i may release 0.8.1 to fix this 16:59
DietCoke meh.
particle damn it. i should have caught this yesterday, but i was in a hurry.
DietCoke we collectively should have caught this when the initial :: -> ; branch was merged back.
but -that- was done in a hurry. 17:00
Tene Except nobody was using .HLL back then, so there were no tests to fail.
DietCoke tene: I'm _right here_
PerlJam Hurry up and slow down!
:-)
particle :)
DietCoke: you're not in core anymore. do you still count? :P
DietCoke particle: I apparently didn't count when I was in core. 17:01
:P
dalek r32106 | bernhard++ | trunk: 17:02
: #45967: [TODO] Consolidate readable_name(), key_set_to_string() and get_repr()
: Remove unused function readable_name().
diff: www.parrotvm.org/svn/parrot/revision?rev=32106
DietCoke barney: "psuedo". (typo in NEWS)
er, ue? eu? still, ending in e is probably wrong. =-)
particle pseudo 17:03
Tene DietCoke: tcl wasn't in trunk for me to test with back when I was working on that branch. 17:04
barney DietCoke: TNX, fixed 17:05
DietCoke it is entirely possible, tene, that it was a different thing that broke tcl. My apologies.
ah, yes. it was the mmd mergeback. 17:06
dalek r32107 | bernhard++ | trunk:
: Fix spelling of pseudo in three places.
diff: www.parrotvm.org/svn/parrot/revision?rev=32107
DietCoke and once tcl was borked as a result of that, there wasn't much anyone else could do.
We probably still could have tested it as a patch against a version in which tcl did still work.
<shrug> 17:07
I'm happy to let that lie. just don't (particle) give me crap about not being in core anymore. 17:08
(because it doesn't help. =-)
particle i'm glad you're not in core. just wish we had a better infrastructure to support you
and kea-cl, amber, etc
DietCoke don't be so ambitious; support the languages in core first, those should be easier. =-) 17:09
particle still, we can't support them 17:10
do we have *any* language smokers?
Tene bbiab, teaching
particle can we smoke a lang in a branch?
with a patch applied?
DietCoke at that point, you might as well just ask for a manually accounting.
"manual". Unless we have the ability to farm out specific work like that. 17:11
particle we need an automated solution
i can design one
DietCoke I would devise a manual solution first.
particle sure
DietCoke since we don't even have that.
then you can work with the smolder guy for ways of making it less painful. 17:12
pmichaud any questions on pge or pge/util before I head to lunch? (I'll be back online in an hour)
DietCoke pmichaud: just the ticket I just opened on PGE/Util.
pmichaud looks.
particle pmichaud: make sense that pge/util should load_bytecode p6object.pbc?
if so, maybe it's time to rename P6object.pbc
DietCoke particle: I also need a workaround for the version in 0.8.0
(i'll add that to the ticket.) 17:13
pmichaud particle: if PGE/Util is useful without PGE.pbc itself, then yes, load_bytecode would be okay.
particle ok, yeah, need it then
pmichaud I think PGE/Util somewhat expects that PGE is loaded, which would cause P6object.pbc to be loaded
what routine in PGE/Util doesn't require PGE?
particle tcl loads pge/util directly 17:14
pmichaud but doesn't tcl also load PGE?
DietCoke Yes.
pmichaud loading PGE also causes P6object.pbc to be loaded.
if anything, PGE/Util.pir should do load_bytecode of PGE.pbc, not P6object.pbc 17:15
because it really depends on PGE
(and then PGE.pbc would cause P6object.pbc to load)
DietCoke fair enough. I was trying to debug a much larger issue with tcl, and was breaking it down into chunks. I was surprised this chunk didn't work.
pmichaud a quick check of PGE::Util's subs shows that all of them require PGE in one form or another 17:16
I don't mind if PGE::Util does a (often redundant) load_bytecode of PGE; or we could put it in the docs that PGE/Util expects PGE to be loaded. In some sense I'm trying to avoid redundant load_bytecode ops. 17:17
also, much of PGE::Util will become obsolete with the PGE refactor
'split' might remain, though.
DietCoke now to figure out why i can't find PGE Utils's split anymore. 17:18
tcl is using split.
so, let's keep something like that in core.
(or a library, or something)
pmichaud library, which is effectively what PGE::Util is :-) 17:19
17:19 ruoso joined
pmichaud also, PGE::Util currently has 17:19
p6meta = new 'P6metaclass'
that should be
p6meta = get_hll_global 'P6metaclass' 17:20
anyway, time for lunch here -- bbiah
DietCoke as long as I have you here, how -should- I be trying to get at 'split' ?
nevermind. 17:21
pmichaud oh, I can answer that one
I would think a simple symbol lookup
get_*_global ['PGE';'Util'], 'split'
where * is hll, root, or empty as appropriate
(and if 'root', it would need to be get_root_global ['parrot';'PGE';'Util'], 'split' 17:22
eventually I expect there to be a "Parrot" HLLCompiler object that can handle exports more reasonably 17:23
but haven't gotten to that yet.
DietCoke ok. pretty sure that wasn't working, I'll see if I can track down why not, or what other stupid thing is broken. (see "unable to debug parrot" rant, previously)
pmichaud as far as throw/rethrow goes, pdd23 indicates that rethrow is basically identical to 'throw'
however, I think another difference should be that 'throw' sets the location of the backtrace in the exception, while 'rethrow' leaves it alone. 17:24
dalek r32108 | bernhard++ | trunk:
: [doc] Mention that new_class splits class names on '::'.
diff: www.parrotvm.org/svn/parrot/revision?rev=32108
pmichaud so, if I throw an exception, then any backtrace that comes up shows the location of the throw. if I rethrow an exception, then the exception retains its current backtrace location 17:25
I need to add that comment to the thread on the m/l -- just wanted to note it here in case Tene or someone else wants to pick it up 17:26
anyway, lunch.
purl i think anyway, lunch is sounding like a good idea about now
DietCoke that's how I expect it to work. but if it's not going to work that way, why do we even -have- rethrow? it is twiddling a bit in the C code whose effect is non-obvious
pmichaud I think it's just that throw/rethrow still need some design work
throw should be "pass this exception through all active handlers"
rethrow should be "pass this exceptions through all handlers that haven't yet seen it" 17:27
(or, more to the point, "pass this exception to the next handler that hasn't seen it yet"
...in fact 17:28
perhaps 'throw' should attach a list of the current handlers to the exception (and invoke the first on the list), while 'rethrow' just invokes the next handler on the list.
DietCoke gives up fighting with parrot today. 17:29
pmichaud but I'm getting well beyond my range of expertise there.
so, lunch.
bbl
dalek r32109 | moritz++ | trunk: 17:30
: [cage] fix double words words in documentation and comments
diff: www.parrotvm.org/svn/parrot/revision?rev=32109
particle yay! 0.8.0 finally indexed properly. 17:32
17:36 cognominal joined 17:37 stockwellb joined 17:38 chromatic joined
DietCoke ... RANT. I just accidentally committed something to a tag. 17:41
dalek r32110 | coke++ | RELEASE_0_8_0: 17:42
: [docs] note a dependency for this library.
diff: www.parrotvm.org/svn/parrot/revision?rev=32110
particle won't it be great when we own the repo and can put seatbelts to stop people like coke from doing silly things? 17:43
chromatic How about remote control cattle prods?
DietCoke grumbles. 17:46
Tene pmichaud: throw/rethrow already do that, actually. 17:48
17:49 cognominal joined
Coke I see this sort of thing in java code all the time; someone catches an exception, and re-throws it, hiding the original stack trace. makes things a PITA to debug. 17:51
I need to dig through the new exceptions handler stuff and see if I can declare a handler that catches only my subclass of exception. 17:52
particle so, are you going to revert that patch to the tag?
Coke No. I'm walking away before I do more damage. 17:53
I figure a cleaner fix would be to drop the tag, and recreate it.
Tene Coke: are you subclassing exception, or using an exception type?
Coke tene;at the moment, neither. 17:54
Tene as in runtime/parrot/include/except_types.pasm
Coke but I doubt the builtin types are fine grained enough to do what I want.
most of my exceptions are CONTROL_ types.
Tene You can limit it to catch only control_exceptions or only exceptions of a range of severities.
Coke that's fine if I abuse the range of severiteis. 17:55
but then I'm not really interoperating well.
Tene except_normal?
I'd imagine that all control exceptions should be except_normal.
and you can still rethrow the other control exceptions that you're not using. 17:56
Coke if this were java, I'd have a subclass of a particular type that I could throw in a specific case where that was the ONLY exception i wanted to catch.
(rethrow) no, I can't. see my ticket. =-)
Tene Coke: at least you'd be rethrowing many fewer exceptions. Are the ones you're currently rethrowing of severity except_normal? 17:57
Coke I have no idea what severity they are.
Tene Yes, there are plans to move to that architecture eventually.
Coke (many fewer) I doubt that.
Tene Are you setting your control exceptions to severity except_normal or setting their types to anything? 17:58
Tene scans scrollback looking for a ticket.
Tene checks out a copy of partcl 18:00
.macro rethrow ()\\n throw exception\\n .endm 18:02
Interesting.
Coke yup. but changing that to rethrow has no effect. =-) 18:04
those macros are older than dirt.
chromatic And not the good kind of designer dirt you buy at yuppie farmers markets around here.
Coke hurls www.boingboing.net/2008/10/21/playi...siden.html for chromatic 18:05
cognominal chromatic: is your true name Don Quixote? there is almost no day without one of your crusade against some windmill :)
chromatic Hombre de la Perla
NotFound Donkey Xote? 18:06
cognominal is windmill used for the stuff that generates electricity? 18:08
NotFound www.youtube.com/watch?v=YcASkdv105Y
moritz cognominal: it's used for mulling over windy thoughts in your brain ;) 18:09
cognominal well, us americansdon't need that, just a pipe from alaska
Tene Coke: Okay, you are checking for .CONTROL_CONTINUE and friends.
So yes, this can be made better
chromatic WINDMILLS DO NOT WORK THAT WAY!
Tene Lemme make a patch for something.
chromatic They keep Dutch people cool. 18:10
Coke tene; in certain cases, yes.
Tene Those cases can be made better, then.
Coke tene; commit bits?
18:11 jan joined
Tene I'd need to figure out how to run tcl against parrot in another directory 18:11
Coke just need a googlecode id.
cognominal digg() ==> suck() # sarah palin in perl6
Coke code.google.com/p/partcl/wiki/PartclSource
Tene So I just check it out in languages/tcl ? 18:12
Coke ayup 18:13
Tene I'd be very surprised if I didn't screw up and accidentally commit parts of it back to the parrot trunk.
moritz Tene: you'd have to call 'svn add' to do that 18:14
Tene Yes, I know.
particle don't put it past him ;)
nopaste "tene" at 148.87.66.57 pasted "One ExceptionHandler update for Coke" (16 lines) at nopaste.snit.ch/14364
Coke as I have already proved today.... right.
Tene I don't deal well with svn even in good cases.
cognominal wind turbine! I learn a word today
learnt... 18:15
Tene Coke: you want me to do the rest of those?
Coke sure. might be able to simplify the handler if we only have those 2 types to deal with. 18:16
I'd gladly apply that.
NotFound cognominal: I heard that in North America eolic energy is used for demolitions, mainly in Kansas.
Coke (presuming it works against -r31835)
Tene Coke: if you want to give commit rights to tene@allalone.org, I'll commit it once I'm done.
Coke (and if not, I will save the patch until I get partcl working against head)
tene;access... granted 18:17
cognominal I have seen my first wind turbine at Palm Springs 20 years ago. well, all of america was new to me anway 18:18
later, to set my mind in place, I discovered there was places like East Palo alto. 18:19
Coke most of america is new to most of america. =-) 18:22
chromatic At least to most of California anyway. 18:23
cognominal especially if you come from wasilia
davidfetter heh
cognominal some journalist from LA said that Wasilla urban planning was worse than in La... 18:25
Coke Tene: that patch seems to work against the old versino of parrot I'm currently targeting. woot. 18:29
the handler is being setup at -runtime-, not compile time, huh? 18:30
particle isn't that when the exceptions occur? 18:31
Coke that doesnt' mean you want to incur the cost of setting up the handler for it at runtime too.
(yes, I appreciate the irony of the partcl guy saying that.) 18:32
particle you can set up handlers at compile time
Coke (and it was probably mostly runtime with the old scheme, too.)
chromatic Partcl does something at compile time? 18:35
Coke mostly whinge about how slow parrot is. 18:36
moritz purl: msg Whiteknight the headings in docs/book/ are inconsitent - some begin at =head1, some at =head0... would you mind if I changed all to =head0? (I'd welcome it if you did it yourself, of course ;-)
purl Message for whiteknight stored.
particle is head0 valid pod, or is that pseudopod-specific? 18:37
moritz purl: that's pseudopod
purl moritz: what?
moritz erm, particle I meant ;)
p<tab>--
PerlJam particle: head0 isn't specced that I know of.
moritz particle: like all the rest of the book
particle ok, i thought we were moving away from pseudopod, but that's just a fuzzy memory 18:38
chromatic =head0 is PseudoPOD
chromatic is not fast at backlogging
Coke I am not a big fan of having YADS in the repo.
moritz particle: I don't know, but I don't think that normal POD support tables 18:39
particle nope, doesn't
nopaste "Coke" at 72.228.52.192 pasted "psuedopod errors." (44 lines) at nopaste.snit.ch/14365 18:44
Coke from Pod::PseudoPod::Checker; 18:45
dalek r32111 | particle++ | trunk: 18:48
: [t] fix packfile test assumptions for path slashies
diff: www.parrotvm.org/svn/parrot/revision?rev=32111
18:54 allison joined
pmichaud note that "push_eh commandexception" also sets up the handler at runtime. :-| 18:55
Tene ... okay, we really need a macro for .push_eh_typed
I can't find where to add standard macros, though 18:56
pmichaud personally I'd go for push_eh commandexception, type
more generically, push_eh label, type
Tene Sometimes you want to handle multiple types.
pmichaud sure, for that we can explicitly create the exception
unless handling multiple types is more common than handling a single type 18:57
I'm thinking that handling a single type is the common case.
particle tene: you need to create a file in runtime/parrot/include/
Tene Handling multiple types is more common in tcl. ;)
pmichaud ah.
Tene Dunno how well that generalizes, though. 18:59
I haven't seen that in Rakudo or Cardinal.
pmichaud I expect that the loop control exceptions will have one handler for multiple types.
nopaste "tene" at 148.87.66.57 pasted "EHs tcl patch for pmichaud" (140 lines) at nopaste.snit.ch/14366
Tene bbiab, teaching.
Coke how would deal with a single block that could throw a break or a continue? 19:00
(or whatever they're called in perl)
pmichaud it would check the type of the exception that is caught
NotFound You can subclass ExceptionHandler and do the handled types setting in his constructor.
pmichaud but there's enough commonality in the handling code to potentially make it worth being handled by a single handler instead of a separate one for each 19:01
Coke How would have 2 handlers for the same block of code?
'you'
pmichaud I don't understand the question.
Coke 14:59 <@pmichaud> I expect that the loop control exceptions will have one handler for multiple types. 19:02
ah.
I misread that.
pmichaud even so, having two handlers for the same block of code isn't an issue, is it?
19:03 masak joined, gryphon joined
particle push_eh eh1 ; push_eh eh2 19:04
Coke and when eh1 fires, how do you say that eh2 is nolonger in effect?
eh1: pop_eh eh2 .... eh2: pop_eh eh1 ? 19:05
pmichaud just pop_eh
doing the alternate version, where eh2 fires and you want to get rid of eh1, might be a bit trickier 19:06
Coke that's my concern, ja.
who the hell has their music cranked. 19:07
dalek r32112 | julianalbo++ | trunk:
: some cargo cult programming to make parrot_debugger work again with HLLs
diff: www.parrotvm.org/svn/parrot/revision?rev=32112
19:08 eternaleye joined
pmichaud note that subclassing ExceptionHandler PMC currently has some issues. 19:08
pop_eh won't work on a subclass of ExceptionHandler at the moment.
(I may be reading the code wrong, there.) 19:09
NotFound pmichaud: Something specific, or just the generic problems of subclassing pmcs?
pmichaud src/scheduler.c:501 19:10
chromatic concurs 19:12
pmichaud note that I don't _need_ the capability to subclass ExceptionHandler yet, but it's something I noticed while reviewing the code.
NotFound We must have a test for that, even if todo'ed 19:13
19:14 eternaleye joined
dalek r32113 | pmichaud++ | trunk: 19:17
: Remove note about :: classes from DEPRECATED.pod, as we've completed the change.
diff: www.parrotvm.org/svn/parrot/revision?rev=32113
particle i'm consistenly getting a passed todo in rakudo 19:20
t\\spec\\S06-signature\\named-parameters.rakudo 19:21
19:21 eternaleye_ joined
particle test 2 19:21
moritz doesn't
19:22 stockwellb joined
pmichaud seems to me that the test should be passing. 19:22
(building now so I can test)
nopaste "stockwellb" at 70.160.222.145 pasted "Failing tests" (8 lines) at nopaste.snit.ch/14368 19:23
particle c:\\Users\\particle\\dev\\parrot\\trunk\\languages\\perl6>..\\..\\parrot perl6.pbc -e "sub a($x = 4) { return $x }; a(g=>7);" 19:24
too many named arguments - 'g' not expected
stockwellb can anyone help me pass the tests I'm failing?
moritz that's nto a test failure 19:25
*not 19:26
stockwellb it's a failure that occurs during 'make test'
particle it's a make failure
moritz and it's a permission issue
pmichaud looks like no write permission to parrot/docs
moritz stockwellb: what's the output of `ls -ld docs/' ? 19:27
(without the quotes, of course)
NotFound How todo a pir test? 19:28
stockwellb drwxr-xr-x 16 stockwellb stockwellb 4096 2008-10-22 00:43 docs/
moritz that's weird. 19:29
chromatic NotFound, is the test runner PIR or Perl 5?
particle NotFound: perldoc runtime/parrot/library/Test/More.pir 19:30
stockwellb moritz: what do you think?
purl I think stockwellb should try flossing more often!
NotFound chromatic: pir
pmichaud stockwellb: does packfile-c.pod already exist? If so, what are its permissions? 19:31
moritz stockwellb: 21:29 <@moritz> that's weird.
chromatic NotFound, todo( $I0, 'reason' ) 19:32
particle is it possible something was running in parallel, and has already locked the file? 19:35
chromatic That may be the case for a parallel build. I keep finding and fixing those.
NotFound Looks like todo is not exported. 19:41
chromatic Feel free to add it to test_more.pir, or whatever the wrapper file is.
nopaste "NotFound" at 213.96.228.50 pasted "ExceptionHandler subclass test" (71 lines) at nopaste.snit.ch/14369 19:44
pmichaud NotFound: that test doesn't seem to check the pop_eh instruction 19:46
(i.e., the ability to pop a subclass of ExceptionHandler)
masak for some reason, I'm not experiencing #59112 any more. should I close it?
pmichaud masak: checking...
NotFound pmichaud: don't know how to check something that doesn't work
moritz takes a look 19:47
masak it also seems that #57286 might be a dup
pmichaud notfound: create an instance of 'MyHandler'
notfound: push it, pop it
verify it doesn't get called.
moritz masak: I get a different error in that file :/ 19:48
NotFound pmichaud: ah, yes, I don't understood
masak moritz: sounds like #59924, then :)
moritz oh wait, no
masak I don't get an error
moritz ah, #59924 it is
masak :) 19:49
pmichaud masak: you could report that #59112 isn't a problem for you any more, but enough others have commented on the ticket that I'd be curious to see if others are seeing similar things
NotFound pmichaud: but I'm not sure how to prevent that the todo is never executed if the pop dies abnormally
masak pmichaud: oki. I'll add a comment to the ticket.
pmichaud NotFound: just pop_eh prior to throwing the exception 19:50
if pop_eh fails, then your first exception handler will catch that.
perhaps set a flag prior to the 'throw' 19:51
so you can tell if it was the pop_eh or the throw that generated the exception caught by your handler
(the first handler, the non-subclassed one)
NotFound I'll try that. 19:53
dalek r32114 | pmichaud++ | trunk: 19:54
: [rakudo]: spectest-progress.csv update: 204 files, 4413 passing
diff: www.parrotvm.org/svn/parrot/revision?rev=32114
Tene Coke: do I need ot set a password somewhere to commit, or do I use my gcode password, or how do I check out something I can commit to, or should i just send you a patch, or what? 19:55
I think I'm done.
19:56 stockwellb joined
dalek r32115 | julianalbo++ | trunk: 19:57
: export 'todo' in test_more.pir
diff: www.parrotvm.org/svn/parrot/revision?rev=32115
nopaste "tene" at 148.87.66.57 pasted "Tcl EH filters for Coke++" (184 lines) at nopaste.snit.ch/14370
stockwellb no ideas regarding my packfile-c.pod Permission problem?
pmichaud 19:31 <pmichaud> stockwellb: does packfile-c.pod already exist? If so, what are its permissions?
stockwellb I answered that already?! It doesn't exist. 19:58
pmichaud I didn't see your answer -- your client timed out or something.
stockwellb I'm new to IRC I'm sorry if I timed out and didn't realize it.
pmichaud no problem. :-)
moritz stockwellb: does 'touch docs/packfile-c.pod' work without error? 19:59
Tene purl: coke? 20:00
purl coke is mailto:will@coleda.com or just a figurehead. or coke-floats.blogspot.com/ or DietCoke or a pest.
stockwellb oooo it does. this is some kind of rookie trap isn't it :)
Tene sends mail to coke anyway, not wanting to figure out svn yet again
TimToady phone
pmichaud phone
TimToady :)
moritz phone?
purl phone is probably 1/4".
TimToady phono? 20:01
purl i heard phono was RCA.
moritz no, phone is always interrupting
purl okay, moritz.
Coke tene: hio
ack, phone.
Tene Coke: you have mail, 'cos I'm too lazy to wait. 20:02
stockwellb ok so touch fails silently if there is no file. Is this proof enough that the file doesn't exist?
should I have run touch as sudo? 20:03
moritz no.
Tene no, you shouldn't
unless you're in a root-owned directory
touch should create the file if it's not there.
stockwellb I'm in my own directory 20:04
moritz stockwellb: if touch can't create the file, so can't the tool that's used during the build
NotFound touch must not fail silently
stockwellb I didn't fully understand that touch created files. I thought it updated existing files 20:05
20:05 sjansen joined
Tene It does both. It's overloaded. 20:05
Coke allison: ping?
stockwellb see the tatoo "Newbie" on my forhead! :)
Tene You're not the first person to find touch's overloading to be weird. 20:06
NotFound stockwellb: you can use ' > file ' instead of touch if you don't care about an existing file
Coke tene++ # will apply that when I get a chance. 20:07
20:07 bacek joined
NotFound But a lot of people also does not understand this > usage X-) 20:07
Tene jhorwitz: I was just scheduled for a class in KoP next week. Are you going ot be around? 20:08
NotFound: that usage will zero out an existing file.
Coke tene (not all tests pass with that patch, fyi, but most of it looks good.)
Tene NotFound: better to use: >> file
NotFound Tene: yes, but I say if you don't care about it.
jhorwitz Tene: yes, the first half of the week.
Tene Coke: I couldn't get anything to work with it, but I thought it was still broken.
Coke: I'm only barely halfway here, so I wouldn't be surprised if I've done something stupid in there. 20:09
Coke ah.
stockwellb ok, now that I've touched packfile-c.pod make test rolls past that on too ops/bit.pod. So this really is some serious permissions issue. Perhaps I ran svn co as me and all these make commands as sudo could that be the issue? 20:10
NotFound stockwellb: most probably yes
moritz but it wouldn't explain stockwellb's `ls -l` output. Weird. 20:11
japhb Coke: I was told a few days ago that you can fix the problem on Planet Perl 6 where someone else's feed is showing up with my name on it?
stockwellb so kill the dir and start over with svn co as sudo?
moritz stockwellb: no, don't do *anything* with parrot as sudo.
NotFound stockwellb: better does not use sudo at all
stockwellb make fails unless I run it as sudo
moritz then remove the current checkout, and try again, but without using sudo at all 20:12
Tene stockwellb: Yes, that's likely the problem. You NEVER want to run 'make' as root.
NotFound stockwellb: diagnose and solve that problem, instead of crating new ones
Tene And yes, I made that mistake many many times over in the past to learn it. :)
moritz learned about `sudo chown moritz.moritz -R .' 20:13
NotFound xkcd.com/149/
moritz NotFound: as soon as I saw the xkcd link I knew what was coming ;) 20:14
chromatic mmm sandwiches
stockwellb Ok, checking out trunk as stockwellb... 20:15
Configure worked... 20:16
allison Coke: pong?
Coke phone. =-) 20:18
stockwellb make worked...
Coke japhb: I might have the keys to that planet. 20:19
NotFound The sandwich?
purl the sandwich is a sandwich. The styles are very different. or a continuation sandwich. Yum!
japhb Coke: excellent
stockwellb Note to self. parrot + sudo = bad.
Thanks everyone for being so patient.
masak more like make + sudo = bad.
moritz note to stockwellb: sudo + anything that modifies file in your home dir = bad 20:20
NotFound * + sudo = bad unless you have a very good reason
masak aye
chromatic Evil is a very good reason, but when you're bad, so bad it's good, and that's the evilest thing of all.
stockwellb Now I understand the critisms that I've read regarding sudo. 20:21
Coke japhb?
purl i think japhb is Geoffrey Broadwell, mailto:geoff@broadwell.org
Coke [www.oreillynet.com/pub/feed/31?au=2333]
name = Geoff Broadwell
title = Geoff Broadwell
link = www.oreillynet.com/pub/au/2333
NotFound stockwellb: well, sudo is like any other tool, it can be used or abused 20:22
stockwellb apparently I'm and abuser.
s/and/an
japhb Coke: well, the bio link is correct ... but the feed link is insane 20:23
chromatic says that oreillynet changed the system by which feeds are generated, apparently breaking the old link.
Coke looks like the title and link lines were added by robert as a bugfix.
japhb I have no idea the correct replacement,
Coke before that, they were empty.
japhb But in any case, since I don't blog there any more, just pull me from the Planet for now.
stockwellb wow 614 subtests skipped! You guys should stop gabbing with newbies and get back to work!! :) 20:24
NotFound To avoid pesky permission problems the correct tool is no sudo, is ms-dos X-)
japhb Coke: er ... please. :-)
moritz stockwellb: "patches welcome", as the saying goes
stockwellb I'd be glad to help, but I've never done anything like this before. I'd need some serious guidance. 20:25
Coke japhb: "svn commit" ->
svn: Commit failed (details follow):
svn: CHECKOUT of '/perl.org/!svn/ver/1145/planets/trunk/sites/sixperl/config.ini': 403 Forbidden (svn.perl.org)
sorry. apparently I only have the keys to parrot.
japhb bugger all 20:26
purl i dunno, japhb
moritz stockwellb: what programming languages do you know?
purl programming languages is, like, (see language list)
Coke language list?
purl language list is at ftp://ftp.wustl.edu/doc/misc/lang-list.txt or I18N::LangTags::List
japhb wustl! Blast from the past.
Coke: any idea who might have said keys?
Coke hell, you can almost say that about ftp now.
japhb: I would email webmaster@perl.org 20:27
japhb true
Coke I can even give you a patch. moment.
japhb thx
stockwellb python;ruby(learning);c#;lua... I mess around with lots of stuff, just not an expert in any.
nopaste "coke" at 72.228.52.192 pasted "patch for japhb" (17 lines) at nopaste.snit.ch/14371 20:28
moritz neither of those are my area of expertise, so I can't really tell :(
stockwellb I'd like to do things in PIR. It seems fun to me. Not that othe languages aren't.
moritz well, some builtins need to be written in PIR. 20:29
Coke why do we now have a .include version and a library version of test more? I know I did test_more originally,but if it's all being done on teh library load anyway...
moritz maybe cargo-culted from Perl 6? 20:30
stockwellb Here's an example of some simple PIR I did last night.
nopaste "stockwellb" at 70.160.222.145 pasted "PIR example" (112 lines) at nopaste.snit.ch/14372
Coke ah. the update in Test/More.pir is actually in the -DOCS-
... that seems suboptimal, but less so than duplicating the actual code. 20:31
NotFound Coke: just for brevity, I suppose. The include makes the loads and exports in one shot.
stockwellb Where do I find out what parrot grunt work needs to be done?
moritz stockwellb: rt.perl.org/rt3/
Tene Is there a url for a cage cleaner task search on rt.perl.org?
Coke NotFound: I clearly remember that intent when committing the file, yes. =-)
NotFound: note that Test/More.pir doesn't actually export anything. 20:32
stockwellb: the best way is usually to ask here or on list. If you're brave, you can check the rt.perl.org queue or the website. 20:33
lemme find you some urls.
rt.perl.org/rt3/NoAuth/parrot/ParrotTODO.html
www.perlfoundation.org/parrot/index...rt_queries
stockwellb Well I'm trying to get my feet wet...slowly. 20:34
NotFound I checked the cage task a lot of times and never found one adequate for novices.
Coke rt.perl.org/rt3/NoAuth/parrot/List....alue=Patch
(patches are a good one as you can help out just by seeing if the patch still applies cleanly)
NotFound Looks like the main reason to mark some task as CAGE is "Too boring to me" }:)
Coke www.parrot.org/dev/cage-cleaners
NotFound: heh. 20:35
the theory (not to scare the new guy) is that a cage task shouldn't have any functional impact on the built parrot. It's more to ease development or maintenance.
stockwellb Alright, got my bitcard account and logged into perlbug. I've got to go start dinner. I'll bug you folks later. 20:37
Coke hokay.
moritz
.oO( shouldn't you *de*bug us? ;-)
20:38
NotFound Is a shame that not experienced people adding or dropping const modifiers usually worsen maintenance.
moritz in soviet USA software bugs you ;)
Coke perhaps if we #define HUGS const, they'll leave it alone.
particle: rt.perl.org/rt3/Ticket/Display.html?id=58946 is still open 20:39
20:45 particle1 joined
nopaste "Coke" at 72.228.52.192 pasted "counter-offer patch for tene that only fails one test in t/cmd_upvar.t; looks like catch.pir could use some work, too." (171 lines) at nopaste.snit.ch/14373 20:49
dalek mgrimes@cpan.org | Convert existing tests to parrot: 20:54
link: www.perlfoundation.org/parrot/index..._to_parrot
Tene Coke: catch.pir doesn't use rethrow? what work could it use? 20:55
nopaste "NotFound" at 213.96.228.50 pasted "ExceptionHandler subclass test that fails to fail nicely" (93 lines) at nopaste.snit.ch/14374 20:58
NotFound Changing the base type check to a VTABLE_isa in sheduler.c:Parrot_cx_delete_handler_local seems to solve the pop_eh thing 21:11
Coke tene: it still only intends to catch those 5 types.
with your patch to src/tclsh.pir (which isn't in my counter), btw, [exit] generated extra whitespace; and it wasn't rethrowing, just dying, so I undid that bit. 21:12
particle1 NotFound: that seems the proper fix 21:13
NotFound Testing now to see if brokes something else
particle1 unless we have a 'does' for exception handlers not inheriting from EH
but we don't have that yet, and i'm not sure we ever will 21:14
so isa is a better way :)
NotFound Looks like there is no way to todo a pir test that can die... and maybe is not possible at all. 21:16
Coke I think you'd have to roll your own there. 21:17
that is, put a push_eh/pop_eh around it and then check the resulting exception object is what you expect. 21:18
That could probably be wrapped into a handler.
NotFound Coke: in that case, parrot just die telling that there is no handler. We can't catch that.
Coke can't catch -what- ? 21:19
an exception?
purl hmmm... an exception is only printing the line in dyfrgi's code where it's getting triggered, so I'm debugging into it mostly to figure out where it's dying.
Coke purl, forget an exception
purl Coke: I forgot exception
particle1 a compile-time error
NotFound Can't handle a situation when parrot fails to locate the handler.
particle1 you can create a pir compiler, and pass the source to it
Coke you say "die", I think "die opcode", and "catchable exception" 21:20
particle1 then invoke the result
$P0 = compreg 'PIR'
NotFound Coke: is a catchable excpetion, but fail to locate the handler.
Coke ... how do you fail to locate the handler?
NotFound Coke: the test I nopasted some lines ago. 21:21
particle1 coke: one way would be push_eh PMCNULL
Coke particle1: why the hell would you do that if you're trying to catch the exception?
particle1 it's a test
i didn't look at it, though 21:22
NotFound particle1: yes, that is the only way I see to make the test pure-pir 21:23
The test of popping a subclassed handler, without the fix I'm trying, fails to pop and also to find the previous handler. 21:25
Coke NotFound: so if the feature worked, the code work work, neh?
"would work"
dalek r32116 | moritz++ | trunk: 21:26
: [rakudo] another OO test for 'make spectest'
diff: www.parrotvm.org/svn/parrot/revision?rev=32116
NotFound Coke: yes, but I can't add it as 'todo' before fixing, because it does not reach the 'todo' call.
No problem now I have the fix, of course. 21:27
Coke it looks like you're already trying to do what I was saying, have a fallback exception handler. 21:29
I can stare at this more later. good luck. 21:30
->
NotFound Coke: yes, pmichaud suggested that way and I was trying it, but int the pop_eh case it does not work.
dalek r32117 | allison++ | calling_conventions: 21:34
: [calling_conventions] Bringing the calling_conventions branch up-to-date with
: trunk r32115.
diff: www.parrotvm.org/svn/parrot/revision?rev=32117
21:36 Whiteknight joined
dalek r32118 | julianalbo++ | trunk: 21:39
: allow pop_eh of a subclass of ExceptionHandler and add a test for it and a todo'ed test for ExceptionHandler subclass exception handling
diff: www.parrotvm.org/svn/parrot/revision?rev=32118
21:42 peepsalot joined
pmichaud && VTABLE_isa(interp, handler, CONST_STRING(interp, "ExceptionHandler"))) { 21:51
it _always_ bugs me to see us using strings to test 'isa' semantics.
what if another HLL defines its own "ExceptionHandler" class? 21:52
particle1 good point.
pmichaud I see that stuff throughout the Parrot core, and it really concerns me. 21:53
particle1 well, now we have the ability to fix it
it's a pretty big cage task, though
chromatic It ought to be does, and there ought to be a way to identify it as a core PMC.
21:54 cognominal joined
GeJ Good morning 21:55
dalek r32119 | moritz++ | trunk:
: [rakudo] another OO test for spectest.data
diff: www.parrotvm.org/svn/parrot/revision?rev=32119
pmichaud particle: oh, it's worse than you think 21:56
particle: even the isa_pmc VTABLE method ends up doing a string comparison. 21:57
particle1 well, geez.
NotFound We have lots of string comparaison in lots of core functionality.
21:58 petdance joined
pmichaud see src/pmc/default.pmc:922 21:59
allison 'isa' is a great candidate for caching, do the lookup once, and save it 22:02
pmichaud (I don't quite see how that applies here, but okay.) 22:05
allison it's not the efficiency of string comparisons that you dislike, but the general fact that we're doing them at all? 22:06
pmichaud yes
allison (in the context of class comparisons)
pmichaud "what if another HLL defines its own 'ExceptionHandler' class?" 22:07
and as I mentioned -- it's currently pervasive -- even when passing a class object to 'isa', the result is currently that we stringify the classname and then use that for the 'isa' check. 22:08
allison well, VTABLE_isa is under the control of the particular class in question
pmichaud most classes don't redefine 'isa' 22:09
allison even the default is only searching its parents of the class to see if they report that they are 'ExceptionHandler'
it's not searching all classes defined on the system 22:10
pmichaud yes, but if my HLL defines its own 'Integer' class, that isn't a subclass of Parrot's Integer class, then the current implementation would report true for $P0 = get_class 'Integer'; $I0 = isa $P1, $P0 even if $P1 isn't the appropriate type of Integer 22:12
NotFound The question for this particular case is: what is the condition to be a valid exception handler? Inherit from ExceptionHandler? A role?
allison well, it isa 'Integer'
'isa' is like 'can'
I mean, a particular class can even override isa to report true for any query 22:13
pmichaud again, I'm just talking about Parrot's default behavior here
allison (useful in mock objects for testing)
yes
pmichaud is there a way for me to verify that a particular object is of my class 'Integer' and not a Parrot 'Integer'?
allison probably doesn't work now, but the best way to do that would be a fully-specified key 22:14
pmichaud I think it should be the class object, myself
allison [ 'parrot'; 'Integer' ]
pmichaud $P0 = get_class 'Integer'; $I0 = isa $P0, $P1;
(assuming that get_class 'Integer' returns the class object I expect)
allison more specifically get_class [ 'perl6'; 'Integer' ] 22:15
pmichaud fair enough
and I have my isa arguments backwards
so: $P0 = get_root_class ['perl6';'Integer']; $I0 = isa $P1, $P0;
allison yes, a class object is always the preferred way to be absolutely sure of what you've got
pmichaud I'm simply saying that the current implementation of 'isa' does a string comparison instead of a class comparison 22:16
22:16 sjansen joined
pmichaud i.e., internally it's doing the equivalent of $S0 = $P0; $I0 = isa $P1, $S0 22:16
allison that's because 'isa' only takes a string argument
well VTABLE_isa
purl VTABLE_isa is under the control of the particular class in question
allison purl, forget VTABLE_isa 22:17
purl allison: I forgot vtable_isa
pmichaud I'm simply saying that isa_pmc shouldn't be defined in terms of isa (string)
allison ewww! Um, the default PMC's isa and isa_pmc need to be updated... 22:18
pmichaud yes, that's my point! :-) :-)
chromatic They used to be more expensive.
Trust me on this.
NotFound allison: what about the exception handler particular case? 22:19
pmichaud and it likewise bugs me when I see us doing VTABLE_isa(..., <string>) instead of VTABLE_isa_pmc(..., exception_class)
or, as chromatic correctly notes, VTABLE_does( ..., <exception>) 22:20
allison digging through Object and Class...
chromatic: my objection is that default isn't actually scanning MRO at all, it's using the old isa_hash 22:21
chromatic isa_hash isn't that old. 22:22
allison on Class, you're right, there isn't any code in isa_pmc to simply check if the lookup is a class object, and then check if that class object is a parent of the current class
chromatic You should see what isa_hash replaced.
particle1 no, she shouldn't.
pmichaud I'm more interested in Object, since that's where the bulk of 'isa' tests will occur.
it's not often that I'm doing 'isa' on a Class PMC 22:23
NotFound We have laws against torture ;)
allison patrick: it does a Parrot_oo_get_class call without even checking if it has a class object already
patrick: object just calls isa_pmc on its class
(I checked Object first)
pmichaud allison: object.pmc:520 22:24
if (SUPER(lookup))
return 1;
purl return 1; is it a value? a flag? truth? perhaps this is a shell programmer and he's really trying to say false!
pmichaud if I read that correctly, it *first* calls the vtable_isa_pmc in default.pmc
and if that returns true, it never gets to the Class PMC check.
allison yes, that's true 22:25
pmichaud thus, in the case of something like isa $P1, $P0, it would do the string-comparison-based check before ever getting to the Class PMC version. 22:26
allison but, only low-level PMCs use the isa_hash, so that'll return false, and go on to the Class PMC check
pmichaud okay, that may indeed be true -- I didn't look too closely at isa_hash
particle1 Integer is a low-level pmc
pmichaud but, if my $P1 is a low-leve..... right.
allison the SUPER is there to handle cases of multiple inheritance from Class and another low-level PMC 22:27
pmichaud so, if $I0 = isa $P1, $P0 has $P1 as an instance of a low-level PMC, it ends up doing the string comparison check
which is precisely the case I was trying to guard against :-)
chromatic The string check is expensive, too.
pmichaud (note that I don't have any outstanding tickets or blockers on this particular issue, it's just been a long-time "I'm really worried about this" sort of thing.) 22:28
allison ummm.. I'm not convinced SELF->vtable->isa_hash is a string hash
I thought it was a hash of class pointers
I'll check...
particle1 NameSpace isa Hash? 22:29
pmichaud does it matter, since we're obviously looking for a string key?
(default.pmc:925)
chromatic It's a hash of STRING pointers.
STRING => PMCNULL pairs, to be precise.
NotFound Please don't forget the current question: is VTABLE_isa the correct way to identify a valid exception handler? 22:30
allison NotFound: ah, I missed the start of the question, the answer is "no, any object that satisfies the interface of an exception handler qualifies" 22:31
pmichaud NotFound: it's at least the current practice.
my concern is about the current practice.
NotFound pmichaud: it is since my last commit ;)
chromatic VTABLE_does then is more correct, as long as people add the appropriate notation. 22:32
allison but, IIRC there is code in place currently that's literally checking for the type number of the ExceptionHandler PMC
pmichaud NotFound: I mean that it's the current practice in other similar situations within the Parrot code base
allison: that's what NotFound just replaced
allison yes, you're right to replace it
pmichaud allison: because I pointed out that subclasses of ExceptionHandler wouldn't be properly recognized.
allison and 'does' is the more appropriate replacement in the long-term rather than 'isa' 22:33
pmichaud agreed
NotFound And still are not, the patch just allows them to be popped.
allison popped?
NotFound pop_eh'd
pmichaud allison: pop_eh wouldn't remove exception handlers that didn't have a type id of enum_class_ExceptionHandler
allison oh, ok
yes, that's true 22:34
pmichaud and since an earlier discussion was talking about the possibility of using subclasses of ExceptionHandler to do various polymorphic type things, I pointed out that didn't quite work yet.
allison also, exceptions only dispatch to enum_class_ExceptionHandler
22:35 apeiron joined
NotFound If does is the way to go, did we already have a role for that? 22:35
particle1 how do i get a .Sub or .MultiSub to return its name? 22:36
allison right, I used id comparisons as a cheap start when putting in the new exception handler code, always intending that it would be replaced when exception handlers got broader use (YAGNI principle, though more of a YDNIY principle)
NotFound: not yet 22:37
chromatic ExceptionHandler IS a role.
particle1 ah, i see... interpinfo has that
allison er, that's not defined in the PMC (that I see) 22:38
should be declared with 'pmrole' or whatever we called them
pmichaud afk, dinner
NotFound So in the meantime I can keep the VTABLE_isa and go sleep? ;)
chromatic The way VTABLE_does works now is that it falls back to VTABLE_isa. 22:39
allison 'prole'
if 'isa' works, yes, keep it for now 22:40
progress is progress
NotFound Ok
22:45 mberends joined
particle1 actually, interpinfo has current sub name 22:49
particle1 builds rakudo after coding a first attempt at importing 22:56
rats. 23:04
pmichaud why would sub name be needed for import?
particle1 i'm using the !EXPORT sub in guts.pir
'!EXPORT'( symbols, 'from'=>ns_default, 'to'=>ns_caller )
pmichaud oh 23:05
but wouldn't the list of symbols come from NameSpace keys?
nopaste "particle" at 32.158.105.22 pasted "import" (52 lines) at nopaste.snit.ch/14375
particle1 yes, that's how i did it
didn't need the sub names after all
pmichaud also, why not just do push $P0, 'DEFAULT' after the other push? ;-) 23:06
particle1 the diff looks sane (to me) but doesn't work
because eventually i'll need to loop MANDATORY,DEFAULT,my_tag 23:07
so it's pseudo-factored-out
23:07 petdance joined
pmichaud I don't think I'd use !EXPORT 23:08
i kinda expect it to go away at some point
particle1 well, it was there, so i decided to use it
pmichaud my suggestion would be to go ahead and bind the symbols directly
particle1 i expect to use an Exporter pmc, when i fix it to work with MultiSubs
ok, so the namespace values are the symbols 23:09
23:09 TiMBuS joined
pmichaud the iterator returns the keys 23:09
using the keys on the namespace gets the corresponding pmcs
particle1 and the keys are strings
pmichaud and then you bind them into the caller's namespace
particle1 oh of course
pmichaud using the same algorithm as what !EXPORT does now, probably. 23:10
or at least a similar one.
....but actually
the logic of grabbing all of the symbols from a namespace and binding into a caller's namespace should be written as an 'EXPORT' method on NameSpace, if I read S11 correctly.
particle1 i'll take another look at that when i get home 23:11
gotta run now &
pmichaud then it's just (1) find the correct namespace, (2) call EXPORT on the namespace
(3) repeat for DEFAULT, MANDATORY, tagset
allison pmichaud: question about how you're currently using the Capture PMC 23:12
pmichaud I'm currently not using it.
all of the tools use Capture_PIR
allison pmichaud: er, the PGE PMC of whatever type that Capture is based on 23:13
pmichaud okay.
allison pmichaud: does the array/hash contain the match object itself?
pmichaud I'm confused by the question
a Match object isa Capture
(Capture_PIR)
allison pmichaud: yes, perhaps there's not a good parallel
pmichaud: I'm trying to decide if invocants should be stored in the arguments of the CallSignature PMC, or as a separate attribute 23:14
pmichaud Perl 6 has them as part of the Capture, iiuc
allison (CallSignature is a child of Capture, for now, but vastly extended)
how do you flag them? 23:15
that is, how do you identify the invocant from the other parameters?
pmichaud I think there may be only one invocant.
and it's not treated like a "parameter"
allison yes, but sub calls have no invocant
pmichaud in that case the invocant acts as the first argument.
(I haven't studied this deeply yet, so I may be in error on some of the details.) 23:16
allison oh, you're talking about your system where every call can be either a method or a sub, yes?
pmichaud well, I wouldn't call it "my system". :-)
allison I mean PGE's calling pattern
chromatic THE EVIL 23:17
purl i think the evil is its own reward or www.cubicao.tk/stupidevil1.html or a padwalker or a girlfriend in its most pure, concentrated form or www.thinkgeek.com/geektoys/games/9766
23:17 vhold joined
pmichaud it was just borrowed from Perl 6's calling pattern at the time. 23:17
allison yes
pmichaud (and implemented by Parrot.)
I'm not intentionally being obtuse -- sorry -- I'm just not sure about the question. (more)
PGE's intended design is to follow Perl 6 calling conventions 23:18
allison as it should, since it's an implementation of Perl 6 grammars 23:19
the options I'm weighing are either, keep the invocant as a separate attribute within the CallSignature, or to flag it in the PCC signature string, possibly something like "PiP->P", where the 'i' flags the invocant
pmichaud at one time there was a "method fallback to sub" feature of Perl 6 that PGE was trying to make sure it supported
that feature of Perl 6 is now gone
Tene Why was that, again?
allison the advantage of the former, is that you don't have to parse the signature string to know if you've got a method call signature
pmichaud Tene: why was what?
Tene Why is that feature gone?
pmichaud Tene: I think it was originally a way to help out with multimethod dispatch 23:20
allison the advantage of the latter is that you only have to look at the signature string to know all the arguments you're processing
23:20 apeiron joined
vhold Is the parrot-devel link on parrot.org/download known to be broken? 23:20
pmichaud tene: in particular, something like $x.abs() could "fall back" to abs($x) so that we would define a "abs" builtin function instead of a .abs method 23:21
allison vhold: works for me, but sometimes it takes a while for the CPAN mirrors to update
23:21 bacek_ joined
pmichaud Tene: but that didn't work out too cleanly in practice because of all of the type manipulations and coercions involved, so it's since been defined that methods like .abs are defined on the Any class, and they coerce the invocant to be the appropriate type for the operation 23:22
allison pmichaud: that's good to know
pmichaud then the 'is export' trait on a method causes it to be exported as a function, so that it can also be called as abs($x)
vhold Ah, I figured it out.. it had some geodns thing in a cookie that was making it totally wig out..
pmichaud I don't know if Perl 6 explicitly says that the abs() function and abs method have to be the same underlying object. 23:23
obviously Parrot supports that sort of thing (sub PMC doubling as method and function) 23:24
allison subs are just invocable objects, so are methods 23:25
pmichaud right
(I'm still evaluating allison's comment about signature types)
...what does "PiP->P" indicate, anyway? 23:26
allison that would be a method call with a single invocant, a single PMC argument, and a PMC return value 23:27
the alternative is "P->P" which only represents the arguments and return values
23:27 Ademan joined
pmichaud so, we could have "PiP->PiPPP" to mean a method call with a single invcant, single PMC argument, returning an invocant and three PMC return values? 23:28
allison (the invocant is handled separately, since it's in neither the argument call list, or the parameter list)
no, only argument lists have invocant
have an invocant
pmichaud return values in Perl 6 have invocants also
allison ?
what is a return value invocant? 23:29
just the first return argument?
pmichaud reviewing S06 to find the appropriate reference.
allison some kind of functional notation, where it immediately invokes another method on the invocant using the other return values as arguments?
dalek Krishna Sethuraman | Parrot Development on Windows: 23:30
link: www.perlfoundation.org/parrot/index...on_windows
pmichaud it may have been changed since I last saw it 23:31
allison pmichaud: that wouldn't be surprising, given the general change rate
pmichaud at one time one could do return $x: "Foo"; which would return an invocant $x and an argument "Foo"; 23:33
allison ok
pmichaud then it could be bound into a capture on the caller side
but I don't see it now.
allison is that a feature you've used 23:34
pmichaud no, I'm just looking ahead to what Perl 6 needs.
(based on the spec)
how do named parameters appear in the signature, ooc ?
allison yup, makes sense
with an 'n' adverb
pmichaud so, 'PPn -> PPPPn' ? 23:35
allison so, SnP, would be a named parameter, with a string name and a PMC value
pmichaud ah
so, 'PSnP -> PPPSnP' would be called with one PMC argument, one named PMC argument
and return three positional PMC arguments and one named PMC argument
allison yes
though, I don't think PCC is doing named returns yet 23:36
pmichaud (and no spaces :-)
Tene And a named invocant?
;)
allison SniP
:)
pmichaud I haven't tested named returns, although it's been defined for a long time.
allison the one thing that inclines me somewhat toward putting the method invocant inside the signature string, is that MMD technically has multiple invocants
so PiPiPiPP, would be five PMC arguments, the first 3 of which are significant for multiple dispatch 23:37
this seems more obvious if regular method calls already use the 'Pi' syntax
pmichaud my feeling is that Perl 6 acts like the invocant(s) is part of the calling arguments 23:39
allison yes, and seems more familiar from the Perl 5 perspective as well, where even method calls can slurp up all the arguments including the invocant into an array
pmichaud yes, I agree. 23:40
allison 'k, thanks, wanted to talk through the options outloud 23:42
er, virtually
pmichaud it might be worth looking at S06 "Longname parameters"
that talks about Perl 6's multiple dispatch and self 23:43
cognominal filed the 'bug" I discovered this summer with dtrace. 23:45
allison mmm... looks like that's largely unchanged, good
pmichaud to return to your original question, it looks to me as though invocants are part of the CallSignature PMC arguments. 23:46
allison pmichaud: don't have a strategy for supporting the "Conjecture" comment, but it's still conjecture
pmichaud: well, at the moment CallSignature doesn't support invocants at all
so, it can't handle method calls
pmichaud allison: I suspect our first approximation for Conjecture will be to use wrapper subs and tailcalse
er tailcalls
allison we're working on that in the calling_conventions branch
pmichaud: that could work 23:47
pmichaud: if needed, we can also define extensions to the signature syntax
pmichaud I tend to think of method calls in two phases -- the first is resolution, where we figure out which method(s) are to be invoked based on the invocant type
the second phase is invocation, where the invocant is just another argument to the invoked sub(s) 23:48
that could be a very naive and incorrect view, but it tends to work for me thus far.
allison right, for the first it is slightly more convenient to have the invocant out-of-band, but not enough of an advantage to be worth it 23:49
(the first being 'find_method' in the Parrot context)
pmichaud well, any time we're doing a method call I tend to think the invocant is immediately available at the caller's level
i.e., foo.'method'() is always a method call, and 'method'(foo) is never a method call 23:50
and the caller (or whatever processor is looking at the source) can figure out the difference. 23:51
23:51 petdance joined
pmichaud but I know there are still a couple of holes in that view, such as methods that multiple dispatch. 23:53
anyway, enough from me for now -- hope this helped.
chromatic Scared Andy away. That's worth something. 23:55