blob: 7337b1574c5a84fcdf10072734def21f2c35d1bb [file] [log] [blame]
Ned Deily4829bc62016-09-12 17:29:04 -04001This is Python version 3.7.0 alpha 1
2====================================
Guido van Rossum91447632000-04-11 17:11:09 +00003
Victor Stinnerc9b62b42017-02-13 16:57:30 +01004.. image:: https://travis-ci.org/python/cpython.svg?branch=master
5 :alt: CPython build status on Travis CI
6 :target: https://travis-ci.org/python/cpython
7
8.. image:: https://codecov.io/gh/python/cpython/branch/master/graph/badge.svg
9 :alt: CPython code coverage on Codecov
10 :target: https://codecov.io/gh/python/cpython
11
Benjamin Petersonf606e682011-12-31 22:42:26 -060012Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
Benjamin Petersone527dd32017-01-01 22:04:13 -0600132012, 2013, 2014, 2015, 2016, 2017 Python Software Foundation. All rights
14reserved.
Guido van Rossum4405cf32007-08-30 17:16:55 +000015
Zachary Wared50f1882017-02-13 22:01:03 -060016See the end of this file for further copyright and license information.
17
Nick Coghlan1b3d88e2017-02-18 12:01:47 +053018Contributing to CPython
19-----------------------
20
21For more complete instructions on contributing to CPython development,
22see the `Developer Guide`_.
23
24.. _Developer Guide: https://docs.python.org/devguide/
Guido van Rossum1c896e32007-08-29 23:03:30 +000025
Ned Batchelder3cdbd682017-02-13 12:05:47 -050026Using Python
27------------
28
29Installable Python kits, and information about using Python, are available at
30`python.org`_.
31
32.. _python.org: https://www.python.org/
33
Guido van Rossum50e9fb92006-08-17 05:42:55 +000034
Benjamin Peterson1da43e52009-06-26 13:21:52 +000035Build Instructions
36------------------
Guido van Rossum3ff96dd1996-07-30 18:05:04 +000037
Paul Schreiberc0866852017-02-20 08:08:59 -050038On Unix, Linux, BSD, macOS, and Cygwin::
Benjamin Peterson1da43e52009-06-26 13:21:52 +000039
40 ./configure
41 make
42 make test
43 sudo make install
44
45This will install Python as python3.
46
Zachary Wared50f1882017-02-13 22:01:03 -060047You can pass many options to the configure script; run ``./configure --help``
Paul Schreiberc0866852017-02-20 08:08:59 -050048to find out more. On macOS and Cygwin, the executable is called ``python.exe``;
Victor Stinnerd783b012017-02-11 02:21:38 +010049elsewhere it's just ``python``.
Benjamin Peterson1da43e52009-06-26 13:21:52 +000050
Paul Schreiberc0866852017-02-20 08:08:59 -050051On macOS, if you have configured Python with ``--enable-framework``, you
Zachary Wared50f1882017-02-13 22:01:03 -060052should use ``make frameworkinstall`` to do the installation. Note that this
53installs the Python executable in a place that is not normally on your PATH,
54you may want to set up a symlink in ``/usr/local/bin``.
Benjamin Peterson1da43e52009-06-26 13:21:52 +000055
Zachary Wared50f1882017-02-13 22:01:03 -060056On Windows, see `PCbuild/readme.txt
57<https://github.com/python/cpython/blob/master/PCbuild/readme.txt>`_.
Benjamin Peterson1da43e52009-06-26 13:21:52 +000058
Larry Hastingsf92f6c82015-09-12 17:28:39 +010059If you wish, you can create a subdirectory and invoke configure from there.
Victor Stinnerd783b012017-02-11 02:21:38 +010060For example::
Benjamin Peterson1da43e52009-06-26 13:21:52 +000061
62 mkdir debug
63 cd debug
64 ../configure --with-pydebug
65 make
66 make test
67
Zachary Wared50f1882017-02-13 22:01:03 -060068(This will fail if you *also* built at the top-level directory. You should do
69a ``make clean`` at the toplevel first.)
Benjamin Peterson1da43e52009-06-26 13:21:52 +000070
Zachary Wared50f1882017-02-13 22:01:03 -060071To get an optimized build of Python, ``configure --enable-optimizations``
72before you run ``make``. This sets the default make targets up to enable
73Profile Guided Optimization (PGO) and may be used to auto-enable Link Time
74Optimization (LTO) on some platforms. For more details, see the sections
75below.
Brett Cannon7188a3e2015-09-18 15:13:44 -070076
77
78Profile Guided Optimization
79---------------------------
80
Zachary Wared50f1882017-02-13 22:01:03 -060081PGO takes advantage of recent versions of the GCC or Clang compilers. If ran,
82``make profile-opt`` will do several steps.
Brett Cannon7188a3e2015-09-18 15:13:44 -070083
Zachary Wared50f1882017-02-13 22:01:03 -060084First, the entire Python directory is cleaned of temporary files that may have
85resulted in a previous compilation.
Brett Cannon7188a3e2015-09-18 15:13:44 -070086
87Then, an instrumented version of the interpreter is built, using suitable
Zachary Wared50f1882017-02-13 22:01:03 -060088compiler flags for each flavour. Note that this is just an intermediary step
89and the binary resulted after this step is not good for real life workloads, as
90it has profiling instructions embedded inside.
Brett Cannon7188a3e2015-09-18 15:13:44 -070091
Zachary Wared50f1882017-02-13 22:01:03 -060092After this instrumented version of the interpreter is built, the Makefile will
93automatically run a training workload. This is necessary in order to profile
94the interpreter execution. Note also that any output, both stdout and stderr,
95that may appear at this step is suppressed.
Brett Cannon7188a3e2015-09-18 15:13:44 -070096
97Finally, the last step is to rebuild the interpreter, using the information
Zachary Wared50f1882017-02-13 22:01:03 -060098collected in the previous one. The end result will be a Python binary that is
99optimized and suitable for distribution or production installation.
Brett Cannon7188a3e2015-09-18 15:13:44 -0700100
Benjamin Peterson1da43e52009-06-26 13:21:52 +0000101
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)014d52f2016-09-08 18:33:00 +0000102Link Time Optimization
103----------------------
104
Zachary Wared50f1882017-02-13 22:01:03 -0600105Enabled via configure's ``--with-lto`` flag. LTO takes advantage of the
106ability of recent compiler toolchains to optimize across the otherwise
107arbitrary ``.o`` file boundary when building final executables or shared
108libraries for additional performance gains.
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)014d52f2016-09-08 18:33:00 +0000109
110
Benjamin Peterson1da43e52009-06-26 13:21:52 +0000111What's New
112----------
113
Zachary Wared50f1882017-02-13 22:01:03 -0600114We have a comprehensive overview of the changes in the `What's New in Python
1153.7 <https://docs.python.org/3.7/whatsnew/3.7.html>`_ document. For a more
116detailed change log, read `Misc/NEWS
117<https://github.com/python/cpython/blob/master/Misc/NEWS>`_, but a full
118accounting of changes can only be gleaned from the `commit history
119<https://github.com/python/cpython/commits/master>`_.
Benjamin Peterson1da43e52009-06-26 13:21:52 +0000120
121If you want to install multiple versions of Python see the section below
122entitled "Installing multiple versions".
Guido van Rossum8d90f9d1997-05-22 20:13:25 +0000123
Guido van Rossumf501b4e1996-10-25 14:32:48 +0000124
Guido van Rossumc07d5fa2000-09-01 22:50:02 +0000125Documentation
126-------------
Guido van Rossum91cb9d21995-04-10 11:47:38 +0000127
Victor Stinnerd783b012017-02-11 02:21:38 +0100128`Documentation for Python 3.7 <https://docs.python.org/3.7/>`_ is online,
129updated daily.
Guido van Rossumc07d5fa2000-09-01 22:50:02 +0000130
Georg Brandl62069d32010-07-31 08:56:11 +0000131It can also be downloaded in many formats for faster access. The documentation
132is downloadable in HTML, PDF, and reStructuredText formats; the latter version
133is primarily for documentation authors, translators, and people with special
134formatting requirements.
Benjamin Peterson2a691a82008-03-31 01:51:45 +0000135
Rogerb3f1f592017-02-15 17:54:05 -0500136For information about building Python's documentation, refer to `Doc/README.rst
137<https://github.com/python/cpython/blob/master/Doc/README.rst>`_.
Ezio Melotti802bf8a2013-08-16 21:32:25 +0300138
Guido van Rossumc07d5fa2000-09-01 22:50:02 +0000139
Barry Warsaw97f005d2008-12-03 16:46:14 +0000140Converting From Python 2.x to 3.x
Guido van Rossum1c896e32007-08-29 23:03:30 +0000141---------------------------------
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000142
Zachary Wared50f1882017-02-13 22:01:03 -0600143Significant backward incompatible changes were made for the release of Python
1443.0, which may cause programs written for Python 2 to fail when run with Python
1453. For more information about porting your code from Python 2 to Python 3, see
146the `Porting HOWTO <https://docs.python.org/3/howto/pyporting.html>`_.
Benjamin Peterson1da43e52009-06-26 13:21:52 +0000147
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000148
Benjamin Petersonad3d5c22009-02-26 03:38:59 +0000149Testing
150-------
151
Zachary Wared50f1882017-02-13 22:01:03 -0600152To test the interpreter, type ``make test`` in the top-level directory. The
153test set produces some output. You can generally ignore the messages about
154skipped tests due to optional features which can't be imported. If a message
155is printed about a failed test or a traceback or core dump is produced,
156something is wrong.
Benjamin Petersonad3d5c22009-02-26 03:38:59 +0000157
158By default, tests are prevented from overusing resources like disk space and
Victor Stinnerd783b012017-02-11 02:21:38 +0100159memory. To enable these tests, run ``make testall``.
Benjamin Petersonad3d5c22009-02-26 03:38:59 +0000160
Zachary Wared50f1882017-02-13 22:01:03 -0600161If any tests fail, you can re-run the failing test(s) in verbose mode::
Benjamin Petersonad3d5c22009-02-26 03:38:59 +0000162
Zachary Wared50f1882017-02-13 22:01:03 -0600163 make test TESTOPTS="-v test_that_failed"
Benjamin Petersonad3d5c22009-02-26 03:38:59 +0000164
Zachary Wared50f1882017-02-13 22:01:03 -0600165If the failure persists and appears to be a problem with Python rather than
166your environment, you can `file a bug report <https://bugs.python.org>`_ and
167include relevant output from that command to show the issue.
Benjamin Petersonad3d5c22009-02-26 03:38:59 +0000168
169
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000170Installing multiple versions
171----------------------------
172
173On Unix and Mac systems if you intend to install multiple versions of Python
Zachary Wared50f1882017-02-13 22:01:03 -0600174using the same installation prefix (``--prefix`` argument to the configure
175script) you must take care that your primary python executable is not
176overwritten by the installation of a different version. All files and
177directories installed using ``make altinstall`` contain the major and minor
178version and can thus live side-by-side. ``make install`` also creates
179``${prefix}/bin/python3`` which refers to ``${prefix}/bin/pythonX.Y``. If you
180intend to install multiple versions using the same prefix you must decide which
181version (if any) is your "primary" version. Install that version using ``make
182install``. Install all other versions using ``make altinstall``.
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000183
Ned Deily190042a2016-12-23 04:10:46 -0500184For example, if you want to install Python 2.7, 3.6, and 3.7 with 3.7 being the
Victor Stinnerd783b012017-02-11 02:21:38 +0100185primary version, you would execute ``make install`` in your 3.7 build directory
186and ``make altinstall`` in the others.
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000187
188
Guido van Rossum1c896e32007-08-29 23:03:30 +0000189Issue Tracker and Mailing List
190------------------------------
Michael W. Hudson71dcc3e2005-02-22 15:33:26 +0000191
Zachary Wared50f1882017-02-13 22:01:03 -0600192Bug reports are welcome! You can use the `issue tracker
193<https://bugs.python.org>`_ to report bugs, and/or submit pull requests `on
194GitHub <https://github.com/python/cpython>`_.
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000195
Zachary Wared50f1882017-02-13 22:01:03 -0600196You can also follow development discussion on the `python-dev mailing list
197<https://mail.python.org/mailman/listinfo/python-dev/>`_.
Georg Brandl81299ad2006-02-20 10:24:06 +0000198
Michael W. Hudson71dcc3e2005-02-22 15:33:26 +0000199
Benjamin Peterson1da43e52009-06-26 13:21:52 +0000200Proposals for enhancement
201-------------------------
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000202
Benjamin Peterson1da43e52009-06-26 13:21:52 +0000203If you have a proposal to change Python, you may want to send an email to the
Zachary Wared50f1882017-02-13 22:01:03 -0600204comp.lang.python or `python-ideas`_ mailing lists for initial feedback. A
205Python Enhancement Proposal (PEP) may be submitted if your idea gains ground.
206All current PEPs, as well as guidelines for submitting a new PEP, are listed at
Victor Stinnerd783b012017-02-11 02:21:38 +0100207`python.org/dev/peps/ <https://www.python.org/dev/peps/>`_.
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000208
Ned Batchelder3cdbd682017-02-13 12:05:47 -0500209.. _python-ideas: https://mail.python.org/mailman/listinfo/python-ideas/
Guido van Rossum1c896e32007-08-29 23:03:30 +0000210
Zachary Wared50f1882017-02-13 22:01:03 -0600211
Benjamin Peterson1da43e52009-06-26 13:21:52 +0000212Release Schedule
213----------------
Guido van Rossum1c896e32007-08-29 23:03:30 +0000214
Victor Stinnerd783b012017-02-11 02:21:38 +0100215See :pep:`537` for Python 3.7 release details.
Guido van Rossumef0f1292007-08-30 14:51:05 +0000216
217
218Copyright and License Information
219---------------------------------
220
Georg Brandla7d2f002013-03-23 16:06:13 +0100221Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
Benjamin Petersonf1dcdd92016-01-01 11:53:14 -06002222012, 2013, 2014, 2015, 2016 Python Software Foundation. All rights reserved.
Guido van Rossumef0f1292007-08-30 14:51:05 +0000223
Georg Brandl260a7882011-02-20 10:29:04 +0000224Copyright (c) 2000 BeOpen.com. All rights reserved.
Guido van Rossumef0f1292007-08-30 14:51:05 +0000225
Georg Brandl260a7882011-02-20 10:29:04 +0000226Copyright (c) 1995-2001 Corporation for National Research Initiatives. All
227rights reserved.
Guido van Rossumef0f1292007-08-30 14:51:05 +0000228
Georg Brandl260a7882011-02-20 10:29:04 +0000229Copyright (c) 1991-1995 Stichting Mathematisch Centrum. All rights reserved.
Guido van Rossumef0f1292007-08-30 14:51:05 +0000230
Zachary Wared50f1882017-02-13 22:01:03 -0600231See the file "LICENSE" for information on the history of this software, terms &
232conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.
Guido van Rossumef0f1292007-08-30 14:51:05 +0000233
Larry Hastingsf92f6c82015-09-12 17:28:39 +0100234This Python distribution contains *no* GNU General Public License (GPL) code,
235so it may be used in proprietary projects. There are interfaces to some GNU
236code but these are entirely optional.
Guido van Rossumef0f1292007-08-30 14:51:05 +0000237
Georg Brandl260a7882011-02-20 10:29:04 +0000238All trademarks referenced herein are property of their respective holders.