On Sat, Dec 31, 2011 at 12:03 PM, Laurence Tratt <lau...@tratt.net> wrote: > Hi all, > > As many of you know, over the past few months I've been creating an RPython > VM for the Converge language <http://convergepl.org>. This is now mostly > complete at a basic level - enough to run pretty much all of my Converge > programs at least on Linux and OpenBSD. [Major remaining issues are: no > floating point numbers; 32 bit support is not finished; may not compile on OS > X.] > > First, the good news. The RPython VM (~3 months effort) is currently close to > 3 times faster than the old C-based VM (~18 months effort). I think the > Converge VM is the first medium-scale VM to be created by someone outside the > core PyPy group, so those numbers are a testament to the power of the RPython > approach. I'd like to thank (alphabetically) Carl Friedrich Bolz, Maciej > Fijalkowski, and Armin Rigo who've offered help, encouragement and (in > Armin's case) big changes to RPython to help the Converge VM. I wouldn't have > got this far without their help, or of others on the PyPy IRC channel. > > Now, the bad news: the RPython VM should be a lot faster than it currently is > as the old VM is (to say the least) not very good. In large part this is > because I simply don't know how best to optimise an RPython VM, particularly > the JIT (in fact, at the moment the JITted VM seems to be sometimes slower > than the non-JIT VM: I don't have an explanation for why). I'm therefore > soliciting advice / code from those more knowledgeable than myself on how to > optimise an RPython VM. Note that I'm intentionally being more general than > the Converge VM: I hope that some of the ideas generated will prove useful to > the many VMs that I hope will come to be implemented in RPython. Some of my > ignorance is simply that many parts of RPython have little or no > documentation: by playing the part of a clueless outsider (it comes naturally > to me!), I hope I may help pinpoint areas where further documentation is most > needed. > > If you want to test out the VM it's here: > > https://github.com/ltratt/converge > > Building should mostly be: > > $ export PYPY_SRC=<location of PyPy source directory> > $ cd converge > $ ./configure > $ make > > That will build a JITted VM. If you want a lower level of optimisation, > specify it to configure e.g. "./configure --opt=3". Please note that, for the > time being, on Linux the JIT won't work with the default GC root finder, so > you'll need to manually specify --gcrootfinder=shadowstack in vm/Makefile. > Apart from that, building on 64 bit Unix should hopefully be reasonably > simple. > > A simple performance benchmark is along the lines of "make clean ; cd vm ; > make ; cd .. ; time make regress" which builds the compiler, various > examples, and the handful of tests that Converge comes with. [Please note, > Converge wasn't built with a TDD philosophy; while I welcome contributions of > tests, I am unable to make any major efforts in that regard myself in the > short-term. I know this sits uneasily with many in the PyPy community, but I > hope you are able to overlook this difference in development philosophy.] > > Here are some examples of questions I'd love to know answers to: > > * Why is the JITted VM that's built sometimes 2x slower than --opt=3, > but other times a few percent faster *on the same benchmark*?! > * What are virtualrefs? > * What is a more precise semantics of elidable? > * What is 'specialize'? > * Is it worth manually inlining functions in the main VM loop? > * Can I avoid the (many) calls to rffi.charp[size]2str, given that > they're mostly taken from the never-free'd mod_bc? Would this work > well on some GCs but not others? > > No doubt there are many other things I would do well to know, but plainly do > not - please educate me! > > If you have any questions or comments about Converge or the VM, please don't > hesitate to ask me - and thank you in advance for your help. > > Yours, > > > Laurie > -- > Personal http://tratt.net/laurie/ > The Converge programming language http://convergepl.org/ > https://github.com/ltratt http://twitter.com/laurencetratt > _______________________________________________ > pypy-dev mailing list > pypy-dev@python.org > http://mail.python.org/mailman/listinfo/pypy-dev
Hi Laurence. Overall great work, but I have to point out one thing - if you want us to look into benchmarks, you have to provide a precise benchmark and a precise way to run it (few examples would be awesome), otherwise for people who are not aware of the language this might pose a challenge. PS. Glad to be of any help Cheers, fijal _______________________________________________ pypy-dev mailing list pypy-dev@python.org http://mail.python.org/mailman/listinfo/pypy-dev