
Hi Friends, Richard Emslie just pushed my nose into something interesting. I don't remember, did we talk about this before? """ Anyways, I was wondering if anyone in pypy has investigated LLVM (http://llvm.cs.uiuc.edu/). Might be totally off the ball, but looks interesting nonetheless. Also look as if it has funding behind it which you guys could jump on. """ ciao - chris -- Christian Tismer :^) <mailto:tismer@tismer.com> Mission Impossible 5oftware : Have a break! Take a ride on Python's Johannes-Niemeyer-Weg 9a : *Starship* http://starship.python.net/ 14109 Berlin : PGP key -> http://wwwkeys.pgp.net/ work +49 30 89 09 53 34 home +49 30 802 86 56 mobile +49 173 24 18 776 PGP 0x57F3BF04 9064 F4E1 D754 C2FF 1619 305B C09C 5A3B 57F3 BF04 whom do you want to sponsor today? http://www.stackless.com/

Hello Christian, On Tue, Oct 28, 2003 at 12:40:20PM +0100, Christian Tismer wrote:
Not that I know of. This looks very interesting, indeed. Their low-level instruction set is at precisely the same level as our control flow graphs. It looks like the ideal target. I don't know how good their compilers already are, but we should definitely try to emit LLVM code in addition to C. And of course LLVM would be really better than C for runtime code generation. Writing PowerPC code generators for LLVM might be a good way to support Psyco-style optimizations for PyPy (and maybe even getting paid by the University of Illinois or its sponsors to do so :-) Armin

Hello Samuele, On Tue, Oct 28, 2003 at 03:49:41PM +0100, Samuele Pedroni wrote:
it seems not to provide direct GC support?
LLVM is not like a JVM or the .NET thing, it's really an assembly language with some (optional) typing information. You can write non-type-safe programs in LLVM. You can write your own memory management in LLVM too. They don't impose any memory management policy. Armin

Hello PyPy, from short IRC discussions on the IRC channels and evaluating the link that Christian provided (thanks, thanks, thanks!) it might make sense to send off the following mail to the LLVM developers. Comments? Holger, Armin --- proposed mail ---- Hello Chris, Luckily your project (LLVM) came to our attention today. Especially your message here http://mail.cs.uiuc.edu/pipermail/llvmdev/2003-October/000501.html along with the goals and documentation about the project made a great impression on us. This seems like a perfect match for our PyPy project which we started earlier this year. It is a reimplementation of Python within Python (as a good example of a higher level language), aimed at a more flexible, configurable and performant runtime system. To produce low level machine code the architecture currently has four stages: 1) compiling source code into byte code 2) performing symbolic/abstract interpretation and generating an intermediate flow-graph representation of the program. 3) (optionally) optimizing the graph 4) generating low-level C code When we learned about LLVM, the link was immediately obvious: the flow-graph representation is exactly like LLVM code. So please excuse us, if this mail is a bit over-enthusiatic :-) LLVM is also a perfect match because it can either agressively compile statically, or quickly generate code at runtime, which will be essential to port to PyPy the just-in-time compilation techniques prototyped in Psyco (http://psyco.sourceforge.net). Maybe a bit more background what we did or are: - we are an international group of individuals collaborating on our free time mostly. We are very involved with open source communities and especially the Python communities. - During the course of four one-week meetings (which we call development "sprints") we have done a rather complete interpreter and can generate some working C or Lisp code already. - we very recently submitted a funding proposal to the European Union: http://codespeak.net/svn/pypy/trunk/doc/funding/proposal/part_b.pdf and you may find these two chapters particularly interesting: http://codespeak.net/pypy/index.cgi?doc/funding/B1.0_objectives http://codespeak.net/pypy/index.cgi?doc/funding/B6.0_detailed However, we'd be interested in collaborating with your project on (hopefully) several levels. We will certainly consider contributing a PowerPC backend. On another level, some of the PyPy core developers are actually also involved with the 'codespeak' site which aims to connect interesting open source projects and provide new collaborative services. http://codespeak.net Also we are extensively using subversion which is a very interesting (and stable) alternative to cvs. For more info about subversion, see http://svnbook.red-bean.com/book.html#svn-ch-1-sect-1 but we are also interested in innovative and collaborative ways of software development, like "sprints". So if you need any help with setting up some public infrastructure the codespeak guys will certainly welcome you. Feel free to forward this mail to the LLVM mailing list, btw. We are just interested in getting some first contact and enter a productive discussion and - who knows - some interesting collaboration! A bientot, Armin Rigo, Holger Krekel

Hello, The previous e-mail prompted some discussion which I logged in a new directory, "doc/irclog", which also contains a log about the annotations as used by the translator's type inference. A bientot, Armin.

Hello PyPy, Second try from Armin and me after IRC discussions ... --- proposed mail ---- Hello Chris, we have been investigating your project and the good documentation and are very impressed. If we understood your goals correctly this seems like a good match for our ongoing and active PyPy project, a reimplementation of the Python language in Python. We'll definitely try using llvm as our low-level backend. But actually we contact you now to ask you if you'd be interested in some bidirectional collaboration. Maybe a bit more background what we did or are: - we are an open international group of individuals collaborating on our free time mostly. We are very involved with research, open source communities and especially the Python communities. - During the course of four one-week meetings (which we call development "sprints") we have done a rather complete interpreter and can translate parts of it to C or Lisp code already (using a control-flow representation which is actually very similar to LLVM code, hence our enthusiasm!) - we very recently submitted a funding proposal to the European Union: http://codespeak.net/svn/pypy/trunk/doc/funding/proposal/part_b.pdf and you may find these two chapters particularly interesting: http://codespeak.net/pypy/index.cgi?doc/funding/B1.0_objectives http://codespeak.net/pypy/index.cgi?doc/funding/B6.0_detailed On the technical level we are interested to know about and maybe collaborate with efforts to support very-high-level language features in LLVM (e.g. walking the stack, for garbage collection), fine-grained runtime code generation (generating code only one basic block at a time), and possibly also contribute a PowerPC back-end, and Python bindings for LLVM. On another level, some of the PyPy core developers are actually also involved with the 'codespeak' site which aims at connecting interesting open source projects and provide new collaborative development services. The PyPy project is extensively using subversion which is a very interesting (and stable) alternative to cvs. So if you need any help with setting up some publically accessible infrastructure the codespeak guys will certainly welcome you. Feel free to forward this mail to the LLVM mailing list, btw. We are just interested in getting some first contact and enter a productive discussion and - who knows - some interesting collaboration! a bientot, Armin Rigo, Holger Krekel

Hello Christian, On Tue, Oct 28, 2003 at 12:40:20PM +0100, Christian Tismer wrote:
Not that I know of. This looks very interesting, indeed. Their low-level instruction set is at precisely the same level as our control flow graphs. It looks like the ideal target. I don't know how good their compilers already are, but we should definitely try to emit LLVM code in addition to C. And of course LLVM would be really better than C for runtime code generation. Writing PowerPC code generators for LLVM might be a good way to support Psyco-style optimizations for PyPy (and maybe even getting paid by the University of Illinois or its sponsors to do so :-) Armin

Hello Samuele, On Tue, Oct 28, 2003 at 03:49:41PM +0100, Samuele Pedroni wrote:
it seems not to provide direct GC support?
LLVM is not like a JVM or the .NET thing, it's really an assembly language with some (optional) typing information. You can write non-type-safe programs in LLVM. You can write your own memory management in LLVM too. They don't impose any memory management policy. Armin

Hello PyPy, from short IRC discussions on the IRC channels and evaluating the link that Christian provided (thanks, thanks, thanks!) it might make sense to send off the following mail to the LLVM developers. Comments? Holger, Armin --- proposed mail ---- Hello Chris, Luckily your project (LLVM) came to our attention today. Especially your message here http://mail.cs.uiuc.edu/pipermail/llvmdev/2003-October/000501.html along with the goals and documentation about the project made a great impression on us. This seems like a perfect match for our PyPy project which we started earlier this year. It is a reimplementation of Python within Python (as a good example of a higher level language), aimed at a more flexible, configurable and performant runtime system. To produce low level machine code the architecture currently has four stages: 1) compiling source code into byte code 2) performing symbolic/abstract interpretation and generating an intermediate flow-graph representation of the program. 3) (optionally) optimizing the graph 4) generating low-level C code When we learned about LLVM, the link was immediately obvious: the flow-graph representation is exactly like LLVM code. So please excuse us, if this mail is a bit over-enthusiatic :-) LLVM is also a perfect match because it can either agressively compile statically, or quickly generate code at runtime, which will be essential to port to PyPy the just-in-time compilation techniques prototyped in Psyco (http://psyco.sourceforge.net). Maybe a bit more background what we did or are: - we are an international group of individuals collaborating on our free time mostly. We are very involved with open source communities and especially the Python communities. - During the course of four one-week meetings (which we call development "sprints") we have done a rather complete interpreter and can generate some working C or Lisp code already. - we very recently submitted a funding proposal to the European Union: http://codespeak.net/svn/pypy/trunk/doc/funding/proposal/part_b.pdf and you may find these two chapters particularly interesting: http://codespeak.net/pypy/index.cgi?doc/funding/B1.0_objectives http://codespeak.net/pypy/index.cgi?doc/funding/B6.0_detailed However, we'd be interested in collaborating with your project on (hopefully) several levels. We will certainly consider contributing a PowerPC backend. On another level, some of the PyPy core developers are actually also involved with the 'codespeak' site which aims to connect interesting open source projects and provide new collaborative services. http://codespeak.net Also we are extensively using subversion which is a very interesting (and stable) alternative to cvs. For more info about subversion, see http://svnbook.red-bean.com/book.html#svn-ch-1-sect-1 but we are also interested in innovative and collaborative ways of software development, like "sprints". So if you need any help with setting up some public infrastructure the codespeak guys will certainly welcome you. Feel free to forward this mail to the LLVM mailing list, btw. We are just interested in getting some first contact and enter a productive discussion and - who knows - some interesting collaboration! A bientot, Armin Rigo, Holger Krekel

Hello, The previous e-mail prompted some discussion which I logged in a new directory, "doc/irclog", which also contains a log about the annotations as used by the translator's type inference. A bientot, Armin.

Hello PyPy, Second try from Armin and me after IRC discussions ... --- proposed mail ---- Hello Chris, we have been investigating your project and the good documentation and are very impressed. If we understood your goals correctly this seems like a good match for our ongoing and active PyPy project, a reimplementation of the Python language in Python. We'll definitely try using llvm as our low-level backend. But actually we contact you now to ask you if you'd be interested in some bidirectional collaboration. Maybe a bit more background what we did or are: - we are an open international group of individuals collaborating on our free time mostly. We are very involved with research, open source communities and especially the Python communities. - During the course of four one-week meetings (which we call development "sprints") we have done a rather complete interpreter and can translate parts of it to C or Lisp code already (using a control-flow representation which is actually very similar to LLVM code, hence our enthusiasm!) - we very recently submitted a funding proposal to the European Union: http://codespeak.net/svn/pypy/trunk/doc/funding/proposal/part_b.pdf and you may find these two chapters particularly interesting: http://codespeak.net/pypy/index.cgi?doc/funding/B1.0_objectives http://codespeak.net/pypy/index.cgi?doc/funding/B6.0_detailed On the technical level we are interested to know about and maybe collaborate with efforts to support very-high-level language features in LLVM (e.g. walking the stack, for garbage collection), fine-grained runtime code generation (generating code only one basic block at a time), and possibly also contribute a PowerPC back-end, and Python bindings for LLVM. On another level, some of the PyPy core developers are actually also involved with the 'codespeak' site which aims at connecting interesting open source projects and provide new collaborative development services. The PyPy project is extensively using subversion which is a very interesting (and stable) alternative to cvs. So if you need any help with setting up some publically accessible infrastructure the codespeak guys will certainly welcome you. Feel free to forward this mail to the LLVM mailing list, btw. We are just interested in getting some first contact and enter a productive discussion and - who knows - some interesting collaboration! a bientot, Armin Rigo, Holger Krekel
participants (5)
-
Armin Rigo
-
Bob Ippolito
-
Christian Tismer
-
holger krekel
-
Samuele Pedroni