Skip to content
Snippets Groups Projects
README.rst 8.77 KiB
Newer Older
  • Learn to ignore specific revisions
  • Ned Deily's avatar
    Ned Deily committed
    This is Python version 3.7.0 alpha 1
    ====================================
    
    .. image:: https://travis-ci.org/python/cpython.svg?branch=master
       :alt: CPython build status on Travis CI
       :target: https://travis-ci.org/python/cpython
    
    .. image:: https://codecov.io/gh/python/cpython/branch/master/graph/badge.svg
       :alt: CPython code coverage on Codecov
       :target: https://codecov.io/gh/python/cpython
    
    
    Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
    
    2012, 2013, 2014, 2015, 2016, 2017 Python Software Foundation.  All rights
    reserved.
    
    Python 3.x is a new version of the language, which is incompatible with the
    2.x line of releases.  The language is mostly the same, but many details,
    especially how built-in objects like dictionaries and strings work,
    have changed considerably, and a lot of deprecated features have finally
    been removed.
    
    On Unix, Linux, BSD, OSX, and Cygwin::
    
    You can pass many options to the configure script; run ``./configure --help`` to
    find out more.  On OSX and Cygwin, the executable is called ``python.exe``;
    elsewhere it's just ``python``.
    
    On Mac OS X, if you have configured Python with ``--enable-framework``, you should
    use ``make frameworkinstall`` to do the installation.  Note that this installs the
    
    Georg Brandl's avatar
    Georg Brandl committed
    Python executable in a place that is not normally on your PATH, you may want to
    
    set up a symlink in ``/usr/local/bin``.
    
    If you wish, you can create a subdirectory and invoke configure from there.
    
    
        mkdir debug
        cd debug
        ../configure --with-pydebug
        make
        make test
    
    
    (This will fail if you *also* built at the top-level directory.
    
    You should do a ``make clean`` at the toplevel first.)
    
    To get an optimized build of Python, ``configure --enable-optimizations`` before
    you run ``make``.  This sets the default make targets up to enable Profile Guided
    
    Optimization (PGO) and may be used to auto-enable Link Time Optimization (LTO)
    on some platforms.  For more details, see the sections bellow.
    
    
    
    Profile Guided Optimization
    ---------------------------
    
    PGO takes advantage of recent versions of the GCC or Clang compilers.
    
    If ran, ``make profile-opt`` will do several steps.
    
    
    First, the entire Python directory is cleaned of temporary files that
    
    may have resulted in a previous compilation.
    
    
    Then, an instrumented version of the interpreter is built, using suitable
    compiler flags for each flavour. Note that this is just an intermediary
    step and the binary resulted after this step is not good for real life
    workloads, as it has profiling instructions embedded inside.
    
    After this instrumented version of the interpreter is built, the Makefile
    will automatically run a training workload. This is necessary in order to
    profile the interpreter execution. Note also that any output, both stdout
    
    and stderr, that may appear at this step is suppressed.
    
    
    Finally, the last step is to rebuild the interpreter, using the information
    
    collected in the previous one. The end result will be a Python binary
    
    that is optimized and suitable for distribution or production installation.
    
    
    Enabled via configure's ``--with-lto`` flag.  LTO takes advantages of recent
    compiler toolchains ability to optimize across the otherwise arbitrary ``.o`` file
    
    boundary when building final executables or shared libraries for additional
    performance gains.
    
    We have a comprehensive overview of the changes in the `What's New in
    Python 3.7 <https://docs.python.org/3.7/whatsnew/3.7.html>`_ document.
    
    For a more detailed change log, read Misc/NEWS (though this file, too,
    is incomplete, and also doesn't list anything merged in from the 2.7
    release under development).
    
    If you want to install multiple versions of Python see the section below
    entitled "Installing multiple versions".
    
    
    
    `Documentation for Python 3.7 <https://docs.python.org/3.7/>`_ is online,
    updated daily.
    
    It can also be downloaded in many formats for faster access.  The documentation
    is downloadable in HTML, PDF, and reStructuredText formats; the latter version
    is primarily for documentation authors, translators, and people with special
    formatting requirements.
    
    If you would like to contribute to the development of Python, relevant
    
    documentation is available at: `Python Developer's Guide
    <https://docs.python.org/devguide/>`_.
    
    
    For information about building Python's documentation, refer to Doc/README.txt.
    
    
    Barry Warsaw's avatar
    Barry Warsaw committed
    Converting From Python 2.x to 3.x
    
    ---------------------------------
    
    Georg Brandl's avatar
    Georg Brandl committed
    Python starting with 2.6 contains features to help locating code that needs to
    be changed, such as optional warnings when deprecated features are used, and
    backported versions of certain key Python 3.x features.
    
    A source-to-source translation tool, ``2to3``, can take care of the mundane task
    
    of converting large amounts of source code.  It is not a complete solution but
    is complemented by the deprecation warnings in 2.6.  See
    
    `2to3 documentation <https://docs.python.org/3.7/library/2to3.html>`_ for more
    information.
    
    To test the interpreter, type ``make test`` in the top-level directory.
    
    The test set produces some output.  You can generally ignore the messages
    about skipped tests due to optional features which can't be imported.
    If a message is printed about a failed test or a traceback or core dump
    is produced, something is wrong.
    
    
    By default, tests are prevented from overusing resources like disk space and
    
    memory.  To enable these tests, run ``make testall``.
    
    Georg Brandl's avatar
    Georg Brandl committed
    IMPORTANT: If the tests fail and you decide to mail a bug report, *don't*
    
    include the output of ``make test``.  It is useless.  Run the failing test
    manually, as follows::
    
    Antoine Pitrou's avatar
    Antoine Pitrou committed
            ./python -m test -v test_whatever
    
    Georg Brandl's avatar
    Georg Brandl committed
    (substituting the top of the source tree for '.' if you built in a different
    directory).  This runs the test in verbose mode.
    
    Christian Heimes's avatar
    Christian Heimes committed
    Installing multiple versions
    ----------------------------
    
    On Unix and Mac systems if you intend to install multiple versions of Python
    
    using the same installation prefix (``--prefix`` argument to the configure script)
    
    Georg Brandl's avatar
    Georg Brandl committed
    you must take care that your primary python executable is not overwritten by the
    installation of a different version.  All files and directories installed using
    
    ``make altinstall`` contain the major and minor version and can thus live
    side-by-side.  ``make install`` also creates ``${prefix}/bin/python3`` which refers to
    ``${prefix}/bin/pythonX.Y``.  If you intend to install multiple versions using the
    
    Georg Brandl's avatar
    Georg Brandl committed
    same prefix you must decide which version (if any) is your "primary" version.
    
    Install that version using ``make install``.  Install all other versions using
    ``make altinstall``.
    
    For example, if you want to install Python 2.7, 3.6, and 3.7 with 3.7 being the
    
    primary version, you would execute ``make install`` in your 3.7 build directory
    and ``make altinstall`` in the others.
    
    Issue Tracker and Mailing List
    ------------------------------
    
    Georg Brandl's avatar
    Georg Brandl committed
    We're soliciting bug reports about all aspects of the language.  Fixes are also
    
    welcome, preferably in unified diff format.  Please use the issue tracker:
    
    `bugs.python.org <https://bugs.python.org/>`_.
    
    Georg Brandl's avatar
    Georg Brandl committed
    If you're not sure whether you're dealing with a bug or a feature, use the
    
    mailing list: python-dev@python.org. To subscribe to the list, use the mailman
    form: `python-dev <https://mail.python.org/mailman/listinfo/python-dev/>`_
    
    Proposals for enhancement
    -------------------------
    
    If you have a proposal to change Python, you may want to send an email to the
    
    comp.lang.python or
    `python-ideas <https://mail.python.org/mailman/listinfo/python-ideas/>`_
    mailing lists for initial feedback.  A Python
    
    Georg Brandl's avatar
    Georg Brandl committed
    Enhancement Proposal (PEP) may be submitted if your idea gains ground.  All
    
    current PEPs, as well as guidelines for submitting a new PEP, are listed at
    
    `python.org/dev/peps/ <https://www.python.org/dev/peps/>`_.
    
    See :pep:`537` for Python 3.7 release details.
    
    
    
    Copyright and License Information
    ---------------------------------
    
    
    Georg Brandl's avatar
    Georg Brandl committed
    Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
    
    Benjamin Peterson's avatar
    Benjamin Peterson committed
    2012, 2013, 2014, 2015, 2016 Python Software Foundation.  All rights reserved.
    
    Georg Brandl's avatar
    Georg Brandl committed
    Copyright (c) 2000 BeOpen.com.  All rights reserved.
    
    Georg Brandl's avatar
    Georg Brandl committed
    Copyright (c) 1995-2001 Corporation for National Research Initiatives.  All
    rights reserved.
    
    Georg Brandl's avatar
    Georg Brandl committed
    Copyright (c) 1991-1995 Stichting Mathematisch Centrum.  All rights reserved.
    
    See the file "LICENSE" for information on the history of this software,
    terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.
    
    This Python distribution contains *no* GNU General Public License (GPL) code,
    so it may be used in proprietary projects.  There are interfaces to some GNU
    code but these are entirely optional.
    
    Georg Brandl's avatar
    Georg Brandl committed
    All trademarks referenced herein are property of their respective holders.
    
    Ned Deily's avatar
    Ned Deily committed