Commit d50f188b authored by Zachary Ware's avatar Zachary Ware Committed by GitHub

Various updates to README.rst (#21)

These include spelling/grammar fixes, removing some outdated prose,
updating some superseded prose, and adding/cleaning up some links.

Also rewraps the entire file at 79 columns.
parent b692dc84
...@@ -13,11 +13,8 @@ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, ...@@ -13,11 +13,8 @@ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
2012, 2013, 2014, 2015, 2016, 2017 Python Software Foundation. All rights 2012, 2013, 2014, 2015, 2016, 2017 Python Software Foundation. All rights
reserved. reserved.
Python 3.x is a new version of the language, which is incompatible with the See the end of this file for further copyright and license information.
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.
Using Python Using Python
------------ ------------
...@@ -40,16 +37,17 @@ On Unix, Linux, BSD, OSX, and Cygwin:: ...@@ -40,16 +37,17 @@ On Unix, Linux, BSD, OSX, and Cygwin::
This will install Python as python3. This will install Python as python3.
You can pass many options to the configure script; run ``./configure --help`` to You can pass many options to the configure script; run ``./configure --help``
find out more. On OSX and Cygwin, the executable is called ``python.exe``; to find out more. On OSX and Cygwin, the executable is called ``python.exe``;
elsewhere it's just ``python``. elsewhere it's just ``python``.
On Mac OS X, if you have configured Python with ``--enable-framework``, you should On Mac OS X, if you have configured Python with ``--enable-framework``, you
use ``make frameworkinstall`` to do the installation. Note that this installs the should use ``make frameworkinstall`` to do the installation. Note that this
Python executable in a place that is not normally on your PATH, you may want to installs the Python executable in a place that is not normally on your PATH,
set up a symlink in ``/usr/local/bin``. you may want to set up a symlink in ``/usr/local/bin``.
On Windows, see PCbuild/readme.txt. On Windows, see `PCbuild/readme.txt
<https://github.com/python/cpython/blob/master/PCbuild/readme.txt>`_.
If you wish, you can create a subdirectory and invoke configure from there. If you wish, you can create a subdirectory and invoke configure from there.
For example:: For example::
...@@ -60,57 +58,58 @@ For example:: ...@@ -60,57 +58,58 @@ For example::
make make
make test make test
(This will fail if you *also* built at the top-level directory. (This will fail if you *also* built at the top-level directory. You should do
You should do a ``make clean`` at the toplevel first.) a ``make clean`` at the toplevel first.)
To get an optimized build of Python, ``configure --enable-optimizations`` before To get an optimized build of Python, ``configure --enable-optimizations``
you run ``make``. This sets the default make targets up to enable Profile Guided before you run ``make``. This sets the default make targets up to enable
Optimization (PGO) and may be used to auto-enable Link Time Optimization (LTO) Profile Guided Optimization (PGO) and may be used to auto-enable Link Time
on some platforms. For more details, see the sections bellow. Optimization (LTO) on some platforms. For more details, see the sections
below.
Profile Guided Optimization Profile Guided Optimization
--------------------------- ---------------------------
PGO takes advantage of recent versions of the GCC or Clang compilers. PGO takes advantage of recent versions of the GCC or Clang compilers. If ran,
If ran, ``make profile-opt`` will do several steps. ``make profile-opt`` will do several steps.
First, the entire Python directory is cleaned of temporary files that First, the entire Python directory is cleaned of temporary files that may have
may have resulted in a previous compilation. resulted in a previous compilation.
Then, an instrumented version of the interpreter is built, using suitable Then, an instrumented version of the interpreter is built, using suitable
compiler flags for each flavour. Note that this is just an intermediary compiler flags for each flavour. Note that this is just an intermediary step
step and the binary resulted after this step is not good for real life and the binary resulted after this step is not good for real life workloads, as
workloads, as it has profiling instructions embedded inside. it has profiling instructions embedded inside.
After this instrumented version of the interpreter is built, the Makefile After this instrumented version of the interpreter is built, the Makefile will
will automatically run a training workload. This is necessary in order to automatically run a training workload. This is necessary in order to profile
profile the interpreter execution. Note also that any output, both stdout the interpreter execution. Note also that any output, both stdout and stderr,
and stderr, that may appear at this step is suppressed. that may appear at this step is suppressed.
Finally, the last step is to rebuild the interpreter, using the information 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 collected in the previous one. The end result will be a Python binary that is
that is optimized and suitable for distribution or production installation. optimized and suitable for distribution or production installation.
Link Time Optimization Link Time Optimization
---------------------- ----------------------
Enabled via configure's ``--with-lto`` flag. LTO takes advantages of recent Enabled via configure's ``--with-lto`` flag. LTO takes advantage of the
compiler toolchains ability to optimize across the otherwise arbitrary ``.o`` file ability of recent compiler toolchains to optimize across the otherwise
boundary when building final executables or shared libraries for additional arbitrary ``.o`` file boundary when building final executables or shared
performance gains. libraries for additional performance gains.
What's New What's New
---------- ----------
We have a comprehensive overview of the changes in the `What's New in We have a comprehensive overview of the changes in the `What's New in Python
Python 3.7 <https://docs.python.org/3.7/whatsnew/3.7.html>`_ document. 3.7 <https://docs.python.org/3.7/whatsnew/3.7.html>`_ document. For a more
detailed change log, read `Misc/NEWS
For a more detailed change log, read Misc/NEWS (though this file, too, <https://github.com/python/cpython/blob/master/Misc/NEWS>`_, but a full
is incomplete, and also doesn't list anything merged in from the 2.7 accounting of changes can only be gleaned from the `commit history
release under development). <https://github.com/python/cpython/commits/master>`_.
If you want to install multiple versions of Python see the section below If you want to install multiple versions of Python see the section below
entitled "Installing multiple versions". entitled "Installing multiple versions".
...@@ -128,61 +127,56 @@ is primarily for documentation authors, translators, and people with special ...@@ -128,61 +127,56 @@ is primarily for documentation authors, translators, and people with special
formatting requirements. formatting requirements.
If you would like to contribute to the development of Python, relevant If you would like to contribute to the development of Python, relevant
documentation is available at: `Python Developer's Guide documentation is available in the `Python Developer's Guide
<https://docs.python.org/devguide/>`_. <https://docs.python.org/devguide/>`_.
For information about building Python's documentation, refer to Doc/README.txt. For information about building Python's documentation, refer to `Doc/README.txt
<https://github.com/python/cpython/blob/master/Doc/README.txt>`_.
Converting From Python 2.x to 3.x Converting From Python 2.x to 3.x
--------------------------------- ---------------------------------
Python starting with 2.6 contains features to help locating code that needs to Significant backward incompatible changes were made for the release of Python
be changed, such as optional warnings when deprecated features are used, and 3.0, which may cause programs written for Python 2 to fail when run with Python
backported versions of certain key Python 3.x features. 3. For more information about porting your code from Python 2 to Python 3, see
the `Porting HOWTO <https://docs.python.org/3/howto/pyporting.html>`_.
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.
Testing Testing
------- -------
To test the interpreter, type ``make test`` in the top-level directory. To test the interpreter, type ``make test`` in the top-level directory. The
The test set produces some output. You can generally ignore the messages test set produces some output. You can generally ignore the messages about
about skipped tests due to optional features which can't be imported. skipped tests due to optional features which can't be imported. If a message
If a message is printed about a failed test or a traceback or core dump is printed about a failed test or a traceback or core dump is produced,
is produced, something is wrong. something is wrong.
By default, tests are prevented from overusing resources like disk space and By default, tests are prevented from overusing resources like disk space and
memory. To enable these tests, run ``make testall``. memory. To enable these tests, run ``make testall``.
IMPORTANT: If the tests fail and you decide to mail a bug report, *don't* If any tests fail, you can re-run the failing test(s) in verbose mode::
include the output of ``make test``. It is useless. Run the failing test
manually, as follows::
./python -m test -v test_whatever make test TESTOPTS="-v test_that_failed"
(substituting the top of the source tree for '.' if you built in a different If the failure persists and appears to be a problem with Python rather than
directory). This runs the test in verbose mode. your environment, you can `file a bug report <https://bugs.python.org>`_ and
include relevant output from that command to show the issue.
Installing multiple versions Installing multiple versions
---------------------------- ----------------------------
On Unix and Mac systems if you intend to install multiple versions of Python 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) using the same installation prefix (``--prefix`` argument to the configure
you must take care that your primary python executable is not overwritten by the script) you must take care that your primary python executable is not
installation of a different version. All files and directories installed using overwritten by the installation of a different version. All files and
``make altinstall`` contain the major and minor version and can thus live directories installed using ``make altinstall`` contain the major and minor
side-by-side. ``make install`` also creates ``${prefix}/bin/python3`` which refers to version and can thus live side-by-side. ``make install`` also creates
``${prefix}/bin/pythonX.Y``. If you intend to install multiple versions using the ``${prefix}/bin/python3`` which refers to ``${prefix}/bin/pythonX.Y``. If you
same prefix you must decide which version (if any) is your "primary" version. intend to install multiple versions using the same prefix you must decide which
Install that version using ``make install``. Install all other versions using version (if any) is your "primary" version. Install that version using ``make
``make altinstall``. 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 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 primary version, you would execute ``make install`` in your 3.7 build directory
...@@ -192,26 +186,26 @@ and ``make altinstall`` in the others. ...@@ -192,26 +186,26 @@ and ``make altinstall`` in the others.
Issue Tracker and Mailing List Issue Tracker and Mailing List
------------------------------ ------------------------------
We're soliciting bug reports about all aspects of the language. Fixes are also Bug reports are welcome! You can use the `issue tracker
welcome, preferably in unified diff format. Please use the issue tracker: <https://bugs.python.org>`_ to report bugs, and/or submit pull requests `on
`bugs.python.org <https://bugs.python.org/>`_. GitHub <https://github.com/python/cpython>`_.
If you're not sure whether you're dealing with a bug or a feature, use the You can also follow development discussion on the `python-dev mailing list
mailing list: python-dev@python.org. To subscribe to the list, use the mailman <https://mail.python.org/mailman/listinfo/python-dev/>`_.
form: `python-dev <https://mail.python.org/mailman/listinfo/python-dev/>`_
Proposals for enhancement Proposals for enhancement
------------------------- -------------------------
If you have a proposal to change Python, you may want to send an email to the If you have a proposal to change Python, you may want to send an email to the
comp.lang.python or `python-ideas`_ mailing lists for initial feedback. A Python comp.lang.python or `python-ideas`_ mailing lists for initial feedback. A
Enhancement Proposal (PEP) may be submitted if your idea gains ground. All Python Enhancement Proposal (PEP) may be submitted if your idea gains ground.
current PEPs, as well as guidelines for submitting a new PEP, are listed at 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/>`_. `python.org/dev/peps/ <https://www.python.org/dev/peps/>`_.
.. _python-ideas: https://mail.python.org/mailman/listinfo/python-ideas/ .. _python-ideas: https://mail.python.org/mailman/listinfo/python-ideas/
Release Schedule Release Schedule
---------------- ----------------
...@@ -231,8 +225,8 @@ rights reserved. ...@@ -231,8 +225,8 @@ rights reserved.
Copyright (c) 1991-1995 Stichting Mathematisch Centrum. All rights reserved. Copyright (c) 1991-1995 Stichting Mathematisch Centrum. All rights reserved.
See the file "LICENSE" for information on the history of this software, See the file "LICENSE" for information on the history of this software, terms &
terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES. conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.
This Python distribution contains *no* GNU General Public License (GPL) code, 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 so it may be used in proprietary projects. There are interfaces to some GNU
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment