diff --git a/devtools/python/python-2.7.5/README b/devtools/python/python-2.7.5/README new file mode 100644 index 000000000..75196b0d6 --- /dev/null +++ b/devtools/python/python-2.7.5/README @@ -0,0 +1,3 @@ +The src rpm version indicates that we are patching python 2.7.5, however there are at least 58 patches +added by Centos to fix issues fixed in the later python 2.7 releases. + diff --git a/devtools/python/python-2.7.5/centos/build_srpm.data b/devtools/python/python-2.7.5/centos/build_srpm.data new file mode 100644 index 000000000..d3f64f336 --- /dev/null +++ b/devtools/python/python-2.7.5/centos/build_srpm.data @@ -0,0 +1 @@ +TIS_PATCH_VER=3 diff --git a/devtools/python/python-2.7.5/centos/meta_patches/0001-Update-package-versioning-for-TIS-format.patch b/devtools/python/python-2.7.5/centos/meta_patches/0001-Update-package-versioning-for-TIS-format.patch new file mode 100644 index 000000000..a74821216 --- /dev/null +++ b/devtools/python/python-2.7.5/centos/meta_patches/0001-Update-package-versioning-for-TIS-format.patch @@ -0,0 +1,25 @@ +From e9bc5d92bb0ee327015626072fee83f12018712c Mon Sep 17 00:00:00 2001 +From: Al Bailey +Date: Tue, 27 Mar 2018 12:38:50 -0500 +Subject: [PATCH] Update package versioning for TIS format + +--- + SPECS/python.spec | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/SPECS/python.spec b/SPECS/python.spec +index a9fd32f..62f21d4 100644 +--- a/SPECS/python.spec ++++ b/SPECS/python.spec +@@ -106,7 +106,7 @@ Summary: An interpreted, interactive, object-oriented programming language + Name: %{python} + # Remember to also rebase python-docs when changing this: + Version: 2.7.5 +-Release: 58%{?dist} ++Release: 58.el7%{?_tis_dist}.%{tis_patch_ver} + License: Python + Group: Development/Languages + Requires: %{python}-libs%{?_isa} = %{version}-%{release} +-- +1.8.3.1 + diff --git a/devtools/python/python-2.7.5/centos/meta_patches/0002-Disable-unittest-check-phase.patch b/devtools/python/python-2.7.5/centos/meta_patches/0002-Disable-unittest-check-phase.patch new file mode 100644 index 000000000..04426cede --- /dev/null +++ b/devtools/python/python-2.7.5/centos/meta_patches/0002-Disable-unittest-check-phase.patch @@ -0,0 +1,25 @@ +From 2f23c2c6194d828de7bede593926007802cca610 Mon Sep 17 00:00:00 2001 +From: Al Bailey +Date: Tue, 6 Mar 2018 18:21:48 -0600 +Subject: [PATCH] Disable unittest check phase + +--- + SPECS/python.spec | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/SPECS/python.spec b/SPECS/python.spec +index a9fd32f..1030c57 100644 +--- a/SPECS/python.spec ++++ b/SPECS/python.spec +@@ -54,7 +54,7 @@ + %global with_gdbm 1 + + # Turn this to 0 to turn off the "check" phase: +-%global run_selftest_suite 1 ++%global run_selftest_suite 0 + + # Some of the files below /usr/lib/pythonMAJOR.MINOR/test (e.g. bad_coding.py) + # are deliberately invalid, leading to SyntaxError exceptions if they get +-- +1.8.3.1 + diff --git a/devtools/python/python-2.7.5/centos/meta_patches/0003-Make-Python-Faster.patch b/devtools/python/python-2.7.5/centos/meta_patches/0003-Make-Python-Faster.patch new file mode 100644 index 000000000..81e2684c4 --- /dev/null +++ b/devtools/python/python-2.7.5/centos/meta_patches/0003-Make-Python-Faster.patch @@ -0,0 +1,42 @@ +From ff1efc0b077c78bedead5fdc6792240806f5a97c Mon Sep 17 00:00:00 2001 +From: Al Bailey +Date: Wed, 28 Mar 2018 08:26:56 -0500 +Subject: [PATCH] Make Python Faster + +--- + SPECS/python.spec | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/SPECS/python.spec b/SPECS/python.spec +index adc6815..fadf838 100644 +--- a/SPECS/python.spec ++++ b/SPECS/python.spec +@@ -1195,6 +1195,8 @@ Patch268: 00268-set-stream-name-to-None.patch + # above: + Patch5000: 05000-autotool-intermediates.patch + ++Patch9000: Rollup-optimization-commits.patch ++ + # ====================================================== + # Additional metadata, and subpackages + # ====================================================== +@@ -1591,6 +1593,7 @@ find -name "*~" |xargs rm -f + %patch5000 -p0 -b .autotool-intermediates + %endif + ++%patch9000 -p1 + + # ====================================================== + # Configuring and building the code: +@@ -1721,7 +1724,7 @@ BuildPython debug \ + BuildPython optimized \ + python \ + python%{pybasever} \ +- "" \ ++ "--enable-optimizations --with-computed-gotos" \ + true + + +-- +1.8.3.1 + diff --git a/devtools/python/python-2.7.5/centos/meta_patches/0004-Turn-off-with_systemtap-to-disable-dtrace.patch b/devtools/python/python-2.7.5/centos/meta_patches/0004-Turn-off-with_systemtap-to-disable-dtrace.patch new file mode 100644 index 000000000..7c52f7e8a --- /dev/null +++ b/devtools/python/python-2.7.5/centos/meta_patches/0004-Turn-off-with_systemtap-to-disable-dtrace.patch @@ -0,0 +1,25 @@ +From 83b8eb17d13fd5afdb926698082e47cba029c531 Mon Sep 17 00:00:00 2001 +From: Al Bailey +Date: Wed, 28 Mar 2018 15:23:35 -0500 +Subject: [PATCH] Turn off with_systemtap to disable dtrace + +--- + SPECS/python.spec | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/SPECS/python.spec b/SPECS/python.spec +index 2441951..c2edce8 100644 +--- a/SPECS/python.spec ++++ b/SPECS/python.spec +@@ -42,7 +42,7 @@ + + %global with_gdb_hooks 1 + +-%global with_systemtap 1 ++%global with_systemtap 0 + + # some arches don't have valgrind so we need to disable its support on them + %ifarch %{ix86} x86_64 ppc %{power64} s390x aarch64 +-- +1.8.3.1 + diff --git a/devtools/python/python-2.7.5/centos/meta_patches/PATCH_ORDER b/devtools/python/python-2.7.5/centos/meta_patches/PATCH_ORDER new file mode 100644 index 000000000..1003df479 --- /dev/null +++ b/devtools/python/python-2.7.5/centos/meta_patches/PATCH_ORDER @@ -0,0 +1,4 @@ +0001-Update-package-versioning-for-TIS-format.patch +0002-Disable-unittest-check-phase.patch +0003-Make-Python-Faster.patch +0004-Turn-off-with_systemtap-to-disable-dtrace.patch diff --git a/devtools/python/python-2.7.5/centos/patches/Rollup-optimization-commits.patch b/devtools/python/python-2.7.5/centos/patches/Rollup-optimization-commits.patch new file mode 100644 index 000000000..9f42271ce --- /dev/null +++ b/devtools/python/python-2.7.5/centos/patches/Rollup-optimization-commits.patch @@ -0,0 +1,3548 @@ +From 932023666da32002277b878a91ff322a79c1a6a8 Mon Sep 17 00:00:00 2001 +From: Al Bailey +Date: Wed, 28 Mar 2018 15:18:09 -0500 +Subject: [PATCH] WRS: Patch9000: 0001-WRS-Rollup-optimization-commits.patch + +--- + .gitignore | 50 ++ + .hgignore | 86 ++ + Makefile.pre.in | 39 +- + Misc/NEWS | 2647 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + README | 29 + + configure | 334 ++++++- + configure.ac | 168 ++++ + 7 files changed, 3341 insertions(+), 12 deletions(-) + create mode 100644 .gitignore + create mode 100644 .hgignore + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..2b87e93 +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,50 @@ ++*.cover ++*.o ++*.orig ++*.pyc ++*.pyd ++*.pyo ++*.rej ++*~ ++*.gc?? ++*.profclang? ++*.profraw ++Doc/build/ ++Doc/tools/docutils/ ++Doc/tools/jinja2/ ++Doc/tools/pygments/ ++Doc/tools/sphinx/ ++Lib/lib2to3/*.pickle ++Makefile ++Makefile.pre ++Misc/python.pc ++Modules/Setup ++Modules/Setup.config ++Modules/Setup.local ++Modules/config.c ++Modules/ld_so_aix ++PCbuild/*.bsc ++PCbuild/*.dll ++PCbuild/*.exe ++PCbuild/*.exp ++PCbuild/*.lib ++PCbuild/*.ncb ++PCbuild/*.o ++PCbuild/*.pdb ++PCbuild/Win32-temp-* ++Parser/pgen ++Parser/pgen.stamp ++autom4te.cache ++build/ ++config.log ++config.status ++libpython*.a ++libpython*.so* ++pyconfig.h ++python$ ++python-gdb.py ++tags ++.coverage ++coverage/ ++externals/ ++htmlcov/ +diff --git a/.hgignore b/.hgignore +new file mode 100644 +index 0000000..007aa7b +--- /dev/null ++++ b/.hgignore +@@ -0,0 +1,86 @@ ++.gdb_history ++.purify ++.svn/ ++^.idea/ ++.DS_Store ++Makefile$ ++Makefile.pre$ ++TAGS$ ++autom4te.cache$ ++build/ ++buildno$ ++config.cache ++config.log ++config.status ++config.status.lineno ++db_home ++platform$ ++pyconfig.h$ ++python$ ++python.bat$ ++python.exe$ ++reflog.txt$ ++tags$ ++Lib/plat-mac/errors.rsrc.df.rsrc ++Misc/python.pc ++Modules/Setup$ ++Modules/Setup.config ++Modules/Setup.local ++Modules/config.c ++Modules/ld_so_aix$ ++Parser/pgen$ ++Parser/pgen.stamp$ ++^core ++^python-gdb.py ++^pybuilddir.txt ++ ++syntax: glob ++python.exe-gdb.py ++libpython*.a ++libpython*.so* ++*.swp ++*.o ++*.pyc ++*.pyo ++*.pyd ++*.cover ++*~ ++*.gc?? ++*.profclang? ++*.profraw ++Lib/distutils/command/*.pdb ++Lib/lib2to3/*.pickle ++Lib/test/data/* ++Misc/*.wpu ++PC/python_nt*.h ++PC/pythonnt_rc*.h ++PC/*/*.exe ++PC/*/*.exp ++PC/*/*.lib ++PC/*/*.bsc ++PC/*/*.dll ++PC/*/*.pdb ++PC/*/*.user ++PC/*/*.ncb ++PC/*/*.suo ++PC/*/Win32-temp-* ++PC/*/x64-temp-* ++PC/*/amd64 ++PCbuild/*.user ++PCbuild/*.suo ++PCbuild/*.*sdf ++PCbuild/*-pgi ++PCbuild/*-pgo ++PCbuild/.vs ++PCbuild/*.dll ++PCbuild/*.exp ++PCbuild/*.exe ++PCbuild/*.ilk ++PCbuild/*.lib ++PCbuild/*.pdb ++PCbuild/amd64 ++PCbuild/obj ++.coverage ++coverage/ ++externals/ ++htmlcov/ +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 611f63a..21b6478 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -42,6 +42,11 @@ SVNVERSION= @SVNVERSION@ + HGVERSION= @HGVERSION@ + HGTAG= @HGTAG@ + HGBRANCH= @HGBRANCH@ ++PGO_PROF_GEN_FLAG=@PGO_PROF_GEN_FLAG@ ++PGO_PROF_USE_FLAG=@PGO_PROF_USE_FLAG@ ++LLVM_PROF_MERGER=@LLVM_PROF_MERGER@ ++LLVM_PROF_FILE=@LLVM_PROF_FILE@ ++LLVM_PROF_ERR=@LLVM_PROF_ERR@ + + GNULD= @GNULD@ + +@@ -203,8 +208,7 @@ _PYTHON_HOST_PLATFORM=@_PYTHON_HOST_PLATFORM@ + HOST_GNU_TYPE= @host@ + + # The task to run while instrument when building the profile-opt target +-PROFILE_TASK= $(srcdir)/Tools/pybench/pybench.py -n 2 --with-gc --with-syscheck +-#PROFILE_TASK= $(srcdir)/Lib/test/regrtest.py ++PROFILE_TASK=-m test.regrtest >/dev/null 2>&1 + + # === Definitions added by makesetup === + +@@ -417,42 +421,53 @@ LIBRARY_OBJS= \ + # Rules + + # Default target +-all: build_all ++all: @DEF_MAKE_ALL_RULE@ + build_all: $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks + +-# Compile a binary with gcc profile guided optimization. ++# Compile a binary with profile guided optimization. + profile-opt: ++ @if [ $(LLVM_PROF_ERR) == yes ]; then \ ++ echo "Error: Cannot perform PGO build because llvm-profdata was not found in PATH" ;\ ++ echo "Please add it to PATH and run ./configure again" ;\ ++ exit 1;\ ++ fi + @echo "Building with support for profile generation:" + $(MAKE) clean ++ $(MAKE) profile-removal + $(MAKE) build_all_generate_profile +- @echo "Running benchmark to generate profile data:" + $(MAKE) profile-removal ++ @echo "Running code to generate profile data (this can take a while):" + $(MAKE) run_profile_task ++ $(MAKE) build_all_merge_profile + @echo "Rebuilding with profile guided optimizations:" + $(MAKE) clean + $(MAKE) build_all_use_profile ++ $(MAKE) profile-removal + + build_all_generate_profile: +- $(MAKE) all CFLAGS="$(CFLAGS) -fprofile-generate" LIBS="$(LIBS) -lgcov" ++ $(MAKE) @DEF_MAKE_RULE@ CFLAGS="$(CFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LIBS="$(LIBS)" + + run_profile_task: + : # FIXME: can't run for a cross build +- ./$(BUILDPYTHON) $(PROFILE_TASK) ++ $(LLVM_PROF_FILE) ./$(BUILDPYTHON) $(PROFILE_TASK) || true ++ ++build_all_merge_profile: ++ $(LLVM_PROF_MERGER) + + build_all_use_profile: +- $(MAKE) all CFLAGS="$(CFLAGS) -fprofile-use" ++ $(MAKE) @DEF_MAKE_RULE@ CFLAGS="$(CFLAGS) $(PGO_PROF_USE_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) @LTOFLAGS@" + + coverage: + @echo "Building with support for coverage checking:" +- $(MAKE) clean +- $(MAKE) all CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov" ++ $(MAKE) clean profile-removal ++ $(MAKE) @DEF_MAKE_RULE@ CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov" + + + # Build the interpreter + $(BUILDPYTHON): Modules/python.o $(LDLIBRARY) + $(LINKCC) $(CFLAGS) $(LDFLAGS) $(LINKFORSHARED) -o $@ \ + Modules/python.o \ +- $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) ++ $(LIBRARY_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) + + platform: $(BUILDPYTHON) pybuilddir.txt + $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform +@@ -1282,9 +1297,11 @@ clean: pycremoval + find build -name 'fficonfig.h' -exec rm -f {} ';' || true + find build -name 'fficonfig.py' -exec rm -f {} ';' || true + -rm -f Lib/lib2to3/*Grammar*.pickle ++ -find build -type f -a ! -name '*.gc??' -exec rm -f {} ';' + + profile-removal: + find . -name '*.gc??' -exec rm -f {} ';' ++ find . -name '*.profclang?' -exec rm -f {} ';' + + clobber: clean profile-removal + -rm -f $(BUILDPYTHON) $(PGEN) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \ +diff --git a/Misc/NEWS b/Misc/NEWS +index 8f97390..8e581ab 100644 +--- a/Misc/NEWS ++++ b/Misc/NEWS +@@ -1,6 +1,2653 @@ +++++++++++++ + Python News + +++++++++++ + ++What's New in Python 2.7.13? ++============================ ++ ++*Release date: XXXX-XX-XX* ++ ++Core and Builtins ++----------------- ++ ++- bpo-28598: Support __rmod__ for subclasses of str being called before ++ str.__mod__. Patch by Martijn Pieters. ++ ++- bpo-29602: Fix incorrect handling of signed zeros in complex constructor for ++ complex subclasses and for inputs having a __complex__ method. Patch ++ by Serhiy Storchaka. ++ ++- bpo-29347: Fixed possibly dereferencing undefined pointers ++ when creating weakref objects. ++ ++- Issue #14376: Allow sys.exit to accept longs as well as ints. Patch ++ by Gareth Rees. ++ ++- Issue #29028: Fixed possible use-after-free bugs in the subscription of the ++ buffer object with custom index object. ++ ++- Issue #29145: Fix overflow checks in string, bytearray and unicode. ++ Patch by jan matejek and Xiang Zhang. ++ ++- Issue #28932: Do not include if it does not exist. ++ ++Extension Modules ++----------------- ++ ++- Issue #29169: Update zlib to 1.2.11. ++ ++Library ++------- ++ ++- bpo-29861: Release references to tasks, their arguments and their results ++ as soon as they are finished in multiprocessing.Pool. ++ ++- bpo-27880: Fixed integer overflow in cPickle when pickle large strings or ++ too many objects. ++ ++- bpo-29110: Fix file object leak in aifc.open() when file is given as a ++ filesystem path and is not in valid AIFF format. ++ Original patch by Anthony Zhang. ++ ++- Issue #29354: Fixed inspect.getargs() for parameters which are cell ++ variables. ++ ++- Issue #29335: Fix subprocess.Popen.wait() when the child process has ++ exited to a stopped instead of terminated state (ex: when under ptrace). ++ ++- Issue #29219: Fixed infinite recursion in the repr of uninitialized ++ ctypes.CDLL instances. ++ ++- Issue #29082: Fixed loading libraries in ctypes by unicode names on Windows. ++ Original patch by Chi Hsuan Yen. ++ ++- Issue #29188: Support glibc 2.24 on Linux: don't use getentropy() function ++ but read from /dev/urandom to get random bytes, for example in os.urandom(). ++ On Linux, getentropy() is implemented which getrandom() is blocking mode, ++ whereas os.urandom() should not block. ++ ++- Issue #29142: In urllib, suffixes in no_proxy environment variable with ++ leading dots could match related hostnames again (e.g. .b.c matches a.b.c). ++ Patch by Milan Oberkirch. ++ ++- Issue #29094: Offsets in a ZIP file created with extern file object and mode ++ "w" now are relative to the start of the file. ++ ++- Issue #13051: Fixed recursion errors in large or resized ++ curses.textpad.Textbox. Based on patch by Tycho Andersen. ++ ++- Issue #9770: curses.ascii predicates now work correctly with negative ++ integers. ++ ++- Issue #28427: old keys should not remove new values from ++ WeakValueDictionary when collecting from another thread. ++ ++- Issue #28998: More APIs now support longs as well as ints. ++ ++- Issue 28923: Remove editor artifacts from Tix.py, ++ including encoding not recognized by codecs.lookup. ++ ++- Issue #29019: Fix dict.fromkeys(x) overallocates when x is sparce dict. ++ Original patch by Rasmus Villemoes. ++ ++- Issue #19542: Fix bugs in WeakValueDictionary.setdefault() and ++ WeakValueDictionary.pop() when a GC collection happens in another ++ thread. ++ ++- Issue #28925: cPickle now correctly propagates errors when unpickle instances ++ of old-style classes. ++ ++C API ++----- ++ ++- Issue #27867: Function PySlice_GetIndicesEx() is replaced with a macro. ++ ++Documentation ++------------- ++ ++- bpo-28929: Link the documentation to its source file on GitHub. ++ ++- Issue #26355: Add canonical header link on each page to corresponding major ++ version of the documentation. Patch by Matthias Bussonnier. ++ ++- Issue #12067: Rewrite Comparisons section in the Expressions chapter of the ++ language reference. Some of the details of comparing mixed types were ++ incorrect or ambiguous. Added default behaviour and consistency suggestions ++ for user-defined classes. Based on patch from Andy Maier. ++ ++Build ++----- ++ ++- bpo-29643: Fix ``--enable-optimization`` configure option didn't work. ++ ++- bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k. ++ ++- Issue #28768: Fix implicit declaration of function _setmode. Patch by ++ Masayuki Yamamoto ++ ++ ++What's New in Python 2.7.13 ++=========================== ++ ++*Release date: 2016-12-17* ++ ++Core and Builtins ++----------------- ++ ++- Revert a37cc3d926ec (Issue #5322). ++ ++ ++What's New in Python 2.7.13 release candidate 1? ++================================================ ++ ++*Release date: 2016-12-03* ++ ++Core and Builtins ++----------------- ++ ++- Issue #5322: Fixed setting __new__ to a PyCFunction inside Python code. ++ Original patch by Andreas Stührk. ++ ++- Issue #28847: dumbdbm no longer writes the index file in when it is not ++ changed and supports reading read-only files. ++ ++- Issue #11145: Fixed miscellaneous issues with C-style formatting of types ++ with custom __oct__ and __hex__. ++ ++- Issue #24469: Fixed memory leak caused by int subclasses without overridden ++ tp_free (e.g. C-inherited Cython classes). ++ ++- Issue #19398: Extra slash no longer added to sys.path components in case of ++ empty compile-time PYTHONPATH components. ++ ++- Issue #21720: Improve exception message when the type of fromlist is unicode. ++ fromlist parameter of __import__() only accepts str in Python 2 and this ++ will help to identify the problem especially when the unicode_literals ++ future import is used. ++ ++- Issue #26906: Resolving special methods of uninitialized type now causes ++ implicit initialization of the type instead of a fail. ++ ++- Issue #18287: PyType_Ready() now checks that tp_name is not NULL. ++ Original patch by Niklas Koep. ++ ++- Issue #24098: Fixed possible crash when AST is changed in process of ++ compiling it. ++ ++- Issue #28350: String constants with null character no longer interned. ++ ++- Issue #27942: String constants now interned recursively in tuples and frozensets. ++ ++- Issue #15578: Correctly incref the parent module while importing. ++ ++- Issue #26307: The profile-opt build now applys PGO to the built-in modules. ++ ++- Issue #27870: A left shift of zero by a large integer no longer attempts ++ to allocate large amounts of memory. ++ ++- Issue #25604: Fix a minor bug in integer true division; this bug could ++ potentially have caused off-by-one-ulp results on platforms with ++ unreliable ldexp implementations. ++ ++- Issue #27473: Fixed possible integer overflow in str, unicode and bytearray ++ concatenations and repetitions. Based on patch by Xiang Zhang. ++ ++- Issue #27507: Add integer overflow check in bytearray.extend(). Patch by ++ Xiang Zhang. ++ ++- Issue #27581: Don't rely on wrapping for overflow check in ++ PySequence_Tuple(). Patch by Xiang Zhang. ++ ++- Issue #23908: os functions, open() and the io.FileIO constructor now reject ++ unicode paths with embedded null character on Windows instead of silently ++ truncating them. ++ ++- Issue #27514: Make having too many statically nested blocks a SyntaxError ++ instead of SystemError. ++ ++Library ++------- ++ ++- Issue #27570: Avoid zero-length memcpy() etc calls with null source ++ pointers in the "ctypes" and "array" modules. ++ ++- lib2to3.pgen3.driver.load_grammar() now creates a stable cache file ++ between runs given the same Grammar.txt input regardless of the hash ++ randomization setting. ++ ++- Issue #27691: Fix ssl module's parsing of GEN_RID subject alternative name ++ fields in X.509 certs. ++ ++- Issue #27850: Remove 3DES from ssl module's default cipher list to counter ++ measure sweet32 attack (CVE-2016-2183). ++ ++- Issue #27766: Add ChaCha20 Poly1305 to ssl module's default ciper list. ++ (Required OpenSSL 1.1.0 or LibreSSL). ++ ++- Issue #26470: Port ssl and hashlib module to OpenSSL 1.1.0. ++ ++- Issue #27944: Fix some memory-corruption bugs in the log reading code of the ++ _hotshot module. ++ ++- Issue #27934: Use ``float.__repr__`` instead of plain ``repr`` when JSON- ++ encoding an instance of a float subclass. Thanks Eddie James. ++ ++- Issue #27861: Fixed a crash in sqlite3.Connection.cursor() when a factory ++ creates not a cursor. Patch by Xiang Zhang. ++ ++- Issue #19884: Avoid spurious output on OS X with Gnu Readline. ++ ++- Issue #10513: Fix a regression in Connection.commit(). Statements should ++ not be reset after a commit. ++ ++- Issue #2466: posixpath.ismount now correctly recognizes mount points which ++ the user does not have permission to access. ++ ++- Issue #27783: Fix possible usage of uninitialized memory in operator.methodcaller. ++ ++- Issue #27774: Fix possible Py_DECREF on unowned object in _sre. ++ ++- Issue #27760: Fix possible integer overflow in binascii.b2a_qp. ++ ++- In the curses module, raise an error if window.getstr() or window.instr() is ++ passed a negative value. ++ ++- Issue #27758: Fix possible integer overflow in the _csv module for large record ++ lengths. ++ ++- Issue #23369: Fixed possible integer overflow in ++ _json.encode_basestring_ascii. ++ ++- Issue #27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the ++ HTTP_PROXY variable when REQUEST_METHOD environment is set, which indicates ++ that the script is in CGI mode. ++ ++- Issue #27130: In the "zlib" module, fix handling of large buffers ++ (typically 2 or 4 GiB). Previously, inputs were limited to 2 GiB, and ++ compression and decompression operations did not properly handle results of ++ 2 or 4 GiB. ++ ++- Issue #23804: Fix SSL zero-length recv() calls to not block and not raise ++ an error about unclean EOF. ++ ++- Issue #27466: Change time format returned by http.cookie.time2netscape, ++ confirming the netscape cookie format and making it consistent with ++ documentation. ++ ++- Issue #22115: Fixed tracing Tkinter variables: trace_vdelete() with wrong ++ mode no longer break tracing, trace_vinfo() now always returns a list of ++ pairs of strings. ++ ++- Issue #27079: Fixed curses.ascii functions isblank(), iscntrl() and ispunct(). ++ ++- Issue #22636: Avoid shell injection problems with ++ ctypes.util.find_library(). ++ ++- Issue #27330: Fixed possible leaks in the ctypes module. ++ ++- Issue #27238: Got rid of bare excepts in the turtle module. Original patch ++ by Jelle Zijlstra. ++ ++- Issue #26386: Fixed ttk.TreeView selection operations with item id's ++ containing spaces. ++ ++- Issue #25455: Fixed a crash in repr of cElementTree.Element with recursive tag. ++ ++IDLE ++---- ++ ++- Issue #27714: text_textview and test_autocomplete now pass when re-run ++ in the same process. This occurs when test_idle fails when run with the ++ -w option but without -jn. Fix warning from test_config. ++ ++- Issue #27452: add line counter and crc to IDLE configHandler test dump. ++ ++- Issue #27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names. ++ ++- Issue #27245: IDLE: Cleanly delete custom themes and key bindings. ++ Previously, when IDLE was started from a console or by import, a cascade ++ of warnings was emitted. Patch by Serhiy Storchaka. ++ ++Documentation ++------------- ++ ++- Issue #16484: Change the default PYTHONDOCS URL to "https:", and fix the ++ resulting links to use lowercase. Patch by Sean Rodman, test by Kaushik ++ Nadikuditi. ++ ++Tests ++----- ++ ++- Issue #27369: In test_pyexpat, avoid testing an error message detail that ++ changed in Expat 2.2.0. ++ ++Build ++----- ++ ++- Issue #26359: Rename --with-optimiations to --enable-optimizations. ++ ++- Issue #28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j. ++ ++- Issue #28258: Fixed build with Estonian locale (distclean target in ++ Makefile). Patch by Arfrever Frehtes Taifersar Arahesis. ++ ++- Issue #26661: setup.py now detects system libffi with multiarch wrapper. ++ ++- Issue #15819: The Include directory in the build tree is already searched; ++ drop unused code trying to add it again. ++ ++- Issue #27566: Fix clean target in freeze makefile (patch by Lisa Roach) ++ ++- Issue #27983: Cause lack of llvm-profdata tool when using clang as ++ required for PGO linking to be a configure time error rather than ++ make time when --with-optimizations is enabled. Also improve our ++ ability to find the llvm-profdata tool on MacOS and some Linuxes. ++ ++- Issue #26359: Add the --with-optimizations configure flag. ++ ++- Issue #10910: Avoid C++ compilation errors on FreeBSD and OS X. ++ Also update FreedBSD version checks for the original ctype UTF-8 workaround. ++ ++Windows ++------- ++ ++- Issue #27888: Prevent Windows installer from displaying console windows and ++ failing when pip cannot be installed/uninstalled. ++ ++What's New in Python 2.7.12? ++============================ ++ ++*Release date: XXXX-XX-XX* ++ ++Core and Builtins ++----------------- ++ ++- Issue #25702: A --with-lto configure option has been added that will ++ enable link time optimizations at build time during a make profile-opt. ++ Some compilers and toolchains are known to not produce stable code when ++ using LTO, be sure to test things thoroughly before relying on it. ++ It can provide a few % speed up over profile-opt alone. ++ ++- Issue #26168: Fixed possible refleaks in failing Py_BuildValue() with the "N" ++ format unit. ++ ++- Issue #27039: Fixed bytearray.remove() for values greater than 127. Patch by ++ Joe Jevnik. ++ ++- Issue #4806: Avoid masking the original TypeError exception when using star ++ (*) unpacking and the exception was raised from a generator. Based on ++ patch by Hagen Fürstenau. ++ ++- Issue #26659: Make the builtin slice type support cycle collection. ++ ++- Issue #26718: super.__init__ no longer leaks memory if called multiple times. ++ NOTE: A direct call of super.__init__ is not endorsed! ++ ++- Issue #13410: Fixed a bug in PyUnicode_Format where it failed to properly ++ ignore errors from a __int__() method. ++ ++- Issue #26494: Fixed crash on iterating exhausting iterators. ++ Affected classes are generic sequence iterators, iterators of bytearray, ++ list, tuple, set, frozenset, dict, OrderedDict and corresponding views. ++ ++- Issue #26581: If coding cookie is specified multiple times on a line in ++ Python source code file, only the first one is taken to account. ++ ++- Issue #22836: Ensure exception reports from PyErr_Display() and ++ PyErr_WriteUnraisable() are sensible even when formatting them produces ++ secondary errors. This affects the reports produced by ++ sys.__excepthook__() and when __del__() raises an exception. ++ ++- Issue #22847: Improve method cache efficiency. ++ ++- Issue #25843: When compiling code, don't merge constants if they are equal ++ but have a different types. For example, ``f1, f2 = lambda: 1, lambda: 1.0`` ++ is now correctly compiled to two different functions: ``f1()`` returns ``1`` ++ (``int``) and ``f2()`` returns ``1.0`` (``int``), even if ``1`` and ``1.0`` ++ are equal. ++ ++- Issue #22995: [UPDATE] Remove the one of the pickleability tests in ++ _PyObject_GetState() due to regressions observed in Cython-based projects. ++ ++- Issue #25961: Disallowed null characters in the type name. ++ ++- Issue #22995: Instances of extension types with a state that aren't ++ subclasses of list or dict and haven't implemented any pickle-related ++ methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__, ++ or __getstate__), can no longer be pickled. Including memoryview. ++ ++- Issue #20440: Massive replacing unsafe attribute setting code with special ++ macro Py_SETREF. ++ ++- Issue #25421: __sizeof__ methods of builtin types now use dynamic basic size. ++ This allows sys.getsize() to work correctly with their subclasses with ++ __slots__ defined. ++ ++- Issue #19543: Added Py3k warning for decoding unicode. ++ ++- Issue #24097: Fixed crash in object.__reduce__() if slot name is freed inside ++ __getattr__. ++ ++- Issue #24731: Fixed crash on converting objects with special methods ++ __str__, __trunc__, and __float__ returning instances of subclasses of ++ str, long, and float to subclasses of str, long, and float correspondingly. ++ ++- Issue #26478: Fix semantic bugs when using binary operators with dictionary ++ views and tuples. ++ ++- Issue #26171: Fix possible integer overflow and heap corruption in ++ zipimporter.get_data(). ++ ++Library ++------- ++ ++- Issue #27114: Fix SSLContext._load_windows_store_certs fails with ++ PermissionError ++ ++- Issue #14132: Fix urllib.request redirect handling when the target only has ++ a query string. Fix by Ján Janech. ++ ++- Removed the requirements for the ctypes and modulefinder modules to be ++ compatible with earlier Python versions. ++ ++- Issue #22274: In the subprocess module, allow stderr to be redirected to ++ stdout even when stdout is not redirected. Patch by Akira Li. ++ ++- Issue #12045: Avoid duplicate execution of command in ctypes.util._get_soname(). ++ Patch by Sijin Joseph. ++ ++- Issue #26960: Backported #16270 from Python 3 to Python 2, to prevent urllib ++ from hanging when retrieving certain FTP files. ++ ++- Issue #25745: Fixed leaking a userptr in curses panel destructor. ++ ++- Issue #17765: weakref.ref() no longer silently ignores keyword arguments. ++ Patch by Georg Brandl. ++ ++- Issue #26873: xmlrpclib now raises ResponseError on unsupported type tags ++ instead of silently return incorrect result. ++ ++- Issue #24114: Fix an uninitialized variable in `ctypes.util`. ++ ++ The bug only occurs on SunOS when the ctypes implementation searches ++ for the `crle` program. Patch by Xiang Zhang. Tested on SunOS by ++ Kees Bos. ++ ++- Issue #26864: In urllib, change the proxy bypass host checking against ++ no_proxy to be case-insensitive, and to not match unrelated host names that ++ happen to have a bypassed hostname as a suffix. Patch by Xiang Zhang. ++ ++- Issue #26804: urllib will prefer lower_case proxy environment variables over ++ UPPER_CASE or Mixed_Case ones. Patch contributed by Hans-Peter Jansen. ++ ++- Issue #26837: assertSequenceEqual() now correctly outputs non-stringified ++ differing items. This affects assertListEqual() and assertTupleEqual(). ++ ++- Issue #26822: itemgetter, attrgetter and methodcaller objects no longer ++ silently ignore keyword arguments. ++ ++- Issue #26657: Fix directory traversal vulnerability with SimpleHTTPServer ++ on Windows. This fixes a regression that was introduced in 2.7.7. Based ++ on patch by Philipp Hagemeister. ++ ++- Issue #19377: Add .svg to mimetypes.types_map. ++ ++- Issue #13952: Add .csv to mimetypes.types_map. Patch by Geoff Wilson. ++ ++- Issue #16329: Add .webm to mimetypes.types_map. Patch by Giampaolo Rodola'. ++ ++- Issue #23735: Handle terminal resizing with Readline 6.3+ by installing our ++ own SIGWINCH handler. Patch by Eric Price. ++ ++- Issue #26644: Raise ValueError rather than SystemError when a negative ++ length is passed to SSLSocket.recv() or read(). ++ ++- Issue #23804: Fix SSL recv(0) and read(0) methods to return zero bytes ++ instead of up to 1024. ++ ++- Issue #24266: Ctrl+C during Readline history search now cancels the search ++ mode when compiled with Readline 7. ++ ++- Issue #23857: Implement PEP 493, adding a Python-2-only ssl module API and ++ environment variable to configure the default handling of SSL/TLS certificates ++ for HTTPS connections. ++ ++- Issue #26313: ssl.py _load_windows_store_certs fails if windows cert store ++ is empty. Patch by Baji. ++ ++- Issue #26513: Fixes platform module detection of Windows Server ++ ++- Issue #23718: Fixed parsing time in week 0 before Jan 1. Original patch by ++ Tamás Bence Gedai. ++ ++- Issue #26177: Fixed the keys() method for Canvas and Scrollbar widgets. ++ ++- Issue #15068: Got rid of excessive buffering in the fileinput module. ++ The bufsize parameter is no longer used. ++ ++- Issue #2202: Fix UnboundLocalError in ++ AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu Dupuy. ++ ++- Issue #26475: Fixed debugging output for regular expressions with the (?x) ++ flag. ++ ++- Issue #26385: Remove the file if the internal fdopen() call in ++ NamedTemporaryFile() fails. Based on patch by Silent Ghost. ++ ++- Issue #26309: In the "socketserver" module, shut down the request (closing ++ the connected socket) when verify_request() returns false. Based on patch ++ by Aviv Palivoda. ++ ++- Issue #25939: On Windows open the cert store readonly in ssl.enum_certificates. ++ ++- Issue #24303: Fix random EEXIST upon multiprocessing semaphores creation with ++ Linux PID namespaces enabled. ++ ++- Issue #25698: Importing module if the stack is too deep no longer replaces ++ imported module with the empty one. ++ ++- Issue #12923: Reset FancyURLopener's redirect counter even if there is an ++ exception. Based on patches by Brian Brazil and Daniel Rocco. ++ ++- Issue #25945: Fixed a crash when unpickle the functools.partial object with ++ wrong state. Fixed a leak in failed functools.partial constructor. ++ "args" and "keywords" attributes of functools.partial have now always types ++ tuple and dict correspondingly. ++ ++- Issue #19883: Fixed possible integer overflows in zipimport. ++ ++- Issue #26147: xmlrpclib now works with unicode not encodable with used ++ non-UTF-8 encoding. ++ ++- Issue #16620: Fixed AttributeError in msilib.Directory.glob(). ++ ++- Issue #21847: Fixed xmlrpclib on Unicode-disabled builds. ++ ++- Issue #6500: Fixed infinite recursion in urllib2.Request.__getattr__(). ++ ++- Issue #26083: Workaround a subprocess bug that raises an incorrect ++ "ValueError: insecure string pickle" exception instead of the actual ++ exception on some platforms such as Mac OS X when an exception raised ++ in the forked child process prior to the exec() was large enough that ++ it overflowed the internal errpipe_read pipe buffer. ++ ++- Issue #24103: Fixed possible use after free in ElementTree.iterparse(). ++ ++- Issue #20954: _args_from_interpreter_flags used by multiprocessing and some ++ tests no longer behaves incorrectly in the presence of the PYTHONHASHSEED ++ environment variable. ++ ++- Issue #14285: When executing a package with the "python -m package" option, ++ and package initialization raises ImportError, a proper traceback is now ++ reported. ++ ++- Issue #6478: _strptime's regexp cache now is reset after changing timezone ++ with time.tzset(). ++ ++- Issue #25718: Fixed copying object with state with boolean value is false. ++ ++- Issue #25742: :func:`locale.setlocale` now accepts a Unicode string for ++ its second parameter. ++ ++- Issue #10131: Fixed deep copying of minidom documents. Based on patch ++ by Marian Ganisin. ++ ++- Issue #25725: Fixed a reference leak in cPickle.loads() when unpickling ++ invalid data including tuple instructions. ++ ++- Issue #25663: In the Readline completer, avoid listing duplicate global ++ names, and search the global namespace before searching builtins. ++ ++- Issue #25688: Fixed file leak in ElementTree.iterparse() raising an error. ++ ++- Issue #23914: Fixed SystemError raised by CPickle unpickler on broken data. ++ ++- Issue #25924: Avoid unnecessary serialization of getaddrinfo(3) calls on ++ OS X versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis. ++ ++- Issue #26406: Avoid unnecessary serialization of getaddrinfo(3) calls on ++ current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis. ++ ++IDLE ++---- ++ ++- Issue #26673: When tk reports font size as 0, change to size 10. ++ Such fonts on Linux prevented the configuration dialog from opening. ++ ++- Issue #27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks. ++ ++- In the 'IDLE-console differences' section of the IDLE doc, clarify ++ how running with IDLE affects sys.modules and the standard streams. ++ ++- Issue #25507: fix incorrect change in IOBinding that prevented printing. ++ Change also prevented saving shell window with non-ascii characters. ++ Augment IOBinding htest to include all major IOBinding functions. ++ ++- Issue #25905: Revert unwanted conversion of ' to ’ RIGHT SINGLE QUOTATION ++ MARK in README.txt and open this and NEWS.txt with 'ascii'. ++ Re-encode CREDITS.txt to utf-8 and open it with 'utf-8'. ++ ++- Issue #26417: Prevent spurious errors and incorrect defaults when ++ installing IDLE 2.7 on OS X: default configuration settings are ++ no longer installed from OS X specific copies. ++ ++Documentation ++------------- ++ ++- Issue #26736: Used HTTPS for external links in the documentation if possible. ++ ++- Issue #6953: Rework the Readline module documentation to group related ++ functions together, and add more details such as what underlying Readline ++ functions and variables are accessed. ++ ++Tests ++----- ++ ++- Issue #25940: Changed test_ssl to use self-signed.pythontest.net. This ++ avoids relying on svn.python.org, which recently changed root certificate. ++ ++- Issue #25616: Tests for OrderedDict are extracted from test_collections ++ into separate file test_ordered_dict. ++ ++Build ++----- ++ ++- Issue #22359: Avoid incorrect recursive $(MAKE), and disable the rules for ++ running pgen when cross-compiling. The pgen output is normally saved with ++ the source code anyway, and is still regenerated when doing a native build. ++ Patch by Jonas Wagner and Xavier de Gaye. ++ ++- Issue #19450: Update Windows builds to use SQLite 3.8.11.0. ++ ++- Issue #17603: Avoid error about nonexistant fileblocks.o file by using a ++ lower-level check for st_blocks in struct stat. ++ ++- Issue #26465: Update Windows builds to use OpenSSL 1.0.2g. ++ ++- Issue #24421: Compile Modules/_math.c once, before building extensions. ++ Previously it could fail to compile properly if the math and cmath builds ++ were concurrent. ++ ++- Issue #25824: Fixes sys.winver to not include any architecture suffix. ++ ++- Issue #25348: Added ``--pgo`` and ``--pgo-job`` arguments to ++ ``PCbuild\build.bat`` for building with Profile-Guided Optimization. The ++ old ``PCbuild\build_pgo.bat`` script is now deprecated, and simply calls ++ ``PCbuild\build.bat --pgo %*``. ++ ++- Issue #25827: Add support for building with ICC to ``configure``, including ++ a new ``--with-icc`` flag. ++ ++- Issue #25696: Fix installation of Python on UNIX with make -j9. ++ ++- Issue #26465: Update OS X 10.5+ 32-bit-only installer to build ++ and link with OpenSSL 1.0.2g. ++ ++- Issue #26268: Update Windows builds to use OpenSSL 1.0.2f. ++ ++- Issue #25136: Support Apple Xcode 7's new textual SDK stub libraries. ++ ++Tools/Demos ++----------- ++ ++- Issue #26799: Fix python-gdb.py: don't get C types once when the Python code ++ is loaded, but get C types on demand. The C types can change if ++ python-gdb.py is loaded before the Python executable. Patch written by Thomas ++ Ilsche. ++ ++C API ++----- ++ ++- Issue #26476: Fixed compilation error when use PyErr_BadInternalCall() in C++. ++ Patch by Jeroen Demeyer. ++ ++ ++What's New in Python 2.7.11? ++============================ ++ ++*Release date: XXXX-XX-XX* ++ ++Core and Builtins ++----------------- ++ ++- Issue #21167: NAN operations are now handled correctly when python is ++ compiled with ICC even if -fp-model strict is not specified. ++ ++- Issue #24467: Fixed possible buffer over-read in bytearray. The bytearray ++ object now always allocates place for trailing null byte and it's buffer now ++ is always null-terminated. ++ ++- Issue #19543: encode() and decode() methods and constructors of str, ++ unicode and bytearray classes now emit deprecation warning for known ++ non-text encodings when Python is ran with the -3 option. ++ ++- Issue #24115: Update uses of PyObject_IsTrue(), PyObject_Not(), ++ PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains() ++ to check for and handle errors correctly. ++ ++- Issue #4753: On compilers where it is supported, use "computed gotos" for ++ bytecode dispatch in the interpreter. This improves interpretation ++ performance. ++ ++- Issue #22939: Fixed integer overflow in iterator object. Original patch by ++ Clement Rouault. ++ ++- Issue #24102: Fixed exception type checking in standard error handlers. ++ ++Library ++------- ++ ++- Issue #24684: socket.socket.getaddrinfo() now calls ++ PyUnicode_AsEncodedString() instead of calling the encode() method of the ++ host, to handle correctly custom unicode string with an encode() method ++ which doesn't return a byte string. The encoder of the IDNA codec is now ++ called directly instead of calling the encode() method of the string. ++ ++- Issue #24982: shutil.make_archive() with the "zip" format now adds entries ++ for directories (including empty directories) in ZIP file. ++ ++- Issue #17849: Raise a sensible exception if an invalid response is ++ received for a HTTP tunnel request, as seen with some servers that ++ do not support tunnelling. Initial patch from Cory Benfield. ++ ++- Issue #16180: Exit pdb if file has syntax error, instead of trapping user ++ in an infinite loop. Patch by Xavier de Gaye. ++ ++- Issue #22812: Fix unittest discovery examples. ++ Patch from Pam McA'Nulty. ++ ++- Issue #24634: Importing uuid should not try to load libc on Windows ++ ++- Issue #23652: Make it possible to compile the select module against the ++ libc headers from the Linux Standard Base, which do not include some ++ EPOLL macros. Initial patch by Matt Frank. ++ ++- Issue #15138: Speed up base64.urlsafe_b64{en,de}code considerably. ++ ++- Issue #23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch ++ written by Matthieu Gautier. ++ ++- Issue #23254: Document how to close the TCPServer listening socket. ++ Patch from Martin Panter. ++ ++- Issue #17527: Add PATCH to wsgiref.validator. Patch from Luca Sbardella. ++ ++- Issue #24613: Calling array.fromstring() with self is no longer allowed ++ to prevent the use-after-free error. Patch by John Leitch. ++ ++- Issue #24708: Fix possible integer overflow in strop.replace(). ++ ++- Issue #24620: Random.setstate() now validates the value of state last element. ++ ++- Issue #13938: 2to3 converts StringTypes to a tuple. Patch from Mark Hammond. ++ ++- Issue #24611: Fixed compiling the posix module on non-Windows platforms ++ without mknod() or makedev() (e.g. on Unixware). ++ ++- Issue #18684: Fixed reading out of the buffer in the re module. ++ ++- Issue #24259: tarfile now raises a ReadError if an archive is truncated ++ inside a data segment. ++ ++- Issue #24514: tarfile now tolerates number fields consisting of only ++ whitespace. ++ ++- Issue #20387: Restore semantic round-trip correctness in tokenize/untokenize ++ for tab-indented blocks. ++ ++- Issue #24456: Fixed possible buffer over-read in adpcm2lin() and lin2adpcm() ++ functions of the audioop module. Fixed SystemError when the state is not a ++ tuple. Fixed possible memory leak. ++ ++- Issue #24481: Fix possible memory corruption with large profiler info strings ++ in hotshot. ++ ++- Issue #24489: ensure a previously set C errno doesn't disturb cmath.polar(). ++ ++- Issue #19543: io.TextIOWrapper (and hence io.open()) now uses the internal ++ codec marking system added to emit deprecation warning for known non-text ++ encodings at stream construction time when Python is ran with the -3 option. ++ ++- Issue #24264: Fixed buffer overflow in the imageop module. ++ ++- Issue #5633: Fixed timeit when the statement is a string and the setup is not. ++ ++- Issue #24326: Fixed audioop.ratecv() with non-default weightB argument. ++ Original patch by David Moore. ++ ++- Issue #22095: Fixed HTTPConnection.set_tunnel with default port. The port ++ value in the host header was set to "None". Patch by Demian Brecht. ++ ++- Issue #24257: Fixed segmentation fault in sqlite3.Row constructor with faked ++ cursor type. ++ ++- Issue #24286: Dict view were not registered with the MappingView abstract ++ base classes. This caused key and item views in OrderedDict to not be equal ++ to their regular dict counterparts. ++ ++- Issue #22107: tempfile.gettempdir() and tempfile.mkdtemp() now try again ++ when a directory with the chosen name already exists on Windows as well as ++ on Unix. tempfile.mkstemp() now fails early if parent directory is not ++ valid (not exists or is a file) on Windows. ++ ++- Issue #6598: Increased time precision and random number range in ++ email.utils.make_msgid() to strengthen the uniqueness of the message ID. ++ ++- Issue #24091: Fixed various crashes in corner cases in cElementTree. ++ ++- Issue #15267: HTTPConnection.request() now is compatibile with old-style ++ classes (such as TemporaryFile). Original patch by Atsuo Ishimoto. ++ ++- Issue #20014: array.array() now accepts unicode typecodes. Based on patch by ++ Vajrasky Kok. ++ ++- Issue #23637: Showing a warning no longer fails with UnicodeErrror. ++ Formatting unicode warning in the file with the path containing non-ascii ++ characters no longer fails with UnicodeErrror. ++ ++- Issue #24134: Reverted issue #24134 changes. ++ ++Build ++----- ++ ++- Issue #24915: When doing a PGO build, the test suite is now used instead of ++ pybench; Clang support was also added as part off this work. ++ ++- Issue #24986: It is now possible to build Python on Windows without errors ++ when external libraries are not available. ++ ++- Issue #24508: Backported the MSBuild project files from Python 3.5. The ++ backported files replace the old project files in PCbuild; the old files moved ++ to PC/VS9.0 and remain supported. ++ ++- Issue #24603: Update Windows builds and OS X 10.5 installer to use OpenSSL ++ 1.0.2d. ++ ++IDLE ++---- ++ ++- Issue #23672: Allow Idle to edit and run files with astral chars in name. ++ Patch by Mohd Sanad Zaki Rizvi. ++ ++- Issue 24745: Idle editor default font. Switch from Courier to ++ platform-sensitive TkFixedFont. This should not affect current customized ++ font selections. If there is a problem, edit $HOME/.idlerc/config-main.cfg ++ and remove 'fontxxx' entries from [Editor Window]. Patch by Mark Roseman. ++ ++- Issue #21192: Idle editor. When a file is run, put its name in the restart bar. ++ Do not print false prompts. Original patch by Adnan Umer. ++ ++- Issue #13884: Idle menus. Remove tearoff lines. Patch by Roger Serwy. ++ ++- Issue #15809: IDLE shell now uses locale encoding instead of Latin1 for ++ decoding unicode literals. ++ ++Documentation ++------------- ++ ++- Issue #24952: Clarify the default size argument of stack_size() in ++ the "threading" and "thread" modules. Patch from Mattip. ++ ++- Issue #20769: Improve reload() docs. Patch by Dorian Pula. ++ ++- Issue #23589: Remove duplicate sentence from the FAQ. Patch by Yongzhi Pan. ++ ++- Issue #22155: Add File Handlers subsection with createfilehandler to Tkinter ++ doc. Remove obsolete example from FAQ. Patch by Martin Panter. ++ ++Tests ++----- ++ ++- Issue #24751: When running regrtest with the ``-w`` command line option, ++ a test run is no longer marked as a failure if all tests succeed when ++ re-run. ++ ++- PCbuild\rt.bat now accepts an unlimited number of arguments to pass along ++ to regrtest.py. Previously there was a limit of 9. ++ ++Windows ++------- ++ ++- Issue #25022: Removed very outdated PC/example_nt/ directory. ++ ++ ++What's New in Python 2.7.10? ++============================ ++ ++*Release date: 2015-05-23* ++ ++Library ++------- ++ ++- Issue #22931: Allow '[' and ']' in cookie values. ++ ++ ++What's New in Python 2.7.10 release candidate 1? ++================================================ ++ ++*Release date: 2015-05-10* ++ ++Core and Builtins ++----------------- ++ ++- Issue #23971: Fix underestimated presizing in dict.fromkeys(). ++ ++- Issue #23757: PySequence_Tuple() incorrectly called the concrete list API ++ when the data was a list subclass. ++ ++- Issue #23629: Fix the default __sizeof__ implementation for variable-sized ++ objects. ++ ++- Issue #23055: Fixed a buffer overflow in PyUnicode_FromFormatV. Analysis ++ and fix by Guido Vranken. ++ ++- Issue #23048: Fix jumping out of an infinite while loop in the pdb. ++ ++Library ++------- ++ ++- The keywords attribute of functools.partial is now always a dictionary. ++ ++- Issue #20274: When calling a _sqlite.Connection, it now complains if passed ++ any keyword arguments. Previously it silently ignored them. ++ ++- Issue #20274: Remove ignored and erroneous "kwargs" parameters from three ++ METH_VARARGS methods on _sqlite.Connection. ++ ++- Issue #24134: assertRaises() and assertRaisesRegexp() checks are not longer ++ successful if the callable is None. ++ ++- Issue #23008: Fixed resolving attributes with boolean value is False in pydoc. ++ ++- Issues #24099, #24100, and #24101: Fix use-after-free bug in heapq's siftup ++ and siftdown functions. ++ ++- Backport collections.deque fixes from Python 3.5. Prevents reentrant badness ++ during deletion by deferring the decref until the container has been restored ++ to a consistent state. ++ ++- Issue #23842: os.major(), os.minor() and os.makedev() now support ints again. ++ ++- Issue #23811: Add missing newline to the PyCompileError error message. ++ Patch by Alex Shkop. ++ ++- Issue #17898: Fix exception in gettext.py when parsing certain plural forms. ++ ++- Issue #23865: close() methods in multiple modules now are idempotent and more ++ robust at shutdown. If they need to release multiple resources, all are ++ released even if errors occur. ++ ++- Issue #23881: urllib.ftpwrapper constructor now closes the socket if the FTP ++ connection failed. ++ ++- Issue #15133: _tkinter.tkapp.getboolean() now supports long and Tcl_Obj and ++ always returns bool. tkinter.BooleanVar now validates input values (accepted ++ bool, int, long, str, unicode, and Tcl_Obj). tkinter.BooleanVar.get() now ++ always returns bool. ++ ++- Issue #23338: Fixed formatting ctypes error messages on Cygwin. ++ Patch by Makoto Kato. ++ ++- Issue #16840: Tkinter now supports 64-bit integers added in Tcl 8.4 and ++ arbitrary precision integers added in Tcl 8.5. ++ ++- Issue #23834: Fix socket.sendto(), use the C long type to store the result of ++ sendto() instead of the C int type. ++ ++- Issue #21526: Tkinter now supports new boolean type in Tcl 8.5. ++ ++- Issue #23838: linecache now clears the cache and returns an empty result on ++ MemoryError. ++ ++- Issue #23742: ntpath.expandvars() no longer loses unbalanced single quotes. ++ ++- Issue #21802: The reader in BufferedRWPair now is closed even when closing ++ writer failed in BufferedRWPair.close(). ++ ++- Issue #23671: string.Template now allows to specify the "self" parameter as ++ keyword argument. string.Formatter now allows to specify the "self" and ++ the "format_string" parameters as keyword arguments. ++ ++- Issue #21560: An attempt to write a data of wrong type no longer cause ++ GzipFile corruption. Original patch by Wolfgang Maier. ++ ++- Issue #23647: Increase impalib's MAXLINE to accommodate modern mailbox sizes. ++ ++- Issue #23539: If body is None, http.client.HTTPConnection.request now sets ++ Content-Length to 0 for PUT, POST, and PATCH headers to avoid 411 errors from ++ some web servers. ++ ++- Issue #23136: _strptime now uniformly handles all days in week 0, including ++ Dec 30 of previous year. Based on patch by Jim Carroll. ++ ++- Issue #23138: Fixed parsing cookies with absent keys or values in cookiejar. ++ Patch by Demian Brecht. ++ ++- Issue #23051: multiprocessing.Pool methods imap() and imap_unordered() now ++ handle exceptions raised by an iterator. Patch by Alon Diamant and Davin ++ Potts. ++ ++- Issue #22928: Disabled HTTP header injections in httplib. ++ Original patch by Demian Brecht. ++ ++- Issue #23615: Module tarfile is now can be reloaded with imp.reload(). ++ ++- Issue #22853: Fixed a deadlock when use multiprocessing.Queue at import time. ++ Patch by Florian Finkernagel and Davin Potts. ++ ++- Issue #23476: In the ssl module, enable OpenSSL's X509_V_FLAG_TRUSTED_FIRST ++ flag on certificate stores when it is available. ++ ++- Issue #23576: Avoid stalling in SSL reads when EOF has been reached in the ++ SSL layer but the underlying connection hasn't been closed. ++ ++- Issue #23504: Added an __all__ to the types module. ++ ++- Issue #23458: On POSIX, the file descriptor kept open by os.urandom() is now ++ set to non inheritable ++ ++- Issue #22113: struct.pack_into() now supports new buffer protocol (in ++ particular accepts writable memoryview). ++ ++- Issues #814253, #9179: Warnings now are raised when group references and ++ conditional group references are used in lookbehind assertions in regular ++ expressions. ++ ++- Issue #23215: Multibyte codecs with custom error handlers that ignores errors ++ consumed too much memory and raised SystemError or MemoryError. ++ Original patch by Aleksi Torhamo. ++ ++- Issue #5700: io.FileIO() called flush() after closing the file. ++ flush() was not called in close() if closefd=False. ++ ++- Issue #21548: Fix pydoc.synopsis() and pydoc.apropos() on modules with empty ++ docstrings. Initial patch by Yuyang Guo. ++ ++- Issue #22885: Fixed arbitrary code execution vulnerability in the dumbdbm ++ module. Original patch by Claudiu Popa. ++ ++- Issue #23481: Remove RC4 from the SSL module's default cipher list. ++ ++- Issue #21849: Fixed xmlrpclib serialization of non-ASCII unicode strings in ++ the multiprocessing module. ++ ++- Issue #21840: Fixed expanding unicode variables of form $var in ++ posixpath.expandvars(). Fixed all os.path implementations on ++ unicode-disabled builds. ++ ++- Issue #23367: Fix possible overflows in the unicodedata module. ++ ++- Issue #23363: Fix possible overflow in itertools.permutations. ++ ++- Issue #23364: Fix possible overflow in itertools.product. ++ ++- Issue #23365: Fixed possible integer overflow in ++ itertools.combinations_with_replacement. ++ ++- Issue #23366: Fixed possible integer overflow in itertools.combinations. ++ ++- Issue #23191: fnmatch functions that use caching are now threadsafe. ++ ++- Issue #18518: timeit now rejects statements which can't be compiled outside ++ a function or a loop (e.g. "return" or "break"). ++ ++- Issue #19996: Make :mod:`httplib` ignore headers with no name rather than ++ assuming the body has started. ++ ++- Issue #20188: Support Application-Layer Protocol Negotiation (ALPN) in the ssl ++ module. ++ ++- Issue #23248: Update ssl error codes from latest OpenSSL git master. ++ ++- Issue #23098: 64-bit dev_t is now supported in the os module. ++ ++- Issue #23063: In the disutils' check command, fix parsing of reST with code or ++ code-block directives. ++ ++- Issue #21356: Make ssl.RAND_egd() optional to support LibreSSL. The ++ availability of the function is checked during the compilation. Patch written ++ by Bernard Spil. ++ ++- Backport the context argument to ftplib.FTP_TLS. ++ ++- Issue #23111: Maximize compatibility in protocol versions of ftplib.FTP_TLS. ++ ++- Issue #23112: Fix SimpleHTTPServer to correctly carry the query string and ++ fragment when it redirects to add a trailing slash. ++ ++- Issue #22585: On OpenBSD 5.6 and newer, os.urandom() now calls getentropy(), ++ instead of reading /dev/urandom, to get pseudo-random bytes. ++ ++- Issue #23093: In the io, module allow more operations to work on detached ++ streams. ++ ++- Issue #23071: Added missing names to codecs.__all__. Patch by Martin Panter. ++ ++- Issue #23016: A warning no longer produces an AttributeError when sys.stderr ++ is None. ++ ++- Issue #21032. Fixed socket leak if HTTPConnection.getresponse() fails. ++ Original patch by Martin Panter. ++ ++- Issue #22609: Constructors and update methods of mapping classes in the ++ collections module now accept the self keyword argument. ++ ++Documentation ++------------- ++ ++- Issue #23006: Improve the documentation and indexing of dict.__missing__. ++ Add an entry in the language datamodel special methods section. ++ Revise and index its discussion in the stdtypes mapping/dict section. ++ Backport the code example from 3.4. ++ ++- Issue #21514: The documentation of the json module now refers to new JSON RFC ++ 7159 instead of obsoleted RFC 4627. ++ ++Tools/Demos ++----------- ++ ++- Issue #23330: h2py now supports arbitrary filenames in #include. ++ ++- Issue #6639: Module-level turtle functions no longer raise TclError after ++ closing the window. ++ ++- Issue #22314: pydoc now works when the LINES environment variable is set. ++ ++- Issue #18905: "pydoc -p 0" now outputs actually used port. Based on patch by ++ Wieland Hoffmann. ++ ++- Issue #23345: Prevent test_ssl failures with large OpenSSL patch level ++ values (like 0.9.8zc). ++ ++Tests ++----- ++ ++- Issue #23799: Added test.test_support.start_threads() for running and ++ cleaning up multiple threads. ++ ++- Issue #22390: test.regrtest now emits a warning if temporary files or ++ directories are left after running a test. ++ ++- Issue #23583: Added tests for standard IO streams in IDLE. ++ ++- Issue #23392: Added tests for marshal C API that works with FILE*. ++ ++- Issue #18982: Add tests for CLI of the calendar module. ++ ++- Issue #19949: The test_xpickle test now tests compatibility with installed ++ Python 2.7 and reports skipped tests. Based on patch by Zachary Ware. ++ ++- Issue #11578: Backported test for the timeit module. ++ ++- Issue #22943: bsddb tests are locale independend now. ++ ++IDLE ++---- ++ ++- Issue #23583: Fixed writing unicode to standard output stream in IDLE. ++ ++- Issue #20577: Configuration of the max line length for the FormatParagraph ++ extension has been moved from the General tab of the Idle preferences dialog ++ to the FormatParagraph tab of the Config Extensions dialog. ++ Patch by Tal Einat. ++ ++- Issue #16893: Update Idle doc chapter to match current Idle and add new ++ information. ++ ++- Issue #23180: Rename IDLE "Windows" menu item to "Window". ++ Patch by Al Sweigart. ++ ++Build ++----- ++ ++- Issue #15506: Use standard PKG_PROG_PKG_CONFIG autoconf macro in the configure ++ script. ++ ++- Issue #23032: Fix installer build failures on OS X 10.4 Tiger ++ by disabling assembly code in the OpenSSL build. ++ ++- Issue #23686: Update OS X 10.5 installer and Windows builds to use ++ OpenSSL 1.0.2a. ++ ++C API ++----- ++ ++- Issue #23998: PyImport_ReInitLock() now checks for lock allocation error ++ ++- Issue #22079: PyType_Ready() now checks that statically allocated type has ++ no dynamically allocated bases. ++ ++ ++What's New in Python 2.7.9? ++=========================== ++ ++*Release date: 2014-12-10* ++ ++Library ++------- ++ ++- Issue #22959: Remove the *check_hostname* parameter of ++ httplib.HTTPSConnection. The *context* parameter should be used instead. ++ ++- Issue #16043: Add a default limit for the amount of data xmlrpclib.gzip_decode ++ will return. This resolves CVE-2013-1753. ++ ++- Issue #16042: CVE-2013-1752: smtplib: Limit amount of data read by limiting ++ the call to readline(). Original patch by Christian Heimes. ++ ++- Issue #16041: In poplib, limit maximum line length read from the server to ++ prevent CVE-2013-1752. ++ ++- Issue #22960: Add a context argument to xmlrpclib.ServerProxy. ++ ++Build ++----- ++ ++- Issue #22935: Allow the ssl module to be compiled if openssl doesn't support ++ SSL 3. ++ ++- Issue #17128: Use private version of OpenSSL for 2.7.9 OS X 10.5+ installer. ++ ++ ++What's New in Python 2.7.9 release candidate 1? ++=============================================== ++ ++*Release date: 2014-11-25* ++ ++Core and Builtins ++----------------- ++ ++- Issue #21963: backout issue #1856 patch (avoid crashes and lockups when ++ daemon threads run while the interpreter is shutting down; instead, these ++ threads are now killed when they try to take the GIL), as it seems to ++ break some existing code. ++ ++- Issue #22604: Fix assertion error in debug mode when dividing a complex ++ number by (nan+0j). ++ ++- Issue #22470: Fixed integer overflow issues in "backslashreplace" and ++ "xmlcharrefreplace" error handlers. ++ ++- Issue #22526: Fix iterating through files with lines longer than 2^31 bytes. ++ ++- Issue #22519: Fix overflow checking in PyString_Repr. ++ ++- Issue #22518: Fix integer overflow issues in latin-1 encoding. ++ ++- Issue #22379: Fix empty exception message in a TypeError raised in ++ ``str.join``. ++ ++- Issue #22221: Now the source encoding declaration on the second line isn't ++ effective if the first line contains anything except a comment. ++ ++- Issue #22023: Fix ``%S``, ``%R`` and ``%V`` formats of ++ :c:func:`PyUnicode_FromFormat`. ++ ++- Issue #21591: Correctly handle qualified exec statements in tuple form by ++ moving compatibility layer from run-time to AST transformation. ++ ++Library ++------- ++ ++- Issue #22417: Verify certificates by default in httplib (PEP 476). ++ ++- Issue #22927: Allow urllib.urlopen to take a *context* parameter to control ++ SSL settings for HTTPS connections. ++ ++- Issue #22921: Allow SSLContext to take the *hostname* parameter even if ++ OpenSSL doesn't support SNI. ++ ++- Issue #9003 and #22366: httplib.HTTPSConnection, urllib2.HTTPSHandler and ++ urllib2.urlopen now take optional arguments to allow for server certificate ++ checking, as recommended in public uses of HTTPS. This backport is part of PEP ++ 467. ++ ++- Issue #12728: Different Unicode characters having the same uppercase but ++ different lowercase are now matched in case-insensitive regular expressions. ++ ++- Issue #22821: Fixed fcntl() with integer argument on 64-bit big-endian ++ platforms. ++ ++- Issue #17293: uuid.getnode() now determines MAC address on AIX using netstat. ++ Based on patch by Aivars Kalvāns. ++ ++- Issue #22769: Fixed ttk.Treeview.tag_has() when called without arguments. ++ ++- Issue #22787: Allow the keyfile argument of SSLContext.load_cert_chain to be ++ None. ++ ++- Issue #22775: Fixed unpickling of Cookie.SimpleCookie with protocol 2. ++ Patch by Tim Graham. ++ ++- Issue #22776: Brought excluded code into the scope of a try block in ++ SysLogHandler.emit(). ++ ++- Issue #17381: Fixed ranges handling in case-insensitive regular expressions. ++ ++- Issue #19329: Optimized compiling charsets in regular expressions. ++ ++- Issue #22410: Module level functions in the re module now cache compiled ++ locale-dependent regular expressions taking into account the locale. ++ ++- Issue #8876: distutils now falls back to copying files when hard linking ++ doesn't work. This allows use with special filesystems such as VirtualBox ++ shared folders. ++ ++- Issue #9351: Defaults set with set_defaults on an argparse subparser ++ are no longer ignored when also set on the parent parser. ++ ++- Issue #20421: Add a .version() method to SSL sockets exposing the actual ++ protocol version in use. ++ ++- Issue #22435: Fix a file descriptor leak when SocketServer bind fails. ++ ++- Issue #13664: GzipFile now supports non-ascii Unicode filenames. ++ ++- Issue #13096: Fixed segfault in CTypes POINTER handling of large ++ values. ++ ++- Issue #11694: Raise ConversionError in xdrlib as documented. Patch ++ by Filip Gruszczyński and Claudiu Popa. ++ ++- Issue #1686: Fix string.Template when overriding the pattern attribute. ++ ++- Issue #11866: Eliminated race condition in the computation of names ++ for new threads. ++ ++- Issue #22219: The zipfile module CLI now adds entries for directories ++ (including empty directories) in ZIP file. ++ ++- Issue #22449: In the ssl.SSLContext.load_default_certs, consult the ++ enviromental variables SSL_CERT_DIR and SSL_CERT_FILE on Windows. ++ ++- Issue #8473: doctest.testfile now uses universal newline mode to read ++ the test file. ++ ++- Issue #20076: Added non derived UTF-8 aliases to locale aliases table. ++ ++- Issue #20079: Added locales supported in glibc 2.18 to locale alias table. ++ ++- Issue #22530: Allow the ``group()`` method of regular expression match objects ++ to take a ``long`` as an index. ++ ++- Issue #22517: When a io.BufferedRWPair object is deallocated, clear its ++ weakrefs. ++ ++- Issue #10510: distutils register and upload methods now use HTML standards ++ compliant CRLF line endings. ++ ++- Issue #9850: Fixed macpath.join() for empty first component. Patch by ++ Oleg Oshmyan. ++ ++- Issue #20912: Now directories added to ZIP file have correct Unix and MS-DOS ++ directory attributes. ++ ++- Issue #21866: ZipFile.close() no longer writes ZIP64 central directory ++ records if allowZip64 is false. ++ ++- Issue #22415: Fixed debugging output of the GROUPREF_EXISTS opcode in the re ++ module. ++ ++- Issue #22423: Unhandled exception in thread no longer causes unhandled ++ AttributeError when sys.stderr is None. ++ ++- Issue #22419: Limit the length of incoming HTTP request in wsgiref server to ++ 65536 bytes and send a 414 error code for higher lengths. Patch contributed ++ by Devin Cook. ++ ++- Lax cookie parsing in http.cookies could be a security issue when combined ++ with non-standard cookie handling in some Web browsers. Reported by ++ Sergey Bobrov. ++ ++- Issue #21147: sqlite3 now raises an exception if the request contains a null ++ character instead of truncate it. Based on patch by Victor Stinner. ++ ++- Issue #21951: Fixed a crash in Tkinter on AIX when called Tcl command with ++ empty string or tuple argument. ++ ++- Issue #21951: Tkinter now most likely raises MemoryError instead of crash ++ if the memory allocation fails. ++ ++- Issue #22226: First letter no longer is stripped from the "status" key in ++ the result of Treeview.heading(). ++ ++- Issue #22051: turtledemo no longer reloads examples to re-run them. ++ Initialization of variables and gui setup should be done in main(), ++ which is called each time a demo is run, but not on import. ++ ++- Issue #21597: The separator between the turtledemo text pane and the drawing ++ canvas can now be grabbed and dragged with a mouse. The code text pane can ++ be widened to easily view or copy the full width of the text. The canvas ++ can be widened on small screens. Original patches by Jan Kanis and Lita Cho. ++ ++- Issue #18132: Turtledemo buttons no longer disappear when the window is ++ shrunk. Original patches by Jan Kanis and Lita Cho. ++ ++- Issue #22312: Fix ntpath.splitdrive IndexError. ++ ++- Issue #22216: smtplib now resets its state more completely after a quit. The ++ most obvious consequence of the previous behavior was a STARTTLS failure ++ during a connect/starttls/quit/connect/starttls sequence. ++ ++- Issue #21305: os.urandom now caches a fd to /dev/urandom. This is a PEP 466 ++ backport from Python 3. ++ ++- Issue #21307: As part of PEP 466, backport hashlib.algorithms_guaranteed and ++ hashlib.algorithms_available. ++ ++- Issue #22259: Fix segfault when attempting to fopen a file descriptor ++ corresponding to a directory. ++ ++- Issue #22236: Fixed Tkinter images copying operations in NoDefaultRoot mode. ++ ++- Issue #22191: Fixed warnings.__all__. ++ ++- Issue #21308: Backport numerous features from Python's ssl module. This is ++ part of PEP 466. ++ ++- Issue #15696: Add a __sizeof__ implementation for mmap objects on Windows. ++ ++- Issue #8797: Raise HTTPError on failed Basic Authentication immediately. ++ Initial patch by Sam Bull. ++ ++- Issue #22068: Avoided reference loops with Variables and Fonts in Tkinter. ++ ++- Issue #21448: Changed FeedParser feed() to avoid O(N**2) behavior when ++ parsing long line. Original patch by Raymond Hettinger. ++ ++- Issue #17923: glob() patterns ending with a slash no longer match non-dirs on ++ AIX. Based on patch by Delhallt. ++ ++- Issue #21975: Fixed crash when using uninitialized sqlite3.Row (in particular ++ when unpickling pickled sqlite3.Row). sqlite3.Row is now initialized in the ++ __new__() method. ++ ++- Issue #16037: HTTPMessage.readheaders() raises an HTTPException when more ++ than 100 headers are read. Patch by Jyrki Pulliainen and Daniel Eriksson. ++ ++- Issue #21580: Now Tkinter correctly handles binary "data" and "maskdata" ++ configure options of tkinter.PhotoImage. ++ ++- Issue #19612: subprocess.communicate() now also ignores EINVAL when using at ++ least two pipes. ++ ++- Fix repr(_socket.socket) on Windows 64-bit: don't fail with OverflowError ++ on closed socket. ++ ++- Issue #16133: The asynchat.async_chat.handle_read() method now ignores ++ socket.error() exceptions with blocking I/O errors: EAGAIN, EALREADY, ++ EINPROGRESS, or EWOULDBLOCK. ++ ++- Issue #21990: Clean-up unnecessary and slow inner class definition in ++ saxutils (Contributed by Alex Gaynor). ++ ++- Issue #1730136: Fix the comparison between a tkFont.Font and an object of ++ another kind. ++ ++- Issue #19884: readline: Disable the meta modifier key if stdout is not ++ a terminal to not write the ANSI sequence "\033[1034h" into stdout. This ++ sequence is used on some terminal (ex: TERM=xterm-256color") to enable ++ support of 8 bit characters. ++ ++- Issue #22017: Correct reference counting errror in the initialization of the ++ _warnings module. ++ ++- Issue #21868: Prevent turtle crash when undo buffer set to a value less ++ than one. ++ ++- Issue #21151: Fixed a segfault in the _winreg module when ``None`` is passed ++ as a ``REG_BINARY`` value to SetValueEx. Patch by John Ehresman. ++ ++- Issue #21090: io.FileIO.readall() does not ignore I/O errors anymore. Before, ++ it ignored I/O errors if at least the first C call read() succeed. ++ ++- Issue #19870: BaseCookie now parses 'secure' and 'httponly' flags. ++ Backport of issue #16611. ++ ++- Issue #21923: Prevent AttributeError in distutils.sysconfig.customize_compiler ++ due to possible uninitialized _config_vars. ++ ++- Issue #21323: Fix CGIHTTPServer to again handle scripts in CGI subdirectories, ++ broken by the fix for security issue #19435. Patch by Zach Byrne. ++ ++- Issue #22199: Make get_makefile_filename() available in Lib/sysconfig.py ++ for 2.7 to match other versions of sysconfig. ++ ++IDLE ++---- ++ ++- Issue #3068: Add Idle extension configuration dialog to Options menu. ++ Changes are written to HOME/.idlerc/config-extensions.cfg. ++ Original patch by Tal Einat. ++ ++- Issue #16233: A module browser (File : Class Browser, Alt+C) requires a ++ editor window with a filename. When Class Browser is requested otherwise, ++ from a shell, output window, or 'Untitled' editor, Idle no longer displays ++ an error box. It now pops up an Open Module box (Alt+M). If a valid name ++ is entered and a module is opened, a corresponding browser is also opened. ++ ++- Issue #4832: Save As to type Python files automatically adds .py to the ++ name you enter (even if your system does not display it). Some systems ++ automatically add .txt when type is Text files. ++ ++- Issue #21986: Code objects are not normally pickled by the pickle module. ++ To match this, they are no longer pickled when running under Idle. ++ ++- Issue #22221: IDLE now ignores the source encoding declaration on the second ++ line if the first line contains anything except a comment. ++ ++- Issue #17390: Adjust Editor window title; remove 'Python', ++ move version to end. ++ ++- Issue #14105: Idle debugger breakpoints no longer disappear ++ when inseting or deleting lines. ++ ++Extension Modules ++----------------- ++ ++- Issue #22381: Update zlib to 1.2.8. ++ ++- Issue #22176: Update the ctypes module's libffi to v3.1. This release ++ adds support for the Linux AArch64 and POWERPC ELF ABIv2 little endian ++ architectures. ++ ++Tools/Demos ++----------- ++ ++- Issue #10712: 2to3 has a new "asserts" fixer that replaces deprecated names ++ of unittest methods (e.g. failUnlessEqual -> assertEqual). ++ ++- Issue #22221: 2to3 and the findnocoding.py script now ignore the source ++ encoding declaration on the second line if the first line contains anything ++ except a comment. ++ ++- Issue #22201: Command-line interface of the zipfile module now correctly ++ extracts ZIP files with directory entries. Patch by Ryan Wilson. ++ ++Tests ++----- ++ ++- Issue #22236: Tkinter tests now don't reuse default root window. New root ++ window is created for every test class. ++ ++- Issue #18004: test_overflow in test_list by mistake consumed 40 GiB of memory ++ on 64-bit systems. ++ ++- Issue #21976: Fix test_ssl to accept LibreSSL version strings. Thanks ++ to William Orr. ++ ++- Issue #22770: Prevent some Tk segfaults on OS X when running gui tests. ++ ++Build ++----- ++ ++- Issue #20221: Removed conflicting (or circular) hypot definition when ++ compiled with VS 2010 or above. Initial patch by Tabrez Mohammed. ++ ++- Issue #16537: Check whether self.extensions is empty in setup.py. Patch by ++ Jonathan Hosmer. ++ ++- The documentation Makefile no longer automatically downloads Sphinx. Users are ++ now required to have Sphinx already installed to build the documentation. ++ ++- Issue #21958: Define HAVE_ROUND when building with Visual Studio 2013 and ++ above. Patch by Zachary Turner. ++ ++- Issue #15759: "make suspicious", "make linkcheck" and "make doctest" in Doc/ ++ now display special message when and only when there are failures. ++ ++- Issue #21166: Prevent possible segfaults and other random failures of ++ python --generate-posix-vars in pybuilddir.txt build target. ++ ++- Issue #18096: Fix library order returned by python-config. ++ ++- Issue #17219: Add library build dir for Python extension cross-builds. ++ ++- Issue #22877: PEP 477 - OS X installer now installs pip. ++ ++- Issue #22878: PEP 477 - "make install" and "make altinstall" can now install ++ or upgrade pip, using the bundled pip provided by the backported ensurepip ++ module. A configure option, --with-ensurepip[=upgrade|install|no], is ++ available to set the option for subsequent installs; the default for Python 2 ++ in "no" (do not install or upgrade pip). The option can also be set with ++ "make [alt]install ENSUREPIP=[upgrade|install|no]". ++ ++Windows ++------- ++ ++- Issue #17896: The Windows build scripts now expect external library sources ++ to be in ``PCbuild\..\externals`` rather than ``PCbuild\..\..``. ++ ++- Issue #17717: The Windows build scripts now use a copy of NASM pulled from ++ svn.python.org to build OpenSSL. ++ ++- Issue #22644: The bundled version of OpenSSL has been updated to 1.0.1j. ++ ++ ++What's New in Python 2.7.8? ++=========================== ++ ++*Release date: 2014-06-29* ++ ++Core and Builtins ++----------------- ++ ++- Issue #4346: In PyObject_CallMethod and PyObject_CallMethodObjArgs, don't ++ overwrite the error set in PyObject_GetAttr. ++ ++- Issue #21831: Avoid integer overflow when large sizes and offsets are given to ++ the buffer type. CVE-2014-7185. ++ ++- Issue #19656: Running Python with the -3 option now also warns about ++ non-ascii bytes literals. ++ ++- Issue #21642: If the conditional if-else expression, allow an integer written ++ with no space between itself and the ``else`` keyword (e.g. ``True if 42else ++ False``) to be valid syntax. ++ ++- Issue #21523: Fix over-pessimistic computation of the stack effect of ++ some opcodes in the compiler. This also fixes a quadratic compilation ++ time issue noticeable when compiling code with a large number of "and" ++ and "or" operators. ++ ++Library ++------- ++ ++- Issue #21652: Prevent mimetypes.type_map from containing unicode keys on ++ Windows. ++ ++- Issue #21729: Used the "with" statement in the dbm.dumb module to ensure ++ files closing. ++ ++- Issue #21672: Fix the behavior of ntpath.join on UNC-style paths. ++ ++- Issue #19145: The times argument for itertools.repeat now handles ++ negative values the same way for keyword arguments as it does for ++ positional arguments. ++ ++- Issue #21832: Require named tuple inputs to be exact strings. ++ ++- Issue #8343: Named group error messages in the re module did not show ++ the name of the erroneous group. ++ ++- Issue #21491: SocketServer: Fix a race condition in child processes reaping. ++ ++- Issue #21635: The difflib SequenceMatcher.get_matching_blocks() method ++ cache didn't match the actual result. The former was a list of tuples ++ and the latter was a list of named tuples. ++ ++- Issue #21722: The distutils "upload" command now exits with a non-zero ++ return code when uploading fails. Patch by Martin Dengler. ++ ++- Issue #21766: Prevent a security hole in CGIHTTPServer by URL unquoting paths ++ before checking for a CGI script at that path. ++ ++- Issue #21310: Fixed possible resource leak in failed open(). ++ ++- Issue #21304: Backport the key derivation function hashlib.pbkdf2_hmac from ++ Python 3 per PEP 466. ++ ++- Issue #11709: Fix the pydoc.help function to not fail when sys.stdin is not a ++ valid file. ++ ++- Issue #13223: Fix pydoc.writedoc so that the HTML documentation for methods ++ that use 'self' in the example code is generated correctly. ++ ++- Issue #21552: Fixed possible integer overflow of too long string lengths in ++ the tkinter module on 64-bit platforms. ++ ++- Issue #14315: The zipfile module now ignores extra fields in the central ++ directory that are too short to be parsed instead of letting a struct.unpack ++ error bubble up as this "bad data" appears in many real world zip files in ++ the wild and is ignored by other zip tools. ++ ++- Issue #21402: Tkinter.ttk now works when default root window is not set. ++ ++- Issue #10203: sqlite3.Row now truly supports sequence protocol. In particulr ++ it supports reverse() and negative indices. Original patch by Claudiu Popa. ++ ++- Issue #8743: Fix interoperability between set objects and the ++ collections.Set() abstract base class. ++ ++- Issue #21481: Argparse equality and inequality tests now return ++ NotImplemented when comparing to an unknown type. ++ ++IDLE ++---- ++ ++- Issue #21940: Add unittest for WidgetRedirector. Initial patch by Saimadhav ++ Heblikar. ++ ++- Issue #18592: Add unittest for SearchDialogBase. Patch by Phil Webster. ++ ++- Issue #21694: Add unittest for ParenMatch. Patch by Saimadhav Heblikar. ++ ++- Issue #21686: add unittest for HyperParser. Original patch by Saimadhav ++ Heblikar. ++ ++- Issue #12387: Add missing upper(lower)case versions of default Windows key ++ bindings for Idle so Caps Lock does not disable them. Patch by Roger Serwy. ++ ++- Issue #21695: Closing a Find-in-files output window while the search is ++ still in progress no longer closes Idle. ++ ++- Issue #18910: Add unittest for textView. Patch by Phil Webster. ++ ++- Issue #18292: Add unittest for AutoExpand. Patch by Saihadhav Heblikar. ++ ++- Issue #18409: Add unittest for AutoComplete. Patch by Phil Webster. ++ ++Tests ++----- ++ ++- Issue #20155: Changed HTTP method names in failing tests in test_httpservers ++ so that packet filtering software (specifically Windows Base Filtering Engine) ++ does not interfere with the transaction semantics expected by the tests. ++ ++- Issue #19493: Refactored the ctypes test package to skip tests explicitly ++ rather than silently. ++ ++- Issue #18492: All resources are now allowed when tests are not run by ++ regrtest.py. ++ ++- Issue #21605: Added tests for Tkinter images. ++ ++- Issue #21493: Added test for ntpath.expanduser(). Original patch by ++ Claudiu Popa. ++ ++- Issue #19925: Added tests for the spwd module. Original patch by Vajrasky Kok. ++ ++- Issue #13355: random.triangular() no longer fails with a ZeroDivisionError ++ when low equals high. ++ ++- Issue #21522: Added Tkinter tests for Listbox.itemconfigure(), ++ PanedWindow.paneconfigure(), and Menu.entryconfigure(). ++ ++- Issue #20635: Added tests for Tk geometry managers. ++ ++Build ++----- ++ ++- Issue #21811: Anticipated fixes to support OS X versions > 10.9. ++ ++Windows ++------- ++ ++- Issue #21671, CVE-2014-0224: The bundled version of OpenSSL has been ++ updated to 1.0.1h. ++ ++ ++What's New in Python 2.7.7 ++========================== ++ ++*Release date: 2014-05-31* ++ ++Build ++----- ++ ++- Issue #21462: Build the Windows installers with OpenSSL 1.0.1g. ++ ++- Issue #19866: Include some test data in the Windows installers, so tests don't ++ fail. ++ ++ ++What's New in Python 2.7.7 release candidate 1? ++=============================================== ++ ++*Release date: 2014-05-17* ++ ++Core and Builtins ++----------------- ++ ++- Issue #21350: Fix file.writelines() to accept arbitrary buffer objects, ++ as advertised. Patch by Brian Kearns. ++ ++- Issue #20437: Fixed 43 potential bugs when deleting objects references. ++ ++- Issue #21134: Fix segfault when str is called on an uninitialized ++ UnicodeEncodeError, UnicodeDecodeError, or UnicodeTranslateError object. ++ ++- Issue #20494: Ensure that free()d memory arenas are really released on POSIX ++ systems supporting anonymous memory mappings. Patch by Charles-François ++ Natali. ++ ++- Issue #17825: Cursor "^" is correctly positioned for SyntaxError and ++ IndentationError. ++ ++- Raise a better error when non-unicode codecs are used for a file's coding ++ cookie. ++ ++- Issue #17976: Fixed potential problem with file.write() not detecting IO error ++ by inspecting the return value of fwrite(). Based on patches by Jaakko Moisio ++ and Victor Stinner. ++ ++- Issue #14432: Generator now clears the borrowed reference to the thread ++ state. Fix a crash when a generator is created in a C thread that is ++ destroyed while the generator is still used. The issue was that a generator ++ contains a frame, and the frame kept a reference to the Python state of the ++ destroyed C thread. The crash occurs when a trace function is setup. ++ ++- Issue #19932: Fix typo in import.h, missing whitespaces in function prototypes. ++ ++- Issue #19638: Fix possible crash / undefined behaviour from huge (more than 2 ++ billion characters) input strings in _Py_dg_strtod. ++ ++- Issue #12546: Allow \x00 to be used as a fill character when using str, int, ++ float, and complex __format__ methods. ++ ++Library ++------- ++ ++- Issue #10744: Fix PEP 3118 format strings on ctypes objects with a nontrivial ++ shape. ++ ++- Issue #7776: Backport Fix ``Host:'' header and reconnection when using ++ http.client.HTTPConnection.set_tunnel() from Python 3. Patch by Nikolaus ++ Rath. ++ ++- Issue #21306: Backport hmac.compare_digest from Python 3. This is part of PEP ++ 466. ++ ++- Issue #21470: Do a better job seeding the random number generator by ++ using enough bytes to span the full state space of the Mersenne Twister. ++ ++- Issue #21469: Reduced the risk of false positives in robotparser by ++ checking to make sure that robots.txt has been read or does not exist ++ prior to returning True in can_fetch(). ++ ++- Issue #21321: itertools.islice() now releases the reference to the source ++ iterator when the slice is exhausted. Patch by Anton Afanasyev. ++ ++- Issue #9291: Do not attempt to re-encode mimetype data read from registry in ++ ANSI mode. Initial patches by Dmitry Jemerov & Vladimir Iofik. ++ ++- Issue #21349: Passing a memoryview to _winreg.SetValueEx now correctly raises ++ a TypeError where it previously crashed the interpreter. Patch by Brian Kearns ++ ++- Fix arbitrary memory access in JSONDecoder.raw_decode with a negative second ++ parameter. Bug reported by Guido Vranken. ++ ++- Issue #21172: isinstance check relaxed from dict to collections.Mapping. ++ ++- Issue #21191: In os.fdopen, never close the file descriptor when an exception ++ happens. ++ ++- Issue #21149: Improved thread-safety in logging cleanup during interpreter ++ shutdown. Thanks to Devin Jeanpierre for the patch. ++ ++- Fix possible overflow bug in strop.expandtabs. You shouldn't be using this ++ module! ++ ++- Issue #20145: `assertRaisesRegex` now raises a TypeError if the second ++ argument is not a string or compiled regex. ++ ++- Issue #21058: Fix a leak of file descriptor in tempfile.NamedTemporaryFile(), ++ close the file descriptor if os.fdopen() fails ++ ++- Issue #20283: RE pattern methods now accept the string keyword parameters ++ as documented. The pattern and source keyword parameters are left as ++ deprecated aliases. ++ ++- Issue #11599: When an external command (e.g. compiler) fails, distutils now ++ prints out the whole command line (instead of just the command name) if the ++ environment variable DISTUTILS_DEBUG is set. ++ ++- Issue #4931: distutils should not produce unhelpful "error: None" messages ++ anymore. distutils.util.grok_environment_error is kept but doc-deprecated. ++ ++- Improve the random module's default seeding to use 256 bits of entropy ++ from os.urandom(). This was already done for Python 3, mildly improving ++ security with a bigger seed space. ++ ++- Issue #15618: Make turtle.py compatible with 'from __future__ import ++ unicode_literals'. Initial patch by Juancarlo Añez. ++ ++- Issue #20501: fileinput module no longer reads whole file into memory when using ++ fileinput.hook_encoded. ++ ++- Issue #6815: os.path.expandvars() now supports non-ASCII Unicode environment ++ variables names and values. ++ ++- Issue #20635: Fixed grid_columnconfigure() and grid_rowconfigure() methods of ++ Tkinter widgets to work in wantobjects=True mode. ++ ++- Issue #17671: Fixed a crash when use non-initialized io.BufferedRWPair. ++ Based on patch by Stephen Tu. ++ ++- Issue #8478: Untokenizer.compat processes first token from iterator input. ++ Patch based on lines from Georg Brandl, Eric Snow, and Gareth Rees. ++ ++- Issue #20594: Avoid name clash with the libc function posix_close. ++ ++- Issue #19856: shutil.move() failed to move a directory to other directory ++ on Windows if source name ends with os.altsep. ++ ++- Issue #14983: email.generator now always adds a line end after each MIME ++ boundary marker, instead of doing so only when there is an epilogue. This ++ fixes an RFC compliance bug and solves an issue with signed MIME parts. ++ ++- Issue #20013: Some imap servers disconnect if the current mailbox is ++ deleted, and imaplib did not handle that case gracefully. Now it ++ handles the 'bye' correctly. ++ ++- Issue #20426: When passing the re.DEBUG flag, re.compile() displays the ++ debug output every time it is called, regardless of the compilation cache. ++ ++- Issue #20368: The null character now correctly passed from Tcl to Python (in ++ unicode strings only). Improved error handling in variables-related commands. ++ ++- Issue #20435: Fix _pyio.StringIO.getvalue() to take into account newline ++ translation settings. ++ ++- Issue #20288: fix handling of invalid numeric charrefs in HTMLParser. ++ ++- Issue #19456: ntpath.join() now joins relative paths correctly when a drive ++ is present. ++ ++- Issue #8260: The read(), readline() and readlines() methods of ++ codecs.StreamReader returned incomplete data when were called after ++ readline() or read(size). Based on patch by Amaury Forgeot d'Arc. ++ ++- Issue #20374: Fix build with GNU readline >= 6.3. ++ ++- Issue #14548: Make multiprocessing finalizers check pid before ++ running to cope with possibility of gc running just after fork. ++ (Backport from 3.x.) ++ ++- Issue #20262: Warnings are raised now when duplicate names are added in the ++ ZIP file or too long ZIP file comment is truncated. ++ ++- Issue #20270: urllib and urlparse now support empty ports. ++ ++- Issue #20243: TarFile no longer raise ReadError when opened in write mode. ++ ++- Issue #20245: The open functions in the tarfile module now correctly handle ++ empty mode. ++ ++- Issue #20086: Restored the use of locale-independent mapping instead of ++ locale-dependent str.lower() in locale.normalize(). ++ ++- Issue #20246: Fix buffer overflow in socket.recvfrom_into. ++ ++- Issue #19082: Working SimpleXMLRPCServer and xmlrpclib examples, both in ++ modules and documentation. ++ ++- Issue #13107: argparse and optparse no longer raises an exception when output ++ a help on environment with too small COLUMNS. Based on patch by ++ Elazar Gershuni. ++ ++- Issue #20207: Always disable SSLv2 except when PROTOCOL_SSLv2 is explicitly ++ asked for. ++ ++- Issue #20072: Fixed multiple errors in tkinter with wantobjects is False. ++ ++- Issue #1065986: pydoc can now handle unicode strings. ++ ++- Issue #16039: CVE-2013-1752: Change use of readline in imaplib module to ++ limit line length. Patch by Emil Lind. ++ ++- Issue #19422: Explicitly disallow non-SOCK_STREAM sockets in the ssl ++ module, rather than silently let them emit clear text data. ++ ++- Issue #20027: Fixed locale aliases for devanagari locales. ++ ++- Issue #20067: Tkinter variables now work when wantobjects is false. ++ ++- Issue #19020: Tkinter now uses splitlist() instead of split() in configure ++ methods. ++ ++- Issue #12226: HTTPS is now used by default when connecting to PyPI. ++ ++- Issue #20048: Fixed ZipExtFile.peek() when it is called on the boundary of ++ the uncompress buffer and read() goes through more than one readbuffer. ++ ++- Issue #20034: Updated alias mapping to most recent locale.alias file ++ from X.org distribution using makelocalealias.py. ++ ++- Issue #5815: Fixed support for locales with modifiers. Fixed support for ++ locale encodings with hyphens. ++ ++- Issue #20026: Fix the sqlite module to handle correctly invalid isolation ++ level (wrong type). ++ ++- Issue #18829: csv.Dialect() now checks type for delimiter, escapechar and ++ quotechar fields. Original patch by Vajrasky Kok. ++ ++- Issue #19855: uuid.getnode() on Unix now looks on the PATH for the ++ executables used to find the mac address, with /sbin and /usr/sbin as ++ fallbacks. ++ ++- Issue #20007: HTTPResponse.read(0) no more prematurely closes connection. ++ Original patch by Simon Sapin. ++ ++- Issue #19912: Fixed numerous bugs in ntpath.splitunc(). ++ ++- Issue #19623: Fixed writing to unseekable files in the aifc module. ++ Fixed writing 'ulaw' (lower case) compressed AIFC files. ++ ++- Issue #17919: select.poll.register() again works with poll.POLLNVAL on AIX. ++ Fixed integer overflow in the eventmask parameter. ++ ++- Issue #17200: telnetlib's read_until and expect timeout was broken by the ++ fix to Issue #14635 in Python 2.7.4 to be interpreted as milliseconds ++ instead of seconds when the platform supports select.poll (ie: everywhere). ++ It is now treated as seconds once again. ++ ++- Issue #19099: The struct module now supports Unicode format strings. ++ ++- Issue #19878: Fix segfault in bz2 module after calling __init__ twice with ++ non-existent filename. Initial patch by Vajrasky Kok. ++ ++- Issue #16373: Prevent infinite recursion for ABC Set class comparisons. ++ ++- Issue #19138: doctest's IGNORE_EXCEPTION_DETAIL now allows a match when ++ no exception detail exists (no colon following the exception's name, or ++ a colon does follow but no text follows the colon). ++ ++- Issue #16231: Fixed pickle.Pickler to only fallback to its default pickling ++ behaviour when Pickler.persistent_id returns None, but not for any other ++ false values. This allows false values other than None to be used as ++ persistent IDs. This behaviour is consistent with cPickle. ++ ++- Issue #11508: Fixed uuid.getnode() and uuid.uuid1() on environment with ++ virtual interface. Original patch by Kent Frazier. ++ ++- Issue #11489: JSON decoder now accepts lone surrogates. ++ ++- Fix test.test_support.bind_port() to not cause an error when Python was ++ compiled on a system with SO_REUSEPORT defined in the headers but run on ++ a system with an OS kernel that does not support that new socket option. ++ ++- Issue #19633: Fixed writing not compressed 16- and 32-bit wave files on ++ big-endian platforms. ++ ++- Issue #19449: in csv's writerow, handle non-string keys when generating the ++ error message that certain keys are not in the 'fieldnames' list. ++ ++- Issue #12853: Fix NameError in distutils.command.upload. ++ ++- Issue #19523: Closed FileHandler leak which occurred when delay was set. ++ ++- Issue #1575020: Fixed support of 24-bit wave files on big-endian platforms. ++ ++- Issue #19480: HTMLParser now accepts all valid start-tag names as defined ++ by the HTML5 standard. ++ ++- Issue #17827: Add the missing documentation for ``codecs.encode`` and ++ ``codecs.decode``. ++ ++- Issue #6157: Fixed Tkinter.Text.debug(). Original patch by Guilherme Polo. ++ ++- Issue #6160: The bbox() method of tkinter.Spinbox now returns a tuple of ++ integers instead of a string. Based on patch by Guilherme Polo. ++ ++- Issue #19286: Directories in ``package_data`` are no longer added to ++ the filelist, preventing failure outlined in the ticket. ++ ++- Issue #6676: Ensure a meaningful exception is raised when attempting ++ to parse more than one XML document per pyexpat xmlparser instance. ++ (Original patches by Hirokazu Yamamoto and Amaury Forgeot d'Arc, with ++ suggested wording by David Gutteridge) ++ ++- Issue #21311: Avoid exception in _osx_support with non-standard compiler ++ configurations. Patch by John Szakmeister. ++ ++Tools/Demos ++----------- ++ ++- Issue #3561: The Windows installer now has an option, off by default, for ++ placing the Python installation into the system "Path" environment variable. ++ This was backported from Python 3.3. ++ ++- Add support for ``yield from`` to 2to3. ++ ++- Add support for the PEP 465 matrix multiplication operator to 2to3. ++ ++- Issue #19936: Added executable bits or shebang lines to Python scripts which ++ requires them. Disable executable bits and shebang lines in test and ++ benchmark files in order to prevent using a random system python, and in ++ source files of modules which don't provide command line interface. ++ ++IDLE ++---- ++ ++- Issue #18104: Add idlelib/idle_test/htest.py with a few sample tests to begin ++ consolidating and improving human-validated tests of Idle. Change other files ++ as needed to work with htest. Running the module as __main__ runs all tests. ++ ++- Issue #21139: Change default paragraph width to 72, the PEP 8 recommendation. ++ ++- Issue #21284: Paragraph reformat test passes after user changes reformat width. ++ ++- Issue #20406: Use Python application icons for Idle window title bars. ++ Patch mostly by Serhiy Storchaka. ++ ++- Issue #21029: Occurrences of "print" are now consistently colored as ++ being a keyword (the colorizer doesn't know if print functions are ++ enabled in the source). ++ ++- Issue #17721: Remove non-functional configuration dialog help button until we ++ make it actually gives some help when clicked. Patch by Guilherme Simões. ++ ++- Issue #17390: Add Python version to Idle editor window title bar. ++ Original patches by Edmond Burnett and Kent Johnson. ++ ++- Issue #20058: sys.stdin.readline() in IDLE now always returns only one line. ++ ++- Issue #19481: print() of unicode, str or bytearray subclass instance in IDLE ++ no more hangs. ++ ++- Issue #18270: Prevent possible IDLE AttributeError on OS X when no initial ++ shell window is present. ++ ++- Issue #17654: Ensure IDLE menus are customized properly on OS X for ++ non-framework builds and for all variants of Tk. ++ ++Tests ++----- ++ ++- Issue #17752: Fix distutils tests when run from the installed location. ++ ++- Issue #18604: Consolidated checks for GUI availability. All platforms now ++ at least check whether Tk can be instantiated when the GUI resource is ++ requested. ++ ++- Issue #20946: Correct alignment assumptions of some ctypes tests. ++ ++- Issue #20743: Fix a reference leak in test_tcl. ++ ++- Issue #20510: Rewrote test_exit in test_sys to match existing comments, ++ use modern unittest features, and use helpers from test.script_helper ++ instead of using subprocess directly. Initial patch by Gareth Rees. ++ ++- Issue #20532: Tests which use _testcapi now are marked as CPython only. ++ ++- Issue #19920: Added tests for TarFile.list(). Based on patch by Vajrasky Kok. ++ ++- Issue #19990: Added tests for the imghdr module. Based on patch by ++ Claudiu Popa. ++ ++- Issue #19804: The test_find_mac test in test_uuid is now skipped if the ++ ifconfig executable is not available. ++ ++- Issue #19886: Use better estimated memory requirements for bigmem tests. ++ ++- Backported tests for Tkinter variables. ++ ++- Issue #19320: test_tcl no longer fails when wantobjects is false. ++ ++- Issue #19683: Removed empty tests from test_minidom. Initial patch by ++ Ajitesh Gupta. ++ ++- Issue #19928: Implemented a test for repr() of cell objects. ++ ++- Issue #19595, #19987: Re-enabled a long-disabled test in test_winsound. ++ ++- Issue #19588: Fixed tests in test_random that were silently skipped most ++ of the time. Patch by Julian Gindi. ++ ++- Issue #17883: Tweak test_tcl testLoadWithUNC to skip the test in the ++ event of a permission error on Windows and to properly report other ++ skip conditions. ++ ++- Issue #17883: Backported _is_gui_available() in test.test_support to ++ avoid hanging Windows buildbots on test_ttk_guionly. ++ ++- Issue #18702, #19572: All skipped tests now reported as skipped. ++ ++- Issue #19085: Added basic tests for all tkinter widget options. ++ ++- Issue #20605: Make test_socket getaddrinfo OS X segfault test more robust. ++ ++- Issue #20939: Avoid various network test failures due to new ++ redirect of http://www.python.org/ to https://www.python.org: ++ use http://www.example.com instead. ++ ++- Issue #21093: Prevent failures of ctypes test_macholib on OS X if a ++ copy of libz exists in $HOME/lib or /usr/local/lib. ++ ++Build ++----- ++ ++- Issue #21285: Refactor and fix curses configure check to always search ++ in a ncursesw directory. ++ ++Documentation ++------------- ++ ++- Issue #20255: Update the about and bugs pages. ++ ++- Issue #18840: Introduce the json module in the tutorial, and de-emphasize ++ the pickle module. ++ ++- Issue #19795: Improved markup of True/False constants. ++ ++Windows ++------- ++ ++- Issue #21303, #20565: Updated the version of Tcl/Tk included in the ++ installer from 8.5.2 to 8.5.15. ++ ++Mac OS X ++-------- ++ ++- As of 2.7.8, the 32-bit-only installer will support OS X 10.5 ++ and later systems as is currently done for Python 3.x installers. ++ For 2.7.7 only, we will provide three installers: ++ the legacy deprecated 10.3+ 32-bit-only format; ++ the newer 10.5+ 32-bit-only format; ++ and the unchanged 10.6+ 64-/32-bit format. ++ Although binary installers will no longer be available from ++ python.org as of 2.7.8, it will still be possible to build from ++ source on 10.3.9 and 10.4 systems if necessary. ++ See Mac/BuildScript/README.txt for more information. ++ ++ ++Whats' New in Python 2.7.6? ++=========================== ++ ++*Release date: 2013-11-10* ++ ++Library ++------- ++ ++- Issue #19435: Fix directory traversal attack on CGIHttpRequestHandler. ++ ++IDLE ++---- ++ ++- Issue #19426: Fixed the opening of Python source file with specified encoding. ++ ++Tests ++----- ++ ++- Issue #19457: Fixed xmlcharrefreplace tests on wide build when tests are ++ loaded from .py[co] files. ++ ++Build ++----- ++ ++- Issue #15663: Revert OS X installer built-in Tcl/Tk support for 2.7.6. ++ Some third-party projects, such as Matplotlib and PIL/Pillow, ++ depended on being able to build with Tcl and Tk frameworks in ++ /Library/Frameworks. ++ ++ ++What's New in Python 2.7.6 release candidate 1? ++=============================================== ++ ++*Release date: 2013-10-26* ++ ++Core and Builtins ++----------------- ++ ++- Issue #18603: Ensure that PyOS_mystricmp and PyOS_mystrnicmp are in the ++ Python executable and not removed by the linker's optimizer. ++ ++- Issue #19279: UTF-7 decoder no more produces illegal unicode strings. ++ ++- Issue #18739: Fix an inconsistency between math.log(n) and math.log(long(n)); ++ the results could be off from one another by a ulp or two. ++ ++- Issue #13461: Fix a crash in the "replace" error handler on 64-bit platforms. ++ Patch by Yogesh Chaudhari. ++ ++- Issue #15866: The xmlcharrefreplace error handler no more produces two XML ++ entities for a non-BMP character on narrow build. ++ ++- Issue #18184: PyUnicode_FromFormat() and PyUnicode_FromFormatV() now raise ++ OverflowError when an argument of %c format is out of range. ++ ++- Issue #18137: Detect integer overflow on precision in float.__format__() ++ and complex.__format__(). ++ ++- Issue #18038: SyntaxError raised during compilation sources with illegal ++ encoding now always contains an encoding name. ++ ++- Issue #18019: Fix crash in the repr of dictionaries containing their own ++ views. ++ ++- Issue #18427: str.replace could crash the interpreter with huge strings. ++ ++Library ++------- ++ ++- Issue #19393: Fix symtable.symtable function to not be confused when there are ++ functions or classes named "top". ++ ++- Issue #19327: Fixed the working of regular expressions with too big charset. ++ ++- Issue #19350: Increasing the test coverage of macurl2path. Patch by Colin ++ Williams. ++ ++- Issue #19352: Fix unittest discovery when a module can be reached ++ through several paths (e.g. under Debian/Ubuntu with virtualenv). ++ ++- Issue #15207: Fix mimetypes to read from correct part of Windows registry ++ Original patch by Dave Chambers ++ ++- Issue #8964: fix platform._sys_version to handle IronPython 2.6+. ++ Patch by Martin Matusiak. ++ ++- Issue #16038: CVE-2013-1752: ftplib: Limit amount of data read by ++ limiting the call to readline(). Original patch by Michał ++ Jastrzębski and Giampaolo Rodola. ++ ++- Issue #19276: Fixed the wave module on 64-bit big-endian platforms. ++ ++- Issue #18458: Prevent crashes with newer versions of libedit. Its readline ++ emulation has changed from 0-based indexing to 1-based like gnu readline. ++ Original patch by Ronald Oussoren. ++ ++- Issue #18919: If the close() method of a writer in the sunau or wave module ++ failed, second invocation of close() and destructor no more raise an ++ exception. Second invocation of close() on sunau writer now has no effects. ++ The aifc module now accepts lower case of names of the 'ulaw' and 'alaw' ++ codecs. ++ ++- Issue #19131: The aifc module now correctly reads and writes sampwidth of ++ compressed streams. ++ ++- Issue #19158: A rare race in BoundedSemaphore could allow .release() too ++ often. ++ ++- Issue #18037: 2to3 now escapes '\u' and '\U' in native strings. ++ ++- Issue #19137: The pprint module now correctly formats empty set and frozenset ++ and instances of set and frozenset subclasses. ++ ++- Issue #16040: CVE-2013-1752: nntplib: Limit maximum line lengths to 2048 to ++ prevent readline() calls from consuming too much memory. Patch by Jyrki ++ Pulliainen. ++ ++- Issue #12641: Avoid passing "-mno-cygwin" to the mingw32 compiler, except ++ when necessary. Patch by Oscar Benjamin. ++ ++- Properly initialize all fields of a SSL object after allocation. ++ ++- Issue #4366: Fix building extensions on all platforms when --enable-shared ++ is used. ++ ++- Issue #18950: Fix miscellaneous bugs in the sunau module. ++ Au_read.readframes() now updates current file position and reads correct ++ number of frames from multichannel stream. Au_write.writeframesraw() now ++ correctly updates current file position. Au_read and Au_write now correctly ++ work with file object if start file position is not a zero. ++ ++- Issue #18050: Fixed an incompatibility of the re module with Python 2.7.3 ++ and older binaries. ++ ++- Issue #19037: The mailbox module now makes all changes to maildir files ++ before moving them into place, to avoid race conditions with other programs ++ that may be accessing the maildir directory. ++ ++- Issue #14984: On POSIX systems, when netrc is called without a filename ++ argument (and therefore is reading the user's $HOME/.netrc file), it now ++ enforces the same security rules as typical ftp clients: the .netrc file must ++ be owned by the user that owns the process and must not be readable by any ++ other user. ++ ++- Issue #17324: Fix http.server's request handling case on trailing '/'. Patch ++ contributed by Vajrasky Kok. ++ ++- Issue #19018: The heapq.merge() function no longer suppresses IndexError ++ in the underlying iterables. ++ ++- Issue #18784: The uuid module no more attempts to load libc via ctypes.CDLL, ++ if all necessary functions are already found in libuuid. ++ Patch by Evgeny Sologubov. ++ ++- Issue #14971: unittest test discovery no longer gets confused when a function ++ has a different __name__ than its name in the TestCase class dictionary. ++ ++- Issue #18672: Fixed format specifiers for Py_ssize_t in debugging output in ++ the _sre module. ++ ++- Issue #18830: inspect.getclasstree() no more produces duplicated entries even ++ when input list contains duplicates. ++ ++- Issue #18909: Fix _tkinter.tkapp.interpaddr() on Windows 64-bit, don't cast ++ 64-bit pointer to long (32 bits). ++ ++- Issue #18876: The FileIO.mode attribute now better reflects the actual mode ++ under which the file was opened. Patch by Erik Bray. ++ ++- Issue #18851: Avoid a double close of subprocess pipes when the child ++ process fails starting. ++ ++- Issue #18418: After fork(), reinit all threads states, not only active ones. ++ Patch by A. Jesse Jiryu Davis. ++ ++- Issue #11973: Fix a problem in kevent. The flags and fflags fields are now ++ properly handled as unsigned. ++ ++- Issue #16809: Fixed some tkinter incompabilities with Tcl/Tk 8.6. ++ ++- Issue #16809: Tkinter's splitlist() and split() methods now accept Tcl_Obj ++ argument. ++ ++- Issue #17119: Fixed integer overflows when processing large Unicode strings ++ and tuples in the tkinter module. ++ ++- Issue #15233: Python now guarantees that callables registered with the atexit ++ module will be called in a deterministic order. ++ ++- Issue #18747: Re-seed OpenSSL's pseudo-random number generator after fork. ++ A pthread_atfork() parent handler is used to seed the PRNG with pid, time ++ and some stack data. ++ ++- Issue #8865: Concurrent invocation of select.poll.poll() now raises a ++ RuntimeError exception. Patch by Christian Schubert. ++ ++- Issue #13461: Fix a crash in the TextIOWrapper.tell method on 64-bit ++ platforms. Patch by Yogesh Chaudhari. ++ ++- Issue #18777: The ssl module now uses the new CRYPTO_THREADID API of ++ OpenSSL 1.0.0+ instead of the deprecated CRYPTO id callback function. ++ ++- Issue #18768: Correct doc string of RAND_edg(). Patch by Vajrasky Kok. ++ ++- Issue #18178: Fix ctypes on BSD. dlmalloc.c was compiled twice which broke ++ malloc weak symbols. ++ ++- Issue #18709: Fix CVE-2013-4238. The SSL module now handles NULL bytes ++ inside subjectAltName correctly. Formerly the module has used OpenSSL's ++ GENERAL_NAME_print() function to get the string represention of ASN.1 ++ strings for ``rfc822Name`` (email), ``dNSName`` (DNS) and ++ ``uniformResourceIdentifier`` (URI). ++ ++- Issue #18756: Improve error reporting in os.urandom() when the failure ++ is due to something else than /dev/urandom not existing (for example, ++ exhausting the file descriptor limit). ++ ++- Fix tkinter regression introduced by the security fix in issue #16248. ++ ++- Issue #18676: Change 'positive' to 'non-negative' in queue.py put and get ++ docstrings and ValueError messages. Patch by Zhongyue Luo ++ ++- Issue #17998: Fix an internal error in regular expression engine. ++ ++- Issue #17557: Fix os.getgroups() to work with the modified behavior of ++ getgroups(2) on OS X 10.8. Original patch by Mateusz Lenik. ++ ++- Issue #18455: multiprocessing should not retry connect() with same socket. ++ ++- Issue #18513: Fix behaviour of cmath.rect w.r.t. signed zeros on OS X 10.8 + ++ gcc. ++ ++- Issue #18101: Tcl.split() now process Unicode strings nested in a tuple as it ++ do with byte strings. ++ ++- Issue #18347: ElementTree's html serializer now preserves the case of ++ closing tags. ++ ++- Issue #17261: Ensure multiprocessing's proxies use proper address. ++ ++- Issue #17097: Make multiprocessing ignore EINTR. ++ ++- Issue #18155: The csv module now correctly handles csv files that use ++ a delimiter character that has a special meaning in regexes, instead of ++ throwing an exception. ++ ++- Issue #18135: ssl.SSLSocket.write() now raises an OverflowError if the input ++ string in longer than 2 gigabytes. The ssl module does not support partial ++ write. ++ ++- Issue #18167: cgi.FieldStorage no longer fails to handle multipart/form-data ++ when \r\n appears at end of 65535 bytes without other newlines. ++ ++- Issue #17403: urllib.parse.robotparser normalizes the urls before adding to ++ ruleline. This helps in handling certain types invalid urls in a conservative ++ manner. Patch contributed by Mher Movsisyan. ++ ++- Implement inequality on weakref.WeakSet. ++ ++- Issue #17981: Closed socket on error in SysLogHandler. ++ ++- Issue #18015: Fix unpickling of 2.7.3 and 2.7.4 namedtuples. ++ ++- Issue #17754: Make ctypes.util.find_library() independent of the locale. ++ ++- Fix typos in the multiprocessing module. ++ ++- Issue #17269: Workaround for socket.getaddrinfo crash on MacOS X ++ with port None or "0" and flags AI_NUMERICSERV. ++ ++- Issue #18080: When building a C extension module on OS X, if the compiler ++ is overriden with the CC environment variable, use the new compiler as ++ the default for linking if LDSHARED is not also overriden. This restores ++ Distutils behavior introduced in 2.7.3 and inadvertently dropped in 2.7.4. ++ ++- Issue #18071: C extension module builds on OS X could fail with TypeError ++ if the Xcode command line tools were not installed. ++ ++- Issue #18113: Fixed a refcount leak in the curses.panel module's ++ set_userptr() method. Reported by Atsuo Ishimoto. ++ ++- Issue #18849: Fixed a Windows-specific tempfile bug where collision with an ++ existing directory caused mkstemp and related APIs to fail instead of ++ retrying. Report and fix by Vlad Shcherbina. ++ ++- Issue #19400: Prevent extension module build failures with Xcode 5 on OS X ++ 10.8+ when using a universal Python that included a PPC architecture, ++ such as with a python.org 32-bit-only binary installer. ++ ++Tools/Demos ++----------- ++ ++- Issue #18873: 2to3 and the findnocoding.py script now detect Python source ++ code encoding only in comment lines. ++ ++- Issue #18817: Fix a resource warning in Lib/aifc.py demo. ++ ++- Issue #18439: Make patchcheck work on Windows for ACKS, NEWS. ++ ++- Issue #18448: Fix a typo in Demo/newmetaclasses/Eiffel.py. ++ ++- Issue #12990: The "Python Launcher" on OSX could not launch python scripts ++ that have paths that include wide characters. ++ ++Build ++----- ++ ++- Issue #16067: Add description into MSI file to replace installer's temporary name. ++ ++- Issue #18256: Compilation fix for recent AIX releases. Patch by ++ David Edelsohn. ++ ++- Issue #18098: The deprecated OS X Build Applet.app fails to build on ++ OS X 10.8 systems because the Apple-deprecated QuickDraw headers have ++ been removed from Xcode 4. Skip building it in this case. ++ ++- Issue #1584: Provide options to override default search paths for ++ Tcl and Tk when building _tkinter. ++ ++- Issue #15663: Tcl/Tk 8.5.15 is now included with the OS X 10.6+ ++ 64-bit/32-bit installer for 10.6+. It is no longer necessary ++ to install a third-party version of Tcl/Tk 8.5 to work around the ++ problems in the Apple-supplied Tcl/Tk 8.5 shipped in OS X 10.6 ++ and later releases. ++ ++- Issue #19019: Change the OS X installer build script to use CFLAGS instead ++ of OPT for special build options. By setting OPT, some compiler-specific ++ options like -fwrapv were overridden and thus not used, which could result ++ in broken interpreters when building with clang. ++ ++IDLE ++---- ++ ++- Issue #18873: IDLE now detects Python source code encoding only in comment ++ lines. ++ ++- Issue #18988: The "Tab" key now works when a word is already autocompleted. ++ ++- Issue #18489: Add tests for SearchEngine. Original patch by Phil Webster. ++ ++- Issue #18429: Format / Format Paragraph, now works when comment blocks ++ are selected. As with text blocks, this works best when the selection ++ only includes complete lines. ++ ++- Issue #18226: Add docstrings and unittests for FormatParagraph.py. ++ Original patches by Todd Rovito and Phil Webster. ++ ++- Issue #18279: Format - Strip trailing whitespace no longer marks a file as ++ changed when it has not been changed. This fix followed the addition of a ++ test file originally written by Phil Webster (the issue's main goal). ++ ++- Issue #18539: Calltips now work for float default arguments. ++ ++- Issue #7136: In the Idle File menu, "New Window" is renamed "New File". ++ Patch by Tal Einat, Roget Serwy, and Todd Rovito. ++ ++- Issue #8515: Set __file__ when run file in IDLE. ++ Initial patch by Bruce Frederiksen. ++ ++- Issue #5492: Avoid traceback when exiting IDLE caused by a race condition. ++ ++- Issue #17511: Keep IDLE find dialog open after clicking "Find Next". ++ Original patch by Sarah K. ++ ++- Issue #15392: Create a unittest framework for IDLE. ++ Preliminary patch by Rajagopalasarma Jayakrishnan ++ See Lib/idlelib/idle_test/README.txt for how to run Idle tests. ++ ++- Issue #14146: Highlight source line while debugging on Windows. ++ ++- Issue #17532: Always include Options menu for IDLE on OS X. ++ Patch by Guilherme Simões. ++ ++Tests ++----- ++ ++- Issue #18919: Added tests for the sunau module. Unified and extended tests ++ for audio modules: aifc, sunau and wave. ++ ++- Issue #18792: Use "127.0.0.1" or "::1" instead of "localhost" as much as ++ possible, since "localhost" goes through a DNS lookup under recent Windows ++ versions. ++ ++- Issue #18357: add tests for dictview set difference. ++ Patch by Fraser Tweedale. ++ ++- Issue #11185: Fix test_wait4 under AIX. Patch by Sébastien Sablé. ++ ++- Issue #18094: test_uuid no more reports skipped tests as passed. ++ ++- Issue #11995: test_pydoc doesn't import all sys.path modules anymore. ++ ++Documentation ++------------- ++ ++- Issue #18758: Fixed and improved cross-references. ++ ++- Issue #18718: datetime documentation contradictory on leap second support. ++ ++- Issue #17701: Improving strftime documentation. ++ ++- Issue #17844: Refactor a documentation of Python specific encodings. ++ Add links to encoders and decoders for binary-to-binary codecs. ++ ++ + What's New in Python 2.7.5? + =========================== + +diff --git a/README b/README +index 014028d..691b818 100644 +--- a/README ++++ b/README +@@ -166,6 +166,11 @@ rebuilt. In this case, you may have to run make again to correctly + build your desired target. The interpreter executable is built in the + top level directory. + ++If you need an optimized version of Python, you type "make profile-opt" ++in the top level directory. This will rebuild the interpreter executable ++using Profile Guided Optimization (PGO). For more details, see the ++section below. ++ + Once you have built a Python interpreter, see the subsections below on + testing and installation. If you run into trouble, see the next + section. +@@ -178,6 +183,30 @@ guidance of the setup.py script, which is run by Make after the + interpreter has been built. + + ++Profile Guided Optimization ++--------------------------- ++ ++PGO takes advantage of recent versions of the GCC or Clang compilers. ++If ran, the "profile-opt" rule will do several steps. ++ ++First, the entire Python directory is cleaned of temporary files that ++may 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 supressed. ++ ++Finally, the last step is to rebuild the interpreter, using the information ++collected in the previous one. The end result will be a the Python binary ++that is optimized and suitable for distribution or production installation. ++ ++ + Troubleshooting + --------------- + +diff --git a/configure b/configure +index 60a3335..aeb8570 100755 +--- a/configure ++++ b/configure +@@ -658,6 +658,20 @@ LDSHARED + SO + LIBTOOL_CRUFT + OTHER_LIBTOOL_OPT ++LLVM_PROF_FOUND ++target_os ++target_vendor ++target_cpu ++target ++LLVM_PROFDATA ++LLVM_PROF_ERR ++LLVM_PROF_FILE ++LLVM_PROF_MERGER ++PGO_PROF_USE_FLAG ++PGO_PROF_GEN_FLAG ++LTOFLAGS ++DEF_MAKE_RULE ++DEF_MAKE_ALL_RULE + UNIVERSAL_ARCH_FLAGS + BASECFLAGS + OPT +@@ -786,6 +800,8 @@ with_suffix + enable_shared + enable_profiling + with_pydebug ++enable_optimizations ++with_lto + enable_toolbox_glue + with_libs + with_system_expat +@@ -1421,6 +1437,7 @@ _ACEOF + System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] ++ --target=TARGET configure for building compilers for TARGET [HOST] + _ACEOF + fi + +@@ -1440,6 +1457,8 @@ Optional Features: + Build (MacOSX|Darwin) framework + --enable-shared disable/enable building shared python library + --enable-profiling enable C-level code profiling ++ --enable-optimizations Enable expensive optimizations (PGO, maybe LTO, ++ etc). Disabled by default. + --enable-toolbox-glue disable/enable MacOSX glue code for extensions + --enable-ipv6 Enable ipv6 (with ipv4) support + --disable-ipv6 Disable ipv6 support +@@ -1463,6 +1482,8 @@ Optional Packages: + compiler + --with-suffix=.exe set executable suffix + --with-pydebug build with Py_DEBUG defined ++ --with-lto Enable Link Time Optimization in PGO builds. ++ Disabled by default. + --with-libs='lib1 ...' link against additional libs + --with-system-expat build pyexpat module using an installed expat + library +@@ -6307,6 +6328,308 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$save_CFLAGS + fi + ++ ++# Enable optimization flags ++ ++ ++Py_OPT='false' ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-optimizations" >&5 ++$as_echo_n "checking for --enable-optimizations... " >&6; } ++# Check whether --enable-optimizations was given. ++if test "${enable_optimizations+set}" = set; then : ++ enableval=$enable_optimizations; ++if test "$enableval" != no ++then ++ Py_OPT='true' ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; }; ++else ++ Py_OPT='false' ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; }; ++fi ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++if test "$Py_OPT" = 'true' ; then ++ case $ac_sys_system in ++ Darwin*) ++ # At least on macOS El Capitan, LTO does not work with PGO. ++ Py_LTO='false' ++ ;; ++ esac ++ Py_LTO='true' ++ DEF_MAKE_ALL_RULE="profile-opt" ++ REQUIRE_PGO="yes" ++ DEF_MAKE_RULE="build_all" ++else ++ DEF_MAKE_ALL_RULE="build_all" ++ REQUIRE_PGO="no" ++ DEF_MAKE_RULE="all" ++fi ++ ++ ++# Enable LTO flags ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-lto" >&5 ++$as_echo_n "checking for --with-lto... " >&6; } ++ ++# Check whether --with-lto was given. ++if test "${with_lto+set}" = set; then : ++ withval=$with_lto; ++if test "$withval" != no ++then ++ Py_LTO='true' ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; }; ++else ++ Py_LTO='false' ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; }; ++fi ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++if test "$Py_LTO" = 'true' ; then ++ case $CC in ++ *clang*) ++ # Any changes made here should be reflected in the GCC+Darwin case below ++ LTOFLAGS="-flto" ++ ;; ++ *gcc*) ++ case $ac_sys_system in ++ Darwin*) ++ LTOFLAGS="-flto" ++ ;; ++ *) ++ LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none" ++ ;; ++ esac ++ ;; ++ esac ++fi ++ ++ ++# Enable PGO flags. ++ ++# Make this work on systems where llvm tools are not installed with their ++# normal names in the default $PATH (ie: Ubuntu). They exist under the ++# non-suffixed name in their versioned llvm directory. ++llvm_bin_dir='' ++llvm_path="${PATH}" ++if test "${CC}" = "clang" ++then ++ clang_bin=`which clang` ++ # Some systems install clang elsewhere as a symlink to the real path ++ # which is where the related llvm tools are located. ++ if test -L "${clang_bin}" ++ then ++ clang_dir=`dirname "${clang_bin}"` ++ clang_bin=`readlink "${clang_bin}"` ++ llvm_bin_dir="${clang_dir}/"`dirname "${clang_bin}"` ++ llvm_path="${llvm_path}${PATH_SEPARATOR}${llvm_bin_dir}" ++ fi ++fi ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 ++$as_echo_n "checking target system type... " >&6; } ++if ${ac_cv_target+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test "x$target_alias" = x; then ++ ac_cv_target=$ac_cv_host ++else ++ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || ++ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 ++fi ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 ++$as_echo "$ac_cv_target" >&6; } ++case $ac_cv_target in ++*-*-*) ;; ++*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; ++esac ++target=$ac_cv_target ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_target ++shift ++target_cpu=$1 ++target_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++target_os=$* ++IFS=$ac_save_IFS ++case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac ++ ++ ++# The aliases save the names the user supplied, while $host etc. ++# will get canonicalized. ++test -n "$target_alias" && ++ test "$program_prefix$program_suffix$program_transform_name" = \ ++ NONENONEs,x,x, && ++ program_prefix=${target_alias}- ++# Extract the first word of "$target_alias-llvm-profdata", so it can be a program name with args. ++set dummy $target_alias-llvm-profdata; ac_word=$2 ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_path_LLVM_PROFDATA+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ case $LLVM_PROFDATA in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_LLVM_PROFDATA="$LLVM_PROFDATA" # Let the user override the test with a path. ++ ;; ++ *) ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in ${llvm_path} ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_path_LLVM_PROFDATA="$as_dir/$ac_word$ac_exec_ext" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ;; ++esac ++fi ++LLVM_PROFDATA=$ac_cv_path_LLVM_PROFDATA ++if test -n "$LLVM_PROFDATA"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LLVM_PROFDATA" >&5 ++$as_echo "$LLVM_PROFDATA" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++if test -z "$ac_cv_path_LLVM_PROFDATA"; then ++ if test "$build" = "$target"; then ++ ac_pt_LLVM_PROFDATA=$LLVM_PROFDATA ++ # Extract the first word of "llvm-profdata", so it can be a program name with args. ++set dummy llvm-profdata; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_path_ac_pt_LLVM_PROFDATA+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ case $ac_pt_LLVM_PROFDATA in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_ac_pt_LLVM_PROFDATA="$ac_pt_LLVM_PROFDATA" # Let the user override the test with a path. ++ ;; ++ *) ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in ${llvm_path} ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_path_ac_pt_LLVM_PROFDATA="$as_dir/$ac_word$ac_exec_ext" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++ test -z "$ac_cv_path_ac_pt_LLVM_PROFDATA" && ac_cv_path_ac_pt_LLVM_PROFDATA="''" ++ ;; ++esac ++fi ++ac_pt_LLVM_PROFDATA=$ac_cv_path_ac_pt_LLVM_PROFDATA ++if test -n "$ac_pt_LLVM_PROFDATA"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LLVM_PROFDATA" >&5 ++$as_echo "$ac_pt_LLVM_PROFDATA" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ LLVM_PROFDATA=$ac_pt_LLVM_PROFDATA ++ else ++ LLVM_PROFDATA="''" ++ fi ++else ++ LLVM_PROFDATA="$ac_cv_path_LLVM_PROFDATA" ++fi ++ ++if test -n "${LLVM_PROFDATA}" -a -x "${LLVM_PROFDATA}" ++then ++ LLVM_PROF_FOUND="found" ++else ++ LLVM_PROF_FOUND="not-found" ++fi ++if test "$ac_sys_system" = "Darwin" -a "${LLVM_PROF_FOUND}" = "not-found" ++then ++ found_llvm_profdata=`/usr/bin/xcrun -find llvm-profdata 2>/dev/null` ++ if test -n "${found_llvm_profdata}" ++ then ++ # llvm-profdata isn't directly in $PATH in some cases. ++ # https://apple.stackexchange.com/questions/197053/ ++ LLVM_PROFDATA='/usr/bin/xcrun llvm-profdata' ++ LLVM_PROF_FOUND=found ++ { $as_echo "$as_me:${as_lineno-$LINENO}: llvm-profdata found via xcrun: ${LLVM_PROFDATA}" >&5 ++$as_echo "$as_me: llvm-profdata found via xcrun: ${LLVM_PROFDATA}" >&6;} ++ fi ++fi ++ ++LLVM_PROF_ERR=no ++case $CC in ++ *clang*) ++ # Any changes made here should be reflected in the GCC+Darwin case below ++ PGO_PROF_GEN_FLAG="-fprofile-instr-generate" ++ PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd" ++ LLVM_PROF_MERGER="${LLVM_PROFDATA} merge -output=code.profclangd *.profclangr" ++ LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\"" ++ if test $LLVM_PROF_FOUND = not-found ++ then ++ LLVM_PROF_ERR=yes ++ if test "${REQUIRE_PGO}" = "yes" ++ then ++ as_fn_error $? "llvm-profdata is required for a --enable-optimizations build but could not be found." "$LINENO" 5 ++ fi ++ fi ++ ;; ++ *gcc*) ++ case $ac_sys_system in ++ Darwin*) ++ PGO_PROF_GEN_FLAG="-fprofile-instr-generate" ++ PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd" ++ LLVM_PROF_MERGER="llvm-profdata merge -output=code.profclangd *.profclangr" ++ LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\"" ++ if test "${LLVM_PROF_FOUND}" = "not-found" ++ then ++ LLVM_PROF_ERR=yes ++ if test "${REQUIRE_PGO}" = "yes" ++ then ++ as_fn_error $? "llvm-profdata is required for a --enable-optimizations build but could not be found." "$LINENO" 5 ++ fi ++ fi ++ ;; ++ *) ++ PGO_PROF_GEN_FLAG="-fprofile-generate" ++ PGO_PROF_USE_FLAG="-fprofile-use -fprofile-correction" ++ LLVM_PROF_MERGER="true" ++ LLVM_PROF_FILE="" ++ ;; ++ esac ++ ;; ++esac ++ ++ + # On some compilers, pthreads are available without further options + # (e.g. MacOS X). On some of these systems, the compiler will not + # complain if unaccepted options are passed (e.g. gcc on Mac OS X). +@@ -14613,7 +14936,7 @@ for dir in $SRCDIRS; do + fi + done + +- BEGIN_COMPUTED_GOTO ++# BEGIN_COMPUTED_GOTO + # Check for --with-computed-gotos + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-computed-gotos" >&5 + $as_echo_n "checking for --with-computed-gotos... " >&6; } +@@ -16031,3 +16354,12 @@ $as_echo "$as_me: WARNING: + esac + + mv config.c Modules ++ ++if test "$Py_OPT" = 'false' -a "$Py_DEBUG" != 'true'; then ++ echo "" >&6 ++ echo "" >&6 ++ echo "If you want a release build with all optimizations active (LTO, PGO, etc)," ++ echo "please run ./configure --enable-optimizations" >&6 ++ echo "" >&6 ++ echo "" >&6 ++fi +diff --git a/configure.ac b/configure.ac +index 74bb514..040fc69 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1347,6 +1347,165 @@ then + CFLAGS=$save_CFLAGS + fi + ++ ++# Enable optimization flags ++AC_SUBST(DEF_MAKE_ALL_RULE) ++AC_SUBST(DEF_MAKE_RULE) ++Py_OPT='false' ++AC_MSG_CHECKING(for --enable-optimizations) ++AC_ARG_ENABLE(optimizations, AS_HELP_STRING([--enable-optimizations], [Enable expensive optimizations (PGO, maybe LTO, etc). Disabled by default.]), ++[ ++if test "$enableval" != no ++then ++ Py_OPT='true' ++ AC_MSG_RESULT(yes); ++else ++ Py_OPT='false' ++ AC_MSG_RESULT(no); ++fi], ++[AC_MSG_RESULT(no)]) ++if test "$Py_OPT" = 'true' ; then ++ case $ac_sys_system in ++ Darwin*) ++ # At least on macOS El Capitan, LTO does not work with PGO. ++ Py_LTO='false' ++ ;; ++ esac ++ Py_LTO='true' ++ DEF_MAKE_ALL_RULE="profile-opt" ++ REQUIRE_PGO="yes" ++ DEF_MAKE_RULE="build_all" ++else ++ DEF_MAKE_ALL_RULE="build_all" ++ REQUIRE_PGO="no" ++ DEF_MAKE_RULE="all" ++fi ++ ++ ++# Enable LTO flags ++AC_SUBST(LTOFLAGS) ++AC_MSG_CHECKING(for --with-lto) ++AC_ARG_WITH(lto, AS_HELP_STRING([--with-lto], [Enable Link Time Optimization in PGO builds. Disabled by default.]), ++[ ++if test "$withval" != no ++then ++ Py_LTO='true' ++ AC_MSG_RESULT(yes); ++else ++ Py_LTO='false' ++ AC_MSG_RESULT(no); ++fi], ++[AC_MSG_RESULT(no)]) ++if test "$Py_LTO" = 'true' ; then ++ case $CC in ++ *clang*) ++ # Any changes made here should be reflected in the GCC+Darwin case below ++ LTOFLAGS="-flto" ++ ;; ++ *gcc*) ++ case $ac_sys_system in ++ Darwin*) ++ LTOFLAGS="-flto" ++ ;; ++ *) ++ LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none" ++ ;; ++ esac ++ ;; ++ esac ++fi ++ ++ ++# Enable PGO flags. ++AC_SUBST(PGO_PROF_GEN_FLAG) ++AC_SUBST(PGO_PROF_USE_FLAG) ++AC_SUBST(LLVM_PROF_MERGER) ++AC_SUBST(LLVM_PROF_FILE) ++AC_SUBST(LLVM_PROF_ERR) ++# Make this work on systems where llvm tools are not installed with their ++# normal names in the default $PATH (ie: Ubuntu). They exist under the ++# non-suffixed name in their versioned llvm directory. ++llvm_bin_dir='' ++llvm_path="${PATH}" ++if test "${CC}" = "clang" ++then ++ clang_bin=`which clang` ++ # Some systems install clang elsewhere as a symlink to the real path ++ # which is where the related llvm tools are located. ++ if test -L "${clang_bin}" ++ then ++ clang_dir=`dirname "${clang_bin}"` ++ clang_bin=`readlink "${clang_bin}"` ++ llvm_bin_dir="${clang_dir}/"`dirname "${clang_bin}"` ++ llvm_path="${llvm_path}${PATH_SEPARATOR}${llvm_bin_dir}" ++ fi ++fi ++AC_SUBST(LLVM_PROFDATA) ++AC_PATH_TARGET_TOOL(LLVM_PROFDATA, llvm-profdata, '', ${llvm_path}) ++AC_SUBST(LLVM_PROF_FOUND) ++if test -n "${LLVM_PROFDATA}" -a -x "${LLVM_PROFDATA}" ++then ++ LLVM_PROF_FOUND="found" ++else ++ LLVM_PROF_FOUND="not-found" ++fi ++if test "$ac_sys_system" = "Darwin" -a "${LLVM_PROF_FOUND}" = "not-found" ++then ++ found_llvm_profdata=`/usr/bin/xcrun -find llvm-profdata 2>/dev/null` ++ if test -n "${found_llvm_profdata}" ++ then ++ # llvm-profdata isn't directly in $PATH in some cases. ++ # https://apple.stackexchange.com/questions/197053/ ++ LLVM_PROFDATA='/usr/bin/xcrun llvm-profdata' ++ LLVM_PROF_FOUND=found ++ AC_MSG_NOTICE([llvm-profdata found via xcrun: ${LLVM_PROFDATA}]) ++ fi ++fi ++ ++LLVM_PROF_ERR=no ++case $CC in ++ *clang*) ++ # Any changes made here should be reflected in the GCC+Darwin case below ++ PGO_PROF_GEN_FLAG="-fprofile-instr-generate" ++ PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd" ++ LLVM_PROF_MERGER="${LLVM_PROFDATA} merge -output=code.profclangd *.profclangr" ++ LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\"" ++ if test $LLVM_PROF_FOUND = not-found ++ then ++ LLVM_PROF_ERR=yes ++ if test "${REQUIRE_PGO}" = "yes" ++ then ++ AC_MSG_ERROR([llvm-profdata is required for a --enable-optimizations build but could not be found.]) ++ fi ++ fi ++ ;; ++ *gcc*) ++ case $ac_sys_system in ++ Darwin*) ++ PGO_PROF_GEN_FLAG="-fprofile-instr-generate" ++ PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd" ++ LLVM_PROF_MERGER="${LLVM_PROFDATA} merge -output=code.profclangd *.profclangr" ++ LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\"" ++ if test "${LLVM_PROF_FOUND}" = "not-found" ++ then ++ LLVM_PROF_ERR=yes ++ if test "${REQUIRE_PGO}" = "yes" ++ then ++ AC_MSG_ERROR([llvm-profdata is required for a --enable-optimizations build but could not be found.]) ++ fi ++ fi ++ ;; ++ *) ++ PGO_PROF_GEN_FLAG="-fprofile-generate" ++ PGO_PROF_USE_FLAG="-fprofile-use -fprofile-correction" ++ LLVM_PROF_MERGER="true" ++ LLVM_PROF_FILE="" ++ ;; ++ esac ++ ;; ++esac ++ ++ + # On some compilers, pthreads are available without further options + # (e.g. MacOS X). On some of these systems, the compiler will not + # complain if unaccepted options are passed (e.g. gcc on Mac OS X). +@@ -4648,3 +4807,12 @@ BeOS) + esac + + mv config.c Modules ++ ++if test "$Py_OPT" = 'false' -a "$Py_DEBUG" != 'true'; then ++ echo "" >&AS_MESSAGE_FD ++ echo "" >&AS_MESSAGE_FD ++ echo "If you want a release build with all optimizations active (LTO, PGO, etc)," ++ echo "please run ./configure --enable-optimizations" >&AS_MESSAGE_FD ++ echo "" >&AS_MESSAGE_FD ++ echo "" >&AS_MESSAGE_FD ++fi +-- +1.8.3.1 + diff --git a/devtools/python/python-2.7.5/centos/srpm_path b/devtools/python/python-2.7.5/centos/srpm_path new file mode 100644 index 000000000..6b069fded --- /dev/null +++ b/devtools/python/python-2.7.5/centos/srpm_path @@ -0,0 +1,2 @@ +mirror:Source/python-2.7.5-58.el7.src.rpm +