#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.
plobsing sorear: we have dynop libraries in src/dynoplibs. It would add ops to Parrot upon loading. 00:01
sorear plobsing: could I use those ops from any other extension, or would I have to wrap them with subs? 00:02
how does the pir->pbc compiler know the opcode number for opcodes that aren't added until runtime? 00:03
plobsing sorear: you could call them directly from PIR, like "$I0 = fork"; or from anything that can emit ops directly, like NQP. 00:04
00:04 payload joined
plobsing sorear: the PIR->PBC compiler loads your extension and puts a mention of the extension in the PBC so that the executing Parrot VM loads the extension before executing the op stream 00:04
sorear how does namespacing work for dynops? 00:05
plobsing I'm not sure anyone has thought about that.
sorear perhaps I'm confused; I thought opcodes were just small integers
and if the load order is different, the opcodes would be different
so pir->pbc would maybe use the wrong numbers 00:06
sorear read
darbelo sorear: dynops are different from regular ops, they involve magical runtime fairy dist.
plobsing sorear: the problem you describe may very well exist (and we would try to fix it if it showed up). The code implementing some of this stuff (IMCC, ParrotInterpreter.freeze) is pretty hairy, so I can't be 100% sure. 00:07
sorear also, is there anything out there on best practices for setting up a Parrot extension that anybody on any platform can just install. 00:08
plobsing plumage? maybe 00:09
darbelo Actually, distutils.
00:10 eternaleye joined
japhb darbelo, plobsing, sorear: distutils + Plumage. ;-) 00:10
darbelo look at the project skeleton generated by tools/dev/mk_language_shell.pl and steal the setup.pir file.
sorear is there any documentation for distutils? all I can find on Google for it is mailing list posts and IRC logs 00:11
japhb As soon as fperrad fixes something I've been asking for in distutils, Plumage will switch over to using distutils itself -- and at the same time we will work on a mass conversion of setup.pir to setup.nqp for anyone who so desires.
sorear, perldoc the distutils.pir file.
sorear thanks 00:12
japhb sorear, (it's in runtime/parrot/library/ )
darbelo The basic idea is to put some data into a hash and the tailcall into the distutils.pir library, to do all the work for you.
japhb The documentation is a bit ... thin, but not too hard to figure out.
darbelo, pretty much. 00:13
nopaste? 00:14
purl nopaste is, like, at nopaste.snit.ch/ (ask TonyC for new channels) or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others) or gist.github.com/ or paste or gtfo or tools/dev/nopaste.pl or trac.parrot.org/parrot/browser/tru...nopaste.pl
darbelo The 'sample' setup.pir in mk_language_shell.pl (while a bit opaque at first sight) is a pretty good example of current conventions.
A good example of 'advanced' use is the setup.pir included in fperrad's lua. That build procedure was the main driving force behind the creation fo distutils IIRC. 00:15
nopaste "japhb" at 76.191.190.8 pasted "Current iteration of Plumage's setup.nqp-to-be" (75 lines) at nopaste.snit.ch/19958 00:16
japhb sorear, also take a look at that paste.
It's almost complete -- except that empty line at 'inst_lib', because of a feature I need from fperrad. But otherwise, that's what the new setup.nqp files will look like.
darbelo japhb: Can't you do that in PIR? 00:17
It's not *that* much more verbose.
japhb darbelo, of course, but why would I? NQP-rx comes with Parrot, and it's a LOT more ugly to do in pure PIR. 00:18
Well, to my eyes, at least.
And I've written my fair share of PIR. ;-)
darbelo Heh, I can read PIR better than I can read NQP this days. But I *do* have a lot of training with assembly languages. 00:19
Maybe I should bother learning perl 6 after all ;) 00:20
japhb Definitely!
purl Definitely! are you here?
japhb purl, forget Definitely! 00:21
purl japhb, I didn't have anything matching definitely
japhb purl, forget 'Definitely!'
purl japhb, I didn't have anything matching 'definitely!'
japhb gah 00:22
plobsing purl forget definitely
purl plobsing, I didn't have anything matching definitely
cotto_work purl, unbotsnack
purl thanks cotto_work :)
japhb I even tried it with parens, in case it was like karma
darbelo no, definitely! is <reply>
purl i already had it that way, darbelo.
darbelo There
definitely! 00:23
sorear ponders how to integrate the functionality of distutils and autoconf
darbelo sorear: 'dont'?
japhb Don't ponder that too long.
darbelo distutuls already knows that stuff so you don't have to. 00:24
sorear distutils can't tell me stuff like "is vfork available here" 00:25
darbelo sorear: It can be taught to.
If you look at dbm-dynpmcs you'll see it probe gor the gdbm library. 00:26
japhb sorear, Plumage can know anything that Parrot figured out during configure; I'd bet distutils does that as well.
darbelo purl dbm-dynpmcs?
purl darbelo: no idea
darbelo dbm-dynpmcs is gitorious.org/dbm-dynpmcs a set of dynpmcs to encapsulate and abstract the myriad of UNIX dbm-like databases available. 00:27
sorear purl: dbm-dynpmcs is git://gitorious.org/dbm-dynpmcs/dbm-dynpmcs.git
purl ...but dbm-dynpmcs is gitorious.org/dbm-dynpmcs a set of dynpmcs to encapsulate and abstract the myriad of UNIX dbm-like databases available....
darbelo gitorious.org/dbm-dynpmcs/dbm-dynpm...pir#line69 00:28
that sub uses distutils platform knowledge to probe for a library in, excluding the c source, under 10 lines of PIR. 00:29
Oh, and a 10-line helper sub to set up the right linker flags. 00:30
00:32 dngor joined 00:34 workbench joined
darbelo Also, in case you need to build something, look at the stup.pir in decnum-dynpmcs. The 'prebuild' step there builds an external library in under 20 lines of PIR. 00:36
We should *really* put all of this in a big recipe book some day. 00:42
Tene delicious! 00:43
purl well, delicious is social bookmarks; most popular -> del.icio.us/popular/ or crazy or holy crap fmh is a (rich) nutcase or candy. candy is delicious
sorear If I export a dynop named, say, "open", will it interfere with anything? 00:49
darbelo Try it and find out! 00:51
00:55 darbelo left 00:57 cotto joined
cotto Ironically, I was wondering earlier today how long my laptop would last on battery power. 00:59
01:00 Austin joined 01:04 Austin left, Austin joined 01:11 snarkyboojum joined
dukeleto 'ello 01:12
Whiteknight hello duke 01:13
dukeleto cotto: also, i agree about your comment on speed.pypy.org
Whiteknight: howdy
01:37 cotto joined 01:44 theory joined 02:04 parthm joined 02:18 rt7 joined
dalek kudo: 2f19219 | (Solomon Foster)++ | src/ (3 files):
Rough but working implementations of Xop and Zop. (Had to disable X and Z to make this work, alas, but I'm sure we'll work around that shortly.)
02:40
kudo: 366b529 | (Solomon Foster)++ | build/Makefile.in:
Add metaops.pm to the build.
02:50 snarkyboojum joined
dalek kudo: f676705 | (Solomon Foster)++ | t/spectest.data:
Turn on S03-operators/cross-metaop.t, add new S03-operators/zip-metaop.t.
03:08
tracwiki: v2 | Austin_Hastings++ | HLL%20Resources 03:25
tracwiki: trac.parrot.org/parrot/wiki/HLL%20R...ction=diff
tracwiki: v1 | Austin_Hastings++ | Creating%20Closures%20with%20NQP-rx
tracwiki: trac.parrot.org/parrot/wiki/Creatin...ction=diff
tracwiki: v2 | Austin_Hastings++ | Creating%20Closures%20with%20NQP-rx
tracwiki: trac.parrot.org/parrot/wiki/Creatin...ction=diff
Austin Woo-hoo. More nqp bugs 03:31
dalek TT #1510 created by Austin_Hastings++: NQP-rx doesn't create PMC for string // expressions 03:40
dukeleto Rational PMC has a whopping 0.8% test coverage 03:58
Austin Whose PMC is that, ours or Perl's
A better question: who owns the spec for the behavior?
dukeleto tapir2.ro.vutbr.cz/cover/cover-resu...l-pmc.html
looks like the code coverge runs don't have GMP 03:59
Austin Heh
dukeleto talks to mj41 about it 04:01
Austin: not sure about the spec
Austin From the comments in the file it looks like a Parrot thing. 04:02
dukeleto Austin: yes, rakudo implements their own Rat data type
04:13 parthm left 04:47 theory joined 04:50 janus joined
cotto puts on his release pants 05:12
Austin =:-O
One leg at a time, I hope. 05:13
cotto just like everyone else
including MC Hammer
Austin I think he was a "both legs at once" kind of guy..
He just kind of did this Johnny Bravo arm thing, a full-body undulation, and <boop!> he was wearing pants. 05:15
cotto I can't touch that.
Github ate my gist. 05:18
github--
I'll have to use a proper nopaste in the future.
Austin Or something 05:21
purl something is probably really wrong out there :)
sorear cotto: cpan -i App::Nopaste 05:22
cotto we have tools/dev/nopaste.pl in svn
Austin But for some reason you don't want to use it...
cotto I was under the mistaken impression that gists could be edited wiki-style
Austin Ah 05:23
cotto (which would be nice for something like that)
Austin There was a nopaste that allowed that. I thought it was pretty cool, but everybody's hung up on the czech one.
Jesse <something> iv used id. Maybe pastebin?
cotto There must be something wrong with it if everyone's using something else. 05:24
Don't question my logic.
Austin Yeah.
That's what I said about Parrot...
cotto Austin++
Austin Yeah, pastebin allows edits. 05:25
cotto collaborative edits?
Austin I dunno. I think maybe you get a new url 05:26
poundparrot.pastebin.com/W034GNYK 05:31
Make an edit, I dare you.
cotto oic. It creates a new page that reflects the edit 05:34
fulltest is happy. that's a good sign. 05:37
anyone on an interesting platform care to run fulltest? 05:41
05:48 AndyA_ joined
dukeleto runs fulltest on darwin-x86 06:02
cotto It's release time. If you were going to commit to trunk, please hold off. 07:05
dalek rrot: r44951 | cotto++ | trunk/NEWS:
NEWS update for 2.2.0
07:17
07:30 bacek joined
bacek o hai 07:31
Austin shhh... he's releasing...
dalek rrot: r44952 | bacek++ | branches/pcc_hackathon_6Mar10/src/call/pcc.c:
Save/restore old call_object in invoke_sub.
07:33
07:35 fperrad joined
cotto ohai 07:36
07:43 aukjan joined
dalek rrot: r44953 | cotto++ | trunk (8 files):
get ready for 2.2.0 release
07:49
rrot: r44954 | cotto++ | tags/RELEASE_2_2_0:
tagging 2.2.0 release
bacek cotto++ # 2.2.0 07:51
08:00 barney joined
nopaste "bacek" at 122.110.68.107 pasted "The victo^W^W. We almost there. coretest results on pcc_hackatron branch" (8 lines) at nopaste.snit.ch/19960 08:07
cotto bacek, nice 08:08
bacek++
The code part of the release is done. Get back to breaking stuff! 08:11
I'll be sending out the announcements in the morning.
bacek Wow. Even nqp_test passed. 08:12
08:13 iblechbot joined
dalek rrot: r44955 | bacek++ | branches/pcc_hackathon_6Mar10/src/pmc/class.pmc:
Remove hand-crafted fiddling with sig_object in Class.initialize_parents. Use invoke_sub instead.
08:22
rrot: r44956 | bacek++ | branches/pcc_hackathon_6Mar10/t/pmc/eval.t:
Update test to call get_results after invoke.
bacek And now we are here. make test passed in pcc_hackatron branch. 08:23
msg mikehh Can you jump on pcc_hackatron branch for testing purpose? :) 08:26
purl Message for mikehh stored.
cotto bacek, if you have the tuits, tools/util/crow.pir has been broken for a while. 08:28
bacek wtf is crow.pir???
cotto helper script for generating release announcements 08:29
time for me to sleep
not an urgent fix, just a convenience for release managers 08:30
night
dalek TT #1511 created by bacek++: op result_info is broken in pcc_hackatron branch. 08:36
bacek cotto, fixed
good night 08:37
dalek rrot: r44957 | bacek++ | branches/pcc_hackathon_6Mar10/t/pmc/objects.t:
Update test to call get_results after invoke.
08:38
rrot: r44958 | bacek++ | branches/pcc_hackathon_6Mar10/t/op/calling.t:
TODO result_info tests.
rrot: r44959 | bacek++ | trunk/runtime/parrot/library/Config/JSON.pir:
Quick fix for Config::JSON to help cotto++ with release
rrot: r44960 | gerd++ | trunk/docs/pdds/pdd30_install.pod:
add a missing bracket
08:54
09:00 cosimo joined 09:05 lucian joined 09:07 bacek joined 09:08 iblechbot joined
lucian in PDD 15, are parrot roles equivalent to mixins? 09:22
Austin what's a mixin?
purl a mixin is probably multiple inheritance without the inheritance. or the secret superset of functionality that inheritance sub-types
Austin Parrot roles are composed in by adding the methods directly to the class that composes them. So they're not part of the class hierarchy. 09:23
Beyond that, I'm not really sure.
lucian Austin: they sound very much like mixins 09:24
Austin: well, not very much, more like mixins could be easily implemented on top
it also isn't clear to me if objects can add and remove methods and attrs at will 09:25
Austin They cannot.
Objects delegate to their class.
lucian Austin: ouch
then how on earth could python objects be implemented on top of PDD 15?
Austin But the P6object system is built to work around that, I think, by allowing classes to be swapped out dynamically. 09:26
lucian the problem is, in python you can say obj.bar = f 09:27
where f is a function
Austin ...?
purl Yada yada yada hasn't been implemented yet! (unless you run bleadperl)
lucian any object really, but the interesting case is about functions
purl: oooook then 09:28
purl NO AND THEN!
lucian Austin: you can arbitrarily add methods and attributes to classes and objects
Austin Sounds like a custom pmc type for python classes, then.
lucian Austin: it's the same case for ruby, actually
Austin Or a standard one that runs a little slower.
lucian it seems an arbitrary restriction in parrot's object system to not allow this 09:29
Austin Who said it wasn't allowed?
bacek Austin, (quick question) under which licence Close is?
Austin Artistic 2
purl Artistic 2 is compatible with gpl in all versions
lucian Austin: you have to fake it with adding classes or such 09:30
Austin: isn't PDD 15 meant to be an interoperability object system?
Austin Oh, heavens! We wouldn't want to write code, or anything... :)
Let me go have a look 09:31
bacek Austin, thanks. I'm going to "borrow" part of grammar from Close for opsc.
09:31 kurahaupo joined
Austin Bacek: Careful. There's more C++ than you may want. 09:32
lucian Austin: python objects could be built up from raw PMCs, but then you'd never be able use python libs in ruby
bacek Austin, I can strip it off.
Austin lucian: So for instance, how common is it to add methods to an object? 09:33
lucian Austin: you always do that at least in the constructor, there are no declared methods or attributes
Austin Huh?
lucian Austin: methods are simply attributes 09:34
Austin Okay.
Can methods collide with data attributes?
lucian and attributes are never declared
Austin Or is there a single namespace?
lucian Austin: no, one namespace. all attributes are objects and functions are objects
Austin Okay.
And what does "never declared" mean?
lucian again, most of this is true for ruby as well 09:35
Austin Isn't your constructor going to slather on a whole bunch of them?
lucian yes, it's good practice to define them in the constructor
but there isn't anything special about declaring them. you just start using them
Austin Well, you can't start using them until you attach them, can you? 09:36
lucian Austin: yes, that is true
Austin: let me show you a bit of code
Austin Okay
lucian Austin: pastie.org/871699 09:37
Austin okay 09:38
What's what?
lucian it is merely convention to attach attributes in the constructor, it can happen anywhere
right, so def creates a function object
a method is just a function with self as the first argument (nothing special about it at all)
__init__ is the constructor 09:39
self.x is an attribute
Austin So what's bar?
lucian Austin: just a method
Austin What method?
purl method is still not an action
Austin According to you, it's not part of any "A" objects, right?
lucian random method that can be called from somewhere
Austin Because the c'tor didn't attach it... 09:40
lucian Austin: bar and x will be there in all A objects
Austin Ahh
lucian Austin: but you can have another method that attaches y somewhere
Austin So the methods *are* declared, yes?
lucian Austin: not necessarily in the constructor
Austin: methods are attributes. attributes are objects attached to the class 09:41
Austin So I create an A, by doing what? a = new A() ?
lucian Austin: almost. wait, i'll write more code in there
Austin: better? pastie.org/871699 09:44
Austin okay
Now supposing I have another object, 7 eh = A(3)
09:45 AndyA joined
Austin can I, at line 20 or so, use 7 eh.foo() without having to do anything else? 09:45
lucian Austin: no, foo is attached to the object a, not to the class A
purl okay, lucian.
lucian you could attach it to the class as well if you wanted to
Austin How would you do that?
lucian Austin: pastie.org/871699 09:47
Austin: just attach it to the class (classes are also objects)
Austin Okay. 09:48
09:48 bacek joined
Austin I can see how to do that. Probably 200-300 lines of NQP. 09:48
Which means that Pm1chaud could probably do it in the same amount of pir.
lucian Austin: true, but i'd rather i used some common parrot object system if at all possible 09:49
Austin That IS using the common parrot object system.
(aka P6object)
lucian Austin: PMCs are too low level for interoperability between ruby and python
Austin What is that supposed to mean? 09:50
lucian Austin: P6object being the one described in PDD 15
Austin No.
P6object being built on top of the current Object and Class pmcs, however pale a shadow they may be of the PDD15 archetype.
lucian Austin: right, ok 09:51
Austin P6object refers to the P6object.pir file located in the runtime/library
lucian Austin: the problem is, afaict both ruby and python would have to write their own Object and Class pmcs
Austin Why would they have to do that?
lucian Austin: then i misunderstood. wouldn't there be a penalty for faking arbitrary attributes on top of PDD15 09:52
?
Austin Sure.
But how much of a penalty? That I don't know, but it doesn't seem very high.
Suppose you do "A.me = f" 09:53
At that point, are *all* objects of class A, and derived from class A, going to have the new method?
lucian Austin: yes
Austin Oh 09:54
Well that makes things even easier.
lucian Austin: A.me = f is no different from doing a def inside the class definition
Austin You don't have to worry about versioning the class...
lucian Austin: no, no versioning required
it occurs to me that python and ruby's object systems are quite similar. perhaps it would be good to share some code 09:55
Austin Can the a.foo=f syntax override a class-defined method?
lucian Austin: yes 09:57
Austin Changing the subject slightly, what IRC client are you using?
Okay, there's the penalty. 09:58
Right now the method dispatcher caches any names that have already been resolved. So overriding a previously *invoked* method is going to require flushing the name out of the cache. But I've already run into that problem, and there's a relatively recent TT#1497 to fix that 10:00
Beyond that, two or three opcodes to check for a local override on the particular method. 10:01
fetch-object-overrides-hash; fetch-name-from-hash; branch-if-null; tailcall 10:03
4 opcodes.
$P0 = getattribute self, 'overrides' ; $P1 = $P0['foo'] ; if-null $P1 goto call-default; tailcall self.$P1(args...) 10:04
It probably costs more, with the arg unpacking and context wonkery, but it's not that expensive to support even with the TT#1497 bug. 10:05
10:06 smash joined
smash hello everyone 10:06
Austin Hello, smash.
lucian Austin: sorry, i was in the kitchen. i'm using LimeChat 10:07
Austin Let me guess - from your iPhone ? 10:08
:)
lucian Austin: no, i don't have one
Austin: i use a G1 actually
i really don't like the idea of an overrides table
Austin Well, don't feel bad. I don't have one either.
lucian i'm not too keen on the macbook either, but it was a gift 10:09
Austin If you don't like doing overrides, you could store the subs as attributes.
But that's probably going to be slower overall, since everything becomes 7 $P0 = getattribute self, 'foo'; self.$P0(args...) 10:10
lucian Austin: but again, i won't be able to use parrot's sub dispatch, right?
Austin Right
lucian it seems odd to me that python/ruby semantics are so unclean to map on parrot 10:11
i would've expected an object system for dynamic languages
i should speak to the cardinal folks 10:12
Austin: biab
Austin Actually, there's a whole lot of people you should speak to, since I don't know a whole bunch about the design legacy of Parrot. Certainly, Dan Sugalski had to be thinking about Python in the early days, due to the contest. So it's not like you're the first person to ask these questions. But I can't say whether there's been some "bit rot" between that century and this one. 10:16
Also, keep in mind that commit bits are cheap. Just sign a pafo cla, and you can make PDD15 look the way you think it should. 10:17
10:26 mj41 joined
lucian Austin: right. i really think it should be more general 10:28
Austin: i can see that whoever wrote it tried to do that, but they don't seem to have had much knowledge of everything-is-an-object languages
ruby/python's object systems are in fact javascript's, but done right 10:29
(people laud js for being prototypal)
Austin I'll go with Proverbs 17:28 on the design issues. Andrew recently suggested some changes to the way objects work, and was shot down. Perhaps you will have better luck with a concrete proposal based on ruby/python. 10:33
lucian Austin: right. first i have to use ruby some more, i mostly know things about it 10:34
Austin: actually, if parrot's general object system was prototypal, anything could be built on top of that 10:35
smash scheduled monthly release is going out today ? 10:37
Austin Yeah
smash who is making the release ?
Austin smash: Cotto's already committed the code. The admin bits are yet to do
log?
purl o/` it rolls downstairs, alone or in pairs, rolls over your neighbour's dog, it fits on your back, it's good for a snack, it's log, log log! o/`
Austin topic?
purl hmmm... topic is IRC topics don't auto propagate on server reconnect
Austin hmm
smash Austin: great, i'm seeing the revision log.. thks 10:38
Austin Anyway, smash, if you check the irc logs (irclog.perlgeek.de/parrot/today) you'll see cotto was here earlier doing the svn work
smash cotto++ 10:39
Austin: ok, thks 10:45
11:10 cosimo joined 11:56 bacek joined 12:18 lucian joined 12:21 whiteknight joined
Austin Good morning, whiteknight. 12:22
whiteknight hello Austin
12:22 darbelo joined 12:26 cosimo joined
dalek TT #1512 created by Austin_Hastings++: NQP-rx generates bad access code for non-twigiled attribute 12:41
12:41 ruoso joined 12:43 payload joined
lucian hates vdm-sl 13:04
plobsing My schedule prevents me from making #ps, and around now is the last I'll be able to post before it. Do I post to #ps this early? Advice? 13:20
particle plobsing: there's no such thing as too early. post away! 13:22
plobsing particle++ 13:25
13:31 iblechbot joined 13:34 _2x2l joined 13:38 Austin joined 13:48 payload joined
Coke feeback on trac.parrot.org/parrot/wiki/tasksCoke appreciated. (the wiki table there, which should replace BranchDescriptions. 13:48
figured if the main place that is being looked at is the wiki, might as well wikify it and lose the manual formatting.
dalek tracwiki: v9 | coke++ | tasksCoke 13:51
tracwiki: trac.parrot.org/parrot/wiki/tasksCo...ction=diff
13:59 bubaflub joined 14:21 payload joined 14:26 lucian joined 14:28 whiteknight joined
whiteknight good morning again, #parrot 14:37
14:39 davidfetter joined
bubaflub morning, whiteknight 14:49
whiteknight good morning bubaflub
bubaflub is there a problem with tools/util/release.json line 6? 14:52
14:53 patspam joined, theory joined
bubaflub cotto: lines 5 and 6 of tools/util/release.json look like typos to me - are they? 14:56
whiteknight cotto: when is the release happening? 14:59
15:01 theory joined
Coke bubaflub: yes they are. 15:12
bubaflub not just the typo in February, but the date needs to be March 16th, right?
15:15 fperrad joined
Coke bubaflub: presumably that was leftover from last release; it's only used to generate the release announcement, which we've been doing by hand the last few releases anyway. 15:15
but sure, feel free to update it to match the release-in-progress.
bubaflub Coke: ok, fixed in r44961 15:17
15:20 lucian joined, cognominal joined 15:22 lucian joined 15:25 payload joined
dalek rrot: r44961 | bubaflub++ | trunk/tools/util/release.json:
fixed typo in tools/util/release.json
15:25
15:36 Psyche^ joined
Coke opens a bug on Time::Format, whee. 15:46
trac.parrot.org/parrot/log/branches/boehm_gc_2 - is there a way to limit this to a particular author? 15:51
whiteknight do what to who? 15:53
Coke only show log entries committed by <foo> 15:55
particle coke: use cia.vc 15:59
16:01 eggyknap joined
davidfetter hi there, eggyknap :) 16:01
eggyknap waves 16:02
davidfetter trying to figure out how best to frame this issue. eggyknap, any ideas?
eggyknap davidfetter and I are embedding parrot in postgresql, and are under the impression we should use Parrot_ext_call(). The problem is that requires us to know at compile time the functions arguments, which we can't do. 16:03
Suggestions for calling functions whose signature we know only at runtime?
Coke particle: I don't care that much. 16:05
davidfetter anybody got a brilliant idea? or a dumb one i've missed? 16:06
Coke davidfetter: ... can't you just dynamically construct the signature string? 16:07
eggyknap The signature string is easy. But the arguments themselves aren't.
Unless there's some C foo I'm missing, which is quite possible. 16:08
Parrot_ext_call() takes a signature string and a varargs list of arguments
particle coke: is it that hard? cia.vc/stats/author/coke
Coke particle: No. I just don't care enough to go outside of trac. 16:09
plus that isn't what I asked for. =-)
particle i must have missed some context, sorry.
Coke (I want to restrict an existing log report by author.)
particle in trac. ah.
Coke not find every commit by that author.
davidfetter looks around for a C-fu sifu
bubaflub Coke: i know there is someway to do that in trac and even get a custom RSS on an existing log report, but i'm at a loss of how to do it 16:10
the code makes it look like you could pass ?authors=foo
but it's not working
Coke bubaflub: if you figure it out, lemme know, but don't kill too many brain cells.
bubaflub maybe i can just pop over into #trac
Coke eggyknap: IANACP, but that seems tricky. stackoverflow.com/questions/280940/...ynamically has some discussion.
particle ...save them for beer.
eggyknap Coke: Per one commenter, "There is no portable way to build up an argument list for a variable argument function in C at run time." 16:12
Coke eggyknap: I wonder if we could take a container PMC or something and let you use :flat.
but that is more C than my poor brain can deal with. I'd probably ask on list.
particle: it's for: trac.parrot.org/parrot/wiki/BranchDescriptions, to make the authors clickable. 16:13
so, only a nice to have.
whiteknight Austin: ping
eggyknap Coke: I was hoping I could convince the folks involved in designing all this stuff to accept something precisely like that.
eggyknap will compose a list message 16:14
Coke eggyknap++
particle coke: nice! you could make the creator clickable by pointing to the commit that created the branch
heck, created/updated could be clickable too...
dalek rrot: r44962 | coke++ | trunk/tools/dev/branch_status.pl:
generate wiki friendly output by default.
Coke particle: update tools/dev/branch* for the non-human path. =-)
(I saved it out to a file and then just cut and pasted it into the "edit this page" window.) 16:15
particle so this isn't running on the server, it's human-updated?
Coke it's not a trac plugin, no. 16:16
particle ok
Coke Certainly could be, though. Just costly to create.
also, I have no idea how to make a trac plugin, but I can make perl print things. 16:17
particle i have no idea how either
dukeleto 'ello
particle coke: do we have yui or jquery on the server? 16:18
that list could become sortable
Coke particle: "which one"? and probably not.
(i'd go extjs myself, assuming their licensing is compatible with pafo) 16:19
bubaflub afternoon dukeleto
davidfetter dukeleto, got any insights into what eggyknap's asked about
?
dalek tracwiki: v32 | coke++ | BranchDescriptions 16:20
tracwiki: update to wiki format.
tracwiki: trac.parrot.org/parrot/wiki/BranchD...ction=diff
Coke does opensolaris ship with a sun cc, or is it gcc on the open platform? 16:22
Coke realizes he knows a local sun vendor and asks them. (er, oracle.) 16:23
whiteknight Coke: I think opensolaris shipped with suncc 16:24
NotFound Oracle after sun X-) 16:25
Coke bubaflub: if you track that down, it would be super helpful to have it for the timeline, also. 16:26
(for preparing for #parrotsketch reports)
bubaflub guy on #trac is saying we could do that with reports
but not with the timeline view
Coke what if we go "wah" ? =-) 16:27
Would a patch be accepted? I'd be happy if it was a just something a clever person could tack onto the URL.
bubaflub now he's saying that the ?author=foo should work 16:28
hmmm 16:29
maybe in a config?
i'll work on it with #trac people and get back to you
Coke I've tried..... danke!
(we might have an old version of trac, too.)
happy to get it upgraded for this, though. =-)
bubaflub nah, we've got 0.11.6
which was the version he was referencing
dukeleto davidfetter: i am catching up on backlog. what are you asking about? 16:31
bubaflub: howdy! 16:32
davidfetter dukeleto, eggyknap asked :)
bubaflub dukeleto: how goes the GSoC process?
davidfetter it's basically about deferring knowledge of PL/Parrot param types until run time
16:33 he_ joined
he_ Latest attempt at build on NetBSD/macppc (powerpc) 5.0: ./src/pmc/lexinfo.pmc:151: failed assertion 'v_type == enum_hash_int' while doing " ./parrot runtime/parrot/library/PGE/Perl6Grammar.pir --output=compilers/pge/PGE/builtins_gen.pir compilers/pge/PGE/builtins.pg" 16:34
Coke reminder, DAYLIGHT SAVINGS TIME HAS HIT. 16:36
(in the us)
(This puts #ps at 16:30 Eastern) 16:37
(someone should hit the list to remind folks) 16:39
16:41 theory joined
whiteknight damnit 16:45
bubaflub Coke: ok, so here's the lowdown on the trac business 16:49
the vanilla install of trac doesn't have what you are asking for, but apparently the debian package has a set of patches it somehow is in there 16:50
nopaste "he" at 158.38.152.119 pasted "end of log + stack trace of recent failed build on NetBSD/macppc 5.0" (119 lines) at nopaste.snit.ch/19967 16:51
he_ Doing a build on NetBSD/i386 4.0 at the moment with a "&& gmake smoke" at the end, so if it succeeds it'll show up there. However, now time for dinner. 16:53
bubaflub Coke: but apparently those patches are on trac's trunk 16:54
so i'm guess 0.11.7 (the next version) will have what you are asking for
dukeleto bubaflub: the goog is looking at org apps and will let us know who is accepted by 18. March
bubaflub i imagine the goog as the evil all-seeing eye from the lord of the rings 16:55
he_ Nah, didn't work that either: "Unknown PMC type to thaw 29807" followed by "current instr.: 'parrot;PGE;Perl6Grammar;Compiler;__onload' pc 24 (runtime/parrot/library/PGE/Perl6Grammar.pir:76)" 16:57
whiteknight he_: Do you have an installed Parrot library on your system? 16:59
dalek parrot: df4ea0a | (David Fetter)++ | Makefile:
Fixed per discussion here: justatheory.com/computers/databases..._pgxs.html
17:26
website: cotto++ | Parrot 2.2.0 Released! 17:27
website: www.parrot.org/news/2010/parrot-2.2.0
davidfetter cotto++ :)
dukeleto cotto++ 17:29
Austin whiteknight pong 17:30
whiteknight Austin: today's tax day. Need any help paying it? 17:31
Austin Heh. I'm sure it is.
Is the release out yet?
tagged, test
whiteknight Starting this release, I'm going to try and standardize Parrot-Linear-Algebra to following the latest supported release instead of tracking head
Austin *test=etc
Dare to slack! 17:32
whiteknight I ran into a problem yesterday where PLA was building against a particular rev, but I was getting test failures for Kakapo at that same rev
Austin Ruh roh
whiteknight so I decided it may be time to chill out with my incessant updating 17:33
17:33 riffraff joined
dukeleto whiteknight: yeah, sounds reasonable 17:34
riffraff: welcome
Austin Well, it seems there is a 2_2_0 release tagged.
riffraff hei
dukeleto cotto: is it safe for people to nuke trunk from orbit yet?
Austin Check the logs for about 0300 EDT this morning. I think he claimed he was done. 17:35
dukeleto: irclog.perlgeek.de/parrot/2010-03-16#i_2107914 17:36
dukeleto cotto: it seems that way, but I like to be sure :) 17:37
cotto dukeleto, quite
moderator #parrot Parrot 2.2.0 Released! | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Tasks: Fix HLL bugs! Fix and test corevm target! 17:37
dukeleto Austin: but yes, you appear correct 17:38
Austin Besides, you tested your commit, right?
whiteknight I'm going to finish my testing updates for PLA soon, then give all the same treatment to PDS
I would like both to be targetted towards supported parrot releases 17:39
particle cotto: oops! "Parrot 2.0 Released!" 17:40
Austin Great news! I just got an email announcing the release of Parrot 2.0
Drat.
dukeleto whiteknight: i should probably only target supported releases for PL/Parrot, but there are so many holes in the embedding API => have to track trunk 17:41
whiteknight dukeleto: yeah, tracking trunk has it's advantages. I've done it with some of my projects quite successfully until now
but the interfaces I rely on are satisfactory for now 17:42
so it's time to drink the damn deprecation policy koolaid and follow supported releases
Austin Yowza! Putting all the command line args on display really gives a workout to the scroll buffer.
cotto headdesk 17:44
purl *thunk*
cotto the roadmap needs to be reviewed and I need to learn the difference between 2.0 and 2.2.0, but that's it for the relese. 17:46
*release
. o 0 (not my day)
Austin Hmm.. maybe the coffee / fish-oil intake ratio needs to be adjusted on Cotto...
whiteknight cotto++ (you're a rock star anyway) 17:47
cotto I'm glad I'm not running any heavy equipment today.
other than my car, which still makes me nervous. ;)
Austin Hey.. from heavy equipment operators we don't expect smart...
cotto bacek++ for being the one to finally fix crow.pir
cotto goes off to word 17:48
work
sigh
Austin Hmm... 7 if @!elements.elems { ... } (what's wrong with this symbol name...) 17:49
whiteknight ...?
purl Yada yada yada hasn't been implemented yet! (unless you run bleadperl)
whiteknight purl forget ...
purl whiteknight, I didn't have anything matching
whiteknight purl forget ...?
purl whiteknight, I didn't have anything matching
whiteknight damnit
purl forget yada yada yada
purl whiteknight, I didn't have anything matching yada yada yada
whiteknight >:(
whiteknight grabs an absurdly powerful magnet, intent on teaching purl a lesson 17:50
17:51 fperrad joined 17:52 rt7 joined
Austin purl? 17:54
purl Austin?
Austin Hmm
Here's a gravatar for purl: cyanatrendland.com/wp-content/uploa...mpbell.jpg 17:55
I think needles courtesy of bacek...
Hmm.. I think install is broken. 17:58
Okay, install-dev requires docs, which fails when I build it as root, but works as austin. (Network filesystem...) 17:59
whiteknight Austin: www.geekologie.com/2008/03/25/killer-robot.jpg 18:00
Austin More dalek than purl, I hope.
whiteknight Austin: www.craphound.com/images/freerobotsex.jpg 18:01
either way is fine
Austin lol
Anybody else get their (US) census forms yet? 18:02
davidfetter yeah
bubaflub my roommate said it came in the mail yesterday
Austin Yeah, that was easy.. 18:03
Who lives here? One old white dude. OKTHXBYE
Whiteknight: my working copy just started failing t/Program, but that could be me screwing something up. Can you do a test on 2.2 and let me know what you see? 18:09
whiteknight I will in a minute. I had to shut down my VM for a bit because my CPU is maxed 18:10
Coke note to parrot release managers: you probably want to join the parrot-users list. =-)
cotto_work and get lots of sleep before releasing
Austin I'm on parrot-users, and I don't see much traffic. 18:11
All the cool kids are on -dev...
whiteknight I think I'm on parrot-users too
Austin But maybe cotto's mail to the list bounced, or sth
Coke (goog as sauron) that idea is not without merit, esp. if you read the silmarillion. =-)
Austin: his mail is held up by admin, which is why I mentioned it here. =-) 18:13
18:13 eggyknap left
Coke cotto_work: want me to just kill it since it's the wrong release anyway? 18:13
cotto_work sure
though only the subject is wrong
Coke ... your call. I can approve it, np. 18:14
cotto_work I'll resent to parrot-users (and join) when I get home tonight 18:15
Coke k
cotto_work *resend
I can't win.
Coke dropping... 18:16
18:16 hercynium joined
Austin Q: What does a call to 7 Path.new( "" ) produce? (empty string) 18:24
18:25 Andy joined
Andy icc support? Where have I been!??! 18:25
Austin Don't get too excited. It's not supported in the logs... 18:26
Andy I don't understand "in the logs".
Austin irclog?
purl i guess irclog is irclog.perlgeek.de/parrot/today
Andy oooooh, look at all those beautiful ICC warnings. 18:27
Austin Damn, why couldn't I remember that when Smash was asking this morning...
What warnings?
purl somebody said warnings was just a magical bitmask, iirc
Andy missing returns, for one.
Austin ?
In padre, or something else?
whiteknight Andy: there used to be a LOT more ICC warnings 18:28
Andy mo be betta
Austin Oh.
Never mind.
Wrong icc.
whiteknight Andy: it's a work in progress, but we're building, passing all tests, and have relatively few warnings
Andy I worked on icc a bunch a year or so ago
cotto_work how many things called "icc" are there? 18:29
Austin intel c compiler
irc color coding
NotFound icc?
purl icc is international color consortium and is at www.color.org/ or Interface Chaise-Clavier (problĆØme d') or Intel C Compiler
Andy There are MANY more icc flags we could be using.
A new couch project for me!
Austin I never heard of the Chaise one.
japhb How long until #ps? 18:30
dukeleto japhb: 2 hrs, i think?
18:30 payload joined
cotto_work 120m 18:30
japhb OK, cool.
thx
Coke Andy: ping me if you have any questions on the new config/auto/warnings.pm 18:31
Andy ok
Austin Ahh 18:32
ICC = PEBKAC
Coke PEBAKAC.
Andy I saw at least one invalid flag getting passed to icc.
but I don't have time to mess w/it now.
-Wdeclaration-after-statement specfiically 18:33
Austin Isn't that what Fermat said?
Andy ok, that's pretty cool, Coke.
the way you have the flags set up. 18:34
where each filename is, I assume, an exception.
Coke odd, I don't see that one.
Andy: yes.
replaces the old "CFLAGS" file.
Andy Can't you qw() with filenames?
Coke instead of having icky manual list refs? sure. 18:35
Andy ok 18:36
just surprised you don't.
Coke pretty perl code was not my focus on that refactor.
Andy understood
Coke I don't see that warning being setup for icc. wonder where it's sneaking in. 18:37
Andy Dunno, I don't see it either.
whiteknight Andy: Improved ICC support and better/decreased warnings would always be a good thing
Andy yup, I'm all over it 18:38
at some point
18:38 hiroy____ joined
Andy in my copious free time 18:38
Coke whee.
Andy when I'm not creating presentations for POSSCON (posscon.org)
whiteknight take your time. the compiler is definitely not too popular
Andy but it's a useful tool with different warning than GCC
whiteknight I really like it's optimization potential, however
yes
Andy I see each different compiler as a different lint.
whiteknight I like to use it sometimes
Coke ack suggestion: an option to ignore svn:ignored files and/or only search files under version control. =-) 18:39
Andy github.com/petdance/ack/issues
Coke ok. as long as it's not a "no way", happy to open an RFE. 18:40
Andy++
Andy It'll be a plugin, to be sure. :-)
but that throws a whole new wrinkle into what plugins might be.
Coke GITHUB-- 18:43
(just ate my ticket.)
nopaste "Whiteknight" at 70.91.57.213 pasted "kakapo test output at Parrot2.2.0 for Austin++" (74 lines) at nopaste.snit.ch/19968 18:44
Austin whiteknight++
I think I've got fixes for most of those in the queue. 18:45
whiteknight Lucy! You've got some es'plainin to do!
push them in and I'll test them out
Austin No guarantees that things will improve ... 18:46
I've broken some other stuff in the interim. That said, here it comes.
18:48 kurahaupo joined 18:51 theory joined
Austin Okay, it's up. Should be some test failures in the new files, but you can ignore them (MockFS and Path). Let me know what t/Program does for you, and any others that fail. 18:52
Andy do commits not get posted here any more? 18:53
dalek kapo: 878c57d | austin++ | (10 files):
Added FileSystem.nqp, Path.nqp. Completed use case #1 on ticket

Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
kapo: 307f322 | austin++ | (16 files):
Added "auto_accessors" to P6metaclass.nqp; Added MockFS.nqp and Path.nqp, neither of which currently work. :( Got rid of Pmc/File.nqp.

Fixed issue #12: Create a Mock FileSystem
Andy kakapo? 18:54
purl kakapo is a program framework, runtime library, and collection of useful functions for NQP programs.
Austin purl, no Kakapo is a program framework, runtime library, and collection of useful functions for NQP programs. See code.google.com/p/kakapo-parrot/ for documentation and issue tracking, or gitorious.org/kakapo for source code. 18:55
purl OK, Austin.
Austin kakapo? 18:56
purl somebody said kakapo was a program framework, runtime library, and collection of useful functions for NQP programs.
Austin Kakapo?
purl it has been said that Kakapo is a program framework, runtime library, and collection of useful functions for NQP programs.
Austin heh
cotto_work kakapo is also See code.google.com/p/kakapo-parrot/ for documentation and issue tracking, or gitorious.org/kakapo for source code. 18:57
purl okay, cotto_work.
dalek rrot: r44963 | petdance++ | trunk/config/auto/warnings.pm:
removed quoting on filenames, using the qw() syntax instead
rrot: r44964 | petdance++ | trunk/config/auto/warnings.pm:
fixed spelling of -Werror=implicit-function-declaration
cotto_work kakapo?
purl i heard kakapo was a program framework, runtime library, and collection of useful functions for NQP programs. or See code.google.com/p/kakapo-parrot/ for documentation and issue tracking, or gitorious.org/kakapo for source code.
Austin cotto_work++
Thanks.
cotto_work np 18:58
Andy WHO LOVES A GOOD STAFF MEETING? 18:59
whiteknight Austin: t/program.t sees to have hung 19:00
t/Program.nqp
Austin Excellent! That's the same problem I sometimes have.
Kill it and retry
whiteknight already doing that
Austin That makes it a pir+ problem, instead of a platform problem. I can solve that. 19:01
whiteknight it done hung again 19:02
dukeleto Austin: kakapo seems to be getting really useful. Nice work. 19:03
Austin Thanks.
whiteknight Austin: When I run t/Program.nqp without the harness, it works quickly and perfectly every time
...no, wait
Austin jej 19:04
whiteknight hung again
Loading ./library/kakapo_full.pbc
1..9
Austin Did it well you what test it was running?
whiteknight Running test: test_exit
ok 1 - Calling global exit() immediately ends program
Running test: test_from_parrot
ok 2 - test_from_parrot
Running test: test_global_at_start
ok 3 - test_global_at_start
Running test: test_global_at_exit_fails
^^
Austin nopaste?
purl i heard nopaste was at nopaste.snit.ch/ (ask TonyC for new channels) or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others) or gist.github.com/ or paste or gtfo or tools/dev/nopaste.pl or trac.parrot.org/parrot/browser/tru...nopaste.pl
whiteknight I just dumped it to the channel
Austin I know.
That was a reminder.
whiteknight I'll remind you 19:05
...doesn't sound nearly so menacing over the intertubes
Austin Crap. 19:06
whiteknight I'm also seeing intermittent failures in other tests too
# Registered program should have no problems with at_start global
dukeleto msg plobsing your comments/thoughts on my recent email to parrot-dev about Parrot_ext_call_cb would be greatly appreciated
purl Message for plobsing stored.
Austin That test has got some kind of special-global-foo handling already.
No doubt broken.
whiteknight # Registered program should have no problems with at_exit global
(and those two failures happened in separate test runs)
and this time it hung here: Running test: test_global_at_start_fails 19:07
Austin So probably some kind of registration/deregistration problem.
Frabjous.
I'll look at it later.
whiteknight well, on the bright side it is failing at failing. So maybe it's working extra good now?
Austin Wow.
The future's so bright, I gotta wear shades... 19:08
whiteknight haha
Austin (name the band?)
whiteknight no idea
Austin Tim-buk-three
www.youtube.com/watch?v=wvIAyxpjEuc 19:09
Gotta love the one-hit wonders... 19:12
19:14 payload joined, chromatic joined
Coke no kakapo? 19:16
purl hmmm... no kakapo is a program framework, runtime library, and collection of useful functions for NQP programs. See code.google.com/p/kakapo-parrot/ for documentation and issue tracking, or gitorious.org/kakapo for source code.
Coke (you want "no, foo is", not "purl, no foo is")
Austin Thanks, coke. 19:17
I had reached the conclusion that purl was just one more gal that I wasn't smart enough to communicate with...
Coke purl, austin? 19:18
purl austin is nice. or a city in Texas. or Mr. Hastings, if you're nasty.
whiteknight you're a city in Texas? 19:20
19:20 kurahaupo joined
cotto_work Don't mess with Austin. 19:22
whiteknight ...did the PCC branch get completely fixed? 19:26
cotto_work bacek++ is to blame for that 19:27
whiteknight goddamn bacek++! Always fixing shit and doing awesome for the good of the Parrot community. Who the hell does he think he is?
cotto_work bacek? 19:28
purl bacek is THE MANIAC or some sort of magical coding robot
cotto_work ^
chromatic Hey, some other people fix things too! 19:29
whiteknight chromatic++ # We love you too
19:30 bacek joined
whiteknight now I don't need to swoop in to save the day, and show you guys how a real programmer does things 19:30
:)
no, I was looking at those failures yesterday and I was lost
cotto_work and I don't need to swoop in and make things worse ;) 19:31
chromatic There were really only two classes of bugs, and we knew what both were, even if we didn't know the right fixes. 19:32
Coke I am tempted to just merge branches/pirc_config back to trunk.
(adds a mostly-do-nothing option for Configure.pl --pirc)
cotto_work We've just had a release. Merge away! 19:33
Coke I'd rather it was tied to something that enabled pirc. =-) 19:34
19:36 iblechbot joined
whiteknight Coke: I would merge it before it becomes bitrotten, or delete it 19:36
chromatic: okay, with pcc out of the way, which branch to focus efforts on now: tt389_fix or fix_hll_mmd? 19:37
can't do both, my simple brain produces weird cross-commits
chromatic TT #389; it has to be close.
whiteknight okay, will do
There are a few other tickets that are going to be resolved shortly afte TT #389 lands 19:39
we should probably sponsor some kind of ticket crawl to weed out things that are either already fixed or extremely easy to fix after these branches land 19:40
bubaflub whiteknight: +1 to that
Coke I try to do that once a month or so.
whiteknight we should all be more like Coke
ah, I forgot the tt389_fix branch was pre-makefile-cleanup 19:42
Coke so's the pcc branch. =-)
chromatic Yep, fun merge from trunk time.
tewk Has anyone written a pir parser in nqp-rx? 19:43
Coke ttbot?
purl ttbot is TapTinder build bot owned by mj41 and reporting tt.taptinder.org/buildstatus/pr-Parrot/rp-trunk build errors.
whiteknight tewk: no, not yet
bacek morning 19:44
whiteknight I think NotFound had one he was working on in Winxed
bacek tewk, github.com/bacek/pir
chromatic bacek, we need to figure out how to reuse a CallContext for returning, when possible.
Coke smolder went red on winders.
(ttbot seems fine, though) 19:45
tewk 's law of vm implementation, get rid of all the C code. :)
bacek chromatic, no way.
Austin tewk++
chromatic Impossible or difficult or you don't want to do it?
whiteknight chromatic: is there any different? 19:46
dalek rrot: r44965 | petdance++ | trunk/src/pmc/orderedhash.pmc:
localizing and consting. Removed an unused auto variable. Removed ancient docs.
whiteknight sufficient dis-motivation is an impossible roadblock
chromatic There are many differences.
Austin For instance, "I don't want to do it" can sometimes be remedied by "We'll fedex you a box of donuts if you do" 19:47
bacek chromatic, impossible afaiu. Almost same problem as ref-counted Contexts.
whiteknight bacek: why impossible? We have the CallContext at the point of the return invoke. Can't we just clear it and repopulate it? 19:48
19:49 joeri joined
bacek hang on a second. 19:49
We _do_ reuse existing Context in set_results/returncc
whiteknight oh. good 19:50
chromatic Per my profiling, we create twice as many of them as we did before.
bacek ah, my bad.
wrong branch
Coke svn slooooow
cotto_work git is fast 19:51
whiteknight chromatic: looks like about 29 failures in tt389_fix branch 19:52
and there are some common themes here 19:53
I immediately suspect RO PMCs are broken. Doing a type lookup and getting the PMCProxy will return the proxy without all the methods in it
so we need a way to either share proxy or link together the RO variants to the regular ones
chromatic Ah, makes sense. 19:55
whiteknight I don't think PMCProxies are inheriting methods from their parents either. We need to decide whether we want to lookup methods in the MRO, or whether we want to make static copies at PMCProxy creation time
chromatic They should inherit methods.
whiteknight if (PMC_IS_NULL(meth)) return VTABLE_find_method(INTERP, attrs->parents, meth_name); 19:56
chromatic That should work.
Austin For instance, "I don't want to do it" can sometimes be remedied by "We'll fedex you a box of donuts if you do" 19:57
ww
whiteknight chromatic: you can hack those ideas in if you want, I'll play with them later tonight when i get home otherwise 19:58
19:58 AndChat| joined
NotFound whiteknight: I had one what? 19:58
chromatic That should be pretty quick, but we'll see how much time I have today. 19:59
Austin, the Krispy Kreme down the street has its two dozen for $14.99 sign up.
Coke chromatic: do you like donuts?
NotFound Oh, the pir parser... Yes, but is far from being complete. 20:00
Austin It's like crack... the first 2 dozen are free...
chromatic I've eaten a doughnut or two in my life. Voodoo Doughnuts... maple bars with bacon.... 20:01
20:01 allison joined
Austin mmm..bacon 20:01
20:01 theory joined
Austin And yet, it sounds so wrong... 20:01
chromatic I've even recommended it to a Detroit Piston.
allison bacon is the new pony 20:02
Austin is conflicted.
chromatic Though now that does undermine my argument somewhat.
Austin And Bycon is the new pynie?
allison bynie
Coke hurm. I would chip in for a KK gift card, but the page is nonresponsive.
probably a post-donut sugar high.
bacek chromatic, try r44966
dalek rrot: r44966 | bacek++ | branches/pcc_hackathon_6Mar10/src/ops/core.ops:
Reuse old CallContext in set_returns
bacek yeah, this one :) 20:03
whiteknight bacek: you're right, that does look impossible 20:04
:)
Austin Do they even have donuts in Bacek-ville?
bacek clock?
purl bacek: LAX: Tue 1:04pm PDT / CHI: Tue 3:04pm CDT / NYC: Tue 4:04pm EDT / LON: Tue 8:04pm GMT / BER: Tue 9:04pm CET / IND: Wed 1:34am IST / TOK: Wed 5:04am JST / SYD: Wed 7:04am EST /
bacek Nothing is possible before 7am and first cup of coffee! 20:05
cotto_work #ps in 25
Austin Or maybe we have to send him a "Royale with cheese"
Nope. KrispyKreme.com.au is up and running.
chromatic That's better, 6.609% faster than before. 20:06
whiteknight faster than it was in branch, or faster than trunk? 20:07
bacek whooo-hoo
Any other obvious bottlenecks?
allison cotto: ah, I was just wondering. I guess my calendar auto adjusted with daylight saving time again
chromatic Faster than it was on branch.
Let me see what the profile says.
whiteknight it would be nice if this branch didn't hurt overall performance too much 20:08
I feel like it should be a wash, but that's just wishful thinking 20:09
chromatic We still create almost twice as many CallContext PMCs as we did before.
whiteknight where "before" is in trunk?
chromatic ... as we do on trunk, anyway.
whiteknight ok
what's the cause of that increase?
chromatic Not sure. 20:10
Trunk has some improvements we might pull in anyway.
whiteknight are PMC METHODs reusing the context too?
chromatic Good question.
purl Yeah, it is. I'm stumped.
whiteknight that's because you're a stupid robot, purl
purl whiteknight: excuse me?
whiteknight you heard me
chromatic new_ret_continuation_pmc also creates a new CallContext.
20:11 allison_ joined
whiteknight ...why? 20:11
chromatic Let me refer that question to my distinguished colleague in Australia, who is perhaps fixing this as I hit Enter.
Austin How expensive is that creation? 20:12
whiteknight the chatroom recognizes the gentleman from Australia
Austin Would it make sense to make the CallContext be a two-part object?
chromatic Once per PIR function invocation.
whiteknight Austin: individually, not bad. But it's for every Sub call
20:12 lucian joined
whiteknight and do tailcalls share the same CallContext as the parent? 20:15
Austin I didn't see why you couldn't re-use them, but if there is a reason, then probably not.
20:15 davidfetter joined
cotto_work I'm only seeing code in new_ret_continuation_pmc to create a new RetContinuation. 20:15
whiteknight Austin: I suspect they should always be reused
cotto_work in the pcc branch
chromatic Hm, that's what the call graph shows though. 20:16
whiteknight Does RetContinuation.init create one? 20:17
cotto_work is that a optimized parrot?
whiteknight, doesn't appear to
chromatic Yes, an optimized build.
dalek rrot: r44967 | bacek++ | branches/pcc_hackathon_6Mar10/src/call/args.c:
Simplify merge_signature_for_tailcall. We don't use returns storage anymore.
20:19
rrot: r44968 | bacek++ | branches/pcc_hackathon_6Mar10/src/call/args.c:
Remove csr_foo functions.
chromatic Maybe it's all from Sub's invoke().
whiteknight dominos falling like a house of cards - Checkmate! 20:20
chromatic Parrot 2.4 "Velour" Released! 20:21
bacek chromatic, try again at r44969 :) 20:24
dalek tracwiki: v51 | cotto++ | ParrotQuotes 20:27
tracwiki: trac.parrot.org/parrot/wiki/ParrotQ...ction=diff
whiteknight bacon? 20:31
purl bacon is, like, the pig's belly meat or xkcd.com/418/ or www.gratefulpalate.com/?p=Category_11 (Bacon of the Month Club) or nobodyscores.loosenutstudio.com/comix/bacon.gif or *meat candy* or www.facebook.com/pages/Bacon/43455991284
chromatic bacek, r44969 is 13.279% faster than r44965. 20:35
dalek rrot: r44969 | bacek++ | branches/pcc_hackathon_6Mar10/src/ops/core.ops:
Use _caller_ Context in set_returns instead of current one.
chromatic It's about 3.8% slower than trunk.
rrot: r44970 | bacek++ | branches/pcc_hackathon_6Mar10/src/pmc/coroutine.pmc:
Fix compiler warning
rrot: r44971 | bacek++ | branches/pcc_hackathon_6Mar10/src/pmc/callcontext.pmc:
Remove storage for returns from CallContext
bacek chromatic, hmm... 20:36
I'll take a look.
chromatic Trunk has a couple of improvements since the branch point though.
allison bacek: but set_returns is supposed to use current context
bacek try 44971. It should be 0.5% faster. 20:37
allison bacek: current context is the call context, which is where returns are extracted from
bacek allison, it use current context for values. But reuse caller context for store them.
allison bacek: that doesn't work if a sub is returning to a different context than called it 20:39
chromatic bacek, about 0.626% faster.
bacek allison, make test passed. Just because tailcall update caller's signature.
chromatic, we have to find other 3%... 20:40
chromatic Let's merge from trunk first.
allison bacek: is the change for speed?
whiteknight don't merge from trunk
here there be dragons!
bacek allison, 13%
whiteknight 13% faster? 20:41
bacek (according to chromatic's benchmarks)
<chromatic> bacek, r44969 is 13.279% faster than r44965.
20:42 allison_ joined
chromatic Trunk is somewhere around 3.1% faster than the branch now. 20:42
allison_ bacek: but overwriting the callers context is going to come back and bite us later
chromatic We need tests for it then. 20:43
allison_ chromatic: no objections there
bacek allison_ we don't override context. We override context->signature (which is different Context) 20:44
allison_ bacek: context-> signature when context is the callers context is the same thing as the current context
whiteknight and that signature information isn't neede for anything else?
allison_ caller->signature == CURRENT_CONTEXT(interp) 20:45
20:45 kjeldahl joined
allison_ one thing we desperately need is to clean up the code so the naming actually matches the way it currently works 20:46
bacek allison_, erm... May be. We don't have any asserts in code to check this invariant.
allison_ bacek: well, it's not necessarily an invariant, you can monkey around with it
allison bacek: but, when you *do* monkey around with it, the safe one to use is CURRENT_CONTEXT(interp) 20:47
(from inside the sub)
whiteknight allison: we don't really have any cases now where we aren't returning to the caller. Maybe we leave in the cheat with a TODO note, and find a way to make up the performance hit later
bacek Agreed. But it was in op set_returns. 20:48
20:48 elmex joined
allison bacek: are you sure that change gave the 13% speedup? since it seems to be a non-change? 20:48
bacek: were there other things changed in that commit?
whiteknight that's actually a good question.
can we double-check the numbers?
bacek allison, it is change. Before we always create new CallContext in set_returns (by passing NULL into build_sig) 20:49
allison bacek: ah, *that* the fix
chromatic I've double checked the numbers.
whiteknight chromatic: os using the caller's context there instead of the current context is a 13% gain? 20:50
I
'm not sure how that adds up
allison whiteknight: no, it's reusing the callcontext object
chromatic It's reusing, not creating new.
whiteknight so why doesn't it reuse the current context?
allison bacek: set_returns is supposed to pass in the current call context to reuse it 20:51
bacek: (so that call args and return results use the same object)
bacek allison, if context->caller->signature == context than current code do exactly this. 20:52
allison bacek: that preserves encapsulation in the call, safer for concurrency, and for optimizations
bacek: except it has an extra layer of indirection that may not always be right
bacek: but, that's a quick fix
chromatic Hm, if we know how many registers the return needs and how many the invoke needs, we can always allocate the right size for register storage. 20:53
allison bacek: and won't harm the speed gains at all
whiteknight chromatic: in the fixed_size_pools, how do we grow strings in place?
chromatic We don't, but that was always a realloc anyway.
bacek whiteknight, it usually allocates more memory than requested. And then reallocate it. 20:54
20:54 allison_ joined
allison_ chromatic: we don't know the return signature when the context is created, but that doesn't matter 20:54
whiteknight we would need to realloc the arena and then move the arena to the correct sized pool
allison_ chromatic: because, inside the sub, the returns are just ordinary variables or constants 20:55
chromatic The caller side knows how many return registers it wants.
bacek and they already allocated
allison_ chromatic: it's back in the calling sub (the .param side for returns) that we need to predict the allocation
bacek: right
chromatic: but there, we have the advantage of declared return signatures 20:56
chromatic yes, we do now! 20:58
Coke update your gravatar!
whiteknight We can take a shortcut if the continuation being invoked is a RetContinuation
in that case, we know we are returning to the caller, and we can monkey with the caller's context 20:59
otherwise, we can do something harder and slower
moderator #parrot Parrot 2.2.0 Released! | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Tasks: Fix compact_pool shenanigans | Fix HLL bugs (TT #389, #1040) | Prioritize Rakudo Needs 20:59
allison whiteknight: it's safer if the caller does the monkeying with the caller's context, and not much slower 21:01
whiteknight: the mistake the old system made was lots of deep knowledge on each side of the call into the other side of the call 21:02
whiteknight: which doesn't work well when either side could be PIR code, C code, NCI code, etc
Coke I have to take off. Adios. 21:13
21:17 snl joined
Austin given that I have a multi-method defined with three signatures, two of which are (_, _) and (_, String), what is the expected behavior of calling $P112."append"("a") from pir? 21:25
chromatic Naively I expect (_, String) as the appropriate candidate. 21:27
Austin Me too.
And yet, I'm getting the error message behind door number (_,_) instead.
Which I how I come to ask... 21:28
Is the string type <= 0? 21:29
chromatic -98, I think. 21:30
What if you decapitalize String? 21:31
Austin Yeah.
I think the test at multidispatch.c:788 scores the _ (PMC) as the same score as String 21:32
21:32 jrtayloriv joined
Austin If I decap String -> string, I get failures earlier, where apparently that sort of thing isn't supported. 21:33
It seems obvious that distance 0 (string == string) would beat 1.
chromatic Agreed.
jrtayloriv Who would I talk to about getting my commit access revoked? I'm not planning on doing any active work in the forseeable future, and don't want an inactive account sitting around for security. 21:34
chromatic We've never worried about such security before. 21:35
jrtayloriv ok, no problem then. I know that some people do. Thanks.
Austin Is this a bug in the scoring algorithm, that string->String scores the same as string->PMC ? 21:36
(Assuming that they score the same, that is.)
Whoops. Dinner time. 21:37
chromatic They shouldn't score the same; autoboxing a primitive into the appropriate PMC type costs one unit more. 21:40
I know that to be true, because I wrote that code.
dalek rrot: r44972 | bacek++ | branches/pcc_hackathon_6Mar10/src/call/args.c:
Remove unused "new_sig" in build_sig_from_op
chromatic bacek, within 2% of trunk now. 21:41
bacek chromatic, yeah. I have to go to dayjob so I can't do anything more. But if you sync branch with trunk we can have more accurate comparison. 21:48
21:49 TiMBuS joined
chromatic Will work on that. 21:50
cotto_work particle, rakudo appears to build fine with r44971 on linux/x64. msg or email me (cotto, not cotto_work) and I'll get 2.2.1 out with whatever patch is needed for Rakudo on win32/msvc. 21:51
21:57 payload1 joined
dalek rrot: r44973 | petdance++ | trunk/src/pmc.c:
consting and localizing. Removed ancient HISTORY heading.
21:57
22:04 lucian_ joined
bacek chromatic, we can speed up things in CallContext by using array of "cells", not linked list. 22:07
chromatic Definitely. 22:08
22:08 AndyA joined
chromatic Oh git merge, how you are almost boring in your workingness. 22:09
22:09 eternaleye joined 22:11 lucian joined 22:12 Whiteknight joined
dalek rrot: r44974 | chromatic++ | branches/pcc_hackathon_6Mar10/src/pmc/role.pmc:
[PMC] Replaced deprecated Parrot_PCCINVOKE() with
22:13
22:13 lucian__ joined 22:19 AndyA_ joined
Whiteknight what's the merge plan for the pcc branch? 22:36
chromatic Funny you should ask.
Whiteknight HA HA HA 22:37
howsabout we create a new branch from current trunk, and merge the branch into that. Fix issues, go from there
chromatic What issues? 22:38
purl Whether mankind has free will is an /issue/. If something doesn't work, that's a /problem/.
chromatic As far as I know, only TT #1511 applies. 22:39
bacek_at_work, after merging in trunk, branch is 1.936% slower. 22:45
dalek rrot: r44975 | chromatic++ | branches/pcc_hackathon_6Mar10 (153 files):
Resynchronized branch with trunk.
22:47
23:10 snarkyboojum joined
bacek_at_work chromatic, interesting. I'll take a look tonight. 23:14
chromatic Fixing CallContext storage will make up the difference. 23:16
23:17 payload1 joined
lucian purl: msg allison i've been reading PDD 15, i'm not sure it can be used for pynie. afaict a custom (or at least prototypal) object system would be needed (same for ruby too) 23:17
purl Message for allison stored.
treed lucian: Quick refresher, what's PDD15? 23:21
lucian treed: docs.parrot.org/parrot/latest/html/...s.pod.html
treed has been working on the object model for Cardinal.
lucian treed: did you start from raw PMCs?
treed I had to.
You can't subclass parrot;Class right now.
lucian treed: is it that bad?
treed It doesn't work at all. 23:22
I can't remember whether it crashes or what.
But it certainly doesn't make a new usable class.
lucian treed: from what i've been reading, parrots' object system is horribly designed for dynamic languages
treed That seems... weird.
lucian treed: it may suit java, but not ruby or python
treed Uh... hm.
You realize that Parrot was made specifically for Perl, right? 23:23
lucian treed: it may also suit C++, but it's only that general
treed And it seems to work pretty well for that.
lucian treed: it claims to be good for all dynamic languages
treed Sure.
But I don't see how wPerl is not a dynamic language.
lucian treed: its object system is not
treed Nothing in PDD 16 runs out and says "This is not usable for Ruby"
Other than the fact that it lies about subclassing working. 23:24
lucian treed: no, but it makes it very awkward and inefficient to implement
treed How so?
You subclass Class to make new cl asses.
Then you instantiate them.
lucian treed: i may be slightly wrong about ruby objects, but for python it's not really
treed I usedto do python.
What doesn't work for python?
lucian treed: adding arbitrary attributes to an object/class 23:25
treed not following
ARe you saying that's bad or good?
lucian treed: i don't know how to do this with parrot's objects gist.github.com/333802 23:26
treed: it insists on having methods declared in the class
treed Oh.
Yeah.
In Ruby that's handled by eigenclasses.
lucian treed: in python, methods are just attributes 23:27
treed Okay.
So make a proc and store it in an attribute?
Objects can retrieve a method PMC for a method (for deferred method calls) 23:28
lucian treed: true, but then it'll be slower
treed Seems like what you'd want?
Slower than what?
chromatic Slower than C++.
lucian treed: than calling class methods
treed Maybe a little bit? 23:29
Retrieve an object and then do something to it
rather than doing something to an ojbect
lucian yes, pretty much
my other concern is interoperability
treed implement find_method? 23:30
lucian i can't see how that could possibly be achieved since most of the object system would not be used in pynie
treed Perl, Python, Ruby, have different MROs.
So that's an issue all its own.
Well, Perl6 and Python share C3 now.
But Ruby doesn't.
lucian C3? 23:31
purl i guess C3 is a little on the confusing side to start off with or teh hype or www.python.org/2.3/mro.html or use.perl.org/~autrijus/journal/25768 or most often broken by old Session::Store::FastMMap (<=0.03) or search.cpan.org/~flora/Class-C3-0.2...t_is_C3%3F or search.cpan.org/~flora/Catalyst-Run..._Class::C3
lucian right
also, i don't understand how i could implement metaclasses over parrots objects 23:32
it occurs to me that a prototypal object system may be a better base for ruby and python's objects
treed P6object may be what you're after
lucian for interoperabily in general in fact
treed and ruby would not want a prototypal system 23:33
Perl6 has a prototypal system
I'm having to rip it out for Ruby.
lucian i know, but you could implement ruby's/python's system on top of that
treed metaclasses in Ruby are instances of Class
lucian treed: pretty much the same in python
treed or of subclasses of Clas
so I'm not sure why you want prototype anything 23:34
BRB
dalek kudo: 8b09f69 | jonathan++ | (5 files):
Implement first cut of s/// syntax. Uses .subst under the hood, so it's as capable/incapable as .subst.
23:35
cotto_work 434023101/433886681 23:37
purl 1.00031441389186
lucian treed: i'm assuming proto would make interop easier because it fits both with everything-is-an-object and not-quite-everything-is-an-object 23:38
treed: the main problem with parrot's objects is the separation between attribute and method 23:43
chromatic They both go through vtables. 23:44
lucian chromatic: so they're not actually separate, PDD 15 just gives that impression? 23:46
chromatic Sure they're separate, but whatever you hide behind those vtables can do whatever it wants. 23:47
23:49 payload joined
lucian chromatic: right. so i could implement python's notion of everything in an object is an attribute 23:51
dalek rrot: r44976 | whiteknight++ | branches/find_method_object:
deleting unused branch
23:52
23:52 AndyA joined
lucian treed: i may be totally wrong in my understanding of parrot's objects 23:54
treed: but in any case, there may be quite a few common thing between python and ruby objects
chromatic Certainly.
23:58 eternaleye joined