Camelia, the Perl 6 bug

IRC log for #parrot, 2010-03-01

Parrot | source cross referenced

← Previous day | Index | Channel Index | Today | Next day → | Search | Google Search | Plain-Text | plain, newest first

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 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 :)
00:04 Whiteknight I was going to use 1 tab = (7.435 * line number) spaces, but an even number is slighly better
00:11 Austin: how to test it?
00:11 parrot-nqp setup.nqp test failed
00:11 Austin What, tab size?
00:11 Oh.
00:12 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 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 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 Edit that file, remove the test.
00:16 Whiteknight Austin: I changed that file to +x and commited the change
00:16 I also just commited a test for nested super()
00:16 Austin Woot!
00:16 Does it pass?
00:16 Whiteknight++
00:17 Whiteknight test does indeed pass
00:17 I'm sorry I doubted
00:17 * Austin ++
00:17 Austin :)
00:19 I'm about waist deep in the mocking stuff right now. I think I've got a model that works...
00:19 It's just a question of building the horribly tangled thing...
00:19 dalek kakapo: ed480bb | whiteknight++ | :
00:19 kakapo: make harness-nqp.sh executable
00:19 kakapo: review: http://gitorious.org/kakapo/ka[…]f1ac186f35747a596
00:20 kakapo: 31e3b92 | whiteknight++ | t/Syntax.nqp:
00:20 kakapo: test that super() nests to multiple levels correctly
00:20 kakapo: review: http://gitorious.org/kakapo/ka[…]8da5b588024a55113
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 Everybody talks about how code is read more than written...
00:44 Well, what if there were fonts that were optimized for reading?
00:44 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 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 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 Yeah, me too.
00:55 Stats and economics.
00:55 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 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/M[…]b/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 Austin: i wrote the Perl 5 bindings
00:57 Austin Ahh, okay.
00:57 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 Could not upload report to Smolder at http://smolder.plusthree.com
02:44 HTTP CODE: 500 (read timeout)
03:04 Austin Heh.
03:09 Tene Where is this depression Exceptions.nqp ?
03:10 Austin: you parroting tonight?
03:10 Austin Tene: Yeah, I'm up.
03:11 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 I was thinking of working on type-based EHs now.  Lemme throw together an example for you to look at.
03:22 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 should be handle_classes oslt
03:30 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 First, you can try to catch a particular exception.
03:32 That's like catching file-not-found or something.
03:32 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 There's the control-exception scenario: catch any of these.
03:34 And the kind of obvious "anything but a control exception"
03:34 Which is what nqp currently does.
03:35 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 But other languages make you declare your types as part of the catch:    catch (FileNotFoundException e) {...} catch (QuotaException q) {...} ...
03:38 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 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 I'd like to know how .net handles this stuff.
03:44 okay, they don't distinguish.
03:44 (and coders suffer from catching too many things)
03:45 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 :)
03:47 Tene ex['message'] gets the message just fine.
03:47 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 Something about roles should be considered.
03:49 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 If I write some code like:   try {  do_something() }  ... finally { close( handle ); }
03:51 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 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 If some "vice president of exceptions" decides to resume it, then you should not have finalized. But otherwise you should have.
03:54 :-$
03:55 This is why the handler is supposed to execute in the dynamic context of the thrower.
03:57 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 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 vtable override stuff?
04:02 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 the default handlers generated by PCT check for the 'handled' attribute to decide whether to rethrow.
04:06 If it's handled, wouldn't that mean that you *do* want to resume it?
04:06 Austin Heh.
04:06 No.
04:07 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 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 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 But I can write it, so no strain
04:11 Detecting the failure-to-act:
04:12 that has to be some kind of opcode condition.
04:13 Like inserting a dummy stack frame?
04:13 If you try to return from the handler without acting, ...
04:13 That's a little wiggy.
04:14 dalek parrot: r44552 | bacek++ | branches/ops_pct/ext/nqp-rx (4 files):
04:14 parrot: Add to-be-nqp-settings
04:14 parrot: review: http://trac.parrot.org/parrot/changeset/44552/
04:14 parrot: r44553 | bacek++ | branches/ops_pct/compilers/opsc (5 files):
04:14 parrot: Use nqp-settings. Cleanup builtins little bit
04:14 parrot: review: http://trac.parrot.org/parrot/changeset/44553/
04:14 parrot: r44554 | bacek++ | branches/ops_pct/src/ops/core.ops:
04:14 parrot: Remove redundant 'goto NEXT'
04:15 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 any?
04:15 purl rumour has it any is being done as a particular language feature
04:15 Austin Little.
04:15 Depends on how you define 'misbehaves'?
04:16 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 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 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 Yeah.
04:25 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 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 fetching it with getattribute works fine.
04:28 ex['resume'] # fails on subclasses
04:28 getattribute ex, 'resume' # works fine
04:28 Austin Ah. Can I see your code?
04:28 You might have a C3 problem.
04:29 "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 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 and it works fine on Exceptions.
04:34 Nothing in that path has been modified.
04:34 Austin Huh?
04:35 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 Because you can access it with getattribute.
04:46 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 But what set_attr did it go to?
04:49 throw calls vtable-set-attr-str directly
04:49 And when you call get-attr-str directly, you get the data back
04:50 But when you call get-pmc-keyed, which locally-calls get_attr_str, you get bupkis.
04:50 Maybe try calling the vtable version of getattr-str from get_pmc_keyed?
04:52 Tene no change.
04:52 Austin bummer
04:53 Is this code on a branch somewhere?
04:53 Tene Yes.
04:53 exceptions_refactor
04:56 oh, if I add a 'resume' method, I'll have to deal with the C/PIR boundary, I think.
04:57 So, that's less than ideal.
04:58 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 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 parrot: Allow rethrown subclassed exceptions to find the next handler.
05:20 parrot: Add infrastructure to filter based on exception types.
05:20 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 parrot: Brake everything. Restructure files and directories. Strip out old stuff
05:53 parrot: review: http://trac.parrot.org/parrot/changeset/44556/
05:53 parrot: r44557 | bacek++ | branches/ops_pct/compilers/opsc/opsc.pir:
05:53 parrot: Fix opsc.pir
05:53 parrot: review: http://trac.parrot.org/parrot/changeset/44557/
05:53 parrot: r44558 | bacek++ | branches/ops_pct/compilers/opsc/Rules.mak:
05:53 parrot: Remove removed opsc_core from Rules
05:53 parrot: review: http://trac.parrot.org/parrot/changeset/44558/
06:09 parrot: r44559 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/Op.pm:
06:09 parrot: Borrow Ops::Op from ops2c
06:09 parrot: review: http://trac.parrot.org/parrot/changeset/44559/
06:09 parrot: r44560 | bacek++ | branches/ops_pct/compilers/opsc (2 files):
06:09 parrot: Add build of Ops::Op
06:09 parrot: review: http://trac.parrot.org/parrot/changeset/44560/
06:09 parrot: r44561 | bacek++ | branches/ops_pct/compilers/opsc/t/04-op.t:
06:09 parrot: Add tests for Ops::Op
06:09 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 parrot: fix codetest failure - trailing spaces
09:26 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 parrot: Made Ops::Op inherited from PAST::Block and construct them during compilation phase
09:42 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 parrot: Add stub for Ops::File
09:59 parrot: review: http://trac.parrot.org/parrot/changeset/44564/
09:59 parrot: r44565 | bacek++ | branches/ops_pct/ext/nqp-rx/src/gen/settings.pm:
09:59 parrot: Update nqp settings
09:59 parrot: review: http://trac.parrot.org/parrot/changeset/44565/
09:59 parrot: r44566 | bacek++ | branches/ops_pct/compilers/opsc (2 files):
09:59 parrot: Fix parsing almost empty ops
09:59 parrot: review: http://trac.parrot.org/parrot/changeset/44566/
09:59 parrot: r44567 | bacek++ | branches/ops_pct/compilers/opsc (2 files):
09:59 parrot: Implement Ops::File.read_ops
09:59 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 parrot: Rewrite test in NQP
12:42 parrot: review: http://trac.parrot.org/parrot/changeset/44568/
12:42 parrot: r44569 | bacek++ | branches/ops_pct/compilers/opsc/t/03-past.t:
12:42 parrot: Fix test
12:42 parrot: review: http://trac.parrot.org/parrot/changeset/44569/
12:42 parrot: r44570 | bacek++ | branches/ops_pct/compilers/opsc/src/builtins.pir:
12:42 parrot: Add lc
12:42 parrot: review: http://trac.parrot.org/parrot/changeset/44570/
12:42 parrot: r44571 | bacek++ | branches/ops_pct/compilers/opsc (5 files):
12:42 parrot: Add normalization of op args as in ops2c
12:42 parrot: review: http://trac.parrot.org/parrot/changeset/44571/
12:42 parrot: r44572 | bacek++ | branches/ops_pct/compilers/opsc (2 files):
12:42 parrot: Stole expand_args from ops2c
12:42 parrot: review: http://trac.parrot.org/parrot/changeset/44572/
12:42 parrot: r44573 | bacek++ | branches/ops_pct/compilers/opsc (3 files):
12:42 parrot: Move expand_args into Actions
12:42 parrot: review: http://trac.parrot.org/parrot/changeset/44573/
12:42 parrot: r44574 | bacek++ | branches/ops_pct/compilers/opsc (3 files):
12:42 parrot: Create op variants during parsing
12:42 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 rakudo: Add Bool.perl.
15:33 rakudo: review: http://github.com/rakudo/rakud[…]6cc2ccabf4c73473d
15:33 rakudo: bbe9441 | (Solomon Foster)++ | t/spectest.data:
15:33 rakudo: Turn on S02-literals/char-by-number.t and S02-names_and_variables/perl.t.
15:33 rakudo: review: http://github.com/rakudo/rakud[…]183fe510ea349e365
15:33 rakudo: af0424a | (Solomon Foster)++ | src/core/Signature.pm:
15:34 rakudo: "Bool::True" instead of "1", as per jnthn.
15:34 rakudo: review: http://github.com/rakudo/rakud[…]49dd06fa34d434366
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 I'd say look-for-no, and if not found, look-for-yes.
15:37 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 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 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 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 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 parrot: Refactor ExceptionHandler to use one array instead of four.
16:16 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 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 == maps to eq, or iseq. != maps to ne, or isne
17:10 (ne returns !vtable_is_equal)
17:11 (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 :)
17:14 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 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 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 Just be warned that the docs frequently lie.
17:19 :<
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 I base that assumption on the fact that ne is defined as !VTABLE_is_equal.
17:21 One could draw the conclusion that vtable method names are the same as the function names, minus the VTABLE_ part
17:21 Thus, there is no VTABLE_isnt_equal.
17:21 Hopefully I'm wrong.
17:21 Thanks, Austin, Tene.
17:21 Austin You're welcome. You're also right.
17:21 (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 != 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 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 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 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 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 and I need to call a custom made function to deal with that.
17:27 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 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 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 I'll do it with subs.
17:33 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 kurahaupo: that won't work for defining both == and != independently.
17:35 "== 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 I can live with that.
17:37 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 in case anybody is wondering, i found the free non-commercial download page for icc: http://software.intel.com/en-u[…]oftware-download/
18:39 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 (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 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 ISTR this broke tcl for after the initial switchover.
19:14 (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 I think the ATTR's were special.
19:16 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 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 in C it's the same as with the parent class
19:25 Austin No, C. This is for Tene.
19:27 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 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 it'll be there shortly.
19:28 Austin What is the "PObj_is_object_TEST" ?
19:32 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 sent.
19:35 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 rakudo: Turn on bit.t, equality.t, increment.t, and inplace.t, all in S03-operators.
19:52 rakudo: review: http://github.com/rakudo/rakud[…]2bbed6873690c9783
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 And when it works, someone broke it in some PMC by directing accessing the attributes for speed, or something.
19:57 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 parrot: The only place a .namespace is declared in the repo with an embedded :: is examples/
20:02 parrot: Rewriting the examples is covered by TT#1486 , but that doesn't need a deprecation notice.
20:02 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 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 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 rakudo: Turn on S04-statements/ given.t and if.t.
21:39 rakudo: review: http://github.com/rakudo/rakud[…]75aae962ca3a271c3
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 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 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 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 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 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 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 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 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 I'll have to look at that approach when I get home tonight.
22:18 It'd be nice to avoid the complexity of a near-complete C parser if possible.
22:32 bacek, to clarify, you plan is to generate the different runcore files except without any changes to the op function bodies?
22:32 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 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 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

← Previous day | Index | Channel Index | Today | Next day → | Search | Google Search | Plain-Text | plain, newest first

Parrot | source cross referenced