Parrot 2.1.1 Released! | parrot.org/ | Tasks: PCC deprecations branch, HLL subclassing and MMD branch
Set by moderator on 19 February 2010.
00:01 snarkyboojum joined 00:05 mikehh joined 00:16 eternaleye joined 00:24 mikehh joined 00:28 mikehh joined 01:07 cognominal joined
Whiteknight Coke: I've got a solaris VM. what do you need tested? 01:12
01:47 mikehh joined
lichtkind ever seen www.parrot.com/uk/support/downloads^? :) 01:58
02:03 Themeruta joined
Coke there are no tests for Data::Dumper? 02:41
dalek rrot: r44538 | coke++ | trunk/t (5 files):
Don't use something if you're not going to use it.
02:49
rrot: r44539 | coke++ | trunk (5 files):
move Data::Dumper to Data;Dumper

  (Apparently this library is untested.)
03:05
03:11 lichtkind_ joined
Austin heh 03:11
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:12
Austin sings "So how you like me now! How you like me now?" 03:13
dalek rrot: r44540 | coke++ | trunk (3 files):
move Parrot::Coroutine to Parrot;Coroutine
03:22
03:54 janus joined 04:13 cognominal joined
ttbot Parrot trunk/ r44541 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/217988.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 04:52
04:54 theory joined
Coke fixed the ttbot error... 04:59
Tene okay, next task on exceptions_refactor, class-based handler filters.
dalek rrot: r44541 | coke++ | trunk (2 files):
move Test::Builder::* to Test;Builder;*

Much of this was already done, this is just cleanup on some sub-namespaces
05:00
rrot: r44542 | coke++ | trunk/runtime/parrot/library/Test/Builder/Test.pir:
Fix error introduced in blind translation of ::strings to ;-keys.
Coke ah, crap. I must not have done a test run when I thought I did. 05:01
Tene anyone interested in writing a class-based exception handler filter test for me? 05:03
or even a subclassable-exceptions test?
Coke I am tired/focused on something else, sorry. 05:04
Tene Certainly not a problem. :) 05:05
Coke anyone have pcre installed? 05:09
05:13 hercynium joined
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*
Coke who was the recent SDL guy?
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
dalek rrot: r44543 | coke++ | trunk (5 files):
move YAML::Dumper::* to YAML;Dumper;*
05:17
rrot: r44544 | coke++ | trunk/runtime/parrot/library/Test/Builder/Test.pir:
fix case-sensitive bug introduced during conversion from ::-strings to ;-keys.
rrot: r44545 | coke++ | trunk/t/op/gc.t:
Don't use ::-based namespaces; they look special but aren't.
rrot: r44546 | coke++ | trunk (3 files):
move PCRE::NCI::* to PCRE;NCI;*
05:17 patspam joined
pmichaud I tried /stats p and it said "0 staff members" 05:37
ww
dalek TT #1485 created by coke++: runtime/parrot/library/SDL/*.pir bitrot 05:58
kapo: 8c79bec | austin++ | (14 files):
Cleaned up Matchers: Not, Null.

Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
06:02
rrot: r44547 | coke++ | trunk (32 files):
move SDL::* to SDL;*

Note: there aren't any tests for the SDL files, and they aren't built by default; I verified that no new regressions were introduced in the build of the library files and that examples_tests still passes.
06:06
Tene Coke++ 06:17
That's great. Thank you for doing that.
Coke I opened a ticket for examples/, having been beaten down by doing runtime. =-) 06:24
next on the list is looking at PGE:: 06:25
... but not tonight.
~~ zzzz.
dalek TT #1486 created by coke++: rewrite examples/ to use hierarchical namespaces instead of flat ::-style 06:31
06:52 kurahaupo joined 07:10 eternaleye joined 07:22 jsut_ joined 07:57 kjeldahl joined
dukeleto wow. icc costs $600 08:25
08:38 iblechbot joined 08:48 ruoso joined 09:35 lucian joined 09:51 eternaleye joined 11:06 bacek joined 12:17 payload joined 12:23 dalek joined 12:26 AndyA joined, Whiteknight joined
Whiteknight good morning #parrot 12:34
Austin Good morning, Whiteknight.
Whiteknight hello Austin. How are you today? 12:35
Infinoid hi Whiteknight
Austin Great. My fishing expedition is finally over (cable fishing, that is) so I can stop drilling holes in my floor. 12:36
Now I'm trying to think up the right interface for mocking expectations.
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?
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
Austin: are you thinking about a method on the mock object itself, or a method on the mock manager object?
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:42
Whiteknight good call 12:43
Austin Is it possible to override the vtable method dispatch ?
Alternatively, what's the expected way to do something like P5's AUTOLOAD ?
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
Austin: yes, you can override VTABLE_invoke, though support for it is currently experimental
Austin Heh.
By experimental, do you mean "has no passing test cases?"
Whiteknight I'm not sure. I feel like it should have some tests
Austin Okay.
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:46
Whiteknight is a ttest in t/oo/vtableoverrides.t 12:49
active matching would be awesome if you have it, but basic logging is good too 12:50
I stand by my earlier idea: store expectation objects in the mock namespace. If they exist, match them. If not, just log calls
Austin Sure. But how? 12:51
Whiteknight magic, goddamnit
add a global "Expectations" variable to the namespace. If it exists, it's an array of Expectation objects
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
Austin Okay. So I want a call 'foo(1)' to return string 'foo'.
So I create Expectation.new('foo', :args(1), :returns('foo')) 12:53
What do I do with it?
Whiteknight Add a method to Mimus::Maker that takes an expectation and a name of the mock
or better yet, the expectation and the actual mock object 12:54
Austin softlee, softlee ... catchee monkee..
and ... ?
purl Yada yada yada hasn't been implemented yet! (unless you run bleadperl)
Whiteknight I'm thinking 12:57
Add it into the mock object as an attribute 12:59
Austin So it looks like I override the 'find_method' vtable on the class to return the sub I want to execute? 13:01
Whiteknight ah, and then you could wrap it with a new method object that contains the expectation logic 13:03
or add in the expectation as an attribute on the method object itself, if the method is a subclass
Austin As I see it, I could generate a method that looks up the expectation. That's easy, and direct. 13:04
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 13:11 bacek joined
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.
Whiteknight that way we could add any number of expectations or conditions, and evaluate them each in an array 13:13
Austin Right.
But which one returns?
Whiteknight whichever one has a :returns condition
whichever one has a :returns condition and a satisfied :params condition 13:14
Austin First? Longest?
Whiteknight the only one that matches 13:15
or, the most specific one that matches
Austin $expectation.whenCalled( :with_args(ANY), :returns(0) ).whenCalled( :with_args('foo'), :returns(1)) ?
Whiteknight perfect
Austin *whenCalled = when_called
Which leaves you to implement the MMD necessary to resolve :with_args that conflict. 13:16
(Because I *know* I'm not smart enough to do it.)
Whiteknight I'm game 13:17
I'm envisioning a very simple algorithm, just an RPA of specified args, and we go down the list matching each one element-wise
Austin Yeah, that's my view. I'm in favor of sequence, rather than best-match. (This first, then this, etc.) 13:19
Whiteknight any expecation that fails causes the whole chain to fail 13:20
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.
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"
Austin Sure. 13:23
But that happens at the end of the run.
Whiteknight right
Austin "were all your expectations met?" "no."
Whiteknight next question is figuring out how to query all the expectation objects in the system at the end of the run
Austin Hmm... find_method doesn't seem to be overridden. 13:25
Whiteknight there is a test for the behavior in t/oo/method.t 13:26
Austin method*S* 13:28
Whiteknight ? 13:29
Austin Yeah, I'm trying to use class.pmc's add_vtable_override method
Whiteknight don't say that 13:31
(that's something we *don't* have a test for, apparently)
well, we have some tests, but I don't know that they really cover this behavior 13:32
Austin There's way too much code in object.pmc's find_method vtable. That stuff should be in the class, or mop. 13:34
Whiteknight a lot of that code *is* in class.pmc 13:35
Whiteknight starts the refactor 13:36
here's a gem: the Object PMC caches the method, but the Class doesn't 13:42
Austin Object figures it'll need it... 13:43
heh
Okay, I got it working in pir.
:( 13:44
dalek rrot: r44548 | whiteknight++ | branches/find_method_object:
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.
Austin Awww, man. I hate it when I do dumb stuff... 13:46
Whiteknight is the class itself in it's own MRO list? 13:54
Austin Yeah, first.
purl yeah, first is basically reset, next
Austin purl, forget Yeah, first 13:55
purl Austin: I forgot yeah, first
Austin botsnack
purl :)
Austin whiteknight: It serves to guarantee at least one entry in the list.
(Which is nice, a lot of the time)
whiteknight: Check me on this, but does the "loop" in object.pmc's find_method only execute one iteration? 13:57
Whiteknight Austin, no, it loops 13:58
all_in_universe is usually true, and then we don't find the method, so we loop
it's fugly, but it seems to work
Austin How? 13:59
Ahh, ok
So why doesn't my stuff work?
14:13 AndyA joined
Austin Whiteknight, ping. 14:18
Whiteknight pong
dalek rrot: r44549 | barney++ | trunk/tools/dev/mk_language_shell.pl:
Some small beautifications.
Austin Okay, I'm back to blaming the system.
Austin Check me here: in object.pmc's find_method, ~ line 383, it sets method= find_vtable_override_for_class. 14:19
Whiteknight right
Austin If that is a real sub (not null), it calls it.
Whiteknight yes
Austin And that sub HAS to succeed.
Whiteknight why?
oh, right
Austin The output goes in &result, then method=result, break. 14:20
Whiteknight yes
Austin I think that's a bug.
Whiteknight probably is
I'm trying to refactor all this crap now
Austin My find_method should get the same option of returning null as the default one.
Okay. I'm going to put in a ticket.
Whiteknight do that 14:21
and if you can attach a failing test case, I can verify that the fixes I'm working on do the trick 14:22
Austin Apparently there's some added PDD info in 41214. 14:23
object PDD, she writes.
"A class object reports on class methods, not on instance methods." 14:25
Whatever a class method is.
Whiteknight methods on the Class PMC itself
Austin (Other than a method on the class instance itself, it being an object...)
Sure. Shouldn't it inherit that from object.pmc? 14:26
14:40 gaurav joined
Austin Whiteknight: tt:1487 has a test case. 14:43
Whiteknight nice
Austin So in the meantime I have to search the mro. Not the end of the world. 14:45
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:46
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!
dalek rrot: r44550 | whiteknight++ | branches/find_method_object/src/pmc (2 files):
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
Whiteknight When searching for a method, we can't find_method on the classes recursively, because each class walks it's entire MRO array
so if we have inheritance, Foo->Bar->Baz, and we find method on Baz, it would search Bar, Foo, Foo 14:54
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
including Classes, PMCProxies, and subclasses of both
so this code is just going from bad to worse
Austin Huh?
Where is that? 14:56
purl that is, like, the case, but I don't know
Whiteknight Object.find_method now 14:57
moving to Class.get_pmc_keyed_str in my new branch
Austin Is that wise?
What if you are doing hash? 14:58
Whiteknight what? 15:03
Austin If you override <> on the class, will that prevent the instances from extending hash?
Whiteknight extending hash in a subclass of Class? 15:04
Austin I'm not sure of the semantics here.
If I do : class Foo is Hash {...}
Does that require <> on the class pmc?
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
no, tht requires <> on Object
Austin Okay. But does object inherit that from class?
Whiteknight no
Austin Okay. Nevermind.
Whiteknight Class is the metaobject that stores info about Object
Austin Sure.
And when you create a new $class, who configures the vtable of the instance? 15:06
(Just as long as it doesn't copy from the class...)
Whiteknight those are stored in a hash attribute in the class 15:07
Austin cool.
15:12 lucian_ joined
dalek rrot: r44551 | whiteknight++ | branches/find_method_object (3 files):
add test caase for problem raised in TT #1487. Test passes here in branch
15:25
kudo: 67f51f7 | moritz++ | src/cheats/match-bool.pm:
cheat in Regex::Match.defined
15:34
kudo: d4df605 | moritz++ | t/spectest.data:
more passing test files
kudo: 1a5d342 | moritz++ | Test.pm:
[Test.pm] diag() actual type of failed isa_ok() test
Whiteknight this find_method business is much bigger than I anticipated. I sent a mail to the list outlining some ideas and proposals. 15:41
Austin Heh. 15:42
15:42 Psyche^ joined
Austin anguinidal ? 15:42
Whiteknight ?
Austin anguis = snake, nidus = nest 15:43
Whiteknight yeah, it's a mess
I put out a proposal that would allow much more flexibility in this system, but it would require some major changes 15:44
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
Austin okay. 15:51
WTF? Why does object have it, if it's in default?
Whiteknight because object needs to account for VTABLE overrides 15:52
Austin And default doesn't?
Whiteknight apparently not
though I'm not sure why
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.
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?
Whiteknight imagine overriding ResizablePMCArray.get_pmc_keyed_int from PIR
Austin You override the vtable, it's your problem.
Whiteknight there's no way to do what needs to be done from PIR 15:54
Austin But say I did.
I'd wish I had some way to call the original function...
Is there a way?
Whiteknight there is an argument to be made that most of the override magic should move from Object to default
Austin it should move to the vtables.
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?
Whiteknight each type
Austin type ? (newclass 'Foo' is a separate type?)
Whiteknight yes
Austin So edit the table. 15:56
Whiteknight and pmc->vtable->_class is the class object for that vtable
Austin If someone calls add_vtable_override, just hook it in to the table. 15:57
Whiteknight not quite so easy, it's just a table of raw C function pointers 15:58
so if you overwrote that function pointer, there's no easy way to get back to it 15:59
unless we had two VTABLEs for each type, one was read-only and the other was modifiable
but VTABLEs are already ~2kbytes
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:00
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.
Whiteknight so if you want something that acts like resizablepmcarray but has added methods, create a subclass
Austin Right.
16:01 iblechbot joined
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
your subclass is an Object
Austin That's *my* argument for not checking overrides anywhere.
Whiteknight ...?
purl quietly listens while the crickets chirp
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
Austin *That* can go in default.
Whiteknight what? I don't follow 16:04
Austin Figuring out how to call the pir.
Whiteknight calling the PIR is done from Object, because only Objects have overridable vtables
Austin hah
Whiteknight built-in types cannot be overridden
Austin Okay. 16:05
So Object is the new default?
Whiteknight for PIR-defined types, yes
default is the fall-back for C-defined types. Object is the fallback for PIR-defined types
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..."
Whiteknight well, not exactly a "fallback", but good enough for this conversation 16:06
Austin sure
So everything goes in object after all...
Whiteknight not everything. Only PIR-defined types 16:08
Austin Well, since PIR-defined types are all the user's can provide, that's a pretty good definition of "everything." 16:09
*users
Whiteknight blah blah blah, "technically" not, blah blah blah 16:10
but yes
Austin yeah
:)
Maybe vtable entries should be a PMC. 16:12
Whiteknight PIR Subs are PMCs
the C-function ones are not, but I suppose a wrapping mechanism could be provided
Austin Well, there's only so many args to a vtable, right?
Whiteknight about 185 16:13
Austin Huh?
I was thinking 0, 1, or 2.
Whiteknight there are about 185 vtables
oh, "args"
Austin Sure, but the #args to any one vtable function is small....
Whiteknight yes
Austin off topic: Did bacek get non-string-keyed hash pmcs into core? 16:16
apparently yes 16:17
Whiteknight he did? 16:20
Austin Yeah
Whiteknight is it just Hash, or something else?
dalek kudo: 7ef1ac2 | (Martin Berends)++ | t/spectest.data:
[t/spectest.data] re-enable S28-named-variables/inc.t, all 3 pass (@*INC)
Austin yeah
Whiteknight nice
Austin $P0 = <int> sets the mode
Whiteknight oh, okay 16:21
nice 16:32
dalek kudo: f2975bf | (Solomon Foster)++ | t/spectest.data:
Add new test file S32-array/bool.t.
16:43
kudo: d42198a | (Solomon Foster)++ | src/core/Seq.pm:
Implement Seq.Bool.
16:48 Hunger joined 16:49 jan joined 16:52 theory joined
dalek kudo: 40f0e06 | (Martin Berends)++ | src/glue/run.pir:
[glue/run.pir] add a crafty read-only %*ENV suggested by jnthn++
17:00
dukeleto 'wllo 17:19
arg. evidently not awake enough to type
dukeleto is playing with clang+llvm 17:20
Whiteknight hello 17:31
purl privet, Whiteknight.
Whiteknight I really like clang for building Parrot
great diagnostics 17:32
dukeleto Whiteknight: have you tried testing the rm_cflags branch with it? Coke wanted some testing with non-gcc compilers 17:33
Whiteknight not yet 17:34
I was using icc on trunk and saw errors, so never moved to other tests with other branches/compilers
dalek kudo: b4ccaa0 | (Solomon Foster)++ | src/core/A (2 files):
Switch to ?@array in a couple of places.
17:35
17:51 Hunger- joined 17:58 TiMBuS joined
dukeleto Whiteknight: did you pay for icc? it is freakin' $600 18:02
Whiteknight: do you know a way of getting a copy for "testing/porting purposes" or somesuch?
18:10 kurahaupo joined
Whiteknight dukeleto: yeah, ICC is free for linux users and open source devs 18:24
let me dig up the link...
18:27 eternaleye joined
Whiteknight dukeleto, software.intel.com/en-us/articles/n...velopment/ 18:32
wknight8111.blogspot.com/2010/01/pa...atrix.html 18:33
18:52 bacek joined 19:03 kjeldahl joined
Austin_away Heh. 5 OpenSolaris is an interesting platform that is very Linux-like in most regards. 19:03
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
or "OpenSolaris is a platform that thankfully might be getting discontinued by Oracle"
when I say "linux-like", I mean mostly that it has Gnome and ash 19:10
Bash*
19:19 kurahaupo joined 19:47 mikehh joined 19:57 kurahaupo1 joined
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:03
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
so +1
kurahaupo1 OK. But what am I up against in terms of the rationale for rebuilding-during-installation? 20:11
ping Whiteknight 20:12
plobsing Config (including paths for library, etc) is compiled into pretty much every parrot executable.
So for them to run from their installed locations they need to be rebuilt against a different config than that used in testing
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
Anything else I'd have to account for?
plobsing not AFAICT
kurahaupo1 thanks
plobsing btw I hate the burned in config. seems like there should be a better solution (not that I can think of one) 20:14
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:15
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:16
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.
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:18
but that assumes dynamic linking (which we might not have everywhere) 20:19
kurahaupo1 Wouldn't really matter if it was static or not; at worst it would just add one "link" to the "install" step. 20:20
20:22 joeri left
plobsing not one link. as many links as we install executables. 20:22
20:25 bacek joined 20:29 kurahaupo1 joined
kurahaupo1 Although I suppose that's pretty much what it's doing now, which is the problem in the first place. 20:29
kurahaupo1 cusses at UTMS/WiFi transitions 20:30
20:33 kurahaupo1 joined 20:35 Myhrlin joined
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:39
kurahaupo: I expect that reworking the build process like that would help a lot towards your goal. 20:40
21:04 Whiteknight joined
dalek kudo: 1201479 | (Solomon Foster)++ | t/spectest.data:
Turn on S02-builtin_data_types/num.t.
21:08
bacek Good morning
Whiteknight hello bacek 21:15
bacek aloha Whiteknight 21:19
21:20 kurahaupo1 joined 21:30 kurahaupo1 joined 21:36 kurahaupo1 joined 21:37 kurahaupo1 joined 21:52 kurahaupo1 joined 21:53 kurahaupo1 joined 21:55 kurahaupo1 joined
bacek msg pmichaud I pushed drafted version of NQP Settings library at github.com/bacek/nqp-rx. Can you review it please? 21:57
purl Message for pmichaud stored.
bacek $dayjob time
see you!
dalek kudo: 4d8935e | jonathan++ | src/pmc/p6lowlevelsig.pmc:
Add missing mark.
22:05
22:22 kurahaupo1 joined 22:26 kurahaupo1 joined, Myhrlin joined 22:30 AndyA joined
dalek kudo: 1667377 | (Solomon Foster)++ | src/core/Enum.pm:
Last version of Pair.hash was completely broken; this one is uglier but seems to work better.
22:34
kudo: fca8574 | (Solomon Foster)++ | t/spectest.data:
Turn on S02-builtin_data_types/pair.t.
kudo: f4fdba4 | (Solomon Foster)++ | src/core/Enum.pm:
Add Enum.hash.
22:35 kurahaupo1 joined
dalek kudo: 1f2bd09 | jonathan++ | src/core/EnumMap.pm:
Get EnumMap.Str (and thus Hash.Str) working again.
22:45
22:45 kurahaupo1 joined 22:54 davidfetter joined 22:56 kurahaupo1 joined
Whiteknight Austin: where does kakapo do super()? 23:01
Austin_away It's in src/Syntax.nqp
Whiteknight Austin_away: and in any case, you didn 23:03
t explain how to do it :)
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:04
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
The testcases are in t/Syntax.nqp, if you're feeling energetic.
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 :)
One thing I wonder about: should super() fail if there is no method found?
23:06 kurahaupo1 joined
Austin Or should it silently do noghint? 23:06
*nothing?
On the one hand, you're calling super(), so you must expect something. So it should fail. 23:07
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.
Whiteknight okay, how do I add my SSH key to gitorious?
Austin Dashboard / Manage SSH keys ? 23:09
bacek_at_work: ?
Whiteknight Austin: I don't even see that option
Austin When you're logged in, Dashboard is in the top right corner
bacek_at_work Austin, Foo.init { super() } will call Default.init. 23:10
Austin bacek: This is in nqp.
Whiteknight nevermind, I was on the wrong page
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.
Whiteknight ...now my ssh key has a red X next to it
greatness
purl it has been said that greatness is found everywhere, especially in sports.
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:12
23:32 snarkyboojum joined
dalek kudo: 588a345 | (Solomon Foster)++ | src/core/EnumMap.pm:
Switch EnumMap.Str to use .Str ~ "\\n" in its map.
23:38