Hello Christian and pypy team ;-) At 17:16 2005-09-15 +0200, you (Christian Tismer) wrote: >Martijn Faassen wrote: > >>Christian Tismer wrote: >>[snip] >> >>>That's the point. Not prioritizing speed is fine, but it >>>does not allow us to be remarkably slower. Being of competitive >>>speed and then more flexible is a must. If we are slower, the >>>market will not consider us at all. >> >>That's true, and that's a useful clarification. It's still different from the >>impression you're giving out, where you're strongly implying at least to me >>that speed will be significantly *faster* eventually with PyPy. Then again, >>it's forgivable that some hype is used to attract interest to the project. > >I thik I'm the worst speed junkie in the project, and I'm holding >my breath a little until I'm convinced that we can be fast. >ATM I'm quite vague about that, because of the complexity of >crucial parts of our system, and the fact that I don't understand >how we are going to translate that into speedy code without >very high level optimization techniques. I simply can't tell >whether we can reach this without major hand-rewriting or whether >we can gather the missing speed factor by applying JIT technology. >I always thought that the initial big step of creating an initial >binary of reasonable speed would be an easy, first step. > >But it turned out to be a huge step which is by far not in the shape >it should be. This amount of my misestimation makes me nervous and >stops me from praising PyPy's speed all too loudly. > >On the other hand, we have extremely efficient results on the low >level side. RPython programs have been shown to become possibly >very fast. This is an area where I have no doubt making promises, >and that's why I proposed to put some more effort there and at least >provide a tool to produce fast extension modules from RPython, soon. >This is also the reason why I want to make RPython more complete >and easier to use. > >For sure we never have put any hype onto PyPy just to make it more >attractive. We learned that flexibility and speed are not trivial >to marry, and we have proven our claims about flexibility, but >unfortunately not yet on speed. I would really hate to retract >this claim. ATM, there is simply no prognosis possible.
Well, keep the faith ;-) A couple of comments: 1) ISTM that "speed" needs to be split at least into speed of translation and speed of the resulting code/interpreter pair, though interactively one experiences the combined effect. (BTW, by that '/' I mean to highlight the fact that output code could be raw machine code packaged for OS linking/loading and where the "interpreter" is a CPU, vs. byte code for a VM such as found in cpython or jython etc. Also it could be pointed out that the target pair could eventually be on another platform entirely, such as a cell phone or game device, or I suppose a vending machine control system etc.) 1a) Re speed of translation: I note that translation has multiple phases/passes, so I wonder if this would be amenable to pipelining, so as to be able to take automatic advantage of multiple processors, either in the same box, or cooperating via fast network links if there were command line options for such delegation? Could one pickle state and pass it on to the next phase? Could you factor the passes as separate programs to connect in a unix-os-level pipeline? In which case I guess parallel make utilities could possibly come into play. Just thoughts... 1b) (1a) Brings the thought that the same interpreter will have a lot of unused baggage for any particular use, if it is a monolith. Which again brings up the translation-time/platform vs run-time/platform distinctions. I.e. space may be as important as speed in the target run-time environment, but I may be willing to crunch overnight translating on a cluster to make something that will fit and run acceptably on the target platform. BTW, is the issue of ROM-ability entirely low-level, or is it some kind of concern higher up? 1c) Will the different components of an interpreter be directable to dlls/sos and be able to load lazily/be-excluded-if-not-needed/whatever e.g. for good interactive startup, but also be configurable to load monolithically? IWT this is make-file stuff, but a makefile can't select pieces if they were welded together by the way they were developed, so I am wondering how that aspect is happening. 2) ISTM that you guys will be the first to notice what meta-info will be useful to pass into the translator(s) to achieve various results, so I wonder what analogies to e.g., C's "volatile" declaration you may want, and what vehicle you will want for representing and transmitting such information. Pragmas? more -*- cookies -*- ? If you come up with something really good, isn't it likely regular python will adopt it, as well as vice versa? The same goes for language syntax changes that don't hide behind a '#' -- IOW, will you guys wind up with some recommendations for language changes? I don't think you should be burdened with writing PEPs and haggling about syntactic sugar, but IWT you guys will discover optimization obstacles that no one else is in a position to see (or maybe even comprehend ;-), but that you could communicate by saying, "If we had a way to say this about such-and-so in python, we could optimize such-and-so much better" and that could help the language evolve in a win-win way. Is there a way to get a peek into your ongoing thoughts without asking you to hang all your unfinished paintings in the window when you go home from the studio each night? 2a) ISTM there will need to be module-specific meta-info, not just -O or -OO etc command line options. And since module translation occurs primarily at import time, there is the opportunity to pass dynamically determined meta-info to the import process as well, not just letting it see meta-info embedded in the source file or refer to interpreter startup command line parameter info. (I guess you could also package meta-info in various config files, or consolidate such info in one file for members of a package, etc. but I wonder if it's not dangerous to go further down the path of tangling abstract hierarchies with platform specific file system properties). So I'm wondering, if you see useful mods/variations to the semantics of import, or other python aspects, how would such ideas get back to python, so the appropriate language PEPs can get under way (though not prematurely) ? 3) I'm wondering how much of pypy translation technology could be factored out to apply to any language translation, and whether there could be a family of porting tool spinoffs eventually. I guess I rambled, as usual ;-) Anyhow, I am sure EU pypy funding is well spent. I hope they will renew their commitment when the time comes. Best wishes to you all. Regards, Bengt Richter _______________________________________________ pypy-dev@codespeak.net http://codespeak.net/mailman/listinfo/pypy-dev