PyPy 5.0 发布,Python 解释器

jopen 5年前

PyPy 5.0 发布了,PyPy 是用Python实现的Python解释器。

PyPy是,Python开发者为了更好的Hack Python创建的项目。此外,PyPy比CPython是更加灵活,易于使用和试验,以制定具体的功能在不同情况的实现方法,可以很容易实施。 该项目的目标是,让PyPy比C实现的Python更为容易的适应各个项目和方便裁剪。



  • Support embedding PyPy in a C-program via cffi and static callbacks in cffi.
    This deprecates the old method of embedding PyPy

  • Refactor vmprof to work cross-operating-system, deprecate using buggy
    libunwind on Linux platforms. Vmprof even works on Windows now.

  • Support more of the C-API type slots, like tp_getattro, and fix C-API
    macros, functions, and structs such as _PyLong_FromByteArray(),
    PyString_GET_SIZE, f_locals in PyFrameObject, Py_NAN, co_filename in

  • Use a more stable approach for allocating PyObjects in cpyext. (see
    blog post). Once the PyObject corresponding to a PyPy object is created,
    it stays around at the same location until the death of the PyPy object.
    Done with a little bit of custom GC support.  It allows us to kill the
    notion of “borrowing” inside cpyext, reduces 4 dictionaries down to 1, and
    significantly simplifies the whole approach (which is why it is a new
    feature while technically a refactoring) and allows PyPy to support the
    populart lxml module (as of the next release) with no PyPy specific
    patches needed

  • Make the default filesystem encoding ASCII, like CPython

  • Use hypothesis in test creation, which is great for randomizing tests

Bug 修复

  • Backport always using os.urandom for uuid4 from cpython and fix the JIT as well
    (issue #2202)

  • More completely support datetime, optimize timedelta creation

  • Fix for issue #2185 which caused an inconsistent list of operations to be
    generated by the unroller, appeared in a complicated DJango app

  • Fix an elusive issue with stacklets on shadowstack which showed up when
    forgetting stacklets without resuming them

  • Fix entrypoint() which now acquires the GIL

  • Fix direct_ffi_call() so failure does not bail out before setting CALL_MAY_FORCE

  • Fix (de)pickling long values by simplifying the implementation

  • Fix RPython rthread so that objects stored as threadlocal do not force minor
    GC collection and are kept alive automatically. This improves perfomance of
    short-running Python callbacks and prevents resetting such object between

  • Support floats as parameters to itertools.isslice()

  • Check for the existence of CODESET, ignoring it should have prevented PyPy
    from working on FreeBSD

  • Fix for corner case (likely shown by Krakatau) for consecutive guards with

  • Fix applevel bare class method comparisons which should fix pretty printing
    in IPython

  • Issues reported with our previous release were resolved after reports from users on our issue tracker at or on IRC at #pypy