[pypy-dev] befunge

Terrence Cole list-sink at trainedmonkeystudios.org
Thu Aug 13 02:44:02 CEST 2009


On Tue, 2009-08-11 at 03:16 -0600, Maciej Fijalkowski wrote: 
> Hi.
> 
> It's really cool that you find pypy as a good platform for writing
> interpreters, we're definitely
> happy with that :-) In general, we try to remove stuff from lang
> rather then put more of it
> there. So js/smalltalk/befunge interpreters would hopefully soon
> become projects on
> its own. 

Thank you for the reply.  I was thinking that the current situation in
the lang directory would be unmanagable and I was wondering what I was
missing :-).  

I have not run into any documentation on making the pypy toolchain run
from an installed location, rather than from the svn checkout dir.
Since I don't even understand how autopath works yet, I figured that
getting something more sophisticated working than what everyone else is
doing in the lang directory would be an adventure better left for later.
Is there a plan for making pypy installable?  Is it already possible and
I just haven't looked hard enough?

> On the other hand, we would be happy to give you commit
> access on codespeak
> so you can check stuff in somewhere there. The exact directory layout
> where to put
> other interpreters (and how to make different pages for them etc.) is
> yet to be determined.

That project would be more worthy of commit access than a befunge
interpreter, I think.  Maybe I should go look at how py's installer
works.

> In case you want to use some other hosting service, like google code,
> feel free to do so
> as well. We would be more than happy to reference it from our web page.

I'll check out my options when I get some freetime.  If pypy gets good
support for hosting language implementations worked out at some point in
the future, we can always move it.

> Cheers,
> fijal
> 
> PS. Everybody is more or less on holiday right now, at least until
> next week, hence late
> response, sorry for that.
> 
> PPS. If you check this stuff somewhere, I think it makes sense to
> mention it on the pypy
> blog, so please keep us updated.

Will do!

-Terrence

> On Sat, Aug 8, 2009 at 5:26 PM, Terrence
> Cole<list-sink at trainedmonkeystudios.org> wrote:
> > I have built an RPython implementation of befunge98 on top of pypy.  It
> > took about a week at 30%, and about half of that was spent writing a
> > befunge implementation of pidigits[1].  I honestly expected to have more
> > trouble getting this working, which is one of the reasons I chose
> > something as simple as befunge.  There were some hiccups, certainly, but
> > compared to working with parrot and llvm, pypy was startlingly easy to
> > get up and running.
> >
> > On to benchmarks.
> >
> > Time taken to compute the first 1,000 digits of pi:
> > befunge.py: 3:03.18
> > befunge-c: 0:02.76
> >
> > As advertised, I was able to write and test in python and run it through
> > the translator to get... the wrong test output.  This was, naturally, my
> > own fault.  As it turns out, pidigits requires arbitrary precision
> > integer support.  A quick skim of rarithmatic and rbignum and a bit of
> > hacking later, and I got the awesomely cool results you see above.
> >
> > It was my plan at this point to lay down some benchmarks against other
> > language implementations of pidigits showing how awesome pypy is.
> > Unfortunately, the pidigits test is basically entirely limited by the
> > performance of the bignum library in use.  This effectively means that
> > every language that can use gmp does, and gets a result of 3-7 seconds,
> > which makes the pidigits test basically useless for meaningful
> > interpreter benchmarking.  That said, it is still a good benchmark for
> > bignum libraries, so here goes:
> >
> > Time taken to compute the first 10,000 digits of pi:
> > befunge-c: 5:22.13
> > pypy-c [2]: 5:35.26
> > python-2.5 [2]: 1:31.56
> > python-2.5(gmp) [3]: 0:10.22
> >
> > >From what I see on the pyjitpl5 branch, jit support seems to be wildly
> > in flux at the moment.  I'm thinking I probably want to put jit support
> > on hold until things settle down, although it's definitely on my todo
> > list.  Supporting jit on top of befunge will, I think, be an interesting
> > edge case because the language was specifically designed to be hard to
> > compile.
> >
> > Does pypy want a befunge interpreter?  It is a rather easier to read
> > interpreter than malbolge or javascript, although I did write it myself,
> > so I may be biased. Some of the more esoteric instructions and edge
> > cases are still missing, and there are several improvements that I would
> > still like to try, but it basically works now, so I figured I would
> > throw it out there.  Pypy isn't using a DVCS, so I'm not sure what the
> > best way is for me to share this code.  For now  I've just attached it
> > inline -- it's only 12KiB, packed up.  Untar it into the lang directory
> > and it will create a befunge subdirectory.  Let me know if there is a
> > better way to share code.
> >
> > -Terrence Cole
> >
> > [1] -
> > http://shootout.alioth.debian.org/u32q/benchmark.php?test=pidigits〈=all#about
> > [2] -
> > http://shootout.alioth.debian.org/u32q/benchmark.php?test=pidigits〈=python&id=1
> > [3] -
> > http://shootout.alioth.debian.org/u32q/benchmark.php?test=pidigits〈=python&id=3
> >
> >
> > _______________________________________________
> > pypy-dev at codespeak.net
> > http://codespeak.net/mailman/listinfo/pypy-dev
> >
> _______________________________________________
> pypy-dev at codespeak.net
> http://codespeak.net/mailman/listinfo/pypy-dev




More information about the Pypy-dev mailing list