Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| python:pypy [2013/11/16 15:15] – Update TODO list and order in priority DavidNaylor | python:pypy [2022/08/15 05:17] (current) – Add title section, remove uncessary horizontal rule KubilayKocak | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ---- | + | ====== PyPy ====== |
| - | ====== | + | ====== |
| - | Pkgng packages for all supported %%FreeBSD%% versions will be provided for i386 and amd64 in due course. | + | |
| - | ====== Building ====== | ||
| Building %%PyPy%% can be done using the Ports Collection or directly from source. | Building %%PyPy%% can be done using the Ports Collection or directly from source. | ||
| Line 16: | Line 14: | ||
| '' | '' | ||
| - | |||
| - | ===== Instances ===== | ||
| - | %%PyPy%% supports a diverse set of configurations, | ||
| - | |||
| - | The default instance (called '' | ||
| - | |||
| - | ^ Name ^ Binary ^ Options ^ Description ^ | ||
| - | | '' | ||
| - | | '' | ||
| - | | '' | ||
| - | | '' | ||
| - | |||
| - | The '' | ||
| - | |||
| - | ===== Custom Instances ===== | ||
| - | Custom instances can be specified for the port to build and install. | ||
| - | |||
| - | The list of instances to build is passed by the '' | ||
| - | |||
| - | The list of variables that defines an instance specification are: | ||
| - | |||
| - | ^ Variable ^ Description ^ | ||
| - | | '' | ||
| - | | '' | ||
| - | | '' | ||
| - | | '' | ||
| - | |||
| - | '' | ||
| - | |||
| - | ==== Example ==== | ||
| - | The following example defines a custom instance, with name '' | ||
| - | |||
| - | < | ||
| - | # cat >> / | ||
| - | PYPY_INST= | ||
| - | PYPY_CUSTOM_NAME= | ||
| - | PYPY_CUSTOM_TRANSLATE_ARGS= --gcrootfinder=shadowstack --gc=generation | ||
| - | PYPY_CUSTOM_OPT= | ||
| - | PYPY_CUSTOM_OBJSPACE_ARGS= | ||
| - | _EOF | ||
| - | # make -C / | ||
| - | </ | ||
| - | |||
| - | ===== Memory Requirements ===== | ||
| - | Building %%PyPy%% requires a lot of memory. | ||
| - | |||
| - | By default %%PyPy%% builds all instances in parallel which stacks the required memory (i.e. each build will use the maximum memory listed below). | ||
| - | |||
| - | The %%PyPy%% port checks if your system has sufficient memory and refuses to build if it detects insufficient memory. | ||
| - | |||
| - | The following memory requirements were determined using '' | ||
| - | |||
| - | ^ Translator ^ 32-bit ^ 64-bit ^ | ||
| - | | python2.7 | 2.2GiB | 4.4GiB | | ||
| - | | pypy-2.1 (min mem) | 2.1GiB | 3.6GiB | | ||
| - | | pypy-2.1 | 2.4GiB | 5.8GiB | | ||
| - | | System | 0.2GiB | 0.4GiB | | ||
| - | |||
| - | See '' | ||
| - | |||
| - | ===== Compilation Time ===== | ||
| - | %%PyPy%% takes a long time to build. | ||
| - | |||
| - | Each instance built can be translated concurrently if concurrency is not disabled. | ||
| - | |||
| - | The following times are based on an Intel Core i7-2600 (4 physical cores + hyper-threading = 8 logical cores) for building the DEFAULT instance: | ||
| - | |||
| - | ^ Translator ^ 32-bit ^ 64-bit ^ | ||
| - | | python2.7 | 84 mins | 81 mins | | ||
| - | | pypy-2.1 (min mem) | 50 mins | 72 mins | | ||
| - | | pypy-2.1 | 51 mins | 49 mins | | ||
| - | | Compilation | 6 mins | 6 mins | | ||
| ===== Building without port ===== | ===== Building without port ===== | ||
| See [[http:// | See [[http:// | ||
| - | |||
| - | ====== Status ====== | ||
| - | %%PyPy%% builds and runs under %%FreeBSD%% under most configurations. | ||
| - | * //Boehm GC:// The Boehm GC works upstream but does not work under %%FreeBSD%% | ||
| - | * //Unit Tests:// All unit tests pass upstream, many tests do not pass under %%FreeBSD%% (and at least one test segfaults pypy). | ||
| - | * //ASMGCC GC:// The ASMGCC GC is not supported on non-Linux systems and only works with particular GCC compilers with particular compiler options (i.e. very temperamental). | ||
| - | * //CLI backend:// The CLI (.NET) based %%PyPy%% is not supported upstream | ||
| - | * //JVM backend:// The JVM (Java) based %%PyPy%% is not supported upstream | ||
| ====== TODO ====== | ====== TODO ====== | ||
| - | * Upstream appropriate patches | ||
| * Properly check sandbox support and create sandbox VM-thing (does upstream support sandboxing? | * Properly check sandbox support and create sandbox VM-thing (does upstream support sandboxing? | ||
| - | * Add pypy-based numpy port | + | * Add pypy-based numpy port??? |
| - | * Update lang/ | + | |
| * Make a jitviewer port (depends on flask pygments simplejson Jinja2 Werkzeug) | * Make a jitviewer port (depends on flask pygments simplejson Jinja2 Werkzeug) | ||
| * Support valgrind | * Support valgrind | ||
| * Integrate %%PyPy%% into bsd.python.mk | * Integrate %%PyPy%% into bsd.python.mk | ||