#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 &lt;Austin_Hastings@Yahoo.com&gt;: 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