======================
What's new in PyPy 1.9
======================

.. this is the revision just after the creation of the release-1.8.x branch
.. startrev: a4261375b359

.. branch: default

Working hash function for numpy types.

.. branch: array_equal

.. branch: better-jit-hooks-2

Improved jit hooks

.. branch: faster-heapcache

.. branch: faster-str-decode-escape

.. branch: float-bytes

Added some primitives for dealing with floats as raw bytes.

.. branch: float-bytes-2

Added more float byte primitives.

.. branch: jit-frame-counter

Put more debug info into resops.

.. branch: kill-geninterp

Kill "geninterp", an old attempt to statically turn some fixed
app-level code to interp-level.

.. branch: kqueue

Finished select.kqueue.

.. branch: kwargsdict-strategy

Special dictionary strategy for dealing with \*\*kwds. Now having a simple
proxy ``def f(*args, **kwds): return x(*args, **kwds)`` should not make
any allocations at all.

.. branch: matrixmath-dot

numpypy can now handle matrix multiplication.

.. branch: merge-2.7.2

The stdlib was updated to version 2.7.2

.. branch: ndmin

.. branch: newindex

.. branch: non-null-threadstate

cpyext: Better support for PyEval_SaveThread and other PyTreadState_*
functions.

.. branch: numppy-flatitter

flatitier for numpy

.. branch: numpy-back-to-applevel

reuse more of original numpy

.. branch: numpy-concatenate

concatenation support for numpy

.. branch: numpy-indexing-by-arrays-bool

indexing by bool arrays

.. branch: numpy-record-dtypes

record dtypes on numpy has been started

.. branch: numpy-single-jitdriver

.. branch: numpy-ufuncs2

.. branch: numpy-ufuncs3

various refactorings regarding numpy

.. branch: numpypy-issue1137

.. branch: numpypy-out

The "out" argument was added to most of the numypypy functions.

.. branch: numpypy-shape-bug

.. branch: numpypy-ufuncs

.. branch: pytest

.. branch: safe-getargs-freelist

CPyext improvements. For example PyOpenSSL should now work

.. branch: set-strategies

Sets now have strategies just like dictionaries. This means a set
containing only ints will be more compact (and faster)

.. branch: speedup-list-comprehension

The simplest case of list comprehension is preallocating the correct size
of the list. This speeds up select benchmarks quite significantly.

.. branch: stdlib-unification

The directory "lib-python/modified-2.7" has been removed, and its
content merged into "lib-python/2.7".

.. branch: step-one-xrange

The common case of a xrange iterator with no step argument specified
was somewhat optimized. The tightest loop involving it,
sum(xrange(n)), is now 18% faster on average.

.. branch: string-NUL

PyPy refuses filenames with chr(0) characters. This is implemented in
RPython which can enforce no-NUL correctness and propagation, similar
to const-correctness in C++.

.. branch: win32-cleanup
.. branch: win32-cleanup2
.. branch: win32-cleanup_2

Many bugs were corrected for windows 32 bit. New functionality was added to
test validity of file descriptors, leading to the removal of the global
_invalid_parameter_handler

.. branch: win32-kill

Add os.kill to windows even if translating python does not have os.kill

.. branch: win_ffi

Handle calling conventions for the _ffi and ctypes modules

.. branch: win64-stage1

.. branch: zlib-mem-pressure

Memory "leaks" associated with zlib are fixed.

.. branch: ffistruct

The ``ffistruct`` branch adds a very low level way to express C structures
with _ffi in a very JIT-friendly way


.. "uninteresting" branches that we should just ignore for the whatsnew:

.. branch: exception-cannot-occur

.. branch: sanitize-finally-stack

.. branch: revive-dlltool

(preliminary work for sepcomp)
