On Tue, 12 Jul 2005, Armin Rigo wrote:
On Sun, Jun 12, 2005 at 11:15:30PM -0400, Michal Wallace wrote:
Pirate is written in python and currently uses the standard compiler package. However, as parrot supports native types, I would like to refactor it so that it can also work with PyPy's type annotation system (and possibly integrate with pypy in other ways)
Interesting, though by no means easy :-) PyPy's type annotation system is not designed at the moment to handle random user code. It can only handle carefully controlled code. From there to a general type annotator for Python, the gap is still large.
Hi Armin, Thanks for clarifying. Sounds like my understanding of pypy's current state was completely backwards. There is another approach I've been considering for pirate, which might come in handy for pypy as well: explicitly stating type information in a separate file, along the lines of this type system for scheme: http://www.cs.iastate.edu/~leavens/ComS342-EOPL2e/docs/typedscm_toc.html Basically, you'd have a separate "typesheet" file which said stuff like: # add.ty def add(a=int, b=int): return int which would correspond to the python code: # add.py def add(a, b): return a + b It seems like this would be a very simple way to get type annotation working: we'd just do it by hand. Then once we have real type inference, we could toss it aside. My intuition is that this would be fairly easy for me to add to pypy, but I'm not familiar with the code yet. What do you think? If possible, I'd rather extend your compiler than using the standard compiler module (which is what pirate currently uses)
I may be too deeply buried in the current development work, but at the moment it seems to me that the immediate contribution that PyPy could make to Python-over-Parrot could be different: we could provide the built-in types implementation and standard library modules, which is the necessary complement to the bytecode compiler. Indeed, by tweaking the C code generator, the "standard object space" and the modules could be compiled from PyPy sources to some C code that follows the conventions of Parrot.
This is the other part I was backwards on. Just to be clear, and to share this idea with the pirate list, you're saying that all the built-in python types, which you guys have rewritten in your "restricted" python, could be compiled to produce parrot PMCs? Or in other words, that we could write our PMCs in rPython? http://codespeak.net/svn/pypy/dist/pypy/objspace/std/ http://codespeak.net/svn/pypy/dist/pypy/lib/ If I can spend my time hacking on pypy and reap the benefits for pirate, sign me up. I'd rather do that than write PMC's directly. What's the plan for modules like socket, that basically wrap external C routines? Is that in the works for pypy as well? It almost seems like they'd require some extensions to python syntax (sort of like pyrex). Sincerely, Michal J Wallace Sabren Enterprises, Inc. ------------------------------------- contact: michal@sabren.com hosting: http://www.cornerhost.com/ my site: http://www.withoutane.com/ -------------------------------------