Camelia, the Perl 6 bug

IRC log for #parrot, 2008-10-22

Parrot | source cross referenced

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

All times shown according to UTC.

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

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

Parrot | source cross referenced