Change Log

eGenix PyRun Change Log

The change log includes a detailed description of all changes to this package in the recent releases.
Version: 2.6.0

Changes from 2.5.0 to 2.6.0

Enhancements / Changes

  • Added support for Python 3.12
  • Added support for LTO release builds
  • Added dev build targets for development; these don't use PGO and thus build faster

Changes from 2.2.3 to 2.5.0

Enhancements / Changes

  • Added support for Python 3.8 - 3.11
  • Removed support for Python 3.5-3.7
  • Modernized the directory setup and build
  • Changed the license to the Apache2 license
  • Extracted the code from our internal mono-repo to put on Github
  • Relaunched the project on Github
Please note: We did not publicly release versions between 2.2.3 and 2.5.0.

Changes from 2.2.2 to 2.2.3

Enhancements / Changes

  • Removed lzma module from PyRun for Python 3.x again, since this caused too many issues with incompatible/missing libzma.so references. The module is still being built as optional add-on and can be used if the necessary libs are available, but it will no longer prevent PyRun from working altogether.

install-pyrun Enhancements

  • Updated install-pyrun to default to eGenix PyRun 2.2.3 and its feature set.

Changes from 2.2.1 to 2.2.2

Enhancements / Changes

  • Upgraded PyRun to Python 2.7.12, Python 3.4.5 and Python 3.5.2.
  • Fixed rpath setting to properly include the $ORIGIN marker. Without this, the rpath setting doesn't work.
  • Added missing lzma module to default PyRun 3.x installation. Please note that this adds an additional dependency on libzma.so.5 for PyRun for Python 3.4 and 3.5.

install-pyrun Enhancements

  • Updated install-pyrun to default to eGenix PyRun 2.2.2 and its feature set.

Changes from 2.2.0 to 2.2.1

Enhancements / Changes

  • Fixed support for -u command line option with Python 3. Since this is used by pip since version 8.0, it also removes issues with pip.
  • Removed ensurepip package from PyRun since this only works with access to the bundled whl files. This is incompatible with the frozen nature of packages in PyRun.
  • Added support for setting the OpenSSL path to the Makefile and have it look in /usr/local/ssl before reverting to system dirs to make it easier to link against more recent builds of OpenSSL.
  • Linking against OpenSSL 1.0.2 now on Mac OS X for the precompiled pyrun binaries. You may have to set your shared linker path to point to the right OpenSSL version.

install-pyrun Enhancements

Changes from 2.1.2 to 2.2.0

Enhancements / Changes

  • Ported eGenix PyRun to Python 3.5.1.

install-pyrun Enhancements

  • Updated install-pyrun to default to eGenix PyRun 2.2.0 and its feature set.

Changes from 2.1.1 to 2.1.2

Enhancements / Changes

  • Upgraded eGenix PyRun to work with and use Python 2.7.11 per default. Python 2.7.11 now uses computed gotos in the interpreter loop, adding some more performance. In addition, the vulnerable SSLv3 protocol was switched off in the defaults of the ssl module.
  • Upgraded eGenix PyRun to work with and use Python 3.4.4 for the Python 3 version.
  • Added an explicit --libpath configure setting to work a problem with some 64-bit platforms defaulting to lib64/. The new setting forces the libs to always go into a lib/ directory.

install-pyrun Enhancements

  • Updated install-pyrun to default to eGenix PyRun 2.1.2 and its feature set.

Changes from 2.1.0 to 2.1.1

Enhancements / Changes

  • Upgraded eGenix PyRun to work with and use Python 2.7.10 per default.
  • eGenix PyRun will now adjust sys.base_prefix and sys.base_exec_prefix in the same way it does for sys.prefix and sys.exec_prefix. This is needed for Python 3.4 in order to have distutils find the Python.h include file when compiling C extensions.
  • PyRun for Python 3.4 will now show the correct file name of scripts in tracebacks when running them directly, instead of just '<string>'.
  • The new internal _sysconfigdata module used by the sysconfig module is now patched with the eGenix PyRun config data as well, to make sure that PyRun doesn't ship with two sets of build config variables.

install-pyrun Enhancements

  • Updated install-pyrun to default to eGenix PyRun 2.1.1 and its feature set.

Changes from 2.0.1 to 2.1.0

New Features

  • Upgraded eGenix PyRun to work with and use Python 2.7.9 per default.
  • Upgraded eGenix PyRun to work with and use Python 3.4.3 for Python 3 support.
  • Added support for setting rpath on the PyRun binary to make it easy to ship external libraries together with PyRun, without having to set the LD_LIBRARY_PATH variable.
  • Added special support for egenix-pyopenssl to load its OpenSSL libs during startup.
  • PyRun allows to disable the new default HTTPS certificate verification (PEP 476) by setting the env var PYRUN_HTTPSVERIFY to 0. Default is to apply certificate verification.
  • Add support for more Python command line options: -s and -3 are ignored, -R raises an error explaining to use the PYTHONHASHSEED env var instead, -B prevents writing of byte code files.This should increase compatibility of PyRun with the standard Python command line interface.

Enhancements / Changes

  • Added patch for Python 2.7.9 and 3.4.3 to make ctypes work again after changes to those versions of Python. See https://bugs.python.org/issue23042 for details.
  • The PyRun -v command line switch will now be passed to Python and supports setting the level using e.g. -vv for a verbose 2 level.
  • Disabled user site configurations in PyRun, since these are not needed or wanted for typical PyRun uses and cost startup time.
  • Optimized sys.path setup a bit. PyRun won't check for a Python build run and will not check lib/site-python on startup anymore.
  • PyRun for Python 3.4 is no longer compiled to always run in optimized mode. This allows using asserts in tests again.

Fixes

  • Entering "license" in the interactive shell now returns the correct URL for all supported Python versions.
  • Tilde expansion now works for most arguments of install-pyrun. This wasn't working before due to a bug.

install-pyrun Enhancements

  • Added -r/--requirements option which allows automatically installing a set of required packages using a requirements file, so you can easily set up a complete Python environment using a single 
    ./install-pyrun -r requirements.txt targetdir
  • Updated install-pyrun to default to eGenix PyRun 2.1.0 and its feature set.
  • Updated install-pyrun to install pyrun 2.1.0, setuptools 15.2 and pip 1.5.6 per default.

Changes from 2.0.0 to 2.0.1

New Features

  • Upgraded eGenix PyRun to work with and use Python 2.7.8 per default.

Enhancements / Changes

  • Fixed a bug in the license printer to show the correct license URL.

Changes from 1.3.1 to 2.0.0

New Features

  • Added Python 3.4 support to eGenix PyRun.
  • eGenix PyRun defaults to PYTHONIOENCODING = "utf-8:surrogateescape" for Python 3.4 to provide a better user experience.

    Note that it is still possible to override this by setting PYTHONIOENCODING to some other value. The locale based approached used by standard Python can be reenabled by setting PYTHONIOENCODING to "".
  • Enabled the lib2to3 package to work with eGenix PyRun. This allows on-the-fly Python 3 conversions as used by e.g. the setuptools package to work with eGenix PyRun.
    • Added grammar files to pyrun so that lib2to3 can be used for on-the-fly translations during installation. setuptools needs this for Python 3 support.
    • Added list of available lib2to3 fixes to the pyrun_config module. This allows lib2to3.refactor.get_all_fix_names() to work wit pyrun.
  • Frozen modules in eGenix PyRun now always have the __file__ attribute set - unlike in standard Python, where this is not set (e.g. in Python 3.4), or set to some value that doesn't relate to the module (in Python 2.x). This increases compatibility of pyrun with existing Python software. Submitted as http://bugs.python.org/issue21736

Enhancements / Changes

  • Added work-around for bug in Python 3.4 modulefinder module. Submitted as http://bugs.python.org/issue21707
  • Added work-around for problem with logging package's use of the __file__ attribute. Submitted as http://bugs.python.org/issue21709
  • Added work-around for getting runpy.run_path() to work with frozen modules in Python 3. This is needed to be able to run packages and ZIP files directly from the command line. Submitted as http://bugs.python.org/issue21737
  • Turned our pkgutil.py patch to support frozen modules into a real patch instead of doing this dynamically. Submitted as http://bugs.python.org/issue21749
  • Fixed a very rare, but still possible segfault in the eGenix PyRun sys.path calculation short path.
  • Removed build dir information from the embedded config data in pyrun_config.py.
  • Fixed the runtime version to match the package version again. For PyRun 1.3.1 the binary was still showing 1.3.0.
  • Removed support for Python 2.5 from eGenix PyRun.

install-pyrun Enhancements

  • Updated install-pyrun to default to eGenix PyRun 2.0.0 and its feature set.
  • install-pyrun now supports setuptools 2.0+ for Python 2.6 and 2.7
  • install-pyrun will no longer install the latest versions of pip and setuptools due to recent incompatible changes in those packages. Instead, the script uses fixed defaults and makes it easy to override them.
  • install-pyrun now uses pip 1.4.1 and setuptools 2.1 per default instead of the latest versions for better backwards compatibility with packages not hosted on PyPI.
  • install-pyrun can optionally fetch the latest versions of pip and setuptools by using "latest" as version number for --pip-version and --setuptools-version.
  • install-pyrun script is now available in signed and hashed form for additional security.
  • Made sure that install-pyrun will install pip and setuptools versions compatible with Python 2.5 when using --python=2.5 --pyrun=1.3.1 (ie. for the older version of eGenix PyRun).

Changes from 1.3.0 to 1.3.1

New Features

  • Upgraded eGenix PyRun to work with and use Python 2.7.6 per default.
  • Upgraded eGenix PyRun to use Python 2.6.9 as default Python 2.6 version.

Changes from 1.2.0 to 1.3.0

New Features

  • Upgraded eGenix PyRun to work with and use Python 2.7.5 per default.
  • Upgraded eGenix PyRun to use Python 2.6.8 as default Python 2.6 version.
  • PyRun will now create a symlink from "pyrunX.X" to "pythonX.X" and "pyrunX.X" to "python" in the bin/ dir to enhance compatibility with scripts and applications that hardwire the name of the Python interpreter to "python".

install-pyrun Enhancements

  • install-pyrun now defaults to always installing the most recent setuptools and pip versions from PyPI.
  • install-pyrun now installs setuptools instead of distribute, after the two projects got merged and continued under the older name.
  • Added new option --pyrun-executable to define an alternative name for the executable, which is then also used when installing setuptools and pip, e.g. "python" for even better compatibility with standard Python.
  • install-run will now prefer curl over wget when downloading packages from PyPI.
  • install-pyrun local distribution options will now also work with relative paths.
  • install-pyrun now defaults to installing setuptools 1.1.1 and pip 1.4.1 when looking for local downloads of these tools.
  • The short options in install-pyrun now also have corresponding long option names.

Other Changes

  • Fixed SyntaxWarning in pyrunX.X: name 'pyrun_script' is assigned to before global declaration global pyrun_script

Changes from 1.1.0 to 1.2.0

New Features

  • Upgraded eGenix PyRun to work with and use Python 2.7.4 per default.
  • Changed the pyrun default to run in non-optimized mode and added the -O command line option to reenable it. Previous versions of eGenix PyRun used to default to optimized mode, which prevented running tests using e.g. assert with it. The stdlib itself is still frozen in optimized mode.
  • Added support for directly running Python directories and ZIP files with __main__ module. Only works with the Python 2.7 variant.
  • eGenix PyRun now honors symlinks, so symlinked copies of PyRun can be used to save disk space. The installations will still work as expected, i.e. independent of each other.
  • Added new pyrun_release config variable to the pyrun_config module. This allows checking the pyrun release version.
  • Added PyRun release version to the banner and -V output.
  • Added support for the Python -d command line option to pyrun.
  • Added a fix to allow PyRun to compile the sqlite module on Mac OS X 10.4. See http://bugs.python.org/issue17857 for details.
  • Much enhanced documentation, which now also explains the internals and highlights Python modules/packages that are not included in eGenix PyRun.

install-pyrun Enhancements

  • Added new options --distribute-distribution and --pip-distribution to be able to use local distribution files for distribute and pip.
  • Added --debug option to enable debug output.
  • install-pyrun will now try uname -m in case uname -p doesn't return useful information about the platform.
  • install-pyrun will now use HTTPS connections for all tools (pyrun, distribute and pip). SSL certificate checking is enabled per default, but can be turned off using the new --disable-certificate-checks option.
  • Added automatic support for wget to install-pyrun. It is being used if curl is not found on the system.
  • Added new option --platform-list to print a list of available platform strings.

Other Changes

  • Removed the compiler package from being compiled into PyRun. If needed, it can be installed separately. Note that the compiler package needs the parser module which is not compiled into PyRun either, but is still available as extension module.
  • Removed the Tkinter Python module from being compiled into PyRun. If needed, it can be installed separately. Note that the Tkinter module needs the _tkinter C module, which is not compiled into PyRun either, but is still available as extension module.
  • Fixed sys.argv when using interactive mode to default to [''].
  • All eGenix PyRun distribution packages are now GPG signed with our release key and come with MD5 and SHA1 hashes to check for download corruption.

Changes from 1.0.0 to 1.1.0

New Features

  • Added new simple end-to-end test for the PyRun build process: make test-distribution.
  • Added support to import top-level frozen modules via -m. For packages this still fails due to bugs in Python itself.
  • Added a new easy to use pyrun installation shell script: install-pyrun.
  • install-pyrun will now default to eGenix PyRun 1.1.0.
  • install-pyrun now has a new --pyrun-distribution option to manually direct the script to a distribution file. This comes in handy when testing your own eGenix PyRun distributions.

Enhanced Integration

  • Optional readline module included in our binary builds now links against readline version 6 instead of 5. This should resolve readline issues on modern Linux installations.
  • Resolved an issue related to sys.argv[0] that prevented installation of e.g. numpy and lxml with pyrun. We've tested PyRun installation with numpy, lxml, Cython, Django, Trac and several other popular packages. They should all install fine now.
  • PyRun now reads scripts from stdin when used as filter or when providing '-' as script name.

Other Changes

  • Documented that setuptools/distribute and pip are not designed to be relocatable - unlike PyRun itself.
  • Most references to the pyrun build directory are now replaced with "<pyrun>". This reduces the pyrun binary size and also avoids confusion when looking at tracebacks.
  • Backported a patch to have Python 2.5 compile on systems that have a more recent version of svnversion installed.
  • We've managed to push the size down from 12MB in 1.0.0 to 11MB in this new release.

Version 1.0.0 was the first public release.