Author: Maciej Fijalkowski <fij...@gmail.com> Branch: extradoc Changeset: r4977:3d38052a94e1 Date: 2013-07-09 13:23 +0200 http://bitbucket.org/pypy/extradoc/changeset/3d38052a94e1/
Log: Start writing a blog post diff --git a/blog/draft/duhton.rst b/blog/draft/duhton.rst new file mode 100644 --- /dev/null +++ b/blog/draft/duhton.rst @@ -0,0 +1,34 @@ + +Software Transactional Memory lisp experiments +============================================== + +As covered in `the previous blog post`_, the STM subproject of PyPy has been +back on the drawing board and the result of this experiment is an STM-aware +garbage collector written in C. This is finished by now, thanks to Armin +and Remi_M work, we have a fully functional garbage collector and STM subsystem +that can be used from any C program with enough effort. Using it is more than +a little mundane, since you have to inserts write and read barriers by hand +everywhere in your code that reads or writes to garbage collector controlled +memory. Once we finish PyPy integration, those sort of things would be inserted +automatically by STM transformation in the interpreter. + +However, to experiment some more, we created a `lisp interpreter`_ +(called duhton), that follows closely CPython's implementation strategy +and for anyone familiar with CPython's source code, it should be pretty +readable. This interpreter works like a normal and very basic lisp variant, +however it comes with ``(transaction`` builtin, that lets you spawn transactions +using STM system. We implemented a few demos that let you play with the +transaction system. All the demos are running without conflicts, which means +there is no conflicting writes to global memory and hence are amenable to +parallelization very well. They exercise: + +* arithmetics - ``demo/many_sqare_roots.duh`` + +* read-only access to globals - ``demo/trees.duh`` + +* read-write access to local objects - ``demo/trees2.duh`` + +With the latter ones being very similar to the classic gcbench. STM-aware +duhton can be found in `the stmgc repo`_, while the STM-less duhton, +that uses refcounting, can be found in `the duhton repo`_ under the ``base`` +branch. _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit