Mercurial > hg > mercurial-source
changeset 27864:d308a9ca9ed7
mercurial: don't load C extensions from PyPy
PyPy isn't compatible with Python C extensions.
With this patch, the module load policy is automatically to "Python
only" when run under PyPy. `hg` and other Python scripts importing
mercurial.* modules will run from the source checkout or any
installation when executed with PyPy. This should enable people to
more easily experiment with PyPy and its potentially significant
performance benefits over CPython!
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Tue, 24 Nov 2015 22:21:51 -0800 |
parents | a40c84defd76 |
children | 30a20167ae29 |
files | mercurial/__init__.py |
diffstat | 1 files changed, 7 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/__init__.py +++ b/mercurial/__init__.py @@ -24,6 +24,13 @@ if modulepolicy == '@' 'MODULELOADPOLICY' '@': modulepolicy = 'c' +# PyPy doesn't load C extensions. +# +# The canonical way to do this is to test platform.python_implementation(). +# But we don't import platform and don't bloat for it here. +if '__pypy__' in sys.builtin_module_names: + modulepolicy = 'py' + # Environment variable can always force settings. modulepolicy = os.environ.get('HGMODULEPOLICY', modulepolicy)