walking-appa / pyston

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Pyston

Pyston is a fork of CPython with additional optimizations for performance. It is targeted at large real-world applications such as web serving, delivering up to a 30% speedup with no development work required.

Dependencies

First do

git submodule update --init pyston/llvm pyston/bolt/bolt pyston/bolt/llvm pyston/LuaJIT

Pyston has the following build dependencies:

sudo apt-get install ninja-build cmake clang libssl-dev libsqlite3-dev luajit python3.8 zlib1g-dev virtualenv libjemalloc-dev

Extra dependencies for running the test suite:

sudo apt-get install libwebp-dev libjpeg-dev python3-gdbm python3-tk python3.8-dev

Extra dependencies for producing Pyston debian packages and portable directory release:

sudo apt-get install dh-make dh-exec debhelper patchelf

Building

For a build with all optimizations enabled (LTO+PGO) run:

make -j

An initial build will take quite a long time due to having to build LLVM twice, and subsequent builds are faster but still slow due to extra profiling steps.

A symlink to the final binary will be created with the name pyston3

For a quicker build during development run:

make unopt -j

the generated executable can be found inside pyston/build/cpython_unopt_install/

Running a python file called script.py with pyston can be easily done via:

make script_unopt

or

make script_opt

Changing the version number

  1. adjust VERSION in pyston/tools/make_release.sh
  2. add a pyston/debian/changelog entry (make sure the date is correct or the build fails in odd ways)
  3. adjust PYSTON_*_VERSION inside Include/patchlevel.h
  4. adjust PYSTON_VERSION inside configure.ac and run autoconf

Release packaging

We use a script which builds automatically packages for all supported distributions via docker (will take several hours):

  1. make sure your repos do not contain unwanted changes because they will get used to build the packages
  2. execute $ pyston/tools/make_release.sh
  3. output debian packages are now in release/<version>/. Inside this directory are also different "portable dir" releases made from the different distibution deb packages. Decide on which portable dir to use - the oldest version will run with most dists but will also bundle the oldes libs.

About

License:Other


Languages

Language:Python 63.0%Language:C 34.1%Language:C++ 1.3%Language:HTML 0.4%Language:M4 0.4%Language:Batchfile 0.2%Language:Shell 0.1%Language:Makefile 0.1%Language:Assembly 0.1%Language:Roff 0.1%Language:Objective-C 0.1%Language:Common Lisp 0.1%Language:PLSQL 0.0%Language:PowerShell 0.0%Language:Rich Text Format 0.0%Language:CMake 0.0%Language:DTrace 0.0%Language:XSLT 0.0%Language:CSS 0.0%Language:VBScript 0.0%