Parrot 2.8.0 released | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | smoke GC-related branches and attack GC tickets
Set by moderator on 1 October 2010.
kid51 nwellnhof++ r49516 fixes problem on no-ICU machine 00:20
00:31 theory joined 00:45 dngor left, dngor joined 00:55 theory left
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:09
01:10 kid51 left
bacek_at_work dukeleto, btw. STRINGs are immutable. String PMC aren't. We can have in-place String.reverse method. 01:10
we can't have reverse_s opcode 01:11
01:27 aloha left 01:29 bacek_at_work left, aloha joined
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:30
cotto aloha, aloha 01:32
01:38 bacek_at_work joined
plobsing bluescreen: we don't already have one??? 01:41
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
plobsing yeah, and? $S0 remains the same. $S1 is inout for reverse_s. 01:44
there are already plenty of ops which behave this way. 01:45
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.
bluescreen in-place smells to me, may lead to confusion 01:48
plobsing it behaves *exactly* the same as $I0 = $I1; inc $I1; say $I0 01:49
bluescreen hard to argue to that, but still 01:50
plobsing if you think about strings as value types (which is more or less what they are with immutable strings), it works 01:56
dukeleto so was darbelo's deletion of the String.reverse vtable in error? Should we just put it back? 02:09
cotto sounds like it 02:11
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
aloha darbelo was last seen in #parrot 2 days 5 hours ago saying "Eh... nor my servers, for that matter.".
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.".
cotto bacek++ for fixing that extra reply bug
bacek_at_work cotto, I didn't fix it. Factoid and Clock are still don't play nicely together. 02:22
aloha, clock?
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
bacek_at_work: Sorry, I don't know.
02:22 nwellnhof left 02:26 bluescreen left 02:27 theory joined 02:35 janus left, janus joined
dukeleto This is a nice visualization of performance data: luajit.org/performance.html 02:41
atrodo cotto> those mozilla guys are clever 02:59
cotto atrodo, they have to be if they don't want Chrome to eat their lunch. 03:01
but yes, they are
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:02
cotto It's doing a great job of making the web suck less. 03:03
atrodo And with IE looking like it's catching up, should be good 03:04
too bad we still have to support IE7/IE8
But, the question becomes, does the fatval help lorito 03:05
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:07
Their three main reasons for the switch were all about floats. 03:08
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
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
cotto: not necessarily. you could have ops that expect a certain type and have undefined results if passed the wrong type 03:11
you could build a polymorphic op from those plus a switch construct. a halfway decent JIT would check once and then handle traces efficiently
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:13
03:28 ruoso left 03:41 brianwisti joined
dukeleto plobsing: the way luaJIT uses tagged NaN's seems much closer to what Parrot would want 04:12
plobsing I'm really not sure of that. I'm more or less on the fence and thinking aloud at this point. 04:21
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:22
04:24 davidfetter joined 05:01 theory left 05:12 theory joined 05:15 brianwisti left 05:46 pmichaud left 05:47 Util left 05:48 hatseflats left 05:52 Util joined 05:54 pmichaud joined 05:57 davidfetter left 06:07 uniejo joined 06:08 hatseflats joined 06:16 davidfetter joined 06:24 theory left 06:40 sjn left 06:49 sjn joined 06:50 mikehh left, mikehh joined
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:33
davidfetter mikehh++ 07:34
mikehh davidfetter: :-}
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, dngor joined
mikehh 08:36 for me, but I got to meet someone at 9 07:36
davidfetter: got a cousin who lives in Oakland 07:38
07:41 dngor_ joined 07:42 dngor left 07:44 davidfetter left 08:05 contingencyplan left 08:17 particle left 08:26 tadzik joined 08:32 tadzik left 08:35 tadzik joined 08:38 tadzik left 08:40 tadzik joined, tadzik left, tadzik joined 08:45 particle joined 08:50 tadzik left 09:13 bacek joined
dalek rrot: r49517 | bacek++ | branches/generational_gc/src/gc/gc_ms2.c:
DRY: factor out seal_object function to swap vtable with WB variant.
10:30
rrot: r49518 | bacek++ | branches/generational_gc/src/vtable.tbl:
Mark setprop and delprop vtables with :write pragma
rrot: r49519 | bacek++ | branches/generational_gc/src/gc/gc_ms2.c:
DRY: factor out function to set Generation flags in PObj.
rrot: r49520 | bacek++ | branches/generational_gc/src/gc/gc_ms2.c:
Propagate _metadata into object's generation
rrot: r49521 | bacek++ | branches/generational_gc/src/string/api.c:
Properly cleanup GC flags in str_copy.
10:41 bacek left 12:43 ruoso joined 12:47 particle left 12:48 particle joined 13:03 ambs joined 13:12 ambs left 13:20 bluescreen joined 13:21 Patterner left 13:30 Psyche^ joined, Psyche^ is now known as Patterner 13:49 uniejo left 13:58 davidfetter joined 13:59 Kulag is now known as Arktosis 14:05 jsut joined 14:07 theory joined 14:31 theory left 14:38 Patterner left 14:51 dmalcolm joined 15:25 dngor_ is now known as dngor 15:55 allison joined 16:03 davidfetter left 16:52 kid51 joined 17:00 brianwisti joined 17:01 Andy left, Andy joined 17:03 bluescreen left 17:04 bluescreen joined 17:14 kid51 left 17:15 brianwisti left
dukeleto top of the mornin' 17:17
17:45 contingencyplan joined 18:09 davidfetter joined 18:14 fperrad joined
cotto ~~ 18:54
19:06 luben joined 19:11 nwellnhof joined
sorear seen tcurtis 19:46
aloha tcurtis was last seen in #parrot 4 days 6 hours ago joining the channel.
20:01 dzoe left 20:15 jsut_ joined
mikehh #ps in 15 20:15
20:15 chromatic joined
cotto might be a good time to report then 20:16
atrodo It's awfully quiet today for being a #ps day 20:17
cotto quiet days happen 20:18
dukeleto it is nice out in Portland :)
atrodo Actually, rather nice in Ohio too 20:19
cotto and here
sorear hello chromatic 20:20
20:20 jsut left
sorear chromatic: re. UNIVERSAL::isa and jnthn's metamodel work: To what extent does a new metamodel need the ability to fake superclasses? 20:20
20:30 dzoe joined
chromatic Fake how? 20:31
sorear A class claims to implement some role, but at a low level, doesn't 20:33
like mock object stuff
chromatic With low-level role support, you don't have to lie. 20:34
sorear Elaborate? 20:36
chromatic U::i only exists because no one knew how to write OO code in Perl 5 for 12+ years. 20:38
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, bacek left
moderator Parrot 2.8.0 released | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | close configure component tickets 20:44
chromatic bacek_at_work, I think global destruction is disabled in trunk 20:45
if so, we need to re-enable it for 2.9
sorear chromatic: How would you implement MockObject without the ability to override isa? 20:46
chromatic You override does or isa; my preference is does. 20:47
sorear as I am currently reading the 6model stuff, it doesn't allow for the possibility of overriding either 20:48
unless you go down to the lowest level and write a custom REPR for your mocks
chromatic That's a problem then. 20:49
20:52 lucian left
sorear jnthn: Ping 20:52
20:53 fperrad left
chromatic I can understand having to use a custom metaclass if you want to override isa, but overriding does should be simple. 20:53
jnthn ...huh, the REPR knows bugger all about isa and does. 20:54
They're purely meta-class issues
And you can overload does as simply as $foo.HOW does role { method does($obj, $checkee) { ... } }
Or on a per-class basis with a method ^does($obj, $checkee) { ... } 20:55
6model core doesn't *need* hooks for this.
The core at present doesn't even know what inheritance or role composition are.
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.
chromatic Not that you have to, but I did.
jnthn chromatic: TMTOWTDI.
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?
dukeleto jnthn: that is very interesting. Role composition comes out in the wash, as they say.
jnthn chromatic: I think that composing meta-classes out of roles is a good idea.
sorear: Yes
chromatic: I'm just not sure that the most primitive layer should be roles. 20:58
chromatic: Because then you don't have anything that you can, well, do anything with, without punning it...
sorear jnthn: given class Unrelated { multi method ^isa(Foo) { True }; method sam { } }; # what happens if the Hint for Foo.bar is used on Unrelated?
chromatic I couldn't find anything more primitive.
jnthn sorear: Sorry, I think I'm missing the point you're trying to make. It may be sleep deprevation... 20:59
20:59 hudnix left
jnthn sorear: I don't see how the hint would get used in that case though. 21:00
21:00 hudnix joined
jnthn sorear: Hint usage isn't really related to isa, it's related to the v-table that the meta-class computes. 21:01
sorear jnthn: AFAICT overriding isa breaks the type system, reinterpret_cast style 21:02
jnthn should get this stuff implemented.
sorear because all the vtable indexes are meaningless
jnthn .^isa isn't going to be looked at in dispatch though.
It's more what .mro says
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
jnthn A HOW has to opt in to providing a v-table though.
(IN the current design)
sorear it might have an UNRELATED class that just happens to say "I support Foo"
jnthn Sure, that could happen.
sorear and because it's unrelated the vtable is completely different
and stuff blows up
jnthn Right
Sure. It'll most likely blow up when the invocant type check fails in the method. 21:04
If people want ot play in meta-space, they're going to have to play with the right things.
Playing in HOW space means you're modifying the type system.
So of *course* you can break it. 21:05
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.
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:07
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:09
chromatic An .isa() that lies should only disable optimizations, as I see it. 21:10
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"?
gah, lying
...no, wait...
...oh grr, spelling. :
dukeleto: Hubris? ;-)
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
dukeleto: But tbh, I don't recall seeing a good taxonomy for meta-models to really use to compare them.
chromatic You could swap out the metamodel from MMDoesntLie to MMDoesLie and just do an identity check. 21:14
dukeleto jnthn: perhaps the ontologists haven't gotten to study meta-object protocols yet. I'll inform them. 21:15
jnthn :-)
dukeleto jnthn: i deal with a lot of ontologies in bioinformatics, does it show? 21:16
jnthn: sometimes they drive me crazy
Util dukeleto: 100% should be unattainable, since we do not test all our client languages when we release,
we may break them, so any form of "minimum version" has its limits.
dukeleto Util: i agree, and that is for #ps :) 21:17
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:19
chromatic Fair enough. 21:20
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
(that is, globally)
21:25 bluescreen left 21:28 theory joined
dukeleto jnthn: that sounds like fun stuff. I am greatly enjoying watching 6model happen. 21:35
21:50 bacek joined
chromatic lambda-the-ultimate.org/node/2391 21:52
lambda-the-ultimate.org/node/4094#comment-62100
22:09 theory left, theory joined
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
dukeleto cotto: +1 to 20/group 22:30
22:31 bacek left 22:33 bacek joined
cotto done 22:51
trac.parrot.org/parrot/wiki/NewbieTicketTagging 22:52
22:54 bacek left 22:57 dmalcolm left 23:05 whiteknight joined
cotto hio whiteknight 23:06
whiteknight hello cotto
23:08 bacek joined 23:14 davidfetter left
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
mainly, would it be a good newbie task?
chromatic Most of it is doable by a C capable novice. 23:20
23:21 bacek left 23:22 bluescreen joined 23:34 Andy left, GeJ left, mj41_ joined, GeJ joined, whiteknight_ joined, TiMBuS_ left, wagle left, d4l3k_ joined, Kulag joined, wagle joined, baest left, jhelwig left, baest joined, p6eval left, TiMBuS joined, jjore left, Arktosis left, p6eval joined, perlite_ joined, jjore joined, whiteknight left, whiteknight_ is now known as whiteknight, dalek left 23:35 perlite left, d4l3k_ is now known as dalek 23:36 bacek joined, mj41 left, mj41_ is now known as mj41
dalek rrot: r49522 | cotto++ | trunk/src/ops/core.ops:
[ops] udpate the name of a const
23:38