Camelia, the Perl 6 bug

IRC log for #parrot, 2010-02-28

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:01 snarkyboojum joined #parrot
00:05 mikehh joined #parrot
00:16 eternaleye joined #parrot
00:24 mikehh joined #parrot
00:28 mikehh joined #parrot
01:07 cognominal joined #parrot
01:12 Whiteknight Coke: I've got a solaris VM. what do you need tested?
01:47 mikehh joined #parrot
01:58 lichtkind ever seen http://www.parrot.com/uk/support/downloads^? :)
02:03 Themeruta joined #parrot
02:41 Coke there are no tests for Data::Dumper?
02:49 dalek parrot: r44538 | coke++ | trunk/t (5 files):
02:49 dalek parrot: Don't use something if you're not going to use it.
02:49 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44538/
03:05 dalek parrot: r44539 | coke++ | trunk (5 files):
03:05 dalek parrot: move Data::Dumper to Data;Dumper
03:05 dalek parrot: Listed in deprecated.pod for a previous release, but no ticket listed.
03:05 dalek parrot: (Apparently this library is untested.)
03:05 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44539/
03:11 lichtkind_ joined #parrot
03:11 Austin heh
03:12 Austin One of my problems with D::D is that class objects identify themselves as being of their own type. So D::D doesn't know how to dump them.
03:13 * Austin sings "So how you like me now! How you like me now?"
03:22 dalek parrot: r44540 | coke++ | trunk (3 files):
03:22 dalek parrot: move Parrot::Coroutine to Parrot;Coroutine
03:22 dalek parrot: Listed in deprecated.pod for a previous release, but no ticket listed.
03:22 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44540/
03:54 janus joined #parrot
04:13 cognominal joined #parrot
04:52 ttbot Parrot trunk/ r44541 i386-linux-thread-multi make error http://tt.ro.vutbr.cz/file/cmdout/217988.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
04:54 theory joined #parrot
04:59 Coke fixed the ttbot error...
04:59 Tene okay, next task on exceptions_refactor, class-based handler filters.
05:00 dalek parrot: r44541 | coke++ | trunk (2 files):
05:00 dalek parrot: move Test::Builder::* to Test;Builder;*
05:00 dalek parrot: Listed in deprecated.pod for a previous release, but no ticket listed.
05:00 dalek parrot: Much of this was already done, this is just cleanup on some sub-namespaces
05:00 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44541/
05:00 dalek parrot: r44542 | coke++ | trunk/runtime/parrot/libra​ry/Test/Builder/Test.pir:
05:00 dalek parrot: Fix error introduced in blind translation of ::strings to ;-keys.
05:00 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44542/
05:01 Coke ah, crap. I must not have done a test run when I thought I did.
05:03 Tene anyone interested in writing a class-based exception handler filter test for me?
05:03 Tene or even a subclassable-exceptions test?
05:04 Coke I am tired/focused on something else, sorry.
05:05 Tene Certainly not a problem. :)
05:09 Coke anyone have pcre installed?
05:13 hercynium joined #parrot
05:13 Coke sdl?
05:13 purl somebody said sdl was Simple Directmedia Layer aka DirectX for Unix except with 59% less evil.  There's Perl bindings.  Frozen Bubble is written using it. or or allows that nifty doom game to run on ayrnieu's *Zaurus*
05:13 Coke who was the recent SDL guy?
05:14 Austin kthakore
05:14 purl kthakore is probably working on rehashing SDL_perl or making a Tetris clone in Modern Perl which shows an Example of MVC and the mediator design pattern in SDL Perl
05:17 dalek parrot: r44543 | coke++ | trunk (5 files):
05:17 dalek parrot: move YAML::Dumper::* to YAML;Dumper;*
05:17 dalek parrot: Listed in deprecated.pod for a previous release, but no ticket listed.
05:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44543/
05:17 dalek parrot: r44544 | coke++ | trunk/runtime/parrot/libra​ry/Test/Builder/Test.pir:
05:17 dalek parrot: fix case-sensitive bug introduced during conversion from ::-strings to ;-keys.
05:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44544/
05:17 dalek parrot: r44545 | coke++ | trunk/t/op/gc.t:
05:17 dalek parrot: Don't use ::-based namespaces; they look special but aren't.
05:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44545/
05:17 dalek parrot: r44546 | coke++ | trunk (3 files):
05:17 dalek parrot: move PCRE::NCI::* to PCRE;NCI;*
05:17 dalek parrot: Listed in deprecated.pod for a previous release, but no ticket listed.
05:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44546/
05:17 patspam joined #parrot
05:37 pmichaud I tried /stats p  and it said "0 staff members"
05:37 pmichaud ww
05:58 dalek TT #1485 created by coke++: runtime/parrot/library/SDL/*.pir  bitrot
06:02 dalek kakapo: 8c79bec | austin++ |  (14 files):
06:02 dalek kakapo: Cleaned up Matchers: Not, Null.
06:02 dalek kakapo: Added Assertions, tests.
06:02 dalek kakapo: Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
06:02 dalek kakapo: review: http://gitorious.org/kakapo/kakapo/commit​/8c79bec172ec472f2da1b968b77a4808e771f89e
06:06 dalek parrot: r44547 | coke++ | trunk (32 files):
06:06 dalek parrot: move SDL::* to SDL;*
06:06 dalek parrot: Listed in deprecated.pod for a previous release, but no ticket listed.
06:06 dalek parrot: Note: there aren't any tests for the SDL files, and they aren't built by
06:06 dalek parrot: default; I verified that no new regressions were introduced in the build
06:06 dalek parrot: of the library files and that examples_tests still passes.
06:06 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44547/
06:17 Tene Coke++
06:17 Tene That's great.  Thank you for doing that.
06:24 Coke I opened a ticket for examples/, having been beaten down by doing runtime. =-)
06:25 Coke next on the list is looking at PGE::
06:25 Coke ... but not tonight.
06:25 Coke ~~ zzzz.
06:31 dalek TT #1486 created by coke++: rewrite examples/ to use hierarchical namespaces instead of flat ::-style
06:52 kurahaupo joined #parrot
07:10 eternaleye joined #parrot
07:22 jsut_ joined #parrot
07:57 kjeldahl joined #parrot
08:25 dukeleto wow. icc costs $600
08:38 iblechbot joined #parrot
08:48 ruoso joined #parrot
09:35 lucian joined #parrot
09:51 eternaleye joined #parrot
11:06 bacek joined #parrot
12:17 payload joined #parrot
12:23 dalek joined #parrot
12:26 AndyA joined #parrot
12:26 Whiteknight joined #parrot
12:34 Whiteknight good morning #parrot
12:34 Austin Good morning, Whiteknight.
12:35 Whiteknight hello Austin. How are you today?
12:35 Infinoid hi Whiteknight
12:36 Austin Great. My fishing expedition is finally over (cable fishing, that is) so I can stop drilling holes in my floor.
12:36 Austin Now I'm trying to think up the right interface for mocking expectations.
12:39 Whiteknight hello Infinoid. How are you doing with all the snow?
12:39 Infinoid No big deal, I've been able to mostly ignore it.  You?
12:40 Austin You guys got snow, Inf? 'Cause we got a lot of hot air, but not enough snow to talk about.
12:40 Whiteknight Infinoid: had a few days where we were trapped in our apartment, but good otherwise
12:40 Whiteknight Austin: are you thinking about a method on the mock object itself, or a method on the mock manager object?
12:42 Austin I'm pretty sure it will be on a different object- I don't want to put anything on the mocks that might conflict with the target class.
12:43 Whiteknight good call
12:43 Austin Is it possible to override the vtable method dispatch ?
12:43 Austin Alternatively, what's the expected way to do something like P5's AUTOLOAD ?
12:44 Whiteknight A method call could construct an expectation object and store it into the mock's namespace. Then the mock could look up the list of expectations and mark each as "successfull" or not
12:44 Whiteknight Austin: yes, you can override VTABLE_invoke, though support for it is currently experimental
12:44 Austin Heh.
12:44 Austin By experimental, do you mean "has no passing test cases?"
12:44 Whiteknight I'm not sure. I feel like it should have some tests
12:44 Austin Okay.
12:46 Austin I'm torn, mock-wise, between just logging the calls (what the current framework does) and actively matching them so I can specify a return value.
12:49 Whiteknight is a ttest in t/oo/vtableoverrides.t
12:50 Whiteknight active matching would be awesome if you have it, but basic logging is good too
12:50 Whiteknight I stand by my earlier idea: store expectation objects in the mock namespace. If they exist, match them. If not, just log calls
12:51 Austin Sure. But how?
12:51 Whiteknight magic, goddamnit
12:51 Whiteknight add a global "Expectations" variable to the namespace. If it exists, it's an array of Expectation objects
12:52 Austin Sure, dude. But we'uns *is* the magicians.
12:52 Whiteknight each Expectation object contains a method call name, some sort of parameter list (or parameter signature list) and a return value
12:52 Austin Okay. So I want a call 'foo(1)' to return string 'foo'.
12:53 Austin So I create Expectation.new('foo', :args(1), :returns('foo'))
12:53 Austin What do I do with it?
12:53 Whiteknight Add a method to Mimus::Maker that takes an expectation and a name of the mock
12:54 Whiteknight or better yet, the expectation and the actual mock object
12:54 Austin softlee, softlee ... catchee monkee..
12:54 Austin and ... ?
12:54 purl Yada yada yada hasn't been implemented yet! (unless you run bleadperl)
12:57 Whiteknight I'm thinking
12:59 Whiteknight Add it into the mock object as an attribute
13:01 Austin So it looks like I override the 'find_method' vtable on the class to return the sub I want to execute?
13:03 Whiteknight ah, and then you could wrap it with a new method object that contains the expectation logic
13:03 Whiteknight or add in the expectation as an attribute on the method object itself, if the method is a subclass
13:04 Austin As I see it, I could generate a method that looks up the expectation. That's easy, and direct.
13:05 Austin Or I could override find_method to _invoke_ the expectation.
13:05 Whiteknight that's fine too. All you need then is a way to associate that expectation with the mock object itself
13:06 joeri joined #parrot
13:11 bacek joined #parrot
13:12 Whiteknight Austin: we could create a new Sub-like object with an array of Subs. Invoking the object invokes each member Sub
13:12 Austin If I can override find_method, then I can use the mock controller to switch the mock into "setting expectations" mode. Which would make mock syntax be the same as call syntax.
13:13 Whiteknight that way we could add any number of expectations or conditions, and evaluate them each in an array
13:13 Austin Right.
13:13 Austin But which one returns?
13:13 Whiteknight whichever one has a :returns condition
13:14 Whiteknight whichever one has a :returns condition and a satisfied :params condition
13:14 Austin First? Longest?
13:15 Whiteknight the only one that matches
13:15 Whiteknight or, the most specific one that matches
13:15 Austin $expectation.whenCalled( :with_args(ANY), :returns(0) ).whenCalled( :with_args('foo'), :returns(1)) ?
13:15 Whiteknight perfect
13:15 Austin *whenCalled = when_called
13:16 Austin Which leaves you to implement the MMD necessary to resolve :with_args that conflict.
13:16 Austin (Because I *know* I'm not smart enough to do it.)
13:17 Whiteknight I'm game
13:17 Whiteknight I'm envisioning a very simple algorithm, just an RPA of specified args, and we go down the list matching each one element-wise
13:19 Austin Yeah, that's my view. I'm in favor of sequence, rather than best-match. (This first, then this, etc.)
13:20 Whiteknight any expecation that fails causes the whole chain to fail
13:21 Whiteknight I was thinking only of the return value. Maybe each expectation can only have one return value specified
13:21 Austin It won't be a failure. It just won't be a match.
13:22 Austin It's an unexpected call.
13:22 Whiteknight If I say $expectation.Expect( :args("foo") ).Returns("bar"), I want it to be registered as a failure if I don't receive "foo"
13:23 Austin Sure.
13:23 Austin But that happens at the end of the run.
13:23 Whiteknight right
13:23 Austin "were all your expectations met?" "no."
13:23 Whiteknight next question is figuring out how to query all the expectation objects in the system at the end of the run
13:25 Austin Hmm... find_method doesn't seem to be overridden.
13:26 Whiteknight there is a test for the behavior in t/oo/method.t
13:28 Austin method*S*
13:29 Whiteknight ?
13:29 Austin Yeah, I'm trying to use class.pmc's add_vtable_override method
13:31 Whiteknight don't say that
13:31 Whiteknight (that's something we *don't* have a test for, apparently)
13:32 Whiteknight well, we have some tests, but I don't know that they really cover this behavior
13:34 Austin There's way too much code in object.pmc's find_method vtable. That stuff should be in the class, or mop.
13:35 Whiteknight a lot of that code *is* in class.pmc
13:36 * Whiteknight starts the refactor
13:42 Whiteknight here's a gem: the Object PMC caches the method, but the Class doesn't
13:43 Austin Object figures it'll need it...
13:43 Austin heh
13:43 Austin Okay, I got it working in pir.
13:44 Austin :(
13:44 dalek parrot: r44548 | whiteknight++ | branches/find_method_object:
13:44 dalek parrot: creating a branch to refactor the behavior of Object.find_method. Most of that logic should be moved to the Class PMC instead. Actually, much of that logic already exists in Class.pmc, but isn't used apparently.
13:44 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44548/
13:46 Austin Awww, man. I hate it when I do dumb stuff...
13:54 Whiteknight is the class itself in it's own MRO list?
13:54 Austin Yeah, first.
13:54 purl yeah, first is basically reset, next
13:55 Austin purl, forget Yeah, first
13:55 purl Austin: I forgot yeah, first
13:55 Austin botsnack
13:55 purl :)
13:55 Austin whiteknight: It serves to guarantee at least one entry in the list.
13:55 Austin (Which is nice, a lot of the time)
13:57 Austin whiteknight: Check me on this, but does the "loop" in object.pmc's find_method only execute one iteration?
13:58 Whiteknight Austin, no, it loops
13:58 Whiteknight all_in_universe is usually true, and then we don't find the method, so we loop
13:58 Whiteknight it's fugly, but it seems to work
13:59 Austin How?
13:59 Austin Ahh, ok
13:59 Austin So why doesn't my stuff work?
14:13 AndyA joined #parrot
14:18 Austin Whiteknight, ping.
14:18 Whiteknight pong
14:18 dalek parrot: r44549 | barney++ | trunk/tools/dev/mk_language_shell.pl:
14:18 dalek parrot: Some small beautifications.
14:18 Austin Okay, I'm back to blaming the system.
14:18 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44549/
14:19 Austin Check me here: in object.pmc's find_method, ~ line 383, it sets method= find_vtable_override_for_class.
14:19 Whiteknight right
14:19 Austin If that is a real sub (not null), it calls it.
14:19 Whiteknight yes
14:19 Austin And that sub HAS to succeed.
14:19 Whiteknight why?
14:19 Whiteknight oh, right
14:20 Austin The output goes in &result, then method=result, break.
14:20 Whiteknight yes
14:20 Austin I think that's a bug.
14:20 Whiteknight probably is
14:20 Whiteknight I'm trying to refactor all this crap now
14:20 Austin My find_method should get the same option of returning null as the default one.
14:20 Austin Okay. I'm going to put in a ticket.
14:21 Whiteknight do that
14:22 Whiteknight and if you can attach a failing test case, I can verify that the fixes I'm working on do the trick
14:23 Austin Apparently there's some added PDD info in 41214.
14:23 Austin object PDD, she writes.
14:25 Austin "A class object reports on class methods, not on instance methods."
14:25 Austin Whatever a class method is.
14:25 Whiteknight methods on the Class PMC itself
14:25 Austin (Other than a method on the class instance itself, it being an object...)
14:26 Austin Sure. Shouldn't it inherit that from object.pmc?
14:40 gaurav joined #parrot
14:43 Austin Whiteknight: tt:1487 has a test case.
14:43 Whiteknight nice
14:45 Austin So in the meantime I have to search the mro. Not the end of the world.
14:46 Austin Each mock gets a find_method override, which looks up the method called in a mock list (and does ?? if not found). The expectations can be first class Command objects. ($exp.run(|args))
14:47 dalek TT #1487 created by Austin_Hastings++: Object.find_method fails if PIR 'find_method' vtable override returns null
14:47 Austin Configuration can use nqp syntax. Win, win win!
14:53 dalek parrot: r44550 | whiteknight++ | branches/find_method_object/src/pmc (2 files):
14:53 dalek parrot: first step of the refactor. Move most of the logic from Object.find_method into Class.get_pmc_keyed_str. Include a mechanism for the Class to cache the results.
14:53 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44550/
14:53 Whiteknight When searching for a method, we can't find_method on the classes recursively, because each class walks it's entire MRO array
14:54 Whiteknight so if we have inheritance, Foo->Bar->Baz, and we find method on Baz, it would search Bar, Foo, Foo
14:55 Whiteknight so instead we have to loop over the list of all parents, and we must include explicit checks for every possible type of parent object in the MRO
14:55 Whiteknight including Classes, PMCProxies, and subclasses of both
14:55 Whiteknight so this code is just going from bad to worse
14:55 Austin Huh?
14:56 Austin Where is that?
14:56 purl that is, like, the case, but I don't know
14:57 Whiteknight Object.find_method now
14:57 Whiteknight moving to Class.get_pmc_keyed_str in my new branch
14:57 Austin Is that wise?
14:58 Austin What if you are doing hash?
15:03 Whiteknight what?
15:03 Austin If you override <> on the class, will that prevent the instances from extending hash?
15:04 Whiteknight extending hash in a subclass of Class?
15:04 Austin I'm not sure of the semantics here.
15:04 Austin If I do :     class Foo is Hash {...}
15:04 Austin Does that require <> on the class pmc?
15:05 Whiteknight I'm changing the Class PMC's get_pmc_keyed_str vtable, not the behavior of Object's get_pmc_keyed_str
15:05 Whiteknight no, tht requires <> on Object
15:05 Austin Okay. But does object inherit that from class?
15:05 Whiteknight no
15:05 Austin Okay. Nevermind.
15:05 Whiteknight Class is the metaobject that stores info about Object
15:05 Austin Sure.
15:06 Austin And when you create a new $class, who configures the vtable of the instance?
15:06 Austin (Just as long as it doesn't copy from the class...)
15:07 Whiteknight those are stored in a hash attribute in the class
15:07 Austin cool.
15:12 lucian_ joined #parrot
15:25 dalek parrot: r44551 | whiteknight++ | branches/find_method_object (3 files):
15:25 dalek parrot: add test caase for problem raised in TT #1487. Test passes here in branch
15:25 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44551/
15:34 dalek rakudo: 67f51f7 | moritz++ | src/cheats/match-bool.pm:
15:34 dalek rakudo: cheat in Regex::Match.defined
15:34 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/6​7f51f786c3f8440fccba4c76fb0201b264b1ee9
15:34 dalek rakudo: d4df605 | moritz++ | t/spectest.data:
15:34 dalek rakudo: more passing test files
15:34 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​4df605f714c3532e47383e46042d5cdd7936560
15:34 dalek rakudo: 1a5d342 | moritz++ | Test.pm:
15:34 dalek rakudo: [Test.pm] diag() actual type of failed isa_ok() test
15:34 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​a5d34263fb9421dfe00adc525de7f98c487b393
15:41 Whiteknight this find_method business is much bigger than I anticipated. I sent a mail to the list outlining some ideas and proposals.
15:42 Austin Heh.
15:42 Psyche^ joined #parrot
15:42 Austin anguinidal ?
15:42 Whiteknight ?
15:43 Austin anguis = snake, nidus = nest
15:43 Whiteknight yeah, it's a mess
15:44 Whiteknight I put out a proposal that would allow much more flexibility in this system, but it would require some major changes
15:50 Austin Whiteknight: The thought occurs to me that very nearly everything needs to support find_method, right? So why isn't that in default?
15:50 Whiteknight it is
15:51 Austin okay.
15:51 Austin WTF? Why does object have it, if it's in default?
15:52 Whiteknight because object needs to account for VTABLE overrides
15:52 Austin And default doesn't?
15:52 Whiteknight apparently not
15:52 Whiteknight though I'm not sure why
15:52 Austin This "account for vtable overrides" thing is just a bunch of bugs waiting to happen. If you call a vtable, the override should get triggered, period.
15:53 Whiteknight well, there's the idea that we could specify a :vtable on an existing built-in type, which is another recipe for bugs to happen
15:53 Austin Why?
15:53 Whiteknight imagine overriding ResizablePMCArray.get_pmc_keyed_int from PIR
15:53 Austin You override the vtable, it's your problem.
15:54 Whiteknight there's no way to do what needs to be done from PIR
15:54 Austin But say I did.
15:54 Austin I'd wish I had some way to call the original function...
15:54 Austin Is there a way?
15:54 Whiteknight there is an argument to be made that most of the override magic should move from Object to default
15:54 Austin it should move to the vtables.
15:55 Whiteknight I don't think there's currently a way to do that, no
15:55 Austin Does each pmc or class have its own vtable?
15:55 Whiteknight each type
15:55 Austin type ? (newclass 'Foo' is a separate type?)
15:55 Whiteknight yes
15:56 Austin So edit the table.
15:56 Whiteknight and pmc->vtable->_class is the class object for that vtable
15:57 Austin If someone calls add_vtable_override, just hook it in to the table.
15:58 Whiteknight not quite so easy, it's just a table of raw C function pointers
15:59 Whiteknight so if you overwrote that function pointer, there's no easy way to get back to it
15:59 Whiteknight unless we had two VTABLEs for each type, one was read-only and the other was modifiable
15:59 Whiteknight but VTABLEs are already ~2kbytes
16:00 Austin Dude, vtables are dark magic. If you're screwing around in the vtable, as far as I'm concerned you're on your own. If you actually want to install and uninstall these things, then just like interrupts you can implement chaining.
16:01 Whiteknight I think the general concensus is "if you didn't write it, you can't modify it"
16:01 Austin But odds are that once you install, you'll never uninstall.
16:01 Whiteknight so if you want something that acts like resizablepmcarray but has added methods, create a subclass
16:01 Austin Right.
16:01 iblechbot joined #parrot
16:02 Austin And with my subclass, I override the vtable.
16:02 Whiteknight so that's the biggest argment for not checking vtable overrides in default PMC
16:02 Whiteknight your subclass is an Object
16:02 Austin That's *my* argument for not checking overrides anywhere.
16:02 Whiteknight ...?
16:02 * purl quietly listens while the crickets chirp
16:03 Austin Install the vtable overrides in the vtable for the type. Presto! No checking required. Just call the damn pointer.
16:03 Whiteknight you can't call a Sub like you would call a C function
16:03 Austin *That* can go in default.
16:04 Whiteknight what? I don't follow
16:04 Austin Figuring out how to call the pir.
16:04 Whiteknight calling the PIR is done from Object, because only Objects have overridable vtables
16:04 Austin hah
16:04 Whiteknight built-in types cannot be overridden
16:05 Austin Okay.
16:05 Austin So Object is the new default?
16:05 Whiteknight for PIR-defined types, yes
16:05 Whiteknight default is the fall-back for C-defined types. Object is the fallback for PIR-defined types
16:05 Austin "We can't do it, because we don't do it that way."  Why not do it that way?  "Because we can't do it..."
16:06 Whiteknight well, not exactly a "fallback", but good enough for this conversation
16:06 Austin sure
16:06 Austin So everything goes in object after all...
16:08 Whiteknight not everything. Only PIR-defined types
16:09 Austin Well, since PIR-defined types are all the user's can provide, that's a pretty good definition of "everything."
16:09 Austin *users
16:10 Whiteknight blah blah blah, "technically" not, blah blah blah
16:10 Whiteknight but yes
16:10 Austin yeah
16:10 Austin :)
16:12 Austin Maybe vtable entries should be a PMC.
16:12 Whiteknight PIR Subs are PMCs
16:12 Whiteknight the C-function ones are not, but I suppose a wrapping mechanism could be provided
16:12 Austin Well, there's only so many args to a vtable, right?
16:13 Whiteknight about 185
16:13 Austin Huh?
16:13 Austin I was thinking 0, 1, or 2.
16:13 Whiteknight there are about 185 vtables
16:13 Whiteknight oh, "args"
16:13 Austin Sure, but the #args to any one vtable function is small....
16:13 Whiteknight yes
16:16 Austin off topic: Did bacek get non-string-keyed hash pmcs into core?
16:17 Austin apparently yes
16:20 Whiteknight he did?
16:20 Austin Yeah
16:20 Whiteknight is it just Hash, or something else?
16:20 dalek rakudo: 7ef1ac2 | (Martin Berends)++ | t/spectest.data:
16:20 Austin yeah
16:20 dalek rakudo: [t/spectest.data] re-enable S28-named-variables/inc.t, all 3 pass (@*INC)
16:20 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7​ef1ac209d446d8de2b8a6a2c86ec44260dfe7f0
16:20 Whiteknight nice
16:20 Austin $P0 = <int> sets the mode
16:21 Whiteknight oh, okay
16:32 Whiteknight nice
16:43 dalek rakudo: f2975bf | (Solomon Foster)++ | t/spectest.data:
16:43 dalek rakudo: Add new test file S32-array/bool.t.
16:43 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​2975bff9599fcb8251a58e8452e6217c56f023c
16:43 dalek rakudo: d42198a | (Solomon Foster)++ | src/core/Seq.pm:
16:43 dalek rakudo: Implement Seq.Bool.
16:43 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​42198a94fa53764080fa64aba276a82ca16736b
16:48 Hunger joined #parrot
16:49 jan joined #parrot
16:52 theory joined #parrot
17:00 dalek rakudo: 40f0e06 | (Martin Berends)++ | src/glue/run.pir:
17:00 dalek rakudo: [glue/run.pir] add a crafty read-only %*ENV suggested by jnthn++
17:00 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4​0f0e06e9a39757f0e3aa1b02ed325f83989ff1b
17:19 dukeleto 'wllo
17:19 dukeleto arg. evidently not awake enough to type
17:20 * dukeleto is playing with clang+llvm
17:31 Whiteknight hello
17:31 purl privet, Whiteknight.
17:31 Whiteknight I really like clang for building Parrot
17:32 Whiteknight great diagnostics
17:33 dukeleto Whiteknight: have you tried testing the rm_cflags branch with it? Coke wanted some testing with non-gcc compilers
17:34 Whiteknight not yet
17:34 Whiteknight I was using icc on trunk and saw errors, so never moved to other tests with other branches/compilers
17:35 dalek rakudo: b4ccaa0 | (Solomon Foster)++ | src/core/A (2 files):
17:35 dalek rakudo: Switch to ?@array in a couple of places.
17:35 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​4ccaa0d7837771c0f75f6939b0326b47ab658c4
17:51 Hunger- joined #parrot
17:58 TiMBuS joined #parrot
18:02 dukeleto Whiteknight: did you pay for icc? it is freakin' $600
18:02 dukeleto Whiteknight: do you know a way of getting a copy for "testing/porting purposes" or somesuch?
18:10 kurahaupo joined #parrot
18:24 Whiteknight dukeleto: yeah, ICC is free for linux users and open source devs
18:24 Whiteknight let me dig up the link...
18:27 eternaleye joined #parrot
18:32 Whiteknight dukeleto, http://software.intel.com/en-us/article​s/non-commercial-software-development/
18:33 Whiteknight http://wknight8111.blogspot.com/​2010/01/parrot-test-matrix.html
18:52 bacek joined #parrot
19:03 kjeldahl joined #parrot
19:03 Austin_away Heh.  5 OpenSolaris is an interesting platform that is very Linux-like in most regards.
19:09 Whiteknight If I had to revise that sentence today, I would say "OpenSolaris is a disappointing platform that is very linux-like except for the times when you want it to be, and then it isn't"
19:09 Whiteknight or "OpenSolaris is a platform that thankfully might be getting discontinued by Oracle"
19:10 Whiteknight when I say "linux-like", I mean mostly that it has Gnome and ash
19:10 Whiteknight Bash*
19:19 kurahaupo joined #parrot
19:47 mikehh joined #parrot
19:57 kurahaupo1 joined #parrot
20:03 kurahaupo1 Wandering off-topic for a minute, I've noticed that "make && sudo make install" tends to re-run a bunch of stuff as root, which IMO is rather less than ideal. Does anyone else think this is a problem worth raising a ticket for?
20:09 plobsing kurahaupo1: there's a good reason for rebuilding some stuff in make install, but it does seem like a bad idea to build it as root
20:09 plobsing so +1
20:11 kurahaupo1 OK. But what am I up against in terms of the rationale for rebuilding-during-installation?
20:12 kurahaupo1 ping Whiteknight
20:12 plobsing Config (including paths for library, etc) is compiled into pretty much every parrot executable.
20:12 plobsing So for them to run from their installed locations they need to be rebuilt against a different config than that used in testing
20:13 kurahaupo1 OK. So the rebuilding work-around is to check whether the burned-in path is the same as the intended installtion path, before recompiling stuff?
20:13 kurahaupo1 Anything else I'd have to account for?
20:13 plobsing not AFAICT
20:13 kurahaupo1 thanks
20:14 plobsing btw I hate the burned in config. seems like there should be a better solution (not that I can think of one)
20:15 kurahaupo1 It's a chicken-and-egg problem. Unless you can reliably derive everything from argv[0] then you're stuck with *some* fixed paths.
20:16 kurahaupo1 On a POSIX system you have the benefit of both standard fixed-paths and normally-reliable argv[0], but the same can't be said of other platforms.
20:17 kurahaupo1 purl msg WhiteKnight is it acceptable for get_integer_native to return a negative number on a fixed-sized-whatever that hasn't had its size set yet?
20:17 purl Message for whiteknight stored.
20:18 plobsing we could at least reduce the amount of places we bake config into by baking it into libparrot (against which all the parrot executables link)
20:19 plobsing but that assumes dynamic linking (which we might not have everywhere)
20:20 kurahaupo1 Wouldn't really matter if it was static or not; at worst it would just add one "link" to the "install" step.
20:22 joeri left #parrot
20:22 plobsing not one link. as many links as we install executables.
20:25 bacek joined #parrot
20:29 kurahaupo1 joined #parrot
20:29 kurahaupo1 Although I suppose that's pretty much what it's doing now, which is the problem in the first place.
20:30 * kurahaupo1 cusses at UTMS/WiFi transitions
20:33 kurahaupo1 joined #parrot
20:35 Myhrlin joined #parrot
20:39 Tene kurahaupo1: There's been a desire for quite a while to make the default make build a directory tree that's identical to what would be installed by 'make install'.
20:40 Tene kurahaupo: I expect that reworking the build process like that would help a lot towards your goal.
21:04 Whiteknight joined #parrot
21:08 dalek rakudo: 1201479 | (Solomon Foster)++ | t/spectest.data:
21:08 dalek rakudo: Turn on S02-builtin_data_types/num.t.
21:08 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​201479e5a6e68fb83dd0c3f822d8843dd3280fc
21:08 bacek Good morning
21:15 Whiteknight hello bacek
21:19 bacek aloha Whiteknight
21:20 kurahaupo1 joined #parrot
21:30 kurahaupo1 joined #parrot
21:36 kurahaupo1 joined #parrot
21:37 kurahaupo1 joined #parrot
21:37 kurahaupo1 joined #parrot
21:52 kurahaupo1 joined #parrot
21:53 kurahaupo1 joined #parrot
21:53 kurahaupo1 joined #parrot
21:55 kurahaupo1 joined #parrot
21:57 bacek msg pmichaud I pushed drafted version of NQP Settings library at http://github.com/bacek/nqp-rx. Can you review it please?
21:57 purl Message for pmichaud stored.
21:57 bacek $dayjob time
21:57 bacek see you!
22:05 dalek rakudo: 4d8935e | jonathan++ | src/pmc/p6lowlevelsig.pmc:
22:05 dalek rakudo: Add missing mark.
22:05 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4​d8935ee8218862a611fbd09e2da8980aa88b9e7
22:22 kurahaupo1 joined #parrot
22:26 kurahaupo1 joined #parrot
22:26 Myhrlin joined #parrot
22:30 AndyA joined #parrot
22:34 dalek rakudo: 1667377 | (Solomon Foster)++ | src/core/Enum.pm:
22:34 dalek rakudo: Last version of Pair.hash was completely broken; this one is uglier but seems to work better.
22:34 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​667377e3de3ebfa07ed2754f3eff598e0a1d65f
22:34 dalek rakudo: fca8574 | (Solomon Foster)++ | t/spectest.data:
22:34 dalek rakudo: Turn on S02-builtin_data_types/pair.t.
22:34 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​ca85745ffa3095abae3bf4355c1eaa7a5071813
22:34 dalek rakudo: f4fdba4 | (Solomon Foster)++ | src/core/Enum.pm:
22:34 dalek rakudo: Add Enum.hash.
22:34 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​4fdba460d2c3d2be6107f8566b752c371d58b0f
22:35 kurahaupo1 joined #parrot
22:45 dalek rakudo: 1f2bd09 | jonathan++ | src/core/EnumMap.pm:
22:45 dalek rakudo: Get EnumMap.Str (and thus Hash.Str) working again.
22:45 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​f2bd09c20132625a5ea0184007bd650fd7669ae
22:45 kurahaupo1 joined #parrot
22:54 davidfetter joined #parrot
22:56 kurahaupo1 joined #parrot
23:01 Whiteknight Austin: where does kakapo do super()?
23:01 Austin_away It's in src/Syntax.nqp
23:03 Whiteknight Austin_away: and in any case, you didn
23:03 Whiteknight t explain how to do it :)
23:04 Whiteknight Two things: 1, you basically do what I suggest (iterate over the MRO yourself), and I'm wondering if this would work with nested calls to super()
23:05 Austin Well, super() looks for its caller, and uses that as the don't-search-before mark in the mro. So I think it does, although I haven't written that testcase yet.
23:05 Austin The testcases are in t/Syntax.nqp, if you're feeling energetic.
23:06 Whiteknight okay, I would be very interested to see that test case. I may try to write something like it as my first commit
23:06 Austin :)
23:06 Austin One thing I wonder about: should super() fail if there is no method found?
23:06 kurahaupo1 joined #parrot
23:06 Austin Or should it silently do noghint?
23:06 Austin *nothing?
23:07 Austin On the one hand, you're calling super(), so you must expect something. So it should fail.
23:08 bacek_at_work Austin, it will probably end up in "Default.method". And than fail
23:08 Austin On the other hand, constructors that know whether their superclass has any kind of init method are violating encapsulation. So maybe they should always call super(), and it should silently do nothing.
23:08 Whiteknight okay, how do I add my SSH key to gitorious?
23:09 Austin Dashboard / Manage SSH keys ?
23:09 Austin bacek_at_work: ?
23:09 Whiteknight Austin: I don't even see that option
23:09 Austin When you're logged in, Dashboard is in the top right corner
23:10 bacek_at_work Austin, Foo.init { super() } will call Default.init.
23:10 Austin bacek: This is in nqp.
23:10 Whiteknight nevermind, I was on the wrong page
23:11 bacek_at_work Austin, nqp classes are directly mapped to parrot classes, aren't they?
23:11 Austin Oh heavens no. There's a whole slathering of intermediary goodness. See $_RTL/P6object.pir.
23:11 Whiteknight ...now my ssh key has a red X next to it
23:11 Whiteknight greatness
23:11 purl it has been said that greatness is found everywhere, especially in sports.
23:12 Austin But I'm implementing a super() keyword-like function for nqp, that handles looking up and calling the next method in the class chain.
23:32 snarkyboojum joined #parrot
23:38 dalek rakudo: 588a345 | (Solomon Foster)++ | src/core/EnumMap.pm:
23:38 dalek rakudo: Switch EnumMap.Str to use .Str ~ "\n" in its map.
23:38 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​88a345ffcad37de0e38a238a4e191059731cb9c

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

Parrot | source cross referenced