1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

新闻 Cython 0.23 发布,Python 的 C 语言扩展 下载

Discussion in '软件资讯' started by 漂亮的石头, 2015-08-10.

  1. 漂亮的石头

    漂亮的石头 版主 Staff Member

    Joined:
    2012-02-10
    Messages:
    487,355
    Likes Received:
    47
    Cython 0.23 发布,此版本相比第二个测试版本改进很小,还有一些 bug 修复。

    https://pypi.python.org/pypi/Cython/0.23

    此版本是个重要的特性版本,值得关注的改进如下:

    * PEP 492 (async/await) 和 PEP 448 (star-unpacking generalizations)
    * 内联生长器表达式
    * 支持 C++ 分配和 bool() 操作符
    * 支持覆盖分析

    强烈建议更新,下载:

    http://cython.org/

    http://cython.org/release/Cython-0.23.tar.gz

    http://cython.org/release/Cython-0.23.zip


    SHA1 sums:
    5a49123b39d89a20fb88bdc7886210

    c39cdff695 Cython-0.23.tar.gz
    9bec6c6df861be49ed608a0ab688b67bba543abe Cython-0.23.zip

    0.23 (2015-08-08)
    =================

    新特性
    --------------

    * PEP 492 (async/await) was implemented.
    See https://www.python.org/dev/peps/pep-0492/

    * PEP 448 (Additional Unpacking Generalizations) was implemented.
    See https://www.python.org/dev/peps/pep-0448/

    * Support for coverage.py 4.0+ can be enabled by adding the plugin
    "Cython.Coverage" to the ".coveragerc" config file.

    * Annotated HTML source pages can integrate (XML) coverage reports.

    * Tracing is supported in ``nogil`` functions/sections and module init
    code.

    * When generators are used in a Cython module and the module imports the
    modules "inspect" and/or "asyncio", Cython enables interoperability by
    patching these modules during the import to recognise Cython's internal
    generator and coroutine types. This can be disabled by C compiling the
    module with "-D CYTHON_PATCH_ASYNCIO=0" or "-D CYTHON_PATCH_INSPECT=0"

    * When generators or coroutines are used in a Cython module, their types
    are registered with the ``Generator`` and ``Coroutine`` ABCs in the
    ``collections`` or ``collections.abc`` stdlib module at import time to
    enable interoperability with code that needs to detect and process Python
    generators/coroutines. These ABCs were added in CPython 3.5 and are
    available for older Python versions through the ``backports_abc`` module
    on PyPI. See https://bugs.python.org/issue24018

    * Adding/subtracting/dividing/modulus and equality comparisons with
    constant Python floats and small integers are faster.

    * Binary and/or/xor/rshift operations with small constant Python integers
    are faster.

    * When called on generator expressions, the builtins ``all()``, ``any()``,
    ``dict()``, ``list()``, ``set()``, ``sorted()`` and ``unicode.join()``
    avoid the generator iteration overhead by inlining a part of their
    functionality into the for-loop.

    * Keyword argument dicts are no longer copied on function entry when they
    are not being used or only passed through to other function calls (e.g.
    in wrapper functions).

    * The ``PyTypeObject`` declaration in ``cpython.object`` was extended.

    * The builtin ``type`` type is now declared as PyTypeObject in source,
    allowing for extern functions taking type parameters to have the correct
    C signatures. Note that this might break code that uses ``type`` just
    for passing around Python types in typed variables. Removing the type
    declaration provides a backwards compatible fix.

    * ``wraparound()`` and ``boundscheck()`` are available as no-ops in pure
    Python mode.

    * Const iterators were added to the provided C++ STL declarations.

    * Smart pointers were added to the provided C++ STL declarations.
    Patch by Daniel Filonik.

    * ``NULL`` is allowed as default argument when embedding signatures.
    This fixes ticket 843.

    * When compiling with ``--embed``, the internal module name is changed to
    ``__main__`` to allow arbitrary program names, including those that would
    be invalid for modules. Note that this prevents reuse of the generated
    C code as an importable module.

    * External C++ classes that overload the assignment operator can be used.
    Patch by Ian Henriksen.

    * Support operator bool() for C++ classes so they can be used in
    if-statements.

    Bugs 修复
    ----------

    * Calling "yield from" from Python on a Cython generator that returned a
    value triggered a crash in CPython. This is now being worked around.
    See https://bugs.python.org/issue23996

    * Language level 3 did not enable true division (a.k.a. float division)
    for integer operands.

    * Functions with fused argument types that included a generic 'object'
    fallback could end up using that fallback also for other explicitly
    listed object types.

    * Relative cimports could accidentally fall back to trying an absolute
    cimport on failure.

    * The result of calling a C struct constructor no longer requires an
    intermediate assignment when coercing to a Python dict.

    * C++ exception declarations with mapping functions could fail to compile
    when pre-declared in .pxd files.

    * ``cpdef void`` methods are now permitted.

    * ``abs(cint)`` could fail to compile in MSVC and used sub-optimal code
    in C++. Patch by David Vierra, original patch by Michael Enßlin.

    * Buffer index calculations using index variables with small C integer
    types could overflow for large buffer sizes.
    Original patch by David Vierra.

    * C unions use a saner way to coerce from and to Python dicts.

    * When compiling a module ``foo.pyx``, the directories in ``sys.path``
    are no longer searched when looking for ``foo.pxd``.
    Patch by Jeroen Demeyer.

    * Memory leaks in the embedding main function were fixed.
    Original patch by Michael Enßlin.

    * Some complex Python expressions could fail to compile inside of finally
    clauses.

    * Unprefixed 'str' literals were not supported as C varargs arguments.

    * Fixed type errors in conversion enum types to/from Python. Note that
    this imposes stricter correctness requirements on enum declarations.

    其他改进
    -------------

    * Changed mangling scheme in header files generated by ``cdef api``
    declarations.

    * Installation under CPython 3.3+ no longer requires a pass of the
    2to3 tool. This also makes it possible to run Cython in Python
    3.3+ from a source checkout without installing it first.
    Patch by Petr Viktorin.

    * ``jedi-typer.py`` (in ``Tools/``) was extended and renamed to
    ``jedityper.py`` (to make it importable) and now works with and
    requires Jedi 0.9. Patch by Tzer-jen Wei.

    更多内容请看发行说明

    准确说Cython是单独的一门语言,专门用来写在Python里面import用的扩展库。实际上Cython的语法基本上跟Python一致,而 Cython有专门的“编译器”先将 Cython代码转变成C(自动加入了一大堆的C-Python API),然后使用C编译器编译出最终的Python可调用的模块。
    Cython 0.23 发布,Python 的 C 语言扩展下载地址
     
Loading...