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.0.0

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.