Core and Builtins
-----------------
-- 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 #24115: Update uses of PyObject_IsTrue(), PyObject_Not(),
- PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains()
- to check for and handle errors correctly.
-
-- Issue #24257: Fixed system error in the comparison of faked
- types.SimpleNamespace.
-
-- Issue #22939: Fixed integer overflow in iterator object. Patch by
- Clement Rouault.
-
-- Issue #23985: Fix a possible buffer overrun when deleting a slice from
- the front of a bytearray and then appending some other bytes data.
-
-- Issue #24102: Fixed exception type checking in standard error handlers.
+Library
+-------
-- Issue #23757: PySequence_Tuple() incorrectly called the concrete list API
- when the data was a list subclass.
++- Issue #19450: Update Windows builds to use SQLite 3.8.11.0
+
-- Issue #24407: Fix crash when dict is mutated while being updated.
+- Issue #17527: Add PATCH to wsgiref.validator. Patch from Luca Sbardella.
-- Issue #24096: Make warnings.warn_explicit more robust against mutation of the
- warnings.filters list.
-- Issue #23996: Avoid a crash when a delegated generator raises an
- unnormalized StopIteration exception. Patch by Stefan Behnel.
+What's New in Python 3.5.0 beta 4?
+==================================
-- Issue #24022: Fix tokenizer crash when processing undecodable source code.
+Release date: 2015-07-26
-- Issue #23309: Avoid a deadlock at shutdown if a daemon thread is aborted
- while it is holding a lock to a buffered I/O object, and the main thread
- tries to use the same I/O object (typically stdout or stderr). A fatal
- error is emitted instead.
+Core and Builtins
+-----------------
-- Issue #22977: Fixed formatting Windows error messages on Wine.
- Patch by Martin Panter.
+- Issue #23573: Restored optimization of bytes.rfind() and bytearray.rfind()
+ for single-byte argument on Linux.
-- Issue #23803: Fixed str.partition() and str.rpartition() when a separator
- is wider then partitioned string.
+- Issue #24569: Make PEP 448 dictionary evaluation more consistent.
-- Issue #23192: Fixed generator lambdas. Patch by Bruno Cauet.
+- Issue #24583: Fix crash when set is mutated while being updated.
-- Issue #23629: Fix the default __sizeof__ implementation for variable-sized
- objects.
+- Issue #24407: Fix crash when dict is mutated while being updated.
-- Issue #24044: Fix possible null pointer dereference in list.sort in out of
- memory conditions.
+- Issue #24619: New approach for tokenizing async/await. As a consequence,
+ is is now possible to have one-line 'async def foo(): await ..' functions.
-- Issue #21354: PyCFunction_New function is exposed by python DLL again.
+- Issue #24687: Plug refleak on SyntaxError in function parameters
+ annotations.
Library
-------
--- /dev/null
- <sqlite3Dir>$(ExternalsDir)sqlite-3.8.3.1\</sqlite3Dir>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+ <Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
+ <!--
+ Use the latest available version of Visual Studio to build. To override
+ this and build with an earlier version, pass "/p:PlatformToolset=v100"
+ (for example) when building.
+ -->
+ <PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VCTargetsPath14)' != ''">v140</PlatformToolset>
+ <PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VCTargetsPath12)' != ''">v120</PlatformToolset>
+ <PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VCTargetsPath11)' != ''">v110</PlatformToolset>
+ <PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VCTargetsPath10)' != ''">v100</PlatformToolset>
+
+ <!--
+ Convincing MSVC/MSBuild to prefer our platform names is too difficult,
+ so we define our own constant ArchName and use wherever we need it.
+ -->
+ <ArchName Condition="'$(ArchName)' == '' and $(Platform) == 'x64'">amd64</ArchName>
+ <ArchName Condition="'$(ArchName)' == ''">win32</ArchName>
+ <ArchName Condition="$(Configuration) == 'PGInstrument' or $(Configuration) == 'PGUpdate'">$(ArchName)-pgo</ArchName>
+
+ <!-- Root directory of the repository -->
+ <PySourcePath Condition="'$(PySourcePath)' == ''">$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)\..\))</PySourcePath>
+ <PySourcePath Condition="!HasTrailingSlash($(PySourcePath))">$(PySourcePath)\</PySourcePath>
+
+ <!-- Directory where build outputs are put -->
+ <BuildPath Condition="'$(PyBuildPath)' == ''">$(PySourcePath)PCBuild\$(ArchName)\</BuildPath>
+ <BuildPath Condition="'$(PyBuildPath)' != ''">$(PyBuildPath)</BuildPath>
+ <BuildPath Condition="!HasTrailingSlash($(BuildPath))">$(BuildPath)\</BuildPath>
+
+ <!-- Directories of external projects. tcltk is handled in tcltk.props -->
+ <ExternalsDir>$([System.IO.Path]::GetFullPath(`$(PySourcePath)externals\`))</ExternalsDir>
++ <sqlite3Dir>$(ExternalsDir)sqlite-3.8.11.0\</sqlite3Dir>
+ <bz2Dir>$(ExternalsDir)bzip2-1.0.6\</bz2Dir>
+ <lzmaDir>$(ExternalsDir)xz-5.0.5\</lzmaDir>
+ <opensslDir>$(ExternalsDir)openssl-1.0.2d\</opensslDir>
+ <nasmDir>$(ExternalsDir)\nasm-2.11.06\</nasmDir>
+
+ <!-- Suffix for all binaries when building for debug -->
+ <PyDebugExt Condition="'$(PyDebugExt)' == '' and $(Configuration) == 'Debug'">_d</PyDebugExt>
+
+ <!-- Full path of the resulting python.exe binary -->
+ <PythonExe Condition="'$(PythonExe)' == ''">$(BuildPath)python$(PyDebugExt).exe</PythonExe>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(OverrideVersion)' == ''">
+ <!--
+ Read version information from Include\patchlevel.h. The following properties are set:
+
+ MajorVersionNumber - the '3' in '3.5.2a1'
+ MinorVersionNumber - the '5' in '3.5.2a1'
+ MicroVersionNumber - the '2' in '3.5.2a1'
+ ReleaseSerial - the '1' in '3.5.2a1'
+ ReleaseLevelName - the 'a1' in '3.5.2a1'
+ PythonVersionNumber - '3.5.2' for '3.5.2a1'
+ PythonVersion - '3.5.2a1'
+ PythonVersionHex - 0x030502a1 for '3.5.2a1'
+ ReleaseLevelNumber - 10 for alpha, 11 for beta, 12 for RC (gamma), and 15 for final
+ Field3Value - 2101 for '3.5.2a1' (== 1000*2 + 10*10 ('a') + 1)
+ -->
+ <_PatchLevelContent>$([System.IO.File]::ReadAllText(`$(PySourcePath)Include\patchlevel.h`))</_PatchLevelContent>
+ <MajorVersionNumber>$([System.Text.RegularExpressions.Regex]::Match($(_PatchLevelContent), `define\s+PY_MAJOR_VERSION\s+(\d+)`).Groups[1].Value)</MajorVersionNumber>
+ <MinorVersionNumber>$([System.Text.RegularExpressions.Regex]::Match($(_PatchLevelContent), `define\s+PY_MINOR_VERSION\s+(\d+)`).Groups[1].Value)</MinorVersionNumber>
+ <MicroVersionNumber>$([System.Text.RegularExpressions.Regex]::Match($(_PatchLevelContent), `define\s+PY_MICRO_VERSION\s+(\d+)`).Groups[1].Value)</MicroVersionNumber>
+ <_ReleaseLevel>$([System.Text.RegularExpressions.Regex]::Match($(_PatchLevelContent), `define\s+PY_RELEASE_LEVEL\s+PY_RELEASE_LEVEL_(\w+)`).Groups[1].Value)</_ReleaseLevel>
+ <ReleaseSerial>$([System.Text.RegularExpressions.Regex]::Match($(_PatchLevelContent), `define\s+PY_RELEASE_SERIAL\s+(\d+)`).Groups[1].Value)</ReleaseSerial>
+ <ReleaseLevelNumber>15</ReleaseLevelNumber>
+ <ReleaseLevelNumber Condition="$(_ReleaseLevel) == 'ALPHA'">10</ReleaseLevelNumber>
+ <ReleaseLevelNumber Condition="$(_ReleaseLevel) == 'BETA'">11</ReleaseLevelNumber>
+ <ReleaseLevelNumber Condition="$(_ReleaseLevel) == 'GAMMA'">12</ReleaseLevelNumber>
+ <ReleaseLevelName Condition="$(_ReleaseLevel) == 'ALPHA'">a$(ReleaseSerial)</ReleaseLevelName>
+ <ReleaseLevelName Condition="$(_ReleaseLevel) == 'BETA'">b$(ReleaseSerial)</ReleaseLevelName>
+ <ReleaseLevelName Condition="$(_ReleaseLevel) == 'GAMMA'">rc$(ReleaseSerial)</ReleaseLevelName>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(OverrideVersion)' != ''">
+ <!--
+ Override the version number when building by specifying OverrideVersion.
+ For example:
+
+ PCBuild\build.bat "/p:OverrideVersion=3.5.2a1"
+
+ Use the -V option to check your version is valid:
+
+ PCBuild\build.bat -V "/p:OverrideVersion=3.5.2a1"
+ PythonVersionNumber: 3.5.2
+ PythonVersion: 3.5.2a1
+ PythonVersionHex: 0x030502A1
+ Field3Value: 2101
+
+ Note that this only affects the version numbers embedded in resources and
+ installers, but not sys.version.
+ -->
+ <MajorVersionNumber>$([System.Text.RegularExpressions.Regex]::Match($(OverrideVersion), `(\d+)\.(\d+)\.(\d+)((a|b|rc)(\d))?`).Groups[1].Value)</MajorVersionNumber>
+ <MinorVersionNumber>$([System.Text.RegularExpressions.Regex]::Match($(OverrideVersion), `(\d+)\.(\d+)\.(\d+)((a|b|rc)(\d))?`).Groups[2].Value)</MinorVersionNumber>
+ <MicroVersionNumber>$([System.Text.RegularExpressions.Regex]::Match($(OverrideVersion), `(\d+)\.(\d+)\.(\d+)((a|b|rc)(\d))?`).Groups[3].Value)</MicroVersionNumber>
+ <ReleaseLevelName>$([System.Text.RegularExpressions.Regex]::Match($(OverrideVersion), `(\d+)\.(\d+)\.(\d+)((a|b|rc)(\d))?`).Groups[4].Value)</ReleaseLevelName>
+ <_ReleaseLevel>$([System.Text.RegularExpressions.Regex]::Match($(OverrideVersion), `(\d+)\.(\d+)\.(\d+)((a|b|rc)(\d))?`).Groups[5].Value)</_ReleaseLevel>
+ <ReleaseSerial>$([System.Text.RegularExpressions.Regex]::Match($(OverrideVersion), `(\d+)\.(\d+)\.(\d+)((a|b|rc)(\d))?`).Groups[6].Value)</ReleaseSerial>
+ <ReleaseSerial Condition="'$(ReleaseSerial)' == ''">0</ReleaseSerial>
+ <ReleaseLevelNumber>15</ReleaseLevelNumber>
+ <ReleaseLevelNumber Condition="$(_ReleaseLevel) == 'a'">10</ReleaseLevelNumber>
+ <ReleaseLevelNumber Condition="$(_ReleaseLevel) == 'b'">11</ReleaseLevelNumber>
+ <ReleaseLevelNumber Condition="$(_ReleaseLevel) == 'rc'">12</ReleaseLevelNumber>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <PythonVersionNumber>$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)</PythonVersionNumber>
+ <PythonVersion>$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)$(ReleaseLevelName)</PythonVersion>
+ <PythonVersionHex>$([msbuild]::BitwiseOr(
+ $([msbuild]::Multiply($(MajorVersionNumber), 16777216)),
+ $([msbuild]::BitwiseOr(
+ $([msbuild]::Multiply($(MinorVersionNumber), 65536)),
+ $([msbuild]::BitwiseOr(
+ $([msbuild]::Multiply($(MicroVersionNumber), 256)),
+ $([msbuild]::BitwiseOr(
+ $([msbuild]::Multiply($(ReleaseLevelNumber), 16)),
+ $(ReleaseSerial)
+ ))
+ ))
+ ))
+ ))</PythonVersionHex>
+ <Field3Value>$([msbuild]::Add(
+ $(ReleaseSerial),
+ $([msbuild]::Add(
+ $([msbuild]::Multiply($(ReleaseLevelNumber), 10)),
+ $([msbuild]::Multiply($(MicroVersionNumber), 1000))
+ ))
+ ))</Field3Value>
+
+ <!-- The name of the resulting pythonXY.dll (without the extension) -->
+ <PyDllName>python$(MajorVersionNumber)$(MinorVersionNumber)$(PyDebugExt)</PyDllName>
+
+ <!-- The version and platform tag to include in .pyd filenames -->
+ <PydTag Condition="$(Platform) == 'Win32' or $(Platform) == 'x86'">.cp$(MajorVersionNumber)$(MinorVersionNumber)-win32</PydTag>
+ <PydTag Condition="$(Platform) == 'x64'">.cp$(MajorVersionNumber)$(MinorVersionNumber)-win_amd64</PydTag>
+
+ <!-- The version number for sys.winver -->
+ <SysWinVer>$(MajorVersionNumber).$(MinorVersionNumber)</SysWinVer>
+ <SysWinVer Condition="$(Platform) == 'Win32' or $(Platform) == 'x86'">$(SysWinVer)-32</SysWinVer>
+ </PropertyGroup>
+
+ <!-- Displays the calculated version info -->
+ <Target Name="ShowVersionInfo">
+ <Message Importance="high" Text="PythonVersionNumber: $(PythonVersionNumber)" />
+ <Message Importance="high" Text="PythonVersion: $(PythonVersion)" />
+ <Message Importance="high" Text="PythonVersionHex: 0x$([System.UInt32]::Parse($(PythonVersionHex)).ToString(`X08`))" />
+ <Message Importance="high" Text="Field3Value: $(Field3Value)" />
+ </Target>
+</Project>
you should first try to update NASM and do a full rebuild of\r
OpenSSL. If you use the PCbuild\get_externals.bat method\r
for getting sources, it also downloads a version of NASM which the\r
- ssl build script will add to PATH.\r
+ libeay/ssleay sub-projects use.\r
+\r
+ The libeay/ssleay sub-projects expect your OpenSSL sources to have\r
+ already been configured and be ready to build. If you get your sources\r
+ from svn.python.org as suggested in the "Getting External Sources"\r
+ section below, the OpenSSL source will already be ready to go. If\r
+ you want to build a different version, you will need to run\r
\r
- If you like to use the official sources instead of the files from\r
- python.org's subversion repository, Perl is required to build the\r
- necessary makefiles and assembly files. ActivePerl is available\r
- from\r
+ PCbuild\prepare_ssl.py path\to\openssl-source-dir\r
+\r
+ That script will prepare your OpenSSL sources in the same way that\r
+ those available on svn.python.org have been prepared. Note that\r
+ Perl must be installed and available on your PATH to configure\r
+ OpenSSL. ActivePerl is recommended and is available from\r
http://www.activestate.com/activeperl/\r
- The svn.python.org version contains pre-built makefiles and assembly\r
- files.\r
-\r
- The build process makes sure that no patented algorithms are\r
- included. For now RC5, MDC2 and IDEA are excluded from the build.\r
- You may have to manually remove $(OBJ_D)\i_*.obj from ms\nt.mak if\r
- using official sources; the svn.python.org-hosted version is already\r
- fixed.\r
-\r
- The ssl.vcxproj sub-project simply invokes PCbuild/build_ssl.py,\r
- which locates and builds OpenSSL.\r
-\r
- build_ssl.py attempts to catch the most common errors (such as not\r
- being able to find OpenSSL sources, or not being able to find a Perl\r
- that works with OpenSSL) and give a reasonable error message. If\r
- you have a problem that doesn't seem to be handled correctly (e.g.,\r
- you know you have ActivePerl but we can't find it), please take a\r
- peek at build_ssl.py and suggest patches. Note that build_ssl.py\r
- should be able to be run directly from the command-line.\r
-\r
- The ssl sub-project does not have the ability to clean the OpenSSL\r
- build; if you need to rebuild, you'll have to clean it by hand.\r
+\r
+ The libeay and ssleay sub-projects will build the modules of OpenSSL\r
+ required by _ssl and _hashlib and may need to be manually updated when\r
+ upgrading to a newer version of OpenSSL or when adding new\r
+ functionality to _ssl or _hashlib. They will not clean up their output\r
+ with the normal Clean target; CleanAll should be used instead.\r
_sqlite3\r
- Wraps SQLite 3.8.3.1, which is itself built by sqlite3.vcxproj\r
+ Wraps SQLite 3.8.11.0, which is itself built by sqlite3.vcxproj\r
Homepage:\r
http://www.sqlite.org/\r
_tkinter\r