==== Channel ##pypy: 03/30/05 ====

[00:44] _hannes (mqjhgig@i3ED6B1F1.versanet.de) joined #pypy.

[00:49] <freakazoid> hiya _hannes

----- silence for 3 hr and 47 minutes -----

[04:36] stakkars (cgyasps@i3ED6B1F1.versanet.de) left irc: Read error: 113 (No route to host)

----- silence for 16 minutes -----

[04:52] lac (~lac@c-51c6e055.1321-1-64736c11.cust.bredbandsbolaget.se) left irc: Read error: 110 (Connection timed out)

[04:52] idnar (mithrandi@idnar.user) left irc: Read error: 110 (Connection timed out)

----- silence for 22 minutes -----

[05:14] freakazoid (seanl@pat100.wirelesssecuritycorp.com) left #pypy.

----- silence for 2 hr and 3 minutes -----

[07:17] _hannes (mqjhgig@i3ED6B1F1.versanet.de) left irc: "utz utz utz"

----- silence for 17 minutes -----

[07:34] -dmwaters (dmwaters@dmwaters-osuosl.staff.freenode) to $*- {global notice} Hi all! In about 1.5 hours, I'm going to be rebooting the main US hub for a kernel update. This willbe the last of the fixes for the boxes that had the buggy kernel code. This reboot will also take down www.freenode.net briefly. Maintainence should only take about 10 minutes at the most. I apologize for the late notice.

[07:43] hpk (~hpk@merlinux.de) left irc: Read error: 145 (Connection timed out)

[07:49] hpk (~hpk@merlinux.de) joined #pypy.

----- silence for 28 minutes -----

[08:17] adim (~adim@logilab.net2.nerim.net) joined #pypy.

----- silence for 44 minutes -----

[09:01] adim (~adim@logilab.net2.nerim.net) got netsplit.

[09:01] jriehl (~jriehl@sidewinder.cs.uchicago.edu) got netsplit.

[09:01] Fade (~fade@outrider.deepsky.com) got netsplit.

[09:01] eikeon (~eikeon@dsl092-168-236.wdc2.dsl.speakeasy.net) got netsplit.

[09:01] jacob22 (jacob@enzo.strakt.com) got netsplit.

[09:01] hpk (~hpk@merlinux.de) got netsplit.

[09:01] etrepum (bob@ayunami.redivi.com) got netsplit.

[09:01] thingie25 (~rmt38@valhalla.ccp.cc) got netsplit.

[09:01] tic (~vision@c-996e73d5.019-35-67626717.cust.bredbandsbolaget.se) got netsplit.

[09:01] mwh (~user@pc150.maths.bris.ac.uk) got netsplit.

[09:02] pyb0t (pybot@nimrod.terra-link.net) left #pypy.

[09:02] pyb0t joined #pypy.

[09:02] #pypy: mode change '+n ' by kornbluth.freenode.net

[09:02] -:#pypy- *** Notice -- TS for #pypy changed from 1112166175 to 1076841723

[09:02] hpk (~hpk@merlinux.de) joined #pypy.

[09:02] jriehl (~jriehl@sidewinder.cs.uchicago.edu) joined #pypy.

[09:02] eikeon (~eikeon@dsl092-168-236.wdc2.dsl.speakeasy.net) joined #pypy.

[09:02] etrepum (bob@ayunami.redivi.com) joined #pypy.

[09:02] Fade (~fade@outrider.deepsky.com) joined #pypy.

[09:02] jacob22 (jacob@enzo.strakt.com) joined #pypy.

[09:02] thingie25 (~rmt38@valhalla.ccp.cc) joined #pypy.

[09:02] Topic changed on #pypy by !irc.freenode.net: Upcoming PyCon sprint -- http://codespeak.net/pipermail/pypy-dev/2005q1/001874.html -- chanlog available via http://nimrod.terra-link.net/pypy/

[09:02] tic (~vision@c-996e73d5.019-35-67626717.cust.bredbandsbolaget.se) joined #pypy.

[09:03] mwh (~user@pc150.maths.bris.ac.uk) joined #pypy.

[09:03] adim (~adim@logilab.net2.nerim.net) joined #pypy.

----- silence for 19 minutes -----

[09:22] stakkars (oxaafwkb@i3ED6B1F1.versanet.de) joined #pypy.

----- silence for 46 minutes -----

[10:08] stakkars (oxaafwkb@i3ED6B1F1.versanet.de) left irc: Read error: 54 (Connection reset by peer)

[10:13] stakkars (sxjtdkgv@i3ED6B1F1.versanet.de) joined #pypy.

[10:21] stakkars (sxjtdkgv@i3ED6B1F1.versanet.de) left irc: Read error: 54 (Connection reset by peer)

[10:28] stakkars (senayjn@i3ED6B1F1.versanet.de) joined #pypy.

----- silence for 59 minutes -----

[11:27] ludal (~ludal@logilab.net2.nerim.net) joined #pypy.

----- silence for 33 minutes -----

[12:00] ludal (~ludal@logilab.net2.nerim.net) left irc: "Download Gaim: http://gaim.sourceforge.net/";

[12:01] pedronis (~Samuele_P@c-178b70d5.022-54-67626719.cust.bredbandsbolaget.se) joined #pypy.

[12:05] ludal (~ludal@logilab.net2.nerim.net) joined #pypy.

----- silence for 1 hr and 7 minutes -----

[13:12] <stakkars> bug alert in flow space:

[13:12] <stakkars> tried to flow operation.py, which contains yield statements.

[13:13] <stakkars> This is translated falsely into a return statement, instead of raising some error.

[13:22] pedronis (~Samuele_P@c-178b70d5.022-54-67626719.cust.bredbandsbolaget.se) left irc: "Chatzilla 0.9.66 [Mozilla rv:1.7.5/20041107]"

----- silence for 17 minutes -----

[13:39] jacob22 (jacob@enzo.strakt.com) left irc: Read error: 110 (Connection timed out)

----- silence for 1 hr and 15 minutes -----

[14:54] pedronis (~Samuele_P@c-178b70d5.022-54-67626719.cust.bredbandsbolaget.se) joined #pypy.

----- silence for 39 minutes -----

[15:33] jacob22|office (jacob@enzo.strakt.com) joined #pypy.

----- silence for 16 minutes -----

[15:49] tic (~vision@c-996e73d5.019-35-67626717.cust.bredbandsbolaget.se) left irc: Read error: 145 (Connection timed out)

[15:52] tic (~vision@c-996e73d5.019-35-67626717.cust.bredbandsbolaget.se) joined #pypy.

----- silence for 55 minutes -----

[16:47] adim (adim@logilab.net2.nerim.net) left #pypy.

[16:56] stakkars (senayjn@i3ED6B1F1.versanet.de) left irc: Read error: 60 (Operation timed out)

----- silence for 51 minutes -----

[17:47] stakkars (hqadcyu@dsl-62-220-11-79.berlikomm.net) joined #pypy.

[17:48] arigo (~arigo@134.99.112.244) joined #pypy.

[17:55] arigo (~arigo@134.99.112.244) left irc: Remote closed the connection

[17:58] arigo (~arigo@stups.cs.uni-duesseldorf.de) joined #pypy.

[18:00] arigo (~arigo@stups.cs.uni-duesseldorf.de) left irc: Client Quit

[18:01] arigo (~arigo@134.99.112.244) joined #pypy.

----- silence for 41 minutes -----

[18:42] _hannes (mbfmry@dsl-62-220-11-79.berlikomm.net) joined #pypy.

[18:49] mwh2 (~user@modem-41.erendis.dialup.pol.co.uk) joined #pypy.

[18:50] <mwh2> man, CVS over a slow link is painful

[18:50] <arigo> yup

[18:51] <mwh2> i seem to have implemented __slots__ for subclasses of variable length types

[18:51] <stakkars> hi

[18:51] <arigo> oooh

[18:51] <arigo> hi stakkars

[18:51] <mwh2> and weakrefs to instances of same

[18:51] <mwh2> which is where this started

[18:53] <arigo> I guess so

[18:53] <mwh2> assuming i manage to extract a patch, can you take a quick look at it?

[18:53] <arigo> yes

[18:53] <mwh2> thanks

[18:54] Action: mwh2 grinds his teeth

[18:55] <mwh2> ok

[18:55] <mwh2> now i gring my teeth at SF

[18:57] <mwh2> i was hoping that it would be possible to special case __dict__ and __weakref__ less

[18:57] <arigo> ah, it's not possible

[18:57] <arigo> ?

[18:59] <mwh2> i'm not sure

[18:59] <mwh2> with ordinary __slots__ indexed from the end it is necessary to subtract the offset from the basicsize of the 8type defining the slot*

[19:00] <mwh2> whereas with __dict__ you need to update tp_dictoffset in subclasses, if the subclasses add more slots

[19:01] <mwh2> (which i think my current effort gets wrong, by the by)

[19:04] <arigo> ah yes, __dict__ can be inherited from two parent classes even if they put it at a different location

[19:04] <mwh2> uh?

[19:04] <mwh2> that's not what i meant

[19:05] <mwh2> and also, is that true?

[19:05] <arigo> yes

[19:05] <arigo> well I think so

[19:06] <arigo> yes, definitely

[19:06] <mwh2> example?

[19:06] Action: mwh2 think he's misunderstanding

[19:06] <arigo> class A(object): __slots__ = ['x']

[19:06] <arigo> class B(A): pass

[19:06] <arigo> class C(object): pass

[19:06] <arigo> class D(B,C): pass

[19:06] <arigo> here B and C's tp_dictoffset are different

[19:08] <mwh2> hmm, yes

[19:09] <arigo> so what I thought you meant was,

[19:09] <mwh2> ok, that's not the problem i was thinking of, but it's a different angle on the same thing

[19:09] <arigo> that slots for varsized types are always added at the end,

[19:09] <arigo> pushing the tp_dictoffset further down the negative numbers

[19:10] <arigo> which makes sense I guess

[19:10] <mwh2> yes

[19:10] <mwh2> my patch fails to do that

[19:10] <mwh2> well, do that enough

[19:11] <mwh2> __weakref__ will push tp_dictoffset down, but other slots don't

[19:11] <arigo> ah

[19:11] ludal (~ludal@logilab.net2.nerim.net) left irc: "Download Gaim: http://gaim.sourceforge.net/";

[19:11] <arigo> is there an ordering between __dict__ and __weakref__ that needs to be enforced?

[19:11] <mwh2> no

[19:12] <mwh2> can't

[19:12] <mwh2> class B(str):

[19:12] <mwh2> __slots__ = ['__weakref__']

[19:12] <mwh2> class C(B):

[19:12] <mwh2> __slots__ = ['__dict__']

[19:12] <mwh2> class D(str):

[19:12] <mwh2> __slots__ = ['__dict__']

[19:12] <mwh2> class E(D):

[19:12] <mwh2> __slots__ = ['__weakref__']

[19:13] <arigo> well you are allowed to reorder tp_dictoffset and tp_weakrefoffset when subclassing

[19:13] <arigo> the point was that extra_ivars() seems to assume tp_dictoffset is before tp_weaklistoffset

[19:13] <arigo> which is what makes subclassing two classes that subclass str impossible

[19:13] <arigo> (I think)

[19:14] <mwh2> ah yes, my patch attacks that function with a sawblade

[19:14] <arigo> :-)

[19:14] <mwh2> if you could review that bit ... :)

[19:14] <arigo> so why does __weakref__ push __dict__ down in your patch?

[19:15] <mwh2> well, in cases like E above

[19:15] <mwh2> but maybe it's not necessary at all

[19:15] <mwh2> hmm, it's probably not

[19:15] <mwh2> maybe you can always leave the dict and the weaklist at the very end?

[19:16] <arigo> this would make sense

[19:16] <mwh2> gah, i've been thinking pretty hard about this stuff and it still confuses the hell out of me

[19:16] <arigo> hum

[19:17] <arigo> what about

[19:17] <arigo> PyModuleObject

[19:17] <arigo> its tp_dictoffset is hard-wired to offsetof(md_dict)

[19:17] <mwh2> well, that's fine

[19:17] <arigo> in this situation, it would be very bad to have it move elsewhere in a subclass

[19:18] <mwh2> maybe you can always leave the dict and the weaklist at the very end *for subclasses of variable length types where the variable length base doesn't have a dict*?

[19:18] <arigo> what about multiple inheritance ?

[19:18] <mwh2> what about it?

[19:18] <mwh2> you can only have one variable-length base, surely

[19:19] <arigo> I'm thinking about a CPython crasher

[19:19] <arigo> subclassing type Module in a way that makes the dictoffset go elsewhere

[19:19] <mwh2> don't see how that can happen

[19:20] <mwh2> if class T(ModuleType, C): pass is going to work, solid_type(C) \in {object, ModuleType}

[19:21] <mwh2> and this works today

[19:21] <arigo> ok

[19:21] idnar (mithrandi@idnar.user) joined #pypy.

[19:21] <mwh2> class T(ModuleType, str): is doomed

[19:21] <mwh2> anyway

[19:21] <mwh2> i have to run soonish

[19:22] <mwh2> thanks for any comments you may have :)

[19:23] <arigo> argh!

[19:23] <arigo> class A(object): __slots__ = ['x']

[19:23] <arigo> class B(A, ModuleType): pass

[19:23] <arigo> works but shouldn't

[19:23] <mwh2> today?

[19:23] <arigo> yes

[19:23] <mwh2> and crashes?

[19:23] <arigo> b = B(); b.x

[19:23] <arigo> gives the module dictionary

[19:23] <arigo> and b.__dict__ is empty

[19:24] <mwh2> haha

[19:24] <mwh2> in a very dark way, of course

[19:24] <arigo> indeed

[19:25] <arigo> b.attr = "value"

[19:25] <arigo> stores attr into b.__dict__

[19:25] <arigo> which is not the md_dict attribute seen by CPython

[19:27] <mwh2> i'm confused as to how this isn't crashing CPython

[19:27] senra (~senra@200.213.107.95) joined #pypy.

[19:27] <arigo> the 'x' slot has just stolen the md_dict position

[19:27] <arigo> I don't see an obvious way to crash it

[19:29] <mwh2> oh well

[19:29] <mwh2> i don't see how best_base succeeds, but i now really have to go...

[19:29] mwh2 (~user@modem-41.erendis.dialup.pol.co.uk) left irc: "running"

[19:40] idnar (mithrandi@idnar.user) left irc: Client Quit

----- silence for 31 minutes -----

[20:11] esteban (~esteban@81.60.231.91) joined #pypy.

[20:13] arigo (~arigo@134.99.112.244) left irc: Remote closed the connection

----- silence for 25 minutes -----

[20:38] senra (~senra@200.213.107.95) left irc: Read error: 104 (Connection reset by peer)

[20:49] senra (~senra@200.213.107.95) joined #pypy.

----- silence for 31 minutes -----

[21:20] idnar (mithrandi@idnar.user) joined #pypy.

[21:24] idnar (mithrandi@idnar.user) left irc: Nick collision from services.

----- silence for 43 minutes -----

[22:07] senra (~senra@200.213.107.95) left irc: Remote closed the connection

----- silence for 28 minutes -----

[22:35] idnar (mithrandi@idnar.user) joined #pypy.

[22:40] <pedronis> stakkars: what is the problem with pow

[22:41] <stakkars> :-) you are reading

[22:41] <stakkars> i cannot flow pow. The source of _float_formatting contains things like int ** int.

[22:41] <stakkars> when I flow this, I crash.

[22:43] <stakkars> I'm not quite through it (but quite through the day,so maybe I stop now)

[22:43] <stakkars> it appears that it is called like "pow(int, int, None)", but that exactly crashes in flow space.

[22:44] idnar (mithrandi@idnar.user) left irc: Client Quit

[22:44] <pedronis> yes, I could reproduce it with a small example

[22:45] <pedronis> It's a shallow problem I think

[22:49] <pedronis> stakkars: I solved it, I think, I have to run the tests

----- silence for 28 minutes -----

[23:17] <stakkars> hey, great! what was it?

[23:18] <stakkars> ahh, I see

[23:26] <stakkars> yeah, it works!

[23:26] <stakkars> But now I get hit by a too long loooong -- aarrghhhh

[23:27] <stakkars> have to stop it -- _float_formatting is not rpythonic at this time!!!

[23:28] <stakkars> maybe we can redirect int overflows to faked longs???

----- silence for 16 minutes -----

[23:44] pedronis (~Samuele_P@c-178b70d5.022-54-67626719.cust.bredbandsbolaget.se) left irc: "Chatzilla 0.9.66 [Mozilla rv:1.7.5/20041107]"

[23:44] idnar (mithrandi@idnar.user) joined #pypy.

[00:00] --- Thu Mar 31 2005