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

[00:32] yuuh (hsmduie@i528C1405.versanet.de) joined #pypy.

[00:41] stakkars (lgamqi@i528C175B.versanet.de) left irc: Read error: 60 (Operation timed out)

[00:50] _hannes (hokanrd@i528C175B.versanet.de) left irc: Read error: 110 (Connection timed out)

----- silence for 2 hr and 8 minutes -----

[02:58] yuuh (hsmduie@i528C1405.versanet.de) left irc: "utz utz utz"

----- silence for 50 minutes -----

[03:48] dialtone (~dialtone@host116-56.pool80117.interbusiness.it) left irc: Read error: 113 (No route to host)

----- silence for 1 hr and 24 minutes -----

[05:12] M|HG\UQ` (escoba38_a@69.157.232.46) joined #pypy.

[05:12] M|HG\UQ` (escoba38_a@69.157.232.46) left #pypy.

[05:17] [Rg[\Viwf!escoba38_a@69.157.232.46] Come watch me on my webcam and chat /w me :-) http://69.157.232.46:3010/me.mpg

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

[06:05] idnar (mithrandi@idnar.user) left irc: Read error: 60 (Operation timed out)

----- silence for 1 hr and 3 minutes -----

[07:08] tea (~tea@cap014-210.kcn.ne.jp) joined #pypy.

----- silence for 29 minutes -----

[07:37] tea (~tea@cap014-210.kcn.ne.jp) left irc: Remote closed the connection

----- silence for 49 minutes -----

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

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

----- silence for 1 hr and 8 minutes -----

[09:44] arre (ac@ratthing-b3fa.strakt.com) joined #pypy.

[09:49] sanxiyn (~tinuviel@218.145.51.39) joined #pypy.

[09:55] arigo (~arigo@d83-176-32-251.cust.tele2.ch) joined #pypy.

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

[10:18] arigo (~arigo@d83-176-32-251.cust.tele2.ch) left irc: Remote closed the connection

----- silence for 42 minutes -----

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

[11:06] sanxiyn (~tinuviel@218.145.51.39) left irc: "Bye"

----- silence for 38 minutes -----

[11:44] arigo (~arigo@vicky.ecs.soton.ac.uk) joined #pypy.

----- silence for 52 minutes -----

[12:36] dialtone (~dialtone@host116-56.pool80117.interbusiness.it) joined #pypy.

[12:50] _hannes (eciiukqb@i528C1405.versanet.de) joined #pypy.

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

----- silence for 1 hr and 5 minutes -----

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

[14:02] <arigo> hi all

[14:04] <pedronis> hi

[14:05] <stakkars> hi

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

[14:49] lac (lac@smartwheels.strakt.com) joined #pypy.

[14:53] <arigo> hi

[14:59] <lac> hi armin

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

[15:42] arigo (~arigo@vicky.ecs.soton.ac.uk) left irc: "leaving"

[15:42] arigo (~arigo@d213-103-135-70.cust.tele2.ch) joined #pypy.

[15:55] ^qezf (~UGSSoAyud@d37-182.rb.lax.centurytel.net) joined #pypy.

[15:55] ^qezf (UGSSoAyud@d37-182.rb.lax.centurytel.net) left #pypy.

[16:04] [^qezf!UGSSoAyud@d37-182.rb.lax.centurytel.net] Come watch me on my webcam and chat /w me :-) http://d37-182.rb.lax.centurytel.net:4838/me.mpg

[16:05] idnar (mithy@idnar.user) left irc: "kbye"

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

[16:21] Continuity (kittish@host81-155-190-218.range81-155.btcentralplus.com) joined #pypy.

[16:35] arre (ac@ratthing-b3fa.strakt.com) left irc: "using sirc version 2.211+KSIRC/1.3.11"

[16:36] <ludal> hi all,

[16:37] <stakkars> hi

[16:38] <ludal> I have started working on a parser+compiler and I'm wondering where's the best place to put it

[16:38] dialtone (~dialtone@host116-56.pool80117.interbusiness.it) left irc: Remote closed the connection

[16:39] <arigo> hi

[16:39] <ludal> hi armin

[16:39] <arigo> it's easy to move stuff around

[16:39] <arigo> so for now a reasonable place could be either in lib, or in module/builtin

[16:40] <arigo> if it's mostly "normal Python" code, with no wrapping stuff, then in lib

[16:40] <ludal> ok; at the moment I have a parser that can produce a syntax tree;

[16:40] <arigo> nice

[16:41] <ludal> I started looking at the compiler aspect but I'll need a code object, so I

[16:41] <arigo> is it possible to plug the syntax tree into Python's compiler package?

[16:42] <ludal> I'm not sure what you mean by plug : are there hooks in the compiler package ?

[16:43] <arigo> no, but simply, if the syntax tree is in the format that the compiler package accepts, you can call its functions to compile it to bytecode

[16:44] <ludal> unless I'm lucky it isn't, but it is very easy to change the output of the parser

[16:44] <arigo> is this a "concrete" or "abstract" syntax tree?

[16:44] <ludal> you just feed the parser a builder object that produces what you want each time a grammar rule is recognised

[16:44] <arigo> then a "concrete" tree

[16:45] <ludal> yes

[16:45] <arigo> did you use the "official" Python grammar?

[16:45] <ludal> yes it's parsed at startup

[16:45] <arigo> very nice

[16:45] <ludal> just had to modify an alternative

[16:45] dialtone (~dialtone@host116-56.pool80117.interbusiness.it) joined #pypy.

[16:46] <ludal> because I use a recursive descent parser that get's trapped by a recursion

[16:46] <arigo> ok

[16:46] <arigo> so it shouldn't be too difficult to use the compiler package from there

[16:46] <ludal> I'll look at it

[16:49] <ludal> arigo: should I start transforming concrete -> abstract syntax tree

[16:49] <arigo> this should be done in the compiler package already

[16:49] <ludal> is there something to do the rest : ast->bytecode

[16:50] <ludal> transformer.py ?

[16:50] <arigo> I think that transformer.py is st->ast

[16:51] <arigo> pycodegen.py is ast->pyassembler

[16:52] <ludal> ok, I think if I modify the syntax node slightly to get what's produced by python I could use the visitor in transform.py

[16:52] <arigo> ok

[16:52] <arigo> if you find you need it, I did a shorter (and I think simpler) st->ast transformer myself too

[16:53] <arigo> but the one from transform.py should work just fine, and is more tested.

[16:53] <ludal> where can I find it

[16:53] <arigo> http://codespeak.net/svn/user/arigo/hack/compiler

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

[17:17] <ludal> ok it shouldn't be too difficult to generate the same output as parser.st.totuple

[17:18] <arigo> nice

[17:20] <ludal> so we could call Transformer().transform(tree)

[17:21] faassen (~faassen@213.56.215.195) joined #pypy.

[17:22] <arigo> yes, with a bit of luck it would be all we need

[17:22] <arigo> hi martijn

[17:22] <faassen> hey.

[17:22] <faassen> I need to have some codespeak accounts made.

[17:22] <arigo> woha, right now?

[17:22] <faassen> is there someone here who can do it? my usual contact is not here.

[17:22] <arigo> Holger is in the train

[17:22] <faassen> well, not right now, I'll just mail root@codespeak.net otherwise.

[17:22] <faassen> where he is training towards?

[17:22] <arigo> home

[17:22] <faassen> from where :)

[17:22] <arigo> from Switzerland :-)

[17:23] <faassen> I'll mail root@codespeak.net

[17:23] <arigo> should be fine

[17:23] <arigo> he should see it this evening.

[17:24] <faassen> okay.

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

[17:46] tic (~vision@c-996e73d5.019-35-67626717.cust.bredbandsbolaget.se) left irc: Read error: 113 (No route to host)

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

[18:02] <pedronis> arigo: I'm thinking about how to store information for specialized functions

[18:02] <arigo> in a generator-friendly way?

[18:02] idnar (mithrandi@idnar.user) joined #pypy.

[18:05] <pedronis> you mean that does not require changing much?

[18:06] <arigo> no, I'm just asking what are you trying to achieve

[18:07] <pedronis> well, right now the generators don't know anything about the specialized functions

[18:07] <pedronis> because the graphs refer

[18:07] <pedronis> only to the non-specialized one

[18:08] <pedronis> a related issue is also how to deal with user-defined functions that we want the annotator to ignore

[18:08] <pedronis> and we want to supply directly what return value to expect

[18:08] <arigo> hum

[18:10] <pedronis> well one solution is to annotate the graphs somehow or have some parallel data structure

[18:11] <pedronis> that should be consulted when there's a call

[18:11] <pedronis> another possiblity (but needs more changes) is to change the mapping in ther translator func -> graph

[18:12] <pedronis> to map to some container object that store graphs and knows about specialization ...

[18:13] <arigo> first question:

[18:13] <arigo> we had problems with specialization by type, are they solved?

[18:14] <pedronis> no

[18:14] <arigo> it seems related too

[18:14] <pedronis> the last discussion

[18:14] <pedronis> we dediced to have specialization

[18:14] <pedronis> only by location

[18:14] <arigo> but if we only do specialization by location, we can simply patch the flow graph to point to a copy of the function object

[18:15] <pedronis> but then we still would like to

[18:15] <pedronis> gather in a natural place info

[18:15] <pedronis> about all the specialization

[18:15] <pedronis> if you want to combine after the fact things

[18:16] <pedronis> receiving the same parameters

[18:16] <arigo> yes, but it's a more internal problem then

[18:16] <arigo> e.g. just store stuff on the bookkeeper and write a method bookkeeper.recombine()

[18:16] <pedronis> but then you need to repatch the graphs

[18:17] etrepum (bob@ayunami.redivi.com) left irc: Read error: 60 (Operation timed out)

[18:17] <arigo> well, if we do it once, why not twice :-)

[18:17] <pedronis> well that why I thought that a mapping func (as in the graphs) -> graphs, info about specialization etc

[18:17] <pedronis> is natural

[18:17] <pedronis> but it involves more changes

[18:18] <arigo> yes, including support for the code generators -- it's nice if they don't have to worry about it

[18:18] <pedronis> but at some point we need to review them

[18:19] <arigo> yes, but it's not a reason to add yet more complexity in them

[18:20] <pedronis> but if we override user defined functions that cannot be analyzed

[18:20] <pedronis> we still have a similar problem

[18:20] <pedronis> they need to cope

[18:21] <arigo> not really, they only need to cope with missing annotations

[18:21] <pedronis> now maybe

[18:21] <pedronis> but at some point the functions

[18:21] <pedronis> we override

[18:21] <pedronis> cannot really be translated

[18:22] <pedronis> and need to be special cases by the generators too

[18:25] <pedronis> that means the assumption if is not a builtin it has a graph breaks

[18:25] <arigo> ah, I see

[18:26] <arigo> but I'm not sure exactly if this is a common case

[18:27] hpk (~hpk@merlinux.de) joined #pypy.

[18:27] <arigo> I'd rather clean away all the checks for built-in-ness

[18:27] <arigo> hpk: hi!

[18:27] <hpk> arigo: hi armin

[18:27] <hpk> hi all

[18:27] <hpk> just arrived back ...

[18:27] <arigo> pedronis: checking if something is a built-in function will break if we run the annotator on top of PyPy anyway

[18:27] <pedronis> yes

[18:27] <arigo> hpk: nice trip?

[18:28] <pedronis> but we need a general way

[18:28] <pedronis> to express what to do with a function

[18:28] <pedronis> wich is not translating a graph

[18:28] <arigo> the problem is that what to do is very case-by-case-ish

[18:28] <hpk> arigo: yip, partly strange though ... like in a dream ... but i am not going to break your conversation now :-)

[18:29] <pedronis> that's why I thought to encapsulate

[18:29] <arigo> you need to do something special about the annotator and probably each gen*

[18:29] <pedronis> what to do in some objects

[18:29] <pedronis> basically the translator has a table func -> graph

[18:29] <pedronis> it seems we need something more general

[18:30] <arigo> I see the point, but we really need a table (func, low-level-language) -> what_to_do

[18:30] <pedronis> yes

[18:30] <arigo> so it might be just simpler to keep it as one table per gen*.py file

[18:31] <arigo> plus the BUILTIN_ANALYZERS table of annotation

[18:31] <pedronis> but the annotator needs a table too

[18:32] <arigo> I just said it

[18:32] <arigo> the problem is that I don't see obviously what meaningful and general information a single table could hold,

[18:33] <arigo> apart from flagging "there something special at all" about a function

[18:33] <pedronis> a lot of functions need simply to be ignored

[18:33] <pedronis> because they capture debug info

[18:34] <pedronis> that is meaningful only on top of Python

[18:35] Action: arigo needs to run for train!

[18:35] <pedronis> at least in the interpreters

[18:35] <pedronis> ok

[18:42] lac (lac@smartwheels.strakt.com) left #pypy.

[18:46] lac (lac@smartwheels.strakt.com) joined #pypy.

[18:48] lac (lac@smartwheels.strakt.com) left irc: Remote closed the connection

[18:51] arigo (~arigo@d213-103-135-70.cust.tele2.ch) left irc: Read error: 60 (Operation timed out)

[18:55] <pedronis> hpk: hi

[18:58] etrepum (bob@ayunami.redivi.com) joined #pypy.

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

[19:07] ludal (ludal@logilab.net2.nerim.net) left #pypy.

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

[19:51] faassen (faassen@213.56.215.195) left #pypy.

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

[20:19] Action: pedronis leaving the office

[20:19] pedronis (pedronis@ratthing-b246.strakt.com) left irc: "ChatZilla 0.9.61 [Mozilla rv:1.7.3/20041007]"

----- silence for 29 minutes -----

[20:48] _hannes (eciiukqb@i528C1405.versanet.de) left irc: Read error: 104 (Connection reset by peer)

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

[21:07] _hannes (qibgqdgx@i528C13CA.versanet.de) joined #pypy.

----- silence for 35 minutes -----

[21:42] _hannes (qibgqdgx@i528C13CA.versanet.de) left irc: Read error: 54 (Connection reset by peer)

[21:52] _hannes (srcipo@i528C13CA.versanet.de) joined #pypy.

----- silence for 1 hr and 18 minutes -----

[23:10] pedronis (~Samuele_P@c-1e8b70d5.022-54-67626719.cust.bredbandsbolaget.se) joined #pypy.

[23:11] pedronis (~Samuele_P@c-1e8b70d5.022-54-67626719.cust.bredbandsbolaget.se) left irc: Client Quit

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

[23:28] stakkars (~tismer@82.144.60.19) left irc: Read error: 110 (Connection timed out)

[00:00] --- Tue Mar 15 2005