======================
What's new in PyPy 2.2
======================

.. this is a revision shortly after release-2.1-beta
.. startrev: 4eb52818e7c0

.. branch: sanitise_bytecode_dispatch
Make PyPy's bytecode dispatcher easy to read, and less reliant on RPython
magic. There is no functional change, though the removal of dead code leads
to many fewer tests to execute.

.. branch: fastjson
Fast json decoder written in RPython, about 3-4x faster than the pure Python
decoder which comes with the stdlib

.. branch: improve-str2charp
Improve the performance of I/O writing up to 15% by using memcpy instead of
copying char-by-char in str2charp and get_nonmovingbuffer

.. branch: flowoperators
Simplify rpython/flowspace/ code by using more metaprogramming.  Create
SpaceOperator class to gather static information about flow graph operations.

.. branch: package-tk
Adapt package.py script to compile CFFI tk extension. Add a --without-tk switch
to optionally skip it.

.. branch: distutils-cppldflags
Copy CPython's implementation of customize_compiler, dont call split on
environment variables, honour CFLAGS, CPPFLAGS, LDSHARED and LDFLAGS on Unices.

.. branch: precise-instantiate
When an RPython class is instantiated via an indirect call (that is, which
class is being instantiated isn't known precisely) allow the optimizer to have
more precise information about which functions can be called. Needed for Topaz.

.. branch: ssl_moving_write_buffer

.. branch: pythoninspect-fix
Make PyPy respect PYTHONINSPECT variable set via os.putenv in the same process
to start interactive prompt when the script execution finishes. This adds
new __pypy__.os.real_getenv call that bypasses Python cache and looksup env
in the underlying OS. Translatorshell now works on PyPy.

.. branch: add-statvfs
Added os.statvfs and os.fstatvfs

.. branch: statvfs_tests
Added some addition tests for statvfs.

.. branch: ndarray-subtype
Allow subclassing ndarray, i.e. matrix

.. branch: ndarray-sort
Implement ndarray in-place sorting (for numeric types, no non-native byte order)

.. branch: pypy-pyarray
Implement much of numpy's c api in cpyext, allows (slow) access to ndarray
from c

.. branch: kill-ootype

.. branch: fast-slowpath
Added an abstraction for functions with a fast and slow path in the JIT. This
speeds up list.append() and list.pop().

.. branch: curses_fixes

.. branch: foldable-getarrayitem-indexerror
Constant-fold reading out of constant tuples in PyPy.

.. branch: mro-reorder-numpypy-str
No longer delegate numpy string_ methods to space.StringObject, in numpy
this works by kind of by accident. Support for merging the refactor-str-types
branch

.. branch: kill-typesystem
Remove the "type system" abstraction, now that there is only ever one kind of
type system used.

.. branch: kill-gen-store-back-in
Kills gen_store_back_in_virtualizable - should improve non-inlined calls by
a bit

.. branch: dotviewer-linewidth
.. branch: reflex-support
.. branch: numpypy-inplace-op
.. branch: rewritten-loop-logging
.. branch: no-release-gil
.. branch: safe-win-mmap
.. branch: boolean-indexing-cleanup
.. branch: cpyext-best_base
.. branch: cpyext-int
.. branch: fileops2

.. branch: nobold-backtrace
Work on improving UnionError messages and stack trace displays.

.. branch: improve-errors-again
More improvements and refactorings of error messages.

.. branch: improve-errors-again2
Unbreak tests in rlib.

.. branch: less-stringly-ops
Use subclasses of SpaceOperation instead of SpaceOperator objects.
Random cleanups in flowspace.

.. branch: file-support-in-rpython
make open() and friends rpython

.. branch: incremental-gc
Added the new incminimark GC which performs GC in incremental steps

.. branch: fast_cffi_list_init
fastpath for cffi.new("long[]")

.. branch: remove-eval-frame
remove a pointless abstraction

.. branch: jit-settrace
Allow the jit to continue running when sys.settrace() is active, necessary to
make coverage.py fast

.. branch: remove-numpypy
Remove lib_pypy/numpypy in favor of external numpy fork

.. branch: jit-counter
Tweak the jit counters: decay them at minor collection (actually
only every 32 minor collection is enough). Should avoid the "memory
leaks" observed in long-running processes, actually created by the
jit compiling more and more rarely executed paths.

.. branch: fix-trace-jit
Fixed the usage of sys.settrace() with the JIT. Also made it so using
sys.settrace() doesn't cause the GIL to be released on every single iteration.

.. branch: rordereddict
Implement OrderedDict in RPython
