==== Channel ##pypy: 04/01/05 ====

[00:50] nas (~nas@S0106000625c557dc.cg.shawcable.net) joined #pypy.

[01:00] esteban (esteban@DWM-91-231.go.retevision.es) left #pypy.

----- silence for 2 hr and 31 minutes -----

[03:31] pedronis (~Samuele_P@c-1a8b70d5.022-54-67626719.cust.bredbandsbolaget.se) joined #pypy.

[03:31] pedronis (~Samuele_P@c-1a8b70d5.022-54-67626719.cust.bredbandsbolaget.se) left irc: Client Quit

----- silence for 24 minutes -----

[03:55] _hannes (vfpoqvj@i528C1451.versanet.de) joined #pypy.

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

[04:50] sanxiyn (~tinuviel@211.104.100.115) joined #pypy.

[04:51] dialtone (~dialtone@host111-56.pool80117.interbusiness.it) left irc: "Leaving"

[04:57] dialtone (~dialtone@host111-56.pool80117.interbusiness.it) joined #pypy.

[05:10] _hannes (vfpoqvj@i528C1451.versanet.de) left irc: "utz utz utz"

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

[05:43] -lilo (lilo@lilo.netop.oftc.net) to $*- [Global Notice] Good morning to all. URGENT NEWS ITEM on the website. THE SERVERS WILL BE SHUTTING DOWN IN FIVE MINUTES AND WILL BE DOWN FOR THE NEXT THREE DAYS. Please view the latest freenode news on http://freenode.net/news.shtml .... massive apologies for this situation. :(

[05:44] -lilo (lilo@lilo.netop.oftc.net) to $*- [Global Notice] Repeating, please check network status on http://freenode.net/news.shtml immediately! Thanks. :(

[05:46] -lilo (lilo@lilo.netop.oftc.net) to $*- [Global Notice] Apologies for the problems with the website, please try http://freenode.net/news.shtml again.... repeating, urgent information on site. Thanks.

[05:48] -lilo (lilo@lilo.netop.oftc.net) to $*- [Global Notice] The site should be working now. Apologies for the inconvenience. Again, please reload: http://freenode.net/news.shtml

[05:54] -lilo (lilo@lilo.netop.oftc.net) to $*- [Global Notice] Please check http://freenode.net/news.shtml one more time.... thanks!

[05:55] sanxiyn (tinuviel@211.104.100.115) left #pypy (" tÌ Èä.").

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

[06:11] -lilo (lilo@lilo.netop.oftc.net) to $*- [Global Notice] Hi all. Apologies for the surprise you received earlier, and I hope you don't mind that we got April Fool's Day out of our system a bit earlier than some. Happy April, and thank you for using freenode. :)

----- silence for 1 hr and 4 minutes -----

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

----- silence for 47 minutes -----

[08:02] sanxiyn (~tinuviel@211.104.100.115) joined #pypy.

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

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

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

[08:41] <sanxiyn> As it is 2005 now, I think updating year in copyright() and license() would be a good idea.

[08:42] <sanxiyn> I feel a little uneasy about fixing it myself, as I am not sure I am part of "PyPy development team" :-)

[08:47] nas (~nas@S0106000625c557dc.cg.shawcable.net) left irc: "Client exiting"

----- silence for 21 minutes -----

[09:08] idnar (mithy@idnar.user) joined #pypy.

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

[09:41] sanxiyn (tinuviel@211.104.100.115) left #pypy (" tÌ Èä.").

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

[10:06] mwh2 (~user@modem-117.erendis.dialup.pol.co.uk) joined #pypy.

----- silence for 34 minutes -----

[10:40] tic (~vision@c-996e73d5.019-35-67626717.cust.bredbandsbolaget.se) left irc: "http://www.begeistert.org";

[10:53] arigo (~arigo@134.99.112.244) joined #pypy.

[10:55] <arigo> mwh2: ping?

[10:55] <mwh2> pong!

[10:55] <mwh2> but not for long

[10:55] <mwh2> be quick!

[10:55] <arigo> class X(types.ModuleStr, str): pass

[10:56] <arigo> X('name')

[10:56] <arigo> segfault

[10:56] <arigo> types.ModuleType of course

[10:56] <mwh2> aaaaaaaaaaaaaaaaaaaaaaaaaaaaagh

[10:56] <arigo> :-)

[10:56] <mwh2> how come best_base doesn't fail?

[10:56] <arigo> PyModuleObject looks too much like a user-defined subclass of 'object'

[10:56] <arigo> i.e. a PyObject_HEAD and then the dict and nothing else

[10:58] <mwh2> oh, of course

[10:58] <mwh2> so md_dict collides with the string data

[10:58] <arigo> exactly

[10:58] <mwh2> you could fix moduleobject.c to use _pyobject_getdictptr everywhere :)

[10:59] <arigo> well, yes

[10:59] <arigo> but it's likely to break user extension modules too

[10:59] <arigo> I think that non-heap-types should never have their tp_dictoffset moved

[10:59] <arigo> this looks like a safer rule.

[10:59] <mwh2> certainly

[10:59] <mwh2> how many non-heap-types even *have* tp_dictoffset != 0?

[10:59] <arigo> there are some, e.g. PyTypeObject

[11:00] <arigo> but I don't think you can do the same trick with anything else but PyModuleObject

[11:00] <mwh2> well, that's massive

[11:00] <mwh2> anyway, file a bug?

[11:01] <arigo> ok

[11:02] <mwh2> gotta go

[11:03] mwh2 (~user@modem-117.erendis.dialup.pol.co.uk) left irc: "biab"

[11:03] <arigo> see you

[11:03] <arigo> SourceForge's got ads for USB-powered fondue pots

----- silence for 1 hr and 39 minutes -----

[12:42] stakkars (~tismer@82.144.60.19) joined #pypy.

[12:50] idnar (mithy@idnar.user) left irc: "kbye"

[13:01] cfbolz (~bolz@zenon.physi.uni-heidelberg.de) joined #pypy.

[13:02] <cfbolz> armin? are you there?

[13:04] <arigo> hi

[13:04] <arigo> yes

[13:05] <cfbolz> ok. I need to write a flowgraph transformation for genllvm: If a block has several (more than 3) incoming links, two of them from the same block

[13:05] <cfbolz> I get problems with llvm

[13:06] <arigo> there is already one similar transformation

[13:06] <cfbolz> what does it do?

[13:06] <arigo> simplify.remove_direct_loops()

[13:06] <arigo> ah no, not exactly what you want

[13:06] <arigo> remove_direct_loops() only ensures that no block loops back to itself directly

[13:06] <cfbolz> right

[13:07] <cfbolz> i probably need to insert dummy blocks

[13:07] <arigo> ah, I see the problem with LLVM's phi nodes -- strange thing that these academics put the source variable names in the the target block's syntax

[13:07] <cfbolz> correct

[13:07] <arigo> yes, I guess something similar to remove_direct_loops() would do the trick.

[13:08] <cfbolz> yup. Should I put it in simplify?

[13:08] <arigo> yes, or in llvm/, as you like -- it's possibly useful to other code generators, so simplify is a good choice

[13:09] <cfbolz> ok

[13:09] <cfbolz> I did a fix for genllvm if there are two links from the same block. That suffices if there are no exceptions. This is why I discovered it yesterday

[13:11] <arigo> I see

[13:11] <arigo> I guess that all code gens should accept arbitrarily manipulated graphs :-)

[13:12] <cfbolz> well, I think there should be at least some restrictions on the manipulations :-)

[13:12] <stakkars> how can a block link twice to anotherone? Is this left overfrom removing blocks?

[13:12] <cfbolz> the arguments along the links differ, of course

[13:13] <cfbolz> The easies example is (i think):

[13:13] <cfbolz> def f(i):

[13:13] <cfbolz> if i:

[13:13] <cfbolz> return 1

[13:13] <cfbolz> else:

[13:13] <cfbolz> return 2

[13:13] <arigo> it is still important in my opinion that completely arbitrary graphs should be acceptable

[13:13] <cfbolz> In principle, yes

[13:14] <arigo> as long as they pass checkgraph()'s "local" checks, of course

[13:14] <cfbolz> I just wanted to write that :-)

[13:14] <arigo> :-)

[13:14] <stakkars> ah, you mean the two links to the return block? But they are not from the sameblock.

[13:14] <cfbolz> My transformation can be undone at any time anyway: empty blocks are inserted, which can easily be removed again

[13:15] <cfbolz> Ouch, wrong example

[13:15] <cfbolz> I have to think of something, wait a moment

[13:16] <arigo> stakkars: uh? they are from the same block, after a simplify().

[13:16] <cfbolz> so i'm right after all :-)

[13:17] <cfbolz> With exceptions it can get even more complicated

[13:18] <stakkars> arigo: aha! I didn't look into simplified graphs,lately. So simplification creates one block which ends in two branches which go to the return block.

[13:18] <cfbolz> exactly

[13:18] <stakkars> Question: Are there any examples which don't involve just a return block?

[13:18] <arigo> 'course

[13:19] <arigo> replace the return with 'x =' above, and use 'x' after the 'if' statement

[13:19] <stakkars> ah, ok.

[13:20] <cfbolz> this all wouldn't be a problem, I could do just a switch on the last blocks exitswitch instead of a phi node

[13:20] stakkars (~tismer@82.144.60.19) left irc: Read error: 104 (Connection reset by peer)

[13:20] <arigo> cfbolz: well, that doesn't work if you have still other incoming links

[13:20] <cfbolz> But if there are even more incoming links it gets complicated since I can't put other instructions before the phi node

[13:20] <arigo> :-)

[13:21] <cfbolz> :-( rather. But it should be easy to fix with dummy blocks

[13:21] <arigo> yes.

[13:21] <arigo> dummy blocks aren't likely to be costly anyway

[13:21] <cfbolz> No

[13:21] <cfbolz> Those restrictions on phi nodes can be very troublesome

[13:22] <cfbolz> For example if the type of an variable changes along a link (for example if there is a merge with an instance of a base class) I have to put the casts in the first block

[13:23] <arigo> I see

[13:23] <arigo> and how are constants handled?

[13:23] <cfbolz> depends

[13:23] <cfbolz> For simple types you can put constants in the phi nodes

[13:24] <cfbolz> tuple constants don't really work at the moment, i think

[13:24] <cfbolz> and PBC are quite messy too

[13:25] <cfbolz> I don't know yet how to handle PBCs anyway

[13:25] stakkars (~tismer@82.144.60.19) joined #pypy.

[13:26] <cfbolz> I guess I have to do some kind of "serializing" into llvm-code to be able to create them in the init code of the genllvm-generated module

[13:26] <arigo> yes, that's what we do in genc

[13:26] <arigo> it is quite messy indeed

[13:27] <cfbolz> It's even more anoying in LLVM since the representation in LLVM and Python can be different

[13:27] <arigo> e.g.?

[13:30] <cfbolz> For example a class: In llvm a class object is a struct of a pointer to the base class (and, in theory, a virtual function table or something like that)

[13:30] <cfbolz> I was just saying that the mapping between Python object and LLVM object is not as easy as for genc

[13:30] <cfbolz> (at it's current state)

[13:31] <arigo> I see

[13:31] <arigo> but it's very messy in genc too, because we have to write code that will recreate a similar object

[13:32] <arigo> and it's very messy for strange object types (e.g. built-in method descritors)

[13:32] <arigo> but that's a problem that doesn't exist when annotations are complete

[13:32] <cfbolz> ok. I didn't want to discredit the achievments of genc :-)

[13:32] <arigo> :-)

[13:33] <cfbolz> btw: I really fear the implementation of virtual function tables for polymorphism

[13:34] <cfbolz> because of the strong typing of llvm this could become a nightmare

[13:35] <arigo> :-(

[13:36] <cfbolz> The solution I use at the moment works very well but I fear it's not as fast as function tables:

[13:37] <cfbolz> Every class has an id and I do a branch to appropriate blocks, in which the object is casted and the correct method is called

[13:38] <cfbolz> This even has the benefit that LLVM inlines short functions, which wouldn't happen with function pointers :-

[13:38] <cfbolz> )

[13:39] <arigo> I see, makes some sense I guess

[13:39] <cfbolz> It's easy, at least

[13:39] <arigo> if you try the other approach be sure to keep this one around,

[13:40] <arigo> so that we can compare the actual performance

[13:40] <cfbolz> right. vtables have to work, since llvm-gcc can compile c++

[13:40] <arigo> :-)

[13:40] <cfbolz> But it's no use looking at the resulting byte code: It's huge (even for simple examples) and very messy

[13:41] <arigo> hum, code size seems to become a problem in genc too

[13:41] <cfbolz> really? what's the bottleneck? gcc?

[13:41] <arigo> gcc is a problem, yes

[13:42] <arigo> it dies out of memory

[13:42] <cfbolz> ouch. How big do the files get?

[13:42] <arigo> gcc consumes around 1GB before it dies :-(

[13:42] <cfbolz> (and how big is you memeory?)

[13:42] <arigo> the source files are 20-30MB

[13:42] <cfbolz> oh. I see.

[13:42] Action: arigo dragged to lunch

[13:43] <arigo> see you later

[13:43] <cfbolz> see you.

[13:43] cfbolz (~bolz@zenon.physi.uni-heidelberg.de) left irc: "Leaving"

[13:50] cfbolz (~bolz@zenon.physi.uni-heidelberg.de) joined #pypy.

[13:52] cfbolz (bolz@zenon.physi.uni-heidelberg.de) left #pypy ("Leaving").

[13:52] stakkars (~tismer@82.144.60.19) left irc: Read error: 54 (Connection reset by peer)

[13:53] cfbolz (~bolz@zenon.physi.uni-heidelberg.de) joined #pypy.

[13:56] stakkars (~tismer@82.144.60.19) joined #pypy.

[13:57] cfbolz (~bolz@zenon.physi.uni-heidelberg.de) left irc: "Leaving"

[14:07] _hannes (lrsylbu@i528C1451.versanet.de) joined #pypy.

----- silence for 20 minutes -----

[14:27] stakkars (~tismer@82.144.60.19) left irc: Read error: 54 (Connection reset by peer)

[14:33] stakkars (~tismer@82.144.60.19) joined #pypy.

----- silence for 27 minutes -----

[15:00] stakkars (~tismer@82.144.60.19) left irc: Read error: 104 (Connection reset by peer)

[15:08] stakkars (~tismer@82.144.60.19) joined #pypy.

[15:14] pedronis (pedronis@ratthing-b246.strakt.com) joined #pypy.

[15:25] <arigo> SVN down?

[15:26] <stakkars> yes, looks like

[15:26] <arigo> hpk: can I run recover-svn ?

[15:26] <hpk> arigo: just a second

[15:27] Action: hpk is doing it

[15:27] <hpk> jum and me are snapshotting the directory structures to analyze them further and get some clues

[15:27] <hpk> recovery done

[15:28] <arigo> thanks

[15:28] <hpk> hum, maybe we should just switch backends

[15:29] <arigo> only if we are sure that the other backend is reliable

[15:29] <arigo> the current back-end tends to fault but I don't think we ever lost data

[15:29] <hpk> yes, actually i am not even 100% sure that it would fix the problem

[15:29] <hpk> right

[15:29] <arigo> ah

[15:30] <arigo> does it still seem related to viewcvs?

[15:30] ludal (~ludal@logilab.net2.nerim.net) left irc: Remote closed the connection

[15:31] <hpk> arigo: no, i think it's more related to people now using svn+ssh urls

[15:32] <arigo> I see

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

[15:32] <hpk> jum hunted down a few more places that messed up permissions but it still seems to happen

[15:32] <arigo> gaaa

[15:38] <mwh> hello!

[15:38] <arigo> hi!

[15:42] <hpk> arigo: are you now employed officially at HHU?

----- silence for 21 minutes -----

[16:03] <arigo> hpk: working on it every day

[16:03] <arigo> early next week, hopefully

[16:04] <arigo> to help matter, people get confused with Switzerland and I have to run back and forth across the city asking for more forms

[16:05] <hpk> :-(

[16:13] <arigo> I don't know how to test typer.py

[16:14] <arigo> for now, would it make sense to have a "visual only" test?

[16:14] <arigo> e.g. test/visualtest_typer.py that calls t.view()

[16:17] <pedronis> we would need to sort of evalutate the changed graph checking that input and output types also wrt the annotations make sense

[16:17] <pedronis> quite a bit of work

[16:17] <arigo> I guess so

[16:25] <hpk> "visual only" tests sound like a bad idea

[16:26] <arigo> well, it's more like an example script that you can run to see the result

[16:26] <hpk> sure

[16:27] <hpk> i guess things can at least be tested in combination with backends using typer

[16:27] <arigo> well, not right now :-)

[16:27] <hpk> sure

[16:27] <arigo> though typer appears to work now

[16:28] Action: hpk is out in the garden eating ... ice cream

[16:28] <arigo> :-)

[16:28] <hpk> (although i am kind of ill ...)

----- silence for 1 hr -----

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

----- silence for 23 minutes -----

[17:51] <arigo> grumble, svn down again

[17:51] Action: hpk recovering

[17:51] <hpk> hum

[17:52] <hpk> maybe the recovery should just be automated for the time being

[17:52] <hpk> with diagnosis information gathered and sent to the admins ...

[17:57] adim (~adim@logilab.net2.nerim.net) left irc: Remote closed the connection

----- silence for 48 minutes -----

[18:45] <pedronis> arigo: maybe is time to use the compiler options to turn off some the warnings about unused stuff

[18:46] <arigo> makes a lot of sense

[18:46] <arigo> I was running with gcc for some reason instead of tcc, btw

[18:47] <arigo> apparently tcc is less verbose

[18:47] <pedronis> anyway for gcc I think they are

[18:48] <pedronis> -Wno-unused-label

[18:48] <pedronis> -Wno-unused-variable

[18:49] <arigo> wait a second

[18:49] <arigo> it is Python's -Wall that enables these warnings in the first place

[18:50] <arigo> so we can either add these flags, or kill the -Wall somehow

[18:52] <pedronis> yes adding them after -Wall would work

[18:52] <arigo> ok

[18:54] <pedronis> I'm refactoring the translate_pypy* btw

[18:54] cfbolz (~bolz@zenon.physi.uni-heidelberg.de) joined #pypy.

[18:54] <arigo> ah

[18:54] <arigo> hi

[18:54] <pedronis> because I want to add some functionality for the case when the call graph is too huge

[18:55] <pedronis> I'm about to checkin

[18:55] <pedronis> now there's just one translate_pypy

[18:55] <arigo> ok

[18:55] <pedronis> and you can pass the name of a different python file that defines and setup

[18:56] <pedronis> the entry_point

[18:56] <pedronis> so there are small targetpypy.py targetpypy0.py targetpypy1.py

[18:56] <pedronis> that do that

[18:57] <pedronis> so what is done now by translate_pypy1.py is done now as translate_pypy.py targetpypy1

[18:58] <arigo> I see

[18:59] <cfbolz> hi

[18:59] <cfbolz> I just looked at typer

[19:00] <cfbolz> it seems like a very good idea to me

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

[19:01] <cfbolz> and much cleaner than genllvm :-)

[19:02] <arigo> ok

[19:02] <arigo> what I just had to do in genc is still messy,

[19:02] <arigo> but I guess that typer allows some control over this mess

[19:03] <arigo> however, we still have to see if it works for types more complicated than PyObject* and int

[19:03] <cfbolz> right :-)

[19:03] <cfbolz> If it works it might even be possible to share parts of the typer between backends

[19:04] <cfbolz> or am i too optimistic?

[19:04] <arigo> no, that's the original the idea

[19:04] <arigo> the hope is that only the last 15 lines of typer.py are specific to genc

[19:05] <arigo> (so far)

[19:05] <cfbolz> :-)

[19:05] <arigo> should rather have said that the first 170 lines are independent of genc :-)

[19:05] <cfbolz> hehe

[19:07] <arigo> dinner time...

[19:08] <cfbolz> bye

[19:08] <arigo> bye

[19:08] arigo (~arigo@134.99.112.244) left irc: "[x]chat"

[19:09] cfbolz (~bolz@zenon.physi.uni-heidelberg.de) left irc: "Leaving"

----- silence for 1 hr and 22 minutes -----

[20:31] Action: pedronis leaving

[20:38] pedronis (pedronis@ratthing-b246.strakt.com) left irc: "ChatZilla 0.9.61 [Mozilla rv:1.7.6/20050324]"

[20:40] stakkars (~tismer@82.144.60.19) left irc: Read error: 145 (Connection timed out)

----- silence for 37 minutes -----

[21:17] dialtone (~dialtone@host111-56.pool80117.interbusiness.it) left irc: Read error: 60 (Operation timed out)

[21:20] dialtone (~dialtone@host111-56.pool80117.interbusiness.it) joined #pypy.

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

[22:11] pedronis (~Samuele_P@c-1a8b70d5.022-54-67626719.cust.bredbandsbolaget.se) joined #pypy.

----- silence for 1 hr and 2 minutes -----

[23:13] esteban (~esteban@DWM-12-229.go.retevision.es) joined #pypy.

[23:17] tea (~tea@cap016-169.kcn.ne.jp) joined #pypy.

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

[23:33] tea (tea@cap016-169.kcn.ne.jp) left #pypy.

[00:00] --- Sat Apr 2 2005