1 Python History 2 -------------- 3 4 This file contains the release messages for previous Python releases. 5 As you read on you go back to the dark ages of Python's history. 6 7 8 ====================================================================== 9 10 What's New in Python 3.4.6? 11 =========================== 12 13 Release date: 2017-01-17 14 15 There were no changes between 3.4.6rc1 and 3.4.6 final. 16 17 18 What's New in Python 3.4.6rc1? 19 ============================== 20 21 Release date: 2017-01-02 22 23 Core and Builtins 24 ----------------- 25 26 - Issue #28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X 27 when decode astral characters. Patch by Xiang Zhang. 28 29 - Issue #28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug 30 build. 31 32 Library 33 ------- 34 35 - Issue #28563: Fixed possible DoS and arbitrary code execution when handle 36 plural form selections in the gettext module. The expression parser now 37 supports exact syntax supported by GNU gettext. 38 39 - In the curses module, raise an error if window.getstr() or window.instr() is 40 passed a negative value. 41 42 - Issue #27783: Fix possible usage of uninitialized memory in operator.methodcaller. 43 44 - Issue #27774: Fix possible Py_DECREF on unowned object in _sre. 45 46 - Issue #27760: Fix possible integer overflow in binascii.b2a_qp. 47 48 - Issue #27758: Fix possible integer overflow in the _csv module for large record 49 lengths. 50 51 - Issue #27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the 52 HTTP_PROXY variable when REQUEST_METHOD environment is set, which indicates 53 that the script is in CGI mode. 54 55 - Issue #27759: Fix selectors incorrectly retain invalid file descriptors. 56 Patch by Mark Williams. 57 58 Build 59 ----- 60 61 - Issue #28248: Update Windows build to use OpenSSL 1.0.2j. 62 63 Tests 64 ----- 65 66 - Issue #27369: In test_pyexpat, avoid testing an error message detail that 67 changed in Expat 2.2.0. 68 69 70 What's New in Python 3.4.5? 71 =========================== 72 73 Release date: 2016-06-26 74 75 Tests 76 ----- 77 78 - Issue #26867: Ubuntu's openssl OP_NO_SSLv3 is forced on by default; fix test. 79 80 81 What's New in Python 3.4.5rc1? 82 ============================== 83 84 Release date: 2016-06-11 85 86 Core and Builtins 87 ----------------- 88 89 - Issue #26478: Fix semantic bugs when using binary operators with dictionary 90 views and tuples. 91 92 - Issue #26171: Fix possible integer overflow and heap corruption in 93 zipimporter.get_data(). 94 95 Library 96 ------- 97 98 - Issue #26556: Update expat to 2.1.1, fixes CVE-2015-1283. 99 100 - Fix TLS stripping vulnerability in smptlib, CVE-2016-0772. Reported by Team 101 Oststrom 102 103 - Issue #25939: On Windows open the cert store readonly in ssl.enum_certificates. 104 105 - Issue #26012: Don't traverse into symlinks for ** pattern in 106 pathlib.Path.[r]glob(). 107 108 - Issue #24120: Ignore PermissionError when traversing a tree with 109 pathlib.Path.[r]glob(). Patch by Ulrich Petri. 110 111 - Skip getaddrinfo if host is already resolved. 112 Patch by A. Jesse Jiryu Davis. 113 114 - Add asyncio.timeout() context manager. 115 116 - Issue #26050: Add asyncio.StreamReader.readuntil() method. 117 Patch by . 118 119 Tests 120 ----- 121 122 - Issue #25940: Changed test_ssl to use self-signed.pythontest.net. This 123 avoids relying on svn.python.org, which recently changed root certificate. 124 125 126 What's New in Python 3.4.4? 127 =========================== 128 129 Release date: 2015/12/20 130 131 Windows 132 ------- 133 134 - Issue #25844: Corrected =/== typo potentially leading to crash in launcher. 135 136 137 What's New in Python 3.4.4rc1? 138 ============================== 139 140 Release date: 2015/12/06 141 142 Core and Builtins 143 ----------------- 144 145 - Issue #25709: Fixed problem with in-place string concatenation and utf-8 146 cache. 147 148 - Issue #24097: Fixed crash in object.__reduce__() if slot name is freed inside 149 __getattr__. 150 151 - Issue #24731: Fixed crash on converting objects with special methods 152 __bytes__, __trunc__, and __float__ returning instances of subclasses of 153 bytes, int, and float to subclasses of bytes, int, and float correspondingly. 154 155 - Issue #25388: Fixed tokenizer crash when processing undecodable source code 156 with a null byte. 157 158 - Issue #22995: Default implementation of __reduce__ and __reduce_ex__ now 159 rejects builtin types with not defined __new__. 160 161 - Issue #24802: Avoid buffer overreads when int(), float(), compile(), exec() 162 and eval() are passed bytes-like objects. These objects are not 163 necessarily terminated by a null byte, but the functions assumed they were. 164 165 - Issue #24402: Fix input() to prompt to the redirected stdout when 166 sys.stdout.fileno() fails. 167 168 - Issue #24806: Prevent builtin types that are not allowed to be subclassed from 169 being subclassed through multiple inheritance. 170 171 - Issue #24848: Fixed a number of bugs in UTF-7 decoding of misformed data. 172 173 - Issue #25280: Import trace messages emitted in verbose (-v) mode are no 174 longer formatted twice. 175 176 - Issue #25003: os.urandom() doesn't use getentropy() on Solaris because 177 getentropy() is blocking, whereas os.urandom() should not block. getentropy() 178 is supported since Solaris 11.3. 179 180 - Issue #25182: The stdprinter (used as sys.stderr before the io module is 181 imported at startup) now uses the backslashreplace error handler. 182 183 - Issue #24891: Fix a race condition at Python startup if the file descriptor 184 of stdin (0), stdout (1) or stderr (2) is closed while Python is creating 185 sys.stdin, sys.stdout and sys.stderr objects. These attributes are now set 186 to None if the creation of the object failed, instead of raising an OSError 187 exception. Initial patch written by Marco Paolini. 188 189 - Issue #21167: NAN operations are now handled correctly when python is 190 compiled with ICC even if -fp-model strict is not specified. 191 192 - Issue #4395: Better testing and documentation of binary operators. 193 Patch by Martin Panter. 194 195 - Issue #24467: Fixed possible buffer over-read in bytearray. The bytearray 196 object now always allocates place for trailing null byte and it's buffer now 197 is always null-terminated. 198 199 - Issue #24115: Update uses of PyObject_IsTrue(), PyObject_Not(), 200 PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains() 201 to check for and handle errors correctly. 202 203 - Issue #24257: Fixed system error in the comparison of faked 204 types.SimpleNamespace. 205 206 - Issue #22939: Fixed integer overflow in iterator object. Patch by 207 Clement Rouault. 208 209 - Issue #23985: Fix a possible buffer overrun when deleting a slice from 210 the front of a bytearray and then appending some other bytes data. 211 212 - Issue #24102: Fixed exception type checking in standard error handlers. 213 214 - Issue #23757: PySequence_Tuple() incorrectly called the concrete list API 215 when the data was a list subclass. 216 217 - Issue #24407: Fix crash when dict is mutated while being updated. 218 219 - Issue #24096: Make warnings.warn_explicit more robust against mutation of the 220 warnings.filters list. 221 222 - Issue #23996: Avoid a crash when a delegated generator raises an 223 unnormalized StopIteration exception. Patch by Stefan Behnel. 224 225 - Issue #24022: Fix tokenizer crash when processing undecodable source code. 226 227 - Issue #23309: Avoid a deadlock at shutdown if a daemon thread is aborted 228 while it is holding a lock to a buffered I/O object, and the main thread 229 tries to use the same I/O object (typically stdout or stderr). A fatal 230 error is emitted instead. 231 232 - Issue #22977: Fixed formatting Windows error messages on Wine. 233 Patch by Martin Panter. 234 235 - Issue #23803: Fixed str.partition() and str.rpartition() when a separator 236 is wider then partitioned string. 237 238 - Issue #23192: Fixed generator lambdas. Patch by Bruno Cauet. 239 240 - Issue #23629: Fix the default __sizeof__ implementation for variable-sized 241 objects. 242 243 - Issue #24044: Fix possible null pointer dereference in list.sort in out of 244 memory conditions. 245 246 - Issue #21354: PyCFunction_New function is exposed by python DLL again. 247 248 Library 249 ------- 250 251 - Issue #24903: Fix regression in number of arguments compileall accepts when 252 '-d' is specified. The check on the number of arguments has been dropped 253 completely as it never worked correctly anyway. 254 255 - Issue #25764: In the subprocess module, preserve any exception caused by 256 fork() failure when preexec_fn is used. 257 258 - Issue #6478: _strptime's regexp cache now is reset after changing timezone 259 with time.tzset(). 260 261 - Issue #25177: Fixed problem with the mean of very small and very large 262 numbers. As a side effect, statistics.mean and statistics.variance should 263 be significantly faster. 264 265 - Issue #25718: Fixed copying object with state with boolean value is false. 266 267 - Issue #10131: Fixed deep copying of minidom documents. Based on patch 268 by Marian Ganisin. 269 270 - Issue #25725: Fixed a reference leak in pickle.loads() when unpickling 271 invalid data including tuple instructions. 272 273 - Issue #25663: In the Readline completer, avoid listing duplicate global 274 names, and search the global namespace before searching builtins. 275 276 - Issue #25688: Fixed file leak in ElementTree.iterparse() raising an error. 277 278 - Issue #23914: Fixed SystemError raised by unpickler on broken pickle data. 279 280 - Issue #25691: Fixed crash on deleting ElementTree.Element attributes. 281 282 - Issue #25624: ZipFile now always writes a ZIP_STORED header for directory 283 entries. Patch by Dingyuan Wang. 284 285 - Issue #25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True) 286 when the OS gives priority to errors such as EACCES over EEXIST. 287 288 - Issue #25593: Change semantics of EventLoop.stop() in asyncio. 289 290 - Issue #6973: When we know a subprocess.Popen process has died, do 291 not allow the send_signal(), terminate(), or kill() methods to do 292 anything as they could potentially signal a different process. 293 294 - Issue #25578: Fix (another) memory leak in SSLSocket.getpeercer(). 295 296 - Issue #25590: In the Readline completer, only call getattr() once per 297 attribute. 298 299 - Issue #25498: Fix a crash when garbage-collecting ctypes objects created 300 by wrapping a memoryview. This was a regression made in 3.4.3. Based 301 on patch by Eryksun. 302 303 - Issue #18010: Fix the pydoc web server's module search function to handle 304 exceptions from importing packages. 305 306 - Issue #25510: fileinput.FileInput.readline() now returns b'' instead of '' 307 at the end if the FileInput was opened with binary mode. 308 Patch by Ryosuke Ito. 309 310 - Issue #25530: Disable the vulnerable SSLv3 protocol by default when creating 311 ssl.SSLContext. 312 313 - Issue #25569: Fix memory leak in SSLSocket.getpeercert(). 314 315 - Issue #21827: Fixed textwrap.dedent() for the case when largest common 316 whitespace is a substring of smallest leading whitespace. 317 Based on patch by Robert Li. 318 319 - Issue #25471: Sockets returned from accept() shouldn't appear to be 320 nonblocking. 321 322 - Issue #25441: asyncio: Raise error from drain() when socket is closed. 323 324 - Issue #25411: Improved Unicode support in SMTPHandler through better use of 325 the email package. Thanks to user simon04 for the patch. 326 327 - Issue #25380: Fixed protocol for the STACK_GLOBAL opcode in 328 pickletools.opcodes. 329 330 - Issue #23972: Updates asyncio datagram create method allowing reuseport 331 and reuseaddr socket options to be set prior to binding the socket. 332 Mirroring the existing asyncio create_server method the reuseaddr option 333 for datagram sockets defaults to True if the O/S is 'posix' (except if the 334 platform is Cygwin). Patch by Chris Laws. 335 336 - Issue #25304: Add asyncio.run_coroutine_threadsafe(). This lets you 337 submit a coroutine to a loop from another thread, returning a 338 concurrent.futures.Future. By Vincent Michel. 339 340 - Issue #25319: When threading.Event is reinitialized, the underlying condition 341 should use a regular lock rather than a recursive lock. 342 343 - Issue #25232: Fix CGIRequestHandler to split the query from the URL at the 344 first question mark (?) rather than the last. Patch from Xiang Zhang. 345 346 - Issue #24657: Prevent CGIRequestHandler from collapsing slashes in the 347 query part of the URL as if it were a path. Patch from Xiang Zhang. 348 349 - Issue #22958: Constructor and update method of weakref.WeakValueDictionary 350 now accept the self and the dict keyword arguments. 351 352 - Issue #22609: Constructor of collections.UserDict now accepts the self keyword 353 argument. 354 355 - Issue #25262. Added support for BINBYTES8 opcode in Python implementation of 356 unpickler. Highest 32 bits of 64-bit size for BINUNICODE8 and BINBYTES8 357 opcodes no longer silently ignored on 32-bit platforms in C implementation. 358 359 - Issue #25034: Fix string.Formatter problem with auto-numbering and 360 nested format_specs. Patch by Anthon van der Neut. 361 362 - Issue #25233: Rewrite the guts of asyncio.Queue and 363 asyncio.Semaphore to be more understandable and correct. 364 365 - Issue #23600: Default implementation of tzinfo.fromutc() was returning 366 wrong results in some cases. 367 368 - Issue #25203: Failed readline.set_completer_delims() no longer left the 369 module in inconsistent state. 370 371 - Prevent overflow in _Unpickler_Read. 372 373 - Issue #25047: The XML encoding declaration written by Element Tree now 374 respects the letter case given by the user. This restores the ability to 375 write encoding names in uppercase like "UTF-8", which worked in Python 2. 376 377 - Issue #19143: platform module now reads Windows version from kernel32.dll to 378 avoid compatibility shims. 379 380 - Issue #23517: Fix rounding in fromtimestamp() and utcfromtimestamp() methods 381 of datetime.datetime: microseconds are now rounded to nearest with ties 382 going to nearest even integer (ROUND_HALF_EVEN), instead of being rounding 383 towards zero (ROUND_DOWN). It's important that these methods use the same 384 rounding mode than datetime.timedelta to keep the property: 385 (datetime(1970,1,1) + timedelta(seconds=t)) == datetime.utcfromtimestamp(t). 386 It also the rounding mode used by round(float) for example. 387 388 - Issue #24684: socket.socket.getaddrinfo() now calls 389 PyUnicode_AsEncodedString() instead of calling the encode() method of the 390 host, to handle correctly custom string with an encode() method which doesn't 391 return a byte string. The encoder of the IDNA codec is now called directly 392 instead of calling the encode() method of the string. 393 394 - Issue #24982: shutil.make_archive() with the "zip" format now adds entries 395 for directories (including empty directories) in ZIP file. 396 397 - Issue #24857: Comparing call_args to a long sequence now correctly returns a 398 boolean result instead of raising an exception. Patch by A Kaptur. 399 400 - Issue #25019: Fixed a crash caused by setting non-string key of expat parser. 401 Based on patch by John Leitch. 402 403 - Issue #24917: time_strftime() buffer over-read. 404 405 - Issue #23144: Make sure that HTMLParser.feed() returns all the data, even 406 when convert_charrefs is True. 407 408 - Issue #16180: Exit pdb if file has syntax error, instead of trapping user 409 in an infinite loop. Patch by Xavier de Gaye. 410 411 - Issue #21112: Fix regression in unittest.expectedFailure on subclasses. 412 Patch from Berker Peksag. 413 414 - Issue #24931: Instances of subclasses of namedtuples have their own __dict__ 415 which breaks the inherited __dict__ property and breaks the _asdict() method. 416 Removed the __dict__ property to prevent the conflict and fixed _asdict(). 417 418 - Issue #24764: cgi.FieldStorage.read_multi() now ignores the Content-Length 419 header in part headers. Patch written by Peter Landry and reviewed by Pierre 420 Quentel. 421 422 - Issue #24774: Fix docstring in http.server.test. Patch from Chiu-Hsiang Hsu. 423 424 - Issue #21159: Improve message in configparser.InterpolationMissingOptionError. 425 Patch from ukasz Langa. 426 427 - Issue #23888: Handle fractional time in cookie expiry. Patch by ssh. 428 429 - Issue #23004: mock_open() now reads binary data correctly when the type of 430 read_data is bytes. Initial patch by Aaron Hill. 431 432 - Issue #23652: Make it possible to compile the select module against the 433 libc headers from the Linux Standard Base, which do not include some 434 EPOLL macros. Patch by Matt Frank. 435 436 - Issue #22932: Fix timezones in email.utils.formatdate. 437 Patch from Dmitry Shachnev. 438 439 - Issue #23779: imaplib raises TypeError if authenticator tries to abort. 440 Patch from Craig Holmquist. 441 442 - Issue #23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch 443 written by Matthieu Gautier. 444 445 - Issue #23254: Document how to close the TCPServer listening socket. 446 Patch from Martin Panter. 447 448 - Issue #19450: Update Windows and OS X installer builds to use SQLite 3.8.11. 449 450 - Issue #23441: rcompleter now prints a tab character instead of displaying 451 possible completions for an empty word. Initial patch by Martin Sekera. 452 453 - Issue #24735: Fix invalid memory access in 454 itertools.combinations_with_replacement(). 455 456 - Issue #17527: Add PATCH to wsgiref.validator. Patch from Luca Sbardella. 457 458 - Issue #24683: Fixed crashes in _json functions called with arguments of 459 inappropriate type. 460 461 - Issue #21697: shutil.copytree() now correctly handles symbolic links that 462 point to directories. Patch by Eduardo Seabra and Thomas Kluyver. 463 464 - Issue #24620: Random.setstate() now validates the value of state last element. 465 466 - Issue #22153: Improve unittest docs. Patch from Martin Panter and evilzero. 467 468 - Issue #24206: Fixed __eq__ and __ne__ methods of inspect classes. 469 470 - Issue #21750: mock_open.read_data can now be read from each instance, as it 471 could in Python 3.3. 472 473 - Issue #23247: Fix a crash in the StreamWriter.reset() of CJK codecs. 474 475 - Issue #18622: unittest.mock.mock_open().reset_mock would recurse infinitely. 476 Patch from Nicola Palumbo and Laurent De Buyst. 477 478 - Issue #24608: chunk.Chunk.read() now always returns bytes, not str. 479 480 - Issue #18684: Fixed reading out of the buffer in the re module. 481 482 - Issue #24259: tarfile now raises a ReadError if an archive is truncated 483 inside a data segment. 484 485 - Issue #24552: Fix use after free in an error case of the _pickle module. 486 487 - Issue #24514: tarfile now tolerates number fields consisting of only 488 whitespace. 489 490 - Issue #19176: Fixed doctype() related bugs in C implementation of ElementTree. 491 A deprecation warning no longer issued by XMLParser subclass with default 492 doctype() method. Direct call of doctype() now issues a warning. Parser's 493 doctype() now is not called if target's doctype() is called. Based on patch 494 by Martin Panter. 495 496 - Issue #20387: Restore semantic round-trip correctness in tokenize/untokenize 497 for tab-indented blocks. 498 499 - Issue #24456: Fixed possible buffer over-read in adpcm2lin() and lin2adpcm() 500 functions of the audioop module. 501 502 - Issue #24336: The contextmanager decorator now works with functions with 503 keyword arguments called "func" and "self". Patch by Martin Panter. 504 505 - Issue #24489: ensure a previously set C errno doesn't disturb cmath.polar(). 506 507 - Issue #5633: Fixed timeit when the statement is a string and the setup is not. 508 509 - Issue #24326: Fixed audioop.ratecv() with non-default weightB argument. 510 Original patch by David Moore. 511 512 - Issue #23840: tokenize.open() now closes the temporary binary file on error 513 to fix a resource warning. 514 515 - Issue #24257: Fixed segmentation fault in sqlite3.Row constructor with faked 516 cursor type. 517 518 - Issue #22107: tempfile.gettempdir() and tempfile.mkdtemp() now try again 519 when a directory with the chosen name already exists on Windows as well as 520 on Unix. tempfile.mkstemp() now fails early if parent directory is not 521 valid (not exists or is a file) on Windows. 522 523 - Issue #6598: Increased time precision and random number range in 524 email.utils.make_msgid() to strengthen the uniqueness of the message ID. 525 526 - Issue #24091: Fixed various crashes in corner cases in C implementation of 527 ElementTree. 528 529 - Issue #21931: msilib.FCICreate() now raises TypeError in the case of a bad 530 argument instead of a ValueError with a bogus FCI error number. 531 Patch by Jeffrey Armstrong. 532 533 - Issue #23796: peek and read1 methods of BufferedReader now raise ValueError 534 if they called on a closed object. Patch by John Hergenroeder. 535 536 - Issue #24521: Fix possible integer overflows in the pickle module. 537 538 - Issue #22931: Allow '[' and ']' in cookie values. 539 540 - Issue #20274: Remove ignored and erroneous "kwargs" parameters from three 541 METH_VARARGS methods on _sqlite.Connection. 542 543 - Issue #24094: Fix possible crash in json.encode with poorly behaved dict 544 subclasses. 545 546 - Asyncio issue 222 / PR 231 (Victor Stinner) -- fix @coroutine 547 functions without __name__. 548 549 - Issue #9246: On POSIX, os.getcwd() now supports paths longer than 1025 bytes. 550 Patch written by William Orr. 551 552 - The keywords attribute of functools.partial is now always a dictionary. 553 554 - Issues #24099, #24100, and #24101: Fix free-after-use bug in heapq's siftup 555 and siftdown functions. 556 557 - Backport collections.deque fixes from Python 3.5. Prevents reentrant badness 558 during deletion by deferring the decref until the container has been restored 559 to a consistent state. 560 561 - Issue #23008: Fixed resolving attributes with boolean value is False in pydoc. 562 563 - Fix asyncio issue 235: LifoQueue and PriorityQueue's put didn't 564 increment unfinished tasks (this bug was introduced in 3.4.3 when 565 JoinableQueue was merged with Queue). 566 567 - Issue #23908: os functions now reject paths with embedded null character 568 on Windows instead of silently truncate them. 569 570 - Issue #23728: binascii.crc_hqx() could return an integer outside of the range 571 0-0xffff for empty data. 572 573 - Issue #23811: Add missing newline to the PyCompileError error message. 574 Patch by Alex Shkop. 575 576 - Issue #17898: Fix exception in gettext.py when parsing certain plural forms. 577 578 - Issue #22982: Improve BOM handling when seeking to multiple positions of 579 a writable text file. 580 581 - Issue #23865: close() methods in multiple modules now are idempotent and more 582 robust at shutdown. If they need to release multiple resources, all are 583 released even if errors occur. 584 585 - Issue #23881: urllib.request.ftpwrapper constructor now closes the socket if 586 the FTP connection failed to fix a ResourceWarning. 587 588 - Issue #23400: Raise same exception on both Python 2 and 3 if sem_open is not 589 available. Patch by Davin Potts. 590 591 - Issue #15133: _tkinter.tkapp.getboolean() now supports Tcl_Obj and always 592 returns bool. tkinter.BooleanVar now validates input values (accepted bool, 593 int, str, and Tcl_Obj). tkinter.BooleanVar.get() now always returns bool. 594 595 - Issue #23338: Fixed formatting ctypes error messages on Cygwin. 596 Patch by Makoto Kato. 597 598 - Issue #16840: Tkinter now supports 64-bit integers added in Tcl 8.4 and 599 arbitrary precision integers added in Tcl 8.5. 600 601 - Issue #23834: Fix socket.sendto(), use the C Py_ssize_t type to store the 602 result of sendto() instead of the C int type. 603 604 - Issue #21526: Tkinter now supports new boolean type in Tcl 8.5. 605 606 - Issue #23838: linecache now clears the cache and returns an empty result on 607 MemoryError. 608 609 - Issue #18473: Fixed 2to3 and 3to2 compatible pickle mappings. Fixed 610 ambigious reverse mappings. Added many new mappings. Import mapping is no 611 longer applied to modules already mapped with full name mapping. 612 613 - Issue #23745: The new email header parser now handles duplicate MIME 614 parameter names without error, similar to how get_param behaves. 615 616 - Issue #23792: Ignore KeyboardInterrupt when the pydoc pager is active. 617 This mimics the behavior of the standard unix pagers, and prevents 618 pipepager from shutting down while the pager itself is still running. 619 620 - Issue #23742: ntpath.expandvars() no longer loses unbalanced single quotes. 621 622 - Issue #21802: The reader in BufferedRWPair now is closed even when closing 623 writer failed in BufferedRWPair.close(). 624 625 - Issue #23671: string.Template now allows to specify the "self" parameter as 626 keyword argument. string.Formatter now allows to specify the "self" and 627 the "format_string" parameters as keyword arguments. 628 629 - Issue #21560: An attempt to write a data of wrong type no longer cause 630 GzipFile corruption. Original patch by Wolfgang Maier. 631 632 - Issue #23647: Increase imaplib's MAXLINE to accommodate modern mailbox sizes. 633 634 - Issue #23539: If body is None, http.client.HTTPConnection.request now sets 635 Content-Length to 0 for PUT, POST, and PATCH headers to avoid 411 errors from 636 some web servers. 637 638 - Issue #22351: The nntplib.NNTP constructor no longer leaves the connection 639 and socket open until the garbage collector cleans them up. Patch by 640 Martin Panter. 641 642 - Issue #23136: _strptime now uniformly handles all days in week 0, including 643 Dec 30 of previous year. Based on patch by Jim Carroll. 644 645 - Issue #23700: Iterator of NamedTemporaryFile now keeps a reference to 646 NamedTemporaryFile instance. Patch by Bohuslav Kabrda. 647 648 - Issue #22903: The fake test case created by unittest.loader when it fails 649 importing a test module is now picklable. 650 651 - Issue #23568: Add rdivmod support to MagicMock() objects. 652 Patch by Hkan Lvdahl. 653 654 - Issue #23138: Fixed parsing cookies with absent keys or values in cookiejar. 655 Patch by Demian Brecht. 656 657 - Issue #23051: multiprocessing.Pool methods imap() and imap_unordered() now 658 handle exceptions raised by an iterator. Patch by Alon Diamant and Davin 659 Potts. 660 661 - Issue #22928: Disabled HTTP header injections in http.client. 662 Original patch by Demian Brecht. 663 664 - Issue #23615: Modules bz2, tarfile and tokenize now can be reloaded with 665 imp.reload(). Patch by Thomas Kluyver. 666 667 - Issue #23476: In the ssl module, enable OpenSSL's X509_V_FLAG_TRUSTED_FIRST 668 flag on certificate stores when it is available. 669 670 - Issue #23576: Avoid stalling in SSL reads when EOF has been reached in the 671 SSL layer but the underlying connection hasn't been closed. 672 673 - Issue #23504: Added an __all__ to the types module. 674 675 - Issue #20204: Added the __module__ attribute to _tkinter classes. 676 677 - Issue #23521: Corrected pure python implementation of timedelta division. 678 679 * Eliminated OverflowError from timedelta * float for some floats; 680 * Corrected rounding in timedelta true division. 681 682 - Issue #21619: Popen objects no longer leave a zombie after exit in the with 683 statement if the pipe was broken. Patch by Martin Panter. 684 685 - Issue #6639: Module-level turtle functions no longer raise TclError after 686 closing the window. 687 688 - Issues #814253, #9179: Warnings now are raised when group references and 689 conditional group references are used in lookbehind assertions in regular 690 expressions. 691 692 - Issue #23215: Multibyte codecs with custom error handlers that ignores errors 693 consumed too much memory and raised SystemError or MemoryError. 694 Original patch by Aleksi Torhamo. 695 696 - Issue #5700: io.FileIO() called flush() after closing the file. 697 flush() was not called in close() if closefd=False. 698 699 - Issue #23374: Fixed pydoc failure with non-ASCII files when stdout encoding 700 differs from file system encoding (e.g. on Mac OS). 701 702 - Issue #23481: Remove RC4 from the SSL module's default cipher list. 703 704 - Issue #21548: Fix pydoc.synopsis() and pydoc.apropos() on modules with empty 705 docstrings. 706 707 - Issue #22885: Fixed arbitrary code execution vulnerability in the dbm.dumb 708 module. Original patch by Claudiu Popa. 709 710 - Issue #23146: Fix mishandling of absolute Windows paths with forward 711 slashes in pathlib. 712 713 - Issue #23421: Fixed compression in tarfile CLI. Patch by wdv4758h. 714 715 - Issue #23367: Fix possible overflows in the unicodedata module. 716 717 - Issue #23361: Fix possible overflow in Windows subprocess creation code. 718 719 - Issue #23801: Fix issue where cgi.FieldStorage did not always ignore the 720 entire preamble to a multipart body. 721 722 - Issue #23310: Fix MagicMock's initializer to work with __methods__, just 723 like configure_mock(). Patch by Kasia Jachim. 724 725 - asyncio: New event loop APIs: set_task_factory() and get_task_factory(). 726 727 - asyncio: async() function is deprecated in favour of ensure_future(). 728 729 - Issue #23898: Fix inspect.classify_class_attrs() to support attributes 730 with overloaded __eq__ and __bool__. Patch by Mike Bayer. 731 732 - Issue #24298: Fix inspect.signature() to correctly unwrap wrappers 733 around bound methods. 734 735 - Issue #23572: Fixed functools.singledispatch on classes with falsy 736 metaclasses. Patch by Ethan Furman. 737 738 IDLE 739 ---- 740 741 - Issue 15348: Stop the debugger engine (normally in a user process) 742 before closing the debugger window (running in the IDLE process). 743 This prevents the RuntimeErrors that were being caught and ignored. 744 745 - Issue #24455: Prevent IDLE from hanging when a) closing the shell while the 746 debugger is active (15347); b) closing the debugger with the [X] button 747 (15348); and c) activating the debugger when already active (24455). 748 The patch by Mark Roseman does this by making two changes. 749 1. Suspend and resume the gui.interaction method with the tcl vwait 750 mechanism intended for this purpose (instead of root.mainloop & .quit). 751 2. In gui.run, allow any existing interaction to terminate first. 752 753 - Change 'The program' to 'Your program' in an IDLE 'kill program?' message 754 to make it clearer that the program referred to is the currently running 755 user program, not IDLE itself. 756 757 - Issue #24750: Improve the appearance of the IDLE editor window status bar. 758 Patch by Mark Roseman. 759 760 - Issue #25313: Change the handling of new built-in text color themes to better 761 address the compatibility problem introduced by the addition of IDLE Dark. 762 Consistently use the revised idleConf.CurrentTheme everywhere in idlelib. 763 764 - Issue #24782: Extension configuration is now a tab in the IDLE Preferences 765 dialog rather than a separate dialog. The former tabs are now a sorted 766 list. Patch by Mark Roseman. 767 768 - Issue #22726: Re-activate the config dialog help button with some content 769 about the other buttons and the new IDLE Dark theme. 770 771 - Issue #24820: IDLE now has an 'IDLE Dark' built-in text color theme. 772 It is more or less IDLE Classic inverted, with a cobalt blue background. 773 Strings, comments, keywords, ... are still green, red, orange, ... . 774 To use it with IDLEs released before November 2015, hit the 775 'Save as New Custom Theme' button and enter a new name, 776 such as 'Custom Dark'. The custom theme will work with any IDLE 777 release, and can be modified. 778 779 - Issue #25224: README.txt is now an idlelib index for IDLE developers and 780 curious users. The previous user content is now in the IDLE doc chapter. 781 'IDLE' now means 'Integrated Development and Learning Environment'. 782 783 - Issue #24820: Users can now set breakpoint colors in 784 Settings -> Custom Highlighting. Original patch by Mark Roseman. 785 786 - Issue #24972: Inactive selection background now matches active selection 787 background, as configured by users, on all systems. Found items are now 788 always highlighted on Windows. Initial patch by Mark Roseman. 789 790 - Issue #24570: Idle: make calltip and completion boxes appear on Macs 791 affected by a tk regression. Initial patch by Mark Roseman. 792 793 - Issue #24988: Idle ScrolledList context menus (used in debugger) 794 now work on Mac Aqua. Patch by Mark Roseman. 795 796 - Issue #24801: Make right-click for context menu work on Mac Aqua. 797 Patch by Mark Roseman. 798 799 - Issue #25173: Associate tkinter messageboxes with a specific widget. 800 For Mac OSX, make them a 'sheet'. Patch by Mark Roseman. 801 802 - Issue #25198: Enhance the initial html viewer now used for Idle Help. 803 * Properly indent fixed-pitch text (patch by Mark Roseman). 804 * Give code snippet a very Sphinx-like light blueish-gray background. 805 * Re-use initial width and height set by users for shell and editor. 806 * When the Table of Contents (TOC) menu is used, put the section header 807 at the top of the screen. 808 809 - Issue #25225: Condense and rewrite Idle doc section on text colors. 810 811 - Issue #21995: Explain some differences between IDLE and console Python. 812 813 - Issue #22820: Explain need for *print* when running file from Idle editor. 814 815 - Issue #25224: Doc: augment Idle feature list and no-subprocess section. 816 817 - Issue #25219: Update doc for Idle command line options. 818 Some were missing and notes were not correct. 819 820 - Issue #24861: Most of idlelib is private and subject to change. 821 Use idleib.idle.* to start Idle. See idlelib.__init__.__doc__. 822 823 - Issue #25199: Idle: add synchronization comments for future maintainers. 824 825 - Issue #16893: Replace help.txt with help.html for Idle doc display. 826 The new idlelib/help.html is rstripped Doc/build/html/library/idle.html. 827 It looks better than help.txt and will better document Idle as released. 828 The tkinter html viewer that works for this file was written by Mark Roseman. 829 The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated. 830 831 - Issue #24199: Deprecate unused idlelib.idlever with possible removal in 3.6. 832 833 - Issue #24790: Remove extraneous code (which also create 2 & 3 conflicts). 834 835 - Issue #23672: Allow Idle to edit and run files with astral chars in name. 836 Patch by Mohd Sanad Zaki Rizvi. 837 838 - Issue 24745: Idle editor default font. Switch from Courier to 839 platform-sensitive TkFixedFont. This should not affect current customized 840 font selections. If there is a problem, edit $HOME/.idlerc/config-main.cfg 841 and remove 'fontxxx' entries from [Editor Window]. Patch by Mark Roseman. 842 843 - Issue #21192: Idle editor. When a file is run, put its name in the restart bar. 844 Do not print false prompts. Original patch by Adnan Umer. 845 846 - Issue #13884: Idle menus. Remove tearoff lines. Patch by Roger Serwy. 847 848 - Issue #23184: remove unused names and imports in idlelib. 849 Initial patch by Al Sweigart. 850 851 Tests 852 ----- 853 854 - Issue #25616: Tests for OrderedDict are extracted from test_collections 855 into separate file test_ordered_dict. 856 857 - Issue #25099: Make test_compileall not fail when an entry on sys.path cannot 858 be written to (commonly seen in administrative installs on Windows). 859 860 - Issue #24751: When running regrtest with the ``-w`` command line option, 861 a test run is no longer marked as a failure if all tests succeed when 862 re-run. 863 864 - Issue #21520: test_zipfile no longer fails if the word 'bad' appears 865 anywhere in the name of the current directory. 866 867 - Issue #23799: Added test.support.start_threads() for running and 868 cleaning up multiple threads. 869 870 - Issue #22390: test.regrtest now emits a warning if temporary files or 871 directories are left after running a test. 872 873 - Issue #23583: Added tests for standard IO streams in IDLE. 874 875 Build 876 ----- 877 878 - Issue #23445: pydebug builds now use "gcc -Og" where possible, to make 879 the resulting executable faster. 880 881 - Issue #24603: Update Windows builds to use OpenSSL1.0.2d 882 and OS X 10.5 installer to use OpenSSL 1.0.2e. 883 884 C API 885 ----- 886 887 - Issue #23998: PyImport_ReInitLock() now checks for lock allocation error 888 889 Documentation 890 ------------- 891 892 - Issue #12067: Rewrite Comparisons section in the Expressions chapter of the 893 language reference. Some of the details of comparing mixed types were 894 incorrect or ambiguous. NotImplemented is only relevant at a lower level 895 than the Expressions chapter. Added details of comparing range() objects, 896 and default behaviour and consistency suggestions for user-defined classes. 897 Patch from Andy Maier. 898 899 - Issue #24952: Clarify the default size argument of stack_size() in 900 the "threading" and "_thread" modules. Patch from Mattip. 901 902 - Issue #24808: Update the types of some PyTypeObject fields. Patch by 903 Joseph Weston. 904 905 - Issue #22812: Fix unittest discovery examples. 906 Patch from Pam McA'Nulty. 907 908 - Issue #24129: Clarify the reference documentation for name resolution. 909 This includes removing the assumption that readers will be familiar with the 910 name resolution scheme Python used prior to the introduction of lexical 911 scoping for function namespaces. Patch by Ivan Levkivskyi. 912 913 - Issue #20769: Improve reload() docs. Patch by Dorian Pula. 914 915 - Issue #23589: Remove duplicate sentence from the FAQ. Patch by Yongzhi Pan. 916 917 - Issue #24729: Correct IO tutorial to match implementation regarding 918 encoding parameter to open function. 919 920 - Issue #24351: Clarify what is meant by "identifier" in the context of 921 string.Template instances. 922 923 - Issue #22155: Add File Handlers subsection with createfilehandler to tkinter 924 doc. Remove obsolete example from FAQ. Patch by Martin Panter. 925 926 - Issue #24029: Document the name binding behavior for submodule imports. 927 928 - Issue #24077: Fix typo in man page for -I command option: -s, not -S. 929 930 Tools/Demos 931 ----------- 932 933 - Issue #25440: Fix output of python-config --extension-suffix. 934 935 - Issue #23330: h2py now supports arbitrary filenames in #include. 936 937 - Issue #24031: make patchcheck now supports git checkouts, too. 938 939 Windows 940 ------- 941 942 - Issue #24306: Sets component ID for launcher to match 3.5 and later 943 to avoid downgrading. 944 945 - Issue #25022: Removed very outdated PC/example_nt/ directory. 946 947 948 What's New in Python 3.4.3? 949 =========================== 950 951 Release date: 2015-02-23 952 953 Core and Builtins 954 ----------------- 955 956 - Issue #22735: Fix many edge cases (including crashes) involving custom mro() 957 implementations. 958 959 - Issue #22896: Avoid using PyObject_AsCharBuffer(), PyObject_AsReadBuffer() 960 and PyObject_AsWriteBuffer(). 961 962 - Issue #21295: Revert some changes (issue #16795) to AST line numbers and 963 column offsets that constituted a regression. 964 965 - Issue #21408: The default __ne__() now returns NotImplemented if __eq__() 966 returned NotImplemented. Original patch by Martin Panter. 967 968 - Issue #23321: Fixed a crash in str.decode() when error handler returned 969 replacement string longer than malformed input data. 970 971 - Issue #23048: Fix jumping out of an infinite while loop in the pdb. 972 973 - Issue #20335: bytes constructor now raises TypeError when encoding or errors 974 is specified with non-string argument. Based on patch by Renaud Blanch. 975 976 - Issue #22335: Fix crash when trying to enlarge a bytearray to 0x7fffffff 977 bytes on a 32-bit platform. 978 979 - Issue #22653: Fix an assertion failure in debug mode when doing a reentrant 980 dict insertion in debug mode. 981 982 - Issue #22643: Fix integer overflow in Unicode case operations (upper, lower, 983 title, swapcase, casefold). 984 985 - Issue #22604: Fix assertion error in debug mode when dividing a complex 986 number by (nan+0j). 987 988 - Issue #22470: Fixed integer overflow issues in "backslashreplace", 989 "xmlcharrefreplace", and "surrogatepass" error handlers. 990 991 - Issue #22520: Fix overflow checking when generating the repr of a unicode 992 object. 993 994 - Issue #22519: Fix overflow checking in PyBytes_Repr. 995 996 - Issue #22518: Fix integer overflow issues in latin-1 encoding. 997 998 - Issue #23165: Perform overflow checks before allocating memory in the 999 _Py_char2wchar function. 1000 1001 Library 1002 ------- 1003 1004 - Issue #23399: pyvenv creates relative symlinks where possible. 1005 1006 - Issue #23099: Closing io.BytesIO with exported buffer is rejected now to 1007 prevent corrupting exported buffer. 1008 1009 - Issue #23363: Fix possible overflow in itertools.permutations. 1010 1011 - Issue #23364: Fix possible overflow in itertools.product. 1012 1013 - Issue #23366: Fixed possible integer overflow in itertools.combinations. 1014 1015 - Issue #23369: Fixed possible integer overflow in 1016 _json.encode_basestring_ascii. 1017 1018 - Issue #23353: Fix the exception handling of generators in 1019 PyEval_EvalFrameEx(). At entry, save or swap the exception state even if 1020 PyEval_EvalFrameEx() is called with throwflag=0. At exit, the exception state 1021 is now always restored or swapped, not only if why is WHY_YIELD or 1022 WHY_RETURN. Patch co-written with Antoine Pitrou. 1023 1024 - Issue #18518: timeit now rejects statements which can't be compiled outside 1025 a function or a loop (e.g. "return" or "break"). 1026 1027 - Issue #23094: Fixed readline with frames in Python implementation of pickle. 1028 1029 - Issue #23268: Fixed bugs in the comparison of ipaddress classes. 1030 1031 - Issue #21408: Removed incorrect implementations of __ne__() which didn't 1032 returned NotImplemented if __eq__() returned NotImplemented. The default 1033 __ne__() now works correctly. 1034 1035 - Issue #19996: :class:`email.feedparser.FeedParser` now handles (malformed) 1036 headers with no key rather than assuming the body has started. 1037 1038 - Issue #23248: Update ssl error codes from latest OpenSSL git master. 1039 1040 - Issue #23098: 64-bit dev_t is now supported in the os module. 1041 1042 - Issue #23250: In the http.cookies module, capitalize "HttpOnly" and "Secure" 1043 as they are written in the standard. 1044 1045 - Issue #23063: In the distutils' check command, fix parsing of reST with code or 1046 code-block directives. 1047 1048 - Issue #23209, #23225: selectors.BaseSelector.close() now clears its internal 1049 reference to the selector mapping to break a reference cycle. Initial patch 1050 written by Martin Richard. 1051 1052 - Issue #21356: Make ssl.RAND_egd() optional to support LibreSSL. The 1053 availability of the function is checked during the compilation. Patch written 1054 by Bernard Spil. 1055 1056 - Issue #20896, #22935: The :func:`ssl.get_server_certificate` function now 1057 uses the :data:`~ssl.PROTOCOL_SSLv23` protocol by default, not 1058 :data:`~ssl.PROTOCOL_SSLv3`, for maximum compatibility and support platforms 1059 where :data:`~ssl.PROTOCOL_SSLv3` support is disabled. 1060 1061 - Issue #23111: In the ftplib, make ssl.PROTOCOL_SSLv23 the default protocol 1062 version. 1063 1064 - Issue #23132: Mitigate regression in speed and clarity in functools.total_ordering. 1065 1066 - Issue #22585: On OpenBSD 5.6 and newer, os.urandom() now calls getentropy(), 1067 instead of reading /dev/urandom, to get pseudo-random bytes. 1068 1069 - Issue #23112: Fix SimpleHTTPServer to correctly carry the query string and 1070 fragment when it redirects to add a trailing slash. 1071 1072 - Issue #23093: In the io, module allow more operations to work on detached 1073 streams. 1074 1075 - Issue #19104: pprint now produces evaluable output for wrapped strings. 1076 1077 - Issue #23071: Added missing names to codecs.__all__. Patch by Martin Panter. 1078 1079 - Issue #15513: Added a __sizeof__ implementation for pickle classes. 1080 1081 - Issue #19858: pickletools.optimize() now aware of the MEMOIZE opcode, can 1082 produce more compact result and no longer produces invalid output if input 1083 data contains MEMOIZE opcodes together with PUT or BINPUT opcodes. 1084 1085 - Issue #22095: Fixed HTTPConnection.set_tunnel with default port. The port 1086 value in the host header was set to "None". Patch by Demian Brecht. 1087 1088 - Issue #23016: A warning no longer produces an AttributeError when the program 1089 is run with pythonw.exe. 1090 1091 - Issue #21775: shutil.copytree(): fix crash when copying to VFAT. An exception 1092 handler assumed that that OSError objects always have a 'winerror' attribute. 1093 That is not the case, so the exception handler itself raised AttributeError 1094 when run on Linux (and, presumably, any other non-Windows OS). 1095 Patch by Greg Ward. 1096 1097 - Issue #1218234: Fix inspect.getsource() to load updated source of 1098 reloaded module. Initial patch by Berker Peksag. 1099 1100 - Issue #22959: In the constructor of http.client.HTTPSConnection, prefer the 1101 context's check_hostname attribute over the *check_hostname* parameter. 1102 1103 - Issue #16043: Add a default limit for the amount of data xmlrpclib.gzip_decode 1104 will return. This resolves CVE-2013-1753. 1105 1106 - Issue #22966: Fix __pycache__ pyc file name clobber when pyc_compile is 1107 asked to compile a source file containing multiple dots in the source file 1108 name. 1109 1110 - Issue #21971: Update turtledemo doc and add module to the index. 1111 1112 - Issue #21032. Fixed socket leak if HTTPConnection.getresponse() fails. 1113 Original patch by Martin Panter. 1114 1115 - Issue #22960: Add a context argument to xmlrpclib.ServerProxy constructor. 1116 1117 - Issue #22915: SAX parser now supports files opened with file descriptor or 1118 bytes path. 1119 1120 - Issue #22609: Constructors and update methods of mapping classes in the 1121 collections module now accept the self keyword argument. 1122 1123 - Issue #22788: Add *context* parameter to logging.handlers.HTTPHandler. 1124 1125 - Issue #22921: Allow SSLContext to take the *hostname* parameter even if 1126 OpenSSL doesn't support SNI. 1127 1128 - Issue #22894: TestCase.subTest() would cause the test suite to be stopped 1129 when in failfast mode, even in the absence of failures. 1130 1131 - Issue #22638: SSLv3 is now disabled throughout the standard library. 1132 It can still be enabled by instantiating a SSLContext manually. 1133 1134 - Issue #22370: Windows detection in pathlib is now more robust. 1135 1136 - Issue #22841: Reject coroutines in asyncio add_signal_handler(). 1137 Patch by Ludovic.Gasc. 1138 1139 - Issue #22849: Fix possible double free in the io.TextIOWrapper constructor. 1140 1141 - Issue #12728: Different Unicode characters having the same uppercase but 1142 different lowercase are now matched in case-insensitive regular expressions. 1143 1144 - Issue #22821: Fixed fcntl() with integer argument on 64-bit big-endian 1145 platforms. 1146 1147 - Issue #22406: Fixed the uu_codec codec incorrectly ported to 3.x. 1148 Based on patch by Martin Panter. 1149 1150 - Issue #17293: uuid.getnode() now determines MAC address on AIX using netstat. 1151 Based on patch by Aivars Kalvns. 1152 1153 - Issue #22769: Fixed ttk.Treeview.tag_has() when called without arguments. 1154 1155 - Issue #22417: Verify certificates by default in httplib (PEP 476). 1156 1157 - Issue #22775: Fixed unpickling of http.cookies.SimpleCookie with protocol 2 1158 and above. Patch by Tim Graham. 1159 1160 - Issue #22366: urllib.request.urlopen will accept a context object 1161 (SSLContext) as an argument which will then used be for HTTPS connection. 1162 Patch by Alex Gaynor. 1163 1164 - Issue #22776: Brought excluded code into the scope of a try block in 1165 SysLogHandler.emit(). 1166 1167 - Issue #22665: Add missing get_terminal_size and SameFileError to 1168 shutil.__all__. 1169 1170 - Issue #17381: Fixed handling of case-insensitive ranges in regular 1171 expressions. 1172 1173 - Issue #22410: Module level functions in the re module now cache compiled 1174 locale-dependent regular expressions taking into account the locale. 1175 1176 - Issue #22759: Query methods on pathlib.Path() (exists(), is_dir(), etc.) 1177 now return False when the underlying stat call raises NotADirectoryError. 1178 1179 - Issue #8876: distutils now falls back to copying files when hard linking 1180 doesn't work. This allows use with special filesystems such as VirtualBox 1181 shared folders. 1182 1183 - Issue #18853: Fixed ResourceWarning in shlex.__nain__. 1184 1185 - Issue #9351: Defaults set with set_defaults on an argparse subparser 1186 are no longer ignored when also set on the parent parser. 1187 1188 - Issue #21991: Make email.headerregistry's header 'params' attributes 1189 be read-only (MappingProxyType). Previously the dictionary was modifiable 1190 but a new one was created on each access of the attribute. 1191 1192 - Issue #22641: In asyncio, the default SSL context for client connections 1193 is now created using ssl.create_default_context(), for stronger security. 1194 1195 - Issue #22435: Fix a file descriptor leak when SocketServer bind fails. 1196 1197 - Issue #13096: Fixed segfault in CTypes POINTER handling of large 1198 values. 1199 1200 - Issue #11694: Raise ConversionError in xdrlib as documented. Patch 1201 by Filip Gruszczyski and Claudiu Popa. 1202 1203 - Issue #22462: Fix pyexpat's creation of a dummy frame to make it 1204 appear in exception tracebacks. 1205 1206 - Issue #21173: Fix len() on a WeakKeyDictionary when .clear() was called 1207 with an iterator alive. 1208 1209 - Issue #11866: Eliminated race condition in the computation of names 1210 for new threads. 1211 1212 - Issue #21905: Avoid RuntimeError in pickle.whichmodule() when sys.modules 1213 is mutated while iterating. Patch by Olivier Grisel. 1214 1215 - Issue #22219: The zipfile module CLI now adds entries for directories 1216 (including empty directories) in ZIP file. 1217 1218 - Issue #22449: In the ssl.SSLContext.load_default_certs, consult the 1219 environmental variables SSL_CERT_DIR and SSL_CERT_FILE on Windows. 1220 1221 - Issue #20076: Added non derived UTF-8 aliases to locale aliases table. 1222 1223 - Issue #20079: Added locales supported in glibc 2.18 to locale alias table. 1224 1225 - Issue #22396: On 32-bit AIX platform, don't expose os.posix_fadvise() nor 1226 os.posix_fallocate() because their prototypes in system headers are wrong. 1227 1228 - Issue #22517: When a io.BufferedRWPair object is deallocated, clear its 1229 weakrefs. 1230 1231 - Issue #22448: Improve canceled timer handles cleanup to prevent 1232 unbound memory usage. Patch by Joshua Moore-Oliva. 1233 1234 - Issue #23009: Make sure selectors.EpollSelecrtor.select() works when no 1235 FD is registered. 1236 1237 IDLE 1238 ---- 1239 1240 - Issue #20577: Configuration of the max line length for the FormatParagraph 1241 extension has been moved from the General tab of the Idle preferences dialog 1242 to the FormatParagraph tab of the Config Extensions dialog. 1243 Patch by Tal Einat. 1244 1245 - Issue #16893: Update Idle doc chapter to match current Idle and add new 1246 information. 1247 1248 - Issue #3068: Add Idle extension configuration dialog to Options menu. 1249 Changes are written to HOME/.idlerc/config-extensions.cfg. 1250 Original patch by Tal Einat. 1251 1252 - Issue #16233: A module browser (File : Class Browser, Alt+C) requires an 1253 editor window with a filename. When Class Browser is requested otherwise, 1254 from a shell, output window, or 'Untitled' editor, Idle no longer displays 1255 an error box. It now pops up an Open Module box (Alt+M). If a valid name 1256 is entered and a module is opened, a corresponding browser is also opened. 1257 1258 - Issue #4832: Save As to type Python files automatically adds .py to the 1259 name you enter (even if your system does not display it). Some systems 1260 automatically add .txt when type is Text files. 1261 1262 - Issue #21986: Code objects are not normally pickled by the pickle module. 1263 To match this, they are no longer pickled when running under Idle. 1264 1265 - Issue #23180: Rename IDLE "Windows" menu item to "Window". 1266 Patch by Al Sweigart. 1267 1268 Tests 1269 ----- 1270 1271 - Issue #23392: Added tests for marshal C API that works with FILE*. 1272 1273 - Issue #18982: Add tests for CLI of the calendar module. 1274 1275 - Issue #19548: Added some additional checks to test_codecs to ensure that 1276 statements in the updated documentation remain accurate. Patch by Martin 1277 Panter. 1278 1279 - Issue #22838: All test_re tests now work with unittest test discovery. 1280 1281 - Issue #22173: Update lib2to3 tests to use unittest test discovery. 1282 1283 - Issue #16000: Convert test_curses to use unittest. 1284 1285 - Issue #21456: Skip two tests in test_urllib2net.py if _ssl module not 1286 present. Patch by Remi Pointel. 1287 1288 - Issue #22770: Prevent some Tk segfaults on OS X when running gui tests. 1289 1290 - Issue #23211: Workaround test_logging failure on some OS X 10.6 systems. 1291 1292 - Issue #23345: Prevent test_ssl failures with large OpenSSL patch level 1293 values (like 0.9.8zc). 1294 1295 - Issue #22289: Prevent test_urllib2net failures due to ftp connection timeout. 1296 1297 Build 1298 ----- 1299 1300 - Issue #15506: Use standard PKG_PROG_PKG_CONFIG autoconf macro in the configure 1301 script. 1302 1303 - Issue #22935: Allow the ssl module to be compiled if openssl doesn't support 1304 SSL 3. 1305 1306 - Issue #16537: Check whether self.extensions is empty in setup.py. Patch by 1307 Jonathan Hosmer. 1308 1309 - Issue #18096: Fix library order returned by python-config. 1310 1311 - Issue #17219: Add library build dir for Python extension cross-builds. 1312 1313 - Issue #17128: Use private version of OpenSSL for 3.4.3 OS X 10.5+ installer. 1314 1315 C API 1316 ----- 1317 1318 - Issue #22079: PyType_Ready() now checks that statically allocated type has 1319 no dynamically allocated bases. 1320 1321 Documentation 1322 ------------- 1323 1324 - Issue #19548: Update the codecs module documentation to better cover the 1325 distinction between text encodings and other codecs, together with other 1326 clarifications. Patch by Martin Panter. 1327 1328 - Issue #22914: Update the Python 2/3 porting HOWTO to describe a more automated 1329 approach. 1330 1331 - Issue #21514: The documentation of the json module now refers to new JSON RFC 1332 7159 instead of obsoleted RFC 4627. 1333 1334 Tools/Demos 1335 ----------- 1336 1337 - Issue #22314: pydoc now works when the LINES environment variable is set. 1338 1339 Windows 1340 ------- 1341 1342 - Issue #17896: The Windows build scripts now expect external library sources 1343 to be in ``PCbuild\..\externals`` rather than ``PCbuild\..\..``. 1344 1345 - Issue #17717: The Windows build scripts now use a copy of NASM pulled from 1346 svn.python.org to build OpenSSL. 1347 1348 - Issue #22644: The bundled version of OpenSSL has been updated to 1.0.1j. 1349 1350 1351 What's New in Python 3.4.2? 1352 =========================== 1353 1354 Release date: 2014-10-06 1355 1356 Library 1357 ------- 1358 1359 - Issue #10510: distutils register and upload methods now use HTML standards 1360 compliant CRLF line endings. 1361 1362 - Issue #9850: Fixed macpath.join() for empty first component. Patch by 1363 Oleg Oshmyan. 1364 1365 - Issue #22427: TemporaryDirectory no longer attempts to clean up twice when 1366 used in the with statement in generator. 1367 1368 - Issue #20912: Now directories added to ZIP file have correct Unix and MS-DOS 1369 directory attributes. 1370 1371 - Issue #21866: ZipFile.close() no longer writes ZIP64 central directory 1372 records if allowZip64 is false. 1373 1374 - Issue #22415: Fixed debugging output of the GROUPREF_EXISTS opcode in the re 1375 module. Removed trailing spaces in debugging output. 1376 1377 - Issue #22423: Unhandled exception in thread no longer causes unhandled 1378 AttributeError when sys.stderr is None. 1379 1380 - Issue #21332: Ensure that ``bufsize=1`` in subprocess.Popen() selects 1381 line buffering, rather than block buffering. Patch by Akira Li. 1382 1383 1384 What's New in Python 3.4.2rc1? 1385 ============================== 1386 1387 Release date: 2014-09-22 1388 1389 Core and Builtins 1390 ----------------- 1391 1392 - Issue #22258: Fix the internal function set_inheritable() on Illumos. 1393 This platform exposes the function ``ioctl(FIOCLEX)``, but calling it fails 1394 with errno is ENOTTY: "Inappropriate ioctl for device". set_inheritable() 1395 now falls back to the slower ``fcntl()`` (``F_GETFD`` and then ``F_SETFD``). 1396 1397 - Issue #21669: With the aid of heuristics in SyntaxError.__init__, the 1398 parser now attempts to generate more meaningful (or at least more search 1399 engine friendly) error messages when "exec" and "print" are used as 1400 statements. 1401 1402 - Issue #21642: In the conditional if-else expression, allow an integer written 1403 with no space between itself and the ``else`` keyword (e.g. ``True if 42else 1404 False``) to be valid syntax. 1405 1406 - Issue #21523: Fix over-pessimistic computation of the stack effect of 1407 some opcodes in the compiler. This also fixes a quadratic compilation 1408 time issue noticeable when compiling code with a large number of "and" 1409 and "or" operators. 1410 1411 Library 1412 ------- 1413 1414 - Issue #21091: Fix API bug: email.message.EmailMessage.is_attachment is now 1415 a method. Since EmailMessage is provisional, we can change the API in a 1416 maintenance release, but we use a trick to remain backward compatible with 1417 3.4.0/1. 1418 1419 - Issue #21079: Fix email.message.EmailMessage.is_attachment to return the 1420 correct result when the header has parameters as well as a value. 1421 1422 - Issue #22247: Add NNTPError to nntplib.__all__. 1423 1424 - Issue #4180: The warnings registries are now reset when the filters 1425 are modified. 1426 1427 - Issue #22419: Limit the length of incoming HTTP request in wsgiref server to 1428 65536 bytes and send a 414 error code for higher lengths. Patch contributed 1429 by Devin Cook. 1430 1431 - Lax cookie parsing in http.cookies could be a security issue when combined 1432 with non-standard cookie handling in some Web browsers. Reported by 1433 Sergey Bobrov. 1434 1435 - Issue #22384: An exception in Tkinter callback no longer crashes the program 1436 when it is run with pythonw.exe. 1437 1438 - Issue #22168: Prevent turtle AttributeError with non-default Canvas on OS X. 1439 1440 - Issue #21147: sqlite3 now raises an exception if the request contains a null 1441 character instead of truncate it. Based on patch by Victor Stinner. 1442 1443 - Issue #21951: Fixed a crash in Tkinter on AIX when called Tcl command with 1444 empty string or tuple argument. 1445 1446 - Issue #21951: Tkinter now most likely raises MemoryError instead of crash 1447 if the memory allocation fails. 1448 1449 - Issue #22338: Fix a crash in the json module on memory allocation failure. 1450 1451 - Issue #22226: First letter no longer is stripped from the "status" key in 1452 the result of Treeview.heading(). 1453 1454 - Issue #19524: Fixed resource leak in the HTTP connection when an invalid 1455 response is received. Patch by Martin Panter. 1456 1457 - Issue #22051: turtledemo no longer reloads examples to re-run them. 1458 Initialization of variables and gui setup should be done in main(), 1459 which is called each time a demo is run, but not on import. 1460 1461 - Issue #21933: Turtledemo users can change the code font size with a menu 1462 selection or control(command) '-' or '+' or control-mousewheel. 1463 Original patch by Lita Cho. 1464 1465 - Issue #21597: The separator between the turtledemo text pane and the drawing 1466 canvas can now be grabbed and dragged with a mouse. The code text pane can 1467 be widened to easily view or copy the full width of the text. The canvas 1468 can be widened on small screens. Original patches by Jan Kanis and Lita Cho. 1469 1470 - Issue #18132: Turtledemo buttons no longer disappear when the window is 1471 shrunk. Original patches by Jan Kanis and Lita Cho. 1472 1473 - Issue #22216: smtplib now resets its state more completely after a quit. The 1474 most obvious consequence of the previous behavior was a STARTTLS failure 1475 during a connect/starttls/quit/connect/starttls sequence. 1476 1477 - Issue #22185: Fix an occasional RuntimeError in threading.Condition.wait() 1478 caused by mutation of the waiters queue without holding the lock. Patch 1479 by Doug Zongker. 1480 1481 - Issue #22182: Use e.args to unpack exceptions correctly in 1482 distutils.file_util.move_file. Patch by Claudiu Popa. 1483 1484 - The webbrowser module now uses subprocess's start_new_session=True rather 1485 than a potentially risky preexec_fn=os.setsid call. 1486 1487 - Issue #22236: Fixed Tkinter images copying operations in NoDefaultRoot mode. 1488 1489 - Issue #22191: Fix warnings.__all__. 1490 1491 - Issue #15696: Add a __sizeof__ implementation for mmap objects on Windows. 1492 1493 - Issue #22068: Avoided reference loops with Variables and Fonts in Tkinter. 1494 1495 - Issue #22165: SimpleHTTPRequestHandler now supports undecodable file names. 1496 1497 - Issue #8797: Raise HTTPError on failed Basic Authentication immediately. 1498 Initial patch by Sam Bull. 1499 1500 - Issue #20729: Restored the use of lazy iterkeys()/itervalues()/iteritems() 1501 in the mailbox module. 1502 1503 - Issue #21448: Changed FeedParser feed() to avoid O(N**2) behavior when 1504 parsing long line. Original patch by Raymond Hettinger. 1505 1506 - Issue #22184: The functools LRU Cache decorator factory now gives an earlier 1507 and clearer error message when the user forgets the required parameters. 1508 1509 - Issue #17923: glob() patterns ending with a slash no longer match non-dirs on 1510 AIX. Based on patch by Delhallt. 1511 1512 - Issue #21121: Don't force 3rd party C extensions to be built with 1513 -Werror=declaration-after-statement. 1514 1515 - Issue #21975: Fixed crash when using uninitialized sqlite3.Row (in particular 1516 when unpickling pickled sqlite3.Row). sqlite3.Row is now initialized in the 1517 __new__() method. 1518 1519 - Issue #21580: Now Tkinter correctly handles bytes arguments passed to Tk. 1520 In particular this allows to initialize images from binary data. 1521 1522 - Issue #17172: Make turtledemo start as active on OS X even when run with 1523 subprocess. Patch by Lita Cho. 1524 1525 - Issue #21704: Fix build error for _multiprocessing when semaphores 1526 are not available. Patch by Arfrever Frehtes Taifersar Arahesis. 1527 1528 - Fix repr(_socket.socket) on Windows 64-bit: don't fail with OverflowError 1529 on closed socket. repr(socket.socket) already works fine. 1530 1531 - Issue #16133: The asynchat.async_chat.handle_read() method now ignores 1532 BlockingIOError exceptions. 1533 1534 - Issue #22044: Fixed premature DECREF in call_tzinfo_method. 1535 Patch by Tom Flanagan. 1536 1537 - Issue #19884: readline: Disable the meta modifier key if stdout is not 1538 a terminal to not write the ANSI sequence "\033[1034h" into stdout. This 1539 sequence is used on some terminal (ex: TERM=xterm-256color") to enable 1540 support of 8 bit characters. 1541 1542 - Issue #21888: plistlib's load() and loads() now work if the fmt parameter is 1543 specified. 1544 1545 - Issue #21044: tarfile.open() now handles fileobj with an integer 'name' 1546 attribute. Based on patch by Antoine Pietri. 1547 1548 - Issue #21867: Prevent turtle crash due to invalid undo buffer size. 1549 1550 - Issue #19076: Don't pass the redundant 'file' argument to self.error(). 1551 1552 - Issue #21942: Fixed source file viewing in pydoc's server mode on Windows. 1553 1554 - Issue #11259: asynchat.async_chat().set_terminator() now raises a ValueError 1555 if the number of received bytes is negative. 1556 1557 - Issue #12523: asynchat.async_chat.push() now raises a TypeError if it doesn't 1558 get a bytes string 1559 1560 - Issue #21707: Add missing kwonlyargcount argument to 1561 ModuleFinder.replace_paths_in_code(). 1562 1563 - Issue #20639: calling Path.with_suffix('') allows removing the suffix 1564 again. Patch by July Tikhonov. 1565 1566 - Issue #21714: Disallow the construction of invalid paths using 1567 Path.with_name(). Original patch by Antony Lee. 1568 1569 - Issue #21897: Fix a crash with the f_locals attribute with closure 1570 variables when frame.clear() has been called. 1571 1572 - Issue #21151: Fixed a segfault in the winreg module when ``None`` is passed 1573 as a ``REG_BINARY`` value to SetValueEx. Patch by John Ehresman. 1574 1575 - Issue #21090: io.FileIO.readall() does not ignore I/O errors anymore. Before, 1576 it ignored I/O errors if at least the first C call read() succeed. 1577 1578 - Issue #21781: ssl.RAND_add() now supports strings longer than 2 GB. 1579 1580 - Issue #11453: asyncore: emit a ResourceWarning when an unclosed file_wrapper 1581 object is destroyed. The destructor now closes the file if needed. The 1582 close() method can now be called twice: the second call does nothing. 1583 1584 - Issue #21858: Better handling of Python exceptions in the sqlite3 module. 1585 1586 - Issue #21476: Make sure the email.parser.BytesParser TextIOWrapper is 1587 discarded after parsing, so the input file isn't unexpectedly closed. 1588 1589 - Issue #21729: Used the "with" statement in the dbm.dumb module to ensure 1590 files closing. Patch by Claudiu Popa. 1591 1592 - Issue #21491: socketserver: Fix a race condition in child processes reaping. 1593 1594 - Issue #21832: Require named tuple inputs to be exact strings. 1595 1596 - Issue #19145: The times argument for itertools.repeat now handles 1597 negative values the same way for keyword arguments as it does for 1598 positional arguments. 1599 1600 - Issue #21812: turtle.shapetransform did not transform the turtle on the 1601 first call. (Issue identified and fixed by Lita Cho.) 1602 1603 - Issue #21635: The difflib SequenceMatcher.get_matching_blocks() method 1604 cache didn't match the actual result. The former was a list of tuples 1605 and the latter was a list of named tuples. 1606 1607 - Issue #21722: The distutils "upload" command now exits with a non-zero 1608 return code when uploading fails. Patch by Martin Dengler. 1609 1610 - Issue #21723: asyncio.Queue: support any type of number (ex: float) for the 1611 maximum size. Patch written by Vajrasky Kok. 1612 1613 - Issue #21326: Add a new is_closed() method to asyncio.BaseEventLoop. 1614 run_forever() and run_until_complete() methods of asyncio.BaseEventLoop now 1615 raise an exception if the event loop was closed. 1616 1617 - Issue #21774: Fixed NameError for an incorrect variable reference in the 1618 XML Minidom code for creating processing instructions. 1619 (Found and fixed by Claudiu Popa.) 1620 1621 - Issue #21766: Prevent a security hole in CGIHTTPServer by URL unquoting paths 1622 before checking for a CGI script at that path. 1623 1624 - Issue #21310: Fixed possible resource leak in failed open(). 1625 1626 - Issue #21677: Fixed chaining nonnormalized exceptions in io close() methods. 1627 1628 - Issue #11709: Fix the pydoc.help function to not fail when sys.stdin is not a 1629 valid file. 1630 1631 - Issue #13223: Fix pydoc.writedoc so that the HTML documentation for methods 1632 that use 'self' in the example code is generated correctly. 1633 1634 - Issue #21463: In urllib.request, fix pruning of the FTP cache. 1635 1636 - Issue #21618: The subprocess module could fail to close open fds that were 1637 inherited by the calling process and already higher than POSIX resource 1638 limits would otherwise allow. On systems with a functioning /proc/self/fd 1639 or /dev/fd interface the max is now ignored and all fds are closed. 1640 1641 - Issue #21552: Fixed possible integer overflow of too long string lengths in 1642 the tkinter module on 64-bit platforms. 1643 1644 - Issue #14315: The zipfile module now ignores extra fields in the central 1645 directory that are too short to be parsed instead of letting a struct.unpack 1646 error bubble up as this "bad data" appears in many real world zip files in 1647 the wild and is ignored by other zip tools. 1648 1649 - Issue #21402: tkinter.ttk now works when default root window is not set. 1650 1651 - Issue #10203: sqlite3.Row now truly supports sequence protocol. In particular 1652 it supports reverse() and negative indices. Original patch by Claudiu Popa. 1653 1654 - Issue #18807: If copying (no symlinks) specified for a venv, then the python 1655 interpreter aliases (python, python3) are now created by copying rather than 1656 symlinking. 1657 1658 - Issue #14710: pkgutil.get_loader() no longer raises an exception when None is 1659 found in sys.modules. 1660 1661 - Issue #14710: pkgutil.find_loader() no longer raises an exception when a 1662 module doesn't exist. 1663 1664 - Issue #21481: Argparse equality and inequality tests now return 1665 NotImplemented when comparing to an unknown type. 1666 1667 - Issue #8743: Fix interoperability between set objects and the 1668 collections.Set() abstract base class. 1669 1670 - Issue #13355: random.triangular() no longer fails with a ZeroDivisionError 1671 when low equals high. 1672 1673 - Issue #21538: The plistlib module now supports loading of binary plist files 1674 when reference or offset size is not a power of two. 1675 1676 - Issue #21801: Validate that __signature__ is None or an instance of Signature. 1677 1678 - Issue #21923: Prevent AttributeError in distutils.sysconfig.customize_compiler 1679 due to possible uninitialized _config_vars. 1680 1681 - Issue #21323: Fix http.server to again handle scripts in CGI subdirectories, 1682 broken by the fix for security issue #19435. Patch by Zach Byrne. 1683 1684 Extension Modules 1685 ----------------- 1686 1687 - Issue #22176: Update the ctypes module's libffi to v3.1. This release 1688 adds support for the Linux AArch64 and POWERPC ELF ABIv2 little endian 1689 architectures. 1690 1691 Build 1692 ----- 1693 1694 - Issue #15661: python.org OS X installers are now distributed as signed 1695 installer packages compatible with the Gatekeeper security feature. 1696 1697 - Issue #21958: Define HAVE_ROUND when building with Visual Studio 2013 and 1698 above. Patch by Zachary Turner. 1699 1700 - Issue #15759: "make suspicious", "make linkcheck" and "make doctest" in Doc/ 1701 now display special message when and only when there are failures. 1702 1703 - Issue #17095: Fix Modules/Setup *shared* support. 1704 1705 - Issue #21811: Anticipated fixes to support OS X versions > 10.9. 1706 1707 - Issue #21166: Prevent possible segfaults and other random failures of 1708 python --generate-posix-vars in pybuilddir.txt build target. 1709 1710 IDLE 1711 ---- 1712 1713 - Issue #17390: Adjust Editor window title; remove 'Python', 1714 move version to end. 1715 1716 - Issue #14105: Idle debugger breakpoints no longer disappear 1717 when inseting or deleting lines. 1718 1719 - Issue #17172: Turtledemo can now be run from Idle. 1720 Currently, the entry is on the Help menu, but it may move to Run. 1721 Patch by Ramchandra Apt and Lita Cho. 1722 1723 - Issue #21765: Add support for non-ascii identifiers to HyperParser. 1724 1725 - Issue #21940: Add unittest for WidgetRedirector. Initial patch by Saimadhav 1726 Heblikar. 1727 1728 - Issue #18592: Add unittest for SearchDialogBase. Patch by Phil Webster. 1729 1730 - Issue #21694: Add unittest for ParenMatch. Patch by Saimadhav Heblikar. 1731 1732 - Issue #21686: add unittest for HyperParser. Original patch by Saimadhav 1733 Heblikar. 1734 1735 - Issue #12387: Add missing upper(lower)case versions of default Windows key 1736 bindings for Idle so Caps Lock does not disable them. Patch by Roger Serwy. 1737 1738 - Issue #21695: Closing a Find-in-files output window while the search is 1739 still in progress no longer closes Idle. 1740 1741 - Issue #18910: Add unittest for textView. Patch by Phil Webster. 1742 1743 - Issue #18292: Add unittest for AutoExpand. Patch by Saihadhav Heblikar. 1744 1745 - Issue #18409: Add unittest for AutoComplete. Patch by Phil Webster. 1746 1747 Tests 1748 ----- 1749 1750 - Issue #22166: With the assistance of a new internal _codecs._forget_codec 1751 helping function, test_codecs now clears the encoding caches to avoid the 1752 appearance of a reference leak 1753 1754 - Issue #22236: Tkinter tests now don't reuse default root window. New root 1755 window is created for every test class. 1756 1757 - Issue #20746: Fix test_pdb to run in refleak mode (-R). Patch by Xavier 1758 de Gaye. 1759 1760 - Issue #22060: test_ctypes has been somewhat cleaned up and simplified; it 1761 now uses unittest test discovery to find its tests. 1762 1763 - Issue #22104: regrtest.py no longer holds a reference to the suite of tests 1764 loaded from test modules that don't define test_main(). 1765 1766 - Issue #22002: Added ``load_package_tests`` function to test.support and used 1767 it to implement/augment test discovery in test_asyncio, test_email, 1768 test_importlib, test_json, and test_tools. 1769 1770 - Issue #21976: Fix test_ssl to accept LibreSSL version strings. Thanks 1771 to William Orr. 1772 1773 - Issue #21918: Converted test_tools from a module to a package containing 1774 separate test files for each tested script. 1775 1776 - Issue #20155: Changed HTTP method names in failing tests in test_httpservers 1777 so that packet filtering software (specifically Windows Base Filtering Engine) 1778 does not interfere with the transaction semantics expected by the tests. 1779 1780 - Issue #19493: Refactored the ctypes test package to skip tests explicitly 1781 rather than silently. 1782 1783 - Issue #18492: All resources are now allowed when tests are not run by 1784 regrtest.py. 1785 1786 - Issue #21634: Fix pystone micro-benchmark: use floor division instead of true 1787 division to benchmark integers instead of floating point numbers. Set pystone 1788 version to 1.2. Patch written by Lennart Regebro. 1789 1790 - Issue #21605: Added tests for Tkinter images. 1791 1792 - Issue #21493: Added test for ntpath.expanduser(). Original patch by 1793 Claudiu Popa. 1794 1795 - Issue #19925: Added tests for the spwd module. Original patch by Vajrasky Kok. 1796 1797 - Issue #21522: Added Tkinter tests for Listbox.itemconfigure(), 1798 PanedWindow.paneconfigure(), and Menu.entryconfigure(). 1799 1800 Documentation 1801 ------------- 1802 1803 - Issue #21777: The binary sequence methods on bytes and bytearray are now 1804 documented explicitly, rather than assuming users will be able to derive 1805 the expected behaviour from the behaviour of the corresponding str methods. 1806 1807 Windows 1808 ------- 1809 1810 - Issue #21671, #22160, CVE-2014-0224: The bundled version of OpenSSL has been 1811 updated to 1.0.1i. 1812 1813 - Issue #10747: Use versioned labels in the Windows start menu. 1814 Patch by Olive Kilburn. 1815 1816 Tools/Demos 1817 ----------- 1818 1819 - Issue #22201: Command-line interface of the zipfile module now correctly 1820 extracts ZIP files with directory entries. Patch by Ryan Wilson. 1821 1822 - Issue #21906: Make Tools/scripts/md5sum.py work in Python 3. 1823 Patch by Zachary Ware. 1824 1825 - Issue #21629: Fix Argument Clinic's "--converters" feature. 1826 1827 1828 What's New in Python 3.4.1? 1829 =========================== 1830 1831 Release date: 2014-05-18 1832 1833 Core and Builtins 1834 ----------------- 1835 1836 - Issue #21418: Fix a crash in the builtin function super() when called without 1837 argument and without current frame (ex: embedded Python). 1838 1839 - Issue #21425: Fix flushing of standard streams in the interactive 1840 interpreter. 1841 1842 - Issue #21435: In rare cases, when running finalizers on objects in cyclic 1843 trash a bad pointer dereference could occur due to a subtle flaw in 1844 internal iteration logic. 1845 1846 Library 1847 ------- 1848 1849 - Issue #10744: Fix PEP 3118 format strings on ctypes objects with a nontrivial 1850 shape. 1851 1852 - Issue #20998: Fixed re.fullmatch() of repeated single character pattern 1853 with ignore case. Original patch by Matthew Barnett. 1854 1855 - Issue #21075: fileinput.FileInput now reads bytes from standard stream if 1856 binary mode is specified. Patch by Sam Kimbrel. 1857 1858 - Issue #21396: Fix TextIOWrapper(..., write_through=True) to not force a 1859 flush() on the underlying binary stream. Patch by akira. 1860 1861 - Issue #21470: Do a better job seeding the random number generator by 1862 using enough bytes to span the full state space of the Mersenne Twister. 1863 1864 - Issue #21398: Fix an unicode error in the pydoc pager when the documentation 1865 contains characters not encodable to the stdout encoding. 1866 1867 Tests 1868 ----- 1869 1870 - Issue #17756: Fix test_code test when run from the installed location. 1871 1872 - Issue #17752: Fix distutils tests when run from the installed location. 1873 1874 IDLE 1875 ---- 1876 1877 - Issue #18104: Add idlelib/idle_test/htest.py with a few sample tests to begin 1878 consolidating and improving human-validated tests of Idle. Change other files 1879 as needed to work with htest. Running the module as __main__ runs all tests. 1880 1881 1882 What's New in Python 3.4.1rc1? 1883 ============================== 1884 1885 Release date: 2014-05-05 1886 1887 Core and Builtins 1888 ----------------- 1889 1890 - Issue #21274: Define PATH_MAX for GNU/Hurd in Python/pythonrun.c. 1891 1892 - Issue #21209: Fix sending tuples to custom generator objects with the yield 1893 from syntax. 1894 1895 - Issue #21134: Fix segfault when str is called on an uninitialized 1896 UnicodeEncodeError, UnicodeDecodeError, or UnicodeTranslateError object. 1897 1898 - Issue #19537: Fix PyUnicode_DATA() alignment under m68k. Patch by 1899 Andreas Schwab. 1900 1901 - Issue #20929: Add a type cast to avoid shifting a negative number. 1902 1903 - Issue #20731: Properly position in source code files even if they 1904 are opened in text mode. Patch by Serhiy Storchaka. 1905 1906 - Issue #20637: Key-sharing now also works for instance dictionaries of 1907 subclasses. Patch by Peter Ingebretson. 1908 1909 - Issue #12546: Allow ``\x00`` to be used as a fill character when using str, int, 1910 float, and complex __format__ methods. 1911 1912 - Issue #13598: Modify string.Formatter to support auto-numbering of 1913 replacement fields. It now matches the behavior of str.format() in 1914 this regard. Patches by Phil Elson and Ramchandra Apte. 1915 1916 Library 1917 ------- 1918 1919 - Issue #21088: Bugfix for curses.window.addch() regression in 3.4.0. 1920 In porting to Argument Clinic, the first two arguments were reversed. 1921 1922 - Issue #21469: Reduced the risk of false positives in robotparser by 1923 checking to make sure that robots.txt has been read or does not exist 1924 prior to returning True in can_fetch(). 1925 1926 - Issue #21321: itertools.islice() now releases the reference to the source 1927 iterator when the slice is exhausted. Patch by Anton Afanasyev. 1928 1929 - Issue #9815: assertRaises now tries to clear references to local variables 1930 in the exception's traceback. 1931 1932 - Issue #13204: Calling sys.flags.__new__ would crash the interpreter, 1933 now it raises a TypeError. 1934 1935 - Issue #19385: Make operations on a closed dbm.dumb database always raise the 1936 same exception. 1937 1938 - Issue #21207: Detect when the os.urandom cached fd has been closed or 1939 replaced, and open it anew. 1940 1941 - Issue #21291: subprocess's Popen.wait() is now thread safe so that 1942 multiple threads may be calling wait() or poll() on a Popen instance 1943 at the same time without losing the Popen.returncode value. 1944 1945 - Issue #21127: Path objects can now be instantiated from str subclass 1946 instances (such as ``numpy.str_``). 1947 1948 - Issue #15002: urllib.response object to use _TemporaryFileWrapper (and 1949 _TemporaryFileCloser) facility. Provides a better way to handle file 1950 descriptor close. Patch contributed by Christian Theune. 1951 1952 - Issue #12220: mindom now raises a custom ValueError indicating it doesn't 1953 support spaces in URIs instead of letting a 'split' ValueError bubble up. 1954 1955 - Issue #21239: patch.stopall() didn't work deterministically when the same 1956 name was patched more than once. 1957 1958 - Issue #21222: Passing name keyword argument to mock.create_autospec now 1959 works. 1960 1961 - Issue #21197: Add lib64 -> lib symlink in venvs on 64-bit non-OS X POSIX. 1962 1963 - Issue #17498: Some SMTP servers disconnect after certain errors, violating 1964 strict RFC conformance. Instead of losing the error code when we issue the 1965 subsequent RSET, smtplib now returns the error code and defers raising the 1966 SMTPServerDisconnected error until the next command is issued. 1967 1968 - Issue #17826: setting an iterable side_effect on a mock function created by 1969 create_autospec now works. Patch by Kushal Das. 1970 1971 - Issue #7776: Fix ``Host:`` header and reconnection when using 1972 http.client.HTTPConnection.set_tunnel(). Patch by Nikolaus Rath. 1973 1974 - Issue #20968: unittest.mock.MagicMock now supports division. 1975 Patch by Johannes Baiter. 1976 1977 - Issue #21529 (CVE-2014-4616): Fix arbitrary memory access in 1978 JSONDecoder.raw_decode with a negative second parameter. Bug reported by Guido 1979 Vranken. 1980 1981 - Issue #21169: getpass now handles non-ascii characters that the 1982 input stream encoding cannot encode by re-encoding using the 1983 replace error handler. 1984 1985 - Issue #21171: Fixed undocumented filter API of the rot13 codec. 1986 Patch by Berker Peksag. 1987 1988 - Issue #21172: isinstance check relaxed from dict to collections.Mapping. 1989 1990 - Issue #21155: asyncio.EventLoop.create_unix_server() now raises a ValueError 1991 if path and sock are specified at the same time. 1992 1993 - Issue #21149: Improved thread-safety in logging cleanup during interpreter 1994 shutdown. Thanks to Devin Jeanpierre for the patch. 1995 1996 - Issue #20145: `assertRaisesRegex` and `assertWarnsRegex` now raise a 1997 TypeError if the second argument is not a string or compiled regex. 1998 1999 - Issue #21058: Fix a leak of file descriptor in 2000 :func:`tempfile.NamedTemporaryFile`, close the file descriptor if 2001 :func:`io.open` fails 2002 2003 - Issue #21200: Return None from pkgutil.get_loader() when __spec__ is missing. 2004 2005 - Issue #21013: Enhance ssl.create_default_context() when used for server side 2006 sockets to provide better security by default. 2007 2008 - Issue #20633: Replace relative import by absolute import. 2009 2010 - Issue #20980: Stop wrapping exception when using ThreadPool. 2011 2012 - Issue #21082: In os.makedirs, do not set the process-wide umask. Note this 2013 changes behavior of makedirs when exist_ok=True. 2014 2015 - Issue #20990: Fix issues found by pyflakes for multiprocessing. 2016 2017 - Issue #21015: SSL contexts will now automatically select an elliptic 2018 curve for ECDH key exchange on OpenSSL 1.0.2 and later, and otherwise 2019 default to "prime256v1". 2020 2021 - Issue #20995: Enhance default ciphers used by the ssl module to enable 2022 better security an prioritize perfect forward secrecy. 2023 2024 - Issue #20884: Don't assume that __file__ is defined on importlib.__init__. 2025 2026 - Issue #21499: Ignore __builtins__ in several test_importlib.test_api tests. 2027 2028 - Issue #20879: Delay the initialization of encoding and decoding tables for 2029 base32, ascii85 and base85 codecs in the base64 module, and delay the 2030 initialization of the unquote_to_bytes() table of the urllib.parse module, to 2031 not waste memory if these modules are not used. 2032 2033 - Issue #19157: Include the broadcast address in the usuable hosts for IPv6 2034 in ipaddress. 2035 2036 - Issue #11599: When an external command (e.g. compiler) fails, distutils now 2037 prints out the whole command line (instead of just the command name) if the 2038 environment variable DISTUTILS_DEBUG is set. 2039 2040 - Issue #4931: distutils should not produce unhelpful "error: None" messages 2041 anymore. distutils.util.grok_environment_error is kept but doc-deprecated. 2042 2043 - Issue #20875: Prevent possible gzip "'read' is not defined" NameError. 2044 Patch by Claudiu Popa. 2045 2046 - Issue #11558: ``email.message.Message.attach`` now returns a more 2047 useful error message if ``attach`` is called on a message for which 2048 ``is_multipart`` is False. 2049 2050 - Issue #20283: RE pattern methods now accept the string keyword parameters 2051 as documented. The pattern and source keyword parameters are left as 2052 deprecated aliases. 2053 2054 - Issue #20778: Fix modulefinder to work with bytecode-only modules. 2055 2056 - Issue #20791: copy.copy() now doesn't make a copy when the input is 2057 a bytes object. Initial patch by Peter Otten. 2058 2059 - Issue #19748: On AIX, time.mktime() now raises an OverflowError for year 2060 outsize range [1902; 2037]. 2061 2062 - Issue #20816: Fix inspect.getcallargs() to raise correct TypeError for 2063 missing keyword-only arguments. Patch by Jeremiah Lowin. 2064 2065 - Issue #20817: Fix inspect.getcallargs() to fail correctly if more 2066 than 3 arguments are missing. Patch by Jeremiah Lowin. 2067 2068 - Issue #6676: Ensure a meaningful exception is raised when attempting 2069 to parse more than one XML document per pyexpat xmlparser instance. 2070 (Original patches by Hirokazu Yamamoto and Amaury Forgeot d'Arc, with 2071 suggested wording by David Gutteridge) 2072 2073 - Issue #21117: Fix inspect.signature to better support functools.partial. 2074 Due to the specifics of functools.partial implementation, 2075 positional-or-keyword arguments passed as keyword arguments become 2076 keyword-only. 2077 2078 - Issue #21209: Fix asyncio.tasks.CoroWrapper to workaround a bug 2079 in yield-from implementation in CPythons prior to 3.4.1. 2080 2081 - asyncio: Add gi_{frame,running,code} properties to CoroWrapper 2082 (upstream issue #163). 2083 2084 - Issue #21311: Avoid exception in _osx_support with non-standard compiler 2085 configurations. Patch by John Szakmeister. 2086 2087 - Issue #11571: Ensure that the turtle window becomes the topmost window 2088 when launched on OS X. 2089 2090 Extension Modules 2091 ----------------- 2092 2093 - Issue #21276: posixmodule: Don't define USE_XATTRS on KFreeBSD and the Hurd. 2094 2095 - Issue #21226: Set up modules properly in PyImport_ExecCodeModuleObject 2096 (and friends). 2097 2098 IDLE 2099 ---- 2100 2101 - Issue #21139: Change default paragraph width to 72, the PEP 8 recommendation. 2102 2103 - Issue #21284: Paragraph reformat test passes after user changes reformat width. 2104 2105 - Issue #17654: Ensure IDLE menus are customized properly on OS X for 2106 non-framework builds and for all variants of Tk. 2107 2108 Build 2109 ----- 2110 2111 - The Windows build now includes OpenSSL 1.0.1g 2112 2113 - Issue #21285: Refactor and fix curses configure check to always search 2114 in a ncursesw directory. 2115 2116 - Issue #15234: For BerkelyDB and Sqlite, only add the found library and 2117 include directories if they aren't already being searched. This avoids 2118 an explicit runtime library dependency. 2119 2120 - Issue #20644: OS X installer build support for documentation build changes 2121 in 3.4.1: assume externally supplied sphinx-build is available in /usr/bin. 2122 2123 C API 2124 ----- 2125 2126 - Issue #20942: PyImport_ImportFrozenModuleObject() no longer sets __file__ to 2127 match what importlib does; this affects _frozen_importlib as well as any 2128 module loaded using imp.init_frozen(). 2129 2130 Documentation 2131 ------------- 2132 2133 - Issue #17386: Expanded functionality of the ``Doc/make.bat`` script to make 2134 it much more comparable to ``Doc/Makefile``. 2135 2136 - Issue #21043: Remove the recommendation for specific CA organizations and to 2137 mention the ability to load the OS certificates. 2138 2139 - Issue #20765: Add missing documentation for PurePath.with_name() and 2140 PurePath.with_suffix(). 2141 2142 - Issue #19407: New package installation and distribution guides based on 2143 the Python Packaging Authority tools. Existing guides have been retained 2144 as legacy links from the distutils docs, as they still contain some 2145 required reference material for tool developers that isn't recorded 2146 anywhere else. 2147 2148 - Issue #19697: Document cases where __main__.__spec__ is None. 2149 2150 Tests 2151 ----- 2152 2153 - Issue #18604: Consolidated checks for GUI availability. All platforms now 2154 at least check whether Tk can be instantiated when the GUI resource is 2155 requested. 2156 2157 - Issue #21275: Fix a socket test on KFreeBSD. 2158 2159 - Issue #21223: Pass test_site/test_startup_imports when some of the extensions 2160 are built as builtins. 2161 2162 - Issue #20635: Added tests for Tk geometry managers. 2163 2164 - Add test case for freeze. 2165 2166 - Issue #20743: Fix a reference leak in test_tcl. 2167 2168 - Issue #21097: Move test_namespace_pkgs into test_importlib. 2169 2170 - Issue #20939: Avoid various network test failures due to new 2171 redirect of http://www.python.org/ to https://www.python.org: 2172 use http://www.example.com instead. 2173 2174 - Issue #20668: asyncio tests no longer rely on tests.txt file. 2175 (Patch by Vajrasky Kok) 2176 2177 - Issue #21093: Prevent failures of ctypes test_macholib on OS X if a 2178 copy of libz exists in $HOME/lib or /usr/local/lib. 2179 2180 Tools/Demos 2181 ----------- 2182 2183 - Add support for ``yield from`` to 2to3. 2184 2185 - Add support for the PEP 465 matrix multiplication operator to 2to3. 2186 2187 - Issue #16047: Fix module exception list and __file__ handling in freeze. 2188 Patch by Meador Inge. 2189 2190 - Issue #11824: Consider ABI tags in freeze. Patch by Meador Inge. 2191 2192 - Issue #20535: PYTHONWARNING no longer affects the run_tests.py script. 2193 Patch by Arfrever Frehtes Taifersar Arahesis. 2194 2195 2196 What's New in Python 3.4.0? 2197 =========================== 2198 2199 Release date: 2014-03-16 2200 2201 Library 2202 ------- 2203 2204 - Issue #20939: Fix test_geturl failure in test_urllibnet due to 2205 new redirect of http://www.python.org/ to https://www.python.org. 2206 2207 Documentation 2208 ------------- 2209 2210 - Merge in all documentation changes since branching 3.4.0rc1. 2211 2212 2213 What's New in Python 3.4.0 release candidate 3? 2214 =============================================== 2215 2216 Release date: 2014-03-09 2217 2218 Core and Builtins 2219 ----------------- 2220 2221 - Issue #20786: Fix signatures for dict.__delitem__ and 2222 property.__delete__ builtins. 2223 2224 Library 2225 ------- 2226 2227 - Issue #20839: Don't trigger a DeprecationWarning in the still supported 2228 pkgutil.get_loader() API when __loader__ isn't set on a module (nor 2229 when pkgutil.find_loader() is called directly). 2230 2231 Build 2232 ----- 2233 2234 - Issue #14512: Launch pydoc -b instead of pydocgui.pyw on Windows. 2235 2236 - Issue #20748: Uninstalling pip does not leave behind the pyc of 2237 the uninstaller anymore. 2238 2239 - Issue #20568: The Windows installer now installs the unversioned ``pip`` 2240 command in addition to the versioned ``pip3`` and ``pip3.4`` commands. 2241 2242 - Issue #20757: The ensurepip helper for the Windows uninstaller now skips 2243 uninstalling pip (rather than failing) if the user has updated pip to a 2244 different version from the one bundled with ensurepip. 2245 2246 - Issue #20465: Update OS X and Windows installer builds to use 2247 SQLite 3.8.3.1. 2248 2249 2250 What's New in Python 3.4.0 release candidate 2? 2251 =============================================== 2252 2253 Release date: 2014-02-23 2254 2255 Core and Builtins 2256 ----------------- 2257 2258 - Issue #20625: Parameter names in __annotations__ were not mangled properly. 2259 Discovered by Jonas Wielicki, patch by Yury Selivanov. 2260 2261 - Issue #20261: In pickle, lookup __getnewargs__ and __getnewargs_ex__ on the 2262 type of the object. 2263 2264 - Issue #20619: Give the AST nodes of keyword-only arguments a column and line 2265 number. 2266 2267 - Issue #20526: Revert changes of issue #19466 which introduces a regression: 2268 don't clear anymore the state of Python threads early during the Python 2269 shutdown. 2270 2271 Library 2272 ------- 2273 2274 - Issue #20710: The pydoc summary line no longer displays the "self" parameter 2275 for bound methods. 2276 2277 - Issue #20566: Change asyncio.as_completed() to use a Queue, to 2278 avoid O(N**2) behavior. 2279 2280 - Issue #20704: Implement new debug API in asyncio. Add new methods 2281 BaseEventLoop.set_debug() and BaseEventLoop.get_debug(). 2282 Add support for setting 'asyncio.tasks._DEBUG' variable with 2283 'PYTHONASYNCIODEBUG' environment variable. 2284 2285 - asyncio: Refactoring and fixes: BaseEventLoop.sock_connect() raises an 2286 error if the address is not resolved; use __slots__ in Handle and 2287 TimerHandle; as_completed() and wait() raise TypeError if the passed 2288 list of Futures is a single Future; call_soon() and other 'call_*()' 2289 functions raise TypeError if the passed callback is a coroutine 2290 function; _ProactorBasePipeTransport uses _FlowControlMixin; 2291 WriteTransport.set_write_buffer_size() calls _maybe_pause_protocol() 2292 to consider pausing receiving if the watermark limits have changed; 2293 fix _check_resolved_address() for IPv6 address; and other minor 2294 improvements, along with multiple documentation updates. 2295 2296 - Issue #20684: Fix inspect.getfullargspec() to not to follow __wrapped__ 2297 chains. Make its behaviour consistent with bound methods first argument. 2298 Patch by Nick Coghlan and Yury Selivanov. 2299 2300 - Issue #20681: Add new error handling API in asyncio. New APIs: 2301 loop.set_exception_handler(), loop.default_exception_handler(), and 2302 loop.call_exception_handler(). 2303 2304 - Issue #20673: Implement support for UNIX Domain Sockets in asyncio. 2305 New APIs: loop.create_unix_connection(), loop.create_unix_server(), 2306 streams.open_unix_connection(), and streams.start_unix_server(). 2307 2308 - Issue #20616: Add a format() method to tracemalloc.Traceback. 2309 2310 - Issue #19744: the ensurepip installation step now just prints a warning to 2311 stderr rather than failing outright if SSL/TLS is unavailable. This allows 2312 local installation of POSIX builds without SSL/TLS support. 2313 2314 - Issue #20594: Avoid name clash with the libc function posix_close. 2315 2316 Build 2317 ----- 2318 2319 - Issue #20641: Run MSI custom actions (pip installation, pyc compilation) 2320 with the NoImpersonate flag, to support elevated execution (UAC). 2321 2322 - Issue #20221: Removed conflicting (or circular) hypot definition when 2323 compiled with VS 2010 or above. Initial patch by Tabrez Mohammed. 2324 2325 - Issue #20609: Restored the ability to build 64-bit Windows binaries on 2326 32-bit Windows, which was broken by the change in issue #19788. 2327 2328 2329 What's New in Python 3.4.0 release candidate 1? 2330 =============================================== 2331 2332 Release date: 2014-02-10 2333 2334 Core and Builtins 2335 ----------------- 2336 2337 - Issue #19255: The builtins module is restored to initial value before 2338 cleaning other modules. The sys and builtins modules are cleaned last. 2339 2340 - Issue #20588: Make Python-ast.c C89 compliant. 2341 2342 - Issue #20437: Fixed 22 potential bugs when deleting objects references. 2343 2344 - Issue #20500: Displaying an exception at interpreter shutdown no longer 2345 risks triggering an assertion failure in PyObject_Str. 2346 2347 - Issue #20538: UTF-7 incremental decoder produced inconsistent string when 2348 input was truncated in BASE64 section. 2349 2350 - Issue #20404: io.TextIOWrapper (and hence the open() builtin) now uses the 2351 internal codec marking system added for issue #19619 to throw LookupError 2352 for known non-text encodings at stream construction time. The existing 2353 output type checks remain in place to deal with unmarked third party 2354 codecs. 2355 2356 - Issue #17162: Add PyType_GetSlot. 2357 2358 - Issue #20162: Fix an alignment issue in the siphash24() hash function which 2359 caused a crash on PowerPC 64-bit (ppc64). 2360 2361 Library 2362 ------- 2363 2364 - Issue #20530: The signatures for slot builtins have been updated 2365 to reflect the fact that they only accept positional-only arguments. 2366 2367 - Issue #20517: Functions in the os module that accept two filenames 2368 now register both filenames in the exception on failure. 2369 2370 - Issue #20563: The ipaddress module API is now considered stable. 2371 2372 - Issue #14983: email.generator now always adds a line end after each MIME 2373 boundary marker, instead of doing so only when there is an epilogue. This 2374 fixes an RFC compliance bug and solves an issue with signed MIME parts. 2375 2376 - Issue #20540: Fix a performance regression (vs. Python 3.2) when layering 2377 a multiprocessing Connection over a TCP socket. For small payloads, Nagle's 2378 algorithm would introduce idle delays before the entire transmission of a 2379 message. 2380 2381 - Issue #16983: the new email header parsing code will now decode encoded words 2382 that are (incorrectly) surrounded by quotes, and register a defect. 2383 2384 - Issue #19772: email.generator no longer mutates the message object when 2385 doing a down-transform from 8bit to 7bit CTEs. 2386 2387 - Issue #20536: the statistics module now correctly handle Decimal instances 2388 with positive exponents 2389 2390 - Issue #18805: the netmask/hostmask parsing in ipaddress now more reliably 2391 filters out illegal values and correctly allows any valid prefix length. 2392 2393 - Issue #20481: For at least Python 3.4, the statistics module will require 2394 that all inputs for a single operation be of a single consistent type, or 2395 else a mixed of ints and a single other consistent type. This avoids 2396 some interoperability issues that arose with the previous approach of 2397 coercing to a suitable common type. 2398 2399 - Issue #20478: the statistics module now treats collections.Counter inputs 2400 like any other iterable. 2401 2402 - Issue #17369: get_filename was raising an exception if the filename 2403 parameter's RFC2231 encoding was broken in certain ways. This was 2404 a regression relative to python2. 2405 2406 - Issue #20013: Some imap servers disconnect if the current mailbox is 2407 deleted, and imaplib did not handle that case gracefully. Now it 2408 handles the 'bye' correctly. 2409 2410 - Issue #20531: Revert 3.4 version of fix for #19063, and apply the 3.3 2411 version. That is, do *not* raise an error if unicode is passed to 2412 email.message.Message.set_payload. 2413 2414 - Issue #20476: If a non-compat32 policy is used with any of the email parsers, 2415 EmailMessage is now used as the factory class. The factory class should 2416 really come from the policy; that will get fixed in 3.5. 2417 2418 - Issue #19920: TarFile.list() no longer fails when outputs a listing 2419 containing non-encodable characters. Based on patch by Vajrasky Kok. 2420 2421 - Issue #20515: Fix NULL pointer dereference introduced by issue #20368. 2422 2423 - Issue #19186: Restore namespacing of expat symbols inside the pyexpat module. 2424 2425 - Issue #20053: ensurepip (and hence venv) are no longer affected by the 2426 settings in the default pip configuration file. 2427 2428 - Issue #20426: When passing the re.DEBUG flag, re.compile() displays the 2429 debug output every time it is called, regardless of the compilation cache. 2430 2431 - Issue #20368: The null character now correctly passed from Tcl to Python. 2432 Improved error handling in variables-related commands. 2433 2434 - Issue #20435: Fix _pyio.StringIO.getvalue() to take into account newline 2435 translation settings. 2436 2437 - tracemalloc: Fix slicing traces and fix slicing a traceback. 2438 2439 - Issue #20354: Fix an alignment issue in the tracemalloc module on 64-bit 2440 platforms. Bug seen on 64-bit Linux when using "make profile-opt". 2441 2442 - Issue #17159: inspect.signature now accepts duck types of functions, 2443 which adds support for Cython functions. Initial patch by Stefan Behnel. 2444 2445 - Issue #18801: Fix inspect.classify_class_attrs to correctly classify 2446 object.__new__ and object.__init__. 2447 2448 - Fixed cmath.isinf's name in its argument parsing code. 2449 2450 - Issue #20311, #20452: poll and epoll now round the timeout away from zero, 2451 instead of rounding towards zero, in select and selectors modules: 2452 select.epoll.poll(), selectors.PollSelector.poll() and 2453 selectors.EpollSelector.poll(). For example, a timeout of one microsecond 2454 (1e-6) is now rounded to one millisecondi (1e-3), instead of being rounded to 2455 zero. However, the granularity property and asyncio's resolution feature 2456 were removed again. 2457 2458 - asyncio: Some refactoring; various fixes; add write flow control to 2459 unix pipes; Future.set_exception() instantiates the exception 2460 argument if it is a class; improved proactor pipe transport; support 2461 wait_for(f, None); don't log broken/disconnected pipes; use 2462 ValueError instead of assert for forbidden subprocess_{shell,exec} 2463 arguments; added a convenience API for subprocess management; added 2464 StreamReader.at_eof(); properly handle duplicate coroutines/futures 2465 in gather(), wait(), as_completed(); use a bytearray for buffering 2466 in StreamReader; and more. 2467 2468 - Issue #20288: fix handling of invalid numeric charrefs in HTMLParser. 2469 2470 - Issue #20424: Python implementation of io.StringIO now supports lone surrogates. 2471 2472 - Issue #20308: inspect.signature now works on classes without user-defined 2473 __init__ or __new__ methods. 2474 2475 - Issue #20372: inspect.getfile (and a bunch of other inspect functions that 2476 use it) doesn't crash with unexpected AttributeError on classes defined in C 2477 without __module__. 2478 2479 - Issue #20356: inspect.signature formatting uses '/' to separate 2480 positional-only parameters from others. 2481 2482 - Issue #20223: inspect.signature now supports methods defined with 2483 functools.partialmethods. 2484 2485 - Issue #19456: ntpath.join() now joins relative paths correctly when a drive 2486 is present. 2487 2488 - Issue #19077: tempfile.TemporaryDirectory cleanup no longer fails when 2489 called during shutdown. Emitting resource warning in __del__ no longer fails. 2490 Original patch by Antoine Pitrou. 2491 2492 - Issue #20394: Silence Coverity warning in audioop module. 2493 2494 - Issue #20367: Fix behavior of concurrent.futures.as_completed() for 2495 duplicate arguments. Patch by Glenn Langford. 2496 2497 - Issue #8260: The read(), readline() and readlines() methods of 2498 codecs.StreamReader returned incomplete data when were called after 2499 readline() or read(size). Based on patch by Amaury Forgeot d'Arc. 2500 2501 - Issue #20105: the codec exception chaining now correctly sets the 2502 traceback of the original exception as its __traceback__ attribute. 2503 2504 - Issue #17481: inspect.getfullargspec() now uses inspect.signature() API. 2505 2506 - Issue #15304: concurrent.futures.wait() can block forever even if 2507 Futures have completed. Patch by Glenn Langford. 2508 2509 - Issue #14455: plistlib: fix serializing integers in the range 2510 of an unsigned long long but outside of the range of signed long long for 2511 binary plist files. 2512 2513 IDLE 2514 ---- 2515 2516 - Issue #20406: Use Python application icons for Idle window title bars. 2517 Patch mostly by Serhiy Storchaka. 2518 2519 - Update the python.gif icon for the Idle classbrowser and pathbowser 2520 from the old green snake to the new blue and yellow snakes. 2521 2522 - Issue #17721: Remove non-functional configuration dialog help button until we 2523 make it actually gives some help when clicked. Patch by Guilherme Simes. 2524 2525 Tests 2526 ----- 2527 2528 - Issue #20532: Tests which use _testcapi now are marked as CPython only. 2529 2530 - Issue #19920: Added tests for TarFile.list(). Based on patch by Vajrasky Kok. 2531 2532 - Issue #19990: Added tests for the imghdr module. Based on patch by 2533 Claudiu Popa. 2534 2535 - Issue #20474: Fix test_socket "unexpected success" failures on OS X 10.7+. 2536 2537 Tools/Demos 2538 ----------- 2539 2540 - Issue #20530: Argument Clinic's signature format has been revised again. 2541 The new syntax is highly human readable while still preventing false 2542 positives. The syntax also extends Python syntax to denote "self" and 2543 positional-only parameters, allowing inspect.Signature objects to be 2544 totally accurate for all supported builtins in Python 3.4. 2545 2546 - Issue #20456: Argument Clinic now observes the C preprocessor conditional 2547 compilation statements of the C files it parses. When a Clinic block is 2548 inside a conditional code, it adjusts its output to match, including 2549 automatically generating an empty methoddef macro. 2550 2551 - Issue #20456: Cloned functions in Argument Clinic now use the correct 2552 name, not the name of the function they were cloned from, for text 2553 strings inside generated code. 2554 2555 - Issue #20456: Fixed Argument Clinic's test suite and "--converters" feature. 2556 2557 - Issue #20456: Argument Clinic now allows specifying different names 2558 for a parameter in Python and C, using "as" on the parameter line. 2559 2560 - Issue #20326: Argument Clinic now uses a simple, unique signature to 2561 annotate text signatures in docstrings, resulting in fewer false 2562 positives. "self" parameters are also explicitly marked, allowing 2563 inspect.Signature() to authoritatively detect (and skip) said parameters. 2564 2565 - Issue #20326: Argument Clinic now generates separate checksums for the 2566 input and output sections of the block, allowing external tools to verify 2567 that the input has not changed (and thus the output is not out-of-date). 2568 2569 Build 2570 ----- 2571 2572 - Issue #20465: Update SQLite shipped with OS X installer to 3.8.3. 2573 2574 C-API 2575 ----- 2576 2577 - Issue #20517: Added new functions allowing OSError exceptions to reference 2578 two filenames instead of one: PyErr_SetFromErrnoWithFilenameObjects() and 2579 PyErr_SetExcFromWindowsErrWithFilenameObjects(). 2580 2581 Documentation 2582 ------------- 2583 2584 - Issue #20488: Change wording to say importlib is *the* implementation of 2585 import instead of just *an* implementation. 2586 2587 - Issue #6386: Clarify in the tutorial that specifying a symlink to execute 2588 means the directory containing the executed script and not the symlink is 2589 added to sys.path. 2590 2591 2592 What's New in Python 3.4.0 Beta 3? 2593 ================================== 2594 2595 Release date: 2014-01-26 2596 2597 Core and Builtins 2598 ----------------- 2599 2600 - Issue #20189: Four additional builtin types (PyTypeObject, 2601 PyMethodDescr_Type, _PyMethodWrapper_Type, and PyWrapperDescr_Type) 2602 have been modified to provide introspection information for builtins. 2603 2604 - Issue #17825: Cursor "^" is correctly positioned for SyntaxError and 2605 IndentationError. 2606 2607 - Issue #2382: SyntaxError cursor "^" is now written at correct position in most 2608 cases when multibyte characters are in line (before "^"). This still not 2609 works correctly with wide East Asian characters. 2610 2611 - Issue #18960: The first line of Python script could be executed twice when 2612 the source encoding was specified on the second line. Now the source encoding 2613 declaration on the second line isn't effective if the first line contains 2614 anything except a comment. 'python -x' works now again with files with the 2615 source encoding declarations, and can be used to make Python batch files 2616 on Windows. 2617 2618 Library 2619 ------- 2620 2621 - asyncio: Various improvements and small changes not all covered by 2622 issues listed below. E.g. wait_for() now cancels the inner task if 2623 the timeout occcurs; tweaked the set of exported symbols; renamed 2624 Empty/Full to QueueEmpty/QueueFull; "with (yield from lock)" now 2625 uses a separate context manager; readexactly() raises if not enough 2626 data was read; PTY support tweaks. 2627 2628 - Issue #20311: asyncio: Add a granularity attribute to BaseEventLoop: maximum 2629 between the resolution of the BaseEventLoop.time() method and the resolution 2630 of the selector. The granuarility is used in the scheduler to round time and 2631 deadline. 2632 2633 - Issue #20311: selectors: Add a resolution attribute to BaseSelector. 2634 2635 - Issue #20189: unittest.mock now no longer assumes that any object for 2636 which it could get an inspect.Signature is a callable written in Python. 2637 Fix courtesy of Michael Foord. 2638 2639 - Issue #20317: ExitStack.__exit__ could create a self-referential loop if an 2640 exception raised by a cleanup operation already had its context set 2641 correctly (for example, by the @contextmanager decorator). The infinite 2642 loop this caused is now avoided by checking if the expected context is 2643 already set before trying to fix it. 2644 2645 - Issue #20374: Fix build with GNU readline >= 6.3. 2646 2647 - Issue #20262: Warnings are raised now when duplicate names are added in the 2648 ZIP file or too long ZIP file comment is truncated. 2649 2650 - Issue #20165: The unittest module no longer considers tests marked with 2651 @expectedFailure successful if they pass. 2652 2653 - Issue #18574: Added missing newline in 100-Continue reply from 2654 http.server.BaseHTTPRequestHandler. Patch by Nikolaus Rath. 2655 2656 - Issue #20270: urllib.urlparse now supports empty ports. 2657 2658 - Issue #20243: TarFile no longer raise ReadError when opened in write mode. 2659 2660 - Issue #20238: TarFile opened with external fileobj and "w:gz" mode didn't 2661 write complete output on close. 2662 2663 - Issue #20245: The open functions in the tarfile module now correctly handle 2664 empty mode. 2665 2666 - Issue #20242: Fixed basicConfig() format strings for the alternative 2667 formatting styles. Thanks to kespindler for the bug report and patch. 2668 2669 - Issue #20246: Fix buffer overflow in socket.recvfrom_into. 2670 2671 - Issues #20206 and #5803: Fix edge case in email.quoprimime.encode where it 2672 truncated lines ending in a character needing encoding but no newline by 2673 using a more efficient algorithm that doesn't have the bug. 2674 2675 - Issue #19082: Working xmlrpc.server and xmlrpc.client examples. Both in 2676 modules and in documentation. Initial patch contributed by Vajrasky Kok. 2677 2678 - Issue #20138: The wsgiref.application_uri() and wsgiref.request_uri() 2679 functions now conform to PEP 3333 when handle non-ASCII URLs. 2680 2681 - Issue #19097: Raise the correct Exception when cgi.FieldStorage is given an 2682 invalid fileobj. 2683 2684 - Issue #20152: Ported Python/import.c over to Argument Clinic. 2685 2686 - Issue #13107: argparse and optparse no longer raises an exception when output 2687 a help on environment with too small COLUMNS. Based on patch by 2688 Elazar Gershuni. 2689 2690 - Issue #20207: Always disable SSLv2 except when PROTOCOL_SSLv2 is explicitly 2691 asked for. 2692 2693 - Issue #18960: The tokenize module now ignore the source encoding declaration 2694 on the second line if the first line contains anything except a comment. 2695 2696 - Issue #20078: Reading malformed zipfiles no longer hangs with 100% CPU 2697 consumption. 2698 2699 - Issue #20113: os.readv() and os.writev() now raise an OSError exception on 2700 error instead of returning -1. 2701 2702 - Issue #19719: Make importlib.abc.MetaPathFinder.find_module(), 2703 PathEntryFinder.find_loader(), and Loader.load_module() use PEP 451 APIs to 2704 help with backwards-compatibility. 2705 2706 - Issue #20144: inspect.Signature now supports parsing simple symbolic 2707 constants as parameter default values in __text_signature__. 2708 2709 - Issue #20072: Fixed multiple errors in tkinter with wantobjects is False. 2710 2711 - Issue #20229: Avoid plistlib deprecation warning in platform.mac_ver(). 2712 2713 - Issue #14455: Fix some problems with the new binary plist support in plistlib. 2714 2715 IDLE 2716 ---- 2717 2718 - Issue #17390: Add Python version to Idle editor window title bar. 2719 Original patches by Edmond Burnett and Kent Johnson. 2720 2721 - Issue #18960: IDLE now ignores the source encoding declaration on the second 2722 line if the first line contains anything except a comment. 2723 2724 Tests 2725 ----- 2726 2727 - Issue #20358: Tests for curses.window.overlay and curses.window.overwrite 2728 no longer specify min{row,col} > max{row,col}. 2729 2730 - Issue #19804: The test_find_mac test in test_uuid is now skipped if the 2731 ifconfig executable is not available. 2732 2733 - Issue #19886: Use better estimated memory requirements for bigmem tests. 2734 2735 Tools/Demos 2736 ----------- 2737 2738 - Issue #20390: Argument Clinic's "file" output preset now defaults to 2739 "{dirname}/clinic/{basename}.h". 2740 2741 - Issue #20390: Argument Clinic's "class" directive syntax has been extended 2742 with two new required arguments: "typedef" and "type_object". 2743 2744 - Issue #20390: Argument Clinic: If __new__ or __init__ functions didn't use 2745 kwargs (or args), the PyArg_NoKeywords (or PyArg_NoPositional) calls 2746 generated are only run when the type object is an exact match. 2747 2748 - Issue #20390: Argument Clinic now fails if you have required parameters after 2749 optional parameters. 2750 2751 - Issue #20390: Argument Clinic converters now have a new template they can 2752 inject code into: "modifiers". Code put there is run in the parsing 2753 function after argument parsing but before the call to the impl. 2754 2755 - Issue #20376: Argument Clinic now escapes backslashes in docstrings. 2756 2757 - Issue #20381: Argument Clinic now sanity checks the default argument when 2758 c_default is also specified, providing a nice failure message for 2759 disallowed values. 2760 2761 - Issue #20189: Argument Clinic now ensures that parser functions for 2762 __new__ are always of type newfunc, the type of the tp_new slot. 2763 Similarly, parser functions for __init__ are now always of type initproc, 2764 the type of tp_init. 2765 2766 - Issue #20189: Argument Clinic now suppresses the docstring for __new__ 2767 and __init__ functions if no docstring is provided in the input. 2768 2769 - Issue #20189: Argument Clinic now suppresses the "self" parameter in the 2770 impl for @staticmethod functions. 2771 2772 - Issue #20294: Argument Clinic now supports argument parsing for __new__ and 2773 __init__ functions. 2774 2775 - Issue #20299: Argument Clinic custom converters may now change the default 2776 value of c_default and py_default with a class member. 2777 2778 - Issue #20287: Argument Clinic's output is now configurable, allowing 2779 delaying its output or even redirecting it to a separate file. 2780 2781 - Issue #20226: Argument Clinic now permits simple expressions 2782 (e.g. "sys.maxsize - 1") as default values for parameters. 2783 2784 - Issue #19936: Added executable bits or shebang lines to Python scripts which 2785 requires them. Disable executable bits and shebang lines in test and 2786 benchmark files in order to prevent using a random system python, and in 2787 source files of modules which don't provide command line interface. Fixed 2788 shebang lines in the unittestgui and checkpip scripts. 2789 2790 - Issue #20268: Argument Clinic now supports cloning the parameters and 2791 return converter of existing functions. 2792 2793 - Issue #20228: Argument Clinic now has special support for class special 2794 methods. 2795 2796 - Issue #20214: Fixed a number of small issues and documentation errors in 2797 Argument Clinic (see issue for details). 2798 2799 - Issue #20196: Fixed a bug where Argument Clinic did not generate correct 2800 parsing code for functions with positional-only parameters where all arguments 2801 are optional. 2802 2803 - Issue #18960: 2to3 and the findnocoding.py script now ignore the source 2804 encoding declaration on the second line if the first line contains anything 2805 except a comment. 2806 2807 - Issue #19723: The marker comments Argument Clinic uses have been changed 2808 to improve readability. 2809 2810 - Issue #20157: When Argument Clinic renames a parameter because its name 2811 collides with a C keyword, it no longer exposes that rename to PyArg_Parse. 2812 2813 - Issue #20141: Improved Argument Clinic's support for the PyArg_Parse "O!" 2814 format unit. 2815 2816 - Issue #20144: Argument Clinic now supports simple symbolic constants 2817 as parameter default values. 2818 2819 - Issue #20143: The line numbers reported in Argument Clinic errors are 2820 now more accurate. 2821 2822 - Issue #20142: Py_buffer variables generated by Argument Clinic are now 2823 initialized with a default value. 2824 2825 Build 2826 ----- 2827 2828 - Issue #12837: Silence a tautological comparison warning on OS X under Clang in 2829 socketmodule.c. 2830 2831 2832 What's New in Python 3.4.0 Beta 2? 2833 ================================== 2834 2835 Release date: 2014-01-05 2836 2837 Core and Builtins 2838 ----------------- 2839 2840 - Issue #17432: Drop UCS2 from names of Unicode functions in python3.def. 2841 2842 - Issue #19526: Exclude all new API from the stable ABI. Exceptions can be 2843 made if a need is demonstrated. 2844 2845 - Issue #19969: PyBytes_FromFormatV() now raises an OverflowError if "%c" 2846 argument is not in range [0; 255]. 2847 2848 - Issue #19995: %c, %o, %x, and %X now issue a DeprecationWarning on non-integer 2849 input; reworded docs to clarify that an integer type should define both __int__ 2850 and __index__. 2851 2852 - Issue #19787: PyThread_set_key_value() now always set the value. In Python 2853 3.3, the function did nothing if the key already exists (if the current value 2854 is a non-NULL pointer). 2855 2856 - Issue #14432: Remove the thread state field from the frame structure. Fix a 2857 crash when a generator is created in a C thread that is destroyed while the 2858 generator is still used. The issue was that a generator contains a frame, and 2859 the frame kept a reference to the Python state of the destroyed C thread. The 2860 crash occurs when a trace function is setup. 2861 2862 - Issue #19576: PyGILState_Ensure() now initializes threads. At startup, Python 2863 has no concrete GIL. If PyGILState_Ensure() is called from a new thread for 2864 the first time and PyEval_InitThreads() was not called yet, a GIL needs to be 2865 created. 2866 2867 - Issue #17576: Deprecation warning emitted now when __int__() or __index__() 2868 return not int instance. 2869 2870 - Issue #19932: Fix typo in import.h, missing whitespaces in function prototypes. 2871 2872 - Issue #19736: Add module-level statvfs constants defined for GNU/glibc 2873 based systems. 2874 2875 - Issue #20097: Fix bad use of "self" in importlib's WindowsRegistryFinder. 2876 2877 - Issue #19729: In str.format(), fix recursive expansion in format spec. 2878 2879 - Issue #19638: Fix possible crash / undefined behaviour from huge (more than 2 2880 billion characters) input strings in _Py_dg_strtod. 2881 2882 Library 2883 ------- 2884 2885 - Issue #20154: Deadlock in asyncio.StreamReader.readexactly(). 2886 2887 - Issue #16113: Remove sha3 module again. 2888 2889 - Issue #20111: pathlib.Path.with_suffix() now sanity checks the given suffix. 2890 2891 - Fix breakage in TestSuite.countTestCases() introduced by issue #11798. 2892 2893 - Issue #20108: Avoid parameter name clash in inspect.getcallargs(). 2894 2895 - Issue #19918: Fix PurePath.relative_to() under Windows. 2896 2897 - Issue #19422: Explicitly disallow non-SOCK_STREAM sockets in the ssl 2898 module, rather than silently let them emit clear text data. 2899 2900 - Issue #20046: Locale alias table no longer contains entities which can be 2901 calculated. Generalized support of the euro modifier. 2902 2903 - Issue #20027: Fixed locale aliases for devanagari locales. 2904 2905 - Issue #20067: Tkinter variables now work when wantobjects is false. 2906 2907 - Issue #19020: Tkinter now uses splitlist() instead of split() in configure 2908 methods. 2909 2910 - Issue #19744: ensurepip now provides a better error message when Python is 2911 built without SSL/TLS support (pip currently requires that support to run, 2912 even if only operating with local wheel files) 2913 2914 - Issue #19734: ensurepip now ignores all pip environment variables to avoid 2915 odd behaviour based on user configuration settings 2916 2917 - Fix TypeError on "setup.py upload --show-response". 2918 2919 - Issue #20045: Fix "setup.py register --list-classifiers". 2920 2921 - Issue #18879: When a method is looked up on a temporary file, avoid closing 2922 the file before the method is possibly called. 2923 2924 - Issue #20037: Avoid crashes when opening a text file late at interpreter 2925 shutdown. 2926 2927 - Issue #19967: Thanks to the PEP 442, asyncio.Future now uses a 2928 destructor to log uncaught exceptions, instead of the dedicated 2929 _TracebackLogger class. 2930 2931 - Added a Task.current_task() class method to asyncio. 2932 2933 - Issue #19850: Set SA_RESTART in asyncio when registering a signal 2934 handler to limit EINTR occurrences. 2935 2936 - Implemented write flow control in asyncio for proactor event loop (Windows). 2937 2938 - Change write buffer in asyncio use to avoid O(N**2) behavior. Make 2939 write()/sendto() accept bytearray/memoryview. 2940 2941 - Issue #20034: Updated alias mapping to most recent locale.alias file 2942 from X.org distribution using makelocalealias.py. 2943 2944 - Issue #5815: Fixed support for locales with modifiers. Fixed support for 2945 locale encodings with hyphens. 2946 2947 - Issue #20026: Fix the sqlite module to handle correctly invalid isolation 2948 level (wrong type). 2949 2950 - Issue #18829: csv.Dialect() now checks type for delimiter, escapechar and 2951 quotechar fields. Original patch by Vajrasky Kok. 2952 2953 - Issue #19855: uuid.getnode() on Unix now looks on the PATH for the 2954 executables used to find the mac address, with /sbin and /usr/sbin as 2955 fallbacks. 2956 2957 - Issue #20007: HTTPResponse.read(0) no more prematurely closes connection. 2958 Original patch by Simon Sapin. 2959 2960 - Issue #19946: multiprocessing now uses runpy to initialize __main__ in 2961 child processes when necessary, allowing it to correctly handle scripts 2962 without suffixes and submodules that use explicit relative imports or 2963 otherwise rely on parent modules being correctly imported prior to 2964 execution. 2965 2966 - Issue #19921: When Path.mkdir() is called with parents=True, any missing 2967 parent is created with the default permissions, ignoring the mode argument 2968 (mimicking the POSIX "mkdir -p" command). 2969 2970 - Issue #19887: Improve the Path.resolve() algorithm to support certain 2971 symlink chains. 2972 2973 - Issue #19912: Fixed numerous bugs in ntpath.splitunc(). 2974 2975 - Issue #19911: ntpath.splitdrive() now correctly processes the '' character 2976 (U+0130, LATIN CAPITAL LETTER I WITH DOT ABOVE). 2977 2978 - Issue #19532: python -m compileall with no filename/directory arguments now 2979 respects the -f and -q flags instead of ignoring them. 2980 2981 - Issue #19623: Fixed writing to unseekable files in the aifc module. 2982 2983 - Issue #19946: multiprocessing.spawn now raises ImportError when the module to 2984 be used as the main module cannot be imported. 2985 2986 - Issue #17919: select.poll.register() again works with poll.POLLNVAL on AIX. 2987 Fixed integer overflow in the eventmask parameter. 2988 2989 - Issue #19063: if a Charset's body_encoding was set to None, the email 2990 package would generate a message claiming the Content-Transfer-Encoding 2991 was 7bit, and produce garbage output for the content. This now works. 2992 A couple of other set_payload mishandlings of non-ASCII are also fixed. 2993 In addition, calling set_payload with a string argument without 2994 specifying a charset now raises an error (this is a new error in 3.4). 2995 2996 - Issue #15475: Add __sizeof__ implementations for itertools objects. 2997 2998 - Issue #19944: Fix importlib.find_spec() so it imports parents as needed 2999 and move the function to importlib.util. 3000 3001 - Issue #19880: Fix a reference leak in unittest.TestCase. Explicitly break 3002 reference cycles between frames and the _Outcome instance. 3003 3004 - Issue #17429: platform.linux_distribution() now decodes files from the UTF-8 3005 encoding with the surrogateescape error handler, instead of decoding from the 3006 locale encoding in strict mode. It fixes the function on Fedora 19 which is 3007 probably the first major distribution release with a non-ASCII name. Patch 3008 written by Toshio Kuratomi. 3009 3010 - Issue #19343: Expose FreeBSD-specific APIs in resource module. Original 3011 patch by Koobs. 3012 3013 - Issue #19929: Call os.read with 32768 within subprocess.Popen.communicate 3014 rather than 4096 for efficiency. A microbenchmark shows Linux and OS X 3015 both using ~50% less cpu time this way. 3016 3017 - Issue #19506: Use a memoryview to avoid a data copy when piping data 3018 to stdin within subprocess.Popen.communicate. 5-10% less cpu usage. 3019 3020 - Issue #19876: selectors unregister() no longer raises ValueError or OSError 3021 if the FD is closed (as long as it was registered). 3022 3023 - Issue #19908: pathlib now joins relative Windows paths correctly when a drive 3024 is present. Original patch by Antoine Pitrou. 3025 3026 - Issue #19296: Silence compiler warning in dbm_open 3027 3028 - Issue #6784: Strings from Python 2 can now be unpickled as bytes 3029 objects by setting the encoding argument of Unpickler to be 'bytes'. 3030 Initial patch by Merlijn van Deen. 3031 3032 - Issue #19839: Fix regression in bz2 module's handling of non-bzip2 data at 3033 EOF, and analogous bug in lzma module. 3034 3035 - Issue #19881: Fix pickling bug where cpickle would emit bad pickle data for 3036 large bytes string (i.e., with size greater than 2**32-1). 3037 3038 - Issue #19138: doctest's IGNORE_EXCEPTION_DETAIL now allows a match when 3039 no exception detail exists (no colon following the exception's name, or 3040 a colon does follow but no text follows the colon). 3041 3042 - Issue #19927: Add __eq__ to path-based loaders in importlib. 3043 3044 - Issue #19827: On UNIX, setblocking() and settimeout() methods of 3045 socket.socket can now avoid a second syscall if the ioctl() function can be 3046 used, or if the non-blocking flag of the socket is unchanged. 3047 3048 - Issue #19785: smtplib now supports SSLContext.check_hostname and server name 3049 indication for TLS/SSL connections. 3050 3051 - Issue #19784: poplib now supports SSLContext.check_hostname and server name 3052 indication for TLS/SSL connections. 3053 3054 - Issue #19783: nntplib now supports SSLContext.check_hostname and server name 3055 indication for TLS/SSL connections. 3056 3057 - Issue #19782: imaplib now supports SSLContext.check_hostname and server name 3058 indication for TLS/SSL connections. 3059 3060 - Issue #20123: Fix pydoc.synopsis() for "binary" modules. 3061 3062 - Issue #19834: Support unpickling of exceptions pickled by Python 2. 3063 3064 - Issue #19781: ftplib now supports SSLContext.check_hostname and server name 3065 indication for TLS/SSL connections. 3066 3067 - Issue #19509: Add SSLContext.check_hostname to match the peer's certificate 3068 with server_hostname on handshake. 3069 3070 - Issue #15798: Fixed subprocess.Popen() to no longer fail if file 3071 descriptor 0, 1 or 2 is closed. 3072 3073 - Issue #17897: Optimized unpickle prefetching. 3074 3075 - Issue #3693: Make the error message more helpful when the array.array() 3076 constructor is given a str. Move the array module typecode documentation to 3077 the docstring of the constructor. 3078 3079 - Issue #19088: Fixed incorrect caching of the copyreg module in 3080 object.__reduce__() and object.__reduce_ex__(). 3081 3082 - Issue #19698: Removed exec_module() methods from 3083 importlib.machinery.BuiltinImporter and ExtensionFileLoader. 3084 3085 - Issue #18864: Added a setter for ModuleSpec.has_location. 3086 3087 - Fixed _pickle.Unpickler to not fail when loading empty strings as 3088 persistent IDs. 3089 3090 - Issue #11480: Fixed copy.copy to work with classes with custom metaclasses. 3091 Patch by Daniel Urban. 3092 3093 - Issue #6477: Added support for pickling the types of built-in singletons 3094 (i.e., Ellipsis, NotImplemented, None). 3095 3096 - Issue #19713: Add remaining PEP 451-related deprecations and move away 3097 from using find_module/find_loaer/load_module. 3098 3099 - Issue #19708: Update pkgutil to use the new importer APIs. 3100 3101 - Issue #19703: Update pydoc to use the new importer APIs. 3102 3103 - Issue #19851: Fixed a regression in reloading sub-modules. 3104 3105 - ssl.create_default_context() sets OP_NO_COMPRESSION to prevent CRIME. 3106 3107 - Issue #19802: Add socket.SO_PRIORITY. 3108 3109 - Issue #11508: Fixed uuid.getnode() and uuid.uuid1() on environment with 3110 virtual interface. Original patch by Kent Frazier. 3111 3112 - Issue #11489: JSON decoder now accepts lone surrogates. 3113 3114 - Issue #19545: Avoid chained exceptions while passing stray % to 3115 time.strptime(). Initial patch by Claudiu Popa. 3116 3117 IDLE 3118 ---- 3119 3120 - Issue #20058: sys.stdin.readline() in IDLE now always returns only one line. 3121 3122 - Issue #19481: print() of string subclass instance in IDLE no longer hangs. 3123 3124 - Issue #18270: Prevent possible IDLE AttributeError on OS X when no initial 3125 shell window is present. 3126 3127 Tests 3128 ----- 3129 3130 - Issue #20055: Fix test_shutil under Windows with symlink privileges held. 3131 Patch by Vajrasky Kok. 3132 3133 - Issue #20070: Don't run test_urllib2net when network resources are not 3134 enabled. 3135 3136 - Issue #19938: Re-enabled test_bug_1333982 in test_dis, which had been 3137 disabled since 3.0 due to the changes in listcomp handling. 3138 3139 - Issue #19320: test_tcl no longer fails when wantobjects is false. 3140 3141 - Issue #19919: Fix flaky SSL test. connect_ex() sometimes returns 3142 EWOULDBLOCK on Windows or VMs hosted on Windows. 3143 3144 - Issue #19912: Added tests for ntpath.splitunc(). 3145 3146 - Issue #19828: Fixed test_site when the whole suite is run with -S. 3147 3148 - Issue #19928: Implemented a test for repr() of cell objects. 3149 3150 - Issue #19535: Fixed test_docxmlrpc, test_functools, test_inspect, and 3151 test_statistics when python is run with -OO. 3152 3153 - Issue #19926: Removed unneeded test_main from test_abstract_numbers. 3154 Patch by Vajrasky Kok. 3155 3156 - Issue #19572: More skipped tests explicitly marked as skipped. 3157 3158 - Issue #19595, #19987: Re-enabled a long-disabled test in test_winsound. 3159 3160 - Issue #19588: Fixed tests in test_random that were silently skipped most 3161 of the time. Patch by Julian Gindi. 3162 3163 Build 3164 ----- 3165 3166 - Issue #19728: Enable pip installation by default on Windows. 3167 3168 - Issue #16136: Remove VMS support 3169 3170 - Issue #18215: Add script Tools/ssl/test_multiple_versions.py to compile and 3171 run Python's unit tests with multiple versions of OpenSSL. 3172 3173 - Issue #19922: define _INCLUDE__STDC_A1_SOURCE in HP-UX to include mbstate_t 3174 for mbrtowc(). 3175 3176 - Issue #19788: kill_python(_d).exe is now run as a PreBuildEvent on the 3177 pythoncore sub-project. This should prevent build errors due a previous 3178 build's python(_d).exe still running. 3179 3180 Documentation 3181 ------------- 3182 3183 - Issue #20265: Updated some parts of the Using Windows document. 3184 3185 - Issue #20266: Updated some parts of the Windows FAQ. 3186 3187 - Issue #20255: Updated the about and bugs pages. 3188 3189 - Issue #20253: Fixed a typo in the ipaddress docs that advertised an 3190 illegal attribute name. Found by INADA Naoki. 3191 3192 - Issue #18840: Introduce the json module in the tutorial, and de-emphasize 3193 the pickle module. 3194 3195 - Issue #19845: Updated the Compiling Python on Windows section. 3196 3197 - Issue #19795: Improved markup of True/False constants. 3198 3199 Tools/Demos 3200 ----------- 3201 3202 - Issue #19659: Added documentation for Argument Clinic. 3203 3204 - Issue #19976: Argument Clinic METH_NOARGS functions now always 3205 take two parameters. 3206 3207 3208 What's New in Python 3.4.0 Beta 1? 3209 ================================== 3210 3211 Release date: 2013-11-24 3212 3213 Core and Builtins 3214 ----------------- 3215 3216 - Use the repr of a module name in more places in import, especially 3217 exceptions. 3218 3219 - Issue #19619: str.encode, bytes.decode and bytearray.decode now use an 3220 internal API to throw LookupError for known non-text encodings, rather 3221 than attempting the encoding or decoding operation and then throwing a 3222 TypeError for an unexpected output type. (The latter mechanism remains 3223 in place for third party non-text encodings) 3224 3225 - Issue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'. 3226 Python now uses SipHash24 on all major platforms. 3227 3228 - Issue #12892: The utf-16* and utf-32* encoders no longer allow surrogate code 3229 points (U+D800-U+DFFF) to be encoded. The utf-32* decoders no longer decode 3230 byte sequences that correspond to surrogate code points. The surrogatepass 3231 error handler now works with the utf-16* and utf-32* codecs. Based on 3232 patches by Victor Stinner and Kang-Hao (Kenny) Lu. 3233 3234 - Issue #17806: Added keyword-argument support for "tabsize" to 3235 str/bytes.expandtabs(). 3236 3237 - Issue #17828: Output type errors in str.encode(), bytes.decode() and 3238 bytearray.decode() now direct users to codecs.encode() or codecs.decode() 3239 as appropriate. 3240 3241 - Issue #17828: The interpreter now attempts to chain errors that occur in 3242 codec processing with a replacement exception of the same type that 3243 includes the codec name in the error message. It ensures it only does this 3244 when the creation of the replacement exception won't lose any information. 3245 3246 - Issue #19466: Clear the frames of daemon threads earlier during the 3247 Python shutdown to call objects destructors. So "unclosed file" resource 3248 warnings are now correctly emitted for daemon threads. 3249 3250 - Issue #19514: Deduplicate some _Py_IDENTIFIER declarations. 3251 Patch by Andrei Dorian Duma. 3252 3253 - Issue #17936: Fix O(n**2) behaviour when adding or removing many subclasses 3254 of a given type. 3255 3256 - Issue #19428: zipimport now handles errors when reading truncated or invalid 3257 ZIP archive. 3258 3259 - Issue #18408: Add a new PyFrame_FastToLocalsWithError() function to handle 3260 exceptions when merging fast locals into f_locals of a frame. 3261 PyEval_GetLocals() now raises an exception and return NULL on failure. 3262 3263 - Issue #19369: Optimized the usage of __length_hint__(). 3264 3265 - Issue #18603: Ensure that PyOS_mystricmp and PyOS_mystrnicmp are in the 3266 Python executable and not removed by the linker's optimizer. 3267 3268 - Issue #19306: Add extra hints to the faulthandler module's stack 3269 dumps that these are "upside down". 3270 3271 Library 3272 ------- 3273 3274 - Issue #3158: doctest can now find doctests in functions and methods 3275 written in C. 3276 3277 - Issue #13477: Added command line interface to the tarfile module. 3278 Original patch by Berker Peksag. 3279 3280 - Issue #19674: inspect.signature() now produces a correct signature 3281 for some builtins. 3282 3283 - Issue #19722: Added opcode.stack_effect(), which 3284 computes the stack effect of bytecode instructions. 3285 3286 - Issue #19735: Implement private function ssl._create_stdlib_context() to 3287 create SSLContext objects in Python's stdlib module. It provides a single 3288 configuration point and makes use of SSLContext.load_default_certs(). 3289 3290 - Issue #16203: Add re.fullmatch() function and regex.fullmatch() method, 3291 which anchor the pattern at both ends of the string to match. 3292 Original patch by Matthew Barnett. 3293 3294 - Issue #13592: Improved the repr for regular expression pattern objects. 3295 Based on patch by Hugo Lopes Tavares. 3296 3297 - Issue #19641: Added the audioop.byteswap() function to convert big-endian 3298 samples to little-endian and vice versa. 3299 3300 - Issue #15204: Deprecated the 'U' mode in file-like objects. 3301 3302 - Issue #17810: Implement PEP 3154, pickle protocol 4. 3303 3304 - Issue #19668: Added support for the cp1125 encoding. 3305 3306 - Issue #19689: Add ssl.create_default_context() factory function. It creates 3307 a new SSLContext object with secure default settings. 3308 3309 - Issue #19727: os.utime(..., None) is now potentially more precise 3310 under Windows. 3311 3312 - Issue #17201: ZIP64 extensions now are enabled by default. Patch by 3313 William Mallard. 3314 3315 - Issue #19292: Add SSLContext.load_default_certs() to load default root CA 3316 certificates from default stores or system stores. By default the method 3317 loads CA certs for authentication of server certs. 3318 3319 - Issue #19673: Add pathlib to the stdlib as a provisional module (PEP 428). 3320 3321 - Issue #16596: pdb in a generator now properly skips over yield and 3322 yield from rather than stepping out of the generator into its 3323 caller. (This is essential for stepping through asyncio coroutines.) 3324 3325 - Issue #17916: Added dis.Bytecode.from_traceback() and 3326 dis.Bytecode.current_offset to easily display "current instruction" 3327 markers in the new disassembly API (Patch by Claudiu Popa). 3328 3329 - Issue #19552: venv now supports bootstrapping pip into virtual environments 3330 3331 - Issue #17134: Finalize interface to Windows' certificate store. Cert and 3332 CRL enumeration are now two functions. enum_certificates() also returns 3333 purpose flags as set of OIDs. 3334 3335 - Issue #19555: Restore sysconfig.get_config_var('SO'), (and the distutils 3336 equivalent) with a DeprecationWarning pointing people at $EXT_SUFFIX. 3337 3338 - Issue #8813: Add SSLContext.verify_flags to change the verification flags 3339 of the context in order to enable certification revocation list (CRL) 3340 checks or strict X509 rules. 3341 3342 - Issue #18294: Fix the zlib module to make it 64-bit safe. 3343 3344 - Issue #19682: Fix compatibility issue with old version of OpenSSL that 3345 was introduced by Issue #18379. 3346 3347 - Issue #14455: plistlib now supports binary plists and has an updated API. 3348 3349 - Issue #19633: Fixed writing not compressed 16- and 32-bit wave files on 3350 big-endian platforms. 3351 3352 - Issue #18379: SSLSocket.getpeercert() returns CA issuer AIA fields, OCSP 3353 and CRL distribution points. 3354 3355 - Issue #18138: Implement cadata argument of SSLContext.load_verify_location() 3356 to load CA certificates and CRL from memory. It supports PEM and DER 3357 encoded strings. 3358 3359 - Issue #18775: Add name and block_size attribute to HMAC object. They now 3360 provide the same API elements as non-keyed cryptographic hash functions. 3361 3362 - Issue #17276: MD5 as default digestmod for HMAC is deprecated. The HMAC 3363 module supports digestmod names, e.g. hmac.HMAC('sha1'). 3364 3365 - Issue #19449: in csv's writerow, handle non-string keys when generating the 3366 error message that certain keys are not in the 'fieldnames' list. 3367 3368 - Issue #13633: Added a new convert_charrefs keyword arg to HTMLParser that, 3369 when True, automatically converts all character references. 3370 3371 - Issue #2927: Added the unescape() function to the html module. 3372 3373 - Issue #8402: Added the escape() function to the glob module. 3374 3375 - Issue #17618: Add Base85 and Ascii85 encoding/decoding to the base64 module. 3376 3377 - Issue #19634: time.strftime("%y") now raises a ValueError on AIX when given a 3378 year before 1900. 3379 3380 - Fix test.support.bind_port() to not cause an error when Python was compiled 3381 on a system with SO_REUSEPORT defined in the headers but run on a system 3382 with an OS kernel that does not support that reasonably new socket option. 3383 3384 - Fix compilation error under gcc of the ctypes module bundled libffi for arm. 3385 3386 - Issue #19448: Add private API to SSL module to lookup ASN.1 objects by OID, 3387 NID, short name and long name. 3388 3389 - Issue #19282: dbm.open now supports the context management protocol. (Initial 3390 patch by Claudiu Popa) 3391 3392 - Issue #8311: Added support for writing any bytes-like objects in the aifc, 3393 sunau, and wave modules. 3394 3395 - Issue #5202: Added support for unseekable files in the wave module. 3396 3397 - Issue #19544 and Issue #1180: Restore global option to ignore 3398 ~/.pydistutils.cfg in Distutils, accidentally removed in backout of 3399 distutils2 changes. 3400 3401 - Issue #19523: Closed FileHandler leak which occurred when delay was set. 3402 3403 - Issue #19544 and Issue #6516: Restore support for --user and --group 3404 parameters to sdist command accidentally rolled back as part of the 3405 distutils2 rollback. 3406 3407 - Issue #13674: Prevented time.strftime from crashing on Windows when given 3408 a year before 1900 and a format of %y. 3409 3410 - Issue #19406: implementation of the ensurepip module (part of PEP 453). 3411 Patch by Donald Stufft and Nick Coghlan. 3412 3413 - Issue #19544 and Issue #6286: Restore use of urllib over http allowing use 3414 of http_proxy for Distutils upload command, a feature accidentally lost 3415 in the rollback of distutils2. 3416 3417 - Issue #19544 and Issue #7457: Restore the read_pkg_file method to 3418 distutils.dist.DistributionMetadata accidentally removed in the undo of 3419 distutils2. 3420 3421 - Issue #16685: Added support for any bytes-like objects in the audioop module. 3422 Removed support for strings. 3423 3424 - Issue #7171: Add Windows implementation of ``inet_ntop`` and ``inet_pton`` 3425 to socket module. Patch by Atsuo Ishimoto. 3426 3427 - Issue #19261: Added support for writing 24-bit samples in the sunau module. 3428 3429 - Issue #1097797: Added CP273 encoding, used on IBM mainframes in 3430 Germany and Austria. Mapping provided by Michael Bierenfeld. 3431 3432 - Issue #1575020: Fixed support of 24-bit wave files on big-endian platforms. 3433 3434 - Issue #19378: Fixed a number of cases in the dis module where the new 3435 "file" parameter was not being honoured correctly 3436 3437 - Issue #19378: Removed the "dis.Bytecode.show_info" method 3438 3439 - Issue #19378: Renamed the "dis.Bytecode.display_code" method to 3440 "dis.Bytecode.dis" and converted it to returning a string rather than 3441 printing output. 3442 3443 - Issue #19378: the "line_offset" parameter in the new "dis.get_instructions" 3444 API has been renamed to "first_line" (and the default value and usage 3445 changed accordingly). This should reduce confusion with the more common use 3446 of "offset" in the dis docs to refer to bytecode offsets. 3447 3448 - Issue #18678: Corrected spwd struct member names in spwd module: 3449 sp_nam->sp_namp, and sp_pwd->sp_pwdp. The old names are kept as extra 3450 structseq members, for backward compatibility. 3451 3452 - Issue #6157: Fixed tkinter.Text.debug(). tkinter.Text.bbox() now raises 3453 TypeError instead of TclError on wrong number of arguments. Original patch 3454 by Guilherme Polo. 3455 3456 - Issue #10197: Rework subprocess.get[status]output to use subprocess 3457 functionality and thus to work on Windows. Patch by Nick Coghlan 3458 3459 - Issue #6160: The bbox() method of tkinter.Spinbox now returns a tuple of 3460 integers instead of a string. Based on patch by Guilherme Polo. 3461 3462 - Issue #19403: contextlib.redirect_stdout is now reentrant 3463 3464 - Issue #19286: Directories in ``package_data`` are no longer added to 3465 the filelist, preventing failure outlined in the ticket. 3466 3467 - Issue #19480: HTMLParser now accepts all valid start-tag names as defined 3468 by the HTML5 standard. 3469 3470 - Issue #15114: The html.parser module now raises a DeprecationWarning when the 3471 strict argument of HTMLParser or the HTMLParser.error method are used. 3472 3473 - Issue #19410: Undo the special-casing removal of '' for 3474 importlib.machinery.FileFinder. 3475 3476 - Issue #19424: Fix the warnings module to accept filename containing surrogate 3477 characters. 3478 3479 - Issue #19435: Fix directory traversal attack on CGIHttpRequestHandler. 3480 3481 - Issue #19227: Remove pthread_atfork() handler. The handler was added to 3482 solve #18747 but has caused issues. 3483 3484 - Issue #19420: Fix reference leak in module initialization code of 3485 _hashopenssl.c 3486 3487 - Issue #19329: Optimized compiling charsets in regular expressions. 3488 3489 - Issue #19227: Try to fix deadlocks caused by re-seeding then OpenSSL 3490 pseudo-random number generator on fork(). 3491 3492 - Issue #16037: HTTPMessage.readheaders() raises an HTTPException when more than 3493 100 headers are read. Adapted from patch by Jyrki Pulliainen. 3494 3495 - Issue #16040: CVE-2013-1752: nntplib: Limit maximum line lengths to 2048 to 3496 prevent readline() calls from consuming too much memory. Patch by Jyrki 3497 Pulliainen. 3498 3499 - Issue #16041: CVE-2013-1752: poplib: Limit maximum line lengths to 2048 to 3500 prevent readline() calls from consuming too much memory. Patch by Jyrki 3501 Pulliainen. 3502 3503 - Issue #17997: Change behavior of ``ssl.match_hostname()`` to follow RFC 6125, 3504 for security reasons. It now doesn't match multiple wildcards nor wildcards 3505 inside IDN fragments. 3506 3507 - Issue #16039: CVE-2013-1752: Change use of readline in imaplib module to limit 3508 line length. Patch by Emil Lind. 3509 3510 - Issue #19330: the unnecessary wrapper functions have been removed from the 3511 implementations of the new contextlib.redirect_stdout and 3512 contextlib.suppress context managers, which also ensures they provide 3513 reasonable help() output on instances 3514 3515 - Issue #19393: Fix symtable.symtable function to not be confused when there are 3516 functions or classes named "top". 3517 3518 - Issue #18685: Restore re performance to pre-PEP 393 levels. 3519 3520 - Issue #19339: telnetlib module is now using time.monotonic() when available 3521 to compute timeout. 3522 3523 - Issue #19399: fix sporadic test_subprocess failure. 3524 3525 - Issue #13234: Fix os.listdir to work with extended paths on Windows. 3526 Patch by Santoso Wijaya. 3527 3528 - Issue #19375: The site module adding a "site-python" directory to sys.path, 3529 if it exists, is now deprecated. 3530 3531 - Issue #19379: Lazily import linecache in the warnings module, to make 3532 startup with warnings faster until a warning gets printed. 3533 3534 - Issue #19288: Fixed the "in" operator of dbm.gnu databases for string 3535 argument. Original patch by Arfrever Frehtes Taifersar Arahesis. 3536 3537 - Issue #19287: Fixed the "in" operator of dbm.ndbm databases for string 3538 argument. Original patch by Arfrever Frehtes Taifersar Arahesis. 3539 3540 - Issue #19327: Fixed the working of regular expressions with too big charset. 3541 3542 - Issue #17400: New 'is_global' attribute for ipaddress to tell if an address 3543 is allocated by IANA for global or private networks. 3544 3545 - Issue #19350: Increasing the test coverage of macurl2path. Patch by Colin 3546 Williams. 3547 3548 - Issue #19365: Optimized the parsing of long replacement string in re.sub*() 3549 functions. 3550 3551 - Issue #19352: Fix unittest discovery when a module can be reached 3552 through several paths (e.g. under Debian/Ubuntu with virtualenv). 3553 3554 - Issue #15207: Fix mimetypes to read from correct part of Windows registry 3555 Original patch by Dave Chambers 3556 3557 - Issue #16595: Add prlimit() to resource module. 3558 3559 - Issue #19324: Expose Linux-specific constants in resource module. 3560 3561 - Load SSL's error strings in hashlib. 3562 3563 - Issue #18527: Upgrade internal copy of zlib to 1.2.8. 3564 3565 - Issue #19274: Add a filterfunc parameter to PyZipFile.writepy. 3566 3567 - Issue #8964: fix platform._sys_version to handle IronPython 2.6+. 3568 Patch by Martin Matusiak. 3569 3570 - Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules. 3571 3572 - Issue #18958: Improve error message for json.load(s) while passing a string 3573 that starts with a UTF-8 BOM. 3574 3575 - Issue #19307: Improve error message for json.load(s) while passing objects 3576 of the wrong type. 3577 3578 - Issue #16038: CVE-2013-1752: ftplib: Limit amount of data read by 3579 limiting the call to readline(). Original patch by Micha 3580 Jastrzbski and Giampaolo Rodola. 3581 3582 - Issue #17087: Improved the repr for regular expression match objects. 3583 3584 Tests 3585 ----- 3586 3587 - Issue #19664: test_userdict's repr test no longer depends on the order 3588 of dict elements. 3589 3590 - Issue #19440: Clean up test_capi by removing an unnecessary __future__ 3591 import, converting from test_main to unittest.main, and running the 3592 _testcapi module tests as subTests of a unittest TestCase method. 3593 3594 - Issue #19378: the main dis module tests are now run with both stdout 3595 redirection *and* passing an explicit file parameter 3596 3597 - Issue #19378: removed the not-actually-helpful assertInstructionMatches 3598 and assertBytecodeExactlyMatches helpers from bytecode_helper 3599 3600 - Issue #18702: All skipped tests now reported as skipped. 3601 3602 - Issue #19439: interpreter embedding tests are now executed on Windows 3603 (Patch by Zachary Ware) 3604 3605 - Issue #19085: Added basic tests for all tkinter widget options. 3606 3607 - Issue #19384: Fix test_py_compile for root user, patch by Claudiu Popa. 3608 3609 Documentation 3610 ------------- 3611 3612 - Issue #18326: Clarify that list.sort's arguments are keyword-only. Also, 3613 attempt to reduce confusion in the glossary by not saying there are 3614 different "types" of arguments and parameters. 3615 3616 Build 3617 ----- 3618 3619 - Issue #19358: "make clinic" now runs the Argument Clinic preprocessor 3620 over all CPython source files. 3621 3622 - Update SQLite to 3.8.1, xz to 5.0.5, and Tcl/Tk to 8.6.1 on Windows. 3623 3624 - Issue #16632: Enable DEP and ASLR on Windows. 3625 3626 - Issue #17791: Drop PREFIX and EXEC_PREFIX definitions from PC/pyconfig.h 3627 3628 - Add workaround for VS 2010 nmake clean issue. VS 2010 doesn't set up PATH 3629 for nmake.exe correctly. 3630 3631 - Issue #19550: Implement Windows installer changes of PEP 453 (ensurepip). 3632 3633 - Issue #19520: Fix compiler warning in the _sha3 module on 32bit Windows. 3634 3635 - Issue #19356: Avoid using a C variabled named "_self", it's a reserved 3636 word in some C compilers. 3637 3638 - Issue #15792: Correct build options on Win64. Patch by Jeremy Kloth. 3639 3640 - Issue #19373: Apply upstream change to Tk 8.5.15 fixing OS X 10.9 3641 screen refresh problem for OS X installer build. 3642 3643 - Issue #19649: On OS X, the same set of file names are now installed 3644 in bin directories for all configurations: non-framework vs framework, 3645 and single arch vs universal builds. pythonx.y-32 is now always 3646 installed for 64-bit/32-bit universal builds. The obsolete and 3647 undocumented pythonw* symlinks are no longer installed anywhere. 3648 3649 - Issue #19553: PEP 453 - "make install" and "make altinstall" now install or 3650 upgrade pip by default, using the bundled pip provided by the new ensurepip 3651 module. A new configure option, --with-ensurepip[=upgrade|install|no], is 3652 available to override the default ensurepip "--upgrade" option. The option 3653 can also be set with "make [alt]install ENSUREPIP=[upgrade|install|no]". 3654 3655 - Issue #19551: PEP 453 - the OS X installer now installs pip by default. 3656 3657 - Update third-party libraries for OS X installers: xz 5.0.3 -> 5.0.5, 3658 SQLite 3.7.13 -> 3.8.1 3659 3660 - Issue #15663: Revert OS X installer built-in Tcl/Tk support for 3.4.0b1. 3661 Some third-party projects, such as Matplotlib and PIL/Pillow, 3662 depended on being able to build with Tcl and Tk frameworks in 3663 /Library/Frameworks. 3664 3665 Tools/Demos 3666 ----------- 3667 3668 - Issue #19730: Argument Clinic now supports all the existing PyArg 3669 "format units" as legacy converters, as well as two new features: 3670 "self converters" and the "version" directive. 3671 3672 - Issue #19552: pyvenv now bootstraps pip into virtual environments by 3673 default (pass --without-pip to request the old behaviour) 3674 3675 - Issue #19390: Argument Clinic no longer accepts malformed Python 3676 and C ids. 3677 3678 3679 What's New in Python 3.4.0 Alpha 4? 3680 =================================== 3681 3682 Release date: 2013-10-20 3683 3684 Core and Builtins 3685 ----------------- 3686 3687 - Issue #19301: Give classes and functions that are explicitly marked global a 3688 global qualname. 3689 3690 - Issue #19279: UTF-7 decoder no longer produces illegal strings. 3691 3692 - Issue #16612: Add "Argument Clinic", a compile-time preprocessor for 3693 C files to generate argument parsing code. (See PEP 436.) 3694 3695 - Issue #18810: Shift stat calls in importlib.machinery.FileFinder such that 3696 the code is optimistic that if something exists in a directory named exactly 3697 like the possible package being searched for that it's in actuality a 3698 directory. 3699 3700 - Issue #18416: importlib.machinery.PathFinder now treats '' as the cwd and 3701 importlib.machinery.FileFinder no longer special-cases '' to '.'. This leads 3702 to modules imported from cwd to now possess an absolute file path for 3703 __file__ (this does not affect modules specified by path on the CLI but it 3704 does affect -m/runpy). It also allows FileFinder to be more consistent by not 3705 having an edge case. 3706 3707 - Issue #4555: All exported C symbols are now prefixed with either 3708 "Py" or "_Py". 3709 3710 - Issue #19219: Speed up marshal.loads(), and make pyc files slightly 3711 (5% to 10%) smaller. 3712 3713 - Issue #19221: Upgrade Unicode database to version 6.3.0. 3714 3715 - Issue #16742: The result of the C callback PyOS_ReadlineFunctionPointer must 3716 now be a string allocated by PyMem_RawMalloc() or PyMem_RawRealloc() (or NULL 3717 if an error occurred), instead of a string allocated by PyMem_Malloc() or 3718 PyMem_Realloc(). 3719 3720 - Issue #19199: Remove ``PyThreadState.tick_counter`` field 3721 3722 - Fix macro expansion of _PyErr_OCCURRED(), and make sure to use it in at 3723 least one place so as to avoid regressions. 3724 3725 - Issue #19087: Improve bytearray allocation in order to allow cheap popping 3726 of data at the front (slice deletion). 3727 3728 - Issue #19014: memoryview.cast() is now allowed on zero-length views. 3729 3730 - Issue #18690: memoryview is now automatically registered with 3731 collections.abc.Sequence 3732 3733 - Issue #19078: memoryview now correctly supports the reversed builtin 3734 (Patch by Claudiu Popa) 3735 3736 Library 3737 ------- 3738 3739 - Issue #17457: unittest test discovery now works with namespace packages. 3740 Patch by Claudiu Popa. 3741 3742 - Issue #18235: Fix the sysconfig variables LDSHARED and BLDSHARED under AIX. 3743 Patch by David Edelsohn. 3744 3745 - Issue #18606: Add the new "statistics" module (PEP 450). Contributed 3746 by Steven D'Aprano. 3747 3748 - Issue #12866: The audioop module now supports 24-bit samples. 3749 3750 - Issue #19254: Provide an optimized Python implementation of pbkdf2_hmac. 3751 3752 - Issues #19201, Issue #19222, Issue #19223: Add "x" mode (exclusive creation) 3753 in opening file to bz2, gzip and lzma modules. Patches by Tim Heaney and 3754 Vajrasky Kok. 3755 3756 - Fix a reference count leak in _sre. 3757 3758 - Issue #19262: Initial check in of the 'asyncio' package (a.k.a. Tulip, 3759 a.k.a. PEP 3156). There are no docs yet, and the PEP is slightly 3760 out of date with the code. This module will have *provisional* status 3761 in Python 3.4. 3762 3763 - Issue #19276: Fixed the wave module on 64-bit big-endian platforms. 3764 3765 - Issue #19266: Rename the new-in-3.4 ``contextlib.ignore`` context manager 3766 to ``contextlib.suppress`` in order to be more consistent with existing 3767 descriptions of that operation elsewhere in the language and standard 3768 library documentation (Patch by Zero Piraeus). 3769 3770 - Issue #18891: Completed the new email package (provisional) API additions 3771 by adding new classes EmailMessage, MIMEPart, and ContentManager. 3772 3773 - Issue #18281: Unused stat constants removed from `tarfile`. 3774 3775 - Issue #18999: Multiprocessing now supports 'contexts' with the same API 3776 as the module, but bound to specified start methods. 3777 3778 - Issue #18468: The re.split, re.findall, and re.sub functions and the group() 3779 and groups() methods of match object now always return a string or a bytes 3780 object. 3781 3782 - Issue #18725: The textwrap module now supports truncating multiline text. 3783 3784 - Issue #18776: atexit callbacks now display their full traceback when they 3785 raise an exception. 3786 3787 - Issue #17827: Add the missing documentation for ``codecs.encode`` and 3788 ``codecs.decode``. 3789 3790 - Issue #19218: Rename collections.abc to _collections_abc in order to 3791 speed up interpreter start. 3792 3793 - Issue #18582: Add 'pbkdf2_hmac' to the hashlib module. It implements PKCS#5 3794 password-based key derivation functions with HMAC as pseudorandom function. 3795 3796 - Issue #19131: The aifc module now correctly reads and writes sampwidth of 3797 compressed streams. 3798 3799 - Issue #19209: Remove import of copyreg from the os module to speed up 3800 interpreter startup. stat_result and statvfs_result are now hard-coded to 3801 reside in the os module. 3802 3803 - Issue #19205: Don't import the 're' module in site and sysconfig module to 3804 speed up interpreter start. 3805 3806 - Issue #9548: Add a minimal "_bootlocale" module that is imported by the 3807 _io module instead of the full locale module. 3808 3809 - Issue #18764: Remove the 'print' alias for the PDB 'p' command so that it no 3810 longer shadows the print function. 3811 3812 - Issue #19158: A rare race in BoundedSemaphore could allow .release() too 3813 often. 3814 3815 - Issue #15805: Add contextlib.redirect_stdout(). 3816 3817 - Issue #18716: Deprecate the formatter module. 3818 3819 - Issue #10712: 2to3 has a new "asserts" fixer that replaces deprecated names 3820 of unittest methods (e.g. failUnlessEqual -> assertEqual). 3821 3822 - Issue #18037: 2to3 now escapes ``'\u'`` and ``'\U'`` in native strings. 3823 3824 - Issue #17839: base64.decodebytes and base64.encodebytes now accept any 3825 object that exports a 1 dimensional array of bytes (this means the same 3826 is now also true for base64_codec) 3827 3828 - Issue #19132: The pprint module now supports compact mode. 3829 3830 - Issue #19137: The pprint module now correctly formats instances of set and 3831 frozenset subclasses. 3832 3833 - Issue #10042: functools.total_ordering now correctly handles 3834 NotImplemented being returned by the underlying comparison function (Patch 3835 by Katie Miller) 3836 3837 - Issue #19092: contextlib.ExitStack now correctly reraises exceptions 3838 from the __exit__ callbacks of inner context managers (Patch by Hrvoje 3839 Niki) 3840 3841 - Issue #12641: Avoid passing "-mno-cygwin" to the mingw32 compiler, except 3842 when necessary. Patch by Oscar Benjamin. 3843 3844 - Issue #5845: In site.py, only load readline history from ~/.python_history 3845 if no history has been read already. This avoids double writes to the 3846 history file at shutdown. 3847 3848 - Properly initialize all fields of a SSL object after allocation. 3849 3850 - Issue #19095: SSLSocket.getpeercert() now raises ValueError when the 3851 SSL handshake hasn't been done. 3852 3853 - Issue #4366: Fix building extensions on all platforms when --enable-shared 3854 is used. 3855 3856 - Issue #19030: Fixed `inspect.getmembers` and `inspect.classify_class_attrs` 3857 to attempt activating descriptors before falling back to a __dict__ search 3858 for faulty descriptors. `inspect.classify_class_attrs` no longer returns 3859 Attributes whose home class is None. 3860 3861 C API 3862 ----- 3863 3864 - Issue #1772673: The type of `char*` arguments now changed to `const char*`. 3865 3866 - Issue #16129: Added a `Py_SetStandardStreamEncoding` pre-initialization API 3867 to allow embedding applications like Blender to force a particular 3868 encoding and error handler for the standard IO streams (initial patch by 3869 Bastien Montagne) 3870 3871 Tests 3872 ----- 3873 3874 - Issue #19275: Fix test_site on AMD64 Snow Leopard 3875 3876 - Issue #14407: Fix unittest test discovery in test_concurrent_futures. 3877 3878 - Issue #18919: Unified and extended tests for audio modules: aifc, sunau and 3879 wave. 3880 3881 - Issue #18714: Added tests for ``pdb.find_function()``. 3882 3883 Documentation 3884 ------------- 3885 3886 - Issue #18758: Fixed and improved cross-references. 3887 3888 - Issue #18972: Modernize email examples and use the argparse module in them. 3889 3890 Build 3891 ----- 3892 3893 - Issue #19130: Correct PCbuild/readme.txt, Python 3.3 and 3.4 require VS 2010. 3894 3895 - Issue #15663: Update OS X 10.6+ installer to use Tcl/Tk 8.5.15. 3896 3897 - Issue #14499: Fix several problems with OS X universal build support: 3898 1. ppc arch detection for extension module builds broke with Xcode 5 3899 2. ppc arch detection in configure did not work on OS X 10.4 3900 3. -sysroot and -arch flags were unnecessarily duplicated 3901 4. there was no obvious way to configure an intel-32 only build. 3902 3903 - Issue #19019: Change the OS X installer build script to use CFLAGS instead 3904 of OPT for special build options. By setting OPT, some compiler-specific 3905 options like -fwrapv were overridden and thus not used, which could result 3906 in broken interpreters when building with clang. 3907 3908 3909 What's New in Python 3.4.0 Alpha 3? 3910 =================================== 3911 3912 Release date: 2013-09-29 3913 3914 Core and Builtins 3915 ----------------- 3916 3917 - Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional. 3918 3919 - Issue #19098: Prevent overflow in the compiler when the recursion limit is set 3920 absurdly high. 3921 3922 Library 3923 ------- 3924 3925 - Issue #18929: `inspect.classify_class_attrs()` now correctly finds class 3926 attributes returned by `dir()` that are located in the metaclass. 3927 3928 - Issue #18950: Fix miscellaneous bugs in the sunau module. 3929 Au_read.readframes() now updates current file position and reads correct 3930 number of frames from multichannel stream. Au_write.writeframesraw() now 3931 correctly updates current file position. Au_read.getnframes() now returns an 3932 integer (as in Python 2). Au_read and Au_write now correctly works with file 3933 object if start file position is not a zero. 3934 3935 - Issue #18594: The fast path for collections.Counter() was never taken 3936 due to an over-restrictive type check. 3937 3938 - Issue #19053: ZipExtFile.read1() with non-zero argument no more returns empty 3939 bytes until end of data. 3940 3941 - logging: added support for Unix domain sockets to SocketHandler and 3942 DatagramHandler. 3943 3944 - Issue #18996: TestCase.assertEqual() now more cleverly shorten differing 3945 strings in error report. 3946 3947 - Issue #19034: repr() for tkinter.Tcl_Obj now exposes string reperesentation. 3948 3949 - Issue #18978: ``urllib.request.Request`` now allows the method to be 3950 indicated on the class and no longer sets it to None in ``__init__``. 3951 3952 - Issue #18626: the inspect module now offers a basic command line 3953 introspection interface (Initial patch by Claudiu Popa) 3954 3955 - Issue #3015: Fixed tkinter with wantobject=False. Any Tcl command call 3956 returned empty string. 3957 3958 - Issue #19037: The mailbox module now makes all changes to maildir files 3959 before moving them into place, to avoid race conditions with other programs 3960 that may be accessing the maildir directory. 3961 3962 - Issue #14984: On POSIX systems, when netrc is called without a filename 3963 argument (and therefore is reading the user's $HOME/.netrc file), it now 3964 enforces the same security rules as typical ftp clients: the .netrc file must 3965 be owned by the user that owns the process and must not be readable by any 3966 other user. 3967 3968 - Issue #18873: The tokenize module now detects Python source code encoding 3969 only in comment lines. 3970 3971 - Issue #17764: Enable http.server to bind to a user specified network 3972 interface. Patch contributed by Malte Swart. 3973 3974 - Issue #18937: Add an assertLogs() context manager to unittest.TestCase 3975 to ensure that a block of code emits a message using the logging module. 3976 3977 - Issue #17324: Fix http.server's request handling case on trailing '/'. Patch 3978 contributed by Vajrasky Kok. 3979 3980 - Issue #19018: The heapq.merge() function no longer suppresses IndexError 3981 in the underlying iterables. 3982 3983 - Issue #18784: The uuid module no longer attempts to load libc via ctypes.CDLL 3984 if all the necessary functions have already been found in libuuid. Patch by 3985 Evgeny Sologubov. 3986 3987 - The :envvar:`PYTHONFAULTHANDLER` environment variable now only enables the 3988 faulthandler module if the variable is non-empty. Same behaviour than other 3989 variables like :envvar:`PYTHONDONTWRITEBYTECODE`. 3990 3991 - Issue #1565525: New function ``traceback.clear_frames`` will clear 3992 the local variables of all the stack frames referenced by a traceback 3993 object. 3994 3995 Tests 3996 ----- 3997 3998 - Issue #18952: Fix regression in support data downloads introduced when 3999 test.support was converted to a package. Regression noticed by Zachary 4000 Ware. 4001 4002 IDLE 4003 ---- 4004 4005 - Issue #18873: IDLE now detects Python source code encoding only in comment 4006 lines. 4007 4008 - Issue #18988: The "Tab" key now works when a word is already autocompleted. 4009 4010 Documentation 4011 ------------- 4012 4013 - Issue #17003: Unified the size argument names in the io module with common 4014 practice. 4015 4016 Build 4017 ----- 4018 4019 - Issue #18596: Support the use of address sanity checking in recent versions 4020 of clang and GCC by appropriately marking known false alarms in the small 4021 object allocator. Patch contributed by Dhiru Kholia. 4022 4023 Tools/Demos 4024 ----------- 4025 4026 - Issue #18873: 2to3 and the findnocoding.py script now detect Python source 4027 code encoding only in comment lines. 4028 4029 4030 What's New in Python 3.4.0 Alpha 2? 4031 =================================== 4032 4033 Release date: 2013-09-09 4034 4035 Core and Builtins 4036 ----------------- 4037 4038 - Issue #18942: sys._debugmallocstats() output was damaged on Windows. 4039 4040 - Issue #18571: Implementation of the PEP 446: file descriptors and file 4041 handles are now created non-inheritable; add functions 4042 os.get/set_inheritable(), os.get/set_handle_inheritable() and 4043 socket.socket.get/set_inheritable(). 4044 4045 - Issue #11619: The parser and the import machinery do not encode Unicode 4046 filenames anymore on Windows. 4047 4048 - Issue #18808: Non-daemon threads are now automatically joined when 4049 a sub-interpreter is shutdown (it would previously dump a fatal error). 4050 4051 - Remove support for compiling on systems without getcwd(). 4052 4053 - Issue #18774: Remove last bits of GNU PTH thread code and thread_pth.h. 4054 4055 - Issue #18771: Add optimization to set object lookups to reduce the cost 4056 of hash collisions. The core idea is to inspect a second key/hash pair 4057 for each cache line retrieved. 4058 4059 - Issue #16105: When a signal handler fails to write to the file descriptor 4060 registered with ``signal.set_wakeup_fd()``, report an exception instead 4061 of ignoring the error. 4062 4063 - Issue #18722: Remove uses of the "register" keyword in C code. 4064 4065 - Issue #18667: Add missing "HAVE_FCHOWNAT" symbol to posix._have_functions. 4066 4067 - Issue #16499: Add command line option for isolated mode. 4068 4069 - Issue #15301: Parsing fd, uid, and gid parameters for builtins 4070 in Modules/posixmodule.c is now far more robust. 4071 4072 - Issue #18368: PyOS_StdioReadline() no longer leaks memory when realloc() 4073 fail. 4074 4075 - Issue #17934: Add a clear() method to frame objects, to help clean up 4076 expensive details (local variables) and break reference cycles. 4077 4078 - Issue #18780: %-formatting codes %d, %i, and %u now treat int-subclasses 4079 as int (displays value of int-subclass instead of str(int-subclass) ). 4080 4081 Library 4082 ------- 4083 4084 - Issue #18808: Thread.join() now waits for the underlying thread state to 4085 be destroyed before returning. This prevents unpredictable aborts in 4086 Py_EndInterpreter() when some non-daemon threads are still running. 4087 4088 - Issue #18458: Prevent crashes with newer versions of libedit. Its readline 4089 emulation has changed from 0-based indexing to 1-based like gnu readline. 4090 4091 - Issue #18852: Handle case of ``readline.__doc__`` being ``None`` in the new 4092 readline activation code in ``site.py``. 4093 4094 - Issue #18672: Fixed format specifiers for Py_ssize_t in debugging output in 4095 the _sre module. 4096 4097 - Issue #18830: inspect.getclasstree() no longer produces duplicate entries even 4098 when input list contains duplicates. 4099 4100 - Issue #18878: sunau.open now supports the context management protocol. Based on 4101 patches by Claudiu Popa and R. David Murray. 4102 4103 - Issue #18909: Fix _tkinter.tkapp.interpaddr() on Windows 64-bit, don't cast 4104 64-bit pointer to long (32 bits). 4105 4106 - Issue #18876: The FileIO.mode attribute now better reflects the actual mode 4107 under which the file was opened. Patch by Erik Bray. 4108 4109 - Issue #16853: Add new selectors module. 4110 4111 - Issue #18882: Add threading.main_thread() function. 4112 4113 - Issue #18901: The sunau getparams method now returns a namedtuple rather than 4114 a plain tuple. Patch by Claudiu Popa. 4115 4116 - Issue #17487: The result of the wave getparams method now is pickleable again. 4117 Patch by Claudiu Popa. 4118 4119 - Issue #18756: os.urandom() now uses a lazily-opened persistent file 4120 descriptor, so as to avoid using many file descriptors when run in 4121 parallel from multiple threads. 4122 4123 - Issue #18418: After fork(), reinit all threads states, not only active ones. 4124 Patch by A. Jesse Jiryu Davis. 4125 4126 - Issue #17974: Switch unittest from using getopt to using argparse. 4127 4128 - Issue #11798: TestSuite now drops references to own tests after execution. 4129 4130 - Issue #16611: http.cookie now correctly parses the 'secure' and 'httponly' 4131 cookie flags. 4132 4133 - Issue #11973: Fix a problem in kevent. The flags and fflags fields are now 4134 properly handled as unsigned. 4135 4136 - Issue #18807: ``pyvenv`` now takes a --copies argument allowing copies 4137 instead of symlinks even where symlinks are available and the default. 4138 4139 - Issue #18538: ``python -m dis`` now uses argparse for argument processing. 4140 Patch by Michele Orr. 4141 4142 - Issue #18394: Close cgi.FieldStorage's optional file. 4143 4144 - Issue #17702: On error, os.environb now suppresses the exception context 4145 when raising a new KeyError with the original key. 4146 4147 - Issue #16809: Fixed some tkinter incompabilities with Tcl/Tk 8.6. 4148 4149 - Issue #16809: Tkinter's splitlist() and split() methods now accept Tcl_Obj 4150 argument. 4151 4152 - Issue #18324: set_payload now correctly handles binary input. This also 4153 supersedes the previous fixes for #14360, #1717, and #16564. 4154 4155 - Issue #18794: Add a fileno() method and a closed attribute to select.devpoll 4156 objects. 4157 4158 - Issue #17119: Fixed integer overflows when processing large strings and tuples 4159 in the tkinter module. 4160 4161 - Issue #18747: Re-seed OpenSSL's pseudo-random number generator after fork. 4162 A pthread_atfork() parent handler is used to seed the PRNG with pid, time 4163 and some stack data. 4164 4165 - Issue #8865: Concurrent invocation of select.poll.poll() now raises a 4166 RuntimeError exception. Patch by Christian Schubert. 4167 4168 - Issue #18777: The ssl module now uses the new CRYPTO_THREADID API of 4169 OpenSSL 1.0.0+ instead of the deprecated CRYPTO id callback function. 4170 4171 - Issue #18768: Correct doc string of RAND_edg(). Patch by Vajrasky Kok. 4172 4173 - Issue #18178: Fix ctypes on BSD. dlmalloc.c was compiled twice which broke 4174 malloc weak symbols. 4175 4176 - Issue #18709: Fix CVE-2013-4238. The SSL module now handles NULL bytes 4177 inside subjectAltName correctly. Formerly the module has used OpenSSL's 4178 GENERAL_NAME_print() function to get the string representation of ASN.1 4179 strings for ``rfc822Name`` (email), ``dNSName`` (DNS) and 4180 ``uniformResourceIdentifier`` (URI). 4181 4182 - Issue #18701: Remove support of old CPython versions (<3.0) from C code. 4183 4184 - Issue #18756: Improve error reporting in os.urandom() when the failure 4185 is due to something else than /dev/urandom not existing (for example, 4186 exhausting the file descriptor limit). 4187 4188 - Issue #18673: Add O_TMPFILE to os module. O_TMPFILE requires Linux kernel 4189 3.11 or newer. It's only defined on system with 3.11 uapi headers, too. 4190 4191 - Issue #18532: Change the builtin hash algorithms' names to lower case names 4192 as promised by hashlib's documentation. 4193 4194 - Issue #8713: add new spwan and forkserver start methods, and new functions 4195 get_all_start_methods, get_start_method, and set_start_method, to 4196 multiprocessing. 4197 4198 - Issue #18405: Improve the entropy of crypt.mksalt(). 4199 4200 - Issue #12015: The tempfile module now uses a suffix of 8 random characters 4201 instead of 6, to reduce the risk of filename collision. The entropy was 4202 reduced when uppercase letters were removed from the charset used to generate 4203 random characters. 4204 4205 - Issue #18585: Add :func:`textwrap.shorten` to collapse and truncate a 4206 piece of text to a given length. 4207 4208 - Issue #18598: Tweak exception message for importlib.import_module() to 4209 include the module name when a key argument is missing. 4210 4211 - Issue #19151: Fix docstring and use of _get_supported_file_loaders() to 4212 reflect 2-tuples. 4213 4214 - Issue #19152: Add ExtensionFileLoader.get_filename(). 4215 4216 - Issue #18676: Change 'positive' to 'non-negative' in queue.py put and get 4217 docstrings and ValueError messages. Patch by Zhongyue Luo 4218 4219 - Fix refcounting issue with extension types in tkinter. 4220 4221 - Issue #8112: xlmrpc.server's DocXMLRPCServer server no longer raises an error 4222 if methods have annotations; it now correctly displays the annotations. 4223 4224 - Issue #18600: Added policy argument to email.message.Message.as_string, 4225 and as_bytes and __bytes__ methods to Message. 4226 4227 - Issue #18671: Output more information when logging exceptions occur. 4228 4229 - Issue #18621: Prevent the site module's patched builtins from keeping 4230 too many references alive for too long. 4231 4232 - Issue #4885: Add weakref support to mmap objects. Patch by Valerie Lambert. 4233 4234 - Issue #8860: Fixed rounding in timedelta constructor. 4235 4236 - Issue #18849: Fixed a Windows-specific tempfile bug where collision with an 4237 existing directory caused mkstemp and related APIs to fail instead of 4238 retrying. Report and fix by Vlad Shcherbina. 4239 4240 - Issue #18920: argparse's default destination for the version action (-v, 4241 --version) has also been changed to stdout, to match the Python executable. 4242 4243 Tests 4244 ----- 4245 4246 - Issue #18623: Factor out the _SuppressCoreFiles context manager into 4247 test.support. Patch by Valerie Lambert. 4248 4249 - Issue #12037: Fix test_email for desktop Windows. 4250 4251 - Issue #15507: test_subprocess's test_send_signal could fail if the test 4252 runner were run in an environment where the process inherited an ignore 4253 setting for SIGINT. Restore the SIGINT handler to the desired 4254 KeyboardInterrupt raising one during that test. 4255 4256 - Issue #16799: Switched from getopt to argparse style in regrtest's argument 4257 parsing. Added more tests for regrtest's argument parsing. 4258 4259 - Issue #18792: Use "127.0.0.1" or "::1" instead of "localhost" as much as 4260 possible, since "localhost" goes through a DNS lookup under recent Windows 4261 versions. 4262 4263 IDLE 4264 ---- 4265 4266 - Issue #18489: Add tests for SearchEngine. Original patch by Phil Webster. 4267 4268 Documentation 4269 ------------- 4270 4271 - Issue #18743: Fix references to non-existent "StringIO" module. 4272 4273 - Issue #18783: Removed existing mentions of Python long type in docstrings, 4274 error messages and comments. 4275 4276 Build 4277 ----- 4278 4279 - Issue #1584: Provide configure options to override default search paths for 4280 Tcl and Tk when building _tkinter. 4281 4282 - Issue #15663: Tcl/Tk 8.5.14 is now included with the OS X 10.6+ 64-/32-bit 4283 installer. It is no longer necessary to install a third-party version of 4284 Tcl/Tk 8.5 to work around the problems in the Apple-supplied Tcl/Tk 8.5 4285 shipped in OS X 10.6 and later releases. 4286 4287 Tools/Demos 4288 ----------- 4289 4290 - Issue #18922: Now The Lib/smtpd.py and Tools/i18n/msgfmt.py scripts write 4291 their version strings to stdout, and not to sderr. 4292 4293 4294 What's New in Python 3.4.0 Alpha 1? 4295 =================================== 4296 4297 Release date: 2013-08-03 4298 4299 Core and Builtins 4300 ----------------- 4301 4302 - Issue #16741: Fix an error reporting in int(). 4303 4304 - Issue #17899: Fix rare file descriptor leak in os.listdir(). 4305 4306 - Issue #10241: Clear extension module dict copies at interpreter shutdown. 4307 Patch by Neil Schemenauer, minimally modified. 4308 4309 - Issue #9035: ismount now recognises volumes mounted below a drive root 4310 on Windows. Original patch by Atsuo Ishimoto. 4311 4312 - Issue #18214: Improve finalization of Python modules to avoid setting 4313 their globals to None, in most cases. 4314 4315 - Issue #18112: PEP 442 implementation (safe object finalization). 4316 4317 - Issue #18552: Check return value of PyArena_AddPyObject() in 4318 obj2ast_object(). 4319 4320 - Issue #18560: Fix potential NULL pointer dereference in sum(). 4321 4322 - Issue #18520: Add a new PyStructSequence_InitType2() function, same than 4323 PyStructSequence_InitType() except that it has a return value (0 on success, 4324 -1 on error). 4325 4326 - Issue #15905: Fix theoretical buffer overflow in handling of sys.argv[0], 4327 prefix and exec_prefix if the operation system does not obey MAXPATHLEN. 4328 4329 - Issue #18408: Fix many various bugs in code handling errors, especially 4330 on memory allocation failure (MemoryError). 4331 4332 - Issue #18344: Fix potential ref-leaks in _bufferedreader_read_all(). 4333 4334 - Issue #18342: Use the repr of a module name when an import fails when using 4335 ``from ... import ...``. 4336 4337 - Issue #17872: Fix a segfault in marshal.load() when input stream returns 4338 more bytes than requested. 4339 4340 - Issue #18338: `python --version` now prints version string to stdout, and 4341 not to stderr. Patch by Berker Peksag and Michael Dickens. 4342 4343 - Issue #18426: Fix NULL pointer dereference in C extension import when 4344 PyModule_GetDef() returns an error. 4345 4346 - Issue #17206: On Windows, increase the stack size from 2 MB to 4.2 MB to fix 4347 a stack overflow in the marshal module (fix a crash in test_marshal). 4348 Patch written by Jeremy Kloth. 4349 4350 - Issue #3329: Implement the PEP 445: Add new APIs to customize Python memory 4351 allocators. 4352 4353 - Issue #18328: Reorder ops in PyThreadState_Delete*() functions. Now the 4354 tstate is first removed from TLS and then deallocated. 4355 4356 - Issue #13483: Use VirtualAlloc in obmalloc on Windows. 4357 4358 - Issue #18184: PyUnicode_FromFormat() and PyUnicode_FromFormatV() now raise 4359 OverflowError when an argument of %c format is out of range. 4360 4361 - Issue #18111: The min() and max() functions now support a default argument 4362 to be returned instead of raising a ValueError on an empty sequence. 4363 (Contributed by Julian Berman.) 4364 4365 - Issue #18137: Detect integer overflow on precision in float.__format__() 4366 and complex.__format__(). 4367 4368 - Issue #18183: Fix various unicode operations on strings with large unicode 4369 codepoints. 4370 4371 - Issue #18180: Fix ref leak in _PyImport_GetDynLoadWindows(). 4372 4373 - Issue #18038: SyntaxError raised during compilation sources with illegal 4374 encoding now always contains an encoding name. 4375 4376 - Issue #17931: Resolve confusion on Windows between pids and process 4377 handles. 4378 4379 - Tweak the exception message when the magic number or size value in a bytecode 4380 file is truncated. 4381 4382 - Issue #17932: Fix an integer overflow issue on Windows 64-bit in iterators: 4383 change the C type of seqiterobject.it_index from long to Py_ssize_t. 4384 4385 - Issue #18065: Don't set __path__ to the package name for frozen packages. 4386 4387 - Issue #18088: When reloading a module, unconditionally reset all relevant 4388 attributes on the module (e.g. __name__, __loader__, __package__, __file__, 4389 __cached__). 4390 4391 - Issue #17937: Try harder to collect cyclic garbage at shutdown. 4392 4393 - Issue #12370: Prevent class bodies from interfering with the __class__ 4394 closure. 4395 4396 - Issue #17644: Fix a crash in str.format when curly braces are used in square 4397 brackets. 4398 4399 - Issue #17237: Fix crash in the ASCII decoder on m68k. 4400 4401 - Issue #17927: Frame objects kept arguments alive if they had been 4402 copied into a cell, even if the cell was cleared. 4403 4404 - Issue #1545463: At shutdown, defer finalization of codec modules so 4405 that stderr remains usable. 4406 4407 - Issue #7330: Implement width and precision (ex: "%5.3s") for the format 4408 string of PyUnicode_FromFormat() function, original patch written by Ysj Ray. 4409 4410 - Issue #1545463: Global variables caught in reference cycles are now 4411 garbage-collected at shutdown. 4412 4413 - Issue #17094: Clear stale thread states after fork(). Note that this 4414 is a potentially disruptive change since it may release some system 4415 resources which would otherwise remain perpetually alive (e.g. database 4416 connections kept in thread-local storage). 4417 4418 - Issue #17408: Avoid using an obsolete instance of the copyreg module when 4419 the interpreter is shutdown and then started again. 4420 4421 - Issue #5845: Enable tab-completion in the interactive interpreter by 4422 default, thanks to a new sys.__interactivehook__. 4423 4424 - Issue #17115,17116: Module initialization now includes setting __package__ and 4425 __loader__ attributes to None. 4426 4427 - Issue #17853: Ensure locals of a class that shadow free variables always win 4428 over the closures. 4429 4430 - Issue #17863: In the interactive console, don't loop forever if the encoding 4431 can't be fetched from stdin. 4432 4433 - Issue #17867: Raise an ImportError if __import__ is not found in __builtins__. 4434 4435 - Issue #18698: Ensure importlib.reload() returns the module out of sys.modules. 4436 4437 - Issue #17857: Prevent build failures with pre-3.5.0 versions of sqlite3, 4438 such as was shipped with Centos 5 and Mac OS X 10.4. 4439 4440 - Issue #17413: sys.settrace callbacks were being passed a string instead of an 4441 exception instance for the 'value' element of the arg tuple if the exception 4442 originated from C code; now an exception instance is always provided. 4443 4444 - Issue #17782: Fix undefined behaviour on platforms where 4445 ``struct timespec``'s "tv_nsec" member is not a C long. 4446 4447 - Issue #17722: When looking up __round__, resolve descriptors. 4448 4449 - Issue #16061: Speed up str.replace() for replacing 1-character strings. 4450 4451 - Issue #17715: Fix segmentation fault from raising an exception in a __trunc__ 4452 method. 4453 4454 - Issue #17643: Add __callback__ attribute to weakref.ref. 4455 4456 - Issue #16447: Fixed potential segmentation fault when setting __name__ on a 4457 class. 4458 4459 - Issue #17669: Fix crash involving finalization of generators using yield from. 4460 4461 - Issue #14439: Python now prints the traceback on runpy failure at startup. 4462 4463 - Issue #17469: Fix _Py_GetAllocatedBlocks() and sys.getallocatedblocks() 4464 when running on valgrind. 4465 4466 - Issue #17619: Make input() check for Ctrl-C correctly on Windows. 4467 4468 - Issue #17357: Add missing verbosity messages for -v/-vv that were lost during 4469 the importlib transition. 4470 4471 - Issue #17610: Don't rely on non-standard behavior of the C qsort() function. 4472 4473 - Issue #17323: The "[X refs, Y blocks]" printed by debug builds has been 4474 disabled by default. It can be re-enabled with the `-X showrefcount` option. 4475 4476 - Issue #17328: Fix possible refleak in dict.setdefault. 4477 4478 - Issue #17275: Corrected class name in init error messages of the C version of 4479 BufferedWriter and BufferedRandom. 4480 4481 - Issue #7963: Fixed misleading error message that issued when object is 4482 called without arguments. 4483 4484 - Issue #8745: Small speed up zipimport on Windows. Patch by Catalin Iacob. 4485 4486 - Issue #5308: Raise ValueError when marshalling too large object (a sequence 4487 with size >= 2**31), instead of producing illegal marshal data. 4488 4489 - Issue #12983: Bytes literals with invalid ``\x`` escape now raise a SyntaxError 4490 and a full traceback including line number. 4491 4492 - Issue #16967: In function definition, evaluate positional defaults before 4493 keyword-only defaults. 4494 4495 - Issue #17173: Remove uses of locale-dependent C functions (isalpha() etc.) 4496 in the interpreter. 4497 4498 - Issue #17137: When an Unicode string is resized, the internal wide character 4499 string (wstr) format is now cleared. 4500 4501 - Issue #17043: The unicode-internal decoder no longer read past the end of 4502 input buffer. 4503 4504 - Issue #17098: All modules now have __loader__ set even if they pre-exist the 4505 bootstrapping of importlib. 4506 4507 - Issue #16979: Fix error handling bugs in the unicode-escape-decode decoder. 4508 4509 - Issue #16772: The base argument to the int constructor no longer accepts 4510 floats, or other non-integer objects with an __int__ method. Objects 4511 with an __index__ method are now accepted. 4512 4513 - Issue #10156: In the interpreter's initialization phase, unicode globals 4514 are now initialized dynamically as needed. 4515 4516 - Issue #16980: Fix processing of escaped non-ascii bytes in the 4517 unicode-escape-decode decoder. 4518 4519 - Issue #16975: Fix error handling bug in the escape-decode bytes decoder. 4520 4521 - Issue #14850: Now a charmap decoder treats U+FFFE as "undefined mapping" 4522 in any mapping, not only in a string. 4523 4524 - Issue #16613: Add *m* argument to ``collections.Chainmap.new_child`` to 4525 allow the new child map to be specified explicitly. 4526 4527 - Issue #16730: importlib.machinery.FileFinder now no longers raises an 4528 exception when trying to populate its cache and it finds out the directory is 4529 unreadable or has turned into a file. Reported and diagnosed by 4530 David Pritchard. 4531 4532 - Issue #16906: Fix a logic error that prevented most static strings from being 4533 cleared. 4534 4535 - Issue #11461: Fix the incremental UTF-16 decoder. Original patch by 4536 Amaury Forgeot d'Arc. 4537 4538 - Issue #16856: Fix a segmentation fault from calling repr() on a dict with 4539 a key whose repr raise an exception. 4540 4541 - Issue #16367: Fix FileIO.readall() on Windows for files larger than 2 GB. 4542 4543 - Issue #16761: Calling int() with base argument only now raises TypeError. 4544 4545 - Issue #16759: Support the full DWORD (unsigned long) range in Reg2Py 4546 when retrieving a REG_DWORD value. This corrects functions like 4547 winreg.QueryValueEx that may have been returning truncated values. 4548 4549 - Issue #14420: Support the full DWORD (unsigned long) range in Py2Reg 4550 when passed a REG_DWORD value. Fixes OverflowError in winreg.SetValueEx. 4551 4552 - Issue #11939: Set the st_dev attribute of stat_result to allow Windows to 4553 take advantage of the os.path.samefile/sameopenfile/samestat implementations 4554 used by other platforms. 4555 4556 - Issue #16772: The int() constructor's second argument (base) no longer 4557 accepts non integer values. Consistent with the behavior in Python 2. 4558 4559 - Issue #14470: Remove w9xpopen support per PEP 11. 4560 4561 - Issue #9856: Replace deprecation warning with raising TypeError 4562 in object.__format__. Patch by Florent Xicluna. 4563 4564 - Issue #16597: In buffered and text IO, call close() on the underlying stream 4565 if invoking flush() fails. 4566 4567 - Issue #16722: In the bytes() constructor, try to call __bytes__ on the 4568 argument before __index__. 4569 4570 - Issue #16421: loading multiple modules from one shared object is now 4571 handled correctly (previously, the first module loaded from that file 4572 was silently returned). Patch by Vclav milauer. 4573 4574 - Issue #16602: When a weakref's target was part of a long deallocation 4575 chain, the object could remain reachable through its weakref even though 4576 its refcount had dropped to zero. 4577 4578 - Issue #16495: Remove extraneous NULL encoding check from bytes_decode(). 4579 4580 - Issue #16619: Create NameConstant AST class to represent None, True, and False 4581 literals. As a result, these constants are never loaded at runtime from 4582 builtins. 4583 4584 - Issue #16455: On FreeBSD and Solaris, if the locale is C, the 4585 ASCII/surrogateescape codec is now used (instead of the locale encoding) to 4586 decode the command line arguments. This change fixes inconsistencies with 4587 os.fsencode() and os.fsdecode(), because these operating systems announce an 4588 ASCII locale encoding, but actually use the ISO-8859-1 encoding in practice. 4589 4590 - Issue #16562: Optimize dict equality testing. Patch by Serhiy Storchaka. 4591 4592 - Issue #16588: Silence unused-but-set warnings in Python/thread_pthread 4593 4594 - Issue #16592: stringlib_bytes_join doesn't raise MemoryError on allocation 4595 failure. 4596 4597 - Issue #16546: Fix: ast.YieldFrom argument is now mandatory. 4598 4599 - Issue #16514: Fix regression causing a traceback when sys.path[0] is None 4600 (actually, any non-string or non-bytes type). 4601 4602 - Issue #16306: Fix multiple error messages when unknown command line 4603 parameters where passed to the interpreter. Patch by Hieu Nguyen. 4604 4605 - Issue #16215: Fix potential double memory free in str.replace(). Patch 4606 by Serhiy Storchaka. 4607 4608 - Issue #16290: A float return value from the __complex__ special method is no 4609 longer accepted in the complex() constructor. 4610 4611 - Issue #16416: On Mac OS X, operating system data are now always 4612 encoded/decoded to/from UTF-8/surrogateescape, instead of the locale encoding 4613 (which may be ASCII if no locale environment variable is set), to avoid 4614 inconsistencies with os.fsencode() and os.fsdecode() functions which are 4615 already using UTF-8/surrogateescape. 4616 4617 - Issue #16453: Fix equality testing of dead weakref objects. 4618 4619 - Issue #9535: Fix pending signals that have been received but not yet 4620 handled by Python to not persist after os.fork() in the child process. 4621 4622 - Issue #14794: Fix slice.indices to return correct results for huge values, 4623 rather than raising OverflowError. 4624 4625 - Issue #15001: fix segfault on "del sys.modules['__main__']". Patch by Victor 4626 Stinner. 4627 4628 - Issue #8271: the utf-8 decoder now outputs the correct number of U+FFFD 4629 characters when used with the 'replace' error handler on invalid utf-8 4630 sequences. Patch by Serhiy Storchaka, tests by Ezio Melotti. 4631 4632 - Issue #5765: Apply a hard recursion limit in the compiler instead of 4633 blowing the stack and segfaulting. Initial patch by Andrea Griffini. 4634 4635 - Issue #16402: When slicing a range, fix shadowing of exceptions from 4636 __index__. 4637 4638 - Issue #16336: fix input checking in the surrogatepass error handler. 4639 Patch by Serhiy Storchaka. 4640 4641 - Issue #8401: assigning an int to a bytearray slice (e.g. b[3:4] = 5) now 4642 raises an error. 4643 4644 - Issue #7317: Display full tracebacks when an error occurs asynchronously. 4645 Patch by Alon Horev with update by Alexey Kachayev. 4646 4647 - Issue #16309: Make PYTHONPATH="" behavior the same as if PYTHONPATH 4648 not set at all. 4649 4650 - Issue #10189: Improve the error reporting of SyntaxErrors related to global 4651 and nonlocal statements. 4652 4653 - Fix segfaults on setting __qualname__ on builtin types and attempting to 4654 delete it on any type. 4655 4656 - Issue #14625: Rewrite the UTF-32 decoder. It is now 3x to 4x faster. Patch 4657 written by Serhiy Storchaka. 4658 4659 - Issue #16345: Fix an infinite loop when ``fromkeys`` on a dict subclass 4660 received a nonempty dict from the constructor. 4661 4662 - Issue #16271: Fix strange bugs that resulted from __qualname__ appearing in a 4663 class's __dict__ and on type. 4664 4665 - Issue #12805: Make bytes.join and bytearray.join faster when the separator 4666 is empty. Patch by Serhiy Storchaka. 4667 4668 - Issue #6074: Ensure cached bytecode files can always be updated by the 4669 user that created them, even when the source file is read-only. 4670 4671 - Issue #15958: bytes.join and bytearray.join now accept arbitrary buffer 4672 objects. 4673 4674 - Issue #14783: Improve int() docstring and switch docstrings for str(), 4675 range(), and slice() to use multi-line signatures. 4676 4677 - Issue #16160: Subclass support now works for types.SimpleNamespace. 4678 4679 - Issue #16148: Implement PEP 424, adding operator.length_hint and 4680 PyObject_LengthHint. 4681 4682 - Upgrade Unicode data (UCD) to version 6.2. 4683 4684 - Issue #15379: Fix passing of non-BMP characters as integers for the charmap 4685 decoder (already working as unicode strings). Patch by Serhiy Storchaka. 4686 4687 - Issue #15144: Fix possible integer overflow when handling pointers as integer 4688 values, by using `Py_uintptr_t` instead of `size_t`. Patch by Serhiy 4689 Storchaka. 4690 4691 - Issue #15965: Explicitly cast `AT_FDCWD` as (int). Required on Solaris 10 4692 (which defines `AT_FDCWD` as ``0xffd19553``), harmless on other platforms. 4693 4694 - Issue #15839: Convert SystemErrors in `super()` to RuntimeErrors. 4695 4696 - Issue #15448: Buffered IO now frees the buffer when closed, instead 4697 of when deallocating. 4698 4699 - Issue #15846: Fix SystemError which happened when using `ast.parse()` in an 4700 exception handler on code with syntax errors. 4701 4702 - Issue #15897: zipimport.c doesn't check return value of fseek(). 4703 Patch by Felipe Cruz. 4704 4705 - Issue #15801: Make sure mappings passed to '%' formatting are actually 4706 subscriptable. 4707 4708 - Issue #15111: __import__ should propagate ImportError when raised as a 4709 side-effect of a module triggered from using fromlist. 4710 4711 - Issue #15022: Add pickle and comparison support to types.SimpleNamespace. 4712 4713 Library 4714 ------- 4715 4716 - Issue #4331: Added functools.partialmethod (Initial patch by Alon Horev) 4717 4718 - Issue #13461: Fix a crash in the TextIOWrapper.tell method on 64-bit 4719 platforms. Patch by Yogesh Chaudhari. 4720 4721 - Issue #18681: Fix a NameError in importlib.reload() (noticed by Weizhao Li). 4722 4723 - Issue #14323: Expanded the number of digits in the coefficients for the 4724 RGB -- YIQ conversions so that they match the FCC NTSC versions. 4725 4726 - Issue #17998: Fix an internal error in regular expression engine. 4727 4728 - Issue #17557: Fix os.getgroups() to work with the modified behavior of 4729 getgroups(2) on OS X 10.8. Original patch by Mateusz Lenik. 4730 4731 - Issue #18608: Avoid keeping a strong reference to the locale module 4732 inside the _io module. 4733 4734 - Issue #18619: Fix atexit leaking callbacks registered from sub-interpreters, 4735 and make it GC-aware. 4736 4737 - Issue #15699: The readline module now uses PEP 3121-style module 4738 initialization, so as to reclaim allocated resources (Python callbacks) 4739 at shutdown. Original patch by Robin Schreiber. 4740 4741 - Issue #17616: wave.open now supports the context management protocol. 4742 4743 - Issue #18599: Fix name attribute of _sha1.sha1() object. It now returns 4744 'SHA1' instead of 'SHA'. 4745 4746 - Issue #13266: Added inspect.unwrap to easily unravel __wrapped__ chains 4747 (initial patch by Daniel Urban and Aaron Iles) 4748 4749 - Issue #18561: Skip name in ctypes' _build_callargs() if name is NULL. 4750 4751 - Issue #18559: Fix NULL pointer dereference error in _pickle module 4752 4753 - Issue #18556: Check the return type of PyUnicode_AsWideChar() in ctype's 4754 U_set(). 4755 4756 - Issue #17818: aifc.getparams now returns a namedtuple. 4757 4758 - Issue #18549: Eliminate dead code in socket_ntohl() 4759 4760 - Issue #18530: Remove additional stat call from posixpath.ismount. 4761 Patch by Alex Gaynor. 4762 4763 - Issue #18514: Fix unreachable Py_DECREF() call in PyCData_FromBaseObj() 4764 4765 - Issue #9177: Calling read() or write() now raises ValueError, not 4766 AttributeError, on a closed SSL socket. Patch by Senko Rasic. 4767 4768 - Issue #18513: Fix behaviour of cmath.rect w.r.t. signed zeros on OS X 10.8 + 4769 gcc. 4770 4771 - Issue #18479: Changed venv Activate.ps1 to make deactivate a function, and 4772 removed Deactivate.ps1. 4773 4774 - Issue #18480: Add missing call to PyType_Ready to the _elementtree extension. 4775 4776 - Issue #17778: Fix test discovery for test_multiprocessing. (Patch by 4777 Zachary Ware.) 4778 4779 - Issue #18393: The private module _gestalt and private functions 4780 platform._mac_ver_gestalt, platform._mac_ver_lookup and 4781 platform._bcd2str have been removed. This does not affect the public 4782 interface of the platform module. 4783 4784 - Issue #17482: functools.update_wrapper (and functools.wraps) now set the 4785 __wrapped__ attribute correctly even if the underlying function has a 4786 __wrapped__ attribute set. 4787 4788 - Issue #18431: The new email header parser now decodes RFC2047 encoded words 4789 in structured headers. 4790 4791 - Issue #18432: The sched module's queue method was incorrectly returning 4792 an iterator instead of a list. 4793 4794 - Issue #18044: The new email header parser was mis-parsing encoded words where 4795 an encoded character immediately followed the '?' that follows the CTE 4796 character, resulting in a decoding failure. They are now decoded correctly. 4797 4798 - Issue #18101: Tcl.split() now process strings nested in a tuple as it 4799 do with byte strings. 4800 4801 - Issue #18116: getpass was always getting an error when testing /dev/tty, 4802 and thus was always falling back to stdin, and would then raise an exception 4803 if stdin could not be used (such as /dev/null). It also leaked an open file. 4804 All of these issues are now fixed. 4805 4806 - Issue #17198: Fix a NameError in the dbm module. Patch by Valentina 4807 Mukhamedzhanova. 4808 4809 - Issue #18013: Fix cgi.FieldStorage to parse the W3C sample form. 4810 4811 - Issue #18020: improve html.escape speed by an order of magnitude. 4812 Patch by Matt Bryant. 4813 4814 - Issue #18347: ElementTree's html serializer now preserves the case of 4815 closing tags. 4816 4817 - Issue #17261: Ensure multiprocessing's proxies use proper address. 4818 4819 - Issue #18343: faulthandler.register() now keeps the previous signal handler 4820 when the function is called twice, so faulthandler.unregister() restores 4821 correctly the original signal handler. 4822 4823 - Issue #17097: Make multiprocessing ignore EINTR. 4824 4825 - Issue #18339: Negative ints keys in unpickler.memo dict no longer cause a 4826 segfault inside the _pickle C extension. 4827 4828 - Issue #18240: The HMAC module is no longer restricted to bytes and accepts 4829 any bytes-like object, e.g. memoryview. Original patch by Jonas Borgstrm. 4830 4831 - Issue #18224: Removed pydoc script from created venv, as it causes problems 4832 on Windows and adds no value over and above python -m pydoc ... 4833 4834 - Issue #18155: The csv module now correctly handles csv files that use 4835 a delimter character that has a special meaning in regexes, instead of 4836 throwing an exception. 4837 4838 - Issue #14360: encode_quopri can now be successfully used as an encoder 4839 when constructing a MIMEApplication object. 4840 4841 - Issue #11390: Add -o and -f command line options to the doctest CLI to 4842 specify doctest options (and convert it to using argparse). 4843 4844 - Issue #18135: ssl.SSLSocket.write() now raises an OverflowError if the input 4845 string in longer than 2 gigabytes, and ssl.SSLContext.load_cert_chain() 4846 raises a ValueError if the password is longer than 2 gigabytes. The ssl 4847 module does not support partial write. 4848 4849 - Issue #11016: Add C implementation of the stat module as _stat. 4850 4851 - Issue #18248: Fix libffi build on AIX. 4852 4853 - Issue #18259: Declare sethostname in socketmodule.c for AIX 4854 4855 - Issue #18147: Add diagnostic functions to ssl.SSLContext(). get_ca_list() 4856 lists all loaded CA certificates and cert_store_stats() returns amount of 4857 loaded X.509 certs, X.509 CA certs and CRLs. 4858 4859 - Issue #18167: cgi.FieldStorage no longer fails to handle multipart/form-data 4860 when ``\r\n`` appears at end of 65535 bytes without other newlines. 4861 4862 - Issue #18076: Introduce importlib.util.decode_source(). 4863 4864 - Issue #18357: add tests for dictview set difference. 4865 Patch by Fraser Tweedale. 4866 4867 - importlib.abc.SourceLoader.get_source() no longer changes SyntaxError or 4868 UnicodeDecodeError into ImportError. 4869 4870 - Issue #18058, 18057: Make the namespace package loader meet the 4871 importlib.abc.InspectLoader ABC, allowing for namespace packages to work with 4872 runpy. 4873 4874 - Issue #17177: The imp module is pending deprecation. 4875 4876 - subprocess: Prevent a possible double close of parent pipe fds when the 4877 subprocess exec runs into an error. Prevent a regular multi-close of the 4878 /dev/null fd when any of stdin, stdout and stderr was set to DEVNULL. 4879 4880 - Issue #18194: Introduce importlib.util.cache_from_source() and 4881 source_from_cache() while documenting the equivalent functions in imp as 4882 deprecated. 4883 4884 - Issue #17907: Document imp.new_module() as deprecated in favour of 4885 types.ModuleType. 4886 4887 - Issue #18192: Introduce importlib.util.MAGIC_NUMBER and document as deprecated 4888 imp.get_magic(). 4889 4890 - Issue #18149: Add filecmp.clear_cache() to manually clear the filecmp cache. 4891 Patch by Mark Levitt 4892 4893 - Issue #18193: Add importlib.reload(). 4894 4895 - Issue #18157: Stop using imp.load_module() in pydoc. 4896 4897 - Issue #16102: Make uuid._netbios_getnode() work again on Python 3. 4898 4899 - Issue #17134: Add ssl.enum_cert_store() as interface to Windows' cert store. 4900 4901 - Issue #18143: Implement ssl.get_default_verify_paths() in order to debug 4902 the default locations for cafile and capath. 4903 4904 - Issue #17314: Move multiprocessing.forking over to importlib. 4905 4906 - Issue #11959: SMTPServer and SMTPChannel now take an optional map, use of 4907 which avoids affecting global state. 4908 4909 - Issue #18109: os.uname() now decodes fields from the locale encoding, and 4910 socket.gethostname() now decodes the hostname from the locale encoding, 4911 instead of using the UTF-8 encoding in strict mode. 4912 4913 - Issue #18089: Implement importlib.abc.InspectLoader.load_module. 4914 4915 - Issue #18088: Introduce importlib.abc.Loader.init_module_attrs for setting 4916 module attributes. Leads to the pending deprecation of 4917 importlib.util.module_for_loader. 4918 4919 - Issue #17403: urllib.parse.robotparser normalizes the urls before adding to 4920 ruleline. This helps in handling certain types invalid urls in a conservative 4921 manner. Patch contributed by Mher Movsisyan. 4922 4923 - Issue #18070: Have importlib.util.module_for_loader() set attributes 4924 unconditionally in order to properly support reloading. 4925 4926 - Added importlib.util.module_to_load to return a context manager to provide the 4927 proper module object to load. 4928 4929 - Issue #18025: Fixed a segfault in io.BufferedIOBase.readinto() when raw 4930 stream's read() returns more bytes than requested. 4931 4932 - Issue #18011: As was originally intended, base64.b32decode() now raises a 4933 binascii.Error if there are non-b32-alphabet characters present in the input 4934 string, instead of a TypeError. 4935 4936 - Issue #18072: Implement importlib.abc.InspectLoader.get_code() and 4937 importlib.abc.ExecutionLoader.get_code(). 4938 4939 - Issue #8240: Set the SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER flag on SSL 4940 sockets. 4941 4942 - Issue #17269: Workaround for socket.getaddrinfo crash on MacOS X 4943 with port None or "0" and flags AI_NUMERICSERV. 4944 4945 - Issue #16986: ElementTree now correctly works with string input when the 4946 internal XML encoding is not UTF-8 or US-ASCII. 4947 4948 - Issue #17996: socket module now exposes AF_LINK constant on BSD and OSX. 4949 4950 - Issue #17900: Allowed pickling of recursive OrderedDicts. Decreased pickled 4951 size and pickling time. 4952 4953 - Issue #17914: Add os.cpu_count(). Patch by Yogesh Chaudhari, based on an 4954 initial patch by Trent Nelson. 4955 4956 - Issue #17812: Fixed quadratic complexity of base64.b32encode(). 4957 Optimize base64.b32encode() and base64.b32decode() (speed up to 3x). 4958 4959 - Issue #17980: Fix possible abuse of ssl.match_hostname() for denial of 4960 service using certificates with many wildcards (CVE-2013-2099). 4961 4962 - Issue #15758: Fix FileIO.readall() so it no longer has O(n**2) complexity. 4963 4964 - Issue #14596: The struct.Struct() objects now use a more compact 4965 implementation. 4966 4967 - Issue #17981: logging's SysLogHandler now closes the socket when it catches 4968 socket OSErrors. 4969 4970 - Issue #17964: Fix os.sysconf(): the return type of the C sysconf() function 4971 is long, not int. 4972 4973 - Fix typos in the multiprocessing module. 4974 4975 - Issue #17754: Make ctypes.util.find_library() independent of the locale. 4976 4977 - Issue #17968: Fix memory leak in os.listxattr(). 4978 4979 - Issue #17606: Fixed support of encoded byte strings in the XMLGenerator 4980 characters() and ignorableWhitespace() methods. Original patch by Sebastian 4981 Ortiz Vasquez. 4982 4983 - Issue #17732: Ignore distutils.cfg options pertaining to install paths if a 4984 virtual environment is active. 4985 4986 - Issue #17915: Fix interoperability of xml.sax with file objects returned by 4987 codecs.open(). 4988 4989 - Issue #16601: Restarting iteration over tarfile really restarts rather 4990 than continuing from where it left off. Patch by Michael Birtwell. 4991 4992 - Issue #17289: The readline module now plays nicer with external modules 4993 or applications changing the rl_completer_word_break_characters global 4994 variable. Initial patch by Bradley Froehle. 4995 4996 - Issue #12181: select module: Fix struct kevent definition on OpenBSD 64-bit 4997 platforms. Patch by Federico Schwindt. 4998 4999 - Issue #11816: multiple improvements to the dis module: get_instructions 5000 generator, ability to redirect output to a file, Bytecode and Instruction 5001 abstractions. Patch by Nick Coghlan, Ryan Kelly and Thomas Kluyver. 5002 5003 - Issue #13831: Embed stringification of remote traceback in local 5004 traceback raised when pool task raises an exception. 5005 5006 - Issue #15528: Add weakref.finalize to support finalization using 5007 weakref callbacks. 5008 5009 - Issue #14173: Avoid crashing when reading a signal handler during 5010 interpreter shutdown. 5011 5012 - Issue #15902: Fix imp.load_module() accepting None as a file when loading an 5013 extension module. 5014 5015 - Issue #13721: SSLSocket.getpeercert() and SSLSocket.do_handshake() now 5016 raise an OSError with ENOTCONN, instead of an AttributeError, when the 5017 SSLSocket is not connected. 5018 5019 - Issue #14679: add an __all__ (that contains only HTMLParser) to html.parser. 5020 5021 - Issue #17802: Fix an UnboundLocalError in html.parser. Initial tests by 5022 Thomas Barlow. 5023 5024 - Issue #17358: Modules loaded by imp.load_source() and load_compiled() (and by 5025 extension load_module()) now have a better chance of working when reloaded. 5026 5027 - Issue #17804: New function ``struct.iter_unpack`` allows for streaming 5028 struct unpacking. 5029 5030 - Issue #17830: When keyword.py is used to update a keyword file, it now 5031 preserves the line endings of the original file. 5032 5033 - Issue #17272: Making the urllib.request's Request.full_url a descriptor. 5034 Fixes bugs with assignment to full_url. Patch by Demian Brecht. 5035 5036 - Issue #17353: Plistlib emitted empty data tags with deeply nested datastructures 5037 5038 - Issue #11714: Use 'with' statements to assure a Semaphore releases a 5039 condition variable. Original patch by Thomas Rachel. 5040 5041 - Issue #16624: `subprocess.check_output` now accepts an `input` argument, 5042 allowing the subprocess's stdin to be provided as a (byte) string. 5043 Patch by Zack Weinberg. 5044 5045 - Issue #17795: Reverted backwards-incompatible change in SysLogHandler with 5046 Unix domain sockets. 5047 5048 - Issue #16694: Add a pure Python implementation of the operator module. 5049 Patch by Zachary Ware. 5050 5051 - Issue #11182: remove the unused and undocumented pydoc.Scanner class. 5052 Patch by Martin Morrison. 5053 5054 - Issue #17741: Add ElementTree.XMLPullParser, an event-driven parser for 5055 non-blocking applications. 5056 5057 - Issue #17555: Fix ForkAwareThreadLock so that size of after fork 5058 registry does not grow exponentially with generation of process. 5059 5060 - Issue #17707: fix regression in multiprocessing.Queue's get() method where 5061 it did not block for short timeouts. 5062 5063 - Issue #17720: Fix the Python implementation of pickle.Unpickler to correctly 5064 process the APPENDS opcode when it is used on non-list objects. 5065 5066 - Issue #17012: shutil.which() no longer falls back to the PATH environment 5067 variable if an empty path argument is specified. Patch by Serhiy Storchaka. 5068 5069 - Issue #17710: Fix pickle raising a SystemError on bogus input. 5070 5071 - Issue #17341: Include the invalid name in the error messages from re about 5072 invalid group names. 5073 5074 - Issue #17702: os.environ now raises KeyError with the original environment 5075 variable name (str on UNIX), instead of using the encoded name (bytes on 5076 UNIX). 5077 5078 - Issue #16163: Make the importlib based version of pkgutil.iter_importers 5079 work for submodules. Initial patch by Berker Peksag. 5080 5081 - Issue #16804: Fix a bug in the 'site' module that caused running 5082 'python -S -m site' to incorrectly throw an exception. 5083 5084 - Issue #15480: Remove the deprecated and unused TYPE_INT64 code from marshal. 5085 Initial patch by Daniel Riti. 5086 5087 - Issue #2118: SMTPException is now a subclass of OSError. 5088 5089 - Issue #17016: Get rid of possible pointer wraparounds and integer overflows 5090 in the re module. Patch by Nickolai Zeldovich. 5091 5092 - Issue #16658: add missing return to HTTPConnection.send(). 5093 Patch by Jeff Knupp. 5094 5095 - Issue #9556: the logging package now allows specifying a time-of-day for a 5096 TimedRotatingFileHandler to rotate. 5097 5098 - Issue #14971: unittest test discovery no longer gets confused when a function 5099 has a different __name__ than its name in the TestCase class dictionary. 5100 5101 - Issue #17487: The wave getparams method now returns a namedtuple rather than 5102 a plain tuple. 5103 5104 - Issue #17675: socket repr() provides local and remote addresses (if any). 5105 Patch by Giampaolo Rodola' 5106 5107 - Issue #17093: Make the ABCs in importlib.abc provide default values or raise 5108 reasonable exceptions for their methods to make them more amenable to super() 5109 calls. 5110 5111 - Issue #17566: Make importlib.abc.Loader.module_repr() optional instead of an 5112 abstractmethod; now it raises NotImplementedError so as to be ignored by default. 5113 5114 - Issue #17678: Remove the use of deprecated method in http/cookiejar.py by 5115 changing the call to get_origin_req_host() to origin_req_host. 5116 5117 - Issue #17666: Fix reading gzip files with an extra field. 5118 5119 - Issue #16475: Support object instancing, recursion and interned strings 5120 in marshal 5121 5122 - Issue #17502: Process DEFAULT values in mock side_effect that returns iterator. 5123 5124 - Issue #16795: On the ast.arguments object, unify vararg with varargannotation 5125 and kwarg and kwargannotation. Change the column offset of ast.Attribute to be 5126 at the attribute name. 5127 5128 - Issue #17434: Properly raise a SyntaxError when a string occurs between future 5129 imports. 5130 5131 - Issue #17117: Import and @importlib.util.set_loader now set __loader__ when 5132 it has a value of None or the attribute doesn't exist. 5133 5134 - Issue #17032: The "global" in the "NameError: global name 'x' is not defined" 5135 error message has been removed. Patch by Ram Rachum. 5136 5137 - Issue #18080: When building a C extension module on OS X, if the compiler 5138 is overridden with the CC environment variable, use the new compiler as 5139 the default for linking if LDSHARED is not also overridden. This restores 5140 Distutils behavior introduced in 3.2.3 and inadvertently dropped in 3.3.0. 5141 5142 - Issue #18113: Fixed a refcount leak in the curses.panel module's 5143 set_userptr() method. Reported by Atsuo Ishimoto. 5144 5145 - Implement PEP 443 "Single-dispatch generic functions". 5146 5147 - Implement PEP 435 "Adding an Enum type to the Python standard library". 5148 5149 - Issue #15596: Faster pickling of unicode strings. 5150 5151 - Issue #17572: Avoid chained exceptions when passing bad directives to 5152 time.strptime(). Initial patch by Claudiu Popa. 5153 5154 - Issue #17435: threading.Timer's __init__ method no longer uses mutable 5155 default values for the args and kwargs parameters. 5156 5157 - Issue #17526: fix an IndexError raised while passing code without filename to 5158 inspect.findsource(). Initial patch by Tyler Doyle. 5159 5160 - Issue #17540: Added style parameter to logging formatter configuration by dict. 5161 5162 - Issue #16692: The ssl module now supports TLS 1.1 and TLS 1.2. Initial 5163 patch by Michele Orr. 5164 5165 - Issue #17025: multiprocessing: Reduce Queue and SimpleQueue contention. 5166 5167 - Issue #17536: Add to webbrowser's browser list: www-browser, x-www-browser, 5168 iceweasel, iceape. 5169 5170 - Issue #17150: pprint now uses line continuations to wrap long string 5171 literals. 5172 5173 - Issue #17488: Change the subprocess.Popen bufsize parameter default value 5174 from unbuffered (0) to buffering (-1) to match the behavior existing code 5175 expects and match the behavior of the subprocess module in Python 2 to avoid 5176 introducing hard to track down bugs. 5177 5178 - Issue #17521: Corrected non-enabling of logger following two calls to 5179 fileConfig(). 5180 5181 - Issue #17508: Corrected logging MemoryHandler configuration in dictConfig() 5182 where the target handler wasn't configured first. 5183 5184 - Issue #17209: curses.window.get_wch() now correctly handles KeyboardInterrupt 5185 (CTRL+c). 5186 5187 - Issue #5713: smtplib now handles 421 (closing connection) error codes when 5188 sending mail by closing the socket and reporting the 421 error code via the 5189 exception appropriate to the command that received the error response. 5190 5191 - Issue #16997: unittest.TestCase now provides a subTest() context manager 5192 to procedurally generate, in an easy way, small test instances. 5193 5194 - Issue #17485: Also delete the Request Content-Length header if the data 5195 attribute is deleted. (Follow on to issue Issue #16464). 5196 5197 - Issue #15927: CVS now correctly parses escaped newlines and carriage 5198 when parsing with quoting turned off. 5199 5200 - Issue #17467: add readline and readlines support to mock_open in 5201 unittest.mock. 5202 5203 - Issue #13248: removed deprecated and undocumented difflib.isbjunk, 5204 isbpopular. 5205 5206 - Issue #17192: Update the ctypes module's libffi to v3.0.13. This 5207 specifically addresses a stack misalignment issue on x86 and issues on 5208 some more recent platforms. 5209 5210 - Issue #8862: Fixed curses cleanup when getkey is interrupted by a signal. 5211 5212 - Issue #17443: imaplib.IMAP4_stream was using the default unbuffered IO 5213 in subprocess, but the imap code assumes buffered IO. In Python2 this 5214 worked by accident. IMAP4_stream now explicitly uses buffered IO. 5215 5216 - Issue #17476: Fixed regression relative to Python2 in undocumented pydoc 5217 'allmethods'; it was missing unbound methods on the class. 5218 5219 - Issue #17474: Remove the deprecated methods of Request class. 5220 5221 - Issue #16709: unittest discover order is no-longer filesystem specific. Patch 5222 by Jeff Ramnani. 5223 5224 - Use the HTTPS PyPI url for upload, overriding any plain HTTP URL in pypirc. 5225 5226 - Issue #5024: sndhdr.whichhdr now returns the frame count for WAV files 5227 rather than -1. 5228 5229 - Issue #17460: Remove the strict argument of HTTPConnection and removing the 5230 DeprecationWarning being issued from 3.2 onwards. 5231 5232 - Issue #16880: Do not assume _imp.load_dynamic() is defined in the imp module. 5233 5234 - Issue #16389: Fixed a performance regression relative to Python 3.1 in the 5235 caching of compiled regular expressions. 5236 5237 - Added missing FeedParser and BytesFeedParser to email.parser.__all__. 5238 5239 - Issue #17431: Fix missing import of BytesFeedParser in email.parser. 5240 5241 - Issue #12921: http.server's send_error takes an explain argument to send more 5242 information in response. Patch contributed by Karl. 5243 5244 - Issue #17414: Add timeit, repeat, and default_timer to timeit.__all__. 5245 5246 - Issue #1285086: Get rid of the refcounting hack and speed up 5247 urllib.parse.unquote() and urllib.parse.unquote_to_bytes(). 5248 5249 - Issue #17099: Have importlib.find_loader() raise ValueError when __loader__ 5250 is not set, harmonizing with what happens when the attribute is set to None. 5251 5252 - Expose the O_PATH constant in the os module if it is available. 5253 5254 - Issue #17368: Fix an off-by-one error in the Python JSON decoder that caused 5255 a failure while decoding empty object literals when object_pairs_hook was 5256 specified. 5257 5258 - Issue #17385: Fix quadratic behavior in threading.Condition. The FIFO 5259 queue now uses a deque instead of a list. 5260 5261 - Issue #15806: Add contextlib.ignore(). This creates a context manager to 5262 ignore specified exceptions, replacing the "except SomeException: pass" idiom. 5263 5264 - Issue #14645: The email generator classes now produce output using the 5265 specified linesep throughout. Previously if the prolog, epilog, or 5266 body were stored with a different linesep, that linesep was used. This 5267 fix corrects an RFC non-compliance issue with smtplib.send_message. 5268 5269 - Issue #17278: Fix a crash in heapq.heappush() and heapq.heappop() when 5270 the list is being resized concurrently. 5271 5272 - Issue #16962: Use getdents64 instead of the obsolete getdents syscall 5273 in the subprocess module on Linux. 5274 5275 - Issue #16935: unittest now counts the module as skipped if it raises SkipTest, 5276 instead of counting it as an error. Patch by Zachary Ware. 5277 5278 - Issue #17018: Make Process.join() retry if os.waitpid() fails with EINTR. 5279 5280 - Issue #17223: array module: Fix a crasher when converting an array containing 5281 invalid characters (outside range [U+0000; U+10ffff]) to Unicode: 5282 repr(array), str(array) and array.tounicode(). Patch written by Manuel Jacob. 5283 5284 - Issue #17197: profile/cProfile modules refactored so that code of run() and 5285 runctx() utility functions is not duplicated in both modules. 5286 5287 - Issue #14720: sqlite3: Convert datetime microseconds correctly. 5288 Patch by Lowe Thiderman. 5289 5290 - Issue #15132: Allow a list for the defaultTest argument of 5291 unittest.TestProgram. Patch by Jyrki Pulliainen. 5292 5293 - Issue #17225: JSON decoder now counts columns in the first line starting 5294 with 1, as in other lines. 5295 5296 - Issue #6623: Added explicit DeprecationWarning for ftplib.netrc, which has 5297 been deprecated and undocumented for a long time. 5298 5299 - Issue #13700: Fix byte/string handling in imaplib authentication when an 5300 authobject is specified. 5301 5302 - Issue #13153: Tkinter functions now raise TclError instead of ValueError when 5303 a string argument contains non-BMP character. 5304 5305 - Issue #9669: Protect re against infinite loops on zero-width matching in 5306 non-greedy repeat. Patch by Matthew Barnett. 5307 5308 - Issue #13169: The maximal repetition number in a regular expression has been 5309 increased from 65534 to 2147483647 (on 32-bit platform) or 4294967294 (on 5310 64-bit). 5311 5312 - Issue #17143: Fix a missing import in the trace module. Initial patch by 5313 Berker Peksag. 5314 5315 - Issue #15220: email.feedparser's line splitting algorithm is now simpler and 5316 faster. 5317 5318 - Issue #16743: Fix mmap overflow check on 32 bit Windows. 5319 5320 - Issue #16996: webbrowser module now uses shutil.which() to find a 5321 web-browser on the executable search path. 5322 5323 - Issue #16800: tempfile.gettempdir() no longer left temporary files when 5324 the disk is full. Original patch by Amir Szekely. 5325 5326 - Issue #17192: Import libffi-3.0.12. 5327 5328 - Issue #16564: Fixed regression relative to Python2 in the operation of 5329 email.encoders.encode_7or8bit when used with binary data. 5330 5331 - Issue #17052: unittest discovery should use self.testLoader. 5332 5333 - Issue #4591: Uid and gid values larger than 2**31 are supported now. 5334 5335 - Issue #17141: random.vonmisesvariate() no longer hangs for large kappas. 5336 5337 - Issue #17149: Fix random.vonmisesvariate to always return results in 5338 [0, 2*math.pi]. 5339 5340 - Issue #1470548: XMLGenerator now works with binary output streams. 5341 5342 - Issue #6975: os.path.realpath() now correctly resolves multiple nested 5343 symlinks on POSIX platforms. 5344 5345 - Issue #13773: sqlite3.connect() gets a new `uri` parameter to pass the 5346 filename as a URI, allowing to pass custom options. 5347 5348 - Issue #16564: Fixed regression relative to Python2 in the operation of 5349 email.encoders.encode_noop when used with binary data. 5350 5351 - Issue #10355: The mode, name, encoding and newlines properties now work on 5352 SpooledTemporaryFile objects even when they have not yet rolled over. 5353 Obsolete method xreadline (which has never worked in Python 3) has been 5354 removed. 5355 5356 - Issue #16686: Fixed a lot of bugs in audioop module. Fixed crashes in 5357 avgpp(), maxpp() and ratecv(). Fixed an integer overflow in add(), bias(), 5358 and ratecv(). reverse(), lin2lin() and ratecv() no more lose precision for 5359 32-bit samples. max() and rms() no more returns a negative result and 5360 various other functions now work correctly with 32-bit sample -0x80000000. 5361 5362 - Issue #17073: Fix some integer overflows in sqlite3 module. 5363 5364 - Issue #16723: httplib.HTTPResponse no longer marked closed when the connection 5365 is automatically closed. 5366 5367 - Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by 5368 Brian Thorne. 5369 5370 - Issue #16948: Fix quoted printable body encoding for non-latin1 character 5371 sets in the email package. 5372 5373 - Issue #16811: Fix folding of headers with no value in the provisional email 5374 policies. 5375 5376 - Issue #17132: Update symbol for "yield from" grammar changes. 5377 5378 - Issue #17076: Make copying of xattrs more tolerant of missing FS support. 5379 Patch by Thomas Wouters. 5380 5381 - Issue #17089: Expat parser now correctly works with string input when the 5382 internal XML encoding is not UTF-8 or US-ASCII. It also now accepts bytes 5383 and strings larger than 2 GiB. 5384 5385 - Issue #6083: Fix multiple segmentation faults occurred when PyArg_ParseTuple 5386 parses nested mutating sequence. 5387 5388 - Issue #5289: Fix ctypes.util.find_library on Solaris. 5389 5390 - Issue #17106: Fix a segmentation fault in io.TextIOWrapper when an underlying 5391 stream or a decoder produces data of an unexpected type (i.e. when 5392 io.TextIOWrapper initialized with text stream or use bytes-to-bytes codec). 5393 5394 - Issue #17015: When it has a spec, a Mock object now inspects its signature 5395 when matching calls, so that arguments can be matched positionally or 5396 by name. 5397 5398 - Issue #15633: httplib.HTTPResponse is now mark closed when the server 5399 sends less than the advertised Content-Length. 5400 5401 - Issue #12268: The io module file object write methods no longer abort early 5402 when one of its write system calls is interrupted (EINTR). 5403 5404 - Issue #6972: The zipfile module no longer overwrites files outside of 5405 its destination path when extracting malicious zip files. 5406 5407 - Issue #4844: ZipFile now raises BadZipFile when opens a ZIP file with an 5408 incomplete "End of Central Directory" record. Original patch by Guilherme 5409 Polo and Alan McIntyre. 5410 5411 - Issue #17071: Signature.bind() now works when one of the keyword arguments 5412 is named ``self``. 5413 5414 - Issue #12004: Fix an internal error in PyZipFile when writing an invalid 5415 Python file. Patch by Ben Morgan. 5416 5417 - Have py_compile use importlib as much as possible to avoid code duplication. 5418 Code now raises FileExistsError if the file path to be used for the 5419 byte-compiled file is a symlink or non-regular file as a warning that import 5420 will not keep the file path type if it writes to that path. 5421 5422 - Issue #16972: Have site.addpackage() consider already known paths even when 5423 none are explicitly passed in. Bug report and fix by Kirill. 5424 5425 - Issue #1602133: on Mac OS X a shared library build (``--enable-shared``) 5426 now fills the ``os.environ`` variable correctly. 5427 5428 - Issue #15505: `unittest.installHandler` no longer assumes SIGINT handler is 5429 set to a callable object. 5430 5431 - Issue #13454: Fix a crash when deleting an iterator created by itertools.tee() 5432 if all other iterators were very advanced before. 5433 5434 - Issue #12411: Fix to cgi.parse_multipart to correctly use bytes boundaries 5435 and bytes data. Patch by Jonas Wagner. 5436 5437 - Issue #16957: shutil.which() no longer searches a bare file name in the 5438 current directory on Unix and no longer searches a relative file path with 5439 a directory part in PATH directories. Patch by Thomas Kluyver. 5440 5441 - Issue #1159051: GzipFile now raises EOFError when reading a corrupted file 5442 with truncated header or footer. 5443 5444 - Issue #16993: shutil.which() now preserves the case of the path and extension 5445 on Windows. 5446 5447 - Issue #16992: On Windows in signal.set_wakeup_fd, validate the file 5448 descriptor argument. 5449 5450 - Issue #16422: For compatibility with the Python version, the C version of 5451 decimal now uses strings instead of integers for rounding mode constants. 5452 5453 - Issue #15861: tkinter now correctly works with lists and tuples containing 5454 strings with whitespaces, backslashes or unbalanced braces. 5455 5456 - Issue #9720: zipfile now writes correct local headers for files larger than 5457 4 GiB. 5458 5459 - Issue #16955: Fix the poll() method for multiprocessing's socket 5460 connections on Windows. 5461 5462 - SSLContext.load_dh_params() now properly closes the input file. 5463 5464 - Issue #15031: Refactor some .pyc management code to cut down on code 5465 duplication. Thanks to Ronan Lamy for the report and taking an initial stab 5466 at the problem. 5467 5468 - Issue #16398: Optimize deque.rotate() so that it only moves pointers 5469 and doesn't touch the underlying data with increfs and decrefs. 5470 5471 - Issue #16900: Issue a ResourceWarning when an ssl socket is left unclosed. 5472 5473 - Issue #13899: ``\A``, ``\Z``, and ``\B`` now correctly match the A, Z, 5474 and B literals when used inside character classes (e.g. ``'[\A]'``). 5475 Patch by Matthew Barnett. 5476 5477 - Issue #15545: Fix regression in sqlite3's iterdump method where it was 5478 failing if the connection used a row factory (such as sqlite3.Row) that 5479 produced unsortable objects. (Regression was introduced by fix for 9750). 5480 5481 - fcntl: add F_DUPFD_CLOEXEC constant, available on Linux 2.6.24+. 5482 5483 - Issue #15972: Fix error messages when os functions expecting a file name or 5484 file descriptor receive the incorrect type. 5485 5486 - Issue #8109: The ssl module now has support for server-side SNI, thanks 5487 to a :meth:`SSLContext.set_servername_callback` method. Patch by Daniel 5488 Black. 5489 5490 - Issue #16860: In tempfile, use O_CLOEXEC when available to set the 5491 close-on-exec flag atomically. 5492 5493 - Issue #16674: random.getrandbits() is now 20-40% faster for small integers. 5494 5495 - Issue #16009: JSON error messages now provide more information. 5496 5497 - Issue #16828: Fix error incorrectly raised by bz2.compress(b'') and 5498 bz2.BZ2Compressor.compress(b''). Initial patch by Martin Packman. 5499 5500 - Issue #16833: In http.client.HTTPConnection, do not concatenate the request 5501 headers and body when the payload exceeds 16 KB, since it can consume more 5502 memory for no benefit. Patch by Benno Leslie. 5503 5504 - Issue #16541: tk_setPalette() now works with keyword arguments. 5505 5506 - Issue #16820: In configparser, `parser.popitem()` no longer raises ValueError. 5507 This makes `parser.clean()` work correctly. 5508 5509 - Issue #16820: In configparser, ``parser['section'] = {}`` now preserves 5510 section order within the parser. This makes `parser.update()` preserve section 5511 order as well. 5512 5513 - Issue #16820: In configparser, ``parser['DEFAULT'] = {}`` now correctly 5514 clears previous values stored in the default section. Same goes for 5515 ``parser.update({'DEFAULT': {}})``. 5516 5517 - Issue #9586: Redefine SEM_FAILED on MacOSX to keep compiler happy. 5518 5519 - Issue #16787: Increase asyncore and asynchat default output buffers size, to 5520 decrease CPU usage and increase throughput. 5521 5522 - Issue #10527: make multiprocessing use poll() instead of select() if available. 5523 5524 - Issue #16688: Now regexes contained backreferences correctly work with 5525 non-ASCII strings. Patch by Matthew Barnett. 5526 5527 - Issue #16486: Make aifc files act as context managers. 5528 5529 - Issue #16485: Now file descriptors are closed if file header patching failed 5530 on closing an aifc file. 5531 5532 - Issue #16640: Run less code under a lock in sched module. 5533 5534 - Issue #16165: sched.scheduler.run() no longer blocks a scheduler for other 5535 threads. 5536 5537 - Issue #16641: Default values of sched.scheduler.enter() are no longer 5538 modifiable. 5539 5540 - Issue #16618: Make glob.glob match consistently across strings and bytes 5541 regarding leading dots. Patch by Serhiy Storchaka. 5542 5543 - Issue #16788: Add samestat to Lib/ntpath.py 5544 5545 - Issue #16713: Parsing of 'tel' urls using urlparse separates params from 5546 path. 5547 5548 - Issue #16443: Add docstrings to regular expression match objects. 5549 Patch by Anton Kasyanov. 5550 5551 - Issue #15701: Fix HTTPError info method call to return the headers information. 5552 5553 - Issue #16752: Add a missing import to modulefinder. Patch by Berker Peksag. 5554 5555 - Issue #16646: ftplib.FTP.makeport() might lose socket error details. 5556 (patch by Serhiy Storchaka) 5557 5558 - Issue #16626: Fix infinite recursion in glob.glob() on Windows when the 5559 pattern contains a wildcard in the drive or UNC path. Patch by Serhiy 5560 Storchaka. 5561 5562 - Issue #15783: Except for the number methods, the C version of decimal now 5563 supports all None default values present in decimal.py. These values were 5564 largely undocumented. 5565 5566 - Issue #11175: argparse.FileType now accepts encoding and errors 5567 arguments. Patch by Lucas Maystre. 5568 5569 - Issue #16488: epoll() objects now support the `with` statement. Patch 5570 by Serhiy Storchaka. 5571 5572 - Issue #16298: In HTTPResponse.read(), close the socket when there is no 5573 Content-Length and the incoming stream is finished. Patch by Eran 5574 Rundstein. 5575 5576 - Issue #16049: Add abc.ABC class to enable the use of inheritance to create 5577 ABCs, rather than the more cumbersome metaclass=ABCMeta. Patch by Bruno 5578 Dupuis. 5579 5580 - Expose the TCP_FASTOPEN and MSG_FASTOPEN flags in socket when they're 5581 available. 5582 5583 - Issue #15701: Add a .headers attribute to urllib.error.HTTPError. Patch 5584 contributed by Berker Peksag. 5585 5586 - Issue #15872: Fix 3.3 regression introduced by the new fd-based shutil.rmtree 5587 that caused it to not ignore certain errors when ignore_errors was set. 5588 Patch by Alessandro Moura and Serhiy Storchaka. 5589 5590 - Issue #16248: Disable code execution from the user's home directory by 5591 tkinter when the -E flag is passed to Python. Patch by Zachary Ware. 5592 5593 - Issue #13390: New function :func:`sys.getallocatedblocks()` returns the 5594 number of memory blocks currently allocated. 5595 5596 - Issue #16628: Fix a memory leak in ctypes.resize(). 5597 5598 - Issue #13614: Fix setup.py register failure with invalid rst in description. 5599 Patch by Julien Courteau and Pierre Paul Lefebvre. 5600 5601 - Issue #13512: Create ~/.pypirc securely (CVE-2011-4944). Initial patch by 5602 Philip Jenvey, tested by Mageia and Debian. 5603 5604 - Issue #7719: Make distutils ignore ``.nfs*`` files instead of choking later 5605 on. Initial patch by SilentGhost and Jeff Ramnani. 5606 5607 - Issue #13120: Allow to call pdb.set_trace() from thread. 5608 Patch by Ilya Sandler. 5609 5610 - Issue #16585: Make CJK encoders support error handlers that return bytes per 5611 PEP 383. 5612 5613 - Issue #10182: The re module doesn't truncate indices to 32 bits anymore. 5614 Patch by Serhiy Storchaka. 5615 5616 - Issue #16333: use (",", ": ") as default separator in json when indent is 5617 specified, to avoid trailing whitespace. Patch by Serhiy Storchaka. 5618 5619 - Issue #16573: In 2to3, treat enumerate() like a consuming call, so superfluous 5620 list() calls aren't added to filter(), map(), and zip() which are directly 5621 passed enumerate(). 5622 5623 - Issue #16464: Reset the Content-Length header when a urllib Request is reused 5624 with new data. 5625 5626 - Issue #12848: The pure Python pickle implementation now treats object 5627 lengths as unsigned 32-bit integers, like the C implementation does. 5628 Patch by Serhiy Storchaka. 5629 5630 - Issue #16423: urllib.request now has support for ``data:`` URLs. Patch by 5631 Mathias Panzenbck. 5632 5633 - Issue #4473: Add a POP3.stls() to switch a clear-text POP3 session into 5634 an encrypted POP3 session, on supported servers. Patch by Lorenzo Catucci. 5635 5636 - Issue #4473: Add a POP3.capa() method to query the capabilities advertised 5637 by the POP3 server. Patch by Lorenzo Catucci. 5638 5639 - Issue #4473: Ensure the socket is shutdown cleanly in POP3.close(). 5640 Patch by Lorenzo Catucci. 5641 5642 - Issue #16522: added FAIL_FAST flag to doctest. 5643 5644 - Issue #15627: Add the importlib.abc.InspectLoader.source_to_code() method. 5645 5646 - Issue #16408: Fix file descriptors not being closed in error conditions 5647 in the zipfile module. Patch by Serhiy Storchaka. 5648 5649 - Issue #14631: Add a new :class:`weakref.WeakMethod` to simulate weak 5650 references to bound methods. 5651 5652 - Issue #16469: Fix exceptions from float -> Fraction and Decimal -> Fraction 5653 conversions for special values to be consistent with those for float -> int 5654 and Decimal -> int. Patch by Alexey Kachayev. 5655 5656 - Issue #16481: multiprocessing no longer leaks process handles on Windows. 5657 5658 - Issue #12428: Add a pure Python implementation of functools.partial(). 5659 Patch by Brian Thorne. 5660 5661 - Issue #16140: The subprocess module no longer double closes its child 5662 subprocess.PIPE parent file descriptors on child error prior to exec(). 5663 5664 - Remove a bare print to stdout from the subprocess module that could have 5665 happened if the child process wrote garbage to its pre-exec error pipe. 5666 5667 - The subprocess module now raises its own SubprocessError instead of a 5668 RuntimeError in various error situations which should not normally happen. 5669 5670 - Issue #16327: The subprocess module no longer leaks file descriptors 5671 used for stdin/stdout/stderr pipes to the child when fork() fails. 5672 5673 - Issue #14396: Handle the odd rare case of waitpid returning 0 when not 5674 expected in subprocess.Popen.wait(). 5675 5676 - Issue #16411: Fix a bug where zlib.decompressobj().flush() might try to access 5677 previously-freed memory. Patch by Serhiy Storchaka. 5678 5679 - Issue #16357: fix calling accept() on a SSLSocket created through 5680 SSLContext.wrap_socket(). Original patch by Jeff McNeil. 5681 5682 - Issue #16409: The reporthook callback made by the legacy 5683 urllib.request.urlretrieve API now properly supplies a constant non-zero 5684 block_size as it did in Python 3.2 and 2.7. This matches the behavior of 5685 urllib.request.URLopener.retrieve. 5686 5687 - Issue #16431: Use the type information when constructing a Decimal subtype 5688 from a Decimal argument. 5689 5690 - Issue #15641: Clean up deprecated classes from importlib. 5691 Patch by Taras Lyapun. 5692 5693 - Issue #16350: zlib.decompressobj().decompress() now accumulates data from 5694 successive calls after EOF in unused_data, instead of only saving the argument 5695 to the last call. decompressobj().flush() now correctly sets unused_data and 5696 unconsumed_tail. A bug in the handling of MemoryError when setting the 5697 unconsumed_tail attribute has also been fixed. Patch by Serhiy Storchaka. 5698 5699 - Issue #12759: sre_parse now raises a proper error when the name of the group 5700 is missing. Initial patch by Serhiy Storchaka. 5701 5702 - Issue #16152: fix tokenize to ignore whitespace at the end of the code when 5703 no newline is found. Patch by Ned Batchelder. 5704 5705 - Issue #16284: Prevent keeping unnecessary references to worker functions 5706 in concurrent.futures ThreadPoolExecutor. 5707 5708 - Issue #16230: Fix a crash in select.select() when one the lists changes 5709 size while iterated on. Patch by Serhiy Storchaka. 5710 5711 - Issue #16228: Fix a crash in the json module where a list changes size 5712 while it is being encoded. Patch by Serhiy Storchaka. 5713 5714 - Issue #16351: New function gc.get_stats() returns per-generation collection 5715 statistics. 5716 5717 - Issue #14897: Enhance error messages of struct.pack and 5718 struct.pack_into. Patch by Matti Mki. 5719 5720 - Issue #16316: mimetypes now recognizes the .xz and .txz (.tar.xz) extensions. 5721 Patch by Serhiy Storchaka. 5722 5723 - Issue #12890: cgitb no longer prints spurious <p> tags in text 5724 mode when the logdir option is specified. 5725 5726 - Issue #16307: Fix multiprocessing.Pool.map_async not calling its callbacks. 5727 Patch by Janne Karila. 5728 5729 - Issue #16305: Fix a segmentation fault occurring when interrupting 5730 math.factorial. 5731 5732 - Issue #16116: Fix include and library paths to be correct when building C 5733 extensions in venvs. 5734 5735 - Issue #16245: Fix the value of a few entities in html.entities.html5. 5736 5737 - Issue #16301: Fix the localhost verification in urllib/request.py for file:// 5738 urls. 5739 5740 - Issue #16250: Fix the invocations of URLError which had misplaced filename 5741 attribute for exception. 5742 5743 - Issue #10836: Fix exception raised when file not found in urlretrieve 5744 Initial patch by Ezio Melotti. 5745 5746 - Issue #14398: Fix size truncation and overflow bugs in the bz2 module. 5747 5748 - Issue #12692: Fix resource leak in urllib.request when talking to an HTTP 5749 server that does not include a ``Connection: close`` header in its responses. 5750 5751 - Issue #12034: Fix bogus caching of result in check_GetFinalPathNameByHandle. 5752 Patch by Atsuo Ishimoto. 5753 5754 - Improve performance of `lzma.LZMAFile` (see also issue #16034). 5755 5756 - Issue #16220: wsgiref now always calls close() on an iterable response. 5757 Patch by Brent Tubbs. 5758 5759 - Issue #16270: urllib may hang when used for retrieving files via FTP by using 5760 a context manager. Patch by Giampaolo Rodola'. 5761 5762 - Issue #16461: Wave library should be able to deal with 4GB wav files, 5763 and sample rate of 44100 Hz. 5764 5765 - Issue #16176: Properly identify Windows 8 via platform.platform() 5766 5767 - Issue #16088: BaseHTTPRequestHandler's send_error method includes a 5768 Content-Length header in it's response now. Patch by Antoine Pitrou. 5769 5770 - Issue #16114: The subprocess module no longer provides a misleading error 5771 message stating that args[0] did not exist when either the cwd or executable 5772 keyword arguments specified a path that did not exist. 5773 5774 - Issue #16169: Fix ctypes.WinError()'s confusion between errno and winerror. 5775 5776 - Issue #16110: logging.fileConfig now accepts a pre-initialised ConfigParser 5777 instance. 5778 5779 - Issue #1492704: shutil.copyfile() raises a distinct SameFileError now if 5780 source and destination are the same file. Patch by Atsuo Ishimoto. 5781 5782 - Issue #13896: Make shelf instances work with 'with' as context managers. 5783 Original patch by Filip Gruszczyski. 5784 5785 - Issue #15417: Add support for csh and fish in venv activation scripts. 5786 5787 - Issue #14377: ElementTree.write and some of the module-level functions have 5788 a new parameter - *short_empty_elements*. It controls how elements with no 5789 contents are emitted. 5790 5791 - Issue #16089: Allow ElementTree.TreeBuilder to work again with a non-Element 5792 element_factory (fixes a regression in SimpleTAL). 5793 5794 - Issue #9650: List commonly used format codes in time.strftime and 5795 time.strptime docsttings. Original patch by Mike Hoy. 5796 5797 - Issue #15452: logging configuration socket listener now has a verify option 5798 that allows an application to apply a verification function to the 5799 received configuration data before it is acted upon. 5800 5801 - Issue #16034: Fix performance regressions in the new `bz2.BZ2File` 5802 implementation. Initial patch by Serhiy Storchaka. 5803 5804 - `pty.spawn()` now returns the child process status returned by `os.waitpid()`. 5805 5806 - Issue #15756: `subprocess.poll()` now properly handles `errno.ECHILD` to 5807 return a returncode of 0 when the child has already exited or cannot be waited 5808 on. 5809 5810 - Issue #15323: Improve failure message of `Mock.assert_called_once_with()`. 5811 5812 - Issue #16064: ``unittest -m`` claims executable is "python", not "python3". 5813 5814 - Issue #12376: Pass on parameters in `TextTestResult.__init__()` super call. 5815 5816 - Issue #15222: Insert blank line after each message in mbox mailboxes. 5817 5818 - Issue #16013: Fix `csv.Reader` parsing issue with ending quote characters. 5819 Patch by Serhiy Storchaka. 5820 5821 - Issue #15421: Fix an OverflowError in `Calendar.itermonthdates()` after 5822 `datetime.MAXYEAR`. Patch by Cdric Krier. 5823 5824 - Issue #16112: platform.architecture does not correctly escape argument to 5825 /usr/bin/file. Patch by David Benjamin. 5826 5827 - Issue #15970: `xml.etree.ElementTree` now serializes correctly the empty HTML 5828 elements 'meta' and 'param'. 5829 5830 - Issue #15842: The `SocketIO.{readable,writable,seekable}` methods now raise 5831 ValueError when the file-like object is closed. Patch by Alessandro Moura. 5832 5833 - Issue #15876: Fix a refleak in the `curses` module: window.encoding. 5834 5835 - Issue #15881: Fix `atexit` hook in `multiprocessing`. Original patch by Chris 5836 McDonough. 5837 5838 - Issue #15841: The readable(), writable() and seekable() methods of 5839 `io.BytesIO` and `io.StringIO` objects now raise ValueError when the object 5840 has been closed. Patch by Alessandro Moura. 5841 5842 - Issue #15447: Use `subprocess.DEVNULL` in webbrowser, instead of opening 5843 `os.devnull` explicitly and leaving it open. 5844 5845 - Issue #15509: `webbrowser.UnixBrowser` no longer passes empty arguments to 5846 Popen when ``%action`` substitutions produce empty strings. 5847 5848 - Issue #12776, issue #11839: Call `argparse` type function (specified by 5849 add_argument) only once. Before, the type function was called twice in the 5850 case where the default was specified and the argument was given as well. This 5851 was especially problematic for the FileType type, as a default file would 5852 always be opened, even if a file argument was specified on the command line. 5853 5854 - Issue #15906: Fix a regression in argparse caused by the preceding change, 5855 when ``action='append'``, ``type='str'`` and ``default=[]``. 5856 5857 - Issue #16113: Added sha3 module based on the Keccak reference implementation 5858 3.2. The `hashlib` module has four additional hash algorithms: `sha3_224`, 5859 `sha3_256`, `sha3_384` and `sha3_512`. As part of the patch some common 5860 code was moved from _hashopenssl.c to hashlib.h. 5861 5862 - ctypes.call_commethod was removed, since its only usage was in the defunct 5863 samples directory. 5864 5865 - Issue #16692: Added TLSv1.1 and TLSv1.2 support for the ssl modules. 5866 5867 - Issue #16832: add abc.get_cache_token() to expose cache validity checking 5868 support in ABCMeta. 5869 5870 IDLE 5871 ---- 5872 5873 - Issue #18429: Format / Format Paragraph, now works when comment blocks 5874 are selected. As with text blocks, this works best when the selection 5875 only includes complete lines. 5876 5877 - Issue #18226: Add docstrings and unittests for FormatParagraph.py. 5878 Original patches by Todd Rovito and Phil Webster. 5879 5880 - Issue #18279: Format - Strip trailing whitespace no longer marks a file as 5881 changed when it has not been changed. This fix followed the addition of a 5882 test file originally written by Phil Webster (the issue's main goal). 5883 5884 - Issue #7136: In the Idle File menu, "New Window" is renamed "New File". 5885 Patch by Tal Einat, Roget Serwy, and Todd Rovito. 5886 5887 - Remove dead imports of imp. 5888 5889 - Issue #18196: Avoid displaying spurious SystemExit tracebacks. 5890 5891 - Issue #5492: Avoid traceback when exiting IDLE caused by a race condition. 5892 5893 - Issue #17511: Keep IDLE find dialog open after clicking "Find Next". 5894 Original patch by Sarah K. 5895 5896 - Issue #18055: Move IDLE off of imp and on to importlib. 5897 5898 - Issue #15392: Create a unittest framework for IDLE. 5899 Initial patch by Rajagopalasarma Jayakrishnan. 5900 See Lib/idlelib/idle_test/README.txt for how to run Idle tests. 5901 5902 - Issue #14146: Highlight source line while debugging on Windows. 5903 5904 - Issue #17838: Allow sys.stdin to be reassigned. 5905 5906 - Issue #13495: Avoid loading the color delegator twice in IDLE. 5907 5908 - Issue #17798: Allow IDLE to edit new files when specified on command line. 5909 5910 - Issue #14735: Update IDLE docs to omit "Control-z on Windows". 5911 5912 - Issue #17532: Always include Options menu for IDLE on OS X. 5913 Patch by Guilherme Simes. 5914 5915 - Issue #17585: Fixed IDLE regression. Now closes when using exit() or quit(). 5916 5917 - Issue #17657: Show full Tk version in IDLE's about dialog. 5918 Patch by Todd Rovito. 5919 5920 - Issue #17613: Prevent traceback when removing syntax colorizer in IDLE. 5921 5922 - Issue #1207589: Backwards-compatibility patch for right-click menu in IDLE. 5923 5924 - Issue #16887: IDLE now accepts Cancel in tabify/untabify dialog box. 5925 5926 - Issue #17625: In IDLE, close the replace dialog after it is used. 5927 5928 - Issue #14254: IDLE now handles readline correctly across shell restarts. 5929 5930 - Issue #17614: IDLE no longer raises exception when quickly closing a file. 5931 5932 - Issue #6698: IDLE now opens just an editor window when configured to do so. 5933 5934 - Issue #8900: Using keyboard shortcuts in IDLE to open a file no longer 5935 raises an exception. 5936 5937 - Issue #6649: Fixed missing exit status in IDLE. Patch by Guilherme Polo. 5938 5939 - Issue #17114: IDLE now uses non-strict config parser. 5940 5941 - Issue #9290: In IDLE the sys.std* streams now implement io.TextIOBase 5942 interface and support all mandatory methods and properties. 5943 5944 - Issue #5066: Update IDLE docs. Patch by Todd Rovito. 5945 5946 - Issue #16829: IDLE printing no longer fails if there are spaces or other 5947 special characters in the file path. 5948 5949 - Issue #16491: IDLE now prints chained exception tracebacks. 5950 5951 - Issue #16819: IDLE method completion now correctly works for bytes literals. 5952 5953 - Issue #16504: IDLE now catches SyntaxErrors raised by tokenizer. Patch by 5954 Roger Serwy. 5955 5956 - Issue #16511: Use default IDLE width and height if config param is not valid. 5957 Patch Serhiy Storchaka. 5958 5959 - Issue #1207589: Add Cut/Copy/Paste items to IDLE right click Context Menu. 5960 Patch by Todd Rovito. 5961 5962 - Issue #16123: IDLE - deprecate running without a subprocess. 5963 Patch by Roger Serwy. 5964 5965 Tests 5966 ----- 5967 5968 - Issue #1666318: Add a test that shutil.copytree() retains directory 5969 permissions. Patch by Catherine Devlin. 5970 5971 - Issue #18273: move the tests in Lib/test/json_tests to Lib/test/test_json 5972 and make them discoverable by unittest. Patch by Zachary Ware. 5973 5974 - Fix a fcntl test case on KFreeBSD, Debian #708653 (Petr Salinger). 5975 5976 - Issue #18396: Fix spurious test failure in test_signal on Windows when 5977 faulthandler is enabled (Patch by Jeremy Kloth) 5978 5979 - Issue #17046: Fix broken test_executable_without_cwd in test_subprocess. 5980 5981 - Issue #15415: Add new temp_dir() and change_cwd() context managers to 5982 test.support, and refactor temp_cwd() to use them. Patch by Chris Jerdonek. 5983 5984 - Issue #15494: test.support is now a package rather than a module (Initial 5985 patch by Indra Talip) 5986 5987 - Issue #17944: test_zipfile now discoverable and uses subclassing to 5988 generate tests for different compression types. Fixed a bug with skipping 5989 some tests due to use of exhausted iterators. 5990 5991 - Issue #18266: test_largefile now works with unittest test discovery and 5992 supports running only selected tests. Patch by Zachary Ware. 5993 5994 - Issue #17767: test_locale now works with unittest test discovery. 5995 Original patch by Zachary Ware. 5996 5997 - Issue #18375: Assume --randomize when --randseed is used for running the 5998 testsuite. 5999 6000 - Issue #11185: Fix test_wait4 under AIX. Patch by Sbastien Sabl. 6001 6002 - Issue #18207: Fix test_ssl for some versions of OpenSSL that ignore seconds 6003 in ASN1_TIME fields. 6004 6005 - Issue #18094: test_uuid no longer reports skipped tests as passed. 6006 6007 - Issue #17992: Add timeouts to asyncore and asynchat tests so that they won't 6008 accidentally hang. 6009 6010 - Issue #17833: Fix test_gdb failures seen on machines where debug symbols 6011 for glibc are available (seen on PPC64 Linux). 6012 6013 - Issue #7855: Add tests for ctypes/winreg for issues found in IronPython. 6014 Initial patch by Dino Viehland. 6015 6016 - Issue #11078: test___all__ now checks for duplicates in __all__. 6017 Initial patch by R. David Murray. 6018 6019 - Issue #17712: Fix test_gdb failures on Ubuntu 13.04. 6020 6021 - Issue #17835: Fix test_io when the default OS pipe buffer size is larger 6022 than one million bytes. 6023 6024 - Issue #17065: Use process-unique key for winreg tests to avoid failures if 6025 test is run multiple times in parallel (eg: on a buildbot host). 6026 6027 - Issue #12820: add tests for the xml.dom.minicompat module. 6028 Patch by John Chandler and Phil Connell. 6029 6030 - Issue #17691: test_univnewlines now works with unittest test discovery. 6031 Patch by Zachary Ware. 6032 6033 - Issue #17790: test_set now works with unittest test discovery. 6034 Patch by Zachary Ware. 6035 6036 - Issue #17789: test_random now works with unittest test discovery. 6037 Patch by Zachary Ware. 6038 6039 - Issue #17779: test_osx_env now works with unittest test discovery. 6040 Patch by Zachary Ware. 6041 6042 - Issue #17766: test_iterlen now works with unittest test discovery. 6043 Patch by Zachary Ware. 6044 6045 - Issue #17690: test_time now works with unittest test discovery. 6046 Patch by Zachary Ware. 6047 6048 - Issue #17692: test_sqlite now works with unittest test discovery. 6049 Patch by Zachary Ware. 6050 6051 - Issue #11995: test_pydoc doesn't import all sys.path modules anymore. 6052 6053 - Issue #17448: test_sax now skips if there are no xml parsers available 6054 instead of raising an ImportError. 6055 6056 - Issue #11420: make test suite pass with -B/DONTWRITEBYTECODE set. 6057 Initial patch by Thomas Wouters. 6058 6059 - Issue #10652: make tcl/tk tests run after __all__ test, patch by 6060 Zachary Ware. 6061 6062 - Issue #11963: remove human verification from test_parser and test_subprocess. 6063 6064 - Issue #11732: add a new suppress_crash_popup() context manager to test.support 6065 that disables crash popups on Windows and use it in test_faulthandler and 6066 test_capi. 6067 6068 - Issue #13898: test_ssl no longer prints a spurious stack trace on Ubuntu. 6069 6070 - Issue #17283: Share code between `__main__.py` and `regrtest.py` in 6071 `Lib/test`. 6072 6073 - Issue #17249: convert a test in test_capi to use unittest and reap threads. 6074 6075 - Issue #17107: Test client-side SNI support in urllib.request thanks to 6076 the new server-side SNI support in the ssl module. Initial patch by 6077 Daniel Black. 6078 6079 - Issue #17041: Fix testing when Python is configured with the 6080 --without-doc-strings. 6081 6082 - Issue #16923: Fix ResourceWarnings in test_ssl. 6083 6084 - Issue #15539: Added regression tests for Tools/scripts/pindent.py. 6085 6086 - Issue #17479: test_io now works with unittest test discovery. 6087 Patch by Zachary Ware. 6088 6089 - Issue #17066: test_robotparser now works with unittest test discovery. 6090 Patch by Zachary Ware. 6091 6092 - Issue #17334: test_index now works with unittest test discovery. 6093 Patch by Zachary Ware. 6094 6095 - Issue #17333: test_imaplib now works with unittest test discovery. 6096 Patch by Zachary Ware. 6097 6098 - Issue #17082: test_dbm* now work with unittest test discovery. 6099 Patch by Zachary Ware. 6100 6101 - Issue #17079: test_ctypes now works with unittest test discovery. 6102 Patch by Zachary Ware. 6103 6104 - Issue #17304: test_hash now works with unittest test discovery. 6105 Patch by Zachary Ware. 6106 6107 - Issue #17303: test_future* now work with unittest test discovery. 6108 Patch by Zachary Ware. 6109 6110 - Issue #17163: test_file now works with unittest test discovery. 6111 Patch by Zachary Ware. 6112 6113 - Issue #16925: test_configparser now works with unittest test discovery. 6114 Patch by Zachary Ware. 6115 6116 - Issue #16918: test_codecs now works with unittest test discovery. 6117 Patch by Zachary Ware. 6118 6119 - Issue #16919: test_crypt now works with unittest test discovery. 6120 Patch by Zachary Ware. 6121 6122 - Issue #16910: test_bytes, test_unicode, and test_userstring now work with 6123 unittest test discovery. Patch by Zachary Ware. 6124 6125 - Issue #16905: test_warnings now works with unittest test discovery. 6126 Initial patch by Berker Peksag. 6127 6128 - Issue #16898: test_bufio now works with unittest test discovery. 6129 Patch by Zachary Ware. 6130 6131 - Issue #16888: test_array now works with unittest test discovery. 6132 Patch by Zachary Ware. 6133 6134 - Issue #16896: test_asyncore now works with unittest test discovery. 6135 Patch by Zachary Ware. 6136 6137 - Issue #16897: test_bisect now works with unittest test discovery. 6138 Initial patch by Zachary Ware. 6139 6140 - Issue #16852: test_genericpath, test_posixpath, test_ntpath, and test_macpath 6141 now work with unittest test discovery. Patch by Zachary Ware. 6142 6143 - Issue #16748: test_heapq now works with unittest test discovery. 6144 6145 - Issue #10646: Tests rearranged for os.samefile/samestat to check for not 6146 just symlinks but also hard links. 6147 6148 - Issue #15302: Switch regrtest from using getopt to using argparse. 6149 6150 - Issue #15324: Fix regrtest parsing of --fromfile, --match, and --randomize 6151 options. 6152 6153 - Issue #16702: test_urllib2_localnet tests now correctly ignores proxies for 6154 localhost tests. 6155 6156 - Issue #16664: Add regression tests for glob's behaviour concerning entries 6157 starting with a ".". Patch by Sebastian Kreft. 6158 6159 - Issue #13390: The ``-R`` option to regrtest now also checks for memory 6160 allocation leaks, using :func:`sys.getallocatedblocks()`. 6161 6162 - Issue #16559: Add more tests for the json module, including some from the 6163 official test suite at json.org. Patch by Serhiy Storchaka. 6164 6165 - Issue #16661: Fix the `os.getgrouplist()` test by not assuming that it gives 6166 the same output as :command:`id -G`. 6167 6168 - Issue #16115: Add some tests for the executable argument to 6169 subprocess.Popen(). Initial patch by Kushal Das. 6170 6171 - Issue #16126: PyErr_Format format mismatch in _testcapimodule.c. 6172 Patch by Serhiy Storchaka. 6173 6174 - Issue #15304: Fix warning message when `os.chdir()` fails inside 6175 `test.support.temp_cwd()`. Patch by Chris Jerdonek. 6176 6177 - Issue #15802: Fix test logic in `TestMaildir.test_create_tmp()`. Patch by 6178 Serhiy Storchaka. 6179 6180 - Issue #15557: Added a test suite for the webbrowser module, thanks to Anton 6181 Barkovsky. 6182 6183 - Issue #16698: Skip posix test_getgroups when built with OS X 6184 deployment target prior to 10.6. 6185 6186 Build 6187 ----- 6188 6189 - Issue #16067: Add description into MSI file to replace installer's 6190 temporary name. 6191 6192 - Issue #18257: Fix readlink usage in python-config. Install the python 6193 version again on Darwin. 6194 6195 - Issue #18481: Add C coverage reporting with gcov and lcov. A new make target 6196 "coverage-report" creates an instrumented Python build, runs unit tests 6197 and creates a HTML. The report can be updated with "make coverage-lcov". 6198 6199 - Issue #17845: Clarified the message printed when some module are not built. 6200 6201 - Issue #18256: Compilation fix for recent AIX releases. Patch by 6202 David Edelsohn. 6203 6204 - Issue #17547: In configure, explicitly pass -Wformat for the benefit for GCC 6205 4.8. 6206 6207 - Issue #15172: Document NASM 2.10+ as requirement for building OpenSSL 1.0.1 6208 on Windows. 6209 6210 - Issue #17591: Use lowercase filenames when including Windows header files. 6211 Patch by Roumen Petrov. 6212 6213 - Issue #17550: Fix the --enable-profiling configure switch. 6214 6215 - Issue #17425: Build with openssl 1.0.1d on Windows. 6216 6217 - Issue #16754: Fix the incorrect shared library extension on linux. Introduce 6218 two makefile macros SHLIB_SUFFIX and EXT_SUFFIX. SO now has the value of 6219 SHLIB_SUFFIX again (as in 2.x and 3.1). The SO macro is removed in 3.4. 6220 6221 - Issue #5033: Fix building of the sqlite3 extension module when the 6222 SQLite library version has "beta" in it. Patch by Andreas Pelme. 6223 6224 - Issue #17228: Fix building without pymalloc. 6225 6226 - Issue #3718: Use AC_ARG_VAR to set MACHDEP in configure.ac. 6227 6228 - Issue #16235: Implement python-config as a shell script. 6229 6230 - Issue #16769: Remove outdated Visual Studio projects. 6231 6232 - Issue #17031: Fix running regen in cross builds. 6233 6234 - Issue #3754: fix typo in pthread AC_CACHE_VAL. 6235 6236 - Issue #15484: Fix _PYTHON_PROJECT_BASE for srcdir != builddir builds; 6237 use _PYTHON_PROJECT_BASE in distutils/sysconfig.py. 6238 6239 - Drop support for Windows 2000 (changeset e52df05b496a). 6240 6241 - Issue #17029: Let h2py search the multiarch system include directory. 6242 6243 - Issue #16953: Fix socket module compilation on platforms with 6244 HAVE_BROKEN_POLL. Patch by Jeffrey Armstrong. 6245 6246 - Issue #16320: Remove redundant Makefile dependencies for strings and bytes. 6247 6248 - Cross compiling needs host and build settings. configure no longer 6249 creates a broken PYTHON_FOR_BUILD variable when --build is missing. 6250 6251 - Fix cross compiling issue in setup.py, ensure that lib_dirs and inc_dirs are 6252 defined in cross compiling mode, too. 6253 6254 - Issue #16836: Enable IPv6 support even if IPv6 is disabled on the build host. 6255 6256 - Issue #16593: Have BSD 'make -s' do the right thing, thanks to Daniel Shahaf 6257 6258 - Issue #16262: fix out-of-src-tree builds, if mercurial is not installed. 6259 6260 - Issue #15298: ensure _sysconfigdata is generated in build directory, not 6261 source directory. 6262 6263 - Issue #15833: Fix a regression in 3.3 that resulted in exceptions being 6264 raised if importlib failed to write byte-compiled files. This affected 6265 attempts to build Python out-of-tree from a read-only source directory. 6266 6267 - Issue #15923: Fix a mistake in ``asdl_c.py`` that resulted in a TypeError 6268 after 2801bf875a24 (see #15801). 6269 6270 - Issue #16135: Remove OS/2 support. 6271 6272 - Issue #15819: Make sure we can build Python out-of-tree from a read-only 6273 source directory. (Somewhat related to issue #9860.) 6274 6275 - Issue #15587: Enable Tk high-resolution text rendering on Macs with 6276 Retina displays. Applies to Tkinter apps, such as IDLE, on OS X 6277 framework builds linked with Cocoa Tk 8.5. 6278 6279 - Issue #17161: make install now also installs a python3 man page. 6280 6281 C-API 6282 ----- 6283 6284 - Issue #18351: Fix various issues in a function in importlib provided to help 6285 PyImport_ExecCodeModuleWithPathnames() (and thus by extension 6286 PyImport_ExecCodeModule() and PyImport_ExecCodeModuleEx()). 6287 6288 - Issue #9369: The types of `char*` arguments of PyObject_CallFunction() and 6289 PyObject_CallMethod() now changed to `const char*`. Based on patches by 6290 Jrg Mller and Lars Buitinck. 6291 6292 - Issue #17206: Py_CLEAR(), Py_DECREF(), Py_XINCREF() and Py_XDECREF() now 6293 expand their arguments once instead of multiple times. Patch written by Illia 6294 Polosukhin. 6295 6296 - Issue #17522: Add the PyGILState_Check() API. 6297 6298 - Issue #17327: Add PyDict_SetDefault. 6299 6300 - Issue #16881: Fix Py_ARRAY_LENGTH macro for GCC < 3.1. 6301 6302 - Issue #16505: Remove unused Py_TPFLAGS_INT_SUBCLASS. 6303 6304 - Issue #16086: PyTypeObject.tp_flags and PyType_Spec.flags are now unsigned 6305 (unsigned long and unsigned int) to avoid an undefined behaviour with 6306 Py_TPFLAGS_TYPE_SUBCLASS ((1 << 31). PyType_GetFlags() result type is 6307 now unsigned too (unsigned long, instead of long). 6308 6309 - Issue #16166: Add PY_LITTLE_ENDIAN and PY_BIG_ENDIAN macros and unified 6310 endianness detection and handling. 6311 6312 Documentation 6313 ------------- 6314 6315 - Issue #17701: Improving strftime documentation. 6316 6317 - Issue #18440: Clarify that `hash()` can truncate the value returned from an 6318 object's custom `__hash__()` method. 6319 6320 - Issue #17844: Add links to encoders and decoders for bytes-to-bytes codecs. 6321 6322 - Issue #14097: improve the "introduction" page of the tutorial. 6323 6324 - Issue #17977: The documentation for the cadefault argument's default value 6325 in urllib.request.urlopen() is fixed to match the code. 6326 6327 - Issue #6696: add documentation for the Profile objects, and improve 6328 profile/cProfile docs. Patch by Tom Pinckney. 6329 6330 - Issue #15940: Specify effect of locale on time functions. 6331 6332 - Issue #17538: Document XML vulnerabilties 6333 6334 - Issue #16642: sched.scheduler timefunc initial default is time.monotonic. 6335 Patch by Ramchandra Apte 6336 6337 - Issue #17047: remove doubled words in docs and docstrings 6338 reported by Serhiy Storchaka and Matthew Barnett. 6339 6340 - Issue #15465: Document the versioning macros in the C API docs rather than 6341 the standard library docs. Patch by Kushal Das. 6342 6343 - Issue #16406: Combine the pages for uploading and registering to PyPI. 6344 6345 - Issue #16403: Document how distutils uses the maintainer field in 6346 PKG-INFO. Patch by Jyrki Pulliainen. 6347 6348 - Issue #16695: Document how glob handles filenames starting with a 6349 dot. Initial patch by Jyrki Pulliainen. 6350 6351 - Issue #8890: Stop advertising an insecure practice by replacing uses 6352 of the /tmp directory with better alternatives in the documentation. 6353 Patch by Geoff Wilson. 6354 6355 - Issue #17203: add long option names to unittest discovery docs. 6356 6357 - Issue #13094: add "Why do lambdas defined in a loop with different values 6358 all return the same result?" programming FAQ. 6359 6360 - Issue #14901: Update portions of the Windows FAQ. 6361 Patch by Ashish Nitin Patil. 6362 6363 - Issue #16267: Better document the 3.3+ approach to combining 6364 @abstractmethod with @staticmethod, @classmethod and @property 6365 6366 - Issue #15209: Clarify exception chaining description in exceptions module 6367 documentation 6368 6369 - Issue #15990: Improve argument/parameter documentation. 6370 6371 - Issue #16209: Move the documentation for the str built-in function to a new 6372 str class entry in the "Text Sequence Type" section. 6373 6374 - Issue #13538: Improve str() and object.__str__() documentation. 6375 6376 - Issue #16489: Make it clearer that importlib.find_loader() needs parent 6377 packages to be explicitly imported. 6378 6379 - Issue #16400: Update the description of which versions of a given package 6380 PyPI displays. 6381 6382 - Issue #15677: Document that zlib and gzip accept a compression level of 0 to 6383 mean 'no compression'. Patch by Brian Brazil. 6384 6385 - Issue #16197: Update winreg docstrings and documentation to match code. 6386 Patch by Zachary Ware. 6387 6388 - Issue #8040: added a version switcher to the documentation. Patch by 6389 Yury Selivanov. 6390 6391 - Issue #16241: Document -X faulthandler command line option. 6392 Patch by Marek uppa. 6393 6394 - Additional comments and some style changes in the concurrent.futures URL 6395 retrieval example 6396 6397 - Issue #16115: Improve subprocess.Popen() documentation around args, shell, 6398 and executable arguments. 6399 6400 - Issue #13498: Clarify docs of os.makedirs()'s exist_ok argument. Done with 6401 great native-speaker help from R. David Murray. 6402 6403 - Issue #15533: Clarify docs and add tests for `subprocess.Popen()`'s cwd 6404 argument. 6405 6406 - Issue #15979: Improve timeit documentation. 6407 6408 - Issue #16036: Improve documentation of built-in `int()`'s signature and 6409 arguments. 6410 6411 - Issue #15935: Clarification of `argparse` docs, re: add_argument() type and 6412 default arguments. Patch contributed by Chris Jerdonek. 6413 6414 - Issue #11964: Document a change in v3.2 to the behavior of the indent 6415 parameter of json encoding operations. 6416 6417 - Issue #15116: Remove references to appscript as it is no longer being 6418 supported. 6419 6420 Tools/Demos 6421 ----------- 6422 6423 - Issue #18817: Fix a resource warning in Lib/aifc.py demo. Patch by 6424 Vajrasky Kok. 6425 6426 - Issue #18439: Make patchcheck work on Windows for ACKS, NEWS. 6427 6428 - Issue #18448: Fix a typo in Tools/demo/eiffel.py. 6429 6430 - Issue #18457: Fixed saving of formulas and complex numbers in 6431 Tools/demo/ss1.py. 6432 6433 - Issue #18449: Make Tools/demo/ss1.py work again on Python 3. Patch by 6434 Fvry Thibault. 6435 6436 - Issue #12990: The "Python Launcher" on OSX could not launch python scripts 6437 that have paths that include wide characters. 6438 6439 - Issue #15239: Make mkstringprep.py work again on Python 3. 6440 6441 - Issue #17028: Allowed Python arguments to be supplied to the Windows 6442 launcher. 6443 6444 - Issue #17156: pygettext.py now detects the encoding of source files and 6445 correctly writes and escapes non-ascii characters. 6446 6447 - Issue #15539: Fix a number of bugs in Tools/scripts/pindent.py. Now 6448 pindent.py works with a "with" statement. pindent.py no longer produces 6449 improper indentation. pindent.py now works with continued lines broken after 6450 "class" or "def" keywords and with continuations at the start of line. 6451 6452 - Issue #11797: Add a 2to3 fixer that maps reload() to imp.reload(). 6453 6454 - Issue #10966: Remove the concept of unexpected skipped tests. 6455 6456 - Issue #9893: Removed the Misc/Vim directory. 6457 6458 - Removed the Misc/TextMate directory. 6459 6460 - Issue #16245: Add the Tools/scripts/parse_html5_entities.py script to parse 6461 the list of HTML5 entities and update the html.entities.html5 dictionary. 6462 6463 - Issue #15378: Fix Tools/unicode/comparecodecs.py. Patch by Serhiy Storchaka. 6464 6465 - Issue #16549: Make json.tool work again on Python 3 and add tests. 6466 Initial patch by Berker Peksag and Serhiy Storchaka. 6467 6468 - Issue #13301: use ast.literal_eval() instead of eval() in Tools/i18n/msgfmt.py. 6469 Patch by Serhiy Storchaka. 6470 6471 Windows 6472 ------- 6473 6474 - Issue #18569: The installer now adds .py to the PATHEXT variable when extensions 6475 are registered. Patch by Paul Moore. 6476 6477 6478 What's New in Python 3.3.0? 6479 =========================== 6480 6481 *Release date: 29-Sep-2012* 6482 6483 Core and Builtins 6484 ----------------- 6485 6486 - Issue #16046: Fix loading sourceless legacy .pyo files. 6487 6488 - Issue #16060: Fix refcounting bug when `__trunc__()` returns an object whose 6489 `__int__()` gives a non-integer. Patch by Serhiy Storchaka. 6490 6491 Extension Modules 6492 ----------------- 6493 6494 - Issue #16012: Fix a regression in pyexpat. The parser's `UseForeignDTD()` 6495 method doesn't require an argument again. 6496 6497 6498 What's New in Python 3.3.0 Release Candidate 3? 6499 =============================================== 6500 6501 *Release date: 23-Sep-2012* 6502 6503 Core and Builtins 6504 ----------------- 6505 6506 - Issue #15900: Fix reference leak in `PyUnicode_TranslateCharmap()`. 6507 6508 - Issue #15926: Fix crash after multiple reinitializations of the interpreter. 6509 6510 - Issue #15895: Fix FILE pointer leak in one error branch of 6511 `PyRun_SimpleFileExFlags()` when filename points to a pyc/pyo file, closeit is 6512 false an and set_main_loader() fails. 6513 6514 - Fixes for a few crash and memory leak regressions found by Coverity. 6515 6516 Library 6517 ------- 6518 6519 - Issue #15882: Change `_decimal` to accept any coefficient tuple when 6520 constructing infinities. This is done for backwards compatibility with 6521 decimal.py: Infinity coefficients are undefined in _decimal (in accordance 6522 with the specification). 6523 6524 - Issue #15925: Fix a regression in `email.util` where the `parsedate()` and 6525 `parsedate_tz()` functions did not return None anymore when the argument could 6526 not be parsed. 6527 6528 Extension Modules 6529 ----------------- 6530 6531 - Issue #15973: Fix a segmentation fault when comparing datetime timezone 6532 objects. 6533 6534 - Issue #15977: Fix memory leak in Modules/_ssl.c when the function 6535 _set_npn_protocols() is called multiple times, thanks to Daniel Sommermann. 6536 6537 - Issue #15969: `faulthandler` module: rename dump_tracebacks_later() to 6538 dump_traceback_later() and cancel_dump_tracebacks_later() to 6539 cancel_dump_traceback_later(). 6540 6541 - _decimal module: use only C 89 style comments. 6542 6543 6544 What's New in Python 3.3.0 Release Candidate 2? 6545 =============================================== 6546 6547 *Release date: 09-Sep-2012* 6548 6549 Core and Builtins 6550 ----------------- 6551 6552 - Issue #13992: The trashcan mechanism is now thread-safe. This eliminates 6553 sporadic crashes in multi-thread programs when several long deallocator chains 6554 ran concurrently and involved subclasses of built-in container types. 6555 6556 - Issue #15784: Modify `OSError`.__str__() to better distinguish between errno 6557 error numbers and Windows error numbers. 6558 6559 - Issue #15781: Fix two small race conditions in import's module locking. 6560 6561 Library 6562 ------- 6563 6564 - Issue #17158: Add 'symbols' to help() welcome message; clarify 6565 'modules spam' messages. 6566 6567 - Issue #15847: Fix a regression in argparse, which did not accept tuples as 6568 argument lists anymore. 6569 6570 - Issue #15828: Restore support for C extensions in `imp.load_module()`. 6571 6572 - Issue #15340: Fix importing the random module when ``/dev/urandom`` cannot be 6573 opened. This was a regression caused by the hash randomization patch. 6574 6575 - Issue #10650: Deprecate the watchexp parameter of the `Decimal.quantize()` 6576 method. 6577 6578 - Issue #15785: Modify `window.get_wch()` API of the curses module: return a 6579 character for most keys, and an integer for special keys, instead of always 6580 returning an integer. So it is now possible to distinguish special keys like 6581 keypad keys. 6582 6583 - Issue #14223: Fix `window.addch()` of the curses module for special characters 6584 like curses.ACS_HLINE: the Python function addch(int) and addch(bytes) is now 6585 calling the C function waddch()/mvwaddch() (as it was done in Python 3.2), 6586 instead of wadd_wch()/mvwadd_wch(). The Python function addch(str) is still 6587 calling the C function wadd_wch()/mvwadd_wch() if the Python curses is linked 6588 to libncursesw. 6589 6590 Build 6591 ----- 6592 6593 - Issue #15822: Really ensure 2to3 grammar pickles are properly installed 6594 (replaces fixes for Issue #15645). 6595 6596 Documentation 6597 ------------- 6598 6599 - Issue #15814: The memoryview enhancements in 3.3.0 accidentally permitted the 6600 hashing of multi-dimensional memorviews and memoryviews with multi-byte item 6601 formats. The intended restrictions have now been documented - they will be 6602 correctly enforced in 3.3.1. 6603 6604 6605 What's New in Python 3.3.0 Release Candidate 1? 6606 =============================================== 6607 6608 *Release date: 25-Aug-2012* 6609 6610 Core and Builtins 6611 ----------------- 6612 6613 - Issue #15573: memoryview comparisons are now performed by value with full 6614 support for any valid struct module format definition. 6615 6616 - Issue #15316: When an item in the fromlist for `__import__()` doesn't exist, 6617 don't raise an error, but if an exception is raised as part of an import do 6618 let that propagate. 6619 6620 - Issue #15778: Ensure that ``str(ImportError(msg))`` returns a str even when 6621 msg isn't a str. 6622 6623 - Issue #2051: Source file permission bits are once again correctly copied to 6624 the cached bytecode file. (The migration to importlib reintroduced this 6625 problem because these was no regression test. A test has been added as part of 6626 this patch) 6627 6628 - Issue #15761: Fix crash when ``PYTHONEXECUTABLE`` is set on Mac OS X. 6629 6630 - Issue #15726: Fix incorrect bounds checking in PyState_FindModule. Patch by 6631 Robin Schreiber. 6632 6633 - Issue #15604: Update uses of `PyObject_IsTrue()` to check for and handle 6634 errors correctly. Patch by Serhiy Storchaka. 6635 6636 - Issue #14846: `importlib.FileFinder` now handles the case where the directory 6637 being searched is removed after a previous import attempt. 6638 6639 Library 6640 ------- 6641 6642 - Issue #13370: Ensure that ctypes works on Mac OS X when Python is compiled 6643 using the clang compiler. 6644 6645 - Issue #13072: The array module's 'u' format code is now deprecated and will be 6646 removed in Python 4.0. 6647 6648 - Issue #15544: Fix Decimal.__float__ to work with payload-carrying NaNs. 6649 6650 - Issue #15776: Allow pyvenv to work in existing directory with --clean. 6651 6652 - Issue #15249: email's BytesGenerator now correctly mangles From lines (when 6653 requested) even if the body contains undecodable bytes. 6654 6655 - Issue #15777: Fix a refleak in _posixsubprocess. 6656 6657 - Issue #665194: Update `email.utils.localtime` to use datetime.astimezone and 6658 correctly handle historic changes in UTC offsets. 6659 6660 - Issue #15199: Fix JavaScript's default MIME type to application/javascript. 6661 Patch by Bohuslav Kabrda. 6662 6663 - Issue #12643: `code.InteractiveConsole` now respects `sys.excepthook` when 6664 displaying exceptions. Patch by Aaron Iles. 6665 6666 - Issue #13579: `string.Formatter` now understands the 'a' conversion specifier. 6667 6668 - Issue #15595: Fix ``subprocess.Popen(universal_newlines=True)`` for certain 6669 locales (utf-16 and utf-32 family). Patch by Chris Jerdonek. 6670 6671 - Issue #15477: In cmath and math modules, add workaround for platforms whose 6672 system-supplied log1p function doesn't respect signs of zeros. 6673 6674 - Issue #15715: `importlib.__import__()` will silence an ImportError when the 6675 use of fromlist leads to a failed import. 6676 6677 - Issue #14669: Fix pickling of connections and sockets on Mac OS X by 6678 sending/receiving an acknowledgment after file descriptor transfer. 6679 TestPicklingConnection has been reenabled for Mac OS X. 6680 6681 - Issue #11062: Fix adding a message from file to Babyl mailbox. 6682 6683 - Issue #15646: Prevent equivalent of a fork bomb when using `multiprocessing` 6684 on Windows without the ``if __name__ == '__main__'`` idiom. 6685 6686 IDLE 6687 ---- 6688 6689 - Issue #15678: Fix IDLE menus when started from OS X command line (3.3.0b2 6690 regression). 6691 6692 Documentation 6693 ------------- 6694 6695 - Touched up the Python 2 to 3 porting guide. 6696 6697 - Issue #14674: Add a discussion of the `json` module's standard compliance. 6698 Patch by Chris Rebert. 6699 6700 - Create a 'Concurrent Execution' section in the docs, and split up the 6701 'Optional Operating System Services' section to use a more user-centric 6702 classification scheme (splitting them across the new CE section, IPC and text 6703 processing). Operating system limitations can be reflected with the Sphinx 6704 ``:platform:`` tag, it doesn't make sense as part of the Table of Contents. 6705 6706 - Issue #4966: Bring the sequence docs up to date for the Py3k transition and 6707 the many language enhancements since they were original written. 6708 6709 - The "path importer" misnomer has been replaced with Eric Snow's 6710 more-awkward-but-at-least-not-wrong suggestion of "path based finder" in the 6711 import system reference docs. 6712 6713 - Issue #15640: Document `importlib.abc.Finder` as deprecated. 6714 6715 - Issue #15630: Add an example for "continue" stmt in the tutorial. Patch by 6716 Daniel Ellis. 6717 6718 Tests 6719 ----- 6720 6721 - Issue #15747: ZFS always returns EOPNOTSUPP when attempting to set the 6722 UF_IMMUTABLE flag (via either chflags or lchflags); refactor affected tests in 6723 test_posix.py to account for this. 6724 6725 - Issue #15285: Refactor the approach for testing connect timeouts using two 6726 external hosts that have been configured specifically for this type of test. 6727 6728 - Issue #15743: Remove the deprecated method usage in `urllib` tests. Patch by 6729 Jeff Knupp. 6730 6731 - Issue #15615: Add some tests for the `json` module's handling of invalid input 6732 data. Patch by Kushal Das. 6733 6734 Build 6735 ----- 6736 6737 - Output lib files for PGO build into PGO directory. 6738 6739 - Pick up 32-bit launcher from PGO directory on 64-bit PGO build. 6740 6741 - Drop ``PC\python_nt.h`` as it's not used. Add input dependency on custom 6742 build step. 6743 6744 - Issue #15511: Drop explicit dependency on pythonxy.lib from _decimal amd64 6745 configuration. 6746 6747 - Add missing PGI/PGO configurations for pywlauncher. 6748 6749 - Issue #15645: Ensure 2to3 grammar pickles are properly installed. 6750 6751 6752 What's New in Python 3.3.0 Beta 2? 6753 ================================== 6754 6755 *Release date: 12-Aug-2012* 6756 6757 Core and Builtins 6758 ----------------- 6759 6760 - Issue #15568: Fix the return value of ``yield from`` when StopIteration is 6761 raised by a custom iterator. 6762 6763 - Issue #13119: `sys.stdout` and `sys.stderr` are now using "\r\n" newline on 6764 Windows, as Python 2. 6765 6766 - Issue #15534: Fix the fast-search function for non-ASCII Unicode strings. 6767 6768 - Issue #15508: Fix the docstring for `__import__()` to have the proper default 6769 value of 0 for 'level' and to not mention negative levels since they are not 6770 supported. 6771 6772 - Issue #15425: Eliminated traceback noise from more situations involving 6773 importlib. 6774 6775 - Issue #14578: Support modules registered in the Windows registry again. 6776 6777 - Issue #15466: Stop using TYPE_INT64 in marshal, to make importlib.h (and other 6778 byte code files) equal between 32-bit and 64-bit systems. 6779 6780 - Issue #1692335: Move initial exception args assignment to 6781 `BaseException.__new__()` to help pickling of naive subclasses. 6782 6783 - Issue #12834: Fix `PyBuffer_ToContiguous()` for non-contiguous arrays. 6784 6785 - Issue #15456: Fix code `__sizeof__()` after #12399 change. Patch by Serhiy 6786 Storchaka. 6787 6788 - Issue #15404: Refleak in PyMethodObject repr. 6789 6790 - Issue #15394: An issue in `PyModule_Create()` that caused references to be 6791 leaked on some error paths has been fixed. Patch by Julia Lawall. 6792 6793 - Issue #15368: An issue that caused bytecode generation to be non-deterministic 6794 has been fixed. 6795 6796 - Issue #15202: Consistently use the name "follow_symlinks" for new parameters 6797 in os and shutil functions. 6798 6799 - Issue #15314: ``__main__.__loader__`` is now set correctly during interpreter 6800 startup. 6801 6802 - Issue #15111: When a module imported using 'from import' has an ImportError 6803 inside itself, don't mask that fact behind a generic ImportError for the 6804 module itself. 6805 6806 - Issue #15293: Add GC support to the AST base node type. 6807 6808 - Issue #15291: Fix a memory leak where AST nodes where not properly 6809 deallocated. 6810 6811 - Issue #15110: Fix the tracebacks generated by "import xxx" to not show the 6812 importlib stack frames. 6813 6814 - Issue #16369: Global PyTypeObjects not initialized with PyType_Ready(...). 6815 6816 - Issue #15020: The program name used to search for Python's path is now 6817 "python3" under Unix, not "python". 6818 6819 - Issue #15897: zipimport.c doesn't check return value of fseek(). 6820 Patch by Felipe Cruz. 6821 6822 - Issue #15033: Fix the exit status bug when modules invoked using -m switch, 6823 return the proper failure return value (1). Patch contributed by Jeff Knupp. 6824 6825 - Issue #15229: An `OSError` subclass whose __init__ doesn't call back 6826 OSError.__init__ could produce incomplete instances, leading to crashes when 6827 calling str() on them. 6828 6829 - Issue #15307: Virtual environments now use symlinks with framework builds on 6830 Mac OS X, like other POSIX builds. 6831 6832 Library 6833 ------- 6834 6835 - Issue #14590: configparser now correctly strips inline comments when delimiter 6836 occurs earlier without preceding space. 6837 6838 - Issue #15424: Add a `__sizeof__()` implementation for array objects. Patch by 6839 Ludwig Hhne. 6840 6841 - Issue #15576: Allow extension modules to act as a package's __init__ module. 6842 6843 - Issue #15502: Have `importlib.invalidate_caches()` work on `sys.meta_path` 6844 instead of `sys.path_importer_cache`. 6845 6846 - Issue #15163: Pydoc shouldn't list __loader__ as module data. 6847 6848 - Issue #15471: Do not use mutable objects as defaults for 6849 `importlib.__import__()`. 6850 6851 - Issue #15559: To avoid a problematic failure mode when passed to the bytes 6852 constructor, objects in the ipaddress module no longer implement `__index__()` 6853 (they still implement `__int__()` as appropriate). 6854 6855 - Issue #15546: Fix handling of pathological input data in the peek() and 6856 read1() methods of the BZ2File, GzipFile and LZMAFile classes. 6857 6858 - Issue #12655: Instead of requiring a custom type, `os.sched_getaffinity()` and 6859 `os.sched_setaffinity()` now use regular sets of integers to represent the 6860 CPUs a process is restricted to. 6861 6862 - Issue #15538: Fix compilation of the `socket.getnameinfo()` / 6863 `socket.getaddrinfo()` emulation code. Patch by Philipp Hagemeister. 6864 6865 - Issue #15519: Properly expose WindowsRegistryFinder in importlib (and use the 6866 correct term for it). Original patch by Eric Snow. 6867 6868 - Issue #15502: Bring the importlib ABCs into line with the current state of the 6869 import protocols given PEP 420. Original patch by Eric Snow. 6870 6871 - Issue #15499: Launching a webbrowser in Unix used to sleep for a few seconds. 6872 Original patch by Anton Barkovsky. 6873 6874 - Issue #15463: The faulthandler module truncates strings to 500 characters, 6875 instead of 100, to be able to display long file paths. 6876 6877 - Issue #6056: Make `multiprocessing` use setblocking(True) on the sockets it 6878 uses. Original patch by J Derek Wilson. 6879 6880 - Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path. 6881 6882 - Issue #15413: `os.times()` had disappeared under Windows. 6883 6884 - Issue #15402: An issue in the struct module that caused `sys.getsizeof()` to 6885 return incorrect results for struct.Struct instances has been fixed. Initial 6886 patch by Serhiy Storchaka. 6887 6888 - Issue #15232: When mangle_from is True, `email.Generator` now correctly 6889 mangles lines that start with 'From ' that occur in a MIME preamble or 6890 epilogue. 6891 6892 - Issue #15094: Incorrectly placed #endif in _tkinter.c. Patch by Serhiy 6893 Storchaka. 6894 6895 - Issue #13922: `argparse` no longer incorrectly strips '--'s that appear after 6896 the first one. 6897 6898 - Issue #12353: `argparse` now correctly handles null argument values. 6899 6900 - Issue #10017, issue #14998: Fix TypeError using pprint on dictionaries with 6901 user-defined types as keys or other unorderable keys. 6902 6903 - Issue #15397: `inspect.getmodulename()` is now based directly on importlib via 6904 a new `importlib.machinery.all_suffixes()` API. 6905 6906 - Issue #14635: `telnetlib` will use poll() rather than select() when possible to 6907 avoid failing due to the select() file descriptor limit. 6908 6909 - Issue #15180: Clarify posixpath.join() error message when mixing str & bytes. 6910 6911 - Issue #15343: pkgutil now includes an iter_importer_modules implementation for 6912 importlib.machinery.FileFinder (similar to the way it already handled 6913 zipimport.zipimporter). 6914 6915 - Issue #15314: runpy now sets __main__.__loader__ correctly. 6916 6917 - Issue #15357: The import emulation in pkgutil is now deprecated. pkgutil uses 6918 importlib internally rather than the emulation. 6919 6920 - Issue #15233: Python now guarantees that callables registered with the atexit 6921 module will be called in a deterministic order. 6922 6923 - Issue #15238: `shutil.copystat()` now copies Linux "extended attributes". 6924 6925 - Issue #15230: runpy.run_path now correctly sets __package__ as described in 6926 the documentation. 6927 6928 - Issue #15315: Support VS 2010 in distutils cygwincompiler. 6929 6930 - Issue #15294: Fix a regression in pkgutil.extend_path()'s handling of nested 6931 namespace packages. 6932 6933 - Issue #15056: `imp.cache_from_source()` and `imp.source_from_cache()` raise 6934 NotImplementedError when `sys.implementation.cache_tag` is set to None. 6935 6936 - Issue #15256: Grammatical mistake in exception raised by `imp.find_module()`. 6937 6938 - Issue #5931: `wsgiref` environ variable SERVER_SOFTWARE will specify an 6939 implementation specific term like CPython, Jython instead of generic "Python". 6940 6941 - Issue #13248: Remove obsolete argument "max_buffer_size" of BufferedWriter and 6942 BufferedRWPair, from the io module. 6943 6944 - Issue #13248: Remove obsolete argument "version" of `argparse.ArgumentParser`. 6945 6946 - Issue #14814: Implement more consistent ordering and sorting behaviour for 6947 ipaddress objects. 6948 6949 - Issue #14814: `ipaddress` network objects correctly return NotImplemented when 6950 compared to arbitrary objects instead of raising TypeError. 6951 6952 - Issue #14990: Correctly fail with SyntaxError on invalid encoding declaration. 6953 6954 - Issue #14814: `ipaddress` now provides more informative error messages when 6955 constructing instances directly (changes permitted during beta due to 6956 provisional API status). 6957 6958 - Issue #15247: `io.FileIO` now raises an error when given a file descriptor 6959 pointing to a directory. 6960 6961 - Issue #15261: Stop os.stat(fd) crashing on Windows when fd not open. 6962 6963 - Issue #15166: Implement `imp.get_tag()` using `sys.implementation.cache_tag`. 6964 6965 - Issue #15210: Catch KeyError when `importlib.__init__()` can't find 6966 _frozen_importlib in sys.modules, not ImportError. 6967 6968 - Issue #15030: `importlib.abc.PyPycLoader` now supports the new source size 6969 header field in .pyc files. 6970 6971 - Issue #5346: Preserve permissions of mbox, MMDF and Babyl mailbox files on 6972 flush(). 6973 6974 - Issue #10571: Fix the "--sign" option of distutils' upload command. Patch by 6975 Jakub Wilk. 6976 6977 - Issue #9559: If messages were only added, a new file is no longer created and 6978 renamed over the old file when flush() is called on an mbox, MMDF or Babyl 6979 mailbox. 6980 6981 - Issue #10924: Fixed `crypt.mksalt()` to use a RNG that is suitable for 6982 cryptographic purpose. 6983 6984 - Issue #15184: Ensure consistent results of OS X configuration tailoring for 6985 universal builds by factoring out common OS X-specific customizations from 6986 sysconfig, distutils.sysconfig, distutils.util, and distutils.unixccompiler 6987 into a new module _osx_support. 6988 6989 C API 6990 ----- 6991 6992 - Issue #15610: `PyImport_ImportModuleEx()` now uses a 'level' of 0 instead of -1. 6993 6994 - Issue #15169, issue #14599: Strip out the C implementation of 6995 `imp.source_from_cache()` used by PyImport_ExecCodeModuleWithPathnames() and 6996 used the Python code instead. Leads to PyImport_ExecCodeModuleObject() to not 6997 try to infer the source path from the bytecode path as 6998 PyImport_ExecCodeModuleWithPathnames() does. 6999 7000 Extension Modules 7001 ----------------- 7002 7003 - Issue #6493: An issue in ctypes on Windows that caused structure bitfields of 7004 type `ctypes.c_uint32` and width 32 to incorrectly be set has been fixed. 7005 7006 - Issue #15194: Update libffi to the 3.0.11 release. 7007 7008 IDLE 7009 ---- 7010 7011 - Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog 7012 ended with ``\``. Patch by Roger Serwy. 7013 7014 Tools/Demos 7015 ----------- 7016 7017 - Issue #15458: python-config gets a new option --configdir to print the $LIBPL 7018 value. 7019 7020 - Move importlib.test.benchmark to Tools/importbench. 7021 7022 - Issue #12605: The gdb hooks for debugging CPython (within Tools/gdb) have been 7023 enhanced to show information on more C frames relevant to CPython within the 7024 "py-bt" and "py-bt-full" commands: 7025 7026 * C frames that are waiting on the GIL 7027 * C frames that are garbage-collecting 7028 * C frames that are due to the invocation of a PyCFunction 7029 7030 Documentation 7031 ------------- 7032 7033 - Issue #15041: Update "see also" list in tkinter documentation. 7034 7035 - Issue #15444: Use proper spelling for non-ASCII contributor names. Patch by 7036 Serhiy Storchaka. 7037 7038 - Issue #15295: Reorganize and rewrite the documentation on the import system. 7039 7040 - Issue #15230: Clearly document some of the limitations of the runpy module and 7041 nudge readers towards importlib when appropriate. 7042 7043 - Issue #15053: Copy Python 3.3 import lock change notice to all relevant 7044 functions in imp instead of just at the top of the relevant section. 7045 7046 - Issue #15288: Link to the term "loader" in notes in pkgutil about how things 7047 won't work as expected in Python 3.3 and mark the requisite functions as 7048 "changed" since they will no longer work with modules directly imported by 7049 import itself. 7050 7051 - Issue #13557: Clarify effect of giving two different namespaces to `exec()` or 7052 `execfile()`. 7053 7054 - Issue #15250: Document that `filecmp.dircmp()` compares files shallowly. Patch 7055 contributed by Chris Jerdonek. 7056 7057 - Issue #15442: Expose the default list of directories ignored by 7058 `filecmp.dircmp()` as a module attribute, and expand the list to more modern 7059 values. 7060 7061 Tests 7062 ----- 7063 7064 - Issue #15467: Move helpers for `__sizeof__()` tests into test_support. Patch 7065 by Serhiy Storchaka. 7066 7067 - Issue #15320: Make iterating the list of tests thread-safe when running tests 7068 in multiprocess mode. Patch by Chris Jerdonek. 7069 7070 - Issue #15168: Move `importlib.test` to `test.test_importlib`. 7071 7072 - Issue #15091: Reactivate a test on UNIX which was failing thanks to a 7073 forgotten `importlib.invalidate_caches()` call. 7074 7075 - Issue #15230: Adopted a more systematic approach in the runpy tests. 7076 7077 - Issue #15300: Ensure the temporary test working directories are in the same 7078 parent folder when running tests in multiprocess mode from a Python build. 7079 Patch by Chris Jerdonek. 7080 7081 - Issue #15284: Skip {send,recv}msg tests in test_socket when IPv6 is not 7082 enabled. Patch by Brian Brazil. 7083 7084 - Issue #15277: Fix a resource leak in support.py when IPv6 is disabled. Patch 7085 by Brian Brazil. 7086 7087 Build 7088 ----- 7089 7090 - Issue #11715: Fix multiarch detection without having Debian development tools 7091 (dpkg-dev) installed. 7092 7093 - Issue #15037: Build OS X installers with local copy of ncurses 5.9 libraries 7094 to avoid curses.unget_wch bug present in older versions of ncurses such as 7095 those shipped with OS X. 7096 7097 - Issue #15560: Fix building _sqlite3 extension on OS X with an SDK. Also, for 7098 OS X installers, ensure consistent sqlite3 behavior and feature availability 7099 by building a local copy of libsqlite3 rather than depending on the wide range 7100 of versions supplied with various OS X releases. 7101 7102 - Issue #8847: Disable COMDAT folding in Windows PGO builds. 7103 7104 - Issue #14018: Fix OS X Tcl/Tk framework checking when using OS X SDKs. 7105 7106 - Issue #16256: OS X installer now sets correct permissions for doc directory. 7107 7108 - Issue #15431: Add _freeze_importlib project to regenerate importlib.h on 7109 Windows. Patch by Kristjn Valur Jnsson. 7110 7111 - Issue #14197: For OS X framework builds, ensure links to the shared library 7112 are created with the proper ABI suffix. 7113 7114 - Issue #14330: For cross builds, don't use host python, use host search paths 7115 for host compiler. 7116 7117 - Issue #15235: Allow Berkley DB versions up to 5.3 to build the dbm module. 7118 7119 - Issue #15268: Search curses.h in /usr/include/ncursesw. 7120 7121 7122 What's New in Python 3.3.0 Beta 1? 7123 ================================== 7124 7125 *Release date: 27-Jun-2012* 7126 7127 Core and Builtins 7128 ----------------- 7129 7130 - Fix a (most likely) very rare memory leak when calling main() and not being 7131 able to decode a command-line argument. 7132 7133 - Issue #14815: Use Py_ssize_t instead of long for the object hash, to 7134 preserve all 64 bits of hash on Win64. 7135 7136 - Issue #12268: File readline, readlines and read() or readall() methods 7137 no longer lose data when an underlying read system call is interrupted. 7138 IOError is no longer raised due to a read system call returning EINTR 7139 from within these methods. 7140 7141 - Issue #11626: Add _SizeT functions to stable ABI. 7142 7143 - Issue #15142: Fix reference leak when deallocating instances of types 7144 created using PyType_FromSpec(). 7145 7146 - Issue #10053: Don't close FDs when FileIO.__init__ fails. Loosely based on 7147 the work by Hirokazu Yamamoto. 7148 7149 - Issue #15096: Removed support for ur'' as the raw notation isn't 7150 compatible with Python 2.x's raw unicode strings. 7151 7152 - Issue #13783: Generator objects now use the identifier APIs internally 7153 7154 - Issue #14874: Restore charmap decoding speed to pre-PEP 393 levels. 7155 Patch by Serhiy Storchaka. 7156 7157 - Issue #15026: utf-16 encoding is now significantly faster (up to 10x). 7158 Patch by Serhiy Storchaka. 7159 7160 - Issue #11022: open() and io.TextIOWrapper are now calling 7161 locale.getpreferredencoding(False) instead of locale.getpreferredencoding() 7162 in text mode if the encoding is not specified. Don't change temporary the 7163 locale encoding using locale.setlocale(), use the current locale encoding 7164 instead of the user preferred encoding. 7165 7166 - Issue #14673: Add Eric Snow's sys.implementation implementation. 7167 7168 - Issue #15038: Optimize python Locks on Windows. 7169 7170 Library 7171 ------- 7172 7173 - Issue #12288: Consider '0' and '0.0' as valid initialvalue 7174 for tkinter SimpleDialog. 7175 7176 - Issue #15512: Add a __sizeof__ implementation for parser. 7177 Patch by Serhiy Storchaka. 7178 7179 - Issue #15469: Add a __sizeof__ implementation for deque objects. 7180 Patch by Serhiy Storchaka. 7181 7182 - Issue #15489: Add a __sizeof__ implementation for BytesIO objects. 7183 Patch by Serhiy Storchaka. 7184 7185 - Issue #15487: Add a __sizeof__ implementation for buffered I/O objects. 7186 Patch by Serhiy Storchaka. 7187 7188 - Issue #15514: Correct __sizeof__ support for cpu_set. 7189 Patch by Serhiy Storchaka. 7190 7191 - Issue #15177: Added dir_fd parameter to os.fwalk(). 7192 7193 - Issue #15061: Re-implemented hmac.compare_digest() in C to prevent further 7194 timing analysis and to support all buffer protocol aware objects as well as 7195 ASCII only str instances safely. 7196 7197 - Issue #15164: Change return value of platform.uname() from a 7198 plain tuple to a collections.namedtuple. 7199 7200 - Support Mageia Linux in the platform module. 7201 7202 - Issue #11678: Support Arch linux in the platform module. 7203 7204 - Issue #15118: Change return value of os.uname() and os.times() from 7205 plain tuples to immutable iterable objects with named attributes 7206 (structseq objects). 7207 7208 - Speed up _decimal by another 10-15% by caching the thread local context 7209 that was last accessed. In the pi benchmark (64-bit platform, prec=9), 7210 _decimal is now only 1.5x slower than float. 7211 7212 - Remove the packaging module, which is not ready for prime time. 7213 7214 - Issue #15154: Add "dir_fd" parameter to os.rmdir, remove "rmdir" 7215 parameter from os.remove / os.unlink. 7216 7217 - Issue #4489: Add a shutil.rmtree that isn't susceptible to symlink attacks. 7218 It is used automatically on platforms supporting the necessary os.openat() 7219 and os.unlinkat() functions. Main code by Martin von Lwis. 7220 7221 - Issue #15156: HTMLParser now uses the new "html.entities.html5" dictionary. 7222 7223 - Issue #11113: add a new "html5" dictionary containing the named character 7224 references defined by the HTML5 standard and the equivalent Unicode 7225 character(s) to the html.entities module. 7226 7227 - Issue #15114: the strict mode of HTMLParser and the HTMLParseError exception 7228 are deprecated now that the parser is able to parse invalid markup. 7229 7230 - Issue #3665: \u and \U escapes are now supported in unicode regular 7231 expressions. Patch by Serhiy Storchaka. 7232 7233 - Issue #15153: Added inspect.getgeneratorlocals to simplify white box 7234 testing of generator state updates 7235 7236 - Issue #13062: Added inspect.getclosurevars to simplify testing stateful 7237 closures 7238 7239 - Issue #11024: Fixes and additional tests for Time2Internaldate. 7240 7241 - Issue #14626: Large refactoring of functions / parameters in the os module. 7242 Many functions now support "dir_fd" and "follow_symlinks" parameters; 7243 some also support accepting an open file descriptor in place of a path 7244 string. Added os.support_* collections as LBYL helpers. Removed many 7245 functions only previously seen in 3.3 alpha releases (often starting with 7246 "f" or "l", or ending with "at"). Originally suggested by Serhiy Storchaka; 7247 implemented by Larry Hastings. 7248 7249 - Issue #15008: Implement PEP 362 "Signature Objects". 7250 Patch by Yury Selivanov. 7251 7252 - Issue #15138: base64.urlsafe_{en,de}code() are now 3-4x faster. 7253 7254 - Issue #444582: Add shutil.which, for finding programs on the system path. 7255 Original patch by Erik Demaine, with later iterations by Jan Killian 7256 and Brian Curtin. 7257 7258 - Issue #14837: SSL errors now have ``library`` and ``reason`` attributes 7259 describing precisely what happened and in which OpenSSL submodule. The 7260 str() of a SSLError is also enhanced accordingly. 7261 7262 - Issue #9527: datetime.astimezone() method will now supply a class 7263 timezone instance corresponding to the system local timezone when 7264 called with no arguments. 7265 7266 - Issue #14653: email.utils.mktime_tz() no longer relies on system 7267 mktime() when timezone offest is supplied. 7268 7269 - Issue #14684: zlib.compressobj() and zlib.decompressobj() now support the use 7270 of predefined compression dictionaries. Original patch by Sam Rushing. 7271 7272 - Fix GzipFile's handling of filenames given as bytes objects. 7273 7274 - Issue #14772: Return destination values from some shutil functions. 7275 7276 - Issue #15064: Implement context management protocol for multiprocessing types 7277 7278 - Issue #15101: Make pool finalizer avoid joining current thread. 7279 7280 - Issue #14657: The frozen instance of importlib used for bootstrap is now 7281 also the module imported as importlib._bootstrap. 7282 7283 - Issue #14055: Add __sizeof__ support to _elementtree. 7284 7285 - Issue #15054: A bug in tokenize.tokenize that caused string literals 7286 with 'b' prefixes to be incorrectly tokenized has been fixed. 7287 Patch by Serhiy Storchaka. 7288 7289 - Issue #15006: Allow equality comparison between naive and aware 7290 time or datetime objects. 7291 7292 - Issue #15036: Mailbox no longer throws an error if a flush is done 7293 between operations when removing or changing multiple items in mbox, 7294 MMDF, or Babyl mailboxes. 7295 7296 - Issue #14059: Implement multiprocessing.Barrier. 7297 7298 - Issue #15061: The inappropriately named hmac.secure_compare has been 7299 renamed to hmac.compare_digest, restricted to operating on bytes inputs 7300 only and had its documentation updated to more accurately reflect both its 7301 intent and its limitations 7302 7303 - Issue #13841: Make child processes exit using sys.exit() on Windows. 7304 7305 - Issue #14936: curses_panel was converted to PEP 3121 and PEP 384 API. 7306 Patch by Robin Schreiber. 7307 7308 - Issue #1667546: On platforms supporting tm_zone and tm_gmtoff fields 7309 in struct tm, time.struct_time objects returned by time.gmtime(), 7310 time.localtime() and time.strptime() functions now have tm_zone and 7311 tm_gmtoff attributes. Original patch by Paul Boddie. 7312 7313 - Rename adjusted attribute to adjustable in time.get_clock_info() result. 7314 7315 - Issue #3518: Remove references to non-existent BaseManager.from_address() 7316 method. 7317 7318 - Issue #13857: Added textwrap.indent() function (initial patch by Ezra 7319 Berch) 7320 7321 - Issue #2736: Added datetime.timestamp() method. 7322 7323 - Issue #13854: Make multiprocessing properly handle non-integer 7324 non-string argument to SystemExit. 7325 7326 - Issue #12157: Make pool.map() empty iterables correctly. Initial 7327 patch by mouad. 7328 7329 - Issue #11823: disassembly now shows argument counts on calls with keyword args. 7330 7331 - Issue #14711: os.stat_float_times() has been deprecated. 7332 7333 - LZMAFile now accepts the modes "rb"/"wb"/"ab" as synonyms of "r"/"w"/"a". 7334 7335 - The bz2 and lzma modules now each contain an open() function, allowing 7336 compressed files to readily be opened in text mode as well as binary mode. 7337 7338 - BZ2File.__init__() and LZMAFile.__init__() now accept a file object as their 7339 first argument, rather than requiring a separate "fileobj" argument. 7340 7341 - gzip.open() now accepts file objects as well as filenames. 7342 7343 - Issue #14992: os.makedirs(path, exist_ok=True) would raise an OSError 7344 when the path existed and had the S_ISGID mode bit set when it was 7345 not explicitly asked for. This is no longer an exception as mkdir 7346 cannot control if the OS sets that bit for it or not. 7347 7348 - Issue #14989: Make the CGI enable option to http.server available via command 7349 line. 7350 7351 - Issue #14987: Add a missing import statement to inspect. 7352 7353 - Issue #1079: email.header.decode_header now correctly parses all the examples 7354 in RFC2047. There is a necessary visible behavior change: the leading and/or 7355 trailing whitespace on ASCII parts is now preserved. 7356 7357 - Issue #14969: Better handling of exception chaining in contextlib.ExitStack 7358 7359 - Issue #14963: Convert contextlib.ExitStack.__exit__ to use an iterative 7360 algorithm (Patch by Alon Horev) 7361 7362 - Issue #14785: Add sys._debugmallocstats() to help debug low-level memory 7363 allocation issues 7364 7365 - Issue #14443: Ensure that .py files are byte-compiled with the correct Python 7366 executable within bdist_rpm even on older versions of RPM 7367 7368 C-API 7369 ----- 7370 7371 - Issue #15146: Add PyType_FromSpecWithBases. Patch by Robin Schreiber. 7372 7373 - Issue #15042: Add PyState_AddModule and PyState_RemoveModule. Add version 7374 guard for Py_LIMITED_API additions. Patch by Robin Schreiber. 7375 7376 - Issue #13783: Inadvertent additions to the public C API in the PEP 380 7377 implementation have either been removed or marked as private interfaces. 7378 7379 Extension Modules 7380 ----------------- 7381 7382 - Issue #15000: Support the "unique" x32 architecture in _posixsubprocess.c. 7383 7384 IDLE 7385 ---- 7386 7387 - Issue #9803: Don't close IDLE on saving if breakpoint is open. 7388 Patch by Roger Serwy. 7389 7390 - Issue #14962: Update text coloring in IDLE shell window after changing 7391 options. Patch by Roger Serwy. 7392 7393 Documentation 7394 ------------- 7395 7396 - Issue #15176: Clarified behavior, documentation, and implementation 7397 of os.listdir(). 7398 7399 - Issue #14982: Document that pkgutil's iteration functions require the 7400 non-standard iter_modules() method to be defined by an importer (something 7401 the importlib importers do not define). 7402 7403 - Issue #15081: Document PyState_FindModule. 7404 Patch by Robin Schreiber. 7405 7406 - Issue #14814: Added first draft of ipaddress module API reference 7407 7408 Tests 7409 ----- 7410 7411 - Issue #15187: Bugfix: remove temporary directories test_shutil was leaving 7412 behind. 7413 7414 - Issue #14769: test_capi now has SkipitemTest, which cleverly checks 7415 for "parity" between PyArg_ParseTuple() and the Python/getargs.c static 7416 function skipitem() for all possible "format units". 7417 7418 - test_nntplib now tolerates being run from behind NNTP gateways that add 7419 "X-Antivirus" headers to articles 7420 7421 - Issue #15043: test_gdb is now skipped entirely if gdb security settings 7422 block loading of the gdb hooks 7423 7424 - Issue #14963: Add test cases for exception handling behaviour 7425 in contextlib.ExitStack (Initial patch by Alon Horev) 7426 7427 Build 7428 ----- 7429 7430 - Issue #13590: Improve support for OS X Xcode 4: 7431 * Try to avoid building Python or extension modules with problematic 7432 llvm-gcc compiler. 7433 * Since Xcode 4 removes ppc support, extension module builds now 7434 check for ppc compiler support and automatically remove ppc and 7435 ppc64 archs when not available. 7436 * Since Xcode 4 no longer install SDKs in default locations, 7437 extension module builds now revert to using installed headers 7438 and libs if the SDK used to build the interpreter is not 7439 available. 7440 * Update ./configure to use better defaults for universal builds; 7441 in particular, --enable-universalsdk=yes uses the Xcode default 7442 SDK and --with-universal-archs now defaults to "intel" if ppc 7443 not available. 7444 7445 - Issue #14225: Fix Unicode support for curses (#12567) on OS X 7446 7447 - Issue #14928: Fix importlib bootstrap issues by using a custom executable 7448 (Modules/_freeze_importlib) to build Python/importlib.h. 7449 7450 7451 What's New in Python 3.3.0 Alpha 4? 7452 =================================== 7453 7454 *Release date: 31-May-2012* 7455 7456 Core and Builtins 7457 ----------------- 7458 7459 - Issue #14835: Make plistlib output empty arrays & dicts like OS X. 7460 Patch by Sidney San Martn. 7461 7462 - Issue #14744: Use the new _PyUnicodeWriter internal API to speed up 7463 str%args and str.format(args). 7464 7465 - Issue #14930: Make memoryview objects weakrefable. 7466 7467 - Issue #14775: Fix a potential quadratic dict build-up due to the garbage 7468 collector repeatedly trying to untrack dicts. 7469 7470 - Issue #14857: fix regression in references to PEP 3135 implicit __class__ 7471 closure variable (Reopens issue #12370) 7472 7473 - Issue #14712 (PEP 405): Virtual environments. Implemented by Vinay Sajip. 7474 7475 - Issue #14660 (PEP 420): Namespace packages. Implemented by Eric Smith. 7476 7477 - Issue #14494: Fix __future__.py and its documentation to note that 7478 absolute imports are the default behavior in 3.0 instead of 2.7. 7479 Patch by Sven Marnach. 7480 7481 - Issue #9260: A finer-grained import lock. Most of the import sequence 7482 now uses per-module locks rather than the global import lock, eliminating 7483 well-known issues with threads and imports. 7484 7485 - Issue #14624: UTF-16 decoding is now 3x to 4x faster on various inputs. 7486 Patch by Serhiy Storchaka. 7487 7488 - asdl_seq and asdl_int_seq are now Py_ssize_t sized. 7489 7490 - Issue #14133 (PEP 415): Implement suppression of __context__ display with an 7491 attribute on BaseException. This replaces the original mechanism of PEP 409. 7492 7493 - Issue #14417: Mutating a dict during lookup now restarts the lookup instead 7494 of raising a RuntimeError (undoes issue #14205). 7495 7496 - Issue #14738: Speed-up UTF-8 decoding on non-ASCII data. Patch by Serhiy 7497 Storchaka. 7498 7499 - Issue #14700: Fix two broken and undefined-behaviour-inducing overflow checks 7500 in old-style string formatting. 7501 7502 Library 7503 ------- 7504 7505 - Issue #14690: Use monotonic clock instead of system clock in the sched, 7506 subprocess and trace modules. 7507 7508 - Issue #14443: Tell rpmbuild to use the correct version of Python in 7509 bdist_rpm. Initial patch by Ross Lagerwall. 7510 7511 - Issue #12515: email now registers a defect if it gets to EOF while parsing 7512 a MIME part without seeing the closing MIME boundary. 7513 7514 - Issue #1672568: email now always decodes base64 payloads, adding padding and 7515 ignoring non-base64-alphabet characters if needed, and registering defects 7516 for any such problems. 7517 7518 - Issue #14925: email now registers a defect when the parser decides that there 7519 is a missing header/body separator line. MalformedHeaderDefect, which the 7520 existing code would never actually generate, is deprecated. 7521 7522 - Issue #10365: File open dialog now works instead of crashing even when 7523 the parent window is closed before the dialog. Patch by Roger Serwy. 7524 7525 - Issue #8739: Updated smtpd to support RFC 5321, and added support for the 7526 RFC 1870 SIZE extension. 7527 7528 - Issue #665194: Added a localtime function to email.utils to provide an 7529 aware local datetime for use in setting Date headers. 7530 7531 - Issue #12586: Added new provisional policies that implement convenient 7532 unicode support for email headers. See What's New for details. 7533 7534 - Issue #14731: Refactored email Policy framework to support full backward 7535 compatibility with Python 3.2 by default yet allow for the introduction of 7536 new features through new policies. Note that Policy.must_be_7bit is renamed 7537 to cte_type. 7538 7539 - Issue #14876: Use user-selected font for highlight configuration. 7540 7541 - Issue #14920: Fix the help(urllib.parse) failure on locale C on terminals. 7542 Have ascii characters in help. 7543 7544 - Issue #14548: Make multiprocessing finalizers check pid before 7545 running to cope with possibility of gc running just after fork. 7546 7547 - Issue #14036: Add an additional check to validate that port in urlparse does 7548 not go in illegal range and returns None. 7549 7550 - Issue #14862: Add missing names to os.__all__ 7551 7552 - Issue #14875: Use float('inf') instead of float('1e66666') in the json module. 7553 7554 - Issue #13585: Added contextlib.ExitStack 7555 7556 - PEP 3144, Issue #14814: Added the ipaddress module 7557 7558 - Issue #14426: Correct the Date format in Expires attribute of Set-Cookie 7559 Header in Cookie.py. 7560 7561 - Issue #14588: The types module now provide new_class() and prepare_class() 7562 functions to support PEP 3115 compliant dynamic class creation. Patch by 7563 Daniel Urban and Nick Coghlan. 7564 7565 - Issue #13152: Allow specifying a custom tabsize for expanding tabs in 7566 textwrap. Patch by John Feuerstein. 7567 7568 - Issue #14721: Send the correct 'Content-length: 0' header when the body is an 7569 empty string ''. Initial Patch contributed by Arve Knudsen. 7570 7571 - Issue #14072: Fix parsing of 'tel' URIs in urlparse by making the check for 7572 ports stricter. 7573 7574 - Issue #9374: Generic parsing of query and fragment portions of url for any 7575 scheme. Supported both by RFC3986 and RFC2396. 7576 7577 - Issue #14798: Fix the functions in pyclbr to raise an ImportError 7578 when the first part of a dotted name is not a package. Patch by 7579 Xavier de Gaye. 7580 7581 - Issue #12098: multiprocessing on Windows now starts child processes 7582 using the same sys.flags as the current process. Initial patch by 7583 Sergey Mezentsev. 7584 7585 - Issue #13031: Small speed-up for tarfile when unzipping tarfiles. 7586 Patch by Justin Peel. 7587 7588 - Issue #14780: urllib.request.urlopen() now has a ``cadefault`` argument 7589 to use the default certificate store. Initial patch by James Oakley. 7590 7591 - Issue #14829: Fix bisect and range() indexing with large indices 7592 (>= 2 ** 32) under 64-bit Windows. 7593 7594 - Issue #14732: The _csv module now uses PEP 3121 module initialization. 7595 Patch by Robin Schreiber. 7596 7597 - Issue #14809: Add HTTP status codes introduced by RFC 6585 to http.server 7598 and http.client. Patch by EungJun Yi. 7599 7600 - Issue #14777: tkinter may return undecoded UTF-8 bytes as a string when 7601 accessing the Tk clipboard. Modify clipboard_get() to first request type 7602 UTF8_STRING when no specific type is requested in an X11 windowing 7603 environment, falling back to the current default type STRING if that fails. 7604 Original patch by Thomas Kluyver. 7605 7606 - Issue #14773: Fix os.fwalk() failing on dangling symlinks. 7607 7608 - Issue #12541: Be lenient with quotes around Realm field of HTTP Basic 7609 Authentation in urllib2. 7610 7611 - Issue #14807: move undocumented tarfile.filemode() to stat.filemode() and add 7612 doc entry. Add tarfile.filemode alias with deprecation warning. 7613 7614 - Issue #13815: TarFile.extractfile() now returns io.BufferedReader objects. 7615 7616 - Issue #14532: Add a secure_compare() helper to the hmac module, to mitigate 7617 timing attacks. Patch by Jon Oberheide. 7618 7619 - Add importlib.util.resolve_name(). 7620 7621 - Issue #14366: Support lzma compression in zip files. 7622 Patch by Serhiy Storchaka. 7623 7624 - Issue #13959: Introduce importlib.find_loader() and document 7625 imp.find_module/load_module as deprecated. 7626 7627 - Issue #14082: shutil.copy2() now copies extended attributes, if possible. 7628 Patch by Hynek Schlawack. 7629 7630 - Issue #13959: Make importlib.abc.FileLoader.load_module()/get_filename() and 7631 importlib.machinery.ExtensionFileLoader.load_module() have their single 7632 argument be optional. Allows for the replacement (and thus deprecation) of 7633 imp.load_source()/load_package()/load_compiled(). 7634 7635 - Issue #13959: imp.get_suffixes() has been deprecated in favour of the new 7636 attributes on importlib.machinery: SOURCE_SUFFIXES, DEBUG_BYTECODE_SUFFIXES, 7637 OPTIMIZED_BYTECODE_SUFFIXES, BYTECODE_SUFFIXES, and EXTENSION_SUFFIXES. This 7638 led to an indirect deprecation of inspect.getmoduleinfo(). 7639 7640 - Issue #14662: Prevent shutil failures on OS X when destination does not 7641 support chflag operations. Patch by Hynek Schlawack. 7642 7643 - Issue #14157: Fix time.strptime failing without a year on February 29th. 7644 Patch by Hynek Schlawack. 7645 7646 - Issue #14753: Make multiprocessing's handling of negative timeouts 7647 the same as it was in Python 3.2. 7648 7649 - Issue #14583: Fix importlib bug when a package's __init__.py would first 7650 import one of its modules then raise an error. 7651 7652 - Issue #14741: Fix missing support for Ellipsis ('...') in parser module. 7653 7654 - Issue #14697: Fix missing support for set displays and set comprehensions in 7655 parser module. 7656 7657 - Issue #14701: Fix missing support for 'raise ... from' in parser module. 7658 7659 - Add support for timeouts to the acquire() methods of 7660 multiprocessing's lock/semaphore/condition proxies. 7661 7662 - Issue #13989: Add support for text mode to gzip.open(). 7663 7664 - Issue #14127: The os.stat() result object now provides three additional 7665 fields: st_ctime_ns, st_mtime_ns, and st_atime_ns, providing those times as an 7666 integer with nanosecond resolution. The functions os.utime(), os.lutimes(), 7667 and os.futimes() now accept a new parameter, ns, which accepts mtime and atime 7668 as integers with nanosecond resolution. 7669 7670 - Issue #14127 and #10148: shutil.copystat now preserves exact mtime and atime 7671 on filesystems providing nanosecond resolution. 7672 7673 IDLE 7674 ---- 7675 7676 - Issue #14958: Change IDLE systax highlighting to recognize all string and 7677 byte literals supported in Python 3.3. 7678 7679 - Issue #10997: Prevent a duplicate entry in IDLE's "Recent Files" menu. 7680 7681 - Issue #14929: Stop IDLE 3.x from closing on Unicode decode errors when 7682 grepping. Patch by Roger Serwy. 7683 7684 - Issue #12510: Attempting to get invalid tooltip no longer closes IDLE. 7685 Other tooltipss have been corrected or improved and the number of tests 7686 has been tripled. Original patch by Roger Serwy. 7687 7688 Tools/Demos 7689 ----------- 7690 7691 - Issue #14695: Bring Tools/parser/unparse.py support up to date with 7692 the Python 3.3 Grammar. 7693 7694 Build 7695 ----- 7696 7697 - Issue #14472: Update .gitignore. Patch by Matej Cepl. 7698 7699 - Upgrade Windows library versions: bzip 1.0.6, OpenSSL 1.0.1c. 7700 7701 - Issue #14693: Under non-Windows platforms, hashlib's fallback modules are 7702 always compiled, even if OpenSSL is present at build time. 7703 7704 - Issue #13210: Windows build now uses VS2010, ported from VS2008. 7705 7706 C-API 7707 ----- 7708 7709 - Issue #14705: The PyArg_Parse() family of functions now support the 'p' format 7710 unit, which accepts a "boolean predicate" argument. It converts any Python 7711 value into an integer--0 if it is "false", and 1 otherwise. 7712 7713 Documentation 7714 ------------- 7715 7716 - Issue #14863: Update the documentation of os.fdopen() to reflect the 7717 fact that it's only a thin wrapper around open() anymore. 7718 7719 - Issue #14588: The language reference now accurately documents the Python 3 7720 class definition process. Patch by Nick Coghlan. 7721 7722 - Issue #14943: Correct a default argument value for winreg.OpenKey 7723 and correctly list the argument names in the function's explanation. 7724 7725 7726 What's New in Python 3.3.0 Alpha 3? 7727 =================================== 7728 7729 *Release date: 01-May-2012* 7730 7731 Core and Builtins 7732 ----------------- 7733 7734 - Issue #14699: Fix calling the classmethod descriptor directly. 7735 7736 - Issue #14433: Prevent msvcrt crash in interactive prompt when stdin is closed. 7737 7738 - Issue #14521: Make result of float('nan') and float('-nan') more consistent 7739 across platforms. 7740 7741 - Issue #14646: __import__() sets __loader__ if the loader did not. 7742 7743 - Issue #14605: No longer have implicit entries in sys.meta_path. If 7744 sys.meta_path is found to be empty, raise ImportWarning. 7745 7746 - Issue #14605: No longer have implicit entries in sys.path_hooks. If 7747 sys.path_hooks is found to be empty, a warning will be raised. None is now 7748 inserted into sys.path_importer_cache if no finder was discovered. This also 7749 means imp.NullImporter is no longer implicitly used. 7750 7751 - Issue #13903: Implement PEP 412. Individual dictionary instances can now share 7752 their keys with other dictionaries. Classes take advantage of this to share 7753 their instance dictionary keys for improved memory and performance. 7754 7755 - Issue #11603 (again): Setting __repr__ to __str__ now raises a RuntimeError 7756 when repr() or str() is called on such an object. 7757 7758 - Issue #14658: Fix binding a special method to a builtin implementation of a 7759 special method with a different name. 7760 7761 - Issue #14630: Fix a memory access bug for instances of a subclass of int 7762 with value 0. 7763 7764 - Issue #14339: Speed improvements to bin, oct and hex functions. Patch by 7765 Serhiy Storchaka. 7766 7767 - Issue #14385: It is now possible to use a custom type for the __builtins__ 7768 namespace, instead of a dict. It can be used for sandboxing for example. 7769 Raise also a NameError instead of ImportError if __build_class__ name if not 7770 found in __builtins__. 7771 7772 - Issue #12599: Be more strict in accepting None compared to a false-like 7773 object for importlib.util.module_for_loader and 7774 importlib.machinery.PathFinder. 7775 7776 - Issue #14612: Fix jumping around with blocks by setting f_lineno. 7777 7778 - Issue #14592: Attempting a relative import w/o __package__ or __name__ set in 7779 globals raises a KeyError. 7780 7781 - Issue #14607: Fix keyword-only arguments which started with ``__``. 7782 7783 - Issue #10854: The ImportError raised when an extension module on Windows 7784 fails to import now uses the new path and name attributes from 7785 Issue #1559549. 7786 7787 - Issue #13889: Check and (if necessary) set FPU control word before calling 7788 any of the dtoa.c string <-> float conversion functions, on MSVC builds of 7789 Python. This fixes issues when embedding Python in a Delphi app. 7790 7791 - __import__() now matches PEP 328 and documentation by defaulting 'index' to 0 7792 instead of -1 and removing support for negative values. 7793 7794 - Issue #2377: Make importlib the implementation of __import__(). 7795 7796 - Issue #1559549: ImportError now has 'name' and 'path' attributes that are set 7797 using keyword arguments to its constructor. They are currently not set by 7798 import as they are meant for use by importlib. 7799 7800 - Issue #14474: Save and restore exception state in thread.start_new_thread() 7801 while writing error message if the thread leaves an unhandled exception. 7802 7803 - Issue #13019: Fix potential reference leaks in bytearray.extend(). Patch 7804 by Suman Saha. 7805 7806 Library 7807 ------- 7808 7809 - Issue #14768: os.path.expanduser('~/a') doesn't work correctly when HOME is '/'. 7810 7811 - Issue #14371: Support bzip2 in zipfile module. Patch by Serhiy Storchaka. 7812 7813 - Issue #13183: Fix pdb skipping frames after hitting a breakpoint and running 7814 step. Patch by Xavier de Gaye. 7815 7816 - Issue #14696: Fix parser module to understand 'nonlocal' declarations. 7817 7818 - Issue #10941: Fix imaplib.Internaldate2tuple to produce correct result near 7819 the DST transition. Patch by Joe Peterson. 7820 7821 - Issue #9154: Fix parser module to understand function annotations. 7822 7823 - Issue #6085: In http.server.py SimpleHTTPServer.address_string returns the 7824 client ip address instead client hostname. Patch by Charles-Franois Natali. 7825 7826 - Issue #14309: Deprecate time.clock(), use time.perf_counter() or 7827 time.process_time() instead. 7828 7829 - Issue #14428: Implement the PEP 418. Add time.get_clock_info(), 7830 time.perf_counter() and time.process_time() functions, and rename 7831 time.steady() to time.monotonic(). 7832 7833 - Issue #14646: importlib.util.module_for_loader() now sets __loader__ and 7834 __package__ (when possible). 7835 7836 - Issue #14664: It is now possible to use @unittest.skip{If,Unless} on a 7837 test class that doesn't inherit from TestCase (i.e. a mixin). 7838 7839 - Issue #4892: multiprocessing Connections can now be transferred over 7840 multiprocessing Connections. Patch by Richard Oudkerk (sbt). 7841 7842 - Issue #14160: TarFile.extractfile() failed to resolve symbolic links when 7843 the links were not located in an archive subdirectory. 7844 7845 - Issue #14638: pydoc now treats non-string __name__ values as if they 7846 were missing, instead of raising an error. 7847 7848 - Issue #13684: Fix httplib tunnel issue of infinite loops for certain sites 7849 which send EOF without trailing \r\n. 7850 7851 - Issue #14605: Add importlib.abc.FileLoader, importlib.machinery.(FileFinder, 7852 SourceFileLoader, SourcelessFileLoader, ExtensionFileLoader). 7853 7854 - Issue #13959: imp.cache_from_source()/source_from_cache() now follow 7855 os.path.join()/split() semantics for path manipulation instead of its prior, 7856 custom semantics of caring the right-most path separator forward in path 7857 joining. 7858 7859 - Issue #2193: Allow ":" character in Cookie NAME values. 7860 7861 - Issue #14629: tokenizer.detect_encoding will specify the filename in the 7862 SyntaxError exception if found at readline.__self__.name. 7863 7864 - Issue #14629: Raise SyntaxError in tokenizer.detect_encoding if the 7865 first two lines have non-UTF-8 characters without an encoding declaration. 7866 7867 - Issue #14308: Fix an exception when a "dummy" thread is in the threading 7868 module's active list after a fork(). 7869 7870 - Issue #11750: The Windows API functions scattered in the _subprocess and 7871 _multiprocessing.win32 modules now live in a single module "_winapi". 7872 Patch by sbt. 7873 7874 - Issue #14087: multiprocessing: add Condition.wait_for(). Patch by sbt. 7875 7876 - Issue #14538: HTMLParser can now parse correctly start tags that contain 7877 a bare '/'. 7878 7879 - Issue #14452: SysLogHandler no longer inserts a UTF-8 BOM into the message. 7880 7881 - Issue #14386: Expose the dict_proxy internal type as types.MappingProxyType. 7882 7883 - Issue #13959: Make imp.reload() always use a module's __loader__ to perform 7884 the reload. 7885 7886 - Issue #13959: Add imp.py and rename the built-in module to _imp, allowing for 7887 re-implementing parts of the module in pure Python. 7888 7889 - Issue #13496: Fix potential overflow in bisect.bisect algorithm when applied 7890 to a collection of size > sys.maxsize / 2. 7891 7892 - Have importlib take advantage of ImportError's new 'name' and 'path' 7893 attributes. 7894 7895 - Issue #14399: zipfile now recognizes that the archive has been modified even 7896 if only the comment is changed. In addition, the TypeError that results from 7897 trying to set a non-binary value as a comment is now raised at the time 7898 the comment is set rather than at the time the zipfile is written. 7899 7900 - trace.CoverageResults.is_ignored_filename() now ignores any name that starts 7901 with "<" and ends with ">" instead of special-casing "<string>" and 7902 "<doctest ". 7903 7904 - Issue #12537: The mailbox module no longer depends on knowledge of internal 7905 implementation details of the email package Message object. 7906 7907 - Issue #7978: socketserver now restarts the select() call when EINTR is 7908 returned. This avoids crashing the server loop when a signal is received. 7909 Patch by Jerzy Kozera. 7910 7911 - Issue #14522: Avoid duplicating socket handles in multiprocessing.connection. 7912 Patch by sbt. 7913 7914 - Don't Py_DECREF NULL variable in io.IncrementalNewlineDecoder. 7915 7916 - Issue #3033: Add displayof parameter to tkinter font. Patch by Guilherme Polo. 7917 7918 - Issue #14482: Raise a ValueError, not a NameError, when trying to create 7919 a multiprocessing Client or Listener with an AF_UNIX type address under 7920 Windows. Patch by Popa Claudiu. 7921 7922 - Issue #802310: Generate always unique tkinter font names if not directly passed. 7923 7924 - Issue #14151: Raise a ValueError, not a NameError, when trying to create 7925 a multiprocessing Client or Listener with an AF_PIPE type address under 7926 non-Windows platforms. Patch by Popa Claudiu. 7927 7928 - Issue #14493: Use gvfs-open or xdg-open in webbrowser. 7929 7930 Build 7931 ----- 7932 7933 - "make touch" will now touch generated files that are checked into Mercurial, 7934 after a "hg update" which failed to bring the timestamps into the right order. 7935 7936 Tests 7937 ----- 7938 7939 - Issue #14026: In test_cmd_line_script, check that sys.argv is populated 7940 correctly for the various invocation approaches (Patch by Jason Yeo) 7941 7942 - Issue #14032: Fix incorrect variable name in test_cmd_line_script debugging 7943 message (Patch by Jason Yeo) 7944 7945 - Issue #14589: Update certificate chain for sha256.tbs-internet.com, fixing 7946 a test failure in test_ssl. 7947 7948 - Issue #14355: Regrtest now supports the standard unittest test loading, and 7949 will use it if a test file contains no `test_main` method. 7950 7951 IDLE 7952 ---- 7953 7954 - Issue #8515: Set __file__ when run file in IDLE. 7955 Initial patch by Bruce Frederiksen. 7956 7957 - Issue #14496: Fix wrong name in idlelib/tabbedpages.py. 7958 Patch by Popa Claudiu. 7959 7960 Tools / Demos 7961 ------------- 7962 7963 - Issue #3561: The Windows installer now has an option, off by default, for 7964 placing the Python installation into the system "Path" environment variable. 7965 7966 - Issue #13165: stringbench is now available in the Tools/stringbench folder. 7967 It used to live in its own SVN project. 7968 7969 C-API 7970 ----- 7971 7972 - Issue #14098: New functions PyErr_GetExcInfo and PyErr_SetExcInfo. 7973 Patch by Stefan Behnel. 7974 7975 7976 What's New in Python 3.3.0 Alpha 2? 7977 =================================== 7978 7979 *Release date: 01-Apr-2012* 7980 7981 Core and Builtins 7982 ----------------- 7983 7984 - Issue #1683368: object.__new__ and object.__init__ raise a TypeError if they 7985 are passed arguments and their complementary method is not overridden. 7986 7987 - Issue #14378: Fix compiling ast.ImportFrom nodes with a "__future__" string as 7988 the module name that was not interned. 7989 7990 - Issue #14331: Use significantly less stack space when importing modules by 7991 allocating path buffers on the heap instead of the stack. 7992 7993 - Issue #14334: Prevent in a segfault in type.__getattribute__ when it was not 7994 passed strings. 7995 7996 - Issue #1469629: Allow cycles through an object's __dict__ slot to be 7997 collected. (For example if ``x.__dict__ is x``). 7998 7999 - Issue #14205: dict lookup raises a RuntimeError if the dict is modified 8000 during a lookup. 8001 8002 - Issue #14220: When a generator is delegating to another iterator with the 8003 yield from syntax, it needs to have its ``gi_running`` flag set to True. 8004 8005 - Issue #14435: Remove dedicated block allocator from floatobject.c and rely 8006 on the PyObject_Malloc() api like all other objects. 8007 8008 - Issue #14471: Fix a possible buffer overrun in the winreg module. 8009 8010 - Issue #14288: Allow the serialization of builtin iterators 8011 8012 Library 8013 ------- 8014 8015 - Issue #14300: Under Windows, sockets created using socket.dup() now allow 8016 overlapped I/O. Patch by sbt. 8017 8018 - Issue #13872: socket.detach() now marks the socket closed (as mirrored 8019 in the socket repr()). Patch by Matt Joiner. 8020 8021 - Issue #14406: Fix a race condition when using ``concurrent.futures.wait( 8022 return_when=ALL_COMPLETED)``. Patch by Matt Joiner. 8023 8024 - Issue #5136: deprecate old, unused functions from tkinter. 8025 8026 - Issue #14416: syslog now defines the LOG_ODELAY and LOG_AUTHPRIV constants 8027 if they are defined in <syslog.h>. 8028 8029 - Issue #14295: Add unittest.mock 8030 8031 - Issue #7652: Add --with-system-libmpdec option to configure for linking 8032 the _decimal module against an installed libmpdec. 8033 8034 - Issue #14380: MIMEText now defaults to utf-8 when passed non-ASCII unicode 8035 with no charset specified. 8036 8037 - Issue #10340: asyncore - properly handle EINVAL in dispatcher constructor on 8038 OSX; avoid to call handle_connect in case of a disconnected socket which 8039 was not meant to connect. 8040 8041 - Issue #14204: The ssl module now has support for the Next Protocol 8042 Negotiation extension, if available in the underlying OpenSSL library. 8043 Patch by Colin Marc. 8044 8045 - Issue #3035: Unused functions from tkinter are marked as pending deprecated. 8046 8047 - Issue #12757: Fix the skipping of doctests when python is run with -OO so 8048 that it works in unittest's verbose mode as well as non-verbose mode. 8049 8050 - Issue #7652: Integrate the decimal floating point libmpdec library to speed 8051 up the decimal module. Performance gains of the new C implementation are 8052 between 10x and 100x, depending on the application. 8053 8054 - Issue #14269: SMTPD now conforms to the RFC and requires a HELO command 8055 before MAIL, RCPT, or DATA. 8056 8057 - Issue #13694: asynchronous connect in asyncore.dispatcher does not set addr 8058 attribute. 8059 8060 - Issue #14344: fixed the repr of email.policy objects. 8061 8062 - Issue #11686: Added missing entries to email package __all__ lists 8063 (mostly the new Bytes classes). 8064 8065 - Issue #14335: multiprocessing's custom Pickler subclass now inherits from 8066 the C-accelerated implementation. Patch by sbt. 8067 8068 - Issue #10484: Fix the CGIHTTPServer's PATH_INFO handling problem. 8069 8070 - Issue #11199: Fix the with urllib which hangs on particular ftp urls. 8071 8072 - Improve the memory utilization and speed of functools.lru_cache. 8073 8074 - Issue #14222: Use the new time.steady() function instead of time.time() for 8075 timeout in queue and threading modules to not be affected of system time 8076 update. 8077 8078 - Issue #13248: Remove lib2to3.pytree.Base.get_prefix/set_prefix. 8079 8080 - Issue #14234: CVE-2012-0876: Randomize hashes of xml attributes in the hash 8081 table internal to the pyexpat module's copy of the expat library to avoid a 8082 denial of service due to hash collisions. Patch by David Malcolm with some 8083 modifications by the expat project. 8084 8085 - Issue #12818: format address no longer needlessly \ escapes ()s in names when 8086 the name ends up being quoted. 8087 8088 - Issue #14062: BytesGenerator now correctly folds Header objects, 8089 including using linesep when folding. 8090 8091 - Issue #13839: When invoked on the command-line, the pstats module now 8092 accepts several filenames of profile stat files and merges them all. 8093 Patch by Matt Joiner. 8094 8095 - Issue #14291: Email now defaults to utf-8 for non-ASCII unicode headers 8096 instead of raising an error. This fixes a regression relative to 2.7. 8097 8098 - Issue #989712: Support using Tk without a mainloop. 8099 8100 - Issue #3835: Refuse to use unthreaded Tcl in threaded Python. 8101 8102 - Issue #2843: Add new Tk API to Tkinter. 8103 8104 - Issue #14184: Increase the default stack size for secondary threads on 8105 Mac OS X to avoid interpreter crashes when using threads on 10.7. 8106 8107 - Issue #14180: datetime.date.fromtimestamp(), 8108 datetime.datetime.fromtimestamp() and datetime.datetime.utcfromtimestamp() 8109 now raise an OSError instead of ValueError if localtime() or gmtime() failed. 8110 8111 - Issue #14180: time.ctime(), gmtime(), time.localtime(), 8112 datetime.date.fromtimestamp(), datetime.datetime.fromtimestamp() and 8113 datetime.datetime.utcfromtimestamp() now raises an OverflowError, instead of 8114 a ValueError, if the timestamp does not fit in time_t. 8115 8116 - Issue #14180: datetime.datetime.fromtimestamp() and 8117 datetime.datetime.utcfromtimestamp() now round microseconds towards zero 8118 instead of rounding to nearest with ties going away from zero. 8119 8120 - Issue #10543: Fix unittest test discovery with Jython bytecode files. 8121 8122 - Issue #1178863: Separate initialisation from setting when initializing 8123 Tkinter.Variables; harmonize exceptions to ValueError; only delete variables 8124 that have not been deleted; assert that variable names are strings. 8125 8126 - Issue #14104: Implement time.monotonic() on Mac OS X, patch written by 8127 Nicholas Riley. 8128 8129 - Issue #13394: the aifc module now uses warnings.warn() to signal warnings. 8130 8131 - Issue #14252: Fix subprocess.Popen.terminate() to not raise an error under 8132 Windows when the child process has already exited. 8133 8134 - Issue #14223: curses.addch() is no more limited to the range 0-255 when the 8135 Python curses is not linked to libncursesw. It was a regression introduced 8136 in Python 3.3a1. 8137 8138 - Issue #14168: Check for presence of Element._attrs in minidom before 8139 accessing it. 8140 8141 - Issue #12328: Fix multiprocessing's use of overlapped I/O on Windows. 8142 Also, add a multiprocessing.connection.wait(rlist, timeout=None) function 8143 for polling multiple objects at once. Patch by sbt. 8144 8145 - Issue #14007: Accept incomplete TreeBuilder objects (missing start, end, 8146 data or close method) for the Python implementation as well. 8147 Drop the no-op TreeBuilder().xml() method from the C implementation. 8148 8149 - Issue #14210: pdb now has tab-completion not only for command names, but 8150 also for their arguments, wherever possible. 8151 8152 - Issue #14310: Sockets can now be with other processes on Windows using 8153 the api socket.socket.share() and socket.fromshare(). 8154 8155 - Issue #10576: The gc module now has a 'callbacks' member that will get 8156 called when garbage collection takes place. 8157 8158 Build 8159 ----- 8160 8161 - Issue #14557: Fix extensions build on HP-UX. Patch by Adi Roiban. 8162 8163 - Issue #14387: Do not include accu.h from Python.h. 8164 8165 - Issue #14359: Only use O_CLOEXEC in _posixmodule.c if it is defined. 8166 Based on patch from Herv Coatanhay. 8167 8168 - Issue #14321: Do not run pgen during the build if files are up to date. 8169 8170 Documentation 8171 ------------- 8172 8173 - Issue #14034: added the argparse tutorial. 8174 8175 - Issue #14324: Fix configure tests for cross builds. 8176 8177 - Issue #14327: Call AC_CANONICAL_HOST in configure.ac and check in 8178 config.{guess,sub}. Don't use uname calls for cross builds. 8179 8180 Extension Modules 8181 ----------------- 8182 8183 - Issue #9041: An issue in ctypes.c_longdouble, ctypes.c_double, and 8184 ctypes.c_float that caused an incorrect exception to be returned in the 8185 case of overflow has been fixed. 8186 8187 - Issue #14212: The re module didn't retain a reference to buffers it was 8188 scanning, resulting in segfaults. 8189 8190 - Issue #14259: The finditer() method of re objects did not take any 8191 keyword arguments, contrary to the documentation. 8192 8193 - Issue #10142: Support for SEEK_HOLE/SEEK_DATA (for example, under ZFS). 8194 8195 Tests 8196 ----- 8197 8198 - Issue #14442: Add missing errno import in test_smtplib. 8199 8200 - Issue #8315: (partial fix) python -m unittest test.test_email now works. 8201 8202 8203 What's New in Python 3.3.0 Alpha 1? 8204 =================================== 8205 8206 *Release date: 05-Mar-2012* 8207 8208 Core and Builtins 8209 ----------------- 8210 8211 - Issue #14172: Fix reference leak when marshalling a buffer-like object 8212 (other than a bytes object). 8213 8214 - Issue #13521: dict.setdefault() now does only one lookup for the given key, 8215 making it "atomic" for many purposes. Patch by Filip Gruszczyski. 8216 8217 - PEP 409, Issue #6210: "raise X from None" is now supported as a means of 8218 suppressing the display of the chained exception context. The chained 8219 context still remains available as the __context__ attribute. 8220 8221 - Issue #10181: New memoryview implementation fixes multiple ownership 8222 and lifetime issues of dynamically allocated Py_buffer members (#9990) 8223 as well as crashes (#8305, #7433). Many new features have been added 8224 (See whatsnew/3.3), and the documentation has been updated extensively. 8225 The ndarray test object from _testbuffer.c implements all aspects of 8226 PEP-3118, so further development towards the complete implementation 8227 of the PEP can proceed in a test-driven manner. 8228 8229 Thanks to Nick Coghlan, Antoine Pitrou and Pauli Virtanen for review 8230 and many ideas. 8231 8232 - Issue #12834: Fix incorrect results of memoryview.tobytes() for 8233 non-contiguous arrays. 8234 8235 - Issue #5231: Introduce memoryview.cast() method that allows changing 8236 format and shape without making a copy of the underlying memory. 8237 8238 - Issue #14084: Fix a file descriptor leak when importing a module with a 8239 bad encoding. 8240 8241 - Upgrade Unicode data to Unicode 6.1. 8242 8243 - Issue #14040: Remove rarely used file name suffixes for C extensions 8244 (under POSIX mainly). 8245 8246 - Issue #14051: Allow arbitrary attributes to be set of classmethod and 8247 staticmethod. 8248 8249 - Issue #13703: oCERT-2011-003: Randomize hashes of str and bytes to protect 8250 against denial of service attacks due to hash collisions within the dict and 8251 set types. Patch by David Malcolm, based on work by Victor Stinner. 8252 8253 - Issue #13020: Fix a reference leak when allocating a structsequence object 8254 fails. Patch by Suman Saha. 8255 8256 - Issue #13908: Ready types returned from PyType_FromSpec. 8257 8258 - Issue #11235: Fix OverflowError when trying to import a source file whose 8259 modification time doesn't fit in a 32-bit timestamp. 8260 8261 - Issue #12705: A SyntaxError exception is now raised when attempting to 8262 compile multiple statements as a single interactive statement. 8263 8264 - Fix the builtin module initialization code to store the init function for 8265 future reinitialization. 8266 8267 - Issue #8052: The posix subprocess module would take a long time closing 8268 all possible file descriptors in the child process rather than just open 8269 file descriptors. It now closes only the open fds if possible for the 8270 default close_fds=True behavior. 8271 8272 - Issue #13629: Renumber the tokens in token.h so that they match the indexes 8273 into _PyParser_TokenNames. 8274 8275 - Issue #13752: Add a casefold() method to str. 8276 8277 - Issue #13761: Add a "flush" keyword argument to the print() function, 8278 used to ensure flushing the output stream. 8279 8280 - Issue #13645: pyc files now contain the size of the corresponding source 8281 code, to avoid timestamp collisions (especially on filesystems with a low 8282 timestamp resolution) when checking for freshness of the bytecode. 8283 8284 - PEP 380, Issue #11682: Add "yield from <x>" to support easy delegation to 8285 subgenerators (initial patch by Greg Ewing, integration into 3.3 by 8286 Renaud Blanch, Ryan Kelly, Zbigniew Jdrzejewski-Szmek and Nick Coghlan) 8287 8288 - Issue #13748: Raw bytes literals can now be written with the ``rb`` prefix 8289 as well as ``br``. 8290 8291 - Issue #12736: Use full unicode case mappings for upper, lower, and title case. 8292 8293 - Issue #12760: Add a create mode to open(). Patch by David Townshend. 8294 8295 - Issue #13738: Simplify implementation of bytes.lower() and bytes.upper(). 8296 8297 - Issue #13577: Built-in methods and functions now have a __qualname__. 8298 Patch by sbt. 8299 8300 - Issue #6695: Full garbage collection runs now clear the freelist of set 8301 objects. Initial patch by Matthias Troffaes. 8302 8303 - Fix OSError.__init__ and OSError.__new__ so that each of them can be 8304 overridden and take additional arguments (followup to issue #12555). 8305 8306 - Fix the fix for issue #12149: it was incorrect, although it had the side 8307 effect of appearing to resolve the issue. Thanks to Mark Shannon for 8308 noticing. 8309 8310 - Issue #13505: Pickle bytes objects in a way that is compatible with 8311 Python 2 when using protocols <= 2. 8312 8313 - Issue #11147: Fix an unused argument in _Py_ANNOTATE_MEMORY_ORDER. (Fix 8314 given by Campbell Barton). 8315 8316 - Issue #13503: Use a more efficient reduction format for bytearrays with 8317 pickle protocol >= 3. The old reduction format is kept with older protocols 8318 in order to allow unpickling under Python 2. Patch by Irmen de Jong. 8319 8320 - Issue #7111: Python can now be run without a stdin, stdout or stderr 8321 stream. It was already the case with Python 2. However, the corresponding 8322 sys module entries are now set to None (instead of an unusable file object). 8323 8324 - Issue #11849: Ensure that free()d memory arenas are really released 8325 on POSIX systems supporting anonymous memory mappings. Patch by 8326 Charles-Franois Natali. 8327 8328 - PEP 3155 / issue #13448: Qualified name for classes and functions. 8329 8330 - Issue #13436: Fix a bogus error message when an AST object was passed 8331 an invalid integer value. 8332 8333 - Issue #13411: memoryview objects are now hashable when the underlying 8334 object is hashable. 8335 8336 - Issue #13338: Handle all enumerations in _Py_ANNOTATE_MEMORY_ORDER 8337 to allow compiling extension modules with -Wswitch-enum on gcc. 8338 Initial patch by Floris Bruynooghe. 8339 8340 - Issue #10227: Add an allocation cache for a single slice object. Patch by 8341 Stefan Behnel. 8342 8343 - Issue #13393: BufferedReader.read1() now asks the full requested size to 8344 the raw stream instead of limiting itself to the buffer size. 8345 8346 - Issue #13392: Writing a pyc file should now be atomic under Windows as well. 8347 8348 - Issue #13333: The UTF-7 decoder now accepts lone surrogates (the encoder 8349 already accepts them). 8350 8351 - Issue #13389: Full garbage collection passes now clear the freelists for 8352 list and dict objects. They already cleared other freelists in the 8353 interpreter. 8354 8355 - Issue #13327: Remove the need for an explicit None as the second argument 8356 to os.utime, os.lutimes, os.futimes, os.futimens, os.futimesat, in 8357 order to update to the current time. Also added keyword argument 8358 handling to os.utimensat in order to remove the need for explicit None. 8359 8360 - Issue #13350: Simplify some C code by replacing most usages of 8361 PyUnicode_Format by PyUnicode_FromFormat. 8362 8363 - Issue #13342: input() used to ignore sys.stdin's and sys.stdout's unicode 8364 error handler in interactive mode (when calling into PyOS_Readline()). 8365 8366 - Issue #9896: Add start, stop, and step attributes to range objects. 8367 8368 - Issue #13343: Fix a SystemError when a lambda expression uses a global 8369 variable in the default value of a keyword-only argument: ``lambda *, 8370 arg=GLOBAL_NAME: None`` 8371 8372 - Issue #12797: Added custom opener parameter to builtin open() and 8373 FileIO.open(). 8374 8375 - Issue #10519: Avoid unnecessary recursive function calls in 8376 setobject.c. 8377 8378 - Issue #10363: Deallocate global locks in Py_Finalize(). 8379 8380 - Issue #13018: Fix reference leaks in error paths in dictobject.c. 8381 Patch by Suman Saha. 8382 8383 - Issue #13201: Define '==' and '!=' to compare range objects based on 8384 the sequence of values they define (instead of comparing based on 8385 object identity). 8386 8387 - Issue #1294232: In a few cases involving metaclass inheritance, the 8388 interpreter would sometimes invoke the wrong metaclass when building a new 8389 class object. These cases now behave correctly. Patch by Daniel Urban. 8390 8391 - Issue #12753: Add support for Unicode name aliases and named sequences. 8392 Both ``unicodedata.lookup()`` and '\N{...}' now resolve aliases, 8393 and ``unicodedata.lookup()`` resolves named sequences too. 8394 8395 - Issue #12170: The count(), find(), rfind(), index() and rindex() methods 8396 of bytes and bytearray objects now accept an integer between 0 and 255 8397 as their first argument. Patch by Petri Lehtinen. 8398 8399 - Issue #12604: VTRACE macro expanded to no-op in _sre.c to avoid compiler 8400 warnings. Patch by Josh Triplett and Petri Lehtinen. 8401 8402 - Issue #12281: Rewrite the MBCS codec to handle correctly replace and ignore 8403 error handlers on all Windows versions. The MBCS codec is now supporting all 8404 error handlers, instead of only replace to encode and ignore to decode. 8405 8406 - Issue #13188: When called without an explicit traceback argument, 8407 generator.throw() now gets the traceback from the passed exception's 8408 ``__traceback__`` attribute. Patch by Petri Lehtinen. 8409 8410 - Issue #13146: Writing a pyc file is now atomic under POSIX. 8411 8412 - Issue #7833: Extension modules built using distutils on Windows will no 8413 longer include a "manifest" to prevent them failing at import time in some 8414 embedded situations. 8415 8416 - PEP 3151 / issue #12555: reworking the OS and IO exception hierarchy. 8417 8418 - Add internal API for static strings (_Py_identifier et al.). 8419 8420 - Issue #13063: the Windows error ERROR_NO_DATA (numbered 232 and described 8421 as "The pipe is being closed") is now mapped to POSIX errno EPIPE 8422 (previously EINVAL). 8423 8424 - Issue #12911: Fix memory consumption when calculating the repr() of huge 8425 tuples or lists. 8426 8427 - PEP 393: flexible string representation. Thanks to Torsten Becker for the 8428 initial implementation, and Victor Stinner for various bug fixes. 8429 8430 - Issue #14081: The 'sep' and 'maxsplit' parameter to str.split, bytes.split, 8431 and bytearray.split may now be passed as keyword arguments. 8432 8433 - Issue #13012: The 'keepends' parameter to str.splitlines may now be passed 8434 as a keyword argument: "my_string.splitlines(keepends=True)". The same 8435 change also applies to bytes.splitlines and bytearray.splitlines. 8436 8437 - Issue #7732: Don't open a directory as a file anymore while importing a 8438 module. Ignore the directory if its name matches the module name (e.g. 8439 "__init__.py") and raise an ImportError instead. 8440 8441 - Issue #13021: Missing decref on an error path. Thanks to Suman Saha for 8442 finding the bug and providing a patch. 8443 8444 - Issue #12973: Fix overflow checks that relied on undefined behaviour in 8445 list_repeat (listobject.c) and islice_next (itertoolsmodule.c). These bugs 8446 caused test failures with recent versions of Clang. 8447 8448 - Issue #12904: os.utime, os.futimes, os.lutimes, and os.futimesat now write 8449 atime and mtime with nanosecond precision on modern POSIX platforms. 8450 8451 - Issue #12802: the Windows error ERROR_DIRECTORY (numbered 267) is now 8452 mapped to POSIX errno ENOTDIR (previously EINVAL). 8453 8454 - Issue #9200: The str.is* methods now work with strings that contain non-BMP 8455 characters even in narrow Unicode builds. 8456 8457 - Issue #12791: Break reference cycles early when a generator exits with 8458 an exception. 8459 8460 - Issue #12773: Make __doc__ mutable on user-defined classes. 8461 8462 - Issue #12766: Raise a ValueError when creating a class with a class variable 8463 that conflicts with a name in __slots__. 8464 8465 - Issue #12266: Fix str.capitalize() to correctly uppercase/lowercase 8466 titlecased and cased non-letter characters. 8467 8468 - Issue #12732: In narrow unicode builds, allow Unicode identifiers which fall 8469 outside the BMP. 8470 8471 - Issue #12575: Validate user-generated AST before it is compiled. 8472 8473 - Make type(None), type(Ellipsis), and type(NotImplemented) callable. They 8474 return the respective singleton instances. 8475 8476 - Forbid summing bytes with sum(). 8477 8478 - Verify the types of AST strings and identifiers provided by the user before 8479 compiling them. 8480 8481 - Issue #12647: The None object now has a __bool__() method that returns False. 8482 Formerly, bool(None) returned False only because of special case logic 8483 in PyObject_IsTrue(). 8484 8485 - Issue #12579: str.format_map() now raises a ValueError if used on a 8486 format string that contains positional fields. Initial patch by 8487 Julian Berman. 8488 8489 - Issue #10271: Allow warnings.showwarning() be any callable. 8490 8491 - Issue #11627: Fix segfault when __new__ on an exception returns a 8492 non-exception class. 8493 8494 - Issue #12149: Update the method cache after a type's dictionary gets 8495 cleared by the garbage collector. This fixes a segfault when an instance 8496 and its type get caught in a reference cycle, and the instance's 8497 deallocator calls one of the methods on the type (e.g. when subclassing 8498 IOBase). Diagnosis and patch by Davide Rizzo. 8499 8500 - Issue #9611, Issue #9015: FileIO.read() clamps the length to INT_MAX on Windows. 8501 8502 - Issue #9642: Uniformize the tests on the availability of the mbcs codec, add 8503 a new HAVE_MBCS define. 8504 8505 - Issue #9642: Fix filesystem encoding initialization: use the ANSI code page 8506 on Windows if the mbcs codec is not available, and fail with a fatal error if 8507 we cannot get the locale encoding (if nl_langinfo(CODESET) is not available) 8508 instead of using UTF-8. 8509 8510 - When a generator yields, do not retain the caller's exception state on the 8511 generator. 8512 8513 - Issue #12475: Prevent generators from leaking their exception state into the 8514 caller's frame as they return for the last time. 8515 8516 - Issue #12291: You can now load multiple marshalled objects from a stream, 8517 with other data interleaved between marshalled objects. 8518 8519 - Issue #12356: When required positional or keyword-only arguments are not 8520 given, produce an informative error message which includes the name(s) of the 8521 missing arguments. 8522 8523 - Issue #12370: Fix super with no arguments when __class__ is overridden in the 8524 class body. 8525 8526 - Issue #12084: os.stat on Windows now works properly with relative symbolic 8527 links when called from any directory. 8528 8529 - Loosen type restrictions on the __dir__ method. __dir__ can now return any 8530 sequence, which will be converted to a list and sorted by dir(). 8531 8532 - Issue #12265: Make error messages produced by passing an invalid set of 8533 arguments to a function more informative. 8534 8535 - Issue #12225: Still allow Python to build if Python is not in its hg repo or 8536 mercurial is not installed. 8537 8538 - Issue #1195: my_fgets() now always clears errors before calling fgets(). Fix 8539 the following case: sys.stdin.read() stopped with CTRL+d (end of file), 8540 raw_input() interrupted by CTRL+c. 8541 8542 - Issue #12216: Allow unexpected EOF errors to happen on any line of the file. 8543 8544 - Issue #12199: The TryExcept and TryFinally and AST nodes have been unified 8545 into a Try node. 8546 8547 - Issue #9670: Increase the default stack size for secondary threads on 8548 Mac OS X and FreeBSD to reduce the chances of a crash instead of a 8549 "maximum recursion depth" RuntimeError exception. 8550 (patch by Ronald Oussoren) 8551 8552 - Issue #12106: The use of the multiple-with shorthand syntax is now reflected 8553 in the AST. 8554 8555 - Issue #12190: Try to use the same filename object when compiling unmarshalling 8556 a code objects in the same file. 8557 8558 - Issue #12166: Move implementations of dir() specialized for various types into 8559 the __dir__() methods of those types. 8560 8561 - Issue #5715: In socketserver, close the server socket in the child process. 8562 8563 - Correct lookup of __dir__ on objects. Among other things, this causes errors 8564 besides AttributeError found on lookup to be propagated. 8565 8566 - Issue #12060: Use sig_atomic_t type and volatile keyword in the signal 8567 module. Patch written by Charles-Franois Natali. 8568 8569 - Issue #1746656: Added the if_nameindex, if_indextoname, if_nametoindex 8570 methods to the socket module. 8571 8572 - Issue #12044: Fixed subprocess.Popen when used as a context manager to 8573 wait for the process to end when exiting the context to avoid unintentionally 8574 leaving zombie processes around. 8575 8576 - Issue #1195: Fix input() if it is interrupted by CTRL+d and then CTRL+c, 8577 clear the end-of-file indicator after CTRL+d. 8578 8579 - Issue #1856: Avoid crashes and lockups when daemon threads run while the 8580 interpreter is shutting down; instead, these threads are now killed when 8581 they try to take the GIL. 8582 8583 - Issue #9756: When calling a method descriptor or a slot wrapper descriptor, 8584 the check of the object type doesn't read the __class__ attribute anymore. 8585 Fix a crash if a class override its __class__ attribute (e.g. a proxy of the 8586 str type). Patch written by Andreas Sthrk. 8587 8588 - Issue #10517: After fork(), reinitialize the TLS used by the PyGILState_* 8589 APIs, to avoid a crash with the pthread implementation in RHEL 5. Patch 8590 by Charles-Franois Natali. 8591 8592 - Issue #10914: Initialize correctly the filesystem codec when creating a new 8593 subinterpreter to fix a bootstrap issue with codecs implemented in Python, as 8594 the ISO-8859-15 codec. 8595 8596 - Issue #11918: OS/2 and VMS are no more supported because of the lack of 8597 maintainer. 8598 8599 - Issue #6780: fix starts/endswith error message to mention that tuples are 8600 accepted too. 8601 8602 - Issue #5057: fix a bug in the peepholer that led to non-portable pyc files 8603 between narrow and wide builds while optimizing BINARY_SUBSCR on non-BMP 8604 chars (e.g. "\U00012345"[0]). 8605 8606 - Issue #11845: Fix typo in rangeobject.c that caused a crash in 8607 compute_slice_indices. Patch by Daniel Urban. 8608 8609 - Issue #5673: Added a `timeout` keyword argument to subprocess.Popen.wait, 8610 subprocess.Popen.communicated, subprocess.call, subprocess.check_call, and 8611 subprocess.check_output. If the blocking operation takes more than `timeout` 8612 seconds, the `subprocess.TimeoutExpired` exception is raised. 8613 8614 - Issue #11650: PyOS_StdioReadline() retries fgets() if it was interrupted 8615 (EINTR), for example if the program is stopped with CTRL+z on Mac OS X. Patch 8616 written by Charles-Francois Natali. 8617 8618 - Issue #9319: Include the filename in "Non-UTF8 code ..." syntax error. 8619 8620 - Issue #10785: Store the filename as Unicode in the Python parser. 8621 8622 - Issue #11619: _PyImport_LoadDynamicModule() doesn't encode the path to bytes 8623 on Windows. 8624 8625 - Issue #10998: Remove mentions of -Q, sys.flags.division_warning and 8626 Py_DivisionWarningFlag left over from Python 2. 8627 8628 - Issue #11244: Remove an unnecessary peepholer check that was preventing 8629 negative zeros from being constant-folded properly. 8630 8631 - Issue #11395: io.FileIO().write() clamps the data length to 32,767 bytes on 8632 Windows if the file is a TTY to workaround a Windows bug. The Windows console 8633 returns an error (12: not enough space error) on writing into stdout if 8634 stdout mode is binary and the length is greater than 66,000 bytes (or less, 8635 depending on heap usage). 8636 8637 - Issue #11320: fix bogus memory management in Modules/getpath.c, leading to 8638 a possible crash when calling Py_SetPath(). 8639 8640 - Issue #11432: A bug was introduced in subprocess.Popen on posix systems with 8641 3.2.0 where the stdout or stderr file descriptor being the same as the stdin 8642 file descriptor would raise an exception. webbrowser.open would fail. fixed. 8643 8644 - Issue #9856: Change object.__format__ with a non-empty format string 8645 to be a DeprecationWarning. In 3.2 it was a PendingDeprecationWarning. 8646 In 3.4 it will be a TypeError. 8647 8648 - Issue #11244: The peephole optimizer is now able to constant-fold 8649 arbitrarily complex expressions. This also fixes a 3.2 regression where 8650 operations involving negative numbers were not constant-folded. 8651 8652 - Issue #11450: Don't truncate hg version info in Py_GetBuildInfo() when 8653 there are many tags (e.g. when using mq). Patch by Nadeem Vawda. 8654 8655 - Issue #11335: Fixed a memory leak in list.sort when the key function 8656 throws an exception. 8657 8658 - Issue #8923: When a string is encoded to UTF-8 in strict mode, the result is 8659 cached into the object. Examples: str.encode(), str.encode('utf-8'), 8660 PyUnicode_AsUTF8String() and PyUnicode_AsEncodedString(unicode, "utf-8", 8661 NULL). 8662 8663 - Issue #10829: Refactor PyUnicode_FromFormat(), use the same function to parse 8664 the format string in the 3 steps, fix crashes on invalid format strings. 8665 8666 - Issue #13007: whichdb should recognize gdbm 1.9 magic numbers. 8667 8668 - Issue #11286: Raise a ValueError from calling PyMemoryView_FromBuffer with 8669 a buffer struct having a NULL data pointer. 8670 8671 - Issue #11272: On Windows, input() strips '\r' (and not only '\n'), and 8672 sys.stdin uses universal newline (replace '\r\n' by '\n'). 8673 8674 - Issue #11828: startswith and endswith now accept None as slice index. 8675 Patch by Torsten Becker. 8676 8677 - Issue #11168: Remove filename debug variable from PyEval_EvalFrameEx(). 8678 It encoded the Unicode filename to UTF-8, but the encoding fails on 8679 undecodable filename (on surrogate characters) which raises an unexpected 8680 UnicodeEncodeError on recursion limit. 8681 8682 - Issue #11187: Remove bootstrap code (use ASCII) of 8683 PyUnicode_AsEncodedString(), it was replaced by a better fallback (use the 8684 locale encoding) in PyUnicode_EncodeFSDefault(). 8685 8686 - Check for NULL result in PyType_FromSpec. 8687 8688 - Issue #10516: New copy() and clear() methods for lists and bytearrays. 8689 8690 - Issue #11386: bytearray.pop() now throws IndexError when the bytearray is 8691 empty, instead of OverflowError. 8692 8693 - Issue #12380: The rjust, ljust and center methods of bytes and bytearray 8694 now accept a bytearray argument. 8695 8696 Library 8697 ------- 8698 8699 - Issue #14195: An issue that caused weakref.WeakSet instances to incorrectly 8700 return True for a WeakSet instance 'a' in both 'a < a' and 'a > a' has been 8701 fixed. 8702 8703 - Issue #14166: Pickler objects now have an optional ``dispatch_table`` 8704 attribute which allows setting custom per-pickler reduction functions. 8705 Patch by sbt. 8706 8707 - Issue #14177: marshal.loads() now raises TypeError when given a unicode 8708 string. Patch by Guilherme Gonalves. 8709 8710 - Issue #13550: Remove the debug machinery from the threading module: remove 8711 verbose arguments from all threading classes and functions. 8712 8713 - Issue #14159: Fix the len() of weak containers (WeakSet, WeakKeyDictionary, 8714 WeakValueDictionary) to return a better approximation when some objects 8715 are dead or dying. Moreover, the implementation is now O(1) rather than 8716 O(n). 8717 8718 - Issue #11841: Fix comparison bug with 'rc' versions in packaging.version. 8719 Patch by Filip Gruszczyski. 8720 8721 - Issue #6884: Fix long-standing bugs with MANIFEST.in parsing in distutils 8722 on Windows. Also fixed in packaging. 8723 8724 - Issue #8033: sqlite3: Fix 64-bit integer handling in user functions 8725 on 32-bit architectures. Initial patch by Philippe Devalkeneer. 8726 8727 - HTMLParser is now able to handle slashes in the start tag. 8728 8729 - Issue #13641: Decoding functions in the base64 module now accept ASCII-only 8730 unicode strings. Patch by Catalin Iacob. 8731 8732 - Issue #14043: Speed up importlib's _FileFinder by at least 8x, and add a 8733 new importlib.invalidate_caches() function. 8734 8735 - Issue #14001: CVE-2012-0845: xmlrpc: Fix an endless loop in 8736 SimpleXMLRPCServer upon malformed POST request. 8737 8738 - Issue #13961: Move importlib over to using os.replace() for atomic renaming. 8739 8740 - Do away with ambiguous level values (as suggested by PEP 328) in 8741 importlib.__import__() by raising ValueError when level < 0. 8742 8743 - Issue #2489: pty.spawn could consume 100% cpu when it encountered an EOF. 8744 8745 - Issue #13014: Fix a possible reference leak in SSLSocket.getpeercert(). 8746 8747 - Issue #13777: Add PF_SYSTEM sockets on OS X. 8748 Patch by Michael Goderbauer. 8749 8750 - Issue #13015: Fix a possible reference leak in defaultdict.__repr__. 8751 Patch by Suman Saha. 8752 8753 - Issue #1326113: distutils' and packaging's build_ext commands option now 8754 correctly parses multiple values (separated by whitespace or commas) given 8755 to their --libraries option. 8756 8757 - Issue #10287: nntplib now queries the server's CAPABILITIES first before 8758 sending MODE READER, and only sends it if not already in READER mode. 8759 Patch by Hynek Schlawack. 8760 8761 - Issue #13993: HTMLParser is now able to handle broken end tags when 8762 strict=False. 8763 8764 - Issue #13930: lib2to3 now supports writing converted output files to another 8765 directory tree as well as copying unchanged files and altering the file 8766 suffix. 8767 8768 - Issue #9750: Fix sqlite3.Connection.iterdump on tables and fields 8769 with a name that is a keyword or contains quotes. Patch by Marko 8770 Kohtala. 8771 8772 - Issue #10287: nntplib now queries the server's CAPABILITIES again after 8773 authenticating (since the result may change, according to RFC 4643). 8774 Patch by Hynek Schlawack. 8775 8776 - Issue #13590: On OS X 10.7 and 10.6 with Xcode 4.2, building 8777 Distutils-based packages with C extension modules may fail because 8778 Apple has removed gcc-4.2, the version used to build python.org 8779 64-bit/32-bit Pythons. If the user does not explicitly override 8780 the default C compiler by setting the CC environment variable, 8781 Distutils will now attempt to compile extension modules with clang 8782 if gcc-4.2 is required but not found. Also as a convenience, if 8783 the user does explicitly set CC, substitute its value as the default 8784 compiler in the Distutils LDSHARED configuration variable for OS X. 8785 (Note, the python.org 32-bit-only Pythons use gcc-4.0 and the 10.4u 8786 SDK, neither of which are available in Xcode 4. This change does not 8787 attempt to override settings to support their use with Xcode 4.) 8788 8789 - Issue #13960: HTMLParser is now able to handle broken comments when 8790 strict=False. 8791 8792 - When '' is a path (e.g. in sys.path), make sure __file__ uses the current 8793 working directory instead of '' in importlib. 8794 8795 - Issue #13609: Add two functions to query the terminal size: 8796 os.get_terminal_size (low level) and shutil.get_terminal_size (high level). 8797 Patch by Zbigniew Jdrzejewski-Szmek. 8798 8799 - Issue #13845: On Windows, time.time() now uses GetSystemTimeAsFileTime() 8800 instead of ftime() to have a resolution of 100 ns instead of 1 ms (the clock 8801 accuracy is between 0.5 ms and 15 ms). 8802 8803 - Issue #13846: Add time.monotonic(), monotonic clock. 8804 8805 - Issue #8184: multiprocessing: On Windows, don't set SO_REUSEADDR on 8806 Connection sockets, and set FILE_FLAG_FIRST_PIPE_INSTANCE on named pipes, to 8807 make sure two listeners can't bind to the same socket/pipe (or any existing 8808 socket/pipe). 8809 8810 - Issue #10811: Fix recursive usage of cursors. Instead of crashing, 8811 raise a ProgrammingError now. 8812 8813 - Issue #13734: Add os.fwalk(), a directory walking function yielding file 8814 descriptors. 8815 8816 - Issue #2945: Make the distutils upload command aware of bdist_rpm products. 8817 8818 - Issue #13712: pysetup create should not convert package_data to extra_files. 8819 8820 - Issue #11805: package_data in setup.cfg should allow more than one value. 8821 8822 - Issue #13676: Handle strings with embedded zeros correctly in sqlite3. 8823 8824 - Issue #8828: Add new function os.replace(), for cross-platform renaming 8825 with overwriting. 8826 8827 - Issue #13848: open() and the FileIO constructor now check for NUL 8828 characters in the file name. Patch by Hynek Schlawack. 8829 8830 - Issue #13806: The size check in audioop decompression functions was too 8831 strict and could reject valid compressed data. Patch by Oleg Plakhotnyuk. 8832 8833 - Issue #13812: When a multiprocessing Process child raises an exception, 8834 flush stderr after printing the exception traceback. 8835 8836 - Issue #13885: CVE-2011-3389: the _ssl module would always disable the CBC 8837 IV attack countermeasure. 8838 8839 - Issue #13847: time.localtime() and time.gmtime() now raise an OSError instead 8840 of ValueError on failure. time.ctime() and time.asctime() now raises an 8841 OSError if localtime() failed. time.clock() now raises a RuntimeError if the 8842 processor time used is not available or its value cannot be represented 8843 8844 - Issue #13772: In os.symlink() under Windows, do not try to guess the link 8845 target's type (file or directory). The detection was buggy and made the 8846 call non-atomic (therefore prone to race conditions). 8847 8848 - Issue #6631: Disallow relative file paths in urllib urlopen methods. 8849 8850 - Issue #13722: Avoid silencing ImportErrors when initializing the codecs 8851 registry. 8852 8853 - Issue #13781: Fix GzipFile bug that caused an exception to be raised when 8854 opening for writing using a fileobj returned by os.fdopen(). 8855 8856 - Issue #13803: Under Solaris, distutils doesn't include bitness 8857 in the directory name. 8858 8859 - Issue #10278: Add time.wallclock() function, monotonic clock. 8860 8861 - Issue #13809: Fix regression where bz2 module wouldn't work when threads are 8862 disabled. Original patch by Amaury Forgeot d'Arc. 8863 8864 - Issue #13589: Fix some serialization primitives in the aifc module. 8865 Patch by Oleg Plakhotnyuk. 8866 8867 - Issue #13642: Unquote before b64encoding user:password during Basic 8868 Authentication. Patch contributed by Joonas Kuorilehto. 8869 8870 - Issue #12364: Fix a hang in concurrent.futures.ProcessPoolExecutor. 8871 The hang would occur when retrieving the result of a scheduled future after 8872 the executor had been shut down. 8873 8874 - Issue #13502: threading: Fix a race condition in Event.wait() that made it 8875 return False when the event was set and cleared right after. 8876 8877 - Issue #9993: When the source and destination are on different filesystems, 8878 and the source is a symlink, shutil.move() now recreates a symlink on the 8879 destination instead of copying the file contents. Patch by Jonathan Niehof 8880 and Hynek Schlawack. 8881 8882 - Issue #12926: Fix a bug in tarfile's link extraction. 8883 8884 - Issue #13696: Fix the 302 Relative URL Redirection problem. 8885 8886 - Issue #13636: Weak ciphers are now disabled by default in the ssl module 8887 (except when SSLv2 is explicitly asked for). 8888 8889 - Issue #12715: Add an optional symlinks argument to shutil functions 8890 (copyfile, copymode, copystat, copy, copy2). When that parameter is 8891 true, symlinks aren't dereferenced and the operation instead acts on the 8892 symlink itself (or creates one, if relevant). Patch by Hynek Schlawack. 8893 8894 - Add a flags parameter to select.epoll. 8895 8896 - Issue #13626: Add support for SSL Diffie-Hellman key exchange, through the 8897 SSLContext.load_dh_params() method and the ssl.OP_SINGLE_DH_USE option. 8898 8899 - Issue #11006: Don't issue low level warning in subprocess when pipe2() fails. 8900 8901 - Issue #13620: Support for Chrome browser in webbrowser. Patch contributed 8902 by Arnaud Calmettes. 8903 8904 - Issue #11829: Fix code execution holes in inspect.getattr_static for 8905 metaclasses with metaclasses. Patch by Andreas Sthrk. 8906 8907 - Issue #12708: Add starmap() and starmap_async() methods (similar to 8908 itertools.starmap()) to multiprocessing.Pool. Patch by Hynek Schlawack. 8909 8910 - Issue #1785: Fix inspect and pydoc with misbehaving descriptors. 8911 8912 - Issue #13637: "a2b" functions in the binascii module now accept ASCII-only 8913 unicode strings. 8914 8915 - Issue #13634: Add support for querying and disabling SSL compression. 8916 8917 - Issue #13627: Add support for SSL Elliptic Curve-based Diffie-Hellman 8918 key exchange, through the SSLContext.set_ecdh_curve() method and the 8919 ssl.OP_SINGLE_ECDH_USE option. 8920 8921 - Issue #13635: Add ssl.OP_CIPHER_SERVER_PREFERENCE, so that SSL servers 8922 choose the cipher based on their own preferences, rather than on the 8923 client's. 8924 8925 - Issue #11813: Fix inspect.getattr_static for modules. Patch by Andreas 8926 Sthrk. 8927 8928 - Issue #7502: Fix equality comparison for DocTestCase instances. Patch by 8929 Cdric Krier. 8930 8931 - Issue #11870: threading: Properly reinitialize threads internal locks and 8932 condition variables to avoid deadlocks in child processes. 8933 8934 - Issue #8035: urllib: Fix a bug where the client could remain stuck after a 8935 redirection or an error. 8936 8937 - Issue #13560: os.strerror() now uses the current locale encoding instead of 8938 UTF-8. 8939 8940 - Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem 8941 encoding and the surrogateescape error handler, rather than UTF-8. Patch 8942 by David Watson. 8943 8944 - Issue #10350: Read and save errno before calling a function which might 8945 overwrite it. Original patch by Hallvard B Furuseth. 8946 8947 - Issue #11610: Introduce a more general way to declare abstract properties. 8948 8949 - Issue #13591: A bug in importlib has been fixed that caused import_module 8950 to load a module twice. 8951 8952 - Issue #13449: sched.scheduler.run() method has a new "blocking" parameter which 8953 when set to False makes run() execute the scheduled events due to expire 8954 soonest (if any) and then return. Patch by Giampaolo Rodol. 8955 8956 - Issue #8684: sched.scheduler class can be safely used in multi-threaded 8957 environments. Patch by Josiah Carlson and Giampaolo Rodol. 8958 8959 - Alias resource.error to OSError ala PEP 3151. 8960 8961 - Issue #5689: Add support for lzma compression to the tarfile module. 8962 8963 - Issue #13248: Turn 3.2's PendingDeprecationWarning into 3.3's 8964 DeprecationWarning. It covers 'cgi.escape', 'importlib.abc.PyLoader', 8965 'importlib.abc.PyPycLoader', 'nntplib.NNTP.xgtitle', 'nntplib.NNTP.xpath', 8966 and private attributes of 'smtpd.SMTPChannel'. 8967 8968 - Issue #5905, Issue #13560: time.strftime() is now using the current locale 8969 encoding, instead of UTF-8, if the wcsftime() function is not available. 8970 8971 - Issue #13464: Add a readinto() method to http.client.HTTPResponse. Patch 8972 by Jon Kuhn. 8973 8974 - tarfile.py: Correctly detect bzip2 compressed streams with blocksizes 8975 other than 900k. 8976 8977 - Issue #13439: Fix many errors in turtle docstrings. 8978 8979 - Issue #6715: Add a module 'lzma' for compression using the LZMA algorithm. 8980 Thanks to Per yvind Karlsen for the initial implementation. 8981 8982 - Issue #13487: Make inspect.getmodule robust against changes done to 8983 sys.modules while it is iterating over it. 8984 8985 - Issue #12618: Fix a bug that prevented py_compile from creating byte 8986 compiled files in the current directory. Initial patch by Sjoerd de Vries. 8987 8988 - Issue #13444: When stdout has been closed explicitly, we should not attempt 8989 to flush it at shutdown and print an error. 8990 8991 - Issue #12567: The curses module uses Unicode functions for Unicode arguments 8992 when it is linked to the ncurses library. It encodes also Unicode strings to 8993 the locale encoding instead of UTF-8. 8994 8995 - Issue #12856: Ensure child processes do not inherit the parent's random 8996 seed for filename generation in the tempfile module. Patch by Brian 8997 Harring. 8998 8999 - Issue #9957: SpooledTemporaryFile.truncate() now accepts an optional size 9000 parameter, as other file-like objects. Patch by Ryan Kelly. 9001 9002 - Issue #13458: Fix a memory leak in the ssl module when decoding a 9003 certificate with a subjectAltName. Patch by Robert Xiao. 9004 9005 - Issue #13415: os.unsetenv() doesn't ignore errors anymore. 9006 9007 - Issue #13245: sched.scheduler class constructor's timefunc and 9008 delayfunct parameters are now optional. 9009 scheduler.enter and scheduler.enterabs methods gained a new kwargs parameter. 9010 Patch contributed by Chris Clark. 9011 9012 - Issue #12328: Under Windows, refactor handling of Ctrl-C events and 9013 make _multiprocessing.win32.WaitForMultipleObjects interruptible when 9014 the wait_flag parameter is false. Patch by sbt. 9015 9016 - Issue #13322: Fix BufferedWriter.write() to ensure that BlockingIOError is 9017 raised when the wrapped raw file is non-blocking and the write would block. 9018 Previous code assumed that the raw write() would raise BlockingIOError, but 9019 RawIOBase.write() is defined to returned None when the call would block. 9020 Patch by sbt. 9021 9022 - Issue #13358: HTMLParser now calls handle_data only once for each CDATA. 9023 9024 - Issue #4147: minidom's toprettyxml no longer adds whitespace around a text 9025 node when it is the only child of an element. Initial patch by Dan 9026 Kenigsberg. 9027 9028 - Issue #13374: The Windows bytes API has been deprecated in the os module. Use 9029 Unicode filenames instead of bytes filenames to not depend on the ANSI code 9030 page anymore and to support any filename. 9031 9032 - Issue #13297: Use bytes type to send and receive binary data through XMLRPC. 9033 9034 - Issue #6397: Support "/dev/poll" polling objects in select module, 9035 under Solaris & derivatives. 9036 9037 - Issues #1745761, #755670, #13357, #12629, #1200313: HTMLParser now correctly 9038 handles non-valid attributes, including adjacent and unquoted attributes. 9039 9040 - Issue #13193: Fix distutils.filelist.FileList and packaging.manifest.Manifest 9041 under Windows. 9042 9043 - Issue #13384: Remove unnecessary __future__ import in Lib/random.py 9044 9045 - Issue #13149: Speed up append-only StringIO objects. 9046 9047 - Issue #13373: multiprocessing.Queue.get() could sometimes block indefinitely 9048 when called with a timeout. Patch by Arnaud Ysmal. 9049 9050 - Issue #13254: Fix Maildir initialization so that maildir contents 9051 are read correctly. 9052 9053 - Issue #3067: locale.setlocale() now raises TypeError if the second 9054 argument is an invalid iterable. Its documentation and docstring 9055 were also updated. Initial patch by Jyrki Pulliainen. 9056 9057 - Issue #13140: Fix the daemon_threads attribute of ThreadingMixIn. 9058 9059 - Issue #13339: Fix compile error in posixmodule.c due to missing semicolon. 9060 Thanks to Robert Xiao. 9061 9062 - Byte compilation in packaging is now isolated from the calling Python -B or 9063 -O options, instead of being disallowed under -B or buggy under -O. 9064 9065 - Issue #10570: curses.putp() and curses.tparm() are now expecting a byte 9066 string, instead of a Unicode string. 9067 9068 - Issue #13295: http.server now produces valid HTML 4.01 strict. 9069 9070 - Issue #2892: preserve iterparse events in case of SyntaxError. 9071 9072 - Issue #13287: urllib.request and urllib.error now contains an __all__ 9073 attribute to expose only relevant classes and functions. Patch by Florent 9074 Xicluna. 9075 9076 - Issue #670664: Fix HTMLParser to correctly handle the content of 9077 ``<script>...</script>`` and ``<style>...</style>``. 9078 9079 - Issue #10817: Fix urlretrieve function to raise ContentTooShortError even 9080 when reporthook is None. Patch by Jyrki Pulliainen. 9081 9082 - Fix the xmlrpc.client user agent to return something similar to 9083 urllib.request user agent: "Python-xmlrpc/3.3". 9084 9085 - Issue #13293: Better error message when trying to marshal bytes using 9086 xmlrpc.client. 9087 9088 - Issue #13291: NameError in xmlrpc package. 9089 9090 - Issue #13258: Use callable() built-in in the standard library. 9091 9092 - Issue #13273: fix a bug that prevented HTMLParser to properly detect some 9093 tags when strict=False. 9094 9095 - Issue #11183: Add finer-grained exceptions to the ssl module, so that 9096 you don't have to inspect the exception's attributes in the common case. 9097 9098 - Issue #13216: Add cp65001 codec, the Windows UTF-8 (CP_UTF8). 9099 9100 - Issue #13226: Add RTLD_xxx constants to the os module. These constants can be 9101 used with sys.setdlopenflags(). 9102 9103 - Issue #10278: Add clock_getres(), clock_gettime() and CLOCK_xxx constants to 9104 the time module. time.clock_gettime(time.CLOCK_MONOTONIC) provides a 9105 monotonic clock 9106 9107 - Issue #10332: multiprocessing: fix a race condition when a Pool is closed 9108 before all tasks have completed. 9109 9110 - Issue #13255: wrong docstrings in array module. 9111 9112 - Issue #8540: Remove deprecated Context._clamp attribute in Decimal module. 9113 9114 - Issue #13235: Added DeprecationWarning to logging.warn() method and function. 9115 9116 - Issue #9168: now smtpd is able to bind privileged port. 9117 9118 - Issue #12529: fix cgi.parse_header issue on strings with double-quotes and 9119 semicolons together. Patch by Ben Darnell and Petri Lehtinen. 9120 9121 - Issue #13227: functools.lru_cache() now has an option to distinguish 9122 calls with different argument types. 9123 9124 - Issue #6090: zipfile raises a ValueError when a document with a timestamp 9125 earlier than 1980 is provided. Patch contributed by Petri Lehtinen. 9126 9127 - Issue #13150: sysconfig no longer parses the Makefile and config.h files 9128 when imported, instead doing it at build time. This makes importing 9129 sysconfig faster and reduces Python startup time by 20%. 9130 9131 - Issue #12448: smtplib now flushes stdout while running ``python -m smtplib`` 9132 in order to display the prompt correctly. 9133 9134 - Issue #12454: The mailbox module is now using ASCII, instead of the locale 9135 encoding, to read and write .mh_sequences files. 9136 9137 - Issue #13194: zlib.compressobj().copy() and zlib.decompressobj().copy() are 9138 now available on Windows. 9139 9140 - Issue #1673007: urllib.request now supports HEAD request via new method argument. 9141 Patch contributions by David Stanek, Patrick Westerhoff and Ezio Melotti. 9142 9143 - Issue #12386: packaging does not fail anymore when writing the RESOURCES 9144 file. 9145 9146 - Issue #13158: Fix decoding and encoding of GNU tar specific base-256 number 9147 fields in tarfile. 9148 9149 - Issue #13025: mimetypes is now reading MIME types using the UTF-8 encoding, 9150 instead of the locale encoding. 9151 9152 - Issue #10653: On Windows, use strftime() instead of wcsftime() because 9153 wcsftime() doesn't format time zone correctly. 9154 9155 - Issue #13150: The tokenize module doesn't compile large regular expressions 9156 at startup anymore. 9157 9158 - Issue #11171: Fix distutils.sysconfig.get_makefile_filename when Python was 9159 configured with different prefix and exec-prefix. 9160 9161 - Issue #11254: Teach distutils and packaging to compile .pyc and .pyo files in 9162 PEP 3147-compliant __pycache__ directories. 9163 9164 - Issue #7367: Fix pkgutil.walk_paths to skip directories whose 9165 contents cannot be read. 9166 9167 - Issue #3163: The struct module gets new format characters 'n' and 'N' 9168 supporting C integer types ``ssize_t`` and ``size_t``, respectively. 9169 9170 - Issue #13099: Fix sqlite3.Cursor.lastrowid under a Turkish locale. 9171 Reported and diagnosed by Thomas Kluyver. 9172 9173 - Issue #13087: BufferedReader.seek() now always raises UnsupportedOperation 9174 if the underlying raw stream is unseekable, even if the seek could be 9175 satisfied using the internal buffer. Patch by John O'Connor. 9176 9177 - Issue #7689: Allow pickling of dynamically created classes when their 9178 metaclass is registered with copyreg. Patch by Nicolas M. Thiry and Craig 9179 Citro. 9180 9181 - Issue #13034: When decoding some SSL certificates, the subjectAltName 9182 extension could be unreported. 9183 9184 - Issue #12306: Expose the runtime version of the zlib C library as a constant, 9185 ZLIB_RUNTIME_VERSION, in the zlib module. Patch by Torsten Landschoff. 9186 9187 - Issue #12959: Add collections.ChainMap to collections.__all__. 9188 9189 - Issue #8933: distutils' PKG-INFO files and packaging's METADATA files will 9190 now correctly report Metadata-Version: 1.1 instead of 1.0 if a Classifier or 9191 Download-URL field is present. 9192 9193 - Issue #12567: Add curses.unget_wch() function. Push a character so the next 9194 get_wch() will return it. 9195 9196 - Issue #9561: distutils and packaging now writes egg-info files using UTF-8, 9197 instead of the locale encoding. 9198 9199 - Issue #8286: The distutils command sdist will print a warning message instead 9200 of crashing when an invalid path is given in the manifest template. 9201 9202 - Issue #12841: tarfile unnecessarily checked the existence of numerical user 9203 and group ids on extraction. If one of them did not exist the respective id 9204 of the current user (i.e. root) was used for the file and ownership 9205 information was lost. 9206 9207 - Issue #12888: Fix a bug in HTMLParser.unescape that prevented it to escape 9208 more than 128 entities. Patch by Peter Otten. 9209 9210 - Issue #12878: Expose a __dict__ attribute on io.IOBase and its subclasses. 9211 9212 - Issue #12494: On error, call(), check_call(), check_output() and 9213 getstatusoutput() functions of the subprocess module now kill the process, 9214 read its status (to avoid zombis) and close pipes. 9215 9216 - Issue #12720: Expose low-level Linux extended file attribute functions in os. 9217 9218 - Issue #10946: The distutils commands bdist_dumb, bdist_wininst and bdist_msi 9219 now respect a --skip-build option given to bdist. The packaging commands 9220 were fixed too. 9221 9222 - Issue #12847: Fix a crash with negative PUT and LONG_BINPUT arguments in 9223 the C pickle implementation. 9224 9225 - Issue #11564: Avoid crashes when trying to pickle huge objects or containers 9226 (more than 2**31 items). Instead, in most cases, an OverflowError is raised. 9227 9228 - Issue #12287: Fix a stack corruption in ossaudiodev module when the FD is 9229 greater than FD_SETSIZE. 9230 9231 - Issue #12839: Fix crash in zlib module due to version mismatch. 9232 Fix by Richard M. Tew. 9233 9234 - Issue #9923: The mailcap module now correctly uses the platform path 9235 separator for the MAILCAP environment variable on non-POSIX platforms. 9236 9237 - Issue #12835: Follow up to #6560 that unconditionally prevents use of the 9238 unencrypted sendmsg/recvmsg APIs on SSL wrapped sockets. Patch by David 9239 Watson. 9240 9241 - Issue #12803: SSLContext.load_cert_chain() now accepts a password argument 9242 to be used if the private key is encrypted. Patch by Adam Simpkins. 9243 9244 - Issue #11657: Fix sending file descriptors over 255 over a multiprocessing 9245 Pipe. 9246 9247 - Issue #12811: tabnanny.check() now promptly closes checked files. Patch by 9248 Anthony Briggs. 9249 9250 - Issue #6560: The sendmsg/recvmsg API is now exposed by the socket module 9251 when provided by the underlying platform, supporting processing of 9252 ancillary data in pure Python code. Patch by David Watson and Heiko Wundram. 9253 9254 - Issue #12326: On Linux, sys.platform doesn't contain the major version 9255 anymore. It is now always 'linux', instead of 'linux2' or 'linux3' depending 9256 on the Linux version used to build Python. 9257 9258 - Issue #12213: Fix a buffering bug with interleaved reads and writes that 9259 could appear on BufferedRandom streams. 9260 9261 - Issue #12778: Reduce memory consumption when JSON-encoding a large 9262 container of many small objects. 9263 9264 - Issue #12650: Fix a race condition where a subprocess.Popen could leak 9265 resources (FD/zombie) when killed at the wrong time. 9266 9267 - Issue #12744: Fix inefficient representation of integers between 2**31 and 9268 2**63 on systems with a 64-bit C "long". 9269 9270 - Issue #12646: Add an 'eof' attribute to zlib.Decompress, to make it easier to 9271 detect truncated input streams. 9272 9273 - Issue #11513: Fix exception handling ``tarfile.TarFile.gzopen()`` when 9274 the file cannot be opened. 9275 9276 - Issue #12687: Fix a possible buffering bug when unpickling text mode 9277 (protocol 0, mostly) pickles. 9278 9279 - Issue #10087: Fix the html output format of the calendar module. 9280 9281 - Issue #13121: add support for inplace math operators to collections.Counter. 9282 9283 - Add support for unary plus and unary minus to collections.Counter. 9284 9285 - Issue #12683: urlparse updated to include svn as schemes that uses relative 9286 paths. (svn from 1.5 onwards support relative path). 9287 9288 - Issue #12655: Expose functions from sched.h in the os module: sched_yield(), 9289 sched_setscheduler(), sched_getscheduler(), sched_setparam(), 9290 sched_get_min_priority(), sched_get_max_priority(), sched_rr_get_interval(), 9291 sched_getaffinity(), sched_setaffinity(). 9292 9293 - Add ThreadError to threading.__all__. 9294 9295 - Issues #11104, #8688: Fix the behavior of distutils' sdist command with 9296 manually-maintained MANIFEST files. 9297 9298 - Issue #11281: smtplib.STMP gets source_address parameter, which adds the 9299 ability to bind to specific source address on a machine with multiple 9300 interfaces. Patch by Paulo Scardine. 9301 9302 - Issue #12464: tempfile.TemporaryDirectory.cleanup() should not follow 9303 symlinks: fix it. Patch by Petri Lehtinen. 9304 9305 - Issue #8887: "pydoc somebuiltin.somemethod" (or help('somebuiltin.somemethod') 9306 in Python code) now finds the doc of the method. 9307 9308 - Issue #10968: Remove indirection in threading. The public names (Event, 9309 Condition, etc.) used to be factory functions returning instances of hidden 9310 classes (_Event, _Condition, etc.), because (if Guido recalls correctly) this 9311 code pre-dates the ability to subclass extension types. It is now possible 9312 to inherit from these classes, without having to import the private 9313 underscored names like multiprocessing did. 9314 9315 - Issue #9723: Add shlex.quote functions, to escape filenames and command 9316 lines. 9317 9318 - Issue #12603: Fix pydoc.synopsis() on files with non-negative st_mtime. 9319 9320 - Issue #12514: Use try/finally to assure the timeit module restores garbage 9321 collections when it is done. 9322 9323 - Issue #12607: In subprocess, fix issue where if stdin, stdout or stderr is 9324 given as a low fd, it gets overwritten. 9325 9326 - Issue #12576: Fix urlopen behavior on sites which do not send (or obfuscates) 9327 ``Connection: close`` header. 9328 9329 - Issue #12560: Build libpython.so on OpenBSD. Patch by Stefan Sperling. 9330 9331 - Issue #1813: Fix codec lookup under Turkish locales. 9332 9333 - Issue #12591: Improve support of "universal newlines" in the subprocess 9334 module: the piped streams can now be properly read from or written to. 9335 9336 - Issue #12591: Allow io.TextIOWrapper to work with raw IO objects (without 9337 a read1() method), and add a *write_through* parameter to mandate 9338 unbuffered writes. 9339 9340 - Issue #10883: Fix socket leaks in urllib.request when using FTP. 9341 9342 - Issue #12592: Make Python build on OpenBSD 5 (and future major releases). 9343 9344 - Issue #12372: POSIX semaphores are broken on AIX: don't use them. 9345 9346 - Issue #12551: Provide a get_channel_binding() method on SSL sockets so as 9347 to get channel binding data for the current SSL session (only the 9348 "tls-unique" channel binding is implemented). This allows the implementation 9349 of certain authentication mechanisms such as SCRAM-SHA-1-PLUS. Patch by 9350 Jacek Konieczny. 9351 9352 - Issue #665194: email.utils now has format_datetime and parsedate_to_datetime 9353 functions, allowing for round tripping of RFC2822 format dates. 9354 9355 - Issue #12571: Add a plat-linux3 directory mirroring the plat-linux2 9356 directory, so that "import DLFCN" and other similar imports work on 9357 Linux 3.0. 9358 9359 - Issue #7484: smtplib no longer puts <> around addresses in VRFY and EXPN 9360 commands; they aren't required and in fact postfix doesn't support that form. 9361 9362 - Issue #12273: Remove ast.__version__. AST changes can be accounted for by 9363 checking sys.version_info or sys._mercurial. 9364 9365 - Silence spurious "broken pipe" tracebacks when shutting down a 9366 ProcessPoolExecutor. 9367 9368 - Fix potential resource leaks in concurrent.futures.ProcessPoolExecutor 9369 by joining all queues and processes when shutdown() is called. 9370 9371 - Issue #11603: Fix a crash when __str__ is rebound as __repr__. Patch by 9372 Andreas Sthrk. 9373 9374 - Issue #11321: Fix a crash with multiple imports of the _pickle module when 9375 embedding Python. Patch by Andreas Sthrk. 9376 9377 - Issue #6755: Add get_wch() method to curses.window class. Patch by Iigo 9378 Serna. 9379 9380 - Add cgi.closelog() function to close the log file. 9381 9382 - Issue #12502: asyncore: fix polling loop with AF_UNIX sockets. 9383 9384 - Issue #4376: ctypes now supports nested structures in an endian different than 9385 the parent structure. Patch by Vlad Riscutia. 9386 9387 - Raise ValueError when attempting to set the _CHUNK_SIZE attribute of a 9388 TextIOWrapper to a huge value, not TypeError. 9389 9390 - Issue #12504: Close file handles in a timely manner in packaging.database. 9391 This fixes a bug with the remove (uninstall) feature on Windows. 9392 9393 - Issues #12169 and #10510: Factor out code used by various packaging commands 9394 to make HTTP POST requests, and make sure it uses CRLF. 9395 9396 - Issue #12016: Multibyte CJK decoders now resynchronize faster. They only 9397 ignore the first byte of an invalid byte sequence. For example, 9398 b'\xff\n'.decode('gb2312', 'replace') gives '\ufffd\n' instead of '\ufffd'. 9399 9400 - Issue #12459: time.sleep() now raises a ValueError if the sleep length is 9401 negative, instead of an infinite sleep on Windows or raising an IOError on 9402 Linux for example, to have the same behaviour on all platforms. 9403 9404 - Issue #12451: pydoc: html_getfile() now uses tokenize.open() to support 9405 Python scripts using an encoding different than UTF-8 (read the coding cookie 9406 of the script). 9407 9408 - Issue #12493: subprocess: Popen.communicate() now also handles EINTR errors 9409 if the process has only one pipe. 9410 9411 - Issue #12467: warnings: fix a race condition if a warning is emitted at 9412 shutdown, if globals()['__file__'] is None. 9413 9414 - Issue #12451: pydoc: importfile() now opens the Python script in binary mode, 9415 instead of text mode using the locale encoding, to avoid encoding issues. 9416 9417 - Issue #12451: runpy: run_path() now opens the Python script in binary mode, 9418 instead of text mode using the locale encoding, to support other encodings 9419 than UTF-8 (scripts using the coding cookie). 9420 9421 - Issue #12451: xml.dom.pulldom: parse() now opens files in binary mode instead 9422 of the text mode (using the locale encoding) to avoid encoding issues. 9423 9424 - Issue #12147: Adjust the new-in-3.2 smtplib.send_message method for better 9425 conformance to the RFCs: correctly handle Sender and Resent- headers. 9426 9427 - Issue #12352: Fix a deadlock in multiprocessing.Heap when a block is freed by 9428 the garbage collector while the Heap lock is held. 9429 9430 - Issue #12462: time.sleep() now immediately calls the (Python) signal handler 9431 if it is interrupted by a signal, instead of having to wait until the next 9432 instruction. 9433 9434 - Issue #12442: new shutil.disk_usage function, providing total, used and free 9435 disk space statistics. 9436 9437 - Issue #12451: The XInclude default loader of xml.etree now decodes files from 9438 UTF-8 instead of the locale encoding if the encoding is not specified. It now 9439 also opens XML files for the parser in binary mode instead of the text mode 9440 to avoid encoding issues. 9441 9442 - Issue #12451: doctest.debug_script() doesn't create a temporary file 9443 anymore to avoid encoding issues. 9444 9445 - Issue #12451: pydoc.synopsis() now reads the encoding cookie if available, 9446 to read the Python script from the right encoding. 9447 9448 - Issue #12451: distutils now opens the setup script in binary mode to read the 9449 encoding cookie, instead of opening it in UTF-8. 9450 9451 - Issue #9516: On Mac OS X, change Distutils to no longer globally attempt to 9452 check or set the MACOSX_DEPLOYMENT_TARGET environment variable for the 9453 interpreter process. This could cause failures in non-Distutils subprocesses 9454 and was unreliable since tests or user programs could modify the interpreter 9455 environment after Distutils set it. Instead, have Distutils set the 9456 deployment target only in the environment of each build subprocess. It is 9457 still possible to globally override the default by setting 9458 MACOSX_DEPLOYMENT_TARGET before launching the interpreter; its value must be 9459 greater or equal to the default value, the value with which the interpreter 9460 was built. Also, implement the same handling in packaging. 9461 9462 - Issue #12422: In the copy module, don't store objects that are their own copy 9463 in the memo dict. 9464 9465 - Issue #12303: Add sigwaitinfo() and sigtimedwait() to the signal module. 9466 9467 - Issue #12404: Remove C89 incompatible code from mmap module. Patch by Akira 9468 Kitada. 9469 9470 - Issue #1874: email now detects and reports as a defect the presence of 9471 any CTE other than 7bit, 8bit, or binary on a multipart. 9472 9473 - Issue #12383: Fix subprocess module with env={}: don't copy the environment 9474 variables, start with an empty environment. 9475 9476 - Issue #11637: Fix support for importing packaging setup hooks from the 9477 project directory. 9478 9479 - Issue #6771: Moved the curses.wrapper function from the single-function 9480 wrapper module into __init__, eliminating the module. Since __init__ was 9481 already importing the function to curses.wrapper, there is no API change. 9482 9483 - Issue #11584: email.header.decode_header no longer fails if the header 9484 passed to it is a Header object, and Header/make_header no longer fail 9485 if given binary unknown-8bit input. 9486 9487 - Issue #11700: mailbox proxy object close methods can now be called multiple 9488 times without error. 9489 9490 - Issue #11767: Correct file descriptor leak in mailbox's __getitem__ method. 9491 9492 - Issue #12133: AbstractHTTPHandler.do_open() of urllib.request closes the HTTP 9493 connection if its getresponse() method fails with a socket error. Patch 9494 written by Ezio Melotti. 9495 9496 - Issue #12240: Allow multiple setup hooks in packaging's setup.cfg files. 9497 Original patch by Erik Bray. 9498 9499 - Issue #9284: Allow inspect.findsource() to find the source of doctest 9500 functions. 9501 9502 - Issue #11595: Fix assorted bugs in packaging.util.cfg_to_args, a 9503 compatibility helper for the distutils-packaging transition. Original patch 9504 by Erik Bray. 9505 9506 - Issue #12287: In ossaudiodev, check that the device isn't closed in several 9507 methods. 9508 9509 - Issue #12009: Fixed regression in netrc file comment handling. 9510 9511 - Issue #12246: Warn and fail when trying to install a third-party project from 9512 an uninstalled Python (built in a source checkout). Original patch by 9513 Tshepang Lekhonkhobe. 9514 9515 - Issue #10694: zipfile now ignores garbage at the end of a zipfile. 9516 9517 - Issue #12283: Fixed regression in smtplib quoting of leading dots in DATA. 9518 9519 - Issue #10424: Argparse now includes the names of the missing required 9520 arguments in the missing arguments error message. 9521 9522 - Issue #12168: SysLogHandler now allows NUL termination to be controlled using 9523 a new 'append_nul' attribute on the handler. 9524 9525 - Issue #11583: Speed up os.path.isdir on Windows by using GetFileAttributes 9526 instead of os.stat. 9527 9528 - Issue #12021: Make mmap's read() method argument optional. Patch by Petri 9529 Lehtinen. 9530 9531 - Issue #9205: concurrent.futures.ProcessPoolExecutor now detects killed 9532 children and raises BrokenProcessPool in such a situation. Previously it 9533 would reliably freeze/deadlock. 9534 9535 - Issue #12040: Expose a new attribute ``sentinel`` on instances of 9536 ``multiprocessing.Process``. Also, fix Process.join() to not use polling 9537 anymore, when given a timeout. 9538 9539 - Issue #11893: Remove obsolete internal wrapper class ``SSLFakeFile`` in the 9540 smtplib module. Patch by Catalin Iacob. 9541 9542 - Issue #12080: Fix a Decimal.power() case that took an unreasonably long time 9543 to compute. 9544 9545 - Issue #12221: Remove __version__ attributes from pyexpat, pickle, tarfile, 9546 pydoc, tkinter, and xml.parsers.expat. This were useless version constants 9547 left over from the Mercurial transition 9548 9549 - Named tuples now work correctly with vars(). 9550 9551 - Issue #12085: Fix an attribute error in subprocess.Popen destructor if the 9552 constructor has failed, e.g. because of an undeclared keyword argument. Patch 9553 written by Oleg Oshmyan. 9554 9555 - Issue #12028: Make threading._get_ident() public, rename it to 9556 threading.get_ident() and document it. This function was already used using 9557 _thread.get_ident(). 9558 9559 - Issue #12171: IncrementalEncoder.reset() of CJK codecs (multibytecodec) calls 9560 encreset() instead of decreset(). 9561 9562 - Issue #12218: Removed wsgiref.egg-info. 9563 9564 - Issue #12196: Add pipe2() to the os module. 9565 9566 - Issue #985064: Make plistlib more resilient to faulty input plists. 9567 Patch by Mher Movsisyan. 9568 9569 - Issue #1625: BZ2File and bz2.decompress() now support multi-stream files. 9570 Initial patch by Nir Aides. 9571 9572 - Issue #12175: BufferedReader.read(-1) now calls raw.readall() if available. 9573 9574 - Issue #12175: FileIO.readall() now only reads the file position and size 9575 once. 9576 9577 - Issue #12175: RawIOBase.readall() now returns None if read() returns None. 9578 9579 - Issue #12175: FileIO.readall() now raises a ValueError instead of an IOError 9580 if the file is closed. 9581 9582 - Issue #11109: New service_action method for BaseServer, used by ForkingMixin 9583 class for cleanup. Initial Patch by Justin Warkentin. 9584 9585 - Issue #12045: Avoid duplicate execution of command in 9586 ctypes.util._get_soname(). Patch by Sijin Joseph. 9587 9588 - Issue #10818: Remove the Tk GUI and the serve() function of the pydoc module, 9589 pydoc -g has been deprecated in Python 3.2 and it has a new enhanced web 9590 server. 9591 9592 - Issue #1441530: In imaplib, read the data in one chunk to speed up large 9593 reads and simplify code. 9594 9595 - Issue #12070: Fix the Makefile parser of the sysconfig module to handle 9596 correctly references to "bogus variable" (e.g. "prefix=$/opt/python"). 9597 9598 - Issue #12100: Don't reset incremental encoders of CJK codecs at each call to 9599 their encode() method anymore, but continue to call the reset() method if the 9600 final argument is True. 9601 9602 - Issue #12049: Add RAND_bytes() and RAND_pseudo_bytes() functions to the ssl 9603 module. 9604 9605 - Issue #6501: os.device_encoding() returns None on Windows if the application 9606 has no console. 9607 9608 - Issue #12105: Add O_CLOEXEC to the os module. 9609 9610 - Issue #12079: Decimal('Infinity').fma(Decimal('0'), (3.91224318126786e+19+0j)) 9611 now raises TypeError (reflecting the invalid type of the 3rd argument) rather 9612 than Decimal.InvalidOperation. 9613 9614 - Issue #12124: zipimport doesn't keep a reference to zlib.decompress() anymore 9615 to be able to unload the module. 9616 9617 - Add the packaging module, an improved fork of distutils (also known as 9618 distutils2). 9619 9620 - Issue #12065: connect_ex() on an SSL socket now returns the original errno 9621 when the socket's timeout expires (it used to return None). 9622 9623 - Issue #8809: The SMTP_SSL constructor and SMTP.starttls() now support 9624 passing a ``context`` argument pointing to an ssl.SSLContext instance. 9625 Patch by Kasun Herath. 9626 9627 - Issue #9516: Issue #9516: avoid errors in sysconfig when MACOSX_DEPLOYMENT_TARGET 9628 is set in shell. 9629 9630 - Issue #8650: Make zlib module 64-bit clean. compress(), decompress() and 9631 their incremental counterparts now raise OverflowError if given an input 9632 larger than 4GB, instead of silently truncating the input and returning 9633 an incorrect result. 9634 9635 - Issue #12050: zlib.decompressobj().decompress() now clears the unconsumed_tail 9636 attribute when called without a max_length argument. 9637 9638 - Issue #12062: Fix a flushing bug when doing a certain type of I/O sequence 9639 on a file opened in read+write mode (namely: reading, seeking a bit forward, 9640 writing, then seeking before the previous write but still within buffered 9641 data, and writing again). 9642 9643 - Issue #9971: Write an optimized implementation of BufferedReader.readinto(). 9644 Patch by John O'Connor. 9645 9646 - Issue #11799: urllib.request Authentication Handlers will raise a ValueError 9647 when presented with an unsupported Authentication Scheme. Patch contributed 9648 by Yuval Greenfield. 9649 9650 - Issue #10419, #6011: build_scripts command of distutils handles correctly 9651 non-ASCII path (path to the Python executable). Open and write the script in 9652 binary mode, but ensure that the shebang is decodable from UTF-8 and from the 9653 encoding of the script. 9654 9655 - Issue #8498: In socket.accept(), allow specifying 0 as a backlog value in 9656 order to accept exactly one connection. Patch by Daniel Evers. 9657 9658 - Issue #12011: signal.signal() and signal.siginterrupt() raise an OSError, 9659 instead of a RuntimeError: OSError has an errno attribute. 9660 9661 - Issue #3709: add a flush_headers method to BaseHTTPRequestHandler, which 9662 manages the sending of headers to output stream and flushing the internal 9663 headers buffer. Patch contribution by Andrew Schaaf 9664 9665 - Issue #11743: Rewrite multiprocessing connection classes in pure Python. 9666 9667 - Issue #11164: Stop trying to use _xmlplus in the xml module. 9668 9669 - Issue #11888: Add log2 function to math module. Patch written by Mark 9670 Dickinson. 9671 9672 - Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional. 9673 9674 - Issue #8407: The signal handler writes the signal number as a single byte 9675 instead of a nul byte into the wakeup file descriptor. So it is possible to 9676 wait more than one signal and know which signals were raised. 9677 9678 - Issue #8407: Add pthread_kill(), sigpending() and sigwait() functions to the 9679 signal module. 9680 9681 - Issue #11927: SMTP_SSL now uses port 465 by default as documented. Patch 9682 by Kasun Herath. 9683 9684 - Issue #12002: ftplib's abort() method raises TypeError. 9685 9686 - Issue #11916: Add a number of MacOSX specific definitions to the errno module. 9687 Patch by Pierre Carrier. 9688 9689 - Issue #11999: fixed sporadic sync failure mailbox.Maildir due to its trying to 9690 detect mtime changes by comparing to the system clock instead of to the 9691 previous value of the mtime. 9692 9693 - Issue #11072: added MLSD command (RFC-3659) support to ftplib. 9694 9695 - Issue #8808: The IMAP4_SSL constructor now allows passing an SSLContext 9696 parameter to control parameters of the secure channel. Patch by Sijin 9697 Joseph. 9698 9699 - ntpath.samefile failed to notice that "a.txt" and "A.TXT" refer to the same 9700 file on Windows XP. As noticed in issue #10684. 9701 9702 - Issue #12000: When a SSL certificate has a subjectAltName without any 9703 dNSName entry, ssl.match_hostname() should use the subject's commonName. 9704 Patch by Nicolas Bareil. 9705 9706 - Issue #10775: assertRaises, assertRaisesRegex, assertWarns, and 9707 assertWarnsRegex now accept a keyword argument 'msg' when used as context 9708 managers. Initial patch by Winston Ewert. 9709 9710 - Issue #10684: shutil.move used to delete a folder on case insensitive 9711 filesystems when the source and destination name where the same except 9712 for the case. 9713 9714 - Issue #11647: objects created using contextlib.contextmanager now support 9715 more than one call to the function when used as a decorator. Initial patch 9716 by Ysj Ray. 9717 9718 - Issue #11930: Removed deprecated time.accept2dyear variable. 9719 Removed year >= 1000 restriction from datetime.strftime. 9720 9721 - logging: don't define QueueListener if Python has no thread support. 9722 9723 - functools.cmp_to_key() now works with collections.Hashable(). 9724 9725 - Issue #11277: mmap.mmap() calls fcntl(fd, F_FULLFSYNC) on Mac OS X to get 9726 around a mmap bug with sparse files. Patch written by Steffen Daode Nurpmeso. 9727 9728 - Issue #8407: Add signal.pthread_sigmask() function to fetch and/or change the 9729 signal mask of the calling thread. 9730 9731 - Issue #11858: configparser.ExtendedInterpolation expected lower-case section 9732 names. 9733 9734 - Issue #11324: ConfigParser(interpolation=None) now works correctly. 9735 9736 - Issue #11811: ssl.get_server_certificate() is now IPv6-compatible. Patch 9737 by Charles-Franois Natali. 9738 9739 - Issue #11763: don't use difflib in TestCase.assertMultiLineEqual if the 9740 strings are too long. 9741 9742 - Issue #11236: getpass.getpass responds to ctrl-c or ctrl-z on terminal. 9743 9744 - Issue #11856: Speed up parsing of JSON numbers. 9745 9746 - Issue #11005: threading.RLock()._release_save() raises a RuntimeError if the 9747 lock was not acquired. 9748 9749 - Issue #11258: Speed up ctypes.util.find_library() under Linux by a factor 9750 of 5 to 10. Initial patch by Jonas H. 9751 9752 - Issue #11382: Trivial system calls, such as dup() or pipe(), needn't 9753 release the GIL. Patch by Charles-Franois Natali. 9754 9755 - Issue #11223: Add threading._info() function providing information about 9756 the thread implementation. 9757 9758 - Issue #11731: simplify/enhance email parser/generator API by introducing 9759 policy objects. 9760 9761 - Issue #11768: The signal handler of the signal module only calls 9762 Py_AddPendingCall() for the first signal to fix a deadlock on reentrant or 9763 parallel calls. PyErr_SetInterrupt() writes also into the wake up file. 9764 9765 - Issue #11492: fix several issues with header folding in the email package. 9766 9767 - Issue #11852: Add missing imports and update tests. 9768 9769 - Issue #11875: collections.OrderedDict's __reduce__ was temporarily 9770 mutating the object instead of just working on a copy. 9771 9772 - Issue #11467: Fix urlparse behavior when handling urls which contains scheme 9773 specific part only digits. Patch by Santoso Wijaya. 9774 9775 - collections.Counter().copy() now works correctly for subclasses. 9776 9777 - Issue #11474: Fix the bug with url2pathname() handling of '/C|/' on Windows. 9778 Patch by Santoso Wijaya. 9779 9780 - Issue #11684: complete email.parser bytes API by adding BytesHeaderParser. 9781 9782 - The bz2 module now handles 4GiB+ input buffers correctly. 9783 9784 - Issue #9233: Fix json.loads('{}') to return a dict (instead of a list), when 9785 _json is not available. 9786 9787 - Issue #11830: Remove unnecessary introspection code in the decimal module. 9788 9789 - Issue #11703: urllib2.geturl() does not return correct url when the original 9790 url contains #fragment. 9791 9792 - Issue #10019: Fixed regression in json module where an indent of 0 stopped 9793 adding newlines and acted instead like 'None'. 9794 9795 - Issue #11186: pydoc ignores a module if its name contains a surrogate 9796 character in the index of modules. 9797 9798 - Issue #11815: Use a light-weight SimpleQueue for the result queue in 9799 concurrent.futures.ProcessPoolExecutor. 9800 9801 - Issue #5162: Treat services like frozen executables to allow child spawning 9802 from multiprocessing.forking on Windows. 9803 9804 - logging.basicConfig now supports an optional 'handlers' argument taking an 9805 iterable of handlers to be added to the root logger. Additional parameter 9806 checks were also added to basicConfig. 9807 9808 - Issue #11814: Fix likely typo in multiprocessing.Pool._terminate(). 9809 9810 - Issue #11747: Fix range formatting in difflib.context_diff() and 9811 difflib.unified_diff(). 9812 9813 - Issue #8428: Fix a race condition in multiprocessing.Pool when terminating 9814 worker processes: new processes would be spawned while the pool is being 9815 shut down. Patch by Charles-Franois Natali. 9816 9817 - Issue #2650: re.escape() no longer escapes the '_'. 9818 9819 - Issue #11757: select.select() now raises ValueError when a negative timeout 9820 is passed (previously, a select.error with EINVAL would be raised). Patch 9821 by Charles-Franois Natali. 9822 9823 - Issue #7311: fix html.parser to accept non-ASCII attribute values. 9824 9825 - Issue #11605: email.parser.BytesFeedParser was incorrectly converting 9826 multipart subparts with an 8-bit CTE into unicode instead of preserving the 9827 bytes. 9828 9829 - Issue #1690608: email.util.formataddr is now RFC 2047 aware: it now has a 9830 charset parameter that defaults to utf-8 and is used as the charset for RFC 9831 2047 encoding when the realname contains non-ASCII characters. 9832 9833 - Issue #10963: Ensure that subprocess.communicate() never raises EPIPE. 9834 9835 - Issue #10791: Implement missing method GzipFile.read1(), allowing GzipFile 9836 to be wrapped in a TextIOWrapper. Patch by Nadeem Vawda. 9837 9838 - Issue #11707: Added a fast C version of functools.cmp_to_key(). 9839 Patch by Filip Gruszczyski. 9840 9841 - Issue #11688: Add sqlite3.Connection.set_trace_callback(). Patch by 9842 Torsten Landschoff. 9843 9844 - Issue #11746: Fix SSLContext.load_cert_chain() to accept elliptic curve 9845 private keys. 9846 9847 - Issue #5863: Rewrite BZ2File in pure Python, and allow it to accept 9848 file-like objects using a new ``fileobj`` constructor argument. Patch by 9849 Nadeem Vawda. 9850 9851 - unittest.TestCase.assertSameElements has been removed. 9852 9853 - sys.getfilesystemencoding() raises a RuntimeError if initfsencoding() was not 9854 called yet: detect bootstrap (startup) issues earlier. 9855 9856 - Issue #11393: Add the new faulthandler module. 9857 9858 - Issue #11618: Fix the timeout logic in threading.Lock.acquire() under Windows. 9859 9860 - Removed the 'strict' argument to email.parser.Parser, which has been 9861 deprecated since Python 2.4. 9862 9863 - Issue #11256: Fix inspect.getcallargs on functions that take only keyword 9864 arguments. 9865 9866 - Issue #11696: Fix ID generation in msilib. 9867 9868 - itertools.accumulate now supports an optional *func* argument for 9869 a user-supplied binary function. 9870 9871 - Issue #11692: Remove unnecessary demo functions in subprocess module. 9872 9873 - Issue #9696: Fix exception incorrectly raised by xdrlib.Packer.pack_int when 9874 trying to pack a negative (in-range) integer. 9875 9876 - Issue #11675: multiprocessing.[Raw]Array objects created from an integer size 9877 are now zeroed on creation. This matches the behaviour specified by the 9878 documentation. 9879 9880 - Issue #7639: Fix short file name generation in bdist_msi 9881 9882 - Issue #11635: Don't use polling in worker threads and processes launched by 9883 concurrent.futures. 9884 9885 - Issue #5845: Automatically read readline configuration to enable completion 9886 in interactive mode. 9887 9888 - Issue #6811: Allow importlib to change a code object's co_filename attribute 9889 to match the path to where the source code currently is, not where the code 9890 object originally came from. 9891 9892 - Issue #8754: Have importlib use the repr of a module name in error messages. 9893 9894 - Issue #11591: Prevent "import site" from modifying sys.path when python 9895 was started with -S. 9896 9897 - collections.namedtuple() now adds a _source attribute to the generated 9898 class. This make the source more accessible than the outdated 9899 "verbose" option which prints to stdout but doesn't make the source 9900 string available. 9901 9902 - Issue #11371: Mark getopt error messages as localizable. Patch by Filip 9903 Gruszczyski. 9904 9905 - Issue #11333: Add __slots__ to collections ABCs. 9906 9907 - Issue #11628: cmp_to_key generated class should use __slots__. 9908 9909 - Issue #11666: let help() display named tuple attributes and methods 9910 that start with a leading underscore. 9911 9912 - Issue #11662: Make urllib and urllib2 ignore redirections if the 9913 scheme is not HTTP, HTTPS or FTP (CVE-2011-1521). 9914 9915 - Issue #5537: Fix time2isoz() and time2netscape() functions of 9916 httplib.cookiejar for expiration year greater than 2038 on 32-bit systems. 9917 9918 - Issue #4391: Use proper gettext plural forms in optparse. 9919 9920 - Issue #11127: Raise a TypeError when trying to pickle a socket object. 9921 9922 - Issue #11563: ``Connection: close`` header is sent by requests using URLOpener 9923 class which helps in closing of sockets after connection is over. Patch 9924 contributions by Jeff McNeil and Nadeem Vawda. 9925 9926 - Issue #11459: A ``bufsize`` value of 0 in subprocess.Popen() really creates 9927 unbuffered pipes, such that select() works properly on them. 9928 9929 - Issue #5421: Fix misleading error message when one of socket.sendto()'s 9930 arguments has the wrong type. Patch by Nikita Vetoshkin. 9931 9932 - Issue #10812: Add some extra posix functions to the os module. 9933 9934 - Issue #10979: unittest stdout buffering now works with class and module 9935 setup and teardown. 9936 9937 - Issue #11243: fix the parameter querying methods of Message to work if 9938 the headers contain un-encoded non-ASCII data. 9939 9940 - Issue #11401: fix handling of headers with no value; this fixes a regression 9941 relative to Python2 and the result is now the same as it was in Python2. 9942 9943 - Issue #9298: base64 bodies weren't being folded to line lengths less than 78, 9944 which was a regression relative to Python2. Unlike Python2, the last line 9945 of the folded body now ends with a carriage return. 9946 9947 - Issue #11560: shutil.unpack_archive now correctly handles the format 9948 parameter. Patch by Evan Dandrea. 9949 9950 - Issue #5870: Add `subprocess.DEVNULL` constant. 9951 9952 - Issue #11133: fix two cases where inspect.getattr_static can trigger code 9953 execution. Patch by Andreas Sthrk. 9954 9955 - Issue #11569: use absolute path to the sysctl command in multiprocessing to 9956 ensure that it will be found regardless of the shell PATH. This ensures 9957 that multiprocessing.cpu_count works on default installs of MacOSX. 9958 9959 - Issue #11501: distutils.archive_utils.make_zipfile no longer fails if zlib is 9960 not installed. Instead, the zipfile.ZIP_STORED compression is used to create 9961 the ZipFile. Patch by Natalia B. Bidart. 9962 9963 - Issue #11289: `smtp.SMTP` class is now a context manager so it can be used 9964 in a `with` statement. Contributed by Giampaolo Rodola. 9965 9966 - Issue #11554: Fixed support for Japanese codecs; previously the body output 9967 encoding was not done if euc-jp or shift-jis was specified as the charset. 9968 9969 - Issue #11407: `TestCase.run` returns the result object used or created. 9970 Contributed by Janathan Hartley. 9971 9972 - Issue #11500: Fixed a bug in the OS X proxy bypass code for fully qualified 9973 IP addresses in the proxy exception list. 9974 9975 - Issue #11491: dbm.error is no longer raised when dbm.open is called with 9976 the "n" as the flag argument and the file exists. The behavior matches 9977 the documentation and general logic. 9978 9979 - Issue #1162477: Postel Principle adjustment to email date parsing: handle the 9980 fact that some non-compliant MUAs use '.' instead of ':' in time specs. 9981 9982 - Issue #11131: Fix sign of zero in decimal.Decimal plus and minus 9983 operations when the rounding mode is ROUND_FLOOR. 9984 9985 - Issue #9935: Speed up pickling of instances of user-defined classes. 9986 9987 - Issue #5622: Fix curses.wrapper to raise correct exception if curses 9988 initialization fails. 9989 9990 - Issue #11408: In threading.Lock.acquire(), only call gettimeofday() when 9991 really necessary. Patch by Charles-Franois Natali. 9992 9993 - Issue #11391: Writing to a mmap object created with 9994 ``mmap.PROT_READ|mmap.PROT_EXEC`` would segfault instead of raising a 9995 TypeError. Patch by Charles-Franois Natali. 9996 9997 - Issue #9795: add context management protocol support for nntplib.NNTP class. 9998 9999 - Issue #11306: mailbox in certain cases adapts to an inability to open 10000 certain files in read-write mode. Previously it detected this by 10001 checking for EACCES, now it also checks for EROFS. 10002 10003 - Issue #11265: asyncore now correctly handles EPIPE, EBADF and EAGAIN errors 10004 on accept(), send() and recv(). 10005 10006 - Issue #11377: Deprecate platform.popen() and reimplement it with os.popen(). 10007 10008 - Issue #8513: On UNIX, subprocess supports bytes command string. 10009 10010 - Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall. 10011 10012 - Issue #11140: Lock.release() now raises a RuntimeError when attempting 10013 to release an unacquired lock, as claimed in the threading documentation. 10014 The _thread.error exception is now an alias of RuntimeError. Patch by 10015 Filip Gruszczyski. Patch for _dummy_thread by Aymeric Augustin. 10016 10017 - Issue #8594: ftplib now provides a source_address parameter to specify which 10018 (address, port) to bind to before connecting. 10019 10020 - Issue #11326: Add the missing connect_ex() implementation for SSL sockets, 10021 and make it work for non-blocking connects. 10022 10023 - Issue #11297: Add collections.ChainMap(). 10024 10025 - Issue #10755: Add the posix.flistdir() function. Patch by Ross Lagerwall. 10026 10027 - Issue #4761: Add the ``*at()`` family of functions (openat(), etc.) to the 10028 posix module. Patch by Ross Lagerwall. 10029 10030 - Issue #7322: Trying to read from a socket's file-like object after a timeout 10031 occurred now raises an error instead of silently losing data. 10032 10033 - Issue #11291: poplib.POP no longer suppresses errors on quit(). 10034 10035 - Issue #11177: asyncore's create_socket() arguments can now be omitted. 10036 10037 - Issue #6064: Add a ``daemon`` keyword argument to the threading.Thread 10038 and multiprocessing.Process constructors in order to override the 10039 default behaviour of inheriting the daemonic property from the current 10040 thread/process. 10041 10042 - Issue #10956: Buffered I/O classes retry reading or writing after a signal 10043 has arrived and the handler returned successfully. 10044 10045 - Issue #10784: New os.getpriority() and os.setpriority() functions. 10046 10047 - Issue #11114: Fix catastrophic performance of tell() on text files (up 10048 to 1000x faster in some cases). It is still one to two order of magnitudes 10049 slower than binary tell(). 10050 10051 - Issue #10882: Add os.sendfile function. 10052 10053 - Issue #10868: Allow usage of the register method of an ABC as a class 10054 decorator. 10055 10056 - Issue #11224: Fixed a regression in tarfile that affected the file-like 10057 objects returned by TarFile.extractfile() regarding performance, memory 10058 consumption and failures with the stream interface. 10059 10060 - Issue #10924: Adding salt and Modular Crypt Format to crypt library. 10061 Moved old C wrapper to _crypt, and added a Python wrapper with 10062 enhanced salt generation and simpler API for password generation. 10063 10064 - Issue #11074: Make 'tokenize' so it can be reloaded. 10065 10066 - Issue #11085: Moved collections abstract base classes into a separate 10067 module called collections.abc, following the pattern used by importlib.abc. 10068 For backwards compatibility, the names are imported into the collections 10069 module. 10070 10071 - Issue #4681: Allow mmap() to work on file sizes and offsets larger than 10072 4GB, even on 32-bit builds. Initial patch by Ross Lagerwall, adapted for 10073 32-bit Windows. 10074 10075 - Issue #11169: compileall module uses repr() to format filenames and paths to 10076 escape surrogate characters and show spaces. 10077 10078 - Issue #11089: Fix performance issue limiting the use of ConfigParser() 10079 with large config files. 10080 10081 - Issue #10276: Fix the results of zlib.crc32() and zlib.adler32() on buffers 10082 larger than 4GB. Patch by Nadeem Vawda. 10083 10084 - Issue #11388: Added a clear() method to MutableSequence 10085 10086 - Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names 10087 for the names of optional and positional arguments in help messages. 10088 10089 - Issue #9348: Raise an early error if argparse nargs and metavar don't match. 10090 10091 - Issue #9026: Fix order of argparse sub-commands in help messages. 10092 10093 - Issue #9347: Fix formatting for tuples in argparse type= error messages. 10094 10095 - Issue #12191: Added shutil.chown() to change user and/or group owner of a 10096 given path also specifying their names. 10097 10098 - Issue #13988: The _elementtree accelerator is used whenever available. 10099 Now xml.etree.cElementTree becomes a deprecated alias to ElementTree. 10100 10101 Build 10102 ----- 10103 10104 - Issue #6807: Run msisupport.mak earlier. 10105 10106 - Issue #10580: Minor grammar change in Windows installer. 10107 10108 - Issue #13326: Clean __pycache__ directories correctly on OpenBSD. 10109 10110 - PEP 393: the configure option --with-wide-unicode is removed. 10111 10112 - Issue #12852: Set _XOPEN_SOURCE to 700, instead of 600, to get POSIX 2008 10113 functions on OpenBSD (e.g. fdopendir). 10114 10115 - Issue #11863: Remove support for legacy systems deprecated in Python 3.2 10116 (following PEP 11). These systems are systems using Mach C Threads, 10117 SunOS lightweight processes, GNU pth threads and IRIX threads. 10118 10119 - Issue #8746: Correct faulty configure checks so that os.chflags() and 10120 os.lchflags() are once again built on systems that support these 10121 functions (BSD and OS X). Also add new stat file flags for OS X 10122 (UF_HIDDEN and UF_COMPRESSED). 10123 10124 - Issue #10645: Installing Python no longer creates a 10125 Python-X.Y.Z-pyX.Y.egg-info file in the lib-dynload directory. 10126 10127 - Do not accidentally include the directory containing sqlite.h twice when 10128 building sqlite3. 10129 10130 - Issue #11217: For 64-bit/32-bit Mac OS X universal framework builds, 10131 ensure "make install" creates symlinks in --prefix bin for the "-32" 10132 files in the framework bin directory like the installer does. 10133 10134 - Issue #11347: Use --no-as-needed when linking libpython3.so. 10135 10136 - Issue #11411: Fix 'make DESTDIR=' with a relative destination. 10137 10138 - Issue #11268: Prevent Mac OS X Installer failure if Documentation 10139 package had previously been installed. 10140 10141 - Issue #11495: OSF support is eliminated. It was deprecated in Python 3.2. 10142 10143 IDLE 10144 ---- 10145 10146 - Issue #14409: IDLE now properly executes commands in the Shell window 10147 when it cannot read the normal config files on startup and 10148 has to use the built-in default key bindings. 10149 There was previously a bug in one of the defaults. 10150 10151 - IDLE can be launched as python -m idlelib 10152 10153 - Issue #3573: IDLE hangs when passing invalid command line args 10154 (directory(ies) instead of file(s)) (Patch by Guilherme Polo) 10155 10156 - Issue #14200: IDLE shell crash on printing non-BMP unicode character. 10157 10158 - Issue #5219: Prevent event handler cascade in IDLE. 10159 10160 - Issue #964437: Make IDLE help window non-modal. 10161 Patch by Guilherme Polo and Roger Serwy. 10162 10163 - Issue #13933: IDLE auto-complete did not work with some imported 10164 module, like hashlib. (Patch by Roger Serwy) 10165 10166 - Issue #13506: Add '' to path for IDLE Shell when started and restarted with Restart Shell. 10167 Original patches by Marco Scataglini and Roger Serwy. 10168 10169 - Issue #4625: If IDLE cannot write to its recent file or breakpoint files, 10170 display a message popup and continue rather than crash. Original patch by 10171 Roger Serwy. 10172 10173 - Issue #8641: Update IDLE 3 syntax coloring to recognize b".." and not u"..". 10174 Patch by Tal Einat. 10175 10176 - Issue #13296: Fix IDLE to clear compile __future__ flags on shell restart. 10177 (Patch by Roger Serwy) 10178 10179 - Issue #9871: Prevent IDLE 3 crash when given byte stings 10180 with invalid hex escape sequences, like b'\x0'. 10181 (Original patch by Claudiu Popa.) 10182 10183 - Issue #12636: IDLE reads the coding cookie when executing a Python script. 10184 10185 - Issue #12540: Prevent zombie IDLE processes on Windows due to changes 10186 in os.kill(). 10187 10188 - Issue #12590: IDLE editor window now always displays the first line 10189 when opening a long file. With Tk 8.5, the first line was hidden. 10190 10191 - Issue #11088: don't crash when using F5 to run a script in IDLE on MacOSX 10192 with Tk 8.5. 10193 10194 - Issue #1028: Tk returns invalid Unicode null in %A: UnicodeDecodeError. 10195 With Tk < 8.5 _tkinter.c:PythonCmd() raised UnicodeDecodeError, caused 10196 IDLE to exit. Converted to valid Unicode null in PythonCmd(). 10197 10198 - Issue #11718: IDLE's open module dialog couldn't find the __init__.py 10199 file in a package. 10200 10201 Tools/Demos 10202 ----------- 10203 10204 - Issue #14053: patchcheck.py ("make patchcheck") now works with MQ patches. 10205 Patch by Francisco Martn Brugu. 10206 10207 - Issue #13930: 2to3 is now able to write its converted output files to another 10208 directory tree as well as copying unchanged files and altering the file 10209 suffix. See its new -o, -W and --add-suffix options. This makes it more 10210 useful in many automated code translation workflows. 10211 10212 - Issue #13628: python-gdb.py is now able to retrieve more frames in the Python 10213 traceback if Python is optimized. 10214 10215 - Issue #11996: libpython (gdb), replace "py-bt" command by "py-bt-full" and 10216 add a smarter "py-bt" command printing a classic Python traceback. 10217 10218 - Issue #11179: Make ccbench work under Python 3.1 and 2.7 again. 10219 10220 - Issue #10639: reindent.py no longer converts newlines and will raise 10221 an error if attempting to convert a file with mixed newlines. 10222 "--newline" option added to specify new line character. 10223 10224 Extension Modules 10225 ----------------- 10226 10227 - Issue #16847: Fixed improper use of _PyUnicode_CheckConsistency() in 10228 non-pydebug builds. Several extension modules now compile cleanly when 10229 assert()s are enabled in standard builds (-DDEBUG flag). 10230 10231 - Issue #13840: The error message produced by ctypes.create_string_buffer 10232 when given a Unicode string has been fixed. 10233 10234 - Issue #9975: socket: Fix incorrect use of flowinfo and scope_id. Patch by 10235 Vilmos Nebehaj. 10236 10237 - Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support. 10238 10239 - Issue #13159: FileIO and BZ2Compressor/BZ2Decompressor now use a linear-time 10240 buffer growth strategy instead of a quadratic-time one. 10241 10242 - Issue #10141: socket: Add SocketCAN (PF_CAN) support. Initial patch by 10243 Matthias Fuchs, updated by Tiago Gonalves. 10244 10245 - Issue #13070: Fix a crash when a TextIOWrapper caught in a reference cycle 10246 would be finalized after the reference to its underlying BufferedRWPair's 10247 writer got cleared by the GC. 10248 10249 - Issue #12881: ctypes: Fix segfault with large structure field names. 10250 10251 - Issue #13058: ossaudiodev: fix a file descriptor leak on error. Patch by 10252 Thomas Jarosch. 10253 10254 - Issue #13013: ctypes: Fix a reference leak in PyCArrayType_from_ctype. 10255 Thanks to Suman Saha for finding the bug and providing a patch. 10256 10257 - Issue #13022: Fix: _multiprocessing.recvfd() doesn't check that 10258 file descriptor was actually received. 10259 10260 - Issue #1172711: Add 'long long' support to the array module. 10261 Initial patch by Oren Tirosh and Hirokazu Yamamoto. 10262 10263 - Issue #12483: ctypes: Fix a crash when the destruction of a callback 10264 object triggers the garbage collector. 10265 10266 - Issue #12950: Fix passing file descriptors in multiprocessing, under 10267 OpenIndiana/Illumos. 10268 10269 - Issue #12764: Fix a crash in ctypes when the name of a Structure field is not 10270 a string. 10271 10272 - Issue #11241: subclasses of ctypes.Array can now be subclassed. 10273 10274 - Issue #9651: Fix a crash when ctypes.create_string_buffer(0) was passed to 10275 some functions like file.write(). 10276 10277 - Issue #10309: Define _GNU_SOURCE so that mremap() gets the proper 10278 signature. Without this, architectures where sizeof void* != sizeof int are 10279 broken. Patch given by Hallvard B Furuseth. 10280 10281 - Issue #12051: Fix segfault in json.dumps() while encoding highly-nested 10282 objects using the C accelerations. 10283 10284 - Issue #12017: Fix segfault in json.loads() while decoding highly-nested 10285 objects using the C accelerations. 10286 10287 - Issue #1838: Prevent segfault in ctypes, when _as_parameter_ on a class is set 10288 to an instance of the class. 10289 10290 Tests 10291 ----- 10292 10293 - Issue #13125: Silence spurious test_lib2to3 output when in non-verbose mode. 10294 Patch by Mikhail Novikov. 10295 10296 - Issue #13447: Add a test file to host regression tests for bugs in the 10297 scripts found in the Tools directory. 10298 10299 - Issue #10881: Fix test_site failure with OS X framework builds. 10300 10301 - Issue #13901: Prevent test_distutils failures on OS X with --enable-shared. 10302 10303 - Issue #13862: Fix spurious failure in test_zlib due to runtime/compile time 10304 minor versions not matching. 10305 10306 - Issue #12804: Fix test_socket and test_urllib2net failures when running tests 10307 on a system without internet access. 10308 10309 - Issue #13726: Fix the ambiguous -S flag in regrtest. It is -o/--slow for slow 10310 tests. 10311 10312 - Issue #11659: Fix ResourceWarning in test_subprocess introduced by #11459. 10313 Patch by Ben Hayden. 10314 10315 - Issue #11577: fix ResourceWarning triggered by improved binhex test coverage 10316 10317 - Issue #11509: Significantly increase test coverage of fileinput. 10318 Patch by Denver Coneybeare at PyCon 2011 Sprints. 10319 10320 - Issue #11689: Fix a variable scoping error in an sqlite3 test 10321 10322 - Issue #13786: Remove unimplemented 'trace' long option from regrtest.py. 10323 10324 - Issue #13725: Fix regrtest to recognize the documented -d flag. 10325 Patch by Erno Tukia. 10326 10327 - Issue #13304: Skip test case if user site-packages disabled (-s or 10328 PYTHONNOUSERSITE). (Patch by Carl Meyer) 10329 10330 - Issue #5661: Add a test for ECONNRESET/EPIPE handling to test_asyncore. Patch 10331 by Xavier de Gaye. 10332 10333 - Issue #13218: Fix test_ssl failures on Debian/Ubuntu. 10334 10335 - Re-enable lib2to3's test_parser.py tests, though with an expected failure 10336 (see issue 13125). 10337 10338 - Issue #12656: Add tests for IPv6 and Unix sockets to test_asyncore. 10339 10340 - Issue #6484: Add unit tests for mailcap module (patch by Gregory Nofi) 10341 10342 - Issue #11651: Improve the Makefile test targets to run more of the test suite 10343 more quickly. The --multiprocess option is now enabled by default, reducing 10344 the amount of time needed to run the tests. "make test" and "make quicktest" 10345 now include some resource-intensive tests, but no longer run the test suite 10346 twice to check for bugs in .pyc generation. Tools/scripts/run_test.py provides 10347 an easy platform-independent way to run test suite with sensible defaults. 10348 10349 - Issue #12331: The test suite for the packaging module can now run from an 10350 installed Python. 10351 10352 - Issue #12331: The test suite for lib2to3 can now run from an installed 10353 Python. 10354 10355 - Issue #12626: In regrtest, allow filtering tests using a glob filter 10356 with the ``-m`` (or ``--match``) option. This works with all test cases 10357 using the unittest module. This is useful with long test suites 10358 such as test_io or test_subprocess. 10359 10360 - Issue #12624: It is now possible to fail after the first failure when 10361 running in verbose mode (``-v`` or ``-W``), by using the ``--failfast`` 10362 (or ``-G``) option to regrtest. This is useful with long test suites 10363 such as test_io or test_subprocess. 10364 10365 - Issue #12587: Correct faulty test file and reference in test_tokenize. 10366 (Patch by Robert Xiao) 10367 10368 - Issue #12573: Add resource checks for dangling Thread and Process objects. 10369 10370 - Issue #12549: Correct test_platform to not fail when OS X returns 'x86_64' 10371 as the processor type on some Mac systems. 10372 10373 - Skip network tests when getaddrinfo() returns EAI_AGAIN, meaning a temporary 10374 failure in name resolution. 10375 10376 - Issue #11812: Solve transient socket failure to connect to 'localhost' 10377 in test_telnetlib.py. 10378 10379 - Solved a potential deadlock in test_telnetlib.py. Related to issue #11812. 10380 10381 - Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and 10382 an overzealous DNS service (e.g. OpenDNS) redirects to a placeholder 10383 Web site. 10384 10385 - Avoid failing in test_urllibnet.test_bad_address when some overzealous 10386 DNS service (e.g. OpenDNS) resolves a non-existent domain name. The test 10387 is now skipped instead. 10388 10389 - Issue #12440: When testing whether some bits in SSLContext.options can be 10390 reset, check the version of the OpenSSL headers Python was compiled against, 10391 rather than the runtime version of the OpenSSL library. 10392 10393 - Issue #11512: Add a test suite for the cgitb module. Patch by Robbie Clemons. 10394 10395 - Issue #12497: Install test/data to prevent failures of the various codecmaps 10396 tests. 10397 10398 - Issue #12496: Install test/capath directory to prevent test_connect_capath 10399 testcase failure in test_ssl. 10400 10401 - Issue #12469: Run wakeup and pending signal tests in a subprocess to run the 10402 test in a fresh process with only one thread and to not change signal 10403 handling of the parent process. 10404 10405 - Issue #8716: Avoid crashes caused by Aqua Tk on OSX when attempting to run 10406 test_tk or test_ttk_guionly under a username that is not currently logged 10407 in to the console windowserver (as may be the case under buildbot or ssh). 10408 10409 - Issue #12407: Explicitly skip test_capi.EmbeddingTest under Windows. 10410 10411 - Issue #12400: regrtest -W doesn't rerun the tests twice anymore, but captures 10412 the output and displays it on failure instead. regrtest -v doesn't print the 10413 error twice anymore if there is only one error. 10414 10415 - Issue #12141: Install copies of template C module file so that 10416 test_build_ext of test_distutils and test_command_build_ext of 10417 test_packaging are no longer silently skipped when 10418 run outside of a build directory. 10419 10420 - Issue #8746: Add additional tests for os.chflags() and os.lchflags(). 10421 Patch by Garrett Cooper. 10422 10423 - Issue #10736: Fix test_ttk test_widgets failures with Cocoa Tk 8.5.9 10424 2.8 + on Mac OS X. (Patch by Ronald Oussoren) 10425 10426 - Issue #12057: Add tests for ISO 2022 codecs (iso2022_jp, iso2022_jp_2, 10427 iso2022_kr). 10428 10429 - Issue #12096: Fix a race condition in test_threading.test_waitfor(). Patch 10430 written by Charles-Franois Natali. 10431 10432 - Issue #11614: import __hello__ prints "Hello World!". Patch written by 10433 Andreas Sthrk. 10434 10435 - Issue #5723: Improve json tests to be executed with and without accelerations. 10436 10437 - Issue #12041: Make test_wait3 more robust. 10438 10439 - Issue #11873: Change regex in test_compileall to fix occasional failures when 10440 the randomly generated temporary path happened to match the regex. 10441 10442 - Issue #11958: Fix FTP tests for IPv6, bind to "::1" instead of "localhost". 10443 Patch written by Charles-Francois Natali. 10444 10445 - Issue #8407, #11859: Fix tests of test_io using threads and an alarm: use 10446 pthread_sigmask() to ensure that the SIGALRM signal is received by the main 10447 thread. 10448 10449 - Issue #11811: Factor out detection of IPv6 support on the current host 10450 and make it available as ``test.support.IPV6_ENABLED``. Patch by 10451 Charles-Franois Natali. 10452 10453 - Issue #10914: Add a minimal embedding test to test_capi. 10454 10455 - Issue #11223: Skip test_lock_acquire_interruption() and 10456 test_rlock_acquire_interruption() of test_threadsignals if a thread lock is 10457 implemented using a POSIX mutex and a POSIX condition variable. A POSIX 10458 condition variable cannot be interrupted by a signal (e.g. on Linux, the 10459 futex system call is restarted). 10460 10461 - Issue #11790: Fix sporadic failures in test_multiprocessing.WithProcessesTestCondition. 10462 10463 - Fix possible "file already exists" error when running the tests in parallel. 10464 10465 - Issue #11719: Fix message about unexpected test_msilib skip on non-Windows 10466 platforms. Patch by Nadeem Vawda. 10467 10468 - Issue #11727: Add a --timeout option to regrtest: if a test takes more than 10469 TIMEOUT seconds, dumps the traceback of all threads and exits. 10470 10471 - Issue #11653: fix -W with -j in regrtest. 10472 10473 - The email test suite now lives in the Lib/test/test_email package. The test 10474 harness code has also been modernized to allow use of new unittest features. 10475 10476 - regrtest now discovers test packages as well as test modules. 10477 10478 - Issue #11577: improve test coverage of binhex.py. Patch by Arkady Koplyarov. 10479 10480 - New test_crashers added to exercise the scripts in the Lib/test/crashers 10481 directory and confirm they fail as expected 10482 10483 - Issue #11578: added test for the timeit module. Patch by Michael Henry. 10484 10485 - Issue #11503: improve test coverage of posixpath.py. Patch by Evan Dandrea. 10486 10487 - Issue #11505: improves test coverage of string.py, increases granularity of 10488 string.Formatter tests. Initial patch by Alicia Arlen. 10489 10490 - Issue #11548: Improve test coverage of the shutil module. Patch by 10491 Evan Dandrea. 10492 10493 - Issue #11554: Reactivated test_email_codecs. 10494 10495 - Issue #11505: improves test coverage of string.py. Patch by Alicia 10496 Arlen 10497 10498 - Issue #11490: test_subprocess.test_leaking_fds_on_error no longer gives a 10499 false positive if the last directory in the path is inaccessible. 10500 10501 - Issue #11223: Fix test_threadsignals to fail, not hang, when the 10502 non-semaphore implementation of locks is used under POSIX. 10503 10504 - Issue #10911: Add tests on CGI with non-ASCII characters. Patch written by 10505 Pierre Quentel. 10506 10507 - Issue #9931: Fix hangs in GUI tests under Windows in certain conditions. 10508 Patch by Hirokazu Yamamoto. 10509 10510 - Issue #10512: Properly close sockets under test.test_cgi. 10511 10512 - Issue #10992: Make tests pass under coverage. 10513 10514 - Issue #10826: Prevent sporadic failure in test_subprocess on Solaris due 10515 to open door files. 10516 10517 - Issue #10990: Prevent tests from clobbering a set trace function. 10518 10519 C-API 10520 ----- 10521 10522 - Issue #13452: PyUnicode_EncodeDecimal() doesn't support error handlers 10523 different than "strict" anymore. The caller was unable to compute the 10524 size of the output buffer: it depends on the error handler. 10525 10526 - Issue #13560: Add PyUnicode_DecodeLocale(), PyUnicode_DecodeLocaleAndSize() 10527 and PyUnicode_EncodeLocale() functions to the C API to decode/encode from/to 10528 the current locale encoding. 10529 10530 - Issue #10831: PyUnicode_FromFormat() supports %li, %lli and %zi formats. 10531 10532 - Issue #11246: Fix PyUnicode_FromFormat("%V") to decode the byte string from 10533 UTF-8 (with replace error handler) instead of ISO-8859-1 (in strict mode). 10534 Patch written by Ray Allen. 10535 10536 - Issue #10830: Fix PyUnicode_FromFormatV("%c") for non-BMP characters on 10537 narrow build. 10538 10539 - Add PyObject_GenericGetDict and PyObject_GeneriSetDict. They are generic 10540 implementations for the getter and setter of a ``__dict__`` descriptor of C 10541 types. 10542 10543 - Issue #13727: Add 3 macros to access PyDateTime_Delta members: 10544 PyDateTime_DELTA_GET_DAYS, PyDateTime_DELTA_GET_SECONDS, 10545 PyDateTime_DELTA_GET_MICROSECONDS. 10546 10547 - Issue #10542: Add 4 macros to work with surrogates: Py_UNICODE_IS_SURROGATE, 10548 Py_UNICODE_IS_HIGH_SURROGATE, Py_UNICODE_IS_LOW_SURROGATE, 10549 Py_UNICODE_JOIN_SURROGATES. 10550 10551 - Issue #12724: Add Py_RETURN_NOTIMPLEMENTED macro for returning NotImplemented. 10552 10553 - PY_PATCHLEVEL_REVISION has been removed, since it's meaningless with 10554 Mercurial. 10555 10556 - Issue #12173: The first argument of PyImport_ImportModuleLevel is now `const 10557 char *` instead of `char *`. 10558 10559 - Issue #12380: PyArg_ParseTuple now accepts a bytearray for the 'c' format. 10560 10561 Documentation 10562 ------------- 10563 10564 - Issue #13989: Document that GzipFile does not support text mode, and give a 10565 more helpful error message when opened with an invalid mode string. 10566 10567 - Issue #13921: Undocument and clean up sqlite3.OptimizedUnicode, 10568 which is obsolete in Python 3.x. It's now aliased to str for 10569 backwards compatibility. 10570 10571 - Issue #12102: Document that buffered files must be flushed before being used 10572 with mmap. Patch by Steffen Daode Nurpmeso. 10573 10574 - Issue #8982: Improve the documentation for the argparse Namespace object. 10575 10576 - Issue #9343: Document that argparse parent parsers must be configured before 10577 their children. 10578 10579 - Issue #13498: Clarify docs of os.makedirs()'s exist_ok argument. Done with 10580 great native-speaker help from R. David Murray. 10581 10582 - Issues #13491 and #13995: Fix many errors in sqlite3 documentation. 10583 Initial patch for #13491 by Johannes Vogel. 10584 10585 - Issue #13402: Document absoluteness of sys.executable. 10586 10587 - Issue #13883: PYTHONCASEOK also works on OS X. 10588 10589 - Issue #9021: Add an introduction to the copy module documentation. 10590 10591 - Issue #6005: Examples in the socket library documentation use sendall, where 10592 relevant, instead send method. 10593 10594 - Issue #12798: Updated the mimetypes documentation. 10595 10596 - Issue #12949: Document the kwonlyargcount argument for the PyCode_New 10597 C API function. 10598 10599 - Issue #13513: Fix io.IOBase documentation to correctly link to the 10600 io.IOBase.readline method instead of the readline module. 10601 10602 - Issue #13237: Reorganise subprocess documentation to emphasise convenience 10603 functions and the most commonly needed arguments to Popen. 10604 10605 - Issue #13141: Demonstrate recommended style for socketserver examples. 10606 10607 - Issue #11818: Fix tempfile examples for Python 3. 10608 10609 10610 What's New in Python 3.2? 10611 ========================= 10612 10613 *Release date: 20-Feb-2011* 10614 10615 Core and Builtins 10616 ----------------- 10617 10618 - Issue #11249: Fix potential crashes when using the limited API. 10619 10620 Build 10621 ----- 10622 10623 - Issue #11222: Fix non-framework shared library build on Mac OS X. 10624 10625 - Issue #11184: Fix large-file support on AIX. 10626 10627 - Issue #941346: Fix broken shared library build on AIX. 10628 10629 Documentation 10630 ------------- 10631 10632 - Issue #10709: Add updated AIX notes in Misc/README.AIX. 10633 10634 10635 What's New in Python 3.2 Release Candidate 3? 10636 ============================================= 10637 10638 *Release date: 13-Feb-2011* 10639 10640 Core and Builtins 10641 ----------------- 10642 10643 - Issue #11134: Add missing fields to typeslots.h. 10644 10645 - Issue #11135: Remove redundant doc field from PyType_Spec. 10646 10647 - Issue #11067: Add PyType_GetFlags, to support PyUnicode_Check in the limited 10648 ABI. 10649 10650 - Issue #11118: Fix bogus export of None in python3.dll. 10651 10652 Library 10653 ------- 10654 10655 - Issue #11116: any error during addition of a message to a mailbox now causes a 10656 rollback, instead of leaving the mailbox partially modified. 10657 10658 - Issue #11132: Fix passing of "optimize" parameter when recursing in 10659 compileall.compile_dir(). 10660 10661 - Issue #11110: Fix a potential decref of a NULL in sqlite3. 10662 10663 - Issue #8275: Fix passing of callback arguments with ctypes under Win64. Patch 10664 by Stan Mihai. 10665 10666 Build 10667 ----- 10668 10669 - Issue #11079: The /Applications/Python x.x folder created by the Mac OS X 10670 installers now includes a link to the installed documentation and no longer 10671 includes an Extras directory. The Tools directory is now installed in the 10672 framework under share/doc. 10673 10674 - Issue #11121: Fix building with --enable-shared. 10675 10676 Tests 10677 ----- 10678 10679 - Issue #10971: test_zipimport_support is once again compatible with the refleak 10680 hunter feature of test.regrtest. 10681 10682 10683 What's New in Python 3.2 Release Candidate 2? 10684 ============================================= 10685 10686 *Release date: 30-Jan-2011* 10687 10688 Core and Builtins 10689 ----------------- 10690 10691 - Issue #10451: memoryview objects could allow mutating a readable buffer. 10692 Initial patch by Ross Lagerwall. 10693 10694 Library 10695 ------- 10696 10697 - Issue #9124: mailbox now accepts binary input and reads and writes mailbox 10698 files in binary mode, using the email package's binary support to parse 10699 arbitrary email messages. StringIO and text file input is deprecated, 10700 and string input fails early if non-ASCII characters are used, where 10701 previously it would fail when the email was processed in a later step. 10702 10703 - Issue #10845: Mitigate the incompatibility between the multiprocessing 10704 module on Windows and the use of package, zipfile or directory execution 10705 by special casing main modules that actually *are* called __main__.py. 10706 10707 - Issue #11045: Protect logging call against None argument. 10708 10709 - Issue #11052: Correct IDLE menu accelerators on Mac OS X for Save 10710 commands. 10711 10712 - Issue #11053: Fix IDLE "Syntax Error" windows to behave as in 2.x, 10713 preventing a confusing hung appearance on OS X with the windows 10714 obscured. 10715 10716 - Issue #10940: Workaround an IDLE hang on Mac OS X 10.6 when using the 10717 menu accelerators for Open Module, Go to Line, and New Indent Width. 10718 The accelerators still work but no longer appear in the menu items. 10719 10720 - Issue #10989: Fix a crash on SSLContext.load_verify_locations(None, True). 10721 10722 - Issue #11020: Command-line pyclbr was broken because of missing 2-to-3 10723 conversion. 10724 10725 - Issue #11019: Fixed BytesGenerator so that it correctly handles a Message 10726 with a None body. 10727 10728 - Issue #11014: Make 'filter' argument in tarfile.Tarfile.add() into a 10729 keyword-only argument. The preceding positional argument was deprecated, 10730 so it made no sense to add filter as a positional argument. 10731 10732 - Issue #11004: Repaired edge case in deque.count(). 10733 10734 - Issue #10974: IDLE no longer crashes if its recent files list includes files 10735 with non-ASCII characters in their path names. 10736 10737 - Have hashlib.algorithms_available and hashlib.algorithms_guaranteed both 10738 return sets instead of one returning a tuple and the other a frozenset. 10739 10740 - Issue #10987: Fix the recursion limit handling in the _pickle module. 10741 10742 - Issue #10983: Fix several bugs making tunnel requests in http.client. 10743 10744 - Issue #10955: zipimport uses ASCII encoding instead of cp437 to decode 10745 filenames, at bootstrap, if the codec registry is not ready yet. It is still 10746 possible to have non-ASCII filenames using the Unicode flag (UTF-8 encoding) 10747 for all file entries in the ZIP file. 10748 10749 - Issue #10949: Improved robustness of rotating file handlers. 10750 10751 - Issue #10955: Fix a potential crash when trying to mmap() a file past its 10752 length. Initial patch by Ross Lagerwall. 10753 10754 - Issue #10898: Allow compiling the posix module when the C library defines 10755 a symbol named FSTAT. 10756 10757 - Issue #10980: the HTTP server now encodes headers with iso-8859-1 (latin1) 10758 encoding. This is the preferred encoding of PEP 3333 and the base encoding 10759 of HTTP 1.1. 10760 10761 - To match the behaviour of HTTP server, the HTTP client library now also 10762 encodes headers with iso-8859-1 (latin1) encoding. It was already doing 10763 that for incoming headers which makes this behaviour now consistent in 10764 both incoming and outgoing direction. 10765 10766 - Issue #9509: argparse now properly handles IOErrors raised by 10767 argparse.FileType. 10768 10769 - Issue #10961: The new pydoc server now better handles exceptions raised 10770 during request handling. 10771 10772 - Issue #10680: Fix mutually exclusive arguments for argument groups in 10773 argparse. 10774 10775 Build 10776 ----- 10777 10778 - Issue #11054: Allow Mac OS X installer builds to again work on 10.5 with 10779 the system-provided Python. 10780 10781 10782 What's New in Python 3.2 Release Candidate 1 10783 ============================================ 10784 10785 *Release date: 16-Jan-2011* 10786 10787 Core and Builtins 10788 ----------------- 10789 10790 - Issue #10889: range indexing and slicing now works correctly on ranges with 10791 a length that exceeds sys.maxsize. 10792 10793 - Issue #10892: Don't segfault when trying to delete __abstractmethods__ from a 10794 class. 10795 10796 - Issue #8020: Avoid a crash where the small objects allocator would read 10797 non-Python managed memory while it is being modified by another thread. Patch 10798 by Matt Bandy. 10799 10800 - Issue #10841: On Windows, set the binary mode on stdin, stdout, stderr and all 10801 io.FileIO objects (to not translate newlines, \r\n <=> \n). The Python parser 10802 translates newlines (\r\n => \n). 10803 10804 - Remove buffer API from stable ABI for now, see #10181. 10805 10806 - Issue #8651: PyArg_Parse*() functions raise an OverflowError if the file 10807 doesn't have PY_SSIZE_T_CLEAN define and the size doesn't fit in an int 10808 (length bigger than 2^31-1 bytes). 10809 10810 - Issue #9015, #9611: FileIO.readinto(), FileIO.write(), os.write() and 10811 stdprinter.write() clamp the length to INT_MAX on Windows. 10812 10813 - Issue #8278: On Windows and with a NTFS filesystem, os.stat() and os.utime() 10814 can now handle dates after 2038. 10815 10816 - Issue #10780: PyErr_SetFromWindowsErrWithFilename() and 10817 PyErr_SetExcFromWindowsErrWithFilename() decode the filename from the 10818 filesystem encoding instead of UTF-8. 10819 10820 - Issue #10779: PyErr_WarnExplicit() decodes the filename from the filesystem 10821 encoding instead of UTF-8. 10822 10823 - Add sys.flags attribute for the new -q command-line option. 10824 10825 - Issue #11506: Trying to assign to a bytes literal should result in a 10826 SyntaxError. 10827 10828 Library 10829 ------- 10830 10831 - Issue #10916: mmap should not segfault when a file is mapped using 0 as length 10832 and a non-zero offset, and an attempt to read past the end of file is made 10833 (IndexError is raised instead). Patch by Ross Lagerwall. 10834 10835 - Issue #10154, #10090: change the normalization of UTF-8 to "UTF-8" instead 10836 of "UTF8" in the locale module as the latter is not supported MacOSX and OpenBSD. 10837 10838 - Issue #10907: Warn OS X 10.6 IDLE users to use ActiveState Tcl/Tk 8.5, rather 10839 than the currently problematic Apple-supplied one, when running with the 10840 64-/32-bit installer variant. 10841 10842 - Issue #4953: cgi.FieldStorage and cgi.parse() parse the request as bytes, not 10843 as unicode, and accept binary files. Add encoding and errors attributes to 10844 cgi.FieldStorage. Patch written by Pierre Quentel (with many inputs by Glenn 10845 Linderman). 10846 10847 - Add encoding and errors arguments to urllib.parse_qs() and urllib.parse_qsl(). 10848 10849 - Issue #10899: No function type annotations in the standard library. Removed 10850 function type annotations from _pyio.py. 10851 10852 - Issue #10875: Update Regular Expression HOWTO; patch by 'SilentGhost'. 10853 10854 - Issue #10872: The repr() of TextIOWrapper objects now includes the mode 10855 if available. 10856 10857 - Issue #10869: Fixed bug where ast.increment_lineno modified the root node 10858 twice. 10859 10860 - Issue #5871: email.header.Header.encode now raises an error if any 10861 continuation line in the formatted value has no leading white space and looks 10862 like a header. Since Generator uses Header to format all headers, this check 10863 is made for all headers in any serialized message at serialization time. This 10864 provides protection against header injection attacks. 10865 10866 - Issue #10859: Make ``contextlib.GeneratorContextManager`` officially 10867 private by renaming it to ``_GeneratorContextManager``. 10868 10869 - Issue #10042: Fixed the total_ordering decorator to handle cross-type 10870 comparisons that could lead to infinite recursion. 10871 10872 - Issue #10686: the email package now :rfc:`2047`\ -encodes headers with 10873 non-ASCII bytes (parsed by a BytesParser) when doing conversion to 7bit-clean 10874 presentation, instead of replacing them with ?s. 10875 10876 - email.header.Header was incorrectly encoding folding whitespace when 10877 rfc2047-encoding header values with embedded newlines, leaving them without 10878 folding whitespace. It now uses the continuation_ws, as it does for 10879 continuation lines that it creates itself. 10880 10881 - Issue #1777412, #10827: Changed the rules for 2-digit years. The 10882 time.asctime(), time.ctime() and time.strftime() functions will now format 10883 any year when ``time.accept2dyear`` is False and will accept years >= 1000 10884 otherwise. ``time.mktime`` and ``time.strftime`` now accept full range 10885 supported by the OS. With Visual Studio or on Solaris, the year is limited to 10886 the range [1; 9999]. Conversion of 2-digit years to 4-digit is deprecated. 10887 10888 - Issue #7858: Raise an error properly when os.utime() fails under Windows 10889 on an existing file. 10890 10891 - Issue #3839: wsgiref should not override a Content-Length header set by 10892 the application. Initial patch by Clovis Fabricio. 10893 10894 - Issue #10492: bdb.Bdb.run() only traces the execution of the code, not the 10895 compilation (if the input is a string). 10896 10897 - Issue #7995: When calling accept() on a socket with a timeout, the returned 10898 socket is now always blocking, regardless of the operating system. 10899 10900 - Issue #10756: atexit normalizes the exception before displaying it. Patch by 10901 Andreas Sthrk. 10902 10903 - Issue #10790: email.header.Header.append's charset logic now works correctly 10904 for charsets whose output codec is different from its input codec. 10905 10906 - Issue #10819: SocketIO.name property returns -1 when its closed, instead of 10907 raising a ValueError, to fix repr(). 10908 10909 - Issue #8650: zlib.compress() and zlib.decompress() raise an OverflowError if 10910 the input buffer length doesn't fit into an unsigned int (length bigger than 10911 2^32-1 bytes). 10912 10913 - Issue #6643: Reinitialize locks held within the threading module after fork to 10914 avoid a potential rare deadlock or crash on some platforms. 10915 10916 - Issue #10806, issue #9905: Fix subprocess pipes when some of the standard file 10917 descriptors (0, 1, 2) are closed in the parent process. Initial patch by Ross 10918 Lagerwall. 10919 10920 - `unittest.TestCase` can be instantiated without a method name; for simpler 10921 exploration from the interactive interpreter. 10922 10923 - Issue #10798: Reject supporting concurrent.futures if the system has too 10924 few POSIX semaphores. 10925 10926 - Issue #10807: Remove base64, bz2, hex, quopri, rot13, uu and zlib codecs from 10927 the codec aliases. They are still accessible via codecs.lookup(). 10928 10929 - Issue #10801: In zipfile, support different encodings for the header and the 10930 filenames. 10931 10932 - Issue #6285: IDLE no longer crashes on missing help file; patch by Scott 10933 David Daniels. 10934 10935 - Fix collections.OrderedDict.setdefault() so that it works in subclasses that 10936 define __missing__(). 10937 10938 - Issue #10786: unittest.TextTestRunner default stream no longer bound at import 10939 time. `sys.stderr` now looked up at instantiation time. Fix contributed by 10940 Mark Roddy. 10941 10942 - Issue #10753: Characters ';', '=' and ',' in the PATH_INFO environment variable 10943 won't be quoted when the URI is constructed by the wsgiref.util's request_uri 10944 method. According to RFC 3986, these characters can be a part of params in 10945 PATH component of URI and need not be quoted. 10946 10947 - Issue #10738: Fix webbrowser.Opera.raise_opts. 10948 10949 - Issue #9824: SimpleCookie now encodes , and ; in values to cater to how 10950 browsers actually parse cookies. 10951 10952 - Issue #9333: os.symlink now available regardless of user privileges. The 10953 function now raises OSError on Windows >=6.0 when the user is unable to create 10954 symbolic links. XP and 2003 still raise NotImplementedError. 10955 10956 - Issue #10783: struct.pack() no longer implicitly encodes unicode to UTF-8. 10957 10958 - Issue #10730: Add SVG mime types to mimetypes module. 10959 10960 - Issue #10768: Make the Tkinter ScrolledText widget work again. 10961 10962 - Issue #10777: Fix "dictionary changed size during iteration" bug in 10963 ElementTree register_namespace(). 10964 10965 - Issue #10626: test_logging now preserves logger disabled states. 10966 10967 - Issue #10774: test_logging now removes temp files created during tests. 10968 10969 - Issue #5258/#10642: if site.py encounters a .pth file that generates an error, 10970 it now prints the filename, line number, and traceback to stderr and skips 10971 the rest of that individual file, instead of stopping processing entirely. 10972 10973 - Issue #10763: subprocess.communicate() closes stdout and stderr if both are 10974 pipes (bug specific to Windows). 10975 10976 - Issue #1693546: fix email.message RFC 2231 parameter encoding to be in better 10977 compliance (no "s around encoded values). 10978 10979 - Improved the diff message in the unittest module's assertCountEqual(). 10980 10981 - Issue #1155362: email.utils.parsedate_tz now handles a missing space before 10982 the '-' of a timezone field as well as before a '+'. 10983 10984 - Issue #4871: The zipfile module now gives a more useful error message if 10985 an attempt is made to use a string to specify the archive password. 10986 10987 - Issue #10750: The ``raw`` attribute of buffered IO objects is now read-only. 10988 10989 - Deprecated assertDictContainsSubset() in the unittest module. 10990 10991 C-API 10992 ----- 10993 10994 - PyObject_CallMethod now passes along any underlying AttributeError from 10995 PyObject_GetAttr, instead of replacing it with something less informative 10996 10997 - Issue #10913: Deprecate misleading functions PyEval_AcquireLock() and 10998 PyEval_ReleaseLock(). The thread-state aware APIs should be used instead. 10999 11000 - Issue #10333: Remove ancient GC API, which has been deprecated since Python 11001 2.2. 11002 11003 Build 11004 ----- 11005 11006 - Issue #10843: Update third-party library versions used in OS X 32-bit 11007 installer builds: bzip2 1.0.6, readline 6.1.2, SQLite 3.7.4 (with FTS3/FTS4 11008 and RTREE enabled), and ncursesw 5.5 (wide-char support enabled). 11009 11010 - Issue #10820: Fix OS X framework installs to support version-specific 11011 scripts (#10679). 11012 11013 - Issue #7716: Under Solaris, don't assume existence of /usr/xpg4/bin/grep in 11014 the configure script but use $GREP instead. Patch by Fabian Groffen. 11015 11016 - Issue #10475: Don't hardcode compilers for LDSHARED/LDCXXSHARED on NetBSD 11017 and DragonFly BSD. Patch by Nicolas Joly. 11018 11019 - Issue #10679: The "idle", "pydoc" and "2to3" scripts are now installed with 11020 a version-specific suffix on "make altinstall". 11021 11022 - Issue #10655: Fix the build on PowerPC on Linux with GCC when building with 11023 timestamp profiling (--with-tsc): the preprocessor test for the PowerPC 11024 support now looks for "__powerpc__" as well as "__ppc__": the latter seems to 11025 only be present on OS X; the former is the correct one for Linux with GCC. 11026 11027 - Issue #1099: Fix the build on MacOSX when building a framework with pydebug 11028 using GCC 4.0. 11029 11030 Tools/Demos 11031 ----------- 11032 11033 - Issue #10843: Install the Tools directory on OS X in the applications Extras 11034 (/Applications/Python 3.n/Extras/) where the Demo directory had previous been 11035 installed. 11036 11037 - Issue #7962: The Demo directory is gone. Most of the old and unmaintained 11038 demos have been removed, others integrated in documentation or a new 11039 Tools/demo subdirectory. 11040 11041 - Issue #10502: Addition of the unittestgui tool. Originally by Steve Purcell. 11042 Updated for test discovery by Mark Roddy and Python 3 compatibility by Brian 11043 Curtin. 11044 11045 Tests 11046 ----- 11047 11048 - Issue #11910: Fix test_heapq to skip the C tests when _heapq is missing. 11049 11050 - Fix test_startfile to wait for child process to terminate before finishing. 11051 11052 - Issue #10822: Fix test_posix:test_getgroups failure under Solaris. Patch 11053 by Ross Lagerwall. 11054 11055 - Make the --coverage flag work for test.regrtest. 11056 11057 - Issue #1677694: Refactor and improve test_timeout. Original patch by 11058 Bjrn Lindqvist. 11059 11060 - Issue #5485: Add tests for the UseForeignDTD method of expat parser objects. 11061 Patch by Jean-Paul Calderone and Sandro Tosi. 11062 11063 - Issue #6293: Have regrtest.py echo back sys.flags. This is done by default in 11064 whole runs and enabled selectively using ``--header`` when running an explicit 11065 list of tests. Original patch by Collin Winter. 11066 11067 11068 What's New in Python 3.2 Beta 2? 11069 ================================ 11070 11071 *Release date: 19-Dec-2010* 11072 11073 Core and Builtins 11074 ----------------- 11075 11076 - Issue #8844: Regular and recursive lock acquisitions can now be interrupted 11077 by signals on platforms using pthreads. Patch by Reid Kleckner. 11078 11079 - Issue #4236: PyModule_Create2 now checks the import machinery directly 11080 rather than the Py_IsInitialized flag, avoiding a Fatal Python 11081 error in certain circumstances when an import is done in __del__. 11082 11083 - Issue #5587: add a repr to dict_proxy objects. Patch by David Stanek and 11084 Daniel Urban. 11085 11086 Library 11087 ------- 11088 11089 - Issue #3243: Support iterable bodies in httplib. Patch Contributions by 11090 Xuanji Li and Chris AtLee. 11091 11092 - Issue #10611: SystemExit exception will no longer kill a unittest run. 11093 11094 - Issue #9857: It is now possible to skip a test in a setUp, tearDown or clean 11095 up function. 11096 11097 - Issue #10573: use actual/expected consistently in unittest methods. 11098 The order of the args of assertCountEqual is also changed. 11099 11100 - Issue #9286: email.utils.parseaddr no longer concatenates blank-separated 11101 words in the local part of email addresses, thereby preserving the input. 11102 11103 - Issue #6791: Limit header line length (to 65535 bytes) in http.client 11104 and http.server, to avoid denial of services from the other party. 11105 11106 - Issue #10404: Use ctl-button-1 on OSX for the context menu in Idle. 11107 11108 - Issue #9907: Fix tab handling on OSX when using editline by calling 11109 rl_initialize first, then setting our custom defaults, then reading .editrc. 11110 11111 - Issue #4188: Avoid creating dummy thread objects when logging operations 11112 from the threading module (with the internal verbose flag activated). 11113 11114 - Issue #10711: Remove HTTP 0.9 support from http.client. The ``strict`` 11115 parameter to HTTPConnection and friends is deprecated. 11116 11117 - Issue #9721: Fix the behavior of urljoin when the relative url starts with a 11118 ';' character. Patch by Wes Chow. 11119 11120 - Issue #10714: Limit length of incoming request in http.server to 65536 bytes 11121 for security reasons. Initial patch by Ross Lagerwall. 11122 11123 - Issue #9558: Fix distutils.command.build_ext with VS 8.0. 11124 11125 - Issue #10667: Fast path for collections.Counter(). 11126 11127 - Issue #10695: passing the port as a string value to telnetlib no longer 11128 causes debug mode to fail. 11129 11130 - Issue #1078919: add_header now automatically RFC2231 encodes parameters 11131 that contain non-ascii values. 11132 11133 - Issue #10188 (partial resolution): tempfile.TemporaryDirectory emits 11134 a warning on sys.stderr rather than throwing a misleading exception 11135 if cleanup fails due to nulling out of modules during shutdown. 11136 Also avoids an AttributeError when mkdtemp call fails and issues 11137 a ResourceWarning on implicit cleanup via __del__. 11138 11139 - Issue #10107: Warn about unsaved files in IDLE on OSX. 11140 11141 - Issue #7213: subprocess.Popen's default for close_fds has been changed. 11142 It is now True in most cases other than on Windows when input, output or 11143 error handles are provided. 11144 11145 - Issue #6559: subprocess.Popen has a new pass_fds parameter (actually 11146 added in 3.2beta1) to allow specifying a specific list of file descriptors 11147 to keep open in the child process. 11148 11149 - Issue #1731717: Fixed the problem where subprocess.wait() could cause an 11150 OSError exception when The OS had been told to ignore SIGCLD in our process 11151 or otherwise not wait for exiting child processes. 11152 11153 Tests 11154 ----- 11155 11156 - Issue #775964: test_grp now skips YP/NIS entries instead of failing when 11157 encountering them. 11158 11159 Tools/Demos 11160 ----------- 11161 11162 - Issue #6075: IDLE on Mac OS X now works with both Carbon AquaTk and 11163 Cocoa AquaTk. 11164 11165 - Issue #10710: ``Misc/setuid-prog.c`` is removed from the source tree. 11166 11167 - Issue #10706: Remove outdated script runtests.sh. Either ``make test`` 11168 or ``python -m test`` should be used instead. 11169 11170 Build 11171 ----- 11172 11173 - The Windows build now uses Tcl/Tk 8.5.9 and sqlite3 3.7.4. 11174 11175 - Issue #9234: argparse supports alias names for subparsers. 11176 11177 11178 What's New in Python 3.2 Beta 1? 11179 ================================ 11180 11181 *Release date: 05-Dec-2010* 11182 11183 Core and Builtins 11184 ----------------- 11185 11186 - Issue #10630: Return dict views from the dict proxy keys()/values()/items() 11187 methods. 11188 11189 - Issue #10596: Fix float.__mod__ to have the same behaviour as float.__divmod__ 11190 with respect to signed zeros. -4.0 % 4.0 should be 0.0, not -0.0. 11191 11192 - Issue #1772833: Add the -q command-line option to suppress copyright and 11193 version output in interactive mode. 11194 11195 - Provide an *optimize* parameter in the built-in compile() function. 11196 11197 - Fixed several corner case issues on Windows in os.stat/os.lstat related to 11198 reparse points. 11199 11200 - PEP 384 (Defining a Stable ABI) is implemented. 11201 11202 - Issue #2690: Range objects support negative indices and slicing. 11203 11204 - Issue #9915: Speed up sorting with a key. 11205 11206 - Issue #8685: Speed up set difference ``a - b`` when source set ``a`` is much 11207 larger than operand ``b``. Patch by Andrew Bennetts. 11208 11209 - Issue #10518: Bring back the callable() builtin. 11210 11211 - Issue #7094: Added alternate formatting (specified by '#') to ``__format__`` 11212 method of float, complex, and Decimal. This allows more precise control over 11213 when decimal points are displayed. 11214 11215 - Issue #10474: range.count() should return integers. 11216 11217 - Issue #1574217: isinstance now catches only AttributeError, rather than 11218 masking all errors. 11219 11220 Library 11221 ------- 11222 11223 - logging: added "handler of last resort". See http://bit.ly/last-resort-handler 11224 11225 - test.support: Added TestHandler and Matcher classes for better support of 11226 assertions about logging. 11227 11228 - Issue #4391: Use proper plural forms in argparse. 11229 11230 - Issue #10601: sys.displayhook uses 'backslashreplace' error handler on 11231 UnicodeEncodeError. 11232 11233 - Add the "display" and "undisplay" pdb commands. 11234 11235 - Issue #7245: Add a SIGINT handler in pdb that allows breaking a program again 11236 after a "continue" command. 11237 11238 - Add the "interact" pdb command. 11239 11240 - Issue #7905: Actually respect the keyencoding parameter to shelve.Shelf. 11241 11242 - Issue #1569291: Speed up array.repeat(). 11243 11244 - Provide an interface to set the optimization level of compilation in 11245 py_compile, compileall and zipfile.PyZipFile. 11246 11247 - Issue #7904: Changes to urllib.parse.urlsplit to handle schemes as defined by 11248 RFC3986. Anything before :// is considered a scheme and is followed by an 11249 authority (or netloc) and by '/' led path, which is optional. 11250 11251 - Issue #6045: dbm.gnu databases now support get() and setdefault() methods. 11252 11253 - Issue #10620: `python -m unittest` can accept file paths instead of module 11254 names for running specific tests. 11255 11256 - Issue #9424: Deprecate the `unittest.TestCase` methods `assertEquals`, 11257 `assertNotEquals`, `assertAlmostEquals`, `assertNotAlmostEquals` and `assert_` 11258 and replace them with the correct methods in the Python test suite. 11259 11260 - Issue #10272: The ssl module now raises socket.timeout instead of a generic 11261 SSLError on socket timeouts. 11262 11263 - Issue #10528: Allow translators to reorder placeholders in localizable 11264 messages from argparse. 11265 11266 - Issue #10497: Fix incorrect use of gettext in argparse. 11267 11268 - Issue #10478: Reentrant calls inside buffered IO objects (for example by 11269 way of a signal handler) now raise a RuntimeError instead of freezing the 11270 current process. 11271 11272 - logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests. 11273 11274 - Issue #10549: Fix pydoc traceback when text-documenting certain classes. 11275 11276 - Issue #2001: New HTML server with enhanced Web page features. Patch by Ron 11277 Adam. 11278 11279 - Issue #10360: In WeakSet, do not raise TypeErrors when testing for membership 11280 of non-weakrefable objects. 11281 11282 - Issue #940286: pydoc.Helper.help() ignores input/output init parameters. 11283 11284 - Issue #1745035: Add a command size and data size limit to smtpd.py, to prevent 11285 DoS attacks. Patch by Savio Sena. 11286 11287 - Issue #4925: Add filename to error message when executable can't be found in 11288 subprocess. 11289 11290 - Issue #10391: Don't dereference invalid memory in error messages in the ast 11291 module. 11292 11293 - Issue #10027: st_nlink was not being set on Windows calls to os.stat or 11294 os.lstat. Patch by Hirokazu Yamamoto. 11295 11296 - Issue #9333: Expose os.symlink only when the SeCreateSymbolicLinkPrivilege is 11297 held by the user's account, i.e., when the function can actually be used. 11298 11299 - Issue #8879: Add os.link support for Windows. 11300 11301 - Issue #7911: ``unittest.TestCase.longMessage`` defaults to True for improved 11302 failure messages by default. Patch by Mark Roddy. 11303 11304 - Issue #1486713: HTMLParser now has an optional tolerant mode where it tries to 11305 guess at the correct parsing of invalid html. 11306 11307 - Issue #10554: Add context management protocol support to subprocess.Popen objects. 11308 11309 - Issue #8989: email.utils.make_msgid now has a domain parameter that can 11310 override the domain name used in the generated msgid. 11311 11312 - Issue #9299: Add exist_ok parameter to os.makedirs to suppress the 'File 11313 exists' exception when a target directory already exists with the specified 11314 mode. Patch by Ray Allen. 11315 11316 - Issue #9573: os.fork() now works correctly when triggered as a side effect of 11317 a module import. 11318 11319 - Issue #10464: netrc now correctly handles lines with embedded '#' characters. 11320 11321 - Added itertools.accumulate(). 11322 11323 - Issue #4113: Added custom ``__repr__`` method to ``functools.partial``. 11324 Original patch by Daniel Urban. 11325 11326 - Issue #10273: Rename `assertRegexpMatches` and `assertRaisesRegexp` to 11327 `assertRegex` and `assertRaisesRegex`. 11328 11329 - Issue #10535: Enable silenced warnings in unittest by default. 11330 11331 - Issue #9873: The URL parsing functions in urllib.parse now accept ASCII byte 11332 sequences as input in addition to character strings. 11333 11334 - Issue #10586: The statistics API for the new functools.lru_cache has been 11335 changed to a single cache_info() method returning a named tuple. 11336 11337 - Issue #10323: itertools.islice() now consumes the minimum number of inputs 11338 before stopping. Formerly, the final state of the underlying iterator was 11339 undefined. 11340 11341 - Issue #10565: The collections.Iterator ABC now checks for both __iter__ and 11342 __next__. 11343 11344 - Issue #10242: Fixed implementation of unittest.ItemsEqual and gave it a new 11345 more informative name, unittest.CountEqual. 11346 11347 - Issue #10561: In pdb, clear the breakpoints by the breakpoint number. 11348 11349 - Issue #2986: difflib.SequenceMatcher gets a new parameter, autojunk, which can 11350 be set to False to turn off the previously undocumented 'popularity' 11351 heuristic. Patch by Terry Reedy and Eli Bendersky. 11352 11353 - Issue #10534: in difflib, expose bjunk and bpopular sets; deprecate 11354 undocumented and now redundant isbjunk and isbpopular methods. 11355 11356 - Issue #9846: zipfile is now correctly closing underlying file objects. 11357 11358 - Issue #10459: Update CJK character names to Unicode 6.0. 11359 11360 - Issue #4493: urllib.request adds '/' in front of path components which does not 11361 start with '/. Common behavior exhibited by browsers and other clients. 11362 11363 - Issue #6378: idle.bat now runs with the appropriate Python version rather than 11364 the system default. Patch by Sridhar Ratnakumar. 11365 11366 - Issue #10470: 'python -m unittest' will now run test discovery by default, 11367 when no extra arguments have been provided. 11368 11369 - Issue #3709: BaseHTTPRequestHandler will buffer the headers and write to 11370 output stream only when end_headers is invoked. This is a speedup and an 11371 internal optimization. Patch by Andrew Shaaf. 11372 11373 - Issue #10220: Added inspect.getgeneratorstate. Initial patch by Rodolpho 11374 Eckhardt. 11375 11376 - Issue #10453: compileall now uses argparse instead of getopt, and thus 11377 provides clean output when called with '-h'. 11378 11379 - Issue #8078: Add constants for higher baud rates in the termios module. Patch 11380 by Rodolpho Eckhardt. 11381 11382 - Issue #10407: Fix two NameErrors in distutils. 11383 11384 - Issue #10371: Deprecated undocumented functions in the trace module. 11385 11386 - Issue #10467: Fix BytesIO.readinto() after seeking into a position after the 11387 end of the file. 11388 11389 - configparser: 100% test coverage. 11390 11391 - Issue #10499: configparser supports pluggable interpolation handlers. The 11392 default classic interpolation handler is called BasicInterpolation. Another 11393 interpolation handler added (ExtendedInterpolation) which supports the syntax 11394 used by zc.buildout (e.g. interpolation between sections). 11395 11396 - configparser: the SafeConfigParser class has been renamed to ConfigParser. 11397 The legacy ConfigParser class has been removed but its interpolation mechanism 11398 is still available as LegacyInterpolation. 11399 11400 - configparser: Usage of RawConfigParser is now discouraged for new projects 11401 in favor of ConfigParser(interpolation=None). 11402 11403 - Issue #1682942: configparser supports alternative option/value delimiters. 11404 11405 - Issue #5412: configparser supports mapping protocol access. 11406 11407 - Issue #9411: configparser supports specifying encoding for read operations. 11408 11409 - Issue #9421: configparser's getint(), getfloat() and getboolean() methods 11410 accept vars and default arguments just like get() does. 11411 11412 - Issue #9452: configparser supports reading from strings and dictionaries 11413 (thanks to the mapping protocol API, the latter can be used to copy data 11414 between parsers). 11415 11416 - configparser: accepted INI file structure is now customizable, including 11417 comment prefixes, name of the DEFAULT section, empty lines in multiline 11418 values, and indentation. 11419 11420 - Issue #10326: unittest.TestCase instances can be pickled. 11421 11422 - Issue #9926: Wrapped TestSuite subclass does not get __call__ executed. 11423 11424 - Issue #9920: Skip tests for cmath.atan and cmath.atanh applied to complex 11425 zeros on systems where the log1p function fails to respect the sign of zero. 11426 This fixes a test failure on AIX. 11427 11428 - Issue #9732: Addition of getattr_static to the inspect module. 11429 11430 - Issue #10446: Module documentation generated by pydoc now links to a 11431 version-specific online reference manual. 11432 11433 - Make the 'No module named' exception message from importlib consistent. 11434 11435 - Issue #10443: Add the SSLContext.set_default_verify_paths() method. 11436 11437 - Issue #10440: Support RUSAGE_THREAD as a constant in the resource module. 11438 Patch by Robert Collins. 11439 11440 - Issue #10429: IMAP.starttls() stored the capabilities as bytes objects, rather 11441 than strings. 11442 11443 C-API 11444 ----- 11445 11446 - Issue #10557: Added a new API function, PyUnicode_TransformDecimalToASCII(), 11447 which transforms non-ASCII decimal digits in a Unicode string to their ASCII 11448 equivalents. 11449 11450 - Issue #9518: Extend the PyModuleDef_HEAD_INIT macro to explicitly 11451 zero-initialize all fields, fixing compiler warnings seen when building 11452 extension modules with gcc with "-Wmissing-field-initializers" (implied by 11453 "-W"). 11454 11455 - Issue #10255: Fix reference leak in Py_InitializeEx(). Patch by Neil 11456 Schemenauer. 11457 11458 - structseq.h is now included in Python.h. 11459 11460 - Loosen PyArg_ValidateKeywordArguments to allow dict subclasses. 11461 11462 Tests 11463 ----- 11464 11465 - regrtest.py once again ensures the test directory is removed from sys.path 11466 when it is invoked directly as the __main__ module. 11467 11468 - `python -m test` can be used to run the test suite as well as `python -m 11469 test.regrtest`. 11470 11471 - Do not fail test_socket when the IP address of the local hostname cannot be 11472 looked up. 11473 11474 - Issue #8886: Use context managers throughout test_zipfile. Patch by Eric 11475 Carstensen. 11476 11477 Build 11478 ----- 11479 11480 - Issue #10325: Fix two issues in the fallback definitions for PY_ULLONG_MAX and 11481 PY_LLONG_MAX that made them unsuitable for use in preprocessor conditionals. 11482 11483 Documentation 11484 ------------- 11485 11486 - Issue #10299: List the built-in functions in a table in functions.rst. 11487 11488 11489 What's New in Python 3.2 Alpha 4? 11490 ================================= 11491 11492 *Release date: 13-Nov-2010* 11493 11494 Core and Builtins 11495 ----------------- 11496 11497 - Issue #10372: Import the warnings module only after the IO library is 11498 initialized, so as to avoid bootstrap issues with the '-W' option. 11499 11500 - Issue #10293: Remove obsolete field in the PyMemoryView structure, unused 11501 undocumented value PyBUF_SHADOW, and strangely-looking code in 11502 PyMemoryView_GetContiguous. 11503 11504 - Issue #6081: Add str.format_map(), similar to ``str.format(**mapping)``. 11505 11506 - If FileIO.__init__ fails, close the file descriptor. 11507 11508 - Issue #10221: dict.pop(k) now has a key error message that includes the 11509 missing key (same message d[k] returns for missing keys). 11510 11511 - Issue #5437: A preallocated MemoryError instance should not keep traceback 11512 data (including local variables caught in the stack trace) alive infinitely. 11513 11514 - Issue #10186: Fix the SyntaxError caret when the offset is equal to the length 11515 of the offending line. 11516 11517 - Issue #10089: Add support for arbitrary -X options on the command line. They 11518 can be retrieved through a new attribute ``sys._xoptions``. 11519 11520 - Issue #4388: On Mac OS X, decode command line arguments from UTF-8, instead of 11521 the locale encoding. If the LANG (and LC_ALL and LC_CTYPE) environment 11522 variable is not set, the locale encoding is ISO-8859-1, whereas most programs 11523 (including Python) expect UTF-8. Python already uses UTF-8 for the filesystem 11524 encoding and to encode command line arguments on this OS. 11525 11526 - Issue #9713, #10114: Parser functions (e.g. PyParser_ASTFromFile) expect 11527 filenames encoded to the filesystem encoding with the surrogateescape error 11528 handler (to support undecodable bytes), instead of UTF-8 in strict mode. 11529 11530 - Issue #9997: Don't let the name "top" have special significance in scope 11531 resolution. 11532 11533 - Issue #9862: Compensate for broken PIPE_BUF in AIX by hard coding its value as 11534 the default 512 when compiling on AIX. 11535 11536 - Use locale encoding instead of UTF-8 to encode and decode filenames if 11537 Py_FileSystemDefaultEncoding is not set. 11538 11539 - Issue #10095: fp_setreadl() doesn't reopen the file, instead reuse the file 11540 descriptor. 11541 11542 - Issue #9418: Moved private string methods ``_formatter_parser`` and 11543 ``_formatter_field_name_split`` into a new ``_string`` module. 11544 11545 - Issue #9992: Remove PYTHONFSENCODING environment variable. 11546 11547 Library 11548 ------- 11549 11550 - Issue #12943: python -m tokenize support has been added to tokenize. 11551 11552 - Issue #10465: fix broken delegating of attributes by gzip._PaddedFile. 11553 11554 - Issue #10356: Decimal.__hash__(-1) should return -2. 11555 11556 - Issue #1553375: logging: Added stack_info kwarg to display stack information. 11557 11558 - Issue #5111: IPv6 Host in the Header is wrapped inside [ ]. Patch by Chandru. 11559 11560 - Fix Fraction.__hash__ so that Fraction.__hash__(-1) is -2. (See also issue 11561 #10356.) 11562 11563 - Issue #4471: Add the IMAP.starttls() method to enable encryption on standard 11564 IMAP4 connections. Original patch by Lorenzo M. Catucci. 11565 11566 - Issue #1466065: Add 'validate' option to base64.b64decode to raise an error if 11567 there are non-base64 alphabet characters in the input. 11568 11569 - Issue #10386: Add __all__ to token module; this simplifies importing in 11570 tokenize module and prevents leaking of private names through ``import *``. 11571 11572 - Issue #4471: Properly shutdown socket in IMAP.shutdown(). Patch by Lorenzo 11573 M. Catucci. 11574 11575 - Fix IMAP.login() to work properly. 11576 11577 - Issue #9244: multiprocessing pool worker processes could terminate 11578 unexpectedly if the return value of a task could not be pickled. Only the 11579 ``repr`` of such errors are now sent back, wrapped in an 11580 ``MaybeEncodingError`` exception. 11581 11582 - Issue #9244: The ``apply_async()`` and ``map_async()`` methods of 11583 ``multiprocessing.Pool`` now accepts an ``error_callback`` argument. This can 11584 be a callback with the signature ``callback(exc)``, which will be called if 11585 the target raises an exception. 11586 11587 - Issue #10022: The dictionary returned by the ``getpeercert()`` method of SSL 11588 sockets now has additional items such as ``issuer`` and ``notBefore``. 11589 11590 - ``usenetrc`` is now false by default for NNTP objects. 11591 11592 - Issue #1926: Add support for NNTP over SSL on port 563, as well as STARTTLS. 11593 Patch by Andrew Vant. 11594 11595 - Issue #10335: Add tokenize.open(), detect the file encoding using 11596 tokenize.detect_encoding() and open it in read only mode. 11597 11598 - Issue #10321: Add support for binary data to smtplib.SMTP.sendmail, and a new 11599 method send_message to send an email.message.Message object. 11600 11601 - Issue #6011: sysconfig and distutils.sysconfig use the surrogateescape error 11602 handler to parse the Makefile file. Avoid a UnicodeDecodeError if the source 11603 code directory name contains a non-ASCII character and the locale encoding is 11604 ASCII. 11605 11606 - Issue #10329: The trace module writes reports using the input Python script 11607 encoding, instead of the locale encoding. Patch written by Alexander 11608 Belopolsky. 11609 11610 - Issue #10126: Fix distutils' test_build when Python was built with 11611 --enable-shared. 11612 11613 - Issue #9281: Prevent race condition with mkdir in distutils. Patch by 11614 Arfrever. 11615 11616 - Issue #10229: Fix caching error in gettext. 11617 11618 - Issue #10252: Close file objects in a timely manner in distutils code and 11619 tests. Patch by Brian Brazil, completed by ric Araujo. 11620 11621 - Issue #10180: Pickling file objects is now explicitly forbidden, since 11622 unpickling them produced nonsensical results. 11623 11624 - Issue #10311: The signal module now restores errno before returning from its 11625 low-level signal handler. Patch by Hallvard B Furuseth. 11626 11627 - Issue #10282: Add a ``nntp_implementation`` attribute to NNTP objects. 11628 11629 - Issue #10283: Add a ``group_pattern`` argument to NNTP.list(). 11630 11631 - Issue #10155: Add IISCGIHandler to wsgiref.handlers to support IIS CGI 11632 environment better, and to correct unicode environment values for WSGI 1.0.1. 11633 11634 - Issue #10281: nntplib now returns None for absent fields in the OVER/XOVER 11635 response, instead of raising an exception. 11636 11637 - wsgiref now implements and validates PEP 3333, rather than an experimental 11638 extension of PEP 333. (Note: earlier versions of Python 3.x may have 11639 incorrectly validated some non-compliant applications as WSGI compliant; if 11640 your app validates with Python <3.2b1+, but not on this version, it is likely 11641 the case that your app was not compliant.) 11642 11643 - Issue #10280: NNTP.nntp_version should reflect the highest version advertised 11644 by the server. 11645 11646 - Issue #10184: Touch directories only once when extracting a tarfile. 11647 11648 - Issue #10199: New package, ``turtledemo`` now contains selected demo scripts 11649 that were formerly found under Demo/turtle. 11650 11651 - Issue #10265: Close file objects explicitly in sunau. Patch by Brian Brazil. 11652 11653 - Issue #10266: uu.decode didn't close in_file explicitly when it was given as a 11654 filename. Patch by Brian Brazil. 11655 11656 - Issue #10110: Queue objects didn't recognize full queues when the maxsize 11657 parameter had been reduced. 11658 11659 - Issue #10160: Speed up operator.attrgetter. Patch by Christos Georgiou. 11660 11661 - logging: Added style option to basicConfig() to allow %, {} or $-formatting. 11662 11663 - Issue #5729: json.dumps() now supports using a string such as '\t' for 11664 pretty-printing multilevel objects. 11665 11666 - Issue #10253: FileIO leaks a file descriptor when trying to open a file for 11667 append that isn't seekable. Patch by Brian Brazil. 11668 11669 - Support context management protocol for file-like objects returned by mailbox 11670 ``get_file()`` methods. 11671 11672 - Issue #10246: uu.encode didn't close file objects explicitly when filenames 11673 were given to it. Patch by Brian Brazil. 11674 11675 - Issue #10198: fix duplicate header written to wave files when writeframes() is 11676 called without data. 11677 11678 - Close file objects in modulefinder in a timely manner. 11679 11680 - Close an io.TextIOWrapper object in email.parser in a timely manner. 11681 11682 - Close a file object in distutils.sysconfig in a timely manner. 11683 11684 - Close a file object in pkgutil in a timely manner. 11685 11686 - Issue #10233: Close file objects in a timely manner in the tarfile module and 11687 its test suite. 11688 11689 - Issue #10093: ResourceWarnings are now issued when files and sockets are 11690 deallocated without explicit closing. These warnings are silenced by default, 11691 except in pydebug mode. 11692 11693 - tarfile.py: Add support for all missing variants of the GNU sparse extensions 11694 and create files with holes when extracting sparse members. 11695 11696 - Issue #10218: Return timeout status from ``Condition.wait`` in threading. 11697 11698 - Issue #7351: Add ``zipfile.BadZipFile`` spelling of the exception name and 11699 deprecate the old name ``zipfile.BadZipfile``. 11700 11701 - Issue #5027: The standard ``xml`` namespace is now understood by 11702 xml.sax.saxutils.XMLGenerator as being bound to 11703 http://www.w3.org/XML/1998/namespace. Patch by Troy J. Farrell. 11704 11705 - Issue #5975: Add csv.unix_dialect class. 11706 11707 - Issue #7761: telnetlib.interact failures on Windows fixed. 11708 11709 - logging: Added style option to Formatter to allow %, {} or $-formatting. 11710 11711 - Issue #5178: Added tempfile.TemporaryDirectory class that can be used as a 11712 context manager. 11713 11714 - Issue #1349106: Generator (and BytesGenerator) flatten method and Header 11715 encode method now support a 'linesep' argument. 11716 11717 - Issue #5639: Add a *server_hostname* argument to ``SSLContext.wrap_socket`` in 11718 order to support the TLS SNI extension. ``HTTPSConnection`` and ``urlopen()`` 11719 also use this argument, so that HTTPS virtual hosts are now supported. 11720 11721 - Issue #10166: Avoid recursion in pstats Stats.add() for many stats items. 11722 11723 - Issue #10163: Skip unreadable registry keys during mimetypes initialization. 11724 11725 - logging: Made StreamHandler terminator configurable. 11726 11727 - logging: Allowed filters to be just callables. 11728 11729 - logging: Added tests for _logRecordClass changes. 11730 11731 - Issue #10092: Properly reset locale in calendar.Locale*Calendar classes. 11732 11733 - logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to 11734 increase flexibility of LogRecord creation. 11735 11736 - Issue #5117: Case normalization was needed on ntpath.relpath(). Also fixed 11737 root directory issue on posixpath.relpath(). (Ported working fixes from 11738 ntpath.) 11739 11740 - Issue #1343: xml.sax.saxutils.XMLGenerator now has an option 11741 short_empty_elements to direct it to use self-closing tags when appropriate. 11742 11743 - Issue #9807 (part 1): Expose the ABI flags in sys.abiflags. Add --abiflags 11744 switch to python-config for command line access. 11745 11746 - Issue #6098: Don't claim DOM level 3 conformance in minidom. 11747 11748 - Issue #5762: Fix AttributeError raised by ``xml.dom.minidom`` when an empty 11749 XML namespace attribute is encountered. 11750 11751 - Issue #2830: Add the ``html.escape()`` function, which quotes all problematic 11752 characters by default. Deprecate ``cgi.escape()``. 11753 11754 - Issue #9409: Fix the regex to match all kind of filenames, for interactive 11755 debugging in doctests. 11756 11757 - Issue #9183: ``datetime.timezone(datetime.timedelta(0))`` will now return the 11758 same instance as ``datetime.timezone.utc``. 11759 11760 - Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module, where 11761 supported by the system. Patch by Nikita Vetoshkin. 11762 11763 - Issue #10063: file:// scheme will stop accessing remote hosts via ftp 11764 protocol. file:// urls had fallback to access remote hosts via ftp. This was 11765 not correct, change is made to raise a URLError when a remote host is tried to 11766 access via file:// scheme. 11767 11768 - Issue #1710703: Write structures for an empty ZIP archive when a ZipFile is 11769 created in modes 'a' or 'w' and then closed without adding any files. Raise 11770 BadZipfile (rather than IOError) when opening small non-ZIP files. 11771 11772 - Issue #10041: The signature of optional arguments in socket.makefile() didn't 11773 match that of io.open(), and they also didn't get forwarded properly to 11774 TextIOWrapper in text mode. Patch by Kai Zhu. 11775 11776 - Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and 11777 urllib.request.urlopen now take optional arguments to allow for server 11778 certificate checking, as recommended in public uses of HTTPS. 11779 11780 - Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the 11781 current directory was deleted. Patch written by W. Trevor King. 11782 11783 - Issue #3873: Speed up unpickling from file objects that have a peek() method. 11784 11785 - Issue #10075: Add a session_stats() method to SSLContext objects. 11786 11787 - Issue #9948: Fixed problem of losing filename case information. 11788 11789 Extension Modules 11790 ----------------- 11791 11792 - Issue #5109: array.array constructor will now use fast code when 11793 initial data is provided in an array object with correct type. 11794 11795 - Issue #6317: Now winsound.PlaySound only accepts unicode. 11796 11797 - Issue #6317: Now winsound.PlaySound can accept non ascii filename. 11798 11799 - Issue #9377: Use Unicode API for gethostname on Windows. 11800 11801 - Issue #10143: Update "os.pathconf" values. 11802 11803 - Issue #6518: Support context management protocol for ossaudiodev types. 11804 11805 - Issue #678250: Make mmap flush a noop on ACCESS_READ and ACCESS_COPY. 11806 11807 - Issue #9054: Fix a crash occurring when using the pyexpat module with expat 11808 version 2.0.1. 11809 11810 - Issue #5355: Provide mappings from Expat error numbers to string descriptions 11811 and backwards, in order to actually make it possible to analyze error codes 11812 provided by ExpatError. 11813 11814 - The Unicode database was updated to 6.0.0. 11815 11816 C-API 11817 ----- 11818 11819 - Issue #10288: The deprecated family of "char"-handling macros 11820 (ISLOWER()/ISUPPER()/etc) have now been removed: use Py_ISLOWER() etc instead. 11821 11822 - Issue #9778: Hash values are now always the size of pointers. A new Py_hash_t 11823 type has been introduced. 11824 11825 Tools/Demos 11826 ----------- 11827 11828 - Issue #10117: Tools/scripts/reindent.py now accepts source files that use 11829 encoding other than ASCII or UTF-8. Source encoding is preserved when 11830 reindented code is written to a file. 11831 11832 - Issue #7287: Demo/imputil/knee.py was removed. 11833 11834 Tests 11835 ----- 11836 11837 - Issue #3699: Fix test_bigaddrspace and extend it to test bytestrings as well 11838 as unicode strings. Initial patch by Sandro Tosi. 11839 11840 - Issue #10294: Remove dead code form test_unicode_file. 11841 11842 - Issue #10123: Don't use non-ascii filenames in test_doctest tests. Add a new 11843 test specific to unicode (non-ascii name and filename). 11844 11845 Build 11846 ----- 11847 11848 - Issue #10268: Add a --enable-loadable-sqlite-extensions option to configure. 11849 11850 - Issue #8852: Allow the socket module to build on OpenSolaris. 11851 11852 - Drop -OPT:Olimit compiler option. 11853 11854 - Issue #10094: Use versioned .so files on GNU/kfreeBSD and the GNU Hurd. 11855 11856 - Accept Oracle Berkeley DB 5.0 and 5.1 as backend for the dbm extension. 11857 11858 - Issue #7473: avoid link errors when building a framework with a different set 11859 of architectures than the one that is currently installed. 11860 11861 11862 What's New in Python 3.2 Alpha 3? 11863 ================================= 11864 11865 *Release date: 09-Oct-2010* 11866 11867 Core and Builtins 11868 ----------------- 11869 11870 - Issue #10068: Global objects which have reference cycles with their module's 11871 dict are now cleared again. This causes issue #7140 to appear again. 11872 11873 - Issue #9738: Document PyErr_SetString() and PyErr_SetFromErrnoWithFilename() 11874 encodings. 11875 11876 - ast.literal_eval() can now handle negative numbers. It is also a little more 11877 liberal in what it accepts without compromising the safety of the evaluation. 11878 For example, 3j+4 and 3+4+5 are both accepted. 11879 11880 - Issue #10006: type.__abstractmethods__ now raises an AttributeError. As a 11881 result metaclasses can now be ABCs (see #9533). 11882 11883 - Issue #8670: ctypes.c_wchar supports non-BMP characters with 32 bits wchar_t. 11884 11885 - Issue #8670: PyUnicode_AsWideChar() and PyUnicode_AsWideCharString() replace 11886 UTF-16 surrogate pairs by single non-BMP characters for 16 bits Py_UNICODE and 11887 32 bits wchar_t (eg. Linux in narrow build). 11888 11889 - Issue #10003: Allow handling of SIGBREAK on Windows. Fixes a regression 11890 introduced by issue #9324. 11891 11892 - Issue #9979: Create function PyUnicode_AsWideCharString(). 11893 11894 - Issue #7397: Mention that importlib.import_module() is probably what someone 11895 really wants to be using in __import__'s docstring. 11896 11897 - Issue #8521: Allow CreateKeyEx, OpenKeyEx, and DeleteKeyEx functions of winreg 11898 to use named arguments. 11899 11900 - Issue #9930: Remove bogus subtype check that was causing (e.g.) 11901 float.__rdiv__(2.0, 3) to return NotImplemented instead of the expected 1.5. 11902 11903 - Issue #9808: Implement os.getlogin for Windows. Patch by Jon Anglin. 11904 11905 - Issue #9901: Destroying the GIL in Py_Finalize() can fail if some other 11906 threads are still running. Instead, reinitialize the GIL on a second call to 11907 Py_Initialize(). 11908 11909 - All SyntaxErrors now have a column offset and therefore a caret when the error 11910 is printed. 11911 11912 - Issue #9252: PyImport_Import no longer uses a fromlist hack to return the 11913 module that was imported, but instead gets the module from sys.modules. 11914 11915 - Issue #9213: The range type_items now provides index() and count() methods, to 11916 conform to the Sequence ABC. Patch by Daniel Urban and Daniel Stutzbach. 11917 11918 - Issue #7994: Issue a PendingDeprecationWarning if object.__format__ is called 11919 with a non-empty format string. This is an effort to future-proof user 11920 code. If a derived class does not currently implement __format__ but later 11921 adds its own __format__, it would most likely break user code that had 11922 supplied a format string. This will be changed to a DeprecationWaring in 11923 Python 3.3 and it will be an error in Python 3.4. 11924 11925 - Issue #9828: Destroy the GIL in Py_Finalize(), so that it gets properly 11926 re-created on a subsequent call to Py_Initialize(). The problem (a crash) 11927 wouldn't appear in 3.1 or 2.7 where the GIL's structure is more trivial. 11928 11929 - Issue #9210: Configure option --with-wctype-functions was removed. Using the 11930 functions from the libc caused the methods .upper() and lower() to become 11931 locale aware and created subtly wrong results. 11932 11933 - Issue #9738: PyUnicode_FromFormat() and PyErr_Format() raise an error on a 11934 non-ASCII byte in the format string. 11935 11936 - Issue #4617: Previously it was illegal to delete a name from the local 11937 namespace if it occurs as a free variable in a nested block. This limitation 11938 of the compiler has been lifted, and a new opcode introduced (DELETE_DEREF). 11939 11940 - Issue #9804: ascii() now always represents unicode surrogate pairs as a single 11941 ``\UXXXXXXXX``, regardless of whether the character is printable or not. 11942 Also, the "backslashreplace" error handler now joins surrogate pairs into a 11943 single character on UCS-2 builds. 11944 11945 - Issue #9757: memoryview objects get a release() method to release the 11946 underlying buffer (previously this was only done when deallocating the 11947 memoryview), and gain support for the context management protocol. 11948 11949 - Issue #9797: pystate.c wrongly assumed that zero couldn't be a valid 11950 thread-local storage key. 11951 11952 Library 11953 ------- 11954 11955 - Issue #2236: distutils' mkpath ignored the mode parameter. 11956 11957 - Fix typo in one sdist option (medata-check). 11958 11959 - Issue #9199: Fix incorrect use of distutils.cmd.Command.announce. 11960 11961 - Issue #1718574: Fix options that were supposed to accept arguments but did 11962 not in build_clib. 11963 11964 - Issue #9437: Fix building C extensions with non-default LDFLAGS. 11965 11966 - Issue #4661: email can now parse bytes input and generate either converted 11967 7bit output or bytes output. Email version bumped to 5.1.0. 11968 11969 - Issue #1589: Add ssl.match_hostname(), to help implement server identity 11970 verification for higher-level protocols. 11971 11972 - Issue #9759: GzipFile now raises ValueError when an operation is attempted 11973 after the file is closed. Patch by Jeffrey Finkelstein. 11974 11975 - Issue #9042: Fix interaction of custom translation classes and caching in 11976 gettext. 11977 11978 - Issue #6706: asyncore.dispatcher now provides a handle_accepted() method 11979 returning a (sock, addr) pair which is called when a connection has been 11980 established with a new remote endpoint. This is supposed to be used as a 11981 replacement for old handle_accept() and avoids the user to call accept() 11982 directly. 11983 11984 - Issue #9065: tarfile no longer uses "root" as the default for the uname and 11985 gname field. 11986 11987 - Issue #8980: Fixed a failure in distutils.command check that was shadowed by 11988 an environment that does not have docutils. Patch by Arfrever. 11989 11990 - Issue #1050268: parseaddr now correctly quotes double quote and backslash 11991 characters that appear inside quoted strings in email addresses. 11992 11993 - Issue #10004: quoprimime no longer generates a traceback when confronted with 11994 invalid characters after '=' in a Q-encoded word. 11995 11996 - Issue #1491: BaseHTTPServer nows send a ``100 Continue`` response before 11997 sending a 200 OK for the Expect: 100-continue request header. 11998 11999 - Issue #9360: Cleanup and improvements to the nntplib module. The API now 12000 conforms to the philosophy of bytes and unicode separation in Python 3. A 12001 test suite has also been added. 12002 12003 - Issue #9962: GzipFile now has the peek() method. 12004 12005 - Issue #9090: When a socket with a timeout fails with EWOULDBLOCK or EAGAIN, 12006 retry the select() loop instead of bailing out. This is because select() can 12007 incorrectly report a socket as ready for reading (for example, if it received 12008 some data with an invalid checksum). 12009 12010 - Issue #3612: Added new types to ctypes.wintypes. (CHAR and pointers) 12011 12012 - Issue #9950: Fix socket.sendall() crash or misbehaviour when a signal is 12013 received. Now sendall() properly calls signal handlers if necessary, and 12014 retries sending if these returned successfully, including on sockets with a 12015 timeout. 12016 12017 - Issue #9947: logging: Fixed locking bug in stopListening. 12018 12019 - Issue #9945: logging: Fixed locking bugs in addHandler/removeHandler. 12020 12021 - Issue #9936: Fixed executable lines' search in the trace module. 12022 12023 - Issue #9790: Rework imports necessary for samefile and sameopenfile 12024 in ntpath. 12025 12026 - Issue #9928: Properly initialize the types exported by the bz2 module. 12027 12028 - Issue #1675951: Allow GzipFile to work with unseekable file objects. Patch by 12029 Florian Festi. 12030 12031 - Logging: Added QueueListener class to facilitate logging usage for 12032 performance-critical threads. 12033 12034 - Issue #9916: Add some missing errno symbols. 12035 12036 - Issue #9877: Expose sysconfig.get_makefile_filename() 12037 12038 - logging: Added hasHandlers() method to Logger and LoggerAdapter. 12039 12040 - Issue #9908: Fix os.stat() on bytes paths under Windows 7. 12041 12042 - Issue #2643: msync() is not called anymore when deallocating an open mmap 12043 object, only munmap(). 12044 12045 - logging: Changed LoggerAdapter implementation internally, to make it easier to 12046 subclass in a useful way. 12047 12048 - logging: hasHandlers method was added to Logger, and isEnabledFor, 12049 getEffectiveLevel, hasHandlers and setLevel were added to LoggerAdapter. 12050 LoggerAdapter was introduced into the unit tests for logging. 12051 12052 - Issue #1686: Fix string.Template when overriding the pattern attribute. 12053 12054 - Issue #9854: SocketIO objects now observe the RawIOBase interface in 12055 non-blocking mode: they return None when an operation would block (instead of 12056 raising an exception). 12057 12058 - Issue #1730136: Fix the comparison between a tk.font.Font and an object of 12059 another kind. 12060 12061 - Issue #9441: logging has better coverage for rotating file handlers. 12062 12063 - Issue #9865: collections.OrderedDict now has a __sizeof__ method. 12064 12065 - Issue #9854: The default read() implementation in io.RawIOBase now handles 12066 non-blocking readinto() returning None correctly. 12067 12068 - Issue #1552: socket.socketpair() now returns regular socket.socket objects 12069 supporting the whole socket API (rather than the "raw" _socket.socket 12070 objects). 12071 12072 - Issue #9853: Fix the signature of SSLSocket.recvfrom() and SSLSocket.sendto() 12073 to match the corresponding socket methods. 12074 12075 - Issue #9840: Added a decorator to reprlib for wrapping __repr__ methods to make 12076 them handle recursive calls within the same thread. 12077 12078 - logging: Enhanced HTTPHandler with secure and credentials initializers. 12079 12080 - Issue #767645: Set os.path.supports_unicode_filenames to True on Mac OS X. 12081 12082 - Issue #9837: The read() method of ZipExtFile objects (as returned by 12083 ZipFile.open()) could return more bytes than requested. 12084 12085 - Issue #9826: OrderedDict.__repr__ can now handle self-referential values: 12086 d['x'] = d. 12087 12088 - Issue #9825: Using __del__ in the definition of collections.OrderedDict made 12089 it possible for the user to create self-referencing ordered dictionaries which 12090 become permanently uncollectable GC garbage. Reinstated the Python 3.1 12091 approach of using weakref proxies so that reference cycles never get created 12092 in the first place. 12093 12094 - Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and 12095 encode the value with filesystem encoding and surrogateescape (instead of 12096 utf-8 in strict mode) . Patch written by David Watson. 12097 12098 - Issue #9632: Remove sys.setfilesystemencoding() function: use PYTHONFSENCODING 12099 environment variable to set the filesystem encoding at Python startup. 12100 sys.setfilesystemencoding() creates inconsistencies because it is unable to 12101 reencode all filenames in all objects. 12102 12103 - Issue #9410: Various optimizations to the pickle module, leading to speedups 12104 up to 4x (depending on the benchmark). Mostly ported from Unladen Swallow; 12105 initial patch by Alexandre Vassalotti. 12106 12107 - The pprint module now supports printing OrderedDicts in their given order 12108 (formerly, it would sort the keys). 12109 12110 - Logging: Added QueueHandler class to facilitate logging usage with 12111 multiprocessing. 12112 12113 - Issue #9707: Rewritten reference implementation of threading.local which is 12114 friendlier towards reference cycles. This change is not normally visible 12115 since an optimized C implementation (_thread._local) is used instead. 12116 12117 - Issue #6394: os.getppid() is now supported on Windows. Note that it will 12118 still return the id of the parent process after it has exited. This process 12119 id may even have been reused by another unrelated process. 12120 12121 - Issue #9792: In case of connection failure, socket.create_connection() would 12122 swallow the exception and raise a new one, making it impossible to fetch the 12123 original errno, or to filter timeout errors. Now the original error is 12124 re-raised. 12125 12126 - Issue #9758: When fcntl.ioctl() was called with mutable_flag set to True, and 12127 the passed buffer was exactly 1024 bytes long, the buffer wouldn't be updated 12128 back after the system call. Original patch by Brian Brazil. 12129 12130 - Updates to the random module: 12131 12132 * Document which parts of the module are guaranteed to stay the same across 12133 versions and which parts are subject to change. 12134 12135 * Update the seed() method to use all of the bits in a string instead of just 12136 the hash value. This makes better use of the seed value and assures the 12137 seeding is platform independent. Issue #7889. 12138 12139 * Improved the random()-->integer algorithm used in choice(), shuffle(), 12140 sample(), randrange(), and randint(). Formerly, it used int(n*random()) 12141 which has a slight bias whenever n is not a power of two. Issue #9025. 12142 12143 * Improved documentation of arguments to randrange(). Issue #9379. 12144 12145 - collections.OrderedDict now supports a new method for repositioning keys to 12146 either end. 12147 12148 - Issue #9754: Similarly to assertRaises and assertRaisesRegexp, unittest test 12149 cases now also have assertWarns and assertWarnsRegexp methods to check that a 12150 given warning type was triggered by the code under test. 12151 12152 - Issue #5506: BytesIO objects now have a getbuffer() method exporting a view of 12153 their contents without duplicating them. The view is both readable and 12154 writable. 12155 12156 - Issue #7566: Implement os.path.sameopenfile for Windows. 12157 12158 - Issue #9293: I/O streams now raise ``io.UnsupportedOperation`` when an 12159 unsupported operation is attempted (for example, writing to a file open only 12160 for reading). 12161 12162 - hashlib has two new constant attributes: algorithms_guaranteed and 12163 algorithms_available that respectively list the names of hash algorithms 12164 guaranteed to exist in all Python implementations and the names of hash 12165 algorithms available in the current process. 12166 12167 - A new package ``concurrent.futures`` as defined by PEP 3148. 12168 12169 C-API 12170 ----- 12171 12172 - Add PyErr_SyntaxLocationEx, which supports passing a column offset. 12173 12174 - Issue #9834: Don't segfault in PySequence_GetSlice, PySequence_SetSlice, or 12175 PySequence_DelSlice when the object doesn't have any mapping operations 12176 defined. 12177 12178 Tools/Demos 12179 ----------- 12180 12181 - Issue #9188: The gdb extension now handles correctly narrow (UCS2) as well as 12182 wide (UCS4) unicode builds for both the host interpreter (embedded inside gdb) 12183 and the interpreter under test. 12184 12185 Tests 12186 ----- 12187 12188 - Issue #9308: Added tests for importing encoded modules that do not 12189 depend on specific stdlib modules being encoded in a certain way. 12190 12191 - Issue #1051: Add a script (Lib/test/make_ssl_certs.py) to generate the custom 12192 certificate and private key files used by SSL-related certs. 12193 12194 - Issue #9978: Wait until subprocess completes initialization. (Win32KillTests 12195 in test_os) 12196 12197 - Issue #7110: regrtest now sends test failure reports and single-failure 12198 tracebacks to stderr rather than stdout. 12199 12200 - Issue #9628: fix runtests.sh -x option so more than one test can be excluded. 12201 12202 - Issue #9899: Fix test_tkinter.test_font on various platforms. Patch by Ned 12203 Deily. 12204 12205 - Issue #9894: Do not hardcode ENOENT in test_subprocess. 12206 12207 - Issue #9315: Added tests for the trace module. Patch by Eli Bendersky. 12208 12209 - Issue #9323: Make test.regrtest.__file__ absolute, this was not always the 12210 case when running profile or trace, for example. 12211 12212 - Issue #9568: Fix test_urllib2_localnet on OS X 10.3. 12213 12214 Build 12215 ----- 12216 12217 - Issue #10062: Allow building on platforms which do not have sem_timedwait. 12218 12219 - Issue #10054: Some platforms provide uintptr_t in inttypes.h. Patch by Akira 12220 Kitada. 12221 12222 - Issue #10055: Make json C89-compliant in UCS4 mode. 12223 12224 - Issue #9552: Avoid unnecessary rebuild of OpenSSL. (Windows) 12225 12226 - Issue #1633863: Don't ignore $CC under AIX. 12227 12228 - Issue #9810: Compile bzip2 source files in Python's project file directly. It 12229 used to be built with bzip2's makefile. 12230 12231 - Issue #9848: Stopping trying to build _weakref in setup.py as it is a built-in 12232 module. 12233 12234 - Issue #9806: python-config now has an ``--extension-suffix`` option that 12235 outputs the suffix for dynamic libraries including the ABI version name 12236 defined by PEP 3149. 12237 12238 - Issue #941346: Improve the build process under AIX and allow Python to be 12239 built as a shared library. Patch by Sbastien Sabl. 12240 12241 - Issue #4026: Make the fcntl extension build under AIX. Patch by Sbastien 12242 Sabl. 12243 12244 - Issue #9701: The MacOSX installer can patch the shell profile to ensure that 12245 the "bin" directory inside the framework is on the shell's search path. This 12246 feature now also supports the ZSH shell. 12247 12248 12249 What's New in Python 3.2 Alpha 2? 12250 ================================= 12251 12252 *Release date: 05-Sep-2010* 12253 12254 Core and Builtins 12255 ----------------- 12256 12257 - Issue #9225: Remove the ROT_FOUR and DUP_TOPX opcode, the latter replaced by 12258 the new (and simpler) DUP_TOP_TWO. Performance isn't changed, but our 12259 bytecode is a bit simplified. Patch by Demur Rumed. 12260 12261 - Issue #9766: Rename poorly named variables exposed by _warnings to prevent 12262 confusion with the proper variables names from 'warnings' itself. 12263 12264 - Issue #9212: dict_keys and dict_items now provide the isdisjoint() method, to 12265 conform to the Set ABC. Patch by Daniel Urban. 12266 12267 - Issue #9737: Fix a crash when trying to delete a slice or an item from a 12268 memoryview object. 12269 12270 - Issue #9549: sys.setdefaultencoding() and PyUnicode_SetDefaultEncoding() are 12271 now removed, since their effect was inexistent in 3.x (the default encoding is 12272 hardcoded to utf-8 and cannot be changed). 12273 12274 - Issue #7415: PyUnicode_FromEncodedObject() now uses the new buffer API 12275 properly. Patch by Stefan Behnel. 12276 12277 - Issue #5553: The Py_LOCAL_INLINE macro now results in inlining on most 12278 platforms. Previously, it inlined only when using Microsoft Visual C. 12279 12280 - Issue #9712: Fix tokenize on identifiers that start with non-ascii names. 12281 12282 - Issue #9688: __basicsize__ and __itemsize__ must be accessed as Py_ssize_t. 12283 12284 - Issue #9684: Added a definition for SIZEOF_WCHAR_T to PC/pyconfig.h, to match 12285 the pyconfig.h generated by configure on other systems. 12286 12287 - Issue #9666: Only catch AttributeError in hasattr(). All other exceptions that 12288 occur during attribute lookup are now propagated to the caller. 12289 12290 - Issue #8622: Add PYTHONFSENCODING environment variable to override the 12291 filesystem encoding. 12292 12293 - Issue #5127: The C functions that access the Unicode Database now accept and 12294 return characters from the full Unicode range, even on narrow unicode builds 12295 (Py_UNICODE_TOLOWER, Py_UNICODE_ISDECIMAL, and others). A visible difference 12296 in Python is that unicodedata.numeric() now returns the correct value for 12297 large code points, and repr() may consider more characters as printable. 12298 12299 - Issue #9425: Create PyModule_GetFilenameObject() function to get the filename 12300 as a unicode object, instead of a byte string. Function needed to support 12301 unencodable filenames. Deprecate PyModule_GetFilename() in favor on the new 12302 function. 12303 12304 - Issue #8063: Call _PyGILState_Init() earlier in Py_InitializeEx(). 12305 12306 - Issue #9612: The set object is now 64-bit clean under Windows. 12307 12308 - Issue #8202: sys.argv[0] is now set to '-m' instead of '-c' when searching for 12309 the module file to be executed with the -m command line option. 12310 12311 - Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr() functions to 12312 write a message formatted by PyUnicode_FromFormatV() to sys.stdout and 12313 sys.stderr. 12314 12315 - Issue #9542: Create PyUnicode_FSDecoder() function, a ParseTuple converter: 12316 decode bytes objects to unicode using PyUnicode_DecodeFSDefaultAndSize(); str 12317 objects are output as-is. 12318 12319 - Issue #9203: Computed gotos are now enabled by default on supported compilers 12320 (which are detected by the configure script). They can still be disable 12321 selectively by specifying --without-computed-gotos. 12322 12323 - Issue #9425: Create PyErr_WarnFormat() function, similar to PyErr_WarnEx() but 12324 use PyUnicode_FromFormatV() to format the warning message. 12325 12326 - Issue #8530: Prevent stringlib fastsearch from reading beyond the front of an 12327 array. 12328 12329 - Issue #5319: Print an error if flushing stdout fails at interpreter shutdown. 12330 12331 - Issue #9337: The str() of a float or complex number is now identical to its 12332 repr(). 12333 12334 - Issue #9416: Fix some issues with complex formatting where the output with no 12335 type specifier failed to match the str output: 12336 12337 - format(complex(-0.0, 2.0), '-') omitted the real part from the output, 12338 - format(complex(0.0, 2.0), '-') included a sign and parentheses. 12339 12340 Extension Modules 12341 ----------------- 12342 12343 - Issue #8013: time.asctime and time.ctime no longer call system 12344 asctime and ctime functions. The year range for time.asctime is now 12345 1900 through maxint. The range for time.ctime is the same as for 12346 time.localtime. The string produced by these functions is longer 12347 than 24 characters when year is greater than 9999. 12348 12349 - Issue #6608: time.asctime is now checking struct tm fields its input 12350 before passing it to the system asctime. Patch by MunSic Jeong. 12351 12352 - Issue #8734: Avoid crash in msvcrt.get_osfhandle() when an invalid file 12353 descriptor is provided. Patch by Pascal Chambon. 12354 12355 - Issue #7736: Release the GIL around calls to opendir() and closedir() in the 12356 posix module. Patch by Marcin Bachry. 12357 12358 - Issue #4835: make PyLong_FromSocket_t() and PyLong_AsSocket_t() private to the 12359 socket module, and fix the width of socket descriptors to be correctly 12360 detected under 64-bit Windows. 12361 12362 - Issue #1027206: Support IDNA in gethostbyname, gethostbyname_ex, getaddrinfo 12363 and gethostbyaddr. getnameinfo is now restricted to numeric addresses as 12364 input. 12365 12366 - Issue #9214: Set operations on a KeysView or ItemsView in collections now 12367 correctly return a set. Patch by Eli Bendersky. 12368 12369 - Issue #5737: Add Solaris-specific mnemonics in the errno module. Patch by 12370 Matthew Ahrens. 12371 12372 - Restore GIL in nis_cat in case of error. Decode NIS data to fs encoding, using 12373 the surrogate error handler. 12374 12375 - Issue #665761: ``functools.reduce()`` will no longer mask exceptions other 12376 than ``TypeError`` raised by the iterator argument. 12377 12378 - Issue #9570: Use PEP 383 decoding in os.mknod and os.mkfifo. 12379 12380 - Issue #6915: Under Windows, os.listdir() didn't release the Global Interpreter 12381 Lock around all system calls. Original patch by Ryan Kelly. 12382 12383 - Issue #8524: Add a detach() method to socket objects, so as to put the socket 12384 into the closed state without closing the underlying file descriptor. 12385 12386 - Issue #477863: Emit a ResourceWarning at shutdown if gc.garbage is not empty. 12387 12388 - Issue #6869: Fix a refcount problem in the _ctypes extension. 12389 12390 - Issue #5504: ctypes should now work with systems where mmap can't be 12391 PROT_WRITE and PROT_EXEC. 12392 12393 - Issue #9507: Named tuple repr will now automatically display the right name in 12394 a tuple subclass. 12395 12396 - Issue #9324: Add parameter validation to signal.signal on Windows in order to 12397 prevent crashes. 12398 12399 - Issue #9526: Remove some outdated (int) casts that were preventing the array 12400 module from working correctly with arrays of more than 2**31 elements. 12401 12402 - Fix memory leak in ssl._ssl._test_decode_cert. 12403 12404 - Issue #8065: Fix memory leak in readline module (from failure to free the 12405 result of history_get_history_state()). 12406 12407 - Issue #9450: Fix memory leak in readline.replace_history_item and 12408 readline.remove_history_item for readline version >= 5.0. 12409 12410 - Issue #8105: Validate file descriptor passed to mmap.mmap on Windows. 12411 12412 - Issue #8046: Add context management protocol support and .closed property to mmap 12413 objects. 12414 12415 Library 12416 ------- 12417 12418 - Issue #7451: Improve decoding performance of JSON objects, and reduce the 12419 memory consumption of said decoded objects when they use the same strings as 12420 keys. 12421 12422 - Issue #1100562: Fix deep-copying of objects derived from the list and dict 12423 types. Patch by Michele Orr and Bjrn Lindqvist. 12424 12425 - Issue #9753: Fixed socket.dup, which did not always work correctly on Windows. 12426 12427 - Issue #9421: Made the get<type> methods consistently accept the vars and 12428 default arguments on all parser classes. 12429 12430 - Issue #7005: Fixed output of None values for RawConfigParser.write and 12431 ConfigParser.write. 12432 12433 - Issue #8990: array.fromstring() and array.tostring() get renamed to 12434 frombytes() and tobytes(), respectively, to avoid confusion. Furthermore, 12435 array.frombytes(), array.extend() as well as the array.array() constructor now 12436 accept bytearray objects. Patch by Thomas Jollans. 12437 12438 - Issue #808164: Fixed socket.close to avoid references to globals, to avoid 12439 issues when socket.close is called from a __del__ method. 12440 12441 - Issue #9706: ssl module provides a better error handling in various 12442 circumstances. 12443 12444 - Issue #1868: Eliminate subtle timing issues in thread-local objects by getting 12445 rid of the cached copy of thread-local attribute dictionary. 12446 12447 - Issue #1512791: In setframerate() in the wave module, non-integral frame rates 12448 are rounded to the nearest integer. 12449 12450 - Issue #8797: urllib2 does a retry for Basic Authentication failure instead of 12451 falling into recursion. 12452 12453 - Issue #1194222: email.utils.parsedate now returns RFC2822 compliant four 12454 character years even if the message contains RFC822 two character years. 12455 12456 - Issue #8750: Fixed MutableSet's methods to correctly handle reflexive 12457 operations on its self, namely x -= x and x ^= x. 12458 12459 - Issue #9129: smtpd.py is vulnerable to DoS attacks deriving from missing error 12460 handling when accepting a new connection. 12461 12462 - Issue #9601: ftplib now provides a workaround for non-compliant 12463 implementations such as IIS shipped with Windows server 2003 returning invalid 12464 response codes for MKD and PWD commands. 12465 12466 - Issue #658749: asyncore's connect() method now correctly interprets winsock 12467 errors. 12468 12469 - Issue #9501: Fixed logging regressions in cleanup code. 12470 12471 - Fix functools.total_ordering() to skip methods inherited from object. 12472 12473 - Issue #9572: Importlib should not raise an exception if a directory it thought 12474 it needed to create was done concurrently by another process. 12475 12476 - Issue #9617: Signals received during a low-level write operation aren't 12477 ignored by the buffered IO layer anymore. 12478 12479 - Issue #843590: Make "macintosh" an alias to the "mac_roman" encoding. 12480 12481 - Create os.fsdecode(): decode from the filesystem encoding with surrogateescape 12482 error handler, or strict error handler on Windows. 12483 12484 - Issue #3488: Provide convenient shorthand functions ``gzip.compress`` and 12485 ``gzip.decompress``. Original patch by Anand B. Pillai. 12486 12487 - Issue #8807: poplib.POP3_SSL class now accepts a context parameter, which is a 12488 ssl.SSLContext object allowing bundling SSL configuration options, 12489 certificates and private keys into a single (potentially long-lived) 12490 structure. 12491 12492 - Issue #8866: parameters passed to socket.getaddrinfo can now be specified as 12493 single keyword arguments. 12494 12495 - Address XXX comment in dis.py by having inspect.py prefer to reuse the dis.py 12496 compiler flag values over defining its own. 12497 12498 - Issue #9147: Added dis.code_info() which is similar to show_code() but returns 12499 formatted code information in a string rather than displaying on screen. 12500 12501 - Issue #9567: functools.update_wrapper now adds a __wrapped__ attribute 12502 pointing to the original callable. 12503 12504 - Issue #3445: functools.update_wrapper now tolerates missing attributes on 12505 wrapped callables. 12506 12507 - Issue #5867: Add abc.abstractclassmethod and abc.abstractstaticmethod. 12508 12509 - Issue #9605: posix.getlogin() decodes the username with file filesystem 12510 encoding and surrogateescape error handler. Patch written by David Watson. 12511 12512 - Issue #9604: posix.initgroups() encodes the username using the fileystem 12513 encoding and surrogateescape error handler. Patch written by David Watson. 12514 12515 - Issue #9603: posix.ttyname() and posix.ctermid() decode the terminal name 12516 using the filesystem encoding and surrogateescape error handler. Patch written 12517 by David Watson. 12518 12519 - Issue #7647: The posix module now has the ST_RDONLY and ST_NOSUID constants, 12520 for use with the statvfs() function. Patch by Adam Jackson. 12521 12522 - Issue #8688: MANIFEST files created by distutils now include a magic comment 12523 indicating they are generated. Manually maintained MANIFESTs without this 12524 marker will not be overwritten or removed. 12525 12526 - Issue #7467: when reading a file from a ZIP archive, its CRC is checked and a 12527 BadZipfile error is raised if it doesn't match (as used to be the case in 12528 Python 2.5 and earlier). 12529 12530 - Issue #9550: a BufferedReader could issue an additional read when the original 12531 read request had been satisfied, which could block indefinitely when the 12532 underlying raw IO channel was e.g. a socket. Report and original patch by 12533 Jason V. Miller. 12534 12535 - Issue #3757: thread-local objects now support cyclic garbage collection. 12536 Thread-local objects involved in reference cycles will be deallocated timely 12537 by the cyclic GC, even if the underlying thread is still running. 12538 12539 - Issue #9452: Add read_file, read_string, and read_dict to the configparser 12540 API; new source attribute to exceptions. 12541 12542 - Issue #6231: Fix xml.etree.ElementInclude to include the tail of the current 12543 node. 12544 12545 - Issue #8047: Fix the xml.etree serializer to return bytes by default. Use 12546 ``encoding="unicode"`` to generate a Unicode string. 12547 12548 - Issue #8280: urllib2's Request method will remove fragments in the url. This 12549 is how it is supposed to work, wget and curl do the same. Previous behavior 12550 was wrong. 12551 12552 - Issue #6683: For SMTP logins we now try all authentication methods advertised 12553 by the server. Many servers are buggy and advertise authentication methods 12554 they do not support in reality. 12555 12556 - Issue #8814: function annotations (the ``__annotations__`` attribute) are now 12557 included in the set of attributes copied by default by functools.wraps and 12558 functools.update_wrapper. Patch by Terrence Cole. 12559 12560 - Issue #2944: asyncore doesn't handle connection refused correctly. 12561 12562 - Issue #4184: Private attributes on smtpd.SMTPChannel made public and deprecate 12563 the private attributes. Add tests for smtpd module. 12564 12565 - Issue #3196: email header decoding is now forgiving if an RFC2047 encoded word 12566 encoded in base64 is lacking padding. 12567 12568 - Issue #9444: Argparse now uses the first element of prefix_chars as the option 12569 character for the added 'h/help' option if prefix_chars does not contain a 12570 '-', instead of raising an error. 12571 12572 - Issue #7372: Fix pstats regression when stripping paths from profile data 12573 generated with the profile module. 12574 12575 - Issue #9428: Fix running scripts with the profile/cProfile modules from the 12576 command line. 12577 12578 - Issue #7781: Fix restricting stats by entry counts in the pstats interactive 12579 browser. 12580 12581 - Issue #9209: Do not crash in the pstats interactive browser on invalid regular 12582 expressions. 12583 12584 - Update collections.OrderedDict to match the implementation in Py2.7 (based on 12585 lists instead of weakly referenced Link objects). 12586 12587 - Issue #8397: Raise an error when attempting to mix iteration and regular reads 12588 on a BZ2File object, rather than returning incorrect results. 12589 12590 - Issue #9448: Fix a leak of OS resources (mutexes or semaphores) when 12591 re-initializing a buffered IO object by calling its ``__init__`` method. 12592 12593 - Issue #1713: Fix os.path.ismount(), which returned true for symbolic links 12594 across devices. 12595 12596 - Issue #8826: Properly load old-style "expires" attribute in http.cookies. 12597 12598 - Issue #1690103: Fix initial namespace for code run with trace.main(). 12599 12600 - Issue #7395: Fix tracebacks in pstats interactive browser. 12601 12602 - Issue #8230: Fix Lib/test/sortperf.py. 12603 12604 - Issue #8620: when a cmd.Cmd() is fed input that reaches EOF without a final 12605 newline, it no longer truncates the last character of the last command line. 12606 12607 - Issue #5146: Handle UID THREAD command correctly in imaplib. 12608 12609 - Issue #5147: Fix the header generated for cookie files written by 12610 http.cookiejar.MozillaCookieJar. 12611 12612 - Issue #8198: In pydoc, output all help text to the correct stream when 12613 sys.stdout is reassigned. 12614 12615 - Issue #7909: Do not touch paths with the special prefixes ``\\.\`` or ``\\?\`` 12616 in ntpath.normpath(). 12617 12618 - Issue #1286: Allow using fileinput.FileInput as a context manager. 12619 12620 - Add lru_cache() decorator to the functools module. 12621 12622 Tools/Demos 12623 ----------- 12624 12625 - Fix ``Tools/scripts/checkpyc.py`` after PEP 3147. 12626 12627 - Issue #8867: Fix ``Tools/scripts/serve.py`` to work with files containing 12628 non-ASCII content. 12629 12630 Tests 12631 ----- 12632 12633 - Issue #9601: Provide a test case for ftplib.parse257. 12634 12635 - Issue #8857: Provide a test case for socket.getaddrinfo. 12636 12637 - Issue #7564: Skip test_ioctl if another process is attached to /dev/tty. 12638 12639 - Issue #8433: Fix test_curses failure with newer versions of ncurses. 12640 12641 - Issue #9496: Provide a test suite for the rlcompleter module. Patch by 12642 Michele Orr. 12643 12644 - Issue #8687: provide a test suite for sched.py module. 12645 12646 Build 12647 ----- 12648 12649 - Issue #1303434: Generate ZIP file containing all PDBs. 12650 12651 - Issue #9193: PEP 3149 is accepted. 12652 12653 - Issue #3101: Helper functions _add_one_to_index_C() and _add_one_to_index_F() 12654 become _Py_add_one_to_index_C() and _Py_add_one_to_index_F(), respectively. 12655 12656 - Issue #9700: define HAVE_BROKEN_POSIX_SEMAPHORES under AIX 6.x. Patch by 12657 Sbastien Sabl. 12658 12659 - Don't run pgen twice when using make -j. 12660 12661 12662 What's New in Python 3.2 Alpha 1? 12663 ================================= 12664 12665 *Release date: 01-Aug-2010* 12666 12667 Core and Builtins 12668 ----------------- 12669 12670 - Issue #8991: convertbuffer() rejects discontigious buffers. 12671 12672 - Issue #7616: Fix copying of overlapping memoryview slices with the Intel 12673 compiler. 12674 12675 - Issue #8413: structsequence now subclasses tuple. 12676 12677 - Issue #8271: during the decoding of an invalid UTF-8 byte sequence, only the 12678 start byte and the continuation byte(s) are now considered invalid, instead of 12679 the number of bytes specified by the start byte. E.g.: 12680 '\xf1\x80AB'.decode('utf-8', 'replace') now returns u'\ufffdAB' and replaces 12681 with U+FFFD only the start byte ('\xf1') and the continuation byte ('\x80') 12682 even if '\xf1' is the start byte of a 4-bytes sequence. Previous versions 12683 returned a single u'\ufffd'. 12684 12685 - Issue #9011: A negated imaginary literal (e.g., "-7j") now has real part -0.0 12686 rather than 0.0. So "-7j" is now exactly equivalent to "-(7j)". 12687 12688 - Be more specific in error messages about positional arguments. 12689 12690 - Issue #8949: "z" format of PyArg_Parse*() functions doesn't accept bytes 12691 objects, as described in the documentation. 12692 12693 - Issue #6543: Write the traceback in the terminal encoding instead of utf-8. 12694 Fix the encoding of the modules filename. Patch written by Amaury Forgeot 12695 d'Arc. 12696 12697 - Issue #9011: Remove buggy and unnecessary (in 3.x) ST->AST compilation code 12698 dealing with unary minus applied to a constant. The removed code was mutating 12699 the ST, causing a second compilation to fail. 12700 12701 - Issue #850997: mbcs encoding (Windows only) handles errors argument: strict 12702 mode raises unicode errors. The encoder only supports "strict" and "replace" 12703 error handlers, the decoder only supports "strict" and "ignore" error 12704 handlers. Patch written by Mark Hammond. 12705 12706 - Issue #8850: Remove "w" and "w#" formats from PyArg_Parse*() functions, use 12707 "w*" format instead. Add tests for "w*" format. 12708 12709 - Issue #8592: PyArg_Parse*() functions raise a TypeError for "y", "u" and "Z" 12710 formats if the string contains a null byte/character. Write unit tests for 12711 string formats. 12712 12713 - Issue #7490: To facilitate sharing of doctests between 2.x and 3.x test 12714 suites, the IGNORE_EXCEPTION_DETAIL directive now also ignores the module 12715 location of the raised exception. 12716 12717 - Issue #8969: On Windows, use mbcs codec in strict mode to encode and decode 12718 filenames and enable os.fsencode(). 12719 12720 - Issue #9058: Remove assertions about INT_MAX in UnicodeDecodeError. 12721 12722 - Issue #8941: Decoding big endian UTF-32 data in UCS-2 builds could crash the 12723 interpreter with characters outside the Basic Multilingual Plane (higher than 12724 0x10000). 12725 12726 - Issue #8950: (See also issue #5080). Py_ArgParse*() functions now raise 12727 TypeError instead of giving a DeprecationWarning when a float is parsed using 12728 the 'L' code (for long long). (All other integer codes already raise 12729 TypeError in this case.) 12730 12731 - Issue #8922: Normalize the encoding name in PyUnicode_AsEncodedString() to 12732 enable shortcuts for upper case encoding name. Add also a shortcut for 12733 "iso-8859-1" in PyUnicode_AsEncodedString() and PyUnicode_Decode(). 12734 12735 - Issue #8838: Remove codecs.charbuffer_encode() function. The buffer protocol 12736 doesn't support "char buffer" anymore in Python 3. 12737 12738 - Issue #8339: Remove "t#" format of PyArg_Parse*() functions, use "s#" or "s*" 12739 instead. codecs.charbuffer_encode() now accepts modifiable buffer objects 12740 like bytearray. 12741 12742 - Issue #8837: Remove "O?" format of PyArg_Parse*() functions. The format is no 12743 used anymore and it was never documented. 12744 12745 - In str.format(), raise a ValueError when indexes to arguments are too large. 12746 12747 - Issue #2844: Make int('42', n) consistently raise ValueError for invalid 12748 integers n (including n = -909). 12749 12750 - Issue #8188: Introduce a new scheme for computing hashes of numbers (instances 12751 of int, float, complex, decimal.Decimal and fractions.Fraction) that makes it 12752 easy to maintain the invariant that hash(x) == hash(y) whenever x and y have 12753 equal value. 12754 12755 - Issue #8748: Fix two issues with comparisons between complex and integer 12756 objects. (1) The comparison could incorrectly return True in some cases 12757 (2**53+1 == complex(2**53) == 2**53), breaking transitivity of equality. 12758 (2) The comparison raised an OverflowError for large integers, leading to 12759 unpredictable exceptions when combining integers and complex objects in sets 12760 or dicts. 12761 12762 - Issue #8766: Initialize _warnings module before importing the first module. 12763 Fix a crash if an empty directory called "encodings" exists in sys.path. 12764 12765 - Issue #8589: Decode PYTHONWARNINGS environment variable with the file system 12766 encoding and surrogateescape error handler instead of the locale encoding to 12767 be consistent with os.environ. Add PySys_AddWarnOptionUnicode() function. 12768 12769 - PyObject_Dump() encodes unicode objects to utf8 with backslashreplace (instead 12770 of strict) error handler to escape surrogates. 12771 12772 - Issue #8715: Create PyUnicode_EncodeFSDefault() function: Encode a Unicode 12773 object to Py_FileSystemDefaultEncoding with the "surrogateescape" error 12774 handler, and return bytes. If Py_FileSystemDefaultEncoding is not set, fall 12775 back to UTF-8. 12776 12777 - Enable shortcuts for common encodings in PyUnicode_AsEncodedString() for any 12778 error handler, not only the default error handler (strict). 12779 12780 - Issue #8610: Load file system codec at startup, and display a fatal error on 12781 failure. Set the file system encoding to utf-8 (instead of None) if getting 12782 the locale encoding failed, or if nl_langinfo(CODESET) function is missing. 12783 12784 - PyFile_FromFd() uses PyUnicode_DecodeFSDefault() instead of 12785 PyUnicode_FromString() to support surrogates in the filename and use the right 12786 encoding. 12787 12788 - Issue #7507: Quote "!" in pipes.quote(); it is special to some shells. 12789 12790 - PyUnicode_DecodeFSDefaultAndSize() uses surrogateescape error handler. 12791 12792 - Issue #8419: Prevent the dict constructor from accepting non-string keyword 12793 arguments. 12794 12795 - Issue #8124: PySys_WriteStdout() and PySys_WriteStderr() don't execute 12796 indirectly Python signal handlers anymore because mywrite() ignores exceptions 12797 (KeyboardInterrupt). 12798 12799 - Issue #8092: Fix PyUnicode_EncodeUTF8() to support error handler producing 12800 unicode string (eg. backslashreplace). 12801 12802 - Issue #8485: PyUnicode_FSConverter() doesn't accept byteearray objects 12803 anymore, you have to convert your bytearray filenames to bytes. 12804 12805 - Issue #7332: Remove the 16KB stack-based buffer in 12806 PyMarshal_ReadLastObjectFromFile, which doesn't bring any noticeable benefit 12807 compared to the dynamic memory allocation fallback. Patch by Charles-Franois 12808 Natali. 12809 12810 - Issue #8417: Raise an OverflowError when an integer larger than sys.maxsize is 12811 passed to bytes or bytearray. 12812 12813 - Issue #7301: Add environment variable $PYTHONWARNINGS. 12814 12815 - Issue #8329: Don't return the same lists from select.select when no fds are 12816 changed. 12817 12818 - Issue #8259: 1L << (2**31) no longer produces an 'outrageous shift error' on 12819 64-bit machines. The shift count for either left or right shift is permitted 12820 to be up to sys.maxsize. 12821 12822 - Ensure that tokenization of identifiers is not affected by locale. 12823 12824 - Issue #1222585: Added LDCXXSHARED for C++ support. Patch by Arfrever. 12825 12826 - Raise a TypeError when trying to delete a T_STRING_INPLACE struct member. 12827 12828 - Issue #8211: Save/restore CFLAGS around AC_PROG_CC in configure.in, in case it 12829 is set. 12830 12831 - Issue #8226: sys.setfilesystemencoding() raises a LookupError if the encoding 12832 is unknown. 12833 12834 - Issue #1583863: A str subclass can now override the __str__ method. 12835 12836 - Issue #8014: Setting a T_UINT or T_PYSSIZET attribute of an object with 12837 PyMemberDefs could produce an internal error; raise TypeError instead. 12838 12839 - Issue #7845: Rich comparison methods on the complex type now return 12840 NotImplemented rather than raising a TypeError when comparing with an 12841 incompatible type; this allows user-defined classes to implement their own 12842 comparisons with complex. 12843 12844 - Issue #3137: Don't ignore errors at startup, especially a keyboard interrupt 12845 (SIGINT). If an error occurs while importing the site module, the error is 12846 printed and Python exits. Initialize the GIL before importing the site module. 12847 12848 - Issue #7173: Generator finalization could invalidate sys.exc_info(). 12849 12850 - Issue #7544: Preallocate thread memory before creating the thread to avoid a 12851 fatal error in low memory condition. 12852 12853 - Issue #7820: The parser tokenizer restores all bytes in the right if the BOM 12854 check fails. 12855 12856 - Handle errors from looking up __prepare__ correctly. 12857 12858 - Issue #5939: Add additional runtime checking to ensure a valid capsule in 12859 Modules/_ctypes/callproc.c. 12860 12861 - Issue #7309: Fix unchecked attribute access when converting 12862 UnicodeEncodeError, UnicodeDecodeError, and UnicodeTranslateError to strings. 12863 12864 - Issue #6902: Fix problem with built-in types format incorrectly with 0 12865 padding. 12866 12867 - Issue #7988: Fix default alignment to be right aligned for complex.__format__. 12868 Now it matches other numeric types. 12869 12870 - Issue #5988: Remove deprecated functions PyOS_ascii_formatd, 12871 PyOS_ascii_strtod, and PyOS_ascii_atof. Use PyOS_double_to_string and 12872 PyOS_string_to_double instead. See issue #5835 for the original deprecations. 12873 12874 - Issue #7385: Fix a crash in `MemoryView_FromObject` when `PyObject_GetBuffer` 12875 fails. Patch by Florent Xicluna. 12876 12877 - Issue #7788: Fix an interpreter crash produced by deleting a list slice with 12878 very large step value. 12879 12880 - Issue #7766: Change sys.getwindowsversion() return value to a named tuple and 12881 add the additional members returned in an OSVERSIONINFOEX structure. The new 12882 members are service_pack_major, service_pack_minor, suite_mask, and 12883 product_type. 12884 12885 - Issue #7561: Operations on empty bytearrays (such as `int(bytearray())`) could 12886 crash in many places because of the PyByteArray_AS_STRING() macro returning 12887 NULL. The macro now returns a statically allocated empty string instead. 12888 12889 - Issue #6690: Optimize the bytecode for expressions such as `x in {1, 2, 3}`, 12890 where the right hand operand is a set of constants, by turning the set into a 12891 frozenset and pre-building it as a constant. The comparison operation is made 12892 against the constant instead of building a new set each time it is executed (a 12893 similar optimization already existed which turned a list of constants into a 12894 pre-built tuple). Patch and additional tests by Dave Malcolm. 12895 12896 - Issue #7622: Improve the split(), rsplit(), splitlines() and replace() methods 12897 of bytes, bytearray and unicode objects by using a common implementation based 12898 on stringlib's fast search. Patch by Florent Xicluna. 12899 12900 - Issue #7632: Fix various str -> float conversion bugs present in 2.7 alpha 2, 12901 including: (1) a serious 'wrong output' bug that could occur for long (> 40 12902 digit) input strings, (2) a crash in dtoa.c that occurred in debug builds when 12903 parsing certain long numeric strings corresponding to subnormal values, (3) a 12904 memory leak for some values large enough to cause overflow, and (4) a number 12905 of flaws that could lead to incorrectly rounded results. 12906 12907 - The __complex__ method is now looked up on the class of instances to make it 12908 consistent with other special methods. 12909 12910 - Issue #7462: Implement the stringlib fast search algorithm for the `rfind`, 12911 `rindex`, `rsplit` and `rpartition` methods. Patch by Florent Xicluna. 12912 12913 - Issue #7604: Deleting an unset slotted attribute did not raise an 12914 AttributeError. 12915 12916 - Issue #7534: Fix handling of IEEE specials (infinities, nans, negative zero) 12917 in ** operator. The behaviour now conforms to that described in C99 Annex F. 12918 12919 - Issue #1811: improve accuracy and cross-platform consistency for true division 12920 of integers: the result of a/b is now correctly rounded for ints a and b (at 12921 least on IEEE 754 platforms), and in particular does not depend on the 12922 internal representation of an int. 12923 12924 - Issue #6834: replace the implementation for the 'python' and 'pythonw' 12925 executables on OSX. 12926 12927 These executables now work properly with the arch(1) command: ``arch -ppc 12928 python`` will start a universal binary version of python in PPC mode (unlike 12929 previous releases). 12930 12931 - Issue #7466: Segmentation fault when the garbage collector is called in the 12932 middle of populating a tuple. Patch by Florent Xicluna. 12933 12934 - Issue #7419: setlocale() could crash the interpreter on Windows when called 12935 with invalid values. 12936 12937 - Issue #6077: On Windows, files opened with tempfile.TemporaryFile in "wt+" 12938 mode would appear truncated on the first '0x1a' byte (aka. Ctrl+Z). 12939 12940 - Issue #7085: Fix crash when importing some extensions in a thread on MacOSX 12941 10.6. 12942 12943 - Issue #1757126: Fix the cyrillic-asian alias for the ptcp154 encoding. 12944 12945 - Issue #6970: Remove redundant calls when comparing objects that don't 12946 implement the relevant rich comparison methods. 12947 12948 - Issue #7298: Fixes for range and reversed(range(...)). Iteration over 12949 range(a, b, c) incorrectly gave an empty iterator when a, b and c fit in C 12950 long but the length of the range did not. Also fix several cases where 12951 reversed(range(a, b, c)) gave wrong results, and fix a refleak for 12952 reversed(range(a, b, c)) with large arguments. 12953 12954 - Issue #7244: itertools.izip_longest() no longer ignores exceptions raised 12955 during the formation of an output tuple. 12956 12957 - Issue #3297: On wide unicode builds, do not split unicode characters into 12958 surrogates. 12959 12960 - Remove length limitation when constructing a complex number from a string. 12961 12962 - Issue #1087418: Boost performance of bitwise operations for longs. 12963 12964 - Support for AtheOS has been completely removed from the code base. It was 12965 disabled since Python 3.0. 12966 12967 - Support for several legacy threading libraries has been disabled. These 12968 libraries are: Mach C threads, SunOS LWP, GNU pth, Irix threads. Support code 12969 will be entirely removed in 3.3. 12970 12971 - Support for OSF* has been disabled. If nobody stands up, support will be 12972 removed in 3.3. See <http://bugs.python.org/issue8606>. 12973 12974 - Peephole constant folding had missed UNARY_POSITIVE. 12975 12976 - Issue #1722344: threading._shutdown() is now called in Py_Finalize(), which 12977 fixes the problem of some exceptions being thrown at shutdown when the 12978 interpreter is killed. Patch by Adam Olsen. 12979 12980 - Issue #7147: Remove support for compiling Python without complex number 12981 support. 12982 12983 - Issue #7120: logging: Removed import of multiprocessing which is causing crash 12984 in GAE. 12985 12986 - Issue #1754094: Improve the stack depth calculation in the compiler. There 12987 should be no other effect than a small decrease in memory use. Patch by 12988 Christopher Tur Lesniewski-Laas. 12989 12990 - Issue #7065: Fix a crash in bytes.maketrans and bytearray.maketrans when using 12991 byte values greater than 127. Patch by Derk Drukker. 12992 12993 - Issue #1571184: The Unicode database contains properties for more characters. 12994 The tables for code points representing numeric values, white spaces or line 12995 breaks are now generated from the official Unicode Character Database files, 12996 and include information from the Unihan.txt file. 12997 12998 - Issue #7019: Raise ValueError when unmarshalling bad long data, instead of 12999 producing internally inconsistent Python longs. 13000 13001 - Issue #6990: Fix threading.local subclasses leaving old state around after a 13002 reference cycle GC which could be recycled by new locals. 13003 13004 - Issue #5460: Fix an ambiguity in the grammar. 13005 13006 - Issue #1766304: Improve performance of membership tests on range objects. 13007 13008 - Issue #6713: Improve performance of integer -> string conversions. 13009 13010 - Issue #6846: Fix bug where bytearray.pop() returns negative integers. 13011 13012 - Issue #6750: A text file opened with io.open() could duplicate its output when 13013 writing from multiple threads at the same time. 13014 13015 - Issue #6707: dir() on an uninitialized module caused a crash. 13016 13017 - Issue #6540: Fixed crash for bytearray.translate() with invalid parameters. 13018 13019 - Issue #6573: set.union() stopped processing inputs if an instance of self 13020 occurred in the argument chain. 13021 13022 - Issue #6070: On posix platforms import no longer copies the execute bit from 13023 the .py file to the .pyc file if it is set. 13024 13025 - Issue #1616979: Added the cp720 (Arabic DOS) encoding. 13026 13027 - Issue #6428: Since Python 3.0, the __bool__ method must return a bool object, 13028 and not an int. Fix the corresponding error message, and the documentation. 13029 13030 - The deprecated PyCObject has been removed. 13031 13032 - Issue #6347: Include inttypes.h as well as stdint.h in pyport.h. This fixes a 13033 build failure on HP-UX: int32_t and uint32_t are defined in inttypes.h instead 13034 of stdint.h on that platform. 13035 13036 - Issue #6373: Fixed a SystemError when encoding with the latin-1 codec and the 13037 'surrogateescape' error handler, a string which contains unpaired surrogates. 13038 13039 - Issue #4856: Remove checks for win NT. 13040 13041 - Issue #6687: PyBytes_FromObject() no longer accepts an integer as its argument 13042 to construct a null-initialized bytes object. 13043 13044 - Issue #1023290: Add from_bytes() and to_bytes() methods to integers. These 13045 methods allow the conversion of integers to bytes, and vice-versa. 13046 13047 - Issue #7382: Fix bug in bytes.__getnewargs__ that prevented bytes instances 13048 from being copied with copy.copy(), and bytes subclasses from being pickled 13049 properly. 13050 13051 - Code objects now support weak references. 13052 13053 - Issue #7072: isspace(0xa0) is true on Mac OS X. 13054 13055 - Issue #8084: PEP 370 now conforms to system conventions for framework builds 13056 on MacOS X. That is, "python setup.py install --user" will install into 13057 "~/Library/Python/2.7" instead of "~/.local". 13058 13059 C-API 13060 ----- 13061 13062 - Issue #2443: A new macro, `Py_VA_COPY`, copies the state of the 13063 variable argument list. `Py_VA_COPY` is equivalent to C99 13064 `va_copy`, but available on all python platforms. 13065 13066 - PySlice_GetIndicesEx now clips the step to [-PY_SSIZE_T_MAX, PY_SSIZE_T_MAX] 13067 instead of [-PY_SSIZE_T_MAX-1, PY_SSIZE_T_MAX]. This makes it safe to do 13068 "step = -step" when reversing a slice. 13069 13070 - Issue #5753: A new C API function, `PySys_SetArgvEx`, allows embedders of the 13071 interpreter to set sys.argv without also modifying sys.path. This helps fix 13072 `CVE-2008-5983 13073 <http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-5983>`_. 13074 13075 - Add PyArg_ValidateKeywordArguments, which checks if all keyword arguments are 13076 strings in an efficient manner. 13077 13078 - Issue #8276: PyEval_CallObject() is now only available in macro form. The 13079 function declaration, which was kept for backwards compatibility reasons, is 13080 now removed (the macro was introduced in 1997!). 13081 13082 - Issue #7767: New function PyLong_AsLongLongAndOverflow added, analogous to 13083 PyLong_AsLongAndOverflow. 13084 13085 - Make PyUnicode_CompareWithASCIIString return not equal if the Python string 13086 has '\0' at the end. 13087 13088 - Issue #5080: The argument parsing functions PyArg_ParseTuple, 13089 PyArg_ParseTupleAndKeywords, PyArg_VaParse, PyArg_VaParseTupleAndKeywords and 13090 PyArg_Parse now raise a DeprecationWarning for float arguments passed with the 13091 'L' format code. This will become a TypeError in a future version of Python, 13092 to match the behaviour of the other integer format codes. 13093 13094 - Issue #7033: Function ``PyErr_NewExceptionWithDoc()`` added. 13095 13096 - Issue #7414: 'C' code wasn't being skipped properly (for keyword arguments) in 13097 PyArg_ParseTupleAndKeywords. 13098 13099 - Issue #7228: Add '%lld' and '%llu' support to PyString_FromFormat(V) and 13100 PyErr_Format, on machines with HAVE_LONG_LONG defined. 13101 13102 - Issue #6151: Made PyDescr_COMMON conform to standard C (like PyObject_HEAD in 13103 PEP 3123). The PyDescr_TYPE and PyDescr_NAME macros should be used for 13104 accessing the d_type and d_name members of structures using PyDescr_COMMON. 13105 13106 - Issue #6405: Remove duplicate type declarations in descrobject.h. 13107 13108 - The code flags for old __future__ features are now available again. 13109 13110 - Issue #5954: Add a PyFrame_GetLineNumber() function to replace most uses of 13111 PyCode_Addr2Line(). 13112 13113 - Issue #5959: Add a PyCode_NewEmpty() function to create a new empty code 13114 object at a specified file, function, and line number. 13115 13116 - Issue #1419652: Change the first argument to PyImport_AppendInittab() to 13117 ``const char *`` as the string is stored beyond the call. 13118 13119 - Issue #2422: When compiled with the ``--with-valgrind`` option, the pymalloc 13120 allocator will be automatically disabled when running under Valgrind. This 13121 gives improved memory leak detection when running under Valgrind, while taking 13122 advantage of pymalloc at other times. 13123 13124 Library 13125 ------- 13126 13127 - In pdb, when Ctrl-C is entered while defining commands for a breakpoint, the 13128 old commands are restored. 13129 13130 - For traceback debugging, the pdb listing now also shows the locations where 13131 the exception was originally (re)raised, if it differs from the last line 13132 executed (e.g. in case of finally clauses). 13133 13134 - The pdb command "source" has been added. It displays the source code for a 13135 given object, if possible. 13136 13137 - The pdb command "longlist" has been added. It displays the whole source code 13138 for the current function. 13139 13140 - Issue #1503502: Make pdb.Pdb easier to subclass by putting message and error 13141 output into methods. 13142 13143 - Issue #809887: Make the output of pdb's breakpoint deletions more consistent; 13144 emit a message when a breakpoint is enabled or disabled. 13145 13146 - Issue #5294: Fix the behavior of pdb's "continue" command when called in the 13147 top-level debugged frame. 13148 13149 - Issue #5727: Restore the ability to use readline when calling into pdb in 13150 doctests. 13151 13152 - Issue #6719: In pdb, do not stop somewhere in the encodings machinery if the 13153 source file to be debugged is in a non-builtin encoding. 13154 13155 - Issue #8048: Prevent doctests from failing when sys.displayhook has been 13156 reassigned. 13157 13158 - Issue #8015: In pdb, do not crash when an empty line is entered as a 13159 breakpoint command. 13160 13161 - In pdb, allow giving a line number to the "until" command. 13162 13163 - Issue #1437051: For pdb, allow "continue" and related commands in .pdbrc 13164 files. Also, add a command-line option "-c" that runs a command as if given 13165 in .pdbrc. 13166 13167 - Issue #4179: In pdb, allow "list ." as a command to return to the currently 13168 debugged line. 13169 13170 - Issue #4108: In urllib.robotparser, if there are multiple ``User-agent: *`` 13171 entries, consider the first one. 13172 13173 - Issue #6630: Allow customizing regex flags when subclassing the 13174 string.Template class. 13175 13176 - Issue #9411: Allow specifying an encoding for config files in the configparser 13177 module. 13178 13179 - Issue #1682942: Improvements to configparser: support alternate delimiters, 13180 alternate comment prefixes and empty lines in values. 13181 13182 - Issue #9354: Provide getsockopt() in asyncore's file_wrapper. 13183 13184 - Issue #8966: ctypes: Remove implicit bytes-unicode conversion. 13185 13186 - Issue #9378: python -m pickle <pickle file> will now load and display the 13187 first object in the pickle file. 13188 13189 - Issue #4770: Restrict binascii module to accept only bytes (as specified). 13190 And fix the email package to encode to ASCII instead of ``raw-unicode-escape`` 13191 before ASCII-to-binary decoding. 13192 13193 - Issue #9384: ``python -m tkinter`` will now display a simple demo applet. 13194 13195 - The default size of the re module's compiled regular expression cache has been 13196 increased from 100 to 500 and the cache replacement policy has changed from 13197 simply clearing the entire cache on overflow to forgetting the least recently 13198 used cached compiled regular expressions. This is a performance win for 13199 applications that use a lot of regular expressions and limits the impact of 13200 the performance hit anytime the cache is exceeded. 13201 13202 - Issue #7113: Speed up loading in configparser. Patch by ukasz Langa. 13203 13204 - Issue #9032: XML-RPC client retries the request on EPIPE error. The EPIPE 13205 error occurs when the server closes the socket and the client sends a big 13206 XML-RPC request. 13207 13208 - Issue #4629: getopt raises an error if an argument ends with "=", whereas 13209 getopt doesn't accept a value (eg. --help= is rejected if getopt uses 13210 ['help='] long options). 13211 13212 - Issue #7989: Added pure python implementation of the `datetime` module. The C 13213 module is renamed to `_datetime` and if available, overrides all classes 13214 defined in datetime with fast C impementation. Python implementation is based 13215 on the original python prototype for the datetime module by Tim Peters with 13216 minor modifications by the PyPy project. The test suite now tests `datetime` 13217 module with and without `_datetime` acceleration using the same test cases. 13218 13219 - Issue #7895: platform.mac_ver() no longer crashes after calling os.fork(). 13220 13221 - Issue #9323: Fixed a bug in trace.py that resulted in losing the name of the 13222 script being traced. Patch by Eli Bendersky. 13223 13224 - Issue #9282: Fixed --listfuncs option of trace.py. Thanks Eli Bendersky for 13225 the patch. 13226 13227 - Issue #3704: http.cookiejar was not properly handling URLs with a / in the 13228 parameters. 13229 13230 - Issue #9268: ``pickletools.dis()`` now has an optional *annotate* argument 13231 which controls printing of opcode descriptions in ``dis()`` output. 13232 13233 - Issue #1555570: email no longer inserts extra blank lines when a \r\n combo 13234 crosses an 8192 byte boundary. 13235 13236 - Issue #9243: Fix sndhdr module and add unit tests, contributed by James Lee. 13237 13238 - ``ast.literal_eval()`` now allows byte literals. 13239 13240 - Issue #9137: Fix issue in MutableMapping.update, which incorrectly treated 13241 keyword arguments called 'self' or 'other' specially. 13242 13243 - ``ast.literal_eval()`` now allows set literals. 13244 13245 - Issue #9164: Ensure that sysconfig handles duplicate -arch flags in CFLAGS. 13246 13247 - Issue #7646: The fnmatch pattern cache no longer grows without bound. 13248 13249 - Issue #9136: Fix 'dictionary changed size during iteration' RuntimeError 13250 produced when profiling the decimal module. This was due to a dangerous 13251 iteration over 'locals()' in Context.__init__. 13252 13253 - Fix extreme speed issue in Decimal.pow when the base is an exact power of 10 13254 and the exponent is tiny (for example, ``Decimal(10) ** 13255 Decimal('1e-999999999')``). 13256 13257 - Issue #9186: Fix math.log1p(-1.0) to raise ValueError, not OverflowError. 13258 13259 - Issue #9130: Fix validation of relative imports in parser module. 13260 13261 - Issue #9128: Fix validation of class decorators in parser module. 13262 13263 - Issue #9094: python -m pickletools will now disassemble pickle files listed in 13264 the command line arguments. See output of python -m pickletools -h for more 13265 details. 13266 13267 - Issue #5468: urlencode to handle bytes type and other encodings in its query 13268 parameter. Patch by Dan Mahn. 13269 13270 - Issue #7673: Fix security vulnerability (CVE-2010-2089) in the audioop module, 13271 ensure that the input string length is a multiple of the frame size. 13272 13273 - Issue #6507: Accept source strings in dis.dis(). Original patch by Daniel 13274 Urban. 13275 13276 - Issue #7829: Clearly document that the dis module is exposing an 13277 implementation detail that is not stable between Python VMs or releases. 13278 13279 - Issue #6589: cleanup asyncore.socket_map in case smtpd.SMTPServer constructor 13280 raises an exception. 13281 13282 - Issue #9110: Addition of ContextDecorator to contextlib, for creating APIs 13283 that act as both context managers and decorators. contextmanager changes to 13284 use ContextDecorator. 13285 13286 - Implement importlib.abc.SourceLoader and deprecate PyLoader and PyPycLoader 13287 for removal in Python 3.4. 13288 13289 - Issue #9064: pdb's "up" and "down" commands now accept an optional argument 13290 giving the number of frames to go. 13291 13292 - Issue #9018: os.path.normcase() now raises a TypeError if the argument is not 13293 ``str`` or ``bytes``. 13294 13295 - Issue #9075: In the ssl module, remove the setting of a ``debug`` flag on an 13296 OpenSSL structure. 13297 13298 - Issue #8682: The ssl module now temporary increments the reference count of a 13299 socket object got through ``PyWeakref_GetObject``, so as to avoid possible 13300 deallocation while the object is still being used. 13301 13302 - Issue #1368368: FancyURLOpener class changed to throw an Exception on wrong 13303 password instead of presenting an interactive prompt. Older behavior can be 13304 obtained by passing retry=True to http_error_xxx methods of FancyURLOpener. 13305 13306 - Issue #8720: Fix regression caused by fix for #4050 by making getsourcefile 13307 smart enough to find source files in the linecache. 13308 13309 - Issue #5610: feedparser no longer eats extra characters at the end of a body 13310 part if the body part ends with a ``\r\n``. 13311 13312 - Issue #8986: math.erfc was incorrectly raising OverflowError for values 13313 between -27.3 and -30.0 on some platforms. 13314 13315 - Issue #8784: Set tarfile default encoding to 'utf-8' on Windows. 13316 13317 - Issue #8966: If a ctypes structure field is an array of c_char, convert its 13318 value to bytes instead of str (as done for c_char and c_char_p). 13319 13320 - Issue #8188: Comparisons between Decimal and Fraction objects are now 13321 permitted, returning a result based on the exact numerical values of the 13322 operands. This builds on issue #2531, which allowed Decimal-to-float 13323 comparisons; all comparisons involving numeric types (bool, int, float, 13324 complex, Decimal, Fraction) should now act as expected. 13325 13326 - Issue #8897: Fix sunau module, use bytes to write the header. Patch written by 13327 Thomas Jollans. 13328 13329 - Issue #8899: time.struct_time now has class and attribute docstrings. 13330 13331 - Issue #6470: Drop UNC prefix in FixTk. 13332 13333 - Issue #4768: base64 encoded email body parts were incorrectly stored as binary 13334 strings. They are now correctly converted to strings. 13335 13336 - Issue #8833: tarfile created hard link entries with a size field != 0 by 13337 mistake. 13338 13339 - Charset.body_encode now correctly handles base64 encoding by encoding with the 13340 output_charset before calling base64mime.encode. Passes the tests from 2.x 13341 issue #1368247. 13342 13343 - Issue #8845: sqlite3 Connection objects now have a read-only in_transaction 13344 attribute that is True iff there are uncommitted changes. 13345 13346 - Issue #1289118: datetime.timedelta objects can now be multiplied by float and 13347 divided by float and int objects. Results are rounded to the nearest multiple 13348 of timedelta.resolution with ties resolved using round-half-to-even method. 13349 13350 - Issue #7150: Raise OverflowError if the result of adding or subtracting 13351 timedelta from date or datetime falls outside of the MINYEAR:MAXYEAR range. 13352 13353 - Issue #8806: add SSL contexts support to ftplib. 13354 13355 - Issue #4769: Fix main() function of the base64 module, use sys.stdin.buffer 13356 and sys.stdout.buffer (instead of sys.stdin and sys.stdout) to use the bytes 13357 API. 13358 13359 - Issue #8770: Now sysconfig displays information when it's called as a script. 13360 Initial idea by Sridhar Ratnakumar. 13361 13362 - Issue #6662: Fix parsing of malformatted charref (&#bad;), patch written by 13363 Fredrik Hrd. 13364 13365 - Issue #8540: Decimal module: rename the Context._clamp attribute to 13366 Context.clamp and make it public. This is useful in creating contexts that 13367 correspond to the decimal interchange formats specified in IEEE 754. 13368 13369 - Issue #6268: Fix seek() method of codecs.open(), don't read or write the BOM 13370 twice after seek(0). Fix also reset() method of codecs, UTF-16, UTF-32 and 13371 StreamWriter classes. 13372 13373 - Issue #3798: sys.exit(message) writes the message to sys.stderr file, instead 13374 of the C file stderr, to use stderr encoding and error handler. 13375 13376 - Issue #8782: Add a trailing newline in linecache.updatecache to the last line 13377 of files without one. 13378 13379 - Issue #8729: Return NotImplemented from collections.Mapping.__eq__ when 13380 comparing to a non-mapping. 13381 13382 - Issue #8774: tabnanny uses the encoding cookie (#coding:...) to use the 13383 correct encoding. 13384 13385 - Issue #4870: Add an `options` attribute to SSL contexts, as well as several 13386 ``OP_*`` constants to the `ssl` module. This allows selectively disabling 13387 protocol versions, when used in combination with `PROTOCOL_SSLv23`. 13388 13389 - Issue #8759: Fixed user paths in sysconfig for posix and os2 schemes. 13390 13391 - Issue #8663: distutils.log emulates backslashreplace error handler. Fix 13392 compilation in a non-ASCII directory if stdout encoding is ASCII (eg. if 13393 stdout is not a TTY). 13394 13395 - Issue #8513: os.get_exec_path() supports b'PATH' key and bytes value. 13396 subprocess.Popen() and os._execvpe() support bytes program name. Add 13397 os.supports_bytes_environ flag: True if the native OS type of the environment 13398 is bytes (eg. False on Windows). 13399 13400 - Issue #8633: tarfile is now able to read and write archives with "raw" binary 13401 pax headers as described in POSIX.1-2008. 13402 13403 - Issue #1285086: Speed up urllib.parse functions: quote, quote_from_bytes, 13404 unquote, unquote_to_bytes. 13405 13406 - Issue #8688: Distutils now recalculates MANIFEST every time. 13407 13408 - Issue #8477: ssl.RAND_egd() and ssl._test_decode_cert() support str with 13409 surrogates and bytes for the filename. 13410 13411 - Issue #8550: Add first class ``SSLContext`` objects to the ssl module. 13412 13413 - Issue #8681: Make the zlib module's error messages more informative when the 13414 zlib itself doesn't give any detailed explanation. 13415 13416 - The audioop module now supports sound fragments of length greater than 2**31 13417 bytes on 64-bit machines, and is PY_SSIZE_T_CLEAN. 13418 13419 - Issue #4972: Add support for the context management protocol to the ftplib.FTP 13420 class. 13421 13422 - Issue #8664: In py_compile, create __pycache__ when the compiled path is 13423 given. 13424 13425 - Issue #8514: Add os.fsencode() function (Unix only): encode a string to bytes 13426 for use in the file system, environment variables or the command line. 13427 13428 - Issue #8571: Fix an internal error when compressing or decompressing a chunk 13429 larger than 1GB with the zlib module's compressor and decompressor objects. 13430 13431 - Issue #8603: Support bytes environmental variables on Unix: Add os.environb 13432 mapping and os.getenvb() function. os.unsetenv() encodes str argument to the 13433 file system encoding with the surrogateescape error handler (instead of 13434 utf8/strict) and accepts bytes. posix.environ keys and values are now bytes. 13435 13436 - Issue #8573: asyncore _strerror() function might throw ValueError. 13437 13438 - Issue #8483: asyncore.dispatcher's __getattr__ method produced confusing error 13439 messages when accessing undefined class attributes because of the cheap 13440 inheritance with the underlying socket object. The cheap inheritance has been 13441 deprecated. 13442 13443 - Issue #4265: shutil.copyfile() was leaking file descriptors when disk fills. 13444 Patch by Tres Seaver. 13445 13446 - Issue #8390: tarfile uses surrogateescape as the default error handler 13447 (instead of replace in read mode or strict in write mode). 13448 13449 - Issue #7755: Use an unencumbered audio file for tests. 13450 13451 - Issue #8621: uuid.uuid4() returned the same sequence of values in the parent 13452 and any children created using ``os.fork`` on MacOS X 10.6. 13453 13454 - Issue #8567: Fix precedence of signals in Decimal module: when a Decimal 13455 operation raises multiple signals and more than one of those signals is 13456 trapped, the specification determines the order in which the signals should be 13457 handled. In many cases this order wasn't being followed, leading to the wrong 13458 Python exception being raised. 13459 13460 - Issue #7865: The close() method of ``io`` objects should not swallow 13461 exceptions raised by the implicit flush(). Also qensure that calling close() 13462 several times is supported. Patch by Pascal Chambon. 13463 13464 - Issue #4687: Fix accuracy of garbage collection runtimes displayed with 13465 gc.DEBUG_STATS. 13466 13467 - Issue #8354: The siginterrupt setting is now preserved for all signals, not 13468 just SIGCHLD. 13469 13470 - Issue #7192: webbrowser.get("firefox") now works on Mac OS X, as does 13471 webbrowser.get("safari"). 13472 13473 - Issue #8464: tarfile no longer creates files with execute permissions set when 13474 mode="w|" is used. 13475 13476 - Issue #7834: Fix connect() of Bluetooth L2CAP sockets with recent versions of 13477 the Linux kernel. Patch by Yaniv Aknin. 13478 13479 - Issue #8295: Added shutil.unpack_archive. 13480 13481 - Issue #6312: Fixed http HEAD request when the transfer encoding is chunked. 13482 It should correctly return an empty response now. 13483 13484 - Issue #8546: Reject None given as the buffering argument to _pyio.open. 13485 13486 - Issue #8549: Fix compiling the _ssl extension under AIX. Patch by 13487 Sridhar Ratnakumar. 13488 13489 - Issue #6656: fix locale.format_string to handle escaped percents 13490 and mappings. 13491 13492 - Issue #2302: Fix a race condition in SocketServer.BaseServer.shutdown, where 13493 the method could block indefinitely if called just before the event loop 13494 started running. This also fixes the occasional freezes witnessed in 13495 test_httpservers. 13496 13497 - Issue #8524: When creating an SSL socket, the timeout value of the original 13498 socket wasn't retained (instead, a socket with a positive timeout would be 13499 turned into a non-blocking SSL socket). 13500 13501 - Issue #5103: SSL handshake would ignore the socket timeout and block 13502 indefinitely if the other end didn't respond. 13503 13504 - The do_handshake() method of SSL objects now adjusts the blocking mode of the 13505 SSL structure if necessary (as other methods already do). 13506 13507 - Issue #8391: os.execvpe() and os.getenv() supports unicode with surrogates and 13508 bytes strings for environment keys and values. 13509 13510 - Issue #8467: Pure Python implementation of subprocess encodes the error 13511 message using surrogatepass error handler to support surrogates in the 13512 message. 13513 13514 - Issue #8468: bz2.BZ2File() accepts str with surrogates and bytes filenames. 13515 13516 - Issue #8451: Syslog module now uses basename(sys.argv[0]) instead of the 13517 string "python" as the *ident*. openlog() arguments are all optional and 13518 keywords. 13519 13520 - Issue #8108: Fix the unwrap() method of SSL objects when the socket has a 13521 non-infinite timeout. Also make that method friendlier with applications 13522 wanting to continue using the socket in clear-text mode, by disabling 13523 OpenSSL's internal readahead. Thanks to Darryl Miles for guidance. 13524 13525 - Issue #8496: make mailcap.lookup() always return a list, rather than an 13526 iterator. Patch by Gregory Nofi. 13527 13528 - Issue #8195: Fix a crash in sqlite Connection.create_collation() if the 13529 collation name contains a surrogate character. 13530 13531 - Issue #8484: Load all ciphers and digest algorithms when initializing the _ssl 13532 extension, such that verification of some SSL certificates doesn't fail 13533 because of an "unknown algorithm". 13534 13535 - Issue #6547: Added the ignore_dangling_symlinks option to shutil.copytree. 13536 13537 - Issue #1540112: Now allowing the choice of a copy function in shutil.copytree. 13538 13539 - Issue #4814: timeout parameter is now applied also for connections resulting 13540 from PORT/EPRT commands. 13541 13542 - Issue #8463: added missing reference to bztar in shutil's documentation. 13543 13544 - Issue #7154: urllib.request can now detect the proxy settings on OSX 10.6 (as 13545 long as the user didn't specify 'automatic proxy configuration'). 13546 13547 - Issue #3817: ftplib.FTP.abort() method now considers 225 a valid response code 13548 as stated in RFC-959 at chapter 5.4. 13549 13550 - Issue #8394: _ctypes.dlopen() accepts bytes, bytearray and str with 13551 surrogates. 13552 13553 - Issue #850728: Add a *timeout* parameter to the `acquire()` method of 13554 `threading.Semaphore` objects. Original patch by Torsten Landschoff. 13555 13556 - Issue #8322: Add a *ciphers* argument to SSL sockets, so as to change the 13557 available cipher list. Helps fix test_ssl with OpenSSL 1.0.0. 13558 13559 - Issue #8393: subprocess accepts bytes, bytearray and str with surrogates for 13560 the current working directory. 13561 13562 - Issue #7606: XML-RPC traceback stored in X-traceback is now encoded to ASCII 13563 using backslashreplace error handler. 13564 13565 - Issue #8412: os.system() now accepts bytes, bytearray and str with surrogates. 13566 13567 - Issue #2987: RFC2732 support for urlparse (IPv6 addresses). Patch by Tony 13568 Locke and Hans Ulrich Niedermann. 13569 13570 - Issue #5277: Fix quote counting when parsing RFC 2231 encoded parameters. 13571 13572 - Issue #7316: The acquire() method of lock objects in the ``threading`` 13573 module now takes an optional timeout argument in seconds. Timeout support 13574 relies on the system threading library, so as to avoid a semi-busy wait loop. 13575 13576 - Issue #8383: pickle and pickletools use surrogatepass error handler when 13577 encoding unicode as utf8 to support lone surrogates and stay compatible with 13578 Python 2.x and 3.x. 13579 13580 - Issue #7585: difflib context and unified diffs now place a tab between 13581 filename and date, conforming to the 'standards' they were originally designed 13582 to follow. This improves compatibility with patch tools. 13583 13584 - Issue #7472: Fixed typo in email.encoders module; messages using ISO-2022 13585 character sets will now consistently use a Content-Transfer-Encoding of 7bit 13586 rather than sometimes being marked as 8bit. 13587 13588 - Issue #8375: test_distutils now checks if the temporary directory are still 13589 present before it cleans them. 13590 13591 - Issue #8374: Update the internal alias table in the ``locale`` module to 13592 cover recent locale changes and additions. 13593 13594 - Issue #8321: Give access to OpenSSL version numbers from the `ssl` module, 13595 using the new attributes `ssl.OPENSSL_VERSION`, `ssl.OPENSSL_VERSION_INFO` and 13596 `ssl.OPENSSL_VERSION_NUMBER`. 13597 13598 - Add functools.total_ordering() and functools.cmp_to_key(). 13599 13600 - Issue #8257: The Decimal construct now accepts a float instance directly, 13601 converting that float to a Decimal of equal value: 13602 13603 >>> Decimal(1.1) 13604 Decimal('1.100000000000000088817841970012523233890533447265625') 13605 13606 - Issue #8294: The Fraction constructor now accepts Decimal and float instances 13607 directly. 13608 13609 - Issue #7279: Comparisons involving a Decimal signaling NaN now signal 13610 InvalidOperation instead of returning False. (Comparisons involving a quiet 13611 NaN are unchanged.) Also, Decimal quiet NaNs are now hashable; Decimal 13612 signaling NaNs remain unhashable. 13613 13614 - Issue #2531: Comparison operations between floats and Decimal instances now 13615 return a result based on the numeric values of the operands; previously they 13616 returned an arbitrary result based on the relative ordering of id(float) and 13617 id(Decimal). See also issue #8188, which adds Decimal-to-Fraction 13618 comparisons. 13619 13620 - Added a subtract() method to collections.Counter(). 13621 13622 - Issue #8233: When run as a script, py_compile.py optionally takes a single 13623 argument `-` which tells it to read files to compile from stdin. Each line is 13624 read on demand and the named file is compiled immediately. (Original patch by 13625 Piotr Oarowski). 13626 13627 - Backwards incompatible change: Unicode codepoints line tabulation (0x0B) and 13628 form feed (0x0C) are now considered linebreaks, as specified in Unicode 13629 Standard Annex #14. See issue #7643. http://www.unicode.org/reports/tr14/ 13630 13631 - Comparisons using one of <, <=, >, >= between a complex instance and a 13632 Fractions instance now raise TypeError instead of returning True/False. This 13633 makes Fraction <=> complex comparisons consistent with int <=> complex, float 13634 <=> complex, and complex <=> complex comparisons. 13635 13636 - Issue #8139: ossaudiodev didn't initialize its types properly, therefore some 13637 methods (such as oss_mixer_device.fileno()) were not available. Initial patch 13638 by Bertrand Janin. 13639 13640 - Issue #8205: Remove the "Modules" directory from sys.path when Python is 13641 running from the build directory (POSIX only). 13642 13643 - Issue #7512: shutil.copystat() could raise an OSError when the filesystem 13644 didn't support chflags() (for example ZFS under FreeBSD). The error is now 13645 silenced. 13646 13647 - Issue #7860: platform.uname now reports the correct 'machine' type when Python 13648 is running in WOW64 mode on 64 bit Windows. 13649 13650 - Issue #3890, #8222: Fix recv() and recv_into() on non-blocking SSL sockets. 13651 Also, enable the SSL_MODE_AUTO_RETRY flag on SSL sockets, so that blocking 13652 reads and writes are always retried by OpenSSL itself. 13653 13654 - Issue #4282: Fix the main function of the profile module for a non-ASCII 13655 script, open the file in binary mode and not in text mode with the default 13656 (utf8) encoding. 13657 13658 - Issue #8179: Fix macpath.realpath() on a non-existing path. 13659 13660 - Issue #8024: Update the Unicode database to 5.2. 13661 13662 - Issue #8168: py_compile now handles files with utf-8 BOMS. 13663 13664 - ``tokenize.detect_encoding`` now returns ``'utf-8-sig'`` when a UTF-8 BOM is 13665 detected. 13666 13667 - Issue #6716/2: Backslash-replace error output in compilall. 13668 13669 - Issue #4961: Inconsistent/wrong result of askyesno function in tkMessageBox 13670 with Tcl/Tk-8.5. 13671 13672 - Issue #8140: extend compileall to compile single files. Add -i option. 13673 13674 - Issue #7356: ctypes.util: Make parsing of ldconfig output independent of the 13675 locale. 13676 13677 - The internals of the subprocess module on POSIX systems have been replaced by 13678 an extension module (_posixsubprocess) so that the fork()+exec() can be done 13679 safely without the possibility of deadlock in multithreaded applications. 13680 13681 - subprocess.Popen now has restore_signals and start_new_session features. The 13682 default of restore_signals=True is a new behavior compared to earlier Python 13683 versions. This means that signals such as SIGPIPE are not ignored by default 13684 in subprocesses launched by Python (Issue #1652). 13685 13686 - Issue #6472: The xml.etree package is updated to ElementTree 1.3. The 13687 cElementTree module is updated too. 13688 13689 - Issue #7774: Set sys.executable to an empty string if argv[0] has been set to 13690 a non existent program name and Python is unable to retrieve the real program 13691 name. 13692 13693 - Issue #7880: Fix sysconfig when the python executable is a symbolic link. 13694 13695 - Issue #6509: fix re.sub to work properly when the pattern, the string, and the 13696 replacement were all bytes. Patch by Antoine Pitrou. 13697 13698 - The sqlite3 module was updated to pysqlite 2.6.0. This fixes several obscure 13699 bugs and allows loading SQLite extensions from shared libraries. 13700 13701 - Issue #1054943: Fix ``unicodedata.normalize('NFC', text)`` for the Public 13702 Review Issue #29 (http://unicode.org/review/pr-29.html). 13703 13704 - Issue #7494: fix a crash in _lsprof (cProfile) after clearing the profiler, 13705 reset also the pointer to the current pointer context. 13706 13707 - Issue #7232: Add support for the context management protocol to the TarFile 13708 class. 13709 13710 - Issue #7250: Fix info leak of os.environ across multi-run uses of 13711 wsgiref.handlers.CGIHandler. 13712 13713 - Issue #1729305: Fix doctest to handle encode error with "backslashreplace". 13714 13715 - Issue #691291: codecs.open() should not convert end of lines on reading and 13716 writing. 13717 13718 - Issue #7869: logging: improved diagnostic for format-time errors. 13719 13720 - Issue #7868: logging: added loggerClass attribute to Manager. 13721 13722 - logging: Implemented PEP 391. 13723 13724 - Issue #1537721: Add a writeheader() method to csv.DictWriter. 13725 13726 - Issue #7959: ctypes callback functions are now registered correctly with the 13727 cycle garbage collector. 13728 13729 - Issue #5801: removed spurious empty lines in wsgiref. 13730 13731 - Issue #6666: fix bug in trace.py that applied the list of directories to be 13732 ignored only to the first file. Noted by Bogdan Opanchuk. 13733 13734 - Issue #7597: curses.use_env() can now be called before initscr(). Noted by 13735 Kan-Ru Chen. 13736 13737 - Issue #7310: fix the __repr__ of os.environ to show the environment variables. 13738 13739 - Issue #7970: email.Generator.flatten now correctly flattens message/rfc822 13740 messages parsed by email.Parser.HeaderParser. 13741 13742 - Issue #7361: Importlib was not properly checking the number of bytes in 13743 bytecode file when it was less than 8 bytes. 13744 13745 - Issue #7633: In the decimal module, Context class methods (with the exception 13746 of canonical and is_canonical) now accept instances of int and long wherever a 13747 Decimal instance is accepted, and implicitly convert that argument to Decimal. 13748 Previously only some arguments were converted. 13749 13750 - Issue #7835: shelve should no longer produce mysterious warnings during 13751 interpreter shutdown. 13752 13753 - Issue #2746: Don't escape ampersands and angle brackets ("&", "<", ">") in XML 13754 processing instructions and comments. These raw characters are allowed by the 13755 XML specification, and are necessary when outputting e.g. PHP code in a 13756 processing instruction. Patch by Neil Muller. 13757 13758 - Issue #6233: ElementTree failed converting unicode characters to XML entities 13759 when they could't be represented in the requested output encoding. Patch by 13760 Jerry Chen. 13761 13762 - Issue #6003: add an argument to ``zipfile.Zipfile.writestr`` to specify the 13763 compression type. 13764 13765 - Issue #4772: Raise a ValueError when an unknown Bluetooth protocol is 13766 specified, rather than fall through to AF_PACKET (in the `socket` module). 13767 Also, raise ValueError rather than TypeError when an unknown TIPC address type 13768 is specified. Patch by Brian Curtin. 13769 13770 - Issue #6939: Fix file I/O objects in the `io` module to keep the original file 13771 position when calling `truncate()`. It would previously change the file 13772 position to the given argument, which goes against the tradition of 13773 ftruncate() and other truncation APIs. Patch by Pascal Chambon. 13774 13775 - Issue #7610: Reworked implementation of the internal 13776 ``zipfile.ZipExtFile`` class used to represent files stored inside an 13777 archive. The new implementation is significantly faster and can be wrapped in 13778 an ``io.BufferedReader`` object for more speedups. It also solves an 13779 issue where interleaved calls to `read()` and `readline()` give wrong results. 13780 Patch by Nir Aides. 13781 13782 - Issue #6963: Added "maxtasksperchild" argument to multiprocessing.Pool, 13783 allowing for a maximum number of tasks within the pool to be completed by the 13784 worker before that worker is terminated, and a new one created to replace it. 13785 13786 - Issue #7792: Registering non-classes to ABCs raised an obscure error. 13787 13788 - Issue #7785: Don't accept bytes in FileIO.write(). 13789 13790 - Removed the functions 'verify' and 'vereq' from Lib/test/support.py. 13791 13792 - Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when 13793 the release file is empty. 13794 13795 - Issue #7561: Fix crashes when using bytearray objects with the posix 13796 module. 13797 13798 - Issue #1670765: Prevent email.generator.Generator from re-wrapping headers in 13799 multipart/signed MIME parts, which fixes one of the sources of invalid 13800 modifications to such parts by Generator. 13801 13802 - Issue #7703: Add support for the new buffer API to `binascii.a2bhqx`. Patch 13803 by Florent Xicluna, along with some additional tests. 13804 13805 - Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a 1-byte 13806 argument. Patch by Victor Stinner. 13807 13808 - Issue #3299: Fix possible crash in the _sre module when given bad argument 13809 values in debug mode. Patch by Victor Stinner. 13810 13811 - Issue #2846: Add support for gzip.GzipFile reading zero-padded files. Patch 13812 by Brian Curtin. 13813 13814 - Issue #7681: Use floor division in appropriate places in the wave module. 13815 13816 - Issue #5372: Drop the reuse of .o files in Distutils' ccompiler (since 13817 Extension extra options may change the output without changing the .c 13818 file). Initial patch by Collin Winter. 13819 13820 - Issue #7617: Make sure distutils.unixccompiler.UnixCCompiler recognizes gcc 13821 when it has a fully qualified configuration prefix. Initial patch by Arfrever. 13822 13823 - Issue #7105: Make WeakKeyDictionary and WeakValueDictionary robust against the 13824 destruction of weakref'ed objects while iterating. 13825 13826 - Issue #7455: Fix possible crash in cPickle on invalid input. Patch by Victor 13827 Stinner. 13828 13829 - Issue #1628205: Socket file objects returned by socket.socket.makefile() now 13830 properly handles EINTR within the read, readline, write & flush methods. The 13831 socket.sendall() method now properly handles interrupted system calls. 13832 13833 - Issue #7471: Improve the performance of GzipFile's buffering mechanism, and 13834 make it implement the `io.BufferedIOBase` ABC to allow for further speedups by 13835 wrapping it in an `io.BufferedReader`. Patch by Nir Aides. 13836 13837 - Issue #3972: http.client.HTTPConnection now accepts an optional source_address 13838 parameter to allow specifying where your connections come from. 13839 13840 - socket.create_connection now accepts an optional source_address parameter. 13841 13842 - Issue #5511: now zipfile.ZipFile can be used as a context manager. Initial 13843 patch by Brian Curtin. 13844 13845 - Issue #7556: Make sure Distutils' msvc9compile reads and writes the MSVC XML 13846 Manifest file in text mode so string patterns can be used in regular 13847 expressions. 13848 13849 - Issue #7552: Removed line feed in the base64 Authorization header in the 13850 Distutils upload command to avoid an error when PyPI reads it. This occurs on 13851 long passwords. Initial patch by JP St. Pierre. 13852 13853 - Issue #7231: urllib2 cannot handle https with proxy requiring auth. Patch by 13854 Tatsuhiro Tsujikawa. 13855 13856 - Issue #4757: `zlib.compress` and other methods in the zlib module now raise a 13857 TypeError when given an `str` object (rather than a `bytes`-like object). 13858 Patch by Victor Stinner and Florent Xicluna. 13859 13860 - Issue #7349: Make methods of file objects in the io module accept None as an 13861 argument where file-like objects (ie StringIO and BytesIO) accept them to mean 13862 the same as passing no argument. 13863 13864 - Issue #7357: tarfile no longer suppresses fatal extraction errors by default. 13865 13866 - Issue #5949: added check for correct lineends in input from IMAP server in 13867 imaplib. 13868 13869 - Add count() and reverse() methods to collections.deque(). 13870 13871 - Fix variations of extending deques: d.extend(d) d.extendleft(d) d+=d 13872 13873 - Issue #6986: Fix crash in the JSON C accelerator when called with the wrong 13874 parameter types. Patch by Victor Stinner. 13875 13876 - Issue #7457: added a read_pkg_file method to 13877 distutils.dist.DistributionMetadata. 13878 13879 - logging: Added optional `secure` parameter to SMTPHandler, to enable use of 13880 TLS with authentication credentials. 13881 13882 - Issue #1923: Fixed the removal of meaningful spaces when PKG-INFO is generated 13883 in Distutils. Patch by Stephen Emslie. 13884 13885 - Issue #4120: Drop reference to CRT from manifest when building extensions with 13886 msvc9compiler. 13887 13888 - Issue #7333: The `posix` module gains an `initgroups()` function providing 13889 access to the initgroups(3) C library call on Unix systems which implement it. 13890 Patch by Jean-Paul Calderone. 13891 13892 - Issue #7408: Fixed distutils.tests.sdist so it doesn't check for group 13893 ownership when the group is not forced, because the group may be different 13894 from the user's group and inherit from its container when the test is run. 13895 13896 - Issue #4486: When an exception has an explicit cause, do not print its 13897 implicit context too. This affects the `traceback` module as well as built-in 13898 exception printing. 13899 13900 - Issue #1515: Enable use of deepcopy() with instance methods. Patch by Robert 13901 Collins. 13902 13903 - Issue #7403: logging: Fixed possible race condition in lock creation. 13904 13905 - Issue #6845: Add restart support for binary upload in ftplib. The 13906 `storbinary()` method of FTP and FTP_TLS objects gains an optional `rest` 13907 argument. Patch by Pablo Mouzo. 13908 13909 - Issue #5788: `datetime.timedelta` objects get a new `total_seconds()` method 13910 returning the total number of seconds in the duration. Patch by Brian 13911 Quinlan. 13912 13913 - Issue #7133: SSL objects now support the new buffer API. 13914 13915 - Issue #1488943: difflib.Differ() doesn't always add hints for tab characters. 13916 13917 - Issue #6123: tarfile now opens empty archives correctly and consistently 13918 raises ReadError on empty files. 13919 13920 - Issue #7354: distutils.tests.test_msvc9compiler - dragfullwindows can be 2. 13921 13922 - Issue #5037: Proxy the __bytes__ special method instead to __bytes__ instead 13923 of __str__. 13924 13925 - Issue #7341: Close the internal file object in the TarFile constructor in case 13926 of an error. 13927 13928 - Issue #7293: distutils.test_msvc9compiler is fixed to work on any fresh 13929 Windows box. Help provided by David Bolen. 13930 13931 - Issue #2054: ftplib now provides an FTP_TLS class to do secure FTP using TLS 13932 or SSL. Patch by Giampaolo Rodola'. 13933 13934 - Issue #7328: pydoc no longer corrupts sys.path when run with the '-m' switch. 13935 13936 - Issue #4969: The mimetypes module now reads the MIME database from the 13937 registry under Windows. Patch by Gabriel Genellina. 13938 13939 - Issue #6816: runpy now provides a run_path function that allows Python code to 13940 execute file paths that refer to source or compiled Python files as well as 13941 zipfiles, directories and other valid sys.path entries that contain a 13942 __main__.py file. This allows applications that run other Python scripts to 13943 support the same flexibility as the CPython command line itself. 13944 13945 - Issue #7318: multiprocessing now uses a timeout when it fails to establish a 13946 connection with another process, rather than looping endlessly. The default 13947 timeout is 20 seconds, which should be amply sufficient for local connections. 13948 13949 - Issue #7197: Allow unittest.TextTestRunner objects to be pickled and 13950 unpickled. This fixes crashes under Windows when trying to run 13951 test_multiprocessing in verbose mode. 13952 13953 - Issue #7893: ``unittest.TextTestResult`` is made public and a ``resultclass`` 13954 argument added to the TextTestRunner constructor allowing a different result 13955 class to be used without having to subclass. 13956 13957 - Issue #7588: ``unittest.TextTestResult.getDescription`` now includes the test 13958 name in failure reports even if the test has a docstring. 13959 13960 - Issue #3001: Add a C implementation of recursive locks which is used by 13961 default when instantiating a `threading.RLock` object. This makes recursive 13962 locks as fast as regular non-recursive locks (previously, they were slower by 13963 10x to 15x). 13964 13965 - Issue #7282: Fix a memory leak when an RLock was used in a thread other than 13966 those started through `threading.Thread` (for example, using 13967 `_thread.start_new_thread()`). 13968 13969 - Issue #7187: Importlib would not silence the IOError raised when trying to 13970 write new bytecode when it was made read-only. 13971 13972 - Issue #7264: Fix a possible deadlock when deallocating thread-local objects 13973 which are part of a reference cycle. 13974 13975 - Issue #7211: Allow 64-bit values for the `ident` and `data` fields of kevent 13976 objects on 64-bit systems. Patch by Michael Broghton. 13977 13978 - Issue #6896: mailbox.Maildir now invalidates its internal cache each time a 13979 modification is done through it. This fixes inconsistencies and test failures 13980 on systems with slightly bogus mtime behaviour. 13981 13982 - Issue #7246 & Issue #7208: getpass now properly flushes input before reading 13983 from stdin so that existing input does not confuse it and lead to incorrect 13984 entry or an IOError. It also properly flushes it afterwards to avoid the 13985 terminal echoing the input afterwards on OSes such as Solaris. 13986 13987 - Issue #7233: Fix a number of two-argument Decimal methods to make sure that 13988 they accept an int or long as the second argument. Also fix buggy handling of 13989 large arguments (those with coefficient longer than the current precision) in 13990 shift and rotate. 13991 13992 - Issue #4750: Store the basename of the original filename in the gzip FNAME 13993 header as required by RFC 1952. 13994 13995 - Issue #1180: Added a new global option to ignore ~/.pydistutils.cfg in 13996 Distutils. 13997 13998 - Issue #7218: Fix test_site for win32, the directory comparison was done with 13999 an uppercase. 14000 14001 - Issue #7205: Fix a possible deadlock when using a BZ2File object from 14002 several threads at once. 14003 14004 - Issue #7077: logging: SysLogHandler now treats Unicode as per RFC 5424. 14005 14006 - Issue #7099: Decimal.is_normal now returns True for numbers with exponent 14007 larger than emax. 14008 14009 - Issue #7080: locale.strxfrm() raises a MemoryError on 64-bit non-Windows 14010 platforms, and assorted locale fixes by Derk Drukker. 14011 14012 - Issue #5833: Fix extra space character in readline completion with the GNU 14013 readline library version 6.0. 14014 14015 - Issue #6894: Fixed the issue urllib2 doesn't respect "no_proxy" environment. 14016 14017 - Issue #7086: Added TCP support to SysLogHandler, and tidied up some 14018 anachronisms in the code which were a relic of 1.5.2 compatibility. 14019 14020 - Issue #7082: When falling back to the MIME 'name' parameter, the correct place 14021 to look for it is the Content-Type header. 14022 14023 - Make tokenize.detect_coding() normalize utf-8 and iso-8859-1 variants like the 14024 builtin tokenizer. 14025 14026 - Issue #7048: Force Decimal.logb to round its result when that result is too 14027 large to fit in the current precision. 14028 14029 - Issue #6236, #6348: Fix various failures in the I/O library under AIX and 14030 other platforms, when using a non-gcc compiler. Patch by Derk Drukker. 14031 14032 - Issue #4606: Passing 'None' if ctypes argtype is set to POINTER(...) does now 14033 always result in NULL. 14034 14035 - Issue #5042: Structure sub-subclass does now initialize correctly with base 14036 class positional arguments. 14037 14038 - Issue #6882: Import uuid creates zombies processes. 14039 14040 - Issue #6635: Fix profiler printing usage message. 14041 14042 - Issue #6856: Add a filter keyword argument to TarFile.add(). 14043 14044 - Issue #6888: pdb's alias command was broken when no arguments were given. 14045 14046 - Issue #6857: Default format() alignment should be '>' for Decimal instances. 14047 14048 - Issue #6795: int(Decimal('nan')) now raises ValueError instead of returning 14049 NaN or raising InvalidContext. Also, fix infinite recursion in 14050 long(Decimal('nan')). 14051 14052 - Issue #6850: Fix bug in Decimal._parse_format_specifier for formats with no 14053 type specifier. 14054 14055 - Issue #6239: ctypes.c_char_p return value must return bytes. 14056 14057 - Issue #6838: Use a list to accumulate the value instead of repeatedly 14058 concatenating strings in http.client's HTTPResponse._read_chunked providing a 14059 significant speed increase when downloading large files servend with a 14060 Transfer-Encoding of 'chunked'. 14061 14062 - Trying to import a submodule from a module that is not a package, ImportError 14063 should be raised, not AttributeError. 14064 14065 - When the globals past to importlib.__import__() has __package__ set to None, 14066 fall back to computing what __package__ should be instead of giving up. 14067 14068 - Raise a TypeError when the name of a module to be imported for 14069 importlib.__import__ is not a string (was raising an AttributeError before). 14070 14071 - Allow the fromlist passed into importlib.__import__ to be any iterable. 14072 14073 - Have importlib raise ImportError if None is found in sys.modules. 14074 14075 - Issue #6054: Do not normalize stored pathnames in tarfile. 14076 14077 - Issue #6794: Fix Decimal.compare_total and Decimal.compare_total_mag: NaN 14078 payloads are now ordered by integer value rather than lexicographically. 14079 14080 - Issue #1356969: Add missing info methods in tix.HList. 14081 14082 - Issue #1522587: New constants and methods for the tix.Grid widget. 14083 14084 - Issue #1250469: Fix the return value of tix.PanedWindow.panes. 14085 14086 - Issue #1119673: Do not override tkinter.Text methods when creating a 14087 ScrolledText. 14088 14089 - Issue #6665: Fix fnmatch to properly match filenames with newlines in them. 14090 14091 - Issue #1135: Add the XView and YView mix-ins to avoid duplicating the xview* 14092 and yview* methods. 14093 14094 - Issue #6629: Fix a data corruption issue in the new I/O library, which could 14095 occur when writing to a BufferedRandom object (e.g. a file opened in "rb+" or 14096 "wb+" mode) after having buffered a certain amount of data for reading. This 14097 bug was not present in the pure Python implementation. 14098 14099 - Issue #6622: Fix "local variable 'secret' referenced before assignment" bug in 14100 POP3.apop. 14101 14102 - Issue #2715: Remove remnants of Carbon.File from binhex module. 14103 14104 - Issue #6595: The Decimal constructor now allows arbitrary Unicode decimal 14105 digits in input, as recommended by the standard. Previously it was restricted 14106 to accepting [0-9]. 14107 14108 - Issue #6106: telnetlib.Telnet.process_rawq doesn't handle default WILL/WONT 14109 DO/DONT correctly. 14110 14111 - Issue #1424152: Fix for http.client, urllib.request to support SSL while 14112 working through proxy. Original patch by Christopher Li, changes made by 14113 Senthil Kumaran. 14114 14115 - Add importlib.abc.ExecutionLoader to represent the PEP 302 protocol for 14116 loaders that allow for modules to be executed. Both importlib.abc.PyLoader and 14117 PyPycLoader inherit from this class and provide implementations in relation to 14118 other methods required by the ABCs. 14119 14120 - importlib.abc.PyLoader did not inherit from importlib.abc.ResourceLoader like 14121 the documentation said it did even though the code in PyLoader relied on the 14122 abstract method required by ResourceLoader. 14123 14124 - Issue #6431: Make Fraction type return NotImplemented when it doesn't know how 14125 to handle a comparison without loss of precision. Also add correct handling 14126 of infinities and nans for comparisons with float. 14127 14128 - Issue #6415: Fixed warnings.warn segfault on bad formatted string. 14129 14130 - Issue #6358: The exit status of a command started with os.popen() was reported 14131 differently than it did with python 2.x. 14132 14133 - Issue #6323: The pdb debugger did not exit when running a script with a syntax 14134 error. 14135 14136 - Issue #3392: The subprocess communicate() method no longer fails in select() 14137 when file descriptors are large; communicate() now uses poll() when possible. 14138 14139 - Issue #6369: Fix an RLE decompression bug in the binhex module. 14140 14141 - Issue #6344: Fixed a crash of mmap.read() when passed a negative argument. 14142 14143 - The deprecated function string.maketrans has been removed. 14144 14145 - Issue #4005: Fixed a crash of pydoc when there was a zip file present in 14146 sys.path. 14147 14148 - Issue #6218: io.StringIO and io.BytesIO instances are now picklable. 14149 14150 - The os.get_exec_path() function to return the list of directories that will be 14151 searched for an executable when launching a subprocess was added. 14152 14153 - Issue #7481: When a threading.Thread failed to start it would leave the 14154 instance stuck in initial state and present in threading.enumerate(). 14155 14156 - Issue #1068268: The subprocess module now handles EINTR in internal os.waitpid 14157 and os.read system calls where appropriate. 14158 14159 - Issue #6729: Added ctypes.c_ssize_t to represent ssize_t. 14160 14161 - Issue #6247: The argparse module has been added to the standard library. 14162 14163 - Issue #8235: _socket: Add the constant ``SO_SETFIB``. SO_SETFIB is a socket 14164 option available on FreeBSD 7.1 and newer. 14165 14166 - Issue #9315: Fix for the trace module to record correct class name 14167 for tracing methods. 14168 14169 Extension Modules 14170 ----------------- 14171 14172 - Issue #9959: Tweak formula used for computing math.log of an integer, 14173 making it marginally more accurate for exact powers of 2. 14174 14175 - Issue #9422: Fix memory leak when re-initializing a struct.Struct object. 14176 14177 - Issue #7900: The getgroups(2) system call on MacOSX behaves rather oddly 14178 compared to other unix systems. In particular, os.getgroups() does not reflect 14179 any changes made using os.setgroups() but basically always returns the same 14180 information as the id command. os.getgroups() can now return more than 16 14181 groups on MacOSX. 14182 14183 - Issue #6095: Make directory argument to os.listdir optional. 14184 14185 - Issue #9277: Fix bug in struct.pack for bools in standard mode (e.g., 14186 struct.pack('>?')): if conversion to bool raised an exception then that 14187 exception wasn't properly propagated on machines where char is unsigned. 14188 14189 - Issue #5180: Fixed a bug that prevented loading 2.x pickles in 3.x python when 14190 they contain instances of old-style classes. 14191 14192 - Issue #9165: Add new functions math.isfinite and cmath.isfinite, to accompany 14193 existing isinf and isnan functions. 14194 14195 - Issue #1578269: Implement os.symlink for Windows 6.0+. Patch by Jason 14196 R. Coombs. 14197 14198 - In struct.pack, correctly propagate exceptions from computing the truth of an 14199 object in the '?' format. 14200 14201 - Issue #9000: datetime.timezone objects now have eval-friendly repr. 14202 14203 - In the math module, correctly lookup __trunc__, __ceil__, and __floor__ as 14204 special methods. 14205 14206 - Issue #9005: Prevent utctimetuple() from producing year 0 or year 10,000. 14207 Prior to this change, timezone adjustment in utctimetuple() could produce 14208 tm_year value of 0 or 10,000. Now an OverflowError is raised in these edge 14209 cases. 14210 14211 - Issue #6641: The ``datetime.strptime`` method now supports the ``%z`` 14212 directive. When the ``%z`` directive is present in the format string, an 14213 aware ``datetime`` object is returned with ``tzinfo`` bound to a 14214 ``datetime.timezone`` instance constructed from the parsed offset. If both 14215 ``%z`` and ``%Z`` are present, the data in ``%Z`` field is used for timezone 14216 name, but ``%Z`` data without ``%z`` is discarded. 14217 14218 - Issue #5094: The ``datetime`` module now has a simple concrete class 14219 implementing ``datetime.tzinfo`` interface. Instances of the new class, 14220 ``datetime.timezone``, return fixed name and UTC offset from their 14221 ``tzname(dt)`` and ``utcoffset(dt)`` methods. The ``dst(dt)`` method always 14222 returns ``None``. A class attribute, ``utc`` contains an instance 14223 representing the UTC timezone. Original patch by Rafe Kaplan. 14224 14225 - Issue #8973: Add __all__ to struct module; this ensures that help(struct) 14226 includes documentation for the struct.Struct class. 14227 14228 - Issue #3129: Trailing digits in struct format string are no longer ignored. 14229 For example, "1" or "ilib123" are now invalid formats and cause 14230 ``struct.error`` to be raised. Patch by Caleb Deveraux. 14231 14232 - Issue #7384: If the system readline library is linked against ncurses, the 14233 curses module must be linked against ncurses as well. Otherwise it is not safe 14234 to load both the readline and curses modules in an application. 14235 14236 - Issue #2810: Fix cases where the Windows registry API returns ERROR_MORE_DATA, 14237 requiring a re-try in order to get the complete result. 14238 14239 - Issue #8692: Optimize math.factorial: replace the previous naive algorithm 14240 with an improved 'binary-split' algorithm that uses fewer multiplications and 14241 allows many of the multiplications to be performed using plain C integer 14242 arithmetic instead of PyLong arithmetic. Also uses a lookup table for small 14243 arguments. 14244 14245 - Issue #8674: Fixed a number of incorrect or undefined-behaviour-inducing 14246 overflow checks in the audioop module. 14247 14248 - Issue #8644: The accuracy of td.total_seconds() has been improved (by 14249 calculating with integer arithmetic instead of float arithmetic internally): 14250 the result is now always correctly rounded, and is equivalent to ``td / 14251 timedelta(seconds=1)``. 14252 14253 - Issue #2706: Allow division of a timedelta by another timedelta: timedelta / 14254 timedelta, timedelta % timedelta, timedelta // timedelta and divmod(timedelta, 14255 timedelta) are all supported. 14256 14257 - Issue #8314: Fix unsigned long long bug in libffi on Sparc v8. 14258 14259 - Issue #8300: When passing a non-integer argument to struct.pack with any 14260 integer format code, struct.pack first attempts to convert the non-integer 14261 using its __index__ method. If that method is non-existent or raises 14262 TypeError it goes on to try the __int__ method, as described below. 14263 14264 - Issue #8142: Update libffi to the 3.0.9 release. 14265 14266 - Issue #6949: Allow the _dbm extension to be built with db 4.8.x. 14267 14268 - Issue #6544: Fix a reference leak in the kqueue implementation's error 14269 handling. 14270 14271 - Stop providing crtassem.h symbols when compiling with Visual Studio 2010, as 14272 msvcr100.dll is not a platform assembly anymore. 14273 14274 - Issue #6508: Add posix.{getresuid,getresgid,setresuid,setresgid}. 14275 14276 - Issue #7078: Set struct.__doc__ from _struct.__doc__. 14277 14278 - Issue #3366: Add erf, erfc, expm1, gamma, lgamma functions to math module. 14279 14280 - Issue #6877: It is now possible to link the readline extension to the libedit 14281 readline emulation on OSX 10.5 or later. 14282 14283 - Issue #6848: Fix curses module build failure on OS X 10.6. 14284 14285 - Fix a segfault that could be triggered by expat with specially formed input. 14286 14287 - Issue #6561: '\d' in a regex now matches only characters with Unicode category 14288 'Nd' (Number, Decimal Digit). Previously it also matched characters with 14289 category 'No'. 14290 14291 - Issue #4509: Array objects are no longer modified after an operation failing 14292 due to the resize restriction in-place when the object has exported buffers. 14293 14294 - Issue #2389: Array objects are now pickled in a portable manner. 14295 14296 - Expat: Fix DoS via XML document with malformed UTF-8 sequences 14297 (CVE_2009_3560). 14298 14299 - Issue #7242: On Solaris 9 and earlier calling os.fork() from within a thread 14300 could raise an incorrect RuntimeError about not holding the import lock. The 14301 import lock is now reinitialized after fork. 14302 14303 - Issue #7999: os.setreuid() and os.setregid() would refuse to accept a -1 14304 parameter on some platforms such as OS X. 14305 14306 - Build the ossaudio extension on GNU/kFreeBSD. 14307 14308 - Issue #7347: winreg: Add CreateKeyEx and DeleteKeyEx, as well as fix a bug in 14309 the return value of QueryReflectionKey. 14310 14311 - Issue #7567: PyCurses_setupterm: Don't call ``setupterm`` twice. 14312 14313 Build 14314 ----- 14315 14316 - Use OpenSSL 1.0.0a on Windows. 14317 14318 - Issue #9280: Make sharedinstall depend on sharedmods. 14319 14320 - Issue #9189: Make a user-specified CFLAGS, CPPFLAGS, or LDFLAGS setting 14321 override the configure and makefile defaults, without deleting options the 14322 user didn't intend to override. Developers should no longer need to specify 14323 OPT or EXTRA_CFLAGS, although those variables are still present for 14324 backward-compatibility. 14325 14326 - Issue #8854: Fix finding Visual Studio 2008 on Windows x64. 14327 14328 - Issue #1759169, #8864: Drop _XOPEN_SOURCE on Solaris, define it for 14329 multiprocessing only. 14330 14331 - Issue #8625: Turn off optimization in --with-pydebug builds with gcc. 14332 (Optimization was unintentionally turned on in gcc --with-pydebug builds as a 14333 result of the issue #1628484 fix, combined with autoconf's strange choice of 14334 default CFLAGS produced by AC_PROG_CC for gcc.) 14335 14336 - Issue #3646: It is now easily possible to install a Python framework into your 14337 home directory on MacOSX, see Mac/README for more information. 14338 14339 - Issue #3928: os.mknod() now available in Solaris, also. 14340 14341 - Issue #3326: Build Python without -fno-strict-aliasing when the gcc does not 14342 give false warnings. 14343 14344 - Issue #1628484: The Makefile doesn't ignore the CFLAGS environment variable 14345 anymore. It also forwards the LDFLAGS settings to the linker when building a 14346 shared library. 14347 14348 - Issue #6716: Quote -x arguments of compileall in MSI installer. Exclude 2to3 14349 tests from compileall. 14350 14351 - Issue #3920, #7903: Define _BSD_SOURCE on OpenBSD 4.4 through 4.9. 14352 14353 - Issue #7632: When Py_USING_MEMORY_DEBUGGER is defined, disable the private 14354 memory allocation scheme in dtoa.c and use PyMem_Malloc and PyMem_Free 14355 instead. Also disable caching of powers of 5. 14356 14357 - Issue #6491: Allow --with-dbmliborder to specify that no dbms will be built. 14358 14359 - Issue #6943: Use pkg-config to find the libffi headers when the 14360 --with-system-ffi flag is used. 14361 14362 - Issue #7609: Add a --with-system-expat option that causes the system's expat 14363 library to be used for the pyexpat module instead of the one included with 14364 Python. 14365 14366 - Issue #7589: Only build the nis module when the correct header files are 14367 found. 14368 14369 - Switch to OpenSSL 0.9.8l and sqlite 3.6.21 on Windows. 14370 14371 - Issue #5792: Extend the short float repr support to x86 systems using 14372 icc or suncc. 14373 14374 - Issue #6603: Change READ_TIMESTAMP macro in ceval.c so that it compiles 14375 correctly under gcc on x86-64. This fixes a reported problem with the 14376 --with-tsc build on x86-64. 14377 14378 - Issue #6802: Fix build issues on MacOSX 10.6. 14379 14380 - Issue #6244: Allow detect_tkinter to look for Tcl/Tk 8.6. 14381 14382 - Issue #4601: 'make install' did not set the appropriate permissions on 14383 directories. 14384 14385 - Issue #5390: Add uninstall icon independent of whether file extensions are 14386 installed. 14387 14388 - Issue #7541: When using ``python-config`` with a framework install the 14389 compiler might use the wrong library. 14390 14391 - python-config now supports multiple options on the same command line. 14392 14393 - Issue #8509: Fix quoting in help strings and code snippets in configure.in. 14394 14395 - Issue #8510: Update to autoconf2.65. 14396 14397 Documentation 14398 ------------- 14399 14400 - Issue #9817: Add expat COPYING file; add expat, libffi and expat licenses 14401 to Doc/license.rst. 14402 14403 - Issue #9524: Document that two CTRL* signals are meant for use only 14404 with os.kill. 14405 14406 - Issue #9255: Document that the 'test' package is meant for internal Python use 14407 only. 14408 14409 - A small WSGI server was added as Tools/scripts/serve.py, and is used to 14410 implement a local documentation server via 'make serve' in the doc directory. 14411 14412 - Updating `Using Python` documentation to include description of CPython's -J 14413 and -X options. 14414 14415 - Document that importing a module that has None in sys.modules triggers an 14416 ImportError. 14417 14418 - Issue #6556: Fixed the Distutils configuration files location explanation for 14419 Windows. 14420 14421 - Update python manual page (options -B, -O0, -s, environment variables 14422 PYTHONDONTWRITEBYTECODE, PYTHONNOUSERSITE). 14423 14424 - Issue #8909: Added the size of the bitmap used in the installer created by 14425 distutils' bdist_wininst. Patch by Anatoly Techtonik. 14426 14427 Tests 14428 ----- 14429 14430 - Issue #9251: test_threaded_import didn't fail when run through regrtest if the 14431 import lock was disabled. 14432 14433 - Issue #8605: Skip test_gdb if Python is compiled with optimizations. 14434 14435 - Issue #7449: Skip test_socketserver if threading support is disabled. 14436 14437 - Issue #8672: Add a zlib test ensuring that an incomplete stream can be handled 14438 by a decompressor object without errors (it returns incomplete uncompressed 14439 data). 14440 14441 - Issue #8533: regrtest uses backslashreplace error handler for stdout to avoid 14442 UnicodeEncodeError (write non-ASCII character to stdout using ASCII encoding). 14443 14444 - Issue #8576: Remove use of find_unused_port() in test_smtplib and 14445 test_multiprocessing. Patch by Paul Moore. 14446 14447 - Issue #7449: Fix many tests to support Python compiled without thread 14448 support. Patches written by Jerry Seutter. 14449 14450 - Issue #8108: test_ftplib's non-blocking SSL server now has proper handling of 14451 SSL shutdowns. 14452 14453 - Issues #8279, #8330, #8437, #8480, #8495: Fix test_gdb failures, patch written 14454 by Dave Malcolm. 14455 14456 - Issue #3864: Skip three test_signal tests on freebsd6 because they fail if any 14457 thread was previously started, most likely due to a platform bug. 14458 14459 - Issue #8193: Fix test_zlib failure with zlib 1.2.4. 14460 14461 - Issue #8248: Add some tests for the bool type. Patch by Gregory Nofi. 14462 14463 - Issue #8263: Now regrtest.py will report a failure if it receives a 14464 KeyboardInterrupt (SIGINT). 14465 14466 - Issue #8180 and #8207: Fix test_pep277 on OS X and add more tests for special 14467 Unicode normalization cases. 14468 14469 - Issue #7783: test.support.open_urlresource invalidates the outdated files from 14470 the local cache. 14471 14472 - Issue #7849: Now the utility ``check_warnings`` verifies if the warnings are 14473 effectively raised. 14474 14475 - The four path modules (genericpath, macpath, ntpath, posixpath) share a common 14476 TestCase for some tests: test_genericpath.CommonTest. 14477 14478 - Print platform information when running the whole test suite, or using the 14479 --verbose flag. 14480 14481 - Issue #767675: enable test_pep277 on POSIX platforms with Unicode-friendly 14482 filesystem encoding. 14483 14484 - Issue #6292: for the moment at least, the test suite runs cleanly if python is 14485 run with the -OO flag. Tests requiring docstrings are skipped. 14486 14487 - Issue #7712: test.support gained a new `temp_cwd` context manager which is now 14488 also used by regrtest to run all the tests in a temporary directory. The 14489 original CWD is saved in `support.SAVEDCWD`. Thanks to Florent Xicluna who 14490 helped with the patch. 14491 14492 - Issue #7924: Fix an intermittent 'XXX undetected error' failure in test_capi 14493 (only seen so far on platforms where the curses module wasn't built), due to 14494 an uncleared exception. 14495 14496 - Issue #7728: test_timeout was changed to use support.bind_port instead of a 14497 hard coded port. 14498 14499 - Issue #7376: Instead of running a self-test (which was failing) when called 14500 with no arguments, doctest.py now gives a usage message. 14501 14502 - Issue #7396: fix regrtest -s, which was broken by the -j enhancement. 14503 14504 - Issue #7498: test_multiprocessing now uses test.support.find_unused_port 14505 instead of a hardcoded port number in test_rapid_restart. 14506 14507 - Issue #7431: Use TESTFN in test_linecache instead of trying to create a file 14508 in the Lib/test directory, which might be read-only for the user running the 14509 tests. 14510 14511 - Issue #7324: Add a sanity check to regrtest argument parsing to catch the case 14512 of an option with no handler. 14513 14514 - Issue #7312: Add a -F flag to run the selected tests in a loop until a test 14515 fails. Can be combined with -j. 14516 14517 - Issue #6551: test_zipimport could import and then destroy some modules of the 14518 encodings package, which would make other tests fail further down the road 14519 because the internally cached encoders and decoders would point to empty 14520 global variables. 14521 14522 - Issue #7295: Do not use a hardcoded file name in test_tarfile. 14523 14524 - Issue #7270: Add some dedicated unit tests for multi-thread synchronization 14525 primitives such as Lock, RLock, Condition, Event and Semaphore. 14526 14527 - Issue #7248 (part 2): Use a unique temporary directory for importlib source 14528 tests instead of tempfile.tempdir. This prevents the tests from sharing state 14529 between concurrent executions on the same system. 14530 14531 - Issue #7248: In importlib.test.source.util a try/finally block did not make 14532 sure that some referenced objects actually were created in the block before 14533 calling methods on the object. 14534 14535 - Issue #7222: Make thread "reaping" more reliable so that reference 14536 leak-chasing test runs give sensible results. The previous method of reaping 14537 threads could return successfully while some Thread objects were still 14538 referenced. This also introduces a new private function: 14539 ``_thread._count()``. 14540 14541 - Issue #7151: Fixed regrtest -j so that output to stderr from a test no longer 14542 runs the risk of causing the worker thread to fail. 14543 14544 - Issue #7055: test___all__ now greedily detects all modules which have an 14545 __all__ attribute, rather than using a hardcoded and incomplete list. 14546 14547 - Issue #7058: Added save/restore for things like sys.argv and cwd to 14548 runtest_inner in regrtest, with warnings if the called test modifies them, and 14549 a new section in the summary report at the end. 14550 14551 - Issue #7042: Fix test_signal (test_itimer_virtual) failure on OS X 10.6. 14552 14553 - Fixed tests in importlib.test.source.test_abc_loader that were masking the 14554 proper exceptions that should be raised for missing or improper code object 14555 bytecode. 14556 14557 - Removed importlib's custom test discovery code and switched to 14558 unittest.TestLoader.discover(). 14559 14560 Tools/Demos 14561 ----------- 14562 14563 - Issue #5464, #8974: Implement plural forms in msgfmt.py. 14564 14565 - iobench (a file I/O benchmark) and ccbench (a concurrency benchmark) were 14566 added to the `Tools/` directory. They were previously living in the sandbox. 14567 14568 14569 What's New in Python 3.1? 14570 ========================= 14571 14572 *Release date: 27-June-2009* 14573 14574 Core and Builtins 14575 ----------------- 14576 14577 - Issue #6334: Fix bug in range length calculation for ranges with 14578 large arguments. 14579 14580 - Issue #6329: Fixed iteration for memoryview objects (it was being blocked 14581 because it wasn't recognized as a sequence). 14582 14583 Library 14584 ------- 14585 14586 - Issue #6126: Fixed pdb command-line usage. 14587 14588 - Issue #6314: logging: performs extra checks on the "level" argument. 14589 14590 - Issue #6274: Fixed possible file descriptors leak in subprocess.py 14591 14592 - Accessing io.StringIO.buffer now raises an AttributeError instead of 14593 io.UnsupportedOperation. 14594 14595 - Issue #6271: mmap tried to close invalid file handle (-1) when anonymous. 14596 (On Unix) 14597 14598 - Issue #1202: zipfile module would cause a struct.error when attempting to 14599 store files with a CRC32 > 2**31-1. 14600 14601 Extension Modules 14602 ----------------- 14603 14604 - Issue #5590: Remove unused global variable in pyexpat extension. 14605 14606 14607 What's New in Python 3.1 Release Candidate 2? 14608 ============================================= 14609 14610 *Release date: 13-June-2009* 14611 14612 Core and Builtins 14613 ----------------- 14614 14615 - Fixed SystemError triggered by "range([], 1, -1)". 14616 14617 - Issue #5924: On Windows, a large PYTHONPATH environment variable 14618 (more than 255 characters) would be completely ignored. 14619 14620 - Issue #4547: When debugging a very large function, it was not always 14621 possible to update the lineno attribute of the current frame. 14622 14623 - Issue #5330: C functions called with keyword arguments were not reported by 14624 the various profiling modules (profile, cProfile). Patch by Hagen Frstenau. 14625 14626 Library 14627 ------- 14628 14629 - Issue #6438: Fixed distutils.cygwinccompiler.get_versions : the regular 14630 expression string pattern was trying to match against a bytes returned by 14631 Popen. Tested under win32 to build the py-postgresql project. 14632 14633 - Issue #6258: Support AMD64 in bdist_msi. 14634 14635 - Issue #6195: fixed doctest to no longer try to read 'source' data from 14636 binary files. 14637 14638 - Issue #5262: Fixed bug in next rollover time computation in 14639 TimedRotatingFileHandler. 14640 14641 - Issue #6217: The C implementation of io.TextIOWrapper didn't include the 14642 errors property. Additionally, the errors and encoding properties of StringIO 14643 are always None now. 14644 14645 - Issue #6137: The pickle module now translates module names when loading 14646 or dumping pickles with a 2.x-compatible protocol, in order to make data 14647 sharing and migration easier. This behaviour can be disabled using the 14648 new `fix_imports` optional argument. 14649 14650 - Removed the ipaddr module. 14651 14652 - Issue #3613: base64.{encode,decode}string are now called 14653 base64.{encode,decode}bytes which reflects what type they accept and return. 14654 The old names are still there as deprecated aliases. 14655 14656 - Issue #5767: Remove sgmlop support from xmlrpc.client. 14657 14658 - Issue #6150: Fix test_unicode on wide-unicode builds. 14659 14660 - Issue #6149: Fix initialization of WeakValueDictionary objects from non-empty 14661 parameters. 14662 14663 Windows 14664 ------- 14665 14666 - Issue #6221: Delete test registry key before running the test. 14667 14668 - Issue #6158: Package Sine-1000Hz-300ms.aif in MSI file. 14669 14670 C-API 14671 ----- 14672 14673 - Issue #5735: Python compiled with --with-pydebug should throw an 14674 ImportError when trying to import modules compiled without 14675 --with-pydebug, and vice-versa. 14676 14677 14678 Build 14679 ----- 14680 14681 - Issue #6154: Make sure the intl library is added to LIBS if needed. Also 14682 added LIBS to OS X framework builds. 14683 14684 - Issue #5809: Specifying both --enable-framework and --enable-shared is 14685 an error. Configure now explicitly tells you about this. 14686 14687 14688 14689 What's New in Python 3.1 release candidate 1? 14690 ============================================= 14691 14692 *Release date: 2009-05-30* 14693 14694 Core and Builtins 14695 ----------------- 14696 14697 - Issue #6097: Escape UTF-8 surrogates resulting from mbstocs conversion 14698 of the command line. 14699 14700 - Issue #6012: Add cleanup support to O& argument parsing. 14701 14702 - Issue #6089: Fixed str.format with certain invalid field specifiers 14703 that would raise SystemError. 14704 14705 - Issue #5982: staticmethod and classmethod now expose the wrapped 14706 function with __func__. 14707 14708 - Added support for multiple context managers in the same with-statement. 14709 Deprecated contextlib.nested() which is no longer needed. 14710 14711 - Issue #5829: complex("1e500") no longer raises OverflowError. This 14712 makes it consistent with float("1e500") and interpretation of real 14713 and imaginary literals. 14714 14715 - Issue #3527: Removed Py_WIN_WIDE_FILENAMES which is not used any more. 14716 14717 - Issue #5994: the marshal module now has docstrings. 14718 14719 - Issue #5981: Fix three minor inf/nan issues in float.fromhex: 14720 (1) inf and nan strings with trailing whitespace were incorrectly 14721 rejected; (2) parsing of strings representing infinities and nans 14722 was locale aware; and (3) the interpretation of fromhex('-nan') 14723 didn't match that of float('-nan'). 14724 14725 Library 14726 ------- 14727 14728 - Issue #4859: Implement PEP 383 for pwd, spwd, and grp. 14729 14730 - smtplib 'login' and 'cram-md5' login are also fixed (see Issue #5259). 14731 14732 - Issue #6121: pydoc now ignores leading and trailing spaces in the 14733 argument to the 'help' function. 14734 14735 - Issue #6118: urllib.parse.quote_plus ignored the encoding and errors 14736 arguments for strings with a space in them. 14737 14738 - collections.namedtuple() was not working with the following field 14739 names: cls, self, tuple, itemgetter, and property. 14740 14741 - In unittest, using a skipping decorator on a class is now equivalent to 14742 skipping every test on the class. The ClassTestSuite class has been removed. 14743 14744 - Issue #6050: Don't fail extracting a directory from a zipfile if 14745 the directory already exists. 14746 14747 - Issue #1309352: fcntl now converts its third arguments to a C `long` rather 14748 than an int, which makes some operations possible under 64-bit Linux (e.g. 14749 DN_MULTISHOT with F_NOTIFY). 14750 14751 - Issue #5761: Add the name of the underlying file to the repr() of various 14752 IO objects. 14753 14754 - Issue #5259: smtplib plain auth login no longer gives a traceback. Fix 14755 by Musashi Tamura, tests by Marcin Bachry. 14756 14757 - Issue #1983: Fix functions taking or returning a process identifier to use 14758 the dedicated C type ``pid_t`` instead of a C ``int``. Some platforms have 14759 a process identifier type wider than the standard C integer type. 14760 14761 - Issue #4066: smtplib.SMTP_SSL._get_socket now correctly returns the socket. 14762 Patch by Farhan Ahmad, test by Marcin Bachry. 14763 14764 - Issue #2116: Weak references and weak dictionaries now support copy()ing and 14765 deepcopy()ing. 14766 14767 - Issue #1655: Make imaplib IPv6-capable. Patch by Derek Morr. 14768 14769 - Issue #5918: Fix a crash in the parser module. 14770 14771 - Issue #1664: Make nntplib IPv6-capable. Patch by Derek Morr. 14772 14773 - Issue #5006: Better handling of unicode byte-order marks (BOM) in the io 14774 library. This means, for example, that opening a UTF-16 text file in 14775 append mode doesn't add a BOM at the end of the file if the file isn't 14776 empty. 14777 14778 - Issue #4050: inspect.findsource/getsource now raise an IOError if the 'source' 14779 file is a binary. Patch by Brodie Rao, tests by Daniel Diniz. This fix 14780 corrects a pydoc regression. 14781 14782 - Issue #5955: aifc's close method did not close the file it wrapped, 14783 now it does. This also means getfp method now returns the real fp. 14784 14785 Installation 14786 ------------ 14787 14788 - Issue #6047: fullinstall has been removed because Python 3's executable will 14789 now be known as python3. 14790 14791 - Lib/smtpd.py is no longer installed as a script. 14792 14793 Extension Modules 14794 ----------------- 14795 14796 - Issue #3061: Use wcsftime for time.strftime where available. 14797 14798 - Issue #4873: Fix resource leaks in error cases of pwd and grp. 14799 14800 - Issue #6093: Fix off-by-one error in locale.strxfrm. 14801 14802 - The _functools and _locale modules are now built into the libpython shared 14803 library instead of as extension modules. 14804 14805 Build 14806 ----- 14807 14808 - Issue #3585: Add pkg-config support. It creates a python-2.7.pc file 14809 and a python3.pc symlink in the $(LIBDIR)/pkgconfig directory. Patch by 14810 Clinton Roy. 14811 14812 Tests 14813 ----- 14814 14815 - Issue #5442: Tests for importlib were not properly skipping case-sensitivity 14816 tests on darwin even when the OS was installed on a case-sensitive 14817 filesystem. Also fixed tests that should not be run when 14818 sys.dont_write_bytecode is true. 14819 14820 14821 What's New in Python 3.1 beta 1? 14822 ================================ 14823 14824 *Release date: 2009-05-06* 14825 14826 Core and Builtins 14827 ----------------- 14828 14829 - Issue #5914: Add new C API function PyOS_string_to_double, and 14830 deprecate PyOS_ascii_strtod and PyOS_ascii_atof. 14831 14832 - Issue #3382: float.__format__, complex.__format__, and %-formatting 14833 no longer map 'F' to 'f'. Because of issue #5859 (below), this only 14834 affects nan -> NAN and inf -> INF. 14835 14836 - Issue #5799: ntpath (ie, os.path on Windows) fully supports UNC pathnames 14837 in all operations, including splitdrive, split, etc. splitunc() now issues 14838 a PendingDeprecation warning. 14839 14840 - Issue #5920: For float.__format__, change the behavior with the 14841 empty presentation type (that is, not one of 'e', 'f', 'g', or 'n') 14842 to be like 'g' but with at least one decimal point and with a 14843 default precision of 12. Previously, the behavior the same but with 14844 a default precision of 6. This more closely matches str(), and 14845 reduces surprises when adding alignment flags to the empty 14846 presentation type. This also affects the new complex.__format__ in 14847 the same way. 14848 14849 - Implement PEP 383, Non-decodable Bytes in System Character Interfaces. 14850 14851 - Issue #5890: in subclasses of 'property' the __doc__ attribute was 14852 shadowed by classtype's, even if it was None. property now 14853 inserts the __doc__ into the subclass instance __dict__. 14854 14855 - Issue #4426: The UTF-7 decoder was too strict and didn't accept some legal 14856 sequences. Patch by Nick Barnes and Victor Stinner. 14857 14858 - Issue #3672: Reject surrogates in utf-8 codec; add surrogatepass error handler. 14859 14860 - Issue #5883: In the io module, the BufferedIOBase and TextIOBase ABCs have 14861 received a new method, detach(). detach() disconnects the underlying stream 14862 from the buffer or text IO and returns it. 14863 14864 - Issue #5859: Remove switch from '%f' to '%g'-style formatting for 14865 floats with absolute value over 1e50. Also remove length 14866 restrictions for float formatting: '%.67f' % 12.34 and '%.120e' % 14867 12.34 no longer raise an exception. 14868 14869 - Issue #1588: Add complex.__format__. For example, 14870 format(complex(1, 2./3), '.5') now produces a sensible result. 14871 14872 - Issue #5864: Fix empty format code formatting for floats so that it 14873 never gives more than the requested number of significant digits. 14874 14875 - Issue #5793: Rationalize isdigit / isalpha / tolower, etc. Includes 14876 new Py_ISDIGIT / Py_ISALPHA / Py_TOLOWER, etc. in pctypes.h. 14877 14878 - Issue #5835: Deprecate PyOS_ascii_formatd. 14879 14880 - Issue #4971: Fix titlecase for characters that are their own 14881 titlecase, but not their own uppercase. 14882 14883 - Issue #5283: Setting __class__ in __del__ caused a segfault. 14884 14885 - Issue #5816: complex(repr(z)) now recovers z exactly, even when 14886 z involves nans, infs or negative zeros. 14887 14888 - Issue #3166: Make int -> float conversions correctly rounded. 14889 14890 - Issue #1869 (and many duplicates): make round(x, n) correctly 14891 rounded for a float x, by using the decimal <-> binary conversions 14892 from Python/dtoa.c. As a consequence, (e.g.) round(x, 2) now 14893 consistently agrees with format(x, '.2f'). 14894 14895 - Issue #5787: object.__getattribute__(some_type, "__bases__") segfaulted on 14896 some builtin types. 14897 14898 - Issue #5772: format(1e100, '<') produces '1e+100', not '1.0e+100'. 14899 14900 - Issue #5515: str.format() type 'n' combined with commas and leading 14901 zeros no longer gives odd results with ints and floats. 14902 14903 - Implement PEP 378, Format Specifier for Thousands Separator, for 14904 floats. 14905 14906 - The str function switches to exponential notation at 14907 1e11, not 1e12. This avoids printing 13 significant digits in 14908 situations where only 12 of them are correct. Example problem 14909 value: str(1e11 + 0.5). (This minor issue has existed in 2.x for a 14910 long time.) 14911 14912 - Issue #1580: On most platforms, use a 'short' float repr: for a 14913 finite float x, repr(x) now outputs a string based on the shortest 14914 sequence of decimal digits that rounds to x. Previous behaviour was 14915 to output 17 significant digits and then strip trailing zeros. 14916 Another minor difference is that the new repr switches to 14917 exponential notation at 1e16 instead of the previous 1e17; this 14918 avoids misleading output in some cases. 14919 14920 There's a new sys attribute sys.float_repr_style, which takes 14921 the value 'short' to indicate that we're using short float repr, 14922 and 'legacy' if the short float repr isn't available for one 14923 reason or another. 14924 14925 The float repr change involves incorporating David Gay's 'perfect 14926 rounding' code into the Python core (it's in Python/dtoa.c). As a 14927 secondary consequence, all string-to-float and float-to-string 14928 conversions (including all float formatting operations) will be 14929 correctly rounded on these platforms. 14930 14931 See issue #1580 discussions for details of platforms for which 14932 this change does not apply. 14933 14934 - Issue #5759: float() didn't call __float__ on str subclasses. 14935 14936 - The string.maketrans() function is deprecated; there is a new static method 14937 maketrans() on the bytes and bytearray classes. This removes confusion about 14938 the types string.maketrans() is supposed to work with, and mirrors the 14939 methods available on the str class. 14940 14941 - Issue #2170: refactored xml.dom.minidom.normalize, increasing both 14942 its clarity and its speed. 14943 14944 - Issue #1113244: Py_XINCREF, Py_DECREF, Py_XDECREF: Add ``do { ... } while (0)`` 14945 to avoid compiler warnings. 14946 14947 - Issue #3739: The unicode-internal encoder now reports the number of characters 14948 consumed like any other encoder (instead of the number of bytes). 14949 14950 Installation 14951 ------------ 14952 14953 - Issue #5756: Install idle and pydoc with a 3 suffix. 14954 14955 Library 14956 ------- 14957 14958 - Issue #8203: Fix IDLE Credits dialog: view_file() uses its encoding argument. 14959 14960 - Issue #5311: bdist_msi can now build packages that do not depend on a 14961 specific Python version. 14962 14963 - Issue #5150: IDLE's format menu now has an option to strip trailing 14964 whitespace. 14965 14966 - Issue #5940: distutils.command.build_clib.check_library_list was not doing 14967 the right type checkings anymore. 14968 14969 - Issue #4875: On win32, ctypes.util.find_library does no longer 14970 return directories. 14971 14972 - Issue #5142: Add the ability to skip modules while stepping to pdb. 14973 14974 - Issue #1309567: Fix linecache behavior of stripping subdirectories when 14975 looking for files given by a relative filename. 14976 14977 - Issue #5923: Update the ``turtle`` module to version 1.1, add two new 14978 turtle demos in Demo/turtle. 14979 14980 - Issue #5692: In ``zipfile.Zipfile``, fix wrong path calculation when 14981 extracting a file to the root directory. 14982 14983 - Issue #5913: os.listdir() should fail for empty path on windows. 14984 14985 - Issue #5084: unpickling now interns the attribute names of pickled objects, 14986 saving memory and avoiding growth in size of subsequent pickles. Proposal 14987 and original patch by Jake McGuire. 14988 14989 - The json module now works exclusively with str and not bytes. 14990 14991 - Issue #3959: The ipaddr module has been added to the standard library. 14992 Contributed by Google. 14993 14994 - Issue #3002: ``shutil.copyfile()`` and ``shutil.copytree()`` now raise an 14995 error when a named pipe is encountered, rather than blocking infinitely. 14996 14997 - Issue #5857: tokenize.tokenize() now returns named tuples. 14998 14999 - Issue #4305: ctypes should now build again on mipsel-linux-gnu 15000 15001 - Issue #1734234: Massively speedup ``unicodedata.normalize()`` when the 15002 string is already in normalized form, by performing a quick check beforehand. 15003 Original patch by Rauli Ruohonen. 15004 15005 - Issue #5853: calling a function of the mimetypes module from several threads 15006 at once could hit the recursion limit if the mimetypes database hadn't been 15007 initialized before. 15008 15009 - Issue #5854: Updated __all__ to include some missing names and remove some 15010 names which should not be exported. 15011 15012 - Issue #3102: All global symbols that the _ctypes extension defines 15013 are now prefixed with 'Py' or '_ctypes'. 15014 15015 - Issue #5041: ctypes does now allow pickling wide character. 15016 15017 - Issue #5812: For the two-argument form of the Fraction constructor, 15018 Fraction(m, n), m and n are permitted to be arbitrary Rational 15019 instances. 15020 15021 - Issue #5812: Fraction('1e6') is valid: more generally, any string 15022 that's valid for float() is now valid for Fraction(), with the 15023 exception of strings representing NaNs and infinities. 15024 15025 - Issue #5734: BufferedRWPair was poorly tested and had several glaring 15026 bugs. Patch by Brian Quinlan. 15027 15028 - Issue #1161031: fix readwrite select flag handling: POLLPRI now 15029 results in a handle_expt_event call, not handle_read_event, and POLLERR 15030 and POLLNVAL now call handle_close, not handle_expt_event. Also, 15031 dispatcher now has an 'ignore_log_types' attribute for suppressing 15032 log messages, which is set to 'warning' by default. 15033 15034 - Issue #2703: SimpleXMLRPCDispatcher.__init__: Provide default values for 15035 new arguments introduced in 2.5. 15036 15037 - Issue #5828 (Invalid behavior of unicode.lower): Fixed bogus logic in 15038 makeunicodedata.py and regenerated the Unicode database (This fixes 15039 u'\u1d79'.lower() == '\x00'). 15040 15041 Extension Modules 15042 ----------------- 15043 15044 - Issue #5881: Remove old undocumented compatibility interfaces in hashlib and 15045 pwd. 15046 15047 - Issue #5463: In struct module, remove deprecated float coercion 15048 for integer type codes: struct.pack('L', 0.3) should now raise 15049 an error. The _PY_STRUCT_FLOAT_COERCE constant has been removed. 15050 The version number has been bumped to 0.3. 15051 15052 - Issue #5359: Readd the Berkeley DB detection code to allow _dbm be built 15053 using Berkeley DB. 15054 15055 Tests 15056 ----- 15057 15058 - Issue #5354: New test support function import_fresh_module() makes 15059 it easy to import both normal and optimised versions of modules. 15060 test_heapq and test_warnings have been adjusted to use it, tests for 15061 other modules with both C and Python implementations in the stdlib 15062 can be adjusted to use it over time. 15063 15064 - Issue #5837: Certain sequences of calls to set() and unset() for 15065 support.EnvironmentVarGuard objects restored the environment variables 15066 incorrectly on __exit__. 15067 15068 C-API 15069 ----- 15070 15071 - Issue #5630: A replacement PyCObject API, PyCapsule, has been added. 15072 15073 15074 What's New in Python 3.1 alpha 2? 15075 ================================= 15076 15077 *Release date: 2009-4-4* 15078 15079 Core and Builtins 15080 ----------------- 15081 15082 - Implement PEP 378, Format Specifier for Thousands Separator, for 15083 integers. 15084 15085 - Issue #5666: Py_BuildValue's 'c' code should create byte strings. 15086 15087 - Issue #5499: The 'c' code for argument parsing functions now only accepts a 15088 byte, and the 'C' code only accepts a unicode character. 15089 15090 - Fix a problem in PyErr_NormalizeException that leads to "undetected errors" 15091 when hitting the recursion limit under certain circumstances. 15092 15093 - Issue #1665206: Remove the last eager import in _warnings.c and make it lazy. 15094 15095 - Fix a segfault when running test_exceptions with coverage, caused by 15096 insufficient checks in accessors of Exception.__context__. 15097 15098 - Issue #5604: non-ASCII characters in module name passed to 15099 imp.find_module() were converted to UTF-8 while the path is 15100 converted to the default filesystem encoding, causing nonsense. 15101 15102 - Issue #5126: str.isprintable() returned False for space characters. 15103 15104 - Issue #4865: On MacOSX /Library/Python/2.7/site-packages is added to 15105 the end sys.path, for compatibility with the system install of Python. 15106 15107 - Issue #4688: Add a heuristic so that tuples and dicts containing only 15108 untrackable objects are not tracked by the garbage collector. This can 15109 reduce the size of collections and therefore the garbage collection overhead 15110 on long-running programs, depending on their particular use of datatypes. 15111 15112 - Issue #5512: Rewrite PyLong long division algorithm (x_divrem) to 15113 improve its performance. Long divisions and remainder operations 15114 are now between 50% and 150% faster. 15115 15116 - Issue #4258: Make it possible to use base 2**30 instead of base 15117 2**15 for the internal representation of integers, for performance 15118 reasons. Base 2**30 is enabled by default on 64-bit machines. Add 15119 --enable-big-digits option to configure, which overrides the 15120 default. Add sys.int_info structseq to provide information about 15121 the internal format. 15122 15123 - Issue #4474: PyUnicode_FromWideChar now converts characters outside 15124 the BMP to surrogate pairs, on systems with sizeof(wchar_t) == 4 15125 and sizeof(Py_UNICODE) == 2. 15126 15127 - Issue #5237: Allow auto-numbered fields in str.format(). For 15128 example: '{} {}'.format(1, 2) == '1 2'. 15129 15130 - Issue #5392: when a very low recursion limit was set, the interpreter would 15131 abort with a fatal error after the recursion limit was hit twice. 15132 15133 - Issue #3845: In PyRun_SimpleFileExFlags avoid invalid memory access with 15134 short file names. 15135 15136 Library 15137 ------- 15138 15139 - Issue #2625: added missing items() call to the for loop in 15140 mailbox.MH.get_message(). 15141 15142 - Issue #5640: Fix _multibytecodec so that CJK codecs don't repeat 15143 error substitutions from non-strict codec error callbacks in 15144 incrementalencoder and StreamWriter. 15145 15146 - Issue #5656: Fix the coverage reporting when running the test suite with 15147 the -T argument. 15148 15149 - Issue #5647: MutableSet.__iand__() no longer mutates self during iteration. 15150 15151 - Issue #5624: Fix the _winreg module name still used in several modules. 15152 15153 - Issue #5628: Fix io.TextIOWrapper.read() with an unreadable buffer. 15154 15155 - Issue #5619: Multiprocessing children disobey the debug flag and causes 15156 popups on windows buildbots. Patch applied to work around this issue. 15157 15158 - Issue #5400: Added patch for multiprocessing on netbsd compilation/support 15159 15160 - Issue #5387: Fixed mmap.move crash by integer overflow. 15161 15162 - Issue #5261: Patch multiprocessing's semaphore.c to support context 15163 manager use: "with multiprocessing.Lock()" works now. 15164 15165 - Issue #5236: Change time.strptime() to only take strings. Didn't work with 15166 bytes already but the failure was non-obvious. 15167 15168 - Issue #5177: Multiprocessing's SocketListener class now uses 15169 socket.SO_REUSEADDR on all connections so that the user no longer needs 15170 to wait 120 seconds for the socket to expire. 15171 15172 - Issue #5595: Fix UnboundedLocalError in ntpath.ismount(). 15173 15174 - Issue #1174606: Calling read() without arguments of an unbounded file 15175 (typically /dev/zero under Unix) could crash the interpreter. 15176 15177 - The max_buffer_size arguments of io.BufferedWriter, io.BufferedRWPair, and 15178 io.BufferedRandom have been deprecated for removal in Python 3.2. 15179 15180 - Issue #5068: Fixed the tarfile._BZ2Proxy.read() method that would loop 15181 forever on incomplete input. That caused tarfile.open() to hang when used 15182 with mode 'r' or 'r:bz2' and a fileobj argument that contained no data or 15183 partial bzip2 compressed data. 15184 15185 - Issue #2110: Add support for thousands separator and 'n' type 15186 specifier to Decimal.__format__ 15187 15188 - Fix Decimal.__format__ bug that swapped the meanings of the '<' and 15189 '>' alignment characters. 15190 15191 - The error detection code in FileIO.close() could fail to reflect the `errno` 15192 value, and report it as -1 instead. 15193 15194 - Issue #5016: FileIO.seekable() could return False if the file position 15195 was negative when truncated to a C int. Patch by Victor Stinner. 15196 15197 Extension Modules 15198 ----------------- 15199 15200 - Issue #5391: mmap now deals exclusively with bytes. 15201 15202 - Issue #5463: In struct module, remove deprecated overflow wrapping 15203 when packing an integer: struct.pack('=L', -1) now raises 15204 struct.error instead of returning b'\xff\xff\xff\xff'. The 15205 _PY_STRUCT_RANGE_CHECKING and _PY_STRUCT_OVERFLOW_MASKING constants 15206 have been removed from the struct module. 15207 15208 15209 What's New in Python 3.1 alpha 1 15210 ================================ 15211 15212 *Release date: 2009-03-07* 15213 15214 Core and Builtins 15215 ----------------- 15216 15217 - The io module has been reimplemented in C for speed. 15218 15219 - Give dict views an informative __repr__. 15220 15221 - Issue #5247: Improve error message when unknown format codes are 15222 used when using str.format() with str, int, and float arguments. 15223 15224 - Issue #5249: time.strftime returned malformed string when format string 15225 contained non ascii character on windows. 15226 15227 - Issue #4626: compile(), exec(), and eval() ignore the coding cookie if the 15228 source has already been decoded into str. 15229 15230 - Issue #5186: Reduce hash collisions for objects with no __hash__ method by 15231 rotating the object pointer by 4 bits to the right. 15232 15233 - Issue #4575: Fix Py_IS_INFINITY macro to work correctly on x87 FPUs: 15234 it now forces its argument to double before testing for infinity. 15235 15236 - Issue #5137: Make len() correctly raise a TypeError when a __len__ method 15237 returns a non-number type. 15238 15239 - Issue #5182: Removed memoryview.__str__. 15240 15241 - Issue #1717: Removed builtin cmp() function, dropped tp_compare 15242 slot, the C API functions PyObject_Compare and PyUnicode_Compare and 15243 the type definition cmpfunc. The tp_compare slot has been renamed 15244 to tp_reserved, and is reserved for future usage. 15245 15246 - Issue #1242657: the __len__() and __length_hint__() calls in several tools 15247 were suppressing all exceptions. These include list() and bytearray(). 15248 15249 - Issue #4707: round(x, n) now returns an integer if x is an integer. 15250 Previously it returned a float. 15251 15252 - Issue #4753: By enabling a configure option named '--with-computed-gotos' 15253 on compilers that support it (notably: gcc, SunPro, icc), the bytecode 15254 evaluation loop is compiled with a new dispatch mechanism which gives 15255 speedups of up to 20%, depending on the system, on various benchmarks. 15256 15257 - Issue #4874: Most builtin decoders now reject unicode input. 15258 15259 - Issue #4842: Don't allow trailing 'L' when constructing an integer 15260 from a string. 15261 15262 - Issue #4991: os.fdopen now raises an OSError for invalid file descriptors. 15263 15264 - Issue #4838: When a module is deallocated, free the memory backing the 15265 optional module state data. 15266 15267 - Issue #4910: Rename nb_long slot to nb_reserved, and change its 15268 type to ``(void *)``. 15269 15270 - Issue #4935: The overflow checking code in the expandtabs() method common 15271 to str, bytes and bytearray could be optimized away by the compiler, letting 15272 the interpreter segfault instead of raising an error. 15273 15274 - Issue #3720: Fix a crash when an iterator modifies its class and removes its 15275 __next__ method. 15276 15277 - Issue #4910: Builtin int() function and PyNumber_Long/PyNumber_Int API 15278 function no longer attempt to call the __long__ slot to convert an object 15279 to an integer. Only the __int__ and __trunc__ slots are examined. 15280 15281 - Issue #4893: Use NT threading on CE. 15282 15283 - Issue #4915: Port sysmodule to Windows CE. 15284 15285 - Issue #4868: utf-8, utf-16 and latin1 decoding are now 2x to 4x faster. The 15286 common cases are optimized thanks to a dedicated fast path and a moderate 15287 amount of loop unrolling. 15288 15289 - Issue #4074: Change the criteria for doing a full garbage collection (i.e. 15290 collecting the oldest generation) so that allocating lots of objects without 15291 destroying them does not show quadratic performance. Based on a proposal by 15292 Martin von Lwis at 15293 http://mail.python.org/pipermail/python-dev/2008-June/080579.html. 15294 15295 - Issue #4604: Some objects of the I/O library could still be used after 15296 having been closed (for instance, a read() call could return some 15297 previously buffered data). Patch by Dmitry Vasiliev. 15298 15299 - Issue #4705: Fix the -u ("unbuffered binary stdout and stderr") command-line 15300 flag to work properly. Furthermore, when specifying -u, the text stdout 15301 and stderr streams have line-by-line buffering enabled (the default being 15302 to buffer arbitrary chunks of data). 15303 15304 - The internal table, _PyLong_DigitValue, is now an array of unsigned chars 15305 instead of ints (reducing its size from 4 to 8 times thereby reducing 15306 Python's overall memory). 15307 15308 - Issue #1180193: When importing a module from a .pyc (or .pyo) file with 15309 an existing .py counterpart, override the co_filename attributes of all 15310 code objects if the original filename is obsolete (which can happen if the 15311 file has been renamed, moved, or if it is accessed through different paths). 15312 Patch by Ziga Seilnacht and Jean-Paul Calderone. 15313 15314 - Issue #4580: Fix slicing of memoryviews when the item size is greater than 15315 one byte. Also fixes the meaning of len() so that it returns the number of 15316 items, rather than the size in bytes. 15317 15318 - Issue #4075: Use OutputDebugStringW in Py_FatalError. 15319 15320 - Issue #4747: When the terminal does not use utf-8, executing a script with 15321 non-ascii characters in its name could fail with a "SyntaxError: None" error. 15322 15323 - Issue #4797: IOError.filename was not set when ``_fileio.FileIO`` failed 15324 to open file with a bytes filename on Windows. 15325 15326 - Issue #3680: Reference cycles created through a dict, set or deque iterator 15327 did not get collected. 15328 15329 - Issue #4701: PyObject_Hash now implicitly calls PyType_Ready on types 15330 where the tp_hash and tp_dict slots are both NULL. 15331 15332 - Issue #4759: None is now allowed as the first argument of 15333 bytearray.translate(). It was always allowed for bytes.translate(). 15334 15335 - Added test case to ensure attempts to read from a file opened for writing 15336 fail. 15337 15338 - Issue #3106: Speedup some comparisons (str/str and int/int). 15339 15340 - Issue #2183: Simplify and optimize bytecode for list, dict and set 15341 comprehensions. Original patch for list comprehensions by Neal Norwitz. 15342 15343 - Issue #2467: gc.DEBUG_STATS reported invalid elapsed times. Also, always 15344 print elapsed times, not only when some objects are uncollectable / 15345 unreachable. Original patch by Neil Schemenauer. 15346 15347 - Issue #3439: Add a bit_length method to int. 15348 15349 - Issue #2173: When getting device encoding, check that return value of 15350 nl_langinfo is not the empty string. This was causing silent build 15351 failures on OS X. 15352 15353 - Issue #4597: Fixed several opcodes that weren't always propagating 15354 exceptions. 15355 15356 - Issue #4589: Fixed exception handling when the __exit__ function of a 15357 context manager returns a value that cannot be converted to a bool. 15358 15359 - Issue #4445: Replace "sizeof(PyBytesObject)" with 15360 "offsetof(PyBytesObject, ob_sval) + 1" when allocating memory for 15361 bytes instances. On a typical machine this saves 3 bytes of memory 15362 (on average) per allocation of a bytes instance. 15363 15364 - Issue #4533: File read operation was dreadfully slow due to a slowly 15365 growing read buffer. Fixed by using the same growth rate algorithm as 15366 Python 2.x. 15367 15368 - Issue #4509: Various issues surrounding resize of bytearray objects to 15369 which there are buffer exports (e.g. memoryview instances). 15370 15371 - Issue #4233: Changed semantic of ``_fileio.FileIO``'s ``close()`` 15372 method on file objects with closefd=False. The file descriptor is still 15373 kept open but the file object behaves like a closed file. The ``FileIO`` 15374 object also got a new readonly attribute ``closefd``. 15375 15376 - Issue #4569: Interpreter crash when mutating a memoryview with an item size 15377 larger than 1. 15378 15379 - Issue #4748: Lambda generators no longer return a value. 15380 15381 - The re.sub(), re.subn() and re.split() functions now accept a flags parameter. 15382 15383 - Issue #5108: Handle %s like %S, %R and %A in PyUnicode_FromFormatV(): Call 15384 PyUnicode_DecodeUTF8() once, remember the result and output it in a second 15385 step. This avoids problems with counting UTF-8 bytes that ignores the effect 15386 of using the replace error handler in PyUnicode_DecodeUTF8(). 15387 15388 Library 15389 ------- 15390 15391 - Issue #7071: byte-compilation in Distutils is now done with respect to 15392 sys.dont_write_bytecode. 15393 15394 - Issue #7066: archive_util.make_archive now restores the cwd if an error is 15395 raised. Initial patch by Ezio Melotti. 15396 15397 - Issue #6516: Added owner/group support when creating tar archives in 15398 Distutils. 15399 15400 - Issue #6954: Fixed crash when using DISTUTILS_DEBUG flag in Distutils. 15401 15402 - Issue #6163: Fixed HP-UX runtime library dir options in 15403 distutils.unixcompiler. Initial patch by Sridhar Ratnakumar and 15404 Michael Haubenwallner. 15405 15406 - Issue #6693: New functions in site.py to get user/global site packages paths. 15407 15408 - Issue #6511: ZipFile now raises BadZipfile (instead of an IOError) when 15409 opening an empty or very small file. 15410 15411 - Issue #6545: Removed assert statements in distutils.Extension, so the 15412 behavior is similar when used with -O. 15413 15414 - unittest has been split up into a package. All old names should still work. 15415 15416 - Issue #6466: now distutils.cygwinccompiler and distutils.emxccompiler 15417 uses the same refactored function to get gcc/ld/dllwrap versions numbers. 15418 It's `distutils.util.get_compiler_versions`. Added deprecation warnings 15419 for the obsolete get_versions() functions. 15420 15421 - Issue #6433: fixed issues with multiprocessing.pool.map hanging on empty list 15422 15423 - Issue #6314: logging: Extra checks on the "level" argument in more places. 15424 15425 - Issue #2622: Fixed an ImportError when importing email.message from a 15426 standalone application built with py2exe or py2app. 15427 15428 - Issue #6455: Fixed test_build_ext under win32. 15429 15430 - Issue #6377: Enabled the compiler option, and deprecate its usage as an 15431 attribute. 15432 15433 - Issue #6413: Fixed the log level in distutils.dist for announce. 15434 15435 - Issue #6403: Fixed package path usage in build_ext. 15436 15437 - Issues #5155, 5313, 5331: multiprocessing.Process._bootstrap was 15438 unconditionally calling "os.close(sys.stdin.fileno())" resulting in file 15439 descriptor errors 15440 15441 - Issue #6365: Distutils build_ext inplace mode was copying the compiled 15442 extension in a subdirectory if the extension name had dots. 15443 15444 - Issue #6164: Added an AIX specific linker argument in Distutils 15445 unixcompiler. Original patch by Sridhar Ratnakumar. 15446 15447 - Issue #6286: Now Distutils upload command is based on urllib2 instead of 15448 httplib, allowing the usage of http_proxy. 15449 15450 - Issue #6287: Added the license field in Distutils documentation. 15451 15452 - Issue #6263: Fixed syntax error in distutils.cygwincompiler. 15453 15454 - Issue #5201: distutils.sysconfig.parse_makefile() now understands `$$` 15455 in Makefiles. This prevents compile errors when using syntax like: 15456 `LDFLAGS='-rpath=\$$LIB:/some/other/path'`. Patch by Floris Bruynooghe. 15457 15458 - Issue #6131: test_modulefinder leaked when run after test_distutils. 15459 Patch by Hirokazu Yamamoto. 15460 15461 - Issue #6048: Now Distutils uses the tarfile module in archive_util. 15462 15463 - Issue #6062: In distutils, fixed the package option of build_ext. Feedback 15464 and tests on pywin32 by Tim Golden. 15465 15466 - Issue #6053: Fixed distutils tests on win32. patch by Hirokazu Yamamoto. 15467 15468 - Issue #6046: Fixed the library extension when distutils build_ext is used 15469 inplace. Initial patch by Roumen Petrov. 15470 15471 - Issue #6041: Now distutils `sdist` and `register` commands use `check` as a 15472 subcommand. 15473 15474 - Issue #6022: a test file was created in the current working directory by 15475 test_get_outputs in Distutils. 15476 15477 - Issue #5977: distutils build_ext.get_outputs was not taking into account the 15478 inplace option. Initial patch by kxroberto. 15479 15480 - Issue #5984: distutils.command.build_ext.check_extensions_list checks were broken 15481 for old-style extensions. 15482 15483 - Issue #5976: Fixed Distutils test_check_environ. 15484 15485 - Issue #5941: Distutils build_clib command was not working anymore because 15486 of an incomplete customization of the archiver command. Added ARFLAGS in the 15487 Makefile besides AR and make Distutils use it. Original patch by David 15488 Cournapeau. 15489 15490 - Issue #2245: aifc now skips chunk types it doesn't recognize, per spec. 15491 15492 - Issue #5874: distutils.tests.test_config_cmd is not locale-sensitive 15493 anymore. 15494 15495 - Issue #5810: Fixed Distutils test_build_scripts so it uses 15496 sysconfig.get_config_vars. 15497 15498 - Issue #4951: Fixed failure in test_httpservers. 15499 15500 - Issue #5795: Fixed test_distutils failure on Debian ppc. 15501 15502 - Issue #5607: fixed Distutils test_get_platform for Mac OS X fat binaries. 15503 15504 - Issue #5741: don't disallow "%%" (which is an escape for "%") when setting 15505 a value in SafeConfigParser. 15506 15507 - Issue #5732: added a new command in Distutils: check. 15508 15509 - Issue #5731: Distutils bdist_wininst no longer worked on non-Windows 15510 platforms. Initial patch by Paul Moore. 15511 15512 - Issue #5095: Added bdist_msi to the list of bdist supported formats. 15513 Initial fix by Steven Bethard. 15514 15515 - Issue #1491431: Fixed distutils.filelist.glob_to_re for edge cases. 15516 Initial fix by Wayne Davison. 15517 15518 - Issue #5694: removed spurious test output in Distutils (test_clean). 15519 15520 - Issue #1326077: fix the formatting of SyntaxErrors by the traceback module. 15521 15522 - Issue #1665206 (partially): Move imports in cgitb to the top of the module 15523 instead of performing them in functions. Helps prevent import deadlocking in 15524 threads. 15525 15526 - Issue #2522: locale.format now checks its first argument to ensure it has 15527 been passed only one pattern, avoiding mysterious errors where it appeared 15528 that it was failing to do localization. 15529 15530 - Issue #5583: Added optional Extensions in Distutils. Initial patch by Georg 15531 Brandl. 15532 15533 - Issue #1222: locale.format() bug when the thousands separator is a space 15534 character. 15535 15536 - Issue #5472: Fixed distutils.test_util tear down. Original patch by 15537 Tim Golden. 15538 15539 - collections.deque() objects now have a read-only attribute called maxlen. 15540 15541 - Issue #2638: Show a window constructed with tkSimpleDialog.Dialog only after 15542 it is has been populated and properly configured in order to prevent 15543 window flashing. 15544 15545 - Issue #4792: Prevent a segfault in _tkinter by using the 15546 guaranteed to be safe interp argument given to the PythonCmd in place of 15547 the Tcl interpreter taken from a PythonCmd_ClientData. 15548 15549 - Issue #5193: Guarantee that tkinter.Text.search returns a string. 15550 15551 - Issue #5394: removed > 2.3 syntax from distutils.msvc9compiler. 15552 Original patch by Akira Kitada. 15553 15554 - Issue #5334: array.fromfile() failed to insert values when EOFError was raised. 15555 15556 - Issue #5385: Fixed mmap crash after resize failure on windows. 15557 15558 - Issue #5179: Fixed subprocess handle leak on failure on windows. 15559 15560 - PEP 372: Added collections.OrderedDict(). 15561 15562 - The _asdict() for method for namedtuples now returns an OrderedDict(). 15563 15564 - configparser now defaults to using an ordered dictionary. 15565 15566 - Issue #5401: Fixed a performance problem in mimetypes when ``from mimetypes 15567 import guess_extension`` was used. 15568 15569 - Issue #1733986: Fixed mmap crash in accessing elements of second map object 15570 with same tagname but larger size than first map. (Windows) 15571 15572 - Issue #5386: mmap.write_byte didn't check map size, so it could cause buffer 15573 overrun. 15574 15575 - Issue #1533164: Installed but not listed ``*.pyo`` was breaking Distutils 15576 bdist_rpm command. 15577 15578 - Issue #5378: added --quiet option to Distutils bdist_rpm command. 15579 15580 - Issue #5052: make Distutils compatible with 2.3 again. 15581 15582 - Issue #5316: Fixed buildbot failures introduced by multiple inheritance 15583 in Distutils tests. 15584 15585 - Issue #5287: Add exception handling around findCaller() call to help out 15586 IronPython. 15587 15588 - Issue #5282: Fixed mmap resize on 32bit windows and unix. When offset > 0, 15589 The file was resized to wrong size. 15590 15591 - Issue #5292: Fixed mmap crash on its boundary access m[len(m)]. 15592 15593 - Issue #2279: distutils.sdist.add_defaults now add files 15594 from the package_data and the data_files metadata. 15595 15596 - Issue #5257: refactored all tests in distutils, so they use 15597 support.TempdirManager, to avoid writing in the tests directory. 15598 15599 - Issue #4524: distutils build_script command failed with --with-suffix=3. 15600 Initial patch by Amaury Forgeot d'Arc. 15601 15602 - Issue #2461: added tests for distutils.util 15603 15604 - Issue #4998: The memory saving effect of __slots__ had been lost on Fractions 15605 which inherited from numbers.py which did not have __slots__ defined. The 15606 numbers hierarchy now has its own __slots__ declarations. 15607 15608 - Issue #4631: Fix urlopen() result when an HTTP response uses chunked 15609 encoding. 15610 15611 - Issue #5203: Fixed ctypes segfaults when passing a unicode string to a 15612 function without argtypes (only occurs if HAVE_USABLE_WCHAR_T is false). 15613 15614 - Issue #3386: distutils.sysconfig.get_python_lib prefix argument was ignored 15615 under NT and OS2. Patch by Philip Jenvey. 15616 15617 - Issue #5128: Make compileall properly inspect bytecode to determine if needs 15618 to be recreated. This avoids a timing hole thanks to the old reliance on the 15619 ctime of the files involved. 15620 15621 - Issue #5122: Synchronize tk load failure check to prevent a potential 15622 deadlock. 15623 15624 - Issue #1818: collections.namedtuple() now supports a keyword argument 15625 'rename' which lets invalid fieldnames be automatically converted to 15626 positional names in the form, _1, _2, ... 15627 15628 - Issue #4890: Handle empty text search pattern in Tkinter.Text.search. 15629 15630 - Issue #4512 (part 2): Promote ``ZipImporter._get_filename()`` to be a 15631 public documented method ``ZipImporter.get_filename()``. 15632 15633 - Issue #4195: The ``runpy`` module (and the ``-m`` switch) now support 15634 the execution of packages by looking for and executing a ``__main__`` 15635 submodule when a package name is supplied. Initial patch by Andi 15636 Vajda. 15637 15638 - Issue #1731706: Call Tcl_ConditionFinalize for Tcl_Conditions that will 15639 not be used again (this requires Tcl/Tk 8.3.1), also fix a memory leak in 15640 Tkapp_Call when calling from a thread different than the one that created 15641 the Tcl interpreter. Patch by Robert Hancock. 15642 15643 - Issue #4285: Change sys.version_info to be a named tuple. Patch by 15644 Ross Light. 15645 15646 - Issue #1520877: Now distutils.sysconfig reads $AR from the 15647 environment/Makefile. Patch by Douglas Greiman. 15648 15649 - Issue #1276768: The verbose option was not used in the code of 15650 distutils.file_util and distutils.dir_util. 15651 15652 - Issue #5132: Fixed trouble building extensions under Solaris with 15653 --enabled-shared activated. Initial patch by Dave Peterson. 15654 15655 - Issue #1581476: Always use the Tcl global namespace when calling into Tcl. 15656 15657 - The shelve module now defaults to pickle protocol 3. 15658 15659 - Fix a bug in the trace module where a bytes object from co_lnotab had its 15660 items being passed through ord(). 15661 15662 - Issue #2047: shutil.move() could believe that its destination path was 15663 inside its source path if it began with the same letters (e.g. "src" vs. 15664 "src.new"). 15665 15666 - Added the ttk module. See issue #2983: Ttk support for Tkinter. 15667 15668 - Removed isSequenceType(), isMappingType, and isNumberType() from the 15669 operator module; use the abstract base classes instead. Also removed 15670 the repeat() function; use mul() instead. 15671 15672 - Issue #5021: doctest.testfile() did not create __name__ and 15673 collections.namedtuple() relied on __name__ being defined. 15674 15675 - Backport importlib from Python 3.1. Only the import_module() function has 15676 been backported to help facilitate transitions from 2.7 to 3.1. 15677 15678 - Issue #1885: distutils. When running sdist with --formats=tar,gztar 15679 the tar file was overridden by the gztar one. 15680 15681 - Issue #4863: distutils.mwerkscompiler has been removed. 15682 15683 - Added a new itertools functions: combinations_with_replacement() 15684 and compress(). 15685 15686 - Issue #5032: added a step argument to itertools.count() and 15687 allowed non-integer arguments. 15688 15689 - Fix and properly document the multiprocessing module's logging 15690 support, expose the internal levels and provide proper usage 15691 examples. 15692 15693 - Issue #1672332: fix unpickling of subnormal floats, which was 15694 producing a ValueError on some platforms. 15695 15696 - Issue #3881: Help Tcl to load even when started through the 15697 unreadable local symlink to "Program Files" on Vista. 15698 15699 - Issue #4710: Extract directories properly in the zipfile module; 15700 allow adding directories to a zipfile. 15701 15702 - Issue #3807: _multiprocessing build fails when configure is passed 15703 --without-threads argument. When this occurs, _multiprocessing will 15704 be disabled, and not compiled. 15705 15706 - Issue #5008: When a file is opened in append mode with the new IO library, 15707 do an explicit seek to the end of file (so that e.g. tell() returns the 15708 file size rather than 0). This is consistent with the behaviour of the 15709 traditional 2.x file object. 15710 15711 - Issue #5013: Fixed a bug in FileHandler which occurred when the delay 15712 parameter was set. 15713 15714 - Issue #4842: Always append a trailing 'L' when pickling longs using 15715 pickle protocol 0. When reading, the 'L' is optional. 15716 15717 - Add the importlib package. 15718 15719 - Issue #4301: Patch the logging module to add processName support, remove 15720 _check_logger_class from multiprocessing. 15721 15722 - Issue #3325: Remove python2.x try: except: imports for old cPickle from 15723 multiprocessing. 15724 15725 - Issue #4959: inspect.formatargspec now works for keyword only arguments 15726 without defaults. 15727 15728 - Issue #3321: ``_multiprocessing.Connection()`` doesn't check handle; added checks 15729 for Unix machines for negative handles and large int handles. Without this check 15730 it is possible to segfault the interpreter. 15731 15732 - Issue #4449: AssertionError in mp_benchmarks.py, caused by an underlying issue 15733 in sharedctypes.py. 15734 15735 - Issue #1225107: inspect.isclass() returned True for instances with a custom 15736 __getattr__. 15737 15738 - Issue #3826 and #4791: The socket module now closes the underlying socket 15739 appropriately when it is being used via socket.makefile() objects 15740 rather than delaying the close by waiting for garbage collection to do it. 15741 15742 - Issue #1696199: Add collections.Counter() for rapid and convenient 15743 counting. 15744 15745 - Issue #3860: GzipFile and BZ2File now support the context management protocol. 15746 15747 - Issue #4867: Fixed a crash in ctypes when passing a string to a 15748 function without defining argtypes. 15749 15750 - Issue #4272: Add an optional argument to the GzipFile constructor to override 15751 the timestamp in the gzip stream. The default value remains the current time. 15752 The information can be used by e.g. gunzip when decompressing. Patch by 15753 Jacques Frechet. 15754 15755 - Restore Python 2.3 compatibility for decimal.py. 15756 15757 - Issue #3638: Remove functions from _tkinter module level that depend on 15758 TkappObject to work with multiple threads. 15759 15760 - Issue #4718: Adapt the wsgiref package so that it actually works with 15761 Python 3.x, in accordance with the `official amendments of the spec 15762 <http://www.wsgi.org/wsgi/Amendments_1.0>`_. 15763 15764 - Issue #4796: Added Decimal.from_float() and Context.create_decimal_from_float() 15765 to the decimal module. 15766 15767 - Fractions.from_float() no longer loses precision for integers too big to 15768 cast as floats. 15769 15770 - Issue #4812: add missing underscore prefix to some internal-use-only 15771 constants in the decimal module. (Dec_0 becomes _Dec_0, etc.) 15772 15773 - Issue #4790: The nsmallest() and nlargest() functions in the heapq module 15774 did unnecessary work in the common case where no key function was specified. 15775 15776 - Issue #4795: inspect.isgeneratorfunction() returns False instead of None when 15777 the function is not a generator. 15778 15779 - Issue #4702: Throwing a DistutilsPlatformError instead of IOError in case 15780 no MSVC compiler is found under Windows. Original patch by Philip Jenvey. 15781 15782 - Issue #4646: distutils was choking on empty options arg in the setup 15783 function. Original patch by Thomas Heller. 15784 15785 - Issue #3767: Convert Tk object to string in tkColorChooser. 15786 15787 - Issue #3248: Allow placing ScrolledText in a PanedWindow. 15788 15789 - Issue #4444: Allow assertRaises() to be used as a context handler, so that 15790 the code under test can be written inline if more practical. 15791 15792 - Issue #4739: Add pydoc help topics for symbols, so that e.g. help('@') 15793 works as expected in the interactive environment. 15794 15795 - Issue #4756: zipfile.is_zipfile() now supports file-like objects. Patch by 15796 Gabriel Genellina. 15797 15798 - Issue #4574: reading a UTF16-encoded text file crashes if \r on 64-char 15799 boundary. 15800 15801 - Issue #4223: inspect.getsource() will now correctly display source code 15802 for packages loaded via zipimport (or any other conformant PEP 302 15803 loader). Original patch by Alexander Belopolsky. 15804 15805 - Issue #4201: pdb can now access and display source code loaded via 15806 zipimport (or any other conformant PEP 302 loader). Original patch by 15807 Alexander Belopolsky. 15808 15809 - Issue #4197: doctests in modules loaded via zipimport (or any other PEP 15810 302 conformant loader) will now work correctly in most cases (they 15811 are still subject to the constraints that exist for all code running 15812 from inside a module loaded via a PEP 302 loader and attempting to 15813 perform IO operations based on __file__). Original patch by 15814 Alexander Belopolsky. 15815 15816 - Issues #4082 and #4512: Add runpy support to zipimport in a manner that 15817 allows backporting to maintenance branches. Original patch by 15818 Alexander Belopolsky. 15819 15820 - Issue #4163: textwrap module: allow word splitting on a hyphen preceded by 15821 a non-ASCII letter. 15822 15823 - Issue #4616: TarFile.utime(): Restore directory times on Windows. 15824 15825 - Issue #4021: tokenize.detect_encoding() now raises a SyntaxError when the 15826 codec cannot be found. This is for compatibility with the builtin behavior. 15827 15828 - Issue #4084: Fix max, min, max_mag and min_mag Decimal methods to 15829 give correct results in the case where one argument is a quiet NaN 15830 and the other is a finite number that requires rounding. 15831 15832 - Issue #4483: _dbm module now builds on systems with gdbm & gdbm_compat 15833 libs. 15834 15835 - Added the subprocess.check_call_output() convenience function to get output 15836 from a subprocess on success or raise an exception on error. 15837 15838 - Issue #1055234: cgi.parse_header(): Fixed parsing of header parameters to 15839 support unusual filenames (such as those containing semi-colons) in 15840 Content-Disposition headers. 15841 15842 - Issue #4384: Added logging integration with warnings module using 15843 captureWarnings(). This change includes a NullHandler which does nothing; 15844 it will be of use to library developers who want to avoid the "No handlers 15845 could be found for logger XXX" message which can appear if the library user 15846 doesn't configure logging. 15847 15848 - Issue #3741: DISTUTILS_USE_SDK set causes msvc9compiler.py to raise an 15849 exception. 15850 15851 - Issue #4529: fix the parser module's validation of try-except-finally 15852 statements. 15853 15854 - Issue #4458: getopt.gnu_getopt() now recognizes a single "-" as an argument, 15855 not a malformed option. 15856 15857 - Added the subprocess.check_output() convenience function to get output 15858 from a subprocess on success or raise an exception on error. 15859 15860 - Issue #4542: On Windows, binascii.crc32 still accepted str as binary input; 15861 the corresponding tests now pass. 15862 15863 - Issue #4537: webbrowser.UnixBrowser would fail to open the browser because 15864 it was calling the wrong open() function. 15865 15866 - Issue #1055234: cgi.parse_header(): Fixed parsing of header parameters to 15867 support unusual filenames (such as those containing semi-colons) in 15868 Content-Disposition headers. 15869 15870 - Issue #4861: ctypes.util.find_library(): Robustify. Fix library detection on 15871 biarch systems. Try to rely on ldconfig only, without using objdump and gcc. 15872 15873 - Issue #5104: The socket module now raises OverflowError when 16-bit port and 15874 protocol numbers are supplied outside the allowed 0-65536 range on bind() 15875 and getservbyport(). 15876 15877 - Windows locale mapping updated to Vista. 15878 15879 Tools/Demos 15880 ----------- 15881 15882 - Issue #4704: remove use of cmp() in pybench, bump its version number to 2.1, 15883 and make it 2.6-compatible. 15884 15885 - Ttk demos added in Demo/tkinter/ttk/ 15886 15887 - Issue #4677: add two list comprehension tests to pybench. 15888 15889 15890 Build 15891 ----- 15892 15893 - Issue #6094: Build correctly with Subversion 1.7. 15894 15895 - Issue #5847: Remove -n switch on "Edit with IDLE" menu item. 15896 15897 - Issue #5726: Make Modules/ld_so_aix return the actual exit code of the 15898 linker, rather than always exit successfully. Patch by Floris Bruynooghe. 15899 15900 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify 15901 the order that backends for the dbm extension are checked. 15902 15903 - Link the shared python library with $(MODLIBS). 15904 15905 - Issue #5134: Silence compiler warnings when compiling sqlite with VC++. 15906 15907 - Issue #4494: Fix build with Py_NO_ENABLE_SHARED on Windows. 15908 15909 - Issue #4895: Use _strdup on Windows CE. 15910 15911 - Issue #4472: "configure --enable-shared" now works on OSX 15912 15913 - Issues #4728 and #4060: WORDS_BIGEDIAN is now correct in Universal builds. 15914 15915 - Issue #4389: Add icon to the uninstall entry in "add-and-remove-programs". 15916 15917 - Issue #4289: Remove Cancel button from AdvancedDlg. 15918 15919 - Issue #1656675: Register a drop handler for .py* files on Windows. 15920 15921 - Issue #4120: Exclude manifest from extension modules in VS2008. 15922 15923 - Issue #4091: Install pythonxy.dll in system32 again. 15924 15925 - Issue #4018: Disable "for me" installations on Vista. 15926 15927 - Issue #3758: Add ``patchcheck`` build target to .PHONY. 15928 15929 - Issue #4204: Fixed module build errors on FreeBSD 4. 15930 15931 15932 C-API 15933 ----- 15934 15935 - Issue #6624: yArg_ParseTuple with "s" format when parsing argument with 15936 NUL: Bogus TypeError detail string. 15937 15938 - Issue #5175: PyLong_AsUnsignedLongLong now raises OverflowError 15939 for negative arguments. Previously, it raised TypeError. 15940 15941 - Issue #4720: The format for PyArg_ParseTupleAndKeywords can begin with '|'. 15942 15943 - Issue #3632: from the gdb debugger, the 'pyo' macro can now be called when 15944 the GIL is released, or owned by another thread. 15945 15946 - Issue #4122: On Windows, fix a compilation error when using the 15947 Py_UNICODE_ISSPACE macro in an extension module. 15948 15949 15950 Extension Modules 15951 ----------------- 15952 15953 - Issue #3745: Fix hashlib to always reject unicode and non buffer-api 15954 supporting objects as input no matter how it was compiled (built in 15955 implementations or external openssl library). 15956 15957 - Issue #4397: Fix occasional test_socket failure on OS X. 15958 15959 - Issue #4279: Fix build of parsermodule under Cygwin. 15960 15961 - Issue #4751: hashlib now releases the GIL when hashing large buffers 15962 (with a hardwired threshold of 2048 bytes), allowing better parallelization 15963 on multi-CPU systems. Contributed by Lukas Lueg (ebfe) and Victor Stinner. 15964 15965 - Issue #4051: Prevent conflict of UNICODE macros in cPickle. 15966 15967 - Issue #4738: Each zlib object now has a separate lock, allowing several streams 15968 to be compressed or decompressed at once on multi-CPU systems. Also, the GIL 15969 is now released when computing the CRC of a large buffer. Patch by ebfe. 15970 15971 - Issue #4228: Pack negative values the same way as 2.4 in struct's L format. 15972 15973 - Issue #1040026: Fix os.times result on systems where HZ is incorrect. 15974 15975 - Issues #3167, #3682: Fix test_math failures for log, log10 on Solaris, 15976 OpenBSD. 15977 15978 - Issue #4583: array.array would not always prohibit resizing when a buffer 15979 has been exported, resulting in an interpreter crash when accessing the 15980 buffer. 15981 15982 15983 - Issue #5228: Make functools.partial objects can now be pickled. 15984 15985 Tests 15986 ----- 15987 15988 - Issue #6152: New option '-j'/'--multiprocess' for regrtest allows running 15989 regression tests in parallel, shortening the total runtime. 15990 15991 - Issue #5450: Moved tests involving loading tk from Lib/test/test_tcl to 15992 Lib/tkinter/test/test_tkinter/test_loadtk. With this, these tests demonstrate 15993 the same behaviour as test_ttkguionly (and now also test_tk) which is to 15994 skip the tests if DISPLAY is defined but can't be used. 15995 15996 - regrtest no longer treats ImportError as equivalent to SkipTest. Imports 15997 that should cause a test to be skipped are now done using import_module 15998 from test support, which does the conversion. 15999 16000 - Issue #5083: New 'gui' resource for regrtest. 16001 16002 16003 Docs 16004 ---- 16005 16006 16007 What's New in Python 3.0 final 16008 ============================== 16009 16010 *Release date: 03-Dec-2008* 16011 16012 Core and Builtins 16013 ----------------- 16014 16015 - Issue #3996: On Windows, the PyOS_CheckStack function would cause the 16016 interpreter to abort ("Fatal Python error: Could not reset the stack!") 16017 instead of throwing a MemoryError. 16018 16019 - Issue #3689: The list reversed iterator now supports __length_hint__ 16020 instead of __len__. Behavior now matches other reversed iterators. 16021 16022 - Issue #4367: Python would segfault during compiling when the unicodedata 16023 module couldn't be imported and \N escapes were present. 16024 16025 - Fix build failure of _cursesmodule.c building with -D_FORTIFY_SOURCE=2. 16026 16027 Library 16028 ------- 16029 16030 - Issue #4387: binascii now refuses to accept str as binary input. 16031 16032 - Issue #4073: Add 2to3 support to build_scripts, refactor that support 16033 in build_py. 16034 16035 - IDLE would print a "Unhandled server exception!" message when internal 16036 debugging is enabled. 16037 16038 - Issue #4455: IDLE failed to display the windows list when two windows have 16039 the same title. 16040 16041 - Issue #3741: DISTUTILS_USE_SDK set causes msvc9compiler.py to raise an 16042 exception. 16043 16044 - Issue #4433: Fixed an access violation when garbage collecting 16045 _ctypes.COMError instances. 16046 16047 - Issue #4429: Fixed UnicodeDecodeError in ctypes. 16048 16049 - Issue #4373: Corrected a potential reference leak in the pickle module and 16050 silenced a false positive ref leak in distutils.tests.test_build_ext. 16051 16052 - Issue #4382: dbm.dumb did not specify the expected file encoding for opened 16053 files. 16054 16055 - Issue #4383: When IDLE cannot make the connection to its subprocess, it would 16056 fail to properly display the error message. 16057 16058 Build 16059 ----- 16060 16061 - Issue #4407: Fix source file that caused the compileall step in Windows installer 16062 to fail. 16063 16064 Docs 16065 ---- 16066 16067 - Issue #4449: Fixed multiprocessing examples 16068 16069 - Issue #3799: Document that dbm.gnu and dbm.ndbm will accept string arguments 16070 for keys and values which will be converted to bytes before committal. 16071 16072 16073 What's New in Python 3.0 release candidate 3? 16074 ============================================= 16075 16076 *Release date: 20-Nov-2008* 16077 16078 16079 Core and Builtins 16080 ----------------- 16081 16082 - Issue #4349: sys.path included a non-existent platform directory because of a 16083 faulty Makefile. 16084 16085 - Issue #3327: Don't overallocate in the modules_by_index list. 16086 16087 - Issue #1721812: Binary set operations and copy() returned the input type 16088 instead of the appropriate base type. This was incorrect because set 16089 subclasses would be created without their __init__() method being called. 16090 The corrected behavior brings sets into line with lists and dicts. 16091 16092 - Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to 16093 True, even when x doesn't compare equal to itself. This was a regression 16094 from 2.6. 16095 16096 - Issue #3705: Command-line arguments were not correctly decoded when the 16097 terminal does not use UTF8. 16098 16099 Library 16100 ------- 16101 16102 - Issue #4363: The uuid.uuid1() and uuid.uuid4() functions now work even if 16103 the ctypes module is not present. 16104 16105 - FileIO's mode attribute now always includes ``"b"``. 16106 16107 - Issue #3799: Fix dbm.dumb to accept strings as well as bytes for keys. String 16108 keys are now written out in UTF-8. 16109 16110 - Issue #4338: Fix distutils upload command. 16111 16112 - Issue #4354: Fix distutils register command. 16113 16114 - Issue #4116: Resolve member name conflict in ScrolledCanvas.__init__. 16115 16116 - Issue #4307: The named tuple that ``inspect.getfullargspec()`` returns now 16117 uses ``kwonlydefaults`` instead of ``kwdefaults``. 16118 16119 - Issue #4298: Fix a segfault when pickle.loads is passed ill-formed input. 16120 16121 - Issue #4283: Fix a left-over "iteritems" call in distutils. 16122 16123 Build 16124 ----- 16125 16126 - Issue #4389: Add icon to the uninstall entry in "add-and-remove-programs". 16127 16128 - Issue #4289: Remove Cancel button from AdvancedDlg. 16129 16130 - Issue #1656675: Register a drop handler for .py* files on Windows. 16131 16132 Tools/Demos 16133 ----------- 16134 16135 - Demos of the socketserver module now work with Python 3. 16136 16137 16138 What's New in Python 3.0 release candidate 2 16139 ============================================ 16140 16141 *Release date: 05-Nov-2008* 16142 16143 Core and Builtins 16144 ----------------- 16145 16146 - Issue #4211: The __path__ attribute of frozen packages is now a list instead 16147 of a string as required by PEP 302. 16148 16149 - Issue #3727: Fixed poplib. 16150 16151 - Issue #3714: Fixed nntplib by using bytes where appropriate. 16152 16153 - Issue #1210: Fixed imaplib and its documentation. 16154 16155 - Issue #4233: Changed semantic of ``_fileio.FileIO``'s ``close()`` 16156 method on file objects with closefd=False. The file descriptor is still 16157 kept open but the file object behaves like a closed file. The ``FileIO`` 16158 object also got a new readonly attribute ``closefd``. 16159 16160 - Issue #3626: On cygwin, starting python with a non-existent script name 16161 would not display anything if the file name is only 1 character long. 16162 16163 - Issue #4176: Fixed a crash when pickling an object which ``__reduce__`` 16164 method does not return iterators for the 4th and 5th items. 16165 16166 - Issue #3723: Fixed initialization of subinterpreters. 16167 16168 - Issue #4213: The file system encoding is now normalized by the 16169 codec subsystem, for example UTF-8 is turned into utf-8. 16170 16171 - Issue #4200: Changed the atexit module to store its state in its 16172 PyModuleDef atexitmodule. This fixes a bug with multiple subinterpeters. 16173 16174 - Issue #4237: io.FileIO() was raising invalid warnings caused by 16175 insufficient initialization of PyFileIOObject struct members. 16176 16177 - Issue #4170: Pickling a collections.defaultdict object would crash the 16178 interpreter. 16179 16180 - Issue #4146: Compilation on OpenBSD has been restored. 16181 16182 - Issue #3574: compile() incorrectly handled source code encoded as Latin-1. 16183 16184 - Issues #2384 and #3975: Tracebacks were not correctly printed when the 16185 source file contains a ``coding:`` header: the wrong line was displayed, and 16186 the encoding was not respected. 16187 16188 - Issue #3740: Null-initialize module state. 16189 16190 - Issue #3946: PyObject_CheckReadBuffer crashed on a memoryview object. 16191 16192 - Issue #1688: On Windows, the input() prompt was not correctly displayed if it 16193 contains non-ascii characters. 16194 16195 - Bug #3951: Py_USING_MEMORY_DEBUGGER should not be enabled by default. 16196 16197 Library 16198 ------- 16199 16200 - Issue #3664: The pickle module could segfault if a subclass of Pickler fails 16201 to call the base __init__ method. 16202 16203 - Issue #3725: telnetlib now works completely in bytes. 16204 16205 - Issue #4072: Restore build_py_2to3. 16206 16207 - Issue #4014: Don't claim that Python has an Alpha release status, in addition 16208 to claiming it is Mature. 16209 16210 - Issue #3187: Add sys.setfilesystemencoding. 16211 16212 - Issue #3187: Better support for "undecodable" filenames. Code by Victor 16213 Stinner, with small tweaks by GvR. 16214 16215 - Issue #3965: Allow repeated calls to turtle.Screen, by making it a 16216 true singleton object. 16217 16218 - Issue #3911: ftplib.FTP.makeport() could give invalid port numbers. 16219 16220 - Issue #3929: When the database cannot be opened, dbm.open() would incorrectly 16221 raise a TypeError: "'tuple' object is not callable" instead of the expected 16222 dbm.error. 16223 16224 - Bug #3884: Make the turtle module toplevel again. 16225 16226 - Issue #3547: Fixed ctypes structures bitfields of varying integer 16227 sizes. 16228 16229 Extension Modules 16230 ----------------- 16231 16232 - Issue #3659: Subclasses of str didn't work as SQL parameters. 16233 16234 Build 16235 ----- 16236 16237 - Issue #4120: Exclude manifest from extension modules in VS2008. 16238 16239 - Issue #4091: Install pythonxy.dll in system32 again. 16240 16241 - Issue #4018: Disable "for me" installations on Vista. 16242 16243 - Issue #4204: Fixed module build errors on FreeBSD 4. 16244 16245 Tools/Demos 16246 ----------- 16247 16248 - Issue #3717: Fix Demo/embed/demo.c. 16249 16250 - Issue #4072: Add a distutils demo for build_py_2to3. 16251 16252 16253 What's New in Python 3.0 release candidate 1 16254 ============================================ 16255 16256 *Release date: 17-Sep-2008* 16257 16258 Core and Builtins 16259 ----------------- 16260 16261 - Issue #3827: memoryview lost its size attribute in favor of using len(view). 16262 16263 - Issue #3813: could not lanch python.exe via symbolic link on cygwin. 16264 16265 - Issue #3705: fix crash when given a non-ascii value on the command line for 16266 the "-c" and "-m" parameters. Now the behaviour is as expected under Linux, 16267 although under Windows it fails at a later point. 16268 16269 - Issue #3279: Importing site at interpreter was failing silently because the 16270 site module uses the open builtin which was not initialized at the time. 16271 16272 - Issue #3660: Corrected a reference leak in str.encode() when the encoder 16273 does not return a bytes object. 16274 16275 - Issue #3774: Added a few more checks in PyTokenizer_FindEncoding to handle 16276 error conditions. 16277 16278 - Issue #3594: Fix Parser/tokenizer.c:fp_setreadl() to open the file being 16279 tokenized by either a file path or file pointer for the benefit of 16280 PyTokenizer_FindEncoding(). 16281 16282 - Issue #3696: Error parsing arguments on OpenBSD <= 4.4 and Cygwin. On 16283 these systems, the mbstowcs() function is slightly buggy and must be 16284 replaced with strlen() for the purpose of counting of number of wide 16285 characters needed to represent the multi-byte character string. 16286 16287 - Issue #3697: "Fatal Python error: Cannot recover from stack overflow" 16288 could be easily encountered under Windows in debug mode when exercising 16289 the recursion limit checking code, due to bogus handling of recursion 16290 limit when USE_STACKCHEK was enabled. 16291 16292 - Issue #3639: The _warnings module could segfault the interpreter when 16293 unexpected types were passed in as arguments. 16294 16295 - Issue #3712: The memoryview object had a reference leak and didn't support 16296 cyclic garbage collection. 16297 16298 - Issue #3668: Fix a memory leak with the "s*" argument parser in 16299 PyArg_ParseTuple and friends, which occurred when the argument for "s*" 16300 was correctly parsed but parsing of subsequent arguments failed. 16301 16302 - Issue #3611: An exception __context__ could be cleared in a complex pattern 16303 involving a __del__ method re-raising an exception. 16304 16305 - Issue #2534: speed up isinstance() and issubclass() by 50-70%, so as to 16306 match Python 2.5 speed despite the __instancecheck__ / __subclasscheck__ 16307 mechanism. In the process, fix a bug where isinstance() and issubclass(), 16308 when given a tuple of classes as second argument, were looking up 16309 __instancecheck__ / __subclasscheck__ on the tuple rather than on each 16310 type object. 16311 16312 - Issue #3663: Py_None was decref'd when printing SyntaxErrors. 16313 16314 - Issue #3651: Fix various memory leaks when using the buffer 16315 interface, or when the "s#" code of PyArg_ParseTuple is given a 16316 bytes object. 16317 16318 - Issue #3657: Fix uninitialized memory read when pickling longs. 16319 Found by valgrind. 16320 16321 - Apply security patches from Apple. 16322 16323 - Fix crashes on memory allocation failure found with failmalloc. 16324 16325 - Fix memory leaks found with valgrind and update suppressions file. 16326 16327 - Fix compiler warnings in opt mode which would lead to invalid memory reads. 16328 16329 - Fix problem using wrong name in decimal module reported by pychecker. 16330 16331 - Issue #3650: Fixed a reference leak in bytes.split('x'). 16332 16333 - bytes(o) now tries to use o.__bytes__() before using fallbacks. 16334 16335 - Issue #1204: The configure script now tests for additional libraries 16336 that may be required when linking against readline. This fixes issues 16337 with x86_64 builds on some platforms (a few Linux flavors and OpenBSD). 16338 16339 C API 16340 ----- 16341 16342 - PyObject_Bytes and PyBytes_FromObject were added. 16343 16344 Library 16345 ------- 16346 16347 - Issue #3756: make re.escape() handle bytes as well as str. 16348 16349 - Issue #3800: fix filter() related bug in formatter.py. 16350 16351 - Issue #874900: fix behaviour of threading module after a fork. 16352 16353 - Issue #3535: zipfile couldn't read some zip files larger than 2GB. 16354 16355 - Issue #3776: Deprecate the bsddb package for removal in 3.0. 16356 16357 - Issue #3762: platform.architecture() fails if python is lanched via 16358 its symbolic link. 16359 16360 - Issue #3660: fix a memory leak in the C accelerator of the pickle module. 16361 16362 - Issue #3160: the "bdist_wininst" distutils command didn't work. 16363 16364 - Issue #1658: tkinter changes dict size during iteration in both 16365 tkinter.BaseWidget and tkinter.scrolledtext.ScrolledText. 16366 16367 - The bsddb module (and therefore the dbm.bsd module) has been removed. 16368 It is now maintained outside of the standard library at 16369 http://www.jcea.es/programacion/pybsddb.htm. 16370 16371 - Issue #600362: Relocated parse_qs() and parse_qsl(), from the cgi module 16372 to the urlparse one. Added a DeprecationWarning in the old module, it 16373 will be deprecated in the future. 16374 16375 - Issue #3719: platform.architecture() fails if there are spaces in the 16376 path to the Python binary. 16377 16378 - Issue #3602: As part of the merge of r66135, make the parameters on 16379 warnings.catch_warnings() keyword-only. Also remove a DeprecationWarning. 16380 16381 - The deprecation warnings for the camelCase threading API names were removed. 16382 16383 - Issue #3110: multiprocessing fails to compiel on solaris 10 due to missing 16384 SEM_VALUE_MAX. 16385 16386 Extension Modules 16387 ----------------- 16388 16389 - Issue #3782: os.write() must not accept unicode strings. 16390 16391 - Issue #2975: When compiling several extension modules with Visual Studio 2008 16392 from the same python interpreter, some environment variables would grow 16393 without limit. 16394 16395 - Issue #3643: Added a few more checks to _testcapi to prevent segfaults by 16396 exploitation of poor argument checking. 16397 16398 - bsddb code updated to version 4.7.3pre2. This code is the same than 16399 Python 2.6 one, since the intention is to keep a unified 2.x/3.x codebase. 16400 The Python code is automatically translated using "2to3". Please, do not 16401 update this code in Python 3.0 by hand. Update the 2.6 one and then 16402 do "2to3". 16403 16404 - The _bytesio and _stringio modules are now compiled into the python binary. 16405 16406 - Issue #3492 and #3790: Fixed the zlib module and zipimport module uses of 16407 mutable bytearray objects where they should have been using immutable bytes. 16408 16409 - Issue #3797: Fixed the dbm, marshal, mmap, ossaudiodev, & winreg modules to 16410 return bytes objects instead of bytearray objects. 16411 16412 16413 Tools/Demos 16414 ----------- 16415 16416 - Fix Misc/gdbinit so it works. 16417 16418 16419 Build 16420 ----- 16421 16422 - Issue #3812: Failed to build python if configure --without-threads. 16423 16424 - Issue #3791: Remove the bsddb module from the Windows installer, and the 16425 core bsddb library from the Windows build files. 16426 16427 16428 What's new in Python 3.0b3? 16429 =========================== 16430 16431 *Release date: 20-Aug-2008* 16432 16433 Core and Builtins 16434 ----------------- 16435 16436 - Issue #3653: Fix a segfault when sys.excepthook was called with invalid 16437 arguments. 16438 16439 - Issue #2394: implement more of the memoryview API, with the caveat that 16440 only one-dimensional contiguous buffers are supported and exercised right 16441 now. Slicing, slice assignment and comparison (equality and inequality) 16442 have been added. Also, the tolist() method has been implemented, but only 16443 for byte buffers. Finally, the API has been updated to return bytes objects 16444 wherever it used to return bytearrays. 16445 16446 - Issue #3560: clean up the new C PyMemoryView API so that naming is 16447 internally consistent; add macros PyMemoryView_GET_BASE() and 16448 PyMemoryView_GET_BUFFER() to access useful properties of a memory views 16449 without relying on a particular implementation; remove the ill-named 16450 PyMemoryView() function (PyMemoryView_GET_BUFFER() can be used instead). 16451 16452 - ctypes function pointers that are COM methods have a boolean True 16453 value again. 16454 16455 - Issue #1819: function calls with several named parameters are now on 16456 average 35% faster (as measured by pybench). 16457 16458 - The undocumented C APIs PyUnicode_AsString() and 16459 PyUnicode_AsStringAndSize() were made private to the interpreter, in 16460 order to be able to refine their interfaces for Python 3.1. 16461 16462 If you need to access the UTF-8 representation of a Unicode object 16463 as bytes string, please use PyUnicode_AsUTF8String() instead. 16464 16465 - Issue #3460: PyUnicode_Join() implementation is 10% to 80% faster thanks 16466 to Python 3.0's stricter semantics which allow avoiding successive 16467 reallocations of the result string (this also affects str.join()). 16468 16469 16470 Library 16471 ------- 16472 16473 - Issue #1276: Added temporary aliases for CJK Mac encodings to resolve 16474 a build problem on MacOS with CJK locales. It adds four temporary 16475 mappings to existing legacy codecs that are virtually compatible 16476 with Mac encodings. They will be replaced by codecs correctly 16477 implemented in 3.1. 16478 16479 - Issue #3614: Corrected a typo in xmlrpc.client, leading to a NameError 16480 "global name 'header' is not defined". 16481 16482 - Issue #2834: update the regular expression library to match the unicode 16483 standards of py3k. In other words, mixing bytes and unicode strings 16484 (be it as pattern, search string or replacement string) raises a TypeError. 16485 Moreover, the re.UNICODE flag is enabled automatically for unicode patterns, 16486 and can be disabled by specifying a new re.ASCII flag; as for bytes 16487 patterns, ASCII matching is the only option and trying to specify re.UNICODE 16488 for such patterns raises a ValueError. 16489 16490 - Issue #3300: make urllib.parse.[un]quote() default to UTF-8. 16491 Code contributed by Matt Giuca. quote() now encodes the input 16492 before quoting, unquote() decodes after unquoting. There are 16493 new arguments to change the encoding and errors settings. 16494 There are also new APIs to skip the encode/decode steps. 16495 [un]quote_plus() are also affected. 16496 16497 - Issue #2235: numbers.Number now blocks inheritance of the default id() 16498 based hash because that hash mechanism is not correct for numeric types. 16499 All concrete numeric types that inherit from Number (rather than just 16500 registering with it) must explicitly provide a hash implementation in 16501 order for their instances to be hashable. 16502 16503 - Issue #2676: in the email package, content-type parsing was hanging on 16504 pathological input because of quadratic or exponential behaviour of a 16505 regular expression. 16506 16507 - Issue #3476: binary buffered reading through the new "io" library is now 16508 thread-safe. 16509 16510 - Issue #1342811: Fix leak in Tkinter.Menu.delete. Commands associated to 16511 menu entries were not deleted. 16512 16513 - Remove the TarFileCompat class from tarfile.py. 16514 16515 - Issue #2491: os.fdopen is now almost an alias for the built-in open(), and 16516 accepts the same parameters. It just checks that its first argument is an 16517 integer. 16518 16519 - Issue #3394: zipfile.writestr sets external attributes when passed a 16520 file name rather than a ZipInfo instance, so files are extracted with 16521 mode 0600 rather than 000 under Unix. 16522 16523 - Issue #2523: Fix quadratic behaviour when read()ing a binary file without 16524 asking for a specific length. 16525 16526 Extension Modules 16527 ----------------- 16528 16529 - Bug #3542: Support Unicode strings in _msi module. 16530 16531 What's new in Python 3.0b2? 16532 =========================== 16533 16534 *Release date: 17-Jul-2008* 16535 16536 Core and Builtins 16537 ----------------- 16538 16539 - Issue #3008: the float type has a new instance method 'float.hex' 16540 and a new class method 'float.fromhex' to convert floating-point 16541 numbers to and from hexadecimal strings, respectively. 16542 16543 - Issue #3083: Add alternate (#) formatting for bin, oct, hex output 16544 for str.format(). This adds the prefix 0b, 0o, or 0x, respectively. 16545 16546 - Issue #3280: like chr(), the "%c" format now accepts unicode code points 16547 beyond the Basic Multilingual Plane (above 0xffff) on all configurations. On 16548 "narrow Unicode" builds, the result is a string of 2 code units, forming a 16549 UTF-16 surrogate pair. 16550 16551 - Issue #3282: str.isprintable() should return False for undefined 16552 Unicode characters. 16553 16554 - Issue #3236: Return small longs from PyLong_FromString. 16555 16556 - Exception tracebacks now support exception chaining. 16557 16558 Library 16559 ------- 16560 16561 - Removed the sunaudio module. Use sunau instead. 16562 16563 - Issue #3554: ctypes.string_at and ctypes.wstring_at did call Python 16564 api functions without holding the GIL, which could lead to a fatal 16565 error when they failed. 16566 16567 - Issue #799428: Fix Tkinter.Misc._nametowidget to unwrap Tcl command objects. 16568 16569 - Removed "ast" function aliases from the parser module. 16570 16571 - Issue #3313: Fixed a crash when a failed dlopen() call does not set 16572 a valid dlerror() message. 16573 16574 - Issue #3258: Fixed a crash when a ctypes POINTER type to an 16575 incomplete structure was created. 16576 16577 - Issue #2683: Fix inconsistency in subprocess.Popen.communicate(): the 16578 argument now must be a bytes object in any case. 16579 16580 - Issue #3145: help("modules whatever") failed when trying to load the source 16581 code of every single module of the standard library, including invalid files 16582 used in the test suite. 16583 16584 - The gettext library now consistently uses Unicode strings for message ids 16585 and message strings, and ``ugettext()`` and the like don't exist anymore. 16586 16587 - The traceback module has been expanded to handle chained exceptions. 16588 16589 C API 16590 ----- 16591 16592 - Issue #3247: the function Py_FindMethod was removed. Modern types should 16593 use the tp_methods slot instead. 16594 16595 Tools/Demos 16596 ----------- 16597 16598 - The Mac/Demos directory has been removed. 16599 16600 - All of the Mac scripts have been removed (including BuildApplet.py). 16601 16602 16603 What's new in Python 3.0b1? 16604 =========================== 16605 16606 *Release date: 18-Jun-2008* 16607 16608 Core and Builtins 16609 ----------------- 16610 16611 - Issue #3211: warnings.warn_explicit() did not guard against its 'registry' 16612 argument being anything other than a dict or None. Also fixed a bug in error 16613 handling when 'message' and 'category' were both set to None, triggering a 16614 bus error. 16615 16616 - Issue #3100: Corrected a crash on deallocation of a subclassed weakref which 16617 holds the last (strong) reference to its referent. 16618 16619 - Issue #2630: implement PEP 3138. repr() now returns printable 16620 Unicode characters unescaped, to get an ASCII-only representation 16621 of an object use ascii(). 16622 16623 - Issue #1342: On windows, Python could not start when installed in a 16624 directory with non-ascii characters. 16625 16626 - Implement PEP 3121: new module initialization and finalization API. 16627 16628 - Removed the already-defunct ``-t`` option. 16629 16630 - Issue #2957: Corrected a ValueError "recursion limit exceeded", when 16631 unmarshalling many code objects, which happens when importing a 16632 large .pyc file (~1000 functions). 16633 16634 - Issue #2963: fix merging oversight that disabled method cache for 16635 all types. 16636 16637 - Issue #2964: fix a missing INCREF in instancemethod_descr_get. 16638 16639 - Issue #2895: Don't crash when given bytes objects as keyword names. 16640 16641 - Issue #2798: When parsing arguments with PyArg_ParseTuple, the "s" 16642 code now allows any unicode string and returns a utf-8 encoded 16643 buffer, just like the "s#" code already does. The "z" code was 16644 corrected as well. 16645 16646 - Issue #2863: generators now have a ``gen.__name__`` attribute that 16647 equals ``gen.gi_code.co_name``, like ``func.__name___`` that equals 16648 ``func.func_code.co_name``. The repr() of a generator now also 16649 contains this name. 16650 16651 - Issue #2831: enumerate() now has a ``start`` argument. 16652 16653 - Issue #2801: fix bug in the float.is_integer method where a 16654 ValueError was sometimes incorrectly raised. 16655 16656 - The ``--with-toolbox-glue`` option (and the associated 16657 pymactoolbox.h) have been removed. 16658 16659 - Issue #2196: hasattr() now lets exceptions which do not inherit 16660 Exception (KeyboardInterrupt, and SystemExit) propagate instead of 16661 ignoring them. 16662 16663 - #3021 Exception reraising sematics have been significantly improved. However, 16664 f_exc_type, f_exc_value, and f_exc_traceback cannot be accessed from Python 16665 code anymore. 16666 16667 - Three of PyNumberMethods' members, nb_coerce, nb_hex, and nb_oct, have been 16668 removed. 16669 16670 Extension Modules 16671 ----------------- 16672 16673 - Renamed ``_winreg`` module to ``winreg``. 16674 16675 - Support os.O_ASYNC and fcntl.FASYNC if the constants exist on the 16676 platform. 16677 16678 - Support for Windows 9x has been removed from the winsound module. 16679 16680 - Issue #2870: cmathmodule.c compile error. 16681 16682 Library 16683 ------- 16684 16685 - The methods ``is_in_tuple()``, ``is_vararg()``, and ``is_keywordarg()`` of 16686 symtable.Symbol have been removed. 16687 16688 - Patch #3133: http.server.CGIHTTPRequestHandler did not work on windows. 16689 16690 - a new ``urllib`` package was created. It consists of code from 16691 ``urllib``, ``urllib2``, ``urlparse``, and ``robotparser``. The old 16692 modules have all been removed. The new package has five submodules: 16693 ``urllib.parse``, ``urllib.request``, ``urllib.response``, 16694 ``urllib.error``, and ``urllib.robotparser``. The 16695 ``urllib.request.urlopen()`` function uses the url opener from 16696 ``urllib2``. (Note that the unittests have not been renamed for the 16697 beta, but they will be renamed in the future.) 16698 16699 - rfc822 has been removed in favor of the email package. 16700 16701 - mimetools has been removed in favor of the email package. 16702 16703 - Patch #2849: Remove use of rfc822 module from standard library. 16704 16705 - Added C optimized implementation of io.StringIO. 16706 16707 - The ``pickle`` module is now automatically use an optimized C 16708 implementation of Pickler and Unpickler when available. The 16709 ``cPickle`` module is no longer needed. 16710 16711 - Removed the ``htmllib`` and ``sgmllib`` modules. 16712 16713 - The deprecated ``SmartCookie`` and ``SimpleCookie`` classes have 16714 been removed from ``http.cookies``. 16715 16716 - The ``commands`` module has been removed. Its getoutput() and 16717 getstatusoutput() functions have been moved to the ``subprocess`` module. 16718 16719 - The ``http`` package was created; it contains the old ``httplib`` 16720 as ``http.client``, ``Cookie`` as ``http.cookies``, ``cookielib`` 16721 as ``http.cookiejar``, and the content of the three ``HTTPServer`` 16722 modules as ``http.server``. 16723 16724 - The ``xmlrpc`` package was created; it contains the old 16725 ``xmlrpclib`` module as ``xmlrpc.client`` and the content of 16726 the old ``SimpleXMLRPCServer`` and ``DocXMLRPCServer`` modules 16727 as ``xmlrpc.server``. 16728 16729 - The ``dbm`` package was created, containing the old modules 16730 ``anydbm`` and ``whichdb`` in its ``__init__.py``, and having 16731 ``dbm.gnu`` (was ``gdbm``), ``dbm.bsd`` (was ``dbhash``), 16732 ``dbm.ndbm`` (was ``dbm``) and ``dbm.dumb`` (was ``dumbdbm``) 16733 as submodules. 16734 16735 - The ``repr`` module has been renamed to ``reprlib``. 16736 16737 - The ``statvfs`` module has been removed. 16738 16739 - Issue #1713041: fix pprint's handling of maximum depth. 16740 16741 - Issue #2250: Exceptions raised during evaluation of names in 16742 rlcompleter's ``Completer.complete()`` method are now caught and 16743 ignored. 16744 16745 - Patch #2659: Added ``break_on_hyphens`` option to textwrap's 16746 ``TextWrapper`` class. 16747 16748 - Issue #2487: change the semantics of math.ldexp(x, n) when n is too 16749 large to fit in a C long. ldexp(x, n) now returns a zero (with 16750 suitable sign) if n is large and negative; previously, it raised 16751 OverflowError. 16752 16753 - The ``ConfigParser`` module has been renamed to ``configparser``. 16754 16755 - Issue #2865: webbrowser.open() works again in a KDE environment. 16756 16757 - The ``multifile`` module has been removed. 16758 16759 - The ``SocketServer`` module has been renamed to ``socketserver``. 16760 16761 - Fixed the ``__all__`` setting on ``collections`` to include 16762 ``UserList`` and ``UserString``. 16763 16764 - The sre module has been removed. 16765 16766 - The Queue module has been renamed to queue. 16767 16768 - The copy_reg module has been renamed to copyreg. 16769 16770 - The mhlib module has been removed. 16771 16772 - The ihooks module has been removed. 16773 16774 - The fpformat module has been removed. 16775 16776 - The dircache module has been removed. 16777 16778 - The Canvas module has been removed. 16779 16780 - The Decimal module gained the magic methods __round__, __ceil__, 16781 __floor__ and __trunc__, to give support for round, math.ceil, 16782 math.floor and math.trunc. 16783 16784 - The user module has been removed. 16785 16786 - The mutex module has been removed. 16787 16788 - The imputil module has been removed. 16789 16790 - os.path.walk has been removed in favor of os.walk. 16791 16792 - pdb gained the "until" command. 16793 16794 - The test.test_support module has been renamed to test.support. 16795 16796 - The threading module API was renamed to be PEP 8 compliant. The 16797 old names are still present, but will be removed in the near future. 16798 16799 Tools/Demos 16800 ----------- 16801 16802 - The bgen tool has been removed. 16803 16804 Build 16805 ----- 16806 16807 16808 What's New in Python 3.0a5? 16809 =========================== 16810 16811 *Release date: 08-May-2008* 16812 16813 Core and Builtins 16814 ----------------- 16815 16816 - Fixed misbehaviour of PyLong_FromSsize_t on systems where 16817 sizeof(size_t) > sizeof(long). 16818 16819 - Issue #2221: Corrected a SystemError "error return without exception 16820 set", when the code executed by exec() raises an exception, and 16821 sys.stdout.flush() also raises an error. 16822 16823 - Bug #2565: The repr() of type objects now calls them 'class', not 16824 'type' - whether they are builtin types or not. 16825 16826 - The command line processing was converted to pass Unicode strings 16827 through as unmodified as possible; as a consequence, the C API 16828 related to command line arguments was changed to use wchar_t. 16829 16830 - All backslashes in raw strings are interpreted literally. This 16831 means that '\u' and '\U' escapes are not treated specially. 16832 16833 Extension Modules 16834 ----------------- 16835 16836 Library 16837 ------- 16838 16839 - ctypes objects now support the PEP3118 buffer interface. 16840 16841 - Issue #2682: ctypes callback functions now longer contain a cyclic 16842 reference to themselves. 16843 16844 - Issue #2058: Remove the buf attribute and add __slots__ to the 16845 TarInfo class in order to reduce tarfile's memory usage. 16846 16847 - Bug #2606: Avoid calling .sort() on a dict_keys object. 16848 16849 - The bundled libffi copy is now in sync with the recently released 16850 libffi3.0.5 version, apart from some small changes to 16851 Modules/_ctypes/libffi/configure.ac. 16852 16853 Build 16854 ----- 16855 16856 - Issue #1496032: On alpha, use -mieee when gcc is the compiler. 16857 16858 - "make install" is now an alias for "make altinstall", to prevent 16859 accidentally overwriting a Python 2.x installation. Use "make 16860 fullinstall" to force Python 3.0 to be installed as "python". 16861 16862 - Issue #2544: On HP-UX systems, use 'gcc -shared' for linking when 16863 gcc is used as compiler. 16864 16865 16866 What's New in Python 3.0a4? 16867 =========================== 16868 16869 *Release date: 02-Apr-2008* 16870 16871 Core and Builtins 16872 ----------------- 16873 16874 - Bug #2301: Don't try decoding the source code into the original 16875 encoding for syntax errors. 16876 16877 Extension Modules 16878 ----------------- 16879 16880 - The dl module was removed, use the ctypes module instead. 16881 16882 - Use wchar_t functions in _locale module. 16883 16884 Library 16885 ------- 16886 16887 - The class distutils.commands.build_py.build_py_2to3 can be used as a 16888 build_py replacement to automatically run 2to3 on modules that are 16889 going to be installed. 16890 16891 - A new pickle protocol (protocol 3) is added with explicit support 16892 for bytes. This is the default protocol. It intentionally cannot 16893 be unpickled by Python 2.x. 16894 16895 - When a pickle written by Python 2.x contains an (8-bit) str 16896 instance, this is now decoded to a (Unicode) str instance. The 16897 encoding used to do this defaults to ASCII, but can be overridden 16898 via two new keyword arguments to the Unpickler class. Previously 16899 this would create bytes instances, which is usually wrong: str 16900 instances are often used to pickle attribute names etc., and text is 16901 more common than binary data anyway. 16902 16903 - Default to ASCII as the locale.getpreferredencoding, if the POSIX 16904 system doesn't support CODESET and LANG isn't set or doesn't allow 16905 deduction of an encoding. 16906 16907 - Issue #1202: zlib.crc32 and zlib.adler32 now return an unsigned 16908 value. 16909 16910 - Issue #719888: Updated tokenize to use a bytes API. generate_tokens 16911 has been renamed tokenize and now works with bytes rather than 16912 strings. A new detect_encoding function has been added for 16913 determining source file encoding according to PEP-0263. Token 16914 sequences returned by tokenize always start with an ENCODING token 16915 which specifies the encoding used to decode the file. This token is 16916 used to encode the output of untokenize back to bytes. 16917 16918 16919 What's New in Python 3.0a3? 16920 =========================== 16921 16922 *Release date: 29-Feb-2008* 16923 16924 Core and Builtins 16925 ----------------- 16926 16927 - Issue #2282: io.TextIOWrapper was not overriding seekable() from 16928 io.IOBase. 16929 16930 - Issue #2115: Important speedup in setting __slot__ attributes. Also 16931 prevent a possible crash: an Abstract Base Class would try to access 16932 a slot on a registered virtual subclass. 16933 16934 - Fixed repr() and str() of complex numbers with infinity or nan as 16935 real or imaginary part. 16936 16937 - Clear all free list during a gc.collect() of the highest generation 16938 in order to allow pymalloc to free more arenas. Python may give back 16939 memory to the OS earlier. 16940 16941 - Issue #2045: Fix an infinite recursion triggered when printing a 16942 subclass of collections.defaultdict, if its default_factory is set 16943 to a bound method. 16944 16945 - Fixed a minor memory leak in dictobject.c. The content of the free 16946 list was not freed on interpreter shutdown. 16947 16948 - Limit free list of method and builtin function objects to 256 16949 entries each. 16950 16951 - Patch #1953: Added ``sys._compact_freelists()`` and the C API 16952 functions ``PyInt_CompactFreeList`` and ``PyFloat_CompactFreeList`` 16953 to compact the internal free lists of pre-allocted ints and floats. 16954 16955 - Bug #1983: Fixed return type of fork(), fork1() and forkpty() calls. 16956 Python expected the return type int but the fork familie returns 16957 pi_t. 16958 16959 - Issue #1678380: Fix a bug that identifies 0j and -0j when they 16960 appear in the same code unit. 16961 16962 - Issue #2025: Added tuple.count() and tuple.index() methods to comply 16963 with the collections.Sequence API. 16964 16965 - Fixed multiple reinitialization of the Python interpreter. The small 16966 int list in longobject.c has caused a seg fault during the third 16967 finalization. 16968 16969 - Issue #1973: bytes.fromhex('') raised SystemError. 16970 16971 - Issue #1771: remove cmp parameter from sorted() and list.sort(). 16972 16973 - Issue #1969: split and rsplit in bytearray are inconsistent. 16974 16975 - map() no longer accepts None for the first argument. Use zip() 16976 instead. 16977 16978 - Issue #1769: Now int("- 1") is not allowed any more. 16979 16980 - Object/longobject.c: long(float('nan')) raises an OverflowError 16981 instead of returning 0. 16982 16983 - Issue #1762972: __file__ points to the source file instead of the 16984 pyc/pyo file if the py file exists. 16985 16986 - Issue #1393: object_richcompare() returns NotImplemented instead of 16987 False if the objects aren't equal, to give the other side a chance. 16988 16989 - Issue #1692: Interpreter was not displaying location of SyntaxError. 16990 16991 - Improve some exception messages when Windows fails to load an 16992 extension module. Now we get for example '%1 is not a valid Win32 16993 application' instead of 'error code 193'. Also use Unicode strings 16994 to deal with non-English locales. 16995 16996 - Issue #1587: Added instancemethod wrapper for PyCFunctions. The 16997 Python C API has gained a new type *PyInstanceMethod_Type* and the 16998 functions *PyInstanceMethod_Check(o)*, *PyInstanceMethod_New(func)* 16999 and *PyInstanceMethod_Function(im)*. 17000 17001 - Constants gc.DEBUG_OBJECT and gc.DEBUG_INSTANCE have been removed 17002 from the gc module; gc.DEBUG_COLLECTABLE or gc.DEBUG_UNCOLLECTABLE 17003 are now enough to print the corresponding list of objects considered 17004 by the garbage collector. 17005 17006 - Issue #1573: Improper use of the keyword-only syntax makes the 17007 parser crash. 17008 17009 - Issue #1564: The set implementation should special-case PyUnicode 17010 instead of PyString. 17011 17012 - Patch #1031213: Decode source line in SyntaxErrors back to its 17013 original source encoding. 17014 17015 - inspect.getsource() includes the decorators again. 17016 17017 - Bug #1713: posixpath.ismount() claims symlink to a mountpoint is a 17018 mountpoint. 17019 17020 - Fix utf-8-sig incremental decoder, which didn't recognise a BOM when 17021 the first chunk fed to the decoder started with a BOM, but was 17022 longer than 3 bytes. 17023 17024 Extension Modules 17025 ----------------- 17026 17027 - Code for itertools ifilter(), imap(), and izip() moved to bultins 17028 and renamed to filter(), map(), and zip(). Also, renamed 17029 izip_longest() to zip_longest() and ifilterfalse() to filterfalse(). 17030 17031 - Issue #1762972: Readded the reload() function as imp.reload(). 17032 17033 - Bug #2111: mmap segfaults when trying to write a block opened with 17034 PROT_READ. 17035 17036 - Issue #2063: correct order of utime and stime in os.times() result 17037 on Windows. 17038 17039 Library 17040 ------- 17041 17042 - Weakref dictionaries now inherit from MutableMapping. 17043 17044 - Created new UserDict class in collections module. This one inherits 17045 from and complies with the MutableMapping ABC. Also, moved 17046 UserString and UserList to the collections module. The 17047 MutableUserString class was removed. 17048 17049 - Removed UserDict.DictMixin. Replaced all its uses with 17050 collections.MutableMapping. 17051 17052 - Issue #1703: getpass() should flush after writing prompt. 17053 17054 - Issue #1585: IDLE uses non-existent xrange() function. 17055 17056 - Issue #1578: Problems in win_getpass. 17057 17058 Build 17059 ----- 17060 17061 - Renamed --enable-unicode configure flag to --with-wide-unicode, 17062 since Unicode strings can't be disabled anymore. 17063 17064 C API 17065 ----- 17066 17067 - Issue #1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, 17068 Py_TYPE and Py_REFCNT. 17069 17070 - New API PyImport_ImportModuleNoBlock(), works like 17071 PyImport_ImportModule() but won't block on the import lock 17072 (returning an error instead). 17073 17074 17075 What's New in Python 3.0a2? 17076 =========================== 17077 17078 *Release date: 07-Dec-2007* 17079 17080 (Note: this list is incomplete.) 17081 17082 Core and Builtins 17083 ----------------- 17084 17085 - str8 now has the same construction signature as bytes. 17086 17087 - Comparisons between str and str8 now return False/True for ==/!=. 17088 sqlite3 returns str8 when recreating on object from it's __conform__ 17089 value. The struct module returns str8 for all string-related 17090 formats. This was true before this change, but becomes more 17091 apparent thanks to string comparisons always being False. 17092 17093 - Replaced `PyFile_FromFile()` with `PyFile_FromFd(fd, name. mode, 17094 buffer, encoding, newline)`. 17095 17096 - Fixed `imp.find_module()` to obey the -*- coding: -*- header. 17097 17098 - Changed `__file__` and `co_filename` to unicode. The path names are decoded 17099 with `Py_FileSystemDefaultEncoding` and a new API method 17100 `PyUnicode_DecodeFSDefault(char*)` was added. 17101 17102 - io.open() and _fileio.FileIO have grown a new argument closefd. A 17103 false value disables the closing of the file descriptor. 17104 17105 - Added a new option -b to issues warnings (-bb for errors) about 17106 certain operations between bytes/buffer and str like str(b'') and 17107 comparison. 17108 17109 - The standard streams sys.stdin, stdout and stderr may be None 17110 when the C runtime library returns an invalid file descriptor 17111 for the streams (fileno(stdin) < 0). For now this happens only for 17112 Windows GUI apps and scripts started with `pythonw.exe`. 17113 17114 - Added PCbuild9 directory for VS 2008. 17115 17116 - Renamed structmember.h WRITE_RESTRICTED to PY_WRITE_RESTRICTED to 17117 work around a name clash with VS 2008 on Windows. 17118 17119 - Unbound methods are gone for good. ClassObject.method returns an 17120 ordinary function object, instance.method still returns a bound 17121 method object. The API of bound methods is cleaned up, too. The 17122 im_class attribute is removed and im_func + im_self are renamed to 17123 __func__ and __self__. The factory PyMethod_New takes only func and 17124 instance as argument. 17125 17126 - intobject.h is no longer included by Python.h. The remains were 17127 moved to longobject.h. It still exists to define several aliases 17128 from PyInt to PyLong functions. 17129 17130 - Removed sys.maxint, use sys.maxsize instead. 17131 17132 Extension Modules 17133 ----------------- 17134 17135 - The `hotshot` profiler has been removed; use `cProfile` instead. 17136 17137 Library 17138 ------- 17139 17140 - When loading an external file using testfile(), the passed-in 17141 encoding argument was being ignored if __loader__ is defined and 17142 forcing the source to be UTF-8. 17143 17144 - The methods `os.tmpnam()`, `os.tempnam()` and `os.tmpfile()` have 17145 been removed in favor of the tempfile module. 17146 17147 - Removed the 'new' module. 17148 17149 - Removed all types from the 'types' module that are easily accessible 17150 through builtins. 17151 17152 17153 What's New in Python 3.0a1? 17154 =========================== 17155 17156 *Release date: 31-Aug-2007* 17157 17158 Core and Builtins 17159 ----------------- 17160 17161 - PEP 3131: Support non-ASCII identifiers. 17162 17163 - PEP 3120: Change default encoding to UTF-8. 17164 17165 - PEP 3123: Use proper C inheritance for PyObject. 17166 17167 - Removed the __oct__ and __hex__ special methods and added a bin() 17168 builtin function. 17169 17170 - PEP 3127: octal literals now start with "0o". Old-style octal 17171 literals are invalid. There are binary literals with a prefix of 17172 "0b". This also affects int(x, 0). 17173 17174 - None, True, False are now keywords. 17175 17176 - PEP 3119: isinstance() and issubclass() can be overridden. 17177 17178 - Remove BaseException.message. 17179 17180 - Remove tuple parameter unpacking (PEP 3113). 17181 17182 - Remove the f_restricted attribute from frames. This naturally leads 17183 to the removal of PyEval_GetRestricted() and PyFrame_IsRestricted(). 17184 17185 - PEP 3132 was accepted. That means that you can do ``a, *b = 17186 range(5)`` to assign 0 to a and [1, 2, 3, 4] to b. 17187 17188 - range() now returns an iterator rather than a list. Floats are not 17189 allowed. xrange() is no longer defined. 17190 17191 - Patch #1660500: hide iteration variable in list comps, add set comps 17192 and use common code to handle compilation of iterative expressions. 17193 17194 - By default, != returns the opposite of ==, unless the latter returns 17195 NotImplemented. 17196 17197 - Patch #1680961: sys.exitfunc has been removed and replaced with a 17198 private C-level API. 17199 17200 - PEP 3115: new metaclasses: the metaclass is now specified as a 17201 keyword arg in the class statement, which can now use the full 17202 syntax of a parameter list. Also, the metaclass can implement a 17203 __prepare__ function which will be called to create the dictionary 17204 for the new class namespace. 17205 17206 - The long-deprecated argument "pend" of PyFloat_FromString() has been 17207 removed. 17208 17209 - The dir() function has been extended to call the __dir__() method on 17210 its argument, if it exists. If not, it will work like before. This 17211 allows customizing the output of dir() in the presence of a 17212 __getattr__(). 17213 17214 - Removed support for __members__ and __methods__. 17215 17216 - Removed indexing/slicing on BaseException. 17217 17218 - input() became raw_input(): the name input() now implements the 17219 functionality formerly known as raw_input(); the name raw_input() is 17220 no longer defined. 17221 17222 - Classes listed in an 'except' clause must inherit from 17223 BaseException. 17224 17225 - PEP 3106: dict.iterkeys(), .iteritems(), .itervalues() are now gone; 17226 and .keys(), .items(), .values() return dict views, which behave 17227 like sets. 17228 17229 - PEP 3105: print is now a function. Also (not in the PEP) the 17230 'softspace' attribute of files is now gone (since print() doesn't 17231 use it). A side effect of this change is that you can get 17232 incomplete output lines in interactive sessions: 17233 17234 >>> print(42, end="") 17235 42>>> 17236 17237 We may be able to fix this after the I/O library rewrite. 17238 17239 - PEP 3102: keyword-only arguments. 17240 17241 - Int/Long unification is complete. The 'long' built-in type and 17242 literals with trailing 'L' or 'l' have been removed. Performance 17243 may be sub-optimal (haven't really benchmarked). 17244 17245 - 'except E, V' must now be spelled as 'except E as V' and deletes V 17246 at the end of the except clause; V must be a simple name. 17247 17248 - Added function annotations per PEP 3107. 17249 17250 - Added nonlocal declaration from PEP 3104: 17251 17252 >>> def f(x): 17253 ... def inc(): 17254 ... nonlocal x 17255 ... x += 1 17256 ... return x 17257 ... return inc 17258 ... 17259 >>> inc = f(0) 17260 >>> inc() 17261 1 17262 >>> inc() 17263 2 17264 17265 - Moved intern() to sys.intern(). 17266 17267 - exec is now a function. 17268 17269 - Renamed nb_nonzero to nb_bool and __nonzero__ to __bool__. 17270 17271 - Classic classes are a thing of the past. All classes are new style. 17272 17273 - Exceptions *must* derive from BaseException. 17274 17275 - Integer division always returns a float. The -Q option is no more. 17276 All the following are gone: 17277 17278 * PyNumber_Divide and PyNumber_InPlaceDivide 17279 * __div__, __rdiv__, and __idiv__ 17280 * nb_divide, nb_inplace_divide 17281 * operator.div, operator.idiv, operator.__div__, operator.__idiv__ 17282 (Only __truediv__ and __floordiv__ remain, not sure how to handle 17283 them if we want to re-use __div__ and friends. If we do, it will 17284 make it harder to write code for both 2.x and 3.x.) 17285 17286 - 'as' and 'with' are keywords. 17287 17288 - Absolute import is the default behavior for 'import foo' etc. 17289 17290 - Removed support for syntax: backticks (ie, `x`), <>. 17291 17292 - Removed these Python builtins: apply(), callable(), coerce(), 17293 execfile(), file(), reduce(), reload(). 17294 17295 - Removed these Python methods: {}.has_key. 17296 17297 - Removed these opcodes: BINARY_DIVIDE, INPLACE_DIVIDE, UNARY_CONVERT. 17298 17299 - Remove C API support for restricted execution. 17300 17301 - zip(), map() and filter() now return iterators, behaving like their 17302 itertools counterparts. This also affect map()'s behavior on 17303 sequences of unequal length -- it now stops after the shortest one 17304 is exhausted. 17305 17306 - Additions: set literals, set comprehensions, ellipsis literal. 17307 17308 - Added class decorators per PEP 3129. 17309 17310 17311 Extension Modules 17312 ----------------- 17313 17314 - Removed the imageop module. Obsolete long with its unit tests 17315 becoming useless from the removal of rgbimg and imgfile. 17316 17317 - Removed these attributes from the operator module: div, idiv, 17318 __div__, __idiv__, isCallable, sequenceIncludes. 17319 17320 - Removed these attributes from the sys module: exc_clear(), exc_type, 17321 exc_value, exc_traceback. 17322 17323 17324 Library 17325 ------- 17326 17327 - Removed the compiler package. Use of the _ast module and (an 17328 eventual) AST -> bytecode mechanism. 17329 17330 - Removed these modules: audiodev, Bastion, bsddb185, exceptions, 17331 linuxaudiodev, md5, MimeWriter, mimify, popen2, rexec, sets, sha, 17332 stringold, strop, sunaudiodev, timing, xmllib. 17333 17334 - Moved the toaiff module to Tools/Demos. 17335 17336 - Removed obsolete IRIX modules: al/AL, cd/CD, cddb, cdplayer, cl/CL, 17337 DEVICE, ERRNO, FILE, fl/FL, flp, fm, GET, gl/GL, GLWS, IN, imgfile, 17338 IOCTL, jpeg, panel, panelparser, readcd, sgi, sv/SV, torgb, WAIT. 17339 17340 - Removed obsolete functions: commands.getstatus(), os.popen*(). 17341 17342 - Removed functions in the string module that are also string methods; 17343 Remove string.{letters, lowercase, uppercase}. 17344 17345 - Removed support for long obsolete platforms: plat-aix3, plat-irix5. 17346 17347 - Removed xmlrpclib.SlowParser. It was based on xmllib. 17348 17349 - Patch #1680961: atexit has been reimplemented in C. 17350 17351 - Add new codecs for UTF-32, UTF-32-LE and UTF-32-BE. 17352 17353 Build 17354 ----- 17355 17356 C API 17357 ----- 17358 17359 - Removed these Python slots: __coerce__, __div__, __idiv__, __rdiv__. 17360 17361 - Removed these C APIs: PyNumber_Coerce(), PyNumber_CoerceEx(), 17362 PyMember_Get, PyMember_Set. 17363 17364 - Removed these C slots/fields: nb_divide, nb_inplace_divide. 17365 17366 - Removed these macros: staticforward, statichere, PyArg_GetInt, 17367 PyArg_NoArgs, _PyObject_Del. 17368 17369 - Removed these typedefs: intargfunc, intintargfunc, intobjargproc, 17370 intintobjargproc, getreadbufferproc, getwritebufferproc, 17371 getsegcountproc, getcharbufferproc, memberlist. 17372 17373 Tests 17374 ----- 17375 17376 - Removed test.testall as test.regrtest replaces it. 17377 17378 Documentation 17379 ------------- 17380 17381 Mac 17382 --- 17383 17384 - The cfmfile module was removed. 17385 17386 Platforms 17387 --------- 17388 17389 - Support for BeOS and AtheOS was removed (according to PEP 11). 17390 17391 - Support for RiscOS, Irix, Tru64 was removed (allegedly). 17392 17393 Tools/Demos 17394 ----------- 17395 17396 17397 What's New in Python 2.5 release candidate 1? 17398 ============================================= 17399 17400 *Release date: 17-AUG-2006* 17401 17402 Core and builtins 17403 ----------------- 17404 17405 - Unicode objects will no longer raise an exception when being 17406 compared equal or unequal to a string and a UnicodeDecodeError 17407 exception occurs, e.g. as result of a decoding failure. 17408 17409 Instead, the equal (==) and unequal (!=) comparison operators will 17410 now issue a UnicodeWarning and interpret the two objects as 17411 unequal. The UnicodeWarning can be filtered as desired using 17412 the warning framework, e.g. silenced completely, turned into an 17413 exception, logged, etc. 17414 17415 Note that compare operators other than equal and unequal will still 17416 raise UnicodeDecodeError exceptions as they've always done. 17417 17418 - Fix segfault when doing string formatting on subclasses of long. 17419 17420 - Fix bug related to __len__ functions using values > 2**32 on 64-bit machines 17421 with new-style classes. 17422 17423 - Fix bug related to __len__ functions returning negative values with 17424 classic classes. 17425 17426 - Patch #1538606, Fix __index__() clipping. There were some problems 17427 discovered with the API and how integers that didn't fit into Py_ssize_t 17428 were handled. This patch attempts to provide enough alternatives 17429 to effectively use __index__. 17430 17431 - Bug #1536021: __hash__ may now return long int; the final hash 17432 value is obtained by invoking hash on the long int. 17433 17434 - Bug #1536786: buffer comparison could emit a RuntimeWarning. 17435 17436 - Bug #1535165: fixed a segfault in input() and raw_input() when 17437 sys.stdin is closed. 17438 17439 - On Windows, the PyErr_Warn function is now exported from 17440 the Python dll again. 17441 17442 - Bug #1191458: tracing over for loops now produces a line event 17443 on each iteration. Fixing this problem required changing the .pyc 17444 magic number. This means that .pyc files generated before 2.5c1 17445 will be regenerated. 17446 17447 - Bug #1333982: string/number constants were inappropriately stored 17448 in the byte code and co_consts even if they were not used, ie 17449 immediately popped off the stack. 17450 17451 - Fixed a reference-counting problem in property(). 17452 17453 17454 Library 17455 ------- 17456 17457 - Fix a bug in the ``compiler`` package that caused invalid code to be 17458 generated for generator expressions. 17459 17460 - The distutils version has been changed to 2.5.0. The change to 17461 keep it programmatically in sync with the Python version running 17462 the code (introduced in 2.5b3) has been reverted. It will continue 17463 to be maintained manually as static string literal. 17464 17465 - If the Python part of a ctypes callback function returns None, 17466 and this cannot be converted to the required C type, an exception is 17467 printed with PyErr_WriteUnraisable. Before this change, the C 17468 callback returned arbitrary values to the calling code. 17469 17470 - The __repr__ method of a NULL ctypes.py_object() no longer raises 17471 an exception. 17472 17473 - uuid.UUID now has a bytes_le attribute. This returns the UUID in 17474 little-endian byte order for Windows. In addition, uuid.py gained some 17475 workarounds for clocks with low resolution, to stop the code yielding 17476 duplicate UUIDs. 17477 17478 - Patch #1540892: site.py Quitter() class attempts to close sys.stdin 17479 before raising SystemExit, allowing IDLE to honor quit() and exit(). 17480 17481 - Bug #1224621: make tabnanny recognize IndentationErrors raised by tokenize. 17482 17483 - Patch #1536071: trace.py should now find the full module name of a 17484 file correctly even on Windows. 17485 17486 - logging's atexit hook now runs even if the rest of the module has 17487 already been cleaned up. 17488 17489 - Bug #1112549, fix DoS attack on cgi.FieldStorage. 17490 17491 - Bug #1531405, format_exception no longer raises an exception if 17492 str(exception) raised an exception. 17493 17494 - Fix a bug in the ``compiler`` package that caused invalid code to be 17495 generated for nested functions. 17496 17497 17498 Extension Modules 17499 ----------------- 17500 17501 - Patch #1511317: don't crash on invalid hostname (alias) info. 17502 17503 - Patch #1535500: fix segfault in BZ2File.writelines and make sure it 17504 raises the correct exceptions. 17505 17506 - Patch # 1536908: enable building ctypes on OpenBSD/AMD64. The 17507 '-no-stack-protector' compiler flag for OpenBSD has been removed. 17508 17509 - Patch #1532975 was applied, which fixes Bug #1533481: ctypes now 17510 uses the _as_parameter_ attribute when objects are passed to foreign 17511 function calls. The ctypes version number was changed to 1.0.1. 17512 17513 - Bug #1530559, struct.pack raises TypeError where it used to convert. 17514 Passing float arguments to struct.pack when integers are expected 17515 now triggers a DeprecationWarning. 17516 17517 17518 Tests 17519 ----- 17520 17521 - test_socketserver should now work on cygwin and not fail sporadically 17522 on other platforms. 17523 17524 - test_mailbox should now work on cygwin versions 2006-08-10 and later. 17525 17526 - Bug #1535182: really test the xreadlines() method of bz2 objects. 17527 17528 - test_threading now skips testing alternate thread stack sizes on 17529 platforms that don't support changing thread stack size. 17530 17531 17532 Documentation 17533 ------------- 17534 17535 - Patch #1534922: unittest docs were corrected and enhanced. 17536 17537 17538 Build 17539 ----- 17540 17541 - Bug #1535502, build _hashlib on Windows, and use masm assembler 17542 code in OpenSSL. 17543 17544 - Bug #1534738, win32 debug version of _msi should be _msi_d.pyd. 17545 17546 - Bug #1530448, ctypes build failure on Solaris 10 was fixed. 17547 17548 17549 C API 17550 ----- 17551 17552 - New API for Unicode rich comparisons: PyUnicode_RichCompare() 17553 17554 - Bug #1069160. Internal correctness changes were made to 17555 ``PyThreadState_SetAsyncExc()``. A test case was added, and 17556 the documentation was changed to state that the return value 17557 is always 1 (normal) or 0 (if the specified thread wasn't found). 17558 17559 17560 What's New in Python 2.5 beta 3? 17561 ================================ 17562 17563 *Release date: 03-AUG-2006* 17564 17565 Core and builtins 17566 ----------------- 17567 17568 - _PyWeakref_GetWeakrefCount() now returns a Py_ssize_t; it previously 17569 returned a long (see PEP 353). 17570 17571 - Bug #1515471: string.replace() accepts character buffers again. 17572 17573 - Add PyErr_WarnEx() so C code can pass the stacklevel to warnings.warn(). 17574 This provides the proper warning for struct.pack(). 17575 PyErr_Warn() is now deprecated in favor of PyErr_WarnEx(). 17576 17577 - Patch #1531113: Fix augmented assignment with yield expressions. 17578 Also fix a SystemError when trying to assign to yield expressions. 17579 17580 - Bug #1529871: The speed enhancement patch #921466 broke Python's compliance 17581 with PEP 302. This was fixed by adding an ``imp.NullImporter`` type that is 17582 used in ``sys.path_importer_cache`` to cache non-directory paths and avoid 17583 excessive filesystem operations during imports. 17584 17585 - Bug #1521947: When checking for overflow, ``PyOS_strtol()`` used some 17586 operations on signed longs that are formally undefined by C. 17587 Unfortunately, at least one compiler now cares about that, so complicated 17588 the code to make that compiler happy again. 17589 17590 - Bug #1524310: Properly report errors from FindNextFile in os.listdir. 17591 17592 - Patch #1232023: Stop including current directory in search 17593 path on Windows. 17594 17595 - Fix some potential crashes found with failmalloc. 17596 17597 - Fix warnings reported by Klocwork's static analysis tool. 17598 17599 - Bug #1512814, Fix incorrect lineno's when code within a function 17600 had more than 255 blank lines. 17601 17602 - Patch #1521179: Python now accepts the standard options ``--help`` and 17603 ``--version`` as well as ``/?`` on Windows. 17604 17605 - Bug #1520864: unpacking singleton tuples in a 'for' loop (for x, in) works 17606 again. Fixing this problem required changing the .pyc magic number. 17607 This means that .pyc files generated before 2.5b3 will be regenerated. 17608 17609 - Bug #1524317: Compiling Python ``--without-threads`` failed. 17610 The Python core compiles again, and, in a build without threads, the 17611 new ``sys._current_frames()`` returns a dictionary with one entry, 17612 mapping the faux "thread id" 0 to the current frame. 17613 17614 - Bug #1525447: build on MacOS X on a case-sensitive filesystem. 17615 17616 17617 Library 17618 ------- 17619 17620 - Fix #1693149. Now you can pass several modules separated by 17621 comma to trace.py in the same --ignore-module option. 17622 17623 - Correction of patch #1455898: In the mbcs decoder, set final=False 17624 for stream decoder, but final=True for the decode function. 17625 17626 - os.urandom no longer masks unrelated exceptions like SystemExit or 17627 KeyboardInterrupt. 17628 17629 - Bug #1525866: Don't copy directory stat times in 17630 shutil.copytree on Windows 17631 17632 - Bug #1002398: The documentation for os.path.sameopenfile now correctly 17633 refers to file descriptors, not file objects. 17634 17635 - The renaming of the xml package to xmlcore, and the import hackery done 17636 to make it appear at both names, has been removed. Bug #1511497, 17637 #1513611, and probably others. 17638 17639 - Bug #1441397: The compiler module now recognizes module and function 17640 docstrings correctly as it did in Python 2.4. 17641 17642 - Bug #1529297: The rewrite of doctest for Python 2.4 unintentionally 17643 lost that tests are sorted by name before being run. This rarely 17644 matters for well-written tests, but can create baffling symptoms if 17645 side effects from one test to the next affect outcomes. ``DocTestFinder`` 17646 has been changed to sort the list of tests it returns. 17647 17648 - The distutils version has been changed to 2.5.0, and is now kept 17649 in sync with sys.version_info[:3]. 17650 17651 - Bug #978833: Really close underlying socket in _socketobject.close. 17652 17653 - Bug #1459963: urllib and urllib2 now normalize HTTP header names with 17654 title(). 17655 17656 - Patch #1525766: In pkgutil.walk_packages, correctly pass the onerror callback 17657 to recursive calls and call it with the failing package name. 17658 17659 - Bug #1525817: Don't truncate short lines in IDLE's tool tips. 17660 17661 - Patch #1515343: Fix printing of deprecated string exceptions with a 17662 value in the traceback module. 17663 17664 - Resync optparse with Optik 1.5.3: minor tweaks for/to tests. 17665 17666 - Patch #1524429: Use repr() instead of backticks in Tkinter again. 17667 17668 - Bug #1520914: Change time.strftime() to accept a zero for any position in its 17669 argument tuple. For arguments where zero is illegal, the value is forced to 17670 the minimum value that is correct. This is to support an undocumented but 17671 common way people used to fill in inconsequential information in the time 17672 tuple pre-2.4. 17673 17674 - Patch #1220874: Update the binhex module for Mach-O. 17675 17676 - The email package has improved RFC 2231 support, specifically for 17677 recognizing the difference between encoded (name*0*=<blah>) and non-encoded 17678 (name*0=<blah>) parameter continuations. This may change the types of 17679 values returned from email.message.Message.get_param() and friends. 17680 Specifically in some cases where non-encoded continuations were used, 17681 get_param() used to return a 3-tuple of (None, None, string) whereas now it 17682 will just return the string (since non-encoded continuations don't have 17683 charset and language parts). 17684 17685 Also, whereas % values were decoded in all parameter continuations, they are 17686 now only decoded in encoded parameter parts. 17687 17688 - Bug #1517990: IDLE keybindings on MacOS X now work correctly 17689 17690 - Bug #1517996: IDLE now longer shows the default Tk menu when a 17691 path browser, class browser or debugger is the frontmost window on MacOS X 17692 17693 - Patch #1520294: Support for getset and member descriptors in types.py, 17694 inspect.py, and pydoc.py. Specifically, this allows for querying the type 17695 of an object against these built-in types and more importantly, for getting 17696 their docstrings printed in the interactive interpreter's help() function. 17697 17698 17699 Extension Modules 17700 ----------------- 17701 17702 - Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during 17703 a socket operation on a socket with a timeout, the exception will be 17704 caught correctly. Previously, the exception was not caught. 17705 17706 - Patch #1529514: The _ctypes extension is now compiled on more 17707 openbsd target platforms. 17708 17709 - The ``__reduce__()`` method of the new ``collections.defaultdict`` had 17710 a memory leak, affecting pickles and deep copies. 17711 17712 - Bug #1471938: Fix curses module build problem on Solaris 8; patch by 17713 Paul Eggert. 17714 17715 - Patch #1448199: Release interpreter lock in _winreg.ConnectRegistry. 17716 17717 - Patch #1521817: Index range checking on ctypes arrays containing 17718 exactly one element enabled again. This allows iterating over these 17719 arrays, without the need to check the array size before. 17720 17721 - Bug #1521375: When the code in ctypes.util.find_library was 17722 run with root privileges, it could overwrite or delete 17723 /dev/null in certain cases; this is now fixed. 17724 17725 - Bug #1467450: On Mac OS X 10.3, RTLD_GLOBAL is now used as the 17726 default mode for loading shared libraries in ctypes. 17727 17728 - Because of a misspelled preprocessor symbol, ctypes was always 17729 compiled without thread support; this is now fixed. 17730 17731 - pybsddb Bug #1527939: bsddb module DBEnv dbremove and dbrename 17732 methods now allow their database parameter to be None as the 17733 sleepycat API allows. 17734 17735 - Bug #1526460: Fix socketmodule compile on NetBSD as it has a different 17736 bluetooth API compared with Linux and FreeBSD. 17737 17738 Tests 17739 ----- 17740 17741 - Bug #1501330: Change test_ossaudiodev to be much more tolerant in terms of 17742 how long the test file should take to play. Now accepts taking 2.93 secs 17743 (exact time) +/- 10% instead of the hard-coded 3.1 sec. 17744 17745 - Patch #1529686: The standard tests ``test_defaultdict``, ``test_iterlen``, 17746 ``test_uuid`` and ``test_email_codecs`` didn't actually run any tests when 17747 run via ``regrtest.py``. Now they do. 17748 17749 Build 17750 ----- 17751 17752 - Bug #1439538: Drop usage of test -e in configure as it is not portable. 17753 17754 Mac 17755 --- 17756 17757 - PythonLauncher now works correctly when the path to the script contains 17758 characters that are treated specially by the shell (such as quotes). 17759 17760 - Bug #1527397: PythonLauncher now launches scripts with the working directory 17761 set to the directory that contains the script instead of the user home 17762 directory. That latter was an implementation accident and not what users 17763 expect. 17764 17765 17766 What's New in Python 2.5 beta 2? 17767 ================================ 17768 17769 *Release date: 11-JUL-2006* 17770 17771 Core and builtins 17772 ----------------- 17773 17774 - Bug #1441486: The literal representation of -(sys.maxint - 1) 17775 again evaluates to an int object, not a long. 17776 17777 - Bug #1501934: The scope of global variables that are locally assigned 17778 using augmented assignment is now correctly determined. 17779 17780 - Bug #927248: Recursive method-wrapper objects can now safely 17781 be released. 17782 17783 - Bug #1417699: Reject locale-specific decimal point in float() 17784 and atof(). 17785 17786 - Bug #1511381: codec_getstreamcodec() in codec.c is corrected to 17787 omit a default "error" argument for NULL pointer. This allows 17788 the parser to take a codec from cjkcodecs again. 17789 17790 - Bug #1519018: 'as' is now validated properly in import statements. 17791 17792 - On 64 bit systems, int literals that use less than 64 bits are 17793 now ints rather than longs. 17794 17795 - Bug #1512814, Fix incorrect lineno's when code at module scope 17796 started after line 256. 17797 17798 - New function ``sys._current_frames()`` returns a dict mapping thread 17799 id to topmost thread stack frame. This is for expert use, and is 17800 especially useful for debugging application deadlocks. The functionality 17801 was previously available in Fazal Majid's ``threadframe`` extension 17802 module, but it wasn't possible to do this in a wholly threadsafe way from 17803 an extension. 17804 17805 Library 17806 ------- 17807 17808 - Bug #1257728: Mention Cygwin in distutils error message about a missing 17809 VS 2003. 17810 17811 - Patch #1519566: Update turtle demo, make begin_fill idempotent. 17812 17813 - Bug #1508010: msvccompiler now requires the DISTUTILS_USE_SDK 17814 environment variable to be set in order to the SDK environment 17815 for finding the compiler, include files, etc. 17816 17817 - Bug #1515998: Properly generate logical ids for files in bdist_msi. 17818 17819 - warnings.py now ignores ImportWarning by default 17820 17821 - string.Template() now correctly handles tuple-values. Previously, 17822 multi-value tuples would raise an exception and single-value tuples would 17823 be treated as the value they contain, instead. 17824 17825 - Bug #822974: Honor timeout in telnetlib.{expect,read_until} 17826 even if some data are received. 17827 17828 - Bug #1267547: Put proper recursive setup.py call into the 17829 spec file generated by bdist_rpm. 17830 17831 - Bug #1514693: Update turtle's heading when switching between 17832 degrees and radians. 17833 17834 - Reimplement turtle.circle using a polyline, to allow correct 17835 filling of arcs. 17836 17837 - Bug #1514703: Only setup canvas window in turtle when the canvas 17838 is created. 17839 17840 - Bug #1513223: .close() of a _socketobj now releases the underlying 17841 socket again, which then gets closed as it becomes unreferenced. 17842 17843 - Bug #1504333: Make sgmllib support angle brackets in quoted 17844 attribute values. 17845 17846 - Bug #853506: Fix IPv6 address parsing in unquoted attributes in 17847 sgmllib ('[' and ']' were not accepted). 17848 17849 - Fix a bug in the turtle module's end_fill function. 17850 17851 - Bug #1510580: The 'warnings' module improperly required that a Warning 17852 category be either a types.ClassType and a subclass of Warning. The proper 17853 check is just that it is a subclass with Warning as the documentation states. 17854 17855 - The compiler module now correctly compiles the new try-except-finally 17856 statement (bug #1509132). 17857 17858 - The wsgiref package is now installed properly on Unix. 17859 17860 - A bug was fixed in logging.config.fileConfig() which caused a crash on 17861 shutdown when fileConfig() was called multiple times. 17862 17863 - The sqlite3 module did cut off data from the SQLite database at the first 17864 null character before sending it to a custom converter. This has been fixed 17865 now. 17866 17867 Extension Modules 17868 ----------------- 17869 17870 - #1494314: Fix a regression with high-numbered sockets in 2.4.3. This 17871 means that select() on sockets > FD_SETSIZE (typically 1024) work again. 17872 The patch makes sockets use poll() internally where available. 17873 17874 - Assigning None to pointer type fields in ctypes structures possible 17875 overwrote the wrong fields, this is fixed now. 17876 17877 - Fixed a segfault in _ctypes when ctypes.wintypes were imported 17878 on non-Windows platforms. 17879 17880 - Bug #1518190: The ctypes.c_void_p constructor now accepts any 17881 integer or long, without range checking. 17882 17883 - Patch #1517790: It is now possible to use custom objects in the ctypes 17884 foreign function argtypes sequence as long as they provide a from_param 17885 method, no longer is it required that the object is a ctypes type. 17886 17887 - The '_ctypes' extension module now works when Python is configured 17888 with the --without-threads option. 17889 17890 - Bug #1513646: os.access on Windows now correctly determines write 17891 access, again. 17892 17893 - Bug #1512695: cPickle.loads could crash if it was interrupted with 17894 a KeyboardInterrupt. 17895 17896 - Bug #1296433: parsing XML with a non-default encoding and 17897 a CharacterDataHandler could crash the interpreter in pyexpat. 17898 17899 - Patch #1516912: improve Modules support for OpenVMS. 17900 17901 Build 17902 ----- 17903 17904 - Automate Windows build process for the Win64 SSL module. 17905 17906 - 'configure' now detects the zlib library the same way as distutils. 17907 Previously, the slight difference could cause compilation errors of the 17908 'zlib' module on systems with more than one version of zlib. 17909 17910 - The MSI compileall step was fixed to also support a TARGETDIR 17911 with spaces in it. 17912 17913 - Bug #1517388: sqlite3.dll is now installed on Windows independent 17914 of Tcl/Tk. 17915 17916 - Bug #1513032: 'make install' failed on FreeBSD 5.3 due to lib-old 17917 trying to be installed even though it's empty. 17918 17919 Tests 17920 ----- 17921 17922 - Call os.waitpid() at the end of tests that spawn child processes in order 17923 to minimize resources (zombies). 17924 17925 Documentation 17926 ------------- 17927 17928 - Cover ImportWarning, PendingDeprecationWarning and simplefilter() in the 17929 documentation for the warnings module. 17930 17931 - Patch #1509163: MS Toolkit Compiler no longer available. 17932 17933 - Patch #1504046: Add documentation for xml.etree. 17934 17935 17936 What's New in Python 2.5 beta 1? 17937 ================================ 17938 17939 *Release date: 20-JUN-2006* 17940 17941 Core and builtins 17942 ----------------- 17943 17944 - Patch #1507676: Error messages returned by invalid abstract object operations 17945 (such as iterating over an integer) have been improved and now include the 17946 type of the offending object to help with debugging. 17947 17948 - Bug #992017: A classic class that defined a __coerce__() method that returned 17949 its arguments swapped would infinitely recurse and segfault the interpreter. 17950 17951 - Fix the socket tests so they can be run concurrently. 17952 17953 - Removed 5 integers from C frame objects (PyFrameObject). 17954 f_nlocals, f_ncells, f_nfreevars, f_stack_size, f_restricted. 17955 17956 - Bug #532646: object.__call__() will continue looking for the __call__ 17957 attribute on objects until one without one is found. This leads to recursion 17958 when you take a class and set its __call__ attribute to an instance of the 17959 class. Originally fixed for classic classes, but this fix is for new-style. 17960 Removes the infinite_rec_3 crasher. 17961 17962 - The string and unicode methods startswith() and endswith() now accept 17963 a tuple of prefixes/suffixes to look for. Implements RFE #1491485. 17964 17965 - Buffer objects, at the C level, never used the char buffer 17966 implementation even when the char buffer for the wrapped object was 17967 explicitly requested (originally returned the read or write buffer). 17968 Now a TypeError is raised if the char buffer is not present but is 17969 requested. 17970 17971 - Patch #1346214: Statements like "if 0: suite" are now again optimized 17972 away like they were in Python 2.4. 17973 17974 - Builtin exceptions are now full-blown new-style classes instead of 17975 instances pretending to be classes, which speeds up exception handling 17976 by about 80% in comparison to 2.5a2. 17977 17978 - Patch #1494554: Update unicodedata.numeric and unicode.isnumeric to 17979 Unicode 4.1. 17980 17981 - Patch #921466: sys.path_importer_cache is now used to cache valid and 17982 invalid file paths for the built-in import machinery which leads to 17983 fewer open calls on startup. 17984 17985 - Patch #1442927: ``long(str, base)`` is now up to 6x faster for non-power- 17986 of-2 bases. The largest speedup is for inputs with about 1000 decimal 17987 digits. Conversion from non-power-of-2 bases remains quadratic-time in 17988 the number of input digits (it was and remains linear-time for bases 17989 2, 4, 8, 16 and 32). 17990 17991 - Bug #1334662: ``int(string, base)`` could deliver a wrong answer 17992 when ``base`` was not 2, 4, 8, 10, 16 or 32, and ``string`` represented 17993 an integer close to ``sys.maxint``. This was repaired by patch 17994 #1335972, which also gives a nice speedup. 17995 17996 - Patch #1337051: reduced size of frame objects. 17997 17998 - PyErr_NewException now accepts a tuple of base classes as its 17999 "base" parameter. 18000 18001 - Patch #876206: function call speedup by retaining allocated frame 18002 objects. 18003 18004 - Bug #1462152: file() now checks more thoroughly for invalid mode 18005 strings and removes a possible "U" before passing the mode to the 18006 C library function. 18007 18008 - Patch #1488312, Fix memory alignment problem on SPARC in unicode 18009 18010 - Bug #1487966: Fix SystemError with conditional expression in assignment 18011 18012 - WindowsError now has two error code attributes: errno, which carries 18013 the error values from errno.h, and winerror, which carries the error 18014 values from winerror.h. Previous versions put the winerror.h values 18015 (from GetLastError()) into the errno attribute. 18016 18017 - Patch #1475845: Raise IndentationError for unexpected indent. 18018 18019 - Patch #1479181: split open() and file() from being aliases for each other. 18020 18021 - Patch #1497053 & bug #1275608: Exceptions occurring in ``__eq__()`` 18022 methods were always silently ignored by dictionaries when comparing keys. 18023 They are now passed through (except when using the C API function 18024 ``PyDict_GetItem()``, whose semantics did not change). 18025 18026 - Bug #1456209: In some obscure cases it was possible for a class with a 18027 custom ``__eq__()`` method to confuse dict internals when class instances 18028 were used as a dict's keys and the ``__eq__()`` method mutated the dict. 18029 No, you don't have any code that did this ;-) 18030 18031 Extension Modules 18032 ----------------- 18033 18034 - Bug #1295808: expat symbols should be namespaced in pyexpat 18035 18036 - Patch #1462338: Upgrade pyexpat to expat 2.0.0 18037 18038 - Change binascii.hexlify to accept a read-only buffer instead of only a char 18039 buffer and actually follow its documentation. 18040 18041 - Fixed a potentially invalid memory access of CJKCodecs' shift-jis decoder. 18042 18043 - Patch #1478788 (modified version): The functional extension module has 18044 been renamed to _functools and a functools Python wrapper module added. 18045 This provides a home for additional function related utilities that are 18046 not specifically about functional programming. See PEP 309. 18047 18048 - Patch #1493701: performance enhancements for struct module. 18049 18050 - Patch #1490224: time.altzone is now set correctly on Cygwin. 18051 18052 - Patch #1435422: zlib's compress and decompress objects now have a 18053 copy() method. 18054 18055 - Patch #1454481: thread stack size is now tunable at runtime for thread 18056 enabled builds on Windows and systems with Posix threads support. 18057 18058 - On Win32, os.listdir now supports arbitrarily-long Unicode path names 18059 (up to the system limit of 32K characters). 18060 18061 - Use Win32 API to implement os.{access,chdir,chmod,mkdir,remove,rename,rmdir,utime}. 18062 As a result, these functions now raise WindowsError instead of OSError. 18063 18064 - ``time.clock()`` on Win64 should use the high-performance Windows 18065 ``QueryPerformanceCounter()`` now (as was already the case on 32-bit 18066 Windows platforms). 18067 18068 - Calling Tk_Init twice is refused if the first call failed as that 18069 may deadlock. 18070 18071 - bsddb: added the DB_ARCH_REMOVE flag and fixed db.DBEnv.log_archive() to 18072 accept it without potentially using an uninitialized pointer. 18073 18074 - bsddb: added support for the DBEnv.log_stat() and DBEnv.lsn_reset() methods 18075 assuming BerkeleyDB >= 4.0 and 4.4 respectively. [pybsddb project SF 18076 patch numbers 1494885 and 1494902] 18077 18078 - bsddb: added an interface for the BerkeleyDB >= 4.3 DBSequence class. 18079 [pybsddb project SF patch number 1466734] 18080 18081 - bsddb: fix DBCursor.pget() bug with keyword argument names when no data 18082 parameter is supplied. [SF pybsddb bug #1477863] 18083 18084 - bsddb: the __len__ method of a DB object has been fixed to return correct 18085 results. It could previously incorrectly return 0 in some cases. 18086 Fixes SF bug 1493322 (pybsddb bug 1184012). 18087 18088 - bsddb: the bsddb.dbtables Modify method now raises the proper error and 18089 aborts the db transaction safely when a modifier callback fails. 18090 Fixes SF python patch/bug #1408584. 18091 18092 - bsddb: multithreaded DB access using the simple bsddb module interface 18093 now works reliably. It has been updated to use automatic BerkeleyDB 18094 deadlock detection and the bsddb.dbutils.DeadlockWrap wrapper to retry 18095 database calls that would previously deadlock. [SF python bug #775414] 18096 18097 - Patch #1446489: add support for the ZIP64 extensions to zipfile. 18098 18099 - Patch #1506645: add Python wrappers for the curses functions 18100 is_term_resized, resize_term and resizeterm. 18101 18102 Library 18103 ------- 18104 18105 - Patch #815924: Restore ability to pass type= and icon= in tkMessageBox 18106 functions. 18107 18108 - Patch #812986: Update turtle output even if not tracing. 18109 18110 - Patch #1494750: Destroy master after deleting children in 18111 Tkinter.BaseWidget. 18112 18113 - Patch #1096231: Add ``default`` argument to Tkinter.Wm.wm_iconbitmap. 18114 18115 - Patch #763580: Add name and value arguments to Tkinter variable 18116 classes. 18117 18118 - Bug #1117556: SimpleHTTPServer now tries to find and use the system's 18119 mime.types file for determining MIME types. 18120 18121 - Bug #1339007: Shelf objects now don't raise an exception in their 18122 __del__ method when initialization failed. 18123 18124 - Patch #1455898: The MBCS codec now supports the incremental mode for 18125 double-byte encodings. 18126 18127 - ``difflib``'s ``SequenceMatcher.get_matching_blocks()`` was changed to 18128 guarantee that adjacent triples in the return list always describe 18129 non-adjacent blocks. Previously, a pair of matching blocks could end 18130 up being described by multiple adjacent triples that formed a partition 18131 of the matching pair. 18132 18133 - Bug #1498146: fix optparse to handle Unicode strings in option help, 18134 description, and epilog. 18135 18136 - Bug #1366250: minor optparse documentation error. 18137 18138 - Bug #1361643: fix textwrap.dedent() so it handles tabs appropriately; 18139 clarify docs. 18140 18141 - The wsgiref package has been added to the standard library. 18142 18143 - The functions update_wrapper() and wraps() have been added to the functools 18144 module. These make it easier to copy relevant metadata from the original 18145 function when writing wrapper functions. 18146 18147 - The optional ``isprivate`` argument to ``doctest.testmod()``, and the 18148 ``doctest.is_private()`` function, both deprecated in 2.4, were removed. 18149 18150 - Patch #1359618: Speed up charmap encoder by using a trie structure 18151 for lookup. 18152 18153 - The functions in the ``pprint`` module now sort dictionaries by key 18154 before computing the display. Before 2.5, ``pprint`` sorted a dictionary 18155 if and only if its display required more than one line, although that 18156 wasn't documented. The new behavior increases predictability; e.g., 18157 using ``pprint.pprint(a_dict)`` in a doctest is now reliable. 18158 18159 - Patch #1497027: try HTTP digest auth before basic auth in urllib2 18160 (thanks for J. J. Lee). 18161 18162 - Patch #1496206: improve urllib2 handling of passwords with respect to 18163 default HTTP and HTTPS ports. 18164 18165 - Patch #1080727: add "encoding" parameter to doctest.DocFileSuite. 18166 18167 - Patch #1281707: speed up gzip.readline. 18168 18169 - Patch #1180296: Two new functions were added to the locale module: 18170 format_string() to get the effect of "format % items" but locale-aware, 18171 and currency() to format a monetary number with currency sign. 18172 18173 - Patch #1486962: Several bugs in the turtle Tk demo module were fixed 18174 and several features added, such as speed and geometry control. 18175 18176 - Patch #1488881: add support for external file objects in bz2 compressed 18177 tarfiles. 18178 18179 - Patch #721464: pdb.Pdb instances can now be given explicit stdin and 18180 stdout arguments, making it possible to redirect input and output 18181 for remote debugging. 18182 18183 - Patch #1484695: Update the tarfile module to version 0.8. This fixes 18184 a couple of issues, notably handling of long file names using the 18185 GNU LONGNAME extension. 18186 18187 - Patch #1478292. ``doctest.register_optionflag(name)`` shouldn't create a 18188 new flag when ``name`` is already the name of an option flag. 18189 18190 - Bug #1385040: don't allow "def foo(a=1, b): pass" in the compiler 18191 package. 18192 18193 - Patch #1472854: make the rlcompleter.Completer class usable on non- 18194 UNIX platforms. 18195 18196 - Patch #1470846: fix urllib2 ProxyBasicAuthHandler. 18197 18198 - Bug #1472827: correctly escape newlines and tabs in attribute values in 18199 the saxutils.XMLGenerator class. 18200 18201 18202 Build 18203 ----- 18204 18205 - Bug #1502728: Correctly link against librt library on HP-UX. 18206 18207 - OpenBSD 3.9 is supported now. 18208 18209 - Patch #1492356: Port to Windows CE. 18210 18211 - Bug/Patch #1481770: Use .so extension for shared libraries on HP-UX for ia64. 18212 18213 - Patch #1471883: Add --enable-universalsdk. 18214 18215 C API 18216 ----- 18217 18218 Tests 18219 ----- 18220 18221 Tools 18222 ----- 18223 18224 Documentation 18225 ------------- 18226 18227 18228 18229 What's New in Python 2.5 alpha 2? 18230 ================================= 18231 18232 *Release date: 27-APR-2006* 18233 18234 Core and builtins 18235 ----------------- 18236 18237 - Bug #1465834: 'bdist_wininst preinstall script support' was fixed 18238 by converting these apis from macros into exported functions again: 18239 18240 PyParser_SimpleParseFile PyParser_SimpleParseString PyRun_AnyFile 18241 PyRun_AnyFileEx PyRun_AnyFileFlags PyRun_File PyRun_FileEx 18242 PyRun_FileFlags PyRun_InteractiveLoop PyRun_InteractiveOne 18243 PyRun_SimpleFile PyRun_SimpleFileEx PyRun_SimpleString 18244 PyRun_String Py_CompileString 18245 18246 - Under COUNT_ALLOCS, types are not necessarily immortal anymore. 18247 18248 - All uses of PyStructSequence_InitType have been changed to initialize 18249 the type objects only once, even if the interpreter is initialized 18250 multiple times. 18251 18252 - Bug #1454485, array.array('u') could crash the interpreter. This was 18253 due to PyArgs_ParseTuple(args, 'u#', ...) trying to convert buffers (strings) 18254 to unicode when it didn't make sense. 'u#' now requires a unicode string. 18255 18256 - Py_UNICODE is unsigned. It was always documented as unsigned, but 18257 due to a bug had a signed value in previous versions. 18258 18259 - Patch #837242: ``id()`` of any Python object always gives a positive 18260 number now, which might be a long integer. ``PyLong_FromVoidPtr`` and 18261 ``PyLong_AsVoidPtr`` have been changed accordingly. Note that it has 18262 never been correct to implement a ``__hash()__`` method that returns the 18263 ``id()`` of an object: 18264 18265 def __hash__(self): 18266 return id(self) # WRONG 18267 18268 because a hash result must be a (short) Python int but it was always 18269 possible for ``id()`` to return a Python long. However, because ``id()`` 18270 could return negative values before, on a 32-bit box an ``id()`` result 18271 was always usable as a hash value before this patch. That's no longer 18272 necessarily so. 18273 18274 - Python on OS X 10.3 and above now uses dlopen() (via dynload_shlib.c) 18275 to load extension modules and now provides the dl module. As a result, 18276 sys.setdlopenflags() now works correctly on these systems. (SF patch 18277 #1454844) 18278 18279 - Patch #1463867: enhanced garbage collection to allow cleanup of cycles 18280 involving generators that have paused outside of any ``try`` or ``with`` 18281 blocks. (In 2.5a1, a paused generator that was part of a reference 18282 cycle could not be garbage collected, regardless of whether it was 18283 paused in a ``try`` or ``with`` block.) 18284 18285 Extension Modules 18286 ----------------- 18287 18288 - Patch #1191065: Fix preprocessor problems on systems where recvfrom 18289 is a macro. 18290 18291 - Bug #1467952: os.listdir() now correctly raises an error if readdir() 18292 fails with an error condition. 18293 18294 - Fixed bsddb.db.DBError derived exceptions so they can be unpickled. 18295 18296 - Bug #1117761: bsddb.*open() no longer raises an exception when using 18297 the cachesize parameter. 18298 18299 - Bug #1149413: bsddb.*open() no longer raises an exception when using 18300 a temporary db (file=None) with the 'n' flag to truncate on open. 18301 18302 - Bug #1332852: bsddb module minimum BerkeleyDB version raised to 3.3 18303 as older versions cause excessive test failures. 18304 18305 - Patch #1062014: AF_UNIX sockets under Linux have a special 18306 abstract namespace that is now fully supported. 18307 18308 Library 18309 ------- 18310 18311 - Bug #1223937: subprocess.CalledProcessError reports the exit status 18312 of the process using the returncode attribute, instead of 18313 abusing errno. 18314 18315 - Patch #1475231: ``doctest`` has a new ``SKIP`` option, which causes 18316 a doctest to be skipped (the code is not run, and the expected output 18317 or exception is ignored). 18318 18319 - Fixed contextlib.nested to cope with exceptions being raised and 18320 caught inside exit handlers. 18321 18322 - Updated optparse module to Optik 1.5.1 (allow numeric constants in 18323 hex, octal, or binary; add ``append_const`` action; keep going if 18324 gettext cannot be imported; added ``OptionParser.destroy()`` method; 18325 added ``epilog`` for better help generation). 18326 18327 - Bug #1473760: ``tempfile.TemporaryFile()`` could hang on Windows, when 18328 called from a thread spawned as a side effect of importing a module. 18329 18330 - The pydoc module now supports documenting packages contained in 18331 .zip or .egg files. 18332 18333 - The pkgutil module now has several new utility functions, such 18334 as ``walk_packages()`` to support working with packages that are either 18335 in the filesystem or zip files. 18336 18337 - The mailbox module can now modify and delete messages from 18338 mailboxes, in addition to simply reading them. Thanks to Gregory 18339 K. Johnson for writing the code, and to the 2005 Google Summer of 18340 Code for funding his work. 18341 18342 - The ``__del__`` method of class ``local`` in module ``_threading_local`` 18343 returned before accomplishing any of its intended cleanup. 18344 18345 - Patch #790710: Add breakpoint command lists in pdb. 18346 18347 - Patch #1063914: Add Tkinter.Misc.clipboard_get(). 18348 18349 - Patch #1191700: Adjust column alignment in bdb breakpoint lists. 18350 18351 - SimpleXMLRPCServer relied on the fcntl module, which is unavailable on 18352 Windows. Bug #1469163. 18353 18354 - The warnings, linecache, inspect, traceback, site, and doctest modules 18355 were updated to work correctly with modules imported from zipfiles or 18356 via other PEP 302 __loader__ objects. 18357 18358 - Patch #1467770: Reduce usage of subprocess._active to processes which 18359 the application hasn't waited on. 18360 18361 - Patch #1462222: Fix Tix.Grid. 18362 18363 - Fix exception when doing glob.glob('anything*/') 18364 18365 - The pstats.Stats class accepts an optional stream keyword argument to 18366 direct output to an alternate file-like object. 18367 18368 Build 18369 ----- 18370 18371 - The Makefile now has a reindent target, which runs reindent.py on 18372 the library. 18373 18374 - Patch #1470875: Building Python with MS Free Compiler 18375 18376 - Patch #1161914: Add a python-config script. 18377 18378 - Patch #1324762:Remove ccpython.cc; replace --with-cxx with 18379 --with-cxx-main. Link with C++ compiler only if --with-cxx-main was 18380 specified. (Can be overridden by explicitly setting LINKCC.) Decouple 18381 CXX from --with-cxx-main, see description in README. 18382 18383 - Patch #1429775: Link extension modules with the shared libpython. 18384 18385 - Fixed a libffi build problem on MIPS systems. 18386 18387 - ``PyString_FromFormat``, ``PyErr_Format``, and ``PyString_FromFormatV`` 18388 now accept formats "%u" for unsigned ints, "%lu" for unsigned longs, 18389 and "%zu" for unsigned integers of type ``size_t``. 18390 18391 Tests 18392 ----- 18393 18394 - test_contextlib now checks contextlib.nested can cope with exceptions 18395 being raised and caught inside exit handlers. 18396 18397 - test_cmd_line now checks operation of the -m and -c command switches 18398 18399 - The test_contextlib test in 2.5a1 wasn't actually run unless you ran 18400 it separately and by hand. It also wasn't cleaning up its changes to 18401 the current Decimal context. 18402 18403 - regrtest.py now has a -M option to run tests that test the new limits of 18404 containers, on 64-bit architectures. Running these tests is only sensible 18405 on 64-bit machines with more than two gigabytes of memory. The argument 18406 passed is the maximum amount of memory for the tests to use. 18407 18408 Tools 18409 ----- 18410 18411 - Added the Python benchmark suite pybench to the Tools/ directory; 18412 contributed by Marc-Andre Lemburg. 18413 18414 Documentation 18415 ------------- 18416 18417 - Patch #1473132: Improve docs for ``tp_clear`` and ``tp_traverse``. 18418 18419 - PEP 343: Added Context Types section to the library reference 18420 and attempted to bring other PEP 343 related documentation into 18421 line with the implementation and/or python-dev discussions. 18422 18423 - Bug #1337990: clarified that ``doctest`` does not support examples 18424 requiring both expected output and an exception. 18425 18426 18427 What's New in Python 2.5 alpha 1? 18428 ================================= 18429 18430 *Release date: 05-APR-2006* 18431 18432 Core and builtins 18433 ----------------- 18434 18435 - PEP 338: -m command line switch now delegates to runpy.run_module 18436 allowing it to support modules in packages and zipfiles 18437 18438 - On Windows, .DLL is not an accepted file name extension for 18439 extension modules anymore; extensions are only found if they 18440 end in .PYD. 18441 18442 - Bug #1421664: sys.stderr.encoding is now set to the same value as 18443 sys.stdout.encoding. 18444 18445 - __import__ accepts keyword arguments. 18446 18447 - Patch #1460496: round() now accepts keyword arguments. 18448 18449 - Fixed bug #1459029 - unicode reprs were double-escaped. 18450 18451 - Patch #1396919: The system scope threads are reenabled on FreeBSD 18452 5.4 and later versions. 18453 18454 - Bug #1115379: Compiling a Unicode string with an encoding declaration 18455 now gives a SyntaxError. 18456 18457 - Previously, Python code had no easy way to access the contents of a 18458 cell object. Now, a ``cell_contents`` attribute has been added 18459 (closes patch #1170323). 18460 18461 - Patch #1123430: Python's small-object allocator now returns an arena to 18462 the system ``free()`` when all memory within an arena becomes unused 18463 again. Prior to Python 2.5, arenas (256KB chunks of memory) were never 18464 freed. Some applications will see a drop in virtual memory size now, 18465 especially long-running applications that, from time to time, temporarily 18466 use a large number of small objects. Note that when Python returns an 18467 arena to the platform C's ``free()``, there's no guarantee that the 18468 platform C library will in turn return that memory to the operating system. 18469 The effect of the patch is to stop making that impossible, and in tests it 18470 appears to be effective at least on Microsoft C and gcc-based systems. 18471 Thanks to Evan Jones for hard work and patience. 18472 18473 - Patch #1434038: property() now uses the getter's docstring if there is 18474 no "doc" argument given. This makes it possible to legitimately use 18475 property() as a decorator to produce a read-only property. 18476 18477 - PEP 357, patch 1436368: add an __index__ method to int/long and a matching 18478 nb_index slot to the PyNumberMethods struct. The slot is consulted instead 18479 of requiring an int or long in slicing and a few other contexts, enabling 18480 other objects (e.g. Numeric Python's integers) to be used as slice indices. 18481 18482 - Fixed various bugs reported by Coverity's Prevent tool. 18483 18484 - PEP 352, patch #1104669: Make exceptions new-style objects. Introduced the 18485 new exception base class, BaseException, which has a new message attribute. 18486 KeyboardInterrupt and SystemExit to directly inherit from BaseException now. 18487 Raising a string exception now raises a DeprecationWarning. 18488 18489 - Patch #1438387, PEP 328: relative and absolute imports. Imports can now be 18490 explicitly relative, using 'from .module import name' to mean 'from the same 18491 package as this module is in. Imports without dots still default to the 18492 old relative-then-absolute, unless 'from __future__ import 18493 absolute_import' is used. 18494 18495 - Properly check if 'warnings' raises an exception (usually when a filter set 18496 to "error" is triggered) when raising a warning for raising string 18497 exceptions. 18498 18499 - CO_GENERATOR_ALLOWED is no longer defined. This behavior is the default. 18500 The name was removed from Include/code.h. 18501 18502 - PEP 308: conditional expressions were added: (x if cond else y). 18503 18504 - Patch 1433928: 18505 - The copy module now "copies" function objects (as atomic objects). 18506 - dict.__getitem__ now looks for a __missing__ hook before raising 18507 KeyError. 18508 18509 - PEP 343: with statement implemented. Needs ``from __future__ import 18510 with_statement``. Use of 'with' as a variable will generate a warning. 18511 Use of 'as' as a variable will also generate a warning (unless it's 18512 part of an import statement). 18513 The following objects have __context__ methods: 18514 - The built-in file type. 18515 - The thread.LockType type. 18516 - The following types defined by the threading module: 18517 Lock, RLock, Condition, Semaphore, BoundedSemaphore. 18518 - The decimal.Context class. 18519 18520 - Fix the encodings package codec search function to only search 18521 inside its own package. Fixes problem reported in patch #1433198. 18522 18523 Note: Codec packages should implement and register their own 18524 codec search function. PEP 100 has the details. 18525 18526 - PEP 353: Using ``Py_ssize_t`` as the index type. 18527 18528 - ``PYMALLOC_DEBUG`` builds now add ``4*sizeof(size_t)`` bytes of debugging 18529 info to each allocated block, since the ``Py_ssize_t`` changes (PEP 353) 18530 now allow Python to make use of memory blocks exceeding 2**32 bytes for 18531 some purposes on 64-bit boxes. A ``PYMALLOC_DEBUG`` build was limited 18532 to 4-byte allocations before. 18533 18534 - Patch #1400181, fix unicode string formatting to not use the locale. 18535 This is how string objects work. u'%f' could use , instead of . 18536 for the decimal point. Now both strings and unicode always use periods. 18537 18538 - Bug #1244610, #1392915, fix build problem on OpenBSD 3.7 and 3.8. 18539 configure would break checking curses.h. 18540 18541 - Bug #959576: The pwd module is now built in. This allows Python to be 18542 built on UNIX platforms without $HOME set. 18543 18544 - Bug #1072182, fix some potential problems if characters are signed. 18545 18546 - Bug #889500, fix line number on SyntaxWarning for global declarations. 18547 18548 - Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter. 18549 18550 - Support for converting hex strings to floats no longer works. 18551 This was not portable. float('0x3') now raises a ValueError. 18552 18553 - Patch #1382163: Expose Subversion revision number to Python. New C API 18554 function Py_GetBuildNumber(). New attribute sys.subversion. Build number 18555 is now displayed in interactive prompt banner. 18556 18557 - Implementation of PEP 341 - Unification of try/except and try/finally. 18558 "except" clauses can now be written together with a "finally" clause in 18559 one try statement instead of two nested ones. Patch #1355913. 18560 18561 - Bug #1379994: Builtin unicode_escape and raw_unicode_escape codec 18562 now encodes backslash correctly. 18563 18564 - Patch #1350409: Work around signal handling bug in Visual Studio 2005. 18565 18566 - Bug #1281408: Py_BuildValue now works correctly even with unsigned longs 18567 and long longs. 18568 18569 - SF Bug #1350188, "setdlopenflags" leads to crash upon "import" 18570 It was possible for dlerror() to return a NULL pointer, so 18571 it will now use a default error message in this case. 18572 18573 - Replaced most Unicode charmap codecs with new ones using the 18574 new Unicode translate string feature in the built-in charmap 18575 codec; the codecs were created from the mapping tables available 18576 at ftp.unicode.org and contain a few updates (e.g. the Mac OS 18577 encodings now include a mapping for the Apple logo) 18578 18579 - Added a few more codecs for Mac OS encodings 18580 18581 - Sped up some Unicode operations. 18582 18583 - A new AST parser implementation was completed. The abstract 18584 syntax tree is available for read-only (non-compile) access 18585 to Python code; an _ast module was added. 18586 18587 - SF bug #1167751: fix incorrect code being produced for generator expressions. 18588 The following code now raises a SyntaxError: foo(a = i for i in range(10)) 18589 18590 - SF Bug #976608: fix SystemError when mtime of an imported file is -1. 18591 18592 - SF Bug #887946: fix segfault when redirecting stdin from a directory. 18593 Provide a warning when a directory is passed on the command line. 18594 18595 - Fix segfault with invalid coding. 18596 18597 - SF bug #772896: unknown encoding results in MemoryError. 18598 18599 - All iterators now have a Boolean value of True. Formerly, some iterators 18600 supported a __len__() method which evaluated to False when the iterator 18601 was empty. 18602 18603 - On 64-bit platforms, when __len__() returns a value that cannot be 18604 represented as a C int, raise OverflowError. 18605 18606 - test__locale is skipped on OS X < 10.4 (only partial locale support is 18607 present). 18608 18609 - SF bug #893549: parsing keyword arguments was broken with a few format 18610 codes. 18611 18612 - Changes donated by Elemental Security to make it work on AIX 5.3 18613 with IBM's 64-bit compiler (SF patch #1284289). This also closes SF 18614 bug #105470: test_pwd fails on 64bit system (Opteron). 18615 18616 - Changes donated by Elemental Security to make it work on HP-UX 11 on 18617 Itanium2 with HP's 64-bit compiler (SF patch #1225212). 18618 18619 - Disallow keyword arguments for type constructors that don't use them 18620 (fixes bug #1119418). 18621 18622 - Forward UnicodeDecodeError into SyntaxError for source encoding errors. 18623 18624 - SF bug #900092: When tracing (e.g. for hotshot), restore 'return' events for 18625 exceptions that cause a function to exit. 18626 18627 - The implementation of set() and frozenset() was revised to use its 18628 own internal data structure. Memory consumption is reduced by 1/3 18629 and there are modest speed-ups as well. The API is unchanged. 18630 18631 - SF bug #1238681: freed pointer is used in longobject.c:long_pow(). 18632 18633 - SF bug #1229429: PyObject_CallMethod failed to decrement some 18634 reference counts in some error exit cases. 18635 18636 - SF bug #1185883: Python's small-object memory allocator took over 18637 a block managed by the platform C library whenever a realloc specified 18638 a small new size. However, there's no portable way to know then how 18639 much of the address space following the pointer is valid, so there's no 18640 portable way to copy data from the C-managed block into Python's 18641 small-object space without risking a memory fault. Python's small-object 18642 realloc now leaves such blocks under the control of the platform C 18643 realloc. 18644 18645 - SF bug #1232517: An overflow error was not detected properly when 18646 attempting to convert a large float to an int in os.utime(). 18647 18648 - SF bug #1224347: hex longs now print with lowercase letters just 18649 like their int counterparts. 18650 18651 - SF bug #1163563: the original fix for bug #1010677 ("thread Module 18652 Breaks PyGILState_Ensure()") broke badly in the case of multiple 18653 interpreter states; back out that fix and do a better job (see 18654 http://mail.python.org/pipermail/python-dev/2005-June/054258.html 18655 for a longer write-up of the problem). 18656 18657 - SF patch #1180995: marshal now uses a binary format by default when 18658 serializing floats. 18659 18660 - SF patch #1181301: on platforms that appear to use IEEE 754 floats, 18661 the routines that promise to produce IEEE 754 binary representations 18662 of floats now simply copy bytes around. 18663 18664 - bug #967182: disallow opening files with 'wU' or 'aU' as specified by PEP 18665 278. 18666 18667 - patch #1109424: int, long, float, complex, and unicode now check for the 18668 proper magic slot for type conversions when subclassed. Previously the 18669 magic slot was ignored during conversion. Semantics now match the way 18670 subclasses of str always behaved. int/long/float, conversion of an instance 18671 to the base class has been moved to the proper nb_* magic slot and out of 18672 PyNumber_*(). 18673 Thanks Walter Drwald. 18674 18675 - Descriptors defined in C with a PyGetSetDef structure, where the setter is 18676 NULL, now raise an AttributeError when attempting to set or delete the 18677 attribute. Previously a TypeError was raised, but this was inconsistent 18678 with the equivalent pure-Python implementation. 18679 18680 - It is now safe to call PyGILState_Release() before 18681 PyEval_InitThreads() (note that if there is reason to believe there 18682 are multiple threads around you still must call PyEval_InitThreads() 18683 before using the Python API; this fix is for extension modules that 18684 have no way of knowing if Python is multi-threaded yet). 18685 18686 - Typing Ctrl-C whilst raw_input() was waiting in a build with threads 18687 disabled caused a crash. 18688 18689 - Bug #1165306: instancemethod_new allowed the creation of a method 18690 with im_class == im_self == NULL, which caused a crash when called. 18691 18692 - Move exception finalisation later in the shutdown process - this 18693 fixes the crash seen in bug #1165761 18694 18695 - Added two new builtins, any() and all(). 18696 18697 - Defining a class with empty parentheses is now allowed 18698 (e.g., ``class C(): pass`` is no longer a syntax error). 18699 Patch #1176012 added support to the 'parser' module and 'compiler' package 18700 (thanks to logistix for that added support). 18701 18702 - Patch #1115086: Support PY_LONGLONG in structmember. 18703 18704 - Bug #1155938: new style classes did not check that __init__() was 18705 returning None. 18706 18707 - Patch #802188: Report characters after line continuation character 18708 ('\') with a specific error message. 18709 18710 - Bug #723201: Raise a TypeError for passing bad objects to 'L' format. 18711 18712 - Bug #1124295: the __name__ attribute of file objects was 18713 inadvertently made inaccessible in restricted mode. 18714 18715 - Bug #1074011: closing sys.std{out,err} now causes a flush() and 18716 an ferror() call. 18717 18718 - min() and max() now support key= arguments with the same meaning as in 18719 list.sort(). 18720 18721 - The peephole optimizer now performs simple constant folding in expressions: 18722 (2+3) --> (5). 18723 18724 - set and frozenset objects can now be marshalled. SF #1098985. 18725 18726 - Bug #1077106: Poor argument checking could cause memory corruption 18727 in calls to os.read(). 18728 18729 - The parser did not complain about future statements in illegal 18730 positions. It once again reports a syntax error if a future 18731 statement occurs after anything other than a doc string. 18732 18733 - Change the %s format specifier for str objects so that it returns a 18734 unicode instance if the argument is not an instance of basestring and 18735 calling __str__ on the argument returns a unicode instance. 18736 18737 - Patch #1413181: changed ``PyThreadState_Delete()`` to forget about the 18738 current thread state when the auto-GIL-state machinery knows about 18739 it (since the thread state is being deleted, continuing to remember it 18740 can't help, but can hurt if another thread happens to get created with 18741 the same thread id). 18742 18743 Extension Modules 18744 ----------------- 18745 18746 - Patch #1380952: fix SSL objects timing out on consecutive read()s 18747 18748 - Patch #1309579: wait3 and wait4 were added to the posix module. 18749 18750 - Patch #1231053: The audioop module now supports encoding/decoding of alaw. 18751 In addition, the existing ulaw code was updated. 18752 18753 - RFE #567972: Socket objects' family, type and proto properties are 18754 now exposed via new attributes. 18755 18756 - Everything under lib-old was removed. This includes the following modules: 18757 Para, addpack, cmp, cmpcache, codehack, dircmp, dump, find, fmt, grep, 18758 lockfile, newdir, ni, packmail, poly, rand, statcache, tb, tzparse, 18759 util, whatsound, whrandom, zmod 18760 18761 - The following modules were removed: regsub, reconvert, regex, regex_syntax. 18762 18763 - re and sre were swapped, so help(re) provides full help. importing sre 18764 is deprecated. The undocumented re.engine variable no longer exists. 18765 18766 - Bug #1448490: Fixed a bug that ISO-2022 codecs could not handle 18767 SS2 (single-shift 2) escape sequences correctly. 18768 18769 - The unicodedata module was updated to the 4.1 version of the Unicode 18770 database. The 3.2 version is still available as unicodedata.db_3_2_0 18771 for applications that require this specific version (such as IDNA). 18772 18773 - The timing module is no longer built by default. It was deprecated 18774 in PEP 4 in Python 2.0 or earlier. 18775 18776 - Patch 1433928: Added a new type, defaultdict, to the collections module. 18777 This uses the new __missing__ hook behavior added to dict (see above). 18778 18779 - Bug #854823: socketmodule now builds on Sun platforms even when 18780 INET_ADDRSTRLEN is not defined. 18781 18782 - Patch #1393157: os.startfile() now has an optional argument to specify 18783 a "command verb" to invoke on the file. 18784 18785 - Bug #876637, prevent stack corruption when socket descriptor 18786 is larger than FD_SETSIZE. 18787 18788 - Patch #1407135, bug #1424041: harmonize mmap behavior of anonymous memory. 18789 mmap.mmap(-1, size) now returns anonymous memory in both Unix and Windows. 18790 mmap.mmap(0, size) should not be used on Windows for anonymous memory. 18791 18792 - Patch #1422385: The nis module now supports access to domains other 18793 than the system default domain. 18794 18795 - Use Win32 API to implement os.stat/fstat. As a result, subsecond timestamps 18796 are reported, the limit on path name lengths is removed, and stat reports 18797 WindowsError now (instead of OSError). 18798 18799 - Add bsddb.db.DBEnv.set_tx_timestamp allowing time based database recovery. 18800 18801 - Bug #1413192, fix seg fault in bsddb if a transaction was deleted 18802 before the env. 18803 18804 - Patch #1103116: Basic AF_NETLINK support. 18805 18806 - Bug #1402308, (possible) segfault when using mmap.mmap(-1, ...) 18807 18808 - Bug #1400822, _curses over{lay,write} doesn't work when passing 6 ints. 18809 Also fix ungetmouse() which did not accept arguments properly. 18810 The code now conforms to the documented signature. 18811 18812 - Bug #1400115, Fix segfault when calling curses.panel.userptr() 18813 without prior setting of the userptr. 18814 18815 - Fix 64-bit problems in bsddb. 18816 18817 - Patch #1365916: fix some unsafe 64-bit mmap methods. 18818 18819 - Bug #1290333: Added a workaround for cjkcodecs' _codecs_cn build 18820 problem on AIX. 18821 18822 - Bug #869197: os.setgroups rejects long integer arguments 18823 18824 - Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint 18825 18826 - Bug #1344508, Fix UNIX mmap leaking file descriptors 18827 18828 - Patch #1338314, Bug #1336623: fix tarfile so it can extract 18829 REGTYPE directories from tarfiles written by old programs. 18830 18831 - Patch #1407992, fixes broken bsddb module db associate when using 18832 BerkeleyDB 3.3, 4.0 or 4.1. 18833 18834 - Get bsddb module to build with BerkeleyDB version 4.4 18835 18836 - Get bsddb module to build with BerkeleyDB version 3.2 18837 18838 - Patch #1309009, Fix segfault in pyexpat when the XML document is in latin_1, 18839 but Python incorrectly assumes it is in UTF-8 format 18840 18841 - Fix parse errors in the readline module when compiling without threads. 18842 18843 - Patch #1288833: Removed thread lock from socket.getaddrinfo on 18844 FreeBSD 5.3 and later versions which got thread-safe getaddrinfo(3). 18845 18846 - Patches #1298449 and #1298499: Add some missing checks for error 18847 returns in cStringIO.c. 18848 18849 - Patch #1297028: fix segfault if call type on MultibyteCodec, 18850 MultibyteStreamReader, or MultibyteStreamWriter 18851 18852 - Fix memory leak in posix.access(). 18853 18854 - Patch #1213831: Fix typo in unicodedata._getcode. 18855 18856 - Bug #1007046: os.startfile() did not accept unicode strings encoded in 18857 the file system encoding. 18858 18859 - Patch #756021: Special-case socket.inet_aton('255.255.255.255') for 18860 platforms that don't have inet_aton(). 18861 18862 - Bug #1215928: Fix bz2.BZ2File.seek() for 64-bit file offsets. 18863 18864 - Bug #1191043: Fix bz2.BZ2File.(x)readlines for files containing one 18865 line without newlines. 18866 18867 - Bug #728515: mmap.resize() now resizes the file on Unix as it did 18868 on Windows. 18869 18870 - Patch #1180695: Add nanosecond stat resolution, and st_gen, 18871 st_birthtime for FreeBSD. 18872 18873 - Patch #1231069: The fcntl.ioctl function now uses the 'I' code for 18874 the request code argument, which results in more C-like behaviour 18875 for large or negative values. 18876 18877 - Bug #1234979: For the argument of thread.Lock.acquire, the Windows 18878 implementation treated all integer values except 1 as false. 18879 18880 - Bug #1194181: bz2.BZ2File didn't handle mode 'U' correctly. 18881 18882 - Patch #1212117: os.stat().st_flags is now accessible as an attribute 18883 if available on the platform. 18884 18885 - Patch #1103951: Expose O_SHLOCK and O_EXLOCK in the posix module if 18886 available on the platform. 18887 18888 - Bug #1166660: The readline module could segfault if hook functions 18889 were set in a different thread than that which called readline. 18890 18891 - collections.deque objects now support a remove() method. 18892 18893 - operator.itemgetter() and operator.attrgetter() now support retrieving 18894 multiple fields. This provides direct support for sorting on multiple 18895 keys (primary, secondary, etc). 18896 18897 - os.access now supports Unicode path names on non-Win32 systems. 18898 18899 - Patches #925152, #1118602: Avoid reading after the end of the buffer 18900 in pyexpat.GetInputContext. 18901 18902 - Patches #749830, #1144555: allow UNIX mmap size to default to current 18903 file size. 18904 18905 - Added functional.partial(). See PEP309. 18906 18907 - Patch #1093585: raise a ValueError for negative history items in readline. 18908 {remove_history,replace_history} 18909 18910 - The spwd module has been added, allowing access to the shadow password 18911 database. 18912 18913 - stat_float_times is now True. 18914 18915 - array.array objects are now picklable. 18916 18917 - the cPickle module no longer accepts the deprecated None option in the 18918 args tuple returned by __reduce__(). 18919 18920 - itertools.islice() now accepts None for the start and step arguments. 18921 This allows islice() to work more readily with slices: 18922 islice(s.start, s.stop, s.step) 18923 18924 - datetime.datetime() now has a strptime class method which can be used to 18925 create datetime object using a string and format. 18926 18927 - Patch #1117961: Replace the MD5 implementation from RSA Data Security Inc 18928 with the implementation from http://sourceforge.net/projects/libmd5-rfc/. 18929 18930 Library 18931 ------- 18932 18933 - Patch #1388073: Numerous __-prefixed attributes of unittest.TestCase have 18934 been renamed to have only a single underscore prefix. This was done to 18935 make subclassing easier. 18936 18937 - PEP 338: new module runpy defines a run_module function to support 18938 executing modules which provide access to source code or a code object 18939 via the PEP 302 import mechanisms. 18940 18941 - The email module's parsedate_tz function now sets the daylight savings 18942 flag to -1 (unknown) since it can't tell from the date whether it should 18943 be set. 18944 18945 - Patch #624325: urlparse.urlparse() and urlparse.urlsplit() results 18946 now sport attributes that provide access to the parts of the result. 18947 18948 - Patch #1462498: sgmllib now handles entity and character references 18949 in attribute values. 18950 18951 - Added the sqlite3 package. This is based on pysqlite2.1.3, and provides 18952 a DB-API interface in the standard library. You'll need sqlite 3.0.8 or 18953 later to build this - if you have an earlier version, the C extension 18954 module will not be built. 18955 18956 - Bug #1460340: ``random.sample(dict)`` failed in various ways. Dicts 18957 aren't officially supported here, and trying to use them will probably 18958 raise an exception some day. But dicts have been allowed, and "mostly 18959 worked", so support for them won't go away without warning. 18960 18961 - Bug #1445068: getpass.getpass() can now be given an explicit stream 18962 argument to specify where to write the prompt. 18963 18964 - Patch #1462313, bug #1443328: the pickle modules now can handle classes 18965 that have __private names in their __slots__. 18966 18967 - Bug #1250170: mimetools now handles socket.gethostname() failures gracefully. 18968 18969 - patch #1457316: "setup.py upload" now supports --identity to select the 18970 key to be used for signing the uploaded code. 18971 18972 - Queue.Queue objects now support .task_done() and .join() methods 18973 to make it easier to monitor when daemon threads have completed 18974 processing all enqueued tasks. Patch #1455676. 18975 18976 - popen2.Popen objects now preserve the command in a .cmd attribute. 18977 18978 - Added the ctypes ffi package. 18979 18980 - email 4.0 package now integrated. This is largely the same as the email 3.0 18981 package that was included in Python 2.3, except that PEP 8 module names are 18982 now used (e.g. mail.message instead of email.Message). The MIME classes 18983 have been moved to a subpackage (e.g. email.mime.text instead of 18984 email.MIMEText). The old names are still supported for now. Several 18985 deprecated Message methods have been removed and lots of bugs have been 18986 fixed. More details can be found in the email package documentation. 18987 18988 - Patches #1436130/#1443155: codecs.lookup() now returns a CodecInfo object 18989 (a subclass of tuple) that provides incremental decoders and encoders 18990 (a way to use stateful codecs without the stream API). Python functions 18991 codecs.getincrementaldecoder() and codecs.getincrementalencoder() as well 18992 as C functions PyCodec_IncrementalEncoder() and PyCodec_IncrementalDecoder() 18993 have been added. 18994 18995 - Patch #1359365: Calling next() on a closed StringIO.String object raises 18996 a ValueError instead of a StopIteration now (like file and cString.String do). 18997 cStringIO.StringIO.isatty() will raise a ValueError now if close() has been 18998 called before (like file and StringIO.StringIO do). 18999 19000 - A regrtest option -w was added to re-run failed tests in verbose mode. 19001 19002 - Patch #1446372: quit and exit can now be called from the interactive 19003 interpreter to exit. 19004 19005 - The function get_count() has been added to the gc module, and gc.collect() 19006 grew an optional 'generation' argument. 19007 19008 - A library msilib to generate Windows Installer files, and a distutils 19009 command bdist_msi have been added. 19010 19011 - PEP 343: new module contextlib.py defines decorator @contextmanager 19012 and helpful context managers nested() and closing(). 19013 19014 - The compiler package now supports future imports after the module docstring. 19015 19016 - Bug #1413790: zipfile now sanitizes absolute archive names that are 19017 not allowed by the specs. 19018 19019 - Patch #1215184: FileInput now can be given an opening hook which can 19020 be used to control how files are opened. 19021 19022 - Patch #1212287: fileinput.input() now has a mode parameter for 19023 specifying the file mode input files should be opened with. 19024 19025 - Patch #1215184: fileinput now has a fileno() function for getting the 19026 current file number. 19027 19028 - Patch #1349274: gettext.install() now optionally installs additional 19029 translation functions other than _() in the builtins namespace. 19030 19031 - Patch #1337756: fileinput now accepts Unicode filenames. 19032 19033 - Patch #1373643: The chunk module can now read chunks larger than 19034 two gigabytes. 19035 19036 - Patch #1417555: SimpleHTTPServer now returns Last-Modified headers. 19037 19038 - Bug #1430298: It is now possible to send a mail with an empty 19039 return address using smtplib. 19040 19041 - Bug #1432260: The names of lambda functions are now properly displayed 19042 in pydoc. 19043 19044 - Patch #1412872: zipfile now sets the creator system to 3 (Unix) 19045 unless the system is Win32. 19046 19047 - Patch #1349118: urllib now supports user:pass@ style proxy 19048 specifications, raises IOErrors when proxies for unsupported protocols 19049 are defined, and uses the https proxy on https redirections. 19050 19051 - Bug #902075: urllib2 now supports 'host:port' style proxy specifications. 19052 19053 - Bug #1407902: Add support for sftp:// URIs to urlparse. 19054 19055 - Bug #1371247: Update Windows locale identifiers in locale.py. 19056 19057 - Bug #1394565: SimpleHTTPServer now doesn't choke on query parameters 19058 any more. 19059 19060 - Bug #1403410: The warnings module now doesn't get confused 19061 when it can't find out the module name it generates a warning for. 19062 19063 - Patch #1177307: Added a new codec utf_8_sig for UTF-8 with a BOM signature. 19064 19065 - Patch #1157027: cookielib mishandles RFC 2109 cookies in Netscape mode 19066 19067 - Patch #1117398: cookielib.LWPCookieJar and .MozillaCookieJar now raise 19068 LoadError as documented, instead of IOError. For compatibility, 19069 LoadError subclasses IOError. 19070 19071 - Added the hashlib module. It provides secure hash functions for MD5 and 19072 SHA1, 224, 256, 384, and 512. Note that recent developments make the 19073 historic MD5 and SHA1 unsuitable for cryptographic-strength applications. 19074 In <http://mail.python.org/pipermail/python-dev/2005-December/058850.html> 19075 Ronald L. Rivest offered this advice for Python: 19076 19077 "The consensus of researchers in this area (at least as 19078 expressed at the NIST Hash Function Workshop 10/31/05), 19079 is that SHA-256 is a good choice for the time being, but 19080 that research should continue, and other alternatives may 19081 arise from this research. The larger SHA's also seem OK." 19082 19083 - Added a subset of Fredrik Lundh's ElementTree package. Available 19084 modules are xml.etree.ElementTree, xml.etree.ElementPath, and 19085 xml.etree.ElementInclude, from ElementTree 1.2.6. 19086 19087 - Patch #1162825: Support non-ASCII characters in IDLE window titles. 19088 19089 - Bug #1365984: urllib now opens "data:" URLs again. 19090 19091 - Patch #1314396: prevent deadlock for threading.Thread.join() when an exception 19092 is raised within the method itself on a previous call (e.g., passing in an 19093 illegal argument) 19094 19095 - Bug #1340337: change time.strptime() to always return ValueError when there 19096 is an error in the format string. 19097 19098 - Patch #754022: Greatly enhanced webbrowser.py (by Oleg Broytmann). 19099 19100 - Bug #729103: pydoc.py: Fix docother() method to accept additional 19101 "parent" argument. 19102 19103 - Patch #1300515: xdrlib.py: Fix pack_fstring() to really use null bytes 19104 for padding. 19105 19106 - Bug #1296004: httplib.py: Limit maximal amount of data read from the 19107 socket to avoid a MemoryError on Windows. 19108 19109 - Patch #1166948: locale.py: Prefer LC_ALL, LC_CTYPE and LANG over LANGUAGE 19110 to get the correct encoding. 19111 19112 - Patch #1166938: locale.py: Parse LANGUAGE as a colon separated list of 19113 languages. 19114 19115 - Patch #1268314: Cache lines in StreamReader.readlines for performance. 19116 19117 - Bug #1290505: Fix clearing the regex cache for time.strptime(). 19118 19119 - Bug #1167128: Fix size of a symlink in a tarfile to be 0. 19120 19121 - Patch #810023: Fix off-by-one bug in urllib.urlretrieve reporthook 19122 functionality. 19123 19124 - Bug #1163178: Make IDNA return an empty string when the input is empty. 19125 19126 - Patch #848017: Make Cookie more RFC-compliant. Use CRLF as default output 19127 separator and do not output trailing semicolon. 19128 19129 - Patch #1062060: urllib.urlretrieve() now raises a new exception, named 19130 ContentTooShortException, when the actually downloaded size does not 19131 match the Content-Length header. 19132 19133 - Bug #1121494: distutils.dir_utils.mkpath now accepts Unicode strings. 19134 19135 - Bug #1178484: Return complete lines from codec stream readers 19136 even if there is an exception in later lines, resulting in 19137 correct line numbers for decoding errors in source code. 19138 19139 - Bug #1192315: Disallow negative arguments to clear() in pdb. 19140 19141 - Patch #827386: Support absolute source paths in msvccompiler.py. 19142 19143 - Patch #1105730: Apply the new implementation of commonprefix in posixpath 19144 to ntpath, macpath, os2emxpath and riscospath. 19145 19146 - Fix a problem in Tkinter introduced by SF patch #869468: delete bogus 19147 __hasattr__ and __delattr__ methods on class Tk that were breaking 19148 Tkdnd. 19149 19150 - Bug #1015140: disambiguated the term "article id" in nntplib docs and 19151 docstrings to either "article number" or "message id". 19152 19153 - Bug #1238170: threading.Thread.__init__ no longer has "kwargs={}" as a 19154 parameter, but uses the usual "kwargs=None". 19155 19156 - textwrap now processes text chunks at O(n) speed instead of O(n**2). 19157 Patch #1209527 (Contributed by Connelly). 19158 19159 - urllib2 has now an attribute 'httpresponses' mapping from HTTP status code 19160 to W3C name (404 -> 'Not Found'). RFE #1216944. 19161 19162 - Bug #1177468: Don't cache the /dev/urandom file descriptor for os.urandom, 19163 as this can cause problems with apps closing all file descriptors. 19164 19165 - Bug #839151: Fix an attempt to access sys.argv in the warnings module; 19166 it can be missing in embedded interpreters 19167 19168 - Bug #1155638: Fix a bug which affected HTTP 0.9 responses in httplib. 19169 19170 - Bug #1100201: Cross-site scripting was possible on BaseHTTPServer via 19171 error messages. 19172 19173 - Bug #1108948: Cookie.py produced invalid JavaScript code. 19174 19175 - The tokenize module now detects and reports indentation errors. 19176 Bug #1224621. 19177 19178 - The tokenize module has a new untokenize() function to support a full 19179 roundtrip from lexed tokens back to Python source code. In addition, 19180 the generate_tokens() function now accepts a callable argument that 19181 terminates by raising StopIteration. 19182 19183 - Bug #1196315: fix weakref.WeakValueDictionary constructor. 19184 19185 - Bug #1213894: os.path.realpath didn't resolve symlinks that were the first 19186 component of the path. 19187 19188 - Patch #1120353: The xmlrpclib module provides better, more transparent, 19189 support for datetime.{datetime,date,time} objects. With use_datetime set 19190 to True, applications shouldn't have to fiddle with the DateTime wrapper 19191 class at all. 19192 19193 - distutils.commands.upload was added to support uploading distribution 19194 files to PyPI. 19195 19196 - distutils.commands.register now encodes the data as UTF-8 before posting 19197 them to PyPI. 19198 19199 - decimal operator and comparison methods now return NotImplemented 19200 instead of raising a TypeError when interacting with other types. This 19201 allows other classes to implement __radd__ style methods and have them 19202 work as expected. 19203 19204 - Bug #1163325: Decimal infinities failed to hash. Attempting to 19205 hash a NaN raised an InvalidOperation instead of a TypeError. 19206 19207 - Patch #918101: Add tarfile open mode r|* for auto-detection of the 19208 stream compression; add, for symmetry reasons, r:* as a synonym of r. 19209 19210 - Patch #1043890: Add extractall method to tarfile. 19211 19212 - Patch #1075887: Don't require MSVC in distutils if there is nothing 19213 to build. 19214 19215 - Patch #1103407: Properly deal with tarfile iterators when untarring 19216 symbolic links on Windows. 19217 19218 - Patch #645894: Use getrusage for computing the time consumption in 19219 profile.py if available. 19220 19221 - Patch #1046831: Use get_python_version where appropriate in sysconfig.py. 19222 19223 - Patch #1117454: Remove code to special-case cookies without values 19224 in LWPCookieJar. 19225 19226 - Patch #1117339: Add cookielib special name tests. 19227 19228 - Patch #1112812: Make bsddb/__init__.py more friendly for modulefinder. 19229 19230 - Patch #1110248: SYNC_FLUSH the zlib buffer for GZipFile.flush. 19231 19232 - Patch #1107973: Allow iterating over the lines of a tarfile.ExFileObject. 19233 19234 - Patch #1104111: Alter setup.py --help and --help-commands. 19235 19236 - Patch #1121234: Properly cleanup _exit and tkerror commands. 19237 19238 - Patch #1049151: xdrlib now unpacks booleans as True or False. 19239 19240 - Fixed bug in a NameError bug in cookielib. Patch #1116583. 19241 19242 - Applied a security fix to SimpleXMLRPCserver (PSF-2005-001). This 19243 disables recursive traversal through instance attributes, which can 19244 be exploited in various ways. 19245 19246 - Bug #1222790: in SimpleXMLRPCServer, set the reuse-address and close-on-exec 19247 flags on the HTTP listening socket. 19248 19249 - Bug #792570: SimpleXMLRPCServer had problems if the request grew too large. 19250 Fixed by reading the HTTP body in chunks instead of one big socket.read(). 19251 19252 - Patches #893642, #1039083: add allow_none, encoding arguments to 19253 constructors of SimpleXMLRPCServer and CGIXMLRPCRequestHandler. 19254 19255 - Bug #1110478: Revert os.environ.update to do putenv again. 19256 19257 - Bug #1103844: fix distutils.install.dump_dirs() with negated options. 19258 19259 - os.{SEEK_SET, SEEK_CUR, SEEK_END} have been added for convenience. 19260 19261 - Enhancements to the csv module: 19262 19263 + Dialects are now validated by the underlying C code, better 19264 reflecting its capabilities, and improving its compliance with 19265 PEP 305. 19266 + Dialect parameter parsing has been re-implemented to improve error 19267 reporting. 19268 + quotechar=None and quoting=QUOTE_NONE now work the way PEP 305 19269 dictates. 19270 + the parser now removes the escapechar prefix from escaped characters. 19271 + when quoting=QUOTE_NONNUMERIC, the writer now tests for numeric 19272 types, rather than any object that can be represented as a numeric. 19273 + when quoting=QUOTE_NONNUMERIC, the reader now casts unquoted fields 19274 to floats. 19275 + reader now allows \r characters to be quoted (previously it only allowed 19276 \n to be quoted). 19277 + writer doublequote handling improved. 19278 + Dialect classes passed to the module are no longer instantiated by 19279 the module before being parsed (the former validation scheme required 19280 this, but the mechanism was unreliable). 19281 + The dialect registry now contains instances of the internal 19282 C-coded dialect type, rather than references to python objects. 19283 + the internal c-coded dialect type is now immutable. 19284 + register_dialect now accepts the same keyword dialect specifications 19285 as the reader and writer, allowing the user to register dialects 19286 without first creating a dialect class. 19287 + a configurable limit to the size of parsed fields has been added - 19288 previously, an unmatched quote character could result in the entire 19289 file being read into the field buffer before an error was reported. 19290 + A new module method csv.field_size_limit() has been added that sets 19291 the parser field size limit (returning the former limit). The initial 19292 limit is 128kB. 19293 + A line_num attribute has been added to the reader object, which tracks 19294 the number of lines read from the source iterator. This is not 19295 the same as the number of records returned, as records can span 19296 multiple lines. 19297 + reader and writer objects were not being registered with the cyclic-GC. 19298 This has been fixed. 19299 19300 - _DummyThread objects in the threading module now delete self.__block that is 19301 inherited from _Thread since it uses up a lock allocated by 'thread'. The 19302 lock primitives tend to be limited in number and thus should not be wasted on 19303 a _DummyThread object. Fixes bug #1089632. 19304 19305 - The imghdr module now detects Exif files. 19306 19307 - StringIO.truncate() now correctly adjusts the size attribute. 19308 (Bug #951915). 19309 19310 - locale.py now uses an updated locale alias table (built using 19311 Tools/i18n/makelocalealias.py, a tool to parse the X11 locale 19312 alias file); the encoding lookup was enhanced to use Python's 19313 encoding alias table. 19314 19315 - moved deprecated modules to Lib/lib-old: whrandom, tzparse, statcache. 19316 19317 - the pickle module no longer accepts the deprecated None option in the 19318 args tuple returned by __reduce__(). 19319 19320 - optparse now optionally imports gettext. This allows its use in setup.py. 19321 19322 - the pickle module no longer uses the deprecated bin parameter. 19323 19324 - the shelve module no longer uses the deprecated binary parameter. 19325 19326 - the pstats module no longer uses the deprecated ignore() method. 19327 19328 - the filecmp module no longer uses the deprecated use_statcache argument. 19329 19330 - unittest.TestCase.run() and unittest.TestSuite.run() can now be successfully 19331 extended or overridden by subclasses. Formerly, the subclassed method would 19332 be ignored by the rest of the module. (Bug #1078905). 19333 19334 - heapq.nsmallest() and heapq.nlargest() now support key= arguments with 19335 the same meaning as in list.sort(). 19336 19337 - Bug #1076985: ``codecs.StreamReader.readline()`` now calls ``read()`` only 19338 once when a size argument is given. This prevents a buffer overflow in the 19339 tokenizer with very long source lines. 19340 19341 - Bug #1083110: ``zlib.decompress.flush()`` would segfault if called 19342 immediately after creating the object, without any intervening 19343 ``.decompress()`` calls. 19344 19345 - The reconvert.quote function can now emit triple-quoted strings. The 19346 reconvert module now has some simple documentation. 19347 19348 - ``UserString.MutableString`` now supports negative indices in 19349 ``__setitem__`` and ``__delitem__`` 19350 19351 - Bug #1149508: ``textwrap`` now handles hyphenated numbers (eg. "2004-03-05") 19352 correctly. 19353 19354 - Partial fixes for SF bugs #1163244 and #1175396: If a chunk read by 19355 ``codecs.StreamReader.readline()`` has a trailing "\r", read one more 19356 character even if the user has passed a size parameter to get a proper 19357 line ending. Remove the special handling of a "\r\n" that has been split 19358 between two lines. 19359 19360 - Bug #1251300: On UCS-4 builds the "unicode-internal" codec will now complain 19361 about illegal code points. The codec now supports PEP 293 style error 19362 handlers. 19363 19364 - Bug #1235646: ``codecs.StreamRecoder.next()`` now reencodes the data it reads 19365 from the input stream, so that the output is a byte string in the correct 19366 encoding instead of a unicode string. 19367 19368 - Bug #1202493: Fixing SRE parser to handle '{}' as perl does, rather than 19369 considering it exactly like a '*'. 19370 19371 - Bug #1245379: Add "unicode-1-1-utf-7" as an alias for "utf-7" to 19372 ``encodings.aliases``. 19373 19374 - ` uu.encode()`` and ``uu.decode()`` now support unicode filenames. 19375 19376 - Patch #1413711: Certain patterns of differences were making difflib 19377 touch the recursion limit. 19378 19379 - Bug #947906: An object oriented interface has been added to the calendar 19380 module. It's possible to generate HTML calendar now and the module can be 19381 called as a script (e.g. via ``python -mcalendar``). Localized month and 19382 weekday names can be output (even if an exotic encoding is used) using 19383 special classes that use unicode. 19384 19385 Build 19386 ----- 19387 19388 - Fix test_float, test_long, and test_struct failures on Tru64 with gcc 19389 by using -mieee gcc option. 19390 19391 - Patch #1432345: Make python compile on DragonFly. 19392 19393 - Build support for Win64-AMD64 was added. 19394 19395 - Patch #1428494: Prefer linking against ncursesw over ncurses library. 19396 19397 - Patch #881820: look for openpty and forkpty also in libbsd. 19398 19399 - The sources of zlib are now part of the Python distribution (zlib 1.2.3). 19400 The zlib module is now built in on Windows. 19401 19402 - Use -xcode=pic32 for CCSHARED on Solaris with SunPro. 19403 19404 - Bug #1189330: configure did not correctly determine the necessary 19405 value of LINKCC if python was built with GCC 4.0. 19406 19407 - Upgrade Windows build to zlib 1.2.3 which eliminates a potential security 19408 vulnerability in zlib 1.2.1 and 1.2.2. 19409 19410 - EXTRA_CFLAGS has been introduced as an environment variable to hold compiler 19411 flags that change binary compatibility. Changes were also made to 19412 distutils.sysconfig to also use the environment variable when used during 19413 compilation of the interpreter and of C extensions through distutils. 19414 19415 - SF patch 1171735: Darwin 8's headers are anal about POSIX compliance, 19416 and linking has changed (prebinding is now deprecated, and libcc_dynamic 19417 no longer exists). This configure patch makes things right. 19418 19419 - Bug #1158607: Build with --disable-unicode again. 19420 19421 - spwdmodule.c is built only if either HAVE_GETSPNAM or HAVE_HAVE_GETSPENT is 19422 defined. Discovered as a result of not being able to build on OS X. 19423 19424 - setup.py now uses the directories specified in LDFLAGS using the -L option 19425 and in CPPFLAGS using the -I option for adding library and include 19426 directories, respectively, for compiling extension modules against. This has 19427 led to the core being compiled using the values in CPPFLAGS. It also removes 19428 the need for the special-casing of both DarwinPorts and Fink for darwin since 19429 the proper directories can be specified in LDFLAGS (``-L/sw/lib`` for Fink, 19430 ``-L/opt/local/lib`` for DarwinPorts) and CPPFLAGS (``-I/sw/include`` for 19431 Fink, ``-I/opt/local/include`` for DarwinPorts). 19432 19433 - Test in configure.in that checks for tzset no longer dependent on tm->tm_zone 19434 to exist in the struct (not required by either ISO C nor the UNIX 2 spec). 19435 Tests for sanity in tzname when HAVE_TZNAME defined were also defined. 19436 Closes bug #1096244. Thanks Gregory Bond. 19437 19438 C API 19439 ----- 19440 19441 - ``PyMem_{Del, DEL}`` and ``PyMem_{Free, FREE}`` no longer map to 19442 ``PyObject_{Free, FREE}``. They map to the system ``free()`` now. If memory 19443 is obtained via the ``PyObject_`` family, it must be released via the 19444 ``PyObject_`` family, and likewise for the ``PyMem_`` family. This has 19445 always been officially true, but when Python's small-object allocator was 19446 introduced, an attempt was made to cater to a few extension modules 19447 discovered at the time that obtained memory via ``PyObject_New`` but 19448 released it via ``PyMem_DEL``. It's years later, and if such code still 19449 exists it will fail now (probably with segfaults, but calling wrong 19450 low-level memory management functions can yield many symptoms). 19451 19452 - Added a C API for set and frozenset objects. 19453 19454 - Removed PyRange_New(). 19455 19456 - Patch #1313939: PyUnicode_DecodeCharmap() accepts a unicode string as the 19457 mapping argument now. This string is used as a mapping table. Byte values 19458 greater than the length of the string and 0xFFFE are treated as undefined 19459 mappings. 19460 19461 19462 Tests 19463 ----- 19464 19465 - In test_os, st_?time is now truncated before comparing it with ST_?TIME. 19466 19467 - Patch #1276356: New resource "urlfetch" is implemented. This enables 19468 even impatient people to run tests that require remote files. 19469 19470 19471 Documentation 19472 ------------- 19473 19474 - Bug #1402224: Add warning to dl docs about crashes. 19475 19476 - Bug #1396471: Document that Windows' ftell() can return invalid 19477 values for text files with UNIX-style line endings. 19478 19479 - Bug #1274828: Document os.path.splitunc(). 19480 19481 - Bug #1190204: Clarify which directories are searched by site.py. 19482 19483 - Bug #1193849: Clarify os.path.expanduser() documentation. 19484 19485 - Bug #1243192: re.UNICODE and re.LOCALE affect \d, \D, \s and \S. 19486 19487 - Bug #755617: Document the effects of os.chown() on Windows. 19488 19489 - Patch #1180012: The documentation for modulefinder is now in the library reference. 19490 19491 - Patch #1213031: Document that os.chown() accepts argument values of -1. 19492 19493 - Bug #1190563: Document os.waitpid() return value with WNOHANG flag. 19494 19495 - Bug #1175022: Correct the example code for property(). 19496 19497 - Document the IterableUserDict class in the UserDict module. 19498 Closes bug #1166582. 19499 19500 - Remove all latent references for "Macintosh" that referred to semantics for 19501 Mac OS 9 and change to reflect the state for OS X. 19502 Closes patch #1095802. Thanks Jack Jansen. 19503 19504 Mac 19505 --- 19506 19507 19508 New platforms 19509 ------------- 19510 19511 - FreeBSD 7 support is added. 19512 19513 19514 Tools/Demos 19515 ----------- 19516 19517 - Created Misc/Vim/vim_syntax.py to auto-generate a python.vim file in that 19518 directory for syntax highlighting in Vim. Vim directory was added and placed 19519 vimrc to it (was previous up a level). 19520 19521 - Added two new files to Tools/scripts: pysource.py, which recursively 19522 finds Python source files, and findnocoding.py, which finds Python 19523 source files that need an encoding declaration. 19524 Patch #784089, credits to Oleg Broytmann. 19525 19526 - Bug #1072853: pindent.py used an uninitialized variable. 19527 19528 - Patch #1177597: Correct Complex.__init__. 19529 19530 - Fixed a display glitch in Pynche, which could cause the right arrow to 19531 wiggle over by a pixel. 19532 19533 19534 What's New in Python 2.4 final? 19535 =============================== 19536 19537 *Release date: 30-NOV-2004* 19538 19539 Core and builtins 19540 ----------------- 19541 19542 - Bug 875692: Improve signal handling, especially when using threads, by 19543 forcing an early re-execution of PyEval_EvalFrame() "periodic" code when 19544 things_to_do is not cleared by Py_MakePendingCalls(). 19545 19546 19547 What's New in Python 2.4 (release candidate 1) 19548 ============================================== 19549 19550 *Release date: 18-NOV-2004* 19551 19552 Core and builtins 19553 ----------------- 19554 19555 - Bug 1061968: Fixes in 2.4a3 to address thread bug 1010677 reintroduced 19556 the years-old thread shutdown race bug 225673. Numeric history lesson 19557 aside, all bugs in all three reports are fixed now. 19558 19559 19560 Library 19561 ------- 19562 19563 - Bug 1052242: If exceptions are raised by an atexit handler function an 19564 attempt is made to execute the remaining handlers. The last exception 19565 raised is re-raised. 19566 19567 - ``doctest``'s new support for adding ``pdb.set_trace()`` calls to 19568 doctests was broken in a dramatic but shallow way. Fixed. 19569 19570 - Bug 1065388: ``calendar``'s ``day_name``, ``day_abbr``, ``month_name``, 19571 and ``month_abbr`` attributes emulate sequences of locale-correct 19572 spellings of month and day names. Because the locale can change at 19573 any time, the correct spelling is recomputed whenever one of these is 19574 indexed. In the worst case, the index may be a slice object, so these 19575 recomputed every day or month name each time they were indexed. This is 19576 much slower than necessary in the usual case, when the index is just an 19577 integer. In that case, only the single spelling needed is recomputed 19578 now; and, when the index is a slice object, only the spellings needed 19579 by the slice are recomputed now. 19580 19581 - Patch 1061679: Added ``__all__`` to pickletools.py. 19582 19583 Build 19584 ----- 19585 19586 - Bug 1034277 / Patch 1035255: Remove compilation of core against CoreServices 19587 and CoreFoundation on OS X. Involved removing PyMac_GetAppletScriptFile() 19588 which has no known users. Thanks Bob Ippolito. 19589 19590 C API 19591 ----- 19592 19593 - The PyRange_New() function is deprecated. 19594 19595 19596 What's New in Python 2.4 beta 2? 19597 ================================ 19598 19599 *Release date: 03-NOV-2004* 19600 19601 License 19602 ------- 19603 19604 The Python Software Foundation changed the license under which Python 19605 is released, to remove Python version numbers. There were no other 19606 changes to the license. So, for example, wherever the license for 19607 Python 2.3 said "Python 2.3", the new license says "Python". The 19608 intent is to make it possible to refer to the PSF license in a more 19609 durable way. For example, some people say they're confused by that 19610 the Open Source Initiative's entry for the Python Software Foundation 19611 License:: 19612 19613 http://www.opensource.org/licenses/PythonSoftFoundation.php 19614 19615 says "Python 2.1.1" all over it, wondering whether it applies only 19616 to Python 2.1.1. 19617 19618 The official name of the new license is the Python Software Foundation 19619 License Version 2. 19620 19621 Core and builtins 19622 ----------------- 19623 19624 - Bug #1055820 Cyclic garbage collection was not protecting against that 19625 calling a live weakref to a piece of cyclic trash could resurrect an 19626 insane mutation of the trash if any Python code ran during gc (via 19627 running a dead object's __del__ method, running another callback on a 19628 weakref to a dead object, or via any Python code run in any other thread 19629 that managed to obtain the GIL while a __del__ or callback was running 19630 in the thread doing gc). The most likely symptom was "impossible" 19631 ``AttributeError`` exceptions, appearing seemingly at random, on weakly 19632 referenced objects. The cure was to clear all weakrefs to unreachable 19633 objects before allowing any callbacks to run. 19634 19635 - Bug #1054139 _PyString_Resize() now invalidates its cached hash value. 19636 19637 Extension Modules 19638 ----------------- 19639 19640 - Bug #1048870: the compiler now generates distinct code objects for 19641 functions with identical bodies. This was producing confusing 19642 traceback messages which pointed to the function where the code 19643 object was first defined rather than the function being executed. 19644 19645 Library 19646 ------- 19647 19648 - Patch #1056967 changes the semantics of Template.safe_substitute() so that 19649 no ValueError is raised on an 'invalid' match group. Now the delimiter is 19650 returned. 19651 19652 - Bug #1052503 pdb.runcall() was not passing along keyword arguments. 19653 19654 - Bug #902037: XML.sax.saxutils.prepare_input_source() now combines relative 19655 paths with a base path before checking os.path.isfile(). 19656 19657 - The whichdb module can now be run from the command line. 19658 19659 - Bug #1045381: time.strptime() can now infer the date using %U or %W (week of 19660 the year) when the day of the week and year are also specified. 19661 19662 - Bug #1048816: fix bug in Ctrl-K at start of line in curses.textpad.Textbox 19663 19664 - Bug #1017553: fix bug in tarfile.filemode() 19665 19666 - Patch #737473: fix bug that old source code is shown in tracebacks even if 19667 the source code is updated and reloaded. 19668 19669 Build 19670 ----- 19671 19672 - Patch #1044395: --enable-shared is allowed in FreeBSD also. 19673 19674 What's New in Python 2.4 beta 1? 19675 ================================ 19676 19677 *Release date: 15-OCT-2004* 19678 19679 Core and builtins 19680 ----------------- 19681 19682 - Patch #975056: Restartable signals were not correctly disabled on 19683 BSD systems. Consistently use PyOS_setsig() instead of signal(). 19684 19685 - The internal portable implementation of thread-local storage (TLS), used 19686 by the ``PyGILState_Ensure()``/``PyGILState_Release()`` API, was not 19687 thread-correct. This could lead to a variety of problems, up to and 19688 including segfaults. See bug 1041645 for an example. 19689 19690 - Added a command line option, -m module, which searches sys.path for the 19691 module and then runs it. (Contributed by Nick Coghlan.) 19692 19693 - The bytecode optimizer now folds tuples of constants into a single 19694 constant. 19695 19696 - SF bug #513866: Float/long comparison anomaly. Prior to 2.4b1, when 19697 an integer was compared to a float, the integer was coerced to a float. 19698 That could yield spurious overflow errors (if the integer was very 19699 large), and to anomalies such as 19700 ``long(1e200)+1 == 1e200 == long(1e200)-1``. Coercion to float is no 19701 longer performed, and cases like ``long(1e200)-1 < 1e200``, 19702 ``long(1e200)+1 > 1e200`` and ``(1 << 20000) > 1e200`` are computed 19703 correctly now. 19704 19705 Extension modules 19706 ----------------- 19707 19708 - ``collections.deque`` objects didn't play quite right with garbage 19709 collection, which could lead to a segfault in a release build, or 19710 an assert failure in a debug build. Also, added overflow checks, 19711 better detection of mutation during iteration, and shielded deque 19712 comparisons from unusual subclass overrides of the __iter__() method. 19713 19714 Library 19715 ------- 19716 19717 - Patch 1046644: distutils build_ext grew two new options - --swig for 19718 specifying the swig executable to use, and --swig-opts to specify 19719 options to pass to swig. --swig-opts="-c++" is the new way to spell 19720 --swig-cpp. 19721 19722 - Patch 983206: distutils now obeys environment variable LDSHARED, if 19723 it is set. 19724 19725 - Added Peter Astrand's subprocess.py module. See PEP 324 for details. 19726 19727 - time.strptime() now properly escapes timezones and all other locale-specific 19728 strings for regex-specific symbols. Was breaking under Japanese Windows when 19729 the timezone was specified as "Tokyo (standard time)". 19730 Closes bug #1039270. 19731 19732 - Updates for the email package: 19733 19734 + email.Utils.formatdate() grew a 'usegmt' argument for HTTP support. 19735 + All deprecated APIs that in email 2.x issued warnings have been removed: 19736 _encoder argument to the MIMEText constructor, Message.add_payload(), 19737 Utils.dump_address_pair(), Utils.decode(), Utils.encode() 19738 + New deprecations: Generator.__call__(), Message.get_type(), 19739 Message.get_main_type(), Message.get_subtype(), the 'strict' argument to 19740 the Parser constructor. These will be removed in email 3.1. 19741 + Support for Python earlier than 2.3 has been removed (see PEP 291). 19742 + All defect classes have been renamed to end in 'Defect'. 19743 + Some FeedParser fixes; also a MultipartInvariantViolationDefect will be 19744 added to messages that claim to be multipart but really aren't. 19745 + Updates to documentation. 19746 19747 - re's findall() and finditer() functions now take an optional flags argument 19748 just like the compile(), search(), and match() functions. Also, documented 19749 the previously existing start and stop parameters for the findall() and 19750 finditer() methods of regular expression objects. 19751 19752 - rfc822 Messages now support iterating over the headers. 19753 19754 - The (undocumented) tarfile.Tarfile.membernames has been removed; 19755 applications should use the getmember function. 19756 19757 - httplib now offers symbolic constants for the HTTP status codes. 19758 19759 - SF bug #1028306: Trying to compare a ``datetime.date`` to a 19760 ``datetime.datetime`` mistakenly compared only the year, month and day. 19761 Now it acts like a mixed-type comparison: ``False`` for ``==``, 19762 ``True`` for ``!=``, and raises ``TypeError`` for other comparison 19763 operators. Because datetime is a subclass of date, comparing only the 19764 base class (date) members can still be done, if that's desired, by 19765 forcing using of the appropriate date method; e.g., 19766 ``a_date.__eq__(a_datetime)`` is true if and only if the year, month 19767 and day members of ``a_date`` and ``a_datetime`` are equal. 19768 19769 - bdist_rpm now supports command line options --force-arch, 19770 {pre,post}-install, {pre,post}-uninstall, and 19771 {prep,build,install,clean,verify}-script. 19772 19773 - SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support 19774 decoding incomplete input (when the input stream is temporarily exhausted). 19775 ``codecs.StreamReader`` now implements buffering, which enables proper 19776 readline support for the UTF-16 decoders. ``codecs.StreamReader.read()`` 19777 has a new argument ``chars`` which specifies the number of characters to 19778 return. ``codecs.StreamReader.readline()`` and 19779 ``codecs.StreamReader.readlines()`` have a new argument ``keepends``. 19780 Trailing "\n"s will be stripped from the lines if ``keepends`` is false. 19781 19782 - The documentation for doctest is greatly expanded, and now covers all 19783 the new public features (of which there are many). 19784 19785 - ``doctest.master`` was put back in, and ``doctest.testmod()`` once again 19786 updates it. This isn't good, because every ``testmod()`` call 19787 contributes to bloating the "hidden" state of ``doctest.master``, but 19788 some old code apparently relies on it. For now, all we can do is 19789 encourage people to stitch doctests together via doctest's unittest 19790 integration features instead. 19791 19792 - httplib now handles ipv6 address/port pairs. 19793 19794 - SF bug #1017864: ConfigParser now correctly handles default keys, 19795 processing them with ``ConfigParser.optionxform`` when supplied, 19796 consistent with the handling of config file entries and runtime-set 19797 options. 19798 19799 - SF bug #997050: Document, test, & check for non-string values in 19800 ConfigParser. Moved the new string-only restriction added in 19801 rev. 1.65 to the SafeConfigParser class, leaving existing 19802 ConfigParser & RawConfigParser behavior alone, and documented the 19803 conditions under which non-string values work. 19804 19805 Build 19806 ----- 19807 19808 - Building on darwin now includes /opt/local/include and /opt/local/lib for 19809 building extension modules. This is so as to include software installed as 19810 a DarwinPorts port <http://darwinports.opendarwin.org/> 19811 19812 - pyport.h now defines a Py_IS_NAN macro. It works as-is when the 19813 platform C computes true for ``x != x`` if and only if X is a NaN. 19814 Other platforms can override the default definition with a platform- 19815 specific spelling in that platform's pyconfig.h. You can also override 19816 pyport.h's default Py_IS_INFINITY definition now. 19817 19818 C API 19819 ----- 19820 19821 - SF patch 1044089: New function ``PyEval_ThreadsInitialized()`` returns 19822 non-zero if PyEval_InitThreads() has been called. 19823 19824 - The undocumented and unused extern int ``_PyThread_Started`` was removed. 19825 19826 - The C API calls ``PyInterpreterState_New()`` and ``PyThreadState_New()`` 19827 are two of the very few advertised as being safe to call without holding 19828 the GIL. However, this wasn't true in a debug build, as bug 1041645 19829 demonstrated. In a debug build, Python redirects the ``PyMem`` family 19830 of calls to Python's small-object allocator, to get the benefit of 19831 its extra debugging capabilities. But Python's small-object allocator 19832 isn't threadsafe, relying on the GIL to avoid the expense of doing its 19833 own locking. ``PyInterpreterState_New()`` and ``PyThreadState_New()`` 19834 call the platform ``malloc()`` directly now, regardless of build type. 19835 19836 - PyLong_AsUnsignedLong[Mask] now support int objects as well. 19837 19838 - SF patch #998993: ``PyUnicode_DecodeUTF8Stateful`` and 19839 ``PyUnicode_DecodeUTF16Stateful`` have been added, which implement stateful 19840 decoding. 19841 19842 Tests 19843 ----- 19844 19845 - test__locale ported to unittest 19846 19847 Mac 19848 --- 19849 19850 - ``plistlib`` now supports non-dict root objects. There is also a new 19851 interface for reading and writing plist files: ``readPlist(pathOrFile)`` 19852 and ``writePlist(rootObject, pathOrFile)`` 19853 19854 Tools/Demos 19855 ----------- 19856 19857 - The text file comparison scripts ``ndiff.py`` and ``diff.py`` now 19858 read the input files in universal-newline mode. This spares them 19859 from consuming a great deal of time to deduce the useless result that, 19860 e.g., a file with Windows line ends and a file with Linux line ends 19861 have no lines in common. 19862 19863 19864 What's New in Python 2.4 alpha 3? 19865 ================================= 19866 19867 *Release date: 02-SEP-2004* 19868 19869 Core and builtins 19870 ----------------- 19871 19872 - SF patch #1007189: ``from ... import ...`` statements now allow the name 19873 list to be surrounded by parentheses. 19874 19875 - Some speedups for long arithmetic, thanks to Trevor Perrin. Gradeschool 19876 multiplication was sped a little by optimizing the C code. Gradeschool 19877 squaring was sped by about a factor of 2, by exploiting that about half 19878 the digit products are duplicates in a square. Because exponentiation 19879 uses squaring often, this also speeds long power. For example, the time 19880 to compute 17**1000000 dropped from about 14 seconds to 9 on my box due 19881 to this much. The cutoff for Karatsuba multiplication was raised, 19882 since gradeschool multiplication got quicker, and the cutoff was 19883 aggressively small regardless. The exponentiation algorithm was switched 19884 from right-to-left to left-to-right, which is more efficient for small 19885 bases. In addition, if the exponent is large, the algorithm now does 19886 5 bits (instead of 1 bit) at a time. That cut the time to compute 19887 17**1000000 on my box in half again, down to about 4.5 seconds. 19888 19889 - OverflowWarning is no longer generated. PEP 237 scheduled this to 19890 occur in Python 2.3, but since OverflowWarning was disabled by default, 19891 nobody realized it was still being generated. On the chance that user 19892 code is still using them, the Python builtin OverflowWarning, and 19893 corresponding C API PyExc_OverflowWarning, will exist until Python 2.5. 19894 19895 - Py_InitializeEx has been added. 19896 19897 - Fix the order of application of decorators. The proper order is bottom-up; 19898 the first decorator listed is the last one called. 19899 19900 - SF patch #1005778. Fix a seg fault if the list size changed while 19901 calling list.index(). This could happen if a rich comparison function 19902 modified the list. 19903 19904 - The ``func_name`` (a.k.a. ``__name__``) attribute of user-defined 19905 functions is now writable. 19906 19907 - code_new (a.k.a new.code()) now checks its arguments sufficiently 19908 carefully that passing them on to PyCode_New() won't trigger calls 19909 to Py_FatalError() or PyErr_BadInternalCall(). It is still the case 19910 that the returned code object might be entirely insane. 19911 19912 - Subclasses of string can no longer be interned. The semantics of 19913 interning were not clear here -- a subclass could be mutable, for 19914 example -- and had bugs. Explicitly interning a subclass of string 19915 via intern() will raise a TypeError. Internal operations that attempt 19916 to intern a string subclass will have no effect. 19917 19918 - Bug 1003935: xrange() could report bogus OverflowErrors. Documented 19919 what xrange() intends, and repaired tests accordingly. 19920 19921 Extension modules 19922 ----------------- 19923 19924 - difflib now supports HTML side-by-side diff. 19925 19926 - os.urandom has been added for systems that support sources of random 19927 data. 19928 19929 - Patch 1012740: truncate() on a writable cStringIO now resets the 19930 position to the end of the stream. This is consistent with the original 19931 StringIO module and avoids inadvertently resurrecting data that was 19932 supposed to have been truncated away. 19933 19934 - Added socket.socketpair(). 19935 19936 - Added CurrentByteIndex, CurrentColumnNumber, CurrentLineNumber 19937 members to xml.parsers.expat.XMLParser object. 19938 19939 - The mpz, rotor, and xreadlines modules, all deprecated in earlier 19940 versions of Python, have now been removed. 19941 19942 Library 19943 ------- 19944 19945 - Patch #934356: if a module defines __all__, believe that rather than using 19946 heuristics for filtering out imported names. 19947 19948 - Patch #941486: added os.path.lexists(), which returns True for broken 19949 symlinks, unlike os.path.exists(). 19950 19951 - the random module now uses os.urandom() for seeding if it is available. 19952 Added a new generator based on os.urandom(). 19953 19954 - difflib and diff.py can now generate HTML. 19955 19956 - bdist_rpm now includes version and release in the BuildRoot, and 19957 replaces - by ``_`` in version and release. 19958 19959 - distutils build/build_scripts now has an -e option to specify the 19960 path to the Python interpreter for installed scripts. 19961 19962 - PEP 292 classes Template and SafeTemplate are added to the string module. 19963 19964 - tarfile now generates GNU tar files by default. 19965 19966 - HTTPResponse has now a getheaders method. 19967 19968 - Patch #1006219: let inspect.getsource handle '@' decorators. Thanks Simon 19969 Percivall. 19970 19971 - logging.handlers.SMTPHandler.date_time has been removed; 19972 the class now uses email.Utils.formatdate to generate the time stamp. 19973 19974 - A new function tkFont.nametofont was added to return an existing 19975 font. The Font class constructor now has an additional exists argument 19976 which, if True, requests to return/configure an existing font, rather 19977 than creating a new one. 19978 19979 - Updated the decimal package's min() and max() methods to match the 19980 latest revision of the General Decimal Arithmetic Specification. 19981 Quiet NaNs are ignored and equal values are sorted based on sign 19982 and exponent. 19983 19984 - The decimal package's Context.copy() method now returns deep copies. 19985 19986 - Deprecated sys.exitfunc in favor of the atexit module. The sys.exitfunc 19987 attribute will be kept around for backwards compatibility and atexit 19988 will just become the one preferred way to do it. 19989 19990 - patch #675551: Add get_history_item and replace_history_item functions 19991 to the readline module. 19992 19993 - bug #989672: pdb.doc and the help messages for the help_d and help_u methods 19994 of the pdb.Pdb class gives have been corrected. d(own) goes to a newer 19995 frame, u(p) to an older frame, not the other way around. 19996 19997 - bug #990669: os.path.realpath() will resolve symlinks before normalizing the 19998 path, as normalizing the path may alter the meaning of the path if it 19999 contains symlinks. 20000 20001 - bug #851123: shutil.copyfile will raise an exception when trying to copy a 20002 file onto a link to itself. Thanks Gregory Ball. 20003 20004 - bug #570300: Fix inspect to resolve file locations using os.path.realpath() 20005 so as to properly list all functions in a module when the module itself is 20006 reached through a symlink. Thanks Johannes Gijsbers. 20007 20008 - doctest refactoring continued. See the docs for details. As part of 20009 this effort, some old and little- (never?) used features are now 20010 deprecated: the Tester class, the module is_private() function, and the 20011 isprivate argument to testmod(). The Tester class supplied a feeble 20012 "by hand" way to combine multiple doctests, if you knew exactly what 20013 you were doing. The newer doctest features for unittest integration 20014 already did a better job of that, are stronger now than ever, and the 20015 new DocTestRunner class is a saner foundation if you want to do it by 20016 hand. The "private name" filtering gimmick was a mistake from the 20017 start, and testmod() changed long ago to ignore it by default. If 20018 you want to filter out tests, the new DocTestFinder class can be used 20019 to return a list of all doctests, and you can filter that list by 20020 any computable criteria before passing it to a DocTestRunner instance. 20021 20022 - Bug #891637, patch #1005466: fix inspect.getargs() crash on def foo((bar)). 20023 20024 Tools/Demos 20025 ----------- 20026 20027 - IDLE's shortcut keys for windows are now case insensitive so that 20028 Control-V works the same as Control-v. 20029 20030 - pygettext.py: Generate POT-Creation-Date header in ISO format. 20031 20032 Build 20033 ----- 20034 20035 - Backward incompatibility: longintrepr.h now triggers a compile-time 20036 error if SHIFT (the number of bits in a Python long "digit") isn't 20037 divisible by 5. This new requirement allows simple code for the new 20038 5-bits-at-a-time long_pow() implementation. If necessary, the 20039 restriction could be removed (by complicating long_pow(), or by 20040 falling back to the 1-bit-at-a-time algorithm), but there are no 20041 plans to do so. 20042 20043 - bug #991962: When building with --disable-toolbox-glue on Darwin no 20044 attempt to build Mac-specific modules occurs. 20045 20046 - The --with-tsc flag to configure to enable VM profiling with the 20047 processor's timestamp counter now works on PPC platforms. 20048 20049 - patch #1006629: Define _XOPEN_SOURCE to 500 on Solaris 8/9 to match 20050 GCC's definition and avoid redefinition warnings. 20051 20052 - Detect pthreads support (provided by gnu pth pthread emulation) on 20053 GNU/k*BSD systems. 20054 20055 - bug #1005737, #1007249: Fixed several build problems and warnings 20056 found on old/legacy C compilers of HP-UX, IRIX and Tru64. 20057 20058 C API 20059 ----- 20060 20061 .. 20062 20063 Documentation 20064 ------------- 20065 20066 - patch #1005936, bug #1009373: fix index entries which contain 20067 an underscore when viewed with Acrobat. 20068 20069 - bug #990669: os.path.normpath may alter the meaning of a path if 20070 it contains symbolic links. This has been documented in a comment 20071 since 1992, but is now in the library reference as well. 20072 20073 New platforms 20074 ------------- 20075 20076 - FreeBSD 6 is now supported. 20077 20078 Tests 20079 ----- 20080 20081 .. 20082 20083 Windows 20084 ------- 20085 20086 - Boosted the stack reservation for python.exe and pythonw.exe from 20087 the default 1MB to 2MB. Stack frames under VC 7.1 for 2.4 are enough 20088 bigger than under VC 6.0 for 2.3.4 that deeply recursive progams 20089 within the default sys.getrecursionlimit() default value of 1000 were 20090 able to suffer undetected C stack overflows. The standard test program 20091 test_compiler was one such program. If a Python process on Windows 20092 "just vanishes" without a trace, and without an error message of any 20093 kind, but with an exit code of 128, undetected stack overflow may be 20094 the problem. 20095 20096 Mac 20097 --- 20098 20099 .. 20100 20101 20102 What's New in Python 2.4 alpha 2? 20103 ================================= 20104 20105 *Release date: 05-AUG-2004* 20106 20107 Core and builtins 20108 ----------------- 20109 20110 - Patch #980695: Implements efficient string concatenation for statements 20111 of the form s=s+t and s+=t. This will vary across implementations. 20112 Accordingly, the str.join() method is strongly preferred for performance 20113 sensitive code. 20114 20115 - PEP-0318, Function Decorators have been added to the language. These are 20116 implemented using the Java-style @decorator syntax, like so:: 20117 20118 @staticmethod 20119 def foo(bar): 20120 20121 (The PEP needs to be updated to reflect the current state) 20122 20123 - When importing a module M raises an exception, Python no longer leaves M 20124 in sys.modules. Before 2.4a2 it did, and a subsequent import of M would 20125 succeed, picking up a module object from sys.modules reflecting as much 20126 of the initialization of M as completed before the exception was raised. 20127 Subsequent imports got no indication that M was in a partially- 20128 initialized state, and the importers could get into arbitrarily bad 20129 trouble as a result (the M they got was in an unintended state, 20130 arbitrarily far removed from M's author's intent). Now subsequent 20131 imports of M will continue raising exceptions (but if, for example, the 20132 source code for M is edited between import attempts, then perhaps later 20133 attempts will succeed, or raise a different exception). 20134 20135 This can break existing code, but in such cases the code was probably 20136 working before by accident. In the Python source, the only case of 20137 breakage discovered was in a test accidentally relying on a damaged 20138 module remaining in sys.modules. Cases are also known where tests 20139 deliberately provoking import errors remove damaged modules from 20140 sys.modules themselves, and such tests will break now if they do an 20141 unconditional del sys.modules[M]. 20142 20143 - u'%s' % obj will now try obj.__unicode__() first and fallback to 20144 obj.__str__() if no __unicode__ method can be found. 20145 20146 - Patch #550732: Add PyArg_VaParseTupleAndKeywords(). Analogous to 20147 PyArg_VaParse(). Both are now documented. Thanks Greg Chapman. 20148 20149 - Allow string and unicode return types from .encode()/.decode() 20150 methods on string and unicode objects. Added unicode.decode() 20151 which was missing for no apparent reason. 20152 20153 - An attempt to fix the mess that is Python's behaviour with 20154 signal handlers and threads, complicated by readline's behaviour. 20155 It's quite possible that there are still bugs here. 20156 20157 - Added C macros Py_CLEAR and Py_VISIT to ease the implementation of 20158 types that support garbage collection. 20159 20160 - Compiler now treats None as a constant. 20161 20162 - The type of values returned by __int__, __float__, __long__, 20163 __oct__, and __hex__ are now checked. Returning an invalid type 20164 will cause a TypeError to be raised. This matches the behavior of 20165 Jython. 20166 20167 - Implemented bind_textdomain_codeset() in locale module. 20168 20169 - Added a workaround for proper string operations in BSDs. str.split 20170 and str.is* methods can now work correctly with UTF-8 locales. 20171 20172 - Bug #989185: unicode.iswide() and unicode.width() is dropped and 20173 the East Asian Width support is moved to unicodedata extension 20174 module. 20175 20176 - Patch #941229: The source code encoding in interactive mode 20177 now refers sys.stdin.encoding not just ISO-8859-1 anymore. This 20178 allows for non-latin-1 users to write unicode strings directly. 20179 20180 Extension modules 20181 ----------------- 20182 20183 - cpickle now supports the same keyword arguments as pickle. 20184 20185 Library 20186 ------- 20187 20188 - Added new codecs and aliases for ISO_8859-11, ISO_8859-16 and 20189 TIS-620 20190 20191 - Thanks to Edward Loper, doctest has been massively refactored, and 20192 many new features were added. Full docs will appear later. For now 20193 the doctest module comments and new test cases give good coverage. 20194 The refactoring provides many hook points for customizing behavior 20195 (such as how to report errors, and how to compare expected to actual 20196 output). New features include a <BLANKLINE> marker for expected 20197 output containing blank lines, options to produce unified or context 20198 diffs when actual output doesn't match expectations, an option to 20199 normalize whitespace before comparing, and an option to use an 20200 ellipsis to signify "don't care" regions of output. 20201 20202 - Tkinter now supports the wish -sync and -use options. 20203 20204 - The following methods in time support passing of None: ctime(), gmtime(), 20205 and localtime(). If None is provided, the current time is used (the 20206 same as when the argument is omitted). 20207 [SF bug 658254, patch 663482] 20208 20209 - nntplib does now allow ignoring a .netrc file. 20210 20211 - urllib2 now recognizes Basic authentication even if other authentication 20212 schemes are offered. 20213 20214 - Bug #1001053. wave.open() now accepts unicode filenames. 20215 20216 - gzip.GzipFile has a new fileno() method, to retrieve the handle of the 20217 underlying file object (provided it has a fileno() method). This is 20218 needed if you want to use os.fsync() on a GzipFile. 20219 20220 - imaplib has two new methods: deleteacl and myrights. 20221 20222 - nntplib has two new methods: description and descriptions. They 20223 use a more RFC-compliant way of getting a newsgroup description. 20224 20225 - Bug #993394. Fix a possible red herring of KeyError in 'threading' being 20226 raised during interpreter shutdown from a registered function with atexit 20227 when dummy_threading is being used. 20228 20229 - Bug #857297/Patch #916874. Fix an error when extracting a hard link 20230 from a tarfile. 20231 20232 - Patch #846659. Fix an error in tarfile.py when using 20233 GNU longname/longlink creation. 20234 20235 - The obsolete FCNTL.py has been deleted. The built-in fcntl module 20236 has been available (on platforms that support fcntl) since Python 20237 1.5a3, and all FCNTL.py did is export fcntl's names, after generating 20238 a deprecation warning telling you to use fcntl directly. 20239 20240 - Several new unicode codecs are added: big5hkscs, euc_jis_2004, 20241 iso2022_jp_2004, shift_jis_2004. 20242 20243 - Bug #788520. Queue.{get, get_nowait, put, put_nowait} have new 20244 implementations, exploiting Conditions (which didn't exist at the time 20245 Queue was introduced). A minor semantic change is that the Full and 20246 Empty exceptions raised by non-blocking calls now occur only if the 20247 queue truly was full or empty at the instant the queue was checked (of 20248 course the Queue may no longer be full or empty by the time a calling 20249 thread sees those exceptions, though). Before, the exceptions could 20250 also be raised if it was "merely inconvenient" for the implementation 20251 to determine the true state of the Queue (because the Queue was locked 20252 by some other method in progress). 20253 20254 - Bugs #979794 and #980117: difflib.get_grouped_opcodes() now handles the 20255 case of comparing two empty lists. This affected both context_diff() and 20256 unified_diff(), 20257 20258 - Bug #980938: smtplib now prints debug output to sys.stderr. 20259 20260 - Bug #930024: posixpath.realpath() now handles infinite loops in symlinks by 20261 returning the last point in the path that was not part of any loop. Thanks 20262 AM Kuchling. 20263 20264 - Bug #980327: ntpath not handles compressing erroneous slashes between the 20265 drive letter and the rest of the path. Also clearly handles UNC addresses now 20266 as well. Thanks Paul Moore. 20267 20268 - bug #679953: zipfile.py should now work for files over 2 GB. The packed data 20269 for file sizes (compressed and uncompressed) was being stored as signed 20270 instead of unsigned. 20271 20272 - decimal.py now only uses signals in the IBM spec. The other conditions are 20273 no longer part of the public API. 20274 20275 - codecs module now has two new generic APIs: encode() and decode() 20276 which don't restrict the return types (unlike the unicode and 20277 string methods of the same name). 20278 20279 - Non-blocking SSL sockets work again; they were broken in Python 2.3. 20280 SF patch 945642. 20281 20282 - doctest unittest integration improvements: 20283 20284 o Improved the unitest test output for doctest-based unit tests 20285 20286 o Can now pass setUp and tearDown functions when creating 20287 DocTestSuites. 20288 20289 - The threading module has a new class, local, for creating objects 20290 that provide thread-local data. 20291 20292 - Bug #990307: when keep_empty_values is True, cgi.parse_qsl() 20293 no longer returns spurious empty fields. 20294 20295 - Implemented bind_textdomain_codeset() in gettext module. 20296 20297 - Introduced in gettext module the l*gettext() family of functions, 20298 which return translation strings encoded in the preferred encoding, 20299 as informed by locale module's getpreferredencoding(). 20300 20301 - optparse module (and tests) upgraded to Optik 1.5a1. Changes: 20302 20303 - Add expansion of default values in help text: the string 20304 "%default" in an option's help string is expanded to str() of 20305 that option's default value, or "none" if no default value. 20306 20307 - Bug #955889: option default values that happen to be strings are 20308 now processed in the same way as values from the command line; this 20309 allows generation of nicer help when using custom types. Can 20310 be disabled with parser.set_process_default_values(False). 20311 20312 - Bug #960515: don't crash when generating help for callback 20313 options that specify 'type', but not 'dest' or 'metavar'. 20314 20315 - Feature #815264: change the default help format for short options 20316 that take an argument from e.g. "-oARG" to "-o ARG"; add 20317 set_short_opt_delimiter() and set_long_opt_delimiter() methods to 20318 HelpFormatter to allow (slight) customization of the formatting. 20319 20320 - Patch #736940: internationalize Optik: all built-in user- 20321 targeted literal strings are passed through gettext.gettext(). (If 20322 you want translations (.po files), they're not included with Python 20323 -- you'll find them in the Optik source distribution from 20324 http://optik.sourceforge.net/ .) 20325 20326 - Bug #878453: respect $COLUMNS environment variable for 20327 wrapping help output. 20328 20329 - Feature #988122: expand "%prog" in the 'description' passed 20330 to OptionParser, just like in the 'usage' and 'version' strings. 20331 (This is *not* done in the 'description' passed to OptionGroup.) 20332 20333 C API 20334 ----- 20335 20336 - PyImport_ExecCodeModule() and PyImport_ExecCodeModuleEx(): if an 20337 error occurs while loading the module, these now delete the module's 20338 entry from sys.modules. All ways of loading modules eventually call 20339 one of these, so this is an error-case change in semantics for all 20340 ways of loading modules. In rare cases, a module loader may wish 20341 to keep a module object in sys.modules despite that the module's 20342 code cannot be executed. In such cases, the module loader must 20343 arrange to reinsert the name and module object in sys.modules. 20344 PyImport_ReloadModule() has been changed to reinsert the original 20345 module object into sys.modules if the module reload fails, so that 20346 its visible semantics have not changed. 20347 20348 - A large pile of datetime field-extraction macros is now documented, 20349 thanks to Anthony Tuininga (patch #986010). 20350 20351 Documentation 20352 ------------- 20353 20354 - Improved the tutorial on creating types in C. 20355 20356 - point out the importance of reassigning data members before 20357 assigning their values 20358 20359 - correct my misconception about return values from visitprocs. Sigh. 20360 20361 - mention the labor saving Py_VISIT and Py_CLEAR macros. 20362 20363 - Major rewrite of the math module docs, to address common confusions. 20364 20365 Tests 20366 ----- 20367 20368 - The test data files for the decimal test suite are now installed on 20369 platforms that use the Makefile. 20370 20371 - SF patch 995225: The test file testtar.tar accidentally contained 20372 CVS keywords (like $Id$), which could cause spurious failures in 20373 test_tarfile.py depending on how the test file was checked out. 20374 20375 20376 What's New in Python 2.4 alpha 1? 20377 ================================= 20378 20379 *Release date: 08-JUL-2004* 20380 20381 Core and builtins 20382 ----------------- 20383 20384 - weakref.ref is now the type object also known as 20385 weakref.ReferenceType; it can be subclassed like any other new-style 20386 class. There's less per-entry overhead in WeakValueDictionary 20387 objects now (one object instead of three). 20388 20389 - Bug #951851: Python crashed when reading import table of certain 20390 Windows DLLs. 20391 20392 - Bug #215126. The locals argument to eval(), execfile(), and exec now 20393 accept any mapping type. 20394 20395 - marshal now shares interned strings. This change introduces 20396 a new .pyc magic. 20397 20398 - Bug #966623. classes created with type() in an exec(, {}) don't 20399 have a __module__, but code in typeobject assumed it would always 20400 be there. 20401 20402 - Python no longer relies on the LC_NUMERIC locale setting to be 20403 the "C" locale; as a result, it no longer tries to prevent changing 20404 the LC_NUMERIC category. 20405 20406 - Bug #952807: Unpickling pickled instances of subclasses of 20407 datetime.date, datetime.datetime and datetime.time could yield insane 20408 objects. Thanks to Jiwon Seo for a fix. 20409 20410 - Bug #845802: Python crashes when __init__.py is a directory. 20411 20412 - Unicode objects received two new methods: iswide() and width(). 20413 These query East Asian width information, as specified in Unicode 20414 TR11. 20415 20416 - Improved the tuple hashing algorithm to give fewer collisions in 20417 common cases. Fixes bug #942952. 20418 20419 - Implemented generator expressions (PEP 289). Coded by Jiwon Seo. 20420 20421 - Enabled the profiling of C extension functions (and builtins) - check 20422 new documentation and modified profile and bdb modules for more details 20423 20424 - Set file.name to the object passed to open (instead of a new string) 20425 20426 - Moved tracebackobject into traceback.h and renamed to PyTracebackObject 20427 20428 - Optimized the byte coding for multiple assignments like "a,b=b,a" and 20429 "a,b,c=1,2,3". Improves their speed by 25% to 30%. 20430 20431 - Limit the nested depth of a tuple for the second argument to isinstance() 20432 and issubclass() to the recursion limit of the interpreter. 20433 Fixes bug #858016 . 20434 20435 - Optimized dict iterators, creating separate types for each 20436 and having them reveal their length. Also optimized the 20437 methods: keys(), values(), and items(). 20438 20439 - Implemented a newcode opcode, LIST_APPEND, that simplifies 20440 the generated bytecode for list comprehensions and further 20441 improves their performance (about 35%). 20442 20443 - Implemented rich comparisons for floats, which seems to make 20444 comparisons involving NaNs somewhat less surprising when the 20445 underlying C compiler actually implements C99 semantics. 20446 20447 - Optimized list.extend() to save memory and no longer create 20448 intermediate sequences. Also, extend() now pre-allocates the 20449 needed memory whenever the length of the iterable is known in 20450 advance -- this halves the time to extend the list. 20451 20452 - Optimized list resize operations to make fewer calls to the system 20453 realloc(). Significantly speeds up list appends, list pops, 20454 list comprehensions, and the list constructor (when the input iterable 20455 length is not known). 20456 20457 - Changed the internal list over-allocation scheme. For larger lists, 20458 overallocation ranged between 3% and 25%. Now, it is a constant 12%. 20459 For smaller lists (n<8), overallocation was upto eight elements. Now, 20460 the overallocation is no more than three elements -- this improves space 20461 utilization for applications that have large numbers of small lists. 20462 20463 - Most list bodies now get re-used rather than freed. Speeds up list 20464 instantiation and deletion by saving calls to malloc() and free(). 20465 20466 - The dict.update() method now accepts all the same argument forms 20467 as the dict() constructor. This now includes item lists and/or 20468 keyword arguments. 20469 20470 - Support for arbitrary objects supporting the read-only buffer 20471 interface as the co_code field of code objects (something that was 20472 only possible to create from C code) has been removed. 20473 20474 - Made omitted callback and None equivalent for weakref.ref() and 20475 weakref.proxy(); the None case wasn't handled correctly in all 20476 cases. 20477 20478 - Fixed problem where PyWeakref_NewRef() and PyWeakref_NewProxy() 20479 assumed that initial existing entries in an object's weakref list 20480 would not be removed while allocating a new weakref object. Since 20481 GC could be invoked at that time, however, that assumption was 20482 invalid. In a truly obscure case of GC being triggered during 20483 creation for a new weakref object for a referent which already 20484 has a weakref without a callback which is only referenced from 20485 cyclic trash, a memory error can occur. This consistently created a 20486 segfault in a debug build, but provided less predictable behavior in 20487 a release build. 20488 20489 - input() built-in function now respects compiler flags such as 20490 __future__ statements. SF patch 876178. 20491 20492 - Removed PendingDeprecationWarning from apply(). apply() remains 20493 deprecated, but the nuisance warning will not be issued. 20494 20495 - At Python shutdown time (Py_Finalize()), 2.3 called cyclic garbage 20496 collection twice, both before and after tearing down modules. The 20497 call after tearing down modules has been disabled, because too much 20498 of Python has been torn down then for __del__ methods and weakref 20499 callbacks to execute sanely. The most common symptom was a sequence 20500 of uninformative messages on stderr when Python shut down, produced 20501 by threads trying to raise exceptions, but unable to report the nature 20502 of their problems because too much of the sys module had already been 20503 destroyed. 20504 20505 - Removed FutureWarnings related to hex/oct literals and conversions 20506 and left shifts. (Thanks to Kalle Svensson for SF patch 849227.) 20507 This addresses most of the remaining semantic changes promised by 20508 PEP 237, except for repr() of a long, which still shows the trailing 20509 'L'. The PEP appears to promise warnings for operations that 20510 changed semantics compared to Python 2.3, but this is not 20511 implemented; we've suffered through enough warnings related to 20512 hex/oct literals and I think it's best to be silent now. 20513 20514 - For str and unicode objects, the ljust(), center(), and rjust() 20515 methods now accept an optional argument specifying a fill 20516 character other than a space. 20517 20518 - When method objects have an attribute that can be satisfied either 20519 by the function object or by the method object, the function 20520 object's attribute usually wins. Christian Tismer pointed out that 20521 this is really a mistake, because this only happens for special 20522 methods (like __reduce__) where the method object's version is 20523 really more appropriate than the function's attribute. So from now 20524 on, all method attributes will have precedence over function 20525 attributes with the same name. 20526 20527 - Critical bugfix, for SF bug 839548: if a weakref with a callback, 20528 its callback, and its weakly referenced object, all became part of 20529 cyclic garbage during a single run of garbage collection, the order 20530 in which they were torn down was unpredictable. It was possible for 20531 the callback to see partially-torn-down objects, leading to immediate 20532 segfaults, or, if the callback resurrected garbage objects, to 20533 resurrect insane objects that caused segfaults (or other surprises) 20534 later. In one sense this wasn't surprising, because Python's cyclic gc 20535 had no knowledge of Python's weakref objects. It does now. When 20536 weakrefs with callbacks become part of cyclic garbage now, those 20537 weakrefs are cleared first. The callbacks don't trigger then, 20538 preventing the problems. If you need callbacks to trigger, then just 20539 as when cyclic gc is not involved, you need to write your code so 20540 that weakref objects outlive the objects they weakly reference. 20541 20542 - Critical bugfix, for SF bug 840829: if cyclic garbage collection 20543 happened to occur during a weakref callback for a new-style class 20544 instance, subtle memory corruption was the result (in a release build; 20545 in a debug build, a segfault occurred reliably very soon after). 20546 This has been repaired. 20547 20548 - Compiler flags set in PYTHONSTARTUP are now active in __main__. 20549 20550 - Added two built-in types, set() and frozenset(). 20551 20552 - Added a reversed() built-in function that returns a reverse iterator 20553 over a sequence. 20554 20555 - Added a sorted() built-in function that returns a new sorted list 20556 from any iterable. 20557 20558 - CObjects are now mutable (on the C level) through PyCObject_SetVoidPtr. 20559 20560 - list.sort() now supports three keyword arguments: cmp, key, and reverse. 20561 The key argument can be a function of one argument that extracts a 20562 comparison key from the original record: mylist.sort(key=str.lower). 20563 The reverse argument is a boolean value and if True will change the 20564 sort order as if the comparison arguments were reversed. In addition, 20565 the documentation has been amended to provide a guarantee that all sorts 20566 starting with Py2.3 are guaranteed to be stable (the relative order of 20567 records with equal keys is unchanged). 20568 20569 - Added test whether wchar_t is signed or not. A signed wchar_t is not 20570 usable as internal unicode type base for Py_UNICODE since the 20571 unicode implementation assumes an unsigned type. 20572 20573 - Fixed a bug in the cache of length-one Unicode strings that could 20574 lead to a seg fault. The specific problem occurred when an earlier, 20575 non-fatal error left an uninitialized Unicode object in the 20576 freelist. 20577 20578 - The % formatting operator now supports '%F' which is equivalent to 20579 '%f'. This has always been documented but never implemented. 20580 20581 - complex(obj) could leak a little memory if obj wasn't a string or 20582 number. 20583 20584 - zip() with no arguments now returns an empty list instead of raising 20585 a TypeError exception. 20586 20587 - obj.__contains__() now returns True/False instead of 1/0. SF patch 20588 820195. 20589 20590 - Python no longer tries to be smart about recursive comparisons. 20591 When comparing containers with cyclic references to themselves it 20592 will now just hit the recursion limit. See SF patch 825639. 20593 20594 - str and unicode built-in types now have an rsplit() method that is 20595 same as split() except that it scans the string from the end 20596 working towards the beginning. See SF feature request 801847. 20597 20598 - Fixed a bug in object.__reduce_ex__ when using protocol 2. Failure 20599 to clear the error when attempts to get the __getstate__ attribute 20600 fail caused intermittent errors and odd behavior. 20601 20602 - buffer objects based on other objects no longer cache a pointer to 20603 the data and the data length. Instead, the appropriate tp_as_buffer 20604 method is called as necessary. 20605 20606 - fixed: if a file is opened with an explicit buffer size >= 1, repeated 20607 close() calls would attempt to free() the buffer already free()ed on 20608 the first call. 20609 20610 20611 Extension modules 20612 ----------------- 20613 20614 - Added socket.getservbyport(), and make the second argument in 20615 getservbyname() and getservbyport() optional. 20616 20617 - time module code that deals with input POSIX timestamps will now raise 20618 ValueError if more than a second is lost in precision when the 20619 timestamp is cast to the platform C time_t type. There's no chance 20620 that the platform will do anything sensible with the result in such 20621 cases. This includes ctime(), localtime() and gmtime(). Assorted 20622 fromtimestamp() and utcfromtimestamp() methods in the datetime module 20623 were also protected. Closes bugs #919012 and 975996. 20624 20625 - fcntl.ioctl now warns if the mutate flag is not specified. 20626 20627 - nt now properly allows referring to UNC roots, e.g. in nt.stat(). 20628 20629 - the weakref module now supports additional objects: array.array, 20630 sre.pattern_objects, file objects, and sockets. 20631 20632 - operator.isMappingType() and operator.isSequenceType() now give 20633 fewer false positives. 20634 20635 - socket.sslerror is now a subclass of socket.error . Also added 20636 socket.error to the socket module's C API. 20637 20638 - Bug #920575: A problem where the _locale module segfaults on 20639 nl_langinfo(ERA) caused by GNU libc's illegal NULL return is fixed. 20640 20641 - array objects now support the copy module. Also, their resizing 20642 scheme has been updated to match that used for list objects. This improves 20643 the performance (speed and memory usage) of append() operations. 20644 Also, array.array() and array.extend() now accept any iterable argument 20645 for repeated appends without needing to create another temporary array. 20646 20647 - cStringIO.writelines() now accepts any iterable argument and writes 20648 the lines one at a time rather than joining them and writing once. 20649 Made a parallel change to StringIO.writelines(). Saves memory and 20650 makes suitable for use with generator expressions. 20651 20652 - time.strftime() now checks that the values in its time tuple argument 20653 are within the proper boundaries to prevent possible crashes from the 20654 platform's C library implementation of strftime(). Can possibly 20655 break code that uses values outside the range that didn't cause 20656 problems previously (such as sitting day of year to 0). Fixes bug 20657 #897625. 20658 20659 - The socket module now supports Bluetooth sockets, if the 20660 system has <bluetooth/bluetooth.h> 20661 20662 - Added a collections module containing a new datatype, deque(), 20663 offering high-performance, thread-safe, memory friendly appends 20664 and pops on either side of the deque. 20665 20666 - Several modules now take advantage of collections.deque() for 20667 improved performance: Queue, mutex, shlex, threading, and pydoc. 20668 20669 - The operator module has two new functions, attrgetter() and 20670 itemgetter() which are useful for creating fast data extractor 20671 functions for map(), list.sort(), itertools.groupby(), and 20672 other functions that expect a function argument. 20673 20674 - socket.SHUT_{RD,WR,RDWR} was added. 20675 20676 - os.getsid was added. 20677 20678 - The pwd module incorrectly advertised its struct type as 20679 struct_pwent; this has been renamed to struct_passwd. (The old name 20680 is still supported for backwards compatibility.) 20681 20682 - The xml.parsers.expat module now provides Expat 1.95.7. 20683 20684 - socket.IPPROTO_IPV6 was added. 20685 20686 - readline.clear_history was added. 20687 20688 - select.select() now accepts sequences for its first three arguments. 20689 20690 - cStringIO now supports the f.closed attribute. 20691 20692 - The signal module now exposes SIGRTMIN and SIGRTMAX (if available). 20693 20694 - curses module now supports use_default_colors(). [patch #739124] 20695 20696 - Bug #811028: ncurses.h breakage on FreeBSD/MacOS X 20697 20698 - Bug #814613: INET_ADDRSTRLEN fix needed for all compilers on SGI 20699 20700 - Implemented non-recursive SRE matching scheme (#757624). 20701 20702 - Implemented (?(id/name)yes|no) support in SRE (#572936). 20703 20704 - random.seed() with no arguments or None uses time.time() as a default 20705 seed. Modified to match Py2.2 behavior and use fractional seconds so 20706 that successive runs are more likely to produce different sequences. 20707 20708 - random.Random has a new method, getrandbits(k), which returns an int 20709 with k random bits. This method is now an optional part of the API 20710 for user defined generators. Any generator that defines genrandbits() 20711 can now use randrange() for ranges with a length >= 2**53. Formerly, 20712 randrange would return only even numbers for ranges that large (see 20713 SF bug #812202). Generators that do not define genrandbits() now 20714 issue a warning when randrange() is called with a range that large. 20715 20716 - itertools has a new function, groupby() for aggregating iterables 20717 into groups sharing the same key (as determined by a key function). 20718 It offers some of functionality of SQL's groupby keyword and of 20719 the Unix uniq filter. 20720 20721 - itertools now has a new tee() function which produces two independent 20722 iterators from a single iterable. 20723 20724 - itertools.izip() with no arguments now returns an empty iterator instead 20725 of raising a TypeError exception. 20726 20727 - Fixed #853061: allow BZ2Compressor.compress() to receive an empty string 20728 as parameter. 20729 20730 Library 20731 ------- 20732 20733 - Added a new module: cProfile, a C profiler with the same interface as the 20734 profile module. cProfile avoids some of the drawbacks of the hotshot 20735 profiler and provides a bit more information than the other two profilers. 20736 Based on "lsprof" (patch #1212837). 20737 20738 - Bug #1266283: The new function "lexists" is now in os.path.__all__. 20739 20740 - Bug #981530: Fix UnboundLocalError in shutil.rmtree(). This affects 20741 the documented behavior: the function passed to the onerror() 20742 handler can now also be os.listdir. 20743 20744 - Bug #754449: threading.Thread objects no longer mask exceptions raised during 20745 interpreter shutdown with another exception from attempting to handle the 20746 original exception. 20747 20748 - Added decimal.py per PEP 327. 20749 20750 - Bug #981299: rsync is now a recognized protocol in urlparse that uses a 20751 "netloc" portion of a URL. 20752 20753 - Bug #919012: shutil.move() will not try to move a directory into itself. 20754 Thanks Johannes Gijsbers. 20755 20756 - Bug #934282: pydoc.stripid() is now case-insensitive. Thanks Robin Becker. 20757 20758 - Bug #823209: cmath.log() now takes an optional base argument so that its 20759 API matches math.log(). 20760 20761 - Bug #957381: distutils bdist_rpm no longer fails on recent RPM versions 20762 that generate a -debuginfo.rpm 20763 20764 - os.path.devnull has been added for all supported platforms. 20765 20766 - Fixed #877165: distutils now picks the right C++ compiler command 20767 on cygwin and mingw32. 20768 20769 - urllib.urlopen().readline() now handles HTTP/0.9 correctly. 20770 20771 - refactored site.py into functions. Also wrote regression tests for the 20772 module. 20773 20774 - The distutils install command now supports the --home option and 20775 installation scheme for all platforms. 20776 20777 - asyncore.loop now has a repeat count parameter that defaults to 20778 looping forever. 20779 20780 - The distutils sdist command now ignores all .svn directories, in 20781 addition to CVS and RCS directories. .svn directories hold 20782 administrative files for the Subversion source control system. 20783 20784 - Added a new module: cookielib. Automatic cookie handling for HTTP 20785 clients. Also, support for cookielib has been added to urllib2, so 20786 urllib2.urlopen() can transparently handle cookies. 20787 20788 - stringprep.py now uses built-in set() instead of sets.Set(). 20789 20790 - Bug #876278: Unbounded recursion in modulefinder 20791 20792 - Bug #780300: Swap public and system ID in LexicalHandler.startDTD. 20793 Applications relying on the wrong order need to be corrected. 20794 20795 - Bug #926075: Fixed a bug that returns a wrong pattern object 20796 for a string or unicode object in sre.compile() when a different 20797 type pattern with the same value exists. 20798 20799 - Added countcallers arg to trace.Trace class (--trackcalls command line arg 20800 when run from the command prompt). 20801 20802 - Fixed a caching bug in platform.platform() where the argument of 'terse' was 20803 not taken into consideration when caching value. 20804 20805 - Added two new command-line arguments for profile (output file and 20806 default sort). 20807 20808 - Added global runctx function to profile module 20809 20810 - Add hlist missing entryconfigure and entrycget methods. 20811 20812 - The ptcp154 codec was added for Kazakh character set support. 20813 20814 - Support non-anonymous ftp URLs in urllib2. 20815 20816 - The encodings package will now apply codec name aliases 20817 first before starting to try the import of the codec module. 20818 This simplifies overriding built-in codecs with external 20819 packages, e.g. the included CJK codecs with the JapaneseCodecs 20820 package, by adjusting the aliases dictionary in encodings.aliases 20821 accordingly. 20822 20823 - base64 now supports RFC 3548 Base16, Base32, and Base64 encoding and 20824 decoding standards. 20825 20826 - urllib2 now supports processors. A processor is a handler that 20827 implements an xxx_request or xxx_response method. These methods are 20828 called for all requests. 20829 20830 - distutils compilers now compile source files in the same order as 20831 they are passed to the compiler. 20832 20833 - pprint.pprint() and pprint.pformat() now have additional parameters 20834 indent, width and depth. 20835 20836 - Patch #750542: pprint now will pretty print subclasses of list, tuple 20837 and dict too, as long as they don't overwrite __repr__(). 20838 20839 - Bug #848614: distutils' msvccompiler fails to find the MSVC6 20840 compiler because of incomplete registry entries. 20841 20842 - httplib.HTTP.putrequest now offers to omit the implicit Accept-Encoding. 20843 20844 - Patch #841977: modulefinder didn't find extension modules in packages 20845 20846 - imaplib.IMAP4.thread was added. 20847 20848 - Plugged a minor hole in tempfile.mktemp() due to the use of 20849 os.path.exists(), switched to using os.lstat() directly if possible. 20850 20851 - bisect.py and heapq.py now have underlying C implementations 20852 for better performance. 20853 20854 - heapq.py has two new functions, nsmallest() and nlargest(). 20855 20856 - traceback.format_exc has been added (similar to print_exc but it returns 20857 a string). 20858 20859 - xmlrpclib.MultiCall has been added. 20860 20861 - poplib.POP3_SSL has been added. 20862 20863 - tmpfile.mkstemp now returns an absolute path even if dir is relative. 20864 20865 - urlparse is RFC 2396 compliant. 20866 20867 - The fieldnames argument to the csv module's DictReader constructor is now 20868 optional. If omitted, the first row of the file will be used as the 20869 list of fieldnames. 20870 20871 - encodings.bz2_codec was added for access to bz2 compression 20872 using "a long string".encode('bz2') 20873 20874 - Various improvements to unittest.py, realigned with PyUnit CVS. 20875 20876 - dircache now passes exceptions to the caller, instead of returning 20877 empty lists. 20878 20879 - The bsddb module and dbhash module now support the iterator and 20880 mapping protocols which make them more substitutable for dictionaries 20881 and shelves. 20882 20883 - The csv module's DictReader and DictWriter classes now accept keyword 20884 arguments. This was an omission in the initial implementation. 20885 20886 - The email package handles some RFC 2231 parameters with missing 20887 CHARSET fields better. It also includes a patch to parameter 20888 parsing when semicolons appear inside quotes. 20889 20890 - sets.py now runs under Py2.2. In addition, the argument restrictions 20891 for most set methods (but not the operators) have been relaxed to 20892 allow any iterable. 20893 20894 - _strptime.py now has a behind-the-scenes caching mechanism for the most 20895 recent TimeRE instance used along with the last five unique directive 20896 patterns. The overall module was also made more thread-safe. 20897 20898 - random.cunifvariate() and random.stdgamma() were deprecated in Py2.3 20899 and removed in Py2.4. 20900 20901 - Bug #823328: urllib2.py's HTTP Digest Auth support works again. 20902 20903 - Patch #873597: CJK codecs are imported into rank of default codecs. 20904 20905 Tools/Demos 20906 ----------- 20907 20908 - A hotshotmain script was added to the Tools/scripts directory that 20909 makes it easy to run a script under control of the hotshot profiler. 20910 20911 - The db2pickle and pickle2db scripts can now dump/load gdbm files. 20912 20913 - The file order on the command line of the pickle2db script was reversed. 20914 It is now [ picklefile ] dbfile. This provides better symmetry with 20915 db2pickle. The file arguments to both scripts are now source followed by 20916 destination in situations where both files are given. 20917 20918 - The pydoc script will display a link to the module documentation for 20919 modules determined to be part of the core distribution. The documentation 20920 base directory defaults to http://www.python.org/doc/current/lib/ but can 20921 be changed by setting the PYTHONDOCS environment variable. 20922 20923 - texcheck.py now detects double word errors. 20924 20925 - md5sum.py mistakenly opened input files in text mode by default, a 20926 silent and dangerous change from previous releases. It once again 20927 opens input files in binary mode by default. The -t and -b flags 20928 remain for compatibility with the 2.3 release, but -b is the default 20929 now. 20930 20931 - py-electric-colon now works when pending-delete/delete-selection mode is 20932 in effect 20933 20934 - py-help-at-point is no longer bound to the F1 key - it's still bound to 20935 C-c C-h 20936 20937 - Pynche was fixed to not crash when there is no ~/.pynche file and no 20938 -d option was given. 20939 20940 Build 20941 ----- 20942 20943 - Bug #978645: Modules/getpath.c now builds properly in --disable-framework 20944 build under OS X. 20945 20946 - Profiling using gprof is now available if Python is configured with 20947 --enable-profiling. 20948 20949 - Profiling the VM using the Pentium TSC is now possible if Python 20950 is configured --with-tsc. 20951 20952 - In order to find libraries, setup.py now also looks in /lib64, for use 20953 on AMD64. 20954 20955 - Bug #934635: Fixed a bug where the configure script couldn't detect 20956 getaddrinfo() properly if the KAME stack had SCTP support. 20957 20958 - Support for missing ANSI C header files (limits.h, stddef.h, etc) was 20959 removed. 20960 20961 - Systems requiring the D4, D6 or D7 variants of pthreads are no longer 20962 supported (see PEP 11). 20963 20964 - Universal newline support can no longer be disabled (see PEP 11). 20965 20966 - Support for DGUX, SunOS 4, IRIX 4 and Minix was removed (see PEP 11). 20967 20968 - Support for systems requiring --with-dl-dld or --with-sgi-dl was removed 20969 (see PEP 11). 20970 20971 - Tests for sizeof(char) were removed since ANSI C mandates that 20972 sizeof(char) must be 1. 20973 20974 C API 20975 ----- 20976 20977 - Thanks to Anthony Tuininga, the datetime module now supplies a C API 20978 containing type-check macros and constructors. See new docs in the 20979 Python/C API Reference Manual for details. 20980 20981 - Private function _PyTime_DoubleToTimet added, to convert a Python 20982 timestamp (C double) to platform time_t with some out-of-bounds 20983 checking. Declared in new header file timefuncs.h. It would be 20984 good to expose some other internal timemodule.c functions there. 20985 20986 - New public functions PyEval_EvaluateFrame and PyGen_New to expose 20987 generator objects. 20988 20989 - New public functions Py_IncRef() and Py_DecRef(), exposing the 20990 functionality of the Py_XINCREF() and Py_XDECREF macros. Useful for 20991 runtime dynamic embedding of Python. See patch #938302, by Bob 20992 Ippolito. 20993 20994 - Added a new macro, PySequence_Fast_ITEMS, which retrieves a fast sequence's 20995 underlying array of PyObject pointers. Useful for high speed looping. 20996 20997 - Created a new method flag, METH_COEXIST, which causes a method to be loaded 20998 even if already defined by a slot wrapper. This allows a __contains__ 20999 method, for example, to co-exist with a defined sq_contains slot. This 21000 is helpful because the PyCFunction can take advantage of optimized calls 21001 whenever METH_O or METH_NOARGS flags are defined. 21002 21003 - Added a new function, PyDict_Contains(d, k) which is like 21004 PySequence_Contains() but is specific to dictionaries and executes 21005 about 10% faster. 21006 21007 - Added three new macros: Py_RETURN_NONE, Py_RETURN_TRUE, and Py_RETURN_FALSE. 21008 Each return the singleton they mention after Py_INCREF()ing them. 21009 21010 - Added a new function, PyTuple_Pack(n, ...) for constructing tuples from a 21011 variable length argument list of Python objects without having to invoke 21012 the more complex machinery of Py_BuildValue(). PyTuple_Pack(3, a, b, c) 21013 is equivalent to Py_BuildValue("(OOO)", a, b, c). 21014 21015 Windows 21016 ------- 21017 21018 - The _winreg module could segfault when reading very large registry 21019 values, due to unchecked alloca() calls (SF bug 851056). The fix is 21020 uses either PyMem_Malloc(n) or PyString_FromStringAndSize(NULL, n), 21021 as appropriate, followed by a size check. 21022 21023 - file.truncate() could misbehave if the file was open for update 21024 (modes r+, rb+, w+, wb+), and the most recent file operation before 21025 the truncate() call was an input operation. SF bug 801631. 21026 21027 21028 What's New in Python 2.3 final? 21029 =============================== 21030 21031 *Release date: 29-Jul-2003* 21032 21033 IDLE 21034 ---- 21035 21036 - Bug 778400: IDLE hangs when selecting "Edit with IDLE" from explorer. 21037 This was unique to Windows, and was fixed by adding an -n switch to 21038 the command the Windows installer creates to execute "Edit with IDLE" 21039 context-menu actions. 21040 21041 - IDLE displays a new message upon startup: some "personal firewall" 21042 kinds of programs (for example, ZoneAlarm) open a dialog of their 21043 own when any program opens a socket. IDLE does use sockets, talking 21044 on the computer's internal loopback interface. This connection is not 21045 visible on any external interface and no data is sent to or received 21046 from the Internet. So, if you get such a dialog when opening IDLE, 21047 asking whether to let pythonw.exe talk to address 127.0.0.1, say yes, 21048 and rest assured no communication external to your machine is taking 21049 place. If you don't allow it, IDLE won't be able to start. 21050 21051 21052 What's New in Python 2.3 release candidate 2? 21053 ============================================= 21054 21055 *Release date: 24-Jul-2003* 21056 21057 Core and builtins 21058 ----------------- 21059 21060 - It is now possible to import from zipfiles containing additional 21061 data bytes before the zip compatible archive. Zipfiles containing a 21062 comment at the end are still unsupported. 21063 21064 Extension modules 21065 ----------------- 21066 21067 - A longstanding bug in the parser module's initialization could cause 21068 fatal internal refcount confusion when the module got initialized more 21069 than once. This has been fixed. 21070 21071 - Fixed memory leak in pyexpat; using the parser's ParseFile() method 21072 with open files that aren't instances of the standard file type 21073 caused an instance of the bound .read() method to be leaked on every 21074 call. 21075 21076 - Fixed some leaks in the locale module. 21077 21078 Library 21079 ------- 21080 21081 - Lib/encodings/rot_13.py when used as a script, now more properly 21082 uses the first Python interpreter on your path. 21083 21084 - Removed caching of TimeRE (and thus LocaleTime) in _strptime.py to 21085 fix a locale related bug in the test suite. Although another patch 21086 was needed to actually fix the problem, the cache code was not 21087 restored. 21088 21089 IDLE 21090 ---- 21091 21092 - Calltips patches. 21093 21094 Build 21095 ----- 21096 21097 - For MacOSX, added -mno-fused-madd to BASECFLAGS to fix test_coercion 21098 on Panther (OSX 10.3). 21099 21100 C API 21101 ----- 21102 21103 Windows 21104 ------- 21105 21106 - The tempfile module could do insane imports on Windows if PYTHONCASEOK 21107 was set, making temp file creation impossible. Repaired. 21108 21109 - Add a patch to workaround pthread_sigmask() bugs in Cygwin. 21110 21111 Mac 21112 --- 21113 21114 - Various fixes to pimp. 21115 21116 - Scripts runs with pythonw no longer had full window manager access. 21117 21118 - Don't force boot-disk-only install, for reasons unknown it causes 21119 more problems than it solves. 21120 21121 21122 What's New in Python 2.3 release candidate 1? 21123 ============================================= 21124 21125 *Release date: 18-Jul-2003* 21126 21127 Core and builtins 21128 ----------------- 21129 21130 - The new function sys.getcheckinterval() returns the last value set 21131 by sys.setcheckinterval(). 21132 21133 - Several bugs in the symbol table phase of the compiler have been 21134 fixed. Errors could be lost and compilation could fail without 21135 reporting an error. SF patch 763201. 21136 21137 - The interpreter is now more robust about importing the warnings 21138 module. In an executable generated by freeze or similar programs, 21139 earlier versions of 2.3 would fail if the warnings module could 21140 not be found on the file system. Fixes SF bug 771097. 21141 21142 - A warning about assignments to module attributes that shadow 21143 builtins, present in earlier releases of 2.3, has been removed. 21144 21145 - It is not possible to create subclasses of built-in types like str 21146 and tuple that define an itemsize. Earlier releases of Python 2.3 21147 allowed this by mistake, leading to crashes and other problems. 21148 21149 - The thread_id is now initialized to 0 in a non-thread build. SF bug 21150 770247. 21151 21152 - SF bug 762891: "del p[key]" on proxy object no longer raises SystemError. 21153 21154 Extension modules 21155 ----------------- 21156 21157 - weakref.proxy() can now handle "del obj[i]" for proxy objects 21158 defining __delitem__. Formerly, it generated a SystemError. 21159 21160 - SSL no longer crashes the interpreter when the remote side disconnects. 21161 21162 - On Unix the mmap module can again be used to map device files. 21163 21164 - time.strptime now exclusively uses the Python implementation 21165 contained within the _strptime module. 21166 21167 - The print slot of weakref proxy objects was removed, because it was 21168 not consistent with the object's repr slot. 21169 21170 - The mmap module only checks file size for regular files, not 21171 character or block devices. SF patch 708374. 21172 21173 - The cPickle Pickler garbage collection support was fixed to traverse 21174 the find_class attribute, if present. 21175 21176 - There are several fixes for the bsddb3 wrapper module. 21177 21178 bsddb3 no longer crashes if an environment is closed before a cursor 21179 (SF bug 763298). 21180 21181 The DB and DBEnv set_get_returns_none function was extended to take 21182 a level instead of a boolean flag. The new level 2 means that in 21183 addition, cursor.set()/.get() methods return None instead of raising 21184 an exception. 21185 21186 A typo was fixed in DBCursor.join_item(), preventing a crash. 21187 21188 Library 21189 ------- 21190 21191 - distutils now supports MSVC 7.1 21192 21193 - doctest now examines all docstrings by default. Previously, it would 21194 skip over functions with private names (as indicated by the underscore 21195 naming convention). The old default created too much of a risk that 21196 user tests were being skipped inadvertently. Note, this change could 21197 break code in the unlikely case that someone had intentionally put 21198 failing tests in the docstrings of private functions. The breakage 21199 is easily fixable by specifying the old behavior when calling testmod() 21200 or Tester(). 21201 21202 - There were several fixes to the way dumbdbms are closed. It's vital 21203 that a dumbdbm database be closed properly, else the on-disk data 21204 and directory files can be left in mutually inconsistent states. 21205 dumbdbm.py's _Database.__del__() method attempted to close the 21206 database properly, but a shutdown race in _Database._commit() could 21207 prevent this from working, so that a program trusting __del__() to 21208 get the on-disk files in synch could be badly surprised. The race 21209 has been repaired. A sync() method was also added so that shelve 21210 can guarantee data is written to disk. 21211 21212 The close() method can now be called more than once without complaint. 21213 21214 - The classes in threading.py are now new-style classes. That they 21215 weren't before was an oversight. 21216 21217 - The urllib2 digest authentication handlers now define the correct 21218 auth_header. The earlier versions would fail at runtime. 21219 21220 - SF bug 763023: fix uncaught ZeroDivisionError in difflib ratio methods 21221 when there are no lines. 21222 21223 - SF bug 763637: fix exception in Tkinter with after_cancel 21224 which could occur with Tk 8.4 21225 21226 - SF bug 770601: CGIHTTPServer.py now passes the entire environment 21227 to child processes. 21228 21229 - SF bug 765238: add filter to fnmatch's __all__. 21230 21231 - SF bug 748201: make time.strptime() error messages more helpful. 21232 21233 - SF patch 764470: Do not dump the args attribute of a Fault object in 21234 xmlrpclib. 21235 21236 - SF patch 549151: urllib and urllib2 now redirect POSTs on 301 21237 responses. 21238 21239 - SF patch 766650: The whichdb module was fixed to recognize dbm files 21240 generated by gdbm on OS/2 EMX. 21241 21242 - SF bugs 763047 and 763052: fixes bug of timezone value being left as 21243 -1 when ``time.tzname[0] == time.tzname[1] and not time.daylight`` 21244 is true when it should only when time.daylight is true. 21245 21246 - SF bug 764548: re now allows subclasses of str and unicode to be 21247 used as patterns. 21248 21249 - SF bug 763637: In Tkinter, change after_cancel() to handle tuples 21250 of varying sizes. Tk 8.4 returns a different number of values 21251 than Tk 8.3. 21252 21253 - SF bug 763023: difflib.ratio() did not catch zero division. 21254 21255 - The Queue module now has an __all__ attribute. 21256 21257 Tools/Demos 21258 ----------- 21259 21260 - See Lib/idlelib/NEWS.txt for IDLE news. 21261 21262 - SF bug 753592: webchecker/wsgui now handles user supplied directories. 21263 21264 - The trace.py script has been removed. It is now in the standard library. 21265 21266 Build 21267 ----- 21268 21269 - Python now compiles with -fno-strict-aliasing if possible (SF bug 766696). 21270 21271 - The socket module compiles on IRIX 6.5.10. 21272 21273 - An irix64 system is treated the same way as an irix6 system (SF 21274 patch 764560). 21275 21276 - Several definitions were missing on FreeBSD 5.x unless the 21277 __BSD_VISIBLE symbol was defined. configure now defines it as 21278 needed. 21279 21280 C API 21281 ----- 21282 21283 - Unicode objects now support mbcs as a built-in encoding, so the C 21284 API can use it without deferring to the encodings package. 21285 21286 Windows 21287 ------- 21288 21289 - The Windows implementation of PyThread_start_new_thread() never 21290 checked error returns from Windows functions correctly. As a result, 21291 it could claim to start a new thread even when the Microsoft 21292 _beginthread() function failed (due to "too many threads" -- this is 21293 on the order of thousands when it happens). In these cases, the 21294 Python exception :: 21295 21296 thread.error: can't start new thread 21297 21298 is raised now. 21299 21300 - SF bug 766669: Prevent a GPF on interpreter exit when sockets are in 21301 use. The interpreter now calls WSACleanup() from Py_Finalize() 21302 instead of from DLL teardown. 21303 21304 Mac 21305 --- 21306 21307 - Bundlebuilder now inherits default values in the right way. It was 21308 previously possible for app bundles to get a type of "BNDL" instead 21309 of "APPL." Other improvements include, a --build-id option to 21310 specify the CFBundleIdentifier and using the --python option to set 21311 the executable in the bundle. 21312 21313 - Fixed two bugs in MacOSX framework handling. 21314 21315 - pythonw did not allow user interaction in 2.3rc1, this has been fixed. 21316 21317 - Python is now compiled with -mno-fused-madd, making all tests pass 21318 on Panther. 21319 21320 What's New in Python 2.3 beta 2? 21321 ================================ 21322 21323 *Release date: 29-Jun-2003* 21324 21325 Core and builtins 21326 ----------------- 21327 21328 - A program can now set the environment variable PYTHONINSPECT to some 21329 string value in Python, and cause the interpreter to enter the 21330 interactive prompt at program exit, as if Python had been invoked 21331 with the -i option. 21332 21333 - list.index() now accepts optional start and stop arguments. Similar 21334 changes were made to UserList.index(). SF feature request 754014. 21335 21336 - SF patch 751998 fixes an unwanted side effect of the previous fix 21337 for SF bug 742860 (the next item). 21338 21339 - SF bug 742860: "WeakKeyDictionary __delitem__ uses iterkeys". This 21340 wasn't threadsafe, was very inefficient (expected time O(len(dict)) 21341 instead of O(1)), and could raise a spurious RuntimeError if another 21342 thread mutated the dict during __delitem__, or if a comparison function 21343 mutated it. It also neglected to raise KeyError when the key wasn't 21344 present; didn't raise TypeError when the key wasn't of a weakly 21345 referencable type; and broke various more-or-less obscure dict 21346 invariants by using a sequence of equality comparisons over the whole 21347 set of dict keys instead of computing the key's hash code to narrow 21348 the search to those keys with the same hash code. All of these are 21349 considered to be bugs. A new implementation of __delitem__ repairs all 21350 that, but note that fixing these bugs may change visible behavior in 21351 code relying (whether intentionally or accidentally) on old behavior. 21352 21353 - SF bug 734869: Fixed a compiler bug that caused a fatal error when 21354 compiling a list comprehension that contained another list comprehension 21355 embedded in a lambda expression. 21356 21357 - SF bug 705231: builtin pow() no longer lets the platform C pow() 21358 raise -1.0 to integer powers, because (at least) glibc gets it wrong 21359 in some cases. The result should be -1.0 if the power is odd and 1.0 21360 if the power is even, and any float with a sufficiently large exponent 21361 is (mathematically) an exact even integer. 21362 21363 - SF bug 759227: A new-style class that implements __nonzero__() must 21364 return a bool or int (but not an int subclass) from that method. This 21365 matches the restriction on classic classes. 21366 21367 - The encoding attribute has been added for file objects, and set to 21368 the terminal encoding on Unix and Windows. 21369 21370 - The softspace attribute of file objects became read-only by oversight. 21371 It's writable again. 21372 21373 - Reverted a 2.3 beta 1 change to iterators for subclasses of list and 21374 tuple. By default, the iterators now access data elements directly 21375 instead of going through __getitem__. If __getitem__ access is 21376 preferred, then __iter__ can be overridden. 21377 21378 - SF bug 735247: The staticmethod and super types participate in 21379 garbage collection. Before this change, it was possible for leaks to 21380 occur in functions with non-global free variables that used these types. 21381 21382 Extension modules 21383 ----------------- 21384 21385 - the socket module has a new exception, socket.timeout, to allow 21386 timeouts to be handled separately from other socket errors. 21387 21388 - SF bug 751276: cPickle has fixed to propagate exceptions raised in 21389 user code. In earlier versions, cPickle caught and ignored any 21390 exception when it performed operations that it expected to raise 21391 specific exceptions like AttributeError. 21392 21393 - cPickle Pickler and Unpickler objects now participate in garbage 21394 collection. 21395 21396 - mimetools.choose_boundary() could return duplicate strings at times, 21397 especially likely on Windows. The strings returned are now guaranteed 21398 unique within a single program run. 21399 21400 - thread.interrupt_main() raises KeyboardInterrupt in the main thread. 21401 dummy_thread has also been modified to try to simulate the behavior. 21402 21403 - array.array.insert() now treats negative indices as being relative 21404 to the end of the array, just like list.insert() does. (SF bug #739313) 21405 21406 - The datetime module classes datetime, time, and timedelta are now 21407 properly subclassable. 21408 21409 - _tkinter.{get|set}busywaitinterval was added. 21410 21411 - itertools.islice() now accepts stop=None as documented. 21412 Fixes SF bug #730685. 21413 21414 - the bsddb185 module is built in one restricted instance - 21415 /usr/include/db.h exists and defines HASHVERSION to be 2. This is true 21416 for many BSD-derived systems. 21417 21418 21419 Library 21420 ------- 21421 21422 - Some happy doctest extensions from Jim Fulton have been added to 21423 doctest.py. These are already being used in Zope3. The two 21424 primary ones: 21425 21426 doctest.debug(module, name) extracts the doctests from the named object 21427 in the given module, puts them in a temp file, and starts pdb running 21428 on that file. This is great when a doctest fails. 21429 21430 doctest.DocTestSuite(module=None) returns a synthesized unittest 21431 TestSuite instance, to be run by the unittest framework, which 21432 runs all the doctests in the module. This allows writing tests in 21433 doctest style (which can be clearer and shorter than writing tests 21434 in unittest style), without losing unittest's powerful testing 21435 framework features (which doctest lacks). 21436 21437 - For compatibility with doctests created before 2.3, if an expected 21438 output block consists solely of "1" and the actual output block 21439 consists solely of "True", it's accepted as a match; similarly 21440 for "0" and "False". This is quite un-doctest-like, but is practical. 21441 The behavior can be disabled by passing the new doctest module 21442 constant DONT_ACCEPT_TRUE_FOR_1 to the new optionflags optional 21443 argument. 21444 21445 - ZipFile.testzip() now only traps BadZipfile exceptions. Previously, 21446 a bare except caught to much and reported all errors as a problem 21447 in the archive. 21448 21449 - The logging module now has a new function, makeLogRecord() making 21450 LogHandler easier to interact with DatagramHandler and SocketHandler. 21451 21452 - The cgitb module has been extended to support plain text display (SF patch 21453 569574). 21454 21455 - A brand new version of IDLE (from the IDLEfork project at 21456 SourceForge) is now included as Lib/idlelib. The old Tools/idle is 21457 no more. 21458 21459 - Added a new module: trace (documentation missing). This module used 21460 to be distributed in Tools/scripts. It uses sys.settrace() to trace 21461 code execution -- either function calls or individual lines. It can 21462 generate tracing output during execution or a post-mortem report of 21463 code coverage. 21464 21465 - The threading module has new functions settrace() and setprofile() 21466 that cooperate with the functions of the same name in the sys 21467 module. A function registered with the threading module will 21468 be used for all threads it creates. The new trace module uses this 21469 to provide tracing for code running in threads. 21470 21471 - copy.py: applied SF patch 707900, fixing bug 702858, by Steven 21472 Taschuk. Copying a new-style class that had a reference to itself 21473 didn't work. (The same thing worked fine for old-style classes.) 21474 Builtin functions are now treated as atomic, fixing bug #746304. 21475 21476 - difflib.py has two new functions: context_diff() and unified_diff(). 21477 21478 - More fixes to urllib (SF 549151): (a) When redirecting, always use 21479 GET. This is common practice and more-or-less sanctioned by the 21480 HTTP standard. (b) Add a handler for 307 redirection, which becomes 21481 an error for POST, but a regular redirect for GET and HEAD 21482 21483 - Added optional 'onerror' argument to os.walk(), to control error 21484 handling. 21485 21486 - inspect.is{method|data}descriptor was added, to allow pydoc display 21487 __doc__ of data descriptors. 21488 21489 - Fixed socket speed loss caused by use of the _socketobject wrapper class 21490 in socket.py. 21491 21492 - timeit.py now checks the current directory for imports. 21493 21494 - urllib2.py now knows how to order proxy classes, so the user doesn't 21495 have to insert it in front of other classes, nor do dirty tricks like 21496 inserting a "dummy" HTTPHandler after a ProxyHandler when building an 21497 opener with proxy support. 21498 21499 - Iterators have been added for dbm keys. 21500 21501 - random.Random objects can now be pickled. 21502 21503 Tools/Demos 21504 ----------- 21505 21506 - pydoc now offers help on keywords and topics. 21507 21508 - Tools/idle is gone; long live Lib/idlelib. 21509 21510 - diff.py prints file diffs in context, unified, or ndiff formats, 21511 providing a command line interface to difflib.py. 21512 21513 - texcheck.py is a new script for making a rough validation of Python LaTeX 21514 files. 21515 21516 Build 21517 ----- 21518 21519 - Setting DESTDIR during 'make install' now allows specifying a 21520 different root directory. 21521 21522 C API 21523 ----- 21524 21525 - PyType_Ready(): If a type declares that it participates in gc 21526 (Py_TPFLAGS_HAVE_GC), and its base class does not, and its base class's 21527 tp_free slot is the default _PyObject_Del, and type does not define 21528 a tp_free slot itself, _PyObject_GC_Del is assigned to type->tp_free. 21529 Previously _PyObject_Del was inherited, which could at best lead to a 21530 segfault. In addition, if even after this magic the type's tp_free 21531 slot is _PyObject_Del or NULL, and the type is a base type 21532 (Py_TPFLAGS_BASETYPE), TypeError is raised: since the type is a base 21533 type, its dealloc function must call type->tp_free, and since the type 21534 is gc'able, tp_free must not be NULL or _PyObject_Del. 21535 21536 - PyThreadState_SetAsyncExc(): A new API (deliberately accessible only 21537 from C) to interrupt a thread by sending it an exception. It is 21538 intentional that you have to write your own C extension to call it 21539 from Python. 21540 21541 21542 New platforms 21543 ------------- 21544 21545 None this time. 21546 21547 Tests 21548 ----- 21549 21550 - test_imp rewritten so that it doesn't raise RuntimeError if run as a 21551 side effect of being imported ("import test.autotest"). 21552 21553 Windows 21554 ------- 21555 21556 - The Windows installer ships with Tcl/Tk 8.4.3 (upgraded from 8.4.1). 21557 21558 - The installer always suggested that Python be installed on the C: 21559 drive, due to a hardcoded "C:" generated by the Wise installation 21560 wizard. People with machines where C: is not the system drive 21561 usually want Python installed on whichever drive is their system drive 21562 instead. We removed the hardcoded "C:", and two testers on machines 21563 where C: is not the system drive report that the installer now 21564 suggests their system drive. Note that you can always select the 21565 directory you want in the "Select Destination Directory" dialog -- 21566 that's what it's for. 21567 21568 Mac 21569 --- 21570 21571 - There's a new module called "autoGIL", which offers a mechanism to 21572 automatically release the Global Interpreter Lock when an event loop 21573 goes to sleep, allowing other threads to run. It's currently only 21574 supported on OSX, in the Mach-O version. 21575 - The OSA modules now allow direct access to properties of the 21576 toplevel application class (in AppleScript terminology). 21577 - The Package Manager can now update itself. 21578 21579 SourceForge Bugs and Patches Applied 21580 ------------------------------------ 21581 21582 430160, 471893, 501716, 542562, 549151, 569574, 595837, 596434, 21583 598163, 604210, 604716, 610332, 612627, 614770, 620190, 621891, 21584 622042, 639139, 640236, 644345, 649742, 649742, 658233, 660022, 21585 661318, 661676, 662807, 662923, 666219, 672855, 678325, 682347, 21586 683486, 684981, 685773, 686254, 692776, 692959, 693094, 696777, 21587 697989, 700827, 703666, 708495, 708604, 708901, 710733, 711902, 21588 713722, 715782, 718286, 719359, 719367, 723136, 723831, 723962, 21589 724588, 724767, 724767, 725942, 726150, 726446, 726869, 727051, 21590 727719, 727719, 727805, 728277, 728563, 728656, 729096, 729103, 21591 729293, 729297, 729300, 729317, 729395, 729622, 729817, 730170, 21592 730296, 730594, 730685, 730826, 730963, 731209, 731403, 731504, 21593 731514, 731626, 731635, 731643, 731644, 731644, 731689, 732124, 21594 732143, 732234, 732284, 732284, 732479, 732761, 732783, 732951, 21595 733667, 733781, 734118, 734231, 734869, 735051, 735293, 735527, 21596 735613, 735694, 736962, 736962, 737970, 738066, 739313, 740055, 21597 740234, 740301, 741806, 742126, 742741, 742860, 742860, 742911, 21598 744041, 744104, 744238, 744687, 744877, 745055, 745478, 745525, 21599 745620, 746012, 746304, 746366, 746801, 746953, 747348, 747667, 21600 747954, 748846, 748849, 748973, 748975, 749191, 749210, 749759, 21601 749831, 749911, 750008, 750092, 750542, 750595, 751038, 751107, 21602 751276, 751451, 751916, 751941, 751956, 751998, 752671, 753451, 21603 753602, 753617, 753845, 753925, 754014, 754340, 754447, 755031, 21604 755087, 755147, 755245, 755683, 755987, 756032, 756996, 757058, 21605 757229, 757818, 757821, 757822, 758112, 758910, 759227, 759889, 21606 760257, 760703, 760792, 761104, 761337, 761519, 761830, 762455 21607 21608 21609 What's New in Python 2.3 beta 1? 21610 ================================ 21611 21612 *Release date: 25-Apr-2003* 21613 21614 Core and builtins 21615 ----------------- 21616 21617 - New format codes B, H, I, k and K have been implemented for 21618 PyArg_ParseTuple and PyBuild_Value. 21619 21620 - New built-in function sum(seq, start=0) returns the sum of all the 21621 items in iterable object seq, plus start (items are normally numbers, 21622 and cannot be strings). 21623 21624 - bool() called without arguments now returns False rather than 21625 raising an exception. This is consistent with calling the 21626 constructors for the other built-in types -- called without argument 21627 they all return the false value of that type. (SF patch #724135) 21628 21629 - In support of PEP 269 (making the pgen parser generator accessible 21630 from Python), some changes to the pgen code structure were made; a 21631 few files that used to be linked only with pgen are now linked with 21632 Python itself. 21633 21634 - The repr() of a weakref object now shows the __name__ attribute of 21635 the referenced object, if it has one. 21636 21637 - super() no longer ignores data descriptors, except __class__. See 21638 the thread started at 21639 http://mail.python.org/pipermail/python-dev/2003-April/034338.html 21640 21641 - list.insert(i, x) now interprets negative i as it would be 21642 interpreted by slicing, so negative values count from the end of the 21643 list. This was the only place where such an interpretation was not 21644 placed on a list index. 21645 21646 - range() now works even if the arguments are longs with magnitude 21647 larger than sys.maxint, as long as the total length of the sequence 21648 fits. E.g., range(2**100, 2**101, 2**100) is the following list: 21649 [1267650600228229401496703205376L]. (SF patch #707427.) 21650 21651 - Some horridly obscure problems were fixed involving interaction 21652 between garbage collection and old-style classes with "ambitious" 21653 getattr hooks. If an old-style instance didn't have a __del__ method, 21654 but did have a __getattr__ hook, and the instance became reachable 21655 only from an unreachable cycle, and the hook resurrected or deleted 21656 unreachable objects when asked to resolve "__del__", anything up to 21657 a segfault could happen. That's been repaired. 21658 21659 - dict.pop now takes an optional argument specifying a default 21660 value to return if the key is not in the dict. If a default is not 21661 given and the key is not found, a KeyError will still be raised. 21662 Parallel changes were made to UserDict.UserDict and UserDict.DictMixin. 21663 [SF patch #693753] (contributed by Michael Stone.) 21664 21665 - sys.getfilesystemencoding() was added to expose 21666 Py_FileSystemDefaultEncoding. 21667 21668 - New function sys.exc_clear() clears the current exception. This is 21669 rarely needed, but can sometimes be useful to release objects 21670 referenced by the traceback held in sys.exc_info()[2]. (SF patch 21671 #693195.) 21672 21673 - On 64-bit systems, a dictionary could contain duplicate long/int keys 21674 if the key value was larger than 2**32. See SF bug #689659. 21675 21676 - Fixed SF bug #663074. The codec system was using global static 21677 variables to store internal data. As a result, any attempts to use the 21678 unicode system with multiple active interpreters, or successive 21679 interpreter executions, would fail. 21680 21681 - "%c" % u"a" now returns a unicode string instead of raising a 21682 TypeError. u"%c" % 0xffffffff now raises an OverflowError instead 21683 of a ValueError to be consistent with "%c" % 256. See SF patch #710127. 21684 21685 Extension modules 21686 ----------------- 21687 21688 - The socket module now provides the functions inet_pton and inet_ntop 21689 for converting between string and packed representation of IP 21690 addresses. There is also a new module variable, has_ipv6, which is 21691 True iff the current Python has IPv6 support. See SF patch #658327. 21692 21693 - Tkinter wrappers around Tcl variables now pass objects directly 21694 to Tcl, instead of first converting them to strings. 21695 21696 - The .*? pattern in the re module is now special-cased to avoid the 21697 recursion limit. (SF patch #720991 -- many thanks to Gary Herron 21698 and Greg Chapman.) 21699 21700 - New function sys.call_tracing() allows pdb to debug code 21701 recursively. 21702 21703 - New function gc.get_referents(obj) returns a list of objects 21704 directly referenced by obj. In effect, it exposes what the object's 21705 tp_traverse slot does, and can be helpful when debugging memory 21706 leaks. 21707 21708 - The iconv module has been removed from this release. 21709 21710 - The platform-independent routines for packing floats in IEEE formats 21711 (struct.pack's <f, >f, <d, and >d codes; pickle and cPickle's protocol 1 21712 pickling of floats) ignored that rounding can cause a carry to 21713 propagate. The worst consequence was that, in rare cases, <f and >f 21714 could produce strings that, when unpacked again, were a factor of 2 21715 away from the original float. This has been fixed. See SF bug 21716 #705836. 21717 21718 - New function time.tzset() provides access to the C library tzset() 21719 function, if supported. (SF patch #675422.) 21720 21721 - Using createfilehandler, deletefilehandler, createtimerhandler functions 21722 on Tkinter.tkinter (_tkinter module) no longer crashes the interpreter. 21723 See SF bug #692416. 21724 21725 - Modified the fcntl.ioctl() function to allow modification of a passed 21726 mutable buffer (for details see the reference documentation). 21727 21728 - Made user requested changes to the itertools module. 21729 Subsumed the times() function into repeat(). 21730 Added chain() and cycle(). 21731 21732 - The rotor module is now deprecated; the encryption algorithm it uses 21733 is not believed to be secure, and including crypto code with Python 21734 has implications for exporting and importing it in various countries. 21735 21736 - The socket module now always uses the _socketobject wrapper class, even on 21737 platforms which have dup(2). The makefile() method is built directly 21738 on top of the socket without duplicating the file descriptor, allowing 21739 timeouts to work properly. 21740 21741 Library 21742 ------- 21743 21744 - New generator function os.walk() is an easy-to-use alternative to 21745 os.path.walk(). See os module docs for details. os.path.walk() 21746 isn't deprecated at this time, but may become deprecated in a 21747 future release. 21748 21749 - Added new module "platform" which provides a wide range of tools 21750 for querying platform dependent features. 21751 21752 - netrc now allows ASCII punctuation characters in passwords. 21753 21754 - shelve now supports the optional writeback argument, and exposes 21755 pickle protocol versions. 21756 21757 - Several methods of nntplib.NNTP have grown an optional file argument 21758 which specifies a file where to divert the command's output 21759 (already supported by the body() method). (SF patch #720468) 21760 21761 - The self-documenting XML server library DocXMLRPCServer was added. 21762 21763 - Support for internationalized domain names has been added through 21764 the 'idna' and 'punycode' encodings, the 'stringprep' module, the 21765 'mkstringprep' tool, and enhancements to the socket and httplib 21766 modules. 21767 21768 - htmlentitydefs has two new dictionaries: name2codepoint maps 21769 HTML entity names to Unicode codepoints (as integers). 21770 codepoint2name is the reverse mapping. See SF patch #722017. 21771 21772 - pdb has a new command, "debug", which lets you step through 21773 arbitrary code from the debugger's (pdb) prompt. 21774 21775 - unittest.failUnlessEqual and its equivalent unittest.assertEqual now 21776 return 'not a == b' rather than 'a != b'. This gives the desired 21777 result for classes that define __eq__ without defining __ne__. 21778 21779 - sgmllib now supports SGML marked sections, in particular the 21780 MS Office extensions. 21781 21782 - The urllib module now offers support for the iterator protocol. 21783 SF patch 698520 contributed by Brett Cannon. 21784 21785 - New module timeit provides a simple framework for timing the 21786 execution speed of expressions and statements. 21787 21788 - sets.Set objects now support mixed-type __eq__ and __ne__, instead 21789 of raising TypeError. If x is a Set object and y is a non-Set object, 21790 x == y is False, and x != y is True. This is akin to the change made 21791 for mixed-type comparisons of datetime objects in 2.3a2; more info 21792 about the rationale is in the NEWS entry for that. See also SF bug 21793 report <http://www.python.org/sf/693121>. 21794 21795 - On Unix platforms, if os.listdir() is called with a Unicode argument, 21796 it now returns Unicode strings. (This behavior was added earlier 21797 to the Windows NT/2k/XP version of os.listdir().) 21798 21799 - Distutils: both 'py_modules' and 'packages' keywords can now be specified 21800 in core.setup(). Previously you could supply one or the other, but 21801 not both of them. (SF patch #695090 from Bernhard Herzog) 21802 21803 - New csv package makes it easy to read/write CSV files. 21804 21805 - Module shlex has been extended to allow posix-like shell parsings, 21806 including a split() function for easy spliting of quoted strings and 21807 commands. An iterator interface was also implemented. 21808 21809 Tools/Demos 21810 ----------- 21811 21812 - New script combinerefs.py helps analyze new PYTHONDUMPREFS output. 21813 See the module docstring for details. 21814 21815 Build 21816 ----- 21817 21818 - Fix problem building on OSF1 because the compiler only accepted 21819 preprocessor directives that start in column 1. (SF bug #691793.) 21820 21821 C API 21822 ----- 21823 21824 - Added PyGC_Collect(), equivalent to calling gc.collect(). 21825 21826 - PyThreadState_GetDict() was changed not to raise an exception or 21827 issue a fatal error when no current thread state is available. This 21828 makes it possible to print dictionaries when no thread is active. 21829 21830 - LONG_LONG was renamed to PY_LONG_LONG. Extensions that use this and 21831 need compatibility with previous versions can use this: 21832 21833 #ifndef PY_LONG_LONG 21834 #define PY_LONG_LONG LONG_LONG 21835 #endif 21836 21837 - Added PyObject_SelfIter() to fill the tp_iter slot for the 21838 typical case where the method returns its self argument. 21839 21840 - The extended type structure used for heap types (new-style 21841 classes defined by Python code using a class statement) is now 21842 exported from object.h as PyHeapTypeObject. (SF patch #696193.) 21843 21844 New platforms 21845 ------------- 21846 21847 None this time. 21848 21849 Tests 21850 ----- 21851 21852 - test_timeout now requires -u network to be passed to regrtest to run. 21853 See SF bug #692988. 21854 21855 Windows 21856 ------- 21857 21858 - os.fsync() now exists on Windows, and calls the Microsoft _commit() 21859 function. 21860 21861 - New function winsound.MessageBeep() wraps the Win32 API 21862 MessageBeep(). 21863 21864 Mac 21865 --- 21866 21867 - os.listdir() now returns Unicode strings on MacOS X when called with 21868 a Unicode argument. See the general news item under "Library". 21869 21870 - A new method MacOS.WMAvailable() returns true if it is safe to access 21871 the window manager, false otherwise. 21872 21873 - EasyDialogs dialogs are now movable-modal, and if the application is 21874 currently in the background they will ask to be moved to the foreground 21875 before displaying. 21876 21877 - OSA Scripting support has improved a lot, and gensuitemodule.py can now 21878 be used by mere mortals. The documentation is now also more or less 21879 complete. 21880 21881 - The IDE (in a framework build) now includes introductory documentation 21882 in Apple Help Viewer format. 21883 21884 21885 What's New in Python 2.3 alpha 2? 21886 ================================= 21887 21888 *Release date: 19-Feb-2003* 21889 21890 Core and builtins 21891 ----------------- 21892 21893 - Negative positions returned from PEP 293 error callbacks are now 21894 treated as being relative to the end of the input string. Positions 21895 that are out of bounds raise an IndexError. 21896 21897 - sys.path[0] (the directory from which the script is loaded) is now 21898 turned into an absolute pathname, unless it is the empty string. 21899 (SF patch #664376.) 21900 21901 - Finally fixed the bug in compile() and exec where a string ending 21902 with an indented code block but no newline would raise SyntaxError. 21903 This would have been a four-line change in parsetok.c... Except 21904 codeop.py depends on this behavior, so a compilation flag had to be 21905 invented that causes the tokenizer to revert to the old behavior; 21906 this required extra changes to 2 .h files, 2 .c files, and 2 .py 21907 files. (Fixes SF bug #501622.) 21908 21909 - If a new-style class defines neither __new__ nor __init__, its 21910 constructor would ignore all arguments. This is changed now: the 21911 constructor refuses arguments in this case. This might break code 21912 that worked under Python 2.2. The simplest fix is to add a no-op 21913 __init__: ``def __init__(self, *args, **kw): pass``. 21914 21915 - Through a bytecode optimizer bug (and I bet you didn't even know 21916 Python *had* a bytecode optimizer :-), "unsigned" hex/oct constants 21917 with a leading minus sign would come out with the wrong sign. 21918 ("Unsigned" hex/oct constants are those with a face value in the 21919 range sys.maxint+1 through sys.maxint*2+1, inclusive; these have 21920 always been interpreted as negative numbers through sign folding.) 21921 E.g. 0xffffffff is -1, and -(0xffffffff) is 1, but -0xffffffff would 21922 come out as -4294967295. This was the case in Python 2.2 through 21923 2.2.2 and 2.3a1, and in Python 2.4 it will once again have that 21924 value, but according to PEP 237 it really needs to be 1 now. This 21925 will be backported to Python 2.2.3 a well. (SF #660455) 21926 21927 - int(s, base) sometimes sign-folds hex and oct constants; it only 21928 does this when base is 0 and s.strip() starts with a '0'. When the 21929 sign is actually folded, as in int("0xffffffff", 0) on a 32-bit 21930 machine, which returns -1, a FutureWarning is now issued; in Python 21931 2.4, this will return 4294967295L, as do int("+0xffffffff", 0) and 21932 int("0xffffffff", 16) right now. (PEP 347) 21933 21934 - super(X, x): x may now be a proxy for an X instance, i.e. 21935 issubclass(x.__class__, X) but not issubclass(type(x), X). 21936 21937 - isinstance(x, X): if X is a new-style class, this is now equivalent 21938 to issubclass(type(x), X) or issubclass(x.__class__, X). Previously 21939 only type(x) was tested. (For classic classes this was already the 21940 case.) 21941 21942 - compile(), eval() and the exec statement now fully support source code 21943 passed as unicode strings. 21944 21945 - int subclasses can be initialized with longs if the value fits in an int. 21946 See SF bug #683467. 21947 21948 - long(string, base) takes time linear in len(string) when base is a power 21949 of 2 now. It used to take time quadratic in len(string). 21950 21951 - filter returns now Unicode results for Unicode arguments. 21952 21953 - raw_input can now return Unicode objects. 21954 21955 - List objects' sort() method now accepts None as the comparison function. 21956 Passing None is semantically identical to calling sort() with no 21957 arguments. 21958 21959 - Fixed crash when printing a subclass of str and __str__ returned self. 21960 See SF bug #667147. 21961 21962 - Fixed an invalid RuntimeWarning and an undetected error when trying 21963 to convert a long integer into a float which couldn't fit. 21964 See SF bug #676155. 21965 21966 - Function objects now have a __module__ attribute that is bound to 21967 the name of the module in which the function was defined. This 21968 applies for C functions and methods as well as functions and methods 21969 defined in Python. This attribute is used by pickle.whichmodule(), 21970 which changes the behavior of whichmodule slightly. In Python 2.2 21971 whichmodule() returns "__main__" for functions that are not defined 21972 at the top-level of a module (examples: methods, nested functions). 21973 Now whichmodule() will return the proper module name. 21974 21975 Extension modules 21976 ----------------- 21977 21978 - operator.isNumberType() now checks that the object has a nb_int or 21979 nb_float slot, rather than simply checking whether it has a non-NULL 21980 tp_as_number pointer. 21981 21982 - The imp module now has ways to acquire and release the "import 21983 lock": imp.acquire_lock() and imp.release_lock(). Note: this is a 21984 reentrant lock, so releasing the lock only truly releases it when 21985 this is the last release_lock() call. You can check with 21986 imp.lock_held(). (SF bug #580952 and patch #683257.) 21987 21988 - Change to cPickle to match pickle.py (see below and PEP 307). 21989 21990 - Fix some bugs in the parser module. SF bug #678518. 21991 21992 - Thanks to Scott David Daniels, a subtle bug in how the zlib 21993 extension implemented flush() was fixed. Scott also rewrote the 21994 zlib test suite using the unittest module. (SF bug #640230 and 21995 patch #678531.) 21996 21997 - Added an itertools module containing high speed, memory efficient 21998 looping constructs inspired by tools from Haskell and SML. 21999 22000 - The SSL module now handles sockets with a timeout set correctly (SF 22001 patch #675750, fixing SF bug #675552). 22002 22003 - os/posixmodule has grown the sysexits.h constants (EX_OK and friends). 22004 22005 - Fixed broken threadstate swap in readline that could cause fatal 22006 errors when a readline hook was being invoked while a background 22007 thread was active. (SF bugs #660476 and #513033.) 22008 22009 - fcntl now exposes the strops.h I_* constants. 22010 22011 - Fix a crash on Solaris that occurred when calling close() on 22012 an mmap'ed file which was already closed. (SF patch #665913) 22013 22014 - Fixed several serious bugs in the zipimport implementation. 22015 22016 - datetime changes: 22017 22018 The date class is now properly subclassable. (SF bug #720908) 22019 22020 The datetime and datetimetz classes have been collapsed into a single 22021 datetime class, and likewise the time and timetz classes into a single 22022 time class. Previously, a datetimetz object with tzinfo=None acted 22023 exactly like a datetime object, and similarly for timetz. This wasn't 22024 enough of a difference to justify distinct classes, and life is simpler 22025 now. 22026 22027 today() and now() now round system timestamps to the closest 22028 microsecond <http://www.python.org/sf/661086>. This repairs an 22029 irritation most likely seen on Windows systems. 22030 22031 In dt.astimezone(tz), if tz.utcoffset(dt) returns a duration, 22032 ValueError is raised if tz.dst(dt) returns None (2.3a1 treated it 22033 as 0 instead, but a tzinfo subclass wishing to participate in 22034 time zone conversion has to take a stand on whether it supports 22035 DST; if you don't care about DST, then code dst() to return 0 minutes, 22036 meaning that DST is never in effect). 22037 22038 The tzinfo methods utcoffset() and dst() must return a timedelta object 22039 (or None) now. In 2.3a1 they could also return an int or long, but that 22040 was an unhelpfully redundant leftover from an earlier version wherein 22041 they couldn't return a timedelta. TOOWTDI. 22042 22043 The example tzinfo class for local time had a bug. It was replaced 22044 by a later example coded by Guido. 22045 22046 datetime.astimezone(tz) no longer raises an exception when the 22047 input datetime has no UTC equivalent in tz. For typical "hybrid" time 22048 zones (a single tzinfo subclass modeling both standard and daylight 22049 time), this case can arise one hour per year, at the hour daylight time 22050 ends. See new docs for details. In short, the new behavior mimics 22051 the local wall clock's behavior of repeating an hour in local time. 22052 22053 dt.astimezone() can no longer be used to convert between naive and aware 22054 datetime objects. If you merely want to attach, or remove, a tzinfo 22055 object, without any conversion of date and time members, use 22056 dt.replace(tzinfo=whatever) instead, where "whatever" is None or a 22057 tzinfo subclass instance. 22058 22059 A new method tzinfo.fromutc(dt) can be overridden in tzinfo subclasses 22060 to give complete control over how a UTC time is to be converted to 22061 a local time. The default astimezone() implementation calls fromutc() 22062 as its last step, so a tzinfo subclass can affect that too by overriding 22063 fromutc(). It's expected that the default fromutc() implementation will 22064 be suitable as-is for "almost all" time zone subclasses, but the 22065 creativity of political time zone fiddling appears unbounded -- fromutc() 22066 allows the highly motivated to emulate any scheme expressible in Python. 22067 22068 datetime.now(): The optional tzinfo argument was undocumented (that's 22069 repaired), and its name was changed to tz ("tzinfo" is overloaded enough 22070 already). With a tz argument, now(tz) used to return the local date 22071 and time, and attach tz to it, without any conversion of date and time 22072 members. This was less than useful. Now now(tz) returns the current 22073 date and time as local time in tz's time zone, akin to :: 22074 22075 tz.fromutc(datetime.utcnow().replace(tzinfo=utc)) 22076 22077 where "utc" is an instance of a tzinfo subclass modeling UTC. Without 22078 a tz argument, now() continues to return the current local date and time, 22079 as a naive datetime object. 22080 22081 datetime.fromtimestamp(): Like datetime.now() above, this had less than 22082 useful behavior when the optional tinzo argument was specified. See 22083 also SF bug report <http://www.python.org/sf/660872>. 22084 22085 date and datetime comparison: In order to prevent comparison from 22086 falling back to the default compare-object-addresses strategy, these 22087 raised TypeError whenever they didn't understand the other object type. 22088 They still do, except when the other object has a "timetuple" attribute, 22089 in which case they return NotImplemented now. This gives other 22090 datetime objects (e.g., mxDateTime) a chance to intercept the 22091 comparison. 22092 22093 date, time, datetime and timedelta comparison: When the exception 22094 for mixed-type comparisons in the last paragraph doesn't apply, if 22095 the comparison is == then False is returned, and if the comparison is 22096 != then True is returned. Because dict lookup and the "in" operator 22097 only invoke __eq__, this allows, for example, :: 22098 22099 if some_datetime in some_sequence: 22100 22101 and :: 22102 22103 some_dict[some_timedelta] = whatever 22104 22105 to work as expected, without raising TypeError just because the 22106 sequence is heterogeneous, or the dict has mixed-type keys. [This 22107 seems like a good idea to implement for all mixed-type comparisons 22108 that don't want to allow falling back to address comparison.] 22109 22110 The constructors building a datetime from a timestamp could raise 22111 ValueError if the platform C localtime()/gmtime() inserted "leap 22112 seconds". Leap seconds are ignored now. On such platforms, it's 22113 possible to have timestamps that differ by a second, yet where 22114 datetimes constructed from them are equal. 22115 22116 The pickle format of date, time and datetime objects has changed 22117 completely. The undocumented pickler and unpickler functions no 22118 longer exist. The undocumented __setstate__() and __getstate__() 22119 methods no longer exist either. 22120 22121 Library 22122 ------- 22123 22124 - The logging module was updated slightly; the WARN level was renamed 22125 to WARNING, and the matching function/method warn() to warning(). 22126 22127 - The pickle and cPickle modules were updated with a new pickling 22128 protocol (documented by pickletools.py, see below) and several 22129 extensions to the pickle customization API (__reduce__, __setstate__ 22130 etc.). The copy module now uses more of the pickle customization 22131 API to copy objects that don't implement __copy__ or __deepcopy__. 22132 See PEP 307 for details. 22133 22134 - The distutils "register" command now uses http://www.python.org/pypi 22135 as the default repository. (See PEP 301.) 22136 22137 - the platform dependent path related variables sep, altsep, 22138 pathsep, curdir, pardir and defpath are now defined in the platform 22139 dependent path modules (e.g. ntpath.py) rather than os.py, so these 22140 variables are now available via os.path. They continue to be 22141 available from the os module. 22142 (see <http://www.python.org/sf/680789>). 22143 22144 - array.array was added to the types repr.py knows about (see 22145 <http://www.python.org/sf/680789>). 22146 22147 - The new pickletools.py contains lots of documentation about pickle 22148 internals, and supplies some helpers for working with pickles, such as 22149 a symbolic pickle disassembler. 22150 22151 - xmlrpclib.py now supports the built-in boolean type. 22152 22153 - py_compile has a new 'doraise' flag and a new PyCompileError 22154 exception. 22155 22156 - SimpleXMLRPCServer now supports CGI through the CGIXMLRPCRequestHandler 22157 class. 22158 22159 - The sets module now raises TypeError in __cmp__, to clarify that 22160 sets are not intended to be three-way-compared; the comparison 22161 operators are overloaded as subset/superset tests. 22162 22163 - Bastion.py and rexec.py are disabled. These modules are not safe in 22164 Python 2.2. or 2.3. 22165 22166 - realpath is now exported when doing ``from poxixpath import *``. 22167 It is also exported for ntpath, macpath, and os2emxpath. 22168 See SF bug #659228. 22169 22170 - New module tarfile from Lars Gustbel provides a comprehensive interface 22171 to tar archive files with transparent gzip and bzip2 compression. 22172 See SF patch #651082. 22173 22174 - urlparse can now parse imap:// URLs. See SF feature request #618024. 22175 22176 - Tkinter.Canvas.scan_dragto() provides an optional parameter to support 22177 the gain value which is passed to Tk. SF bug# 602259. 22178 22179 - Fix logging.handlers.SysLogHandler protocol when using UNIX domain sockets. 22180 See SF patch #642974. 22181 22182 - The dospath module was deleted. Use the ntpath module when manipulating 22183 DOS paths from other platforms. 22184 22185 Tools/Demos 22186 ----------- 22187 22188 - Two new scripts (db2pickle.py and pickle2db.py) were added to the 22189 Tools/scripts directory to facilitate conversion from the old bsddb module 22190 to the new one. While the user-visible API of the new module is 22191 compatible with the old one, it's likely that the version of the 22192 underlying database library has changed. To convert from the old library, 22193 run the db2pickle.py script using the old version of Python to convert it 22194 to a pickle file. After upgrading Python, run the pickle2db.py script 22195 using the new version of Python to reconstitute your database. For 22196 example: 22197 22198 % python2.2 db2pickle.py -h some.db > some.pickle 22199 % python2.3 pickle2db.py -h some.db.new < some.pickle 22200 22201 Run the scripts without any args to get a usage message. 22202 22203 22204 Build 22205 ----- 22206 22207 - The audio driver tests (test_ossaudiodev.py and 22208 test_linuxaudiodev.py) are no longer run by default. This is 22209 because they don't always work, depending on your hardware and 22210 software. To run these tests, you must use an invocation like :: 22211 22212 ./python Lib/test/regrtest.py -u audio test_ossaudiodev 22213 22214 - On systems which build using the configure script, compiler flags which 22215 used to be lumped together using the OPT flag have been split into two 22216 groups, OPT and BASECFLAGS. OPT is meant to carry just optimization- and 22217 debug-related flags like "-g" and "-O3". BASECFLAGS is meant to carry 22218 compiler flags that are required to get a clean compile. On some 22219 platforms (many Linux flavors in particular) BASECFLAGS will be empty by 22220 default. On others, such as Mac OS X and SCO, it will contain required 22221 flags. This change allows people building Python to override OPT without 22222 fear of clobbering compiler flags which are required to get a clean build. 22223 22224 - On Darwin/Mac OS X platforms, /sw/lib and /sw/include are added to the 22225 relevant search lists in setup.py. This allows users building Python to 22226 take advantage of the many packages available from the fink project 22227 <http://fink.sf.net/>. 22228 22229 - A new Makefile target, scriptsinstall, installs a number of useful scripts 22230 from the Tools/scripts directory. 22231 22232 C API 22233 ----- 22234 22235 - PyEval_GetFrame() is now declared to return a ``PyFrameObject *`` 22236 instead of a plain ``PyObject *``. (SF patch #686601.) 22237 22238 - PyNumber_Check() now checks that the object has a nb_int or nb_float 22239 slot, rather than simply checking whether it has a non-NULL 22240 tp_as_number pointer. 22241 22242 - A C type that inherits from a base type that defines tp_as_buffer 22243 will now inherit the tp_as_buffer pointer if it doesn't define one. 22244 (SF #681367) 22245 22246 - The PyArg_Parse functions now issue a DeprecationWarning if a float 22247 argument is provided when an integer is specified (this affects the 'b', 22248 'B', 'h', 'H', 'i', and 'l' codes). Future versions of Python will 22249 raise a TypeError. 22250 22251 Tests 22252 ----- 22253 22254 - Several tests weren't being run from regrtest.py (test_timeout.py, 22255 test_tarfile.py, test_netrc.py, test_multifile.py, 22256 test_importhooks.py and test_imp.py). Now they are. (Note to 22257 developers: please read Lib/test/README when creating a new test, to 22258 make sure to do it right! All tests need to use either unittest or 22259 pydoc.) 22260 22261 - Added test_posix.py, a test suite for the posix module. 22262 22263 - Added test_hexoct.py, a test suite for hex/oct constant folding. 22264 22265 Windows 22266 ------- 22267 22268 - The timeout code for socket connect() didn't work right; this has 22269 now been fixed. test_timeout.py should pass (at least most of the 22270 time). 22271 22272 - distutils' msvccompiler class now passes the preprocessor options to 22273 the resource compiler. See SF patch #669198. 22274 22275 - The bsddb module now ships with Sleepycat's 4.1.25.NC, the latest 22276 release without strong cryptography. 22277 22278 - sys.path[0], if it contains a directory name, is now always an 22279 absolute pathname. (SF patch #664376.) 22280 22281 - The new logging package is now installed by the Windows installer. It 22282 wasn't in 2.3a1 due to oversight. 22283 22284 Mac 22285 --- 22286 22287 - There are new dialogs EasyDialogs.AskFileForOpen, AskFileForSave 22288 and AskFolder. The old macfs.StandardGetFile and friends are deprecated. 22289 22290 - Most of the standard library now uses pathnames or FSRefs in preference 22291 of FSSpecs, and use the underlying Carbon.File and Carbon.Folder modules 22292 in stead of macfs. macfs will probably be deprecated in the future. 22293 22294 - Type Carbon.File.FSCatalogInfo and supporting methods have been implemented. 22295 This also makes macfs.FSSpec.SetDates() work again. 22296 22297 - There is a new module pimp, the package install manager for Python, and 22298 accompanying applet PackageManager. These allow you to easily download 22299 and install pretested extension packages either in source or binary 22300 form. Only in MacPython-OSX. 22301 22302 - Applets are now built with bundlebuilder in MacPython-OSX, which should make 22303 them more robust and also provides a path towards BuildApplication. The 22304 downside of this change is that applets can no longer be run from the 22305 Terminal window, this will hopefully be fixed in the 2.3b1. 22306 22307 22308 What's New in Python 2.3 alpha 1? 22309 ================================= 22310 22311 *Release date: 31-Dec-2002* 22312 22313 Type/class unification and new-style classes 22314 -------------------------------------------- 22315 22316 - One can now assign to __bases__ and __name__ of new-style classes. 22317 22318 - dict() now accepts keyword arguments so that dict(one=1, two=2) 22319 is the equivalent of {"one": 1, "two": 2}. Accordingly, 22320 the existing (but undocumented) 'items' keyword argument has 22321 been eliminated. This means that dict(items=someMapping) now has 22322 a different meaning than before. 22323 22324 - int() now returns a long object if the argument is outside the 22325 integer range, so int("4" * 1000), int(1e200) and int(1L<<1000) will 22326 all return long objects instead of raising an OverflowError. 22327 22328 - Assignment to __class__ is disallowed if either the old or the new 22329 class is a statically allocated type object (such as defined by an 22330 extension module). This prevents anomalies like 2.__class__ = bool. 22331 22332 - New-style object creation and deallocation have been sped up 22333 significantly; they are now faster than classic instance creation 22334 and deallocation. 22335 22336 - The __slots__ variable can now mention "private" names, and the 22337 right thing will happen (e.g. __slots__ = ["__foo"]). 22338 22339 - The built-ins slice() and buffer() are now callable types. The 22340 types classobj (formerly class), code, function, instance, and 22341 instancemethod (formerly instance-method), which have no built-in 22342 names but are accessible through the types module, are now also 22343 callable. The type dict-proxy is renamed to dictproxy. 22344 22345 - Cycles going through the __class__ link of a new-style instance are 22346 now detected by the garbage collector. 22347 22348 - Classes using __slots__ are now properly garbage collected. 22349 [SF bug 519621] 22350 22351 - Tightened the __slots__ rules: a slot name must be a valid Python 22352 identifier. 22353 22354 - The constructor for the module type now requires a name argument and 22355 takes an optional docstring argument. Previously, this constructor 22356 ignored its arguments. As a consequence, deriving a class from a 22357 module (not from the module type) is now illegal; previously this 22358 created an unnamed module, just like invoking the module type did. 22359 [SF bug 563060] 22360 22361 - A new type object, 'basestring', is added. This is a common base type 22362 for 'str' and 'unicode', and can be used instead of 22363 types.StringTypes, e.g. to test whether something is "a string": 22364 isinstance(x, basestring) is True for Unicode and 8-bit strings. This 22365 is an abstract base class and cannot be instantiated directly. 22366 22367 - Changed new-style class instantiation so that when C's __new__ 22368 method returns something that's not a C instance, its __init__ is 22369 not called. [SF bug #537450] 22370 22371 - Fixed super() to work correctly with class methods. [SF bug #535444] 22372 22373 - If you try to pickle an instance of a class that has __slots__ but 22374 doesn't define or override __getstate__, a TypeError is now raised. 22375 This is done by adding a bozo __getstate__ to the class that always 22376 raises TypeError. (Before, this would appear to be pickled, but the 22377 state of the slots would be lost.) 22378 22379 Core and builtins 22380 ----------------- 22381 22382 - Import from zipfiles is now supported. The name of a zipfile placed 22383 on sys.path causes the import statement to look for importable Python 22384 modules (with .py, pyc and .pyo extensions) and packages inside the 22385 zipfile. The zipfile import follows the specification (though not 22386 the sample implementation) of PEP 273. The semantics of __path__ are 22387 compatible with those that have been implemented in Jython since 22388 Jython 2.1. 22389 22390 - PEP 302 has been accepted. Although it was initially developed to 22391 support zipimport, it offers a new, general import hook mechanism. 22392 Several new variables have been added to the sys module: 22393 sys.meta_path, sys.path_hooks, and sys.path_importer_cache; these 22394 make extending the import statement much more convenient than 22395 overriding the __import__ built-in function. For a description of 22396 these, see PEP 302. 22397 22398 - A frame object's f_lineno attribute can now be written to from a 22399 trace function to change which line will execute next. A command to 22400 exploit this from pdb has been added. [SF patch #643835] 22401 22402 - The _codecs support module for codecs.py was turned into a built-in 22403 module to assure that at least the built-in codecs are available 22404 to the Python parser for source code decoding according to PEP 263. 22405 22406 - issubclass now supports a tuple as the second argument, just like 22407 isinstance does. ``issubclass(X, (A, B))`` is equivalent to 22408 ``issubclass(X, A) or issubclass(X, B)``. 22409 22410 - Thanks to Armin Rigo, the last known way to provoke a system crash 22411 by cleverly arranging for a comparison function to mutate a list 22412 during a list.sort() operation has been fixed. The effect of 22413 attempting to mutate a list, or even to inspect its contents or 22414 length, while a sort is in progress, is not defined by the language. 22415 The C implementation of Python 2.3 attempts to detect mutations, 22416 and raise ValueError if one occurs, but there's no guarantee that 22417 all mutations will be caught, or that any will be caught across 22418 releases or implementations. 22419 22420 - Unicode file name processing for Windows (PEP 277) is implemented. 22421 All platforms now have an os.path.supports_unicode_filenames attribute, 22422 which is set to True on Windows NT/2000/XP, and False elsewhere. 22423 22424 - Codec error handling callbacks (PEP 293) are implemented. 22425 Error handling in unicode.encode or str.decode can now be customized. 22426 22427 - A subtle change to the semantics of the built-in function intern(): 22428 interned strings are no longer immortal. You must keep a reference 22429 to the return value intern() around to get the benefit. 22430 22431 - Use of 'None' as a variable, argument or attribute name now 22432 issues a SyntaxWarning. In the future, None may become a keyword. 22433 22434 - SET_LINENO is gone. co_lnotab is now consulted to determine when to 22435 call the trace function. C code that accessed f_lineno should call 22436 PyCode_Addr2Line instead (f_lineno is still there, but only kept up 22437 to date when there is a trace function set). 22438 22439 - There's a new warning category, FutureWarning. This is used to warn 22440 about a number of situations where the value or sign of an integer 22441 result will change in Python 2.4 as a result of PEP 237 (integer 22442 unification). The warnings implement stage B0 mentioned in that 22443 PEP. The warnings are about the following situations: 22444 22445 - Octal and hex literals without 'L' prefix in the inclusive range 22446 [0x80000000..0xffffffff]; these are currently negative ints, but 22447 in Python 2.4 they will be positive longs with the same bit 22448 pattern. 22449 22450 - Left shifts on integer values that cause the outcome to lose 22451 bits or have a different sign than the left operand. To be 22452 precise: x<<n where this currently doesn't yield the same value 22453 as long(x)<<n; in Python 2.4, the outcome will be long(x)<<n. 22454 22455 - Conversions from ints to string that show negative values as 22456 unsigned ints in the inclusive range [0x80000000..0xffffffff]; 22457 this affects the functions hex() and oct(), and the string 22458 formatting codes %u, %o, %x, and %X. In Python 2.4, these will 22459 show signed values (e.g. hex(-1) currently returns "0xffffffff"; 22460 in Python 2.4 it will return "-0x1"). 22461 22462 - The bits manipulated under the cover by sys.setcheckinterval() have 22463 been changed. Both the check interval and the ticker used to be 22464 per-thread values. They are now just a pair of global variables. 22465 In addition, the default check interval was boosted from 10 to 100 22466 bytecode instructions. This may have some effect on systems that 22467 relied on the old default value. In particular, in multi-threaded 22468 applications which try to be highly responsive, response time will 22469 increase by some (perhaps imperceptible) amount. 22470 22471 - When multiplying very large integers, a version of the so-called 22472 Karatsuba algorithm is now used. This is most effective if the 22473 inputs have roughly the same size. If they both have about N digits, 22474 Karatsuba multiplication has O(N**1.58) runtime (the exponent is 22475 log_base_2(3)) instead of the previous O(N**2). Measured results may 22476 be better or worse than that, depending on platform quirks. Besides 22477 the O() improvement in raw instruction count, the Karatsuba algorithm 22478 appears to have much better cache behavior on extremely large integers 22479 (starting in the ballpark of a million bits). Note that this is a 22480 simple implementation, and there's no intent here to compete with, 22481 e.g., GMP. It gives a very nice speedup when it applies, but a package 22482 devoted to fast large-integer arithmetic should run circles around it. 22483 22484 - u'%c' will now raise a ValueError in case the argument is an 22485 integer outside the valid range of Unicode code point ordinals. 22486 22487 - The tempfile module has been overhauled for enhanced security. The 22488 mktemp() function is now deprecated; new, safe replacements are 22489 mkstemp() (for files) and mkdtemp() (for directories), and the 22490 higher-level functions NamedTemporaryFile() and TemporaryFile(). 22491 Use of some global variables in this module is also deprecated; the 22492 new functions have keyword arguments to provide the same 22493 functionality. All Lib, Tools and Demo modules that used the unsafe 22494 interfaces have been updated to use the safe replacements. Thanks 22495 to Zack Weinberg! 22496 22497 - When x is an object whose class implements __mul__ and __rmul__, 22498 1.0*x would correctly invoke __rmul__, but 1*x would erroneously 22499 invoke __mul__. This was due to the sequence-repeat code in the int 22500 type. This has been fixed now. 22501 22502 - Previously, "str1 in str2" required str1 to be a string of length 1. 22503 This restriction has been relaxed to allow str1 to be a string of 22504 any length. Thus "'el' in 'hello world'" returns True now. 22505 22506 - File objects are now their own iterators. For a file f, iter(f) now 22507 returns f (unless f is closed), and f.next() is similar to 22508 f.readline() when EOF is not reached; however, f.next() uses a 22509 readahead buffer that messes up the file position, so mixing 22510 f.next() and f.readline() (or other methods) doesn't work right. 22511 Calling f.seek() drops the readahead buffer, but other operations 22512 don't. It so happens that this gives a nice additional speed boost 22513 to "for line in file:"; the xreadlines method and corresponding 22514 module are now obsolete. Thanks to Oren Tirosh! 22515 22516 - Encoding declarations (PEP 263, phase 1) have been implemented. A 22517 comment of the form "# -*- coding: <encodingname> -*-" in the first 22518 or second line of a Python source file indicates the encoding. 22519 22520 - list.sort() has a new implementation. While cross-platform results 22521 may vary, and in data-dependent ways, this is much faster on many 22522 kinds of partially ordered lists than the previous implementation, 22523 and reported to be just as fast on randomly ordered lists on 22524 several major platforms. This sort is also stable (if A==B and A 22525 precedes B in the list at the start, A precedes B after the sort too), 22526 although the language definition does not guarantee stability. A 22527 potential drawback is that list.sort() may require temp space of 22528 len(list)*2 bytes (``*4`` on a 64-bit machine). It's therefore possible 22529 for list.sort() to raise MemoryError now, even if a comparison function 22530 does not. See <http://www.python.org/sf/587076> for full details. 22531 22532 - All standard iterators now ensure that, once StopIteration has been 22533 raised, all future calls to next() on the same iterator will also 22534 raise StopIteration. There used to be various counterexamples to 22535 this behavior, which could have caused confusion or subtle program 22536 breakage, without any benefits. (Note that this is still an 22537 iterator's responsibility; the iterator framework does not enforce 22538 this.) 22539 22540 - Ctrl+C handling on Windows has been made more consistent with 22541 other platforms. KeyboardInterrupt can now reliably be caught, 22542 and Ctrl+C at an interactive prompt no longer terminates the 22543 process under NT/2k/XP (it never did under Win9x). Ctrl+C will 22544 interrupt time.sleep() in the main thread, and any child processes 22545 created via the popen family (on win2k; we can't make win9x work 22546 reliably) are also interrupted (as generally happens on for Linux/Unix.) 22547 [SF bugs 231273, 439992 and 581232] 22548 22549 - sys.getwindowsversion() has been added on Windows. This 22550 returns a tuple with information about the version of Windows 22551 currently running. 22552 22553 - Slices and repetitions of buffer objects now consistently return 22554 a string. Formerly, strings would be returned most of the time, 22555 but a buffer object would be returned when the repetition count 22556 was one or when the slice range was all inclusive. 22557 22558 - Unicode objects in sys.path are no longer ignored but treated 22559 as directory names. 22560 22561 - Fixed string.startswith and string.endswith built-in methods 22562 so they accept negative indices. [SF bug 493951] 22563 22564 - Fixed a bug with a continue inside a try block and a yield in the 22565 finally clause. [SF bug 567538] 22566 22567 - Most built-in sequences now support "extended slices", i.e. slices 22568 with a third "stride" parameter. For example, "hello world"[::-1] 22569 gives "dlrow olleh". 22570 22571 - A new warning PendingDeprecationWarning was added to provide 22572 direction on features which are in the process of being deprecated. 22573 The warning will not be printed by default. To see the pending 22574 deprecations, use -Walways::PendingDeprecationWarning:: 22575 as a command line option or warnings.filterwarnings() in code. 22576 22577 - Deprecated features of xrange objects have been removed as 22578 promised. The start, stop, and step attributes and the tolist() 22579 method no longer exist. xrange repetition and slicing have been 22580 removed. 22581 22582 - New built-in function enumerate(x), from PEP 279. Example: 22583 enumerate("abc") is an iterator returning (0,"a"), (1,"b"), (2,"c"). 22584 The argument can be an arbitrary iterable object. 22585 22586 - The assert statement no longer tests __debug__ at runtime. This means 22587 that assert statements cannot be disabled by assigning a false value 22588 to __debug__. 22589 22590 - A method zfill() was added to str and unicode, that fills a numeric 22591 string to the left with zeros. For example, 22592 "+123".zfill(6) -> "+00123". 22593 22594 - Complex numbers supported divmod() and the // and % operators, but 22595 these make no sense. Since this was documented, they're being 22596 deprecated now. 22597 22598 - String and unicode methods lstrip(), rstrip() and strip() now take 22599 an optional argument that specifies the characters to strip. For 22600 example, "Foo!!!?!?!?".rstrip("?!") -> "Foo". 22601 22602 - There's a new dictionary constructor (a class method of the dict 22603 class), dict.fromkeys(iterable, value=None). It constructs a 22604 dictionary with keys taken from the iterable and all values set to a 22605 single value. It can be used for building sets and for removing 22606 duplicates from sequences. 22607 22608 - Added a new dict method pop(key). This removes and returns the 22609 value corresponding to key. [SF patch #539949] 22610 22611 - A new built-in type, bool, has been added, as well as built-in 22612 names for its two values, True and False. Comparisons and sundry 22613 other operations that return a truth value have been changed to 22614 return a bool instead. Read PEP 285 for an explanation of why this 22615 is backward compatible. 22616 22617 - Fixed two bugs reported as SF #535905: under certain conditions, 22618 deallocating a deeply nested structure could cause a segfault in the 22619 garbage collector, due to interaction with the "trashcan" code; 22620 access to the current frame during destruction of a local variable 22621 could access a pointer to freed memory. 22622 22623 - The optional object allocator ("pymalloc") has been enabled by 22624 default. The recommended practice for memory allocation and 22625 deallocation has been streamlined. A header file is included, 22626 Misc/pymemcompat.h, which can be bundled with 3rd party extensions 22627 and lets them use the same API with Python versions from 1.5.2 22628 onwards. 22629 22630 - PyErr_Display will provide file and line information for all exceptions 22631 that have an attribute print_file_and_line, not just SyntaxErrors. 22632 22633 - The UTF-8 codec will now encode and decode Unicode surrogates 22634 correctly and without raising exceptions for unpaired ones. 22635 22636 - Universal newlines (PEP 278) is implemented. Briefly, using 'U' 22637 instead of 'r' when opening a text file for reading changes the line 22638 ending convention so that any of '\r', '\r\n', and '\n' is 22639 recognized (even mixed in one file); all three are converted to 22640 '\n', the standard Python line end character. 22641 22642 - file.xreadlines() now raises a ValueError if the file is closed: 22643 Previously, an xreadlines object was returned which would raise 22644 a ValueError when the xreadlines.next() method was called. 22645 22646 - sys.exit() inadvertently allowed more than one argument. 22647 An exception will now be raised if more than one argument is used. 22648 22649 - Changed evaluation order of dictionary literals to conform to the 22650 general left to right evaluation order rule. Now {f1(): f2()} will 22651 evaluate f1 first. 22652 22653 - Fixed bug #521782: when a file was in non-blocking mode, file.read() 22654 could silently lose data or wrongly throw an unknown error. 22655 22656 - The sq_repeat, sq_inplace_repeat, sq_concat and sq_inplace_concat 22657 slots are now always tried after trying the corresponding nb_* slots. 22658 This fixes a number of minor bugs (see bug #624807). 22659 22660 - Fix problem with dynamic loading on 64-bit AIX (see bug #639945). 22661 22662 Extension modules 22663 ----------------- 22664 22665 - Added three operators to the operator module: 22666 operator.pow(a,b) which is equivalent to: a**b. 22667 operator.is_(a,b) which is equivalent to: a is b. 22668 operator.is_not(a,b) which is equivalent to: a is not b. 22669 22670 - posix.openpty now works on all systems that have /dev/ptmx. 22671 22672 - A module zipimport exists to support importing code from zip 22673 archives. 22674 22675 - The new datetime module supplies classes for manipulating dates and 22676 times. The basic design came from the Zope "fishbowl process", and 22677 favors practical commercial applications over calendar esoterica. See 22678 22679 http://www.zope.org/Members/fdrake/DateTimeWiki/FrontPage 22680 22681 - _tkinter now returns Tcl objects, instead of strings. Objects which 22682 have Python equivalents are converted to Python objects, other objects 22683 are wrapped. This can be configured through the wantobjects method, 22684 or Tkinter.wantobjects. 22685 22686 - The PyBSDDB wrapper around the Sleepycat Berkeley DB library has 22687 been added as the package bsddb. The traditional bsddb module is 22688 still available in source code, but not built automatically anymore, 22689 and is now named bsddb185. This supports Berkeley DB versions from 22690 3.0 to 4.1. For help converting your databases from the old module (which 22691 probably used an obsolete version of Berkeley DB) to the new module, see 22692 the db2pickle.py and pickle2db.py scripts described in the Tools/Demos 22693 section above. 22694 22695 - unicodedata was updated to Unicode 3.2. It supports normalization 22696 and names for Hangul syllables and CJK unified ideographs. 22697 22698 - resource.getrlimit() now returns longs instead of ints. 22699 22700 - readline now dynamically adjusts its input/output stream if 22701 sys.stdin/stdout changes. 22702 22703 - The _tkinter module (and hence Tkinter) has dropped support for 22704 Tcl/Tk 8.0 and 8.1. Only Tcl/Tk versions 8.2, 8.3 and 8.4 are 22705 supported. 22706 22707 - cPickle.BadPickleGet is now a class. 22708 22709 - The time stamps in os.stat_result are floating point numbers 22710 after stat_float_times has been called. 22711 22712 - If the size passed to mmap.mmap() is larger than the length of the 22713 file on non-Windows platforms, a ValueError is raised. [SF bug 585792] 22714 22715 - The xreadlines module is slated for obsolescence. 22716 22717 - The strptime function in the time module is now always available (a 22718 Python implementation is used when the C library doesn't define it). 22719 22720 - The 'new' module is no longer an extension, but a Python module that 22721 only exists for backwards compatibility. Its contents are no longer 22722 functions but callable type objects. 22723 22724 - The bsddb.*open functions can now take 'None' as a filename. 22725 This will create a temporary in-memory bsddb that won't be 22726 written to disk. 22727 22728 - posix.getloadavg, posix.lchown, posix.killpg, posix.mknod, and 22729 posix.getpgid have been added where available. 22730 22731 - The locale module now exposes the C library's gettext interface. It 22732 also has a new function getpreferredencoding. 22733 22734 - A security hole ("double free") was found in zlib-1.1.3, a popular 22735 third party compression library used by some Python modules. The 22736 hole was quickly plugged in zlib-1.1.4, and the Windows build of 22737 Python now ships with zlib-1.1.4. 22738 22739 - pwd, grp, and resource return enhanced tuples now, with symbolic 22740 field names. 22741 22742 - array.array is now a type object. A new format character 22743 'u' indicates Py_UNICODE arrays. For those, .tounicode and 22744 .fromunicode methods are available. Arrays now support __iadd__ 22745 and __imul__. 22746 22747 - dl now builds on every system that has dlfcn.h. Failure in case 22748 of sizeof(int)!=sizeof(long)!=sizeof(void*) is delayed until dl.open 22749 is called. 22750 22751 - The sys module acquired a new attribute, api_version, which evaluates 22752 to the value of the PYTHON_API_VERSION macro with which the 22753 interpreter was compiled. 22754 22755 - Fixed bug #470582: sre module would return a tuple (None, 'a', 'ab') 22756 when applying the regular expression '^((a)c)?(ab)$' on 'ab'. It now 22757 returns (None, None, 'ab'), as expected. Also fixed handling of 22758 lastindex/lastgroup match attributes in similar cases. For example, 22759 when running the expression r'(a)(b)?b' over 'ab', lastindex must be 22760 1, not 2. 22761 22762 - Fixed bug #581080: sre scanner was not checking the buffer limit 22763 before increasing the current pointer. This was creating an infinite 22764 loop in the search function, once the pointer exceeded the buffer 22765 limit. 22766 22767 - The os.fdopen function now enforces a file mode starting with the 22768 letter 'r', 'w' or 'a', otherwise a ValueError is raised. This fixes 22769 bug #623464. 22770 22771 - The linuxaudiodev module is now deprecated; it is being replaced by 22772 ossaudiodev. The interface has been extended to cover a lot more of 22773 OSS (see www.opensound.com), including most DSP ioctls and the 22774 OSS mixer API. Documentation forthcoming in 2.3a2. 22775 22776 Library 22777 ------- 22778 22779 - imaplib.py now supports SSL (Tino Lange and Piers Lauder). 22780 22781 - Freeze's modulefinder.py has been moved to the standard library; 22782 slightly improved so it will issue less false missing submodule 22783 reports (see sf path #643711 for details). Documentation will follow 22784 with Python 2.3a2. 22785 22786 - os.path exposes getctime. 22787 22788 - unittest.py now has two additional methods called assertAlmostEqual() 22789 and failIfAlmostEqual(). They implement an approximate comparison 22790 by rounding the difference between the two arguments and comparing 22791 the result to zero. Approximate comparison is essential for 22792 unit tests of floating point results. 22793 22794 - calendar.py now depends on the new datetime module rather than 22795 the time module. As a result, the range of allowable dates 22796 has been increased. 22797 22798 - pdb has a new 'j(ump)' command to select the next line to be 22799 executed. 22800 22801 - The distutils created windows installers now can run a 22802 postinstallation script. 22803 22804 - doctest.testmod can now be called without argument, which means to 22805 test the current module. 22806 22807 - When canceling a server that implemented threading with a keyboard 22808 interrupt, the server would shut down but not terminate (waiting on 22809 client threads). A new member variable, daemon_threads, was added to 22810 the ThreadingMixIn class in SocketServer.py to make it explicit that 22811 this behavior needs to be controlled. 22812 22813 - A new module, optparse, provides a fancy alternative to getopt for 22814 command line parsing. It is a slightly modified version of Greg 22815 Ward's Optik package. 22816 22817 - UserDict.py now defines a DictMixin class which defines all dictionary 22818 methods for classes that already have a minimum mapping interface. 22819 This greatly simplifies writing classes that need to be substitutable 22820 for dictionaries (such as the shelve module). 22821 22822 - shelve.py now subclasses from UserDict.DictMixin. Now shelve supports 22823 all dictionary methods. This eases the transition to persistent 22824 storage for scripts originally written with dictionaries in mind. 22825 22826 - shelve.open and the various classes in shelve.py now accept an optional 22827 binary flag, which defaults to False. If True, the values stored in the 22828 shelf are binary pickles. 22829 22830 - A new package, logging, implements the logging API defined by PEP 22831 282. The code is written by Vinay Sajip. 22832 22833 - StreamReader, StreamReaderWriter and StreamRecoder in the codecs 22834 modules are iterators now. 22835 22836 - gzip.py now handles files exceeding 2GB. Files over 4GB also work 22837 now (provided the OS supports it, and Python is configured with large 22838 file support), but in that case the underlying gzip file format can 22839 record only the least-significant 32 bits of the file size, so that 22840 some tools working with gzipped files may report an incorrect file 22841 size. 22842 22843 - xml.sax.saxutils.unescape has been added, to replace entity references 22844 with their entity value. 22845 22846 - Queue.Queue.{put,get} now support an optional timeout argument. 22847 22848 - Various features of Tk 8.4 are exposed in Tkinter.py. The multiple 22849 option of tkFileDialog is exposed as function askopenfile{,name}s. 22850 22851 - Various configure methods of Tkinter have been stream-lined, so that 22852 tag_configure, image_configure, window_configure now return a 22853 dictionary when invoked with no argument. 22854 22855 - Importing the readline module now no longer has the side effect of 22856 calling setlocale(LC_CTYPE, ""). The initial "C" locale, or 22857 whatever locale is explicitly set by the user, is preserved. If you 22858 want repr() of 8-bit strings in your preferred encoding to preserve 22859 all printable characters of that encoding, you have to add the 22860 following code to your $PYTHONSTARTUP file or to your application's 22861 main(): 22862 22863 import locale 22864 locale.setlocale(locale.LC_CTYPE, "") 22865 22866 - shutil.move was added. shutil.copytree now reports errors as an 22867 exception at the end, instead of printing error messages. 22868 22869 - Encoding name normalization was generalized to not only 22870 replace hyphens with underscores, but also all other non-alphanumeric 22871 characters (with the exception of the dot which is used for Python 22872 package names during lookup). The aliases.py mapping was updated 22873 to the new standard. 22874 22875 - mimetypes has two new functions: guess_all_extensions() which 22876 returns a list of all known extensions for a mime type, and 22877 add_type() which adds one mapping between a mime type and 22878 an extension to the database. 22879 22880 - New module: sets, defines the class Set that implements a mutable 22881 set type using the keys of a dict to represent the set. There's 22882 also a class ImmutableSet which is useful when you need sets of sets 22883 or when you need to use sets as dict keys, and a class BaseSet which 22884 is the base class of the two. 22885 22886 - Added random.sample(population,k) for random sampling without replacement. 22887 Returns a k length list of unique elements chosen from the population. 22888 22889 - random.randrange(-sys.maxint-1, sys.maxint) no longer raises 22890 OverflowError. That is, it now accepts any combination of 'start' 22891 and 'stop' arguments so long as each is in the range of Python's 22892 bounded integers. 22893 22894 - Thanks to Raymond Hettinger, random.random() now uses a new core 22895 generator. The Mersenne Twister algorithm is implemented in C, 22896 threadsafe, faster than the previous generator, has an astronomically 22897 large period (2**19937-1), creates random floats to full 53-bit 22898 precision, and may be the most widely tested random number generator 22899 in existence. 22900 22901 The random.jumpahead(n) method has different semantics for the new 22902 generator. Instead of jumping n steps ahead, it uses n and the 22903 existing state to create a new state. This means that jumpahead() 22904 continues to support multi-threaded code needing generators of 22905 non-overlapping sequences. However, it will break code which relies 22906 on jumpahead moving a specific number of steps forward. 22907 22908 The attributes random.whseed and random.__whseed have no meaning for 22909 the new generator. Code using these attributes should switch to a 22910 new class, random.WichmannHill which is provided for backward 22911 compatibility and to make an alternate generator available. 22912 22913 - New "algorithms" module: heapq, implements a heap queue. Thanks to 22914 Kevin O'Connor for the code and Franois Pinard for an entertaining 22915 write-up explaining the theory and practical uses of heaps. 22916 22917 - New encoding for the Palm OS character set: palmos. 22918 22919 - binascii.crc32() and the zipfile module had problems on some 64-bit 22920 platforms. These have been fixed. On a platform with 8-byte C longs, 22921 crc32() now returns a signed-extended 4-byte result, so that its value 22922 as a Python int is equal to the value computed a 32-bit platform. 22923 22924 - xml.dom.minidom.toxml and toprettyxml now take an optional encoding 22925 argument. 22926 22927 - Some fixes in the copy module: when an object is copied through its 22928 __reduce__ method, there was no check for a __setstate__ method on 22929 the result [SF patch 565085]; deepcopy should treat instances of 22930 custom metaclasses the same way it treats instances of type 'type' 22931 [SF patch 560794]. 22932 22933 - Sockets now support timeout mode. After s.settimeout(T), where T is 22934 a float expressing seconds, subsequent operations raise an exception 22935 if they cannot be completed within T seconds. To disable timeout 22936 mode, use s.settimeout(None). There's also a module function, 22937 socket.setdefaulttimeout(T), which sets the default for all sockets 22938 created henceforth. 22939 22940 - getopt.gnu_getopt was added. This supports GNU-style option 22941 processing, where options can be mixed with non-option arguments. 22942 22943 - Stop using strings for exceptions. String objects used for 22944 exceptions are now classes deriving from Exception. The objects 22945 changed were: Tkinter.TclError, bdb.BdbQuit, macpath.norm_error, 22946 tabnanny.NannyNag, and xdrlib.Error. 22947 22948 - Constants BOM_UTF8, BOM_UTF16, BOM_UTF16_LE, BOM_UTF16_BE, 22949 BOM_UTF32, BOM_UTF32_LE and BOM_UTF32_BE that represent the Byte 22950 Order Mark in UTF-8, UTF-16 and UTF-32 encodings for little and 22951 big endian systems were added to the codecs module. The old names 22952 BOM32_* and BOM64_* were off by a factor of 2. 22953 22954 - Added conversion functions math.degrees() and math.radians(). 22955 22956 - math.log() now takes an optional argument: math.log(x[, base]). 22957 22958 - ftplib.retrlines() now tests for callback is None rather than testing 22959 for False. Was causing an error when given a callback object which 22960 was callable but also returned len() as zero. The change may 22961 create new breakage if the caller relied on the undocumented behavior 22962 and called with callback set to [] or some other False value not 22963 identical to None. 22964 22965 - random.gauss() uses a piece of hidden state used by nothing else, 22966 and the .seed() and .whseed() methods failed to reset it. In other 22967 words, setting the seed didn't completely determine the sequence of 22968 results produced by random.gauss(). It does now. Programs repeatedly 22969 mixing calls to a seed method with calls to gauss() may see different 22970 results now. 22971 22972 - The pickle.Pickler class grew a clear_memo() method to mimic that 22973 provided by cPickle.Pickler. 22974 22975 - difflib's SequenceMatcher class now does a dynamic analysis of 22976 which elements are so frequent as to constitute noise. For 22977 comparing files as sequences of lines, this generally works better 22978 than the IS_LINE_JUNK function, and function ndiff's linejunk 22979 argument defaults to None now as a result. A happy benefit is 22980 that SequenceMatcher may run much faster now when applied 22981 to large files with many duplicate lines (for example, C program 22982 text with lots of repeated "}" and "return NULL;" lines). 22983 22984 - New Text.dump() method in Tkinter module. 22985 22986 - New distutils commands for building packagers were added to 22987 support pkgtool on Solaris and swinstall on HP-UX. 22988 22989 - distutils now has a new abstract binary packager base class 22990 command/bdist_packager, which simplifies writing packagers. 22991 This will hopefully provide the missing bits to encourage 22992 people to submit more packagers, e.g. for Debian, FreeBSD 22993 and other systems. 22994 22995 - The UTF-16, -LE and -BE stream readers now raise a 22996 NotImplementedError for all calls to .readline(). Previously, they 22997 used to just produce garbage or fail with an encoding error -- 22998 UTF-16 is a 2-byte encoding and the C lib's line reading APIs don't 22999 work well with these. 23000 23001 - compileall now supports quiet operation. 23002 23003 - The BaseHTTPServer now implements optional HTTP/1.1 persistent 23004 connections. 23005 23006 - socket module: the SSL support was broken out of the main 23007 _socket module C helper and placed into a new _ssl helper 23008 which now gets imported by socket.py if available and working. 23009 23010 - encodings package: added aliases for all supported IANA character 23011 sets 23012 23013 - ftplib: to safeguard the user's privacy, anonymous login will use 23014 "anonymous@" as default password, rather than the real user and host 23015 name. 23016 23017 - webbrowser: tightened up the command passed to os.system() so that 23018 arbitrary shell code can't be executed because a bogus URL was 23019 passed in. 23020 23021 - gettext.translation has an optional fallback argument, and 23022 gettext.find an optional all argument. Translations will now fallback 23023 on a per-message basis. The module supports plural forms, by means 23024 of gettext.[d]ngettext and Translation.[u]ngettext. 23025 23026 - distutils bdist commands now offer a --skip-build option. 23027 23028 - warnings.warn now accepts a Warning instance as first argument. 23029 23030 - The xml.sax.expatreader.ExpatParser class will no longer create 23031 circular references by using itself as the locator that gets passed 23032 to the content handler implementation. [SF bug #535474] 23033 23034 - The email.Parser.Parser class now properly parses strings regardless 23035 of their line endings, which can be any of \r, \n, or \r\n (CR, LF, 23036 or CRLF). Also, the Header class's constructor default arguments 23037 has changed slightly so that an explicit maxlinelen value is always 23038 honored, and so unicode conversion error handling can be specified. 23039 23040 - distutils' build_ext command now links C++ extensions with the C++ 23041 compiler available in the Makefile or CXX environment variable, if 23042 running under \*nix. 23043 23044 - New module bz2: provides a comprehensive interface for the bz2 compression 23045 library. It implements a complete file interface, one-shot (de)compression 23046 functions, and types for sequential (de)compression. 23047 23048 - New pdb command 'pp' which is like 'p' except that it pretty-prints 23049 the value of its expression argument. 23050 23051 - Now bdist_rpm distutils command understands a verify_script option in 23052 the config file, including the contents of the referred filename in 23053 the "%verifyscript" section of the rpm spec file. 23054 23055 - Fixed bug #495695: webbrowser module would run graphic browsers in a 23056 unix environment even if DISPLAY was not set. Also, support for 23057 skipstone browser was included. 23058 23059 - Fixed bug #636769: rexec would run unallowed code if subclasses of 23060 strings were used as parameters for certain functions. 23061 23062 Tools/Demos 23063 ----------- 23064 23065 - pygettext.py now supports globbing on Windows, and accepts module 23066 names in addition to accepting file names. 23067 23068 - The SGI demos (Demo/sgi) have been removed. Nobody thought they 23069 were interesting any more. (The SGI library modules and extensions 23070 are still there; it is believed that at least some of these are 23071 still used and useful.) 23072 23073 - IDLE supports the new encoding declarations (PEP 263); it can also 23074 deal with legacy 8-bit files if they use the locale's encoding. It 23075 allows non-ASCII strings in the interactive shell and executes them 23076 in the locale's encoding. 23077 23078 - freeze.py now produces binaries which can import shared modules, 23079 unlike before when this failed due to missing symbol exports in 23080 the generated binary. 23081 23082 Build 23083 ----- 23084 23085 - On Unix, IDLE is now installed automatically. 23086 23087 - The fpectl module is not built by default; it's dangerous or useless 23088 except in the hands of experts. 23089 23090 - The public Python C API will generally be declared using PyAPI_FUNC 23091 and PyAPI_DATA macros, while Python extension module init functions 23092 will be declared with PyMODINIT_FUNC. DL_EXPORT/DL_IMPORT macros 23093 are deprecated. 23094 23095 - A bug was fixed that could cause COUNT_ALLOCS builds to segfault, or 23096 get into infinite loops, when a new-style class got garbage-collected. 23097 Unfortunately, to avoid this, the way COUNT_ALLOCS works requires 23098 that new-style classes be immortal in COUNT_ALLOCS builds. Note that 23099 COUNT_ALLOCS is not enabled by default, in either release or debug 23100 builds, and that new-style classes are immortal only in COUNT_ALLOCS 23101 builds. 23102 23103 - Compiling out the cyclic garbage collector is no longer an option. 23104 The old symbol WITH_CYCLE_GC is now ignored, and Python.h arranges 23105 that it's always defined (for the benefit of any extension modules 23106 that may be conditionalizing on it). A bonus is that any extension 23107 type participating in cyclic gc can choose to participate in the 23108 Py_TRASHCAN mechanism now too; in the absence of cyclic gc, this used 23109 to require editing the core to teach the trashcan mechanism about the 23110 new type. 23111 23112 - According to Annex F of the current C standard, 23113 23114 The Standard C macro HUGE_VAL and its float and long double analogs, 23115 HUGE_VALF and HUGE_VALL, expand to expressions whose values are 23116 positive infinities. 23117 23118 Python only uses the double HUGE_VAL, and only to #define its own symbol 23119 Py_HUGE_VAL. Some platforms have incorrect definitions for HUGE_VAL. 23120 pyport.h used to try to worm around that, but the workarounds triggered 23121 other bugs on other platforms, so we gave up. If your platform defines 23122 HUGE_VAL incorrectly, you'll need to #define Py_HUGE_VAL to something 23123 that works on your platform. The only instance of this I'm sure about 23124 is on an unknown subset of Cray systems, described here: 23125 23126 http://www.cray.com/swpubs/manuals/SN-2194_2.0/html-SN-2194_2.0/x3138.htm 23127 23128 Presumably 2.3a1 breaks such systems. If anyone uses such a system, help! 23129 23130 - The configure option --without-doc-strings can be used to remove the 23131 doc strings from the built-in functions and modules; this reduces the 23132 size of the executable. 23133 23134 - The universal newlines option (PEP 278) is on by default. On Unix 23135 it can be disabled by passing --without-universal-newlines to the 23136 configure script. On other platforms, remove 23137 WITH_UNIVERSAL_NEWLINES from pyconfig.h. 23138 23139 - On Unix, a shared libpython2.3.so can be created with --enable-shared. 23140 23141 - All uses of the CACHE_HASH, INTERN_STRINGS, and DONT_SHARE_SHORT_STRINGS 23142 preprocessor symbols were eliminated. The internal decisions they 23143 controlled stopped being experimental long ago. 23144 23145 - The tools used to build the documentation now work under Cygwin as 23146 well as Unix. 23147 23148 - The bsddb and dbm module builds have been changed to try and avoid version 23149 skew problems and disable linkage with Berkeley DB 1.85 unless the 23150 installer knows what s/he's doing. See the section on building these 23151 modules in the README file for details. 23152 23153 C API 23154 ----- 23155 23156 - PyNumber_Check() now returns true for string and unicode objects. 23157 This is a result of these types having a partially defined 23158 tp_as_number slot. (This is not a feature, but an indication that 23159 PyNumber_Check() is not very useful to determine numeric behavior. 23160 It may be deprecated.) 23161 23162 - The string object's layout has changed: the pointer member 23163 ob_sinterned has been replaced by an int member ob_sstate. On some 23164 platforms (e.g. most 64-bit systems) this may change the offset of 23165 the ob_sval member, so as a precaution the API_VERSION has been 23166 incremented. The apparently unused feature of "indirect interned 23167 strings", supported by the ob_sinterned member, is gone. Interned 23168 strings are now usually mortal; there is a new API, 23169 PyString_InternImmortal() that creates immortal interned strings. 23170 (The ob_sstate member can only take three values; however, while 23171 making it a char saves a few bytes per string object on average, in 23172 it also slowed things down a bit because ob_sval was no longer 23173 aligned.) 23174 23175 - The Py_InitModule*() functions now accept NULL for the 'methods' 23176 argument. Modules without global functions are becoming more common 23177 now that factories can be types rather than functions. 23178 23179 - New C API PyUnicode_FromOrdinal() which exposes unichr() at C 23180 level. 23181 23182 - New functions PyErr_SetExcFromWindowsErr() and 23183 PyErr_SetExcFromWindowsErrWithFilename(). Similar to 23184 PyErr_SetFromWindowsErrWithFilename() and 23185 PyErr_SetFromWindowsErr(), but they allow specifying 23186 the exception type to raise. Available on Windows. 23187 23188 - Py_FatalError() is now declared as taking a const char* argument. It 23189 was previously declared without const. This should not affect working 23190 code. 23191 23192 - Added new macro PySequence_ITEM(o, i) that directly calls 23193 sq_item without rechecking that o is a sequence and without 23194 adjusting for negative indices. 23195 23196 - PyRange_New() now raises ValueError if the fourth argument is not 1. 23197 This is part of the removal of deprecated features of the xrange 23198 object. 23199 23200 - PyNumber_Coerce() and PyNumber_CoerceEx() now also invoke the type's 23201 coercion if both arguments have the same type but this type has the 23202 CHECKTYPES flag set. This is to better support proxies. 23203 23204 - The type of tp_free has been changed from "``void (*)(PyObject *)``" to 23205 "``void (*)(void *)``". 23206 23207 - PyObject_Del, PyObject_GC_Del are now functions instead of macros. 23208 23209 - A type can now inherit its metatype from its base type. Previously, 23210 when PyType_Ready() was called, if ob_type was found to be NULL, it 23211 was always set to &PyType_Type; now it is set to base->ob_type, 23212 where base is tp_base, defaulting to &PyObject_Type. 23213 23214 - PyType_Ready() accidentally did not inherit tp_is_gc; now it does. 23215 23216 - The PyCore_* family of APIs have been removed. 23217 23218 - The "u#" parser marker will now pass through Unicode objects as-is 23219 without going through the buffer API. 23220 23221 - The enumerators of cmp_op have been renamed to use the prefix ``PyCmp_``. 23222 23223 - An old #define of ANY as void has been removed from pyport.h. This 23224 hasn't been used since Python's pre-ANSI days, and the #define has 23225 been marked as obsolete since then. SF bug 495548 says it created 23226 conflicts with other packages, so keeping it around wasn't harmless. 23227 23228 - Because Python's magic number scheme broke on January 1st, we decided 23229 to stop Python development. Thanks for all the fish! 23230 23231 - Some of us don't like fish, so we changed Python's magic number 23232 scheme to a new one. See Python/import.c for details. 23233 23234 New platforms 23235 ------------- 23236 23237 - OpenVMS is now supported. 23238 23239 - AtheOS is now supported. 23240 23241 - the EMX runtime environment on OS/2 is now supported. 23242 23243 - GNU/Hurd is now supported. 23244 23245 Tests 23246 ----- 23247 23248 - The regrtest.py script's -u option now provides a way to say "allow 23249 all resources except this one." For example, to allow everything 23250 except bsddb, give the option '-uall,-bsddb'. 23251 23252 Windows 23253 ------- 23254 23255 - The Windows distribution now ships with version 4.0.14 of the 23256 Sleepycat Berkeley database library. This should be a huge 23257 improvement over the previous Berkeley DB 1.85, which had many 23258 bugs. 23259 XXX What are the licensing issues here? 23260 XXX If a user has a database created with a previous version of 23261 XXX Python, what must they do to convert it? 23262 XXX I'm still not sure how to link this thing (see PCbuild/readme.txt). 23263 XXX The version # is likely to change before 2.3a1. 23264 23265 - The Windows distribution now ships with a Secure Sockets Library (SLL) 23266 module (_ssl.pyd) 23267 23268 - The Windows distribution now ships with Tcl/Tk version 8.4.1 (it 23269 previously shipped with Tcl/Tk 8.3.2). 23270 23271 - When Python is built under a Microsoft compiler, sys.version now 23272 includes the compiler version number (_MSC_VER). For example, under 23273 MSVC 6, sys.version contains the substring "MSC v.1200 ". 1200 is 23274 the value of _MSC_VER under MSVC 6. 23275 23276 - Sometimes the uninstall executable (UNWISE.EXE) vanishes. One cause 23277 of that has been fixed in the installer (disabled Wise's "delete in- 23278 use files" uninstall option). 23279 23280 - Fixed a bug in urllib's proxy handling in Windows. [SF bug #503031] 23281 23282 - The installer now installs Start menu shortcuts under (the local 23283 equivalent of) "All Users" when doing an Admin install. 23284 23285 - file.truncate([newsize]) now works on Windows for all newsize values. 23286 It used to fail if newsize didn't fit in 32 bits, reflecting a 23287 limitation of MS _chsize (which is no longer used). 23288 23289 - os.waitpid() is now implemented for Windows, and can be used to block 23290 until a specified process exits. This is similar to, but not exactly 23291 the same as, os.waitpid() on POSIX systems. If you're waiting for 23292 a specific process whose pid was obtained from one of the spawn() 23293 functions, the same Python os.waitpid() code works across platforms. 23294 See the docs for details. The docs were changed to clarify that 23295 spawn functions return, and waitpid requires, a process handle on 23296 Windows (not the same thing as a Windows process id). 23297 23298 - New tempfile.TemporaryFile implementation for Windows: this doesn't 23299 need a TemporaryFileWrapper wrapper anymore, and should be immune 23300 to a nasty problem: before 2.3, if you got a temp file on Windows, it 23301 got wrapped in an object whose close() method first closed the 23302 underlying file, then deleted the file. This usually worked fine. 23303 However, the spawn family of functions on Windows create (at a low C 23304 level) the same set of open files in the spawned process Q as were 23305 open in the spawning process P. If a temp file f was among them, then 23306 doing f.close() in P first closed P's C-level file handle on f, but Q's 23307 C-level file handle on f remained open, so the attempt in P to delete f 23308 blew up with a "Permission denied" error (Windows doesn't allow 23309 deleting open files). This was surprising, subtle, and difficult to 23310 work around. 23311 23312 - The os module now exports all the symbolic constants usable with the 23313 low-level os.open() on Windows: the new constants in 2.3 are 23314 O_NOINHERIT, O_SHORT_LIVED, O_TEMPORARY, O_RANDOM and O_SEQUENTIAL. 23315 The others were also available in 2.2: O_APPEND, O_BINARY, O_CREAT, 23316 O_EXCL, O_RDONLY, O_RDWR, O_TEXT, O_TRUNC and O_WRONLY. Contrary 23317 to Microsoft docs, O_SHORT_LIVED does not seem to imply O_TEMPORARY 23318 (so specify both if you want both; note that neither is useful unless 23319 specified with O_CREAT too). 23320 23321 Mac 23322 ---- 23323 23324 - Mac/Relnotes is gone, the release notes are now here. 23325 23326 - Python (the OSX-only, unix-based version, not the OS9-compatible CFM 23327 version) now fully supports unicode strings as arguments to various file 23328 system calls, eg. open(), file(), os.stat() and os.listdir(). 23329 23330 - The current naming convention for Python on the Macintosh is that MacPython 23331 refers to the unix-based OSX-only version, and MacPython-OS9 refers to the 23332 CFM-based version that runs on both OS9 and OSX. 23333 23334 - All MacPython-OS9 functionality is now available in an OSX unix build, 23335 including the Carbon modules, the IDE, OSA support, etc. A lot of this 23336 will only work correctly in a framework build, though, because you cannot 23337 talk to the window manager unless your application is run from a .app 23338 bundle. There is a command line tool "pythonw" that runs your script 23339 with an interpreter living in such a .app bundle, this interpreter should 23340 be used to run any Python script using the window manager (including 23341 Tkinter or wxPython scripts). 23342 23343 - Most of Mac/Lib has moved to Lib/plat-mac, which is again used both in 23344 MacPython-OSX and MacPython-OS9. The only modules remaining in Mac/Lib 23345 are specifically for MacPython-OS9 (CFM support, preference resources, etc). 23346 23347 - A new utility PythonLauncher will start a Python interpreter when a .py or 23348 .pyw script is double-clicked in the Finder. By default .py scripts are 23349 run with a normal Python interpreter in a Terminal window and .pyw 23350 files are run with a window-aware pythonw interpreter without a Terminal 23351 window, but all this can be customized. 23352 23353 - MacPython-OS9 is now Carbon-only, so it runs on Mac OS 9 or Mac OS X and 23354 possibly on Mac OS 8.6 with the right CarbonLib installed, but not on earlier 23355 releases. 23356 23357 - Many tools such as BuildApplet.py and gensuitemodule.py now support a command 23358 line interface too. 23359 23360 - All the Carbon classes are now PEP253 compliant, meaning that you can 23361 subclass them from Python. Most of the attributes have gone, you should 23362 now use the accessor function call API, which is also what Apple's 23363 documentation uses. Some attributes such as grafport.visRgn are still 23364 available for convenience. 23365 23366 - New Carbon modules File (implementing the APIs in Files.h and Aliases.h) 23367 and Folder (APIs from Folders.h). The old macfs built-in module is 23368 gone, and replaced by a Python wrapper around the new modules. 23369 23370 - Pathname handling should now be fully consistent: MacPython-OSX always uses 23371 unix pathnames and MacPython-OS9 always uses colon-separated Mac pathnames 23372 (also when running on Mac OS X). 23373 23374 - New Carbon modules Help and AH give access to the Carbon Help Manager. 23375 There are hooks in the IDE to allow accessing the Python documentation 23376 (and Apple's Carbon and Cocoa documentation) through the Help Viewer. 23377 See Mac/OSX/README for converting the Python documentation to a 23378 Help Viewer compatible form and installing it. 23379 23380 - OSA support has been redesigned and the generated Python classes now 23381 mirror the inheritance defined by the underlying OSA classes. 23382 23383 - MacPython no longer maps both \r and \n to \n on input for any text file. 23384 This feature has been replaced by universal newline support (PEP278). 23385 23386 - The default encoding for Python sourcefiles in MacPython-OS9 is no longer 23387 mac-roman (or whatever your local Mac encoding was) but "ascii", like on 23388 other platforms. If you really need sourcefiles with Mac characters in them 23389 you can change this in site.py. 23390 23391 23392 What's New in Python 2.2 final? 23393 =============================== 23394 23395 *Release date: 21-Dec-2001* 23396 23397 Type/class unification and new-style classes 23398 -------------------------------------------- 23399 23400 - pickle.py, cPickle: allow pickling instances of new-style classes 23401 with a custom metaclass. 23402 23403 Core and builtins 23404 ----------------- 23405 23406 - weakref proxy object: when comparing, unwrap both arguments if both 23407 are proxies. 23408 23409 Extension modules 23410 ----------------- 23411 23412 - binascii.b2a_base64(): fix a potential buffer overrun when encoding 23413 very short strings. 23414 23415 - cPickle: the obscure "fast" mode was suspected of causing stack 23416 overflows on the Mac. Hopefully fixed this by setting the recursion 23417 limit much smaller. If the limit is too low (it only affects 23418 performance), you can change it by defining PY_CPICKLE_FAST_LIMIT 23419 when compiling cPickle.c (or in pyconfig.h). 23420 23421 Library 23422 ------- 23423 23424 - dumbdbm.py: fixed a dumb old bug (the file didn't get synched at 23425 close or delete time). 23426 23427 - rfc822.py: fixed a bug where the address '<>' was converted to None 23428 instead of an empty string (also fixes the email.Utils module). 23429 23430 - xmlrpclib.py: version 1.0.0; uses precision for doubles. 23431 23432 - test suite: the pickle and cPickle tests were not executing any code 23433 when run from the standard regression test. 23434 23435 Tools/Demos 23436 ----------- 23437 23438 Build 23439 ----- 23440 23441 C API 23442 ----- 23443 23444 New platforms 23445 ------------- 23446 23447 Tests 23448 ----- 23449 23450 Windows 23451 ------- 23452 23453 - distutils package: fixed broken Windows installers (bdist_wininst). 23454 23455 - tempfile.py: prevent mysterious warnings when TemporaryFileWrapper 23456 instances are deleted at process exit time. 23457 23458 - socket.py: prevent mysterious warnings when socket instances are 23459 deleted at process exit time. 23460 23461 - posixmodule.c: fix a Windows crash with stat() of a filename ending 23462 in backslash. 23463 23464 Mac 23465 ---- 23466 23467 - The Carbon toolbox modules have been upgraded to Universal Headers 23468 3.4, and experimental CoreGraphics and CarbonEvents modules have 23469 been added. All only for framework-enabled MacOSX. 23470 23471 23472 What's New in Python 2.2c1? 23473 =========================== 23474 23475 *Release date: 14-Dec-2001* 23476 23477 Type/class unification and new-style classes 23478 -------------------------------------------- 23479 23480 - Guido's tutorial introduction to the new type/class features has 23481 been extensively updated. See 23482 23483 http://www.python.org/2.2/descrintro.html 23484 23485 That remains the primary documentation in this area. 23486 23487 - Fixed a leak: instance variables declared with __slots__ were never 23488 deleted! 23489 23490 - The "delete attribute" method of descriptor objects is called 23491 __delete__, not __del__. In previous releases, it was mistakenly 23492 called __del__, which created an unfortunate overloading condition 23493 with finalizers. (The "get attribute" and "set attribute" methods 23494 are still called __get__ and __set__, respectively.) 23495 23496 - Some subtle issues with the super built-in were fixed: 23497 23498 (a) When super itself is subclassed, its __get__ method would still 23499 return an instance of the base class (i.e., of super). 23500 23501 (b) super(C, C()).__class__ would return C rather than super. This 23502 is confusing. To fix this, I decided to change the semantics of 23503 super so that it only applies to code attributes, not to data 23504 attributes. After all, overriding data attributes is not 23505 supported anyway. 23506 23507 (c) The __get__ method didn't check whether the argument was an 23508 instance of the type used in creation of the super instance. 23509 23510 - Previously, hash() of an instance of a subclass of a mutable type 23511 (list or dictionary) would return some value, rather than raising 23512 TypeError. This has been fixed. Also, directly calling 23513 dict.__hash__ and list.__hash__ now raises the same TypeError 23514 (previously, these were the same as object.__hash__). 23515 23516 - New-style objects now support deleting their __dict__. This is for 23517 all intents and purposes equivalent to assigning a brand new empty 23518 dictionary, but saves space if the object is not used further. 23519 23520 Core and builtins 23521 ----------------- 23522 23523 - -Qnew now works as documented in PEP 238: when -Qnew is passed on 23524 the command line, all occurrences of "/" use true division instead 23525 of classic division. See the PEP for details. Note that "all" 23526 means all instances in library and 3rd-party modules, as well as in 23527 your own code. As the PEP says, -Qnew is intended for use only in 23528 educational environments with control over the libraries in use. 23529 Note that test_coercion.py in the standard Python test suite fails 23530 under -Qnew; this is expected, and won't be repaired until true 23531 division becomes the default (in the meantime, test_coercion is 23532 testing the current rules). 23533 23534 - complex() now only allows the first argument to be a string 23535 argument, and raises TypeError if either the second arg is a string 23536 or if the second arg is specified when the first is a string. 23537 23538 Extension modules 23539 ----------------- 23540 23541 - gc.get_referents was renamed to gc.get_referrers. 23542 23543 Library 23544 ------- 23545 23546 - Functions in the os.spawn() family now release the global interpreter 23547 lock around calling the platform spawn. They should always have done 23548 this, but did not before 2.2c1. Multithreaded programs calling 23549 an os.spawn function with P_WAIT will no longer block all Python threads 23550 until the spawned program completes. It's possible that some programs 23551 relies on blocking, although more likely by accident than by design. 23552 23553 - webbrowser defaults to netscape.exe on OS/2 now. 23554 23555 - Tix.ResizeHandle exposes detach_widget, hide, and show. 23556 23557 - The charset alias windows_1252 has been added. 23558 23559 - types.StringTypes is a tuple containing the defined string types; 23560 usually this will be (str, unicode), but if Python was compiled 23561 without Unicode support it will be just (str,). 23562 23563 - The pulldom and minidom modules were synchronized to PyXML. 23564 23565 Tools/Demos 23566 ----------- 23567 23568 - A new script called Tools/scripts/google.py was added, which fires 23569 off a search on Google. 23570 23571 Build 23572 ----- 23573 23574 - Note that release builds of Python should arrange to define the 23575 preprocessor symbol NDEBUG on the command line (or equivalent). 23576 In the 2.2 pre-release series we tried to define this by magic in 23577 Python.h instead, but it proved to cause problems for extension 23578 authors. The Unix, Windows and Mac builds now all define NDEBUG in 23579 release builds via cmdline (or equivalent) instead. Ports to 23580 other platforms should do likewise. 23581 23582 - It is no longer necessary to use --with-suffix when building on a 23583 case-insensitive file system (such as Mac OS X HFS+). In the build 23584 directory an extension is used, but not in the installed python. 23585 23586 C API 23587 ----- 23588 23589 - New function PyDict_MergeFromSeq2() exposes the built-in dict 23590 constructor's logic for updating a dictionary from an iterable object 23591 producing key-value pairs. 23592 23593 - PyArg_ParseTupleAndKeywords() requires that the number of entries in 23594 the keyword list equal the number of argument specifiers. This 23595 wasn't checked correctly, and PyArg_ParseTupleAndKeywords could even 23596 dump core in some bad cases. This has been repaired. As a result, 23597 PyArg_ParseTupleAndKeywords may raise RuntimeError in bad cases that 23598 previously went unchallenged. 23599 23600 New platforms 23601 ------------- 23602 23603 Tests 23604 ----- 23605 23606 Windows 23607 ------- 23608 23609 Mac 23610 ---- 23611 23612 - In unix-Python on Mac OS X (and darwin) sys.platform is now "darwin", 23613 without any trailing digits. 23614 23615 - Changed logic for finding python home in Mac OS X framework Pythons. 23616 Now sys.executable points to the executable again, in stead of to 23617 the shared library. The latter is used only for locating the python 23618 home. 23619 23620 23621 What's New in Python 2.2b2? 23622 =========================== 23623 23624 *Release date: 16-Nov-2001* 23625 23626 Type/class unification and new-style classes 23627 -------------------------------------------- 23628 23629 - Multiple inheritance mixing new-style and classic classes in the 23630 list of base classes is now allowed, so this works now: 23631 23632 class Classic: pass 23633 class Mixed(Classic, object): pass 23634 23635 The MRO (method resolution order) for each base class is respected 23636 according to its kind, but the MRO for the derived class is computed 23637 using new-style MRO rules if any base class is a new-style class. 23638 This needs to be documented. 23639 23640 - The new built-in dictionary() constructor, and dictionary type, have 23641 been renamed to dict. This reflects a decade of common usage. 23642 23643 - dict() now accepts an iterable object producing 2-sequences. For 23644 example, dict(d.items()) == d for any dictionary d. The argument, 23645 and the elements of the argument, can be any iterable objects. 23646 23647 - New-style classes can now have a __del__ method, which is called 23648 when the instance is deleted (just like for classic classes). 23649 23650 - Assignment to object.__dict__ is now possible, for objects that are 23651 instances of new-style classes that have a __dict__ (unless the base 23652 class forbids it). 23653 23654 - Methods of built-in types now properly check for keyword arguments 23655 (formerly these were silently ignored). The only built-in methods 23656 that take keyword arguments are __call__, __init__ and __new__. 23657 23658 - The socket function has been converted to a type; see below. 23659 23660 Core and builtins 23661 ----------------- 23662 23663 - Assignment to __debug__ raises SyntaxError at compile-time. This 23664 was promised when 2.1c1 was released as "What's New in Python 2.1c1" 23665 (see below) says. 23666 23667 - Clarified the error messages for unsupported operands to an operator 23668 (like 1 + ''). 23669 23670 Extension modules 23671 ----------------- 23672 23673 - mmap has a new keyword argument, "access", allowing a uniform way for 23674 both Windows and Unix users to create read-only, write-through and 23675 copy-on-write memory mappings. This was previously possible only on 23676 Unix. A new keyword argument was required to support this in a 23677 uniform way because the mmap() signatures had diverged across 23678 platforms. Thanks to Jay T Miller for repairing this! 23679 23680 - By default, the gc.garbage list now contains only those instances in 23681 unreachable cycles that have __del__ methods; in 2.1 it contained all 23682 instances in unreachable cycles. "Instances" here has been generalized 23683 to include instances of both new-style and old-style classes. 23684 23685 - The socket module defines a new method for socket objects, 23686 sendall(). This is like send() but may make multiple calls to 23687 send() until all data has been sent. Also, the socket function has 23688 been converted to a subclassable type, like list and tuple (etc.) 23689 before it; socket and SocketType are now the same thing. 23690 23691 - Various bugfixes to the curses module. There is now a test suite 23692 for the curses module (you have to run it manually). 23693 23694 - binascii.b2a_base64 no longer places an arbitrary restriction of 57 23695 bytes on its input. 23696 23697 Library 23698 ------- 23699 23700 - tkFileDialog exposes a Directory class and askdirectory 23701 convenience function. 23702 23703 - Symbolic group names in regular expressions must be unique. For 23704 example, the regexp r'(?P<abc>)(?P<abc>)' is not allowed, because a 23705 single name can't mean both "group 1" and "group 2" simultaneously. 23706 Python 2.2 detects this error at regexp compilation time; 23707 previously, the error went undetected, and results were 23708 unpredictable. Also in sre, the pattern.split(), pattern.sub(), and 23709 pattern.subn() methods have been rewritten in C. Also, an 23710 experimental function/method finditer() has been added, which works 23711 like findall() but returns an iterator. 23712 23713 - Tix exposes more commands through the classes DirSelectBox, 23714 DirSelectDialog, ListNoteBook, Meter, CheckList, and the 23715 methods tix_addbitmapdir, tix_cget, tix_configure, tix_filedialog, 23716 tix_getbitmap, tix_getimage, tix_option_get, and tix_resetoptions. 23717 23718 - Traceback objects are now scanned by cyclic garbage collection, so 23719 cycles created by casual use of sys.exc_info() no longer cause 23720 permanent memory leaks (provided garbage collection is enabled). 23721 23722 - mimetypes.py has optional support for non-standard, but commonly 23723 found types. guess_type() and guess_extension() now accept an 23724 optional 'strict' flag, defaulting to true, which controls whether 23725 recognize non-standard types or not. A few non-standard types we 23726 know about have been added. Also, when run as a script, there are 23727 new -l and -e options. 23728 23729 - statcache is now deprecated. 23730 23731 - email.Utils.formatdate() now produces the preferred RFC 2822 style 23732 dates with numeric timezones (it used to produce obsolete dates 23733 hard coded to "GMT" timezone). An optional 'localtime' flag is 23734 added to produce dates in the local timezone, with daylight savings 23735 time properly taken into account. 23736 23737 - In pickle and cPickle, instead of masking errors in load() by 23738 transforming them into SystemError, we let the original exception 23739 propagate out. Also, implement support for __safe_for_unpickling__ 23740 in pickle, as it already was supported in cPickle. 23741 23742 Tools/Demos 23743 ----------- 23744 23745 Build 23746 ----- 23747 23748 - The dbm module is built using libdb1 if available. The bsddb module 23749 is built with libdb3 if available. 23750 23751 - Misc/Makefile.pre.in has been removed by BDFL pronouncement. 23752 23753 C API 23754 ----- 23755 23756 - New function PySequence_Fast_GET_SIZE() returns the size of a non- 23757 NULL result from PySequence_Fast(), more quickly than calling 23758 PySequence_Size(). 23759 23760 - New argument unpacking function PyArg_UnpackTuple() added. 23761 23762 - New functions PyObject_CallFunctionObjArgs() and 23763 PyObject_CallMethodObjArgs() have been added to make it more 23764 convenient and efficient to call functions and methods from C. 23765 23766 - PyArg_ParseTupleAndKeywords() no longer masks errors, so it's 23767 possible that this will propagate errors it didn't before. 23768 23769 - New function PyObject_CheckReadBuffer(), which returns true if its 23770 argument supports the single-segment readable buffer interface. 23771 23772 New platforms 23773 ------------- 23774 23775 - We've finally confirmed that this release builds on HP-UX 11.00, 23776 *with* threads, and passes the test suite. 23777 23778 - Thanks to a series of patches from Michael Muller, Python may build 23779 again under OS/2 Visual Age C++. 23780 23781 - Updated RISCOS port by Dietmar Schwertberger. 23782 23783 Tests 23784 ----- 23785 23786 - Added a test script for the curses module. It isn't run automatically; 23787 regrtest.py must be run with '-u curses' to enable it. 23788 23789 Windows 23790 ------- 23791 23792 Mac 23793 ---- 23794 23795 - PythonScript has been moved to unsupported and is slated to be 23796 removed completely in the next release. 23797 23798 - It should now be possible to build applets that work on both OS9 and 23799 OSX. 23800 23801 - The core is now linked with CoreServices not Carbon; as a side 23802 result, default 8bit encoding on OSX is now ASCII. 23803 23804 - Python should now build on OSX 10.1.1 23805 23806 23807 What's New in Python 2.2b1? 23808 =========================== 23809 23810 *Release date: 19-Oct-2001* 23811 23812 Type/class unification and new-style classes 23813 -------------------------------------------- 23814 23815 - New-style classes are now always dynamic (except for built-in and 23816 extension types). There is no longer a performance penalty, and I 23817 no longer see another reason to keep this baggage around. One relic 23818 remains: the __dict__ of a new-style class is a read-only proxy; you 23819 must set the class's attribute to modify it. As a consequence, the 23820 __defined__ attribute of new-style types no longer exists, for lack 23821 of need: there is once again only one __dict__ (although in the 23822 future a __cache__ may be resurrected with a similar function, if I 23823 can prove that it actually speeds things up). 23824 23825 - C.__doc__ now works as expected for new-style classes (in 2.2a4 it 23826 always returned None, even when there was a class docstring). 23827 23828 - doctest now finds and runs docstrings attached to new-style classes, 23829 class methods, static methods, and properties. 23830 23831 Core and builtins 23832 ----------------- 23833 23834 - A very subtle syntactical pitfall in list comprehensions was fixed. 23835 For example: [a+b for a in 'abc', for b in 'def']. The comma in 23836 this example is a mistake. Previously, this would silently let 'a' 23837 iterate over the singleton tuple ('abc',), yielding ['abcd', 'abce', 23838 'abcf'] rather than the intended ['ad', 'ae', 'af', 'bd', 'be', 23839 'bf', 'cd', 'ce', 'cf']. Now, this is flagged as a syntax error. 23840 Note that [a for a in <singleton>] is a convoluted way to say 23841 [<singleton>] anyway, so it's not like any expressiveness is lost. 23842 23843 - getattr(obj, name, default) now only catches AttributeError, as 23844 documented, rather than returning the default value for all 23845 exceptions (which could mask bugs in a __getattr__ hook, for 23846 example). 23847 23848 - Weak reference objects are now part of the core and offer a C API. 23849 A bug which could allow a core dump when binary operations involved 23850 proxy reference has been fixed. weakref.ReferenceError is now a 23851 built-in exception. 23852 23853 - unicode(obj) now behaves more like str(obj), accepting arbitrary 23854 objects, and calling a __unicode__ method if it exists. 23855 unicode(obj, encoding) and unicode(obj, encoding, errors) still 23856 require an 8-bit string or character buffer argument. 23857 23858 - isinstance() now allows any object as the first argument and a 23859 class, a type or something with a __bases__ tuple attribute for the 23860 second argument. The second argument may also be a tuple of a 23861 class, type, or something with __bases__, in which case isinstance() 23862 will return true if the first argument is an instance of any of the 23863 things contained in the second argument tuple. E.g. 23864 23865 isinstance(x, (A, B)) 23866 23867 returns true if x is an instance of A or B. 23868 23869 Extension modules 23870 ----------------- 23871 23872 - thread.start_new_thread() now returns the thread ID (previously None). 23873 23874 - binascii has now two quopri support functions, a2b_qp and b2a_qp. 23875 23876 - readline now supports setting the startup_hook and the 23877 pre_event_hook, and adds the add_history() function. 23878 23879 - os and posix supports chroot(), setgroups() and unsetenv() where 23880 available. The stat(), fstat(), statvfs() and fstatvfs() functions 23881 now return "pseudo-sequences" -- the various fields can now be 23882 accessed as attributes (e.g. os.stat("/").st_mtime) but for 23883 backwards compatibility they also behave as a fixed-length sequence. 23884 Some platform-specific fields (e.g. st_rdev) are only accessible as 23885 attributes. 23886 23887 - time: localtime(), gmtime() and strptime() now return a 23888 pseudo-sequence similar to the os.stat() return value, with 23889 attributes like tm_year etc. 23890 23891 - Decompression objects in the zlib module now accept an optional 23892 second parameter to decompress() that specifies the maximum amount 23893 of memory to use for the uncompressed data. 23894 23895 - optional SSL support in the socket module now exports OpenSSL 23896 functions RAND_add(), RAND_egd(), and RAND_status(). These calls 23897 are useful on platforms like Solaris where OpenSSL does not 23898 automatically seed its PRNG. Also, the keyfile and certfile 23899 arguments to socket.ssl() are now optional. 23900 23901 - posixmodule (and by extension, the os module on POSIX platforms) now 23902 exports O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW. 23903 23904 Library 23905 ------- 23906 23907 - doctest now excludes functions and classes not defined by the module 23908 being tested, thanks to Tim Hochberg. 23909 23910 - HotShot, a new profiler implemented using a C-based callback, has 23911 been added. This substantially reduces the overhead of profiling, 23912 but it is still quite preliminary. Support modules and 23913 documentation will be added in upcoming releases (before 2.2 final). 23914 23915 - profile now produces correct output in situations where an exception 23916 raised in Python is cleared by C code (e.g. hasattr()). This used 23917 to cause wrong output, including spurious claims of recursive 23918 functions and attribution of time spent to the wrong function. 23919 23920 The code and documentation for the derived OldProfile and HotProfile 23921 profiling classes was removed. The code hasn't worked for years (if 23922 you tried to use them, they raised exceptions). OldProfile 23923 intended to reproduce the behavior of the profiler Python used more 23924 than 7 years ago, and isn't interesting anymore. HotProfile intended 23925 to provide a faster profiler (but producing less information), and 23926 that's a worthy goal we intend to meet via a different approach (but 23927 without losing information). 23928 23929 - Profile.calibrate() has a new implementation that should deliver 23930 a much better system-specific calibration constant. The constant can 23931 now be specified in an instance constructor, or as a Profile class or 23932 instance variable, instead of by editing profile.py's source code. 23933 Calibration must still be done manually (see the docs for the profile 23934 module). 23935 23936 Note that Profile.calibrate() must be overridden by subclasses. 23937 Improving the accuracy required exploiting detailed knowledge of 23938 profiler internals; the earlier method abstracted away the details 23939 and measured a simplified model instead, but consequently computed 23940 a constant too small by a factor of 2 on some modern machines. 23941 23942 - quopri's encode and decode methods take an optional header parameter, 23943 which indicates whether output is intended for the header 'Q' 23944 encoding. 23945 23946 - The SocketServer.ThreadingMixIn class now closes the request after 23947 finish_request() returns. (Not when it errors out though.) 23948 23949 - The nntplib module's NNTP.body() method has grown a 'file' argument 23950 to allow saving the message body to a file. 23951 23952 - The email package has added a class email.Parser.HeaderParser which 23953 only parses headers and does not recurse into the message's body. 23954 Also, the module/class MIMEAudio has been added for representing 23955 audio data (contributed by Anthony Baxter). 23956 23957 - ftplib should be able to handle files > 2GB. 23958 23959 - ConfigParser.getboolean() now also interprets TRUE, FALSE, YES, NO, 23960 ON, and OFF. 23961 23962 - xml.dom.minidom NodeList objects now support the length attribute 23963 and item() method as required by the DOM specifications. 23964 23965 Tools/Demos 23966 ----------- 23967 23968 - Demo/dns was removed. It no longer serves any purpose; a package 23969 derived from it is now maintained by Anthony Baxter, see 23970 http://PyDNS.SourceForge.net. 23971 23972 - The freeze tool has been made more robust, and two new options have 23973 been added: -X and -E. 23974 23975 Build 23976 ----- 23977 23978 - configure will use CXX in LINKCC if CXX is used to build main() and 23979 the system requires to link a C++ main using the C++ compiler. 23980 23981 C API 23982 ----- 23983 23984 - The documentation for the tp_compare slot is updated to require that 23985 the return value must be -1, 0, 1; an arbitrary number <0 or >0 is 23986 not correct. This is not yet enforced but will be enforced in 23987 Python 2.3; even later, we may use -2 to indicate errors and +2 for 23988 "NotImplemented". Right now, -1 should be used for an error return. 23989 23990 - PyLong_AsLongLong() now accepts int (as well as long) arguments. 23991 Consequently, PyArg_ParseTuple's 'L' code also accepts int (as well 23992 as long) arguments. 23993 23994 - PyThread_start_new_thread() now returns a long int giving the thread 23995 ID, if one can be calculated; it returns -1 for error, 0 if no 23996 thread ID is calculated (this is an incompatible change, but only 23997 the thread module used this API). This code has only really been 23998 tested on Linux and Windows; other platforms please beware (and 23999 report any bugs or strange behavior). 24000 24001 - PyUnicode_FromEncodedObject() no longer accepts Unicode objects as 24002 input. 24003 24004 New platforms 24005 ------------- 24006 24007 Tests 24008 ----- 24009 24010 Windows 24011 ------- 24012 24013 - Installer: If you install IDLE, and don't disable file-extension 24014 registration, a new "Edit with IDLE" context (right-click) menu entry 24015 is created for .py and .pyw files. 24016 24017 - The signal module now supports SIGBREAK on Windows, thanks to Steven 24018 Scott. Note that SIGBREAK is unique to Windows. The default SIGBREAK 24019 action remains to call Win32 ExitProcess(). This can be changed via 24020 signal.signal(). For example:: 24021 24022 # Make Ctrl+Break raise KeyboardInterrupt, like Python's default Ctrl+C 24023 # (SIGINT) behavior. 24024 import signal 24025 signal.signal(signal.SIGBREAK, signal.default_int_handler) 24026 24027 try: 24028 while 1: 24029 pass 24030 except KeyboardInterrupt: 24031 # We get here on Ctrl+C or Ctrl+Break now; if we had not changed 24032 # SIGBREAK, only on Ctrl+C (and Ctrl+Break would terminate the 24033 # program without the possibility for any Python-level cleanup). 24034 print "Clean exit" 24035 24036 24037 What's New in Python 2.2a4? 24038 =========================== 24039 24040 *Release date: 28-Sep-2001* 24041 24042 Type/class unification and new-style classes 24043 -------------------------------------------- 24044 24045 - pydoc and inspect are now aware of new-style classes; 24046 e.g. help(list) at the interactive prompt now shows proper 24047 documentation for all operations on list objects. 24048 24049 - Applications using Jim Fulton's ExtensionClass module can now safely 24050 be used with Python 2.2. In particular, Zope 2.4.1 now works with 24051 Python 2.2 (as well as with Python 2.1.1). The Demo/metaclass 24052 examples also work again. It is hoped that Gtk and Boost also work 24053 with 2.2a4 and beyond. (If you can confirm this, please write 24054 webmaster (a] python.org; if there are still problems, please open a bug 24055 report on SourceForge.) 24056 24057 - property() now takes 4 keyword arguments: fget, fset, fdel and doc. 24058 These map to read-only attributes 'fget', 'fset', 'fdel', and '__doc__' 24059 in the constructed property object. fget, fset and fdel weren't 24060 discoverable from Python in 2.2a3. __doc__ is new, and allows 24061 associating a docstring with a property. 24062 24063 - Comparison overloading is now more completely implemented. For 24064 example, a str subclass instance can properly be compared to a str 24065 instance, and it can properly overload comparison. Ditto for most 24066 other built-in object types. 24067 24068 - The repr() of new-style classes has changed; instead of <type 24069 'M.Foo'> a new-style class is now rendered as <class 'M.Foo'>, 24070 *except* for built-in types, which are still rendered as <type 24071 'Foo'> (to avoid upsetting existing code that might parse or 24072 otherwise rely on repr() of certain type objects). 24073 24074 - The repr() of new-style objects is now always <Foo object at XXX>; 24075 previously, it was sometimes <Foo instance at XXX>. 24076 24077 - For new-style classes, what was previously called __getattr__ is now 24078 called __getattribute__. This method, if defined, is called for 24079 *every* attribute access. A new __getattr__ hook more similar to the 24080 one in classic classes is defined which is called only if regular 24081 attribute access raises AttributeError; to catch *all* attribute 24082 access, you can use __getattribute__ (for new-style classes). If 24083 both are defined, __getattribute__ is called first, and if it raises 24084 AttributeError, __getattr__ is called. 24085 24086 - The __class__ attribute of new-style objects can be assigned to. 24087 The new class must have the same C-level object layout as the old 24088 class. 24089 24090 - The built-in file type can be subclassed now. In the usual pattern, 24091 "file" is the name of the built-in type, and file() is a new built-in 24092 constructor, with the same signature as the built-in open() function. 24093 file() is now the preferred way to open a file. 24094 24095 - Previously, __new__ would only see sequential arguments passed to 24096 the type in a constructor call; __init__ would see both sequential 24097 and keyword arguments. This made no sense whatsoever any more, so 24098 now both __new__ and __init__ see all arguments. 24099 24100 - Previously, hash() applied to an instance of a subclass of str or 24101 unicode always returned 0. This has been repaired. 24102 24103 - Previously, an operation on an instance of a subclass of an 24104 immutable type (int, long, float, complex, tuple, str, unicode), 24105 where the subtype didn't override the operation (and so the 24106 operation was handled by the built-in type), could return that 24107 instance instead a value of the base type. For example, if s was of 24108 a str subclass type, s[:] returned s as-is. Now it returns a str 24109 with the same value as s. 24110 24111 - Provisional support for pickling new-style objects has been added. 24112 24113 Core 24114 ---- 24115 24116 - file.writelines() now accepts any iterable object producing strings. 24117 24118 - PyUnicode_FromEncodedObject() now works very much like 24119 PyObject_Str(obj) in that it tries to use __str__/tp_str 24120 on the object if the object is not a string or buffer. This 24121 makes unicode() behave like str() when applied to non-string/buffer 24122 objects. 24123 24124 - PyFile_WriteObject now passes Unicode objects to the file's write 24125 method. As a result, all file-like objects which may be the target 24126 of a print statement must support Unicode objects, i.e. they must 24127 at least convert them into ASCII strings. 24128 24129 - Thread scheduling on Solaris should be improved; it is no longer 24130 necessary to insert a small sleep at the start of a thread in order 24131 to let other runnable threads be scheduled. 24132 24133 Library 24134 ------- 24135 24136 - StringIO.StringIO instances and cStringIO.StringIO instances support 24137 read character buffer compatible objects for their .write() methods. 24138 These objects are converted to strings and then handled as such 24139 by the instances. 24140 24141 - The "email" package has been added. This is basically a port of the 24142 mimelib package <http://sf.net/projects/mimelib> with API changes 24143 and some implementations updated to use iterators and generators. 24144 24145 - difflib.ndiff() and difflib.Differ.compare() are generators now. This 24146 restores the ability of Tools/scripts/ndiff.py to start producing output 24147 before the entire comparison is complete. 24148 24149 - StringIO.StringIO instances and cStringIO.StringIO instances support 24150 iteration just like file objects (i.e. their .readline() method is 24151 called for each iteration until it returns an empty string). 24152 24153 - The codecs module has grown four new helper APIs to access 24154 built-in codecs: getencoder(), getdecoder(), getreader(), 24155 getwriter(). 24156 24157 - SimpleXMLRPCServer: a new module (based upon SimpleHTMLServer) 24158 simplifies writing XML RPC servers. 24159 24160 - os.path.realpath(): a new function that returns the absolute pathname 24161 after interpretation of symbolic links. On non-Unix systems, this 24162 is an alias for os.path.abspath(). 24163 24164 - operator.indexOf() (PySequence_Index() in the C API) now works with any 24165 iterable object. 24166 24167 - smtplib now supports various authentication and security features of 24168 the SMTP protocol through the new login() and starttls() methods. 24169 24170 - hmac: a new module implementing keyed hashing for message 24171 authentication. 24172 24173 - mimetypes now recognizes more extensions and file types. At the 24174 same time, some mappings not sanctioned by IANA were removed. 24175 24176 - The "compiler" package has been brought up to date to the state of 24177 Python 2.2 bytecode generation. It has also been promoted from a 24178 Tool to a standard library package. (Tools/compiler still exists as 24179 a sample driver.) 24180 24181 Build 24182 ----- 24183 24184 - Large file support (LFS) is now automatic when the platform supports 24185 it; no more manual configuration tweaks are needed. On Linux, at 24186 least, it's possible to have a system whose C library supports large 24187 files but whose kernel doesn't; in this case, large file support is 24188 still enabled but doesn't do you any good unless you upgrade your 24189 kernel or share your Python executable with another system whose 24190 kernel has large file support. 24191 24192 - The configure script now supplies plausible defaults in a 24193 cross-compilation environment. This doesn't mean that the supplied 24194 values are always correct, or that cross-compilation now works 24195 flawlessly -- but it's a first step (and it shuts up most of 24196 autoconf's warnings about AC_TRY_RUN). 24197 24198 - The Unix build is now a bit less chatty, courtesy of the parser 24199 generator. The build is completely silent (except for errors) when 24200 using "make -s", thanks to a -q option to setup.py. 24201 24202 C API 24203 ----- 24204 24205 - The "structmember" API now supports some new flag bits to deny read 24206 and/or write access to attributes in restricted execution mode. 24207 24208 New platforms 24209 ------------- 24210 24211 - Compaq's iPAQ handheld, running the "familiar" Linux distribution 24212 (http://familiar.handhelds.org). 24213 24214 Tests 24215 ----- 24216 24217 - The "classic" standard tests, which work by comparing stdout to 24218 an expected-output file under Lib/test/output/, no longer stop at 24219 the first mismatch. Instead the test is run to completion, and a 24220 variant of ndiff-style comparison is used to report all differences. 24221 This is much easier to understand than the previous style of reporting. 24222 24223 - The unittest-based standard tests now use regrtest's test_main() 24224 convention, instead of running as a side-effect of merely being 24225 imported. This allows these tests to be run in more natural and 24226 flexible ways as unittests, outside the regrtest framework. 24227 24228 - regrtest.py is much better integrated with unittest and doctest now, 24229 especially in regard to reporting errors. 24230 24231 Windows 24232 ------- 24233 24234 - Large file support now also works for files > 4GB, on filesystems 24235 that support it (NTFS under Windows 2000). See "What's New in 24236 Python 2.2a3" for more detail. 24237 24238 24239 What's New in Python 2.2a3? 24240 =========================== 24241 24242 *Release Date: 07-Sep-2001* 24243 24244 Core 24245 ---- 24246 24247 - Conversion of long to float now raises OverflowError if the long is too 24248 big to represent as a C double. 24249 24250 - The 3-argument builtin pow() no longer allows a third non-None argument 24251 if either of the first two arguments is a float, or if both are of 24252 integer types and the second argument is negative (in which latter case 24253 the arguments are converted to float, so this is really the same 24254 restriction). 24255 24256 - The builtin dir() now returns more information, and sometimes much 24257 more, generally naming all attributes of an object, and all attributes 24258 reachable from the object via its class, and from its class's base 24259 classes, and so on from them too. Example: in 2.2a2, dir([]) returned 24260 an empty list. In 2.2a3, 24261 24262 >>> dir([]) 24263 ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', 24264 '__eq__', '__ge__', '__getattr__', '__getitem__', '__getslice__', 24265 '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__le__', 24266 '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__repr__', 24267 '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__', 24268 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 24269 'reverse', 'sort'] 24270 24271 dir(module) continues to return only the module's attributes, though. 24272 24273 - Overflowing operations on plain ints now return a long int rather 24274 than raising OverflowError. This is a partial implementation of PEP 24275 237. You can use -Wdefault::OverflowWarning to enable a warning for 24276 this situation, and -Werror::OverflowWarning to revert to the old 24277 OverflowError exception. 24278 24279 - A new command line option, -Q<arg>, is added to control run-time 24280 warnings for the use of classic division. (See PEP 238.) Possible 24281 values are -Qold, -Qwarn, -Qwarnall, and -Qnew. The default is 24282 -Qold, meaning the / operator has its classic meaning and no 24283 warnings are issued. Using -Qwarn issues a run-time warning about 24284 all uses of classic division for int and long arguments; -Qwarnall 24285 also warns about classic division for float and complex arguments 24286 (for use with fixdiv.py). 24287 [Note: the remainder of this item (preserved below) became 24288 obsolete in 2.2c1 -- -Qnew has global effect in 2.2] :: 24289 24290 Using -Qnew is questionable; it turns on new division by default, but 24291 only in the __main__ module. You can usefully combine -Qwarn or 24292 -Qwarnall and -Qnew: this gives the __main__ module new division, and 24293 warns about classic division everywhere else. 24294 24295 - Many built-in types can now be subclassed. This applies to int, 24296 long, float, str, unicode, and tuple. (The types complex, list and 24297 dictionary can also be subclassed; this was introduced earlier.) 24298 Note that restrictions apply when subclassing immutable built-in 24299 types: you can only affect the value of the instance by overloading 24300 __new__. You can add mutable attributes, and the subclass instances 24301 will have a __dict__ attribute, but you cannot change the "value" 24302 (as implemented by the base class) of an immutable subclass instance 24303 once it is created. 24304 24305 - The dictionary constructor now takes an optional argument, a 24306 mapping-like object, and initializes the dictionary from its 24307 (key, value) pairs. 24308 24309 - A new built-in type, super, has been added. This facilitates making 24310 "cooperative super calls" in a multiple inheritance setting. For an 24311 explanation, see http://www.python.org/2.2/descrintro.html#cooperation 24312 24313 - A new built-in type, property, has been added. This enables the 24314 creation of "properties". These are attributes implemented by 24315 getter and setter functions (or only one of these for read-only or 24316 write-only attributes), without the need to override __getattr__. 24317 See http://www.python.org/2.2/descrintro.html#property 24318 24319 - The syntax of floating-point and imaginary literals has been 24320 liberalized, to allow leading zeroes. Examples of literals now 24321 legal that were SyntaxErrors before: 24322 24323 00.0 0e3 0100j 07.5 00000000000000000008. 24324 24325 - An old tokenizer bug allowed floating point literals with an incomplete 24326 exponent, such as 1e and 3.1e-. Such literals now raise SyntaxError. 24327 24328 Library 24329 ------- 24330 24331 - telnetlib includes symbolic names for the options, and support for 24332 setting an option negotiation callback. It also supports processing 24333 of suboptions. 24334 24335 - The new C standard no longer requires that math libraries set errno to 24336 ERANGE on overflow. For platform libraries that exploit this new 24337 freedom, Python's overflow-checking was wholly broken. A new overflow- 24338 checking scheme attempts to repair that, but may not be reliable on all 24339 platforms (C doesn't seem to provide anything both useful and portable 24340 in this area anymore). 24341 24342 - Asynchronous timeout actions are available through the new class 24343 threading.Timer. 24344 24345 - math.log and math.log10 now return sensible results for even huge 24346 long arguments. For example, math.log10(10 ** 10000) ~= 10000.0. 24347 24348 - A new function, imp.lock_held(), returns 1 when the import lock is 24349 currently held. See the docs for the imp module. 24350 24351 - pickle, cPickle and marshal on 32-bit platforms can now correctly read 24352 dumps containing ints written on platforms where Python ints are 8 bytes. 24353 When read on a box where Python ints are 4 bytes, such values are 24354 converted to Python longs. 24355 24356 - In restricted execution mode (using the rexec module), unmarshalling 24357 code objects is no longer allowed. This plugs a security hole. 24358 24359 - unittest.TestResult instances no longer store references to tracebacks 24360 generated by test failures. This prevents unexpected dangling references 24361 to objects that should be garbage collected between tests. 24362 24363 Tools 24364 ----- 24365 24366 - Tools/scripts/fixdiv.py has been added which can be used to fix 24367 division operators as per PEP 238. 24368 24369 Build 24370 ----- 24371 24372 - If you are an adventurous person using Mac OS X you may want to look at 24373 Mac/OSX. There is a Makefile there that will build Python as a real Mac 24374 application, which can be used for experimenting with Carbon or Cocoa. 24375 Discussion of this on pythonmac-sig, please. 24376 24377 C API 24378 ----- 24379 24380 - New function PyObject_Dir(obj), like Python __builtin__.dir(obj). 24381 24382 - Note that PyLong_AsDouble can fail! This has always been true, but no 24383 callers checked for it. It's more likely to fail now, because overflow 24384 errors are properly detected now. The proper way to check:: 24385 24386 double x = PyLong_AsDouble(some_long_object); 24387 if (x == -1.0 && PyErr_Occurred()) { 24388 /* The conversion failed. */ 24389 } 24390 24391 - The GC API has been changed. Extensions that use the old API will still 24392 compile but will not participate in GC. To upgrade an extension 24393 module: 24394 24395 - rename Py_TPFLAGS_GC to PyTPFLAGS_HAVE_GC 24396 24397 - use PyObject_GC_New or PyObject_GC_NewVar to allocate objects and 24398 PyObject_GC_Del to deallocate them 24399 24400 - rename PyObject_GC_Init to PyObject_GC_Track and PyObject_GC_Fini 24401 to PyObject_GC_UnTrack 24402 24403 - remove PyGC_HEAD_SIZE from object size calculations 24404 24405 - remove calls to PyObject_AS_GC and PyObject_FROM_GC 24406 24407 - Two new functions: PyString_FromFormat() and PyString_FromFormatV(). 24408 These can be used safely to construct string objects from a 24409 sprintf-style format string (similar to the format string supported 24410 by PyErr_Format()). 24411 24412 New platforms 24413 ------------- 24414 24415 - Stephen Hansen contributed patches sufficient to get a clean compile 24416 under Borland C (Windows), but he reports problems running it and ran 24417 out of time to complete the port. Volunteers? Expect a MemoryError 24418 when importing the types module; this is probably shallow, and 24419 causing later failures too. 24420 24421 Tests 24422 ----- 24423 24424 Windows 24425 ------- 24426 24427 - Large file support is now enabled on Win32 platforms as well as on 24428 Win64. This means that, for example, you can use f.tell() and f.seek() 24429 to manipulate files larger than 2 gigabytes (provided you have enough 24430 disk space, and are using a Windows filesystem that supports large 24431 partitions). Windows filesystem limits: FAT has a 2GB (gigabyte) 24432 filesize limit, and large file support makes no difference there. 24433 FAT32's limit is 4GB, and files >= 2GB are easier to use from Python now. 24434 NTFS has no practical limit on file size, and files of any size can be 24435 used from Python now. 24436 24437 - The w9xpopen hack is now used on Windows NT and 2000 too when COMPSPEC 24438 points to command.com (patch from Brian Quinlan). 24439 24440 24441 What's New in Python 2.2a2? 24442 =========================== 24443 24444 *Release Date: 22-Aug-2001* 24445 24446 Build 24447 ----- 24448 24449 - Tim Peters developed a brand new Windows installer using Wise 8.1, 24450 generously donated to us by Wise Solutions. 24451 24452 - configure supports a new option --enable-unicode, with the values 24453 ucs2 and ucs4 (new in 2.2a1). With --disable-unicode, the Unicode 24454 type and supporting code is completely removed from the interpreter. 24455 24456 - A new configure option --enable-framework builds a Mac OS X framework, 24457 which "make frameworkinstall" will install. This provides a starting 24458 point for more mac-like functionality, join pythonmac-sig (a] python.org 24459 if you are interested in helping. 24460 24461 - The NeXT platform is no longer supported. 24462 24463 - The 'new' module is now statically linked. 24464 24465 Tools 24466 ----- 24467 24468 - The new Tools/scripts/cleanfuture.py can be used to automatically 24469 edit out obsolete future statements from Python source code. See 24470 the module docstring for details. 24471 24472 Tests 24473 ----- 24474 24475 - regrtest.py now knows which tests are expected to be skipped on some 24476 platforms, allowing clearer test result output to be given. regrtest 24477 also has optional --use/-u switch to run normally disabled tests 24478 which require network access or consume significant disk resources. 24479 24480 - Several new tests in the standard test suite, with special thanks to 24481 Nick Mathewson. 24482 24483 Core 24484 ---- 24485 24486 - The floor division operator // has been added as outlined in PEP 24487 238. The / operator still provides classic division (and will until 24488 Python 3.0) unless "from __future__ import division" is included, in 24489 which case the / operator will provide true division. The operator 24490 module provides truediv() and floordiv() functions. Augmented 24491 assignment variants are included, as are the equivalent overloadable 24492 methods and C API methods. See the PEP for a full discussion: 24493 <http://python.sf.net/peps/pep-0238.html> 24494 24495 - Future statements are now effective in simulated interactive shells 24496 (like IDLE). This should "just work" by magic, but read Michael 24497 Hudson's "Future statements in simulated shells" PEP 264 for full 24498 details: <http://python.sf.net/peps/pep-0264.html>. 24499 24500 - The type/class unification (PEP 252-253) was integrated into the 24501 trunk and is not so tentative any more (the exact specification of 24502 some features is still tentative). A lot of work has done on fixing 24503 bugs and adding robustness and features (performance still has to 24504 come a long way). 24505 24506 - Warnings about a mismatch in the Python API during extension import 24507 now use the Python warning framework (which makes it possible to 24508 write filters for these warnings). 24509 24510 - A function's __dict__ (aka func_dict) will now always be a 24511 dictionary. It used to be possible to delete it or set it to None, 24512 but now both actions raise TypeErrors. It is still legal to set it 24513 to a dictionary object. Getting func.__dict__ before any attributes 24514 have been assigned now returns an empty dictionary instead of None. 24515 24516 - A new command line option, -E, was added which disables the use of 24517 all environment variables, or at least those that are specifically 24518 significant to Python. Usually those have a name starting with 24519 "PYTHON". This was used to fix a problem where the tests fail if 24520 the user happens to have PYTHONHOME or PYTHONPATH pointing to an 24521 older distribution. 24522 24523 Library 24524 ------- 24525 24526 - New class Differ and new functions ndiff() and restore() in difflib.py. 24527 These package the algorithms used by the popular Tools/scripts/ndiff.py, 24528 for programmatic reuse. 24529 24530 - New function xml.sax.saxutils.quoteattr(): Quote an XML attribute 24531 value using the minimal quoting required for the value; more 24532 reliable than using xml.sax.saxutils.escape() for attribute values. 24533 24534 - Readline completion support for cmd.Cmd was added. 24535 24536 - Calling os.tempnam() or os.tmpnam() generate RuntimeWarnings. 24537 24538 - Added function threading.BoundedSemaphore() 24539 24540 - Added Ka-Ping Yee's cgitb.py module. 24541 24542 - The 'new' module now exposes the CO_xxx flags. 24543 24544 - The gc module offers the get_referents function. 24545 24546 New platforms 24547 ------------- 24548 24549 C API 24550 ----- 24551 24552 - Two new APIs PyOS_snprintf() and PyOS_vsnprintf() were added 24553 which provide a cross-platform implementations for the 24554 relatively new snprintf()/vsnprintf() C lib APIs. In contrast to 24555 the standard sprintf() and vsprintf() C lib APIs, these versions 24556 apply bounds checking on the used buffer which enhances protection 24557 against buffer overruns. 24558 24559 - Unicode APIs now use name mangling to assure that mixing interpreters 24560 and extensions using different Unicode widths is rendered next to 24561 impossible. Trying to import an incompatible Unicode-aware extension 24562 will result in an ImportError. Unicode extensions writers must make 24563 sure to check the Unicode width compatibility in their extensions by 24564 using at least one of the mangled Unicode APIs in the extension. 24565 24566 - Two new flags METH_NOARGS and METH_O are available in method definition 24567 tables to simplify implementation of methods with no arguments and a 24568 single untyped argument. Calling such methods is more efficient than 24569 calling corresponding METH_VARARGS methods. METH_OLDARGS is now 24570 deprecated. 24571 24572 Windows 24573 ------- 24574 24575 - "import module" now compiles module.pyw if it exists and nothing else 24576 relevant is found. 24577 24578 24579 What's New in Python 2.2a1? 24580 =========================== 24581 24582 *Release date: 18-Jul-2001* 24583 24584 Core 24585 ---- 24586 24587 - TENTATIVELY, a large amount of code implementing much of what's 24588 described in PEP 252 (Making Types Look More Like Classes) and PEP 24589 253 (Subtyping Built-in Types) was added. This will be released 24590 with Python 2.2a1. Documentation will be provided separately 24591 through http://www.python.org/2.2/. The purpose of releasing this 24592 with Python 2.2a1 is to test backwards compatibility. It is 24593 possible, though not likely, that a decision is made not to release 24594 this code as part of 2.2 final, if any serious backwards 24595 incompatibilities are found during alpha testing that cannot be 24596 repaired. 24597 24598 - Generators were added; this is a new way to create an iterator (see 24599 below) using what looks like a simple function containing one or 24600 more 'yield' statements. See PEP 255. Since this adds a new 24601 keyword to the language, this feature must be enabled by including a 24602 future statement: "from __future__ import generators" (see PEP 236). 24603 Generators will become a standard feature in a future release 24604 (probably 2.3). Without this future statement, 'yield' remains an 24605 ordinary identifier, but a warning is issued each time it is used. 24606 (These warnings currently don't conform to the warnings framework of 24607 PEP 230; we intend to fix this in 2.2a2.) 24608 24609 - The UTF-16 codec was modified to be more RFC compliant. It will now 24610 only remove BOM characters at the start of the string and then 24611 only if running in native mode (UTF-16-LE and -BE won't remove a 24612 leading BMO character). 24613 24614 - Strings now have a new method .decode() to complement the already 24615 existing .encode() method. These two methods provide direct access 24616 to the corresponding decoders and encoders of the registered codecs. 24617 24618 To enhance the usability of the .encode() method, the special 24619 casing of Unicode object return values was dropped (Unicode objects 24620 were auto-magically converted to string using the default encoding). 24621 24622 Both methods will now return whatever the codec in charge of the 24623 requested encoding returns as object, e.g. Unicode codecs will 24624 return Unicode objects when decoding is requested ("".decode("latin-1") 24625 will return u""). This enables codec writer to create codecs 24626 for various simple to use conversions. 24627 24628 New codecs were added to demonstrate these new features (the .encode() 24629 and .decode() columns indicate the type of the returned objects): 24630 24631 +---------+-----------+-----------+-----------------------------+ 24632 |Name | .encode() | .decode() | Description | 24633 +=========+===========+===========+=============================+ 24634 |uu | string | string | UU codec (e.g. for email) | 24635 +---------+-----------+-----------+-----------------------------+ 24636 |base64 | string | string | base64 codec | 24637 +---------+-----------+-----------+-----------------------------+ 24638 |quopri | string | string | quoted-printable codec | 24639 +---------+-----------+-----------+-----------------------------+ 24640 |zlib | string | string | zlib compression | 24641 +---------+-----------+-----------+-----------------------------+ 24642 |hex | string | string | 2-byte hex codec | 24643 +---------+-----------+-----------+-----------------------------+ 24644 |rot-13 | string | Unicode | ROT-13 Unicode charmap codec| 24645 +---------+-----------+-----------+-----------------------------+ 24646 24647 - Some operating systems now support the concept of a default Unicode 24648 encoding for file system operations. Notably, Windows supports 'mbcs' 24649 as the default. The Macintosh will also adopt this concept in the medium 24650 term, although the default encoding for that platform will be other than 24651 'mbcs'. 24652 24653 On operating system that support non-ASCII filenames, it is common for 24654 functions that return filenames (such as os.listdir()) to return Python 24655 string objects pre-encoded using the default file system encoding for 24656 the platform. As this encoding is likely to be different from Python's 24657 default encoding, converting this name to a Unicode object before passing 24658 it back to the Operating System would result in a Unicode error, as Python 24659 would attempt to use its default encoding (generally ASCII) rather than 24660 the default encoding for the file system. 24661 24662 In general, this change simply removes surprises when working with 24663 Unicode and the file system, making these operations work as you expect, 24664 increasing the transparency of Unicode objects in this context. 24665 See [????] for more details, including examples. 24666 24667 - Float (and complex) literals in source code were evaluated to full 24668 precision only when running from a .py file; the same code loaded from a 24669 .pyc (or .pyo) file could suffer numeric differences starting at about the 24670 12th significant decimal digit. For example, on a machine with IEEE-754 24671 floating arithmetic, 24672 24673 x = 9007199254740992.0 24674 print long(x) 24675 24676 printed 9007199254740992 if run directly from .py, but 9007199254740000 24677 if from a compiled (.pyc or .pyo) file. This was due to marshal using 24678 str(float) instead of repr(float) when building code objects. marshal 24679 now uses repr(float) instead, which should reproduce floats to full 24680 machine precision (assuming the platform C float<->string I/O conversion 24681 functions are of good quality). 24682 24683 This may cause floating-point results to change in some cases, and 24684 usually for the better, but may also cause numerically unstable 24685 algorithms to break. 24686 24687 - The implementation of dicts suffers fewer collisions, which has speed 24688 benefits. However, the order in which dict entries appear in dict.keys(), 24689 dict.values() and dict.items() may differ from previous releases for a 24690 given dict. Nothing is defined about this order, so no program should 24691 rely on it. Nevertheless, it's easy to write test cases that rely on the 24692 order by accident, typically because of printing the str() or repr() of a 24693 dict to an "expected results" file. See Lib/test/test_support.py's new 24694 sortdict(dict) function for a simple way to display a dict in sorted 24695 order. 24696 24697 - Many other small changes to dicts were made, resulting in faster 24698 operation along the most common code paths. 24699 24700 - Dictionary objects now support the "in" operator: "x in dict" means 24701 the same as dict.has_key(x). 24702 24703 - The update() method of dictionaries now accepts generic mapping 24704 objects. Specifically the argument object must support the .keys() 24705 and __getitem__() methods. This allows you to say, for example, 24706 {}.update(UserDict()) 24707 24708 - Iterators were added; this is a generalized way of providing values 24709 to a for loop. See PEP 234. There's a new built-in function iter() 24710 to return an iterator. There's a new protocol to get the next value 24711 from an iterator using the next() method (in Python) or the 24712 tp_iternext slot (in C). There's a new protocol to get iterators 24713 using the __iter__() method (in Python) or the tp_iter slot (in C). 24714 Iterating (i.e. a for loop) over a dictionary generates its keys. 24715 Iterating over a file generates its lines. 24716 24717 - The following functions were generalized to work nicely with iterator 24718 arguments:: 24719 24720 map(), filter(), reduce(), zip() 24721 list(), tuple() (PySequence_Tuple() and PySequence_Fast() in C API) 24722 max(), min() 24723 join() method of strings 24724 extend() method of lists 24725 'x in y' and 'x not in y' (PySequence_Contains() in C API) 24726 operator.countOf() (PySequence_Count() in C API) 24727 right-hand side of assignment statements with multiple targets, such as :: 24728 x, y, z = some_iterable_object_returning_exactly_3_values 24729 24730 - Accessing module attributes is significantly faster (for example, 24731 random.random or os.path or yourPythonModule.yourAttribute). 24732 24733 - Comparing dictionary objects via == and != is faster, and now works even 24734 if the keys and values don't support comparisons other than ==. 24735 24736 - Comparing dictionaries in ways other than == and != is slower: there were 24737 insecurities in the dict comparison implementation that could cause Python 24738 to crash if the element comparison routines for the dict keys and/or 24739 values mutated the dicts. Making the code bulletproof slowed it down. 24740 24741 - Collisions in dicts are resolved via a new approach, which can help 24742 dramatically in bad cases. For example, looking up every key in a dict 24743 d with d.keys() == [i << 16 for i in range(20000)] is approximately 500x 24744 faster now. Thanks to Christian Tismer for pointing out the cause and 24745 the nature of an effective cure (last December! better late than never). 24746 24747 - repr() is much faster for large containers (dict, list, tuple). 24748 24749 24750 Library 24751 ------- 24752 24753 - The constants ascii_letters, ascii_lowercase. and ascii_uppercase 24754 were added to the string module. These a locale-independent 24755 constants, unlike letters, lowercase, and uppercase. These are now 24756 use in appropriate locations in the standard library. 24757 24758 - The flags used in dlopen calls can now be configured using 24759 sys.setdlopenflags and queried using sys.getdlopenflags. 24760 24761 - Fredrik Lundh's xmlrpclib is now a standard library module. This 24762 provides full client-side XML-RPC support. In addition, 24763 Demo/xmlrpc/ contains two server frameworks (one SocketServer-based, 24764 one asyncore-based). Thanks to Eric Raymond for the documentation. 24765 24766 - The xrange() object is simplified: it no longer supports slicing, 24767 repetition, comparisons, efficient 'in' checking, the tolist() 24768 method, or the start, stop and step attributes. See PEP 260. 24769 24770 - A new function fnmatch.filter to filter lists of file names was added. 24771 24772 - calendar.py uses month and day names based on the current locale. 24773 24774 - strop is now *really* obsolete (this was announced before with 1.6), 24775 and issues DeprecationWarning when used (except for the four items 24776 that are still imported into string.py). 24777 24778 - Cookie.py now sorts key+value pairs by key in output strings. 24779 24780 - pprint.isrecursive(object) didn't correctly identify recursive objects. 24781 Now it does. 24782 24783 - pprint functions now much faster for large containers (tuple, list, dict). 24784 24785 - New 'q' and 'Q' format codes in the struct module, corresponding to C 24786 types "long long" and "unsigned long long" (on Windows, __int64). In 24787 native mode, these can be used only when the platform C compiler supports 24788 these types (when HAVE_LONG_LONG is #define'd by the Python config 24789 process), and then they inherit the sizes and alignments of the C types. 24790 In standard mode, 'q' and 'Q' are supported on all platforms, and are 24791 8-byte integral types. 24792 24793 - The site module installs a new built-in function 'help' that invokes 24794 pydoc.help. It must be invoked as 'help()'; when invoked as 'help', 24795 it displays a message reminding the user to use 'help()' or 24796 'help(object)'. 24797 24798 Tests 24799 ----- 24800 24801 - New test_mutants.py runs dict comparisons where the key and value 24802 comparison operators mutate the dicts randomly during comparison. This 24803 rapidly causes Python to crash under earlier releases (not for the faint 24804 of heart: it can also cause Win9x to freeze or reboot!). 24805 24806 - New test_pprint.py verifies that pprint.isrecursive() and 24807 pprint.isreadable() return sensible results. Also verifies that simple 24808 cases produce correct output. 24809 24810 C API 24811 ----- 24812 24813 - Removed the unused last_is_sticky argument from the internal 24814 _PyTuple_Resize(). If this affects you, you were cheating. 24815 24816 What's New in Python 2.1 (final)? 24817 ================================= 24818 24819 We only changed a few things since the last release candidate, all in 24820 Python library code: 24821 24822 - A bug in the locale module was fixed that affected locales which 24823 define no grouping for numeric formatting. 24824 24825 - A few bugs in the weakref module's implementations of weak 24826 dictionaries (WeakValueDictionary and WeakKeyDictionary) were fixed, 24827 and the test suite was updated to check for these bugs. 24828 24829 - An old bug in the os.path.walk() function (introduced in Python 24830 2.0!) was fixed: a non-existent file would cause an exception 24831 instead of being ignored. 24832 24833 - Fixed a few bugs in the new symtable module found by Neil Norwitz's 24834 PyChecker. 24835 24836 24837 What's New in Python 2.1c2? 24838 =========================== 24839 24840 A flurry of small changes, and one showstopper fixed in the nick of 24841 time made it necessary to release another release candidate. The list 24842 here is the *complete* list of patches (except version updates): 24843 24844 Core 24845 24846 - Tim discovered a nasty bug in the dictionary code, caused by 24847 PyDict_Next() calling dict_resize(), and the GC code's use of 24848 PyDict_Next() violating an assumption in dict_items(). This was 24849 fixed with considerable amounts of band-aid, but the net effect is a 24850 saner and more robust implementation. 24851 24852 - Made a bunch of symbols static that were accidentally global. 24853 24854 Build and Ports 24855 24856 - The setup.py script didn't check for a new enough version of zlib 24857 (1.1.3 is needed). Now it does. 24858 24859 - Changed "make clean" target to also remove shared libraries. 24860 24861 - Added a more general warning about the SGI Irix optimizer to README. 24862 24863 Library 24864 24865 - Fix a bug in urllib.basejoin("http://host", "../file.html") which 24866 omitted the slash between host and file.html. 24867 24868 - The mailbox module's _Mailbox class contained a completely broken 24869 and undocumented seek() method. Ripped it out. 24870 24871 - Fixed a bunch of typos in various library modules (urllib2, smtpd, 24872 sgmllib, netrc, chunk) found by Neil Norwitz's PyChecker. 24873 24874 - Fixed a few last-minute bugs in unittest. 24875 24876 Extensions 24877 24878 - Reverted the patch to the OpenSSL code in socketmodule.c to support 24879 RAND_status() and the EGD, and the subsequent patch that tried to 24880 fix it for pre-0.9.5 versions; the problem with the patch is that on 24881 some systems it issues a warning whenever socket is imported, and 24882 that's unacceptable. 24883 24884 Tests 24885 24886 - Fixed the pickle tests to work with "import test.test_pickle". 24887 24888 - Tweaked test_locale.py to actually run the test Windows. 24889 24890 - In distutils/archive_util.py, call zipfile.ZipFile() with mode "w", 24891 not "wb" (which is not a valid mode at all). 24892 24893 - Fix pstats browser crashes. Import readline if it exists to make 24894 the user interface nicer. 24895 24896 - Add "import thread" to the top of test modules that import the 24897 threading module (test_asynchat and test_threadedtempfile). This 24898 prevents test failures caused by a broken threading module resulting 24899 from a previously caught failed import. 24900 24901 - Changed test_asynchat.py to set the SO_REUSEADDR option; this was 24902 needed on some platforms (e.g. Solaris 8) when the tests are run 24903 twice in succession. 24904 24905 - Skip rather than fail test_sunaudiodev if no audio device is found. 24906 24907 24908 What's New in Python 2.1c1? 24909 =========================== 24910 24911 This list was significantly updated when 2.1c2 was released; the 2.1c1 24912 release didn't mention most changes that were actually part of 2.1c1: 24913 24914 Legal 24915 24916 - Copyright was assigned to the Python Software Foundation (PSF) and a 24917 PSF license (very similar to the CNRI license) was added. 24918 24919 - The CNRI copyright notice was updated to include 2001. 24920 24921 Core 24922 24923 - After a public outcry, assignment to __debug__ is no longer illegal; 24924 instead, a warning is issued. It will become illegal in 2.2. 24925 24926 - Fixed a core dump with "%#x" % 0, and changed the semantics so that 24927 "%#x" now always prepends "0x", even if the value is zero. 24928 24929 - Fixed some nits in the bytecode compiler. 24930 24931 - Fixed core dumps when calling certain kinds of non-functions. 24932 24933 - Fixed various core dumps caused by reference count bugs. 24934 24935 Build and Ports 24936 24937 - Use INSTALL_SCRIPT to install script files. 24938 24939 - New port: SCO Unixware 7, by Billy G. Allie. 24940 24941 - Updated RISCOS port. 24942 24943 - Updated BeOS port and notes. 24944 24945 - Various other porting problems resolved. 24946 24947 Library 24948 24949 - The TERMIOS and SOCKET modules are now truly obsolete and 24950 unnecessary. Their symbols are incorporated in the termios and 24951 socket modules. 24952 24953 - Fixed some 64-bit bugs in pickle, cPickle, and struct, and added 24954 better tests for pickling. 24955 24956 - threading: make Condition.wait() robust against KeyboardInterrupt. 24957 24958 - zipfile: add support to zipfile to support opening an archive 24959 represented by an open file rather than a file name. Fix bug where 24960 the archive was not properly closed. Fixed a bug in this bugfix 24961 where flush() was called for a read-only file. 24962 24963 - imputil: added an uninstall() method to the ImportManager. 24964 24965 - Canvas: fixed bugs in lower() and tkraise() methods. 24966 24967 - SocketServer: API change (added overridable close_request() method) 24968 so that the TCP server can explicitly close the request. 24969 24970 - pstats: Eric Raymond added a simple interactive statistics browser, 24971 invoked when the module is run as a script. 24972 24973 - locale: fixed a problem in format(). 24974 24975 - webbrowser: made it work when the BROWSER environment variable has a 24976 value like "/usr/bin/netscape". Made it auto-detect Konqueror for 24977 KDE 2. Fixed some other nits. 24978 24979 - unittest: changes to allow using a different exception than 24980 AssertionError, and added a few more function aliases. Some other 24981 small changes. 24982 24983 - urllib, urllib2: fixed redirect problems and a coupleof other nits. 24984 24985 - asynchat: fixed a critical bug in asynchat that slipped through the 24986 2.1b2 release. Fixed another rare bug. 24987 24988 - Fix some unqualified except: clauses (always a bad code example). 24989 24990 XML 24991 24992 - pyexpat: new API get_version_string(). 24993 24994 - Fixed some minidom bugs. 24995 24996 Extensions 24997 24998 - Fixed a core dump in _weakref. Removed the weakref.mapping() 24999 function (it adds nothing to the API). 25000 25001 - Rationalized the use of header files in the readline module, to make 25002 it compile (albeit with some warnings) with the very recent readline 25003 4.2, without breaking for earlier versions. 25004 25005 - Hopefully fixed a buffering problem in linuxaudiodev. 25006 25007 - Attempted a fix to make the OpenSSL support in the socket module 25008 work again with pre-0.9.5 versions of OpenSSL. 25009 25010 Tests 25011 25012 - Added a test case for asynchat and asyncore. 25013 25014 - Removed coupling between tests where one test failing could break 25015 another. 25016 25017 Tools 25018 25019 - Ping added an interactive help browser to pydoc, fixed some nits 25020 in the rest of the pydoc code, and added some features to his 25021 inspect module. 25022 25023 - An updated python-mode.el version 4.1 which integrates Ken 25024 Manheimer's pdbtrack.el. This makes debugging Python code via pdb 25025 much nicer in XEmacs and Emacs. When stepping through your program 25026 with pdb, in either the shell window or the *Python* window, the 25027 source file and line will be tracked by an arrow. Very cool! 25028 25029 - IDLE: syntax warnings in interactive mode are changed into errors. 25030 25031 - Some improvements to Tools/webchecker (ignore some more URL types, 25032 follow some more links). 25033 25034 - Brought the Tools/compiler package up to date. 25035 25036 25037 What's New in Python 2.1 beta 2? 25038 ================================ 25039 25040 (Unlisted are many fixed bugs, more documentation, etc.) 25041 25042 Core language, builtins, and interpreter 25043 25044 - The nested scopes work (enabled by "from __future__ import 25045 nested_scopes") is completed; in particular, the future now extends 25046 into code executed through exec, eval() and execfile(), and into the 25047 interactive interpreter. 25048 25049 - When calling a base class method (e.g. BaseClass.__init__(self)), 25050 this is now allowed even if self is not strictly spoken a class 25051 instance (e.g. when using metaclasses or the Don Beaudry hook). 25052 25053 - Slice objects are now comparable but not hashable; this prevents 25054 dict[:] from being accepted but meaningless. 25055 25056 - Complex division is now calculated using less braindead algorithms. 25057 This doesn't change semantics except it's more likely to give useful 25058 results in extreme cases. Complex repr() now uses full precision 25059 like float repr(). 25060 25061 - sgmllib.py now calls handle_decl() for simple <!...> declarations. 25062 25063 - It is illegal to assign to the name __debug__, which is set when the 25064 interpreter starts. It is effectively a compile-time constant. 25065 25066 - A warning will be issued if a global statement for a variable 25067 follows a use or assignment of that variable. 25068 25069 Standard library 25070 25071 - unittest.py, a unit testing framework by Steve Purcell (PyUNIT, 25072 inspired by JUnit), is now part of the standard library. You now 25073 have a choice of two testing frameworks: unittest requires you to 25074 write testcases as separate code, doctest gathers them from 25075 docstrings. Both approaches have their advantages and 25076 disadvantages. 25077 25078 - A new module Tix was added, which wraps the Tix extension library 25079 for Tk. With that module, it is not necessary to statically link 25080 Tix with _tkinter, since Tix will be loaded with Tcl's "package 25081 require" command. See Demo/tix/. 25082 25083 - tzparse.py is now obsolete. 25084 25085 - In gzip.py, the seek() and tell() methods are removed -- they were 25086 non-functional anyway, and it's better if callers can test for their 25087 existence with hasattr(). 25088 25089 Python/C API 25090 25091 - PyDict_Next(): it is now safe to call PyDict_SetItem() with a key 25092 that's already in the dictionary during a PyDict_Next() iteration. 25093 This used to fail occasionally when a dictionary resize operation 25094 could be triggered that would rehash all the keys. All other 25095 modifications to the dictionary are still off-limits during a 25096 PyDict_Next() iteration! 25097 25098 - New extended APIs related to passing compiler variables around. 25099 25100 - New abstract APIs PyObject_IsInstance(), PyObject_IsSubclass() 25101 implement isinstance() and issubclass(). 25102 25103 - Py_BuildValue() now has a "D" conversion to create a Python complex 25104 number from a Py_complex C value. 25105 25106 - Extensions types which support weak references must now set the 25107 field allocated for the weak reference machinery to NULL themselves; 25108 this is done to avoid the cost of checking each object for having a 25109 weakly referencable type in PyObject_INIT(), since most types are 25110 not weakly referencable. 25111 25112 - PyFrame_FastToLocals() and PyFrame_LocalsToFast() copy bindings for 25113 free variables and cell variables to and from the frame's f_locals. 25114 25115 - Variants of several functions defined in pythonrun.h have been added 25116 to support the nested_scopes future statement. The variants all end 25117 in Flags and take an extra argument, a PyCompilerFlags *; examples: 25118 PyRun_AnyFileExFlags(), PyRun_InteractiveLoopFlags(). These 25119 variants may be removed in Python 2.2, when nested scopes are 25120 mandatory. 25121 25122 Distutils 25123 25124 - the sdist command now writes a PKG-INFO file, as described in PEP 241, 25125 into the release tree. 25126 25127 - several enhancements to the bdist_wininst command from Thomas Heller 25128 (an uninstaller, more customization of the installer's display) 25129 25130 - from Jack Jansen: added Mac-specific code to generate a dialog for 25131 users to specify the command-line (because providing a command-line with 25132 MacPython is awkward). Jack also made various fixes for the Mac 25133 and the Metrowerks compiler. 25134 25135 - added 'platforms' and 'keywords' to the set of metadata that can be 25136 specified for a distribution. 25137 25138 - applied patches from Jason Tishler to make the compiler class work with 25139 Cygwin. 25140 25141 25142 What's New in Python 2.1 beta 1? 25143 ================================ 25144 25145 Core language, builtins, and interpreter 25146 25147 - Following an outcry from the community about the amount of code 25148 broken by the nested scopes feature introduced in 2.1a2, we decided 25149 to make this feature optional, and to wait until Python 2.2 (or at 25150 least 6 months) to make it standard. The option can be enabled on a 25151 per-module basis by adding "from __future__ import nested_scopes" at 25152 the beginning of a module (before any other statements, but after 25153 comments and an optional docstring). See PEP 236 (Back to the 25154 __future__) for a description of the __future__ statement. PEP 227 25155 (Statically Nested Scopes) has been updated to reflect this change, 25156 and to clarify the semantics in a number of endcases. 25157 25158 - The nested scopes code, when enabled, has been hardened, and most 25159 bugs and memory leaks in it have been fixed. 25160 25161 - Compile-time warnings are now generated for a number of conditions 25162 that will break or change in meaning when nested scopes are enabled: 25163 25164 - Using "from...import *" or "exec" without in-clause in a function 25165 scope that also defines a lambda or nested function with one or 25166 more free (non-local) variables. The presence of the import* or 25167 bare exec makes it impossible for the compiler to determine the 25168 exact set of local variables in the outer scope, which makes it 25169 impossible to determine the bindings for free variables in the 25170 inner scope. To avoid the warning about import *, change it into 25171 an import of explicitly name object, or move the import* statement 25172 to the global scope; to avoid the warning about bare exec, use 25173 exec...in... (a good idea anyway -- there's a possibility that 25174 bare exec will be deprecated in the future). 25175 25176 - Use of a global variable in a nested scope with the same name as a 25177 local variable in a surrounding scope. This will change in 25178 meaning with nested scopes: the name in the inner scope will 25179 reference the variable in the outer scope rather than the global 25180 of the same name. To avoid the warning, either rename the outer 25181 variable, or use a global statement in the inner function. 25182 25183 - An optional object allocator has been included. This allocator is 25184 optimized for Python objects and should be faster and use less memory 25185 than the standard system allocator. It is not enabled by default 25186 because of possible thread safety problems. The allocator is only 25187 protected by the Python interpreter lock and it is possible that some 25188 extension modules require a thread safe allocator. The object 25189 allocator can be enabled by providing the "--with-pymalloc" option to 25190 configure. 25191 25192 Standard library 25193 25194 - pyexpat now detects the expat version if expat.h defines it. A 25195 number of additional handlers are provided, which are only available 25196 since expat 1.95. In addition, the methods SetParamEntityParsing and 25197 GetInputContext of Parser objects are available with 1.95.x 25198 only. Parser objects now provide the ordered_attributes and 25199 specified_attributes attributes. A new module expat.model was added, 25200 which offers a number of additional constants if 1.95.x is used. 25201 25202 - xml.dom offers the new functions registerDOMImplementation and 25203 getDOMImplementation. 25204 25205 - xml.dom.minidom offers a toprettyxml method. A number of DOM 25206 conformance issues have been resolved. In particular, Element now 25207 has a hasAttributes method, and the handling of namespaces was 25208 improved. 25209 25210 - Ka-Ping Yee contributed two new modules: inspect.py, a module for 25211 getting information about live Python code, and pydoc.py, a module 25212 for interactively converting docstrings to HTML or text. 25213 Tools/scripts/pydoc, which is now automatically installed into 25214 <prefix>/bin, uses pydoc.py to display documentation; try running 25215 "pydoc -h" for instructions. "pydoc -g" pops up a small GUI that 25216 lets you browse the module docstrings using a web browser. 25217 25218 - New library module difflib.py, primarily packaging the SequenceMatcher 25219 class at the heart of the popular ndiff.py file-comparison tool. 25220 25221 - doctest.py (a framework for verifying Python code examples in docstrings) 25222 is now part of the std library. 25223 25224 Windows changes 25225 25226 - A new entry in the Start menu, "Module Docs", runs "pydoc -g" -- a 25227 small GUI that lets you browse the module docstrings using your 25228 default web browser. 25229 25230 - Import is now case-sensitive. PEP 235 (Import on Case-Insensitive 25231 Platforms) is implemented. See 25232 25233 http://python.sourceforge.net/peps/pep-0235.html 25234 25235 for full details, especially the "Current Lower-Left Semantics" section. 25236 The new Windows import rules are simpler than before: 25237 25238 A. If the PYTHONCASEOK environment variable exists, same as 25239 before: silently accept the first case-insensitive match of any 25240 kind; raise ImportError if none found. 25241 25242 B. Else search sys.path for the first case-sensitive match; raise 25243 ImportError if none found. 25244 25245 The same rules have been implemented on other platforms with case- 25246 insensitive but case-preserving filesystems too (including Cygwin, and 25247 several flavors of Macintosh operating systems). 25248 25249 - winsound module: Under Win9x, winsound.Beep() now attempts to simulate 25250 what it's supposed to do (and does do under NT and 2000) via direct 25251 port manipulation. It's unknown whether this will work on all systems, 25252 but it does work on my Win98SE systems now and was known to be useless on 25253 all Win9x systems before. 25254 25255 - Build: Subproject _test (effectively) renamed to _testcapi. 25256 25257 New platforms 25258 25259 - 2.1 should compile and run out of the box under MacOS X, even using HFS+. 25260 Thanks to Steven Majewski! 25261 25262 - 2.1 should compile and run out of the box on Cygwin. Thanks to Jason 25263 Tishler! 25264 25265 - 2.1 contains new files and patches for RISCOS, thanks to Dietmar 25266 Schwertberger! See RISCOS/README for more information -- it seems 25267 that because of the bizarre filename conventions on RISCOS, no port 25268 to that platform is easy. 25269 25270 25271 What's New in Python 2.1 alpha 2? 25272 ================================= 25273 25274 Core language, builtins, and interpreter 25275 25276 - Scopes nest. If a name is used in a function or class, but is not 25277 local, the definition in the nearest enclosing function scope will 25278 be used. One consequence of this change is that lambda statements 25279 could reference variables in the namespaces where the lambda is 25280 defined. In some unusual cases, this change will break code. 25281 25282 In all previous version of Python, names were resolved in exactly 25283 three namespaces -- the local namespace, the global namespace, and 25284 the builtins namespace. According to this old definition, if a 25285 function A is defined within a function B, the names bound in B are 25286 not visible in A. The new rules make names bound in B visible in A, 25287 unless A contains a name binding that hides the binding in B. 25288 25289 Section 4.1 of the reference manual describes the new scoping rules 25290 in detail. The test script in Lib/test/test_scope.py demonstrates 25291 some of the effects of the change. 25292 25293 The new rules will cause existing code to break if it defines nested 25294 functions where an outer function has local variables with the same 25295 name as globals or builtins used by the inner function. Example: 25296 25297 def munge(str): 25298 def helper(x): 25299 return str(x) 25300 if type(str) != type(''): 25301 str = helper(str) 25302 return str.strip() 25303 25304 Under the old rules, the name str in helper() is bound to the 25305 built-in function str(). Under the new rules, it will be bound to 25306 the argument named str and an error will occur when helper() is 25307 called. 25308 25309 - The compiler will report a SyntaxError if "from ... import *" occurs 25310 in a function or class scope. The language reference has documented 25311 that this case is illegal, but the compiler never checked for it. 25312 The recent introduction of nested scope makes the meaning of this 25313 form of name binding ambiguous. In a future release, the compiler 25314 may allow this form when there is no possibility of ambiguity. 25315 25316 - repr(string) is easier to read, now using hex escapes instead of octal, 25317 and using \t, \n and \r instead of \011, \012 and \015 (respectively): 25318 25319 >>> "\texample \r\n" + chr(0) + chr(255) 25320 '\texample \r\n\x00\xff' # in 2.1 25321 '\011example \015\012\000\377' # in 2.0 25322 25323 - Functions are now compared and hashed by identity, not by value, since 25324 the func_code attribute is writable. 25325 25326 - Weak references (PEP 205) have been added. This involves a few 25327 changes in the core, an extension module (_weakref), and a Python 25328 module (weakref). The weakref module is the public interface. It 25329 includes support for "explicit" weak references, proxy objects, and 25330 mappings with weakly held values. 25331 25332 - A 'continue' statement can now appear in a try block within the body 25333 of a loop. It is still not possible to use continue in a finally 25334 clause. 25335 25336 Standard library 25337 25338 - mailbox.py now has a new class, PortableUnixMailbox which is 25339 identical to UnixMailbox but uses a more portable scheme for 25340 determining From_ separators. Also, the constructors for all the 25341 classes in this module have a new optional `factory' argument, which 25342 is a callable used when new message classes must be instantiated by 25343 the next() method. 25344 25345 - random.py is now self-contained, and offers all the functionality of 25346 the now-deprecated whrandom.py. See the docs for details. random.py 25347 also supports new functions getstate() and setstate(), for saving 25348 and restoring the internal state of the generator; and jumpahead(n), 25349 for quickly forcing the internal state to be the same as if n calls to 25350 random() had been made. The latter is particularly useful for multi- 25351 threaded programs, creating one instance of the random.Random() class for 25352 each thread, then using .jumpahead() to force each instance to use a 25353 non-overlapping segment of the full period. 25354 25355 - random.py's seed() function is new. For bit-for-bit compatibility with 25356 prior releases, use the whseed function instead. The new seed function 25357 addresses two problems: (1) The old function couldn't produce more than 25358 about 2**24 distinct internal states; the new one about 2**45 (the best 25359 that can be done in the Wichmann-Hill generator). (2) The old function 25360 sometimes produced identical internal states when passed distinct 25361 integers, and there was no simple way to predict when that would happen; 25362 the new one guarantees to produce distinct internal states for all 25363 arguments in [0, 27814431486576L). 25364 25365 - The socket module now supports raw packets on Linux. The socket 25366 family is AF_PACKET. 25367 25368 - test_capi.py is a start at running tests of the Python C API. The tests 25369 are implemented by the new Modules/_testmodule.c. 25370 25371 - A new extension module, _symtable, provides provisional access to the 25372 internal symbol table used by the Python compiler. A higher-level 25373 interface will be added on top of _symtable in a future release. 25374 25375 - Removed the obsolete soundex module. 25376 25377 - xml.dom.minidom now uses the standard DOM exceptions. Node supports 25378 the isSameNode method; NamedNodeMap the get method. 25379 25380 - xml.sax.expatreader supports the lexical handler property; it 25381 generates comment, startCDATA, and endCDATA events. 25382 25383 Windows changes 25384 25385 - Build procedure: the zlib project is built in a different way that 25386 ensures the zlib header files used can no longer get out of synch with 25387 the zlib binary used. See PCbuild\readme.txt for details. Your old 25388 zlib-related directories can be deleted; you'll need to download fresh 25389 source for zlib and unpack it into a new directory. 25390 25391 - Build: New subproject _test for the benefit of test_capi.py (see above). 25392 25393 - Build: New subproject _symtable, for new DLL _symtable.pyd (a nascent 25394 interface to some Python compiler internals). 25395 25396 - Build: Subproject ucnhash is gone, since the code was folded into the 25397 unicodedata subproject. 25398 25399 What's New in Python 2.1 alpha 1? 25400 ================================= 25401 25402 Core language, builtins, and interpreter 25403 25404 - There is a new Unicode companion to the PyObject_Str() API 25405 called PyObject_Unicode(). It behaves in the same way as the 25406 former, but assures that the returned value is a Unicode object 25407 (applying the usual coercion if necessary). 25408 25409 - The comparison operators support "rich comparison overloading" (PEP 25410 207). C extension types can provide a rich comparison function in 25411 the new tp_richcompare slot in the type object. The cmp() function 25412 and the C function PyObject_Compare() first try the new rich 25413 comparison operators before trying the old 3-way comparison. There 25414 is also a new C API PyObject_RichCompare() (which also falls back on 25415 the old 3-way comparison, but does not constrain the outcome of the 25416 rich comparison to a Boolean result). 25417 25418 The rich comparison function takes two objects (at least one of 25419 which is guaranteed to have the type that provided the function) and 25420 an integer indicating the opcode, which can be Py_LT, Py_LE, Py_EQ, 25421 Py_NE, Py_GT, Py_GE (for <, <=, ==, !=, >, >=), and returns a Python 25422 object, which may be NotImplemented (in which case the tp_compare 25423 slot function is used as a fallback, if defined). 25424 25425 Classes can overload individual comparison operators by defining one 25426 or more of the methods__lt__, __le__, __eq__, __ne__, __gt__, 25427 __ge__. There are no explicit "reflected argument" versions of 25428 these; instead, __lt__ and __gt__ are each other's reflection, 25429 likewise for__le__ and __ge__; __eq__ and __ne__ are their own 25430 reflection (similar at the C level). No other implications are 25431 made; in particular, Python does not assume that == is the Boolean 25432 inverse of !=, or that < is the Boolean inverse of >=. This makes 25433 it possible to define types with partial orderings. 25434 25435 Classes or types that want to implement (in)equality tests but not 25436 the ordering operators (i.e. unordered types) should implement == 25437 and !=, and raise an error for the ordering operators. 25438 25439 It is possible to define types whose rich comparison results are not 25440 Boolean; e.g. a matrix type might want to return a matrix of bits 25441 for A < B, giving elementwise comparisons. Such types should ensure 25442 that any interpretation of their value in a Boolean context raises 25443 an exception, e.g. by defining __nonzero__ (or the tp_nonzero slot 25444 at the C level) to always raise an exception. 25445 25446 - Complex numbers use rich comparisons to define == and != but raise 25447 an exception for <, <=, > and >=. Unfortunately, this also means 25448 that cmp() of two complex numbers raises an exception when the two 25449 numbers differ. Since it is not mathematically meaningful to compare 25450 complex numbers except for equality, I hope that this doesn't break 25451 too much code. 25452 25453 - The outcome of comparing non-numeric objects of different types is 25454 not defined by the language, other than that it's arbitrary but 25455 consistent (see the Reference Manual). An implementation detail changed 25456 in 2.1a1 such that None now compares less than any other object. Code 25457 relying on this new behavior (like code that relied on the previous 25458 behavior) does so at its own risk. 25459 25460 - Functions and methods now support getting and setting arbitrarily 25461 named attributes (PEP 232). Functions have a new __dict__ 25462 (a.k.a. func_dict) which hold the function attributes. Methods get 25463 and set attributes on their underlying im_func. It is a TypeError 25464 to set an attribute on a bound method. 25465 25466 - The xrange() object implementation has been improved so that 25467 xrange(sys.maxint) can be used on 64-bit platforms. There's still a 25468 limitation that in this case len(xrange(sys.maxint)) can't be 25469 calculated, but the common idiom "for i in xrange(sys.maxint)" will 25470 work fine as long as the index i doesn't actually reach 2**31. 25471 (Python uses regular ints for sequence and string indices; fixing 25472 that is much more work.) 25473 25474 - Two changes to from...import: 25475 25476 1) "from M import X" now works even if (after loading module M) 25477 sys.modules['M'] is not a real module; it's basically a getattr() 25478 operation with AttributeError exceptions changed into ImportError. 25479 25480 2) "from M import *" now looks for M.__all__ to decide which names to 25481 import; if M.__all__ doesn't exist, it uses M.__dict__.keys() but 25482 filters out names starting with '_' as before. Whether or not 25483 __all__ exists, there's no restriction on the type of M. 25484 25485 - File objects have a new method, xreadlines(). This is the fastest 25486 way to iterate over all lines in a file: 25487 25488 for line in file.xreadlines(): 25489 ...do something to line... 25490 25491 See the xreadlines module (mentioned below) for how to do this for 25492 other file-like objects. 25493 25494 - Even if you don't use file.xreadlines(), you may expect a speedup on 25495 line-by-line input. The file.readline() method has been optimized 25496 quite a bit in platform-specific ways: on systems (like Linux) that 25497 support flockfile(), getc_unlocked(), and funlockfile(), those are 25498 used by default. On systems (like Windows) without getc_unlocked(), 25499 a complicated (but still thread-safe) method using fgets() is used by 25500 default. 25501 25502 You can force use of the fgets() method by #define'ing 25503 USE_FGETS_IN_GETLINE at build time (it may be faster than 25504 getc_unlocked()). 25505 25506 You can force fgets() not to be used by #define'ing 25507 DONT_USE_FGETS_IN_GETLINE (this is the first thing to try if std test 25508 test_bufio.py fails -- and let us know if it does!). 25509 25510 - In addition, the fileinput module, while still slower than the other 25511 methods on most platforms, has been sped up too, by using 25512 file.readlines(sizehint). 25513 25514 - Support for run-time warnings has been added, including a new 25515 command line option (-W) to specify the disposition of warnings. 25516 See the description of the warnings module below. 25517 25518 - Extensive changes have been made to the coercion code. This mostly 25519 affects extension modules (which can now implement mixed-type 25520 numerical operators without having to use coercion), but 25521 occasionally, in boundary cases the coercion semantics have changed 25522 subtly. Since this was a terrible gray area of the language, this 25523 is considered an improvement. Also note that __rcmp__ is no longer 25524 supported -- instead of calling __rcmp__, __cmp__ is called with 25525 reflected arguments. 25526 25527 - In connection with the coercion changes, a new built-in singleton 25528 object, NotImplemented is defined. This can be returned for 25529 operations that wish to indicate they are not implemented for a 25530 particular combination of arguments. From C, this is 25531 Py_NotImplemented. 25532 25533 - The interpreter accepts now bytecode files on the command line even 25534 if they do not have a .pyc or .pyo extension. On Linux, after executing 25535 25536 import imp,sys,string 25537 magic = string.join(["\\x%.2x" % ord(c) for c in imp.get_magic()],"") 25538 reg = ':pyc:M::%s::%s:' % (magic, sys.executable) 25539 open("/proc/sys/fs/binfmt_misc/register","wb").write(reg) 25540 25541 any byte code file can be used as an executable (i.e. as an argument 25542 to execve(2)). 25543 25544 - %[xXo] formats of negative Python longs now produce a sign 25545 character. In 1.6 and earlier, they never produced a sign, 25546 and raised an error if the value of the long was too large 25547 to fit in a Python int. In 2.0, they produced a sign if and 25548 only if too large to fit in an int. This was inconsistent 25549 across platforms (because the size of an int varies across 25550 platforms), and inconsistent with hex() and oct(). Example: 25551 25552 >>> "%x" % -0x42L 25553 '-42' # in 2.1 25554 'ffffffbe' # in 2.0 and before, on 32-bit machines 25555 >>> hex(-0x42L) 25556 '-0x42L' # in all versions of Python 25557 25558 The behavior of %d formats for negative Python longs remains 25559 the same as in 2.0 (although in 1.6 and before, they raised 25560 an error if the long didn't fit in a Python int). 25561 25562 %u formats don't make sense for Python longs, but are allowed 25563 and treated the same as %d in 2.1. In 2.0, a negative long 25564 formatted via %u produced a sign if and only if too large to 25565 fit in an int. In 1.6 and earlier, a negative long formatted 25566 via %u raised an error if it was too big to fit in an int. 25567 25568 - Dictionary objects have an odd new method, popitem(). This removes 25569 an arbitrary item from the dictionary and returns it (in the form of 25570 a (key, value) pair). This can be useful for algorithms that use a 25571 dictionary as a bag of "to do" items and repeatedly need to pick one 25572 item. Such algorithms normally end up running in quadratic time; 25573 using popitem() they can usually be made to run in linear time. 25574 25575 Standard library 25576 25577 - In the time module, the time argument to the functions strftime, 25578 localtime, gmtime, asctime and ctime is now optional, defaulting to 25579 the current time (in the local timezone). 25580 25581 - The ftplib module now defaults to passive mode, which is deemed a 25582 more useful default given that clients are often inside firewalls 25583 these days. Note that this could break if ftplib is used to connect 25584 to a *server* that is inside a firewall, from outside; this is 25585 expected to be a very rare situation. To fix that, you can call 25586 ftp.set_pasv(0). 25587 25588 - The module site now treats .pth files not only for path configuration, 25589 but also supports extensions to the initialization code: Lines starting 25590 with import are executed. 25591 25592 - There's a new module, warnings, which implements a mechanism for 25593 issuing and filtering warnings. There are some new built-in 25594 exceptions that serve as warning categories, and a new command line 25595 option, -W, to control warnings (e.g. -Wi ignores all warnings, -We 25596 turns warnings into errors). warnings.warn(message[, category]) 25597 issues a warning message; this can also be called from C as 25598 PyErr_Warn(category, message). 25599 25600 - A new module xreadlines was added. This exports a single factory 25601 function, xreadlines(). The intention is that this code is the 25602 absolutely fastest way to iterate over all lines in an open 25603 file(-like) object: 25604 25605 import xreadlines 25606 for line in xreadlines.xreadlines(file): 25607 ...do something to line... 25608 25609 This is equivalent to the previous the speed record holder using 25610 file.readlines(sizehint). Note that if file is a real file object 25611 (as opposed to a file-like object), this is equivalent: 25612 25613 for line in file.xreadlines(): 25614 ...do something to line... 25615 25616 - The bisect module has new functions bisect_left, insort_left, 25617 bisect_right and insort_right. The old names bisect and insort 25618 are now aliases for bisect_right and insort_right. XXX_right 25619 and XXX_left methods differ in what happens when the new element 25620 compares equal to one or more elements already in the list: the 25621 XXX_left methods insert to the left, the XXX_right methods to the 25622 right. Code that doesn't care where equal elements end up should 25623 continue to use the old, short names ("bisect" and "insort"). 25624 25625 - The new curses.panel module wraps the panel library that forms part 25626 of SYSV curses and ncurses. Contributed by Thomas Gellekum. 25627 25628 - The SocketServer module now sets the allow_reuse_address flag by 25629 default in the TCPServer class. 25630 25631 - A new function, sys._getframe(), returns the stack frame pointer of 25632 the caller. This is intended only as a building block for 25633 higher-level mechanisms such as string interpolation. 25634 25635 - The pyexpat module supports a number of new handlers, which are 25636 available only in expat 1.2. If invocation of a callback fails, it 25637 will report an additional frame in the traceback. Parser objects 25638 participate now in garbage collection. If expat reports an unknown 25639 encoding, pyexpat will try to use a Python codec; that works only 25640 for single-byte charsets. The parser type objects is exposed as 25641 XMLParserObject. 25642 25643 - xml.dom now offers standard definitions for symbolic node type and 25644 exception code constants, and a hierarchy of DOM exceptions. minidom 25645 was adjusted to use them. 25646 25647 - The conformance of xml.dom.minidom to the DOM specification was 25648 improved. It detects a number of additional error cases; the 25649 previous/next relationship works even when the tree is modified; 25650 Node supports the normalize() method; NamedNodeMap, DocumentType and 25651 DOMImplementation classes were added; Element supports the 25652 hasAttribute and hasAttributeNS methods; and Text supports the splitText 25653 method. 25654 25655 Build issues 25656 25657 - For Unix (and Unix-compatible) builds, configuration and building of 25658 extension modules is now greatly automated. Rather than having to 25659 edit the Modules/Setup file to indicate which modules should be 25660 built and where their include files and libraries are, a 25661 distutils-based setup.py script now takes care of building most 25662 extension modules. All extension modules built this way are built 25663 as shared libraries. Only a few modules that must be linked 25664 statically are still listed in the Setup file; you won't need to 25665 edit their configuration. 25666 25667 - Python should now build out of the box on Cygwin. If it doesn't, 25668 mail to Jason Tishler (jlt63 at users.sourceforge.net). 25669 25670 - Python now always uses its own (renamed) implementation of getopt() 25671 -- there's too much variation among C library getopt() 25672 implementations. 25673 25674 - C++ compilers are better supported; the CXX macro is always set to a 25675 C++ compiler if one is found. 25676 25677 Windows changes 25678 25679 - select module: By default under Windows, a select() call 25680 can specify no more than 64 sockets. Python now boosts 25681 this Microsoft default to 512. If you need even more than 25682 that, see the MS docs (you'll need to #define FD_SETSIZE 25683 and recompile Python from source). 25684 25685 - Support for Windows 3.1, DOS and OS/2 is gone. The Lib/dos-8x3 25686 subdirectory is no more! 25687 25688 25689 What's New in Python 2.0? 25690 ========================= 25691 25692 Below is a list of all relevant changes since release 1.6. Older 25693 changes are in the file HISTORY. If you are making the jump directly 25694 from Python 1.5.2 to 2.0, make sure to read the section for 1.6 in the 25695 HISTORY file! Many important changes listed there. 25696 25697 Alternatively, a good overview of the changes between 1.5.2 and 2.0 is 25698 the document "What's New in Python 2.0" by Kuchling and Moshe Zadka: 25699 http://www.amk.ca/python/2.0/. 25700 25701 --Guido van Rossum (home page: http://www.pythonlabs.com/~guido/) 25702 25703 ====================================================================== 25704 25705 What's new in 2.0 (since release candidate 1)? 25706 ============================================== 25707 25708 Standard library 25709 25710 - The copy_reg module was modified to clarify its intended use: to 25711 register pickle support for extension types, not for classes. 25712 pickle() will raise a TypeError if it is passed a class. 25713 25714 - Fixed a bug in gettext's "normalize and expand" code that prevented 25715 it from finding an existing .mo file. 25716 25717 - Restored support for HTTP/0.9 servers in httplib. 25718 25719 - The math module was changed to stop raising OverflowError in case of 25720 underflow, and return 0 instead in underflow cases. Whether Python 25721 used to raise OverflowError in case of underflow was platform- 25722 dependent (it did when the platform math library set errno to ERANGE 25723 on underflow). 25724 25725 - Fixed a bug in StringIO that occurred when the file position was not 25726 at the end of the file and write() was called with enough data to 25727 extend past the end of the file. 25728 25729 - Fixed a bug that caused Tkinter error messages to get lost on 25730 Windows. The bug was fixed by replacing direct use of 25731 interp->result with Tcl_GetStringResult(interp). 25732 25733 - Fixed bug in urllib2 that caused it to fail when it received an HTTP 25734 redirect response. 25735 25736 - Several changes were made to distutils: Some debugging code was 25737 removed from util. Fixed the installer used when an external zip 25738 program (like WinZip) is not found; the source code for this 25739 installer is in Misc/distutils. check_lib() was modified to behave 25740 more like AC_CHECK_LIB by add other_libraries() as a parameter. The 25741 test for whether installed modules are on sys.path was changed to 25742 use both normcase() and normpath(). 25743 25744 - Several minor bugs were fixed in the xml package (the minidom, 25745 pulldom, expatreader, and saxutils modules). 25746 25747 - The regression test driver (regrtest.py) behavior when invoked with 25748 -l changed: It now reports a count of objects that are recognized as 25749 garbage but not freed by the garbage collector. 25750 25751 - The regression test for the math module was changed to test 25752 exceptional behavior when the test is run in verbose mode. Python 25753 cannot yet guarantee consistent exception behavior across platforms, 25754 so the exception part of test_math is run only in verbose mode, and 25755 may fail on your platform. 25756 25757 Internals 25758 25759 - PyOS_CheckStack() has been disabled on Win64, where it caused 25760 test_sre to fail. 25761 25762 Build issues 25763 25764 - Changed compiler flags, so that gcc is always invoked with -Wall and 25765 -Wstrict-prototypes. Users compiling Python with GCC should see 25766 exactly one warning, except if they have passed configure the 25767 --with-pydebug flag. The expected warning is for getopt() in 25768 Modules/main.c. This warning will be fixed for Python 2.1. 25769 25770 - Fixed configure to add -threads argument during linking on OSF1. 25771 25772 Tools and other miscellany 25773 25774 - The compiler in Tools/compiler was updated to support the new 25775 language features introduced in 2.0: extended print statement, list 25776 comprehensions, and augmented assignments. The new compiler should 25777 also be backwards compatible with Python 1.5.2; the compiler will 25778 always generate code for the version of the interpreter it runs 25779 under. 25780 25781 What's new in 2.0 release candidate 1 (since beta 2)? 25782 ===================================================== 25783 25784 What is release candidate 1? 25785 25786 We believe that release candidate 1 will fix all known bugs that we 25787 intend to fix for the 2.0 final release. This release should be a bit 25788 more stable than the previous betas. We would like to see even more 25789 widespread testing before the final release, so we are producing this 25790 release candidate. The final release will be exactly the same unless 25791 any show-stopping (or brown bag) bugs are found by testers of the 25792 release candidate. 25793 25794 All the changes since the last beta release are bug fixes or changes 25795 to support building Python for specific platforms. 25796 25797 Core language, builtins, and interpreter 25798 25799 - A bug that caused crashes when __coerce__ was used with augmented 25800 assignment, e.g. +=, was fixed. 25801 25802 - Raise ZeroDivisionError when raising zero to a negative number, 25803 e.g. 0.0 ** -2.0. Note that math.pow is unrelated to the built-in 25804 power operator and the result of math.pow(0.0, -2.0) will vary by 25805 platform. On Linux, it raises a ValueError. 25806 25807 - A bug in Unicode string interpolation was fixed that occasionally 25808 caused errors with formats including "%%". For example, the 25809 following expression "%% %s" % u"abc" no longer raises a TypeError. 25810 25811 - Compilation of deeply nested expressions raises MemoryError instead 25812 of SyntaxError, e.g. eval("[" * 50 + "]" * 50). 25813 25814 - In 2.0b2 on Windows, the interpreter wrote .pyc files in text mode, 25815 rendering them useless. They are now written in binary mode again. 25816 25817 Standard library 25818 25819 - Keyword arguments are now accepted for most pattern and match object 25820 methods in SRE, the standard regular expression engine. 25821 25822 - In SRE, fixed error with negative lookahead and lookbehind that 25823 manifested itself as a runtime error in patterns like "(?<!abc)(def)". 25824 25825 - Several bugs in the Unicode handling and error handling in _tkinter 25826 were fixed. 25827 25828 - Fix memory management errors in Merge() and Tkapp_Call() routines. 25829 25830 - Several changes were made to cStringIO to make it compatible with 25831 the file-like object interface and with StringIO. If operations are 25832 performed on a closed object, an exception is raised. The truncate 25833 method now accepts a position argument and readline accepts a size 25834 argument. 25835 25836 - There were many changes made to the linuxaudiodev module and its 25837 test suite; as a result, a short, unexpected audio sample should now 25838 play when the regression test is run. 25839 25840 Note that this module is named poorly, because it should work 25841 correctly on any platform that supports the Open Sound System 25842 (OSS). 25843 25844 The module now raises exceptions when errors occur instead of 25845 crashing. It also defines the AFMT_A_LAW format (logarithmic A-law 25846 audio) and defines a getptr() method that calls the 25847 SNDCTL_DSP_GETxPTR ioctl defined in the OSS Programmer's Guide. 25848 25849 - The library_version attribute, introduced in an earlier beta, was 25850 removed because it can not be supported with early versions of the C 25851 readline library, which provides no way to determine the version at 25852 compile-time. 25853 25854 - The binascii module is now enabled on Win64. 25855 25856 - tokenize.py no longer suffers "recursion depth" errors when parsing 25857 programs with very long string literals. 25858 25859 Internals 25860 25861 - Fixed several buffer overflow vulnerabilities in calculate_path(), 25862 which is called when the interpreter starts up to determine where 25863 the standard library is installed. These vulnerabilities affect all 25864 previous versions of Python and can be exploited by setting very 25865 long values for PYTHONHOME or argv[0]. The risk is greatest for a 25866 setuid Python script, although use of the wrapper in 25867 Misc/setuid-prog.c will eliminate the vulnerability. 25868 25869 - Fixed garbage collection bugs in instance creation that were 25870 triggered when errors occurred during initialization. The solution, 25871 applied in cPickle and in PyInstance_New(), is to call 25872 PyObject_GC_Init() after the initialization of the object's 25873 container attributes is complete. 25874 25875 - pyexpat adds definitions of PyModule_AddStringConstant and 25876 PyModule_AddObject if the Python version is less than 2.0, which 25877 provides compatibility with PyXML on Python 1.5.2. 25878 25879 - If the platform has a bogus definition for LONG_BIT (the number of 25880 bits in a long), an error will be reported at compile time. 25881 25882 - Fix bugs in _PyTuple_Resize() which caused hard-to-interpret garbage 25883 collection crashes and possibly other, unreported crashes. 25884 25885 - Fixed a memory leak in _PyUnicode_Fini(). 25886 25887 Build issues 25888 25889 - configure now accepts a --with-suffix option that specifies the 25890 executable suffix. This is useful for builds on Cygwin and Mac OS 25891 X, for example. 25892 25893 - The mmap.PAGESIZE constant is now initialized using sysconf when 25894 possible, which eliminates a dependency on -lucb for Reliant UNIX. 25895 25896 - The md5 file should now compile on all platforms. 25897 25898 - The select module now compiles on platforms that do not define 25899 POLLRDNORM and related constants. 25900 25901 - Darwin (Mac OS X): Initial support for static builds on this 25902 platform. 25903 25904 - BeOS: A number of changes were made to the build and installation 25905 process. ar-fake now operates on a directory of object files. 25906 dl_export.h is gone, and its macros now appear on the mwcc command 25907 line during build on PPC BeOS. 25908 25909 - Platform directory in lib/python2.0 is "plat-beos5" (or 25910 "plat-beos4", if building on BeOS 4.5), rather than "plat-beos". 25911 25912 - Cygwin: Support for shared libraries, Tkinter, and sockets. 25913 25914 - SunOS 4.1.4_JL: Fix test for directory existence in configure. 25915 25916 Tools and other miscellany 25917 25918 - Removed debugging prints from main used with freeze. 25919 25920 - IDLE auto-indent no longer crashes when it encounters Unicode 25921 characters. 25922 25923 What's new in 2.0 beta 2 (since beta 1)? 25924 ======================================== 25925 25926 Core language, builtins, and interpreter 25927 25928 - Add support for unbounded ints in %d,i,u,x,X,o formats; for example 25929 "%d" % 2L**64 == "18446744073709551616". 25930 25931 - Add -h and -V command line options to print the usage message and 25932 Python version number and exit immediately. 25933 25934 - eval() and exec accept Unicode objects as code parameters. 25935 25936 - getattr() and setattr() now also accept Unicode objects for the 25937 attribute name, which are converted to strings using the default 25938 encoding before lookup. 25939 25940 - Multiplication on string and Unicode now does proper bounds 25941 checking; e.g. 'a' * 65536 * 65536 will raise ValueError, "repeated 25942 string is too long." 25943 25944 - Better error message when continue is found in try statement in a 25945 loop. 25946 25947 25948 Standard library and extensions 25949 25950 - socket module: the OpenSSL code now adds support for RAND_status() 25951 and EGD (Entropy Gathering Device). 25952 25953 - array: reverse() method of array now works. buffer_info() now does 25954 argument checking; it still takes no arguments. 25955 25956 - asyncore/asynchat: Included most recent version from Sam Rushing. 25957 25958 - cgi: Accept '&' or ';' as separator characters when parsing form data. 25959 25960 - CGIHTTPServer: Now works on Windows (and perhaps even Mac). 25961 25962 - ConfigParser: When reading the file, options spelled in upper case 25963 letters are now correctly converted to lowercase. 25964 25965 - copy: Copy Unicode objects atomically. 25966 25967 - cPickle: Fail gracefully when copy_reg can't be imported. 25968 25969 - cStringIO: Implemented readlines() method. 25970 25971 - dbm: Add get() and setdefault() methods to dbm object. Add constant 25972 `library' to module that names the library used. Added doc strings 25973 and method names to error messages. Uses configure to determine 25974 which ndbm.h file to include; Berkeley DB's nbdm and GDBM's ndbm is 25975 now available options. 25976 25977 - distutils: Update to version 0.9.3. 25978 25979 - dl: Add several dl.RTLD_ constants. 25980 25981 - fpectl: Now supported on FreeBSD. 25982 25983 - gc: Add DEBUG_SAVEALL option. When enabled all garbage objects 25984 found by the collector will be saved in gc.garbage. This is useful 25985 for debugging a program that creates reference cycles. 25986 25987 - httplib: Three changes: Restore support for set_debuglevel feature 25988 of HTTP class. Do not close socket on zero-length response. Do not 25989 crash when server sends invalid content-length header. 25990 25991 - mailbox: Mailbox class conforms better to qmail specifications. 25992 25993 - marshal: When reading a short, sign-extend on platforms where shorts 25994 are bigger than 16 bits. When reading a long, repair the unportable 25995 sign extension that was being done for 64-bit machines. (It assumed 25996 that signed right shift sign-extends.) 25997 25998 - operator: Add contains(), invert(), __invert__() as aliases for 25999 __contains__(), inv(), and __inv__() respectively. 26000 26001 - os: Add support for popen2() and popen3() on all platforms where 26002 fork() exists. (popen4() is still in the works.) 26003 26004 - os: (Windows only:) Add startfile() function that acts like double- 26005 clicking on a file in Explorer (or passing the file name to the 26006 DOS "start" command). 26007 26008 - os.path: (Windows, DOS:) Treat trailing colon correctly in 26009 os.path.join. os.path.join("a:", "b") yields "a:b". 26010 26011 - pickle: Now raises ValueError when an invalid pickle that contains 26012 a non-string repr where a string repr was expected. This behavior 26013 matches cPickle. 26014 26015 - posixfile: Remove broken __del__() method. 26016 26017 - py_compile: support CR+LF line terminators in source file. 26018 26019 - readline: Does not immediately exit when ^C is hit when readline and 26020 threads are configured. Adds definition of rl_library_version. (The 26021 latter addition requires GNU readline 2.2 or later.) 26022 26023 - rfc822: Domain literals returned by AddrlistClass method 26024 getdomainliteral() are now properly wrapped in brackets. 26025 26026 - site: sys.setdefaultencoding() should only be called in case the 26027 standard default encoding ("ascii") is changed. This saves quite a 26028 few cycles during startup since the first call to 26029 setdefaultencoding() will initialize the codec registry and the 26030 encodings package. 26031 26032 - socket: Support for size hint in readlines() method of object returned 26033 by makefile(). 26034 26035 - sre: Added experimental expand() method to match objects. Does not 26036 use buffer interface on Unicode strings. Does not hang if group id 26037 is followed by whitespace. 26038 26039 - StringIO: Size hint in readlines() is now supported as documented. 26040 26041 - struct: Check ranges for bytes and shorts. 26042 26043 - urllib: Improved handling of win32 proxy settings. Fixed quote and 26044 quote_plus functions so that the always encode a comma. 26045 26046 - Tkinter: Image objects are now guaranteed to have unique ids. Set 26047 event.delta to zero if Tk version doesn't support mousewheel. 26048 Removed some debugging prints. 26049 26050 - UserList: now implements __contains__(). 26051 26052 - webbrowser: On Windows, use os.startfile() instead of os.popen(), 26053 which works around a bug in Norton AntiVirus 2000 that leads directly 26054 to a Blue Screen freeze. 26055 26056 - xml: New version detection code allows PyXML to override standard 26057 XML package if PyXML version is greater than 0.6.1. 26058 26059 - xml.dom: DOM level 1 support for basic XML. Includes xml.dom.minidom 26060 (conventional DOM), and xml.dom.pulldom, which allows building the DOM 26061 tree only for nodes which are sufficiently interesting to a specific 26062 application. Does not provide the HTML-specific extensions. Still 26063 undocumented. 26064 26065 - xml.sax: SAX 2 support for Python, including all the handler 26066 interfaces needed to process XML 1.0 compliant XML. Some 26067 documentation is already available. 26068 26069 - pyexpat: Renamed to xml.parsers.expat since this is part of the new, 26070 packagized XML support. 26071 26072 26073 C API 26074 26075 - Add three new convenience functions for module initialization -- 26076 PyModule_AddObject(), PyModule_AddIntConstant(), and 26077 PyModule_AddStringConstant(). 26078 26079 - Cleaned up definition of NULL in C source code; all definitions were 26080 removed and add #error to Python.h if NULL isn't defined after 26081 #include of stdio.h. 26082 26083 - Py_PROTO() macros that were removed in 2.0b1 have been restored for 26084 backwards compatibility (at the source level) with old extensions. 26085 26086 - A wrapper API was added for signal() and sigaction(). Instead of 26087 either function, always use PyOS_getsig() to get a signal handler 26088 and PyOS_setsig() to set one. A new convenience typedef 26089 PyOS_sighandler_t is defined for the type of signal handlers. 26090 26091 - Add PyString_AsStringAndSize() function that provides access to the 26092 internal data buffer and size of a string object -- or the default 26093 encoded version of a Unicode object. 26094 26095 - PyString_Size() and PyString_AsString() accept Unicode objects. 26096 26097 - The standard header <limits.h> is now included by Python.h (if it 26098 exists). INT_MAX and LONG_MAX will always be defined, even if 26099 <limits.h> is not available. 26100 26101 - PyFloat_FromString takes a second argument, pend, that was 26102 effectively useless. It is now officially useless but preserved for 26103 backwards compatibility. If the pend argument is not NULL, *pend is 26104 set to NULL. 26105 26106 - PyObject_GetAttr() and PyObject_SetAttr() now accept Unicode objects 26107 for the attribute name. See note on getattr() above. 26108 26109 - A few bug fixes to argument processing for Unicode. 26110 PyArg_ParseTupleAndKeywords() now accepts "es#" and "es". 26111 PyArg_Parse() special cases "s#" for Unicode objects; it returns a 26112 pointer to the default encoded string data instead of to the raw 26113 UTF-16. 26114 26115 - Py_BuildValue accepts B format (for bgen-generated code). 26116 26117 26118 Internals 26119 26120 - On Unix, fix code for finding Python installation directory so that 26121 it works when argv[0] is a relative path. 26122 26123 - Added a true unicode_internal_encode() function and fixed the 26124 unicode_internal_decode function() to support Unicode objects directly 26125 rather than by generating a copy of the object. 26126 26127 - Several of the internal Unicode tables are much smaller now, and 26128 the source code should be much friendlier to weaker compilers. 26129 26130 - In the garbage collector: Fixed bug in collection of tuples. Fixed 26131 bug that caused some instances to be removed from the container set 26132 while they were still live. Fixed parsing in gc.set_debug() for 26133 platforms where sizeof(long) > sizeof(int). 26134 26135 - Fixed refcount problem in instance deallocation that only occurred 26136 when Py_REF_DEBUG was defined and Py_TRACE_REFS was not. 26137 26138 - On Windows, getpythonregpath is now protected against null data in 26139 registry key. 26140 26141 - On Unix, create .pyc/.pyo files with O_EXCL flag to avoid a race 26142 condition. 26143 26144 26145 Build and platform-specific issues 26146 26147 - Better support of GNU Pth via --with-pth configure option. 26148 26149 - Python/C API now properly exposed to dynamically-loaded extension 26150 modules on Reliant UNIX. 26151 26152 - Changes for the benefit of SunOS 4.1.4 (really!). mmapmodule.c: 26153 Don't define MS_SYNC to be zero when it is undefined. Added missing 26154 prototypes in posixmodule.c. 26155 26156 - Improved support for HP-UX build. Threads should now be correctly 26157 configured (on HP-UX 10.20 and 11.00). 26158 26159 - Fix largefile support on older NetBSD systems and OpenBSD by adding 26160 define for TELL64. 26161 26162 26163 Tools and other miscellany 26164 26165 - ftpmirror: Call to main() is wrapped in if __name__ == "__main__". 26166 26167 - freeze: The modulefinder now works with 2.0 opcodes. 26168 26169 - IDLE: 26170 Move hackery of sys.argv until after the Tk instance has been 26171 created, which allows the application-specific Tkinter 26172 initialization to be executed if present; also pass an explicit 26173 className parameter to the Tk() constructor. 26174 26175 26176 What's new in 2.0 beta 1? 26177 ========================= 26178 26179 Source Incompatibilities 26180 ------------------------ 26181 26182 None. Note that 1.6 introduced several incompatibilities with 1.5.2, 26183 such as single-argument append(), connect() and bind(), and changes to 26184 str(long) and repr(float). 26185 26186 26187 Binary Incompatibilities 26188 ------------------------ 26189 26190 - Third party extensions built for Python 1.5.x or 1.6 cannot be used 26191 with Python 2.0; these extensions will have to be rebuilt for Python 26192 2.0. 26193 26194 - On Windows, attempting to import a third party extension built for 26195 Python 1.5.x or 1.6 results in an immediate crash; there's not much we 26196 can do about this. Check your PYTHONPATH environment variable! 26197 26198 - Python bytecode files (*.pyc and *.pyo) are not compatible between 26199 releases. 26200 26201 26202 Overview of Changes Since 1.6 26203 ----------------------------- 26204 26205 There are many new modules (including brand new XML support through 26206 the xml package, and i18n support through the gettext module); a list 26207 of all new modules is included below. Lots of bugs have been fixed. 26208 26209 The process for making major new changes to the language has changed 26210 since Python 1.6. Enhancements must now be documented by a Python 26211 Enhancement Proposal (PEP) before they can be accepted. 26212 26213 There are several important syntax enhancements, described in more 26214 detail below: 26215 26216 - Augmented assignment, e.g. x += 1 26217 26218 - List comprehensions, e.g. [x**2 for x in range(10)] 26219 26220 - Extended import statement, e.g. import Module as Name 26221 26222 - Extended print statement, e.g. print >> file, "Hello" 26223 26224 Other important changes: 26225 26226 - Optional collection of cyclical garbage 26227 26228 Python Enhancement Proposal (PEP) 26229 --------------------------------- 26230 26231 PEP stands for Python Enhancement Proposal. A PEP is a design 26232 document providing information to the Python community, or describing 26233 a new feature for Python. The PEP should provide a concise technical 26234 specification of the feature and a rationale for the feature. 26235 26236 We intend PEPs to be the primary mechanisms for proposing new 26237 features, for collecting community input on an issue, and for 26238 documenting the design decisions that have gone into Python. The PEP 26239 author is responsible for building consensus within the community and 26240 documenting dissenting opinions. 26241 26242 The PEPs are available at http://python.sourceforge.net/peps/. 26243 26244 Augmented Assignment 26245 -------------------- 26246 26247 This must have been the most-requested feature of the past years! 26248 Eleven new assignment operators were added: 26249 26250 += -= *= /= %= **= <<= >>= &= ^= |= 26251 26252 For example, 26253 26254 A += B 26255 26256 is similar to 26257 26258 A = A + B 26259 26260 except that A is evaluated only once (relevant when A is something 26261 like dict[index].attr). 26262 26263 However, if A is a mutable object, A may be modified in place. Thus, 26264 if A is a number or a string, A += B has the same effect as A = A+B 26265 (except A is only evaluated once); but if a is a list, A += B has the 26266 same effect as A.extend(B)! 26267 26268 Classes and built-in object types can override the new operators in 26269 order to implement the in-place behavior; the not-in-place behavior is 26270 used automatically as a fallback when an object doesn't implement the 26271 in-place behavior. For classes, the method name is derived from the 26272 method name for the corresponding not-in-place operator by inserting 26273 an 'i' in front of the name, e.g. __iadd__ implements in-place 26274 __add__. 26275 26276 Augmented assignment was implemented by Thomas Wouters. 26277 26278 26279 List Comprehensions 26280 ------------------- 26281 26282 This is a flexible new notation for lists whose elements are computed 26283 from another list (or lists). The simplest form is: 26284 26285 [<expression> for <variable> in <sequence>] 26286 26287 For example, [i**2 for i in range(4)] yields the list [0, 1, 4, 9]. 26288 This is more efficient than a for loop with a list.append() call. 26289 26290 You can also add a condition: 26291 26292 [<expression> for <variable> in <sequence> if <condition>] 26293 26294 For example, [w for w in words if w == w.lower()] would yield the list 26295 of words that contain no uppercase characters. This is more efficient 26296 than a for loop with an if statement and a list.append() call. 26297 26298 You can also have nested for loops and more than one 'if' clause. For 26299 example, here's a function that flattens a sequence of sequences:: 26300 26301 def flatten(seq): 26302 return [x for subseq in seq for x in subseq] 26303 26304 flatten([[0], [1,2,3], [4,5], [6,7,8,9], []]) 26305 26306 This prints 26307 26308 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 26309 26310 List comprehensions originated as a patch set from Greg Ewing; Skip 26311 Montanaro and Thomas Wouters also contributed. Described by PEP 202. 26312 26313 26314 Extended Import Statement 26315 ------------------------- 26316 26317 Many people have asked for a way to import a module under a different 26318 name. This can be accomplished like this: 26319 26320 import foo 26321 bar = foo 26322 del foo 26323 26324 but this common idiom gets old quickly. A simple extension of the 26325 import statement now allows this to be written as follows: 26326 26327 import foo as bar 26328 26329 There's also a variant for 'from ... import': 26330 26331 from foo import bar as spam 26332 26333 This also works with packages; e.g. you can write this: 26334 26335 import test.regrtest as regrtest 26336 26337 Note that 'as' is not a new keyword -- it is recognized only in this 26338 context (this is only possible because the syntax for the import 26339 statement doesn't involve expressions). 26340 26341 Implemented by Thomas Wouters. Described by PEP 221. 26342 26343 26344 Extended Print Statement 26345 ------------------------ 26346 26347 Easily the most controversial new feature, this extension to the print 26348 statement adds an option to make the output go to a different file 26349 than the default sys.stdout. 26350 26351 For example, to write an error message to sys.stderr, you can now 26352 write: 26353 26354 print >> sys.stderr, "Error: bad dog!" 26355 26356 As a special feature, if the expression used to indicate the file 26357 evaluates to None, the current value of sys.stdout is used. Thus: 26358 26359 print >> None, "Hello world" 26360 26361 is equivalent to 26362 26363 print "Hello world" 26364 26365 Design and implementation by Barry Warsaw. Described by PEP 214. 26366 26367 26368 Optional Collection of Cyclical Garbage 26369 --------------------------------------- 26370 26371 Python is now equipped with a garbage collector that can hunt down 26372 cyclical references between Python objects. It's no replacement for 26373 reference counting; in fact, it depends on the reference counts being 26374 correct, and decides that a set of objects belong to a cycle if all 26375 their reference counts can be accounted for from their references to 26376 each other. This devious scheme was first proposed by Eric Tiedemann, 26377 and brought to implementation by Neil Schemenauer. 26378 26379 There's a module "gc" that lets you control some parameters of the 26380 garbage collection. There's also an option to the configure script 26381 that lets you enable or disable the garbage collection. In 2.0b1, 26382 it's on by default, so that we (hopefully) can collect decent user 26383 experience with this new feature. There are some questions about its 26384 performance. If it proves to be too much of a problem, we'll turn it 26385 off by default in the final 2.0 release. 26386 26387 26388 Smaller Changes 26389 --------------- 26390 26391 A new function zip() was added. zip(seq1, seq2, ...) is equivalent to 26392 map(None, seq1, seq2, ...) when the sequences have the same length; 26393 i.e. zip([1,2,3], [10,20,30]) returns [(1,10), (2,20), (3,30)]. When 26394 the lists are not all the same length, the shortest list wins: 26395 zip([1,2,3], [10,20]) returns [(1,10), (2,20)]. See PEP 201. 26396 26397 sys.version_info is a tuple (major, minor, micro, level, serial). 26398 26399 Dictionaries have an odd new method, setdefault(key, default). 26400 dict.setdefault(key, default) returns dict[key] if it exists; if not, 26401 it sets dict[key] to default and returns that value. Thus: 26402 26403 dict.setdefault(key, []).append(item) 26404 26405 does the same work as this common idiom: 26406 26407 if not dict.has_key(key): 26408 dict[key] = [] 26409 dict[key].append(item) 26410 26411 There are two new variants of SyntaxError that are raised for 26412 indentation-related errors: IndentationError and TabError. 26413 26414 Changed \x to consume exactly two hex digits; see PEP 223. Added \U 26415 escape that consumes exactly eight hex digits. 26416 26417 The limits on the size of expressions and file in Python source code 26418 have been raised from 2**16 to 2**32. Previous versions of Python 26419 were limited because the maximum argument size the Python VM accepted 26420 was 2**16. This limited the size of object constructor expressions, 26421 e.g. [1,2,3] or {'a':1, 'b':2}, and the size of source files. This 26422 limit was raised thanks to a patch by Charles Waldman that effectively 26423 fixes the problem. It is now much more likely that you will be 26424 limited by available memory than by an arbitrary limit in Python. 26425 26426 The interpreter's maximum recursion depth can be modified by Python 26427 programs using sys.getrecursionlimit and sys.setrecursionlimit. This 26428 limit is the maximum number of recursive calls that can be made by 26429 Python code. The limit exists to prevent infinite recursion from 26430 overflowing the C stack and causing a core dump. The default value is 26431 1000. The maximum safe value for a particular platform can be found 26432 by running Tools/scripts/find_recursionlimit.py. 26433 26434 New Modules and Packages 26435 ------------------------ 26436 26437 atexit - for registering functions to be called when Python exits. 26438 26439 imputil - Greg Stein's alternative API for writing custom import 26440 hooks. 26441 26442 pyexpat - an interface to the Expat XML parser, contributed by Paul 26443 Prescod. 26444 26445 xml - a new package with XML support code organized (so far) in three 26446 subpackages: xml.dom, xml.sax, and xml.parsers. Describing these 26447 would fill a volume. There's a special feature whereby a 26448 user-installed package named _xmlplus overrides the standard 26449 xmlpackage; this is intended to give the XML SIG a hook to distribute 26450 backwards-compatible updates to the standard xml package. 26451 26452 webbrowser - a platform-independent API to launch a web browser. 26453 26454 26455 Changed Modules 26456 --------------- 26457 26458 array -- new methods for array objects: count, extend, index, pop, and 26459 remove 26460 26461 binascii -- new functions b2a_hex and a2b_hex that convert between 26462 binary data and its hex representation 26463 26464 calendar -- Many new functions that support features including control 26465 over which day of the week is the first day, returning strings instead 26466 of printing them. Also new symbolic constants for days of week, 26467 e.g. MONDAY, ..., SUNDAY. 26468 26469 cgi -- FieldStorage objects have a getvalue method that works like a 26470 dictionary's get method and returns the value attribute of the object. 26471 26472 ConfigParser -- The parser object has new methods has_option, 26473 remove_section, remove_option, set, and write. They allow the module 26474 to be used for writing config files as well as reading them. 26475 26476 ftplib -- ntransfercmd(), transfercmd(), and retrbinary() all now 26477 optionally support the RFC 959 REST command. 26478 26479 gzip -- readline and readlines now accept optional size arguments 26480 26481 httplib -- New interfaces and support for HTTP/1.1 by Greg Stein. See 26482 the module doc strings for details. 26483 26484 locale -- implement getdefaultlocale for Win32 and Macintosh 26485 26486 marshal -- no longer dumps core when marshaling deeply nested or 26487 recursive data structures 26488 26489 os -- new functions isatty, seteuid, setegid, setreuid, setregid 26490 26491 os/popen2 -- popen2/popen3/popen4 support under Windows. popen2/popen3 26492 support under Unix. 26493 26494 os/pty -- support for openpty and forkpty 26495 26496 os.path -- fix semantics of os.path.commonprefix 26497 26498 smtplib -- support for sending very long messages 26499 26500 socket -- new function getfqdn() 26501 26502 readline -- new functions to read, write and truncate history files. 26503 The readline section of the library reference manual contains an 26504 example. 26505 26506 select -- add interface to poll system call 26507 26508 shutil -- new copyfileobj function 26509 26510 SimpleHTTPServer, CGIHTTPServer -- Fix problems with buffering in the 26511 HTTP server. 26512 26513 Tkinter -- optimization of function flatten 26514 26515 urllib -- scans environment variables for proxy configuration, 26516 e.g. http_proxy. 26517 26518 whichdb -- recognizes dumbdbm format 26519 26520 26521 Obsolete Modules 26522 ---------------- 26523 26524 None. However note that 1.6 made a whole slew of modules obsolete: 26525 stdwin, soundex, cml, cmpcache, dircache, dump, find, grep, packmail, 26526 poly, zmod, strop, util, whatsound. 26527 26528 26529 Changed, New, Obsolete Tools 26530 ---------------------------- 26531 26532 None. 26533 26534 26535 C-level Changes 26536 --------------- 26537 26538 Several cleanup jobs were carried out throughout the source code. 26539 26540 All C code was converted to ANSI C; we got rid of all uses of the 26541 Py_PROTO() macro, which makes the header files a lot more readable. 26542 26543 Most of the portability hacks were moved to a new header file, 26544 pyport.h; several other new header files were added and some old 26545 header files were removed, in an attempt to create a more rational set 26546 of header files. (Few of these ever need to be included explicitly; 26547 they are all included by Python.h.) 26548 26549 Trent Mick ensured portability to 64-bit platforms, under both Linux 26550 and Win64, especially for the new Intel Itanium processor. Mick also 26551 added large file support for Linux64 and Win64. 26552 26553 The C APIs to return an object's size have been update to consistently 26554 use the form PyXXX_Size, e.g. PySequence_Size and PyDict_Size. In 26555 previous versions, the abstract interfaces used PyXXX_Length and the 26556 concrete interfaces used PyXXX_Size. The old names, 26557 e.g. PyObject_Length, are still available for backwards compatibility 26558 at the API level, but are deprecated. 26559 26560 The PyOS_CheckStack function has been implemented on Windows by 26561 Fredrik Lundh. It prevents Python from failing with a stack overflow 26562 on Windows. 26563 26564 The GC changes resulted in creation of two new slots on object, 26565 tp_traverse and tp_clear. The augmented assignment changes result in 26566 the creation of a new slot for each in-place operator. 26567 26568 The GC API creates new requirements for container types implemented in 26569 C extension modules. See Include/objimpl.h for details. 26570 26571 PyErr_Format has been updated to automatically calculate the size of 26572 the buffer needed to hold the formatted result string. This change 26573 prevents crashes caused by programmer error. 26574 26575 New C API calls: PyObject_AsFileDescriptor, PyErr_WriteUnraisable. 26576 26577 PyRun_AnyFileEx, PyRun_SimpleFileEx, PyRun_FileEx -- New functions 26578 that are the same as their non-Ex counterparts except they take an 26579 extra flag argument that tells them to close the file when done. 26580 26581 XXX There were other API changes that should be fleshed out here. 26582 26583 26584 Windows Changes 26585 --------------- 26586 26587 New popen2/popen3/peopen4 in os module (see Changed Modules above). 26588 26589 os.popen is much more usable on Windows 95 and 98. See Microsoft 26590 Knowledge Base article Q150956. The Win9x workaround described there 26591 is implemented by the new w9xpopen.exe helper in the root of your 26592 Python installation. Note that Python uses this internally; it is not 26593 a standalone program. 26594 26595 Administrator privileges are no longer required to install Python 26596 on Windows NT or Windows 2000. If you have administrator privileges, 26597 Python's registry info will be written under HKEY_LOCAL_MACHINE. 26598 Otherwise the installer backs off to writing Python's registry info 26599 under HKEY_CURRENT_USER. The latter is sufficient for all "normal" 26600 uses of Python, but will prevent some advanced uses from working 26601 (for example, running a Python script as an NT service, or possibly 26602 from CGI). 26603 26604 [This was new in 1.6] The installer no longer runs a separate Tcl/Tk 26605 installer; instead, it installs the needed Tcl/Tk files directly in the 26606 Python directory. If you already have a Tcl/Tk installation, this 26607 wastes some disk space (about 4 Megs) but avoids problems with 26608 conflicting Tcl/Tk installations, and makes it much easier for Python 26609 to ensure that Tcl/Tk can find all its files. 26610 26611 [This was new in 1.6] The Windows installer now installs by default in 26612 \Python20\ on the default volume, instead of \Program Files\Python-2.0\. 26613 26614 26615 Updates to the changes between 1.5.2 and 1.6 26616 -------------------------------------------- 26617 26618 The 1.6 NEWS file can't be changed after the release is done, so here 26619 is some late-breaking news: 26620 26621 New APIs in locale.py: normalize(), getdefaultlocale(), resetlocale(), 26622 and changes to getlocale() and setlocale(). 26623 26624 The new module is now enabled per default. 26625 26626 It is not true that the encodings codecs cannot be used for normal 26627 strings: the string.encode() (which is also present on 8-bit strings 26628 !) allows using them for 8-bit strings too, e.g. to convert files from 26629 cp1252 (Windows) to latin-1 or vice-versa. 26630 26631 Japanese codecs are available from Tamito KAJIYAMA: 26632 http://pseudo.grad.sccs.chukyo-u.ac.jp/~kajiyama/python/ 26633 26634 26635 ====================================================================== 26636 26637 26638 ======================================= 26639 ==> Release 1.6 (September 5, 2000) <== 26640 ======================================= 26641 26642 What's new in release 1.6? 26643 ========================== 26644 26645 Below is a list of all relevant changes since release 1.5.2. 26646 26647 26648 Source Incompatibilities 26649 ------------------------ 26650 26651 Several small incompatible library changes may trip you up: 26652 26653 - The append() method for lists can no longer be invoked with more 26654 than one argument. This used to append a single tuple made out of 26655 all arguments, but was undocumented. To append a tuple, use 26656 e.g. l.append((a, b, c)). 26657 26658 - The connect(), connect_ex() and bind() methods for sockets require 26659 exactly one argument. Previously, you could call s.connect(host, 26660 port), but this was undocumented. You must now write 26661 s.connect((host, port)). 26662 26663 - The str() and repr() functions are now different more often. For 26664 long integers, str() no longer appends a 'L'. Thus, str(1L) == '1', 26665 which used to be '1L'; repr(1L) is unchanged and still returns '1L'. 26666 For floats, repr() now gives 17 digits of precision, to ensure no 26667 precision is lost (on all current hardware). 26668 26669 - The -X option is gone. Built-in exceptions are now always 26670 classes. Many more library modules also have been converted to 26671 class-based exceptions. 26672 26673 26674 Binary Incompatibilities 26675 ------------------------ 26676 26677 - Third party extensions built for Python 1.5.x cannot be used with 26678 Python 1.6; these extensions will have to be rebuilt for Python 1.6. 26679 26680 - On Windows, attempting to import a third party extension built for 26681 Python 1.5.x results in an immediate crash; there's not much we can do 26682 about this. Check your PYTHONPATH environment variable! 26683 26684 26685 Overview of Changes since 1.5.2 26686 ------------------------------- 26687 26688 For this overview, I have borrowed from the document "What's New in 26689 Python 2.0" by Andrew Kuchling and Moshe Zadka: 26690 http://www.amk.ca/python/2.0/ . 26691 26692 There are lots of new modules and lots of bugs have been fixed. A 26693 list of all new modules is included below. 26694 26695 Probably the most pervasive change is the addition of Unicode support. 26696 We've added a new fundamental datatype, the Unicode string, a new 26697 built-in function unicode(), and numerous C APIs to deal with Unicode 26698 and encodings. See the file Misc/unicode.txt for details, or 26699 http://starship.python.net/crew/lemburg/unicode-proposal.txt. 26700 26701 Two other big changes, related to the Unicode support, are the 26702 addition of string methods and (yet another) new regular expression 26703 engine. 26704 26705 - String methods mean that you can now say s.lower() etc. instead of 26706 importing the string module and saying string.lower(s) etc. One 26707 peculiarity is that the equivalent of string.join(sequence, 26708 delimiter) is delimiter.join(sequence). Use " ".join(sequence) for 26709 the effect of string.join(sequence); to make this more readable, try 26710 space=" " first. Note that the maxsplit argument defaults in 26711 split() and replace() have changed from 0 to -1. 26712 26713 - The new regular expression engine, SRE by Fredrik Lundh, is fully 26714 backwards compatible with the old engine, and is in fact invoked 26715 using the same interface (the "re" module). You can explicitly 26716 invoke the old engine by import pre, or the SRE engine by importing 26717 sre. SRE is faster than pre, and supports Unicode (which was the 26718 main reason to put effort in yet another new regular expression 26719 engine -- this is at least the fourth!). 26720 26721 26722 Other Changes 26723 ------------- 26724 26725 Other changes that won't break code but are nice to know about: 26726 26727 Deleting objects is now safe even for deeply nested data structures. 26728 26729 Long/int unifications: long integers can be used in seek() calls, as 26730 slice indexes. 26731 26732 String formatting (s % args) has a new formatting option, '%r', which 26733 acts like '%s' but inserts repr(arg) instead of str(arg). (Not yet in 26734 alpha 1.) 26735 26736 Greg Ward's "distutils" package is included: this will make 26737 installing, building and distributing third party packages much 26738 simpler. 26739 26740 There's now special syntax that you can use instead of the apply() 26741 function. f(*args, **kwds) is equivalent to apply(f, args, kwds). 26742 You can also use variations f(a1, a2, *args, **kwds) and you can leave 26743 one or the other out: f(*args), f(**kwds). 26744 26745 The built-ins int() and long() take an optional second argument to 26746 indicate the conversion base -- of course only if the first argument 26747 is a string. This makes string.atoi() and string.atol() obsolete. 26748 (string.atof() was already obsolete). 26749 26750 When a local variable is known to the compiler but undefined when 26751 used, a new exception UnboundLocalError is raised. This is a class 26752 derived from NameError so code catching NameError should still work. 26753 The purpose is to provide better diagnostics in the following example: 26754 x = 1 26755 def f(): 26756 print x 26757 x = x+1 26758 This used to raise a NameError on the print statement, which confused 26759 even experienced Python programmers (especially if there are several 26760 hundreds of lines of code between the reference and the assignment to 26761 x :-). 26762 26763 You can now override the 'in' operator by defining a __contains__ 26764 method. Note that it has its arguments backwards: x in a causes 26765 a.__contains__(x) to be called. That's why the name isn't __in__. 26766 26767 The exception AttributeError will have a more friendly error message, 26768 e.g.: <code>'Spam' instance has no attribute 'eggs'</code>. This may 26769 <b>break code</b> that expects the message to be exactly the attribute 26770 name. 26771 26772 26773 New Modules in 1.6 26774 ------------------ 26775 26776 UserString - base class for deriving from the string type. 26777 26778 distutils - tools for distributing Python modules. 26779 26780 robotparser - parse a robots.txt file, for writing web spiders. 26781 (Moved from Tools/webchecker/.) 26782 26783 linuxaudiodev - audio for Linux. 26784 26785 mmap - treat a file as a memory buffer. (Windows and Unix.) 26786 26787 sre - regular expressions (fast, supports unicode). Currently, this 26788 code is very rough. Eventually, the re module will be reimplemented 26789 using sre (without changes to the re API). 26790 26791 filecmp - supersedes the old cmp.py and dircmp.py modules. 26792 26793 tabnanny - check Python sources for tab-width dependence. (Moved from 26794 Tools/scripts/.) 26795 26796 urllib2 - new and improved but incompatible version of urllib (still 26797 experimental). 26798 26799 zipfile - read and write zip archives. 26800 26801 codecs - support for Unicode encoders/decoders. 26802 26803 unicodedata - provides access to the Unicode 3.0 database. 26804 26805 _winreg - Windows registry access. 26806 26807 encodings - package which provides a large set of standard codecs -- 26808 currently only for the new Unicode support. It has a drop-in extension 26809 mechanism which allows you to add new codecs by simply copying them 26810 into the encodings package directory. Asian codec support will 26811 probably be made available as separate distribution package built upon 26812 this technique and the new distutils package. 26813 26814 26815 Changed Modules 26816 --------------- 26817 26818 readline, ConfigParser, cgi, calendar, posix, readline, xmllib, aifc, 26819 chunk, wave, random, shelve, nntplib - minor enhancements. 26820 26821 socket, httplib, urllib - optional OpenSSL support (Unix only). 26822 26823 _tkinter - support for 8.0 up to 8.3. Support for versions older than 26824 8.0 has been dropped. 26825 26826 string - most of this module is deprecated now that strings have 26827 methods. This no longer uses the built-in strop module, but takes 26828 advantage of the new string methods to provide transparent support for 26829 both Unicode and ordinary strings. 26830 26831 26832 Changes on Windows 26833 ------------------ 26834 26835 The installer no longer runs a separate Tcl/Tk installer; instead, it 26836 installs the needed Tcl/Tk files directly in the Python directory. If 26837 you already have a Tcl/Tk installation, this wastes some disk space 26838 (about 4 Megs) but avoids problems with conflincting Tcl/Tk 26839 installations, and makes it much easier for Python to ensure that 26840 Tcl/Tk can find all its files. Note: the alpha installers don't 26841 include the documentation. 26842 26843 The Windows installer now installs by default in \Python16\ on the 26844 default volume, instead of \Program Files\Python-1.6\. 26845 26846 26847 Changed Tools 26848 ------------- 26849 26850 IDLE - complete overhaul. See the <a href="../idle/">IDLE home 26851 page</a> for more information. (Python 1.6 alpha 1 will come with 26852 IDLE 0.6.) 26853 26854 Tools/i18n/pygettext.py - Python equivalent of xgettext(1). A message 26855 text extraction tool used for internationalizing applications written 26856 in Python. 26857 26858 26859 Obsolete Modules 26860 ---------------- 26861 26862 stdwin and everything that uses it. (Get Python 1.5.2 if you need 26863 it. :-) 26864 26865 soundex. (Skip Montanaro has a version in Python but it won't be 26866 included in the Python release.) 26867 26868 cmp, cmpcache, dircmp. (Replaced by filecmp.) 26869 26870 dump. (Use pickle.) 26871 26872 find. (Easily coded using os.walk().) 26873 26874 grep. (Not very useful as a library module.) 26875 26876 packmail. (No longer has any use.) 26877 26878 poly, zmod. (These were poor examples at best.) 26879 26880 strop. (No longer needed by the string module.) 26881 26882 util. (This functionality was long ago built in elsewhere). 26883 26884 whatsound. (Use sndhdr.) 26885 26886 26887 Detailed Changes from 1.6b1 to 1.6 26888 ---------------------------------- 26889 26890 - Slight changes to the CNRI license. A copyright notice has been 26891 added; the requirement to indicate the nature of modifications now 26892 applies when making a derivative work available "to others" instead of 26893 just "to the public"; the version and date are updated. The new 26894 license has a new handle. 26895 26896 - Added the Tools/compiler package. This is a project led by Jeremy 26897 Hylton to write the Python bytecode generator in Python. 26898 26899 - The function math.rint() is removed. 26900 26901 - In Python.h, "#define _GNU_SOURCE 1" was added. 26902 26903 - Version 0.9.1 of Greg Ward's distutils is included (instead of 26904 version 0.9). 26905 26906 - A new version of SRE is included. It is more stable, and more 26907 compatible with the old RE module. Non-matching ranges are indicated 26908 by -1, not None. (The documentation said None, but the PRE 26909 implementation used -1; changing to None would break existing code.) 26910 26911 - The winreg module has been renamed to _winreg. (There are plans for 26912 a higher-level API called winreg, but this has not yet materialized in 26913 a form that is acceptable to the experts.) 26914 26915 - The _locale module is enabled by default. 26916 26917 - Fixed the configuration line for the _curses module. 26918 26919 - A few crashes have been fixed, notably <file>.writelines() with a 26920 list containing non-string objects would crash, and there were 26921 situations where a lost SyntaxError could dump core. 26922 26923 - The <list>.extend() method now accepts an arbitrary sequence 26924 argument. 26925 26926 - If __str__() or __repr__() returns a Unicode object, this is 26927 converted to an 8-bit string. 26928 26929 - Unicode string comparisons is no longer aware of UTF-16 26930 encoding peculiarities; it's a straight 16-bit compare. 26931 26932 - The Windows installer now installs the LICENSE file and no longer 26933 registers the Python DLL version in the registry (this is no longer 26934 needed). It now uses Tcl/Tk 8.3.2. 26935 26936 - A few portability problems have been fixed, in particular a 26937 compilation error involving socklen_t. 26938 26939 - The PC configuration is slightly friendlier to non-Microsoft 26940 compilers. 26941 26942 26943 ====================================================================== 26944 26945 26946 ====================================== 26947 ==> Release 1.5.2 (April 13, 1999) <== 26948 ====================================== 26949 26950 From 1.5.2c1 to 1.5.2 (final) 26951 ============================= 26952 26953 Tue Apr 13 15:44:49 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 26954 26955 * PCbuild/python15.wse: Bump version to 1.5.2 (final) 26956 26957 * PCbuild/python15.dsp: Added shamodule.c 26958 26959 * PC/config.c: Added sha module! 26960 26961 * README, Include/patchlevel.h: Prepare for final release. 26962 26963 * Misc/ACKS: 26964 More (Cameron Laird is honorary; the others are 1.5.2c1 testers). 26965 26966 * Python/thread_solaris.h: 26967 While I can't really test this thoroughly, Pat Knight and the Solaris 26968 man pages suggest that the proper thing to do is to add THR_NEW_LWP to 26969 the flags on thr_create(), and that there really isn't a downside, so 26970 I'll do that. 26971 26972 * Misc/ACKS: 26973 Bunch of new names who helped iron out the last wrinkles of 1.5.2. 26974 26975 * PC/python_nt.rc: 26976 Bump the myusterious M$ version number from 1,5,2,1 to 1,5,2,3. 26977 (I can't even display this on NT, maybe Win/98 can?) 26978 26979 * Lib/pstats.py: 26980 Fix mysterious references to jprofile that were in the source since 26981 its creation. I'm assuming these were once valid references to "Jim 26982 Roskind's profile"... 26983 26984 * Lib/Attic/threading_api.py: 26985 Removed; since long subsumed in Doc/lib/libthreading.tex 26986 26987 * Modules/socketmodule.c: 26988 Put back __osf__ support for gethostbyname_r(); the real bug was that 26989 it was being used even without threads. This of course might be an 26990 all-platform problem so now we only use the _r variant when we are 26991 using threads. 26992 26993 Mon Apr 12 22:51:20 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 26994 26995 * Modules/cPickle.c: 26996 Fix accidentally reversed NULL test in load_mark(). Suggested by 26997 Tamito Kajiyama. (This caused a bug only on platforms where malloc(0) 26998 returns NULL.) 26999 27000 * README: 27001 Add note about popen2 problem on Linux noticed by Pablo Bleyer. 27002 27003 * README: Add note about -D_REENTRANT for HP-UX 10.20. 27004 27005 * Modules/Makefile.pre.in: 'clean' target should remove hassignal. 27006 27007 * PC/Attic/vc40.mak, PC/readme.txt: 27008 Remove all VC++ info (except VC 1.5) from readme.txt; 27009 remove the VC++ 4.0 project file; remove the unused _tkinter extern defs. 27010 27011 * README: Clarify PC build instructions (point to PCbuild). 27012 27013 * Modules/zlibmodule.c: Cast added by Jack Jansen (for Mac port). 27014 27015 * Lib/plat-sunos5/CDIO.py, Lib/plat-linux2/CDROM.py: 27016 Forgot to add this file. CDROM device parameters. 27017 27018 * Lib/gzip.py: Two different changes. 27019 27020 1. Jack Jansen reports that on the Mac, the time may be negative, and 27021 solves this by adding a write32u() function that writes an unsigned 27022 long. 27023 27024 2. On 64-bit platforms the CRC comparison fails; I've fixed this by 27025 casting both values to be compared to "unsigned long" i.e. modulo 27026 0x100000000L. 27027 27028 Sat Apr 10 18:42:02 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27029 27030 * PC/Attic/_tkinter.def: No longer needed. 27031 27032 * Misc/ACKS: Correct missed character in Andrew Dalke's name. 27033 27034 * README: Add DEC Ultrix notes (from Donn Cave's email). 27035 27036 * configure: The usual 27037 27038 * configure.in: 27039 Quote a bunch of shell variables used in test, related to long-long. 27040 27041 * Objects/fileobject.c, Modules/shamodule.c, Modules/regexpr.c: 27042 casts for picky compilers. 27043 27044 * Modules/socketmodule.c: 27045 3-arg gethostbyname_r doesn't really work on OSF/1. 27046 27047 * PC/vc15_w31/_.c, PC/vc15_lib/_.c, Tools/pynche/__init__.py: 27048 Avoid totally empty files. 27049 27050 Fri Apr 9 14:56:35 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27051 27052 * Tools/scripts/fixps.py: Use re instead of regex. 27053 Don't rewrite the file in place. 27054 (Reported by Andy Dustman.) 27055 27056 * Lib/netrc.py, Lib/shlex.py: Get rid of #! line 27057 27058 Thu Apr 8 23:13:37 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27059 27060 * PCbuild/python15.wse: Use the Tcl 8.0.5 installer. 27061 Add a variable %_TCL_% that makes it easier to switch to a different version. 27062 27063 27064 ====================================================================== 27065 27066 27067 From 1.5.2b2 to 1.5.2c1 27068 ======================= 27069 27070 Thu Apr 8 23:13:37 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27071 27072 * PCbuild/python15.wse: 27073 Release 1.5.2c1. Add IDLE and Uninstall to program group. 27074 Don't distribute zlib.dll. Tweak some comments. 27075 27076 * PCbuild/zlib.dsp: Now using static zlib 1.1.3 27077 27078 * Lib/dos-8x3/userdict.py, Lib/dos-8x3/userlist.py, Lib/dos-8x3/test_zli.py, Lib/dos-8x3/test_use.py, Lib/dos-8x3/test_pop.py, Lib/dos-8x3/test_pic.py, Lib/dos-8x3/test_ntp.py, Lib/dos-8x3/test_gzi.py, Lib/dos-8x3/test_fcn.py, Lib/dos-8x3/test_cpi.py, Lib/dos-8x3/test_bsd.py, Lib/dos-8x3/posixfil.py, Lib/dos-8x3/mimetype.py, Lib/dos-8x3/nturl2pa.py, Lib/dos-8x3/compilea.py, Lib/dos-8x3/exceptio.py, Lib/dos-8x3/basehttp.py: 27079 The usual 27080 27081 * Include/patchlevel.h: Release 1.5.2c1 27082 27083 * README: Release 1.5.2c1. 27084 27085 * Misc/NEWS: News for the 1.5.2c1 release. 27086 27087 * Lib/test/test_strftime.py: 27088 On Windows, we suddenly find, strftime() may return "" for an 27089 unsupported format string. (I guess this is because the logic for 27090 deciding whether to reallocate the buffer or not has been improved.) 27091 This caused the test code to crash on result[0]. Fix this by assuming 27092 an empty result also means the format is not supported. 27093 27094 * Demo/tkinter/matt/window-creation-w-location.py: 27095 This demo imported some private code from Matt. Make it cripple along. 27096 27097 * Lib/lib-tk/Tkinter.py: 27098 Delete an accidentally checked-in feature that actually broke more 27099 than was worth it: when deleting a canvas item, it would try to 27100 automatically delete the bindings for that item. Since there's 27101 nothing that says you can't reuse the tag and still have the bindings, 27102 this is not correct. Also, it broke at least one demo 27103 (Demo/tkinter/matt/rubber-band-box-demo-1.py). 27104 27105 * Python/thread_wince.h: Win/CE thread support by Mark Hammond. 27106 27107 Wed Apr 7 20:23:17 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27108 27109 * Modules/zlibmodule.c: 27110 Patch by Andrew Kuchling to unflush() (flush() for deflating). 27111 Without this, if inflate() returned Z_BUF_ERROR asking for more output 27112 space, we would report the error; now, we increase the buffer size and 27113 try again, just as for Z_OK. 27114 27115 * Lib/test/test_gzip.py: Use binary mode for all gzip files we open. 27116 27117 * Tools/idle/ChangeLog: New change log. 27118 27119 * Tools/idle/README.txt, Tools/idle/NEWS.txt: New version. 27120 27121 * Python/pythonrun.c: 27122 Alas, get rid of the Win specific hack to ask the user to press Return 27123 before exiting when an error happened. This didn't work right when 27124 Python is invoked from a daemon. 27125 27126 * Tools/idle/idlever.py: Version bump awaiting impending new release. 27127 (Not much has changed :-( ) 27128 27129 * Lib/lib-tk/Tkinter.py: 27130 lower, tkraise/lift hide Misc.lower, Misc.tkraise/lift, 27131 so the preferred name for them is tag_lower, tag_raise 27132 (similar to tag_bind, and similar to the Text widget); 27133 unfortunately can't delete the old ones yet (maybe in 1.6) 27134 27135 * Python/thread.c, Python/strtod.c, Python/mystrtoul.c, Python/import.c, Python/ceval.c: 27136 Changes by Mark Hammond for Windows CE. Mostly of the form 27137 #ifdef DONT_HAVE_header_H ... #endif around #include <header.h>. 27138 27139 * Python/bltinmodule.c: 27140 Remove unused variable from complex_from_string() code. 27141 27142 * Include/patchlevel.h: 27143 Add the possibility of a gamma release (release candidate). 27144 Add '+' to string version number to indicate we're beyond b2 now. 27145 27146 * Modules/posixmodule.c: Add extern decl for fsync() for SunOS 4.x. 27147 27148 * Lib/smtplib.py: Changes by Per Cederquist and The Dragon. 27149 27150 Per writes: 27151 27152 """ 27153 The application where Signum Support uses smtplib needs to be able to 27154 report good error messages to the user when sending email fails. To 27155 help in diagnosing problems it is useful to be able to report the 27156 entire message sent by the server, not only the SMTP error code of the 27157 offending command. 27158 27159 A lot of the functions in sendmail.py unfortunately discards the 27160 message, leaving only the code. The enclosed patch fixes that 27161 problem. 27162 27163 The enclosed patch also introduces a base class for exceptions that 27164 include an SMTP error code and error message, and make the code and 27165 message available on separate attributes, so that surrounding code can 27166 deal with them in whatever way it sees fit. I've also added some 27167 documentation to the exception classes. 27168 27169 The constructor will now raise an exception if it cannot connect to 27170 the SMTP server. 27171 27172 The data() method will raise an SMTPDataError if it doesn't receive 27173 the expected 354 code in the middle of the exchange. 27174 27175 According to section 5.2.10 of RFC 1123 a smtp client must accept "any 27176 text, including no text at all" after the error code. If the response 27177 of a HELO command contains no text self.helo_resp will be set to the 27178 empty string (""). The patch fixes the test in the sendmail() method 27179 so that helo_resp is tested against None; if it has the empty string 27180 as value the sendmail() method would invoke the helo() method again. 27181 27182 The code no longer accepts a -1 reply from the ehlo() method in 27183 sendmail(). 27184 27185 [Text about removing SMTPRecipientsRefused deleted --GvR] 27186 """ 27187 27188 and also: 27189 27190 """ 27191 smtplib.py appends an extra blank line to the outgoing mail if the 27192 `msg' argument to the sendmail method already contains a trailing 27193 newline. This patch should fix the problem. 27194 """ 27195 27196 The Dragon writes: 27197 27198 """ 27199 Mostly I just re-added the SMTPRecipientsRefused exception 27200 (the exeption object now has the appropriate info in it ) [Per had 27201 removed this in his patch --GvR] and tweaked the behavior of the 27202 sendmail method whence it throws the newly added SMTPHeloException (it 27203 was closing the connection, which it shouldn't. whatever catches the 27204 exception should do that. ) 27205 27206 I pondered the change of the return values to tuples all around, 27207 and after some thinking I decided that regularizing the return values was 27208 too much of the Right Thing (tm) to not do. 27209 27210 My one concern is that code expecting an integer & getting a tuple 27211 may fail silently. 27212 27213 (i.e. if it's doing : 27214 27215 x.somemethod() >= 400: 27216 expecting an integer, the expression will always be true if it gets a 27217 tuple instead. ) 27218 27219 However, most smtplib code I've seen only really uses the 27220 sendmail() method, so this wouldn't bother it. Usually code I've seen 27221 that calls the other methods usually only calls helo() and ehlo() for 27222 doing ESMTP, a feature which was not in the smtplib included with 1.5.1, 27223 and thus I would think not much code uses it yet. 27224 """ 27225 27226 Tue Apr 6 19:38:18 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27227 27228 * Lib/test/test_ntpath.py: 27229 Fix the tests now that splitdrive() no longer treats UNC paths special. 27230 (Some tests converted to splitunc() tests.) 27231 27232 * Lib/ntpath.py: 27233 Withdraw the UNC support from splitdrive(). Instead, a new function 27234 splitunc() parses UNC paths. The contributor of the UNC parsing in 27235 splitdrive() doesn't like it, but I haven't heard a good reason to 27236 keep it, and it causes some problems. (I think there's a 27237 philosophical problem -- to me, the split*() functions are purely 27238 syntactical, and the fact that \\foo is not a valid path doesn't mean 27239 that it shouldn't be considered an absolute path.) 27240 27241 Also (quite separately, but strangely related to the philosophical 27242 issue above) fix abspath() so that if win32api exists, it doesn't fail 27243 when the path doesn't actually exist -- if GetFullPathName() fails, 27244 fall back on the old strategy (join with getcwd() if necessary, and 27245 then use normpath()). 27246 27247 * configure.in, configure, config.h.in, acconfig.h: 27248 For BeOS PowerPC. Chris Herborth. 27249 27250 Mon Apr 5 21:54:14 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27251 27252 * Modules/timemodule.c: 27253 Jonathan Giddy notes, and Chris Lawrence agrees, that some comments on 27254 #else/#endif are wrong, and that #if HAVE_TM_ZONE should be #ifdef. 27255 27256 * Misc/ACKS: 27257 Bunch of new contributors, including 9 who contributed to the Docs, 27258 reported by Fred. 27259 27260 Mon Apr 5 18:37:59 1999 Fred Drake <fdrake (a] eric.cnri.reston.va.us> 27261 27262 * Lib/gzip.py: 27263 Oops, missed mode parameter to open(). 27264 27265 * Lib/gzip.py: 27266 Made the default mode 'rb' instead of 'r', for better cross-platform 27267 support. (Based on comment on the documentation by Bernhard Reiter 27268 <bernhard (a] csd.uwm.edu>). 27269 27270 Fri Apr 2 22:18:25 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27271 27272 * Tools/scripts/dutree.py: 27273 For reasons I dare not explain, this script should always execute 27274 main() when imported (in other words, it is not usable as a module). 27275 27276 Thu Apr 1 15:32:30 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27277 27278 * Lib/test/test_cpickle.py: Jonathan Giddy write: 27279 27280 In test_cpickle.py, the module os got imported, but the line to remove 27281 the temp file has gone missing. 27282 27283 Tue Mar 30 20:17:31 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27284 27285 * Lib/BaseHTTPServer.py: Per Cederqvist writes: 27286 27287 If you send something like "PUT / HTTP/1.0" to something derived from 27288 BaseHTTPServer that doesn't define do_PUT, you will get a response 27289 that begins like this: 27290 27291 HTTP/1.0 501 Unsupported method ('do_PUT') 27292 Server: SimpleHTTP/0.3 Python/1.5 27293 Date: Tue, 30 Mar 1999 18:53:53 GMT 27294 27295 The server should complain about 'PUT' instead of 'do_PUT'. This 27296 patch should fix the problem. 27297 27298 Mon Mar 29 20:33:21 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27299 27300 * Lib/smtplib.py: Patch by Per Cederqvist, who writes: 27301 27302 """ 27303 - It needlessly used the makefile() method for each response that is 27304 read from the SMTP server. 27305 27306 - If the remote SMTP server closes the connection unexpectedly the 27307 code raised an IndexError. It now raises an SMTPServerDisconnected 27308 exception instead. 27309 27310 - The code now checks that all lines in a multiline response actually 27311 contains an error code. 27312 """ 27313 27314 The Dragon approves. 27315 27316 Mon Mar 29 20:25:40 1999 Fred Drake <fdrake (a] eric.cnri.reston.va.us> 27317 27318 * Lib/compileall.py: 27319 When run as a script, report failures in the exit code as well. 27320 Patch largely based on changes by Andrew Dalke, as discussed in the 27321 distutils-sig. 27322 27323 Mon Mar 29 20:23:41 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27324 27325 * Lib/urllib.py: 27326 Hack so that if a 302 or 301 redirect contains a relative URL, the 27327 right thing "just happens" (basejoin() with old URL). 27328 27329 * Modules/cPickle.c: 27330 Protection against picling to/from closed (real) file. 27331 The problem was reported by Moshe Zadka. 27332 27333 * Lib/test/test_cpickle.py: 27334 Test protection against picling to/from closed (real) file. 27335 27336 * Modules/timemodule.c: Chris Lawrence writes: 27337 27338 """ 27339 The GNU folks, in their infinite wisdom, have decided not to implement 27340 altzone in libc6; this would not be horrible, except that timezone 27341 (which is implemented) includes the current DST setting (i.e. timezone 27342 for Central is 18000 in summer and 21600 in winter). So Python's 27343 timezone and altzone variables aren't set correctly during DST. 27344 27345 Here's a patch relative to 1.5.2b2 that (a) makes timezone and altzone 27346 show the "right" thing on Linux (by using the tm_gmtoff stuff 27347 available in BSD, which is how the GLIBC manual claims things should 27348 be done) and (b) should cope with the southern hemisphere. In pursuit 27349 of (b), I also took the liberty of renaming the "summer" and "winter" 27350 variables to "july" and "jan". This patch should also make certain 27351 time calculations on Linux actually work right (like the tz-aware 27352 functions in the rfc822 module). 27353 27354 (It's hard to find DST that's currently being used in the southern 27355 hemisphere; I tested using Africa/Windhoek.) 27356 """ 27357 27358 * Lib/test/output/test_gzip: 27359 Jonathan Giddy discovered this file was missing. 27360 27361 * Modules/shamodule.c: 27362 Avoid warnings from AIX compiler. Reported by Vladimir (AIX is my 27363 middlename) Marangozov, patch coded by Greg Stein. 27364 27365 * Tools/idle/ScriptBinding.py, Tools/idle/PyShell.py: 27366 At Tim Peters' recommendation, add a dummy flush() method to PseudoFile. 27367 27368 Sun Mar 28 17:55:32 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27369 27370 * Tools/scripts/ndiff.py: Tim Peters writes: 27371 27372 I should have waited overnight <wink/sigh>. Nothing wrong with the one I 27373 sent, but I couldn't resist going on to add new -r1 / -r2 cmdline options 27374 for recreating the original files from ndiff's output. That's attached, if 27375 you're game! Us Windows guys don't usually have a sed sitting around 27376 <wink>. 27377 27378 Sat Mar 27 13:34:01 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27379 27380 * Tools/scripts/ndiff.py: Tim Peters writes: 27381 27382 Attached is a cleaned-up version of ndiff (added useful module 27383 docstring, now echo'ed in case of cmd line mistake); added -q option 27384 to suppress initial file identification lines; + other minor cleanups, 27385 & a slightly faster match engine. 27386 27387 Fri Mar 26 22:36:00 1999 Fred Drake <fdrake (a] eric.cnri.reston.va.us> 27388 27389 * Tools/scripts/dutree.py: 27390 During display, if EPIPE is raised, it's probably because a pager was 27391 killed. Discard the error in that case, but propagate it otherwise. 27392 27393 Fri Mar 26 16:20:45 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27394 27395 * Lib/test/output/test_userlist, Lib/test/test_userlist.py: 27396 Test suite for UserList. 27397 27398 * Lib/UserList.py: Use isinstance() where appropriate. 27399 Reformatted with 4-space indent. 27400 27401 Fri Mar 26 16:11:40 1999 Barry Warsaw <bwarsaw (a] eric.cnri.reston.va.us> 27402 27403 * Tools/pynche/PyncheWidget.py: 27404 Helpwin.__init__(): The text widget should get focus. 27405 27406 * Tools/pynche/pyColorChooser.py: 27407 Removed unnecessary import `from PyncheWidget import PyncheWidget' 27408 27409 Fri Mar 26 15:32:05 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27410 27411 * Lib/test/output/test_userdict, Lib/test/test_userdict.py: 27412 Test suite for UserDict 27413 27414 * Lib/UserDict.py: Improved a bunch of things. 27415 The constructor now takes an optional dictionary. 27416 Use isinstance() where appropriate. 27417 27418 Thu Mar 25 22:38:49 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27419 27420 * Lib/test/output/test_pickle, Lib/test/output/test_cpickle, Lib/test/test_pickle.py, Lib/test/test_cpickle.py: 27421 Basic regr tests for pickle/cPickle 27422 27423 * Lib/pickle.py: 27424 Don't use "exec" in find_class(). It's slow, unnecessary, and (as AMK 27425 points out) it doesn't work in JPython Applets. 27426 27427 Thu Mar 25 21:50:27 1999 Andrew Kuchling <akuchlin (a] eric.cnri.reston.va.us> 27428 27429 * Lib/test/test_gzip.py: 27430 Added a simple test suite for gzip. It simply opens a temp file, 27431 writes a chunk of compressed data, closes it, writes another chunk, and 27432 reads the contents back to verify that they are the same. 27433 27434 * Lib/gzip.py: 27435 Based on a suggestion from bruce (a] hams.com, make a trivial change to 27436 allow using the 'a' flag as a mode for opening a GzipFile. gzip 27437 files, surprisingly enough, can be concatenated and then decompressed; 27438 the effect is to concatenate the two chunks of data. 27439 27440 If we support it on writing, it should also be supported on reading. 27441 This *wasn't* trivial, and required rearranging the code in the 27442 reading path, particularly the _read() method. 27443 27444 Raise IOError instead of RuntimeError in two cases, 'Not a gzipped file' 27445 and 'Unknown compression method' 27446 27447 Thu Mar 25 21:25:01 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27448 27449 * Lib/test/test_b1.py: 27450 Add tests for float() and complex() with string args (Nick/Stephanie 27451 Lockwood). 27452 27453 Thu Mar 25 21:21:08 1999 Andrew Kuchling <akuchlin (a] eric.cnri.reston.va.us> 27454 27455 * Modules/zlibmodule.c: 27456 Add an .unused_data attribute to decompressor objects. If .unused_data 27457 is not an empty string, this means that you have arrived at the 27458 end of the stream of compressed data, and the contents of .unused_data are 27459 whatever follows the compressed stream. 27460 27461 Thu Mar 25 21:16:07 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27462 27463 * Python/bltinmodule.c: 27464 Patch by Nick and Stephanie Lockwood to implement complex() with a string 27465 argument. This closes TODO item 2.19. 27466 27467 Wed Mar 24 19:09:00 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27468 27469 * Tools/webchecker/wcnew.py: Added Samuel Bayer's new webchecker. 27470 Unfortunately his code breaks wcgui.py in a way that's not easy 27471 to fix. I expect that this is a temporary situation -- 27472 eventually Sam's changes will be merged back in. 27473 (The changes add a -t option to specify exceptions to the -x 27474 option, and explicit checking for #foo style fragment ids.) 27475 27476 * Objects/dictobject.c: 27477 Vladimir Marangozov contributed updated comments. 27478 27479 * Objects/bufferobject.c: Folded long lines. 27480 27481 * Lib/test/output/test_sha, Lib/test/test_sha.py: 27482 Added Jeremy's test code for the sha module. 27483 27484 * Modules/shamodule.c, Modules/Setup.in: 27485 Added Greg Stein and Andrew Kuchling's sha module. 27486 Fix comments about zlib version and URL. 27487 27488 * Lib/test/test_bsddb.py: Remove the temp file when we're done. 27489 27490 * Include/pythread.h: Conform to standard boilerplate. 27491 27492 * configure.in, configure, BeOS/linkmodule, BeOS/ar-fake: 27493 Chris Herborth: the new compiler in R4.1 needs some new options to work... 27494 27495 * Modules/socketmodule.c: 27496 Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the 27497 data struct before calling gethostby{name,addr}_r(); (2) ignore the 27498 3/5/6 args determinations made by the configure script and switch on 27499 platform identifiers instead: 27500 27501 AIX, OSF have 3 args 27502 Sun, SGI have 5 args 27503 Linux has 6 args 27504 27505 On all other platforms, undef HAVE_GETHOSTBYNAME_R altogether. 27506 27507 * Modules/socketmodule.c: 27508 Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code. 27509 27510 * Lib/mailbox.py: 27511 Add readlines() to _Subfile class. Not clear who would need it, but 27512 Chris Lawrence sent me a broken version; this one is a tad simpler and 27513 more conforming to the standard. 27514 27515 Tue Mar 23 23:05:34 1999 Jeremy Hylton <jhylton (a] eric.cnri.reston.va.us> 27516 27517 * Lib/gzip.py: use struct instead of bit-manipulate in Python 27518 27519 Tue Mar 23 19:00:55 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27520 27521 * Modules/Makefile.pre.in: 27522 Add $(EXE) to various occurrences of python so it will work on Cygwin 27523 with egcs (after setting EXE=.exe). Patch by Norman Vine. 27524 27525 * configure, configure.in: 27526 Ack! It never defined HAVE_GETHOSTBYNAME_R so that code was never tested! 27527 27528 Mon Mar 22 22:25:39 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27529 27530 * Include/thread.h: 27531 Adding thread.h -- unused but for b/w compatibility. 27532 As requested by Bill Janssen. 27533 27534 * configure.in, configure: 27535 Add code to test for all sorts of gethostbyname_r variants, 27536 donated by David Arnold. 27537 27538 * config.h.in, acconfig.h: 27539 Add symbols for gethostbyname_r variants (sigh). 27540 27541 * Modules/socketmodule.c: Clean up pass for the previous patches. 27542 27543 - Use HAVE_GETHOSTBYNAME_R_6_ARG instead of testing for Linux and 27544 glibc2. 27545 27546 - If gethostbyname takes 3 args, undefine HAVE_GETHOSTBYNAME_R -- 27547 don't know what code should be used. 27548 27549 - New symbol USE_GETHOSTBYNAME_LOCK defined iff the lock should be used. 27550 27551 - Modify the gethostbyaddr() code to also hold on to the lock until 27552 after it is safe to release, overlapping with the Python lock. 27553 27554 (Note: I think that it could in theory be possible that Python code 27555 executed while gethostbyname_lock is held could attempt to reacquire 27556 the lock -- e.g. in a signal handler or destructor. I will simply say 27557 "don't do that then.") 27558 27559 * Modules/socketmodule.c: Jonathan Giddy writes: 27560 27561 Here's a patch to fix the race condition, which wasn't fixed by Rob's 27562 patch. It holds the gethostbyname lock until the results are copied out, 27563 which means that this lock and the Python global lock are held at the same 27564 time. This shouldn't be a problem as long as the gethostbyname lock is 27565 always acquired when the global lock is not held. 27566 27567 Mon Mar 22 19:25:30 1999 Andrew Kuchling <akuchlin (a] eric.cnri.reston.va.us> 27568 27569 * Modules/zlibmodule.c: 27570 Fixed the flush() method of compression objects; the test for 27571 the end of loop was incorrect, and failed when the flushmode != Z_FINISH. 27572 Logic cleaned up and commented. 27573 27574 * Lib/test/test_zlib.py: 27575 Added simple test for the flush() method of compression objects, trying the 27576 different flush values Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH. 27577 27578 Mon Mar 22 15:28:08 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27579 27580 * Lib/shlex.py: 27581 Bug reported by Tobias Thelen: missing "self." in assignment target. 27582 27583 Fri Mar 19 21:50:11 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27584 27585 * Modules/arraymodule.c: 27586 Use an unsigned cast to avoid a warning in VC++. 27587 27588 * Lib/dospath.py, Lib/ntpath.py: 27589 New code for split() by Tim Peters, behaves more like posixpath.split(). 27590 27591 * Objects/floatobject.c: 27592 Fix a problem with Vladimir's PyFloat_Fini code: clear the free list; if 27593 a block cannot be freed, add its free items back to the free list. 27594 This is necessary to avoid leaking when Python is reinitialized later. 27595 27596 * Objects/intobject.c: 27597 Fix a problem with Vladimir's PyInt_Fini code: clear the free list; if 27598 a block cannot be freed, add its free items back to the free list, and 27599 add its valid ints back to the small_ints array if they are in range. 27600 This is necessary to avoid leaking when Python is reinitialized later. 27601 27602 * Lib/types.py: 27603 Added BufferType, the type returned by the new builtin buffer(). Greg Stein. 27604 27605 * Python/bltinmodule.c: 27606 New builtin buffer() creates a derived read-only buffer from any 27607 object that supports the buffer interface (e.g. strings, arrays). 27608 27609 * Objects/bufferobject.c: 27610 Added check for negative offset for PyBuffer_FromObject and check for 27611 negative size for PyBuffer_FromMemory. Greg Stein. 27612 27613 Thu Mar 18 15:10:44 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27614 27615 * Lib/urlparse.py: Sjoerd Mullender writes: 27616 27617 If a filename on Windows starts with \\, it is converted to a URL 27618 which starts with ////. If this URL is passed to urlparse.urlparse 27619 you get a path that starts with // (and an empty netloc). If you pass 27620 the result back to urlparse.urlunparse, you get a URL that starts with 27621 //, which is parsed differently by urlparse.urlparse. The fix is to 27622 add the (empty) netloc with accompanying slashes if the path in 27623 urlunparse starts with //. Do this for all schemes that use a netloc. 27624 27625 * Lib/nturl2path.py: Sjoerd Mullender writes: 27626 27627 Pathnames of files on other hosts in the same domain 27628 (\\host\path\to\file) are not translated correctly to URLs and back. 27629 The URL should be something like file:////host/path/to/file. 27630 Note that a combination of drive letter and remote host is not 27631 possible. 27632 27633 Wed Mar 17 22:30:10 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27634 27635 * Lib/urlparse.py: 27636 Delete non-standard-conforming code in urljoin() that would use the 27637 netloc from the base url as the default netloc for the resulting url 27638 even if the schemes differ. 27639 27640 Once upon a time, when the web was wild, this was a valuable hack 27641 because some people had a URL referencing an ftp server colocated with 27642 an http server without having the host in the ftp URL (so they could 27643 replicate it or change the hostname easily). 27644 27645 More recently, after the file: scheme got added back to the list of 27646 schemes that accept a netloc, it turns out that this caused weirdness 27647 when joining an http: URL with a file: URL -- the resulting file: URL 27648 would always inherit the host from the http: URL because the file: 27649 scheme supports a netloc but in practice never has one. 27650 27651 There are two reasons to get rid of the old, once-valuable hack, 27652 instead of removing the file: scheme from the uses_netloc list. One, 27653 the RFC says that file: uses the netloc syntax, and does not endorse 27654 the old hack. Two, neither netscape 4.5 nor IE 4.0 support the old 27655 hack. 27656 27657 * Include/ceval.h, Include/abstract.h: 27658 Add DLL level b/w compat for PySequence_In and PyEval_CallObject 27659 27660 Tue Mar 16 21:54:50 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27661 27662 * Lib/lib-tk/Tkinter.py: Bug reported by Jim Robinson: 27663 27664 An attempt to execute grid_slaves with arguments (0,0) results in 27665 *all* of the slaves being returned, not just the slave associated with 27666 row 0, column 0. This is because the test for arguments in the method 27667 does not test to see if row (and column) does not equal None, but 27668 rather just whether is evaluates to non-false. A value of 0 fails 27669 this test. 27670 27671 Tue Mar 16 14:17:48 1999 Fred Drake <fdrake (a] eric.cnri.reston.va.us> 27672 27673 * Modules/cmathmodule.c: 27674 Docstring fix: acosh() returns the hyperbolic arccosine, not the 27675 hyperbolic cosine. Problem report via David Ascher by one of his 27676 students. 27677 27678 Mon Mar 15 21:40:59 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27679 27680 * configure.in: 27681 Should test for gethost*by*name_r, not for gethostname_r (which 27682 doesn't exist and doesn't make sense). 27683 27684 * Modules/socketmodule.c: 27685 Patch by Rob Riggs for Linux -- glibc2 has a different argument 27686 converntion for gethostbyname_r() etc. than Solaris! 27687 27688 * Python/thread_pthread.h: Rob Riggs wrote: 27689 27690 """ 27691 Spec says that on success pthread_create returns 0. It does not say 27692 that an error code will be < 0. Linux glibc2 pthread_create() returns 27693 ENOMEM (12) when one exceed process limits. (It looks like it should 27694 return EAGAIN, but that's another story.) 27695 27696 For reference, see: 27697 http://www.opengroup.org/onlinepubs/7908799/xsh/pthread_create.html 27698 """ 27699 27700 [I have a feeling that similar bugs were fixed before; perhaps someone 27701 could check that all error checks no check for != 0?] 27702 27703 * Tools/bgen/bgen/bgenObjectDefinition.py: 27704 New mixin class that defines cmp and hash that use 27705 the ob_itself pointer. This allows (when using the mixin) 27706 different Python objects pointing to the same C object and 27707 behaving well as dictionary keys. 27708 27709 Or so sez Jack Jansen... 27710 27711 * Lib/urllib.py: Yet another patch by Sjoerd Mullender: 27712 27713 Don't convert URLs to URLs using pathname2url. 27714 27715 Fri Mar 12 22:15:43 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27716 27717 * Lib/cmd.py: Patch by Michael Scharf. He writes: 27718 27719 The module cmd requires for each do_xxx command a help_xxx 27720 function. I think this is a little old fashioned. 27721 27722 Here is a patch: use the docstring as help if no help_xxx 27723 function can be found. 27724 27725 [I'm tempted to rip out all the help_* functions from pdb, but I'll 27726 resist it. Any takers? --Guido] 27727 27728 * Tools/freeze/freeze.py: Bug submitted by Wayne Knowles, who writes: 27729 27730 Under Windows, python freeze.py -o hello hello.py 27731 creates all the correct files in the hello subdirectory, but the 27732 Makefile has the directory prefix in it for frozen_extensions.c 27733 nmake fails because it tries to locate hello/frozen_extensions.c 27734 27735 (His fix adds a call to os.path.basename() in the appropriate place.) 27736 27737 * Objects/floatobject.c, Objects/intobject.c: 27738 Vladimir has restructured his code somewhat so that the blocks are now 27739 represented by an explicit structure. (There are still too many casts 27740 in the code, but that may be unavoidable.) 27741 27742 Also added code so that with -vv it is very chatty about what it does. 27743 27744 * Demo/zlib/zlibdemo.py, Demo/zlib/minigzip.py: 27745 Change #! line to modern usage; also chmod +x 27746 27747 * Demo/pdist/rrcs, Demo/pdist/rcvs, Demo/pdist/rcsbump: 27748 Change #! line to modern usage 27749 27750 * Lib/nturl2path.py, Lib/urllib.py: From: Sjoerd Mullender 27751 27752 The filename to URL conversion didn't properly quote special 27753 characters. 27754 The URL to filename didn't properly unquote special chatacters. 27755 27756 * Objects/floatobject.c: 27757 OK, try again. Vladimir gave me a fix for the alignment bus error, 27758 so here's his patch again. This time it works (at least on Solaris, 27759 Linux and Irix). 27760 27761 Thu Mar 11 23:21:23 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27762 27763 * Tools/idle/PathBrowser.py: 27764 Don't crash when sys.path contains an empty string. 27765 27766 * Tools/idle/PathBrowser.py: 27767 - Don't crash in the case where a superclass is a string instead of a 27768 pyclbr.Class object; this can happen when the superclass is 27769 unrecognizable (to pyclbr), e.g. when module renaming is used. 27770 27771 - Show a watch cursor when calling pyclbr (since it may take a while 27772 recursively parsing imported modules!). 27773 27774 Thu Mar 11 16:04:04 1999 Fred Drake <fdrake (a] eric.cnri.reston.va.us> 27775 27776 * Lib/mimetypes.py: 27777 Added .rdf and .xsl as application/xml types. (.rdf is for the 27778 Resource Description Framework, a metadata encoding, and .xsl is for 27779 the Extensible Stylesheet Language.) 27780 27781 Thu Mar 11 13:26:23 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27782 27783 * Lib/test/output/test_popen2, Lib/test/test_popen2.py: 27784 Test for popen2 module, by Chris Tismer. 27785 27786 * Objects/floatobject.c: 27787 Alas, Vladimir's patch caused a bus error (probably double 27788 alignment?), and I didn't test it. Withdrawing it for now. 27789 27790 Wed Mar 10 22:55:47 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27791 27792 * Objects/floatobject.c: 27793 Patch by Vladimir Marangoz to allow freeing of the allocated blocks of 27794 floats on finalization. 27795 27796 * Objects/intobject.c: 27797 Patch by Vladimir Marangoz to allow freeing of the allocated blocks of 27798 integers on finalization. 27799 27800 * Tools/idle/EditorWindow.py, Tools/idle/Bindings.py: 27801 Add PathBrowser to File module 27802 27803 * Tools/idle/PathBrowser.py: 27804 "Path browser" - 4 scrolled lists displaying: 27805 directories on sys.path 27806 modules in selected directory 27807 classes in selected module 27808 methods of selected class 27809 27810 Sinlge clicking in a directory, module or class item updates the next 27811 column with info about the selected item. Double clicking in a 27812 module, class or method item opens the file (and selects the clicked 27813 item if it is a class or method). 27814 27815 I guess eventually I should be using a tree widget for this, but the 27816 ones I've seen don't work well enough, so for now I use the old 27817 Smalltalk or NeXT style multi-column hierarchical browser. 27818 27819 * Tools/idle/MultiScrolledLists.py: 27820 New utility: multiple scrolled lists in parallel 27821 27822 * Tools/idle/ScrolledList.py: - White background. 27823 - Display "(None)" (or text of your choosing) when empty. 27824 - Don't set the focus. 27825 27826 Tue Mar 9 19:31:21 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27827 27828 * Lib/urllib.py: 27829 open_http also had the 'data is None' test backwards. don't call with the 27830 extra argument if data is None. 27831 27832 * Demo/embed/demo.c: 27833 Call Py_SetProgramName() instead of redefining getprogramname(), 27834 reflecting changes in the runtime around 1.5 or earlier. 27835 27836 * Python/ceval.c: 27837 Always test for an error return (usually NULL or -1) without setting 27838 an exception. 27839 27840 * Modules/timemodule.c: Patch by Chris Herborth for BeOS code. 27841 He writes: 27842 27843 I had an off-by-1000 error in floatsleep(), 27844 and the problem with time.clock() is that it's not implemented properly 27845 on QNX... ANSI says it's supposed to return _CPU_ time used by the 27846 process, but on QNX it returns the amount of real time used... so I was 27847 confused. 27848 27849 * Tools/bgen/bgen/macsupport.py: Small change by Jack Jansen. 27850 Test for self.returntype behaving like OSErr rather than being it. 27851 27852 Thu Feb 25 16:14:58 1999 Jeremy Hylton <jhylton (a] eric.cnri.reston.va.us> 27853 27854 * Lib/urllib.py: 27855 http_error had the 'data is None' test backwards. don't call with the 27856 extra argument if data is None. 27857 27858 * Lib/urllib.py: change indentation from 8 spaces to 4 spaces 27859 27860 * Lib/urllib.py: pleasing the tabnanny 27861 27862 Thu Feb 25 14:26:02 1999 Fred Drake <fdrake (a] eric.cnri.reston.va.us> 27863 27864 * Lib/colorsys.py: 27865 Oops, one more "x, y, z" to convert... 27866 27867 * Lib/colorsys.py: 27868 Adjusted comment at the top to be less confusing, following Fredrik 27869 Lundh's example. 27870 27871 Converted comment to docstring. 27872 27873 Wed Feb 24 18:49:15 1999 Fred Drake <fdrake (a] eric.cnri.reston.va.us> 27874 27875 * Lib/toaiff.py: 27876 Use sndhdr instead of the obsolete whatsound module. 27877 27878 Wed Feb 24 18:42:38 1999 Jeremy Hylton <jhylton (a] eric.cnri.reston.va.us> 27879 27880 * Lib/urllib.py: 27881 When performing a POST request, i.e. when the second argument to 27882 urlopen is used to specify form data, make sure the second argument is 27883 threaded through all of the http_error_NNN calls. This allows error 27884 handlers like the redirect and authorization handlers to properly 27885 re-start the connection. 27886 27887 Wed Feb 24 16:25:17 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27888 27889 * Lib/mhlib.py: Patch by Lars Wirzenius: 27890 27891 o the initial comment is wrong: creating messages is already 27892 implemented 27893 27894 o Message.getbodytext: if the mail or it's part contains an 27895 empty content-transfer-encoding header, the code used to 27896 break; the change below treats an empty encoding value the same 27897 as the other types that do not need decoding 27898 27899 o SubMessage.getbodytext was missing the decode argument; the 27900 change below adds it; I also made it unconditionally return 27901 the raw text if decoding was not desired, because my own 27902 routines needed that (and it was easier than rewriting my 27903 own routines ;-) 27904 27905 Wed Feb 24 00:35:43 1999 Barry Warsaw <bwarsaw (a] eric.cnri.reston.va.us> 27906 27907 * Python/bltinmodule.c (initerrors): 27908 Make sure that the exception tuples ("base-classes" when 27909 string-based exceptions are used) reflect the real class hierarchy, 27910 i.e. that SystemExit derives from Exception not StandardError. 27911 27912 * Lib/exceptions.py: 27913 Document the correct class hierarchy for SystemExit. It is not an 27914 error and so it derives from Exception and not SystemError. The 27915 docstring was incorrect but the implementation was fine. 27916 27917 Tue Feb 23 23:07:51 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27918 27919 * Lib/shutil.py: 27920 Add import sys, needed by reference to sys.exc_info() in rmtree(). 27921 Discovered by Mitch Chapman. 27922 27923 * config.h.in: 27924 Now that we don't have AC_CHECK_LIB(m, pow), the HAVE_LIBM symbol 27925 disappears. It wasn't used anywhere anyway... 27926 27927 * Modules/arraymodule.c: 27928 Carefully check for overflow when allocating the memory for fromfile 27929 -- someone tried to pass in sys.maxint and got bitten by the bogus 27930 calculations. 27931 27932 * configure.in: 27933 Get rid of AC_CHECK_LIB(m, pow) since this is taken care of later with 27934 LIBM (from --with-libm=...); this actually broke the customizability 27935 offered by the latter option. Thanks go to Clay Spence for reporting 27936 this. 27937 27938 * Lib/test/test_dl.py: 27939 1. Print the error message (carefully) when a dl.open() fails in verbose mode. 27940 2. When no test case worked, raise ImportError instead of failing. 27941 27942 * Python/bltinmodule.c: 27943 Patch by Tim Peters to improve the range checks for range() and 27944 xrange(), especially for platforms where int and long are different 27945 sizes (so sys.maxint isn't actually the theoretical limit for the 27946 length of a list, but the largest C int is -- sys.maxint is the 27947 largest Python int, which is actually a C long). 27948 27949 * Makefile.in: 27950 1. Augment the DG/UX rule so it doesn't break the BeOS build. 27951 2. Add $(EXE) to various occurrences of python so it will work on 27952 Cygwin with egcs (after setting EXE=.exe). These patches by 27953 Norman Vine. 27954 27955 * Lib/posixfile.py: 27956 According to Jeffrey Honig, bsd/os 2.0 - 4.0 should be added to the 27957 list (of bsd variants that have a different lock structure). 27958 27959 * Lib/test/test_fcntl.py: 27960 According to Jeffrey Honig, bsd/os 4.0 should be added to the list. 27961 27962 * Modules/timemodule.c: 27963 Patch by Tadayoshi Funaba (with some changes) to be smarter about 27964 guessing what happened when strftime() returns 0. Is it buffer 27965 overflow or was the result simply 0 bytes long? (This happens for an 27966 empty format string, or when the format string is a single %Z and the 27967 timezone is unknown.) if the buffer is at least 256 times as long as 27968 the format, assume the latter. 27969 27970 Mon Feb 22 19:01:42 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27971 27972 * Lib/urllib.py: 27973 As Des Barry points out, we need to call pathname2url(file) in two 27974 calls to addinfourl() in open_file(). 27975 27976 * Modules/Setup.in: Document *static* -- in two places! 27977 27978 * Modules/timemodule.c: 27979 We don't support leap seconds, so the seconds field of a time 9-tuple 27980 should be in the range [0-59]. Noted by Tadayoshi Funaba. 27981 27982 * Modules/stropmodule.c: 27983 In atoi(), don't use isxdigit() to test whether the last character 27984 converted was a "digit" -- use isalnum(). This test is there only to 27985 guard against "+" or "-" being interpreted as a valid int literal. 27986 Reported by Takahiro Nakayama. 27987 27988 * Lib/os.py: 27989 As Finn Bock points out, _P_WAIT etc. don't have a leading underscore 27990 so they don't need to be treated specially here. 27991 27992 Mon Feb 22 15:38:58 1999 Fred Drake <fdrake (a] eric.cnri.reston.va.us> 27993 27994 * Misc/NEWS: 27995 Typo: "apparentlt" --> "apparently" 27996 27997 Mon Feb 22 15:38:46 1999 Guido van Rossum <guido (a] eric.cnri.reston.va.us> 27998 27999 * Lib/urlparse.py: Steve Clift pointed out that 'file' allows a netloc. 28000 28001 * Modules/posixmodule.c: 28002 The docstring for ttyname(..) claims a second "mode" argument. The 28003 actual code does not allow such an argument. (Finn Bock.) 28004 28005 * Lib/lib-old/poly.py: 28006 Dang. Even though this is obsolete code, somebody found a bug, and I 28007 fix it. Oh well. 28008 28009 Thu Feb 18 20:51:50 1999 Fred Drake <fdrake (a] eric.cnri.reston.va.us> 28010 28011 * Lib/pyclbr.py: 28012 Bow to font-lock at the end of the docstring, since it throws stuff 28013 off. 28014 28015 Make sure the path parameter to readmodule() is a list before adding it 28016 with sys.path, or the addition could fail. 28017 28018 28019 ====================================================================== 28020 28021 28022 From 1.5.2b1 to 1.5.2b2 28023 ======================= 28024 28025 General 28026 ------- 28027 28028 - Many memory leaks fixed. 28029 28030 - Many small bugs fixed. 28031 28032 - Command line option -OO (or -O -O) suppresses inclusion of doc 28033 strings in resulting bytecode. 28034 28035 Windows-specific changes 28036 ------------------------ 28037 28038 - New built-in module winsound provides an interface to the Win32 28039 PlaySound() call. 28040 28041 - Re-enable the audioop module in the config.c file. 28042 28043 - On Windows, support spawnv() and associated P_* symbols. 28044 28045 - Fixed the conversion of times() return values on Windows. 28046 28047 - Removed freeze from the installer -- it doesn't work without the 28048 source tree. (See FAQ 8.11.) 28049 28050 - On Windows 95/98, the Tkinter module now is smart enough to find 28051 Tcl/Tk even when the PATH environment variable hasn't been set -- when 28052 the import of _tkinter fails, it searches in a standard locations, 28053 patches os.environ["PATH"], and tries again. When it still fails, a 28054 clearer error message is produced. This should avoid most 28055 installation problems with Tkinter use (e.g. in IDLE). 28056 28057 - The -i option doesn't make any calls to set[v]buf() for stdin -- 28058 this apparently screwed up _kbhit() and the _tkinter main loop. 28059 28060 - The ntpath module (and hence, os.path on Windows) now parses out UNC 28061 paths (e.g. \\host\mountpoint\dir\file) as "drive letters", so that 28062 splitdrive() will \\host\mountpoint as the drive and \dir\file as the 28063 path. ** EXPERIMENTAL ** 28064 28065 - Added a hack to the exit code so that if (1) the exit status is 28066 nonzero and (2) we think we have our own DOS box (i.e. we're not 28067 started from a command line shell), we print a message and wait for 28068 the user to hit a key before the DOS box is closed. 28069 28070 - Updated the installer to WISE 5.0g. Added a dialog warning about 28071 the imminent Tcl installation. Added a dialog to specify the program 28072 group name in the start menu. Upgraded the Tcl installer to Tcl 28073 8.0.4. 28074 28075 Changes to intrinsics 28076 --------------------- 28077 28078 - The repr() or str() of a module object now shows the __file__ 28079 attribute (i.e., the file which it was loaded), or the string 28080 "(built-in)" if there is no __file__ attribute. 28081 28082 - The range() function now avoids overflow during its calculations (if 28083 at all possible). 28084 28085 - New info string sys.hexversion, which is an integer encoding the 28086 version in hexadecimal. In other words, hex(sys.hexversion) == 28087 0x010502b2 for Python 1.5.2b2. 28088 28089 New or improved ports 28090 --------------------- 28091 28092 - Support for Nextstep descendants (future Mac systems). 28093 28094 - Improved BeOS support. 28095 28096 - Support dynamic loading of shared libraries on NetBSD platforms that 28097 use ELF (i.e., MIPS and Alpha systems). 28098 28099 Configuration/build changes 28100 --------------------------- 28101 28102 - The Lib/test directory is no longer included in the default module 28103 search path (sys.path) -- "test" has been a package ever since 1.5. 28104 28105 - Now using autoconf 2.13. 28106 28107 New library modules 28108 ------------------- 28109 28110 - New library modules asyncore and asynchat: these form Sam Rushing's 28111 famous asynchronous socket library. Sam has gracefully allowed me to 28112 incorporate these in the standard Python library. 28113 28114 - New module statvfs contains indexing constants for [f]statvfs() 28115 return tuple. 28116 28117 Changes to the library 28118 ---------------------- 28119 28120 - The wave module (platform-independent support for Windows sound 28121 files) has been fixed to actually make it work. 28122 28123 - The sunau module (platform-independent support for Sun/NeXT sound 28124 files) has been fixed to work across platforms. Also, a weird 28125 encoding bug in the header of the audio test data file has been 28126 corrected. 28127 28128 - Fix a bug in the urllib module that occasionally tripped up 28129 webchecker and other ftp retrieves. 28130 28131 - ConfigParser's get() method now accepts an optional keyword argument 28132 (vars) that is substituted on top of the defaults that were setup in 28133 __init__. You can now also have recusive references in your 28134 configuration file. 28135 28136 - Some improvements to the Queue module, including a put_nowait() 28137 module and an optional "block" second argument, to get() and put(), 28138 defaulting to 1. 28139 28140 - The updated xmllib module is once again compatible with the version 28141 present in Python 1.5.1 (this was accidentally broken in 1.5.2b1). 28142 28143 - The bdb module (base class for the debugger) now supports 28144 canonicalizing pathnames used in breakpoints. The derived class must 28145 override the new canonical() method for this to work. Also changed 28146 clear_break() to the backwards compatible old signature, and added 28147 clear_bpbynumber() for the new functionality. 28148 28149 - In sgmllib (and hence htmllib), recognize attributes even if they 28150 don't have space in front of them. I.e. '<a 28151 name="foo"href="bar.html">' will now have two attributes recognized. 28152 28153 - In the debugger (pdb), change clear syntax to support three 28154 alternatives: clear; clear file:line; clear bpno bpno ... 28155 28156 - The os.path module now pretends to be a submodule within the os 28157 "package", so you can do things like "from os.path import exists". 28158 28159 - The standard exceptions now have doc strings. 28160 28161 - In the smtplib module, exceptions are now classes. Also avoid 28162 inserting a non-standard space after "TO" in rcpt() command. 28163 28164 - The rfc822 module's getaddrlist() method now uses all occurrences of 28165 the specified header instead of just the first. Some other bugfixes 28166 too (to handle more weird addresses found in a very large test set, 28167 and to avoid crashes on certain invalid dates), and a small test 28168 module has been added. 28169 28170 - Fixed bug in urlparse in the common-case code for HTTP URLs; it 28171 would lose the query, fragment, and/or parameter information. 28172 28173 - The sndhdr module no longer supports whatraw() -- it depended on a 28174 rare extenral program. 28175 28176 - The UserList module/class now supports the extend() method, like 28177 real list objects. 28178 28179 - The uu module now deals better with trailing garbage generated by 28180 some broke uuencoders. 28181 28182 - The telnet module now has a my_interact() method which uses threads 28183 instead of select. The interact() method uses this by default on 28184 Windows (where the single-threaded version doesn't work). 28185 28186 - Add a class to mailbox.py for dealing with qmail directory 28187 mailboxes. The test code was extended to notice these being used as 28188 well. 28189 28190 Changes to extension modules 28191 ---------------------------- 28192 28193 - Support for the [f]statvfs() system call, where it exists. 28194 28195 - Fixed some bugs in cPickle where bad input could cause it to dump 28196 core. 28197 28198 - Fixed cStringIO to make the writelines() function actually work. 28199 28200 - Added strop.expandtabs() so string.expandtabs() is now much faster. 28201 28202 - Added fsync() and fdatasync(), if they appear to exist. 28203 28204 - Support for "long files" (64-bit seek pointers). 28205 28206 - Fixed a bug in the zlib module's flush() function. 28207 28208 - Added access() system call. It returns 1 if access granted, 0 if 28209 not. 28210 28211 - The curses module implements an optional nlines argument to 28212 w.scroll(). (It then calls wscrl(win, nlines) instead of scoll(win).) 28213 28214 Changes to tools 28215 ---------------- 28216 28217 - Some changes to IDLE; see Tools/idle/NEWS.txt. 28218 28219 - Latest version of Misc/python-mode.el included. 28220 28221 Changes to Tkinter 28222 ------------------ 28223 28224 - Avoid tracebacks when an image is deleted after its root has been 28225 destroyed. 28226 28227 Changes to the Python/C API 28228 --------------------------- 28229 28230 - When parentheses are used in a PyArg_Parse[Tuple]() call, any 28231 sequence is now accepted, instead of requiring a tuple. This is in 28232 line with the general trend towards accepting arbitrary sequences. 28233 28234 - Added PyModule_GetFilename(). 28235 28236 - In PyNumber_Power(), remove unneeded and even harmful test for float 28237 to the negative power (which is already and better done in 28238 floatobject.c). 28239 28240 - New version identification symbols; read patchlevel.h for info. The 28241 version numbers are now exported by Python.h. 28242 28243 - Rolled back the API version change -- it's back to 1007! 28244 28245 - The frozenmain.c function calls PyInitFrozenExtensions(). 28246 28247 - Added 'N' format character to Py_BuildValue -- like 'O' but doesn't 28248 INCREF. 28249 28250 28251 ====================================================================== 28252 28253 28254 From 1.5.2a2 to 1.5.2b1 28255 ======================= 28256 28257 Changes to intrinsics 28258 --------------------- 28259 28260 - New extension NotImplementedError, derived from RuntimeError. Not 28261 used, but recommended use is for "abstract" methods to raise this. 28262 28263 - The parser will now spit out a warning or error when -t or -tt is 28264 used for parser input coming from a string, too. 28265 28266 - The code generator now inserts extra SET_LINENO opcodes when 28267 compiling multi-line argument lists. 28268 28269 - When comparing bound methods, use identity test on the objects, not 28270 equality test. 28271 28272 New or improved ports 28273 --------------------- 28274 28275 - Chris Herborth has redone his BeOS port; it now works on PowerPC 28276 (R3/R4) and x86 (R4 only). Threads work too in this port. 28277 28278 Renaming 28279 -------- 28280 28281 - Thanks to Chris Herborth, the thread primitives now have proper Py* 28282 names in the source code (they already had those for the linker, 28283 through some smart macros; but the source still had the old, un-Py 28284 names). 28285 28286 Configuration/build changes 28287 --------------------------- 28288 28289 - Improved support for FreeBSD/3. 28290 28291 - Check for pthread_detach instead of pthread_create in libc. 28292 28293 - The makesetup script now searches EXECINCLUDEPY before INCLUDEPY. 28294 28295 - Misc/Makefile.pre.in now also looks at Setup.thread and Setup.local. 28296 Otherwise modules such as thread didn't get incorporated in extensions. 28297 28298 New library modules 28299 ------------------- 28300 28301 - shlex.py by Eric Raymond provides a lexical analyzer class for 28302 simple shell-like syntaxes. 28303 28304 - netrc.py by Eric Raymond provides a parser for .netrc files. (The 28305 undocumented Netrc class in ftplib.py is now obsolete.) 28306 28307 - codeop.py is a new module that contains the compile_command() 28308 function that was previously in code.py. This is so that JPython can 28309 provide its own version of this function, while still sharing the 28310 higher-level classes in code.py. 28311 28312 - turtle.py is a new module for simple turtle graphics. I'm still 28313 working on it; let me know if you use this to teach Python to children 28314 or other novices without prior programming experience. 28315 28316 Obsoleted library modules 28317 ------------------------- 28318 28319 - poly.py and zmod.py have been moved to Lib/lib-old to emphasize 28320 their status of obsoleteness. They don't do a particularly good job 28321 and don't seem particularly relevant to the Python core. 28322 28323 New tools 28324 --------- 28325 28326 - I've added IDLE: my Integrated DeveLopment Environment for Python. 28327 Requires Tcl/Tk (and Tkinter). Works on Windows and Unix (and should 28328 work on Macintosh, but I haven't been able to test it there; it does 28329 depend on new features in 1.5.2 and perhaps even new features in 28330 1.5.2b1, especially the new code module). This is very much a work in 28331 progress. I'd like to hear how people like it compared to PTUI (or 28332 any other IDE they are familiar with). 28333 28334 - New tools by Barry Warsaw: 28335 28336 = audiopy: controls the Solaris Audio device 28337 = pynche: The PYthonically Natural Color and Hue Editor 28338 = world: Print mappings between country names and DNS country codes 28339 28340 New demos 28341 --------- 28342 28343 - Demo/scripts/beer.py prints the lyrics to an arithmetic drinking 28344 song. 28345 28346 - Demo/tkinter/guido/optionmenu.py shows how to do an option menu in 28347 Tkinter. (By Fredrik Lundh -- not by me!) 28348 28349 Changes to the library 28350 ---------------------- 28351 28352 - compileall.py now avoids recompiling .py files that haven't changed; 28353 it adds a -f option to force recompilation. 28354 28355 - New version of xmllib.py by Sjoerd Mullender (0.2 with latest 28356 patches). 28357 28358 - nntplib.py: statparse() no longer lowercases the message-id. 28359 28360 - types.py: use type(__stdin__) for FileType. 28361 28362 - urllib.py: fix translations for filenames with "funny" characters. 28363 Patch by Sjoerd Mullender. Note that if you subclass one of the 28364 URLopener classes, and you have copied code from the old urllib.py, 28365 your subclass may stop working. A long-term solution is to provide 28366 more methods so that you don't have to copy code. 28367 28368 - cgi.py: In read_multi, allow a subclass to override the class we 28369 instantiate when we create a recursive instance, by setting the class 28370 variable 'FieldStorageClass' to the desired class. By default, this 28371 is set to None, in which case we use self.__class__ (as before). 28372 Also, a patch by Jim Fulton to pass additional arguments to recursive 28373 calls to the FieldStorage constructor from its read_multi method. 28374 28375 - UserList.py: In __getslice__, use self.__class__ instead of 28376 UserList. 28377 28378 - In SimpleHTTPServer.py, the server specified in test() should be 28379 BaseHTTPServer.HTTPServer, in case the request handler should want to 28380 reference the two attributes added by BaseHTTPServer.server_bind. (By 28381 Jeff Rush, for Bobo). Also open the file in binary mode, so serving 28382 images from a Windows box might actually work. 28383 28384 - In CGIHTTPServer.py, the list of acceptable formats is -split- 28385 on spaces but -joined- on commas, resulting in double commas 28386 in the joined text. (By Jeff Rush.) 28387 28388 - SocketServer.py, patch by Jeff Bauer: a minor change to declare two 28389 new threaded versions of Unix Server classes, using the ThreadingMixIn 28390 class: ThreadingUnixStreamServer, ThreadingUnixDatagramServer. 28391 28392 - bdb.py: fix bomb on deleting a temporary breakpoint: there's no 28393 method do_delete(); do_clear() was meant. By Greg Ward. 28394 28395 - getopt.py: accept a non-list sequence for the long options (request 28396 by Jack Jansen). Because it might be a common mistake to pass a 28397 single string, this situation is treated separately. Also added 28398 docstrings (copied from the library manual) and removed the (now 28399 redundant) module comments. 28400 28401 - tempfile.py: improvements to avoid security leaks. 28402 28403 - code.py: moved compile_command() to new module codeop.py. 28404 28405 - pickle.py: support pickle format 1.3 (binary float added). By Jim 28406 Fulton. Also get rid of the undocumented obsolete Pickler dump_special 28407 method. 28408 28409 - uu.py: Move 'import sys' to top of module, as noted by Tim Peters. 28410 28411 - imaplib.py: fix problem with some versions of IMAP4 servers that 28412 choose to mix the case in their CAPABILITIES response. 28413 28414 - cmp.py: use (f1, f2) as cache key instead of f1 + ' ' + f2. Noted 28415 by Fredrik Lundh. 28416 28417 Changes to extension modules 28418 ---------------------------- 28419 28420 - More doc strings for several modules were contributed by Chris 28421 Petrilli: math, cmath, fcntl. 28422 28423 - Fixed a bug in zlibmodule.c that could cause core dumps on 28424 decompression of rarely occurring input. 28425 28426 - cPickle.c: new version from Jim Fulton, with Open Source copyright 28427 notice. Also, initialize self->safe_constructors early on to prevent 28428 crash in early dealloc. 28429 28430 - cStringIO.c: new version from Jim Fulton, with Open Source copyright 28431 notice. Also fixed a core dump in cStringIO.c when doing seeks. 28432 28433 - mpzmodule.c: fix signed character usage in mpz.mpz(stringobjecty). 28434 28435 - readline.c: Bernard Herzog pointed out that rl_parse_and_bind 28436 modifies its argument string (bad function!), so we make a temporary 28437 copy. 28438 28439 - sunaudiodev.c: Barry Warsaw added more smarts to get the device and 28440 control pseudo-device, per audio(7I). 28441 28442 Changes to tools 28443 ---------------- 28444 28445 - New, improved version of Barry Warsaw's Misc/python-mode.el (editing 28446 support for Emacs). 28447 28448 - tabnanny.py: added a -q ('quiet') option to tabnanny, which causes 28449 only the names of offending files to be printed. 28450 28451 - freeze: when printing missing modules, also print the module they 28452 were imported from. 28453 28454 - untabify.py: patch by Detlef Lannert to implement -t option 28455 (set tab size). 28456 28457 Changes to Tkinter 28458 ------------------ 28459 28460 - grid_bbox(): support new Tk API: grid bbox ?column row? ?column2 28461 row2? 28462 28463 - _tkinter.c: RajGopal Srinivasan noted that the latest code (1.5.2a2) 28464 doesn't work when running in a non-threaded environment. He added 28465 some #ifdefs that fix this. 28466 28467 Changes to the Python/C API 28468 --------------------------- 28469 28470 - Bumped API version number to 1008 -- enough things have changed! 28471 28472 - There's a new macro, PyThreadState_GET(), which does the same work 28473 as PyThreadState_Get() without the overhead of a function call (it 28474 also avoids the error check). The two top calling locations of 28475 PyThreadState_Get() have been changed to use this macro. 28476 28477 - All symbols intended for export from a DLL or shared library are now 28478 marked as such (with the DL_IMPORT() macro) in the header file that 28479 declares them. This was needed for the BeOS port, and should also 28480 make some other ports easier. The PC port no longer needs the file 28481 with exported symbols (PC/python_nt.def). There's also a DL_EXPORT 28482 macro which is only used for init methods in extension modules, and 28483 for Py_Main(). 28484 28485 Invisible changes to internals 28486 ------------------------------ 28487 28488 - Fixed a bug in new_buffersize() in fileobject.c which could 28489 return a buffer size that was way too large. 28490 28491 - Use PySys_WriteStderr instead of fprintf in most places. 28492 28493 - dictobject.c: remove dead code discovered by Vladimir Marangozov. 28494 28495 - tupleobject.c: make tuples less hungry -- an extra item was 28496 allocated but never used. Tip by Vladimir Marangozov. 28497 28498 - mymath.h: Metrowerks PRO4 finally fixes the hypot snafu. (Jack 28499 Jansen) 28500 28501 - import.c: Jim Fulton fixes a reference count bug in 28502 PyEval_GetGlobals. 28503 28504 - glmodule.c: check in the changed version after running the stubber 28505 again -- this solves the conflict with curses over the 'clear' entry 28506 point much nicer. (Jack Jansen had checked in the changes to cstubs 28507 eons ago, but I never regenrated glmodule.c :-( ) 28508 28509 - frameobject.c: fix reference count bug in PyFrame_New. Vladimir 28510 Marangozov. 28511 28512 - stropmodule.c: add a missing DECREF in an error exit. Submitted by 28513 Jonathan Giddy. 28514 28515 28516 ====================================================================== 28517 28518 28519 From 1.5.2a1 to 1.5.2a2 28520 ======================= 28521 28522 General 28523 ------- 28524 28525 - It is now a syntax error to have a function argument without a 28526 default following one with a default. 28527 28528 - __file__ is now set to the .py file if it was parsed (it used to 28529 always be the .pyc/.pyo file). 28530 28531 - Don't exit with a fatal error during initialization when there's a 28532 problem with the exceptions.py module. 28533 28534 - New environment variable PYTHONOPTIMIZE can be used to set -O. 28535 28536 - New version of python-mode.el for Emacs. 28537 28538 Miscellaneous fixed bugs 28539 ------------------------ 28540 28541 - No longer print the (confusing) error message about stack underflow 28542 while compiling. 28543 28544 - Some threading and locking bugs fixed. 28545 28546 - When errno is zero, report "Error", not "Success". 28547 28548 Documentation 28549 ------------- 28550 28551 - Documentation will be released separately. 28552 28553 - Doc strings added to array and md5 modules by Chris Petrilli. 28554 28555 Ports and build procedure 28556 ------------------------- 28557 28558 - Stop installing when a move or copy fails. 28559 28560 - New version of the OS/2 port code by Jeff Rush. 28561 28562 - The makesetup script handles absolute filenames better. 28563 28564 - The 'new' module is now enabled by default in the Setup file. 28565 28566 - I *think* I've solved the problem with the Linux build blowing up 28567 sometimes due to a conflict between sigcheck/intrcheck and 28568 signalmodule. 28569 28570 Built-in functions 28571 ------------------ 28572 28573 - The second argument to apply() can now be any sequence, not just a 28574 tuple. 28575 28576 Built-in types 28577 -------------- 28578 28579 - Lists have a new method: L1.extend(L2) is equivalent to the common 28580 idiom L1[len(L1):] = L2. 28581 28582 - Better error messages when a sequence is indexed with a non-integer. 28583 28584 - Bettter error message when calling a non-callable object (include 28585 the type in the message). 28586 28587 Python services 28588 --------------- 28589 28590 - New version of cPickle.c fixes some bugs. 28591 28592 - pickle.py: improved instantiation error handling. 28593 28594 - code.py: reworked quite a bit. New base class 28595 InteractiveInterpreter and derived class InteractiveConsole. Fixed 28596 several problems in compile_command(). 28597 28598 - py_compile.py: print error message and continue on syntax errors. 28599 Also fixed an old bug with the fstat code (it was never used). 28600 28601 - pyclbr.py: support submodules of packages. 28602 28603 String Services 28604 --------------- 28605 28606 - StringIO.py: raise the right exception (ValueError) for attempted 28607 I/O on closed StringIO objects. 28608 28609 - re.py: fixed a bug in subn(), which caused .groups() to fail inside 28610 the replacement function called by sub(). 28611 28612 - The struct module has a new format 'P': void * in native mode. 28613 28614 Generic OS Services 28615 ------------------- 28616 28617 - Module time: Y2K robustness. 2-digit year acceptance depends on 28618 value of time.accept2dyear, initialized from env var PYTHONY2K, 28619 default 0. Years 00-68 mean 2000-2068, while 69-99 mean 1969-1999 28620 (POSIX or X/Open recommendation). 28621 28622 - os.path: normpath(".//x") should return "x", not "/x". 28623 28624 - getpass.py: fall back on default_getpass() when sys.stdin.fileno() 28625 doesn't work. 28626 28627 - tempfile.py: regenerate the template after a fork() call. 28628 28629 Optional OS Services 28630 -------------------- 28631 28632 - In the signal module, disable restarting interrupted system calls 28633 when we have siginterrupt(). 28634 28635 Debugger 28636 -------- 28637 28638 - No longer set __args__; this feature is no longer supported and can 28639 affect the debugged code. 28640 28641 - cmd.py, pdb.py and bdb.py have been overhauled by Richard Wolff, who 28642 added aliases and some other useful new features, e.g. much better 28643 breakpoint support: temporary breakpoint, disabled breakpoints, 28644 breakpoints with ignore counts, and conditions; breakpoints can be set 28645 on a file before it is loaded. 28646 28647 Profiler 28648 -------- 28649 28650 - Changes so that JPython can use it. Also fix the calibration code 28651 so it actually works again 28652 . 28653 Internet Protocols and Support 28654 ------------------------------ 28655 28656 - imaplib.py: new version from Piers Lauder. 28657 28658 - smtplib.py: change sendmail() method to accept a single string or a 28659 list or strings as the destination (commom newbie mistake). 28660 28661 - poplib.py: LIST with a msg argument fixed. 28662 28663 - urlparse.py: some optimizations for common case (http). 28664 28665 - urllib.py: support content-length in info() for ftp protocol; 28666 support for a progress meter through a third argument to 28667 urlretrieve(); commented out gopher test (the test site is dead). 28668 28669 Internet Data handling 28670 ---------------------- 28671 28672 - sgmllib.py: support tags with - or . in their name. 28673 28674 - mimetypes.py: guess_type() understands 'data' URLs. 28675 28676 Restricted Execution 28677 -------------------- 28678 28679 - The classes rexec.RModuleLoader and rexec.RModuleImporter no 28680 longer exist. 28681 28682 Tkinter 28683 ------- 28684 28685 - When reporting an exception, store its info in sys.last_*. Also, 28686 write all of it to stderr. 28687 28688 - Added NS, EW, and NSEW constants, for grid's sticky option. 28689 28690 - Fixed last-minute bug in 1.5.2a1 release: need to include "mytime.h". 28691 28692 - Make bind variants without a sequence return a tuple of sequences 28693 (formerly it returned a string, which wasn't very convenient). 28694 28695 - Add image commands to the Text widget (these are new in Tk 8.0). 28696 28697 - Added new listbox and canvas methods: {xview,yview}_{scroll,moveto}.) 28698 28699 - Improved the thread code (but you still can't call update() from 28700 another thread on Windows). 28701 28702 - Fixed unnecessary references to _default_root in the new dialog 28703 modules. 28704 28705 - Miscellaneous problems fixed. 28706 28707 28708 Windows General 28709 --------------- 28710 28711 - Call LoadLibraryEx(..., ..., LOAD_WITH_ALTERED_SEARCH_PATH) to 28712 search for dependent dlls in the directory containing the .pyd. 28713 28714 - In debugging mode, call DebugBreak() in Py_FatalError(). 28715 28716 Windows Installer 28717 ----------------- 28718 28719 - Install zlib.dll in the DLLs directory instead of in the win32 28720 system directory, to avoid conflicts with other applications that have 28721 their own zlib.dll. 28722 28723 Test Suite 28724 ---------- 28725 28726 - test_long.py: new test for long integers, by Tim Peters. 28727 28728 - regrtest.py: improved so it can be used for other test suites as 28729 well. 28730 28731 - test_strftime.py: use re to compare test results, to support legal 28732 variants (e.g. on Linux). 28733 28734 Tools and Demos 28735 --------------- 28736 28737 - Four new scripts in Tools/scripts: crlf.py and lfcr.py (to 28738 remove/add Windows style '\r\n' line endings), untabify.py (to remove 28739 tabs), and rgrep.yp (reverse grep). 28740 28741 - Improvements to Tools/freeze/. Each Python module is now written to 28742 its own C file. This prevents some compilers or assemblers from 28743 blowing up on large frozen programs, and saves recompilation time if 28744 only a few modules are changed. Other changes too, e.g. new command 28745 line options -x and -i. 28746 28747 - Much improved (and smaller!) version of Tools/scripts/mailerdaemon.py. 28748 28749 Python/C API 28750 ------------ 28751 28752 - New mechanism to support extensions of the type object while 28753 remaining backward compatible with extensions compiled for previous 28754 versions of Python 1.5. A flags field indicates presence of certain 28755 fields. 28756 28757 - Addition to the buffer API to differentiate access to bytes and 28758 8-bit characters (in anticipation of Unicode characters). 28759 28760 - New argument parsing format t# ("text") to indicate 8-bit 28761 characters; s# simply means 8-bit bytes, for backwards compatibility. 28762 28763 - New object type, bufferobject.c is an example and can be used to 28764 create buffers from memory. 28765 28766 - Some support for 64-bit longs, including some MS platforms. 28767 28768 - Many calls to fprintf(stderr, ...) have been replaced with calls to 28769 PySys_WriteStderr(...). 28770 28771 - The calling context for PyOS_Readline() has changed: it must now be 28772 called with the interpreter lock held! It releases the lock around 28773 the call to the function pointed to by PyOS_ReadlineFunctionPointer 28774 (default PyOS_StdioReadline()). 28775 28776 - New APIs PyLong_FromVoidPtr() and PyLong_AsVoidPtr(). 28777 28778 - Renamed header file "thread.h" to "pythread.h". 28779 28780 - The code string of code objects may now be anything that supports the 28781 buffer API. 28782 28783 28784 ====================================================================== 28785 28786 28787 From 1.5.1 to 1.5.2a1 28788 ===================== 28789 28790 General 28791 ------- 28792 28793 - When searching for the library, a landmark that is a compiled module 28794 (string.pyc or string.pyo) is also accepted. 28795 28796 - When following symbolic links to the python executable, use a loop 28797 so that a symlink to a symlink can work. 28798 28799 - Added a hack so that when you type 'quit' or 'exit' at the 28800 interpreter, you get a friendly explanation of how to press Ctrl-D (or 28801 Ctrl-Z) to exit. 28802 28803 - New and improved Misc/python-mode.el (Python mode for Emacs). 28804 28805 - Revert a new feature in Unix dynamic loading: for one or two 28806 revisions, modules were loaded using the RTLD_GLOBAL flag. It turned 28807 out to be a bad idea. 28808 28809 Miscellaneous fixed bugs 28810 ------------------------ 28811 28812 - All patches on the patch page have been integrated. (But much more 28813 has been done!) 28814 28815 - Several memory leaks plugged (e.g. the one for classes with a 28816 __getattr__ method). 28817 28818 - Removed the only use of calloc(). This triggered an obscure bug on 28819 multiprocessor Sparc Solaris 2.6. 28820 28821 - Fix a peculiar bug that would allow "import sys.time" to succeed 28822 (believing the built-in time module to be a part of the sys package). 28823 28824 - Fix a bug in the overflow checking when converting a Python long to 28825 a C long (failed to convert -2147483648L, and some other cases). 28826 28827 Documentation 28828 ------------- 28829 28830 - Doc strings have been added to many extension modules: __builtin__, 28831 errno, select, signal, socket, sys, thread, time. Also to methods of 28832 list objects (try [].append.__doc__). A doc string on a type will now 28833 automatically be propagated to an instance if the instance has methods 28834 that are accessed in the usual way. 28835 28836 - The documentation has been expanded and the formatting improved. 28837 (Remember that the documentation is now unbundled and has its own 28838 release cycle though; see http://www.python.org/doc/.) 28839 28840 - Added Misc/Porting -- a mini-FAQ on porting to a new platform. 28841 28842 Ports and build procedure 28843 ------------------------- 28844 28845 - The BeOS port is now integrated. Courtesy Chris Herborth. 28846 28847 - Symbol files for FreeBSD 2.x and 3.x have been contributed 28848 (Lib/plat-freebsd[23]/*). 28849 28850 - Support HPUX 10.20 DCE threads. 28851 28852 - Finally fixed the configure script so that (on SGI) if -OPT:Olimit=0 28853 works, it won't also use -Olimit 1500 (which gives a warning for every 28854 file). Also support the SGI_ABI environment variable better. 28855 28856 - The makesetup script now understands absolute pathnames ending in .o 28857 in the module -- it assumes it's a file for which we have no source. 28858 28859 - Other miscellaneous improvements to the configure script and 28860 Makefiles. 28861 28862 - The test suite now uses a different sound sample. 28863 28864 Built-in functions 28865 ------------------ 28866 28867 - Better checks for invalid input to int(), long(), string.atoi(), 28868 string.atol(). (Formerly, a sign without digits would be accepted as 28869 a legal ways to spell zero.) 28870 28871 - Changes to map() and filter() to use the length of a sequence only 28872 as a hint -- if an IndexError happens earlier, take that. (Formerly, 28873 this was considered an error.) 28874 28875 - Experimental feature in getattr(): a third argument can specify a 28876 default (instead of raising AttributeError). 28877 28878 - Implement round() slightly different, so that for negative ndigits 28879 no additional errors happen in the last step. 28880 28881 - The open() function now adds the filename to the exception when it 28882 fails. 28883 28884 Built-in exceptions 28885 ------------------- 28886 28887 - New standard exceptions EnvironmentError and PosixError. 28888 EnvironmentError is the base class for IOError and PosixError; 28889 PosixError is the same as os.error. All this so that either exception 28890 class can be instantiated with a third argument indicating a filename. 28891 The built-in function open() and most os/posix functions that take a 28892 filename argument now use this. 28893 28894 Built-in types 28895 -------------- 28896 28897 - List objects now have an experimental pop() method; l.pop() returns 28898 and removes the last item; l.pop(i) returns and removes the item at 28899 i. Also, the sort() method is faster again. Sorting is now also 28900 safer: it is impossible for the sorting function to modify the list 28901 while the sort is going on (which could cause core dumps). 28902 28903 - Changes to comparisons: numbers are now smaller than any other type. 28904 This is done to prevent the circularity where [] < 0L < 1 < [] is 28905 true. As a side effect, cmp(None, 0) is now positive instead of 28906 negative. This *shouldn't* affect any working code, but I've found 28907 that the change caused several "sleeping" bugs to become active, so 28908 beware! 28909 28910 - Instance methods may now have other callable objects than just 28911 Python functions as their im_func. Use new.instancemethod() or write 28912 your own C code to create them; new.instancemethod() may be called 28913 with None for the instance to create an unbound method. 28914 28915 - Assignment to __name__, __dict__ or __bases__ of a class object is 28916 now allowed (with stringent type checks); also allow assignment to 28917 __getattr__ etc. The cached values for __getattr__ etc. are 28918 recomputed after such assignments (but not for derived classes :-( ). 28919 28920 - Allow assignment to some attributes of function objects: func_code, 28921 func_defaults and func_doc / __doc__. (With type checks except for 28922 __doc__ / func_doc .) 28923 28924 Python services 28925 --------------- 28926 28927 - New tests (in Lib/test): reperf.py (regular expression benchmark), 28928 sortperf.py (list sorting benchmark), test_MimeWriter.py (test case 28929 for the MimeWriter module). 28930 28931 - Generalized test/regrtest.py so that it is useful for testing other 28932 packages. 28933 28934 - The ihooks.py module now understands package imports. 28935 28936 - In code.py, add a class that subsumes Fredrik Lundh's 28937 PythonInterpreter class. The interact() function now uses this. 28938 28939 - In rlcompleter.py, in completer(), return None instead of raising an 28940 IndexError when there are no more completions left. 28941 28942 - Fixed the marshal module to test for certain common kinds of invalid 28943 input. (It's still not foolproof!) 28944 28945 - In the operator module, add an alias (now the preferred name) 28946 "contains" for "sequenceincludes". 28947 28948 String Services 28949 --------------- 28950 28951 - In the string and strop modules, in the replace() function, treat an 28952 empty pattern as an error (since it's not clear what was meant!). 28953 28954 - Some speedups to re.py, especially the string substitution and split 28955 functions. Also added new function/method findall(), to find all 28956 occurrences of a given substring. 28957 28958 - In cStringIO, add better argument type checking and support the 28959 readonly 'closed' attribute (like regular files). 28960 28961 - In the struct module, unsigned 1-2 byte sized formats no longer 28962 result in long integer values. 28963 28964 Miscellaneous services 28965 ---------------------- 28966 28967 - In whrandom.py, added new method and function randrange(), same as 28968 choice(range(start, stop, step)) but faster. This addresses the 28969 problem that randint() was accidentally defined as taking an inclusive 28970 range. Also, randint(a, b) is now redefined as randrange(a, b+1), 28971 adding extra range and type checking to its arguments! 28972 28973 - Add some semi-thread-safety to random.gauss() (it used to be able to 28974 crash when invoked from separate threads; now the worst it can do is 28975 give a duplicate result occasionally). 28976 28977 - Some restructuring and generalization done to cmd.py. 28978 28979 - Major upgrade to ConfigParser.py; converted to using 're', added new 28980 exceptions, support underscore in section header and option name. No 28981 longer add 'name' option to every section; instead, add '__name__'. 28982 28983 - In getpass.py, don't use raw_input() to ask for the password -- we 28984 don't want it to show up in the readline history! Also don't catch 28985 interrupts (the try-finally already does all necessary cleanup). 28986 28987 Generic OS Services 28988 ------------------- 28989 28990 - New functions in os.py: makedirs(), removedirs(), renames(). New 28991 variable: linesep (the line separator as found in binary files, 28992 i.e. '\n' on Unix, '\r\n' on DOS/Windows, '\r' on Mac. Do *not* use 28993 this with files opened in (default) text mode; the line separator used 28994 will always be '\n'! 28995 28996 - Changes to the 'os.path' submodule of os.py: added getsize(), 28997 getmtime(), getatime() -- these fetch the most popular items from the 28998 stat return tuple. 28999 29000 - In the time module, add strptime(), if it exists. (This parses a 29001 time according to a format -- the inverse of strftime().) Also, 29002 remove the call to mktime() from strftime() -- it messed up the 29003 formatting of some non-local times. 29004 29005 - In the socket module, added a new function gethostbyname_ex(). 29006 Also, don't use #ifdef to test for some symbols that are enums on some 29007 platforms (and should exist everywhere). 29008 29009 Optional OS Services 29010 -------------------- 29011 29012 - Some fixes to gzip.py. In particular, the readlines() method now 29013 returns the lines *with* trailing newline characters, like readlines() 29014 of regular file objects. Also, it didn't work together with cPickle; 29015 fixed that. 29016 29017 - In whichdb.py, support byte-swapped dbhash (bsddb) files. 29018 29019 - In anydbm.py, look at the type of an existing database to determine 29020 which module to use to open it. (The anydbm.error exception is now a 29021 tuple.) 29022 29023 Unix Services 29024 ------------- 29025 29026 - In the termios module, in tcsetattr(), initialize the structure vy 29027 calling tcgetattr(). 29028 29029 - Added some of the "wait status inspection" macros as functions to 29030 the posix module (and thus to the os module): WEXITSTATUS(), 29031 WIFEXITED(), WIFSIGNALED(), WIFSTOPPED(), WSTOPSIG(), WTERMSIG(). 29032 29033 - In the syslog module, make the default facility more intuitive 29034 (matching the docs). 29035 29036 Debugger 29037 -------- 29038 29039 - In pdb.py, support for setting breaks on files/modules that haven't 29040 been loaded yet. 29041 29042 Internet Protocols and Support 29043 ------------------------------ 29044 29045 - Changes in urllib.py; sped up unquote() and quote(). Fixed an 29046 obscure bug in quote_plus(). Added urlencode(dict) -- convenience 29047 function for sending a POST request with urlopen(). Use the getpass 29048 module to ask for a password. Rewrote the (test) main program so that 29049 when used as a script, it can retrieve one or more URLs to stdout. 29050 Use -t to run the self-test. Made the proxy code work again. 29051 29052 - In cgi.py, treat "HEAD" the same as "GET", so that CGI scripts don't 29053 fail when someone asks for their HEAD. Also, for POST, set the 29054 default content-type to application/x-www-form-urlencoded. Also, in 29055 FieldStorage.__init__(), when method='GET', always get the query 29056 string from environ['QUERY_STRING'] or sys.argv[1] -- ignore an 29057 explicitly passed in fp. 29058 29059 - The smtplib.py module now supports ESMTP and has improved standard 29060 compliance, for picky servers. 29061 29062 - Improved imaplib.py. 29063 29064 - Fixed UDP support in SocketServer.py (it never worked). 29065 29066 - Fixed a small bug in CGIHTTPServer.py. 29067 29068 Internet Data handling 29069 ---------------------- 29070 29071 - In rfc822.py, add a new class AddressList. Also support a new 29072 overridable method, isheader(). Also add a get() method similar to 29073 dictionaries (and make getheader() an alias for it). Also, be smarter 29074 about seekable (test whether fp.tell() works) and test for presence of 29075 unread() method before trying seeks. 29076 29077 - In sgmllib.py, restore the call to report_unbalanced() that was lost 29078 long ago. Also some other improvements: handle <? processing 29079 instructions >, allow . and - in entity names, and allow \r\n as line 29080 separator. 29081 29082 - Some restructuring and generalization done to multifile.py; support 29083 a 'seekable' flag. 29084 29085 Restricted Execution 29086 -------------------- 29087 29088 - Improvements to rexec.py: package support; support a (minimal) 29089 sys.exc_info(). Also made the (test) main program a bit fancier (you 29090 can now use it to run arbitrary Python scripts in restricted mode). 29091 29092 Tkinter 29093 ------- 29094 29095 - On Unix, Tkinter can now safely be used from a multi-threaded 29096 application. (Formerly, no threads would make progress while 29097 Tkinter's mainloop() was active, because it didn't release the Python 29098 interpreter lock.) Unfortunately, on Windows, threads other than the 29099 main thread should not call update() or update_idletasks() because 29100 this will deadlock the application. 29101 29102 - An interactive interpreter that uses readline and Tkinter no longer 29103 uses up all available CPU time. 29104 29105 - Even if readline is not used, Tk windows created in an interactive 29106 interpreter now get continuously updated. (This even works in Windows 29107 as long as you don't hit a key.) 29108 29109 - New demos in Demo/tkinter/guido/: brownian.py, redemo.py, switch.py. 29110 29111 - No longer register Tcl_finalize() as a low-level exit handler. It 29112 may call back into Python, and that's a bad idea. 29113 29114 - Allow binding of Tcl commands (given as a string). 29115 29116 - Some minor speedups; replace explicitly coded getint() with int() in 29117 most places. 29118 29119 - In FileDialog.py, remember the directory of the selected file, if 29120 given. 29121 29122 - Change the names of all methods in the Wm class: they are now 29123 wm_title(), etc. The old names (title() etc.) are still defined as 29124 aliases. 29125 29126 - Add a new method of interpreter objects, interpaddr(). This returns 29127 the address of the Tcl interpreter object, as an integer. Not very 29128 useful for the Python programmer, but this can be called by another C 29129 extension that needs to make calls into the Tcl/Tk C API and needs to 29130 get the address of the Tcl interpreter object. A simple cast of the 29131 return value to (Tcl_Interp *) will do the trick. 29132 29133 Windows General 29134 --------------- 29135 29136 - Don't insist on proper case for module source files if the filename 29137 is all uppercase (e.g. FOO.PY now matches foo; but FOO.py still 29138 doesn't). This should address problems with this feature on 29139 oldfashioned filesystems (Novell servers?). 29140 29141 Windows Library 29142 --------------- 29143 29144 - os.environ is now all uppercase, but accesses are case insensitive, 29145 and the putenv() calls made as a side effect of changing os.environ 29146 are case preserving. 29147 29148 - Removed samefile(), sameopenfile(), samestat() from os.path (aka 29149 ntpath.py) -- these cannot be made to work reliably (at least I 29150 wouldn't know how). 29151 29152 - Fixed os.pipe() so that it returns file descriptors acceptable to 29153 os.read() and os.write() (like it does on Unix), rather than Windows 29154 file handles. 29155 29156 - Added a table of WSA error codes to socket.py. 29157 29158 - In the select module, put the (huge) file descriptor arrays on the 29159 heap. 29160 29161 - The getpass module now raises KeyboardInterrupt when it sees ^C. 29162 29163 - In mailbox.py, fix tell/seek when using files opened in text mode. 29164 29165 - In rfc822.py, fix tell/seek when using files opened in text mode. 29166 29167 - In the msvcrt extension module, release the interpreter lock for 29168 calls that may block: _locking(), _getch(), _getche(). Also fix a 29169 bogus error return when open_osfhandle() doesn't have the right 29170 argument list. 29171 29172 Windows Installer 29173 ----------------- 29174 29175 - The registry key used is now "1.5" instead of "1.5.x" -- so future 29176 versions of 1.5 and Mark Hammond's win32all installer don't need to be 29177 resynchronized. 29178 29179 Windows Tools 29180 ------------- 29181 29182 - Several improvements to freeze specifically for Windows. 29183 29184 Windows Build Procedure 29185 ----------------------- 29186 29187 - The VC++ project files and the WISE installer have been moved to the 29188 PCbuild subdirectory, so they are distributed in the same subdirectory 29189 where they must be used. This avoids confusion. 29190 29191 - New project files for Windows 3.1 port by Jim Ahlstrom. 29192 29193 - Got rid of the obsolete subdirectory PC/setup_nt/. 29194 29195 - The projects now use distinct filenames for the .exe, .dll, .lib and 29196 .pyd files built in debug mode (by appending "_d" to the base name, 29197 before the extension). This makes it easier to switch between the two 29198 and get the right versions. There's a pragma in config.h that directs 29199 the linker to include the appropriate .lib file (so python15.lib no 29200 longer needs to be explicit in your project). 29201 29202 - The installer now installs more files (e.g. config.h). The idea is 29203 that you shouldn't need the source distribution if you want build your 29204 own extensions in C or C++. 29205 29206 Tools and Demos 29207 --------------- 29208 29209 - New script nm2def.py by Marc-Andre Lemburg, to construct 29210 PC/python_nt.def automatically (some hand editing still required). 29211 29212 - New tool ndiff.py: Tim Peters' text diffing tool. 29213 29214 - Various and sundry improvements to the freeze script. 29215 29216 - The script texi2html.py (which was part of the Doc tree but is no 29217 longer used there) has been moved to the Tools/scripts subdirectory. 29218 29219 - Some generalizations in the webchecker code. There's now a 29220 primnitive gui for websucker.py: wsgui.py. (In Tools/webchecker/.) 29221 29222 - The ftpmirror.py script now handles symbolic links properly, and 29223 also files with multiple spaces in their names. 29224 29225 - The 1.5.1 tabnanny.py suffers an assert error if fed a script whose 29226 last line is both indented and lacks a newline. This is now fixed. 29227 29228 Python/C API 29229 ------------ 29230 29231 - Added missing prototypes for PyEval_CallFunction() and 29232 PyEval_CallMethod(). 29233 29234 - New macro PyList_SET_ITEM(). 29235 29236 - New macros to access object members for PyFunction, PyCFunction 29237 objects. 29238 29239 - New APIs PyImport_AppendInittab() and PyImport_ExtendInittab() to 29240 dynamically add one or many entries to the table of built-in modules. 29241 29242 - New macro Py_InitModule3(name, methods, doc) which calls 29243 Py_InitModule4() with appropriate arguments. (The -4 variant requires 29244 you to pass an obscure version number constant which is always the same.) 29245 29246 - New APIs PySys_WriteStdout() and PySys_WriteStderr() to write to 29247 sys.stdout or sys.stderr using a printf-like interface. (Used in 29248 _tkinter.c, for example.) 29249 29250 - New APIs for conversion between Python longs and C 'long long' if 29251 your compiler supports it. 29252 29253 - PySequence_In() is now called PySequence_Contains(). 29254 (PySequence_In() is still supported for b/w compatibility; it is 29255 declared obsolete because its argument order is confusing.) 29256 29257 - PyDict_GetItem() and PyDict_GetItemString() are changed so that they 29258 *never* raise an exception -- (even if the hash() fails, simply clear 29259 the error). This was necessary because there is lots of code out 29260 there that already assumes this. 29261 29262 - Changes to PySequence_Tuple() and PySequence_List() to use the 29263 length of a sequence only as a hint -- if an IndexError happens 29264 earlier, take that. (Formerly, this was considered an error.) 29265 29266 - Reformatted abstract.c to give it a more familiar "look" and fixed 29267 many error checking bugs. 29268 29269 - Add NULL pointer checks to all calls of a C function through a type 29270 object and extensions (e.g. nb_add). 29271 29272 - The code that initializes sys.path now calls Py_GetPythonHome() 29273 instead of getenv("PYTHONHOME"). This, together with the new API 29274 Py_SetPythonHome(), makes it easier for embedding applications to 29275 change the notion of Python's "home" directory (where the libraries 29276 etc. are sought). 29277 29278 - Fixed a very old bug in the parsing of "O?" format specifiers. 29279 29280 29281 ====================================================================== 29282 29283 29284 ======================================== 29285 ==> Release 1.5.1 (October 31, 1998) <== 29286 ======================================== 29287 29288 From 1.5 to 1.5.1 29289 ================= 29290 29291 General 29292 ------- 29293 29294 - The documentation is now unbundled. It has also been extensively 29295 modified (mostly to implement a new and more uniform formatting 29296 style). We figure that most people will prefer to download one of the 29297 preformatted documentation sets (HTML, PostScript or PDF) and that 29298 only a minority have a need for the LaTeX or FrameMaker sources. Of 29299 course, the unbundled documentation sources still released -- just not 29300 in the same archive file, and perhaps not on the same date. 29301 29302 - All bugs noted on the errors page (and many unnoted) are fixed. All 29303 new bugs take their places. 29304 29305 - No longer a core dump when attempting to print (or repr(), or str()) 29306 a list or dictionary that contains an instance of itself; instead, the 29307 recursive entry is printed as [...] or {...}. See Py_ReprEnter() and 29308 Py_ReprLeave() below. Comparisons of such objects still go beserk, 29309 since this requires a different kind of fix; fortunately, this is a 29310 less common scenario in practice. 29311 29312 Syntax change 29313 ------------- 29314 29315 - The raise statement can now be used without arguments, to re-raise 29316 a previously set exception. This should be used after catching an 29317 exception with an except clause only, either in the except clause or 29318 later in the same function. 29319 29320 Import and module handling 29321 -------------------------- 29322 29323 - The implementation of import has changed to use a mutex (when 29324 threading is supported). This means that when two threads 29325 simultaneously import the same module, the import statements are 29326 serialized. Recursive imports are not affected. 29327 29328 - Rewrote the finalization code almost completely, to be much more 29329 careful with the order in which modules are destroyed. Destructors 29330 will now generally be able to reference built-in names such as None 29331 without trouble. 29332 29333 - Case-insensitive platforms such as Mac and Windows require the case 29334 of a module's filename to match the case of the module name as 29335 specified in the import statement (see below). 29336 29337 - The code for figuring out the default path now distinguishes between 29338 files, modules, executable files, and directories. When expecting a 29339 module, we also look for the .pyc or .pyo file. 29340 29341 Parser/tokenizer changes 29342 ------------------------ 29343 29344 - The tokenizer can now warn you when your source code mixes tabs and 29345 spaces for indentation in a manner that depends on how much a tab is 29346 worth in spaces. Use "python -t" or "python -v" to enable this 29347 option. Use "python -tt" to turn the warnings into errors. (See also 29348 tabnanny.py and tabpolice.py below.) 29349 29350 - Return unsigned characters from tok_nextc(), so '\377' isn't 29351 mistaken for an EOF character. 29352 29353 - Fixed two pernicious bugs in the tokenizer that only affected AIX. 29354 One was actually a general bug that was triggered by AIX's smaller I/O 29355 buffer size. The other was a bug in the AIX optimizer's loop 29356 unrolling code; swapping two statements made the problem go away. 29357 29358 Tools, demos and miscellaneous files 29359 ------------------------------------ 29360 29361 - There's a new version of Misc/python-mode.el (the Emacs mode for 29362 Python) which is much smarter about guessing the indentation style 29363 used in a particular file. Lots of other cool features too! 29364 29365 - There are two new tools in Tools/scripts: tabnanny.py and 29366 tabpolice.py, implementing two different ways of checking whether a 29367 file uses indentation in a way that is sensitive to the interpretation 29368 of a tab. The preferred module is tabnanny.py (by Tim Peters). 29369 29370 - Some new demo programs: 29371 29372 Demo/tkinter/guido/paint.py -- Dave Mitchell 29373 Demo/sockets/unixserver.py -- Piet van Oostrum 29374 29375 29376 - Much better freeze support. The freeze script can now freeze 29377 hierarchical module names (with a corresponding change to import.c), 29378 and has a few extra options (e.g. to suppress freezing specific 29379 modules). It also does much more on Windows NT. 29380 29381 - Version 1.0 of the faq wizard is included (only very small changes 29382 since version 0.9.0). 29383 29384 - New feature for the ftpmirror script: when removing local files 29385 (i.e., only when -r is used), do a recursive delete. 29386 29387 Configuring and building Python 29388 ------------------------------- 29389 29390 - Get rid of the check for -linet -- recent Sequent Dynix systems don't 29391 need this any more and apparently it screws up their configuration. 29392 29393 - Some changes because gcc on SGI doesn't support '-all'. 29394 29395 - Changed the build rules to use $(LIBRARY) instead of 29396 -L.. -lpython$(VERSION) 29397 since the latter trips up the SunOS 4.1.x linker (sigh). 29398 29399 - Fix the bug where the '# dgux is broken' comment in the Makefile 29400 tripped over Make on some platforms. 29401 29402 - Changes for AIX: install the python.exp file; properly use 29403 $(srcdir); the makexp_aix script now removes C++ entries of the form 29404 Class::method. 29405 29406 - Deleted some Makefile targets only used by the (long obsolete) 29407 gMakefile hacks. 29408 29409 Extension modules 29410 ----------------- 29411 29412 - Performance and threading improvements to the socket and bsddb 29413 modules, by Christopher Lindblad of Infoseek. 29414 29415 - Added operator.__not__ and operator.not_. 29416 29417 - In the thread module, when a thread exits due to an unhandled 29418 exception, don't store the exception information in sys.last_*; it 29419 prevents proper calling of destructors of local variables. 29420 29421 - Fixed a number of small bugs in the cPickle module. 29422 29423 - Changed find() and rfind() in the strop module so that 29424 find("x","",2) returns -1, matching the implementation in string.py. 29425 29426 - In the time module, be more careful with the result of ctime(), and 29427 test for HAVE_MKTIME before usinmg mktime(). 29428 29429 - Doc strings contributed by Mitch Chapman to the termios, pwd, gdbm 29430 modules. 29431 29432 - Added the LOG_SYSLOG constant to the syslog module, if defined. 29433 29434 Standard library modules 29435 ------------------------ 29436 29437 - All standard library modules have been converted to an indentation 29438 style using either only tabs or only spaces -- never a mixture -- if 29439 they weren't already consistent according to tabnanny. This means 29440 that the new -t option (see above) won't complain about standard 29441 library modules. 29442 29443 - New standard library modules: 29444 29445 threading -- GvR and the thread-sig 29446 Java style thread objects -- USE THIS!!! 29447 29448 getpass -- Piers Lauder 29449 simple utilities to prompt for a password and to 29450 retrieve the current username 29451 29452 imaplib -- Piers Lauder 29453 interface for the IMAP4 protocol 29454 29455 poplib -- David Ascher, Piers Lauder 29456 interface for the POP3 protocol 29457 29458 smtplib -- Dragon De Monsyne 29459 interface for the SMTP protocol 29460 29461 - Some obsolete modules moved to a separate directory (Lib/lib-old) 29462 which is *not* in the default module search path: 29463 29464 Para 29465 addpack 29466 codehack 29467 fmt 29468 lockfile 29469 newdir 29470 ni 29471 rand 29472 tb 29473 29474 - New version of the PCRE code (Perl Compatible Regular Expressions -- 29475 the re module and the supporting pcre extension) by Andrew Kuchling. 29476 Incompatible new feature in re.sub(): the handling of escapes in the 29477 replacement string has changed. 29478 29479 - Interface change in the copy module: a __deepcopy__ method is now 29480 called with the memo dictionary as an argument. 29481 29482 - Feature change in the tokenize module: differentiate between NEWLINE 29483 token (an official newline) and NL token (a newline that the grammar 29484 ignores). 29485 29486 - Several bugfixes to the urllib module. It is now truly thread-safe, 29487 and several bugs and a portability problem have been fixed. New 29488 features, all due to Sjoerd Mullender: When creating a temporary file, 29489 it gives it an appropriate suffix. Support the "data:" URL scheme. 29490 The open() method uses the tempcache. 29491 29492 - New version of the xmllib module (this time with a test suite!) by 29493 Sjoerd Mullender. 29494 29495 - Added debugging code to the telnetlib module, to be able to trace 29496 the actual traffic. 29497 29498 - In the rfc822 module, added support for deleting a header (still no 29499 support for adding headers, though). Also fixed a bug where an 29500 illegal address would cause a crash in getrouteaddr(), fixed a 29501 sign reversal in mktime_tz(), and use the local timezone by default 29502 (the latter two due to Bill van Melle). 29503 29504 - The normpath() function in the dospath and ntpath modules no longer 29505 does case normalization -- for that, use the separate function 29506 normcase() (which always existed); normcase() has been sped up and 29507 fixed (it was the cause of a crash in Mark Hammond's installer in 29508 certain locales). 29509 29510 - New command supported by the ftplib module: rmd(); also fixed some 29511 minor bugs. 29512 29513 - The profile module now uses a different timer function by default -- 29514 time.clock() is generally better than os.times(). This makes it work 29515 better on Windows NT, too. 29516 29517 - The tempfile module now recovers when os.getcwd() raises an 29518 exception. 29519 29520 - Fixed some bugs in the random module; gauss() was subtly wrong, and 29521 vonmisesvariate() should return a full circle. Courtesy Mike Miller, 29522 Lambert Meertens (gauss()), and Magnus Kessler (vonmisesvariate()). 29523 29524 - Better default seed in the whrandom module, courtesy Andrew Kuchling. 29525 29526 - Fix slow close() in shelve module. 29527 29528 - The Unix mailbox class in the mailbox module is now more robust when 29529 a line begins with the string "From " but is definitely not the start 29530 of a new message. The pattern used can be changed by overriding a 29531 method or class variable. 29532 29533 - Added a rmtree() function to the copy module. 29534 29535 - Fixed several typos in the pickle module. Also fixed problems when 29536 unpickling in restricted execution environments. 29537 29538 - Added docstrings and fixed a typo in the py_compile and compileall 29539 modules. At Mark Hammond's repeated request, py_compile now append a 29540 newline to the source if it needs one. Both modules support an extra 29541 parameter to specify the purported source filename (to be used in 29542 error messages). 29543 29544 - Some performance tweaks by Jeremy Hylton to the gzip module. 29545 29546 - Fixed a bug in the merge order of dictionaries in the ConfigParser 29547 module. Courtesy Barry Warsaw. 29548 29549 - In the multifile module, support the optional second parameter to 29550 seek() when possible. 29551 29552 - Several fixes to the gopherlib module by Lars Marius Garshol. Also, 29553 urlparse now correctly handles Gopher URLs with query strings. 29554 29555 - Fixed a tiny bug in format_exception() in the traceback module. 29556 Also rewrite tb_lineno() to be compatible with JPython (and not 29557 disturb the current exception!); by Jim Hugunin. 29558 29559 - The httplib module is more robust when servers send a short response 29560 -- courtesy Tim O'Malley. 29561 29562 Tkinter and friends 29563 ------------------- 29564 29565 - Various typos and bugs fixed. 29566 29567 - New module Tkdnd implements a drag-and-drop protocol (within one 29568 application only). 29569 29570 - The event_*() widget methods have been restructured slightly -- they 29571 no longer use the default root. 29572 29573 - The interfaces for the bind*() and unbind() widget methods have been 29574 redesigned; the bind*() methods now return the name of the Tcl command 29575 created for the callback, and this can be passed as an optional 29576 argument to unbind() in order to delete the command (normally, such 29577 commands are automatically unbound when the widget is destroyed, but 29578 for some applications this isn't enough). 29579 29580 - Variable objects now have trace methods to interface to Tcl's 29581 variable tracing facilities. 29582 29583 - Image objects now have an optional keyword argument, 'master', to 29584 specify a widget (tree) to which they belong. The image_names() and 29585 image_types() calls are now also widget methods. 29586 29587 - There's a new global call, Tkinter.NoDefaultRoot(), which disables 29588 all use of the default root by the Tkinter library. This is useful to 29589 debug applications that are in the process of being converted from 29590 relying on the default root to explicit specification of the root 29591 widget. 29592 29593 - The 'exit' command is deleted from the Tcl interpreter, since it 29594 provided a loophole by which one could (accidentally) exit the Python 29595 interpreter without invoking any cleanup code. 29596 29597 - Tcl_Finalize() is now registered as a Python low-level exit handle, 29598 so Tcl will be finalized when Python exits. 29599 29600 The Python/C API 29601 ---------------- 29602 29603 - New function PyThreadState_GetDict() returns a per-thread dictionary 29604 intended for storing thread-local global variables. 29605 29606 - New functions Py_ReprEnter() and Py_ReprLeave() use the per-thread 29607 dictionary to allow recursive container types to detect recursion in 29608 their repr(), str() and print implementations. 29609 29610 - New function PyObject_Not(x) calculates (not x) according to Python's 29611 standard rules (basically, it negates the outcome PyObject_IsTrue(x). 29612 29613 - New function _PyModule_Clear(), which clears a module's dictionary 29614 carefully without removing the __builtins__ entry. This is implied 29615 when a module object is deallocated (this used to clear the dictionary 29616 completely). 29617 29618 - New function PyImport_ExecCodeModuleEx(), which extends 29619 PyImport_ExecCodeModule() by adding an extra parameter to pass it the 29620 true file. 29621 29622 - New functions Py_GetPythonHome() and Py_SetPythonHome(), intended to 29623 allow embedded applications to force a different value for PYTHONHOME. 29624 29625 - New global flag Py_FrozenFlag is set when this is a "frozen" Python 29626 binary; it suppresses warnings about not being able to find the 29627 standard library directories. 29628 29629 - New global flag Py_TabcheckFlag is incremented by the -t option and 29630 causes the tokenizer to issue warnings or errors about inconsistent 29631 mixing of tabs and spaces for indentation. 29632 29633 Miscellaneous minor changes and bug fixes 29634 ----------------------------------------- 29635 29636 - Improved the error message when an attribute of an attribute-less 29637 object is requested -- include the name of the attribute and the type 29638 of the object in the message. 29639 29640 - Sped up int(), long(), float() a bit. 29641 29642 - Fixed a bug in list.sort() that would occasionally dump core. 29643 29644 - Fixed a bug in PyNumber_Power() that caused numeric arrays to fail 29645 when taken to the real power. 29646 29647 - Fixed a number of bugs in the file reading code, at least one of 29648 which could cause a core dump on NT, and one of which would 29649 occasionally cause file.read() to return less than the full contents 29650 of the file. 29651 29652 - Performance hack by Vladimir Marangozov for stack frame creation. 29653 29654 - Make sure setvbuf() isn't used unless HAVE_SETVBUF is defined. 29655 29656 Windows 95/NT 29657 ------------- 29658 29659 - The .lib files are now part of the distribution; they are collected 29660 in the subdirectory "libs" of the installation directory. 29661 29662 - The extension modules (.pyd files) are now collected in a separate 29663 subdirectory of the installation directory named "DLLs". 29664 29665 - The case of a module's filename must now match the case of the 29666 module name as specified in the import statement. This is an 29667 experimental feature -- if it turns out to break in too many 29668 situations, it will be removed (or disabled by default) in the future. 29669 It can be disabled on a per-case basis by setting the environment 29670 variable PYTHONCASEOK (to any value). 29671 29672 29673 ====================================================================== 29674 29675 29676 ===================================== 29677 ==> Release 1.5 (January 3, 1998) <== 29678 ===================================== 29679 29680 29681 From 1.5b2 to 1.5 29682 ================= 29683 29684 - Newly documentated module: BaseHTTPServer.py, thanks to Greg Stein. 29685 29686 - Added doc strings to string.py, stropmodule.c, structmodule.c, 29687 thanks to Charles Waldman. 29688 29689 - Many nits fixed in the manuals, thanks to Fred Drake and many others 29690 (especially Rob Hooft and Andrew Kuchling). The HTML version now uses 29691 HTML markup instead of inline GIF images for tables; only two images 29692 are left (for obscure bits of math). The index of the HTML version has 29693 also been much improved. Finally, it is once again possible to 29694 generate an Emacs info file from the library manual (but I don't 29695 commit to supporting this in future versions). 29696 29697 - New module: telnetlib.py (a simple telnet client library). 29698 29699 - New tool: Tools/versioncheck/, by Jack Jansen. 29700 29701 - Ported zlibmodule.c and bsddbmodule.c to NT; The project file for MS 29702 DevStudio 5.0 now includes new subprojects to build the zlib and bsddb 29703 extension modules. 29704 29705 - Many small changes again to Tkinter.py -- mostly bugfixes and adding 29706 missing routines. Thanks to Greg McFarlane for reporting a bunch of 29707 problems and proofreading my fixes. 29708 29709 - The re module and its documentation are up to date with the latest 29710 version released to the string-sig (Dec. 22). 29711 29712 - Stop test_grp.py from failing when the /etc/group file is empty 29713 (yes, this happens!). 29714 29715 - Fix bug in integer conversion (mystrtoul.c) that caused 29716 4294967296==0 to be true! 29717 29718 - The VC++ 4.2 project file should be complete again. 29719 29720 - In tempfile.py, use a better template on NT, and add a new optional 29721 argument "suffix" with default "" to specify a specific extension for 29722 the temporary filename (needed sometimes on NT but perhaps also handy 29723 elsewhere). 29724 29725 - Fixed some bugs in the FAQ wizard, and converted it to use re 29726 instead of regex. 29727 29728 - Fixed a mysteriously undetected error in dlmodule.c (it was using a 29729 totally bogus routine name to raise an exception). 29730 29731 - Fixed bug in import.c which wasn't using the new "dos-8x3" name yet. 29732 29733 - Hopefully harmless changes to the build process to support shared 29734 libraries on DG/UX. This adds a target to create 29735 libpython$(VERSION).so; however this target is *only* for DG/UX. 29736 29737 - Fixed a bug in the new format string error checking in getargs.c. 29738 29739 - A simple fix for infinite recursion when printing __builtins__: 29740 reset '_' to None before printing and set it to the printed variable 29741 *after* printing (and only when printing is successful). 29742 29743 - Fixed lib-tk/SimpleDialog.py to keep the dialog visible even if the 29744 parent window is not (Skip Montanaro). 29745 29746 - Fixed the two most annoying problems with ftp URLs in 29747 urllib.urlopen(); an empty file now correctly raises an error, and it 29748 is no longer required to explicitly close the returned "file" object 29749 before opening another ftp URL to the same host and directory. 29750 29751 29752 ====================================================================== 29753 29754 29755 From 1.5b1 to 1.5b2 29756 =================== 29757 29758 - Fixed a bug in cPickle.c that caused it to crash right away because 29759 the version string had a different format. 29760 29761 - Changes in pickle.py and cPickle.c: when unpickling an instance of a 29762 class that doesn't define the __getinitargs__() method, the __init__() 29763 constructor is no longer called. This makes a much larger group of 29764 classes picklable by default, but may occasionally change semantics. 29765 To force calling __init__() on unpickling, define a __getinitargs__() 29766 method. Other changes too, in particular cPickle now handles classes 29767 defined in packages correctly. The same change applies to copying 29768 instances with copy.py. The cPickle.c changes and some pickle.py 29769 changes are courtesy Jim Fulton. 29770 29771 - Locale support in he "re" (Perl regular expressions) module. Use 29772 the flag re.L (or re.LOCALE) to enable locale-specific matching 29773 rules for \w and \b. The in-line syntax for this flag is (?L). 29774 29775 - The built-in function isinstance(x, y) now also succeeds when y is 29776 a type object and type(x) is y. 29777 29778 - repr() and str() of class and instance objects now reflect the 29779 package/module in which the class is defined. 29780 29781 - Module "ni" has been removed. (If you really need it, it's been 29782 renamed to "ni1". Let me know if this causes any problems for you. 29783 Package authors are encouraged to write __init__.py files that 29784 support both ni and 1.5 package support, so the same version can be 29785 used with Python 1.4 as well as 1.5.) 29786 29787 - The thread module is now automatically included when threads are 29788 configured. (You must remove it from your existing Setup file, 29789 since it is now in its own Setup.thread file.) 29790 29791 - New command line option "-x" to skip the first line of the script; 29792 handy to make executable scripts on non-Unix platforms. 29793 29794 - In importdl.c, add the RTLD_GLOBAL to the dlopen() flags. I 29795 haven't checked how this affects things, but it should make symbols 29796 in one shared library available to the next one. 29797 29798 - The Windows installer now installs in the "Program Files" folder on 29799 the proper volume by default. 29800 29801 - The Windows configuration adds a new main program, "pythonw", and 29802 registers a new extension, ".pyw" that invokes this. This is a 29803 pstandard Python interpreter that does not pop up a console window; 29804 handy for pure Tkinter applications. All output to the original 29805 stdout and stderr is lost; reading from the original stdin yields 29806 EOF. Also, both python.exe and pythonw.exe now have a pretty icon 29807 (a green snake in a box, courtesy Mark Hammond). 29808 29809 - Lots of improvements to emacs-mode.el again. See Barry's web page: 29810 http://www.python.org/ftp/emacs/pmdetails.html. 29811 29812 - Lots of improvements and additions to the library reference manual; 29813 many by Fred Drake. 29814 29815 - Doc strings for the following modules: rfc822.py, posixpath.py, 29816 ntpath.py, httplib.py. Thanks to Mitch Chapman and Charles Waldman. 29817 29818 - Some more regression testing. 29819 29820 - An optional 4th (maxsplit) argument to strop.replace(). 29821 29822 - Fixed handling of maxsplit in string.splitfields(). 29823 29824 - Tweaked os.environ so it can be pickled and copied. 29825 29826 - The portability problems caused by indented preprocessor commands 29827 and C++ style comments should be gone now. 29828 29829 - In random.py, added Pareto and Weibull distributions. 29830 29831 - The crypt module is now disabled in Modules/Setup.in by default; it 29832 is rarely needed and causes errors on some systems where users often 29833 don't know how to deal with those. 29834 29835 - Some improvements to the _tkinter build line suggested by Case Roole. 29836 29837 - A full suite of platform specific files for NetBSD 1.x, submitted by 29838 Anders Andersen. 29839 29840 - New Solaris specific header STROPTS.py. 29841 29842 - Moved a confusing occurrence of *shared* from the comments in 29843 Modules/Setup.in (people would enable this one instead of the real 29844 one, and get disappointing results). 29845 29846 - Changed the default mode for directories to be group-writable when 29847 the installation process creates them. 29848 29849 - Check for pthread support in "-l_r" for FreeBSD/NetBSD, and support 29850 shared libraries for both. 29851 29852 - Support FreeBSD and NetBSD in posixfile.py. 29853 29854 - Support for the "event" command, new in Tk 4.2. By Case Roole. 29855 29856 - Add Tix_SafeInit() support to tkappinit.c. 29857 29858 - Various bugs fixed in "re.py" and "pcre.c". 29859 29860 - Fixed a bug (broken use of the syntax table) in the old "regexpr.c". 29861 29862 - In frozenmain.c, stdin is made unbuffered too when PYTHONUNBUFFERED 29863 is set. 29864 29865 - Provide default blocksize for retrbinary in ftplib.py (Skip 29866 Montanaro). 29867 29868 - In NT, pick the username up from different places in user.py (Jeff 29869 Bauer). 29870 29871 - Patch to urlparse.urljoin() for ".." and "..#1", Marc Lemburg. 29872 29873 - Many small improvements to Jeff Rush' OS/2 support. 29874 29875 - ospath.py is gone; it's been obsolete for so many years now... 29876 29877 - The reference manual is now set up to prepare better HTML (still 29878 using webmaker, alas). 29879 29880 - Add special handling to /Tools/freeze for Python modules that are 29881 imported implicitly by the Python runtime: 'site' and 'exceptions'. 29882 29883 - Tools/faqwiz 0.8.3 -- add an option to suppress URL processing 29884 inside <PRE>, by "Scott". 29885 29886 - Added ConfigParser.py, a generic parser for sectioned configuration 29887 files. 29888 29889 - In _localemodule.c, LC_MESSAGES is not always defined; put it 29890 between #ifdefs. 29891 29892 - Typo in resource.c: RUSAGE_CHILDERN -> RUSAGE_CHILDREN. 29893 29894 - Demo/scripts/newslist.py: Fix the way the version number is gotten 29895 out of the RCS revision. 29896 29897 - PyArg_Parse[Tuple] now explicitly check for bad characters at the 29898 end of the format string. 29899 29900 - Revamped PC/example_nt to support VC++ 5.x. 29901 29902 - <listobject>.sort() now uses a modified quicksort by Raymund Galvin, 29903 after studying the GNU libg++ quicksort. This should be much faster 29904 if there are lots of duplicates, and otherwise at least as good. 29905 29906 - Added "uue" as an alias for "uuencode" to mimetools.py. (Hm, the 29907 uudecode bug where it complaints about trailing garbage is still there 29908 :-( ). 29909 29910 - pickle.py requires integers in text mode to be in decimal notation 29911 (it used to accept octal and hex, even though it would only generate 29912 decimal numbers). 29913 29914 - In string.atof(), don't fail when the "re" module is unavailable. 29915 Plug the ensuing security leak by supplying an empty __builtins__ 29916 directory to eval(). 29917 29918 - A bunch of small fixes and improvements to Tkinter.py. 29919 29920 - Fixed a buffer overrun in PC/getpathp.c. 29921 29922 29923 ====================================================================== 29924 29925 29926 From 1.5a4 to 1.5b1 29927 =================== 29928 29929 - The Windows NT/95 installer now includes full HTML of all manuals. 29930 It also has a checkbox that lets you decide whether to install the 29931 interpreter and library. The WISE installer script for the installer 29932 is included in the source tree as PC/python15.wse, and so are the 29933 icons used for Python files. The config.c file for the Windows build 29934 is now complete with the pcre module. 29935 29936 - sys.ps1 and sys.ps2 can now arbitrary objects; their str() is 29937 evaluated for the prompt. 29938 29939 - The reference manual is brought up to date (more or less -- it still 29940 needs work, e.g. in the area of package import). 29941 29942 - The icons used by latex2html are now included in the Doc 29943 subdirectory (mostly so that tarring up the HTML files can be fully 29944 automated). A simple index.html is also added to Doc (it only works 29945 after you have successfully run latex2html). 29946 29947 - For all you would-be proselytizers out there: a new version of 29948 Misc/BLURB describes Python more concisely, and Misc/comparisons 29949 compares Python to several other languages. Misc/BLURB.WINDOWS 29950 contains a blurb specifically aimed at Windows programmers (by Mark 29951 Hammond). 29952 29953 - A new version of the Python mode for Emacs is included as 29954 Misc/python-mode.el. There are too many new features to list here. 29955 See http://www.python.org/ftp/emacs/pmdetails.html for more info. 29956 29957 - New module fileinput makes iterating over the lines of a list of 29958 files easier. (This still needs some more thinking to make it more 29959 extensible.) 29960 29961 - There's full OS/2 support, courtesy Jeff Rush. To build the OS/2 29962 version, see PC/readme.txt and PC/os2vacpp. This is for IBM's Visual 29963 Age C++ compiler. I expect that Jeff will also provide a binary 29964 release for this platform. 29965 29966 - On Linux, the configure script now uses '-Xlinker -export-dynamic' 29967 instead of '-rdynamic' to link the main program so that it exports its 29968 symbols to shared libraries it loads dynamically. I hope this doesn't 29969 break on older Linux versions; it is needed for mklinux and appears to 29970 work on Linux 2.0.30. 29971 29972 - Some Tkinter resstructuring: the geometry methods that apply to a 29973 master are now properly usable on toplevel master widgets. There's a 29974 new (internal) widget class, BaseWidget. New, longer "official" names 29975 for the geometry manager methods have been added, 29976 e.g. "grid_columnconfigure()" instead of "columnconfigure()". The old 29977 shorter names still work, and where there's ambiguity, pack wins over 29978 place wins over grid. Also, the bind_class method now returns its 29979 value. 29980 29981 - New, RFC-822 conformant parsing of email addresses and address lists 29982 in the rfc822 module, courtesy Ben Escoto. 29983 29984 - New, revamped tkappinit.c with support for popular packages (PIL, 29985 TIX, BLT, TOGL). For the last three, you need to execute the Tcl 29986 command "load {} Tix" (or Blt, or Togl) to gain access to them. 29987 The Modules/Setup line for the _tkinter module has been rewritten 29988 using the cool line-breaking feature of most Bourne shells. 29989 29990 - New socket method connect_ex() returns the error code from connect() 29991 instead of raising an exception on errors; this makes the logic 29992 required for asynchronous connects simpler and more efficient. 29993 29994 - New "locale" module with (still experimental) interface to the 29995 standard C library locale interface, courtesy Martin von Lwis. This 29996 does not repeat my mistake in 1.5a4 of always calling 29997 setlocale(LC_ALL, ""). In fact, we've pretty much decided that 29998 Python's standard numerical formatting operations should always use 29999 the conventions for the C locale; the locale module contains utility 30000 functions to format numbers according to the user specified locale. 30001 (All this is accomplished by an explicit call to setlocale(LC_NUMERIC, 30002 "C") after locale-changing calls.) See the library manual. (Alas, the 30003 promised changes to the "re" module for locale support have not been 30004 materialized yet. If you care, volunteer!) 30005 30006 - Memory leak plugged in Py_BuildValue when building a dictionary. 30007 30008 - Shared modules can now live inside packages (hierarchical module 30009 namespaces). No changes to the shared module itself are needed. 30010 30011 - Improved policy for __builtins__: this is a module in __main__ and a 30012 dictionary everywhere else. 30013 30014 - Python no longer catches SIGHUP and SIGTERM by default. This was 30015 impossible to get right in the light of thread contexts. If you want 30016 your program to clean up when a signal happens, use the signal module 30017 to set up your own signal handler. 30018 30019 - New Python/C API PyNumber_CoerceEx() does not return an exception 30020 when no coercion is possible. This is used to fix a problem where 30021 comparing incompatible numbers for equality would raise an exception 30022 rather than return false as in Python 1.4 -- it once again will return 30023 false. 30024 30025 - The errno module is changed again -- the table of error messages 30026 (errorstr) is removed. Instead, you can use os.strerror(). This 30027 removes redundance and a potential locale dependency. 30028 30029 - New module xmllib, to parse XML files. By Sjoerd Mullender. 30030 30031 - New C API PyOS_AfterFork() is called after fork() in posixmodule.c. 30032 It resets the signal module's notion of what the current process ID 30033 and thread are, so that signal handlers will work after (and across) 30034 calls to os.fork(). 30035 30036 - Fixed most occurrences of fatal errors due to missing thread state. 30037 30038 - For vgrind (a flexible source pretty printer) fans, there's a simple 30039 Python definition in Misc/vgrindefs, courtesy Neale Pickett. 30040 30041 - Fixed memory leak in exec statement. 30042 30043 - The test.pystone module has a new function, pystones(loops=LOOPS), 30044 which returns a (benchtime, stones) tuple. The main() function now 30045 calls this and prints the report. 30046 30047 - Package directories now *require* the presence of an __init__.py (or 30048 __init__.pyc) file before they are considered as packages. This is 30049 done to prevent accidental subdirectories with common names from 30050 overriding modules with the same name. 30051 30052 - Fixed some strange exceptions in __del__ methods in library modules 30053 (e.g. urllib). This happens because the built-in names are already 30054 deleted by the time __del__ is called. The solution (a hack, but it 30055 works) is to set some instance variables to 0 instead of None. 30056 30057 - The table of built-in module initializers is replaced by a pointer 30058 variable. This makes it possible to switch to a different table at 30059 run time, e.g. when a collection of modules is loaded from a shared 30060 library. (No example code of how to do this is given, but it is 30061 possible.) The table is still there of course, its name prefixed with 30062 an underscore and used to initialize the pointer. 30063 30064 - The warning about a thread still having a frame now only happens in 30065 verbose mode. 30066 30067 - Change the signal finalization so that it also resets the signal 30068 handlers. After this has been called, our signal handlers are no 30069 longer active! 30070 30071 - New version of tokenize.py (by Ka-Ping Yee) recognizes raw string 30072 literals. There's now also a test fort this module. 30073 30074 - The copy module now also uses __dict__.update(state) instead of 30075 going through individual attribute assignments, for class instances 30076 without a __setstate__ method. 30077 30078 - New module reconvert translates old-style (regex module) regular 30079 expressions to new-style (re module, Perl-style) regular expressions. 30080 30081 - Most modules that used to use the regex module now use the re 30082 module. The grep module has a new pgrep() function which uses 30083 Perl-style regular expressions. 30084 30085 - The (very old, backwards compatibility) regexp.py module has been 30086 deleted. 30087 30088 - Restricted execution (rexec): added the pcre module (support for the 30089 re module) to the list of trusted extension modules. 30090 30091 - New version of Jim Fulton's CObject object type, adds 30092 PyCObject_FromVoidPtrAndDesc() and PyCObject_GetDesc() APIs. 30093 30094 - Some patches to Lee Busby's fpectl mods that accidentally didn't 30095 make it into 1.5a4. 30096 30097 - In the string module, add an optional 4th argument to count(), 30098 matching find() etc. 30099 30100 - Patch for the nntplib module by Charles Waldman to add optional user 30101 and password arguments to NNTP.__init__(), for nntp servers that need 30102 them. 30103 30104 - The str() function for class objects now returns 30105 "modulename.classname" instead of returning the same as repr(). 30106 30107 - The parsing of \xXX escapes no longer relies on sscanf(). 30108 30109 - The "sharedmodules" subdirectory of the installation is renamed to 30110 "lib-dynload". (You may have to edit your Modules/Setup file to fix 30111 this in an existing installation!) 30112 30113 - Fixed Don Beaudry's mess-up with the OPT test in the configure 30114 script. Certain SGI platforms will still issue a warning for each 30115 compile; there's not much I can do about this since the compiler's 30116 exit status doesn't indicate that I was using an obsolete option. 30117 30118 - Fixed Barry's mess-up with {}.get(), and added test cases for it. 30119 30120 - Shared libraries didn't quite work under AIX because of the change 30121 in status of the GNU readline interface. Fix due to by Vladimir 30122 Marangozov. 30123 30124 30125 ====================================================================== 30126 30127 30128 From 1.5a3 to 1.5a4 30129 =================== 30130 30131 - faqwiz.py: version 0.8; Recognize https:// as URL; <html>...</html> 30132 feature; better install instructions; removed faqmain.py (which was an 30133 older version). 30134 30135 - nntplib.py: Fixed some bugs reported by Lars Wirzenius (to Debian) 30136 about the treatment of lines starting with '.'. Added a minimal test 30137 function. 30138 30139 - struct module: ignore most whitespace in format strings. 30140 30141 - urllib.py: close the socket and temp file in URLopener.retrieve() so 30142 that multiple retrievals using the same connection work. 30143 30144 - All standard exceptions are now classes by default; use -X to make 30145 them strings (for backward compatibility only). 30146 30147 - There's a new standard exception hierarchy, defined in the standard 30148 library module exceptions.py (which you never need to import 30149 explicitly). See 30150 http://grail.cnri.reston.va.us/python/essays/stdexceptions.html for 30151 more info. 30152 30153 - Three new C API functions: 30154 30155 - int PyErr_GivenExceptionMatches(obj1, obj2) 30156 30157 Returns 1 if obj1 and obj2 are the same object, or if obj1 is an 30158 instance of type obj2, or of a class derived from obj2 30159 30160 - int PyErr_ExceptionMatches(obj) 30161 30162 Higher level wrapper around PyErr_GivenExceptionMatches() which uses 30163 PyErr_Occurred() as obj1. This will be the more commonly called 30164 function. 30165 30166 - void PyErr_NormalizeException(typeptr, valptr, tbptr) 30167 30168 Normalizes exceptions, and places the normalized values in the 30169 arguments. If type is not a class, this does nothing. If type is a 30170 class, then it makes sure that value is an instance of the class by: 30171 30172 1. if instance is of the type, or a class derived from type, it does 30173 nothing. 30174 30175 2. otherwise it instantiates the class, using the value as an 30176 argument. If value is None, it uses an empty arg tuple, and if 30177 the value is a tuple, it uses just that. 30178 30179 - Another new C API function: PyErr_NewException() creates a new 30180 exception class derived from Exception; when -X is given, it creates a 30181 new string exception. 30182 30183 - core interpreter: remove the distinction between tuple and list 30184 unpacking; allow an arbitrary sequence on the right hand side of any 30185 unpack instruction. (UNPACK_LIST and UNPACK_TUPLE now do the same 30186 thing, which should really be called UNPACK_SEQUENCE.) 30187 30188 - classes: Allow assignments to an instance's __dict__ or __class__, 30189 so you can change ivars (including shared ivars -- shock horror) and 30190 change classes dynamically. Also make the check on read-only 30191 attributes of classes less draconic -- only the specials names 30192 __dict__, __bases__, __name__ and __{get,set,del}attr__ can't be 30193 assigned. 30194 30195 - Two new built-in functions: issubclass() and isinstance(). Both 30196 take classes as their second arguments. The former takes a class as 30197 the first argument and returns true iff first is second, or is a 30198 subclass of second. The latter takes any object as the first argument 30199 and returns true iff first is an instance of the second, or any 30200 subclass of second. 30201 30202 - configure: Added configuration tests for presence of alarm(), 30203 pause(), and getpwent(). 30204 30205 - Doc/Makefile: changed latex2html targets. 30206 30207 - classes: Reverse the search order for the Don Beaudry hook so that 30208 the first class with an applicable hook wins. Makes more sense. 30209 30210 - Changed the checks made in Py_Initialize() and Py_Finalize(). It is 30211 now legal to call these more than once. The first call to 30212 Py_Initialize() initializes, the first call to Py_Finalize() 30213 finalizes. There's also a new API, Py_IsInitialized() which checks 30214 whether we are already initialized (in case you want to leave things 30215 as they were). 30216 30217 - Completely disable the declarations for malloc(), realloc() and 30218 free(). Any 90's C compiler has these in header files, and the tests 30219 to decide whether to suppress the declarations kept failing on some 30220 platforms. 30221 30222 - *Before* (instead of after) signalmodule.o is added, remove both 30223 intrcheck.o and sigcheck.o. This should get rid of warnings in ar or 30224 ld on various systems. 30225 30226 - Added reop to PC/config.c 30227 30228 - configure: Decided to use -Aa -D_HPUX_SOURCE on HP-UX platforms. 30229 Removed outdated HP-UX comments from README. Added Cray T3E comments. 30230 30231 - Various renames of statically defined functions that had name 30232 conflicts on some systems, e.g. strndup (GNU libc), join (Cray), 30233 roundup (sys/types.h). 30234 30235 - urllib.py: Interpret three slashes in file: URL as local file (for 30236 Netscape on Windows/Mac). 30237 30238 - copy.py: Make sure the objects returned by __getinitargs__() are 30239 kept alive (in the memo) to avoid a certain kind of nasty crash. (Not 30240 easily reproducible because it requires a later call to 30241 __getinitargs__() to return a tuple that happens to be allocated at 30242 the same address.) 30243 30244 - Added definition of AR to toplevel Makefile. Renamed @buildno temp 30245 file to buildno1. 30246 30247 - Moved Include/assert.h to Parser/assert.h, which seems to be the 30248 only place where it's needed. 30249 30250 - Tweaked the dictionary lookup code again for some more speed 30251 (Vladimir Marangozov). 30252 30253 - NT build: Changed the way python15.lib is included in the other 30254 projects. Per Mark Hammond's suggestion, add it to the extra libs in 30255 Settings instead of to the project's source files. 30256 30257 - regrtest.py: Change default verbosity so that there are only three 30258 levels left: -q, default and -v. In default mode, the name of each 30259 test is now printed. -v is the same as the old -vv. -q is more quiet 30260 than the old default mode. 30261 30262 - Removed the old FAQ from the distribution. You now have to get it 30263 from the web! 30264 30265 - Removed the PC/make_nt.in file from the distribution; it is no 30266 longer needed. 30267 30268 - Changed the build sequence so that shared modules are built last. 30269 This fixes things for AIX and doesn't hurt elsewhere. 30270 30271 - Improved test for GNU MP v1 in mpzmodule.c 30272 30273 - fileobject.c: ftell() on Linux discards all buffered data; changed 30274 read() code to use lseek() instead to get the same effect 30275 30276 - configure.in, configure, importdl.c: NeXT sharedlib fixes 30277 30278 - tupleobject.c: PyTuple_SetItem asserts refcnt==1 30279 30280 - resource.c: Different strategy regarding whether to declare 30281 getrusage() and getpagesize() -- #ifdef doesn't work, Linux has 30282 conflicting decls in its headers. Choice: only declare the return 30283 type, not the argument prototype, and not on Linux. 30284 30285 - importdl.c, configure*: set sharedlib extensions properly for NeXT 30286 30287 - configure*, Makefile.in, Modules/Makefile.pre.in: AIX shared libraries 30288 fixed; moved addition of PURIFY to LINKCC to configure 30289 30290 - reopmodule.c, regexmodule.c, regexpr.c, zlibmodule.c: needed casts 30291 added to shup up various compilers. 30292 30293 - _tkinter.c: removed buggy mac #ifndef 30294 30295 - Doc: various Mac documentation changes, added docs for 'ic' module 30296 30297 - PC/make_nt.in: deleted 30298 30299 - test_time.py, test_strftime.py: tweaks to catch %Z (which may return 30300 "") 30301 30302 - test_rotor.py: print b -> print `b` 30303 30304 - Tkinter.py: (tagOrId) -> (tagOrId,) 30305 30306 - Tkinter.py: the Tk class now also has a configure() method and 30307 friends (they have been moved to the Misc class to accomplish this). 30308 30309 - dict.get(key[, default]) returns dict[key] if it exists, or default 30310 if it doesn't. The default defaults to None. This is quicker for 30311 some applications than using either has_key() or try:...except 30312 KeyError:.... 30313 30314 - Tools/webchecker/: some small changes to webchecker.py; added 30315 websucker.py (a simple web site mirroring script). 30316 30317 - Dictionary objects now have a get() method (also in UserDict.py). 30318 dict.get(key, default) returns dict[key] if it exists and default 30319 otherwise; default defaults to None. 30320 30321 - Tools/scripts/logmerge.py: print the author, too. 30322 30323 - Changes to import: support for "import a.b.c" is now built in. See 30324 http://grail.cnri.reston.va.us/python/essays/packages.html 30325 for more info. Most important deviations from "ni.py": __init__.py is 30326 executed in the package's namespace instead of as a submodule; and 30327 there's no support for "__" or "__domain__". Note that "ni.py" is not 30328 changed to match this -- it is simply declared obsolete (while at the 30329 same time, it is documented...:-( ). 30330 Unfortunately, "ihooks.py" has not been upgraded (but see "knee.py" 30331 for an example implementation of hierarchical module import written in 30332 Python). 30333 30334 - More changes to import: the site.py module is now imported by 30335 default when Python is initialized; use -S to disable it. The site.py 30336 module extends the path with several more directories: site-packages 30337 inside the lib/python1.5/ directory, site-python in the lib/ 30338 directory, and pathnames mentioned in *.pth files found in either of 30339 those directories. See 30340 http://grail.cnri.reston.va.us/python/essays/packages.html 30341 for more info. 30342 30343 - Changes to standard library subdirectory names: those subdirectories 30344 that are not packages have been renamed with a hyphen in their name, 30345 e.g. lib-tk, lib-stdwin, plat-win, plat-linux2, plat-sunos5, dos-8x3. 30346 The test suite is now a package -- to run a test, you must now use 30347 "import test.test_foo". 30348 30349 - A completely new re.py module is provided (thanks to Andrew 30350 Kuchling, Tim Peters and Jeffrey Ollie) which uses Philip Hazel's 30351 "pcre" re compiler and engine. For a while, the "old" re.py (which 30352 was new in 1.5a3!) will be kept around as re1.py. The "old" regex 30353 module and underlying parser and engine are still present -- while 30354 regex is now officially obsolete, it will probably take several major 30355 release cycles before it can be removed. 30356 30357 - The posix module now has a strerror() function which translates an 30358 error code to a string. 30359 30360 - The emacs.py module (which was long obsolete) has been removed. 30361 30362 - The universal makefile Misc/Makefile.pre.in now features an 30363 "install" target. By default, installed shared libraries go into 30364 $exec_prefix/lib/python$VERSION/site-packages/. 30365 30366 - The install-sh script is installed with the other configuration 30367 specific files (in the config/ subdirectory). 30368 30369 - It turns out whatsound.py and sndhdr.py were identical modules. 30370 Since there's also an imghdr.py file, I propose to make sndhdr.py the 30371 official one. For compatibility, whatsound.py imports * from 30372 sndhdr.py. 30373 30374 - Class objects have a new attribute, __module__, giving the name of 30375 the module in which they were declared. This is useful for pickle and 30376 for printing the full name of a class exception. 30377 30378 - Many extension modules no longer issue a fatal error when their 30379 initialization fails; the importing code now checks whether an error 30380 occurred during module initialization, and correctly propagates the 30381 exception to the import statement. 30382 30383 - Most extension modules now raise class-based exceptions (except when 30384 -X is used). 30385 30386 - Subtle changes to PyEval_{Save,Restore}Thread(): always swap the 30387 thread state -- just don't manipulate the lock if it isn't there. 30388 30389 - Fixed a bug in Python/getopt.c that made it do the wrong thing when 30390 an option was a single '-'. Thanks to Andrew Kuchling. 30391 30392 - New module mimetypes.py will guess a MIME type from a filename's 30393 extension. 30394 30395 - Windows: the DLL version is now settable via a resource rather than 30396 being hardcoded. This can be used for "branding" a binary Python 30397 distribution. 30398 30399 - urllib.py is now threadsafe -- it now uses re instead of regex, and 30400 sys.exc_info() instead of sys.exc_{type,value}. 30401 30402 - Many other library modules that used to use 30403 sys.exc_{type,value,traceback} are now more thread-safe by virtue of 30404 using sys.exc_info(). 30405 30406 - The functions in popen2 have an optional buffer size parameter. 30407 Also, the command argument can now be either a string (passed to the 30408 shell) or a list of arguments (passed directly to execv). 30409 30410 - Alas, the thread support for _tkinter released with 1.5a3 didn't 30411 work. It's been rewritten. The bad news is that it now requires a 30412 modified version of a file in the standard Tcl distribution, which you 30413 must compile with a -I option pointing to the standard Tcl source 30414 tree. For this reason, the thread support is disabled by default. 30415 30416 - The errno extension module adds two tables: errorcode maps errno 30417 numbers to errno names (e.g. EINTR), and errorstr maps them to 30418 message strings. (The latter is redundant because the new call 30419 posix.strerror() now does the same, but alla...) (Marc-Andre Lemburg) 30420 30421 - The readline extension module now provides some interfaces to 30422 internal readline routines that make it possible to write a completer 30423 in Python. An example completer, rlcompleter.py, is provided. 30424 30425 When completing a simple identifier, it completes keywords, 30426 built-ins and globals in __main__; when completing 30427 NAME.NAME..., it evaluates (!) the expression up to the last 30428 dot and completes its attributes. 30429 30430 It's very cool to do "import string" type "string.", hit the 30431 completion key (twice), and see the list of names defined by 30432 the string module! 30433 30434 Tip: to use the tab key as the completion key, call 30435 30436 readline.parse_and_bind("tab: complete") 30437 30438 - The traceback.py module has a new function tb_lineno() by Marc-Andre 30439 Lemburg which extracts the line number from the linenumber table in 30440 the code object. Apparently the traceback object doesn't contain the 30441 right linenumber when -O is used. Rather than guessing whether -O is 30442 on or off, the module itself uses tb_lineno() unconditionally. 30443 30444 - Fixed Demo/tkinter/matt/canvas-moving-or-creating.py: change bind() 30445 to tag_bind() so it works again. 30446 30447 - The pystone script is now a standard library module. Example use: 30448 "import test.pystone; test.pystone.main()". 30449 30450 - The import of the readline module in interactive mode is now also 30451 attempted when -i is specified. (Yes, I know, giving in to Marc-Andre 30452 Lemburg, who asked for this. :-) 30453 30454 - rfc822.py: Entirely rewritten parseaddr() function by Sjoerd 30455 Mullender, to be closer to the standard. This fixes the getaddr() 30456 method. Unfortunately, getaddrlist() is as broken as ever, since it 30457 splits on commas without regard for RFC 822 quoting conventions. 30458 30459 - pprint.py: correctly emit trailing "," in singleton tuples. 30460 30461 - _tkinter.c: export names for its type objects, TkappType and 30462 TkttType. 30463 30464 - pickle.py: use __module__ when defined; fix a particularly hard to 30465 reproduce bug that confuses the memo when temporary objects are 30466 returned by custom pickling interfaces; and a semantic change: when 30467 unpickling the instance variables of an instance, use 30468 inst.__dict__.update(value) instead of a for loop with setattr() over 30469 the value.keys(). This is more consistent (the pickling doesn't use 30470 getattr() either but pickles inst.__dict__) and avoids problems with 30471 instances that have a __setattr__ hook. But it *is* a semantic change 30472 (because the setattr hook is no longer used). So beware! 30473 30474 - config.h is now installed (at last) in 30475 $exec_prefix/include/python1.5/. For most sites, this means that it 30476 is actually in $prefix/include/python1.5/, with all the other Python 30477 include files, since $prefix and $exec_prefix are the same by 30478 default. 30479 30480 - The imp module now supports parts of the functionality to implement 30481 import of hierarchical module names. It now supports find_module() 30482 and load_module() for all types of modules. Docstrings have been 30483 added for those functions in the built-in imp module that are still 30484 relevant (some old interfaces are obsolete). For a sample 30485 implementation of hierarchical module import in Python, see the new 30486 library module knee.py. 30487 30488 - The % operator on string objects now allows arbitrary nested parens 30489 in a %(...)X style format. (Brad Howes) 30490 30491 - Reverse the order in which Setup and Setup.local are passed to the 30492 makesetup script. This allows variable definitions in Setup.local to 30493 override definitions in Setup. (But you'll still have to edit Setup 30494 if you want to disable modules that are enabled by default, or if such 30495 modules need non-standard options.) 30496 30497 - Added PyImport_ImportModuleEx(name, globals, locals, fromlist); this 30498 is like PyImport_ImporModule(name) but receives the globals and locals 30499 dict and the fromlist arguments as well. (The name is a char*; the 30500 others are PyObject*s). 30501 30502 - The 'p' format in the struct extension module alloded to above is 30503 new in 1.5a4. 30504 30505 - The types.py module now uses try-except in a few places to make it 30506 more likely that it can be imported in restricted mode. Some type 30507 names are undefined in that case, e.g. CodeType (inaccessible), 30508 FileType (not always accessible), and TracebackType and FrameType 30509 (inaccessible). 30510 30511 - In urllib.py: added separate administration of temporary files 30512 created y URLopener.retrieve() so cleanup() can properly remove them. 30513 The old code removed everything in tempcache which was a bad idea if 30514 the user had passed a non-temp file into it. Also, in basejoin(), 30515 interpret relative paths starting in "../". This is necessary if the 30516 server uses symbolic links. 30517 30518 - The Windows build procedure and project files are now based on 30519 Microsoft Visual C++ 5.x. The build now takes place in the PCbuild 30520 directory. It is much more robust, and properly builds separate Debug 30521 and Release versions. (The installer will be added shortly.) 30522 30523 - Added casts and changed some return types in regexpr.c to avoid 30524 compiler warnings or errors on some platforms. 30525 30526 - The AIX build tools for shared libraries now supports VPATH. (Donn 30527 Cave) 30528 30529 - By default, disable the "portable" multimedia modules audioop, 30530 imageop, and rgbimg, since they don't work on 64-bit platforms. 30531 30532 - Fixed a nasty bug in cStringIO.c when code was actually using the 30533 close() method (the destructors would try to free certain fields a 30534 second time). 30535 30536 - For those who think they need it, there's a "user.py" module. This 30537 is *not* imported by default, but can be imported to run user-specific 30538 setup commands, ~/.pythonrc.py. 30539 30540 - Various speedups suggested by Fredrik Lundh, Marc-Andre Lemburg, 30541 Vladimir Marangozov, and others. 30542 30543 - Added os.altsep; this is '/' on DOS/Windows, and None on systems 30544 with a sane filename syntax. 30545 30546 - os.py: Write out the dynamic OS choice, to avoid exec statements. 30547 Adding support for a new OS is now a bit more work, but I bet that 30548 'dos' or 'nt' will cover most situations... 30549 30550 - The obsolete exception AccessError is now really gone. 30551 30552 - Tools/faqwiz/: New installation instructions show how to maintain 30553 multiple FAQs. Removed bootstrap script from end of faqwiz.py module. 30554 Added instructions to bootstrap script, too. Version bumped to 0.8.1. 30555 Added <html>...</html> feature suggested by Skip Montanaro. Added 30556 leading text for Roulette, default to 'Hit Reload ...'. Fix typo in 30557 default SRCDIR. 30558 30559 - Documentation for the relatively new modules "keyword" and "symbol" 30560 has been added (to the end of the section on the parser extension 30561 module). 30562 30563 - In module bisect.py, but functions have two optional argument 'lo' 30564 and 'hi' which allow you to specify a subsequence of the array to 30565 operate on. 30566 30567 - In ftplib.py, changed most methods to return their status (even when 30568 it is always "200 OK") rather than swallowing it. 30569 30570 - main() now calls setlocale(LC_ALL, ""), if setlocale() and 30571 <locale.h> are defined. 30572 30573 - Changes to configure.in, the configure script, and both 30574 Makefile.pre.in files, to support SGI's SGI_ABI platform selection 30575 environment variable. 30576 30577 30578 ====================================================================== 30579 30580 30581 From 1.4 to 1.5a3 30582 ================= 30583 30584 Security 30585 -------- 30586 30587 - If you are using the setuid script C wrapper (Misc/setuid-prog.c), 30588 please use the new version. The old version has a huge security leak. 30589 30590 Miscellaneous 30591 ------------- 30592 30593 - Because of various (small) incompatible changes in the Python 30594 bytecode interpreter, the magic number for .pyc files has changed 30595 again. 30596 30597 - The default module search path is now much saner. Both on Unix and 30598 Windows, it is essentially derived from the path to the executable 30599 (which can be overridden by setting the environment variable 30600 $PYTHONHOME). The value of $PYTHONPATH on Windows is now inserted in 30601 front of the default path, like in Unix (instead of overriding the 30602 default path). On Windows, the directory containing the executable is 30603 added to the end of the path. 30604 30605 - A new version of python-mode.el for Emacs has been included. Also, 30606 a new file ccpy-style.el has been added to configure Emacs cc-mode for 30607 the preferred style in Python C sources. 30608 30609 - On Unix, when using sys.argv[0] to insert the script directory in 30610 front of sys.path, expand a symbolic link. You can now install a 30611 program in a private directory and have a symbolic link to it in a 30612 public bin directory, and it will put the private directory in the 30613 module search path. Note that the symlink is expanded in sys.path[0] 30614 but not in sys.argv[0], so you can still tell the name by which you 30615 were invoked. 30616 30617 - It is now recommended to use ``#!/usr/bin/env python'' instead of 30618 ``#!/usr/local/bin/python'' at the start of executable scripts, except 30619 for CGI scripts. It has been determined that the use of /usr/bin/env 30620 is more portable than that of /usr/local/bin/python -- scripts almost 30621 never have to be edited when the Python interpreter lives in a 30622 non-standard place. Note that this doesn't work for CGI scripts since 30623 the python executable often doesn't live in the HTTP server's default 30624 search path. 30625 30626 - The silly -s command line option and the corresponding 30627 PYTHONSUPPRESS environment variable (and the Py_SuppressPrint global 30628 flag in the Python/C API) are gone. 30629 30630 - Most problems on 64-bit platforms should now be fixed. Andrew 30631 Kuchling helped. Some uncommon extension modules are still not 30632 clean (image and audio ops?). 30633 30634 - Fixed a bug where multiple anonymous tuple arguments would be mixed up 30635 when using the debugger or profiler (reported by Just van Rossum). 30636 The simplest example is ``def f((a,b),(c,d)): print a,b,c,d''; this 30637 would print the wrong value when run under the debugger or profiler. 30638 30639 - The hacks that the dictionary implementation used to speed up 30640 repeated lookups of the same C string were removed; these were a 30641 source of subtle problems and don't seem to serve much of a purpose 30642 any longer. 30643 30644 - All traces of support for the long dead access statement have been 30645 removed from the sources. 30646 30647 - Plugged the two-byte memory leak in the tokenizer when reading an 30648 interactive EOF. 30649 30650 - There's a -O option to the interpreter that removes SET_LINENO 30651 instructions and assert statements (see below); it uses and produces 30652 .pyo files instead of .pyc files. The speedup is only a few percent 30653 in most cases. The line numbers are still available in the .pyo file, 30654 as a separate table (which is also available in .pyc files). However, 30655 the removal of the SET_LINENO instructions means that the debugger 30656 (pdb) can't set breakpoints on lines in -O mode. The traceback module 30657 contains a function to extract a line number from the code object 30658 referenced in a traceback object. In the future it should be possible 30659 to write external bytecode optimizers that create better optimized 30660 .pyo files, and there should be more control over optimization; 30661 consider the -O option a "teaser". Without -O, the assert statement 30662 actually generates code that first checks __debug__; if this variable 30663 is false, the assertion is not checked. __debug__ is a built-in 30664 variable whose value is initialized to track the -O flag (it's true 30665 iff -O is not specified). With -O, no code is generated for assert 30666 statements, nor for code of the form ``if __debug__: <something>''. 30667 Sorry, no further constant folding happens. 30668 30669 30670 Performance 30671 ----------- 30672 30673 - It's much faster (almost twice for pystone.py -- see 30674 Tools/scripts). See the entry on string interning below. 30675 30676 - Some speedup by using separate free lists for method objects (both 30677 the C and the Python variety) and for floating point numbers. 30678 30679 - Big speedup by allocating frame objects with a single malloc() call. 30680 The Python/C API for frames is changed (you shouldn't be using this 30681 anyway). 30682 30683 - Significant speedup by inlining some common opcodes for common operand 30684 types (e.g. i+i, i-i, and list[i]). Fredrik Lundh. 30685 30686 - Small speedup by reordering the method tables of some common 30687 objects (e.g. list.append is now first). 30688 30689 - Big optimization to the read() method of file objects. A read() 30690 without arguments now attempts to use fstat to allocate a buffer of 30691 the right size; for pipes and sockets, it will fall back to doubling 30692 the buffer size. While that the improvement is real on all systems, 30693 it is most dramatic on Windows. 30694 30695 30696 Documentation 30697 ------------- 30698 30699 - Many new pieces of library documentation were contributed, mostly by 30700 Andrew Kuchling. Even cmath is now documented! There's also a 30701 chapter of the library manual, "libundoc.tex", which provides a 30702 listing of all undocumented modules, plus their status (e.g. internal, 30703 obsolete, or in need of documentation). Also contributions by Sue 30704 Williams, Skip Montanaro, and some module authors who succumbed to 30705 pressure to document their own contributed modules :-). Note that 30706 printing the documentation now kills fewer trees -- the margins have 30707 been reduced. 30708 30709 - I have started documenting the Python/C API. Unfortunately this project 30710 hasn't been completed yet. It will be complete before the final release of 30711 Python 1.5, though. At the moment, it's better to read the LaTeX source 30712 than to attempt to run it through LaTeX and print the resulting dvi file. 30713 30714 - The posix module (and hence os.py) now has doc strings! Thanks to Neil 30715 Schemenauer. I received a few other contributions of doc strings. In most 30716 other places, doc strings are still wishful thinking... 30717 30718 30719 Language changes 30720 ---------------- 30721 30722 - Private variables with leading double underscore are now a permanent 30723 feature of the language. (These were experimental in release 1.4. I have 30724 favorable experience using them; I can't label them "experimental" 30725 forever.) 30726 30727 - There's new string literal syntax for "raw strings". Prefixing a string 30728 literal with the letter r (or R) disables all escape processing in the 30729 string; for example, r'\n' is a two-character string consisting of a 30730 backslash followed by the letter n. This combines with all forms of string 30731 quotes; it is actually useful for triple quoted doc strings which might 30732 contain references to \n or \t. An embedded quote prefixed with a 30733 backslash does not terminate the string, but the backslash is still 30734 included in the string; for example, r'\'' is a two-character string 30735 consisting of a backslash and a quote. (Raw strings are also 30736 affectionately known as Robin strings, after their inventor, Robin 30737 Friedrich.) 30738 30739 - There's a simple assert statement, and a new exception 30740 AssertionError. For example, ``assert foo > 0'' is equivalent to ``if 30741 not foo > 0: raise AssertionError''. Sorry, the text of the asserted 30742 condition is not available; it would be too complicated to generate 30743 code for this (since the code is generated from a parse tree). 30744 However, the text is displayed as part of the traceback! 30745 30746 - The raise statement has a new feature: when using "raise SomeClass, 30747 somevalue" where somevalue is not an instance of SomeClass, it 30748 instantiates SomeClass(somevalue). In 1.5a4, if somevalue is an 30749 instance of a *derived* class of SomeClass, the exception class raised 30750 is set to somevalue.__class__, and SomeClass is ignored after that. 30751 30752 - Duplicate keyword arguments are now detected at compile time; 30753 f(a=1,a=2) is now a syntax error. 30754 30755 30756 Changes to built-in features 30757 ---------------------------- 30758 30759 - There's a new exception FloatingPointError (used only by Lee Busby's 30760 patches to catch floating point exceptions, at the moment). 30761 30762 - The obsolete exception ConflictError (presumably used by the long 30763 obsolete access statement) has been deleted. 30764 30765 - There's a new function sys.exc_info() which returns the tuple 30766 (sys.exc_type, sys.exc_value, sys.exc_traceback) in a thread-safe way. 30767 30768 - There's a new variable sys.executable, pointing to the executable file 30769 for the Python interpreter. 30770 30771 - The sort() methods for lists no longer uses the C library qsort(); I 30772 wrote my own quicksort implementation, with lots of help (in the form 30773 of a kind of competition) from Tim Peters. This solves a bug in 30774 dictionary comparisons on some Solaris versions when Python is built 30775 with threads, and makes sorting lists even faster. 30776 30777 - The semantics of comparing two dictionaries have changed, to make 30778 comparison of unequal dictionaries faster. A shorter dictionary is 30779 always considered smaller than a larger dictionary. For dictionaries 30780 of the same size, the smallest differing element determines the 30781 outcome (which yields the same results as before in this case, without 30782 explicit sorting). Thanks to Aaron Watters for suggesting something 30783 like this. 30784 30785 - The semantics of try-except have changed subtly so that calling a 30786 function in an exception handler that itself raises and catches an 30787 exception no longer overwrites the sys.exc_* variables. This also 30788 alleviates the problem that objects referenced in a stack frame that 30789 caught an exception are kept alive until another exception is caught 30790 -- the sys.exc_* variables are restored to their previous value when 30791 returning from a function that caught an exception. 30792 30793 - There's a new "buffer" interface. Certain objects (e.g. strings and 30794 arrays) now support the "buffer" protocol. Buffer objects are acceptable 30795 whenever formerly a string was required for a write operation; mutable 30796 buffer objects can be the target of a read operation using the call 30797 f.readinto(buffer). A cool feature is that regular expression matching now 30798 also work on array objects. Contribution by Jack Jansen. (Needs 30799 documentation.) 30800 30801 - String interning: dictionary lookups are faster when the lookup 30802 string object is the same object as the key in the dictionary, not 30803 just a string with the same value. This is done by having a pool of 30804 "interned" strings. Most names generated by the interpreter are now 30805 automatically interned, and there's a new built-in function intern(s) 30806 that returns the interned version of a string. Interned strings are 30807 not a different object type, and interning is totally optional, but by 30808 interning most keys a speedup of about 15% was obtained for the 30809 pystone benchmark. 30810 30811 - Dictionary objects have several new methods; clear() and copy() have 30812 the obvious semantics, while update(d) merges the contents of another 30813 dictionary d into this one, overriding existing keys. The dictionary 30814 implementation file is now called dictobject.c rather than the 30815 confusing mappingobject.c. 30816 30817 - The intrinsic function dir() is much smarter; it looks in __dict__, 30818 __members__ and __methods__. 30819 30820 - The intrinsic functions int(), long() and float() can now take a 30821 string argument and then do the same thing as string.atoi(), 30822 string.atol(), and string.atof(). No second 'base' argument is 30823 allowed, and complex() does not take a string (nobody cared enough). 30824 30825 - When a module is deleted, its globals are now deleted in two phases. 30826 In the first phase, all variables whose name begins with exactly one 30827 underscore are replaced by None; in the second phase, all variables 30828 are deleted. This makes it possible to have global objects whose 30829 destructors depend on other globals. The deletion order within each 30830 phase is still random. 30831 30832 - It is no longer an error for a function to be called without a 30833 global variable __builtins__ -- an empty directory will be provided 30834 by default. 30835 30836 - Guido's corollary to the "Don Beaudry hook": it is now possible to 30837 do metaprogramming by using an instance as a base class. Not for the 30838 faint of heart; and undocumented as yet, but basically if a base class 30839 is an instance, its class will be instantiated to create the new 30840 class. Jim Fulton will love it -- it also works with instances of his 30841 "extension classes", since it is triggered by the presence of a 30842 __class__ attribute on the purported base class. See 30843 Demo/metaclasses/index.html for an explanation and see that directory 30844 for examples. 30845 30846 - Another change is that the Don Beaudry hook is now invoked when 30847 *any* base class is special. (Up to 1.5a3, the *last* special base 30848 class is used; in 1.5a4, the more rational choice of the *first* 30849 special base class is used.) 30850 30851 - New optional parameter to the readlines() method of file objects. 30852 This indicates the number of bytes to read (the actual number of bytes 30853 read will be somewhat larger due to buffering reading until the end of 30854 the line). Some optimizations have also been made to speed it up (but 30855 not as much as read()). 30856 30857 - Complex numbers no longer have the ".conj" pseudo attribute; use 30858 z.conjugate() instead, or complex(z.real, -z.imag). Complex numbers 30859 now *do* support the __members__ and __methods__ special attributes. 30860 30861 - The complex() function now looks for a __complex__() method on class 30862 instances before giving up. 30863 30864 - Long integers now support arbitrary shift counts, so you can now 30865 write 1L<<1000000, memory permitting. (Python 1.4 reports "outrageous 30866 shift count for this.) 30867 30868 - The hex() and oct() functions have been changed so that for regular 30869 integers, they never emit a minus sign. For example, on a 32-bit 30870 machine, oct(-1) now returns '037777777777' and hex(-1) returns 30871 '0xffffffff'. While this may seem inconsistent, it is much more 30872 useful. (For long integers, a minus sign is used as before, to fit 30873 the result in memory :-) 30874 30875 - The hash() function computes better hashes for several data types, 30876 including strings, floating point numbers, and complex numbers. 30877 30878 30879 New extension modules 30880 --------------------- 30881 30882 - New extension modules cStringIO.c and cPickle.c, written by Jim 30883 Fulton and other folks at Digital Creations. These are much more 30884 efficient than their Python counterparts StringIO.py and pickle.py, 30885 but don't support subclassing. cPickle.c clocks up to 1000 times 30886 faster than pickle.py; cStringIO.c's improvement is less dramatic but 30887 still significant. 30888 30889 - New extension module zlibmodule.c, interfacing to the free zlib 30890 library (gzip compatible compression). There's also a module gzip.py 30891 which provides a higher level interface. Written by Andrew Kuchling 30892 and Jeremy Hylton. 30893 30894 - New module readline; see the "miscellaneous" section above. 30895 30896 - New Unix extension module resource.c, by Jeremy Hylton, provides 30897 access to getrlimit(), getrusage(), setrusage(), getpagesize(), and 30898 related symbolic constants. 30899 30900 - New extension puremodule.c, by Barry Warsaw, which interfaces to the 30901 Purify(TM) C API. See also the file Misc/PURIFY.README. It is also 30902 possible to enable Purify by simply setting the PURIFY Makefile 30903 variable in the Modules/Setup file. 30904 30905 30906 Changes in extension modules 30907 ---------------------------- 30908 30909 - The struct extension module has several new features to control byte 30910 order and word size. It supports reading and writing IEEE floats even 30911 on platforms where this is not the native format. It uses uppercase 30912 format codes for unsigned integers of various sizes (always using 30913 Python long ints for 'I' and 'L'), 's' with a size prefix for strings, 30914 and 'p' for "Pascal strings" (with a leading length byte, included in 30915 the size; blame Hannu Krosing; new in 1.5a4). A prefix '>' forces 30916 big-endian data and '<' forces little-endian data; these also select 30917 standard data sizes and disable automatic alignment (use pad bytes as 30918 needed). 30919 30920 - The array module supports uppercase format codes for unsigned data 30921 formats (like the struct module). 30922 30923 - The fcntl extension module now exports the needed symbolic 30924 constants. (Formerly these were in FCNTL.py which was not available 30925 or correct for all platforms.) 30926 30927 - The extension modules dbm, gdbm and bsddb now check that the 30928 database is still open before making any new calls. 30929 30930 - The dbhash module is no more. Use bsddb instead. (There's a third 30931 party interface for the BSD 2.x code somewhere on the web; support for 30932 bsddb will be deprecated.) 30933 30934 - The gdbm module now supports a sync() method. 30935 30936 - The socket module now has some new functions: getprotobyname(), and 30937 the set {ntoh,hton}{s,l}(). 30938 30939 - Various modules now export their type object: socket.SocketType, 30940 array.ArrayType. 30941 30942 - The socket module's accept() method now returns unknown addresses as 30943 a tuple rather than raising an exception. (This can happen in 30944 promiscuous mode.) Theres' also a new function getprotobyname(). 30945 30946 - The pthread support for the thread module now works on most platforms. 30947 30948 - STDWIN is now officially obsolete. Support for it will eventually 30949 be removed from the distribution. 30950 30951 - The binascii extension module is now hopefully fully debugged. 30952 (XXX Oops -- Fredrik Lundh promised me a uuencode fix that I never 30953 received.) 30954 30955 - audioop.c: added a ratecv() function; better handling of overflow in 30956 add(). 30957 30958 - posixmodule.c: now exports the O_* flags (O_APPEND etc.). On 30959 Windows, also O_TEXT and O_BINARY. The 'error' variable (the 30960 exception is raises) is renamed -- its string value is now "os.error", 30961 so newbies don't believe they have to import posix (or nt) to catch 30962 it when they see os.error reported as posix.error. The execve() 30963 function now accepts any mapping object for the environment. 30964 30965 - A new version of the al (audio library) module for SGI was 30966 contributed by Sjoerd Mullender. 30967 30968 - The regex module has a new function get_syntax() which retrieves the 30969 syntax setting set by set_syntax(). The code was also sanitized, 30970 removing worries about unclean error handling. See also below for its 30971 successor, re.py. 30972 30973 - The "new" module (which creates new objects of various types) once 30974 again has a fully functioning new.function() method. Dangerous as 30975 ever! Also, new.code() has several new arguments. 30976 30977 - A problem has been fixed in the rotor module: on systems with signed 30978 characters, rotor-encoded data was not portable when the key contained 30979 8-bit characters. Also, setkey() now requires its argument rather 30980 than having broken code to default it. 30981 30982 - The sys.builtin_module_names variable is now a tuple. Another new 30983 variables in sys is sys.executable (the full path to the Python 30984 binary, if known). 30985 30986 - The specs for time.strftime() have undergone some revisions. It 30987 appears that not all format characters are supported in the same way 30988 on all platforms. Rather than reimplement it, we note these 30989 differences in the documentation, and emphasize the shared set of 30990 features. There's also a thorough test set (that occasionally finds 30991 problems in the C library implementation, e.g. on some Linuxes), 30992 thanks to Skip Montanaro. 30993 30994 - The nis module seems broken when used with NIS+; unfortunately 30995 nobody knows how to fix it. It should still work with old NIS. 30996 30997 30998 New library modules 30999 ------------------- 31000 31001 - New (still experimental) Perl-style regular expression module, 31002 re.py, which uses a new interface for matching as well as a new 31003 syntax; the new interface avoids the thread-unsafety of the regex 31004 interface. This comes with a helper extension reopmodule.c and vastly 31005 rewritten regexpr.c. Most work on this was done by Jeffrey Ollie, Tim 31006 Peters, and Andrew Kuchling. See the documentation libre.tex. In 31007 1.5, the old regex module is still fully supported; in the future, it 31008 will become obsolete. 31009 31010 - New module gzip.py; see zlib above. 31011 31012 - New module keyword.py exports knowledge about Python's built-in 31013 keywords. (New version by Ka-Ping Yee.) 31014 31015 - New module pprint.py (with documentation) which supports 31016 pretty-printing of lists, tuples, & dictionaries recursively. By Fred 31017 Drake. 31018 31019 - New module code.py. The function code.compile_command() can 31020 determine whether an interactively entered command is complete or not, 31021 distinguishing incomplete from invalid input. (XXX Unfortunately, 31022 this seems broken at this moment, and I don't have the time to fix 31023 it. It's probably better to add an explicit interface to the parser 31024 for this.) 31025 31026 - There is now a library module xdrlib.py which can read and write the 31027 XDR data format as used by Sun RPC, for example. It uses the struct 31028 module. 31029 31030 31031 Changes in library modules 31032 -------------------------- 31033 31034 - Module codehack.py is now completely obsolete. 31035 31036 - The pickle.py module has been updated to make it compatible with the 31037 new binary format that cPickle.c produces. By default it produces the 31038 old all-ASCII format compatible with the old pickle.py, still much 31039 faster than pickle.py; it will read both formats automatically. A few 31040 other updates have been made. 31041 31042 - A new helper module, copy_reg.py, is provided to register extensions 31043 to the pickling code. 31044 31045 - Revamped module tokenize.py is much more accurate and has an 31046 interface that makes it a breeze to write code to colorize Python 31047 source code. Contributed by Ka-Ping Yee. 31048 31049 - In ihooks.py, ModuleLoader.load_module() now closes the file under 31050 all circumstances. 31051 31052 - The tempfile.py module has a new class, TemporaryFile, which creates 31053 an open temporary file that will be deleted automatically when 31054 closed. This works on Windows and MacOS as well as on Unix. (Jim 31055 Fulton.) 31056 31057 - Changes to the cgi.py module: Most imports are now done at the 31058 top of the module, which provides a speedup when using ni (Jim 31059 Fulton). The problem with file upload to a Windows platform is solved 31060 by using the new tempfile.TemporaryFile class; temporary files are now 31061 always opened in binary mode (Jim Fulton). The cgi.escape() function 31062 now takes an optional flag argument that quotes '"' to '"'. It 31063 is now possible to invoke cgi.py from a command line script, to test 31064 cgi scripts more easily outside an http server. There's an optional 31065 limit to the size of uploads to POST (Skip Montanaro). Added a 31066 'strict_parsing' option to all parsing functions (Jim Fulton). The 31067 function parse_qs() now uses urllib.unquote() on the name as well as 31068 the value of fields (Clarence Gardner). The FieldStorage class now 31069 has a __len__() method. 31070 31071 - httplib.py: the socket object is no longer closed; all HTTP/1.* 31072 responses are now accepted; and it is now thread-safe (by not using 31073 the regex module). 31074 31075 - BaseHTTPModule.py: treat all HTTP/1.* versions the same. 31076 31077 - The popen2.py module is now rewritten using a class, which makes 31078 access to the standard error stream and the process id of the 31079 subprocess possible. 31080 31081 - Added timezone support to the rfc822.py module, in the form of a 31082 getdate_tz() method and a parsedate_tz() function; also a mktime_tz(). 31083 Also added recognition of some non-standard date formats, by Lars 31084 Wirzenius, and RFC 850 dates (Chris Lawrence). 31085 31086 - mhlib.py: various enhancements, including almost compatible parsing 31087 of message sequence specifiers without invoking a subprocess. Also 31088 added a createmessage() method by Lars Wirzenius. 31089 31090 - The StringIO.StringIO class now supports readline(nbytes). (Lars 31091 Wirzenius.) (Of course, you should be using cStringIO for performance.) 31092 31093 - UserDict.py supports the new dictionary methods as well. 31094 31095 - Improvements for whrandom.py by Tim Peters: use 32-bit arithmetic to 31096 speed it up, and replace 0 seed values by 1 to avoid degeneration. 31097 A bug was fixed in the test for invalid arguments. 31098 31099 - Module ftplib.py: added support for parsing a .netrc file (Fred 31100 Drake). Also added an ntransfercmd() method to the FTP class, which 31101 allows access to the expected size of a transfer when available, and a 31102 parse150() function to the module which parses the corresponding 150 31103 response. 31104 31105 - urllib.py: the ftp cache is now limited to 10 entries. Added 31106 quote_plus() and unquote_plus() functions which are like quote() and 31107 unquote() but also replace spaces with '+' or vice versa, for 31108 encoding/decoding CGI form arguments. Catch all errors from the ftp 31109 module. HTTP requests now add the Host: header line. The proxy 31110 variable names are now mapped to lower case, for Windows. The 31111 spliturl() function no longer erroneously throws away all data past 31112 the first newline. The basejoin() function now intereprets "../" 31113 correctly. I *believe* that the problems with "exception raised in 31114 __del__" under certain circumstances have been fixed (mostly by 31115 changes elsewher in the interpreter). 31116 31117 - In urlparse.py, there is a cache for results in urlparse.urlparse(); 31118 its size limit is set to 20. Also, new URL schemes shttp, https, and 31119 snews are "supported". 31120 31121 - shelve.py: use cPickle and cStringIO when available. Also added 31122 a sync() method, which calls the database's sync() method if there is 31123 one. 31124 31125 - The mimetools.py module now uses the available Python modules for 31126 decoding quoted-printable, uuencode and base64 formats, rather than 31127 creating a subprocess. 31128 31129 - The python debugger (pdb.py, and its base class bdb.py) now support 31130 conditional breakpoints. See the docs. 31131 31132 - The modules base64.py, uu.py and quopri.py can now be used as simple 31133 command line utilities. 31134 31135 - Various small fixes to the nntplib.py module that I can't bother to 31136 document in detail. 31137 31138 - Sjoerd Mullender's mimify.py module now supports base64 encoding and 31139 includes functions to handle the funny encoding you sometimes see in mail 31140 headers. It is now documented. 31141 31142 - mailbox.py: Added BabylMailbox. Improved the way the mailbox is 31143 gotten from the environment. 31144 31145 - Many more modules now correctly open files in binary mode when this 31146 is necessary on non-Unix platforms. 31147 31148 - The copying functions in the undocumented module shutil.py are 31149 smarter. 31150 31151 - The Writer classes in the formatter.py module now have a flush() 31152 method. 31153 31154 - The sgmllib.py module accepts hyphens and periods in the middle of 31155 attribute names. While this is against the SGML standard, there is 31156 some HTML out there that uses this... 31157 31158 - The interface for the Python bytecode disassembler module, dis.py, 31159 has been enhanced quite a bit. There's now one main function, 31160 dis.dis(), which takes almost any kind of object (function, module, 31161 class, instance, method, code object) and disassembles it; without 31162 arguments it disassembles the last frame of the last traceback. The 31163 other functions have changed slightly, too. 31164 31165 - The imghdr.py module recognizes new image types: BMP, PNG. 31166 31167 - The string.py module has a new function replace(str, old, new, 31168 [maxsplit]) which does substring replacements. It is actually 31169 implemented in C in the strop module. The functions [r]find() an 31170 [r]index() have an optional 4th argument indicating the end of the 31171 substring to search, alsoo implemented by their strop counterparts. 31172 (Remember, never import strop -- import string uses strop when 31173 available with zero overhead.) 31174 31175 - The string.join() function now accepts any sequence argument, not 31176 just lists and tuples. 31177 31178 - The string.maketrans() requires its first two arguments to be 31179 present. The old version didn't require them, but there's not much 31180 point without them, and the documentation suggests that they are 31181 required, so we fixed the code to match the documentation. 31182 31183 - The regsub.py module has a function clear_cache(), which clears its 31184 internal cache of compiled regular expressions. Also, the cache now 31185 takes the current syntax setting into account. (However, this module 31186 is now obsolete -- use the sub() or subn() functions or methods in the 31187 re module.) 31188 31189 - The undocumented module Complex.py has been removed, now that Python 31190 has built-in complex numbers. A similar module remains as 31191 Demo/classes/Complex.py, as an example. 31192 31193 31194 Changes to the build process 31195 ---------------------------- 31196 31197 - The way GNU readline is configured is totally different. The 31198 --with-readline configure option is gone. It is now an extension 31199 module, which may be loaded dynamically. You must enable it (and 31200 specify the correct libraries to link with) in the Modules/Setup file. 31201 Importing the module installs some hooks which enable command line 31202 editing. When the interpreter shell is invoked interactively, it 31203 attempts to import the readline module; when this fails, the default 31204 input mechanism is used. The hook variables are PyOS_InputHook and 31205 PyOS_ReadlineFunctionPointer. (Code contributed by Lee Busby, with 31206 ideas from William Magro.) 31207 31208 - New build procedure: a single library, libpython1.5.a, is now built, 31209 which contains absolutely everything except for a one-line main() 31210 program (which calls Py_Main(argc, argv) to start the interpreter 31211 shell). This makes life much simpler for applications that need to 31212 embed Python. The serial number of the build is now included in the 31213 version string (sys.version). 31214 31215 - As far as I can tell, neither gcc -Wall nor the Microsoft compiler 31216 emits a single warning any more when compiling Python. 31217 31218 - A number of new Makefile variables have been added for special 31219 situations, e.g. LDLAST is appended to the link command. These are 31220 used by editing the Makefile or passing them on the make command 31221 line. 31222 31223 - A set of patches from Lee Busby has been integrated that make it 31224 possible to catch floating point exceptions. Use the configure option 31225 --with-fpectl to enable the patches; the extension modules fpectl and 31226 fpetest provide control to enable/disable and test the feature, 31227 respectively. 31228 31229 - The support for shared libraries under AIX is now simpler and more 31230 robust. Thanks to Vladimir Marangozov for revamping his own patches! 31231 31232 - The Modules/makesetup script now reads a file Setup.local as well as 31233 a file Setup. Most changes to the Setup script can be done by editing 31234 Setup.local instead, which makes it easier to carry a particular setup 31235 over from one release to the next. 31236 31237 - The Modules/makesetup script now copies any "include" lines it 31238 encounters verbatim into the output Makefile. It also recognizes .cxx 31239 and .cpp as C++ source files. 31240 31241 - The configure script is smarter about C compiler options; e.g. with 31242 gcc it uses -O2 and -g when possible, and on some other platforms it 31243 uses -Olimit 1500 to avoid a warning from the optimizer about the main 31244 loop in ceval.c (which has more than 1000 basic blocks). 31245 31246 - The configure script now detects whether malloc(0) returns a NULL 31247 pointer or a valid block (of length zero). This avoids the nonsense 31248 of always adding one byte to all malloc() arguments on most platforms. 31249 31250 - The configure script has a new option, --with-dec-threads, to enable 31251 DEC threads on DEC Alpha platforms. Also, --with-threads is now an 31252 alias for --with-thread (this was the Most Common Typo in configure 31253 arguments). 31254 31255 - Many changes in Doc/Makefile; amongst others, latex2html is now used 31256 to generate HTML from all latex documents. 31257 31258 31259 Change to the Python/C API 31260 -------------------------- 31261 31262 - Because some interfaces have changed, the PYTHON_API macro has been 31263 bumped. Most extensions built for the old API version will still run, 31264 but I can't guarantee this. Python prints a warning message on 31265 version mismatches; it dumps core when the version mismatch causes a 31266 serious problem :-) 31267 31268 - I've completed the Grand Renaming, with the help of Roger Masse and 31269 Barry Warsaw. This makes reading or debugging the code much easier. 31270 Many other unrelated code reorganizations have also been carried out. 31271 The allobjects.h header file is gone; instead, you would have to 31272 include Python.h followed by rename2.h. But you're better off running 31273 Tools/scripts/fixcid.py -s Misc/RENAME on your source, so you can omit 31274 the rename2.h; it will disappear in the next release. 31275 31276 - Various and sundry small bugs in the "abstract" interfaces have been 31277 fixed. Thanks to all the (involuntary) testers of the Python 1.4 31278 version! Some new functions have been added, e.g. PySequence_List(o), 31279 equivalent to list(o) in Python. 31280 31281 - New API functions PyLong_FromUnsignedLong() and 31282 PyLong_AsUnsignedLong(). 31283 31284 - The API functions in the file cgensupport.c are no longer 31285 supported. This file has been moved to Modules and is only ever 31286 compiled when the SGI specific 'gl' module is built. 31287 31288 - PyObject_Compare() can now raise an exception. Check with 31289 PyErr_Occurred(). The comparison function in an object type may also 31290 raise an exception. 31291 31292 - The slice interface uses an upper bound of INT_MAX when no explicit 31293 upper bound is given (e.x. for a[1:]). It used to ask the object for 31294 its length and do the calculations. 31295 31296 - Support for multiple independent interpreters. See Doc/api.tex, 31297 functions Py_NewInterpreter() and Py_EndInterpreter(). Since the 31298 documentation is incomplete, also see the new Demo/pysvr example 31299 (which shows how to use these in a threaded application) and the 31300 source code. 31301 31302 - There is now a Py_Finalize() function which "de-initializes" 31303 Python. It is possible to completely restart the interpreter 31304 repeatedly by calling Py_Finalize() followed by Py_Initialize(). A 31305 change of functionality in Py_Initialize() means that it is now a 31306 fatal error to call it while the interpreter is already initialized. 31307 The old, half-hearted Py_Cleanup() routine is gone. Use of Py_Exit() 31308 is deprecated (it is nothing more than Py_Finalize() followed by 31309 exit()). 31310 31311 - There are no known memory leaks left. While Py_Finalize() doesn't 31312 free *all* allocated memory (some of it is hard to track down), 31313 repeated calls to Py_Finalize() and Py_Initialize() do not create 31314 unaccessible heap blocks. 31315 31316 - There is now explicit per-thread state. (Inspired by, but not the 31317 same as, Greg Stein's free threading patches.) 31318 31319 - There is now better support for threading C applications. There are 31320 now explicit APIs to manipulate the interpreter lock. Read the source 31321 or the Demo/pysvr example; the new functions are 31322 PyEval_{Acquire,Release}{Lock,Thread}(). 31323 31324 - The test macro DEBUG has changed to Py_DEBUG, to avoid interference 31325 with other libraries' DEBUG macros. Likewise for any other test 31326 macros that didn't yet start with Py_. 31327 31328 - New wrappers around malloc() and friends: Py_Malloc() etc. call 31329 malloc() and call PyErr_NoMemory() when it fails; PyMem_Malloc() call 31330 just malloc(). Use of these wrappers could be essential if multiple 31331 memory allocators exist (e.g. when using certain DLL setups under 31332 Windows). (Idea by Jim Fulton.) 31333 31334 - New C API PyImport_Import() which uses whatever __import__() hook 31335 that is installed for the current execution environment. By Jim 31336 Fulton. 31337 31338 - It is now possible for an extension module's init function to fail 31339 non-fatally, by calling one of the PyErr_* functions and returning. 31340 31341 - The PyInt_AS_LONG() and PyFloat_AS_DOUBLE() macros now cast their 31342 argument to the proper type, like the similar PyString macros already 31343 did. (Suggestion by Marc-Andre Lemburg.) Similar for PyList_GET_SIZE 31344 and PyList_GET_ITEM. 31345 31346 - Some of the Py_Get* function, like Py_GetVersion() (but not yet 31347 Py_GetPath()) are now declared as returning a const char *. (More 31348 should follow.) 31349 31350 - Changed the run-time library to check for exceptions after object 31351 comparisons. PyObject_Compare() can now return an exception; use 31352 PyErr_Occurred() to check (there is *no* special return value). 31353 31354 - PyFile_WriteString() and Py_Flushline() now return error indicators 31355 instead of clearing exceptions. This fixes an obscure bug where using 31356 these would clear a pending exception, discovered by Just van Rossum. 31357 31358 - There's a new function, PyArg_ParseTupleAndKeywords(), which parses 31359 an argument list including keyword arguments. Contributed by Geoff 31360 Philbrick. 31361 31362 - PyArg_GetInt() is gone. 31363 31364 - It's no longer necessary to include graminit.h when calling one of 31365 the extended parser API functions. The three public grammar start 31366 symbols are now in Python.h as Py_single_input, Py_file_input, and 31367 Py_eval_input. 31368 31369 - The CObject interface has a new function, 31370 PyCObject_Import(module, name). It calls PyCObject_AsVoidPtr() 31371 on the object referenced by "module.name". 31372 31373 31374 Tkinter 31375 ------- 31376 31377 - On popular demand, _tkinter once again installs a hook for readline 31378 that processes certain Tk events while waiting for the user to type 31379 (using PyOS_InputHook). 31380 31381 - A patch by Craig McPheeters plugs the most obnoxious memory leaks, 31382 caused by command definitions referencing widget objects beyond their 31383 lifetime. 31384 31385 - New standard dialog modules: tkColorChooser.py, tkCommonDialog.py, 31386 tkMessageBox.py, tkFileDialog.py, tkSimpleDialog.py These interface 31387 with the new Tk dialog scripts, and provide more "native platform" 31388 style file selection dialog boxes on some platforms. Contributed by 31389 Fredrik Lundh. 31390 31391 - Tkinter.py: when the first Tk object is destroyed, it sets the 31392 hiddel global _default_root to None, so that when another Tk object is 31393 created it becomes the new default root. Other miscellaneous 31394 changes and fixes. 31395 31396 - The Image class now has a configure method. 31397 31398 - Added a bunch of new winfo options to Tkinter.py; we should now be 31399 up to date with Tk 4.2. The new winfo options supported are: 31400 mananger, pointerx, pointerxy, pointery, server, viewable, visualid, 31401 visualsavailable. 31402 31403 - The broken bind() method on Canvas objects defined in the Canvas.py 31404 module has been fixed. The CanvasItem and Group classes now also have 31405 an unbind() method. 31406 31407 - The problem with Tkinter.py falling back to trying to import 31408 "tkinter" when "_tkinter" is not found has been fixed -- it no longer 31409 tries "tkinter", ever. This makes diagnosing the problem "_tkinter 31410 not configured" much easier and will hopefully reduce the newsgroup 31411 traffic on this topic. 31412 31413 - The ScrolledText module once again supports the 'cnf' parameter, to 31414 be compatible with the examples in Mark Lutz' book (I know, I know, 31415 too late...) 31416 31417 - The _tkinter.c extension module has been revamped. It now support 31418 Tk versions 4.1 through 8.0; support for 4.0 has been dropped. It 31419 works well under Windows and Mac (with the latest Tk ports to those 31420 platforms). It also supports threading -- it is safe for one 31421 (Python-created) thread to be blocked in _tkinter.mainloop() while 31422 other threads modify widgets. To make the changes visible, those 31423 threads must use update_idletasks()method. (The patch for threading 31424 in 1.5a3 was broken; in 1.5a4, it is back in a different version, 31425 which requires access to the Tcl sources to get it to work -- hence it 31426 is disabled by default.) 31427 31428 - A bug in _tkinter.c has been fixed, where Split() with a string 31429 containing an unmatched '"' could cause an exception or core dump. 31430 31431 - Unfortunately, on Windows and Mac, Tk 8.0 no longer supports 31432 CreateFileHandler, so _tkinter.createfilehandler is not available on 31433 those platforms when using Tk 8.0 or later. I will have to rethink 31434 how to interface with Tcl's lower-level event mechanism, or with its 31435 channels (which are like Python's file-like objects). Jack Jansen has 31436 provided a fix for the Mac, so createfilehandler *is* actually 31437 supported there; maybe I can adapt his fix for Windows. 31438 31439 31440 Tools and Demos 31441 --------------- 31442 31443 - A new regression test suite is provided, which tests most of the 31444 standard and built-in modules. The regression test is run by invoking 31445 the script Lib/test/regrtest.py. Barry Warsaw wrote the test harnass; 31446 he and Roger Masse contributed most of the new tests. 31447 31448 - New tool: faqwiz -- the CGI script that is used to maintain the 31449 Python FAQ (http://grail.cnri.reston.va.us/cgi-bin/faqw.py). In 31450 Tools/faqwiz. 31451 31452 - New tool: webchecker -- a simple extensible web robot that, when 31453 aimed at a web server, checks that server for dead links. Available 31454 are a command line utility as well as a Tkinter based GUI version. In 31455 Tools/webchecker. A simplified version of this program is dissected 31456 in my article in O'Reilly's WWW Journal, the issue on Scripting 31457 Languages (Vol 2, No 2); Scripting the Web with Python (pp 97-120). 31458 Includes a parser for robots.txt files by Skip Montanaro. 31459 31460 - New small tools: cvsfiles.py (prints a list of all files under CVS 31461 n a particular directory tree), treesync.py (a rather Guido-specific 31462 script to synchronize two source trees, one on Windows NT, the other 31463 one on Unix under CVS but accessible from the NT box), and logmerge.py 31464 (sort a collection of RCS or CVS logs by date). In Tools/scripts. 31465 31466 - The freeze script now also works under Windows (NT). Another 31467 feature allows the -p option to be pointed at the Python source tree 31468 instead of the installation prefix. This was loosely based on part of 31469 xfreeze by Sam Rushing and Bill Tutt. 31470 31471 - New examples (Demo/extend) that show how to use the generic 31472 extension makefile (Misc/Makefile.pre.in). 31473 31474 - Tools/scripts/h2py.py now supports C++ comments. 31475 31476 - Tools/scripts/pystone.py script is upgraded to version 1.1; there 31477 was a bug in version 1.0 (distributed with Python 1.4) that leaked 31478 memory. Also, in 1.1, the LOOPS variable is incremented to 10000. 31479 31480 - Demo/classes/Rat.py completely rewritten by Sjoerd Mullender. 31481 31482 31483 Windows (NT and 95) 31484 ------------------- 31485 31486 - New project files for Developer Studio (Visual C++) 5.0 for Windows 31487 NT (the old VC++ 4.2 Makefile is also still supported, but will 31488 eventually be withdrawn due to its bulkiness). 31489 31490 - See the note on the new module search path in the "Miscellaneous" section 31491 above. 31492 31493 - Support for Win32s (the 32-bit Windows API under Windows 3.1) is 31494 basically withdrawn. If it still works for you, you're lucky. 31495 31496 - There's a new extension module, msvcrt.c, which provides various 31497 low-level operations defined in the Microsoft Visual C++ Runtime Library. 31498 These include locking(), setmode(), get_osfhandle(), set_osfhandle(), and 31499 console I/O functions like kbhit(), getch() and putch(). 31500 31501 - The -u option not only sets the standard I/O streams to unbuffered 31502 status, but also sets them in binary mode. (This can also be done 31503 using msvcrt.setmode(), by the way.) 31504 31505 - The, sys.prefix and sys.exec_prefix variables point to the directory 31506 where Python is installed, or to the top of the source tree, if it was run 31507 from there. 31508 31509 - The various os.path modules (posixpath, ntpath, macpath) now support 31510 passing more than two arguments to the join() function, so 31511 os.path.join(a, b, c) is the same as os.path.join(a, os.path.join(b, 31512 c)). 31513 31514 - The ntpath module (normally used as os.path) supports ~ to $HOME 31515 expansion in expanduser(). 31516 31517 - The freeze tool now works on Windows. 31518 31519 - See also the Tkinter category for a sad note on 31520 _tkinter.createfilehandler(). 31521 31522 - The truncate() method for file objects now works on Windows. 31523 31524 - Py_Initialize() is no longer called when the DLL is loaded. You 31525 must call it yourself. 31526 31527 - The time module's clock() function now has good precision through 31528 the use of the Win32 API QueryPerformanceCounter(). 31529 31530 - Mark Hammond will release Python 1.5 versions of PythonWin and his 31531 other Windows specific code: the win32api extensions, COM/ActiveX 31532 support, and the MFC interface. 31533 31534 31535 Mac 31536 --- 31537 31538 - As always, the Macintosh port will be done by Jack Jansen. He will 31539 make a separate announcement for the Mac specific source code and the 31540 binary distribution(s) when these are ready. 31541 31542 31543 ====================================================================== 31544 31545 31546 ===================================== 31547 ==> Release 1.4 (October 25 1996) <== 31548 ===================================== 31549 31550 (Starting in reverse chronological order:) 31551 31552 - Changed disclaimer notice. 31553 31554 - Added SHELL=/bin/sh to Misc/Makefile.pre.in -- some Make versions 31555 default to the user's login shell. 31556 31557 - In Lib/tkinter/Tkinter.py, removed bogus binding of <Delete> in Text 31558 widget, and bogus bspace() function. 31559 31560 - In Lib/cgi.py, bumped __version__ to 2.0 and restored a truncated 31561 paragraph. 31562 31563 - Fixed the NT Makefile (PC/vc40.mak) for VC 4.0 to set /MD for all 31564 subprojects, and to remove the (broken) experimental NumPy 31565 subprojects. 31566 31567 - In Lib/py_compile.py, cast mtime to long() so it will work on Mac 31568 (where os.stat() returns mtimes as floats.) 31569 - Set self.rfile unbuffered (like self.wfile) in SocketServer.py, to 31570 fix POST in CGIHTTPServer.py. 31571 31572 - Version 2.83 of Misc/python-mode.el for Emacs is included. 31573 31574 - In Modules/regexmodule.c, fixed symcomp() to correctly handle a new 31575 group starting immediately after a group tag. 31576 31577 - In Lib/SocketServer.py, changed the mode for rfile to unbuffered. 31578 31579 - In Objects/stringobject.c, fixed the compare function to do the 31580 first char comparison in unsigned mode, for consistency with the way 31581 other characters are compared by memcmp(). 31582 31583 - In Lib/tkinter/Tkinter.py, fixed Scale.get() to support floats. 31584 31585 - In Lib/urllib.py, fix another case where openedurl wasn't set. 31586 31587 (XXX Sorry, the rest is in totally random order. No time to fix it.) 31588 31589 - SyntaxError exceptions detected during code generation 31590 (e.g. assignment to an expression) now include a line number. 31591 31592 - Don't leave trailing / or \ in script directory inserted in front of 31593 sys.path. 31594 31595 - Added a note to Tools/scripts/classfix.py abouts its historical 31596 importance. 31597 31598 - Added Misc/Makefile.pre.in, a universal Makefile for extensions 31599 built outside the distribution. 31600 31601 - Rewritten Misc/faq2html.py, by Ka-Ping Yee. 31602 31603 - Install shared modules with mode 555 (needed for performance on some 31604 platforms). 31605 31606 - Some changes to standard library modules to avoid calling append() 31607 with more than one argument -- while supported, this should be 31608 outlawed, and I don't want to set a bad example. 31609 31610 - bdb.py (and hence pdb.py) supports calling run() with a code object 31611 instead of a code string. 31612 31613 - Fixed an embarrassing bug cgi.py which prevented correct uploading 31614 of binary files from Netscape (which doesn't distinguish between 31615 binary and text files). Also added dormant logging support, which 31616 makes it easier to debug the cgi module itself. 31617 31618 - Added default writer to constructor of NullFormatter class. 31619 31620 - Use binary mode for socket.makefile() calls in ftplib.py. 31621 31622 - The ihooks module no longer "installs" itself upon import -- this 31623 was an experimental feature that helped ironing out some bugs but that 31624 slowed down code that imported it without the need to install it 31625 (e.g. the rexec module). Also close the file in some cases and add 31626 the __file__ attribute to loaded modules. 31627 31628 - The test program for mailbox.py is now more useful. 31629 31630 - Added getparamnames() to Message class in mimetools.py -- it returns 31631 the names of parameters to the content-type header. 31632 31633 - Fixed a typo in ni that broke the loop stripping "__." from names. 31634 31635 - Fix sys.path[0] for scripts run via pdb.py's new main program. 31636 31637 - profile.py can now also run a script, like pdb. 31638 31639 - Fix a small bug in pyclbr -- don't add names starting with _ when 31640 emulating from ... import *. 31641 31642 - Fixed a series of embarrassing typos in rexec's handling of standard 31643 I/O redirection. Added some more "safe" built-in modules: cmath, 31644 errno, operator. 31645 31646 - Fixed embarrassing typo in shelve.py. 31647 31648 - Added SliceType and EllipsisType to types.py. 31649 31650 - In urllib.py, added handling for error 301 (same as 302); added 31651 geturl() method to get the URL after redirection. 31652 31653 - Fixed embarrassing typo in xdrlib.py. Also fixed typo in Setup.in 31654 for _xdrmodule.c and removed redundant #include from _xdrmodule.c. 31655 31656 - Fixed bsddbmodule.c to add binary mode indicator on platforms that 31657 have it. This should make it working on Windows NT. 31658 31659 - Changed last uses of #ifdef NT to #ifdef MS_WINDOWS or MS_WIN32, 31660 whatever applies. Also rationalized some other tests for various MS 31661 platforms. 31662 31663 - Added the sources for the NT installer script used for Python 31664 1.4beta3. Not tested with this release, but better than nothing. 31665 31666 - A compromise in pickle's defenses against Trojan horses: a 31667 user-defined function is now okay where a class is expected. A 31668 built-in function is not okay, to prevent pickling something that 31669 will execute os.system("rm -f *") when unpickling. 31670 31671 - dis.py will print the name of local variables referenced by local 31672 load/store/delete instructions. 31673 31674 - Improved portability of SimpleHTTPServer module to non-Unix 31675 platform. 31676 31677 - The thread.h interface adds an extra argument to down_sema(). This 31678 only affects other C code that uses thread.c; the Python thread module 31679 doesn't use semaphores (which aren't provided on all platforms where 31680 Python threads are supported). Note: on NT, this change is not 31681 implemented. 31682 31683 - Fixed some typos in abstract.h; corrected signature of 31684 PyNumber_Coerce, added PyMapping_DelItem. Also fixed a bug in 31685 abstract.c's PyObject_CallMethod(). 31686 31687 - apply(classname, (), {}) now works even if the class has no 31688 __init__() method. 31689 31690 - Implemented complex remainder and divmod() (these would dump core!). 31691 Conversion of complex numbers to int, long int or float now raises an 31692 exception, since there is no meaningful way to do it without losing 31693 information. 31694 31695 - Fixed bug in built-in complex() function which gave the wrong result 31696 for two real arguments. 31697 31698 - Change the hash algorithm for strings -- the multiplier is now 31699 1000003 instead of 3, which gives better spread for short strings. 31700 31701 - New default path for Windows NT, the registry structure now supports 31702 default paths for different install packages. (Mark Hammond -- the 31703 next PythonWin release will use this.) 31704 31705 - Added more symbols to the python_nt.def file. 31706 31707 - When using GNU readline, set rl_readline_name to "python". 31708 31709 - The Ellipses built-in name has been renamed to Ellipsis -- this is 31710 the correct singular form. Thanks to Ka-Ping Yee, who saved us from 31711 eternal embarrassment. 31712 31713 - Bumped the PYTHON_API_VERSION to 1006, due to the Ellipses -> 31714 Ellipsis name change. 31715 31716 - Updated the library reference manual. Added documentation of 31717 restricted mode (rexec, Bastion) and the formatter module (for use 31718 with the htmllib module). Fixed the documentation of htmllib 31719 (finally). 31720 31721 - The reference manual is now maintained in FrameMaker. 31722 31723 - Upgraded scripts Doc/partparse.py and Doc/texi2html.py. 31724 31725 - Slight improvements to Doc/Makefile. 31726 31727 - Added fcntl.lockf(). This should be used for Unix file locking 31728 instead of the posixfile module; lockf() is more portable. 31729 31730 - The getopt module now supports long option names, thanks to Lars 31731 Wizenius. 31732 31733 - Plenty of changes to Tkinter and Canvas, mostly due to Fred Drake 31734 and Nils Fischbeck. 31735 31736 - Use more bits of time.time() in whrandom's default seed(). 31737 31738 - Performance hack for regex module's regs attribute. 31739 31740 - Don't close already closed socket in socket module. 31741 31742 - Correctly handle separators containing embedded nulls in 31743 strop.split, strop.find and strop.rfind. Also added more detail to 31744 error message for strop.atoi and friends. 31745 31746 - Moved fallback definition for hypot() to Python/hypot.c. 31747 31748 - Added fallback definition for strdup, in Python/strdup.c. 31749 31750 - Fixed some bugs where a function would return 0 to indicate an error 31751 where it should return -1. 31752 31753 - Test for error returned by time.localtime(), and rationalized its MS 31754 tests. 31755 31756 - Added Modules/Setup.local file, which is processed after Setup. 31757 31758 - Corrected bug in toplevel Makefile.in -- execution of regen script 31759 would not use the right PATH and PYTHONPATH. 31760 31761 - Various and sundry NeXT configuration changes (sigh). 31762 31763 - Support systems where libreadline needs neither termcap nor curses. 31764 31765 - Improved ld_so_aix script and python.exp file (for AIX). 31766 31767 - More stringent test for working <stdarg.h> in configure script. 31768 31769 - Removed Demo/www subdirectory -- it was totally out of date. 31770 31771 - Improved demos and docs for Fred Drake's parser module; fixed one 31772 typo in the module itself. 31773 31774 31775 ========================================= 31776 ==> Release 1.4beta3 (August 26 1996) <== 31777 ========================================= 31778 31779 31780 (XXX This is less readable that it should. I promise to restructure 31781 it for the final 1.4 release.) 31782 31783 31784 What's new in 1.4beta3 (since beta2)? 31785 ------------------------------------- 31786 31787 - Name mangling to implement a simple form of class-private variables. 31788 A name of the form "__spam" can't easily be used outside the class. 31789 (This was added in 1.4beta3, but left out of the 1.4beta3 release 31790 message.) 31791 31792 - In urllib.urlopen(): HTTP URLs containing user:passwd@host are now 31793 handled correctly when using a proxy server. 31794 31795 - In ntpath.normpath(): don't truncate to 8+3 format. 31796 31797 - In mimetools.choose_boundary(): don't die when getuid() or getpid() 31798 aren't defined. 31799 31800 - Module urllib: some optimizations to (un)quoting. 31801 31802 - New module MimeWriter for writing MIME documents. 31803 31804 - More changes to formatter module. 31805 31806 - The freeze script works once again and is much more robust (using 31807 sys.prefix etc.). It also supports a -o option to specify an 31808 output directory. 31809 31810 - New module whichdb recognizes dbm, gdbm and bsddb/dbhash files. 31811 31812 - The Doc/Makefile targets have been reorganized somewhat to remove the 31813 insistence on always generating PostScript. 31814 31815 - The texinfo to html filter (Doc/texi2html.py) has been improved somewhat. 31816 31817 - "errors.h" has been renamed to "pyerrors.h" to resolve a long-standing 31818 name conflict on the Mac. 31819 31820 - Linking a module compiled with a different setting for Py_TRACE_REFS now 31821 generates a linker error rather than a core dump. 31822 31823 - The cgi module has a new convenience function print_exception(), which 31824 formats a python exception using HTML. It also fixes a bug in the 31825 compatibility code and adds a dubious feature which makes it possible to 31826 have two query strings, one in the URL and one in the POST data. 31827 31828 - A subtle change in the unpickling of class instances makes it possible 31829 to unpickle in restricted execution mode, where the __dict__ attribute is 31830 not available (but setattr() is). 31831 31832 - Documentation for os.path.splitext() (== posixpath.splitext()) has been 31833 cleared up. It splits at the *last* dot. 31834 31835 - posixfile locking is now also correctly supported on AIX. 31836 31837 - The tempfile module once again honors an initial setting of tmpdir. It 31838 now works on Windows, too. 31839 31840 - The traceback module has some new functions to extract, format and print 31841 the active stack. 31842 31843 - Some translation functions in the urllib module have been made a little 31844 less sluggish. 31845 31846 - The addtag_* methods for Canvas widgets in Tkinter as well as in the 31847 separate Canvas class have been fixed so they actually do something 31848 meaningful. 31849 31850 - A tiny _test() function has been added to Tkinter.py. 31851 31852 - A generic Makefile for dynamically loaded modules is provided in the Misc 31853 subdirectory (Misc/gMakefile). 31854 31855 - A new version of python-mode.el for Emacs is provided. See 31856 http://www.python.org/ftp/emacs/pmdetails.html for details. The 31857 separate file pyimenu.el is no longer needed, imenu support is folded 31858 into python-mode.el. 31859 31860 - The configure script can finally correctly find the readline library in a 31861 non-standard location. The LDFLAGS variable is passed on the Makefiles 31862 from the configure script. 31863 31864 - Shared libraries are now installed as programs (i.e. with executable 31865 permission). This is required on HP-UX and won't hurt on other systems. 31866 31867 - The objc.c module is no longer part of the distribution. Objective-C 31868 support may become available as contributed software on the ftp site. 31869 31870 - The sybase module is no longer part of the distribution. A much 31871 improved sybase module is available as contributed software from the 31872 ftp site. 31873 31874 - _tkinter is now compatible with Tcl 7.5 / Tk 4.1 patch1 on Windows and 31875 Mac (don't use unpatched Tcl/Tk!). The default line in the Setup.in file 31876 now links with Tcl 7.5 / Tk 4.1 rather than 7.4/4.0. 31877 31878 - In Setup, you can now write "*shared*" instead of "*noconfig*", and you 31879 can use *.so and *.sl as shared libraries. 31880 31881 - Some more fidgeting for AIX shared libraries. 31882 31883 - The mpz module is now compatible with GMP 2.x. (Not tested by me.) 31884 (Note -- a complete replacement by Niels Mo"ller, called gpmodule, is 31885 available from the contrib directory on the ftp site.) 31886 31887 - A warning is written to sys.stderr when a __del__ method raises an 31888 exception (formerly, such exceptions were completely ignored). 31889 31890 - The configure script now defines HAVE_OLD_CPP if the C preprocessor is 31891 incapable of ANSI style token concatenation and stringification. 31892 31893 - All source files (except a few platform specific modules) are once again 31894 compatible with K&R C compilers as well as ANSI compilers. In particular, 31895 ANSI-isms have been removed or made conditional in complexobject.c, 31896 getargs.c and operator.c. 31897 31898 - The abstract object API has three new functions, PyObject_DelItem, 31899 PySequence_DelItem, and PySequence_DelSlice. 31900 31901 - The operator module has new functions delitem and delslice, and the 31902 functions "or" and "and" are renamed to "or_" and "and_" (since "or" and 31903 "and" are reserved words). ("__or__" and "__and__" are unchanged.) 31904 31905 - The environment module is no longer supported; putenv() is now a function 31906 in posixmodule (also under NT). 31907 31908 - Error in filter(<function>, "") has been fixed. 31909 31910 - Unrecognized keyword arguments raise TypeError, not KeyError. 31911 31912 - Better portability, fewer bugs and memory leaks, fewer compiler warnings, 31913 some more documentation. 31914 31915 - Bug in float power boundary case (0.0 to the negative integer power) 31916 fixed. 31917 31918 - The test of negative number to the float power has been moved from the 31919 built-in pow() function to floatobject.c (so complex numbers can yield the 31920 correct result). 31921 31922 - The bug introduced in beta2 where shared libraries loaded (using 31923 dlopen()) from the current directory would fail, has been fixed. 31924 31925 - Modules imported as shared libraries now also have a __file__ attribute, 31926 giving the filename from which they were loaded. The only modules without 31927 a __file__ attribute now are built-in modules. 31928 31929 - On the Mac, dynamically loaded modules can end in either ".slb" or 31930 ".<platform>.slb" where <platform> is either "CFM68K" or "ppc". The ".slb" 31931 extension should only be used for "fat" binaries. 31932 31933 - C API addition: marshal.c now supports 31934 PyMarshal_WriteObjectToString(object). 31935 31936 - C API addition: getargs.c now supports 31937 PyArg_ParseTupleAndKeywords(args, kwdict, format, kwnames, ...) 31938 to parse keyword arguments. 31939 31940 - The PC versioning scheme (sys.winver) has changed once again. the 31941 version number is now "<digit>.<digit>.<digit>.<apiversion>", where the 31942 first three <digit>s are the Python version (e.g. "1.4.0" for Python 1.4, 31943 "1.4.1" for Python 1.4.1 -- the beta level is not included) and 31944 <apiversion> is the four-digit PYTHON_API_VERSION (currently 1005). 31945 31946 - h2py.py accepts whitespace before the # in CPP directives 31947 31948 - On Solaris 2.5, it should now be possible to use either Posix threads or 31949 Solaris threads (XXX: how do you select which is used???). (Note: the 31950 Python pthreads interface doesn't fully support semaphores yet -- anyone 31951 care to fix this?) 31952 31953 - Thread support should now work on AIX, using either DCE threads or 31954 pthreads. 31955 31956 - New file Demo/sockets/unicast.py 31957 31958 - Working Mac port, with CFM68K support, with Tk 4.1 support (though not 31959 both) (XXX) 31960 31961 - New project setup for PC port, now compatible with PythonWin, with 31962 _tkinter and NumPy support (XXX) 31963 31964 - New module site.py (XXX) 31965 31966 - New module xdrlib.py and optional support module _xdrmodule.c (XXX) 31967 31968 - parser module adapted to new grammar, complete w/ Doc & Demo (XXX) 31969 31970 - regen script fixed (XXX) 31971 31972 - new machdep subdirectories Lib/{aix3,aix4,next3_3,freebsd2,linux2} (XXX) 31973 31974 - testall now also tests math module (XXX) 31975 31976 - string.atoi c.s. now raise an exception for an empty input string. 31977 31978 - At last, it is no longer necessary to define HAVE_CONFIG_H in order to 31979 have config.h included at various places. 31980 31981 - Unrecognized keyword arguments now raise TypeError rather than KeyError. 31982 31983 - The makesetup script recognizes files with extension .so or .sl as 31984 (shared) libraries. 31985 31986 - 'access' is no longer a reserved word, and all code related to its 31987 implementation is gone (or at least #ifdef'ed out). This should make 31988 Python a little speedier too! 31989 31990 - Performance enhancements suggested by Sjoerd Mullender. This includes 31991 the introduction of two new optional function pointers in type object, 31992 getattro and setattro, which are like getattr and setattr but take a 31993 string object instead of a C string pointer. 31994 31995 - New operations in string module: lstrip(s) and rstrip(s) strip whitespace 31996 only on the left or only on the right, A new optional third argument to 31997 split() specifies the maximum number of separators honored (so 31998 splitfields(s, sep, n) returns a list of at most n+1 elements). (Since 31999 1.3, splitfields(s, None) is totally equivalent to split(s).) 32000 string.capwords() has an optional second argument specifying the 32001 separator (which is passed to split()). 32002 32003 - regsub.split() has the same addition as string.split(). regsub.splitx(s, 32004 sep, maxsep) implements the functionality that was regsub.split(s, 1) in 32005 1.4beta2 (return a list containing the delimiters as well as the words). 32006 32007 - Final touch for AIX loading, rewritten Misc/AIX-NOTES. 32008 32009 - In Modules/_tkinter.c, when using Tk 4.1 or higher, use className 32010 argument to _tkinter.create() to set Tcl's argv0 variable, so X 32011 resources use the right resource class again. 32012 32013 - Add #undef fabs to Modules/mathmodule.c for macintosh. 32014 32015 - Added some macro renames for AIX in Modules/operator.c. 32016 32017 - Removed spurious 'E' from Doc/liberrno.tex. 32018 32019 - Got rid of some cruft in Misc/ (dlMakefile, pyimenu.el); added new 32020 Misc/gMakefile and new version of Misc/python-mode.el. 32021 32022 - Fixed typo in Lib/ntpath.py (islink has "return false" which gives a 32023 NameError). 32024 32025 - Added missing "from types import *" to Lib/tkinter/Canvas.py. 32026 32027 - Added hint about using default args for __init__ to pickle docs. 32028 32029 - Corrected typo in Inclide/abstract.h: PySequence_Lenth -> 32030 PySequence_Length. 32031 32032 - Some improvements to Doc/texi2html.py. 32033 32034 - In Python/import.c, Cast unsigned char * in struct _frozen to char * 32035 in calls to rds_object(). 32036 32037 - In doc/ref4.tex, added note about scope of lambda bodies. 32038 32039 What's new in 1.4beta2 (since beta1)? 32040 ------------------------------------- 32041 32042 - Portability bug in the md5.h header solved. 32043 32044 - The PC build procedure now really works, and sets sys.platform to a 32045 meaningful value (a few things were botched in beta 1). Lib/dos_8x3 32046 is now a standard part of the distribution (alas). 32047 32048 - More improvements to the installation procedure. Typing "make install" 32049 now inserts the version number in the pathnames of almost everything 32050 installed, and creates the machine dependent modules (FCNTL.py etc.) if not 32051 supplied by the distribution. (XXX There's still a problem with the latter 32052 because the "regen" script requires that Python is installed. Some manual 32053 intervention may still be required.) (This has been fixed in 1.4beta3.) 32054 32055 - New modules: errno, operator (XXX). 32056 32057 - Changes for use with Numerical Python: built-in function slice() and 32058 Ellipses object, and corresponding syntax: 32059 32060 x[lo:hi:stride] == x[slice(lo, hi, stride)] 32061 x[a, ..., z] == x[(a, Ellipses, z)] 32062 32063 - New documentation for errno and cgi modules. 32064 32065 - The directory containing the script passed to the interpreter is 32066 inserted in from of sys.path; "." is no longer a default path 32067 component. 32068 32069 - Optional third string argument to string.translate() specifies 32070 characters to delete. New function string.maketrans() creates a 32071 translation table for translate() or for regex.compile(). 32072 32073 - Module posix (and hence module os under Unix) now supports putenv(). 32074 Moreover, module os is enhanced so that if putenv() is supported, 32075 assignments to os.environ entries make the appropriate putenv() call. 32076 (XXX the putenv() implementation can leak a small amount of memory per 32077 call.) 32078 32079 - pdb.py can now be invoked from the command line to debug a script: 32080 python pdb.py <script> <arg> ... 32081 32082 - Much improved parseaddr() in rfc822. 32083 32084 - In cgi.py, you can now pass an alternative value for environ to 32085 nearly all functions. 32086 32087 - You can now assign to instance variables whose name begins and ends 32088 with '__'. 32089 32090 - New version of Fred Drake's parser module and associates (token, 32091 symbol, AST). 32092 32093 - New PYTHON_API_VERSION value and .pyc file magic number (again!). 32094 32095 - The "complex" internal structure type is now called "Py_complex" to 32096 avoid name conflicts. 32097 32098 - Numerous small bugs fixed. 32099 32100 - Slight pickle speedups. 32101 32102 - Some slight speedups suggested by Sjoerd (more coming in 1.4 final). 32103 32104 - NeXT portability mods by Bill Bumgarner integrated. 32105 32106 - Modules regexmodule.c, bsddbmodule.c and xxmodule.c have been 32107 converted to new naming style. 32108 32109 32110 What's new in 1.4beta1 (since 1.3)? 32111 ----------------------------------- 32112 32113 - Added sys.platform and sys.exec_platform for Bill Janssen. 32114 32115 - Installation has been completely overhauled. "make install" now installs 32116 everything, not just the python binary. Installation uses the install-sh 32117 script (borrowed from X11) to install each file. 32118 32119 - New functions in the posix module: mkfifo, plock, remove (== unlink), 32120 and ftruncate. More functions are also available under NT. 32121 32122 - New function in the fcntl module: flock. 32123 32124 - Shared library support for FreeBSD. 32125 32126 - The --with-readline option can now be used without a DIRECTORY argument, 32127 for systems where libreadline.* is in one of the standard places. It is 32128 also possible for it to be a shared library. 32129 32130 - The extension tkinter has been renamed to _tkinter, to avoid confusion 32131 with Tkinter.py oncase insensitive file systems. It now supports Tk 4.1 as 32132 well as 4.0. 32133 32134 - Author's change of address from CWI in Amsterdam, The Netherlands, to 32135 CNRI in Reston, VA, USA. 32136 32137 - The math.hypot() function is now always available (if it isn't found in 32138 the C math library, Python provides its own implementation). 32139 32140 - The latex documentation is now compatible with latex2e, thanks to David 32141 Ascher. 32142 32143 - The expression x**y is now equivalent to pow(x, y). 32144 32145 - The indexing expression x[a, b, c] is now equivalent to x[(a, b, c)]. 32146 32147 - Complex numbers are now supported. Imaginary constants are written with 32148 a 'j' or 'J' prefix, general complex numbers can be formed by adding a real 32149 part to an imaginary part, like 3+4j. Complex numbers are always stored in 32150 floating point form, so this is equivalent to 3.0+4.0j. It is also 32151 possible to create complex numbers with the new built-in function 32152 complex(re, [im]). For the footprint-conscious, complex number support can 32153 be disabled by defining the symbol WITHOUT_COMPLEX. 32154 32155 - New built-in function list() is the long-awaited counterpart of tuple(). 32156 32157 - There's a new "cmath" module which provides the same functions as the 32158 "math" library but with complex arguments and results. (There are very 32159 good reasons why math.sqrt(-1) still raises an exception -- you have to use 32160 cmath.sqrt(-1) to get 1j for an answer.) 32161 32162 - The Python.h header file (which is really the same as allobjects.h except 32163 it disables support for old style names) now includes several more files, 32164 so you have to have fewer #include statements in the average extension. 32165 32166 - The NDEBUG symbol is no longer used. Code that used to be dependent on 32167 the presence of NDEBUG is now present on the absence of DEBUG. TRACE_REFS 32168 and REF_DEBUG have been renamed to Py_TRACE_REFS and Py_REF_DEBUG, 32169 respectively. At long last, the source actually compiles and links without 32170 errors when this symbol is defined. 32171 32172 - Several symbols that didn't follow the new naming scheme have been 32173 renamed (usually by adding to rename2.h) to use a Py or _Py prefix. There 32174 are no external symbols left without a Py or _Py prefix, not even those 32175 defined by sources that were incorporated from elsewhere (regexpr.c, 32176 md5c.c). (Macros are a different story...) 32177 32178 - There are now typedefs for the structures defined in config.c and 32179 frozen.c. 32180 32181 - New PYTHON_API_VERSION value and .pyc file magic number. 32182 32183 - New module Bastion. (XXX) 32184 32185 - Improved performance of StringIO module. 32186 32187 - UserList module now supports + and * operators. 32188 32189 - The binhex and binascii modules now actually work. 32190 32191 - The cgi module has been almost totally rewritten and documented. 32192 It now supports file upload and a new data type to handle forms more 32193 flexibly. 32194 32195 - The formatter module (for use with htmllib) has been overhauled (again). 32196 32197 - The ftplib module now supports passive mode and has doc strings. 32198 32199 - In (ideally) all places where binary files are read or written, the file 32200 is now correctly opened in binary mode ('rb' or 'wb') so the code will work 32201 on Mac or PC. 32202 32203 - Dummy versions of os.path.expandvars() and expanduser() are now provided 32204 on non-Unix platforms. 32205 32206 - Module urllib now has two new functions url2pathname and pathname2url 32207 which turn local filenames into "file:..." URLs using the same rules as 32208 Netscape (why be different). it also supports urlretrieve() with a 32209 pathname parameter, and honors the proxy environment variables (http_proxy 32210 etc.). The URL parsing has been improved somewhat, too. 32211 32212 - Micro improvements to urlparse. Added urlparse.urldefrag() which 32213 removes a trailing ``#fragment'' if any. 32214 32215 - The mailbox module now supports MH style message delimiters as well. 32216 32217 - The mhlib module contains some new functionality: setcontext() to set the 32218 current folder and parsesequence() to parse a sequence as commonly passed 32219 to MH commands (e.g. 1-10 or last:5). 32220 32221 - New module mimify for conversion to and from MIME format of email 32222 messages. 32223 32224 - Module ni now automatically installs itself when first imported -- this 32225 is against the normal rule that modules should define classes and functions 32226 but not invoke them, but appears more useful in the case that two 32227 different, independent modules want to use ni's features. 32228 32229 - Some small performance enhancements in module pickle. 32230 32231 - Small interface change to the profile.run*() family of functions -- more 32232 sensible handling of return values. 32233 32234 - The officially registered Mac creator for Python files is 'Pyth'. This 32235 replaces 'PYTH' which was used before but never registered. 32236 32237 - Added regsub.capwords(). (XXX) 32238 32239 - Added string.capwords(), string.capitalize() and string.translate(). 32240 (XXX) 32241 32242 - Fixed an interface bug in the rexec module: it was impossible to pass a 32243 hooks instance to the RExec class. rexec now also supports the dynamic 32244 loading of modules from shared libraries. Some other interfaces have been 32245 added too. 32246 32247 - Module rfc822 now caches the headers in a dictionary for more efficient 32248 lookup. 32249 32250 - The sgmllib module now understands a limited number of SGML "shorthands" 32251 like <A/.../ for <A>...</A>. (It's not clear that this was a good idea...) 32252 32253 - The tempfile module actually tries a number of different places to find a 32254 usable temporary directory. (This was prompted by certain Linux 32255 installations that appear to be missing a /usr/tmp directory.) [A bug in 32256 the implementation that would ignore a pre-existing tmpdir global has been 32257 fixed in beta3.] 32258 32259 - Much improved and enhanved FileDialog module for Tkinter. 32260 32261 - Many small changes to Tkinter, to bring it more in line with Tk 4.0 (as 32262 well as Tk 4.1). 32263 32264 - New socket interfaces include ntohs(), ntohl(), htons(), htonl(), and 32265 s.dup(). Sockets now work correctly on Windows. On Windows, the built-in 32266 extension is called _socket and a wrapper module win/socket.py provides 32267 "makefile()" and "dup()" functionality. On Windows, the select module 32268 works only with socket objects. 32269 32270 - Bugs in bsddb module fixed (e.g. missing default argument values). 32271 32272 - The curses extension now includes <ncurses.h> when available. 32273 32274 - The gdbm module now supports opening databases in "fast" mode by 32275 specifying 'f' as the second character or the mode string. 32276 32277 - new variables sys.prefix and sys.exec_prefix pass corresponding 32278 configuration options / Makefile variables to the Python programmer. 32279 32280 - The ``new'' module now supports creating new user-defined classes as well 32281 as instances thereof. 32282 32283 - The soundex module now sports get_soundex() to get the soundex value for an 32284 arbitrary string (formerly it would only do soundex-based string 32285 comparison) as well as doc strings. 32286 32287 - New object type "cobject" to safely wrap void pointers for passing them 32288 between various extension modules. 32289 32290 - More efficient computation of float**smallint. 32291 32292 - The mysterious bug whereby "x.x" (two occurrences of the same 32293 one-character name) typed from the commandline would sometimes fail 32294 mysteriously. 32295 32296 - The initialization of the readline function can now be invoked by a C 32297 extension through PyOS_ReadlineInit(). 32298 32299 - There's now an externally visible pointer PyImport_FrozenModules which 32300 can be changed by an embedding application. 32301 32302 - The argument parsing functions now support a new format character 'D' to 32303 specify complex numbers. 32304 32305 - Various memory leaks plugged and bugs fixed. 32306 32307 - Improved support for posix threads (now that real implementations are 32308 beginning to apepar). Still no fully functioning semaphores. 32309 32310 - Some various and sundry improvements and new entries in the Tools 32311 directory. 32312 32313 32314 ===================================== 32315 ==> Release 1.3 (13 October 1995) <== 32316 ===================================== 32317 32318 Major change 32319 ============ 32320 32321 Two words: Keyword Arguments. See the first section of Chapter 12 of 32322 the Tutorial. 32323 32324 (The rest of this file is textually the same as the remaining sections 32325 of that chapter.) 32326 32327 32328 Changes to the WWW and Internet tools 32329 ===================================== 32330 32331 The "htmllib" module has been rewritten in an incompatible fashion. 32332 The new version is considerably more complete (HTML 2.0 except forms, 32333 but including all ISO-8859-1 entity definitions), and easy to use. 32334 Small changes to "sgmllib" have also been made, to better match the 32335 tokenization of HTML as recognized by other web tools. 32336 32337 A new module "formatter" has been added, for use with the new 32338 "htmllib" module. 32339 32340 The "urllib"and "httplib" modules have been changed somewhat to allow 32341 overriding unknown URL types and to support authentication. They now 32342 use "mimetools.Message" instead of "rfc822.Message" to parse headers. 32343 The "endrequest()" method has been removed from the HTTP class since 32344 it breaks the interaction with some servers. 32345 32346 The "rfc822.Message" class has been changed to allow a flag to be 32347 passed in that says that the file is unseekable. 32348 32349 The "ftplib" module has been fixed to be (hopefully) more robust on 32350 Linux. 32351 32352 Several new operations that are optionally supported by servers have 32353 been added to "nntplib": "xover", "xgtitle", "xpath" and "date". 32354 32355 Other Language Changes 32356 ====================== 32357 32358 The "raise" statement now takes an optional argument which specifies 32359 the traceback to be used when printing the exception's stack trace. 32360 This must be a traceback object, such as found in "sys.exc_traceback". 32361 When omitted or given as "None", the old behavior (to generate a stack 32362 trace entry for the current stack frame) is used. 32363 32364 The tokenizer is now more tolerant of alien whitespace. Control-L in 32365 the leading whitespace of a line resets the column number to zero, 32366 while Control-R just before the end of the line is ignored. 32367 32368 Changes to Built-in Operations 32369 ============================== 32370 32371 For file objects, "f.read(0)" and "f.readline(0)" now return an empty 32372 string rather than reading an unlimited number of bytes. For the 32373 latter, omit the argument altogether or pass a negative value. 32374 32375 A new system variable, "sys.platform", has been added. It specifies 32376 the current platform, e.g. "sunos5" or "linux1". 32377 32378 The built-in functions "input()" and "raw_input()" now use the GNU 32379 readline library when it has been configured (formerly, only 32380 interactive input to the interpreter itself was read using GNU 32381 readline). The GNU readline library provides elaborate line editing 32382 and history. The Python debugger ("pdb") is the first beneficiary of 32383 this change. 32384 32385 Two new built-in functions, "globals()" and "locals()", provide access 32386 to dictionaries containming current global and local variables, 32387 respectively. (These augment rather than replace "vars()", which 32388 returns the current local variables when called without an argument, 32389 and a module's global variables when called with an argument of type 32390 module.) 32391 32392 The built-in function "compile()" now takes a third possible value for 32393 the kind of code to be compiled: specifying "'single'" generates code 32394 for a single interactive statement, which prints the output of 32395 expression statements that evaluate to something else than "None". 32396 32397 Library Changes 32398 =============== 32399 32400 There are new module "ni" and "ihooks" that support importing modules 32401 with hierarchical names such as "A.B.C". This is enabled by writing 32402 "import ni; ni.ni()" at the very top of the main program. These 32403 modules are amply documented in the Python source. 32404 32405 The module "rexec" has been rewritten (incompatibly) to define a class 32406 and to use "ihooks". 32407 32408 The "string.split()" and "string.splitfields()" functions are now the 32409 same function (the presence or absence of the second argument 32410 determines which operation is invoked); similar for "string.join()" 32411 and "string.joinfields()". 32412 32413 The "Tkinter" module and its helper "Dialog" have been revamped to use 32414 keyword arguments. Tk 4.0 is now the standard. A new module 32415 "FileDialog" has been added which implements standard file selection 32416 dialogs. 32417 32418 The optional built-in modules "dbm" and "gdbm" are more coordinated 32419 --- their "open()" functions now take the same values for their "flag" 32420 argument, and the "flag" and "mode" argument have default values (to 32421 open the database for reading only, and to create the database with 32422 mode "0666" minuse the umask, respectively). The memory leaks have 32423 finally been fixed. 32424 32425 A new dbm-like module, "bsddb", has been added, which uses the BSD DB 32426 package's hash method. 32427 32428 A portable (though slow) dbm-clone, implemented in Python, has been 32429 added for systems where none of the above is provided. It is aptly 32430 dubbed "dumbdbm". 32431 32432 The module "anydbm" provides a unified interface to "bsddb", "gdbm", 32433 "dbm", and "dumbdbm", choosing the first one available. 32434 32435 A new extension module, "binascii", provides a variety of operations 32436 for conversion of text-encoded binary data. 32437 32438 There are three new or rewritten companion modules implemented in 32439 Python that can encode and decode the most common such formats: "uu" 32440 (uuencode), "base64" and "binhex". 32441 32442 A module to handle the MIME encoding quoted-printable has also been 32443 added: "quopri". 32444 32445 The parser module (which provides an interface to the Python parser's 32446 abstract syntax trees) has been rewritten (incompatibly) by Fred 32447 Drake. It now lets you change the parse tree and compile the result! 32448 32449 The \code{syslog} module has been upgraded and documented. 32450 32451 Other Changes 32452 ============= 32453 32454 The dynamic module loader recognizes the fact that different filenames 32455 point to the same shared library and loads the library only once, so 32456 you can have a single shared library that defines multiple modules. 32457 (SunOS / SVR4 style shared libraries only.) 32458 32459 Jim Fulton's ``abstract object interface'' has been incorporated into 32460 the run-time API. For more detailes, read the files 32461 "Include/abstract.h" and "Objects/abstract.c". 32462 32463 The Macintosh version is much more robust now. 32464 32465 Numerous things I have forgotten or that are so obscure no-one will 32466 notice them anyway :-) 32467 32468 32469 =================================== 32470 ==> Release 1.2 (13 April 1995) <== 32471 =================================== 32472 32473 - Changes to Misc/python-mode.el: 32474 - Wrapping and indentation within triple quote strings should work 32475 properly now. 32476 - `Standard' bug reporting mechanism (use C-c C-b) 32477 - py-mark-block was moved to C-c C-m 32478 - C-c C-v shows you the python-mode version 32479 - a basic python-font-lock-keywords has been added for Emacs 19 32480 font-lock colorizations. 32481 - proper interaction with pending-del and del-sel modes. 32482 - New py-electric-colon (:) command for improved outdenting. Also 32483 py-indent-line (TAB) should handle outdented lines better. 32484 - New commands py-outdent-left (C-c C-l) and py-indent-right (C-c C-r) 32485 32486 - The Library Reference has been restructured, and many new and 32487 existing modules are now documented, in particular the debugger and 32488 the profiler, as well as the persistency and the WWW/Internet support 32489 modules. 32490 32491 - All known bugs have been fixed. For example the pow(2,2,3L) bug on 32492 Linux has been fixed. Also the re-entrancy problems with __del__ have 32493 been fixed. 32494 32495 - All known memory leaks have been fixed. 32496 32497 - Phase 2 of the Great Renaming has been executed. The header files 32498 now use the new names (PyObject instead of object, etc.). The linker 32499 also sees the new names. Most source files still use the old names, 32500 by virtue of the rename2.h header file. If you include Python.h, you 32501 only see the new names. Dynamically linked modules have to be 32502 recompiled. (Phase 3, fixing the rest of the sources, will be 32503 executed gradually with the release later versions.) 32504 32505 - The hooks for implementing "safe-python" (better called "restricted 32506 execution") are in place. Specifically, the import statement is 32507 implemented by calling the built-in function __import__, and the 32508 built-in names used in a particular scope are taken from the 32509 dictionary __builtins__ in that scope's global dictionary. See also 32510 the new (unsupported, undocumented) module rexec.py. 32511 32512 - The import statement now supports the syntax "import a.b.c" and 32513 "from a.b.c import name". No officially supported implementation 32514 exists, but one can be prototyped by replacing the built-in __import__ 32515 function. A proposal by Ken Manheimer is provided as newimp.py. 32516 32517 - All machinery used by the import statement (or the built-in 32518 __import__ function) is now exposed through the new built-in module 32519 "imp" (see the library reference manual). All dynamic loading 32520 machinery is moved to the new file importdl.c. 32521 32522 - Persistent storage is supported through the use of the modules 32523 "pickle" and "shelve" (implemented in Python). There's also a "copy" 32524 module implementing deepcopy and normal (shallow) copy operations. 32525 See the library reference manual. 32526 32527 - Documentation strings for many object types are accessible through 32528 the __doc__ attribute. Modules, classes and functions support special 32529 syntax to initialize the __doc__ attribute: if the first statement 32530 consists of just a string literal, that string literal becomes the 32531 value of the __doc__ attribute. The default __doc__ attribute is 32532 None. Documentation strings are also supported for built-in 32533 functions, types and modules; however this feature hasn't been widely 32534 used yet. See the 'new' module for an example. (Basically, the type 32535 object's tp_doc field contains the doc string for the type, and the 32536 4th member of the methodlist structure contains the doc string for the 32537 method.) 32538 32539 - The __coerce__ and __cmp__ methods for user-defined classes once 32540 again work as expected. As an example, there's a new standard class 32541 Complex in the library. 32542 32543 - The functions posix.popen() and posix.fdopen() now have an optional 32544 third argument to specify the buffer size, and default their second 32545 (mode) argument to 'r' -- in analogy to the built-in open() function. 32546 The same applies to posixfile.open() and the socket method makefile(). 32547 32548 - The thread.exit_thread() function now raises SystemExit so that 32549 'finally' clauses are honored and a memory leak is plugged. 32550 32551 - Improved X11 and Motif support, by Sjoerd Mullender. This extension 32552 is being maintained and distributed separately. 32553 32554 - Improved support for the Apple Macintosh, in part by Jack Jansen, 32555 e.g. interfaces to (a few) resource mananger functions, get/set file 32556 type and creator, gestalt, sound manager, speech manager, MacTCP, comm 32557 toolbox, and the think C console library. This is being maintained 32558 and distributed separately. 32559 32560 - Improved version for Windows NT, by Mark Hammond. This is being 32561 maintained and distributed separately. 32562 32563 - Used autoconf 2.0 to generate the configure script. Adapted 32564 configure.in to use the new features in autoconf 2.0. 32565 32566 - It now builds on the NeXT without intervention, even on the 3.3 32567 Sparc pre-release. 32568 32569 - Characters passed to isspace() and friends are masked to nonnegative 32570 values. 32571 32572 - Correctly compute pow(-3.0, 3). 32573 32574 - Fix portability problems with getopt (configure now checks for a 32575 non-GNU getopt). 32576 32577 - Don't add frozenmain.o to libPython.a. 32578 32579 - Exceptions can now be classes. ALl built-in exceptions are still 32580 string objects, but this will change in the future. 32581 32582 - The socket module exports a long list of socket related symbols. 32583 (More built-in modules will export their symbolic constants instead of 32584 relying on a separately generated Python module.) 32585 32586 - When a module object is deleted, it clears out its own dictionary. 32587 This fixes a circularity in the references between functions and 32588 their global dictionary. 32589 32590 - Changed the error handling by [new]getargs() e.g. for "O&". 32591 32592 - Dynamic loading of modules using shared libraries is supported for 32593 several new platforms. 32594 32595 - Support "O&", "[...]" and "{...}" in mkvalue(). 32596 32597 - Extension to findmethod(): findmethodinchain() (where a chain is a 32598 linked list of methodlist arrays). The calling interface for 32599 findmethod() has changed: it now gets a pointer to the (static!) 32600 methodlist structure rather than just to the function name -- this 32601 saves copying flags etc. into the (short-lived) method object. 32602 32603 - The callable() function is now public. 32604 32605 - Object types can define a few new operations by setting function 32606 pointers in the type object structure: tp_call defines how an object 32607 is called, and tp_str defines how an object's str() is computed. 32608 32609 32610 =================================== 32611 ==> Release 1.1.1 (10 Nov 1994) <== 32612 =================================== 32613 32614 This is a pure bugfix release again. See the ChangeLog file for details. 32615 32616 One exception: a few new features were added to tkinter. 32617 32618 32619 ================================= 32620 ==> Release 1.1 (11 Oct 1994) <== 32621 ================================= 32622 32623 This release adds several new features, improved configuration and 32624 portability, and fixes more bugs than I can list here (including some 32625 memory leaks). 32626 32627 The source compiles and runs out of the box on more platforms than 32628 ever -- including Windows NT. Makefiles or projects for a variety of 32629 non-UNIX platforms are provided. 32630 32631 APOLOGY: some new features are badly documented or not at all. I had 32632 the choice -- postpone the new release indefinitely, or release it 32633 now, with working code but some undocumented areas. The problem with 32634 postponing the release is that people continue to suffer from existing 32635 bugs, and send me patches based on the previous release -- which I 32636 can't apply directly because my own source has changed. Also, some 32637 new modules (like signal) have been ready for release for quite some 32638 time, and people are anxiously waiting for them. In the case of 32639 signal, the interface is simple enough to figure out without 32640 documentation (if you're anxious enough :-). In this case it was not 32641 simple to release the module on its own, since it relies on many small 32642 patches elsewhere in the source. 32643 32644 For most new Python modules, the source code contains comments that 32645 explain how to use them. Documentation for the Tk interface, written 32646 by Matt Conway, is available as tkinter-doc.tar.gz from the Python 32647 home and mirror ftp sites (see Misc/FAQ for ftp addresses). For the 32648 new operator overloading facilities, have a look at Demo/classes: 32649 Complex.py and Rat.py show how to implement a numeric type without and 32650 with __coerce__ method. Also have a look at the end of the Tutorial 32651 document (Doc/tut.tex). If you're still confused: use the newsgroup 32652 or mailing list. 32653 32654 32655 New language features: 32656 32657 - More flexible operator overloading for user-defined classes 32658 (INCOMPATIBLE WITH PREVIOUS VERSIONS!) See end of tutorial. 32659 32660 - Classes can define methods named __getattr__, __setattr__ and 32661 __delattr__ to trap attribute accesses. See end of tutorial. 32662 32663 - Classes can define method __call__ so instances can be called 32664 directly. See end of tutorial. 32665 32666 32667 New support facilities: 32668 32669 - The Makefiles (for the base interpreter as well as for extensions) 32670 now support creating dynamically loadable modules if the platform 32671 supports shared libraries. 32672 32673 - Passing the interpreter a .pyc file as script argument will execute 32674 the code in that file. (On the Mac such files can be double-clicked!) 32675 32676 - New Freeze script, to create independently distributable "binaries" 32677 of Python programs -- look in Demo/freeze 32678 32679 - Improved h2py script (in Demo/scripts) follows #includes and 32680 supports macros with one argument 32681 32682 - New module compileall generates .pyc files for all modules in a 32683 directory (tree) without also executing them 32684 32685 - Threads should work on more platforms 32686 32687 32688 New built-in modules: 32689 32690 - tkinter (support for Tcl's Tk widget set) is now part of the base 32691 distribution 32692 32693 - signal allows catching or ignoring UNIX signals (unfortunately still 32694 undocumented -- any taker?) 32695 32696 - termios provides portable access to POSIX tty settings 32697 32698 - curses provides an interface to the System V curses library 32699 32700 - syslog provides an interface to the (BSD?) syslog daemon 32701 32702 - 'new' provides interfaces to create new built-in object types 32703 (e.g. modules and functions) 32704 32705 - sybase provides an interface to SYBASE database 32706 32707 32708 New/obsolete built-in methods: 32709 32710 - callable(x) tests whether x can be called 32711 32712 - sockets now have a setblocking() method 32713 32714 - sockets no longer have an allowbroadcast() method 32715 32716 - socket methods send() and sendto() return byte count 32717 32718 32719 New standard library modules: 32720 32721 - types.py defines standard names for built-in types, e.g. StringType 32722 32723 - urlparse.py parses URLs according to the latest Internet draft 32724 32725 - uu.py does uuencode/uudecode (not the fastest in the world, but 32726 quicker than installing uuencode on a non-UNIX machine :-) 32727 32728 - New, faster and more powerful profile module.py 32729 32730 - mhlib.py provides interface to MH folders and messages 32731 32732 32733 New facilities for extension writers (unfortunately still 32734 undocumented): 32735 32736 - newgetargs() supports optional arguments and improved error messages 32737 32738 - O!, O& O? formats for getargs allow more versatile type checking of 32739 non-standard types 32740 32741 - can register pending asynchronous callback, to be called the next 32742 time the Python VM begins a new instruction (Py_AddPendingCall) 32743 32744 - can register cleanup routines to be called when Python exits 32745 (Py_AtExit) 32746 32747 - makesetup script understands C++ files in Setup file (use file.C 32748 or file.cc) 32749 32750 - Make variable OPT is passed on to sub-Makefiles 32751 32752 - An init<module>() routine may signal an error by not entering 32753 the module in the module table and raising an exception instead 32754 32755 - For long module names, instead of foobarbletchmodule.c you can 32756 use foobarbletch.c 32757 32758 - getintvalue() and getfloatvalue() try to convert any object 32759 instead of requiring an "intobject" or "floatobject" 32760 32761 - All the [new]getargs() formats that retrieve an integer value 32762 will now also work if a float is passed 32763 32764 - C function listtuple() converts list to tuple, fast 32765 32766 - You should now call sigcheck() instead of intrcheck(); 32767 sigcheck() also sets an exception when it returns nonzero 32768 32769 32770 ==================================== 32771 ==> Release 1.0.3 (14 July 1994) <== 32772 ==================================== 32773 32774 This release consists entirely of bug fixes to the C sources; see the 32775 head of ../ChangeLog for a complete list. Most important bugs fixed: 32776 32777 - Sometimes the format operator (string%expr) would drop the last 32778 character of the format string 32779 32780 - Tokenizer looped when last line did not end in \n 32781 32782 - Bug when triple-quoted string ended in quote plus newline 32783 32784 - Typo in socketmodule (listen) (== instead of =) 32785 32786 - typing vars() at the >>> prompt would cause recursive output 32787 32788 32789 ================================== 32790 ==> Release 1.0.2 (4 May 1994) <== 32791 ================================== 32792 32793 Overview of the most visible changes. Bug fixes are not listed. See 32794 also ChangeLog. 32795 32796 Tokens 32797 ------ 32798 32799 * String literals follow Standard C rules: they may be continued on 32800 the next line using a backslash; adjacent literals are concatenated 32801 at compile time. 32802 32803 * A new kind of string literals, surrounded by triple quotes (""" or 32804 '''), can be continued on the next line without a backslash. 32805 32806 Syntax 32807 ------ 32808 32809 * Function arguments may have a default value, e.g. def f(a, b=1); 32810 defaults are evaluated at function definition time. This also applies 32811 to lambda. 32812 32813 * The try-except statement has an optional else clause, which is 32814 executed when no exception occurs in the try clause. 32815 32816 Interpreter 32817 ----------- 32818 32819 * The result of a statement-level expression is no longer printed, 32820 except_ for expressions entered interactively. Consequently, the -k 32821 command line option is gone. 32822 32823 * The result of the last printed interactive expression is assigned to 32824 the variable '_'. 32825 32826 * Access to implicit global variables has been speeded up by removing 32827 an always-failing dictionary lookup in the dictionary of local 32828 variables (mod suggested by Steve Makewski and Tim Peters). 32829 32830 * There is a new command line option, -u, to force stdout and stderr 32831 to be unbuffered. 32832 32833 * Incorporated Steve Majewski's mods to import.c for dynamic loading 32834 under AIX. 32835 32836 * Fewer chances of dumping core when trying to reload or re-import 32837 static built-in, dynamically loaded built-in, or frozen modules. 32838 32839 * Loops over sequences now don't ask for the sequence's length when 32840 they start, but try to access items 0, 1, 2, and so on until they hit 32841 an IndexError. This makes it possible to create classes that generate 32842 infinite or indefinite sequences a la Steve Majewski. This affects 32843 for loops, the (not) in operator, and the built-in functions filter(), 32844 map(), max(), min(), reduce(). 32845 32846 Changed Built-in operations 32847 --------------------------- 32848 32849 * The '%' operator on strings (printf-style formatting) supports a new 32850 feature (adapted from a patch by Donald Beaudry) to allow 32851 '%(<key>)<format>' % {...} to take values from a dictionary by name 32852 instead of from a tuple by position (see also the new function 32853 vars()). 32854 32855 * The '%s' formatting operator is changed to accept any type and 32856 convert it to a string using str(). 32857 32858 * Dictionaries with more than 20,000 entries can now be created 32859 (thanks to Steve Kirsch). 32860 32861 New Built-in Functions 32862 ---------------------- 32863 32864 * vars() returns a dictionary containing the local variables; vars(m) 32865 returns a dictionary containing the variables of module m. Note: 32866 dir(x) is now equivalent to vars(x).keys(). 32867 32868 Changed Built-in Functions 32869 -------------------------- 32870 32871 * open() has an optional third argument to specify the buffer size: 0 32872 for unbuffered, 1 for line buffered, >1 for explicit buffer size, <0 32873 for default. 32874 32875 * open()'s second argument is now optional; it defaults to "r". 32876 32877 * apply() now checks that its second argument is indeed a tuple. 32878 32879 New Built-in Modules 32880 -------------------- 32881 32882 Changed Built-in Modules 32883 ------------------------ 32884 32885 The thread module no longer supports exit_prog(). 32886 32887 New Python Modules 32888 ------------------ 32889 32890 * Module addpack contains a standard interface to modify sys.path to 32891 find optional packages (groups of related modules). 32892 32893 * Module urllib contains a number of functions to access 32894 World-Wide-Web files specified by their URL. 32895 32896 * Module httplib implements the client side of the HTTP protocol used 32897 by World-Wide-Web servers. 32898 32899 * Module gopherlib implements the client side of the Gopher protocol. 32900 32901 * Module mailbox (by Jack Jansen) contains a parser for UNIX and MMDF 32902 style mailbox files. 32903 32904 * Module random contains various random distributions, e.g. gauss(). 32905 32906 * Module lockfile locks and unlocks open files using fcntl (inspired 32907 by a similar module by Andy Bensky). 32908 32909 * Module ntpath (by Jaap Vermeulen) implements path operations for 32910 Windows/NT. 32911 32912 * Module test_thread (in Lib/test) contains a small test set for the 32913 thread module. 32914 32915 Changed Python Modules 32916 ---------------------- 32917 32918 * The string module's expandvars() function is now documented and is 32919 implemented in Python (using regular expressions) instead of forking 32920 off a shell process. 32921 32922 * Module rfc822 now supports accessing the header fields using the 32923 mapping/dictionary interface, e.g. h['subject']. 32924 32925 * Module pdb now makes it possible to set a break on a function 32926 (syntax: break <expression>, where <expression> yields a function 32927 object). 32928 32929 Changed Demos 32930 ------------- 32931 32932 * The Demo/scripts/freeze.py script is working again (thanks to Jaap 32933 Vermeulen). 32934 32935 New Demos 32936 --------- 32937 32938 * Demo/threads/Generator.py is a proposed interface for restartable 32939 functions a la Tim Peters. 32940 32941 * Demo/scripts/newslist.py, by Quentin Stafford-Fraser, generates a 32942 directory full of HTML pages which between them contain links to all 32943 the newsgroups available on your server. 32944 32945 * Demo/dns contains a DNS (Domain Name Server) client. 32946 32947 * Demo/lutz contains miscellaneous demos by Mark Lutz (e.g. psh.py, a 32948 nice enhanced Python shell!!!). 32949 32950 * Demo/turing contains a Turing machine by Amrit Prem. 32951 32952 Documentation 32953 ------------- 32954 32955 * Documented new language features mentioned above (but not all new 32956 modules). 32957 32958 * Added a chapter to the Tutorial describing recent additions to 32959 Python. 32960 32961 * Clarified some sentences in the reference manual, 32962 e.g. break/continue, local/global scope, slice assignment. 32963 32964 Source Structure 32965 ---------------- 32966 32967 * Moved Include/tokenizer.h to Parser/tokenizer.h. 32968 32969 * Added Python/getopt.c for systems that don't have it. 32970 32971 Emacs mode 32972 ---------- 32973 32974 * Indentation of continuated lines is done more intelligently; 32975 consequently the variable py-continuation-offset is gone. 32976 32977 32978 ======================================== 32979 ==> Release 1.0.1 (15 February 1994) <== 32980 ======================================== 32981 32982 * Many portability fixes should make it painless to build Python on 32983 several new platforms, e.g. NeXT, SEQUENT, WATCOM, DOS, and Windows. 32984 32985 * Fixed test for <stdarg.h> -- this broke on some platforms. 32986 32987 * Fixed test for shared library dynalic loading -- this broke on SunOS 32988 4.x using the GNU loader. 32989 32990 * Changed order and number of SVR4 networking libraries (it is now 32991 -lsocket -linet -lnsl, if these libraries exist). 32992 32993 * Installing the build intermediate stages with "make libainstall" now 32994 also installs config.c.in, Setup and makesetup, which are used by the 32995 new Extensions mechanism. 32996 32997 * Improved README file contains more hints and new troubleshooting 32998 section. 32999 33000 * The built-in module strop now defines fast versions of three more 33001 functions of the standard string module: atoi(), atol() and atof(). 33002 The strop versions of atoi() and atol() support an optional second 33003 argument to specify the base (default 10). NOTE: you don't have to 33004 explicitly import strop to use the faster versions -- the string 33005 module contains code to let versions from stop override the default 33006 versions. 33007 33008 * There is now a working Lib/dospath.py for those who use Python under 33009 DOS (or Windows). Thanks, Jaap! 33010 33011 * There is now a working Modules/dosmodule.c for DOS (or Windows) 33012 system calls. 33013 33014 * Lib.os.py has been reorganized (making it ready for more operating 33015 systems). 33016 33017 * Lib/ospath.py is now obsolete (use os.path instead). 33018 33019 * Many fixes to the tutorial to make it match Python 1.0. Thanks, 33020 Tim! 33021 33022 * Fixed Doc/Makefile, Doc/README and various scripts there. 33023 33024 * Added missing description of fdopen to Doc/libposix.tex. 33025 33026 * Made cleanup() global, for the benefit of embedded applications. 33027 33028 * Added parsing of addresses and dates to Lib/rfc822.py. 33029 33030 * Small fixes to Lib/aifc.py, Lib/sunau.py, Lib/tzparse.py to make 33031 them usable at all. 33032 33033 * New module Lib/wave.py reads RIFF (*.wav) audio files. 33034 33035 * Module Lib/filewin.py moved to Lib/stdwin/filewin.py where it 33036 belongs. 33037 33038 * New options and comments for Modules/makesetup (used by new 33039 Extension mechanism). 33040 33041 * Misc/HYPE contains text of announcement of 1.0.0 in comp.lang.misc 33042 and elsewhere. 33043 33044 * Fixed coredump in filter(None, 'abcdefg'). 33045 33046 33047 ======================================= 33048 ==> Release 1.0.0 (26 January 1994) <== 33049 ======================================= 33050 33051 As is traditional, so many things have changed that I can't pretend to 33052 be complete in these release notes, but I'll try anyway :-) 33053 33054 Note that the very last section is labeled "remaining bugs". 33055 33056 33057 Source organization and build process 33058 ------------------------------------- 33059 33060 * The sources have finally been split: instead of a single src 33061 subdirectory there are now separate directories Include, Parser, 33062 Grammar, Objects, Python and Modules. Other directories also start 33063 with a capital letter: Misc, Doc, Lib, Demo. 33064 33065 * A few extensions (notably Amoeba and X support) have been moved to a 33066 separate subtree Extensions, which is no longer in the core 33067 distribution, but separately ftp'able as extensions.tar.Z. (The 33068 distribution contains a placeholder Ext-dummy with a description of 33069 the Extensions subtree as well as the most recent versions of the 33070 scripts used there.) 33071 33072 * A few large specialized demos (SGI video and www) have been 33073 moved to a separate subdirectory Demo2, which is no longer in the core 33074 distribution, but separately ftp'able as demo2.tar.Z. 33075 33076 * Parts of the standard library have been moved to subdirectories: 33077 there are now standard subdirectories stdwin, test, sgi and sun4. 33078 33079 * The configuration process has radically changed: I now use GNU 33080 autoconf. This makes it much easier to build on new Unix flavors, as 33081 well as fully supporting VPATH (if your Make has it). The scripts 33082 Configure.py and Addmodule.sh are no longer needed. Many source files 33083 have been adapted in order to work with the symbols that the configure 33084 script generated by autoconf defines (or not); the resulting source is 33085 much more portable to different C compilers and operating systems, 33086 even non Unix systems (a Mac port was done in an afternoon). See the 33087 toplevel README file for a description of the new build process. 33088 33089 * GNU readline (a slightly newer version) is now a subdirectory of the 33090 Python toplevel. It is still not automatically configured (being 33091 totally autoconf-unaware :-). One problem has been solved: typing 33092 Control-C to a readline prompt will now work. The distribution no 33093 longer contains a "super-level" directory (above the python toplevel 33094 directory), and dl, dl-dld and GNU dld are no longer part of the 33095 Python distribution (you can still ftp them from 33096 ftp.cwi.nl:/pub/dynload). 33097 33098 * The DOS functions have been taken out of posixmodule.c and moved 33099 into a separate file dosmodule.c. 33100 33101 * There's now a separate file version.c which contains nothing but 33102 the version number. 33103 33104 * The actual main program is now contained in config.c (unless NO_MAIN 33105 is defined); pythonmain.c now contains a function realmain() which is 33106 called from config.c's main(). 33107 33108 * All files needed to use the built-in module md5 are now contained in 33109 the distribution. The module has been cleaned up considerably. 33110 33111 33112 Documentation 33113 ------------- 33114 33115 * The library manual has been split into many more small latex files, 33116 so it is easier to edit Doc/lib.tex file to create a custom library 33117 manual, describing only those modules supported on your system. (This 33118 is not automated though.) 33119 33120 * A fourth manual has been added, titled "Extending and Embedding the 33121 Python Interpreter" (Doc/ext.tex), which collects information about 33122 the interpreter which was previously spread over several files in the 33123 misc subdirectory. 33124 33125 * The entire documentation is now also available on-line for those who 33126 have a WWW browser (e.g. NCSA Mosaic). Point your browser to the URL 33127 "http://www.cwi.nl/~guido/Python.html". 33128 33129 33130 Syntax 33131 ------ 33132 33133 * Strings may now be enclosed in double quotes as well as in single 33134 quotes. There is no difference in interpretation. The repr() of 33135 string objects will use double quotes if the string contains a single 33136 quote and no double quotes. Thanks to Amrit Prem for these changes! 33137 33138 * There is a new keyword 'exec'. This replaces the exec() built-in 33139 function. If a function contains an exec statement, local variable 33140 optimization is not performed for that particular function, thus 33141 making assignment to local variables in exec statements less 33142 confusing. (As a consequence, os.exec and python.exec have been 33143 renamed to execv.) 33144 33145 * There is a new keyword 'lambda'. An expression of the form 33146 33147 lambda <parameters> : <expression> 33148 33149 yields an anonymous function. This is really only syntactic sugar; 33150 you can just as well define a local function using 33151 33152 def some_temporary_name(<parameters>): return <expression> 33153 33154 Lambda expressions are particularly useful in combination with map(), 33155 filter() and reduce(), described below. Thanks to Amrit Prem for 33156 submitting this code (as well as map(), filter(), reduce() and 33157 xrange())! 33158 33159 33160 Built-in functions 33161 ------------------ 33162 33163 * The built-in module containing the built-in functions is called 33164 __builtin__ instead of builtin. 33165 33166 * New built-in functions map(), filter() and reduce() perform standard 33167 functional programming operations (though not lazily): 33168 33169 - map(f, seq) returns a new sequence whose items are the items from 33170 seq with f() applied to them. 33171 33172 - filter(f, seq) returns a subsequence of seq consisting of those 33173 items for which f() is true. 33174 33175 - reduce(f, seq, initial) returns a value computed as follows: 33176 acc = initial 33177 for item in seq: acc = f(acc, item) 33178 return acc 33179 33180 * New function xrange() creates a "range object". Its arguments are 33181 the same as those of range(), and when used in a for loop a range 33182 objects also behaves identical. The advantage of xrange() over 33183 range() is that its representation (if the range contains many 33184 elements) is much more compact than that of range(). The disadvantage 33185 is that the result cannot be used to initialize a list object or for 33186 the "Python idiom" [RED, GREEN, BLUE] = range(3). On some modern 33187 architectures, benchmarks have shown that "for i in range(...): ..." 33188 actually executes *faster* than "for i in xrange(...): ...", but on 33189 memory starved machines like PCs running DOS range(100000) may be just 33190 too big to be represented at all... 33191 33192 * Built-in function exec() has been replaced by the exec statement -- 33193 see above. 33194 33195 33196 The interpreter 33197 --------------- 33198 33199 * Syntax errors are now not printed to stderr by the parser, but 33200 rather the offending line and other relevant information are packed up 33201 in the SyntaxError exception argument. When the main loop catches a 33202 SyntaxError exception it will print the error in the same format as 33203 previously, but at the proper position in the stack traceback. 33204 33205 * You can now set a maximum to the number of traceback entries 33206 printed by assigning to sys.tracebacklimit. The default is 1000. 33207 33208 * The version number in .pyc files has changed yet again. 33209 33210 * It is now possible to have a .pyc file without a corresponding .py 33211 file. (Warning: this may break existing installations if you have an 33212 old .pyc file lingering around somewhere on your module search path 33213 without a corresponding .py file, when there is a .py file for a 33214 module of the same name further down the path -- the new interpreter 33215 will find the first .pyc file and complain about it, while the old 33216 interpreter would ignore it and use the .py file further down.) 33217 33218 * The list sys.builtin_module_names is now sorted and also contains 33219 the names of a few hardwired built-in modules (sys, __main__ and 33220 __builtin__). 33221 33222 * A module can now find its own name by accessing the global variable 33223 __name__. Assigning to this variable essentially renames the module 33224 (it should also be stored under a different key in sys.modules). 33225 A neat hack follows from this: a module that wants to execute a main 33226 program when called as a script no longer needs to compare 33227 sys.argv[0]; it can simply do "if __name__ == '__main__': main()". 33228 33229 * When an object is printed by the print statement, its implementation 33230 of str() is used. This means that classes can define __str__(self) to 33231 direct how their instances are printed. This is different from 33232 __repr__(self), which should define an unambigous string 33233 representation of the instance. (If __str__() is not defined, it 33234 defaults to __repr__().) 33235 33236 * Functions and code objects can now be compared meaningfully. 33237 33238 * On systems supporting SunOS or SVR4 style shared libraries, dynamic 33239 loading of modules using shared libraries is automatically configured. 33240 Thanks to Bill Jansen and Denis Severson for contributing this change! 33241 33242 33243 Built-in objects 33244 ---------------- 33245 33246 * File objects have acquired a new method writelines() which is the 33247 reverse of readlines(). (It does not actually write lines, just a 33248 list of strings, but the symmetry makes the choice of name OK.) 33249 33250 33251 Built-in modules 33252 ---------------- 33253 33254 * Socket objects no longer support the avail() method. Use the select 33255 module instead, or use this function to replace it: 33256 33257 def avail(f): 33258 import select 33259 return f in select.select([f], [], [], 0)[0] 33260 33261 * Initialization of stdwin is done differently. It actually modifies 33262 sys.argv (taking out the options the X version of stdwin recognizes) 33263 the first time it is imported. 33264 33265 * A new built-in module parser provides a rudimentary interface to the 33266 python parser. Corresponding standard library modules token and symbol 33267 defines the numeric values of tokens and non-terminal symbols. 33268 33269 * The posix module has acquired new functions setuid(), setgid(), 33270 execve(), and exec() has been renamed to execv(). 33271 33272 * The array module is extended with 8-byte object swaps, the 'i' 33273 format character, and a reverse() method. The read() and write() 33274 methods are renamed to fromfile() and tofile(). 33275 33276 * The rotor module has freed of portability bugs. This introduces a 33277 backward compatibility problem: strings encoded with the old rotor 33278 module can't be decoded by the new version. 33279 33280 * For select.select(), a timeout (4th) argument of None means the same 33281 as leaving the timeout argument out. 33282 33283 * Module strop (and hence standard library module string) has acquired 33284 a new function: rindex(). Thanks to Amrit Prem! 33285 33286 * Module regex defines a new function symcomp() which uses an extended 33287 regular expression syntax: parenthesized subexpressions may be labeled 33288 using the form "\(<labelname>...\)", and the group() method can return 33289 sub-expressions by name. Thanks to Tracy Tims for these changes! 33290 33291 * Multiple threads are now supported on Solaris 2. Thanks to Sjoerd 33292 Mullender! 33293 33294 33295 Standard library modules 33296 ------------------------ 33297 33298 * The library is now split in several subdirectories: all stuff using 33299 stdwin is in Lib/stdwin, all SGI specific (or SGI Indigo or GL) stuff 33300 is in Lib/sgi, all Sun Sparc specific stuff is in Lib/sun4, and all 33301 test modules are in Lib/test. The default module search path will 33302 include all relevant subdirectories by default. 33303 33304 * Module os now knows about trying to import dos. It defines 33305 functions execl(), execle(), execlp() and execvp(). 33306 33307 * New module dospath (should be attacked by a DOS hacker though). 33308 33309 * All modules defining classes now define __init__() constructors 33310 instead of init() methods. THIS IS AN INCOMPATIBLE CHANGE! 33311 33312 * Some minor changes and bugfixes module ftplib (mostly Steve 33313 Majewski's suggestions); the debug() method is renamed to 33314 set_debuglevel(). 33315 33316 * Some new test modules (not run automatically by testall though): 33317 test_audioop, test_md5, test_rgbimg, test_select. 33318 33319 * Module string now defines rindex() and rfind() in analogy of index() 33320 and find(). It also defines atof() and atol() (and corresponding 33321 exceptions) in analogy to atoi(). 33322 33323 * Added help() functions to modules profile and pdb. 33324 33325 * The wdb debugger (now in Lib/stdwin) now shows class or instance 33326 variables on a double click. Thanks to Sjoerd Mullender! 33327 33328 * The (undocumented) module lambda has gone -- you couldn't import it 33329 any more, and it was basically more a demo than a library module... 33330 33331 33332 Multimedia extensions 33333 --------------------- 33334 33335 * The optional built-in modules audioop and imageop are now standard 33336 parts of the interpreter. Thanks to Sjoerd Mullender and Jack Jansen 33337 for contributing this code! 33338 33339 * There's a new operation in audioop: minmax(). 33340 33341 * There's a new built-in module called rgbimg which supports portable 33342 efficient reading of SGI RCG image files. Thanks also to Paul 33343 Haeberli for the original code! (Who will contribute a GIF reader?) 33344 33345 * The module aifc is gone -- you should now always use aifc, which has 33346 received a facelift. 33347 33348 * There's a new module sunau., for reading Sun (and NeXT) audio files. 33349 33350 * There's a new module audiodev which provides a uniform interface to 33351 (SGI Indigo and Sun Sparc) audio hardware. 33352 33353 * There's a new module sndhdr which recognizes various sound files by 33354 looking in their header and checking for various magic words. 33355 33356 33357 Optimizations 33358 ------------- 33359 33360 * Most optimizations below can be configured by compile-time flags. 33361 Thanks to Sjoerd Mullender for submitting these optimizations! 33362 33363 * Small integers (default -1..99) are shared -- i.e. if two different 33364 functions compute the same value it is possible (but not 33365 guaranteed!!!) that they return the same *object*. Python programs 33366 can detect this but should *never* rely on it. 33367 33368 * Empty tuples (which all compare equal) are shared in the same 33369 manner. 33370 33371 * Tuples of size up to 20 (default) are put in separate free lists 33372 when deallocated. 33373 33374 * There is a compile-time option to cache a string's hash function, 33375 but this appeared to have a negligeable effect, and as it costs 4 33376 bytes per string it is disabled by default. 33377 33378 33379 Embedding Python 33380 ---------------- 33381 33382 * The initialization interface has been simplified somewhat. You now 33383 only call "initall()" to initialize the interpreter. 33384 33385 * The previously announced renaming of externally visible identifiers 33386 has not been carried out. It will happen in a later release. Sorry. 33387 33388 33389 Miscellaneous bugs that have been fixed 33390 --------------------------------------- 33391 33392 * All known portability bugs. 33393 33394 * Version 0.9.9 dumped core in <listobject>.sort() which has been 33395 fixed. Thanks to Jaap Vermeulen for fixing this and posting the fix 33396 on the mailing list while I was away! 33397 33398 * Core dump on a format string ending in '%', e.g. in the expression 33399 '%' % None. 33400 33401 * The array module yielded a bogus result for concatenation (a+b would 33402 yield a+a). 33403 33404 * Some serious memory leaks in strop.split() and strop.splitfields(). 33405 33406 * Several problems with the nis module. 33407 33408 * Subtle problem when copying a class method from another class 33409 through assignment (the method could not be called). 33410 33411 33412 Remaining bugs 33413 -------------- 33414 33415 * One problem with 64-bit machines remains -- since .pyc files are 33416 portable and use only 4 bytes to represent an integer object, 64-bit 33417 integer literals are silently truncated when written into a .pyc file. 33418 Work-around: use eval('123456789101112'). 33419 33420 * The freeze script doesn't work any more. A new and more portable 33421 one can probably be cooked up using tricks from Extensions/mkext.py. 33422 33423 * The dos support hasn't been tested yet. (Really Soon Now we should 33424 have a PC with a working C compiler!) 33425 33426 33427 =================================== 33428 ==> Release 0.9.9 (29 Jul 1993) <== 33429 =================================== 33430 33431 I *believe* these are the main user-visible changes in this release, 33432 but there may be others. SGI users may scan the {src,lib}/ChangeLog 33433 files for improvements of some SGI specific modules, e.g. aifc and 33434 cl. Developers of extension modules should also read src/ChangeLog. 33435 33436 33437 Naming of C symbols used by the Python interpreter 33438 -------------------------------------------------- 33439 33440 * This is the last release using the current naming conventions. New 33441 naming conventions are explained in the file misc/NAMING. 33442 Summarizing, all externally visible symbols get (at least) a "Py" 33443 prefix, and most functions are renamed to the standard form 33444 PyModule_FunctionName. 33445 33446 * Writers of extensions are urged to start using the new naming 33447 conventions. The next release will use the new naming conventions 33448 throughout (it will also have a different source directory 33449 structure). 33450 33451 * As a result of the preliminary work for the great renaming, many 33452 functions that were accidentally global have been made static. 33453 33454 33455 BETA X11 support 33456 ---------------- 33457 33458 * There are now modules interfacing to the X11 Toolkit Intrinsics, the 33459 Athena widgets, and the Motif 1.1 widget set. These are not yet 33460 documented except through the examples and README file in the demo/x11 33461 directory. It is expected that this interface will be replaced by a 33462 more powerful and correct one in the future, which may or may not be 33463 backward compatible. In other words, this part of the code is at most 33464 BETA level software! (Note: the rest of Python is rock solid as ever!) 33465 33466 * I understand that the above may be a bit of a disappointment, 33467 however my current schedule does not allow me to change this situation 33468 before putting the release out of the door. By releasing it 33469 undocumented and buggy, at least some of the (working!) demo programs, 33470 like itr (my Internet Talk Radio browser) become available to a larger 33471 audience. 33472 33473 * There are also modules interfacing to SGI's "Glx" widget (a GL 33474 window wrapped in a widget) and to NCSA's "HTML" widget (which can 33475 format HyperText Markup Language, the document format used by the 33476 World Wide Web). 33477 33478 * I've experienced some problems when building the X11 support. In 33479 particular, the Xm and Xaw widget sets don't go together, and it 33480 appears that using X11R5 is better than using X11R4. Also the threads 33481 module and its link time options may spoil things. My own strategy is 33482 to build two Python binaries: one for use with X11 and one without 33483 it, which can contain a richer set of built-in modules. Don't even 33484 *think* of loading the X11 modules dynamically... 33485 33486 33487 Environmental changes 33488 --------------------- 33489 33490 * Compiled files (*.pyc files) created by this Python version are 33491 incompatible with those created by the previous version. Both 33492 versions detect this and silently create a correct version, but it 33493 means that it is not a good idea to use the same library directory for 33494 an old and a new interpreter, since they will start to "fight" over 33495 the *.pyc files... 33496 33497 * When a stack trace is printed, the exception is printed last instead 33498 of first. This means that if the beginning of the stack trace 33499 scrolled out of your window you can still see what exception caused 33500 it. 33501 33502 * Sometimes interrupting a Python operation does not work because it 33503 hangs in a blocking system call. You can now kill the interpreter by 33504 interrupting it three times. The second time you interrupt it, a 33505 message will be printed telling you that the third interrupt will kill 33506 the interpreter. The "sys.exitfunc" feature still makes limited 33507 clean-up possible in this case. 33508 33509 33510 Changes to the command line interface 33511 ------------------------------------- 33512 33513 * The python usage message is now much more informative. 33514 33515 * New option -i enters interactive mode after executing a script -- 33516 useful for debugging. 33517 33518 * New option -k raises an exception when an expression statement 33519 yields a value other than None. 33520 33521 * For each option there is now also a corresponding environment 33522 variable. 33523 33524 33525 Using Python as an embedded language 33526 ------------------------------------ 33527 33528 * The distribution now contains (some) documentation on the use of 33529 Python as an "embedded language" in other applications, as well as a 33530 simple example. See the file misc/EMBEDDING and the directory embed/. 33531 33532 33533 Speed improvements 33534 ------------------ 33535 33536 * Function local variables are now generally stored in an array and 33537 accessed using an integer indexing operation, instead of through a 33538 dictionary lookup. (This compensates the somewhat slower dictionary 33539 lookup caused by the generalization of the dictionary module.) 33540 33541 33542 Changes to the syntax 33543 --------------------- 33544 33545 * Continuation lines can now *sometimes* be written without a 33546 backslash: if the continuation is contained within nesting (), [] or 33547 {} brackets the \ may be omitted. There's a much improved 33548 python-mode.el in the misc directory which knows about this as well. 33549 33550 * You can no longer use an empty set of parentheses to define a class 33551 without base classes. That is, you no longer write this: 33552 33553 class Foo(): # syntax error 33554 ... 33555 33556 You must write this instead: 33557 33558 class Foo: 33559 ... 33560 33561 This was already the preferred syntax in release 0.9.8 but many 33562 people seemed not to have picked it up. There's a Python script that 33563 fixes old code: demo/scripts/classfix.py. 33564 33565 * There's a new reserved word: "access". The syntax and semantics are 33566 still subject of research and debate (as well as undocumented), but 33567 the parser knows about the keyword so you must not use it as a 33568 variable, function, or attribute name. 33569 33570 33571 Changes to the semantics of the language proper 33572 ----------------------------------------------- 33573 33574 * The following compatibility hack is removed: if a function was 33575 defined with two or more arguments, and called with a single argument 33576 that was a tuple with just as many arguments, the items of this tuple 33577 would be used as the arguments. This is no longer supported. 33578 33579 33580 Changes to the semantics of classes and instances 33581 ------------------------------------------------- 33582 33583 * Class variables are now also accessible as instance variables for 33584 reading (assignment creates an instance variable which overrides the 33585 class variable of the same name though). 33586 33587 * If a class attribute is a user-defined function, a new kind of 33588 object is returned: an "unbound method". This contains a pointer to 33589 the class and can only be called with a first argument which is a 33590 member of that class (or a derived class). 33591 33592 * If a class defines a method __init__(self, arg1, ...) then this 33593 method is called when a class instance is created by the classname() 33594 construct. Arguments passed to classname() are passed to the 33595 __init__() method. The __init__() methods of base classes are not 33596 automatically called; the derived __init__() method must call these if 33597 necessary (this was done so the derived __init__() method can choose 33598 the call order and arguments for the base __init__() methods). 33599 33600 * If a class defines a method __del__(self) then this method is called 33601 when an instance of the class is about to be destroyed. This makes it 33602 possible to implement clean-up of external resources attached to the 33603 instance. As with __init__(), the __del__() methods of base classes 33604 are not automatically called. If __del__ manages to store a reference 33605 to the object somewhere, its destruction is postponed; when the object 33606 is again about to be destroyed its __del__() method will be called 33607 again. 33608 33609 * Classes may define a method __hash__(self) to allow their instances 33610 to be used as dictionary keys. This must return a 32-bit integer. 33611 33612 33613 Minor improvements 33614 ------------------ 33615 33616 * Function and class objects now know their name (the name given in 33617 the 'def' or 'class' statement that created them). 33618 33619 * Class instances now know their class name. 33620 33621 33622 Additions to built-in operations 33623 -------------------------------- 33624 33625 * The % operator with a string left argument implements formatting 33626 similar to sprintf() in C. The right argument is either a single 33627 value or a tuple of values. All features of Standard C sprintf() are 33628 supported except %p. 33629 33630 * Dictionaries now support almost any key type, instead of just 33631 strings. (The key type must be an immutable type or must be a class 33632 instance where the class defines a method __hash__(), in order to 33633 avoid losing track of keys whose value may change.) 33634 33635 * Built-in methods are now compared properly: when comparing x.meth1 33636 and y.meth2, if x is equal to y and the methods are defined by the 33637 same function, x.meth1 compares equal to y.meth2. 33638 33639 33640 Additions to built-in functions 33641 ------------------------------- 33642 33643 * str(x) returns a string version of its argument. If the argument is 33644 a string it is returned unchanged, otherwise it returns `x`. 33645 33646 * repr(x) returns the same as `x`. (Some users found it easier to 33647 have this as a function.) 33648 33649 * round(x) returns the floating point number x rounded to a whole 33650 number, represented as a floating point number. round(x, n) returns x 33651 rounded to n digits. 33652 33653 * hasattr(x, name) returns true when x has an attribute with the given 33654 name. 33655 33656 * hash(x) returns a hash code (32-bit integer) of an arbitrary 33657 immutable object's value. 33658 33659 * id(x) returns a unique identifier (32-bit integer) of an arbitrary 33660 object. 33661 33662 * compile() compiles a string to a Python code object. 33663 33664 * exec() and eval() now support execution of code objects. 33665 33666 33667 Changes to the documented part of the library (standard modules) 33668 ---------------------------------------------------------------- 33669 33670 * os.path.normpath() (a.k.a. posixpath.normpath()) has been fixed so 33671 the border case '/foo/..' returns '/' instead of ''. 33672 33673 * A new function string.find() is added with similar semantics to 33674 string.index(); however when it does not find the given substring it 33675 returns -1 instead of raising string.index_error. 33676 33677 33678 Changes to built-in modules 33679 --------------------------- 33680 33681 * New optional module 'array' implements operations on sequences of 33682 integers or floating point numbers of a particular size. This is 33683 useful to manipulate large numerical arrays or to read and write 33684 binary files consisting of numerical data. 33685 33686 * Regular expression objects created by module regex now support a new 33687 method named group(), which returns one or more \(...\) groups by number. 33688 The number of groups is increased from 10 to 100. 33689 33690 * Function compile() in module regex now supports an optional mapping 33691 argument; a variable casefold is added to the module which can be used 33692 as a standard uppercase to lowercase mapping. 33693 33694 * Module time now supports many routines that are defined in the 33695 Standard C time interface (<time.h>): gmtime(), localtime(), 33696 asctime(), ctime(), mktime(), as well as these variables (taken from 33697 System V): timezone, altzone, daylight and tzname. (The corresponding 33698 functions in the undocumented module calendar have been removed; the 33699 undocumented and unfinished module tzparse is now obsolete and will 33700 disappear in a future release.) 33701 33702 * Module strop (the fast built-in version of standard module string) 33703 now uses C's definition of whitespace instead of fixing it to space, 33704 tab and newline; in practice this usually means that vertical tab, 33705 form feed and return are now also considered whitespace. It exports 33706 the string of characters that are considered whitespace as well as the 33707 characters that are considered lowercase or uppercase. 33708 33709 * Module sys now defines the variable builtin_module_names, a list of 33710 names of modules built into the current interpreter (including not 33711 yet imported, but excluding two special modules that always have to be 33712 defined -- sys and builtin). 33713 33714 * Objects created by module sunaudiodev now also support flush() and 33715 close() methods. 33716 33717 * Socket objects created by module socket now support an optional 33718 flags argument for their methods sendto() and recvfrom(). 33719 33720 * Module marshal now supports dumping to and loading from strings, 33721 through the functions dumps() and loads(). 33722 33723 * Module stdwin now supports some new functionality. You may have to 33724 ftp the latest version: ftp.cwi.nl:/pub/stdwin/stdwinforviews.tar.Z.) 33725 33726 33727 Bugs fixed 33728 ---------- 33729 33730 * Fixed comparison of negative long integers. 33731 33732 * The tokenizer no longer botches input lines longer than BUFSIZ. 33733 33734 * Fixed several severe memory leaks in module select. 33735 33736 * Fixed memory leaks in modules socket and sv. 33737 33738 * Fixed memory leak in divmod() for long integers. 33739 33740 * Problems with definition of floatsleep() on Suns fixed. 33741 33742 * Many portability bugs fixed (and undoubtedly new ones added :-). 33743 33744 33745 Changes to the build procedure 33746 ------------------------------ 33747 33748 * The Makefile supports some new targets: "make default" and "make 33749 all". Both are by normally equivalent to "make python". 33750 33751 * The Makefile no longer uses $> since it's not supported by all 33752 versions of Make. 33753 33754 * The header files now all contain #ifdef constructs designed to make 33755 it safe to include the same header file twice, as well as support for 33756 inclusion from C++ programs (automatic extern "C" { ... } added). 33757 33758 33759 Freezing Python scripts 33760 ----------------------- 33761 33762 * There is now some support for "freezing" a Python script as a 33763 stand-alone executable binary file. See the script 33764 demo/scripts/freeze.py. It will require some site-specific tailoring 33765 of the script to get this working, but is quite worthwhile if you write 33766 Python code for other who may not have built and installed Python. 33767 33768 33769 MS-DOS 33770 ------ 33771 33772 * A new MS-DOS port has been done, using MSC 6.0 (I believe). Thanks, 33773 Marcel van der Peijl! This requires fewer compatibility hacks in 33774 posixmodule.c. The executable is not yet available but will be soon 33775 (check the mailing list). 33776 33777 * The default PYTHONPATH has changed. 33778 33779 33780 Changes for developers of extension modules 33781 ------------------------------------------- 33782 33783 * Read src/ChangeLog for full details. 33784 33785 33786 SGI specific changes 33787 -------------------- 33788 33789 * Read src/ChangeLog for full details. 33790 33791 33792 ================================== 33793 ==> Release 0.9.8 (9 Jan 1993) <== 33794 ================================== 33795 33796 I claim no completeness here, but I've tried my best to scan the log 33797 files throughout my source tree for interesting bits of news. A more 33798 complete account of the changes is to be found in the various 33799 ChangeLog files. See also "News for release 0.9.7beta" below if you're 33800 still using release 0.9.6, and the file HISTORY if you have an even 33801 older release. 33802 33803 --Guido 33804 33805 33806 Changes to the language proper 33807 ------------------------------ 33808 33809 There's only one big change: the conformance checking for function 33810 argument lists (of user-defined functions only) is stricter. Earlier, 33811 you could get away with the following: 33812 33813 (a) define a function of one argument and call it with any 33814 number of arguments; if the actual argument count wasn't 33815 one, the function would receive a tuple containing the 33816 arguments (an empty tuple if there were none). 33817 33818 (b) define a function of two arguments, and call it with more 33819 than two arguments; if there were more than two arguments, 33820 the second argument would be passed as a tuple containing 33821 the second and further actual arguments. 33822 33823 (Note that an argument (formal or actual) that is a tuple is counted as 33824 one; these rules don't apply inside such tuples, only at the top level 33825 of the argument list.) 33826 33827 Case (a) was needed to accommodate variable-length argument lists; 33828 there is now an explicit "varargs" feature (precede the last argument 33829 with a '*'). Case (b) was needed for compatibility with old class 33830 definitions: up to release 0.9.4 a method with more than one argument 33831 had to be declared as "def meth(self, (arg1, arg2, ...)): ...". 33832 Version 0.9.6 provide better ways to handle both casees, bot provided 33833 backward compatibility; version 0.9.8 retracts the compatibility hacks 33834 since they also cause confusing behavior if a function is called with 33835 the wrong number of arguments. 33836 33837 There's a script that helps converting classes that still rely on (b), 33838 provided their methods' first argument is called "self": 33839 demo/scripts/methfix.py. 33840 33841 If this change breaks lots of code you have developed locally, try 33842 #defining COMPAT_HACKS in ceval.c. 33843 33844 (There's a third compatibility hack, which is the reverse of (a): if a 33845 function is defined with two or more arguments, and called with a 33846 single argument that is a tuple with just as many arguments, the items 33847 of this tuple will be used as the arguments. Although this can (and 33848 should!) be done using the built-in function apply() instead, it isn't 33849 withdrawn yet.) 33850 33851 33852 One minor change: comparing instance methods works like expected, so 33853 that if x is an instance of a user-defined class and has a method m, 33854 then (x.m==x.m) yields 1. 33855 33856 33857 The following was already present in 0.9.7beta, but not explicitly 33858 mentioned in the NEWS file: user-defined classes can now define types 33859 that behave in almost allrespects like numbers. See 33860 demo/classes/Rat.py for a simple example. 33861 33862 33863 Changes to the build process 33864 ---------------------------- 33865 33866 The Configure.py script and the Makefile has been made somewhat more 33867 bullet-proof, after reports of (minor) trouble on certain platforms. 33868 33869 There is now a script to patch Makefile and config.c to add a new 33870 optional built-in module: Addmodule.sh. Read the script before using! 33871 33872 Using Addmodule.sh, all optional modules can now be configured at 33873 compile time using Configure.py, so there are no modules left that 33874 require dynamic loading. 33875 33876 The Makefile has been fixed to make it easier to use with the VPATH 33877 feature of some Make versions (e.g. SunOS). 33878 33879 33880 Changes affecting portability 33881 ----------------------------- 33882 33883 Several minor portability problems have been solved, e.g. "malloc.h" 33884 has been renamed to "mymalloc.h", "strdup.c" is no longer used, and 33885 the system now tolerates malloc(0) returning 0. 33886 33887 For dynamic loading on the SGI, Jack Jansen's dl 1.6 is now 33888 distributed with Python. This solves several minor problems, in 33889 particular scripts invoked using #! can now use dynamic loading. 33890 33891 33892 Changes to the interpreter interface 33893 ------------------------------------ 33894 33895 On popular demand, there's finally a "profile" feature for interactive 33896 use of the interpreter. If the environment variable $PYTHONSTARTUP is 33897 set to the name of an existing file, Python statements in this file 33898 are executed when the interpreter is started in interactive mode. 33899 33900 There is a new clean-up mechanism, complementing try...finally: if you 33901 assign a function object to sys.exitfunc, it will be called when 33902 Python exits or receives a SIGTERM or SIGHUP signal. 33903 33904 The interpreter is now generally assumed to live in 33905 /usr/local/bin/python (as opposed to /usr/local/python). The script 33906 demo/scripts/fixps.py will update old scripts in place (you can easily 33907 modify it to do other similar changes). 33908 33909 Most I/O that uses sys.stdin/stdout/stderr will now use any object 33910 assigned to those names as long as the object supports readline() or 33911 write() methods. 33912 33913 The parser stack has been increased to 500 to accommodate more 33914 complicated expressions (7 levels used to be the practical maximum, 33915 it's now about 38). 33916 33917 The limit on the size of the *run-time* stack has completely been 33918 removed -- this means that tuple or list displays can contain any 33919 number of elements (formerly more than 50 would crash the 33920 interpreter). 33921 33922 33923 Changes to existing built-in functions and methods 33924 -------------------------------------------------- 33925 33926 The built-in functions int(), long(), float(), oct() and hex() now 33927 also apply to class instalces that define corresponding methods 33928 (__int__ etc.). 33929 33930 33931 New built-in functions 33932 ---------------------- 33933 33934 The new functions str() and repr() convert any object to a string. 33935 The function repr(x) is in all respects equivalent to `x` -- some 33936 people prefer a function for this. The function str(x) does the same 33937 except if x is already a string -- then it returns x unchanged 33938 (repr(x) adds quotes and escapes "funny" characters as octal escapes). 33939 33940 The new function cmp(x, y) returns -1 if x<y, 0 if x==y, 1 if x>y. 33941 33942 33943 Changes to general built-in modules 33944 ----------------------------------- 33945 33946 The time module's functions are more general: time() returns a 33947 floating point number and sleep() accepts one. Their accuracies 33948 depends on the precision of the system clock. Millisleep is no longer 33949 needed (although it still exists for now), but millitimer is still 33950 needed since on some systems wall clock time is only available with 33951 seconds precision, while a source of more precise time exists that 33952 isn't synchronized with the wall clock. (On UNIX systems that support 33953 the BSD gettimeofday() function, time.time() is as time.millitimer().) 33954 33955 The string representation of a file object now includes an address: 33956 '<file 'filename', mode 'r' at #######>' where ###### is a hex number 33957 (the object's address) to make it unique. 33958 33959 New functions added to posix: nice(), setpgrp(), and if your system 33960 supports them: setsid(), setpgid(), tcgetpgrp(), tcsetpgrp(). 33961 33962 Improvements to the socket module: socket objects have new methods 33963 getpeername() and getsockname(), and the {get,set}sockopt methods can 33964 now get/set any kind of option using strings built with the new struct 33965 module. And there's a new function fromfd() which creates a socket 33966 object given a file descriptor (useful for servers started by inetd, 33967 which have a socket connected to stdin and stdout). 33968 33969 33970 Changes to SGI-specific built-in modules 33971 ---------------------------------------- 33972 33973 The FORMS library interface (fl) now requires FORMS 2.1a. Some new 33974 functions have been added and some bugs have been fixed. 33975 33976 Additions to al (audio library interface): added getname(), 33977 getdefault() and getminmax(). 33978 33979 The gl modules doesn't call "foreground()" when initialized (this 33980 caused some problems) like it dit in 0.9.7beta (but not before). 33981 There's a new gl function 'gversion() which returns a version string. 33982 33983 The interface to sv (Indigo video interface) has totally changed. 33984 (Sorry, still no documentation, but see the examples in 33985 demo/sgi/{sv,video}.) 33986 33987 33988 Changes to standard library modules 33989 ----------------------------------- 33990 33991 Most functions in module string are now much faster: they're actually 33992 implemented in C. The module containing the C versions is called 33993 "strop" but you should still import "string" since strop doesn't 33994 provide all the interfaces defined in string (and strop may be renamed 33995 to string when it is complete in a future release). 33996 33997 string.index() now accepts an optional third argument giving an index 33998 where to start searching in the first argument, so you can find second 33999 and further occurrences (this is similar to the regular expression 34000 functions in regex). 34001 34002 The definition of what string.splitfields(anything, '') should return 34003 is changed for the last time: it returns a singleton list containing 34004 its whole first argument unchanged. This is compatible with 34005 regsub.split() which also ignores empty delimiter matches. 34006 34007 posixpath, macpath: added dirname() and normpath() (and basename() to 34008 macpath). 34009 34010 The mainloop module (for use with stdwin) can now demultiplex input 34011 from other sources, as long as they can be polled with select(). 34012 34013 34014 New built-in modules 34015 -------------------- 34016 34017 Module struct defines functions to pack/unpack values to/from strings 34018 representing binary values in native byte order. 34019 34020 Module strop implements C versions of many functions from string (see 34021 above). 34022 34023 Optional module fcntl defines interfaces to fcntl() and ioctl() -- 34024 UNIX only. (Not yet properly documented -- see however src/fcntl.doc.) 34025 34026 Optional module mpz defines an interface to an altaernative long 34027 integer implementation, the GNU MPZ library. 34028 34029 Optional module md5 uses the GNU MPZ library to calculate MD5 34030 signatures of strings. 34031 34032 There are also optional new modules specific to SGI machines: imageop 34033 defines some simple operations to images represented as strings; sv 34034 interfaces to the Indigo video board; cl interfaces to the (yet 34035 unreleased) compression library. 34036 34037 34038 New standard library modules 34039 ---------------------------- 34040 34041 (Unfortunately the following modules are not all documented; read the 34042 sources to find out more about them!) 34043 34044 autotest: run testall without showing any output unless it differs 34045 from the expected output 34046 34047 bisect: use bisection to insert or find an item in a sorted list 34048 34049 colorsys: defines conversions between various color systems (e.g. RGB 34050 <-> YUV) 34051 34052 nntplib: a client interface to NNTP servers 34053 34054 pipes: utility to construct pipeline from templates, e.g. for 34055 conversion from one file format to another using several utilities. 34056 34057 regsub: contains three functions that are more or less compatible with 34058 awk functions of the same name: sub() and gsub() do string 34059 substitution, split() splits a string using a regular expression to 34060 define how separators are define. 34061 34062 test_types: test operations on the built-in types of Python 34063 34064 toaiff: convert various audio file formats to AIFF format 34065 34066 tzparse: parse the TZ environment parameter (this may be less general 34067 than it could be, let me know if you fix it). 34068 34069 (Note that the obsolete module "path" no longer exists.) 34070 34071 34072 New SGI-specific library modules 34073 -------------------------------- 34074 34075 CL: constants for use with the built-in compression library interface (cl) 34076 34077 Queue: a multi-producer, multi-consumer queue class implemented for 34078 use with the built-in thread module 34079 34080 SOCKET: constants for use with built-in module socket, e.g. to set/get 34081 socket options. This is SGI-specific because the constants to be 34082 passed are system-dependent. You can generate a version for your own 34083 system by running the script demo/scripts/h2py.py with 34084 /usr/include/sys/socket.h as input. 34085 34086 cddb: interface to the database used by the CD player 34087 34088 torgb: convert various image file types to rgb format (requires pbmplus) 34089 34090 34091 New demos 34092 --------- 34093 34094 There's an experimental interface to define Sun RPC clients and 34095 servers in demo/rpc. 34096 34097 There's a collection of interfaces to WWW, WAIS and Gopher (both 34098 Python classes and program providing a user interface) in demo/www. 34099 This includes a program texi2html.py which converts texinfo files to 34100 HTML files (the format used hy WWW). 34101 34102 The ibrowse demo has moved from demo/stdwin/ibrowse to demo/ibrowse. 34103 34104 For SGI systems, there's a whole collection of programs and classes 34105 that make use of the Indigo video board in demo/sgi/{sv,video}. This 34106 represents a significant amount of work that we're giving away! 34107 34108 There are demos "rsa" and "md5test" that exercise the mpz and md5 34109 modules, respectively. The rsa demo is a complete implementation of 34110 the RSA public-key cryptosystem! 34111 34112 A bunch of games and examples submitted by Stoffel Erasmus have been 34113 included in demo/stoffel. 34114 34115 There are miscellaneous new files in some existing demo 34116 subdirectories: classes/bitvec.py, scripts/{fixps,methfix}.py, 34117 sgi/al/cmpaf.py, sockets/{mcast,gopher}.py. 34118 34119 There are also many minor changes to existing files, but I'm too lazy 34120 to run a diff and note the differences -- you can do this yourself if 34121 you save the old distribution's demos. One highlight: the 34122 stdwin/python.py demo is much improved! 34123 34124 34125 Changes to the documentation 34126 ---------------------------- 34127 34128 The LaTeX source for the library uses different macros to enable it to 34129 be converted to texinfo, and from there to INFO or HTML format so it 34130 can be browsed as a hypertext. The net result is that you can now 34131 read the Python library documentation in Emacs info mode! 34132 34133 34134 Changes to the source code that affect C extension writers 34135 ---------------------------------------------------------- 34136 34137 The function strdup() no longer exists (it was used only in one places 34138 and is somewhat of a portability problem since some systems have the 34139 same function in their C library. 34140 34141 The functions NEW() and RENEW() allocate one spare byte to guard 34142 against a NULL return from malloc(0) being taken for an error, but 34143 this should not be relied upon. 34144 34145 34146 ========================= 34147 ==> Release 0.9.7beta <== 34148 ========================= 34149 34150 34151 Changes to the language proper 34152 ------------------------------ 34153 34154 User-defined classes can now implement operations invoked through 34155 special syntax, such as x[i] or `x` by defining methods named 34156 __getitem__(self, i) or __repr__(self), etc. 34157 34158 34159 Changes to the build process 34160 ---------------------------- 34161 34162 Instead of extensive manual editing of the Makefile to select 34163 compile-time options, you can now run a Configure.py script. 34164 The Makefile as distributed builds a minimal interpreter sufficient to 34165 run Configure.py. See also misc/BUILD 34166 34167 The Makefile now includes more "utility" targets, e.g. install and 34168 tags/TAGS 34169 34170 Using the provided strtod.c and strtol.c are now separate options, as 34171 on the Sun the provided strtod.c dumps core :-( 34172 34173 The regex module is now an option chosen by the Makefile, since some 34174 (old) C compilers choke on regexpr.c 34175 34176 34177 Changes affecting portability 34178 ----------------------------- 34179 34180 You need STDWIN version 0.9.7 (released 30 June 1992) for the stdwin 34181 interface 34182 34183 Dynamic loading is now supported for Sun (and other non-COFF systems) 34184 through dld-3.2.3, as well as for SGI (a new version of Jack Jansen's 34185 DL is out, 1.4) 34186 34187 The system-dependent code for the use of the select() system call is 34188 moved to one file: myselect.h 34189 34190 Thanks to Jaap Vermeulen, the code should now port cleanly to the 34191 SEQUENT 34192 34193 34194 Changes to the interpreter interface 34195 ------------------------------------ 34196 34197 The interpretation of $PYTHONPATH in the environment is different: it 34198 is inserted in front of the default path instead of overriding it 34199 34200 34201 Changes to existing built-in functions and methods 34202 -------------------------------------------------- 34203 34204 List objects now support an optional argument to their sort() method, 34205 which is a comparison function similar to qsort(3) in C 34206 34207 File objects now have a method fileno(), used by the new select module 34208 (see below) 34209 34210 34211 New built-in function 34212 --------------------- 34213 34214 coerce(x, y): take two numbers and return a tuple containing them 34215 both converted to a common type 34216 34217 34218 Changes to built-in modules 34219 --------------------------- 34220 34221 sys: fixed core dumps in settrace() and setprofile() 34222 34223 socket: added socket methods setsockopt() and getsockopt(); and 34224 fileno(), used by the new select module (see below) 34225 34226 stdwin: added fileno() == connectionnumber(), in support of new module 34227 select (see below) 34228 34229 posix: added get{eg,eu,g,u}id(); waitpid() is now a separate function. 34230 34231 gl: added qgetfd() 34232 34233 fl: added several new functions, fixed several obscure bugs, adapted 34234 to FORMS 2.1 34235 34236 34237 Changes to standard modules 34238 --------------------------- 34239 34240 posixpath: changed implementation of ismount() 34241 34242 string: atoi() no longer mistakes leading zero for octal number 34243 34244 ... 34245 34246 34247 New built-in modules 34248 -------------------- 34249 34250 Modules marked "dynamic only" are not configured at compile time but 34251 can be loaded dynamically. You need to turn on the DL or DLD option in 34252 the Makefile for support dynamic loading of modules (this requires 34253 external code). 34254 34255 select: interfaces to the BSD select() system call 34256 34257 dbm: interfaces to the (new) dbm library (dynamic only) 34258 34259 nis: interfaces to some NIS functions (aka yellow pages) 34260 34261 thread: limited form of multiple threads (sgi only) 34262 34263 audioop: operations useful for audio programs, e.g. u-LAW and ADPCM 34264 coding (dynamic only) 34265 34266 cd: interface to Indigo SCSI CDROM player audio library (sgi only) 34267 34268 jpeg: read files in JPEG format (dynamic only, sgi only; needs 34269 external code) 34270 34271 imgfile: read SGI image files (dynamic only, sgi only) 34272 34273 sunaudiodev: interface to sun's /dev/audio (dynamic only, sun only) 34274 34275 sv: interface to Indigo video library (sgi only) 34276 34277 pc: a minimal set of MS-DOS interfaces (MS-DOS only) 34278 34279 rotor: encryption, by Lance Ellinghouse (dynamic only) 34280 34281 34282 New standard modules 34283 -------------------- 34284 34285 Not all these modules are documented. Read the source: 34286 lib/<modulename>.py. Sometimes a file lib/<modulename>.doc contains 34287 additional documentation. 34288 34289 imghdr: recognizes image file headers 34290 34291 sndhdr: recognizes sound file headers 34292 34293 profile: print run-time statistics of Python code 34294 34295 readcd, cdplayer: companion modules for built-in module cd (sgi only) 34296 34297 emacs: interface to Emacs using py-connect.el (see below). 34298 34299 SOCKET: symbolic constant definitions for socket options 34300 34301 SUNAUDIODEV: symbolic constant definitions for sunaudiodef (sun only) 34302 34303 SV: symbolic constant definitions for sv (sgi only) 34304 34305 CD: symbolic constant definitions for cd (sgi only) 34306 34307 34308 New demos 34309 --------- 34310 34311 scripts/pp.py: execute Python as a filter with a Perl-like command 34312 line interface 34313 34314 classes/: examples using the new class features 34315 34316 threads/: examples using the new thread module 34317 34318 sgi/cd/: examples using the new cd module 34319 34320 34321 Changes to the documentation 34322 ---------------------------- 34323 34324 The last-minute syntax changes of release 0.9.6 are now reflected 34325 everywhere in the manuals 34326 34327 The reference manual has a new section (3.2) on implementing new kinds 34328 of numbers, sequences or mappings with user classes 34329 34330 Classes are now treated extensively in the tutorial (chapter 9) 34331 34332 Slightly restructured the system-dependent chapters of the library 34333 manual 34334 34335 The file misc/EXTENDING incorporates documentation for mkvalue() and 34336 a new section on error handling 34337 34338 The files misc/CLASSES and misc/ERRORS are no longer necessary 34339 34340 The doc/Makefile now creates PostScript files automatically 34341 34342 34343 Miscellaneous changes 34344 --------------------- 34345 34346 Incorporated Tim Peters' changes to python-mode.el, it's now version 34347 1.06 34348 34349 A python/Emacs bridge (provided by Terrence M. Brannon) lets a Python 34350 program running in an Emacs buffer execute Emacs lisp code. The 34351 necessary Python code is in lib/emacs.py. The Emacs code is 34352 misc/py-connect.el (it needs some external Emacs lisp code) 34353 34354 34355 Changes to the source code that affect C extension writers 34356 ---------------------------------------------------------- 34357 34358 New service function mkvalue() to construct a Python object from C 34359 values according to a "format" string a la getargs() 34360 34361 Most functions from pythonmain.c moved to new pythonrun.c which is 34362 in libpython.a. This should make embedded versions of Python easier 34363 34364 ceval.h is split in eval.h (which needs compile.h and only declares 34365 eval_code) and ceval.h (which doesn't need compile.hand declares the 34366 rest) 34367 34368 ceval.h defines macros BGN_SAVE / END_SAVE for use with threads (to 34369 improve the parallellism of multi-threaded programs by letting other 34370 Python code run when a blocking system call or something similar is 34371 made) 34372 34373 In structmember.[ch], new member types BYTE, CHAR and unsigned 34374 variants have been added 34375 34376 New file xxmodule.c is a template for new extension modules. 34377 34378 34379 ================================== 34380 ==> Release 0.9.6 (6 Apr 1992) <== 34381 ================================== 34382 34383 Misc news in 0.9.6: 34384 - Restructured the misc subdirectory 34385 - Reference manual completed, library manual much extended (with indexes!) 34386 - the GNU Readline library is now distributed standard with Python 34387 - the script "../demo/scripts/classfix.py" fixes Python modules using old 34388 class syntax 34389 - Emacs python-mode.el (was python.el) vastly improved (thanks, Tim!) 34390 - Because of the GNU copyleft business I am not using the GNU regular 34391 expression implementation but a free re-implementation by Tatu Ylonen 34392 that recently appeared in comp.sources.misc (Bravo, Tatu!) 34393 34394 New features in 0.9.6: 34395 - stricter try stmt syntax: cannot mix except and finally clauses on 1 try 34396 - New module 'os' supplants modules 'mac' and 'posix' for most cases; 34397 module 'path' is replaced by 'os.path' 34398 - os.path.split() return value differs from that of old path.split() 34399 - sys.exc_type, sys.exc_value, sys.exc_traceback are set to the exception 34400 currently being handled 34401 - sys.last_type, sys.last_value, sys.last_traceback remember last unhandled 34402 exception 34403 - New function string.expandtabs() expands tabs in a string 34404 - Added times() interface to posix (user & sys time of process & children) 34405 - Added uname() interface to posix (returns OS type, hostname, etc.) 34406 - New built-in function execfile() is like exec() but from a file 34407 - Functions exec() and eval() are less picky about whitespace/newlines 34408 - New built-in functions getattr() and setattr() access arbitrary attributes 34409 - More generic argument handling in built-in functions (see "./EXTENDING") 34410 - Dynamic loading of modules written in C or C++ (see "./DYNLOAD") 34411 - Division and modulo for long and plain integers with negative operands 34412 have changed; a/b is now floor(float(a)/float(b)) and a%b is defined 34413 as a-(a/b)*b. So now the outcome of divmod(a,b) is the same as 34414 (a/b, a%b) for integers. For floats, % is also changed, but of course 34415 / is unchanged, and divmod(x,y) does not yield (x/y, x%y)... 34416 - A function with explicit variable-length argument list can be declared 34417 like this: def f(*args): ...; or even like this: def f(a, b, *rest): ... 34418 - Code tracing and profiling features have been added, and two source 34419 code debuggers are provided in the library (pdb.py, tty-oriented, 34420 and wdb, window-oriented); you can now step through Python programs! 34421 See sys.settrace() and sys.setprofile(), and "../lib/pdb.doc" 34422 - '==' is now the only equality operator; "../demo/scripts/eqfix.py" is 34423 a script that fixes old Python modules 34424 - Plain integer right shift now uses sign extension 34425 - Long integer shift/mask operations now simulate 2's complement 34426 to give more useful results for negative operands 34427 - Changed/added range checks for long/plain integer shifts 34428 - Options found after "-c command" are now passed to the command in sys.argv 34429 (note subtle incompatibility with "python -c command -- -options"!) 34430 - Module stdwin is better protected against touching objects after they've 34431 been closed; menus can now also be closed explicitly 34432 - Stdwin now uses its own exception (stdwin.error) 34433 34434 New features in 0.9.5 (released as Macintosh application only, 2 Jan 1992): 34435 - dictionary objects can now be compared properly; e.g., {}=={} is true 34436 - new exception SystemExit causes termination if not caught; 34437 it is raised by sys.exit() so that 'finally' clauses can clean up, 34438 and it may even be caught. It does work interactively! 34439 - new module "regex" implements GNU Emacs style regular expressions; 34440 module "regexp" is rewritten in Python for backward compatibility 34441 - formal parameter lists may contain trailing commas 34442 34443 Bugs fixed in 0.9.6: 34444 - assigning to or deleting a list item with a negative index dumped core 34445 - divmod(-10L,5L) returned (-3L, 5L) instead of (-2L, 0L) 34446 34447 Bugs fixed in 0.9.5: 34448 - masking operations involving negative long integers gave wrong results 34449 34450 34451 =================================== 34452 ==> Release 0.9.4 (24 Dec 1991) <== 34453 =================================== 34454 34455 - new function argument handling (see below) 34456 - built-in apply(func, args) means func(args[0], args[1], ...) 34457 - new, more refined exceptions 34458 - new exception string values (NameError = 'NameError' etc.) 34459 - better checking for math exceptions 34460 - for sequences (string/tuple/list), x[-i] is now equivalent to x[len(x)-i] 34461 - fixed list assignment bug: "a[1:1] = a" now works correctly 34462 - new class syntax, without extraneous parentheses 34463 - new 'global' statement to assign global variables from within a function 34464 34465 34466 New class syntax 34467 ---------------- 34468 34469 You can now declare a base class as follows: 34470 34471 class B: # Was: class B(): 34472 def some_method(self): ... 34473 ... 34474 34475 and a derived class thusly: 34476 34477 class D(B): # Was: class D() = B(): 34478 def another_method(self, arg): ... 34479 34480 Multiple inheritance looks like this: 34481 34482 class M(B, D): # Was: class M() = B(), D(): 34483 def this_or_that_method(self, arg): ... 34484 34485 The old syntax is still accepted by Python 0.9.4, but will disappear 34486 in Python 1.0 (to be posted to comp.sources). 34487 34488 34489 New 'global' statement 34490 ---------------------- 34491 34492 Every now and then you have a global variable in a module that you 34493 want to change from within a function in that module -- say, a count 34494 of calls to a function, or an option flag, etc. Until now this was 34495 not directly possible. While several kludges are known that 34496 circumvent the problem, and often the need for a global variable can 34497 be avoided by rewriting the module as a class, this does not always 34498 lead to clearer code. 34499 34500 The 'global' statement solves this dilemma. Its occurrence in a 34501 function body means that, for the duration of that function, the 34502 names listed there refer to global variables. For instance: 34503 34504 total = 0.0 34505 count = 0 34506 34507 def add_to_total(amount): 34508 global total, count 34509 total = total + amount 34510 count = count + 1 34511 34512 'global' must be repeated in each function where it is needed. The 34513 names listed in a 'global' statement must not be used in the function 34514 before the statement is reached. 34515 34516 Remember that you don't need to use 'global' if you only want to *use* 34517 a global variable in a function; nor do you need ot for assignments to 34518 parts of global variables (e.g., list or dictionary items or 34519 attributes of class instances). This has not changed; in fact 34520 assignment to part of a global variable was the standard workaround. 34521 34522 34523 New exceptions 34524 -------------- 34525 34526 Several new exceptions have been defined, to distinguish more clearly 34527 between different types of errors. 34528 34529 name meaning was 34530 34531 AttributeError reference to non-existing attribute NameError 34532 IOError unexpected I/O error RuntimeError 34533 ImportError import of non-existing module or name NameError 34534 IndexError invalid string, tuple or list index RuntimeError 34535 KeyError key not in dictionary RuntimeError 34536 OverflowError numeric overflow RuntimeError 34537 SyntaxError invalid syntax RuntimeError 34538 ValueError invalid argument value RuntimeError 34539 ZeroDivisionError division by zero RuntimeError 34540 34541 The string value of each exception is now its name -- this makes it 34542 easier to experimentally find out which operations raise which 34543 exceptions; e.g.: 34544 34545 >>> KeyboardInterrupt 34546 'KeyboardInterrupt' 34547 >>> 34548 34549 34550 New argument passing semantics 34551 ------------------------------ 34552 34553 Off-line discussions with Steve Majewski and Daniel LaLiberte have 34554 convinced me that Python's parameter mechanism could be changed in a 34555 way that made both of them happy (I hope), kept me happy, fixed a 34556 number of outstanding problems, and, given some backward compatibility 34557 provisions, would only break a very small amount of existing code -- 34558 probably all mine anyway. In fact I suspect that most Python users 34559 will hardly notice the difference. And yet it has cost me at least 34560 one sleepless night to decide to make the change... 34561 34562 Philosophically, the change is quite radical (to me, anyway): a 34563 function is no longer called with either zero or one argument, which 34564 is a tuple if there appear to be more arguments. Every function now 34565 has an argument list containing 0, 1 or more arguments. This list is 34566 always implemented as a tuple, and it is a (run-time) error if a 34567 function is called with a different number of arguments than expected. 34568 34569 What's the difference? you may ask. The answer is, very little unless 34570 you want to write variadic functions -- functions that may be called 34571 with a variable number of arguments. Formerly, you could write a 34572 function that accepted one or more arguments with little trouble, but 34573 writing a function that could be called with either 0 or 1 argument 34574 (or more) was next to impossible. This is now a piece of cake: you 34575 can simply declare an argument that receives the entire argument 34576 tuple, and check its length -- it will be of size 0 if there are no 34577 arguments. 34578 34579 Another anomaly of the old system was the way multi-argument methods 34580 (in classes) had to be declared, e.g.: 34581 34582 class Point(): 34583 def init(self, (x, y, color)): ... 34584 def setcolor(self, color): ... 34585 dev moveto(self, (x, y)): ... 34586 def draw(self): ... 34587 34588 Using the new scheme there is no need to enclose the method arguments 34589 in an extra set of parentheses, so the above class could become: 34590 34591 class Point: 34592 def init(self, x, y, color): ... 34593 def setcolor(self, color): ... 34594 dev moveto(self, x, y): ... 34595 def draw(self): ... 34596 34597 That is, the equivalence rule between methods and functions has 34598 changed so that now p.moveto(x,y) is equivalent to Point.moveto(p,x,y) 34599 while formerly it was equivalent to Point.moveto(p,(x,y)). 34600 34601 A special backward compatibility rule makes that the old version also 34602 still works: whenever a function with exactly two arguments (at the top 34603 level) is called with more than two arguments, the second and further 34604 arguments are packed into a tuple and passed as the second argument. 34605 This rule is invoked independently of whether the function is actually a 34606 method, so there is a slight chance that some erroneous calls of 34607 functions expecting two arguments with more than that number of 34608 arguments go undetected at first -- when the function tries to use the 34609 second argument it may find it is a tuple instead of what was expected. 34610 Note that this rule will be removed from future versions of the 34611 language; it is a backward compatibility provision *only*. 34612 34613 Two other rules and a new built-in function handle conversion between 34614 tuples and argument lists: 34615 34616 Rule (a): when a function with more than one argument is called with a 34617 single argument that is a tuple of the right size, the tuple's items 34618 are used as arguments. 34619 34620 Rule (b): when a function with exactly one argument receives no 34621 arguments or more than one, that one argument will receive a tuple 34622 containing the arguments (the tuple will be empty if there were no 34623 arguments). 34624 34625 34626 A new built-in function, apply(), was added to support functions that 34627 need to call other functions with a constructed argument list. The call 34628 34629 apply(function, tuple) 34630 34631 is equivalent to 34632 34633 function(tuple[0], tuple[1], ..., tuple[len(tuple)-1]) 34634 34635 34636 While no new argument syntax was added in this phase, it would now be 34637 quite sensible to add explicit syntax to Python for default argument 34638 values (as in C++ or Modula-3), or a "rest" argument to receive the 34639 remaining arguments of a variable-length argument list. 34640 34641 34642 ======================================================== 34643 ==> Release 0.9.3 (never made available outside CWI) <== 34644 ======================================================== 34645 34646 - string sys.version shows current version (also printed on interactive entry) 34647 - more detailed exceptions, e.g., IOError, ZeroDivisionError, etc. 34648 - 'global' statement to declare module-global variables assigned in functions. 34649 - new class declaration syntax: class C(Base1, Base2, ...): suite 34650 (the old syntax is still accepted -- be sure to convert your classes now!) 34651 - C shifting and masking operators: << >> ~ & ^ | (for ints and longs). 34652 - C comparison operators: == != (the old = and <> remain valid). 34653 - floating point numbers may now start with a period (e.g., .14). 34654 - definition of integer division tightened (always truncates towards zero). 34655 - new builtins hex(x), oct(x) return hex/octal string from (long) integer. 34656 - new list method l.count(x) returns the number of occurrences of x in l. 34657 - new SGI module: al (Indigo and 4D/35 audio library). 34658 - the FORMS interface (modules fl and FL) now uses FORMS 2.0 34659 - module gl: added lrect{read,write}, rectzoom and pixmode; 34660 added (non-GL) functions (un)packrect. 34661 - new socket method: s.allowbroadcast(flag). 34662 - many objects support __dict__, __methods__ or __members__. 34663 - dir() lists anything that has __dict__. 34664 - class attributes are no longer read-only. 34665 - classes support __bases__, instances support __class__ (and __dict__). 34666 - divmod() now also works for floats. 34667 - fixed obscure bug in eval('1 '). 34668 34669 34670 =================================== 34671 ==> Release 0.9.2 (Autumn 1991) <== 34672 =================================== 34673 34674 Highlights 34675 ---------- 34676 34677 - tutorial now (almost) complete; library reference reorganized 34678 - new syntax: continue statement; semicolons; dictionary constructors; 34679 restrictions on blank lines in source files removed 34680 - dramatically improved module load time through precompiled modules 34681 - arbitrary precision integers: compute 2 to the power 1000 and more... 34682 - arithmetic operators now accept mixed type operands, e.g., 3.14/4 34683 - more operations on list: remove, index, reverse; repetition 34684 - improved/new file operations: readlines, seek, tell, flush, ... 34685 - process management added to the posix module: fork/exec/wait/kill etc. 34686 - BSD socket operations (with example servers and clients!) 34687 - many new STDWIN features (color, fonts, polygons, ...) 34688 - new SGI modules: font manager and FORMS library interface 34689 34690 34691 Extended list of changes in 0.9.2 34692 --------------------------------- 34693 34694 Here is a summary of the most important user-visible changes in 0.9.2, 34695 in somewhat arbitrary order. Changes in later versions are listed in 34696 the "highlights" section above. 34697 34698 34699 1. Changes to the interpreter proper 34700 34701 - Simple statements can now be separated by semicolons. 34702 If you write "if t: s1; s2", both s1 and s2 are executed 34703 conditionally. 34704 - The 'continue' statement was added, with semantics as in C. 34705 - Dictionary displays are now allowed on input: {key: value, ...}. 34706 - Blank lines and lines bearing only a comment no longer need to 34707 be indented properly. (A completely empty line still ends a multi- 34708 line statement interactively.) 34709 - Mixed arithmetic is supported, 1 compares equal to 1.0, etc. 34710 - Option "-c command" to execute statements from the command line 34711 - Compiled versions of modules are cached in ".pyc" files, giving a 34712 dramatic improvement of start-up time 34713 - Other, smaller speed improvements, e.g., extracting characters from 34714 strings, looking up single-character keys, and looking up global 34715 variables 34716 - Interrupting a print operation raises KeyboardInterrupt instead of 34717 only cancelling the print operation 34718 - Fixed various portability problems (it now passes gcc with only 34719 warnings -- more Standard C compatibility will be provided in later 34720 versions) 34721 - Source is prepared for porting to MS-DOS 34722 - Numeric constants are now checked for overflow (this requires 34723 standard-conforming strtol() and strtod() functions; a correct 34724 strtol() implementation is provided, but the strtod() provided 34725 relies on atof() for everything, including error checking 34726 34727 34728 2. Changes to the built-in types, functions and modules 34729 34730 - New module socket: interface to BSD socket primitives 34731 - New modules pwd and grp: access the UNIX password and group databases 34732 - (SGI only:) New module "fm" interfaces to the SGI IRIX Font Manager 34733 - (SGI only:) New module "fl" interfaces to Mark Overmars' FORMS library 34734 - New numeric type: long integer, for unlimited precision 34735 - integer constants suffixed with 'L' or 'l' are long integers 34736 - new built-in function long(x) converts int or float to long 34737 - int() and float() now also convert from long integers 34738 - New built-in function: 34739 - pow(x, y) returns x to the power y 34740 - New operation and methods for lists: 34741 - l*n returns a new list consisting of n concatenated copies of l 34742 - l.remove(x) removes the first occurrence of the value x from l 34743 - l.index(x) returns the index of the first occurrence of x in l 34744 - l.reverse() reverses l in place 34745 - New operation for tuples: 34746 - t*n returns a tuple consisting of n concatenated copies of t 34747 - Improved file handling: 34748 - f.readline() no longer restricts the line length, is faster, 34749 and isn't confused by null bytes; same for raw_input() 34750 - f.read() without arguments reads the entire (rest of the) file 34751 - mixing of print and sys.stdout.write() has different effect 34752 - New methods for files: 34753 - f.readlines() returns a list containing the lines of the file, 34754 as read with f.readline() 34755 - f.flush(), f.tell(), f.seek() call their stdio counterparts 34756 - f.isatty() tests for "tty-ness" 34757 - New posix functions: 34758 - _exit(), exec(), fork(), getpid(), getppid(), kill(), wait() 34759 - popen() returns a file object connected to a pipe 34760 - utime() replaces utimes() (the latter is not a POSIX name) 34761 - New stdwin features, including: 34762 - font handling 34763 - color drawing 34764 - scroll bars made optional 34765 - polygons 34766 - filled and xor shapes 34767 - text editing objects now have a 'settext' method 34768 34769 34770 3. Changes to the standard library 34771 34772 - Name change: the functions path.cat and macpath.cat are now called 34773 path.join and macpath.join 34774 - Added new modules: formatter, mutex, persist, sched, mainloop 34775 - Added some modules and functionality to the "widget set" (which is 34776 still under development, so please bear with me): 34777 DirList, FormSplit, TextEdit, WindowSched 34778 - Fixed module testall to work non-interactively 34779 - Module string: 34780 - added functions join() and joinfields() 34781 - fixed center() to work correct and make it "transitive" 34782 - Obsolete modules were removed: util, minmax 34783 - Some modules were moved to the demo directory 34784 34785 34786 4. Changes to the demonstration programs 34787 34788 - Added new useful scipts: byteyears, eptags, fact, from, lfact, 34789 objgraph, pdeps, pi, primes, ptags, which 34790 - Added a bunch of socket demos 34791 - Doubled the speed of ptags 34792 - Added new stdwin demos: microedit, miniedit 34793 - Added a windowing interface to the Python interpreter: python (most 34794 useful on the Mac) 34795 - Added a browser for Emacs info files: demo/stdwin/ibrowse 34796 (yes, I plan to put all STDWIN and Python documentation in texinfo 34797 form in the future) 34798 34799 34800 5. Other changes to the distribution 34801 34802 - An Emacs Lisp file "python.el" is provided to facilitate editing 34803 Python programs in GNU Emacs (slightly improved since posted to 34804 gnu.emacs.sources) 34805 - Some info on writing an extension in C is provided 34806 - Some info on building Python on non-UNIX platforms is provided 34807 34808 34809 ===================================== 34810 ==> Release 0.9.1 (February 1991) <== 34811 ===================================== 34812 34813 - Micro changes only 34814 - Added file "patchlevel.h" 34815 34816 34817 ===================================== 34818 ==> Release 0.9.0 (February 1991) <== 34819 ===================================== 34820 34821 Original posting to alt.sources. 34822