Camelia, the Perl 6 bug

IRC log for #parrot, 2010-03-01

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:02 Whiteknight Austin: you going to be upset if I use spaces instead of tabs?
00:02 Austin Not at all.
00:03 Austin I program in a proportional font, so I expect the tabs are all over the place for you.
00:03 Whiteknight w00t, because those are my settings and I'll be damned if I'm changing them :)
00:03 Austin So long as you keep the 1 tab = 12 spaces equivalence....
00:03 Austin :)
00:04 Whiteknight I was going to use 1 tab = (7.435 * line number) spaces, but an even number is slighly better
00:11 Whiteknight Austin: how to test it?
00:11 Whiteknight parrot-nqp setup.nqp test failed
00:11 Austin What, tab size?
00:11 Austin Oh.
00:12 Austin What fails?
00:12 purl see "doesn't work"
00:12 Austin (Because it works for me.)
00:12 Whiteknight Cannot find harness-nqp script. Did you set HARNESS_ROOT_DIR? at t/harness line 36.
00:13 Austin Hmm... chmod +x t/harness-nqp.sh ?
00:13 Whiteknight ah, that did it
00:13 Whiteknight Austin++
00:14 Austin Is there a way to set that in git, like svn:executable?
00:14 Whiteknight t/bootstrap/UnitTest/Testcase.nqp ..... 1/? Could not find non-existent sub assert_that
00:14 Whiteknight Austin: I think there is, I feel like I've done it at some point
00:15 Austin Ruh roh.
00:15 purl ruh roh is Raggy?
00:15 Austin That's a real error. (I remember - I fixed it today or y-day.)
00:15 Austin Edit that file, remove the test.
00:16 Whiteknight Austin: I changed that file to +x and commited the change
00:16 Whiteknight I also just commited a test for nested super()
00:16 Austin Woot!
00:16 Austin Does it pass?
00:16 Austin Whiteknight++
00:17 Whiteknight test does indeed pass
00:17 Whiteknight I'm sorry I doubted
00:17 * Austin ++
00:17 Austin :)
00:19 Austin I'm about waist deep in the mocking stuff right now. I think I've got a model that works...
00:19 Austin It's just a question of building the horribly tangled thing...
00:19 dalek kakapo: ed480bb | whiteknight++ | :
00:19 dalek kakapo: make harness-nqp.sh executable
00:19 dalek kakapo: review: http://gitorious.org/kakapo/kakapo/commit​/ed480bbc8cb3ded9e49dd72f1ac186f35747a596
00:20 dalek kakapo: 31e3b92 | whiteknight++ | t/Syntax.nqp:
00:20 dalek kakapo: test that super() nests to multiple levels correctly
00:20 dalek kakapo: review: http://gitorious.org/kakapo/kakapo/commit​/31e3b928f34c8eacf5f38e88da5b588024a55113
00:38 * Austin sings, "The judge said 'Son, what is your alibi? If you were somewhere else then you won't have to die.'"
00:43 Whiteknight You use a proportional font?
00:43 Austin Yeah
00:43 * Whiteknight cringes
00:43 Austin :)
00:44 Austin Everybody talks about how code is read more than written...
00:44 Austin Well, what if there were fonts that were optimized for reading?
00:44 Austin Oh,wait! _There already are!_
00:44 Whiteknight I don't know, but it's definitely not how my mind works
00:45 Austin Wait 'til you get older...
00:45 Austin The eyes start to go... suddenly, it matters.
00:46 dukeleto 'ello
00:47 Austin Hey, duke
00:47 patspam joined #parrot
00:48 dukeleto Austin: how goes it? did you see my msg about the diehard stats tests?
00:49 Austin Yeah, I'd seen those when I was googling around before, looking for how to test random. For a guy with a stats background, I'm ashamed to admit that my eyes glazed right over...
00:53 dukeleto Austin: i may be interested in implementing some of them. i also said that i would work on fixing the randomness of parrot RNG's and haven't done that yet either...
00:54 dukeleto Austin: feel free to bug me about stats stuff. i had to take way too many stats classes for my math degrees
00:54 Austin More power to you, then. I know a lot of people have put a lot of thought into how to do good RNG, so it seems like it ought to be "free" from the system(s).
00:55 Austin Yeah, me too.
00:55 Austin Stats and economics.
00:55 Austin Two great tastes that go great together. Like Lutefisk and ... some other horrible thing
00:56 dukeleto Austin: if parrot gets GSL binding (another thing I have promised and not delivered on) then we get like 60 different RNG algorithms
00:56 dukeleto Austin: hah!
00:56 abqar joined #parrot
00:56 Austin What's a GSL?
00:56 purl a GSL is a pure C library. I want to access it's functions from Parrot, perhaps as PMCs, perhaps not. what is the best plan of action to start?
00:56 dukeleto Austin: http://search.cpan.org/~leto/Ma​th-GSL-0.20/lib/Math/GSL/RNG.pm
00:56 Austin Apparently not the first time that has been asked.
00:56 dukeleto Austin: GNU Scientific Library
00:56 dukeleto Austin: i wrote the Perl 5 bindings
00:57 Austin Ahh, okay.
00:57 Austin purl, forget a GSL
00:57 purl Austin: I forgot gsl
00:58 Austin purl, GSL is the GNU Scientific Library. See http://www.gnu.org/software/gsl/
00:58 purl OK, Austin.
01:12 ascent_ joined #parrot
01:22 kid51 joined #parrot
01:24 bacek joined #parrot
02:24 bacek joined #parrot
02:25 Whiteknight Austin: src/Exceptions.nqp is depressing
02:28 bacek hi again.
02:28 purl oh, you're back!
02:44 kid51 Uh-oh:  Am once again getting this smolder submission error:
02:44 kid51 Could not upload report to Smolder at http://smolder.plusthree.com
02:44 kid51 HTTP CODE: 500 (read timeout)
03:04 Austin Heh.
03:09 Tene Where is this depression Exceptions.nqp ?
03:10 Tene Austin: you parroting tonight?
03:10 Austin Tene: Yeah, I'm up.
03:11 Austin He's talking about Kakapo's Exceptions.nqp, which defines a bunch of exception classes.
03:11 Tene Ew, yes, Exceptions.nqp is unfortunate.
03:11 Tene I was thinking of working on type-based EHs now.  Lemme throw together an example for you to look at.
03:22 Tene Hmm.  The resume continuation isn't getting set in subclasses of Exception.  That's strange.
03:26 nopaste "tene" at 76.27.121.193 pasted "Austin: similar to the existing types only/except list API" (63 lines) at http://nopaste.snit.ch/19819
03:29 Austin Tene, does that run?
03:29 Tene No, it doesn't.
03:29 Austin ok
03:29 Tene oh, crap, I said "handle_types".
03:30 Austin yeah, I wondered at that
03:30 Tene That's the method used right now to set filters based on the integer type id.
03:30 Tene should be handle_classes oslt
03:30 Tene I'm wondering if you have comments or strong opinions on the "handle_these" / "handle_except_these" API before I implemented it.
03:31 Austin As I see it, there's a couple of different use cases.
03:32 Austin First, you can try to catch a particular exception.
03:32 Austin That's like catching file-not-found or something.
03:32 Austin Next, you can try to catch a whole family of exceptions: any unit test failure, any database error, etc.
03:33 Tene any IO error, which will presumably include file-not-found
03:33 Austin The sort-of converse to that would be Java-esque: catch anything except the horribly fatal ones. (Runtime Errors)
03:33 Tene Is there ever a use case for "ignore IO errors, but catch anything else"?
03:34 Austin They solve that problem by creating two separate class hierarchies implementing a common interface.
03:34 Austin There's the control-exception scenario: catch any of these.
03:34 Austin And the kind of obvious "anything but a control exception"
03:34 Austin Which is what nqp currently does.
03:35 Austin try { foo()  CONTROL { say("control exception"); }  CATCH { say("anything else"); } };
03:35 janus joined #parrot
03:36 Austin Most of those scenarios reduce down to any subclass of X, or not-any subclass of X.
03:36 Tene Right, that was the original motivation for .handle_types_except
03:36 Austin The control-exceptions could be trivially recoded to catch the one type or its children
03:36 Tene I guess with a type hierarchy, there's less need for "catch any exception of a type in this list".
03:37 Austin The place where I see "any on this list" being used is when the coder rattles off a set of exceptions to catch. It may be harder to see in *perl, since the catch blocks look like if statements.
03:38 Austin But other languages make you declare your types as part of the catch:    catch (FileNotFoundException e) {...} catch (QuotaException q) {...} ...
03:38 Austin So I can see them maybe being used, but I don't think it's the end of the world if the performance isn't great.
03:40 Austin Anyway, I think that anything-but-these becomes less useful because at this moment we can just set up a class tree the right way.
03:40 Tene well, we definitely do need "anything-but-control", although I guess we could have a "not-control-exception" superclass for everything else.
03:41 Austin Right
03:41 Austin I'd like to know how .net handles this stuff.
03:44 Austin okay, they don't distinguish.
03:44 Austin (and coders suffer from catching too many things)
03:45 Austin Anyway, I guess the upshot of this is that the handle_foo approach is just fine, and will encompass every case I can think of, so long as it honors subclasses.
03:46 Tene Great, okay.  I'll start implementing that as soon as I track down this issue with resume continuations in subclasses. :(
03:46 Austin (and handle_not_foo)
03:46 Austin :)
03:47 Tene ex['message'] gets the message just fine.
03:47 Tene ex['resume'] gives Null PMC
03:47 Austin heh
03:47 Andy joined #parrot
03:48 Austin One thing that seems important to me is resumable versus not.
03:49 Tene Yes, that's definitely important, but I'm not entirely certain how it should be implemented.
03:49 Tene Something about roles should be considered.
03:49 Tene seems like.
03:49 Austin Well, as I understand it, a resumable exception comes with a resume continuation.
03:49 Tene Right.
03:50 Austin Now, think about "finally"
03:50 Austin If I write some code like:   try {  do_something() }  ... finally { close( handle ); }
03:51 Austin I think I need to catch every exception as it goes by, in order to make sure I send control over to the finally block.
03:51 Austin But a resumable exception shouldn't get finalized.
03:53 Tene but if the handler chooses *not* to resume it, it should.
03:53 Austin yeah
03:54 Austin If some "vice president of exceptions" decides to resume it, then you should not have finalized. But otherwise you should have.
03:54 Austin :-$
03:55 Austin This is why the handler is supposed to execute in the dynamic context of the thrower.
03:57 Austin The part I don't understand is where does the change occur from context-of-the-thrower to back-10-levels-up-the-stack?
04:01 Tene okay, the issue is accessing it through ex['message']
04:01 Tene if I getattribute instead of using the keyed interface, resuming works fine with subclasses.
04:01 Austin heh. What's wrong with that picture?
04:02 Tene oh, setting through the keyed interface doesn't work either.
04:02 Tene vtable override stuff?
04:02 Tene I don't really understand that bit of parrot.
04:03 Austin Okay. So apparently marking the exception as "handled" is what turns off the resum-ability.
04:03 Tene Not right now it doesn't, although I could imagine an interface that does.
04:04 Tene the default handlers generated by PCT check for the 'handled' attribute to decide whether to rethrow.
04:06 Tene If it's handled, wouldn't that mean that you *do* want to resume it?
04:06 Austin Heh.
04:06 Austin No.
04:07 Austin If you want to resume it, you invoke the resume continuation.
04:08 Tene Well what we *want*, then, is that each handler either rethrows, resumes, or marks the exception handled.
04:08 Austin Right.
04:08 Tene marking it handled would invoke any 'final' blocks.
04:08 Austin rethrow is easy. and resume ought to be easy.
04:08 Tene Parrot noticing the lack of any additional handlers would invoke any 'final' blocks.
04:08 Austin (provided you get that problem sorted out)
04:09 Tene The problem is whether we can either: enforce that all handlers do one of these three, or detect when a handler doesn't do one of those.
04:09 Austin The p6 approach to finally is for the language to maintain a queue of them in some other data structure, and the handler unspools the queue when it decides to handle.
04:09 Austin I can live with that, I guess.
04:10 Tene I could just deprecate the keyed interface to resume continuations, and make you getattribute instead, and give it a method that invokes the resume cont.
04:10 Tene ex.'resume'()
04:11 Austin While I'm sure there's something wrong with deprecating the keyed interface, I'd love a method.
04:11 Austin But I can write it, so no strain
04:11 Austin Detecting the failure-to-act:
04:12 Austin that has to be some kind of opcode condition.
04:13 Austin Like inserting a dummy stack frame?
04:13 Austin If you try to return from the handler without acting, ...
04:13 Austin That's a little wiggy.
04:14 dalek parrot: r44552 | bacek++ | branches/ops_pct/ext/nqp-rx (4 files):
04:14 dalek parrot: Add to-be-nqp-settings
04:14 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44552/
04:14 dalek parrot: r44553 | bacek++ | branches/ops_pct/compilers/opsc (5 files):
04:14 dalek parrot: Use nqp-settings. Cleanup builtins little bit
04:14 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44553/
04:14 dalek parrot: r44554 | bacek++ | branches/ops_pct/src/ops/core.ops:
04:14 dalek parrot: Remove redundant 'goto NEXT'
04:15 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44554/
04:15 Tene how much utility would there be in 'finally' blocks that run in *most* leave conditions, except not in those where the handler misbehaves?
04:15 Tene any?
04:15 purl rumour has it any is being done as a particular language feature
04:15 Austin Little.
04:15 Austin Depends on how you define 'misbehaves'?
04:16 Austin But I think finally blocks can be left to the languineers.
04:16 Tene returns or goes elsewhere without doing one of those three.
04:18 Austin "goes elsewhere" makes me nervous. Does that mean sub-call, or more than 100 opcodes from the target?
04:18 Tene Oh!  I know!  Just *always* do the finally blocks, and then if the handler resumes, run the 'finally' block backwards.
04:19 Tene eh, probably just 'returns'.  I'll have to think about it more.
04:20 Austin Don't sink a lot of energy - there's a solution already.
04:20 Tene Explain?
04:23 Austin hll's can keep a finally queue themselves.
04:23 Austin A handler that wants to not-resume can just suck on the queue until it gets to its own level or higher on the stack.
04:24 Tene Well, yes, if we assume "The HLL doesn't misbehave", that's fine.  It would be nice if there was a way that we could offer something on the parrot level that would handle it, but it's outside the scope of what we're working on right now.
04:24 Austin while @queue { if @queue.peek.is_below( $current_context ) { @queue.pop.finally(); } }
04:24 Austin Yeah.
04:25 Austin Plus, we gotta trust somebody.
04:25 Tene Right.
04:25 Austin Might as well be the hll.
04:25 Tene Okay, I'm comfortable with that.
04:25 Tene I'm *un*comfortable with this keyed interface misbehaving in subclasses, though.
04:26 Austin Can't trust the vm...
04:27 Tene I'll try to remember to bring it up during the day when others are around.
04:27 Austin What is the problem?
04:27 purl the problem is that WikiDoc doesn't use Pod formatting codes, and I don't like to have two sets of formatting codes.
04:27 Austin It doesn't get set when throwing a subclass?
04:28 Tene It does get set, but fetching it through get_pmc_keyed_str doesn't work, because it doesn't make it to the VTABLE in Exception.pmc
04:28 Tene fetching it with getattribute works fine.
04:28 Tene ex['resume'] # fails on subclasses
04:28 Tene getattribute ex, 'resume' # works fine
04:28 Austin Ah. Can I see your code?
04:28 Austin You might have a C3 problem.
04:29 Austin "The first parent is the main parent"
04:29 nopaste "tene" at 76.27.121.193 pasted "Sure, here you go." (47 lines) at http://nopaste.snit.ch/19821
04:29 Austin Or it might be a difference between object.pmc and exception.pmc
04:31 Tene if you swap the # from line 29 to 28, it dies with Null PMC access in invoke()
04:32 Austin you've modified the get_..._keyed to support resume?
04:33 Austin get_pmc_keyed, I guess, since resume isn't a string
04:33 Tene get_pmc_keyed just ends up fetching the named attribute.
04:34 Tene and it works fine on Exceptions.
04:34 Tene Nothing in that path has been modified.
04:34 Austin Huh?
04:35 Austin okay. I got it
04:36 Tene Um, nevermind, I guess.  I added a printf to Exception.pmc, and it *does* call get_pmc_keyed in Exception.pmc when fetching from the subclass.
04:37 Austin But there's no data?
04:37 Tene yeah, it returns a null pmc.  tracking it down a bit more...
04:38 Austin Heh. Whiteknight's email was talking about overriding the get_pmc_keyed stuff to do method lookup. This stuff proxies through that same code.
04:38 Tene it calls GET_ATTR_resume
04:41 nopaste "tene" at 76.27.121.193 pasted "GET_ATTR_resume definition" (10 lines) at http://nopaste.snit.ch/19822
04:45 Austin You know the data is in there.
04:45 Austin Because you can access it with getattribute.
04:46 Austin But if get_attr_str is looking in the wrong place...
04:47 Tene op getattribute is just: $1 = VTABLE_get_attr_str(interp, $2, $3)
04:48 Austin But which vtable?
04:48 purl which vtable are we referring to at the moment?
04:48 Austin I'm wondering if there's some shenanigans going on with pmcproxy
04:49 Tene my printf shows that it does end up in Exception.pmc's get_attr_str
04:49 Austin Right
04:49 Austin But what set_attr did it go to?
04:49 Austin throw calls vtable-set-attr-str directly
04:49 Austin And when you call get-attr-str directly, you get the data back
04:50 Austin But when you call get-pmc-keyed, which locally-calls get_attr_str, you get bupkis.
04:50 Austin Maybe try calling the vtable version of getattr-str from get_pmc_keyed?
04:52 Tene no change.
04:52 Austin bummer
04:53 Austin Is this code on a branch somewhere?
04:53 Tene Yes.
04:53 Tene exceptions_refactor
04:56 Tene oh, if I add a 'resume' method, I'll have to deal with the C/PIR boundary, I think.
04:57 Tene So, that's less than ideal.
04:58 Tene Well, I'll just stick with using getattribute for now, and try to ignore it.
05:09 davidfetter joined #parrot
05:13 dukeleto sweet. parrot compiles with the latest clang
05:19 dukeleto the test suite passes too!
05:19 * dukeleto does a little dance
05:20 dalek parrot: r44555 | tene++ | branches/exceptions_refactor/src (2 files):
05:20 dalek parrot: Allow rethrown subclassed exceptions to find the next handler.
05:20 dalek parrot: Add infrastructure to filter based on exception types.
05:20 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44555/
05:25 Austin Suppertime!
05:53 dalek parrot: r44556 | bacek++ | branches/ops_pct/compilers/opsc (13 files):
05:53 dalek parrot: Brake everything. Restructure files and directories. Strip out old stuff
05:53 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44556/
05:53 dalek parrot: r44557 | bacek++ | branches/ops_pct/compilers/opsc/opsc.pir:
05:53 dalek parrot: Fix opsc.pir
05:53 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44557/
05:53 dalek parrot: r44558 | bacek++ | branches/ops_pct/compilers/opsc/Rules.mak:
05:53 dalek parrot: Remove removed opsc_core from Rules
05:53 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44558/
06:09 dalek parrot: r44559 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/Op.pm:
06:09 dalek parrot: Borrow Ops::Op from ops2c
06:09 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44559/
06:09 dalek parrot: r44560 | bacek++ | branches/ops_pct/compilers/opsc (2 files):
06:09 dalek parrot: Add build of Ops::Op
06:09 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44560/
06:09 dalek parrot: r44561 | bacek++ | branches/ops_pct/compilers/opsc/t/04-op.t:
06:09 dalek parrot: Add tests for Ops::Op
06:09 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44561/
06:33 eternaleye joined #parrot
06:52 uniejo joined #parrot
07:13 eternaleye joined #parrot
07:56 fperrad joined #parrot
08:10 iblechbot joined #parrot
08:36 bacek joined #parrot
08:36 riffraff joined #parrot
08:53 mikehh joined #parrot
08:57 payload joined #parrot
09:02 slavorg joined #parrot
09:08 mikehh joined #parrot
09:26 dalek parrot: r44562 | mikehh++ | trunk/runtime/parrot/libra​ry/Test/Builder/Test.pir:
09:26 dalek parrot: fix codetest failure - trailing spaces
09:26 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44562/
09:34 mikehh joined #parrot
09:36 AndyA joined #parrot
09:40 bacek joined #parrot
09:42 dalek parrot: r44563 | bacek++ | branches/ops_pct/compilers/opsc (3 files):
09:42 dalek parrot: Made Ops::Op inherited from PAST::Block and construct them during compilation phase
09:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44563/
09:43 eternaleye joined #parrot
09:53 JimmyZ joined #parrot
09:54 JimmyZ joined #parrot
09:55 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32446), fulltest) at r44562 - Ubuntu 9.10 i386 (g++ with --optimize)
09:58 dalek parrot: r44564 | bacek++ | branches/ops_pct/compilers/opsc (3 files):
09:59 dalek parrot: Add stub for Ops::File
09:59 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44564/
09:59 dalek parrot: r44565 | bacek++ | branches/ops_pct/ext/nqp-rx/src/gen/settings.pm:
09:59 dalek parrot: Update nqp settings
09:59 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44565/
09:59 dalek parrot: r44566 | bacek++ | branches/ops_pct/compilers/opsc (2 files):
09:59 dalek parrot: Fix parsing almost empty ops
09:59 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44566/
09:59 dalek parrot: r44567 | bacek++ | branches/ops_pct/compilers/opsc (2 files):
09:59 dalek parrot: Implement Ops::File.read_ops
09:59 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44567/
10:07 mikehh heading back to amd64 - bbiab
10:18 mikehh joined #parrot
10:33 gaz joined #parrot
11:20 kid51 joined #parrot
11:23 smash joined #parrot
12:05 bkuhn joined #parrot
12:12 jimk joined #parrot
12:30 tetragon joined #parrot
12:37 plobsing joined #parrot
12:42 dalek parrot: r44568 | bacek++ | branches/ops_pct/compilers/opsc/t/03-past.t:
12:42 dalek parrot: Rewrite test in NQP
12:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44568/
12:42 dalek parrot: r44569 | bacek++ | branches/ops_pct/compilers/opsc/t/03-past.t:
12:42 dalek parrot: Fix test
12:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44569/
12:42 dalek parrot: r44570 | bacek++ | branches/ops_pct/compilers/opsc/src/builtins.pir:
12:42 dalek parrot: Add lc
12:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44570/
12:42 dalek parrot: r44571 | bacek++ | branches/ops_pct/compilers/opsc (5 files):
12:42 dalek parrot: Add normalization of op args as in ops2c
12:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44571/
12:42 dalek parrot: r44572 | bacek++ | branches/ops_pct/compilers/opsc (2 files):
12:42 dalek parrot: Stole expand_args from ops2c
12:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44572/
12:42 dalek parrot: r44573 | bacek++ | branches/ops_pct/compilers/opsc (3 files):
12:42 dalek parrot: Move expand_args into Actions
12:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44573/
12:42 dalek parrot: r44574 | bacek++ | branches/ops_pct/compilers/opsc (3 files):
12:42 dalek parrot: Create op variants during parsing
12:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44574/
12:45 ruoso joined #parrot
12:49 cognominal joined #parrot
12:50 cognominal joined #parrot
12:57 whiteknight joined #parrot
13:01 payload joined #parrot
13:01 whiteknight good morrow, kind #parrot
13:19 iblechbot joined #parrot
13:30 FullMetalHarlot joined #parrot
13:49 whiteknight ENETSPLIT
13:51 KatrinaTheLamia joined #parrot
13:51 mikehh joined #parrot
13:51 bkuhn joined #parrot
13:51 riffraff joined #parrot
13:51 dalek joined #parrot
13:51 NotFound joined #parrot
13:51 Austin joined #parrot
13:51 PacoLinux joined #parrot
13:51 preflex joined #parrot
13:51 wagle joined #parrot
13:51 TonyC joined #parrot
13:51 szabgab joined #parrot
13:51 pmichaud joined #parrot
13:51 Coke joined #parrot
13:51 dngor joined #parrot
13:51 eirik joined #parrot
13:51 cotto_work joined #parrot
13:51 ttbot joined #parrot
13:51 confound joined #parrot
13:51 sri joined #parrot
13:51 bacek_at_work joined #parrot
13:51 Tene joined #parrot
13:51 ingy joined #parrot
13:51 solarion joined #parrot
13:51 rhr joined #parrot
13:51 workbench joined #parrot
13:51 slavorgn joined #parrot
13:51 cxreg joined #parrot
13:51 Infinoid joined #parrot
13:51 jjore joined #parrot
13:51 elmex joined #parrot
13:51 baest joined #parrot
13:51 frodwith joined #parrot
13:51 tewk joined #parrot
13:51 treed joined #parrot
13:51 athomaso1 joined #parrot
13:51 eiro joined #parrot
13:52 mikehh joined #parrot
13:58 Andy joined #parrot
14:00 payload1 joined #parrot
14:01 mikehh joined #parrot
14:07 mikehh joined #parrot
14:13 davidfetter joined #parrot
14:34 cognominal joined #parrot
14:36 JimmyZ joined #parrot
15:06 ruoso joined #parrot
15:07 mikehh joined #parrot
15:09 zostay joined #parrot
15:12 bubaflub joined #parrot
15:14 slavorgn joined #parrot
15:33 Tene anyone willing to express an opinion on how handle_types, handle_types_except, handle_classes, and handle_classes_except should interact with each other?
15:33 dalek rakudo: 9efead6 | (Solomon Foster)++ | src/core/Bool.pm:
15:33 dalek rakudo: Add Bool.perl.
15:33 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9​efead678a73291fba2614d6cc2ccabf4c73473d
15:33 dalek rakudo: bbe9441 | (Solomon Foster)++ | t/spectest.data:
15:33 dalek rakudo: Turn on S02-literals/char-by-number.t and S02-names_and_variables/perl.t.
15:33 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​be944180664d163d03e01f183fe510ea349e365
15:33 dalek rakudo: af0424a | (Solomon Foster)++ | src/core/Signature.pm:
15:34 dalek rakudo: "Bool::True" instead of "1", as per jnthn.
15:34 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​f0424a732d60ee7262b0ae49dd06fa34d434366
15:34 Tene Hey!  Those are commit messages, not opinions about exception handlers!
15:34 Austin Fail - you can only handle one or the other.
15:35 Tene orly?  Hmm.  That sounds reasonable.
15:36 Austin Since classes is new, types vs. classes can be exclusive.
15:36 lucian joined #parrot
15:36 Austin classes and classes-except is the first time that handle_yes and handle_no might be meaningful in the same scenario.
15:37 Austin I'd say look-for-no, and if not found, look-for-yes.
15:37 Austin That lets you do "handle subclasses of A, except for any subclasses of A::X
15:38 Tene I'm tempted to just have a sense bit for include/exclude, and if you really want anything more-complicated, use a subclass of ExceptionHandler (NYI)
15:38 Austin That also works.
15:38 Tene or, handle A, and rethrow if A::X
15:38 Tene So, let's do that.
15:38 Austin I was wondering if typed versus class-ed handlers weren't different pmcs
15:39 Tene but your inclincation is that typed filters and classed filters wouldn't make sense on the same handler?
15:39 Tene right?
15:39 purl ooh, the system.   right, right.
15:39 Austin No.
15:39 Tene purl, forget right.
15:39 purl Tene: I forgot right
15:40 Tene Is that "No, you're wrong about my inclination." or "No, both on the same handler wouldn't make sense."?
15:40 * Tene english fail
15:40 Austin I don't see them both on the same handler.
15:40 Tene Okay.  I should be able to reduce this to a single array and two sense bits, then.
15:41 Austin And I kind of see deprecating typed exceptions, too.
15:41 Austin But that's for tomorrow.
15:41 Psyche^ joined #parrot
15:43 Austin Here's a weird thought: does an exception handler have anything in common with a multisub, in this model?
15:44 Austin We're basically saying "catch these, and send them here, here, or here."
16:03 whiteknight joined #parrot
16:04 theory joined #parrot
16:04 riffraff joined #parrot
16:04 Andy joined #parrot
16:06 betterworld joined #parrot
16:10 lucian joined #parrot
16:11 * Austin sings, "So here we a-are, in the Tijuana jail; ain't got no friends to go our bail!"
16:11 Tene Austin: Quite possibly.
16:11 * Tene committed, now afk working.
16:16 dalek parrot: r44575 | tene++ | branches/exceptions_refactor/​src/pmc/exceptionhandler.pmc:
16:16 dalek parrot: Refactor ExceptionHandler to use one array instead of four.
16:16 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44575/
16:18 davidfetter joined #parrot
16:22 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32454), fulltest) at r44574 - Ubuntu 9.10 amd64 (g++ with --optimize)
16:24 davidfetter oh hai
16:28 whiteknight joined #parrot
16:44 patspam joined #parrot
16:53 payload1 left #parrot
16:58 dukeleto 'ello
17:02 smash joined #parrot
17:03 Tene Hi!
17:03 shockwave joined #parrot
17:04 shockwave Hello.
17:04 shockwave To overload the == operator, there is 'is_equal' vtable method. I don't see a vtable method for '!='. Is it not possible to override != ?
17:09 Austin There's the 'ne' opcode.
17:10 Austin == maps to eq, or iseq. != maps to ne, or isne
17:10 Austin (ne returns !vtable_is_equal)
17:11 Austin (See $_OPS/cmp.ops)
17:11 kurahaupo joined #parrot
17:14 shockwave Austin. They way I find out about vtable methods is by looking at src/vtable.tbl. There is a is_equal method there.
17:14 Austin sure
17:14 Austin :)
17:14 Austin But somebody has to call those methods.
17:14 shockwave You mentioned that != maps to ne, or isne. Is there a way to make the connection of != to ne?
17:14 Austin Probably no.
17:15 Austin The 'ne' opcode is a test-and-branch op, while isne returns a result as an int expression.
17:15 shockwave Sorry, that's not what I mean.
17:15 Austin ok
17:16 Austin What *do* you mean? :)
17:16 shockwave What I meant is, if I don't see something in vtable.tbl, for mapping to !=, how can I draw a conclusion as to what it would be based on what's in cmp.ops
17:17 Austin Well, cmp.ops contains this:          $1 = !VTABLE_is_equal(interp, $2, $3);
17:18 Tene if you want to know what an op does, just read src/ops/foo.ops
17:18 Austin So I'd recommend you read the pod first (perldoc cmp.ops, or check the docs/ directory), and then follow up by reading the source.
17:19 Austin Just be warned that the docs frequently lie.
17:19 Austin :<
17:20 shockwave I'm about to read the doco you guys mentioned, but it's looking like there is no != vtable override.
17:20 shockwave I base that assumption on the fact that ne is defined as !VTABLE_is_equal.
17:21 shockwave One could draw the conclusion that vtable method names are the same as the function names, minus the VTABLE_ part
17:21 shockwave Thus, there is no VTABLE_isnt_equal.
17:21 shockwave Hopefully I'm wrong.
17:21 shockwave Thanks, Austin, Tene.
17:21 Austin You're welcome. You're also right.
17:21 Austin (Why do you want there to be a vtable op for != ?
17:22 Tene shockwave: you're correct.  There isn't a separate vtable for !=
17:22 Tene != is *defined* as "the opposite of ==", so that's how it's implemented.
17:22 shockwave Austin, so that I can map both != and == to an override in my language.
17:22 Austin Oh. No.
17:23 shockwave Operator overload.
17:23 Tene >< ew
17:24 Tene No, that's not supported.
17:24 shockwave Some people like it, some people dont. But, in either case, I need the functionality.
17:24 shockwave It really helps to override operator for things like 3D matrices and vectors.
17:24 * Tene nods
17:25 shockwave Otherwise you find yourself doing things like Vector.plus(Vector.times(Vector))
17:25 Tene when dealing with matrices and vectors, etc, is it not just "the opposite of =="?
17:25 shockwave Tene, yes.
17:25 Tene "Yes, it is just the opposite of ==" or "yes, it is not just the opposite of =="?
17:26 Tene Apparently I fail at english negation today.
17:26 kurahaupo question would go away if it were VTABLE_equal(pmc1,pmc2,equalresult,neresult)
17:26 kurahaupo question would go away if it were VTABLE_equal(target,pmc1,p​mc2,equalresult,neresult)
17:26 shockwave Tene, somehow, I need to be able to do this in PIR: $P0 != $P1 # Both would be vector objects.
17:27 shockwave and I need to call a custom made function to deal with that.
17:27 shockwave vtable is_equal maps nicely to ==, but to deal with !=, I'm not sure what kind of mess I'm gonna need to create.
17:28 tewk $P2 = $P0.'custom_made_function'($P1)
17:28 Tene shockwave: is the answer returned going to be different from: { $I0 = $P0 == $P1 \n not $I0 }
17:28 shockwave Tene. Yes.
17:28 Tene shockwave: if you define VTABLE_equal, then both == and != will work
17:28 Tene Okay, in that case, I wouldn't say that the operation is !=
17:29 Austin I think that != does not have the same definition as not( == )
17:29 shockwave BUT, the user is free to overload != however they want.
17:29 Austin Okay
17:29 Tene at least not as parrot thinks of it.
17:29 shockwave Unfortunately.
17:29 particle smells like a multimethod to me
17:30 kurahaupo User can overload either eq or ne but not both
17:30 plobsing shockwave: can't you modify tene's suggestion to use a PMC { $P2 = $P0 == $P1 \n $P3 = not P2 } ?
17:30 Tene plobsing: he wants to support == and != not being related at all.
17:30 Austin Yeah, that's a multimethod. Tene is right.
17:30 Tene that is, it's possible for both == and != to be true, or both to be false.
17:31 kurahaupo Yuck.
17:31 Austin shockwave: Build a :multi sub. Then when a user overrides !=, extend the multisub by adding another arguments-permutation
17:31 Tene shockwave: vtables aren't the place to be doing that.  use methods, and have the compiler for your language compile operations to function calls.
17:31 Tene s/methods/functions/whatever
17:33 shockwave Tene. As Parrot is defined, I must do that. It's just that == mapped very nicely to is_equal, and Parrot took care of the details.
17:33 shockwave I'll do it with subs.
17:33 shockwave Thanks
17:33 kurahaupo Or silently convert overloading of != into overloading of == with a wrapper that inverts the result.
17:34 Tene and one of those details is that the != op is defined as the opposite of the == op.  You can still use ==, and just have your default != op use parrot's !=
17:34 Tene kurahaupo: that won't work for defining both == and != independently.
17:35 Tene "== op" overloading goes in vtable equals.  default != function just calls parrot != on the arguments.
17:35 kurahaupo That's intentional. throw error if they try.
17:35 Tene kurahaupo: he *want* to support that.  that's a requirement of his language.
17:35 shockwave For now, I will restrict != to not be overloadable and do the inversion thing.
17:36 payload joined #parrot
17:36 shockwave So that if one overloads == in the language, it will behave as Parrot (Automatically supply a !=, which does the inversion).
17:36 shockwave I can live with that.
17:37 shockwave Thanks for the sudjestion, guys.
17:37 Tene np
17:38 kurahaupo IMHO if == & != can have same value the those are the wrong names for whatever is being expressed.
17:39 shockwave kurahaupo, I agree.
17:40 payload joined #parrot
17:53 szabgabx joined #parrot
17:54 PerlJam joined #parrot
18:16 cosimo joined #parrot
18:23 kurahaupo1 joined #parrot
18:33 dukeleto if i give --cc=clang to Configure.pl, but don't set --link or --ld, is it using gcc for those?
18:39 dukeleto in case anybody is wondering, i found the free non-commercial download page for icc: http://software.intel.com/en-us/artic​les/non-commercial-software-download/
18:39 dukeleto whiteknight++
18:42 ruoso joined #parrot
18:43 gaz joined #parrot
19:02 cosimo joined #parrot
19:07 * Coke skips review.
19:07 Coke dukeleto: if you want to know what it's using, look at config_lib.pasm, or use parrot_config
19:08 Coke (or the Makefile)
19:12 whiteknight dukeleto: (re: --cc=clang) I think it uses gcc in thosec ases, yes. I always do the complete "--cc=clang --ld=clang --link=clang" incantation
19:13 Tene So, there's a problem I ran into last night.  Exception.pmc stores stuff in attributes.  using getattribute on subclasses of Exception works perfectly.  The standard interface, though, is get_pmc_keyed, and Exception.pmc's get_pmc_keyed just calls SELF.get_attr_str, which calls GET_ATTR_foo, and that just returns pmcnull for subclasses.
19:13 whiteknight of course, I have a huge obnoxious library of aliases and functions that do i for me
19:13 whiteknight Tene: sounds delicious. Why does GET_ATTR_foo return PMCNULL?
19:14 Tene No idea.
19:14 whiteknight okay
19:14 Coke ISTR there is setup you have to do in the PMC to allow attr's to work in subclasses.
19:14 Coke ISTR this broke tcl for after the initial switchover.
19:14 Coke (but tcl doesn't subclass exception...)
19:14 Tene Coke: getattribute on the subclass instance works fine.
19:16 Coke it didn't say getattribute. =-)
19:16 * Tene nods.
19:16 Coke s/it/I/
19:16 Coke I think the ATTR's were special.
19:16 Coke I think cotto might have been the guy that worked on that, but I can't recall for sure.
19:21 Tene okay, looks like it depends on how it's set.
19:21 cotto_work hi
19:21 Tene set with keyed, can only fetch with keyed.  set with setattribute, can only fetch with getattribute
19:21 hercynium joined #parrot
19:21 Austin Heh.
19:21 nopaste "tene" at 76.27.121.193 pasted "Example of weirdness with subclasses" (45 lines) at http://nopaste.snit.ch/19829
19:21 Austin Data is fine, just two separate bits of data.
19:21 Tene Yeah.
19:23 Tene if nobody has any ideas, I'll take it to the list.
19:23 Austin Hey, cotto_work. Do you know anything about how to get access to ATTRs in a subclass of a pmc?
19:25 cotto_work in pir?
19:25 cotto_work in C it's the same as with the parent class
19:25 Austin No, C. This is for Tene.
19:27 Austin There seems to be different data being accessed by the get/set_attr_str macros and the VTABLE functions when a C Exception.pmc is subclassed in pir.
19:27 Austin Tene's recent nopaste highlights the difference using get/set_pmc_keyed, which in Exception just calls SELF.get/set_attr_str
19:27 cotto_work I have to take off for a bit but I can look at it this afternoon.
19:28 Tene cotto_work: look for mail on the list.
19:28 Tene it'll be there shortly.
19:28 Austin What is the "PObj_is_object_TEST" ?
19:32 Austin So if the subclass is an object, it calls the vtable method. Which looks for the attrib-index in an attributes table?
19:34 Tene #define PObj_is_object_TEST(o) PObj_flag_TEST(is_object, o)
19:34 Tene sent.
19:35 Tene I don't remember if this is the list I have issue posting to or not.
19:38 Coke I see no post nor admin request.
19:52 dalek rakudo: 64e4d36 | (Solomon Foster)++ | t/spectest.data:
19:52 dalek rakudo: Turn on bit.t, equality.t, increment.t, and inplace.t, all in S03-operators.
19:52 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/6​4e4d3654e0ead6cfe02ad42bbed6873690c9783
19:55 NotFound Tene: last time I tried, to access the attributes of the PMC in derived classes you need to add_attribute to the class. That doesn't mean doing that works well, though.
19:56 NotFound And when it works, someone broke it in some PMC by directing accessing the attributes for speed, or something.
19:57 NotFound In short: the full attributes thing doesn't work well with class derived from PMC
19:59 joeri joined #parrot
20:02 dalek parrot: r44576 | coke++ | trunk/DEPRECATED.pod:
20:02 dalek parrot: The only place a .namespace is declared in the repo with an embedded :: is examples/
20:02 dalek parrot: Rewriting the examples is covered by TT#1486, but that doesn't need a deprecation notice.
20:02 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44576/
20:03 bubaflub left #parrot
20:07 riffraff joined #parrot
20:07 Tene Hmm.  My mail still hasn't arrived at the list.
20:14 kjeldahl_ joined #parrot
20:23 cotto_work I see it.
20:30 Tene ah, yes, I see it now too.
20:36 tewk Tene, I saw a similar problem because of PMCProxy
20:37 tewk Basically an object had a pointer to a PMCProxy, but the PMCProxy didn't know it was an object so it used PMC_data(pmc) instead of VTABLE_get_attr_str.
20:38 tewk I don't remember exactly but check it out.
20:45 ash_ joined #parrot
21:18 tjc joined #parrot
21:22 snarkyboojum joined #parrot
21:36 eternaleye joined #parrot
21:39 dalek rakudo: 5e5969d | (Solomon Foster)++ | t/spectest.data:
21:39 dalek rakudo: Turn on S04-statements/ given.t and if.t.
21:39 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​e5969dc1cda0f01dab42cd75aae962ca3a271c3
21:41 tjc left #parrot
21:42 NotFound joined #parrot
21:43 bacek joined #parrot
21:44 cotto_work hi bacek++
21:44 bacek good morning cotto :)
21:45 bacek Why ++ today?
21:45 cotto_work opsc work over the weekend
21:45 Coke bacek-- # too many questions.
21:45 bacek Coke, Yay! :)
21:45 * Coke is harsh.
21:45 Coke cotto, you boson.
21:46 anticoke don't get too close
21:46 anticoke It won't end well.
21:48 cotto_work I should have some tuits this week.  I'm looking forward to diving into that code again.
21:48 cotto_work What's the current plan?
21:48 purl i guess the current plan is to get schwern and fimmy an SDSL line and put a couple boxen there.  They're going to trade me power, space, and hardware needs for bandwidth.
21:48 Coke purl, plot?
21:48 purl Plot.  What a funny word.  Plot.  Plot plot plot.  Plot plot plotplotPLOT.  PlotplotplotPLOTPLOT!  Plot plot plotplotplotplot.
21:52 bacek cotto_work, I'm going to finish end-to-end skeleton for generating .c/.h files.
21:53 bacek Next big thing - ops bodies parsing.
21:53 cotto_work Are you planning on writing a C parser?
21:55 tac-tics joined #parrot
21:55 bacek cotto, I'll probably borrow Close :)
21:57 bacek cotto, and we need pmichaud++ help for speed up parsing. It takes about 35 seconds to parse all ops...
22:00 cotto_work quite likely
22:01 cotto_work I'll see if I can find anything with the profiling runcore.
22:02 bacek I suspect a lot of backtracking. But :: isn't implemented in nqp-rx yet.
22:05 cotto_work Let me know if there's anything that'd parallelize well or that you don't feel like working on.
22:06 bacek cotto, ops bodies parsing I think.
22:07 cotto_work via a C parser or via cheating?
22:07 Coke for parsing ops bodies, do you need all of C, or just the special bits we've layered on top?
22:07 cotto_work (I vote for cheating since the compiler will catch any C errors)
22:07 Coke (or, just the bits thatwe're using)
22:08 bacek almost all of C...
22:08 cotto_work yeah.  We'd need to parse anything that can appear in a function.  I imagine we use a very significant subset.
22:09 bacek LTM doesn't work well, so something like [ goto NEXT () | .*? ] doesn't work as expected.
22:09 bacek Close?
22:09 purl hmmm... Close is close file (or pipe or socket) handle or bad on sockets, use shutdown() instead or horseshoes or grenades or nuclear weapons or http://code.google.com/p/close/
22:10 cotto_work that presents some difficulties to the "flagrant cheating" approach
22:14 cotto_work why not do the bare minimum parsing necessary to capture an op body (matched curly braces, string parsing, etc) and do simple search and replace on the op body?
22:18 cotto_work I'll have to look at that approach when I get home tonight.
22:18 cotto_work It'd be nice to avoid the complexity of a near-complete C parser if possible.
22:32 cotto_work bacek, to clarify, you plan is to generate the different runcore files except without any changes to the op function bodies?
22:32 cotto_work s/you/your/
22:32 bacek cotto, yes.
22:33 cotto_work ok'
22:51 kthakore joined #parrot
23:16 pootek joined #parrot
23:17 Whiteknight joined #parrot
23:21 snarkyboojum joined #parrot
23:27 lucian_ joined #parrot
23:31 cotto_work clock?
23:31 purl cotto_work: LAX: Mon 3:31pm PST / CHI: Mon 5:31pm CST / NYC: Mon 6:31pm EST / LON: Mon 11:31pm GMT / BER: Tue 12:31am CET / IND: Tue 5:01am IST / TOK: Tue 8:31am JST / SYD: Tue 10:31am EST /
23:43 Whiteknight clock?
23:43 purl Whiteknight: LAX: Mon 3:43pm PST / CHI: Mon 5:43pm CST / NYC: Mon 6:43pm EST / LON: Mon 11:43pm GMT / BER: Tue 12:43am CET / IND: Tue 5:13am IST / TOK: Tue 8:43am JST / SYD: Tue 10:43am EST /
23:44 cotto_work time marches on
23:45 Whiteknight how are you doing tonight, cotto_work?
23:46 cotto_work brain tired
23:46 cotto_work want to do fun things
23:46 Whiteknight Ah, I know that feeling
23:47 * Whiteknight resists the urge to complain about his job or his incompetent manager in a publically-logged forum
23:47 cotto_work fortunately my desire to get paid overrules my desire to go home early and hack on Parrot
23:47 Whiteknight ditto
23:52 ash_ Whiteknight: i don't know if you remember, but i mentioned to you before i am working on a sort of alternative nqp, based on the llvm, i just was going to let you know, i have a bison based parser that can parse most of the test suite for nqp, now i am working on building the AST from the parser
23:52 Whiteknight ash_: yeah, I remember. I mentioned your project in my blog a few days back
23:55 patspam joined #parrot
23:55 ash_ cool, thanks for mentioning it
23:59 ash_ Whiteknight: i am writing about my implementation on my website greaterthaninfinity.com/ if your interested, i am trying to keep that up to date with my work, but i am not much of a blogger, or wordsmith so it might be painful to read at times

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

Parrot | source cross referenced