1This is Python version 3.13.1
2=============================
3
4.. image:: https://github.com/python/cpython/workflows/Tests/badge.svg
5 :alt: CPython build status on GitHub Actions
6 :target: https://github.com/python/cpython/actions
7
8.. image:: https://dev.azure.com/python/cpython/_apis/build/status/Azure%20Pipelines%20CI?branchName=main
9 :alt: CPython build status on Azure DevOps
10 :target: https://dev.azure.com/python/cpython/_build/latest?definitionId=4&branchName=main
11
12.. image:: https://img.shields.io/badge/discourse-join_chat-brightgreen.svg
13 :alt: Python Discourse chat
14 :target: https://discuss.python.org/
15
16
17Copyright © 2001-2024 Python Software Foundation. All rights reserved.
18
19See the end of this file for further copyright and license information.
20
21.. contents::
22
23General Information
24-------------------
25
26- Website: https://www.python.org
27- Source code: https://github.com/python/cpython
28- Issue tracker: https://github.com/python/cpython/issues
29- Documentation: https://docs.python.org
30- Developer's Guide: https://devguide.python.org/
31
32Contributing to CPython
33-----------------------
34
35For more complete instructions on contributing to CPython development,
36see the `Developer Guide`_.
37
38.. _Developer Guide: https://devguide.python.org/
39
40Using Python
41------------
42
43Installable Python kits, and information about using Python, are available at
44`python.org`_.
45
46.. _python.org: https://www.python.org/
47
48Build Instructions
49------------------
50
51On Unix, Linux, BSD, macOS, and Cygwin::
52
53 ./configure
54 make
55 make test
56 sudo make install
57
58This will install Python as ``python3``.
59
60You can pass many options to the configure script; run ``./configure --help``
61to find out more. On macOS case-insensitive file systems and on Cygwin,
62the executable is called ``python.exe``; elsewhere it's just ``python``.
63
64Building a complete Python installation requires the use of various
65additional third-party libraries, depending on your build platform and
66configure options. Not all standard library modules are buildable or
67usable on all platforms. Refer to the
68`Install dependencies <https://devguide.python.org/getting-started/setup-building.html#build-dependencies>`_
69section of the `Developer Guide`_ for current detailed information on
70dependencies for various Linux distributions and macOS.
71
72On macOS, there are additional configure and build options related
73to macOS framework and universal builds. Refer to `Mac/README.rst
74<https://github.com/python/cpython/blob/main/Mac/README.rst>`_.
75
76On Windows, see `PCbuild/readme.txt
77<https://github.com/python/cpython/blob/main/PCbuild/readme.txt>`_.
78
79To build Windows installer, see `Tools/msi/README.txt
80<https://github.com/python/cpython/blob/main/Tools/msi/README.txt>`_.
81
82If you wish, you can create a subdirectory and invoke configure from there.
83For example::
84
85 mkdir debug
86 cd debug
87 ../configure --with-pydebug
88 make
89 make test
90
91(This will fail if you *also* built at the top-level directory. You should do
92a ``make clean`` at the top-level first.)
93
94To get an optimized build of Python, ``configure --enable-optimizations``
95before you run ``make``. This sets the default make targets up to enable
96Profile Guided Optimization (PGO) and may be used to auto-enable Link Time
97Optimization (LTO) on some platforms. For more details, see the sections
98below.
99
100Profile Guided Optimization
101^^^^^^^^^^^^^^^^^^^^^^^^^^^
102
103PGO takes advantage of recent versions of the GCC or Clang compilers. If used,
104either via ``configure --enable-optimizations`` or by manually running
105``make profile-opt`` regardless of configure flags, the optimized build
106process will perform the following steps:
107
108The entire Python directory is cleaned of temporary files that may have
109resulted from a previous compilation.
110
111An instrumented version of the interpreter is built, using suitable compiler
112flags for each flavor. Note that this is just an intermediary step. The
113binary resulting from this step is not good for real-life workloads as it has
114profiling instructions embedded inside.
115
116After the instrumented interpreter is built, the Makefile will run a training
117workload. This is necessary in order to profile the interpreter's execution.
118Note also that any output, both stdout and stderr, that may appear at this step
119is suppressed.
120
121The final step is to build the actual interpreter, using the information
122collected from the instrumented one. The end result will be a Python binary
123that is optimized; suitable for distribution or production installation.
124
125
126Link Time Optimization
127^^^^^^^^^^^^^^^^^^^^^^
128
129Enabled via configure's ``--with-lto`` flag. LTO takes advantage of the
130ability of recent compiler toolchains to optimize across the otherwise
131arbitrary ``.o`` file boundary when building final executables or shared
132libraries for additional performance gains.
133
134
135What's New
136----------
137
138We have a comprehensive overview of the changes in the `What's New in Python
1393.13 <https://docs.python.org/3.13/whatsnew/3.13.html>`_ document. For a more
140detailed change log, read `Misc/NEWS
141<https://github.com/python/cpython/tree/main/Misc/NEWS.d>`_, but a full
142accounting of changes can only be gleaned from the `commit history
143<https://github.com/python/cpython/commits/main>`_.
144
145If you want to install multiple versions of Python, see the section below
146entitled "Installing multiple versions".
147
148
149Documentation
150-------------
151
152`Documentation for Python 3.13 <https://docs.python.org/3.13/>`_ is online,
153updated daily.
154
155It can also be downloaded in many formats for faster access. The documentation
156is downloadable in HTML, PDF, and reStructuredText formats; the latter version
157is primarily for documentation authors, translators, and people with special
158formatting requirements.
159
160For information about building Python's documentation, refer to `Doc/README.rst
161<https://github.com/python/cpython/blob/main/Doc/README.rst>`_.
162
163
164Testing
165-------
166
167To test the interpreter, type ``make test`` in the top-level directory. The
168test set produces some output. You can generally ignore the messages about
169skipped tests due to optional features which can't be imported. If a message
170is printed about a failed test or a traceback or core dump is produced,
171something is wrong.
172
173By default, tests are prevented from overusing resources like disk space and
174memory. To enable these tests, run ``make buildbottest``.
175
176If any tests fail, you can re-run the failing test(s) in verbose mode. For
177example, if ``test_os`` and ``test_gdb`` failed, you can run::
178
179 make test TESTOPTS="-v test_os test_gdb"
180
181If the failure persists and appears to be a problem with Python rather than
182your environment, you can `file a bug report
183<https://github.com/python/cpython/issues>`_ and include relevant output from
184that command to show the issue.
185
186See `Running & Writing Tests <https://devguide.python.org/testing/run-write-tests.html>`_
187for more on running tests.
188
189Installing multiple versions
190----------------------------
191
192On Unix and Mac systems if you intend to install multiple versions of Python
193using the same installation prefix (``--prefix`` argument to the configure
194script) you must take care that your primary python executable is not
195overwritten by the installation of a different version. All files and
196directories installed using ``make altinstall`` contain the major and minor
197version and can thus live side-by-side. ``make install`` also creates
198``${prefix}/bin/python3`` which refers to ``${prefix}/bin/python3.X``. If you
199intend to install multiple versions using the same prefix you must decide which
200version (if any) is your "primary" version. Install that version using
201``make install``. Install all other versions using ``make altinstall``.
202
203For example, if you want to install Python 2.7, 3.6, and 3.13 with 3.13 being the
204primary version, you would execute ``make install`` in your 3.13 build directory
205and ``make altinstall`` in the others.
206
207
208Release Schedule
209----------------
210
211See :pep:`719` for Python 3.13 release details.
212
213
214Copyright and License Information
215---------------------------------
216
217
218Copyright © 2001-2024 Python Software Foundation. All rights reserved.
219
220Copyright © 2000 BeOpen.com. All rights reserved.
221
222Copyright © 1995-2001 Corporation for National Research Initiatives. All
223rights reserved.
224
225Copyright © 1991-1995 Stichting Mathematisch Centrum. All rights reserved.
226
227See the `LICENSE <https://github.com/python/cpython/blob/main/LICENSE>`_ for
228information on the history of this software, terms & conditions for usage, and a
229DISCLAIMER OF ALL WARRANTIES.
230
231This Python distribution contains *no* GNU General Public License (GPL) code,
232so it may be used in proprietary projects. There are interfaces to some GNU
233code but these are entirely optional.
234
235All trademarks referenced herein are property of their respective holders.
236