-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathNEWS.txt
24313 lines (16636 loc) · 909 KB
/
NEWS.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
+++++++++++
Python News
+++++++++++
What's New in Python 3.8.10 final?
==================================
*Release date: 2021-05-03*
Security
--------
- bpo-43434: Creating a :class:`sqlite3.Connection` object now also produces
a ``sqlite3.connect`` :ref:`auditing event <auditing>`. Previously this
event was only produced by :func:`sqlite3.connect` calls. Patch by Erlend
E. Aasland.
- bpo-43472: Ensures interpreter-level audit hooks receive the
``cpython.PyInterpreterState_New`` event when called through the
``_xxsubinterpreters`` module.
- bpo-43075: Fix Regular Expression Denial of Service (ReDoS) vulnerability
in :class:`urllib.request.AbstractBasicAuthHandler`. The ReDoS-vulnerable
regex has quadratic worst-case complexity and it allows cause a denial of
service when identifying crafted invalid RFCs. This ReDoS issue is on the
client side and needs remote attackers to control the HTTP server.
Core and Builtins
-----------------
- bpo-43105: Importlib now resolves relative paths when creating module spec
objects from file locations.
- bpo-42924: Fix ``bytearray`` repetition incorrectly copying data from the
start of the buffer, even if the data is offset within the buffer (e.g.
after reassigning a slice at the start of the ``bytearray`` to a shorter
byte string).
Library
-------
- bpo-43993: Update bundled pip to 21.1.1.
- bpo-43937: Fixed the :mod:`turtle` module working with non-default root
window.
- bpo-43930: Update bundled pip to 21.1 and setuptools to 56.0.0
- bpo-43920: OpenSSL 3.0.0: :meth:`~ssl.SSLContext.load_verify_locations`
now returns a consistent error message when cadata contains no valid
certificate.
- bpo-43607: :mod:`urllib` can now convert Windows paths with ``\\?\``
prefixes into URL paths.
- bpo-43284: platform.win32_ver derives the windows version from
sys.getwindowsversion().platform_version which in turn derives the version
from kernel32.dll (which can be of a different version than Windows
itself). Therefore change the platform.win32_ver to determine the version
using the platform module's _syscmd_ver private function to return an
accurate version.
- bpo-42248: [Enum] ensure exceptions raised in ``_missing__`` are released
- bpo-43799: OpenSSL 3.0.0: define ``OPENSSL_API_COMPAT`` 1.1.1 to suppress
deprecation warnings. Python requires OpenSSL 1.1.1 APIs.
- bpo-43794: Add :data:`ssl.OP_IGNORE_UNEXPECTED_EOF` constants (OpenSSL
3.0.0)
- bpo-43789: OpenSSL 3.0.0: Don't call the password callback function a
second time when first call has signaled an error condition.
- bpo-43788: The header files for :mod:`ssl` error codes are now OpenSSL
version-specific. Exceptions will now show correct reason and library
codes. The ``make_ssl_data.py`` script has been rewritten to use OpenSSL's
text file with error codes.
- bpo-43655: :mod:`tkinter` dialog windows are now recognized as dialogs by
window managers on macOS and X Window.
- bpo-43534: :func:`turtle.textinput` and :func:`turtle.numinput` create now
a transient window working on behalf of the canvas window.
- bpo-43522: Fix problem with
:attr:`~ssl.SSLContext.hostname_checks_common_name`. OpenSSL does not copy
hostflags from *struct SSL_CTX* to *struct SSL*.
- bpo-42967: Allow :class:`bytes` ``separator`` argument in
``urllib.parse.parse_qs`` and ``urllib.parse.parse_qsl`` when parsing
:class:`str` query strings. Previously, this raised a ``TypeError``.
- bpo-43176: Fixed processing of a dataclass that inherits from a frozen
dataclass with no fields. It is now correctly detected as an error.
- bpo-34463: Fixed discrepancy between :mod:`traceback` and the interpreter
in formatting of SyntaxError with lineno not set (:mod:`traceback` was
changed to match interpreter).
- bpo-41735: Fix thread locks in zlib module may go wrong in rare case.
Patch by Ma Lin.
- bpo-26053: Fixed bug where the :mod:`pdb` interactive run command echoed
the args from the shell command line, even if those have been overridden
at the pdb prompt.
- bpo-36470: Fix dataclasses with ``InitVar``\s and
:func:`~dataclasses.replace()`. Patch by Claudiu Popa.
- bpo-28577: The hosts method on 32-bit prefix length IPv4Networks and
128-bit prefix IPv6Networks now returns a list containing the single
Address instead of an empty list.
- bpo-32745: Fix a regression in the handling of ctypes'
:data:`ctypes.c_wchar_p` type: embedded null characters would cause a
:exc:`ValueError` to be raised. Patch by Zackery Spytz.
Documentation
-------------
- bpo-43959: The documentation on the PyContextVar C-API was clarified.
- bpo-43938: Update dataclasses documentation to express that
FrozenInstanceError is derived from AttributeError.
- bpo-43739: Fixing the example code in Doc/extending/extending.rst to
declare and initialize the pmodule variable to be of the right type.
Tests
-----
- bpo-43842: Fix a race condition in the SMTP test of test_logging. Don't
close a file descriptor (socket) from a different thread while
asyncore.loop() is polling the file descriptor. Patch by Victor Stinner.
- bpo-43811: Tests multiple OpenSSL versions on GitHub Actions. Use ccache
to speed up testing.
- bpo-43791: OpenSSL 3.0.0: Disable testing of legacy protocols TLS 1.0 and
1.1. Tests are failing with TLSV1_ALERT_INTERNAL_ERROR.
Windows
-------
- bpo-35306: Avoid raising errors from :meth:`pathlib.Path.exists()` when
passed an invalid filename.
- bpo-38822: Fixed :func:`os.stat` failing on inaccessible directories with
a trailing slash, rather than falling back to the parent directory's
metadata. This implicitly affected :func:`os.path.exists` and
:func:`os.path.isdir`.
- bpo-26227: Fixed decoding of host names in :func:`socket.gethostbyaddr`
and :func:`socket.gethostbyname_ex`.
- bpo-43745: Actually updates Windows release to OpenSSL 1.1.1k. Earlier
releases were mislabelled and actually included 1.1.1i again.
- bpo-43492: Upgrade Windows installer to use SQLite 3.35.5.
macOS
-----
- bpo-44009: Provide "python3.x-intel64" executable to allow reliably
forcing macOS universal2 framework builds to run under Rosetta 2 Intel-64
emulation on Apple Silicon Macs. This can be useful for testing or when
universal2 wheels are not yet available.
- bpo-41100: As of 3.8.10, Python now supports building and running on macOS
11 (Big Sur) and on Apple Silicon Macs (based on the ``ARM64``
architecture). A new universal build variant, ``universal2``, is also
available to natively support both ``ARM64`` and ``Intel 64`` in one set
of executables. This backport from Python 3.9 does not include support for
"weaklinking"; to support a range of macOS versions, continue to target
for and build on the oldest version in the range; for 3.8.x, the
``universal2`` variant is only useful on macOS 11 or later.
- bpo-43492: Update macOS installer to use SQLite 3.35.4.
IDLE
----
- bpo-43655: IDLE dialog windows are now recognized as dialogs by window
managers on macOS and X Window.
C API
-----
- bpo-43962: _PyInterpreterState_IDIncref() now calls
_PyInterpreterState_IDInitref() and always increments id_refcount.
Previously, calling _xxsubinterpreters.get_current() could create an
id_refcount inconsistency when a _xxsubinterpreters.InterpreterID object
was deallocated. Patch by Victor Stinner.
What's New in Python 3.8.9 final?
=================================
*Release date: 2021-04-02*
Security
--------
- bpo-42988: CVE-2021-3426: Remove the ``getfile`` feature of the
:mod:`pydoc` module which could be abused to read arbitrary files on the
disk (directory traversal vulnerability). Moreover, even source code of
Python modules can contain sensitive data like passwords. Vulnerability
reported by David Schwörer.
- bpo-43285: :mod:`ftplib` no longer trusts the IP address value returned
from the server in response to the PASV command by default. This prevents
a malicious FTP server from using the response to probe IPv4 address and
port combinations on the client network.
Code that requires the former vulnerable behavior may set a
``trust_server_pasv_ipv4_address`` attribute on their :class:`ftplib.FTP`
instances to ``True`` to re-enable it.
- bpo-43439: Add audit hooks for :func:`gc.get_objects`,
:func:`gc.get_referrers` and :func:`gc.get_referents`. Patch by Pablo
Galindo.
Core and Builtins
-----------------
- bpo-43660: Fix crash that happens when replacing ``sys.stderr`` with a
callable that can remove the object while an exception is being printed.
Patch by Pablo Galindo.
- bpo-35883: Python no longer fails at startup with a fatal error if a
command line argument contains an invalid Unicode character. The
:c:func:`Py_DecodeLocale` function now escapes byte sequences which would
be decoded as Unicode characters outside the [U+0000; U+10ffff] range.
- bpo-43406: Fix a possible race condition where ``PyErr_CheckSignals``
tries to execute a non-Python signal handler.
Library
-------
- bpo-35930: Raising an exception raised in a "future" instance will create
reference cycles.
- bpo-43577: Fix deadlock when using :class:`ssl.SSLContext` debug callback
with :meth:`ssl.SSLContext.sni_callback`.
- bpo-43423: :func:`subprocess.communicate` no longer raises an IndexError
when there is an empty stdout or stderr IO buffer during a timeout on
Windows.
- bpo-27820: Fixed long-standing bug of smtplib.SMTP where doing AUTH LOGIN
with initial_response_ok=False will fail.
The cause is that SMTP.auth_login _always_ returns a password if provided
with a challenge string, thus non-compliant with the standard for AUTH
LOGIN.
Also fixes bug with the test for smtpd.
- bpo-43399: Fix ``ElementTree.extend`` not working on iterators when using
the Python implementation
- bpo-43316: The ``python -m gzip`` command line application now properly
fails when detecting an unsupported extension. It exits with a non-zero
exit code and prints an error message to stderr.
- bpo-43260: Fix TextIOWrapper can not flush internal buffer forever after
very large text is written.
- bpo-42782: Fail fast in :func:`shutil.move()` to avoid creating
destination directories on failure.
- bpo-37193: Fixed memory leak in ``socketserver.ThreadingMixIn`` introduced
in Python 3.7.
Documentation
-------------
- bpo-43199: Answer "Why is there no goto?" in the Design and History FAQ.
- bpo-43407: Clarified that a result from :func:`time.monotonic`,
:func:`time.perf_counter`, :func:`time.process_time`, or
:func:`time.thread_time` can be compared with the result from any
following call to the same function - not just the next immediate call.
- bpo-27646: Clarify that 'yield from <expr>' works with any iterable, not
just iterators.
- bpo-36346: Update some deprecated unicode APIs which are documented as
"will be removed in 4.0" to "3.12". See :pep:`623` for detail.
Tests
-----
- bpo-37945: Fix test_getsetlocale_issue1813() of test_locale: skip the test
if ``setlocale()`` fails. Patch by Victor Stinner.
- bpo-41561: Add workaround for Ubuntu's custom OpenSSL security level
policy.
Build
-----
- bpo-43631: Update macOS, Windows, and CI to OpenSSL 1.1.1k.
- bpo-43617: Improve configure.ac: Check for presence of autoconf-archive
package and remove our copies of M4 macros.
macOS
-----
- bpo-41837: Update macOS installer build to use OpenSSL 1.1.1j.
IDLE
----
- bpo-42225: Document that IDLE can fail on Unix either from misconfigured
IP masquerage rules or failure displaying complex colored (non-ascii)
characters.
- bpo-43283: Document why printing to IDLE's Shell is often slower than
printing to a system terminal and that it can be made faster by
pre-formatting a single string before printing.
What's New in Python 3.8.8 final?
=================================
*Release date: 2021-02-19*
There were no new changes in version 3.8.8.
What's New in Python 3.8.8 release candidate 1?
===============================================
*Release date: 2021-02-16*
Security
--------
- bpo-42967: Fix web cache poisoning vulnerability by defaulting the query
args separator to ``&``, and allowing the user to choose a custom
separator.
- bpo-42938: Avoid static buffers when computing the repr of
:class:`ctypes.c_double` and :class:`ctypes.c_longdouble` values.
Core and Builtins
-----------------
- bpo-42819: :mod:`readline`: Explicitly disable bracketed paste in the
interactive interpreter, even if it's set in the inputrc, is enabled by
default (eg GNU Readline 8.1), or a user calls
``readline.read_init_file()``. The Python REPL has not implemented
bracketed paste support. Also, bracketed mode writes the ``"\x1b[?2004h"``
escape sequence into stdout which causes test failures in applications
that don't support it. It can still be explicitly enabled by calling
``readline.parse_and_bind("set enable-bracketed-paste on")``. Patch by
Dustin Rodrigues.
Library
-------
- bpo-43108: Fixed a reference leak in the :mod:`curses` module. Patch by
Pablo Galindo
- bpo-42780: Fix os.set_inheritable() for O_PATH file descriptors on Linux.
- bpo-41748: Fix HTMLParser parsing rules for element attributes containing
commas with spaces. Patch by Karl Dubost.
- bpo-42759: Fixed equality comparison of :class:`tkinter.Variable` and
:class:`tkinter.font.Font`. Objects which belong to different Tcl
interpreters are now always different, even if they have the same name.
- bpo-23328: Allow / character in username, password fields on _PROXY
envars.
- bpo-42681: Fixed range checks for color and pair numbers in :mod:`curses`.
- bpo-42531: :func:`importlib.resources.path` now works for :term:`package`\
s missing the optional :attr:`__file__` attribute (more specifically,
packages whose :attr:`__spec__`\ ``.``\
:attr:`~importlib.machinery.ModuleSpec.origin` :keyword:`is`
:data:`None`).
- bpo-42388: Fix subprocess.check_output(..., input=None) behavior when
text=True to be consistent with that of the documentation and
universal_newlines=True.
- bpo-42384: Make pdb populate sys.path[0] exactly the same as regular
python execution.
- bpo-42383: Fix pdb: previously pdb would fail to restart the debugging
target if it was specified using a relative path and the current directory
changed.
- bpo-42318: Fixed support of non-BMP characters in :mod:`tkinter` on macOS.
- bpo-42005: Fix CLI of :mod:`cProfile` and :mod:`profile` to catch
:exc:`BrokenPipeError`.
- bpo-41604: Don't decrement the reference count of the previous user_ptr
when set_panel_userptr fails.
- bpo-26407: Unexpected errors in calling the ``__iter__`` method are no
longer masked by ``TypeError`` in :func:`csv.reader`,
:func:`csv.writer.writerow` and :meth:`csv.writer.writerows`.
- bpo-39068: Fix initialization race condition in :func:`a85encode` and
:func:`b85encode` in :mod:`base64`. Patch by Brandon Stansbury.
- bpo-36589: The :func:`curses.update_lines_cols` function now returns
``None`` instead of ``1`` on success.
- bpo-33289: Correct call to :mod:`tkinter.colorchooser` to return RGB
triplet of ints instead of floats. Patch by Cheryl Sabella.
Documentation
-------------
- bpo-40304: Fix doc for type(name, bases, dict). Patch by Boris
Verkhovskiy and Éric Araujo.
- bpo-42811: Updated importlib.utils.resolve_name() doc to use
__spec__.parent instead of __package__. (Thanks Yair Frid.)
Tests
-----
- bpo-42794: Update test_nntplib to use offical group name of news.aioe.org
for testing. Patch by Dong-hee Na.
- bpo-40810: In :mod:`sqlite3`, fix ``CheckTraceCallbackContent`` for SQLite
pre 3.7.15.
Build
-----
- bpo-29076: Add fish shell support to macOS installer.
Windows
-------
- bpo-41837: Updated Windows installer to include OpenSSL 1.1.1i
- bpo-42584: Upgrade Windows installer to use SQLite 3.34.0.
macOS
-----
- bpo-41837: Update macOS installer build to use OpenSSL 1.1.1i.
- bpo-42584: Update macOS installer to use SQLite 3.34.0.
IDLE
----
- bpo-43008: Make IDLE invoke :func:`sys.excepthook` in normal, 2-process
mode. Patch by Ken Hilton.
- bpo-33065: Fix problem debugging user classes with __repr__ method.
- bpo-42508: Keep IDLE running on macOS. Remove obsolete workaround that
prevented running files with shortcuts when using new universal2
installers built on macOS 11.
- bpo-23544: Disable Debug=>Stack Viewer when user code is running or
Debugger is active, to prevent hang or crash. Patch by Zackery Spytz.
- bpo-32631: Finish zzdummy example extension module: make menu entries
work; add docstrings and tests with 100% coverage.
Tools/Demos
-----------
- bpo-42726: Fixed Python 3 compatibility issue with gdb/libpython.py
handling of attribute dictionaries.
C API
-----
- bpo-43030: Fixed a compiler warning in :c:func:`Py_UNICODE_ISSPACE()` on
platforms with signed ``wchar_t``.
- bpo-40052: Fix an alignment build warning/error in function
``PyVectorcall_Function()``. Patch by Andreas Schneider, Antoine Pitrou
and Petr Viktorin.
What's New in Python 3.8.7 final?
=================================
*Release date: 2020-12-21*
Core and Builtins
-----------------
- bpo-32381: Fix encoding name when running a ``.pyc`` file on Windows:
:c:func:`PyRun_SimpleFileExFlags()` now uses the correct encoding to
decode the filename.
- bpo-42536: Several built-in and standard library types now ensure that
their internal result tuples are always tracked by the :term:`garbage
collector <garbage collection>`:
- :meth:`collections.OrderedDict.items() <collections.OrderedDict>`
- :meth:`dict.items`
- :func:`enumerate`
- :func:`functools.reduce`
- :func:`itertools.combinations`
- :func:`itertools.combinations_with_replacement`
- :func:`itertools.permutations`
- :func:`itertools.product`
- :func:`itertools.zip_longest`
- :func:`zip`
Previously, they could have become untracked by a prior garbage
collection. Patch by Brandt Bucher.
Library
-------
- bpo-42630: :mod:`tkinter` functions and constructors which need a default
root window raise now :exc:`RuntimeError` with descriptive message instead
of obscure :exc:`AttributeError` or :exc:`NameError` if it is not created
yet or cannot be created automatically.
- bpo-42644: `logging.disable` will now validate the types and value of its
parameter. It also now accepts strings representing the levels (as does
`loging.setLevel`) instead of only the numerical values.
- bpo-36541: Fixed lib2to3.pgen2 to be able to parse PEP-570 positional only
argument syntax.
- bpo-42375: subprocess module update for DragonFlyBSD support.
- bpo-39825: Windows: Change ``sysconfig.get_config_var('EXT_SUFFIX')`` to
the expected full ``platform_tag.extension`` format. Previously it was
hard-coded to ``.pyd``, now it is compatible with ``distutils.sysconfig``
and will result in something like ``.cp38-win_amd64.pyd``. This brings
windows into conformance with the other platforms.
- bpo-39101: Fixed tests using IsolatedAsyncioTestCase from hanging on
BaseExceptions.
- bpo-41907: fix `format()` behavior for `IntFlag`
- bpo-41889: Enum: fix regression involving inheriting a multiply-inherited
enum
- bpo-41891: Ensure asyncio.wait_for waits for task completion
- bpo-40219: Lowered :class:`tkinter.ttk.LabeledScale` dummy widget to
prevent hiding part of the content label.
- bpo-40084: Fix ``Enum.__dir__``: dir(Enum.member) now includes attributes
as well as methods.
Documentation
-------------
- bpo-17140: Add documentation for the
:class:`multiprocessing.pool.ThreadPool` class.
Build
-----
- bpo-42604: Now all platforms use a value for the "EXT_SUFFIX" build
variable derived from SOABI (for instance in freeBSD, "EXT_SUFFIX" is now
".cpython-310d.so" instead of ".so"). Previosuly only Linux, Mac and
VxWorks were using a value for "EXT_SUFFIX" that included "SOABI".
- bpo-42598: Fix implicit function declarations in configure which could
have resulted in incorrect configuration checks. Patch contributed by
Joshua Root.
Tools/Demos
-----------
- bpo-42613: Fix ``freeze.py`` tool to use the prope config and library
directories. Patch by Victor Stinner.
What's New in Python 3.8.7 release candidate 1?
===============================================
*Release date: 2020-12-07*
Security
--------
- bpo-42103: Prevented potential DoS attack via CPU and RAM exhaustion when
processing malformed Apple Property List files in binary format.
- bpo-42051: The :mod:`plistlib` module no longer accepts entity
declarations in XML plist files to avoid XML vulnerabilities. This should
not affect users as entity declarations are not used in regular plist
files.
- bpo-40791: Add ``volatile`` to the accumulator variable in
``hmac.compare_digest``, making constant-time-defeating optimizations less
likely.
Core and Builtins
-----------------
- bpo-41686: On Windows, the ``SIGINT`` event, ``_PyOS_SigintEvent()``, is
now created even if Python is configured to not install signal handlers
(if :c:member:`PyConfig.install_signal_handlers` equals to 0, or
``Py_InitializeEx(0)``).
- bpo-42143: Fix handling of errors during creation of ``PyFunctionObject``,
which resulted in operations on uninitialized memory. Patch by Yonatan
Goldschmidt.
- bpo-41984: The garbage collector now tracks all user-defined classes.
Patch by Brandt Bucher.
- bpo-41909: Fixed stack overflow in :func:`issubclass` and
:func:`isinstance` when getting the ``__bases__`` attribute leads to
infinite recursion.
- bpo-41894: When loading a native module and a load failure occurs, prevent
a possible UnicodeDecodeError when not running in a UTF-8 locale by
decoding the load error message using the current locale's encoding.
Library
-------
- bpo-17735: :func:`inspect.findsource` now raises :exc:`OSError` instead of
:exc:`IndexError` when :attr:`co_lineno` of a code object is greater than
the file length. This can happen, for example, when a file is edited after
it was imported. PR by Irit Katriel.
- bpo-42116: Fix handling of trailing comments by :func:`inspect.getsource`.
- bpo-42482: :class:`~traceback.TracebackException` no longer holds a
reference to the exception's traceback object. Consequently, instances of
TracebackException for equivalent but non-equal exceptions now compare as
equal.
- bpo-42406: We fixed an issue in `pickle.whichmodule` in which importing
`multiprocessing` could change the how pickle identifies which module an
object belongs to, potentially breaking the unpickling of those objects.
- bpo-42328: Fixed :meth:`tkinter.ttk.Style.map`. The function accepts now
the representation of the default state as empty sequence (as returned by
``Style.map()``). The structure of the result is now the same on all
platform and does not depend on the value of ``wantobjects``.
- bpo-42014: The ``onerror`` callback from ``shutil.rmtree`` now receives
correct function when ``os.open`` fails.
- bpo-42237: Fix `os.sendfile()` on illumos.
- bpo-42249: Fixed writing binary Plist files larger than 4 GiB.
- bpo-35455: On Solaris, :func:`~time.thread_time` is now implemented with
``gethrvtime()`` because ``clock_gettime(CLOCK_THREAD_CPUTIME_ID)`` is not
always available. Patch by Jakub Kulik.
- bpo-41754: webbrowser: Ignore *NotADirectoryError* when calling
``xdg-settings``.
- bpo-29566: ``binhex.binhex()`` consisently writes macOS 9 line endings.
- bpo-42183: Fix a stack overflow error for asyncio Task or Future repr().
The overflow occurs under some circumstances when a Task or Future
recursively returns itself.
- bpo-42103: :exc:`~plistlib.InvalidFileException` and :exc:`RecursionError`
are now the only errors caused by loading malformed binary Plist file
(previously ValueError and TypeError could be raised in some specific
cases).
- bpo-41491: plistlib: fix parsing XML plists with hexadecimal integer
values
- bpo-32498: Clearer exception message when passing an argument of type
bytes to :func:`urllib.parse.unquote`. This is only for 3.8; in 3.9 and
later this function accepts bytes inputs as well. PR by Irit Katriel.
- bpo-42065: Fix an incorrectly formatted error from
:meth:`_codecs.charmap_decode` when called with a mapped value outside the
range of valid Unicode code points. PR by Max Bernstein.
- bpo-41966: Fix pickling pure Python :class:`datetime.time` subclasses.
Patch by Dean Inwood.
- bpo-41976: Fixed a bug that was causing :func:`ctypes.util.find_library`
to return ``None`` when triying to locate a library in an environment when
gcc>=9 is available and ``ldconfig`` is not. Patch by Pablo Galindo
- bpo-41900: C14N 2.0 serialisation in xml.etree.ElementTree failed for
unprefixed attributes when a default namespace was defined.
- bpo-41855: In ``importlib.metadata``, fix issue where multiple children
can be returned from ``FastPath.zip_children()``. Backport of
`python-devs/importlib_metadata#117
<https://gitlab.com/python-devs/importlib_metadata/-/issues/117>`_.
- bpo-41840: Fix a bug in the :mod:`symtable` module that was causing
module-scope global variables to not be reported as both local and global.
Patch by Pablo Galindo.
- bpo-41831: ``str()`` for the ``type`` attribute of the ``tkinter.Event``
object always returns now the numeric code returned by Tk instead of the
name of the event type.
- bpo-41662: No longer override exceptions raised in ``__len__()`` of a
sequence of parameters in :mod:`sqlite3` with
:exc:`~sqlite3.ProgrammingError`.
- bpo-41662: Fixed crash when mutate list of parameters during iteration in
:mod:`sqlite3`.
- bpo-34215: Clarify the error message for
:exc:`asyncio.IncompleteReadError` when ``expected`` is ``None``.
- bpo-41316: Fix the :mod:`tarfile` module to write only basename of TAR
file to GZIP compression header.
- bpo-12800: Extracting a symlink from a tarball should succeed and
overwrite the symlink if it already exists. The fix is to remove the
existing file or symlink before extraction. Based on patch by Chris AtLee,
Jeffrey Kintscher, and Senthil Kumaran.
- bpo-16936: Allow ``ctypes.wintypes`` to be imported on non-Windows
systems.
- bpo-40592: :func:`shutil.which` now ignores empty entries in
:envvar:`PATHEXT` instead of treating them as a match.
- bpo-40492: Fix ``--outfile`` for :mod:`cProfile` / :mod:`profile` not
writing the output file in the original directory when the program being
profiled changes the working directory. PR by Anthony Sottile.
- bpo-40105: ZipFile truncates files to avoid corruption when a shorter
comment is provided in append ("a") mode. Patch by Jan Mazur.
- bpo-27321: Fixed KeyError exception when flattening an email to a string
attempts to replace a non-existent Content-Transfer-Encoding header.
- bpo-32793: Fix a duplicated debug message when
:meth:`smtplib.SMTP.connect` is called.
Documentation
-------------
- bpo-42153: Fix the URL for the IMAP protocol documents.
- bpo-41910: Document the default implementation of `object.__eq__`.
- bpo-41774: In Programming FAQ "Sequences (Tuples/Lists)" section, add "How
do you remove multiple items from a list".
- bpo-39416: Document some restrictions on the default string
representations of numeric classes.
Tests
-----
- bpo-41473: Reenable test_gdb on gdb 9.2 and newer:
https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb
10.1.
- bpo-42553: Fix ``test_asyncio.test_call_later()`` race condition: don't
measure asyncio performance in the ``call_later()`` unit test. The test
failed randomly on the CI.
- bpo-40754: Include ``_testinternalcapi`` module in Windows installer for
test suite
- bpo-41739: Fix test_logging.test_race_between_set_target_and_flush(): the
test now waits until all threads complete to avoid leaking running
threads.
- bpo-41944: Tests for CJK codecs no longer call ``eval()`` on content
received via HTTP.
- bpo-41939: Fix test_site.test_license_exists_at_url(): call
``urllib.request.urlcleanup()`` to reset the global
``urllib.request._opener``. Patch by Victor Stinner.
- bpo-41561: test_ssl: skip test_min_max_version_mismatch when TLS 1.0 is
not available
- bpo-41602: Add tests for SIGINT handling in the runpy module.
- bpo-41306: Fixed a failure in ``test_tk.test_widgets.ScaleTest`` happening
when executing the test with Tk 8.6.10.
Build
-----
- bpo-42398: Fix a race condition in "make regen-all" when make -jN option
is used to run jobs in parallel. The clinic.py script now only use atomic
write to write files. Moveover, generated files are now left unchanged if
the content does not change, to not change the file modification time.
Windows
-------
- bpo-42120: Remove macro definition of ``copysign`` (to ``_copysign``) in
headers.
- bpo-38439: Updates the icons for IDLE in the Windows Store package.
- bpo-41557: Update Windows installer to use SQLite 3.33.0.
- bpo-38324: Avoid Unicode errors when accessing certain locale data on
Windows.
macOS
-----
- bpo-38443: The ``--enable-universalsdk`` and ``--with-universal-archs``
options for the configure script now check that the specified
architectures can be used.
- bpo-41471: Ignore invalid prefix lengths in system proxy excludes.
- bpo-41557: Update macOS installer to use SQLite 3.33.0.
IDLE
----
- bpo-42426: Fix reporting offset of the RE error in searchengine.
- bpo-42415: Get docstrings for IDLE calltips more often by using
inspect.getdoc.
- bpo-33987: Mostly finish using ttk widgets, mainly for editor, settings,
and searches. Some patches by Mark Roseman.
- bpo-41775: Use 'IDLE Shell' as shell title
- bpo-40511: Typing opening and closing parentheses inside the parentheses
of a function call will no longer cause unnecessary "flashing" off and on
of an existing open call-tip, e.g. when typed in a string literal.
- bpo-38439: Add a 256×256 pixel IDLE icon to the Windows .ico file. Created
by Andrew Clover. Remove the low-color gif variations from the .ico file.
C API
-----
- bpo-41986: :c:data:`Py_FileSystemDefaultEncodeErrors` and
:c:data:`Py_UTF8Mode` are available again in limited API.
What's New in Python 3.8.6 final?
=================================
*Release date: 2020-09-23*
Core and Builtins
-----------------
- bpo-41525: The output of ``python --help`` contains now only ASCII
characters.
Library
-------
- bpo-41817: fix `tkinter.EventType` Enum so all members are strings, and
none are tuples
- bpo-41815: Fix SQLite3 segfault when backing up closed database. Patch
contributed by Peter David McCormick.
- bpo-41517: fix bug allowing Enums to be extended via multiple inheritance
- bpo-39587: use the correct mix-in data type when constructing Enums
- bpo-41789: Honor `object` overrides in `Enum` class creation
(specifically, `__str__`, `__repr__`, `__format__`, and `__reduce_ex__`).
- bpo-39651: Fix a race condition in the ``call_soon_threadsafe()`` method
of ``asyncio.ProactorEventLoop``: do nothing if the self-pipe socket has
been closed.
- bpo-41720: Fixed :meth:`turtle.Vec2D.__rmul__` for arguments which are not
int or float.
- bpo-39728: fix default `_missing_` so a duplicate `ValueError` is not set
as the `__context__` of the original `ValueError`
- bpo-37479: When `Enum.__str__` is overridden in a derived class, the
override will be used by `Enum.__format__` regardless of whether mixin
classes are present.
Documentation
-------------
- bpo-35293: Fix RemovedInSphinx40Warning when building the documentation.
Patch by Dong-hee Na.
- bpo-37149: Change Shipman tkinter doc link from archive.org to TkDocs.
(The doc has been removed from the NMT server.) The new link responds
much faster and includes a short explanatory note.
Tests
-----
- bpo-41731: Make test_cmd_line_script pass with option '-vv'.
Windows
-------
- bpo-41744: Fixes automatic import of props file when using the Nuget
package.
IDLE
----
- bpo-35764: Rewrite the Calltips doc section.
- bpo-40181: In calltips, stop reminding that '/' marks the end of
positional-only arguments.
What's New in Python 3.8.6 release candidate 1?
===============================================
*Release date: 2020-09-07*
Core and Builtins
-----------------
- bpo-41654: Fix a crash that occurred when destroying subclasses of
:class:`MemoryError`. Patch by Pablo Galindo.
- bpo-41533: Free the stack allocated in ``va_build_stack`` if
``do_mkstack`` fails and the stack is not a ``small_stack``.
- bpo-38156: Handle interrupts that come after EOF correctly in
``PyOS_StdioReadline``.
Library
-------
- bpo-41696: Fix handling of debug mode in :func:`asyncio.run`. This allows
setting ``PYTHONASYNCIODEBUG`` or ``-X dev`` to enable asyncio debug mode
when using :func:`asyncio.run`.
- bpo-39010: Restarting a ``ProactorEventLoop`` on Windows no longer logs
spurious ``ConnectionResetErrors``.
- bpo-41609: The pdb whatis command correctly reports instance methods as
'Method' rather than 'Function'.
- bpo-32751: When cancelling the task due to a timeout,
:meth:`asyncio.wait_for` will now wait until the cancellation is complete
also in the case when *timeout* is <= 0, like it does with positive
timeouts.
- bpo-37658: :meth:`asyncio.wait_for` now properly handles races between
cancellation of itself and the completion of the wrapped awaitable.
- bpo-40782: Change the method asyncio.AbstractEventLoop.run_in_executor to
not be a coroutine.
- bpo-41520: Fix :mod:`codeop` regression that prevented turning compile
warnings into errors.
- bpo-41503: Fixed a race between setTarget and flush in
logging.handlers.MemoryHandler.
- bpo-41497: Fix potential UnicodeDecodeError in dis module.
- bpo-41490: Update :mod:`ensurepip` to install pip 20.2.1 and setuptools
49.2.1.
- bpo-41467: On Windows, fix asyncio ``recv_into()`` return value when the
socket/pipe is closed (:exc:`BrokenPipeError`): return ``0`` rather than
an empty byte string (``b''``).
- bpo-41425: Make tkinter doc example runnable.
- bpo-41384: Raise TclError instead of TypeError when an unknown option is
passed to tkinter.OptionMenu.
- bpo-38731: Fix :exc:`NameError` in command-line interface of
:mod:`py_compile`.
- bpo-41364: Reduce import overhead of :mod:`uuid`.