Camelia, the Perl 6 bug

IRC log for #parrot, 2010-10-12

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:20 kid51 nwellnhof++ r49516 fixes problem on no-ICU machine
00:31 theory joined #parrot
00:45 dngor left #parrot
00:45 dngor joined #parrot
00:55 theory left #parrot
01:09 dukeleto bluescreen: i will take a look at it soon. also, I agree that reverse should act on SELF if no string is passed in.
01:10 kid51 left #parrot
01:10 bacek_at_work dukeleto, btw. STRINGs are immutable. String PMC aren't. We can have in-place String.reverse method.
01:11 bacek_at_work we can't have reverse_s opcode
01:27 aloha left #parrot
01:29 bacek_at_work left #parrot
01:29 aloha joined #parrot
01:30 bluescreen the more I think about it the more I think there should be a reverse_s_s opcode instead of passing a constant string to String PMC method
01:32 cotto aloha, aloha
01:38 bacek_at_work joined #parrot
01:41 plobsing bluescreen: we don't already have one???
01:43 plobsing bacek_at_work: why can't we have a reverse_s opcode? S-regs are pointers and are not immutable.
01:43 bacek_at_work plobsing, $S0 = $S1; reverse $S1; say $S0
01:44 plobsing yeah, and? $S0 remains the same. $S1 is inout for reverse_s.
01:45 plobsing there are already plenty of ops which behave this way.
01:46 bluescreen pblosing: if there is one is not working for me
01:46 plobsing I checked, can't find one. I still find it surprising.
01:48 bluescreen in-place smells to me, may lead to confusion
01:49 plobsing it behaves *exactly* the same as $I0 = $I1; inc $I1; say $I0
01:50 bluescreen hard to argue to that, but still
01:56 plobsing if you think about strings as value types (which is more or less what they are with immutable strings), it works
02:09 dukeleto so was darbelo's deletion of the String.reverse vtable in error? Should we just put it back?
02:11 cotto sounds like it
02:14 dukeleto i agree with bluescreen that we should have a reverse_s_s opcode, but that is orthogonal to this issue. String PMC methods should not have been deleted in relation to the immutable_strings branch, as far as I can tell.
02:14 cotto seen darbelo
02:14 aloha darbelo was last seen in #parrot 2 days 5 hours ago saying "Eh... nor my servers, for that matter.".
02:15 cotto aloha, seen darbelo
02:15 aloha cotto: darbelo was last seen in #parrot 2 days 5 hours ago saying "Eh... nor my servers, for that matter.".
02:15 cotto bacek++ for fixing that extra reply bug
02:22 bacek_at_work cotto, I didn't fix it. Factoid and Clock are still don't play nicely together.
02:22 bacek_at_work aloha, clock?
02:22 aloha bacek_at_work: bacek_at_work: LAX: Mon, 19:22 PDT / CHI: Mon, 21:22 CDT / NYC: Mon, 22:22 EDT / UTC: Tue, 02:22 UTC / LON: Tue, 03:22 BST / BER: Tue, 04:22 CEST / TOK: Tue, 11:22 JST / SYD: Tue, 13:22 EST
02:22 aloha bacek_at_work: Sorry, I don't know.
02:22 nwellnhof left #parrot
02:26 bluescreen left #parrot
02:27 theory joined #parrot
02:35 janus left #parrot
02:35 janus joined #parrot
02:41 dukeleto This is a nice visualization of performance data: http://luajit.org/performance.html
02:59 atrodo cotto> those mozilla guys are clever
03:01 cotto atrodo, they have to be if they don't want Chrome to eat their lunch.
03:01 cotto but yes, they are
03:02 atrodo hehe.  Yea, Chrome has put a bit of a dent in Mozilla lately.  I am however impressed on how well they've responded
03:03 cotto It's doing a great job of making the web suck less.
03:04 atrodo And with IE looking like it's catching up, should be good
03:04 atrodo too bad we still have to support IE7/IE8
03:05 atrodo But, the question becomes, does the fatval help lorito
03:07 cotto After thinking a but, I suspect that tagged pointers would be more valuable.  From what I can tell, they switched to fatvals because it was more efficient for floats, which have to be 64-bit in js and are how all numerical values are represented.
03:08 cotto Their three main reasons for the switch were all about floats.
03:09 cotto Since Parrot uses int values most of the time, there's no reason to take the space and efficiency hit of the extra 32 bits just to speed up floats.
03:09 atrodo From my thinking, we already have distinct types in the registers sets.  We'd only gain if we unified to one register set
03:10 cotto which would imply op-level polymorphism (or switches), which we've been moving away from
03:10 plobsing some HLLs already unify to one register set: $Px and don't bother (much) with $Ix, $Nx, and $Sx
03:11 plobsing cotto: not necessarily. you could have ops that expect a certain type and have undefined results if passed the wrong type
03:11 plobsing you could build a polymorphic op from those plus a switch construct. a halfway decent JIT would check once and then handle traces efficiently
03:13 plobsing The question for lorito is: is it easier for analyzers to look for unnecessary boxing, or to determine which INSP-set checks are redundant?
03:28 ruoso left #parrot
03:41 brianwisti joined #parrot
04:12 dukeleto plobsing: the way luaJIT uses tagged NaN's seems much closer to what Parrot would want
04:21 plobsing I'm really not sure of that. I'm more or less on the fence and thinking aloud at this point.
04:22 plobsing I'd like to think that fat-regs would avoid boxing, but I'm not sure how we'd fit object semantics for primitives on top of that (rakudo Ints still need to be able to do methods somehow)
04:24 davidfetter joined #parrot
05:01 theory left #parrot
05:12 theory joined #parrot
05:15 brianwisti left #parrot
05:46 pmichaud left #parrot
05:47 Util left #parrot
05:48 hatseflats left #parrot
05:52 Util joined #parrot
05:54 pmichaud joined #parrot
05:57 davidfetter left #parrot
06:07 uniejo joined #parrot
06:08 hatseflats joined #parrot
06:16 davidfetter joined #parrot
06:24 theory left #parrot
06:40 sjn left #parrot
06:49 sjn joined #parrot
06:50 mikehh left #parrot
06:50 mikehh joined #parrot
07:33 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#558) fulltest) at r49516 - Kubuntu 10.10 amd64 (gcc-4.5 with --optimize)
07:34 davidfetter mikehh++
07:34 mikehh davidfetter: :-}
07:35 mikehh doesn't seem much activity around here at the moment
07:35 davidfetter 0035 here in oakland. i'll hit the sack soon
07:36 dngor left #parrot
07:36 dngor joined #parrot
07:36 mikehh 08:36 for me, but I got to meet someone at 9
07:38 mikehh davidfetter: got a cousin who lives in Oakland
07:41 dngor_ joined #parrot
07:42 dngor left #parrot
07:44 davidfetter left #parrot
08:05 contingencyplan left #parrot
08:17 particle left #parrot
08:26 tadzik joined #parrot
08:32 tadzik left #parrot
08:35 tadzik joined #parrot
08:38 tadzik left #parrot
08:40 tadzik joined #parrot
08:40 tadzik left #parrot
08:40 tadzik joined #parrot
08:45 particle joined #parrot
08:50 tadzik left #parrot
09:13 bacek joined #parrot
10:30 dalek parrot: r49517 | bacek++ | branches/generational_gc/src/gc/gc_ms2.c:
10:30 dalek parrot: DRY: factor out seal_object function to swap vtable with WB variant.
10:30 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49517/
10:30 dalek parrot: r49518 | bacek++ | branches/generational_gc/src/vtable.tbl:
10:30 dalek parrot: Mark setprop and delprop vtables with :write pragma
10:30 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49518/
10:30 dalek parrot: r49519 | bacek++ | branches/generational_gc/src/gc/gc_ms2.c:
10:30 dalek parrot: DRY: factor out function to set Generation flags in PObj.
10:31 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49519/
10:31 dalek parrot: r49520 | bacek++ | branches/generational_gc/src/gc/gc_ms2.c:
10:31 dalek parrot: Propagate _metadata into object's generation
10:31 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49520/
10:31 dalek parrot: r49521 | bacek++ | branches/generational_gc/src/string/api.c:
10:31 dalek parrot: Properly cleanup GC flags in str_copy.
10:31 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49521/
10:41 bacek left #parrot
12:43 ruoso joined #parrot
12:47 particle left #parrot
12:48 particle joined #parrot
13:03 ambs joined #parrot
13:12 ambs left #parrot
13:20 bluescreen joined #parrot
13:21 Patterner left #parrot
13:30 Psyche^ joined #parrot
13:30 Psyche^ is now known as Patterner
13:49 uniejo left #parrot
13:58 davidfetter joined #parrot
13:59 Kulag is now known as Arktosis
14:05 jsut joined #parrot
14:07 theory joined #parrot
14:31 theory left #parrot
14:38 Patterner left #parrot
14:51 dmalcolm joined #parrot
15:25 dngor_ is now known as dngor
15:55 allison joined #parrot
16:03 davidfetter left #parrot
16:52 kid51 joined #parrot
17:00 brianwisti joined #parrot
17:01 Andy left #parrot
17:01 Andy joined #parrot
17:03 bluescreen left #parrot
17:04 bluescreen joined #parrot
17:14 kid51 left #parrot
17:15 brianwisti left #parrot
17:17 dukeleto top of the mornin'
17:45 contingencyplan joined #parrot
18:09 davidfetter joined #parrot
18:14 fperrad joined #parrot
18:54 cotto ~~
19:06 luben joined #parrot
19:11 nwellnhof joined #parrot
19:46 sorear seen tcurtis
19:46 aloha tcurtis was last seen in #parrot 4 days 6 hours ago joining the channel.
20:01 dzoe left #parrot
20:15 jsut_ joined #parrot
20:15 mikehh #ps in 15
20:15 chromatic joined #parrot
20:16 cotto might be a good time to report then
20:17 atrodo It's awfully quiet today for being a #ps day
20:18 cotto quiet days happen
20:18 dukeleto it is nice out in Portland :)
20:19 atrodo Actually, rather nice in Ohio too
20:19 cotto and here
20:20 sorear hello chromatic
20:20 jsut left #parrot
20:20 sorear chromatic: re. UNIVERSAL::isa and jnthn's metamodel work: To what extent does a new metamodel need the ability to fake superclasses?
20:30 dzoe joined #parrot
20:31 chromatic Fake how?
20:33 sorear A class claims to implement some role, but at a low level, doesn't
20:33 sorear like mock object stuff
20:34 chromatic With low-level role support, you don't have to lie.
20:36 sorear Elaborate?
20:38 chromatic U::i only exists because no one knew how to write OO code in Perl 5 for 12+ years.
20:38 chromatic If a metamodel supports two things--roles as types and a distinction between methods and functions--you don't have to play games with U::i.
20:42 bacek joined #parrot
20:42 bacek left #parrot
20:44 Topic for #parrot is now Parrot 2.8.0 released | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | close configure component tickets
20:45 chromatic bacek_at_work, I think global destruction is disabled in trunk
20:45 chromatic if so, we need to re-enable it for 2.9
20:46 sorear chromatic: How would you implement MockObject without the ability to override isa?
20:47 chromatic You override does or isa; my preference is does.
20:48 sorear as I am currently reading the 6model stuff, it doesn't allow for the possibility of overriding either
20:48 sorear unless you go down to the lowest level and write a custom REPR for your mocks
20:49 chromatic That's a problem then.
20:52 lucian left #parrot
20:52 sorear jnthn: Ping
20:53 fperrad left #parrot
20:53 chromatic I can understand having to use a custom metaclass if you want to override isa, but overriding does should be simple.
20:54 jnthn ...huh, the REPR knows bugger all about isa and does.
20:54 jnthn They're purely meta-class issues
20:54 jnthn And you can overload does as simply as $foo.HOW does role { method does($obj, $checkee) { ... } }
20:55 jnthn Or on a per-class basis with a method ^does($obj, $checkee) { ... }
20:55 jnthn 6model core doesn't *need* hooks for this.
20:55 jnthn The core at present doesn't even know what inheritance or role composition are.
20:56 chromatic When I sketched out a basic metamodel, I started from role composition.
20:56 jnthn The most it'll get to know about these is that an S-Table may have some efficient cachey thing hanging off it, but I don't plan to add that until we know its needed.
20:56 chromatic Not that you have to, but I did.
20:56 jnthn chromatic: TMTOWTDI.
20:57 jnthn I guess you could do it that way too...
20:57 sorear jnthn: does class Foo { method bar { } }; my Foo $bar = ...  imply a specific Hint for $bar.bar?
20:57 dukeleto jnthn: that is very interesting. Role composition comes out in the wash, as they say.
20:57 jnthn chromatic: I think that composing meta-classes out of roles is a good idea.
20:57 jnthn sorear: Yes
20:58 jnthn chromatic: I'm just not sure that the most primitive layer should be roles.
20:58 jnthn chromatic: Because then you don't have anything that you can, well, do anything with, without punning it...
20:58 sorear jnthn: given class Unrelated { multi method ^isa(Foo) { True }; method sam { } }; # what happens if the Hint for Foo.bar is used on Unrelated?
20:58 chromatic I couldn't find anything more primitive.
20:59 jnthn sorear: Sorry, I think I'm missing the point you're trying to make. It may be sleep deprevation...
20:59 hudnix left #parrot
21:00 jnthn sorear: I don't see how the hint would get used in that case though.
21:00 hudnix joined #parrot
21:01 jnthn sorear: Hint usage isn't really related to isa, it's related to the v-table that the meta-class computes.
21:02 sorear jnthn: AFAICT overriding isa breaks the type system, reinterpret_cast style
21:02 * jnthn should get this stuff implemented.
21:02 sorear because all the vtable indexes are meaningless
21:02 jnthn .^isa isn't going to be looked at in dispatch though.
21:02 jnthn It's more what .mro says
21:03 jnthn Well, even that's only about computing the indexes.
21:03 sorear Overriding .^isa means that my Foo $foo might not actually have a Foo
21:03 jnthn A HOW has to opt in to providing a v-table though.
21:03 jnthn (IN the current design)
21:03 sorear it might have an UNRELATED class that just happens to say "I support Foo"
21:03 jnthn Sure, that could happen.
21:03 sorear and because it's unrelated the vtable is completely different
21:03 sorear and stuff blows up
21:03 jnthn Right
21:04 jnthn Sure. It'll most likely blow up when the invocant type check fails in the method.
21:04 jnthn If people want ot play in meta-space, they're going to have to play with the right things.
21:04 jnthn Playing in HOW space means you're modifying the type system.
21:05 jnthn So of *course* you can break it.
21:05 jnthn V-tables are opt-out though. If somebody wants to be that dynamic, they can replace the class => ClassHOW mapping with something that refuses to do v-tables.
21:07 jnthn My only really big concern is going to be if we find a way to break things that doesn't involve playing in HOW-space.
21:09 jnthn Either way, I'm fairly comfortable that it's going to blow up in a "type check catches you later" or "weird behavior" way rather than a segfaulty way.
21:10 chromatic An .isa() that lies should only disable optimizations, as I see it.
21:12 dukeleto jnthn: does the way you designed your meta object protocol have a name?
21:12 jnthn chromatic: And how, exactly, do we declaratively know whether an isa is "lieing"?
21:12 jnthn gah, lying
21:12 jnthn ...no, wait...
21:12 jnthn ...oh grr, spelling. :
21:12 jnthn dukeleto: Hubris? ;-)
21:13 jnthn dukeleto: It's got elements of a lot of other meta-models I've seen, but isn't quite like any other one I've seen.
21:13 jnthn dukeleto: But tbh, I don't recall seeing a good taxonomy for meta-models to really use to compare them.
21:14 chromatic You could swap out the metamodel from MMDoesntLie to MMDoesLie and just do an identity check.
21:15 dukeleto jnthn: perhaps the ontologists haven't gotten to study meta-object protocols yet. I'll inform them.
21:15 jnthn :-)
21:16 dukeleto jnthn: i deal with a lot of ontologies in bioinformatics, does it show?
21:16 dukeleto jnthn: sometimes they drive me crazy
21:16 Util dukeleto: 100% should be unattainable, since we do not test all our client languages when we release,
21:16 Util we may break them, so any form of "minimum version" has its limits.
21:17 dukeleto Util: i agree, and that is for #ps :)
21:19 jnthn chromatic: It may be easier for me to grok this if we start from your use case, but I suspect I'm too sleep deprived now for that to be a good idea. :/
21:20 chromatic Fair enough.
21:21 jnthn Can try another day. Long story short though, .^isa and .^does are overridable easily, and there will be ways to suppress optimizations; in particular, a meta-class can simply say "no, I don't know/don't wish to supply a v-table", and we can even do something to *force* the v-table to never be looked at if we really need it.
21:21 jnthn (that is, globally)
21:25 bluescreen left #parrot
21:28 theory joined #parrot
21:35 dukeleto jnthn: that sounds like fun stuff. I am greatly enjoying watching 6model happen.
21:50 bacek joined #parrot
21:52 chromatic http://lambda-the-ultimate.org/node/2391
21:52 chromatic http://lambda-the-ultimate.​org/node/4094#comment-62100
22:09 theory left #parrot
22:09 theory joined #parrot
22:16 cotto Say I were to split tickets up into groups for people to go through looking for candidates for the "newbie" tag.  Would groups of 20 be reasonable?
22:16 chromatic Seems reasonable.
22:20 nwellnhof left #parrot
22:30 dukeleto cotto: +1 to 20/group
22:31 bacek left #parrot
22:33 bacek joined #parrot
22:51 cotto done
22:52 cotto http://trac.parrot.org/parr​ot/wiki/NewbieTicketTagging
22:54 bacek left #parrot
22:57 dmalcolm left #parrot
23:05 whiteknight joined #parrot
23:06 cotto hio whiteknight
23:06 whiteknight hello cotto
23:08 bacek joined #parrot
23:14 davidfetter left #parrot
23:18 cotto bacek, how big of a job would it be to give the gc an interface for specifying a maximum size for gc allocation?
23:18 cotto mainly, would it be a good newbie task?
23:20 chromatic Most of it is doable by a C capable novice.
23:21 bacek left #parrot
23:22 bluescreen joined #parrot
23:34 Andy left #parrot
23:34 GeJ left #parrot
23:34 mj41_ joined #parrot
23:34 GeJ joined #parrot
23:34 whiteknight_ joined #parrot
23:34 TiMBuS_ left #parrot
23:34 wagle left #parrot
23:34 d4l3k_ joined #parrot
23:34 Kulag joined #parrot
23:34 wagle joined #parrot
23:34 baest left #parrot
23:34 jhelwig left #parrot
23:34 baest joined #parrot
23:34 p6eval left #parrot
23:34 TiMBuS joined #parrot
23:34 jjore left #parrot
23:34 Arktosis left #parrot
23:34 p6eval joined #parrot
23:34 perlite_ joined #parrot
23:34 jjore joined #parrot
23:34 whiteknight left #parrot
23:34 whiteknight_ is now known as whiteknight
23:34 dalek left #parrot
23:35 perlite left #parrot
23:35 d4l3k_ is now known as dalek
23:36 bacek joined #parrot
23:36 mj41 left #parrot
23:36 mj41_ is now known as mj41
23:38 dalek parrot: r49522 | cotto++ | trunk/src/ops/core.ops:
23:38 dalek parrot: [ops] udpate the name of a const
23:38 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49522/

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

Parrot | source cross referenced