When pypy isn't installed then the port needs to use python to translate
pypy, however all options are not specified since two of the three (the
pypy related options) are not valid. Overcome this by a bit of re-ordering
and abusing OPTIONS_SLAVE in the later case.
Reported by: Andrzej Tobola <ato@iem.pw.edu.pl>
Changes:
- Drop local mirror
- Drop DIST_SUBDIR (distfile name no longer a generic "release-x.y.z.tar.bz2".
- Add test dependencies (all sub-ports, a la gdbm, sqlite and tkinter)
- Use gmake instead of using sed to transform the Makefile
- Use options helper variables
- Rename regression-test -> do-test
ChangeLog (see http://morepypy.blogspot.co.za/2016/03/pypy-50-released.html):
- Faster and leaner: improved JIT warmed (up to 30% faster) and improved memory
consumption (dropped by about 30%).
- C-API Upgrade: cpyext is much faster and lxml now passes all tests when
using cython compiled components.
- CFFI: ships with cffi-1.5.2.
- Add back PYPY_BITS as it is required to define the names of two files,
depending if pypy is translated for 32 or 64 bit systems [1].
- Change maintainership to python@ [2][3][4]
Reported by: pkg-fallout [1]
Approved by: koobs@ [2]
PR: 204743 [3]
Submitted by: robak@ [4]
Changes:
- Remove plist-sub PYPY_BITS
- Switch PYPY_VER to PYPY_CFFI_VER
Change Log:
- Highlighted features:
- Update cffi to 1.3.1.
- Update Python implementation to 2.7.10.
- New vectorisation optimisations added to the JIT. To enable add
--jit vec=1 (or --jit vec_all=1 for all vectorisation optimisations).
- Improved JIT warmup time of ~20%.
- Reduced memory consumption by ~20%.
- Numpy's ndarray and numeric dtypes are almost feature complete.
- Numpy's linalg, random and fft have been implemented as cffi modules using
the same underlying libraries as upstream.
- Bug Fixes
- Fix a bug when unrolling double loops in JITted code
- Fix multiple memory leaks in the ssl module, one of which affected CPython
as well (thanks to Alex Gaynor for pointing those out)
- Use pkg-config to find ssl headers on OS-X
- Fix a crash on non-linux when running more than 20 threads
- In cffi, ffi.new_handle() is more cpython compliant
- Accept unicode in functions inside the _curses cffi backend exactly like
cpython
- Fix a segfault in itertools.islice()
- Fix ndarray.copy() for upstream compatability when copying non-contiguous
arrays
- Fix assumption that lltype.UniChar is unsigned
- Fix a subtle bug with stacklets on shadowstack
- Improve support for the cpython capi in cpyext (our capi compatibility
layer). Fixing these issues inspired some thought about cpyext in general,
stay tuned for more improvements
- When loading dynamic libraries, in case of a certain loading error, retry
loading the library assuming it is actually a linker script, like on Arch
and Gentoo
- New features
- Internal cleanup of RPython class handling
- Support stackless and greenlets on PPC machines
- Improve debug logging in subprocesses: use PYPYLOG=jit:log.%d for example
to have all subprocesses write the JIT log to a file called ?log.%d?, with
?%d? replaced with the subprocess? PID.
- Support PyOS_double_to_string in our cpyext capi compatibility layer
- Add an optimization pass to vectorize loops using x86 SIMD intrinsics.
- Support __stdcall on Windows in CFFI
- Improve debug logging when using PYPYLOG=???
- Deal with platforms with no RAND_egd() in OpenSSL
- Numpy
- Improve support for __array_interface__
- Propagate most NAN mantissas through float16-float32-float64 conversions
- Add support for ndarray.ctypes
- Fast path for mixing numpy scalars and floats
- Add support for creating Fortran-ordered ndarrays
- Fix casting failures in linalg (by extending ufunc casting)
- Recognize and disallow (for now) pickling of ndarrays with objects embedded
in them
- Performance improvements and refactorings
- Improvements in slicing byte arrays
- Improvements in enumerate()
- Silence some warnings while translating
- Reuse hashed keys across dictionaries and sets
- Refactor JIT interals to improve warmup time by 20% or so at the cost of a
minor regression in JIT speed
- Recognize patterns of common sequences in the JIT backends and optimize them
- Make the garbage collecter more incremental over external_malloc() calls
- Share guard resume data where possible which reduces memory usage
- Fast path for zip(list, list)
- Reduce the number of checks in the JIT for lst[a:]
- Move the non-optimizable part of callbacks outside the JIT
- Factor in field immutability when invalidating heap information
- Unroll itertools.izip_longest() with two sequences
- Minor optimizations after analyzing output from vmprof and trace logs
- Remove many class attributes in rpython classes
- Handle getfield_gc_pure* and getfield_gc_* uniformly in heap.py
- Improve simple trace function performance by lazily calling fast2locals and
locals2fast only if truly necessary
Submitted by: robak@
PR: 204743 (with modification)
Changes:
- Add external cffi ports (a la python):
- databases/pypy-gdbm
- databases/pypy-sqlite3
- x11-toolkits/pypy-tkinter
- Add bsd.pypy.mk for consistency between pypy ports.
- Add bsd.pypy.cffi.mk for consistency with external cffi ports.
- Switch back to using $PREFIX/pypy-X.Y (the '-' separator is required to
differentiate between lang/pypy and lang/pypy3)
- Remove all patches (upstreamed, see announcement below)
ChangeLog:
- Bug Fixes
- Revive non-SSE2 support
- Fixes for detaching _io.Buffer*
- Clear up contention in the garbage collector between trace-me-later and
pinning
- Issues reported with our previous release were resolved after reports from
users on our issue tracker at https://bitbucket.org/pypy/pypy/issues or on
IRC at #pypy.
- New features:
- cffi was updated to version 1.3
- The python stdlib was updated to 2.7.10 from 2.7.9
- vmprof now supports multiple threads
- The translation process builds cffi import libraries for some stdlib
packages, which should prevent confusion when package.py is not used
- better support for gdb debugging
- FreeBSD should be able to translate PyPy "out of the box" with no patches
- Numpy:
- Better support for record dtypes, including the align keyword
- Implement casting and create output arrays accordingly (still missing some
corner cases)
- Support creation of unicode ndarrays
- Better support ndarray.flags
- Support axis argument in more functions
- Refactor array indexing to support ellipses
- Allow the docstrings of built-in numpy objects to be set at run-time
- Support the buffered nditer creation keyword
- Performance improvements:
- Delay recursive calls to make them non-recursive
- Skip loop unrolling if it compiles too much code
- Tweak the heapcache
- Add a list strategy for lists that store both floats and 32-bit integers.
The latter are encoded as nonstandard NaNs. Benchmarks show that the speed
of such lists is now very close to the speed of purely-int or purely-float
lists.
- Simplify implementation of ffi.gc() to avoid most weakrefs
- Massively improve the performance of map() with more than one sequence
argument
Differential Revision: https://reviews.freebsd.org/D3285
* Mark as only for i386, amd64 and armv6 (JIT only supported on those archs)
* Move PyPy dir to pypy26 (for consistency with llvm, et al)
* Drop PYPY_ARCH (unused)
* Use shell to detect ${BUILD_WRKSRC}/Makefile [1]
* Enable CFFI for components that do not have external dependencies
* Update regression-test to align with upstreams procedures
* Complete changes for detecting cpu count via sysctl (upstreamed)
* Properly detect arm (upstreamed) [2]
* Update pkg-plist generation and regenerate
[1] When make evaluates the dependency for pre-build the variable
${BUILD_WRKSRC} is not fully defined (i.e. ${WRKSRC}) so it does not get
properly expanded causing make to never find the correct Makefile.
PR: 202159 [2]
Reviewed by: sbruno (prior version)
- Use upstreams directory layout instead of FreeBSD's preferred directory
layout [1]
- Move the pypy installation into $PREFIX/pypy-x.y
- Remove the ability to build multiple instances (i.e. default to just
the JIT instance)
- Install the binary as pypy (instead of pypy-2.6 with a symlink to pypy)
- Remove the creation of cffi modules (will be outsourced to other ports,
a la cpython)
- Remove sqlite3 and gdbm dependencies (i.e. cffi modules)
PR: 183795
Differential Revision: https://reviews.freebsd.org/D3209
Temporarily disable CFFI module compilation post-build and the shared
CFFI libraries in the packaging lists to due failures finding and
linking tkinter:
Building tk bindings failed.
You can either install development headers package,
add the --without-tk option to skip packaging this
binary CFFI extension, or say --without-cffi.
Traceback (most recent call last):
File "<builtin>/app_main.py", line 75, in run_toplevel
File "/usr/ports/lang/pypy/files/compile_cffi.py", line 15, in <module>
create_cffi_import_libraries(sys.executable, Options(cffi_build_scripts), py.path.local(basedir))
File "/wrkdirs/usr/ports/lang/pypy/work/pypy-pypy-295ee98b6928/pypy/tool/release/package.py", line 84, in create_cffi_import_libraries
raise MissingDependenciesError(module)
MissingDependenciesError: _tkinter/tklib_build.py
This change is being committed on behalf of and in leui of maintainer
providing a comprehensive fix, as they are currently AFK.
Reported by: hawkowl (via IRC, portsmon)
Reviewed by: dbn (maintainer)
Approved by: dbn (maintainer)
Changes:
* Use pypy.tool.release.package to compile cffi modules.
ChangeLog:
* Python compatibility:
* Improve support for TLS 1.1 and 1.2
* Support for the PYTHONOPTIMIZE environment variable (impacting builtin's
__debug__ property)
* Issues reported with our previous release were resolved after reports
from users on our issue tracker at https://bitbucket.org/pypy/pypy/issues
or on IRC at #pypy.
* New features:
* Add preliminary support for a new lightweight statistical profiler
vmprof, which has been designed to accomodate profiling JITted code
* Numpy:
* Support for object dtype via a garbage collector hook
* Support for .can_cast and .min_scalar_type as well as beginning a
refactoring of the internal casting rules
* Better support for subtypes, via the __array_interface__,
__array_priority__, and __array_wrap__ methods (still a work-in-progress)
* Better support for ndarray.flags
* Performance improvements:
* Slight improvement in frame sizes, improving some benchmarks
* Internal refactoring and cleanups leading to improved JIT performance
* Improved IO performance of zlib and bz2 modules
* We continue to improve the JIT's optimizations. Our benchmark suite is
now over 7 times faster than cpython
Changes:
* Merge pypy-devel into pypy
* Drop pypy-devel (was intended to track pypy-current but no automated
process was implemented)
* Drop upstreamed patches
PR: 199790
This backports changes from pypy-devel. Although that port has not gone
through standard QA, there have not been any complaints in the months that
it has been available under pypy-devel.
Changes:
* various: migrate USE_BZIP2 to USES=tar:bzip2
* various: migrate USE_XZ to USES=tar:xz
* multimedia/py-ffmpeg: add and prefer github (GH) as master site
* ports-mgmt/portbuilder: specify license as BSD2CLAUSE (instead of just BSD)
Most ports are updated infrequently so a single batch commit is preferred over
collating changes per port.
Also, require a modern compiler that can handle c11. Although this is
not strictly required (just about any C compiler would do) the base GCC
compiler has a memory bug and thus cannot reasonably compile the ports.
Be more aggresive in cleaning up temporary directories that pypy leaves
behind in the copied directories (files and directories in __pycache__).
Only .so and .pyc should be left behind in those __pycache__ directories
and no subdirectories.
Also remove the manual requirement for building lang/pypy. Redports
successfully built lang/pypy3-devel (with leftovers) in 19 hours.
Reported by: Redports
pypy-devel is intended as a staging ground for beta releases and - while
no beta releases are available - snapshots of pypy default branch.
While introducing pypy-devel to build logic has been reworked to better
accomodate pypy3. The lib-python/2.7 and lib_pypy folders are not renamed
after extraction (with only symbolic links used to emulate the structure).
PyPy still expects the standard structure and the symbolic links satisfy
this change.
The devel port was requested by mva@ to better support commercial clients.
Changes:
- Rename the binary, include and library to pypy-2.1 (recommended by mva@).
This is in preparation to introduce PyPy3 (PyPy implementing Python 3.2)
Highlights:
* JIT support for ARM, architecture versions 6 and 7, hard- and soft-float ABI
* Stacklet support for ARM
* Support for os.statvfs and os.fstatvfs on unix systems
* Improved logging performance
* Faster sets for objects
* Interpreter improvements
* During packaging, compile the CFFI based TK extension
* Pickling of numpy arrays and dtypes
* Subarrays for numpy
* Bugfixes to numpy
* Bugfixes to cffi and ctypes
* Bugfixes to the x86 stacklet support
* Fixed issue 1533: fix an RPython-level OverflowError for
space.float_w(w_big_long_number). https://bugs.pypy.org/issue1533
* Fixed issue 1552: GreenletExit should inherit from BaseException.
https://bugs.pypy.org/issue1552
* Fixed issue 1537: numpypy __array_interface__ https://bugs.pypy.org/issue1537
* Fixed issue 1238: Writing to an SSL socket in PyPy sometimes failed with a
"bad write retry" message. https://bugs.pypy.org/issue1238
Highlights:
* Support for os.statvfs and os.fstatvfs on unix systems.
* Fixed issue 1533: fix an RPython-level OverflowError for
space.float_w(w_big_long_number).
* Fixed issue 1552: GreenletExit should inherit from BaseException.
* Fixed issue 1537: numpypy __array_interface__
* Fixed issue 1238: Writing to an SSL socket in pypy sometimes failed with a
"bad write retry" message.
* distutils: copy CPython's implementation of customize_compiler, dont call
split on environment variables, honour CFLAGS, CPPFLAGS, LDSHARED and
LDFLAGS.
* During packaging, compile the CFFI tk extension.
Portlint recommends "USE_GCC=yes+" however such an option breaks everything.
Ignore portlint and use "USE+GCC=4.2+" as the port will compile with just about
any valid C compiler.
Changes to port:
* Abstract ${BUILDDIR} for files/Makefile
* Remove MAKE_JOBS_SAFE (depreciated)
* Use "USE_GCC=yes+" as recommended by portlint
Highlights:
* Bugfixes to the ARM JIT backend, so that ARM is now an officially
supported processor architecture
* Stacklet support on ARM
* Interpreter improvements
* Various numpy improvements
* Bugfixes to cffi and ctypes
* Bugfixes to the stacklet support
* Improved logging performance
* Faster sets for objects
- Track the change in build location (s/2.0.2/2.0.x/g)
- Only tested on amd64 as this is only a point releas
- If SANDBOX fails to build, install pypy-2.0.2 and try again
ChangeLog:
* Fix crash in the JIT when calling external C functions in multithreaded context.
Approved by: eadler,bdrewery (mentors, implicit)
Port ChangeLog:
* Sqlite3 added as a dependency
* DIST_SUBDIR no longer used as upstream now releases with a proper tarball
* Added ability to translate with pypy running in restricted memory mode
( faster than python2.7 and uses less memory!)
* Added support for pypy modules that use cffi (_sqlite3 and _curses)
Approved by: eadler,bdrewery (mentors, implicit)
The internals of the port have been substantially reworked:
* All predefined instances can be selected via options [1]
* Optionally use options, if user does not overwrite instance list
* Make translation with pypy an option, if it is available.
* Make memory checking more refined [2]
* Add a Wiki page details lang/pypy
* Fix the test target
* Refactor build target (easier to review, edit)
* Rename patches to prevent churn
[1] Although two are broken upstream and one possibly discontinued
[2] My memory limits appear to be too conservative. Set PYPY_IGNORE_MEM for now
Reviewed by: Kuro <poyopoyo@puripuri.plala.or.jp>, rm@
Approved by: bdrewery (mentor)
- Detection of insufficient memory [1]
- Change %% SUB vaes from fixed at python 27 to use any installed version of python [1]
- Fix syntax of non system include "" vs <> [2]
PR: ports/168974 [1]
Submitted by: David Naylor <naylor.b.david@gmail.com> (maintainer) [1]
Reviewed by: scheidel@ (me) [2]