Author: Matti Picus <[email protected]> Branch: newmemoryview-app-level Changeset: r96230:47a045ff6be8 Date: 2019-03-09 21:54 +0200 http://bitbucket.org/pypy/pypy/changeset/47a045ff6be8/
Log: merge default into branch diff --git a/extra_tests/requirements.txt b/extra_tests/requirements.txt --- a/extra_tests/requirements.txt +++ b/extra_tests/requirements.txt @@ -1,3 +1,3 @@ -pytest +pytest<=4.0 hypothesis vmprof diff --git a/lib_pypy/cffi.egg-info/PKG-INFO b/lib_pypy/cffi.egg-info/PKG-INFO --- a/lib_pypy/cffi.egg-info/PKG-INFO +++ b/lib_pypy/cffi.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: cffi -Version: 1.12.1 +Version: 1.12.2 Summary: Foreign Function Interface for Python calling C code. Home-page: http://cffi.readthedocs.org Author: Armin Rigo, Maciej Fijalkowski diff --git a/lib_pypy/cffi/__init__.py b/lib_pypy/cffi/__init__.py --- a/lib_pypy/cffi/__init__.py +++ b/lib_pypy/cffi/__init__.py @@ -5,8 +5,8 @@ from .error import CDefError, FFIError, VerificationError, VerificationMissing from .error import PkgConfigError -__version__ = "1.12.1" -__version_info__ = (1, 12, 1) +__version__ = "1.12.2" +__version_info__ = (1, 12, 2) # The verifier module file names are based on the CRC32 of a string that # contains the following version number. It may be older than __version__ diff --git a/lib_pypy/cffi/_embedding.h b/lib_pypy/cffi/_embedding.h --- a/lib_pypy/cffi/_embedding.h +++ b/lib_pypy/cffi/_embedding.h @@ -221,7 +221,7 @@ if (f != NULL && f != Py_None) { PyFile_WriteString("\nFrom: " _CFFI_MODULE_NAME - "\ncompiled with cffi version: 1.12.1" + "\ncompiled with cffi version: 1.12.2" "\n_cffi_backend module: ", f); modules = PyImport_GetModuleDict(); mod = PyDict_GetItemString(modules, "_cffi_backend"); diff --git a/pypy/doc/__pypy__-module.rst b/pypy/doc/__pypy__-module.rst --- a/pypy/doc/__pypy__-module.rst +++ b/pypy/doc/__pypy__-module.rst @@ -13,7 +13,6 @@ ``if platform.python_implementation == 'PyPy'`` block or otherwise hidden from the CPython interpreter. - Generally available functionality --------------------------------- @@ -29,17 +28,10 @@ create a `memoryview` instance with the data from ``buffer`` and the specified itemsize, format, and optional shape and strides. - - ``bufferable``: a base class that must override the - ``__buffer__(self, flags)`` method. This method should return a memoryview + - ``bufferable``: a base class that provides a ``__buffer__(self, flags)`` + method for subclasses to override. This method should return a memoryview instance of the class instance. It is called by the C-API's ``tp_as_buffer. bf_getbuffer``. - - - ``debug_stop`` - - ``debug_print`` - - ``debug_print_once`` - - ``debug_flush`` - - ``debug_read_timestamp`` - - ``debug_get_timestamp_unit`` - ``builtinify(func)``: To implement at app-level modules that are, in CPython, implemented in C: this decorator protects a function from being ever bound @@ -136,6 +128,59 @@ - ``builders.StringBuilder`` - ``builders.UnicodeBuilder`` +Interacting with the PyPy debug log +------------------------------------ + +The following functions can be used to write your own content to the +:ref:`PYPYLOG <pypylog>`. + + - ``debug_start(category, timestamp=False)``: open a new section; if + ``timestamp`` is ``True``, also return the timestamp which was written to + the log. + + - ``debug_stop(category, timestamp=False)``: close a section opened by + ``debug_start``. + + - ``debug_print(...)``: print arbitrary text to the log. + + - ``debug_print_once(category, ...)``: equivalent to ``debug_start`` + + ``debug_print`` + ``debug_stop``. + + - ``debug_flush``: flush the log. + + - ``debug_read_timestamp()``: read the timestamp from the same timer used by + the log. + + - ``debug_get_timestamp_unit()``: get the unit of the value returned by + ``debug_read_timestamp()``. + + +Depending on the architecture and operating system, PyPy uses different ways +to read timestamps, so the timestamps used in the log file are expressed in +varying units. It is possible to know which by calling +``debug_get_timestamp_unit()``, which can be one of the following values: + +``tsc`` + The default on ``x86`` machines: timestamps are expressed in CPU ticks, as + read by the `Time Stamp Counter`_. + +``ns`` + Timestamps are expressed in nanoseconds. + +``QueryPerformanceCounter`` + On Windows, in case for some reason ``tsc`` is not available: timestamps + are read using the win API ``QueryPerformanceCounter()``. + + +Unfortunately, there does not seem to be a reliable standard way for +converting ``tsc`` ticks into nanoseconds, although in practice on modern CPUs +it is enough to divide the ticks by the maximum nominal frequency of the CPU. +For this reason, PyPy gives the raw value, and leaves the job of doing the +conversion to external libraries. + +.. _`Time Stamp Counter`: https://en.wikipedia.org/wiki/Time_Stamp_Counter + + Transparent Proxy Functionality ------------------------------- diff --git a/pypy/doc/gc_info.rst b/pypy/doc/gc_info.rst --- a/pypy/doc/gc_info.rst +++ b/pypy/doc/gc_info.rst @@ -203,7 +203,7 @@ ``duration`` The total time spent inside minor collections since the last hook - call. See below for more information on the unit. + call, in seconds. ``duration_min`` The duration of the fastest minor collection since the last hook call. @@ -265,30 +265,6 @@ ``gc-collect-done`` is used only to give additional stats, but doesn't do any actual work. -A note about the ``duration`` field: depending on the architecture and -operating system, PyPy uses different ways to read timestamps, so ``duration`` -is expressed in varying units. It is possible to know which by calling -``__pypy__.debug_get_timestamp_unit()``, which can be one of the following -values: - -``tsc`` - The default on ``x86`` machines: timestamps are expressed in CPU ticks, as - read by the `Time Stamp Counter`_. - -``ns`` - Timestamps are expressed in nanoseconds. - -``QueryPerformanceCounter`` - On Windows, in case for some reason ``tsc`` is not available: timestamps - are read using the win API ``QueryPerformanceCounter()``. - - -Unfortunately, there does not seem to be a reliable standard way for -converting ``tsc`` ticks into nanoseconds, although in practice on modern CPUs -it is enough to divide the ticks by the maximum nominal frequency of the CPU. -For this reason, PyPy gives the raw value, and leaves the job of doing the -conversion to external libraries. - Here is an example of GC hooks in use:: import sys @@ -321,8 +297,6 @@ lst = [lst, 1, 2, 3] -.. _`Time Stamp Counter`: https://en.wikipedia.org/wiki/Time_Stamp_Counter - .. _minimark-environment-variables: Environment variables diff --git a/pypy/doc/man/pypy.1.rst b/pypy/doc/man/pypy.1.rst --- a/pypy/doc/man/pypy.1.rst +++ b/pypy/doc/man/pypy.1.rst @@ -99,6 +99,8 @@ If set, equivalent to the ``-W`` option (warning control). The value should be a comma-separated list of ``-W`` parameters. +.. _pypylog: + ``PYPYLOG`` If set to a non-empty value, enable logging, the format is: diff --git a/pypy/module/_cffi_backend/__init__.py b/pypy/module/_cffi_backend/__init__.py --- a/pypy/module/_cffi_backend/__init__.py +++ b/pypy/module/_cffi_backend/__init__.py @@ -3,7 +3,7 @@ from rpython.rlib import rdynload, clibffi from rpython.rtyper.lltypesystem import rffi -VERSION = "1.12.1" +VERSION = "1.12.2" FFI_DEFAULT_ABI = clibffi.FFI_DEFAULT_ABI try: diff --git a/pypy/module/_cffi_backend/test/_backend_test_c.py b/pypy/module/_cffi_backend/test/_backend_test_c.py --- a/pypy/module/_cffi_backend/test/_backend_test_c.py +++ b/pypy/module/_cffi_backend/test/_backend_test_c.py @@ -1,7 +1,7 @@ # ____________________________________________________________ import sys -assert __version__ == "1.12.1", ("This test_c.py file is for testing a version" +assert __version__ == "1.12.2", ("This test_c.py file is for testing a version" " of cffi that differs from the one that we" " get from 'import _cffi_backend'") if sys.version_info < (3,): diff --git a/pypy/objspace/std/unicodeobject.py b/pypy/objspace/std/unicodeobject.py --- a/pypy/objspace/std/unicodeobject.py +++ b/pypy/objspace/std/unicodeobject.py @@ -44,7 +44,7 @@ if not we_are_translated(): try: # best effort, too expensive to handle surrogates - ulength = len(utf8str.decode('utf8')) + ulength = rutf8.codepoints_in_utf(utf8str) except: ulength = length assert ulength == length _______________________________________________ pypy-commit mailing list [email protected] https://mail.python.org/mailman/listinfo/pypy-commit
