|
#parrot Parrot 2.1.1 Released! | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Tasks: Fix HLL bugs! Fix and test corevm target! Set by moderator on 9 March 2010. |
|||
| Coke | trac++ | 00:03 | |
| Austin | Got your back-links working? | ||
| Coke | (osuosl fixed my trac bug) | ||
| Austin | Ah | ||
| Coke | the "can't edit a page" bug | ||
| Austin | Heh. | 00:04 | |
| My problem is that I can edit any of them. | |||
| Any word from the admins on getting those extra plugins installed? | |||
| Coke | I don't think I requested the backlinks one. the captcha one got put in... | 00:08 | |
| ... you can't edit pages on the wiki!~? | |||
| Austin | No, I can edit all of them. | ||
| So I keep being tempted.. | |||
| Coke | oh that you CAN. | 00:09 | |
| misread. | |||
| dalek | tracwiki: v7 | coke++ | tasksCoke | 00:11 | |
| tracwiki: done, thanks to darbelo++ | |||
| tracwiki: trac.parrot.org/parrot/wiki/tasksCo...ction=diff | |||
| tracwiki: v8 | coke++ | tasksCoke | |||
| tracwiki: trac.parrot.org/parrot/wiki/tasksCo...ction=diff | |||
| Austin | Also, there's a plugin that lets trac pages use Mscgen for generating diagrams. Any hope of getting that plugged in? | 00:15 | |
|
00:18
janus joined
|
|||
| Coke | ... I did that one for you already. | 00:25 | |
| Austin | You rock. | ||
| purl | Dis is the drum | ||
| Coke | mscgen 0.1 | ||
| Austin | Hey, coke, you might know this: Do the init vtables get run in sequence or something when a new object is created? | 00:26 | |
| (I can't figure out why I'm seeing one run, when I inserted a vtable override before it..) | |||
| Coke | is init overridable? | 00:27 | |
| Austin | Good question. | ||
| purl | Yeah, it is. I'm stumped. | ||
| chromatic | It's overridable, but you have to call the overridden if you want it to run. | 00:28 | |
|
00:28
mikehh joined
|
|||
| Austin | ? | 00:28 | |
| yeah, crap. class.pmc calls the mro in reverse order... | 00:30 | ||
| sub initialize_parents($object, @mro) { @mro.reverse >>.init } | 00:33 | ||
| chromatic: What did you mean by calling the overridden? | 00:34 | ||
| chromatic | If you override the init VTABLE in a PMC that extends another PMC, you'd have to do something like SELF.SUPER() to call the parent init (at least from C). | 00:37 | |
| Austin | Oh. No, this is pir | 00:38 | |
| It's all on top of Class/Object. | |||
| chromatic | The same principle applies, but SUPER is much more difficult in PIR. | 00:39 | |
| Austin | Heh. I did that already. Just scan the mro until the resolved method changes. | ||
| From what I can see, class.pmc scans backwards through the mro, from grandparent to grandchild class, invoking any init overrides. | 00:40 | ||
| It's a "feature" | 00:41 | ||
| chromatic | It's difficult to initialize attributes without doing something like that. | 00:43 | |
| Austin | Yeah. | ||
|
00:46
payload joined
00:49
eternaleye joined
00:50
snarkyboojum joined
00:56
ash_ joined
00:57
abqar joined
|
|||
| dalek | TT #1508 closed by coke++: broken links on parrot.org | 00:58 | |
| rrot: r44886 | mikehh++ | trunk/src/pmc/os.pmc: fix codetest failure - line length |
00:59 | ||
|
01:08
kid51 joined
|
|||
| mikehh | make corevm/make coretest FAIL - t/pmc/nci.t - No tests run - remaining tests PASS - (PASS in make world/make test) | 01:08 | |
| all other tests PASS (pre/post-config, smoke (#32625), fulltest) at r44889 - Ubuntu 9.10 amd64 (g++ with --optimize) | |||
|
01:10
slavorgn joined
|
|||
| Coke | aha. that error message in coretest failure is because the skip message in that file is broken. | 01:12 | |
| that should be a clean skip. | |||
| dalek | kudo: 35e26f8 | jonathan++ | src/pmc/perl6multisub.pmc: When we have no applicable candidates for a multi-dispatch, make the error contain all of the candidates that we could call. |
01:14 | |
| TT #693 closed by coke++: Add 'Wiki' to top row buttons at www.parrot.org | 01:15 | ||
| Coke | mikehh: fixed. | 01:19 | |
|
01:21
snarkyboojum_ joined
|
|||
| dalek | rrot: r44887 | coke++ | trunk/t/pmc/nci.t: Fix skip/plan, should quiet coretest and the skip logic was buggy.) |
01:32 | |
| cotto_work | chromatic, thoughts on the Lorito roadmap? | 01:37 | |
| chromatic | Stage 0 needs also pmc2c. | 01:41 | |
| We may need a Lorito runloop. | |||
| I'd rather not modify IMCC or pirc to emit Lorito; I'd rather have a PBC to Lorito generator or something along those lines. | 01:42 | ||
| Otherwise it looks like what I had in mind. | |||
| Coke | We need a Lorito logo that looks like a Dorito. | 01:43 | |
| cotto_work | chromatic, I think the idea behind omitting pmc2c is that we can already do PMCs in PIR, so we should focus effort on making it possible to write core PMCs in PIR directly. | 01:44 | |
| bacek_at_work may have to clear that up but that's my understanding. | |||
| earlier: | 01:46 | ||
| <cotto> So you're saying that we should focus on ops until they're all Lorito-y, then use the lessons from that transition on PMCs? | |||
| <bacek> exactly | |||
| dalek | TT #1484 closed by coke++: Number of errors reported by "prove" too high | 01:48 | |
| kid51 | dukeleto: ping | ||
| Coke | can some C programmer look at: | 01:50 | |
| src/embed.c:1106: warning: unused variable āpfā | |||
| I think that points to a bug. | |||
| nopaste | "kid51" at 71.255.57.191 pasted "Instances of string 'pf' in src/embed.c" (21 lines) at nopaste.snit.ch/19923 | 01:53 | |
| Coke | kid51: that's unhelpful. | ||
| kid51 | Why? | 01:54 | |
| Coke | assuming it's in response to my warning. | ||
| because the pf at line 1106 has nothing to do with any of the other pfs in that grep. | |||
| (the scope is limited to the block that it's in. | |||
|
01:58
snarkyboojum joined
|
|||
| Coke | suggestion: do what 'headerizer' does when running config with --maintainer | 01:58 | |
| tewk | Coke, PackFile_new_dummy sets interp->initial_pf | 01:59 | |
| Coke | tewk: pf ain't pf | ||
| tewk | its not the best thoughtout code I've seen | ||
| Coke | er, interp->initial_pf ain't pf. | ||
| ok. but there's a side effect, then. | |||
| tewk | yes | ||
| Coke | would you care to eliminate the variable assignment and note the side effect in a comment? | ||
| tewk | Sure, why not, commit comming | 02:00 | |
| Coke | tewk+ | 02:01 | |
| tewk++, even! | |||
| dalek | rrot: r44888 | coke++ | trunk/include/parrot (2 files): rerun 'make headerizer' |
02:04 | |
| Coke | is there ever a case where a static that is defined but not used is ... used? | 02:07 | |
| (in C) | 02:08 | ||
| cotto_work | How do you use a static variable without using it? | 02:10 | |
| Coke | this is a function. | 02:11 | |
| I'm just wondering if the compiler warns about it if I can safely rip it out. | 02:12 | ||
| cotto_work | I'd say that it's a good bet. What are you looking at? | ||
| Coke | turned on -Wunused and am going through the warnings. | ||
| this is specifically in gc_inf | 02:13 | ||
| cotto_work | how can I play along at home? | ||
| er, work | |||
| purl | er, work is distracting; if someone else could fix those en masse, that'd be great. | ||
| Coke | cotto_work: s/-Wno-unused/-Wunused/ in config/auto/warnings.pm and then make -j3 2>&1 | ack 'warning:' | 02:20 | |
| about to clean up a bit of it... | |||
| dalek | rrot: r44889 | mikehh++ | trunk/t/pmc/nci.t: remove unnecessary use Test::Builder |
02:21 | |
| Coke | much of it is in generated files; I'd like to eventually get the build unused-clean. | ||
| rrot: r44890 | tewk++ | trunk/src/embed.c: Parrot_compile_string remove unused variable |
|||
| rrot: r44891 | mikehh++ | trunk/src/pmc.c: fix codetest failure - unused assert macro |
|||
| Coke | (Configure --cage might also work.) | ||
| Coke | mikehh: whoops, I left that in by accident, good catch. | 02:22 | |
| mikehh++ | |||
| mikehh | Coke it caused one of the subtest test 11 to fail | ||
|
02:24
AndyA joined,
eric_j joined
|
|||
| Coke | cotto_work: there goes some of it... | 02:27 | |
| cotto_work | yup | ||
| dalek | rrot: r44892 | coke++ | trunk/src (6 files): Cleanup some -Wunused. |
02:37 | |
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32627) at r44891 - Ubuntu 9.10 amd64 (gcc with --optimize) | 02:41 | |
| dalek | TT #122 closed by coke++: -t4 broken (r34808) | 02:53 | |
|
03:01
mikehh_ joined
|
|||
| chromatic | Tonight... I eviscerate Parrot_mmd_build_type_tuple_from_sig_obj(). | 03:03 | |
| Coke | I doubt you. | ||
| chromatic | You would. | 03:04 | |
| dukeleto | 'ello | 03:21 | |
| how do i remove something from "make coretest" | 03:22 | ||
| chromatic | Wow, only one typo and Parrot_mmd_build_type_tuple_from_sig_obj() passes all tests on the first try. | 03:25 | |
| dalek | TT #1400 closed by coke++: 1.9.0 Compilation on Mac | 03:26 | |
| dukeleto | found it | 03:28 | |
| chromatic | The good news is that the result is shorter code. | 03:38 | |
|
03:42
janus joined
|
|||
| dalek | rrot: r44893 | chromatic++ | trunk/src (2 files): [MMD] Moved the logic for calculating the MMD type tuple from as walking through CallContext's positionals to serialize them into a STRING then walking through that STRINg to create a RIA was awfully silly. This gives a modest but measurable speed improvement to MMD-heavy code. |
03:42 | |
| chromatic | ... and THAT is shorter still. | 03:44 | |
| Coke | chromatic++ | 03:45 | |
| I'm sorry I doubted you. | |||
| ... well, not really. | 03:46 | ||
| chromatic | You're obviously the parent of a teenager. Those psych tricks won't work on me. | ||
| Now let's see if we can reuse packfile STRINGs.... | 03:57 | ||
| dalek | rrot: r44894 | chromatic++ | trunk/src/pmc/callcontext.pmc: [PMC] Tightened the code in CallContext's get_pmc VTABLE; no functional changes. |
03:59 | |
| Austin sings, "When I first got to London it was pourin' down rain. Met a little girl in a field canteen - painted her name on the nose of my plane. Six more missions, I'm gone." | 04:12 | ||
| chromatic | Hm, almost a 2% performance improvement. Interesting. | 04:19 | |
| Austin | So do that 50 more times. | 04:20 | |
| chromatic | 12% fewer STRINGs, thanks to PBC coalescing. | ||
| Austin | About time for that, I think. | 04:21 | |
| chromatic | It's not quite that easy, but I think we can get some goodness out of this. | 04:22 | |
| Hm, actually about 75% fewer STRINGs created. | 04:23 | ||
| If we can fix the need to COW everything... yeah. | |||
| nopaste | "chromatic" at 173.50.130.127 pasted "bacek, NotFound, plobsing: naive, memory leaking patch to coalesce constant STRINGs in PBC loading" (21 lines) at nopaste.snit.ch/19927 | 04:24 | |
| Coke | didn't we already do that on compilation? | 04:29 | |
| ah, this is different. | 04:30 | ||
| -> abed | |||
| plobsing | chromatic: can we guarrantee that the default charset will always be ascii? | 04:53 | |
| chromatic | I'm not sure. | 04:56 | |
| Austin | Gaah. The lesson continues to be taught: never trust the*!@#$%^* user. | 05:03 | |
| Especially not when it's me. | 05:04 | ||
| dalek | rrot: r44895 | petdance++ | trunk/src/embed.c: Consting & localizing of vars. Removed ancient comment. |
05:52 | |
| cotto | Fascinating. It seems I'm doing the release this Monday. | 06:07 | |
| chromatic | Or Tuesday. | 06:08 | |
| cotto | I may have to get on that | ||
| or that | |||
| purl | tuesday is probably pick-on-purl day or ask us to give you the syntax of perldoc -f day or us.imdb.com/Title?0064471 or little-tolerance-for-stupidness day or devoice dynweb at will day or love masque day or random body mods day or I'll-use-colloquialisms-if-I-wanna day or FAQ day. But then so is every other day. or overbearing sexual reference day. (NO, not SOFT references.) or homoerotica day or see tuesday2 | ||
| cotto | slowbot is slow | ||
| purl | i already had it that way, cotto. | ||
| dalek | rrot: r44896 | petdance++ | trunk/src/gc (2 files): reran headerizer |
06:09 | |
|
06:27
Myhrlin joined
|
|||
| dalek | rrot: r44897 | chromatic++ | trunk/src/pmc/sub.pmc: [PMC] Tidied Sub PMC; no functional changes. |
06:42 | |
| cotto | You attack the Disorganized Code with a chromatic. It's super effective! | ||
| chromatic | Would you like your possessions identified? | 06:48 | |
| cotto | y | ||
| chromatic | You have: a big pile of awful code. | 06:49 | |
| Save to a file? y/n | |||
| Austin | chromatic: May I borrow your super-effective brain for a minute? | ||
| chromatic | Only because my team won. | ||
| Austin | Sure. | ||
| I think I'm creating a closure - a callable sub with enclosed lexicals. | 06:50 | ||
| But how can I differentiate it from other enclosures of the same sub? | |||
| That is, once I do $P0 = capture_lex ..., what's P0? | 06:51 | ||
| chromatic | It's the LexPad of the current context. | ||
| Austin | So if I print out the typeof $P0, I'll get LexPad? | ||
| chromatic | I believe so. It shouldn't be anything else. | 06:52 | |
| NotFound | chromatic: What's the point of that patch? | ||
| Austin | Hmm.. I'm getting 'Sub' | 06:53 | |
| chromatic | NotFound, to reuse constant STRINGs. | 06:54 | |
| We create 75% fewer STRINGs in my Rakudo benchmarks with that patch. | |||
| Austin, I'm looking at the code now. | 06:55 | ||
| Looks like capture_lex doesn't take a destination. | 06:56 | ||
| If you're seeing $P0 = capture_lex, you're doing something weird. | |||
| Austin | I'm not. That's my bad. It's capture_lex $P36, sub... | 06:57 | |
| chromatic | See docs/pdds/pdd20_lexical_vars.pod -- that's as much documentation as I understand things. | 06:58 | |
| Austin | mego | 07:00 | |
| NotFound | chromatic: I don't see how to avoid the leak, but if we are going towards immutable strings I think we can live with it in the meantime. | 07:02 | |
| chromatic | If we stored STRINGs with the trailing NULL in bytecode.... | 07:03 | |
| NotFound | Sounds doable. | ||
| chromatic | I do have a couple of PBC failures with the patch, but they may be bugs elsewhere. | 07:04 | |
| NotFound | I'll try to take a look, but I don't think will have much time during the weekend. | 07:07 | |
| chromatic | It seemed like an obvious win, and it looks good so far. | 07:09 | |
|
07:12
uniejo joined
|
|||
| chromatic | Per my rough numbers, starting Rakudo thaws 137243 STRINGs from PBC. Of those, 5545 have a non-default character set. 131698 use the default character set. 9706 of the latter are unique. | 07:25 | |
| That means we can avoid creating 121,992 constant STRING headers. That's 92.63%. | |||
| NotFound | chromatic: Using a parrot that already has the change that avoids creation of string duplicates in pbc? | 07:29 | |
| chromatic | Yes. | 07:30 | |
| NotFound | Odd. | 07:31 | |
|
07:31
particle joined
|
|||
| chromatic | I can only imagine how much worse it would have been. | 07:32 | |
| NotFound | Note that we still have the problem of not storing the encoding in pbc. | ||
| chromatic | We do store the charset though. | 07:33 | |
| NotFound | Yes, but the dup avoider checks both charset and encoding. Maybe there is some problem with the encoding value. | 07:34 | |
| chromatic | You think we could store even fewer in PBC? | 07:35 | |
| NotFound | Maybe, I don't looked at rakudo pbc | ||
|
07:37
fperrad joined
|
|||
| NotFound | Thinking better... the string may come from the content of frrozen string pmc, those are not in the constant table. | 07:40 | |
| chromatic | That could be. | 07:41 | |
| dalek | rrot: r44898 | cotto++ | branches/ops_pct/compilers/opsc (3 files): [opsc] fix op parsing and actions, add a test, fix some broken tests |
07:47 | |
| NotFound | chromatic: in the patch you don't check the contant flag. Is this intentional? | ||
| chromatic | See line 1316; I assume they're all constant. | 07:49 | |
|
07:55
riffraff joined
|
|||
| NotFound | chromatic: that line just mask some flags. | 07:58 | |
| dalek | rrot: r44899 | cotto++ | branches/ops_pct/compilers/opsc/src/Ops/Op.pm: [opsc] remove unused and inefficient method |
08:03 | |
| NotFound | Must go to dayjob. Later. | 08:06 | |
| GeJ | clock ? | 08:07 | |
| purl | GeJ: LAX: Fri 12:07am PST / CHI: Fri 2:07am CST / NYC: Fri 3:07am EST / LON: Fri 8:07am GMT / BER: Fri 9:07am CET / IND: Fri 1:37pm IST / TOK: Fri 5:07pm JST / SYD: Fri 7:07pm EST / | ||
| chromatic | NotFound, good catch. That fixes my test failures. | 08:14 | |
|
08:17
Themeruta joined
08:18
mikehh joined
|
|||
| chromatic | Oh my. How would you like a nasty hack? | 08:26 | |
|
08:27
iblechbot joined
|
|||
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32629) at r44899 - Ubuntu 9.10 amd64 (g++ with --optimize) | 08:43 | |
|
08:45
kurahaupo joined
|
|||
| Austin | git-- # for advertising "merge" when you really mean "throw out my stuff." | 08:55 | |
| chromatic | git reflog | ||
| purl | git reflog is probably my friend | ||
| Austin | sudo apt-get uninstall git | 08:57 | |
| But your way is good, too. | |||
| chromatic | I can't imagine losing commits unless you've run git gc. | 08:59 | |
| Okay, clearly the best way to make this work is to add an extra NULL byte when storing STRINGs in PBC. | 09:00 | ||
|
09:00
payload joined
|
|||
| chromatic | Yet I can't figure out how to do that correctly. | 09:00 | |
|
09:11
Austin joined
|
|||
| Austin | git-- # obreboot | 09:12 | |
|
09:27
AndyA joined
10:12
lucian joined
10:13
payload joined
|
|||
| Austin ++ # another passing test case. | 10:17 | ||
|
10:18
Austin left,
Austin joined
|
|||
| Austin | Mooof@ | 10:18 | |
|
10:21
betterworld joined
|
|||
| dalek | izkost: 71c923a | jonathan++ | src/pmc/p5invocation.pmc: Fix arg marshalling from Parrot to Perl 5 enough for something basic to work. |
10:29 | |
| kudo: e5d11fe | (Solomon Foster)++ | src/pmc/p6opaque.pmc: Add item to the list of methods that we don't go and create a closure for, as per jnthn++. |
11:55 | ||
|
11:58
mikehh joined,
allison joined
12:05
mikehh joined
12:09
AndyA joined
12:11
lucian joined
12:17
mikehh joined
|
|||
| dalek | kudo: f28f3c7 | moritz++ | src/core/Num.pm: port some Num methods over from alpha |
12:46 | |
| kudo: f04eb83 | moritz++ | .gitignore: .gitgnore docs/test_summary.times.tmp |
|||
| kudo: 0c6ae7c | moritz++ | t/spectest.data: run more test files |
|||
|
13:07
Austin_Hastings joined
13:08
payload joined
13:09
tetragon joined
13:13
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 13:15 | |
| Austin | Good morning, whiteknight | 13:16 | |
| You're just a little bit early. | |||
| whiteknight | a little? early for what? | ||
|
13:18
parthm joined
|
|||
| Austin | Sometime soon I'm going to commit a change to start running the UnitTest test cases | 13:18 | |
| And that change includes loading the .nqp files on the fly. | 13:19 | ||
| Coke | <Austin_Hastings@Yahoo.com>: delivery temporarily suspended: host f.mx.mail.yahoo.com[98.137.54.237] refused to talk to me: 421 4.7.0 [TS02] Messages from 140.211.166.133 temporarily deferred due to user complaints - | ||
| Austin | Hmm | 13:20 | |
| moritz | gray listing? | ||
| Austin | What's the 140 address? | ||
| hemlock.osuosl.org | 13:21 | ||
| Coke | I get one of these whenever I get around to cleaning up the spam traps. | 13:23 | |
|
13:24
bluescreen joined
|
|||
| whiteknight | Austin: I don't quite understand what you mean, but I look forward to the commit nonetheless | 13:25 | |
| Austin | whiteknight: You may recall yesterday evening asking about how to load nqp from nqp. | ||
| whiteknight | ah, yes | ||
| that's awesome | |||
| Austin | You also said something-or-other was your major issue.. I can't recall what. :( | 13:26 | |
| whiteknight | I'm not sure either. I'm sure it was only "major" in a relative sense | ||
|
13:27
parthm_ joined
|
|||
| Austin | Ahh... 'todo' | 13:30 | |
|
13:34
iblechbot joined
|
|||
| Austin | Oh, whiteknight, for your entertainment: I tried to start writing tests for 'todo' on the UnitTest suite. And of course, my TAP Listener uses Test::Builder, which is a class written directly in PIR without the P6object stuff. | 13:35 | |
| HOO, boy. | 13:36 | ||
| There's six hours of my life I'll never get back. | |||
| It turns out that the :vtable 'init' (and 'init_pmc') just can't be mocked, although I tried like hell. | |||
| Parrot runs through the mro backwards looking for init vtables, so there's no chance of intercepting, or doing anything else to affect the behavior. And naturally, Test::Builder runs off and invokes eleventy-four other things from there... | 13:38 | ||
| whiteknight | what do you mean "runs through the mro backwards"? | ||
| Austin | my @mro := $class.inspect('all_parents'); | ||
| whiteknight | as in, backwards from how all other vtable overrides are searched? | 13:39 | |
| Austin | for @mro.reverse -> $parent { if $parent.has_vtable_override('init') { ... } } | ||
| plobsing | msg chromatic That patch denies the possibility for NULLs embedded into PBC constant strings (which seem to work before the patch). Perhaps we need a function to create strings in the constant pool given a pointer and a length. | ||
| purl | Message for chromatic stored. | ||
| Austin | Backwards meaning grandparent class first, grandchild class last. | ||
|
13:41
parthm left
|
|||
| whiteknight | holy shit, it does go backwards | 13:41 | |
| Austin | I'm pretty sure we *could* mock a bunch of the other vtable overrides (get_string, bool, defined, etc.) but I just ran out of "want to" somewhere. | 13:42 | |
| whiteknight | src/pmc/class.pmc:331 | ||
| Austin | Yeah. | ||
| Didn't I say that? | |||
| whiteknight | Yeah, but I had to see it to believe it | ||
| Austin | :) | ||
| whiteknight | and not a single explanatory note anywhere about why we would make such a mind-bogglingly weird break from the norm | ||
| Austin | Oh, that's easy. | ||
| whiteknight | so wait, why does this hurt you? can't you just insert the mock class as the top-most, or even only item in the MRO? | 13:43 | |
| Austin | The assumption is that every :init is implicitly doing something like : 5 method init() is :vtable { SUPER(); ... } | ||
| I have to have the MRO chain intact so people can do "isa" checks, and MMD. | 13:44 | ||
| dalek | rrot: r44900 | gerd++ | trunk/config/gen/makefiles/parrot_pc.in: reflecting ticket #735; fix the command "pkg-config parrot --cflags" to gives the correct output |
||
| whiteknight | actually, looking at the code it looks like they do this so all the PMCProxy delegates can be created BEFORE the subclasses that rely on them attempt to access them | 13:45 | |
| Austin | That, too. | ||
| I guess. | |||
| whiteknight | without comments, we just have to make stupid assumptions | ||
| Austin | Heh. | ||
| Anyway, what it boils down to is that the :init method gets called, but I can catch any other methods that are explicitly called from within that. And (hey, guess what?) we kind of know how many times and with what args your init method will be called, anyway. So the value of mocking it is kind of low. | 13:46 | ||
| whiteknight | so I'm still not seeing the problem you had. How many items are in the MRO of the mock? | ||
| Austin | The mock is a subclass of the original class. | 13:47 | |
| whiteknight | oh...why? | ||
| Austin | to get the mro | ||
| whiteknight | and why do you need the mro for it? You're intercepting all calls anyway | ||
| Austin | So that the mock will pass through MMD and isa checks. | ||
| whiteknight | it seems like you could fake it manually | 13:48 | |
| get the MRO, store it in an attribute, and walk that manualy in isa checks | |||
| Austin | If you mock String, and then call one of the P6object routines, where it explicitly asks "isa $P0, 'String'", I want the code to route the right way. | ||
| whiteknight | you can override VTABLE_isa, so do the walk yourself | 13:49 | |
| Austin | I probably could. But up until now, doing it this way was hella faster. | ||
| But that still doesn't solve the MMD problem. | |||
| whiteknight | or, you could create a delegate object and pass calls on to that | ||
| of course, that doesn't help in the case of objects with stateful and destructive interfaces | 13:50 | ||
| Austin | Heh. Mock. | ||
| Actually, the Eggs are reverse-delegate objects. | |||
| whiteknight | Eggs? I can't keep track of all your jibbajabba terminology | 13:51 | |
| Austin | They have only two attributes, and one vtable (find_method). Everything else is implemented in other classes, to keep the namespaces clean. | ||
| whiteknight | I pitty tha fool | ||
| Austin | A cuckoo places its eggs in the nest of another species, where it is raised by the unsuspecting victims. "Brood parasitism." | ||
| So the objects are cuckoo's eggs. | 13:52 | ||
| whiteknight | Maybe you could subclass Class, override instantiate, amd intercept init and init_pmc calls that way | ||
| Austin | Heh. | ||
| Let me know how that works out... :) | 13:53 | ||
| whiteknight | Oh, I'm sure it wont work out well, at least not at first | 13:54 | |
| subclassing class from PIR is known to cause some...inconsistancies...in the otherwise flawless operation of the Parrot VM | |||
| Austin | I'm kind of hoping I won't have to submit any more tickets before 2.2 comes out. | 13:57 | |
| whiteknight | do you have a list of outstanding tickets that you've opened? | 13:58 | |
| Austin | trac.parrot.org/parrot/report/13?as...n_Hastings | 13:59 | |
| whiteknight | OI! | 14:00 | |
| I keep feeling like I'm skirting around a solution for #1492, but so many things seem to be relying on the misbehavior | 14:07 | ||
| Austin | Really? | 14:08 | |
| I thought maybe I was the only guy creating classes with more than one name. | |||
| whiteknight | yeah, when I "fixed" it so get_class<namespace> returns PMCNULL if the class object for that namespace hasn't been created yet, PGE fails to build | ||
| Austin | And I have to tell you, my creativity is wearing out.. | ||
| Hmmm... for some reason, my test cases for Program are hanging the harness... | 14:12 | ||
|
14:14
hercynium joined
|
|||
| Austin | Well, it got through that time... | 14:15 | |
| whiteknight | I saw that a few times yesterday | 14:16 | |
| actually, no. I solved that issue | 14:17 | ||
| Austin | ? | ||
| With Program, or something else? | |||
| whiteknight | I was calling CharMatrix2D.new without registering CharMatrix2D as a P6 thingy, and the call hung | ||
| no, on my tests for PLA | 14:18 | ||
| Austin | The problem may be an order-dependent thing. (One reason why the order is random) | 14:20 | |
| whiteknight | ok | 14:21 | |
| ...I think I have a fix for #1492. building and testing now | 14:26 | ||
| requires me to make a code change to P6object.pir, which I am reticent to do | 14:27 | ||
| Austin | Heh. The bloom is off *that* rose for me... | 14:28 | |
| lucian | allison: ping | 14:30 | |
| i'm curious about parrot's concurrency story, is PDD 25 implemented? | 14:35 | ||
| btw, from reading PDDs, parrot looks more and more awesome | 14:39 | ||
|
14:41
payload joined
14:42
szabgab joined
|
|||
| lucian finds 'tri-color marking gc' funny, since all three are non-colors | 14:42 | ||
|
14:43
eiro joined
|
|||
| atrodo | which PDD is that? | 14:44 | |
| lucian | atrodo: 9 | ||
| atrodo goes to read about the funny non-colors | |||
|
14:46
payload joined
|
|||
| lucian doesn't think 'switching GC systems at execution-time to accommodate different work loads' is feasible | 14:46 | ||
| Austin | It | 14:50 | |
| It's a stop-the-world GC. We could switch CPUs at execution time if we wanted to. | |||
| lucian | Austin: but switching GCs isn't the same | 14:51 | |
| you'd have to push all objects from the old GC into the new GC | |||
| or have multiple GCs running at the same time, each with their own pools (which is suicide) | 14:52 | ||
| whiteknight | it generally is not feasible, no | 14:54 | |
| but if all GCs shared a common storage structure, we could swap out marking/sweeping algorithms | |||
| that's a small subcase, however | 14:55 | ||
| lucian | whiteknight: true, that would work | ||
| Austin | Oh, no. | ||
| Parrot is all things to all people. It says so right in the spec. | |||
| We support difference calling conventions, different encodings, different byte orderings. | 14:56 | ||
| And we'll support different GCs. At the same time. | |||
| lucian | Austin: yes, great, i agree. i just don't think swithing GCs at runtime is possible | 14:57 | |
| Austin | Then you're the perfect guy to work on it. | ||
| :) | |||
| lucian | well it is possible, but it would take loads of work for something that can be solved easily at the application layer | ||
| Austin: heh. after pynie passes a decent portion of the cpython test suite :) | 14:58 | ||
| atrodo: the color bit isn't that funny, i was being pedantic about white, gray and black not being actual colors | 15:00 | ||
| allison | lucian: thanks for the dict fixes | 15:01 | |
| dalek | kapo: 2b315d6 | austin++ | (10 files): Refactored ComponentMarshaller.nqp out of Program, Library classes. (has-a) Cleaned up Program. Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com> |
||
| lucian | allison: well, they're full of bugs actually | ||
| kapo: 6830fae | austin++ | (24 files): * Some rudimentary changes to 'Program' to get it working. mock Test::Builder. * Got UnitTest testcases working as part of setup.nqp test. * Added assert_(not_)defined from Whiteknight++. Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com> |
|||
| allison | lucian: progress is progress | ||
| dalek | kapo: d949d4d | austin++ | (2 files): add assert_defined and assert_not_defined, plus tests (though I don't think these particular test files run as part of the normal suite). |
||
| purl | i already had it that way, allison. | ||
| kapo: d42bec0 | austin++ | setup.nqp: Incorporated Whiteknight's install changes. |
|||
| kapo: b015592 | austin++ | : review: gitorious.org/kakapo/kakapo/commit/...221307e5fb |
|||
| kapo: 4aa2527 | austin++ | : review: gitorious.org/kakapo/kakapo/commit/...cec55d8d12 |
|||
| lucian | allison: it occurs to me that pynie is wrong about a lot of python semantics | 15:03 | |
| allison: we really need objects first | |||
|
15:04
hudnix joined
|
|||
| allison | lucian: it's a *very* basic implementation, yes | 15:04 | |
| lucian: and yes, objects are one of the top two priorities | |||
| lucian | allison: other being? | 15:05 | |
| allison | lucian: the other is module loading, which is somewhat related | ||
| a.k.a 'import' | |||
| lucian | allison: importing is slightly messy in python | ||
| allison: objects first | |||
| allison | lucian: indeed, but for the most part we can use importlib | 15:06 | |
| lucian | allison: true, pure python code rules | ||
| allison | lucian: very much so | ||
| lucian | especially if there's a jit behind it (pypy project has nice results) | 15:07 | |
| allison | lucian: at the python dev summit at PyCon, they made a decision to favor offering pure-python alternates for as many of the standard library as possible | ||
| dalek | kapo: 8d6b40a | austin++ | setup.nqp: Fixed up some leftover git merge dingleberries. |
||
| allison | pypy has done a good bit of work there | ||
| lucian | allison: good decision | ||
| allison | ctypes, for example, we can pull largely from the pypy version, with a small core custom to Parrot | 15:08 | |
| kthakore | pypy? | ||
| purl | pypy is already self-hosting or python written in python, on codespeak.net/pypy/dist/pypy/doc/news.html | ||
| kthakore | ah ok | ||
| lucian | allison: yes, it uses _rffi | ||
| kthakore: speed.pypy.org | 15:09 | ||
|
15:09
Psyche^ joined
|
|||
| kthakore | lucian: ok | 15:09 | |
| allison biab | 15:10 | ||
| lucian | it would actually be possible to write a parrot backend for pypy | ||
| but it would be slow (since pypy compiles an entire interpreter to its backend) | 15:11 | ||
| atrodo | lucian> I noticed. Although, I will admit, good use of the word "pedantic" | 15:15 | |
| lucian /ignores dalek | 15:16 | ||
| atrodo: bad classification methings, blame artists | 15:19 | ||
| s/methings/methinks | |||
| cotto_work | morning | 15:49 | |
|
16:02
theory joined
|
|||
| lucian | allison: i've been thinking about attribute resolution in pynie | 16:04 | |
| whiteknight | purl msg chromatic: (tt389_fix) I think we can create the PMCProxy in src/pmc.c:Parrot_create_mro, around line 861 where we initially create the namespace. This function only appears to get called for C-based PMCs, not classes. I'm going to put together a patch to test it out | 16:05 | |
| purl | Message for chromatic stored. | ||
| lucian | allison: python uses __dict__ for that, but methods on pynie right now are dispatched directly by parrot | ||
| allison: would using __dict__ for method dispatch slow things down? | |||
|
16:11
Austin_Hastings joined
|
|||
| allison | lucian: Parrot will handle attribute resolution, no need for pynie to do it | 16:17 | |
| lucian | allison: but obj.__dict__ still needs to be implemented, real code uses it | ||
| allison: will it be build when accessed? | |||
| s/build/built/ | 16:18 | ||
| allison | lucian: the 'inspect' vtable function on all objects returns something similar, it's just a matter of translating it | ||
| dalek | kapo: 2e7c606 | austin++ | (3 files): * Got 'todo($message)' working for Testcases. Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com> |
||
| lucian | ok, didn't know about that | 16:19 | |
| lucian goes back to furiously reading docs | |||
| allison | lucian: as in, add a '__dict__' method to python's subclass of the parrot Object class, to wrap around the parrot feature | ||
| lucian | allison: i'm looking around whether __dict__ can be replaced on live objects in python | 16:20 | |
| allison: as in a.__dict__ = {} | |||
| Austin | msg whiteknight I just pushed "todo". Also, look in t/UnitTest/AllTests for the compiling-nqp stuff. | ||
| purl | Message for whiteknight stored. | ||
| whiteknight | nice | 16:21 | |
| lucian | allison: no, __dict__ is hidden to the outside | 16:22 | |
| allison: and it seems to only have special properties if __setattr__ or __getattribute__ are defined in that class | 16:23 | ||
| lucian realises python has many corner cases | 16:24 | ||
| allison | lucian: okay, so __setattr__ and __getattribute__ will override the parrot object's 'set_attr' and 'get_attr' vtable functions | ||
| lucian | allison: __getattr__ is only called when there is no attribute with a certain name | 16:25 | |
| allison: right, that's clearer in my head | 16:26 | ||
| allison | lucian: okay, then we may just override get_attr in the base Python object class, to check if __getattr__ is defined if a particular attribute name doesn't exist | 16:27 | |
| lucian | allison: i'm getting excited about pynie. can't wait for objects | 16:29 | |
| allison | lucian: good :) | 16:30 | |
| lucian | allison: i have to go, volunteering for sciencefest. thanks for clearing things up | 16:31 | |
| allison | lucian: glad to talk, it's great to share pynie with someone :) | 16:32 | |
|
16:42
denisw joined
|
|||
| denisw | hi | 16:42 | |
| purl | what's up, denisw. | ||
| allison | hi denisw | 16:50 | |
| denisw | hi allison | 16:51 | |
| dukeleto | 'ello | 17:00 | |
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32640) at r44900 - Ubuntu 9.10 amd64 (gcc with --optimize) | 17:17 | |
|
17:22
riffraff joined
|
|||
| whiteknight | hmmm, Parrot_io_init_unit calls Parrot_io_fdopen_unix with PMCNULL as one of the arguments, even though at this point none of the vtables or PMCs are created or initialized | 17:44 | |
|
18:04
clinton joined
18:10
GodFather joined
18:12
GodFather joined
18:17
bluescreen joined
|
|||
| plobsing | I just realized Parrot supports class names with arbitrary characters in them. "\\0" is a valid class name! | 18:19 | |
| allison | :) | ||
|
18:24
AndyA joined
|
|||
| whiteknight | damnit. I'm doing some TT #389 work, and now I'm getting a Parrot_confess failure inside the GC stack trace of a completely unrelated part of the system | 18:49 | |
|
18:53
payload joined
|
|||
| whiteknight | Austin: did you say you committed todo? | 18:57 | |
|
19:00
ruoso joined
19:01
joeri joined
19:03
AndyA joined
19:20
chromatic joined
|
|||
| whiteknight | hello chromatic | 19:25 | |
| chromatic | morning | ||
| davidfetter | still morning here | 19:26 | |
| whiteknight | chromatic: see my last email? I tried to fix the last issue in default.find method and got a huge Parrot_confess failure inside the GC stack trace routine | 19:27 | |
| chromatic | I see that. I think I know how to make that work. | 19:28 | |
|
19:28
kjeldahl joined
|
|||
| whiteknight | I tried adding a get_pmc_keyed_str method to Class and PMCProxy, and then using those instead of the namespace lookup in src/oo.c:find_method_direct_1 | 19:29 | |
| but, kablooey | |||
| chromatic | Yeah, I don't think that'll work right. | 19:30 | |
| plobsing, ping | |||
| Coke | anyone here run? | 19:31 | |
| plobsing | chromatic: pong | 19:32 | |
| Coke: run what? | |||
| purl | Don't run, you'll only die tired. | ||
| Coke | plobsing: yourself. | ||
| chromatic | I didn't think about embedded NULLs. You're right about the need for a "Create string given buffer length"... I'll have to think about that some more. | 19:33 | |
| The only tricky part is caching in the constant STRING cache, but we had talked about revising that storage mechanism anyway. | |||
| plobsing | Actually, the more I think about it, the more I feel we need to allow for arbitrary strings in constants, not just asciiz | ||
| chromatic | We do, but Parrot_str_new_constant() only allows the default encoding. | 19:34 | |
| plobsing | Coke: outside for extended periods of time? Yes, regularily. | ||
| whiteknight | I used to run, but I started getting shin splints, so I stopped | ||
| chromatic | I used to run to. Walking's better. | 19:35 | |
| plobsing | chromatic: If we're moving to immutable strings, can we de-dup *all* strings? | ||
| Coke | chromatic: can you change the default at runtime? | 19:37 | |
| chromatic | Coke, not unless you want to break things. | ||
| plobsing, yes. The PBC header (magic number, string PBC, version number) shows up now and then. | |||
| Oh, you mean STRINGs besides those thawed from PBC. Possibly. | 19:38 | ||
| plobsing | chromatic: I was thinking that the duplicate rate for strings coming out of compilers would probably be similar to the duplicate rate in PBCs | ||
| chromatic | Very likely. | 19:39 | |
| I'll write up a list of tasks to fix STRING constant handling, and we can tackle this after the next release. | 19:40 | ||
| Wild guess: ~4% Rakudo performance improvement. | |||
| We might be able to squeeze out a couple more percent by avoiding the C string cache, or at least moving to a better data structure like a heap. | 19:43 | ||
| whiteknight | I'm still convinced that we can completely trash the current CONST_STRING system, and define string constant literals directly in the C code | 19:46 | |
| at least, that works for constants known at compile time | |||
| chromatic | Until we have to transcode them. | 19:48 | |
| whiteknight | in a world of immutable strings, transcoding makes a copy | 19:49 | |
| chromatic | We need to figure out whether we're going to jump to immutable STRINGs then. | 19:50 | |
|
19:51
bacek joined
|
|||
| whiteknight | I'm for it, but it's definitely a huge decision | 19:59 | |
| involves almost complete ground-up rewrite of the strings system and half the GC | 20:00 | ||
| chromatic | I don't think it's that bad. | ||
| whiteknight | for a naive implementation, maybe not. But to really optimize things like we need to do, we're going to have to completely switch paradigms in the src/string/* files | 20:01 | |
|
20:01
ash_ joined
|
|||
| chromatic | Step one can be to change the STRING APIs to return modified versions, never to modify in place. | 20:01 | |
| whiteknight | yeah, but that's just the first step of many | 20:02 | |
| chromatic | We get a lot of benefit from that one alone. | 20:03 | |
| whiteknight | true, no arguments there | 20:04 | |
| tewk | PGE already uses a stringbuffer type pmc right? | 20:06 | |
| chromatic | CodeString? | 20:07 | |
| tewk | Yeah that was what I trying to remember. | ||
| whiteknight | replacing CodeString with a proper string builder PMC would be nice | 20:11 | |
| Coke | (codestring is already an improvement over what came before) | 20:12 | |
| fixing bottlenecks in codestring would be most helpful, though. | |||
|
20:18
riffraff joined
|
|||
| whiteknight | it looks like it's just a sort of mishmash of routines which are helpful in code generation | 20:21 | |
| brb | 20:22 | ||
|
20:26
whiteknight joined
|
|||
| whiteknight | just upgraded to FireFox 3.6 with the new "personas" thing | 20:29 | |
| it's disturbing to me how many of the personas in the gallery are entirely themed around Megan Fox | |||
| chromatic | Could be worse, could be Fox News. | 20:32 | |
| whiteknight | maybe, but I've never heard plausible rumors that Fox News is actually a man | 20:35 | |
| chromatic | It's a lot more patriotic than I want from a web browser. | ||
| whiteknight | chromatic: so what are you thinking about that TT #389 issue? | 20:53 | |
| chromatic | I think I know how to fix method lookup from default. | ||
| whiteknight | what's your plan? | ||
|
20:54
GodFather joined
|
|||
| chromatic | Create the PMCProxy PMCs before inserting NCI methods, then insert those methods into the Proxies. | 20:55 | |
| whiteknight | we're not doing things in that order now? | 20:56 | |
| er, after my patch? | |||
| chromatic | I haven't studied your patch in sufficient detail. | ||
| whiteknight | I didn't rearrange any code in the class_init functions | ||
| chromatic | There was one trick I ran into when I tried it. | ||
|
20:57
cotto_work joined
|
|||
| whiteknight | this whole initialization sequence leaves much to be desired | 20:57 | |
| not just the PMCs, the whole interpreter | |||
| chromatic | Indeed. | 20:58 | |
| whiteknight | One thing I saw earlier, and I'm surprised it hasn't come back to bite us before now, is that the IO system initialization routines use PMCNULL, which wouldn't even be initialized at that point | 20:59 | |
| chromatic | That's because PMC_IS_NULL checks for NULL and PMCNULL. | ||
| whiteknight | True, but the problems I was seeing were ASSERT_ARGS failures because that value was NULL and shouldn't have been | 21:00 | |
| which means in current Parrot when things work, PMCNULL is both not NULL there, and is also not a valid PMC | |||
| bacek | ~~ | 21:08 | |
|
21:08
ash__ joined
21:10
bluescreen joined
|
|||
| whiteknight | anyway. I'm heading home now. Later | 21:10 | |
| dalek | rrot: r44901 | bacek++ | branches/ops_pct/compilers/opsc (2 files): Add debug profiling info. |
21:55 | |
| rrot: r44902 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/Compiler/Actions.pm: Add "\\n" before implicit "goto NEXT". |
|||
| rrot: r44903 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops (3 files): Use OpLib to assign op codes |
|||
| bacek | msg cotto I found why recent opsc fail to bootstrap. I incorrectly handle "restart FOO". Fixing now. | 22:12 | |
| purl | Message for cotto stored. | ||
| cotto_work | bacek, I was wondering why you did that. It looked questionable. | 22:13 | |
| bacek | cotto_work, check r44904. I overlooked restarts in C generating for new Grammar/PAST | 22:14 | |
| cotto_work | btw, I'm pretty sure that restart ADDRESS is broken in trunk. It's only used in one place there and does the same thing as goto ADDRESS. | 22:15 | |
|
22:17
donaldh_ joined
|
|||
| bacek | may be | 22:18 | |
| cotto_work | changing it to be consistent with Parrot::Op breaks the build | 22:19 | |
|
22:22
donaldh__ joined
22:23
donaldh___ joined
22:26
Patterner joined,
allison joined
|
|||
| dalek | rrot: r44904 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/Compiler/Actions.pm: Add bit of information how op_macro _will_ be handled. |
22:28 | |
|
22:32
Whiteknight joined
22:43
hercynium joined
|
|||
| bacek | cotto, all tests passed again. We have to do something with parsing speed... | 22:47 | |
| cotto_work | quite | 22:50 | |
| the build is still broken with the generated core_ops.c though | |||
|
22:50
snarkyboojum joined
|
|||
| bacek | cotto, hmm.. It builds on my box. | 22:52 | |
| cotto_work | it compiles but breaks building pge | 22:53 | |
| bacek | Interesting. It _does_ build PGE on my box :) | 22:54 | |
| cotto_work | Hmmm. retrying | 22:56 | |
| Whiteknight | now, we can't all be right | ||
| somebody must be a dirty rotten liar | |||
| bacek | And it's YOU | ||
| purl | How are you gentlemen? | ||
| bacek | Anyway. Software is hard. Let's go shopping | 22:57 | |
| dalek | rrot: r44905 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops (3 files): Rework handling of op_macro. |
23:01 | |
| rrot: r44906 | bacek++ | branches/ops_pct/compilers/opsc/t/03-past.t: Fix PAST test |
|||
|
23:07
slavorgn joined
|
|||
| Whiteknight | make instll fails on my machine | 23:21 | |
| ./parrot pbc_to_exe.pbc pbc_to_exe.pbc | |||
| Must pass a valid integer array to 'local_branch' | |||
| current instr.: '_config' pc 6 (runtime/parrot/library/config.pir:55) | |||
| mj41 | pbc_to_exe is hanging on one of taptinder windows client | 23:24 | |
|
23:25
bluescreen joined
|
|||
| Whiteknight | though that error doesn't make sense, that file doesn't use the local_branch opcode anywhere | 23:29 | |
| chromatic | Sounds like a PBC change. | ||
| Whiteknight | yeah, worked after a second realclean | 23:32 | |
|
23:42
particle1 joined
23:43
AndyA joined
23:46
AndyA joined
|
|||