|
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 | |