|
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 | |