Camelia, the Perl 6 bug

IRC log for #parrot, 2010-03-16

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:01 plobsing sorear: we have dynop libraries in src/dynoplibs. It would add ops to Parrot upon loading.
00:02 sorear plobsing: could I use those ops from any other extension, or would I have to wrap them with subs?
00:03 sorear how does the pir->pbc compiler know the opcode number for opcodes that aren't added until runtime?
00:04 plobsing sorear: you could call them directly from PIR, like "$I0 = fork"; or from anything that can emit ops directly, like NQP.
00:04 payload joined #parrot
00:04 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:05 sorear how does namespacing work for dynops?
00:05 plobsing I'm not sure anyone has thought about that.
00:05 sorear perhaps I'm confused; I thought opcodes were just small integers
00:05 sorear and if the load order is different, the opcodes would be different
00:06 sorear so pir->pbc would maybe use the wrong numbers
00:06 * sorear read
00:06 darbelo sorear: dynops are different from regular ops, they involve magical runtime fairy dist.
00:07 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:08 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:09 plobsing plumage? maybe
00:09 darbelo Actually, distutils.
00:10 eternaleye joined #parrot
00:10 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.
00:11 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.
00:11 japhb sorear, perldoc the distutils.pir file.
00:12 sorear thanks
00:12 japhb sorear, (it's in runtime/parrot/library/ )
00:12 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.
00:12 japhb The documentation is a bit ... thin, but not too hard to figure out.
00:13 japhb darbelo, pretty much.
00:14 japhb nopaste?
00:14 purl nopaste is, like, at http://nopaste.snit.ch/ (ask TonyC for new channels)  or http://paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at http://www.extpaste.com/ or http://paste.scsys.co.uk (for #catalyst, #dbix-class, #moose  and others) or http://gist.github.com/ or paste or gtfo or tools/dev/nopaste.pl or https://trac.parrot.org/parrot/br​owser/trunk/tools/dev/nopaste.pl
00:14 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.
00:15 darbelo 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:16 nopaste "japhb" at 76.191.190.8 pasted "Current iteration of Plumage's setup.nqp-to-be" (75 lines) at http://nopaste.snit.ch/19958
00:16 japhb sorear, also take a look at that paste.
00:16 japhb 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.
00:17 darbelo japhb: Can't you do that in PIR?
00:17 darbelo It's not *that* much more verbose.
00:18 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 japhb Well, to my eyes, at least.
00:18 japhb And I've written my fair share of PIR.  ;-)
00:19 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:20 darbelo Maybe I should bother learning perl 6 after all ;)
00:20 japhb Definitely!
00:20 purl Definitely! are you here?
00:21 japhb purl, forget Definitely!
00:21 purl japhb, I didn't have anything matching definitely
00:21 japhb purl, forget 'Definitely!'
00:21 purl japhb, I didn't have anything matching 'definitely!'
00:22 japhb gah
00:22 plobsing purl forget definitely
00:22 purl plobsing, I didn't have anything matching definitely
00:22 cotto_work purl, unbotsnack
00:22 purl thanks cotto_work :)
00:22 japhb I even tried it with parens, in case it was like karma
00:22 darbelo no, definitely! is <reply>
00:22 purl i already had it that way, darbelo.
00:22 darbelo There
00:23 darbelo definitely!
00:23 * sorear ponders how to integrate the functionality of distutils and autoconf
00:23 darbelo sorear: 'dont'?
00:23 japhb Don't ponder that too long.
00:24 darbelo distutuls already knows that stuff so you don't have to.
00:25 sorear distutils can't tell me stuff like "is vfork available here"
00:25 darbelo sorear: It can be taught to.
00:26 darbelo 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.
00:26 darbelo purl dbm-dynpmcs?
00:26 purl darbelo: no idea
00:27 darbelo dbm-dynpmcs is http://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
00:27 purl ...but dbm-dynpmcs is http://gitorious.org/dbm-dynpmcs a set of dynpmcs to encapsulate and abstract the myriad of UNIX dbm-like databases available....
00:28 darbelo http://gitorious.org/dbm-dynpmcs/dbm-​dynpmcs/blobs/master/setup.pir#line69
00:29 darbelo that sub uses distutils platform knowledge to probe for a library in, excluding the c source, under 10 lines of PIR.
00:30 darbelo Oh, and a 10-line helper sub to set up the right linker flags.
00:32 dngor joined #parrot
00:34 workbench joined #parrot
00:36 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:42 darbelo We should *really* put all of this in a big recipe book some day.
00:43 Tene delicious!
00:43 purl well, delicious is social bookmarks; most popular -> http://del.icio.us/popular/ or crazy or holy crap fmh is a (rich) nutcase or candy. candy is delicious
00:49 sorear If I export a dynop named, say, "open", will it interfere with anything?
00:51 darbelo Try it and find out!
00:55 darbelo left #parrot
00:57 cotto joined #parrot
00:59 cotto Ironically, I was wondering earlier today how long my laptop would last on battery power.
01:00 Austin joined #parrot
01:04 Austin left #parrot
01:04 Austin joined #parrot
01:11 snarkyboojum joined #parrot
01:12 dukeleto 'ello
01:13 Whiteknight hello duke
01:13 dukeleto cotto: also, i agree about your comment on speed.pypy.org
01:13 dukeleto Whiteknight: howdy
01:37 cotto joined #parrot
01:44 theory joined #parrot
02:04 parthm joined #parrot
02:18 rt7 joined #parrot
02:40 dalek rakudo: 2f19219 | (Solomon Foster)++ | src/ (3 files):
02:40 dalek rakudo: 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 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/2​f19219e06a3d22a8a2939cac3ee7230ae798f27
02:40 dalek rakudo: 366b529 | (Solomon Foster)++ | build/Makefile.in:
02:40 dalek rakudo: Add metaops.pm to the build.
02:40 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/3​66b529dbbb9c25020f801fba4b91a01081d09fd
02:50 snarkyboojum joined #parrot
03:08 dalek rakudo: f676705 | (Solomon Foster)++ | t/spectest.data:
03:08 dalek rakudo: Turn on S03-operators/cross-metaop.t, add new S03-operators/zip-metaop.t.
03:08 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​6767053e34aed09734a39e549d61dd9831a72b5
03:25 dalek tracwiki: v2 | Austin_Hastings++ | HLL%20Resources
03:25 dalek tracwiki: http://trac.parrot.org/parrot/wiki/HLL​%20Resources?version=2&amp;action=diff
03:25 dalek tracwiki: v1 | Austin_Hastings++ | Creating%20Closures%20with%20NQP-rx
03:25 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Creating%20Cl​osures%20with%20NQP-rx?version=1&amp;action=diff
03:25 dalek tracwiki: v2 | Austin_Hastings++ | Creating%20Closures%20with%20NQP-rx
03:25 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Creating%20Cl​osures%20with%20NQP-rx?version=2&amp;action=diff
03:31 Austin Woo-hoo. More nqp bugs
03:40 dalek TT #1510 created by Austin_Hastings++: NQP-rx doesn't create PMC for string // expressions
03:58 dukeleto Rational PMC has a whopping 0.8% test coverage
03:58 Austin Whose PMC is that, ours or Perl's
03:58 Austin A better question: who owns the spec for the behavior?
03:58 dukeleto http://tapir2.ro.vutbr.cz/cover/cover-result​s/44936/c_cover/src-dynpmc-rational-pmc.html
03:59 dukeleto looks like the code coverge runs don't have GMP
03:59 Austin Heh
04:01 * dukeleto talks to mj41 about it
04:01 dukeleto Austin: not sure about the spec
04:02 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 #parrot
04:47 theory joined #parrot
04:50 janus joined #parrot
05:12 * cotto puts on his release pants
05:12 Austin =:-O
05:13 Austin One leg at a time, I hope.
05:13 cotto just like everyone else
05:13 cotto including MC Hammer
05:13 Austin I think he was a "both legs at once" kind of guy..
05:15 Austin 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.
05:18 cotto Github ate my gist.
05:18 cotto github--
05:18 cotto I'll have to use a proper nopaste in the future.
05:21 Austin Or something
05:21 purl something is probably really wrong out there :)
05:22 sorear cotto: cpan -i App::Nopaste
05:22 cotto we have tools/dev/nopaste.pl in svn
05:22 Austin But for some reason you don't want to use it...
05:22 cotto I was under the mistaken impression that gists could be edited wiki-style
05:23 Austin Ah
05:23 cotto (which would be nice for something like that)
05:23 Austin There was a nopaste that allowed that. I thought it was pretty cool, but everybody's hung up on the czech one.
05:23 Austin Jesse <something> iv used id. Maybe pastebin?
05:24 cotto There must be something wrong with it if everyone's using something else.
05:24 cotto Don't question my logic.
05:24 Austin Yeah.
05:24 Austin That's what I said about Parrot...
05:24 cotto Austin++
05:25 Austin Yeah, pastebin allows edits.
05:25 cotto collaborative edits?
05:26 Austin I dunno. I think maybe you get a new url
05:31 Austin http://poundparrot.pastebin.com/W034GNYK
05:31 Austin Make an edit, I dare you.
05:34 cotto oic.  It creates a new page that reflects the edit
05:37 cotto fulltest is happy.  that's a good sign.
05:41 cotto anyone on an interesting platform care to run fulltest?
05:48 AndyA_ joined #parrot
06:02 * dukeleto runs fulltest on darwin-x86
07:05 cotto It's release time.  If you were going to commit to trunk, please hold off.
07:17 dalek parrot: r44951 | cotto++ | trunk/NEWS:
07:17 dalek parrot: NEWS update for 2.2.0
07:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44951/
07:30 bacek joined #parrot
07:31 bacek o hai
07:31 Austin shhh... he's releasing...
07:33 dalek parrot: r44952 | bacek++ | branches/pcc_hackathon_6Mar10/src/call/pcc.c:
07:33 dalek parrot: Save/restore old call_object in invoke_sub.
07:33 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44952/
07:35 fperrad joined #parrot
07:36 cotto ohai
07:43 aukjan joined #parrot
07:49 dalek parrot: r44953 | cotto++ | trunk (8 files):
07:49 dalek parrot: get ready for 2.2.0 release
07:49 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44953/
07:49 dalek parrot: r44954 | cotto++ | tags/RELEASE_2_2_0:
07:49 dalek parrot: tagging 2.2.0 release
07:49 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44954/
07:51 bacek cotto++ # 2.2.0
08:00 barney joined #parrot
08:07 nopaste "bacek" at 122.110.68.107 pasted "The victo^W^W. We almost there. coretest results on pcc_hackatron branch" (8 lines) at http://nopaste.snit.ch/19960
08:08 cotto bacek, nice
08:08 cotto bacek++
08:11 cotto The code part of the release is done.  Get back to breaking stuff!
08:11 cotto I'll be sending out the announcements in the morning.
08:12 bacek Wow. Even nqp_test passed.
08:13 iblechbot joined #parrot
08:22 dalek parrot: r44955 | bacek++ | branches/pcc_hackathon_6Mar10/src/pmc/class.pmc:
08:22 dalek parrot: Remove hand-crafted fiddling with sig_object in Class.initialize_parents. Use invoke_sub instead.
08:22 dalek parrot: Now PGE builds.
08:22 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44955/
08:22 dalek parrot: r44956 | bacek++ | branches/pcc_hackathon_6Mar10/t/pmc/eval.t:
08:22 dalek parrot: Update test to call get_results after invoke.
08:22 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44956/
08:23 bacek And now we are here. make test passed in pcc_hackatron branch.
08:26 bacek msg mikehh Can you jump on pcc_hackatron branch for testing purpose? :)
08:26 purl Message for mikehh stored.
08:28 cotto bacek, if you have the tuits, tools/util/crow.pir has been broken for a while.
08:28 bacek wtf is crow.pir???
08:29 cotto helper script for generating release announcements
08:29 cotto time for me to sleep
08:30 cotto not an urgent fix, just a convenience for release managers
08:30 cotto night
08:36 dalek TT #1511 created by bacek++: op result_info is broken in pcc_hackatron branch.
08:36 bacek cotto, fixed
08:37 bacek good night
08:38 dalek parrot: r44957 | bacek++ | branches/pcc_hackathon_6Mar10/t/pmc/objects.t:
08:38 dalek parrot: Update test to call get_results after invoke.
08:38 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44957/
08:38 dalek parrot: r44958 | bacek++ | branches/pcc_hackathon_6Mar10/t/op/calling.t:
08:38 dalek parrot: TODO result_info tests.
08:38 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44958/
08:38 dalek parrot: r44959 | bacek++ | trunk/runtime/parrot/library/Config/JSON.pir:
08:38 dalek parrot: Quick fix for Config::JSON to help cotto++ with release
08:38 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44959/
08:54 dalek parrot: r44960 | gerd++ | trunk/docs/pdds/pdd30_install.pod:
08:54 dalek parrot: add a missing bracket
08:54 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44960/
09:00 cosimo joined #parrot
09:05 lucian joined #parrot
09:07 bacek joined #parrot
09:08 iblechbot joined #parrot
09:22 lucian in PDD 15, are parrot roles equivalent to mixins?
09:22 Austin what's a mixin?
09:22 purl a mixin is probably multiple inheritance without the inheritance. or the secret superset of functionality that inheritance sub-types
09:23 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 Austin Beyond that, I'm not really sure.
09:24 lucian Austin: they sound very much like mixins
09:24 lucian Austin: well, not very much, more like mixins could be easily implemented on top
09:25 lucian it also isn't clear to me if objects can add and remove methods and attrs at will
09:25 Austin They cannot.
09:25 Austin Objects delegate to their class.
09:25 lucian Austin: ouch
09:25 lucian then how on earth could python objects be implemented on top of PDD 15?
09:26 Austin But the P6object system is built to work around that, I think, by allowing classes to be swapped out dynamically.
09:27 lucian the problem is, in python you can say obj.bar = f
09:27 lucian where f is a function
09:27 Austin ...?
09:27 purl Yada yada yada hasn't been implemented yet! (unless you run bleadperl)
09:27 lucian any object really, but the interesting case is about functions
09:28 lucian purl: oooook then
09:28 purl NO AND THEN!
09:28 lucian Austin: you can arbitrarily add methods and attributes to classes and objects
09:28 Austin Sounds like a custom pmc type for python classes, then.
09:28 lucian Austin: it's the same case for ruby, actually
09:28 Austin Or a standard one that runs a little slower.
09:29 lucian it seems an arbitrary restriction in parrot's object system to not allow this
09:29 Austin Who said it wasn't allowed?
09:29 bacek Austin, (quick question) under which licence Close is?
09:29 Austin Artistic 2
09:29 purl Artistic 2 is compatible with gpl in all versions
09:30 lucian Austin: you have to fake it with adding classes or such
09:30 lucian Austin: isn't PDD 15 meant to be an interoperability object system?
09:30 Austin Oh, heavens! We wouldn't want to write code, or anything... :)
09:31 Austin 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 #parrot
09:32 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
09:32 bacek Austin, I can strip it off.
09:33 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
09:33 Austin Huh?
09:34 lucian Austin: methods are simply attributes
09:34 Austin Okay.
09:34 Austin Can methods collide with data attributes?
09:34 lucian and attributes are never declared
09:34 Austin Or is there a single namespace?
09:34 lucian Austin: no, one namespace. all attributes are objects and functions are objects
09:34 Austin Okay.
09:34 Austin And what does "never declared" mean?
09:35 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?
09:35 lucian yes, it's good practice to define them in the constructor
09:35 lucian but there isn't anything special about declaring them. you just start using them
09:36 Austin Well, you can't start using them until you attach them, can you?
09:36 lucian Austin: yes, that is true
09:36 lucian Austin: let me show you a bit of code
09:36 Austin Okay
09:37 lucian Austin: http://pastie.org/871699
09:38 Austin okay
09:38 Austin What's what?
09:38 lucian it is merely convention to attach attributes in the constructor, it can happen anywhere
09:38 lucian right, so def creates a function object
09:38 lucian a method is just a function with self as the first argument (nothing special about it at all)
09:39 lucian __init__ is the constructor
09:39 lucian self.x is an attribute
09:39 Austin So what's bar?
09:39 lucian Austin: just a method
09:39 Austin What method?
09:39 purl method is still not an action
09:39 Austin According to you, it's not part of any "A" objects, right?
09:39 lucian random method that can be called from somewhere
09:40 Austin Because the c'tor didn't attach it...
09:40 lucian Austin: bar and x will be there in all A objects
09:40 Austin Ahh
09:40 lucian Austin: but you can have another method that attaches y somewhere
09:40 Austin So the methods *are* declared, yes?
09:40 lucian Austin: not necessarily in the constructor
09:41 lucian 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() ?
09:41 lucian Austin: almost. wait, i'll write more code in there
09:44 lucian Austin: better? http://pastie.org/871699
09:44 Austin okay
09:44 Austin Now supposing I have another object, 7  eh = A(3)
09:45 AndyA joined #parrot
09:45 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
09:45 purl okay, lucian.
09:45 lucian you could attach it to the class as well if you wanted to
09:45 Austin How would you do that?
09:47 lucian Austin: http://pastie.org/871699
09:47 lucian Austin: just attach it to the class (classes are also objects)
09:48 Austin Okay.
09:48 bacek joined #parrot
09:48 Austin I can see how to do that. Probably 200-300 lines of NQP.
09:48 Austin Which means that Pm1chaud could probably do it in the same amount of pir.
09:49 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.
09:49 Austin (aka P6object)
09:49 lucian Austin: PMCs are too low level for interoperability between ruby and python
09:50 Austin What is that supposed to mean?
09:50 lucian Austin: P6object being the one described in PDD 15
09:50 Austin No.
09:50 Austin P6object being built on top of the current Object and Class pmcs, however pale a shadow they may be of the PDD15 archetype.
09:51 lucian Austin: right, ok
09:51 Austin P6object refers to the P6object.pir file located in the runtime/library
09:51 lucian Austin: the problem is, afaict both ruby and python would have to write their own Object and Class pmcs
09:51 Austin Why would they have to do that?
09:52 lucian Austin: then i misunderstood. wouldn't there be a penalty for faking arbitrary attributes on top of PDD15
09:52 lucian ?
09:52 Austin Sure.
09:52 Austin But how much of a penalty? That I don't know, but it doesn't seem very high.
09:53 Austin Suppose you do "A.me = f"
09:53 Austin At that point, are *all* objects of class A, and derived from class A, going to have the new method?
09:53 lucian Austin: yes
09:54 Austin Oh
09:54 Austin Well that makes things even easier.
09:54 lucian Austin: A.me = f is no different from doing a def inside the class definition
09:54 Austin You don't have to worry about versioning the class...
09:54 lucian Austin: no, no versioning required
09:55 lucian 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?
09:57 lucian Austin: yes
09:57 Austin Changing the subject slightly, what IRC client are you using?
09:58 Austin Okay, there's the penalty.
10:00 Austin 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:01 Austin Beyond that, two or three opcodes to check for a local override on the particular method.
10:03 Austin fetch-object-overrides-hash; fetch-name-from-hash; branch-if-null; tailcall
10:03 Austin 4 opcodes.
10:04 Austin $P0 = getattribute self, 'overrides' ; $P1 = $P0['foo'] ; if-null $P1 goto call-default; tailcall self.$P1(args...)
10:05 Austin 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:06 smash joined #parrot
10:06 smash hello everyone
10:06 Austin Hello, smash.
10:07 lucian Austin: sorry, i was in the kitchen. i'm using LimeChat
10:08 Austin Let me guess - from your iPhone ?
10:08 Austin :)
10:08 lucian Austin: no, i don't have one
10:08 lucian Austin: i use a G1 actually
10:08 lucian i really don't like the idea of an overrides table
10:08 Austin Well, don't feel bad. I don't have one either.
10:09 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.
10:10 Austin 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?
10:10 Austin Right
10:11 lucian it seems odd to me that python/ruby semantics are so unclean to map on parrot
10:11 lucian i would've expected an object system for dynamic languages
10:12 lucian i should speak to the cardinal folks
10:12 lucian Austin: biab
10:16 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:17 Austin 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:26 mj41 joined #parrot
10:28 lucian Austin: right. i really think it should be more general
10:28 lucian 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
10:29 lucian ruby/python's object systems are in fact javascript's, but done right
10:29 lucian (people laud js for being prototypal)
10:33 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:34 lucian Austin: right. first i have to use ruby some more, i mostly know things about it
10:35 lucian Austin: actually, if parrot's general object system was prototypal, anything could be built on top of that
10:37 smash scheduled monthly release is going out today ?
10:37 Austin Yeah
10:37 smash who is making the release ?
10:37 Austin smash: Cotto's already committed the code. The admin bits are yet to do
10:37 Austin log?
10:37 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/`
10:37 Austin topic?
10:37 purl hmmm... topic is IRC topics don't auto propagate on server reconnect
10:37 Austin hmm
10:38 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
10:39 smash cotto++
10:45 smash Austin: ok, thks
11:10 cosimo joined #parrot
11:56 bacek joined #parrot
12:18 lucian joined #parrot
12:21 whiteknight joined #parrot
12:22 Austin Good morning, whiteknight.
12:22 whiteknight hello Austin
12:22 darbelo joined #parrot
12:26 cosimo joined #parrot
12:41 dalek TT #1512 created by Austin_Hastings++: NQP-rx generates bad access code for non-twigiled attribute
12:41 ruoso joined #parrot
12:43 payload joined #parrot
13:04 * lucian hates vdm-sl
13:20 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:22 particle plobsing: there's no such thing as too early. post away!
13:25 plobsing particle++
13:31 iblechbot joined #parrot
13:34 _2x2l joined #parrot
13:38 Austin joined #parrot
13:48 payload joined #parrot
13:48 Coke feeback on http://trac.parrot.org/parrot/wiki/tasksCoke appreciated. (the wiki table there, which should replace BranchDescriptions.
13:48 Coke figured if the main place that is being looked at is the wiki, might as well wikify it and lose the manual formatting.
13:51 dalek tracwiki: v9 | coke++ | tasksCoke
13:51 dalek tracwiki: http://trac.parrot.org/parrot/wiki/​tasksCoke?version=9&amp;action=diff
13:59 bubaflub joined #parrot
14:21 payload joined #parrot
14:26 lucian joined #parrot
14:28 whiteknight joined #parrot
14:37 whiteknight good morning again, #parrot
14:39 davidfetter joined #parrot
14:49 bubaflub morning, whiteknight
14:49 whiteknight good morning bubaflub
14:52 bubaflub is there a problem with tools/util/release.json line 6?
14:53 patspam joined #parrot
14:53 theory joined #parrot
14:56 bubaflub cotto: lines 5 and 6 of tools/util/release.json look like typos to me - are they?
14:59 whiteknight cotto: when is the release happening?
15:01 theory joined #parrot
15:12 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 #parrot
15:15 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 Coke but sure, feel free to update it to match the release-in-progress.
15:17 bubaflub Coke: ok, fixed in r44961
15:20 lucian joined #parrot
15:20 cognominal joined #parrot
15:22 lucian joined #parrot
15:25 payload joined #parrot
15:25 dalek parrot: r44961 | bubaflub++ | trunk/tools/util/release.json:
15:25 dalek parrot: fixed typo in tools/util/release.json
15:25 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44961/
15:36 Psyche^ joined #parrot
15:46 * Coke opens a bug on Time::Format, whee.
15:51 Coke http://trac.parrot.org/parr​ot/log/branches/boehm_gc_2 - is there a way to limit this to a particular author?
15:53 whiteknight do what to who?
15:55 Coke only show log entries committed by <foo>
15:59 particle coke: use cia.vc
16:01 eggyknap joined #parrot
16:01 davidfetter hi there, eggyknap :)
16:02 * eggyknap waves
16:02 * davidfetter trying to figure out how best to frame this issue. eggyknap, any ideas?
16:03 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 eggyknap Suggestions for calling functions whose signature we know only at runtime?
16:05 Coke particle: I don't care that much.
16:06 davidfetter anybody got a brilliant idea? or a dumb one i've missed?
16:07 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.
16:08 eggyknap Unless there's some C foo I'm missing, which is quite possible.
16:08 eggyknap Parrot_ext_call() takes a signature string and a varargs list of arguments
16:08 particle coke: is it that hard? http://cia.vc/stats/author/coke
16:09 Coke particle: No. I just don't care enough to go outside of trac.
16:09 Coke plus that isn't what I asked for. =-)
16:09 particle i must have missed some context, sorry.
16:09 Coke (I want to restrict an existing log report by author.)
16:09 particle in trac. ah.
16:09 Coke not find every commit by that author.
16:09 * davidfetter looks around for a C-fu sifu
16:10 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 bubaflub the code makes it look like you could pass ?authors=foo
16:10 bubaflub but it's not working
16:10 Coke bubaflub: if you figure it out, lemme know, but don't kill too many brain cells.
16:10 bubaflub maybe i can just pop over into #trac
16:10 Coke eggyknap: IANACP, but that seems tricky. http://stackoverflow.com/questions/280940/calling​-a-c-function-with-a-varargs-argument-dynamically has some discussion.
16:10 particle ...save them for beer.
16:12 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.
16:12 Coke but that is more C than my poor brain can deal with. I'd probably ask on list.
16:13 Coke particle: it's for: http://trac.parrot.org/parr​ot/wiki/BranchDescriptions, to make the authors clickable.
16:13 Coke so, only a nice to have.
16:13 whiteknight Austin: ping
16:13 eggyknap Coke:  I was hoping I could convince the folks involved in designing all this stuff to accept something precisely like that.
16:14 * eggyknap will compose a list message
16:14 Coke eggyknap++
16:14 particle coke: nice! you could make the creator clickable by pointing to the commit that created the branch
16:14 particle heck, created/updated could be clickable too...
16:14 dalek parrot: r44962 | coke++ | trunk/tools/dev/branch_status.pl:
16:14 dalek parrot: generate wiki friendly output by default.
16:14 dalek parrot: Keep old version available with -H for now.
16:14 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44962/
16:14 Coke particle: update tools/dev/branch* for the non-human path. =-)
16:15 Coke (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?
16:16 Coke it's not a trac plugin, no.
16:16 particle ok
16:16 Coke Certainly could be, though. Just costly to create.
16:17 Coke 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
16:17 dukeleto 'ello
16:18 particle coke: do we have yui or jquery on the server?
16:18 particle that list could become sortable
16:18 Coke particle: "which one"? and probably not.
16:19 Coke (i'd go extjs myself, assuming their licensing is compatible with pafo)
16:19 bubaflub afternoon dukeleto
16:19 davidfetter dukeleto, got any insights into what eggyknap's asked about
16:19 davidfetter ?
16:20 dalek tracwiki: v32 | coke++ | BranchDescriptions
16:20 dalek tracwiki: update to wiki format.
16:20 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Branc​hDescriptions?version=32&amp;action=diff
16:22 Coke does opensolaris ship with a sun cc, or is it gcc on the open platform?
16:23 * Coke realizes he knows a local sun vendor and asks them. (er, oracle.)
16:24 whiteknight Coke: I think opensolaris shipped with suncc
16:25 NotFound Oracle after sun X-)
16:26 Coke bubaflub: if you track that down, it would be super helpful to have it for the timeline, also.
16:26 Coke (for preparing for #parrotsketch reports)
16:26 bubaflub guy on #trac is saying we could do that with reports
16:26 bubaflub but not with the timeline view
16:27 Coke what if we go "wah" ?  =-)
16:27 Coke Would a patch be accepted? I'd be happy if it was a just something a clever person could tack onto the URL.
16:28 bubaflub now he's saying that the ?author=foo should work
16:29 bubaflub hmmm
16:29 bubaflub maybe in a config?
16:29 bubaflub i'll work on it with #trac people and get back to you
16:29 Coke I've tried..... danke!
16:29 Coke (we might have an old version of trac, too.)
16:29 Coke happy to get it upgraded for this, though. =-)
16:29 bubaflub nah, we've got 0.11.6
16:29 bubaflub which was the version he was referencing
16:31 dukeleto davidfetter: i am catching up on backlog. what are you asking about?
16:32 dukeleto bubaflub: howdy!
16:32 davidfetter dukeleto, eggyknap asked :)
16:32 bubaflub dukeleto: how goes the GSoC process?
16:32 davidfetter it's basically about deferring knowledge of PL/Parrot param types until run time
16:33 he_ joined #parrot
16:34 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:36 Coke reminder, DAYLIGHT SAVINGS TIME HAS HIT.
16:36 Coke (in the us)
16:37 Coke (This puts #ps at 16:30 Eastern)
16:39 Coke (someone should hit the list to remind folks)
16:41 theory joined #parrot
16:45 whiteknight damnit
16:49 bubaflub Coke: ok, so here's the lowdown on the trac business
16:50 bubaflub 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:51 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 http://nopaste.snit.ch/19967
16:53 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:54 bubaflub Coke: but apparently those patches are on trac's trunk
16:54 bubaflub so i'm guess 0.11.7 (the next version) will have what you are asking for
16:54 dukeleto bubaflub: the goog is looking at org apps and will let us know who is accepted by 18. March
16:55 bubaflub i imagine the goog as the evil all-seeing eye from the lord of the rings
16:57 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:59 whiteknight he_: Do you have an installed Parrot library on your system?
17:26 dalek plparrot: df4ea0a | (David Fetter)++ | Makefile:
17:26 dalek plparrot: Fixed per discussion here: http://justatheory.com/computers/datab​ases/postgresql/no_more_use_pgxs.html
17:26 dalek plparrot: review: http://github.com/leto/plparrot/commit/d​f4ea0a4ff207319019c2d626d89d2a4bb9a3a22
17:27 dalek website: cotto++ | Parrot 2.2.0 Released!
17:27 dalek website: http://www.parrot.org/news/2010/parrot-2.2.0
17:27 davidfetter cotto++ :)
17:29 dukeleto cotto++
17:30 Austin whiteknight pong
17:31 whiteknight Austin: today's tax day. Need any help paying it?
17:31 Austin Heh. I'm sure it is.
17:31 Austin Is the release out yet?
17:31 Austin tagged, test
17:31 whiteknight Starting this release, I'm going to try and standardize Parrot-Linear-Algebra to following the latest supported release instead of tracking head
17:31 Austin *test=etc
17:32 Austin 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
17:32 Austin Ruh roh
17:33 whiteknight so I decided it may be time to chill out with my incessant updating
17:33 riffraff joined #parrot
17:34 dukeleto whiteknight: yeah, sounds reasonable
17:34 dukeleto riffraff: welcome
17:34 Austin Well, it seems there is a 2_2_0 release tagged.
17:34 riffraff hei
17:34 dukeleto cotto: is it safe for people to nuke trunk from orbit yet?
17:35 Austin Check the logs for about 0300 EDT this morning. I think he claimed he was done.
17:36 Austin dukeleto:   http://irclog.perlgeek.de/p​arrot/2010-03-16#i_2107914
17:37 dukeleto cotto: it seems that way, but I like to be sure :)
17:37 cotto dukeleto, quite
17:37 Topic for #parrotis now #parrot Parrot 2.2.0 Released! | http://parrot.org/ | Channel log: http://irclog.perlgeek.de/parrot/today | Tasks: Fix HLL bugs!  Fix and test corevm target!
17:38 dukeleto Austin: but yes, you appear correct
17:38 Austin Besides, you tested your commit, right?
17:38 whiteknight I'm going to finish my testing updates for PLA soon, then give all the same treatment to PDS
17:39 whiteknight I would like both to be targetted towards supported parrot releases
17:40 particle cotto: oops! "Parrot 2.0 Released!"
17:40 Austin Great news! I just got an email announcing the release of Parrot 2.0
17:40 Austin Drat.
17:41 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
17:42 whiteknight but the interfaces I rely on are satisfactory for now
17:42 whiteknight so it's time to drink the damn deprecation policy koolaid and follow supported releases
17:42 Austin Yowza! Putting all the command line args on display really gives a workout to the scroll buffer.
17:44 cotto headdesk
17:44 purl *thunk*
17:46 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 cotto *release
17:46 cotto . o 0 (not my day)
17:46 Austin Hmm.. maybe the coffee / fish-oil intake ratio needs to be adjusted on Cotto...
17:47 whiteknight cotto++ (you're a rock star anyway)
17:47 cotto I'm glad I'm not running any heavy equipment today.
17:47 cotto other than my car, which still makes me nervous. ;)
17:47 Austin Hey.. from heavy equipment operators we don't expect smart...
17:47 cotto bacek++ for being the one to finally fix crow.pir
17:48 * cotto goes off to word
17:48 cotto work
17:48 cotto sigh
17:49 Austin Hmm... 7  if @!elements.elems { ... }   (what's wrong with this symbol name...)
17:49 whiteknight ...?
17:49 purl Yada yada yada hasn't been implemented yet! (unless you run bleadperl)
17:49 whiteknight purl forget ...
17:49 purl whiteknight, I didn't have anything matching
17:49 whiteknight purl forget ...?
17:49 purl whiteknight, I didn't have anything matching
17:49 whiteknight damnit
17:49 whiteknight purl forget yada yada yada
17:49 purl whiteknight, I didn't have anything matching yada yada yada
17:49 whiteknight >:(
17:50 * whiteknight grabs an absurdly powerful magnet, intent on teaching purl a lesson
17:51 fperrad joined #parrot
17:52 rt7 joined #parrot
17:54 Austin purl?
17:54 purl Austin?
17:54 Austin Hmm
17:55 Austin Here's a gravatar for purl: http://cyanatrendland.com/wp-content/​uploads/2009/01/benedict-campbell.jpg
17:55 Austin I think needles courtesy of bacek...
17:58 Austin Hmm.. I think install is broken.
17:59 Austin Okay, install-dev requires docs, which fails when I build it as root, but works as austin. (Network filesystem...)
18:00 whiteknight Austin: http://www.geekologie.com/2​008/03/25/killer-robot.jpg
18:00 Austin More dalek than purl, I hope.
18:01 whiteknight Austin: http://www.craphound.com/images/freerobotsex.jpg
18:01 whiteknight either way is fine
18:01 Austin lol
18:02 Austin Anybody else get their (US) census forms yet?
18:02 davidfetter yeah
18:02 bubaflub my roommate said it came in the mail yesterday
18:03 Austin Yeah, that was easy..
18:03 Austin Who lives here?  One old white dude. OKTHXBYE
18:09 Austin 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:10 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. =-)
18:10 cotto_work and get lots of sleep before releasing
18:11 Austin I'm on parrot-users, and I don't see much traffic.
18:11 Austin All the cool kids are on -dev...
18:11 whiteknight I think I'm on parrot-users too
18:11 Austin But maybe cotto's mail to the list bounced, or sth
18:11 Coke (goog as sauron) that idea is not without merit, esp. if you read the silmarillion. =-)
18:13 Coke Austin: his mail is held up by admin, which is why I mentioned it here. =-)
18:13 eggyknap left #parrot
18:13 Coke cotto_work: want me to just kill it since it's the wrong release anyway?
18:13 cotto_work sure
18:13 cotto_work though only the subject is wrong
18:14 Coke ... your call. I can approve it, np.
18:15 cotto_work I'll resent to parrot-users (and join) when I get home tonight
18:15 Coke k
18:15 cotto_work *resend
18:15 cotto_work I can't win.
18:16 Coke dropping...
18:16 hercynium joined #parrot
18:24 Austin Q: What does a call to 7   Path.new( "" )   produce?  (empty string)
18:25 Andy joined #parrot
18:25 Andy icc support?  Where have I been!??!
18:26 Austin Don't get too excited. It's not supported in the logs...
18:26 Andy I don't understand "in the logs".
18:26 Austin irclog?
18:26 purl i guess irclog is http://irclog.perlgeek.de/parrot/today
18:27 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...
18:27 Austin What warnings?
18:27 purl somebody said warnings was just a magical bitmask, iirc
18:27 Andy missing returns, for one.
18:27 Austin ?
18:27 Austin In padre, or something else?
18:28 whiteknight Andy: there used to be a LOT more ICC warnings
18:28 Andy mo be betta
18:28 Austin Oh.
18:28 Austin Never mind.
18:28 Austin Wrong icc.
18:28 whiteknight Andy: it's a work in progress, but we're building, passing all tests, and have relatively few warnings
18:28 Andy I worked on icc a bunch a year or so ago
18:29 cotto_work how many things called "icc" are there?
18:29 Austin intel c compiler
18:29 Austin irc color coding
18:29 NotFound icc?
18:29 purl icc is international color consortium and is at http://www.color.org/ or Interface Chaise-Clavier (problème d') or Intel C Compiler
18:29 Andy There are MANY more icc flags we could be using.
18:29 Andy A new couch project for me!
18:29 Austin I never heard of the Chaise one.
18:30 japhb How long until #ps?
18:30 dukeleto japhb: 2 hrs, i think?
18:30 payload joined #parrot
18:30 cotto_work 120m
18:30 japhb OK, cool.
18:30 japhb thx
18:31 Coke Andy: ping me if you have any questions on the new config/auto/warnings.pm
18:31 Andy ok
18:32 Austin Ahh
18:32 Austin ICC = PEBKAC
18:32 Coke PEBAKAC.
18:32 Andy I saw at least one invalid flag getting passed to icc.
18:32 Andy but I don't have time to mess w/it now.
18:33 Andy -Wdeclaration-after-statement  specfiically
18:33 Austin Isn't that what Fermat said?
18:33 Andy ok, that's pretty cool, Coke.
18:34 Andy the way you have the flags set up.
18:34 Andy where each filename is, I assume, an exception.
18:34 Coke odd, I don't see that one.
18:34 Coke Andy: yes.
18:34 Coke replaces the old "CFLAGS" file.
18:34 Andy Can't you qw() with filenames?
18:35 Coke instead of having icky manual list refs? sure.
18:36 Andy ok
18:36 Andy just surprised you don't.
18:36 Coke pretty perl code was not my focus on that refactor.
18:36 Andy understood
18:37 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.
18:37 whiteknight Andy: Improved ICC support and better/decreased warnings would always be a good thing
18:38 Andy yup, I'm all over it
18:38 Andy at some point
18:38 hiroy____ joined #parrot
18:38 Andy in my copious free time
18:38 Coke whee.
18:38 Andy when I'm not creating presentations for POSSCON (posscon.org)
18:38 whiteknight take your time. the compiler is definitely not too popular
18:38 Andy but it's a useful tool with different warning than GCC
18:38 whiteknight I really like it's optimization potential, however
18:38 whiteknight yes
18:38 Andy I see each different compiler as a different lint.
18:38 whiteknight I like to use it sometimes
18:39 Coke ack suggestion: an option to ignore svn:ignored files and/or only search files under version control. =-)
18:39 Andy http://github.com/petdance/ack/issues
18:40 Coke ok. as long as it's not a "no way", happy to open an RFE.
18:40 Coke Andy++
18:40 Andy It'll be a plugin, to be sure. :-)
18:40 Andy but that throws a whole new wrinkle into what plugins might be.
18:43 Coke GITHUB--
18:43 Coke (just ate my ticket.)
18:44 nopaste "Whiteknight" at 70.91.57.213 pasted "kakapo test output at Parrot2.2.0 for Austin++" (74 lines) at http://nopaste.snit.ch/19968
18:44 Austin whiteknight++
18:45 Austin 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!
18:45 whiteknight push them in and I'll test them out
18:46 Austin No guarantees that things will improve ...
18:46 Austin I've broken some other stuff in the interim. That said, here it comes.
18:48 kurahaupo joined #parrot
18:51 theory joined #parrot
18:52 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:53 Andy do commits not get posted here any more?
18:53 dalek kakapo: 878c57d | austin++ |  (10 files):
18:53 dalek kakapo: Added FileSystem.nqp, Path.nqp. Completed use case #1 on ticket
18:53 dalek kakapo: Implemented issue #9: Create Filesystem interface
18:53 dalek kakapo: Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
18:53 dalek kakapo: review: http://gitorious.org/kakapo/kakapo/commit​/878c57d1586b2387a7fa01a8d76c153bec22a811
18:53 dalek kakapo: 307f322 | austin++ |  (16 files):
18:53 dalek kakapo: Added "auto_accessors" to P6metaclass.nqp; Added MockFS.nqp and Path.nqp, neither of which currently work. :( Got rid of Pmc/File.nqp.
18:53 dalek kakapo: Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
18:53 dalek kakapo: Fixed issue #12: Create a Mock FileSystem
18:53 dalek kakapo: review: http://gitorious.org/kakapo/kakapo/commit​/307f3227f8ab0d8e11ef92ac690313a58c154835
18:54 Andy kakapo?
18:54 purl kakapo is a program framework, runtime library, and collection of useful functions for NQP programs.
18:55 Austin purl, no Kakapo is a program framework, runtime library, and collection of useful functions for NQP programs. See http://code.google.com/p/kakapo-parrot/ for documentation and issue tracking, or http://gitorious.org/kakapo for source code.
18:55 purl OK, Austin.
18:56 Austin kakapo?
18:56 purl somebody said kakapo was a program framework, runtime library, and collection of useful functions for NQP programs.
18:56 Austin Kakapo?
18:56 purl it has been said that Kakapo is a program framework, runtime library, and collection of useful functions for NQP programs.
18:56 Austin heh
18:57 cotto_work kakapo is also See http://code.google.com/p/kakapo-parrot/ for documentation and issue tracking, or http://gitorious.org/kakapo for source code.
18:57 purl okay, cotto_work.
18:57 dalek parrot: r44963 | petdance++ | trunk/config/auto/warnings.pm:
18:57 dalek parrot: removed quoting on filenames, using the qw() syntax instead
18:57 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44963/
18:57 dalek parrot: r44964 | petdance++ | trunk/config/auto/warnings.pm:
18:57 dalek parrot: fixed spelling of -Werror=implicit-function-declaration
18:57 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44964/
18:57 cotto_work kakapo?
18:57 purl i heard kakapo was a program framework, runtime library, and collection of useful functions for NQP programs. or See http://code.google.com/p/kakapo-parrot/ for documentation and issue tracking, or http://gitorious.org/kakapo for source code.
18:57 Austin cotto_work++
18:57 Austin Thanks.
18:58 cotto_work np
18:59 Andy WHO LOVES A GOOD STAFF MEETING?
19:00 whiteknight Austin: t/program.t sees to have hung
19:00 whiteknight t/Program.nqp
19:00 Austin Excellent! That's the same problem I sometimes have.
19:00 Austin Kill it and retry
19:00 whiteknight already doing that
19:01 Austin That makes it a pir+ problem, instead of a platform problem. I can solve that.
19:02 whiteknight it done hung again
19:03 dukeleto Austin: kakapo seems to be getting really useful. Nice work.
19:03 Austin Thanks.
19:03 whiteknight Austin: When I run t/Program.nqp without the harness, it works quickly and perfectly every time
19:03 whiteknight ...no, wait
19:04 Austin jej
19:04 whiteknight hung again
19:04 whiteknight Loading ./library/kakapo_full.pbc
19:04 whiteknight 1..9
19:04 Austin Did it well you what test it was running?
19:04 whiteknight Running test: test_exit
19:04 whiteknight ok 1 - Calling global exit() immediately ends program
19:04 whiteknight Running test: test_from_parrot
19:04 whiteknight ok 2 - test_from_parrot
19:04 whiteknight Running test: test_global_at_start
19:04 whiteknight ok 3 - test_global_at_start
19:04 whiteknight Running test: test_global_at_exit_fails
19:04 whiteknight ^^
19:04 Austin nopaste?
19:04 purl i heard nopaste was at http://nopaste.snit.ch/ (ask TonyC for new channels)  or http://paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at http://www.extpaste.com/ or http://paste.scsys.co.uk (for #catalyst, #dbix-class, #moose  and others) or http://gist.github.com/ or paste or gtfo or tools/dev/nopaste.pl or https://trac.parrot.org/parrot/br​owser/trunk/tools/dev/nopaste.pl
19:04 whiteknight I just dumped it to the channel
19:04 Austin I know.
19:04 Austin That was a reminder.
19:05 whiteknight I'll remind you
19:05 whiteknight ...doesn't sound nearly so menacing over the intertubes
19:06 Austin Crap.
19:06 whiteknight I'm also seeing intermittent failures in other tests too
19:06 whiteknight # Registered program should have no problems with at_start global
19:06 dukeleto msg plobsing your comments/thoughts on my recent email to parrot-dev about Parrot_ext_call_cb would be greatly appreciated
19:06 purl Message for plobsing stored.
19:06 Austin That test has got some kind of special-global-foo handling already.
19:06 Austin No doubt broken.
19:06 whiteknight # Registered program should have no problems with at_exit global
19:06 whiteknight (and those two failures happened in separate test runs)
19:07 whiteknight and this time it hung here: Running test: test_global_at_start_fails
19:07 Austin So probably some kind of registration/deregistration problem.
19:07 Austin Frabjous.
19:07 Austin I'll look at it later.
19:07 whiteknight well, on the bright side it is failing at failing. So maybe it's working extra good now?
19:07 Austin Wow.
19:08 Austin The future's so bright, I gotta wear shades...
19:08 whiteknight haha
19:08 Austin (name the band?)
19:08 whiteknight no idea
19:08 Austin Tim-buk-three
19:09 Austin http://www.youtube.com/watch?v=wvIAyxpjEuc
19:12 Austin Gotta love the one-hit wonders...
19:14 payload joined #parrot
19:14 chromatic joined #parrot
19:16 Coke no kakapo?
19:16 purl hmmm... no kakapo is a program framework, runtime library, and collection of useful functions for NQP programs. See http://code.google.com/p/kakapo-parrot/ for documentation and issue tracking, or http://gitorious.org/kakapo for source code.
19:16 Coke (you want "no, foo is", not "purl, no foo is")
19:17 Austin Thanks, coke.
19:17 Austin I had reached the conclusion that purl was just one more gal that I wasn't smart enough to communicate with...
19:18 Coke purl, austin?
19:18 purl austin is nice. or a city in Texas. or Mr. Hastings, if you're nasty.
19:20 whiteknight you're a city in Texas?
19:20 kurahaupo joined #parrot
19:22 cotto_work Don't mess with Austin.
19:26 whiteknight ...did the PCC branch get completely fixed?
19:27 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?
19:28 cotto_work bacek?
19:28 purl bacek is THE MANIAC or some sort of magical coding robot
19:28 cotto_work ^
19:29 chromatic Hey, some other people fix things too!
19:29 whiteknight chromatic++ # We love you too
19:30 bacek joined #parrot
19:30 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 whiteknight :)
19:30 whiteknight no, I was looking at those failures yesterday and I was lost
19:31 cotto_work and I don't need to swoop in and make things worse ;)
19:32 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.
19:32 Coke (adds a mostly-do-nothing option for Configure.pl --pirc)
19:33 cotto_work We've just had a release.  Merge away!
19:34 Coke I'd rather it was tied to something that enabled pirc. =-)
19:36 iblechbot joined #parrot
19:36 whiteknight Coke: I would merge it before it becomes bitrotten, or delete it
19:37 whiteknight chromatic: okay, with pcc out of the way, which branch to focus efforts on now: tt389_fix or fix_hll_mmd?
19:37 whiteknight can't do both, my simple brain produces weird cross-commits
19:37 chromatic TT #389; it has to be close.
19:37 whiteknight okay, will do
19:39 whiteknight There are a few other tickets that are going to be resolved shortly afte TT #389 lands
19:40 whiteknight 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
19:40 Coke I try to do that once a month or so.
19:40 whiteknight we should all be more like Coke
19:42 whiteknight ah, I forgot the tt389_fix branch was pre-makefile-cleanup
19:42 Coke so's the pcc branch. =-)
19:42 chromatic Yep, fun merge from trunk time.
19:43 tewk Has anyone written a pir parser in nqp-rx?
19:43 Coke ttbot?
19:43 purl ttbot is TapTinder build bot owned by mj41 and reporting http://tt.taptinder.org/bui​ldstatus/pr-Parrot/rp-trunk build errors.
19:43 whiteknight tewk: no, not yet
19:44 bacek morning
19:44 whiteknight I think NotFound had one he was working on in Winxed
19:44 bacek tewk, http://github.com/bacek/pir
19:44 chromatic bacek, we need to figure out how to reuse a CallContext for returning, when possible.
19:44 Coke smolder went red on winders.
19:45 Coke (ttbot seems fine, though)
19:45 * tewk 's law of vm implementation, get rid of all the C code. :)
19:45 bacek chromatic, no way.
19:45 Austin tewk++
19:45 chromatic Impossible or difficult or you don't want to do it?
19:46 whiteknight chromatic: is there any different?
19:46 dalek parrot: r44965 | petdance++ | trunk/src/pmc/orderedhash.pmc:
19:46 dalek parrot: localizing and consting.  Removed an unused auto variable.  Removed ancient docs.
19:46 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44965/
19:46 whiteknight sufficient dis-motivation is an impossible roadblock
19:46 chromatic There are many differences.
19:47 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.
19:48 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:49 joeri joined #parrot
19:49 bacek hang on a second.
19:49 bacek We _do_ reuse existing Context in set_results/returncc
19:50 whiteknight oh. good
19:50 chromatic Per my profiling, we create twice as many of them as we did before.
19:50 bacek ah, my bad.
19:50 bacek wrong branch
19:50 Coke svn slooooow
19:51 cotto_work git is fast
19:52 whiteknight chromatic: looks like about 29 failures in tt389_fix branch
19:53 whiteknight and there are some common themes here
19:53 whiteknight 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
19:53 whiteknight so we need a way to either share proxy or link together the RO variants to the regular ones
19:55 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
19:55 chromatic They should inherit methods.
19:56 whiteknight if (PMC_IS_NULL(meth)) return VTABLE_find_method(INTERP, attrs->parents, meth_name);
19:56 chromatic That should work.
19:57 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 Austin ww
19:58 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 AndChat| joined #parrot
19:58 NotFound whiteknight: I had one what?
19:59 chromatic That should be pretty quick, but we'll see how much time I have today.
19:59 chromatic Austin, the Krispy Kreme down the street has its two dozen for $14.99 sign up.
19:59 Coke chromatic: do you like donuts?
20:00 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...
20:01 chromatic I've eaten a doughnut or two in my life.  Voodoo Doughnuts... maple bars with bacon....
20:01 allison joined #parrot
20:01 Austin mmm..bacon
20:01 theory joined #parrot
20:01 Austin And yet, it sounds so wrong...
20:01 chromatic I've even recommended it to a Detroit Piston.
20:02 allison bacon is the new pony
20:02 * Austin is conflicted.
20:02 chromatic Though now that does undermine my argument somewhat.
20:02 Austin And Bycon is the new pynie?
20:02 allison bynie
20:02 Coke hurm. I would chip in for a KK gift card, but the page is nonresponsive.
20:02 Coke probably a post-donut sugar high.
20:02 bacek chromatic, try r44966
20:02 dalek parrot: r44966 | bacek++ | branches/pcc_hackathon_6Mar10/src/ops/core.ops:
20:02 dalek parrot: Reuse old CallContext in set_returns
20:02 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44966/
20:03 bacek yeah, this one :)
20:04 whiteknight bacek: you're right, that does look impossible
20:04 whiteknight :)
20:04 Austin Do they even have donuts in Bacek-ville?
20:04 bacek clock?
20:04 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 /
20:05 bacek Nothing is possible before 7am and first cup of coffee!
20:05 cotto_work #ps in 25
20:05 Austin Or maybe we have to send him a "Royale with cheese"
20:05 Austin Nope. KrispyKreme.com.au is up and running.
20:06 chromatic That's better, 6.609% faster than before.
20:07 whiteknight faster than it was in branch, or faster than trunk?
20:07 bacek whooo-hoo
20:07 bacek Any other obvious bottlenecks?
20:07 allison cotto: ah, I was just wondering. I guess my calendar auto adjusted with daylight saving time again
20:07 chromatic Faster than it was on branch.
20:07 chromatic Let me see what the profile says.
20:08 whiteknight it would be nice if this branch didn't hurt overall performance too much
20:09 whiteknight 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.
20:09 whiteknight where "before" is in trunk?
20:09 chromatic ... as we do on trunk, anyway.
20:09 whiteknight ok
20:09 whiteknight what's the cause of that increase?
20:10 chromatic Not sure.
20:10 chromatic Trunk has some improvements we might pull in anyway.
20:10 whiteknight are PMC METHODs reusing the context too?
20:10 chromatic Good question.
20:10 purl Yeah, it is. I'm stumped.
20:10 whiteknight that's because you're a stupid robot, purl
20:10 purl whiteknight: excuse me?
20:10 whiteknight you heard me
20:10 chromatic new_ret_continuation_pmc also creates a new CallContext.
20:11 allison_ joined #parrot
20:11 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.
20:12 Austin How expensive is that creation?
20:12 whiteknight the chatroom recognizes the gentleman from Australia
20:12 Austin Would it make sense to make the CallContext be a two-part object?
20:12 chromatic Once per PIR function invocation.
20:12 whiteknight Austin: individually, not bad. But it's for every Sub call
20:12 lucian joined #parrot
20:15 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 #parrot
20:15 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
20:15 cotto_work in the pcc branch
20:16 chromatic Hm, that's what the call graph shows though.
20:17 whiteknight Does RetContinuation.init create one?
20:17 cotto_work is that a optimized parrot?
20:17 cotto_work whiteknight, doesn't appear to
20:17 chromatic Yes, an optimized build.
20:19 dalek parrot: r44967 | bacek++ | branches/pcc_hackathon_6Mar10/src/call/args.c:
20:19 dalek parrot: Simplify merge_signature_for_tailcall. We don't use returns storage anymore.
20:19 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44967/
20:19 dalek parrot: r44968 | bacek++ | branches/pcc_hackathon_6Mar10/src/call/args.c:
20:19 dalek parrot: Remove csr_foo functions.
20:19 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44968/
20:19 chromatic Maybe it's all from Sub's invoke().
20:20 whiteknight dominos falling like a house of cards - Checkmate!
20:21 chromatic Parrot 2.4 "Velour" Released!
20:24 bacek chromatic, try again at r44969 :)
20:27 dalek tracwiki: v51 | cotto++ | ParrotQuotes
20:27 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Pa​rrotQuotes?version=51&amp;action=diff
20:31 whiteknight bacon?
20:31 purl bacon is, like, the pig's belly meat or http://xkcd.com/418/ or http://www.gratefulpalate.com/?p=Category_11 (Bacon of the Month Club) or http://nobodyscores.loosenu​tstudio.com/comix/bacon.gif or *meat candy* or http://www.facebook.com/pages/Bacon/43455991284
20:35 chromatic bacek, r44969 is 13.279% faster than r44965.
20:35 dalek parrot: r44969 | bacek++ | branches/pcc_hackathon_6Mar10/src/ops/core.ops:
20:35 chromatic It's about 3.8% slower than trunk.
20:35 dalek parrot: Use _caller_ Context in set_returns instead of current one.
20:35 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44969/
20:35 dalek parrot: r44970 | bacek++ | branches/pcc_hackathon_6Ma​r10/src/pmc/coroutine.pmc:
20:35 dalek parrot: Fix compiler warning
20:35 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44970/
20:35 dalek parrot: r44971 | bacek++ | branches/pcc_hackathon_6Mar​10/src/pmc/callcontext.pmc:
20:35 dalek parrot: Remove storage for returns from CallContext
20:35 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44971/
20:36 bacek chromatic, hmm...
20:36 bacek I'll take a look.
20:36 chromatic Trunk has a couple of improvements since the branch point though.
20:36 allison bacek: but set_returns is supposed to use current context
20:37 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
20:37 bacek allison, it use current context for values. But reuse caller context for store them.
20:39 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.
20:39 bacek allison, make test passed. Just because tailcall update caller's signature.
20:40 bacek chromatic, we have to find other 3%...
20:40 chromatic Let's merge from trunk first.
20:40 allison bacek: is the change for speed?
20:40 whiteknight don't merge from trunk
20:40 whiteknight here there be dragons!
20:40 bacek allison, 13%
20:41 whiteknight 13% faster?
20:41 bacek (according to chromatic's benchmarks)
20:41 bacek <chromatic> bacek, r44969 is 13.279% faster than r44965.
20:42 allison_ joined #parrot
20:42 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
20:43 chromatic We need tests for it then.
20:43 allison_ chromatic: no objections there
20:44 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
20:44 whiteknight and that signature information isn't neede for anything else?
20:45 allison_ caller->signature == CURRENT_CONTEXT(interp)
20:45 kjeldahl joined #parrot
20:46 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.
20:46 allison_ bacek: well, it's not necessarily an invariant, you can monkey around with it
20:47 allison bacek: but, when you *do* monkey around with it, the safe one to use is CURRENT_CONTEXT(interp)
20:47 allison (from inside the sub)
20:47 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
20:48 bacek Agreed. But it was in op set_returns.
20:48 elmex joined #parrot
20:48 allison bacek: are you sure that change gave the 13% speedup? since it seems to be a non-change?
20:48 allison bacek: were there other things changed in that commit?
20:48 whiteknight that's actually a good question.
20:48 whiteknight can we double-check the numbers?
20:49 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
20:49 chromatic I've double checked the numbers.
20:50 whiteknight chromatic: os using the caller's context there instead of the current context is a 13% gain?
20:50 whiteknight I
20:50 whiteknight 'm not sure how that adds up
20:50 allison whiteknight: no, it's reusing the callcontext object
20:50 chromatic It's reusing, not creating new.
20:50 whiteknight so why doesn't it reuse the current context?
20:51 allison bacek: set_returns is supposed to pass in the current call context to reuse it
20:51 allison bacek: (so that call args and return results use the same object)
20:52 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
20:52 allison bacek: except it has an extra layer of indirection that may not always be right
20:52 allison bacek: but, that's a quick fix
20:53 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
20:53 whiteknight chromatic: in the fixed_size_pools, how do we grow strings in place?
20:53 chromatic We don't, but that was always a realloc anyway.
20:54 bacek whiteknight, it usually allocates more memory than requested. And then reallocate it.
20:54 allison_ joined #parrot
20:54 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
20:55 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.
20:55 bacek and they already allocated
20:55 allison_ chromatic: it's back in the calling sub (the .param side for returns) that we need to predict the allocation
20:55 allison_ bacek: right
20:56 allison_ chromatic: but there, we have the advantage of declared return signatures
20:58 chromatic yes, we do now!
20:58 Coke update your gravatar!
20:58 whiteknight We can take a shortcut if the continuation being invoked is a RetContinuation
20:59 whiteknight in that case, we know we are returning to the caller, and we can monkey with the caller's context
20:59 whiteknight otherwise, we can do something harder and slower
20:59 Topic for #parrotis now #parrot Parrot 2.2.0 Released! | http://parrot.org/ | Channel log: http://irclog.perlgeek.de/parrot/today | Tasks: Fix compact_pool shenanigans | Fix HLL bugs (TT #389, #1040) | Prioritize Rakudo Needs
21:01 allison whiteknight: it's safer if the caller does the monkeying with the caller's context, and not much slower
21:02 allison 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 allison whiteknight: which doesn't work well when either side could be PIR code, C code, NCI code, etc
21:13 Coke I have to take off. Adios.
21:17 snl joined #parrot
21:25 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:27 chromatic Naively I expect (_, String) as the appropriate candidate.
21:27 Austin Me too.
21:27 Austin And yet, I'm getting the error message behind door number (_,_) instead.
21:28 Austin Which I how I come to ask...
21:29 Austin Is the string type <= 0?
21:30 chromatic -98, I think.
21:31 chromatic What if you decapitalize String?
21:31 Austin Yeah.
21:32 Austin I think the test at multidispatch.c:788 scores the _ (PMC) as the same score as String
21:32 jrtayloriv joined #parrot
21:33 Austin If I decap String -> string, I get failures earlier, where apparently that sort of thing isn't supported.
21:33 Austin It seems obvious that distance 0 (string == string) would beat 1.
21:33 chromatic Agreed.
21:34 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:35 chromatic We've never worried about such security before.
21:35 jrtayloriv ok, no problem then. I know that some people do. Thanks.
21:36 Austin Is this a bug in the scoring algorithm, that string->String scores the same as string->PMC ?
21:36 Austin (Assuming that they score the same, that is.)
21:37 Austin Whoops. Dinner time.
21:40 chromatic They shouldn't score the same; autoboxing a primitive into the appropriate PMC type costs one unit more.
21:40 chromatic I know that to be true, because I wrote that code.
21:40 dalek parrot: r44972 | bacek++ | branches/pcc_hackathon_6Mar10/src/call/args.c:
21:40 dalek parrot: Remove unused "new_sig" in build_sig_from_op
21:40 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44972/
21:41 chromatic bacek, within 2% of trunk now.
21:48 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:49 TiMBuS joined #parrot
21:50 chromatic Will work on that.
21:51 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:57 payload1 joined #parrot
21:57 dalek parrot: r44973 | petdance++ | trunk/src/pmc.c:
21:57 dalek parrot: consting and localizing.  Removed ancient HISTORY heading.
21:57 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44973/
22:04 lucian_ joined #parrot
22:07 bacek chromatic, we can speed up things in CallContext by using array of "cells", not linked list.
22:08 chromatic Definitely.
22:08 AndyA joined #parrot
22:09 chromatic Oh git merge, how you are almost boring in your workingness.
22:09 eternaleye joined #parrot
22:11 lucian joined #parrot
22:12 Whiteknight joined #parrot
22:13 dalek parrot: r44974 | chromatic++ | branches/pcc_hackathon_6Mar10/src/pmc/role.pmc:
22:13 dalek parrot: [PMC] Replaced deprecated Parrot_PCCINVOKE() with
22:13 dalek parrot: Parrot_pcc_invoke_method_from_c_args().
22:13 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44974/
22:13 lucian__ joined #parrot
22:19 AndyA_ joined #parrot
22:36 Whiteknight what's the merge plan for the pcc branch?
22:36 chromatic Funny you should ask.
22:37 Whiteknight HA HA HA
22:37 Whiteknight howsabout we create a new branch from current trunk, and merge the branch into that. Fix issues, go from there
22:38 chromatic What issues?
22:38 purl Whether mankind has free will is an /issue/.  If something doesn't work, that's a /problem/.
22:39 chromatic As far as I know, only TT #1511 applies.
22:45 chromatic bacek_at_work, after merging in trunk, branch is 1.936% slower.
22:47 dalek parrot: r44975 | chromatic++ | branches/pcc_hackathon_6Mar10 (153 files):
22:47 dalek parrot: Resynchronized branch with trunk.
22:47 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44975/
23:10 snarkyboojum joined #parrot
23:14 bacek_at_work chromatic, interesting. I'll take a look tonight.
23:16 chromatic Fixing CallContext storage will make up the difference.
23:17 payload1 joined #parrot
23:17 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.
23:21 treed lucian: Quick refresher, what's PDD15?
23:21 lucian treed: http://docs.parrot.org/parrot/latest/​html/docs/pdds/pdd15_objects.pod.html
23:21 * treed has been working on the object model for Cardinal.
23:21 lucian treed: did you start from raw PMCs?
23:21 treed I had to.
23:21 treed You can't subclass parrot;Class right now.
23:21 lucian treed: is it that bad?
23:22 treed It doesn't work at all.
23:22 treed I can't remember whether it crashes or what.
23:22 treed But it certainly doesn't make a new usable class.
23:22 lucian treed: from what i've been reading, parrots' object system is horribly designed for dynamic languages
23:22 treed That seems... weird.
23:22 lucian treed: it may suit java, but not ruby or python
23:22 treed Uh... hm.
23:23 treed 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
23:23 treed And it seems to work pretty well for that.
23:23 lucian treed: it claims to be good for all dynamic languages
23:23 treed Sure.
23:23 treed But I don't see how wPerl is not a dynamic language.
23:23 lucian treed: its object system is not
23:23 treed Nothing in PDD 16 runs out and says "This is not usable for Ruby"
23:24 treed 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
23:24 treed How so?
23:24 treed You subclass Class to make new cl asses.
23:24 treed Then you instantiate them.
23:24 lucian treed: i may be slightly wrong about ruby objects, but for python it's not really
23:24 treed I usedto do python.
23:24 treed What doesn't work for python?
23:25 lucian treed: adding arbitrary attributes to an object/class
23:25 treed not following
23:25 treed ARe you saying that's bad or good?
23:26 lucian treed: i don't know how to do this with parrot's objects http://gist.github.com/333802
23:26 lucian treed: it insists on having methods declared in the class
23:26 treed Oh.
23:26 treed Yeah.
23:26 treed In Ruby that's handled by eigenclasses.
23:27 lucian treed: in python, methods are just attributes
23:27 treed Okay.
23:27 treed So make a proc and store it in an attribute?
23:28 treed Objects can retrieve a method PMC for a method (for deferred method calls)
23:28 lucian treed: true, but then it'll be slower
23:28 treed Seems like what you'd want?
23:28 treed Slower than what?
23:28 chromatic Slower than C++.
23:28 lucian treed: than calling class methods
23:29 treed Maybe a little bit?
23:29 treed Retrieve an object and then do something to it
23:29 treed rather than doing something to an ojbect
23:29 lucian yes, pretty much
23:29 lucian my other concern is interoperability
23:30 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
23:30 treed Perl, Python, Ruby, have different MROs.
23:30 treed So that's an issue all its own.
23:30 treed Well, Perl6 and Python share C3 now.
23:30 treed But Ruby doesn't.
23:31 lucian C3?
23:31 purl i guess C3 is a little on the confusing side to start off with or teh hype or http://www.python.org/2.3/mro.html or http://use.perl.org/~autrijus/journal/25768 or most often broken by old Session::Store::FastMMap (<=0.03) or http://search.cpan.org/~flora/Class-C​3-0.21/lib/Class/C3.pm#What_is_C3%3F or http://search.cpan.org/~flora/Catal​yst-Runtime-5.80018/lib/Catalyst/Up​grading.pod#Issues_with_Class::C3
23:31 lucian right
23:32 lucian also, i don't understand how i could implement metaclasses over parrots objects
23:32 lucian it occurs to me that a prototypal object system may be a better base for ruby and python's objects
23:32 treed P6object may be what you're after
23:32 lucian for interoperabily in general in fact
23:33 treed and ruby would not want a prototypal system
23:33 treed Perl6 has a prototypal system
23:33 treed I'm having to rip it out for Ruby.
23:33 lucian i know, but you could implement ruby's/python's system on top of that
23:33 treed metaclasses in Ruby are instances of Class
23:33 lucian treed: pretty much the same in python
23:33 treed or of subclasses of Clas
23:34 treed so I'm not sure why you want prototype anything
23:34 treed BRB
23:35 dalek rakudo: 8b09f69 | jonathan++ |  (5 files):
23:35 dalek rakudo: Implement first cut of s/// syntax. Uses .subst under the hood, so it's as capable/incapable as .subst.
23:35 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/8​b09f698164aa2546ce4de4ca907e60375b26e7f
23:37 cotto_work 434023101/433886681
23:37 purl 1.00031441389186
23:38 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:43 lucian treed: the main problem with parrot's objects is the separation between attribute and method
23:44 chromatic They both go through vtables.
23:46 lucian chromatic: so they're not actually separate, PDD 15 just gives that impression?
23:47 chromatic Sure they're separate, but whatever you hide behind those vtables can do whatever it wants.
23:49 payload joined #parrot
23:51 lucian chromatic: right. so i could implement python's notion of everything in an object is an attribute
23:52 dalek parrot: r44976 | whiteknight++ | branches/find_method_object:
23:52 dalek parrot: deleting unused branch
23:52 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44976/
23:52 AndyA joined #parrot
23:54 lucian treed: i may be totally wrong in my understanding of parrot's objects
23:54 lucian treed: but in any case, there may be quite a few common thing between python and ruby objects
23:54 chromatic Certainly.
23:58 eternaleye joined #parrot

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced