Nhật ký thay đổi¶
Python tiếp theo¶
Release date: XXXX-XX-XX
cửa sổ¶
gh-146458: Sửa lỗi theo dõi chiều cao và chiều rộng của REPL không chính xác khi thay đổi kích thước cửa sổ bảng điều khiển trên Windows.
Bảo mật¶
gh-148395: Sửa con trỏ đầu vào lơ lửng trong
lzma.LZMADecompressor,bz2.BZ2Decompressorvàzlib._ZlibDecompressornội bộ khi cấp phát bộ nhớ không thành công vớiMemoryError, điều này có thể cho phép lệnh gọidecompress()tiếp theo đọc hoặc ghi thông qua một con trỏ cũ vào bộ đệm người gọi đã được phát hành.gh-146333: Khắc phục tính năng quay lui bậc hai trong các biểu thức phân tích cú pháp tùy chọn
configparser.RawConfigParser(OPTCREvàOPTCRE_NV). Dòng cấu hình được tạo thủ công có nhiều ký tự khoảng trắng có thể gây ra việc sử dụng CPU quá mức.
Thư viện¶
gh-148651: Khắc phục rò rỉ tham chiếu trong
compression.zstd.ZstdDecompressorkhi chuyển khóa tùy chọn không hợp lệ.gh-148508: Lỗi thời gian không liên tục khi chạy thử nghiệm SSL trên iOS đã được giải quyết.
gh-148370:
configparser: ngăn hành vi bậc hai khiParsingErrorđược nâng lên sau khi trình phân tích cú pháp không phân tích được nhiều dòng. Bản vá của Bénédikt Trần.gh-148254: Sử dụng "giây" số ít thay vì "giây" trong đầu ra dài dòng của
timeitđể thống nhất với các đơn vị thời gian khác.gh-148192:
email.generator.Generator._make_boundarycó thể không phát hiện được chuỗi ranh giới trùng lặp nếu lineep không cón. Bây giờ nó phát hiện chính xác các chuỗi ranh giới khi dòng cũng là rn.gh-146313: Khắc phục sự cố bế tắc trong trình theo dõi tài nguyên của
multiprocessingtrong đó quy trình gốc có thể bị treo vô thời hạn trongos.waitpid()trong khi tắt trình thông dịch nếu một phần tử con được tạo quaos.fork()vẫn mở đường dẫn của trình theo dõi tài nguyên.gh-145831: Sửa lỗi
email.quoprimime.decode()để lại\rđi lạc khieol='\r\n'bằng cách loại bỏ toàn bộ chuỗi eol thay vì một ký tự.gh-145105: Khắc phục sự cố trong trình đọc
csvkhi lặp lại bằng trình vòng lặp đăng nhập lại gọinext()trên cùng một trình đọc từ bên trong__next__.gh-105936: Cố gắng thay đổi các thuộc tính không phải trường của
dataclassesvới cả frozen và slots đều làTruegiờ đây sẽ tăngFrozenInstanceErrorthay vìTypeError. Các lớp con không phải lớp dữ liệu của chúng giờ đây có thể tự do thay đổi các thuộc tính không phải trường và lớp không có rãnh ban đầu có thể được thu thập rác.gh-70039: Đã sửa lỗi trong đó
smtplib.SMTP.starttls()có thể bị lỗi nếusmtplib.SMTP.connect()được gọi một cách rõ ràng thay vì ngầm định.
Tài liệu¶
gh-146646: Ghi lại rằng
glob.glob(),glob.iglob(),pathlib.Path.glob()vàpathlib.Path.rglob()âm thầm ngăn chặn các ngoại lệOSErrorphát sinh từ quá trình quét hệ thống tệp.
Cốt lõi và nội dung¶
gh-148393: Khắc phục sự xung đột dữ liệu giữa
PyDict_Watch()/PyDict_Unwatch()và đột biến dict đồng thời trong free-threaded build.gh-148284: Khắc phục mức tiêu thụ ngăn xếp cao trong vòng lặp trình thông dịch của Python trên Clang 22 bằng cách đặt giới hạn chức năng cho nội tuyến khi xây dựng bằng gotos được tính toán.
gh-148037: Xóa phần quan trọng khỏi
PyCode_Addr2Line()trong luồng tự do.gh-148222: Khắc phục sự hỗ trợ vectorcall trong
types.GenericAliaskhi loại cơ bản không hỗ trợ giao thức vectorcall. Khắc phục các rò rỉ có thể xảy ra trongtypes.GenericAliasvàtypes.UnionTypetrong trường hợp lỗi bộ nhớ.gh-148208: Khắc phục rò rỉ độ sâu đệ quy trong
PyObject_Print()gh-137814: Sửa lỗi thuộc tính
__qualname__của hàm__annotate__trên hàm.
xây dựng¶
gh-148535: Không còn sử dụng cờ
gcc -fprofile-update=atomictrên i686. Cờ đã được thêm vào để sửa lỗi nội bộ GCC ngẫu nhiên trên bản dựng PGO (gh-145801) do hỏng dữ liệu hồ sơ (tệp .gcda). Vấn đề là nó làm cho quá trình xây dựng PGO chậm hơn (chậm hơn tới 47 lần) trên i686. Vì cho đến nay, lỗi nội bộ GCC không xuất hiện trên i686 nên bạn không nên sử dụng-fprofile-update=atomictrên i686 nữa. Bản vá của Victor Stinner.gh-146264: Sửa lỗi xây dựng mô-đun tĩnh trên các mục tiêu không phải WASI bằng cách liên kết các phần phụ thuộc HACL dưới dạng thư viện tĩnh khi
MODULE_BUILDTYPE=static, ngăn ngừa lỗi biểu tượng_Py_LibHacl_*trùng lặp tại thời điểm liên kết.
Python 3.14.4 cuối cùng¶
Release date: 2026-04-07
Bảo mật¶
gh-145986:
xml.parsers.expat: Đã khắc phục sự cố do đệ quy C không giới hạn khi chuyển đổi các mô hình nội dung XML được lồng sâu bằngElementDeclHandler(). Địa chỉ này CVE 2026-4224.gh-145599: Từ chối các ký tự điều khiển trong
http.cookies.Morselupdate()vàjs_output(). Địa chỉ này CVE 2026-3644.gh-145506: Sửa lỗi CVE 2026-2297 bằng cách đảm bảo rằng
SourcelessFileLoadersử dụngio.open_code()khi mở tệp.pyc.gh-144370: Không cho phép sử dụng các ký tự điều khiển trong trạng thái trong
wsgiref.handlersđể ngăn việc chèn tiêu đề HTTP. Bản vá của Benedikt Johannes.gh-143930: Từ chối dấu gạch ngang ở đầu trong các URL được chuyển tới
webbrowser.open().
Cốt lõi và nội dung¶
gh-148157: Khắc phục sự cố không thể xảy ra khi phân tích nhận xét loại không hợp lệ cho các tham số chức năng. Được tìm thấy bởi OSS Fuzz trong #492782951.
gh-148144: Khởi tạo
_PyInterpreterFrame.visitedkhi sao chép khung trình thông dịch để GC tăng dần không đọc byte chưa được khởi tạo từ trình tạo và bản sao đối tượng khung.gh-146615: Khắc phục sự cố trong
__get__()cho các bộ mô tả METH_METHOD khi một đối tượng (không phải loại) không hợp lệ được chuyển làm đối số thứ hai. Bản vá của Steven Sun.gh-146308: Đã khắc phục một số sự cố xử lý lỗi trong mô-đun
_remote_debugging, bao gồm xác thực an toàn hơn các đối tượnginttừ xa, lỗi chuỗi tác vụ asyncio rõ ràng hơn và sửa lỗi dọn dẹp bộ đệm để tránh rò rỉ hoặc giải phóng kép siêu dữ liệu khi không phân bổ được. Bản vá của Pablo Galindo.gh-146128: Sửa lỗi có thể khiến các giá trị không đổi bị hỏng một phần trong mã AArch64 JIT. Vấn đề này chỉ mang tính lý thuyết và chưa thực sự được quan sát thấy trong các trình thông dịch Python chưa sửa đổi.
gh-146250: Đã sửa lỗi rò rỉ bộ nhớ trong
SyntaxErrorkhi khởi tạo lại nó.gh-146245: Đã sửa lỗi rò rỉ tham chiếu trong
socketkhi móc kiểm tra đưa ra các ngoại lệ trongsocket.getaddrinfo()vàsocket.sendto().gh-146196: Khắc phục Hành vi không xác định tiềm ẩn trong
PyUnicodeWriter_WriteASCII()bằng cách thêm kiểm tra độ dài bằng 0. Bản vá của Shamil Abdulaev.gh-146227: Sửa lỗi loại trong
_Py_atomic_load_uint16trong phần phụ trợ nguyên tử C11 (pyatomic_std.h), sử dụng tải nguyên tử 32 bit thay vì 16 bit. Được tìm thấy bởi Mohammed Zuhaib.gh-146092: Xử lý đúng cách các lỗi phân bổ bộ nhớ trên các mã str và float. Bản vá của Victor Stinner.
gh-146041: Khắc phục tình trạng thắt cổ chai mở rộng quy mô luồng tự do trong
sys.intern()vàPyObject_SetAttr()bằng cách tránh khóa toàn bộ trình thông dịch khi chuỗi đã được thực hiện và bất tử.gh-145990: Các phần
python --help-envhiện được sắp xếp theo tên biến môi trường.gh-145990:
python --help-xoptionshiện được sắp xếp theo tên tùy chọn-X.gh-145376: Sửa lỗi theo dõi GC trong
structseq.__replace__().gh-145792: Khắc phục quyền truy cập ngoài giới hạn khi gọi trình xử lý lỗi trên bản dựng CPython được biên dịch mà không hỗ trợ VLA.
gh-142183: Tránh trường hợp bệnh lý trong đó các cuộc gọi lặp lại ở độ sâu ngăn xếp cụ thể có thể chậm hơn đáng kể.
gh-145779: Cải thiện khả năng mở rộng quy mô của lệnh gọi
classmethod()vàstaticmethod()trong bản dựng có luồng tự do bằng cách tránh lệnh gọi__get__mô tả.gh-145783: Khắc phục sự cố không thể xảy ra trong trình phân tích cú pháp khi một số lỗi nhất định không được truyền sai. Được tìm thấy bởi OSS Fuzz trong #491369109.
gh-145685: Cải thiện khả năng mở rộng tra cứu thuộc tính loại trong free-threaded build bằng cách tránh tranh chấp về khóa loại bên trong.
gh-145701: Sửa
SystemErrorkhi__classdict__hoặc__conditional_annotations__nằm trong phạm vi hiểu nội tuyến của phạm vi lớp. Được tìm thấy bởi OSS Fuzz trong #491105000.gh-145713: Làm cho
bytearray.resize()trở nên an toàn với luồng trong bản dựng có luồng tự do bằng cách sử dụng phần quan trọng và gọi biến thể được giữ khóa của hàm thay đổi kích thước.gh-145615: Đã sửa lỗi rò rỉ bộ nhớ trong free-threaded build trong đó các trang mimalloc có thể vĩnh viễn không thể lấy lại được cho đến khi chuỗi sở hữu thoát ra.
gh-145566: Trong bản dựng luồng miễn phí, bỏ qua phần tạm dừng khi gán lại
__class__trên một đối tượng mới được tạo.gh-145335: Khắc phục sự cố trong
os.pathconf()khi được gọi với-1làm đối số đường dẫn.gh-145036: Trong bản dựng có luồng tự do, hãy khắc phục tình trạng chạy đua khi gọi
__sizeof__()trênlistgh-145376: Khắc phục rò rỉ tham chiếu trong nhiều tình huống lỗi bất thường khác nhau.
gh-145234: Đã sửa lỗi
SystemErrortrong trình phân tích cú pháp khi cookie mã hóa (ví dụ: UTF-7) giải mã thành trả về đầu dòng (\r). Các dòng mới hiện đã được chuẩn hóa sau khi giải mã trong bộ mã thông báo chuỗi.Bản vá của Pablo Galindo.
gh-130555: Sửa lỗi use-after-free trong
dict.clear()khi các giá trị từ điển được nhúng vào một đối tượng và hàm hủy gây ra đột biến đăng nhập lại của từ điển.gh-145187: Sửa lỗi xác nhận trình biên dịch không thành công khi tham số loại bị ràng buộc chứa biểu thức không hợp lệ trong khối điều kiện.
gh-145142: Khắc phục sự cố trong bản dựng luồng tự do khi đối số từ điển cho
str.maketrans()được sửa đổi đồng thời.gh-144872: Khắc phục lỗi tràn bộ đệm heap trong trình phân tích cú pháp được tìm thấy bởi OSS-Fuzz.
gh-144766: Khắc phục sự cố trong tiến trình con fork khi bật hỗ trợ hoàn hảo.
gh-144759: Khắc phục hành vi không xác định trong lexer khi con trỏ
startvàmulti_line_startlàNULLtrong_PyLexer_remember_fstring_buffers()và_PyLexer_restore_fstring_buffers(). Số học con trỏNULL(NULL - valid_pointer) hiện được bảo vệ bằng các kiểm traNULLrõ ràng.gh-144563: Khắc phục sự tương tác của trình lược tả Tachyon và
ctypescũng như các mô-đun khác tải thư viện chia sẻ Python (nếu có) trong một bản đồ độc lập vì điều này khiến cơ chế tải thông tin nhị phân bị nhầm lẫn. Bản vá của Pablo Galindogh-144601: Khắc phục sự cố khi nhập mô-đun có chức năng
PyInitgây ra ngoại lệ từ trình thông dịch phụ.gh-144438: Căn chỉnh mảng trạng thái luồng QSBR với ranh giới dòng bộ đệm 64 byte để tránh chia sẻ sai trong free-threaded build.
gh-144513: Khắc phục tình trạng bế tắc tiềm ẩn khi sử dụng các phần quan trọng trong quá trình tạm dừng thế giới trong bản dựng có luồng tự do.
gh-144446: Khắc phục tình trạng chạy đua dữ liệu trong bản dựng luồng tự do khi đọc các thuộc tính đối tượng khung trong khi một luồng khác đang thực thi khung.
gh-143636: Khắc phục sự cố khi gọi
SimpleNamespace.__replace__()trên các phiên bản không có không gian tên. Bản vá của Bénédikt Trần.gh-143650: Khắc phục tình trạng tương tranh trong
importlibtrong đó một luồng có thể nhận được tham chiếu mô-đun cũ khi quá trình nhập của một luồng khác không thành công.gh-141732: Đảm bảo
__repr__()choExceptionGroupvàBaseExceptionGroupkhông thay đổi khi chuỗi ngoại lệ ban đầu được truyền vào hàm tạo của nó sau đó bị thay đổi.gh-140594: Khắc phục lỗi đọc ngoài giới hạn khi đọc một ký tự NUL từ đầu vào tiêu chuẩn. Bản vá của Shamil Abdulaev.
gh-91636: Trong khi thực hiện thu thập rác, hãy xóa các điểm yếu đối với các đối tượng không thể truy cập được tạo trong quá trình chạy công cụ hoàn thiện. Nếu những điểm yếu đó không được xóa, chúng có thể tiết lộ những đối tượng không thể truy cập được.
gh-130327: Khắc phục lỗi xóa
__dict__của đối tượng nếu bị ghi đè khi chạy.gh-80667: Các chữ sử dụng cú pháp thoát
\N{name}giờ đây có thể tạo các chữ tượng hình CJK và âm tiết Hangul bằng cách sử dụng tên không phân biệt chữ hoa chữ thường.
Thư viện¶
gh-144503: Khắc phục hồi quy được giới thiệu trong 3.14.3 và 3.13.12 trong đó phương thức khởi động
multiprocessingforkserversẽ không thành công vớiBrokenPipeErrorkhi quy trình gốc cósys.argvrất lớn. Argv hiện được chuyển đến máy chủ phân nhánh dưới dạng các đối số dòng lệnh riêng biệt thay vì được nhúng vào chuỗi lệnh-c, tránh giới hạn độ dài mỗi đối số của hệ điều hành.gh-146613:
itertools: Khắc phục sự cố trongitertools.groupby()khi trình vòng lặp nhóm bị đột biến đồng thời.gh-146080:
ssl: khắc phục sự cố khi lệnh gọi lại SNI cố gắng sử dụng đối tượng SSL đã được thu thập rác. Bản vá của Bénédikt Trần.gh-146556: Sửa lỗi
annotationlib.get_annotations()bị treo vô thời hạn khi được gọi bằngeval_str=Truetrên một lệnh gọi có chuỗi__wrapped__hình tròn (ví dụ:f.__wrapped__ = f). Việc phát hiện chu trình bằng cách sử dụng tập hợp đã truy cập dựa trên id hiện dừng quá trình truyền tải và quay trở lại các tổng thể được tìm thấy cho đến nay, phản ánh cách tiếp cận củainspect.unwrap().gh-146090:
sqlite3: khắc phục sự cố khisqlite3.Connection.create_collation()bị lỗi với SQLITE_BUSY. Bản vá của Bénédikt Trần.gh-146090:
sqlite3: tăngMemoryErrorthay vìSystemErrorđúng cách khi không phân bổ được lệnh gọi lại ngữ cảnh. Bản vá của Bénédikt Trần.gh-145633: Fix
struct.pack('f', float): dùngPyFloat_Pack4()để nângOverflowError. Bản vá của Sergey B Kirpichev và Victor Stinner.gh-146310: Mô-đun
ensurepipkhông còn tìm kiếm các gói bánh xepip-*.whltrong thư mục hiện tại nữa.gh-146076:
zoneinfo: khắc phục sự cố khi xóa_weak_cachekhỏi lớp conzoneinfo.ZoneInfo.gh-146054: Giới hạn kích thước bộ đệm
encodings.search_function(). Được tìm thấy bởi OSS Fuzz trong #493449985.gh-146004: Tất cả các tùy chọn
-Xtừ dòng lệnh Python hiện được truyền tới các tiến trình con domultiprocessingsinh ra, không chỉ là một tập hợp con được mã hóa cứng. Điều này làm cho hành vi nhất quán giữa các phương thức khởi động "sinh sản" và "máy chủ phân nhánh" mặc định và phương thức bắt đầu "phân nhánh" cũ. Các tùy chọn trước đây không được phổ biến là:context_aware_warnings,cpu_count,disable-remote-debug,int_max_str_digits,lazy_imports,no_debug_ranges,pathconfig_warnings,perf,perf_jit,presite,pycache_prefix,thread_inherit_contextvàwarn_default_encoding.gh-145883:
zoneinfo: Sửa lỗi đọc tràn bộ đệm heap từ dữ liệu TZif không đúng định dạng. Được tìm thấy bởi OSS Fuzz, phát hành #492245058 và #492230068.gh-145754: Yêu cầu chữ ký trong quá trình mô phỏng autospec với định dạng chú thích
FORWARDREF. Điều này ngăn ngừa lỗi thời gian chạy khi chú thích sử dụng tên không được xác định khi chạy.gh-145750: Tránh hành vi không xác định do tràn số nguyên đã ký khi phân tích chuỗi định dạng trong mô-đun
struct. Được tìm thấy bởi OSS Fuzz trong #488466741.gh-145492: Khắc phục đệ quy vô hạn trong
collections.defaultdict__repr__khidefaultdictchứa chính nó. Dựa trên phân tích của KowalskiThomas trong gh-145492.gh-145623: Khắc phục sự cố trong
structkhi gọirepr()hoặc__sizeof__()trên đối tượngstruct.Structchưa được khởi tạo được tạo quaStruct.__new__()mà không gọi__init__().gh-145616: Phát hiện chính xác Android sysconfig ABI trên ARM 32-bit Android trên kernel ARM 64-bit
gh-145551: Sửa lỗi InvalidStateError khi hủy quá trình được tạo bởi
asyncio.create_subprocess_exec()hoặcasyncio.create_subprocess_shell(). Bản vá của Daan De Meyer.gh-145446: Bây giờ
functoolsan toàn hơn trong bản dựng luồng tự do khi sử dụng từ khóa trongfunctools.partial()gh-145417:
venv: Ngăn chặn việc lưu giữ bối cảnh SELinux không chính xác khi sao chép tập lệnhActivate.ps1. Tập lệnh kế thừa bối cảnh bảo mật SELinux của thư mục mẫu hệ thống, thay vì thư mục dự án đích.gh-145376: Khắc phục sự tham chiếu con trỏ rỗng và trống gấp đôi trong các tình huống lỗi bất thường trong mô-đun
hashlibvàhmac.gh-145301:
hmac: khắc phục sự cố khi khởi tạo mô-đun mở rộng C cơ bản không thành công.gh-145301:
hashlib: khắc phục sự cố khi khởi tạo mô-đun mở rộng C cơ bản không thành công.gh-145264: Bộ giải mã Base64 (xem
binascii.a2b_base64(),base64.b64decode(), v.v.) không còn bỏ qua dữ liệu dư thừa sau bộ đệm đầu tiên ở chế độ không nghiêm ngặt (mặc định). Thay vào đó, để phù hợp với RFC 4648, phần 3.3, giờ đây nó bỏ qua ký tự pad, "=", nếu nó xuất hiện trước khi kết thúc dữ liệu được mã hóa.gh-145158: Tránh hành vi không xác định do tràn số nguyên đã ký khi phân tích chuỗi định dạng trong mô-đun
struct.gh-144984: Khắc phục sự cố trong
xml.parsers.expat.xmlparser.ExternalEntityParserCreate()khi phân bổ không thành công. Các đường dẫn lỗi có thể hủy đăng ký NULLhandlersvà giảm gấp đôi số lượng tham chiếu của trình phân tích cú pháp gốc.gh-88091: Sửa lỗi
unicodedata.decomposition()cho ký tự Hangul.gh-144986: Sửa lỗi rò rỉ bộ nhớ trong
atexit.register(). Bản vá của Shamil Abdulaev.gh-144777: Khắc phục các cuộc đua dữ liệu trong
io.IncrementalNewlineDecodertrong free-threaded build.gh-144809: Tạo bản sao nguyên tử của
collections.dequetrong free-threaded build.gh-144835: Đã thêm phần giải thích còn thiếu cho một số tham số trong
glob.glob()vàglob.iglob().gh-144833: Đã sửa lỗi không sử dụng trong
sslkhiSSL_new()trả về NULL trongnewPySSLSocket(). Lỗi được báo cáo thông qua một con trỏ lơ lửng sau khi đối tượng đã được giải phóng.gh-144782: Sửa
argparse.ArgumentParserthànhpickleable.gh-144259: Khắc phục sự hiển thị không nhất quán của nội dung được dán nhiều dòng dài trong REPL.
gh-144156: Sửa lỗi gấp các tiêu đề của thư viện
emailkhi sử dụng các từ được mã hóa RFC 2047. Bây giờ khoảng trắng được bảo toàn chính xác và cũng được thêm chính xác giữa các từ được mã hóa liền kề. Thuộc tính thứ hai đã bị hỏng do bản sửa lỗi cho gh-92081, bản sửa lỗi này hầu hết đã sửa các lỗi trước đó để duy trì khoảng trắng.gh-66305: Đã sửa lỗi treo trên Windows trong mô-đun
tempfilekhi cố gắng tạo tệp tạm thời hoặc thư mục con trong thư mục không thể ghi.gh-140814:
multiprocessing.freeze_support()không còn đặt phương thức bắt đầu mặc định làm tác dụng phụ nữa, điều này trước đây đã gây ra lệnh gọimultiprocessing.set_start_method()tiếp theo để tăngRuntimeError.gh-144475: Gọi
repr()trênfunctools.partial()giờ đây an toàn hơn khi các thuộc tính bên trong của đối tượng một phần được thay thế trong khi biểu diễn chuỗi đang được tạo.gh-144538: Chuyển phiên bản pip đi kèm trong Ensurepip lên phiên bản 26.0.1
gh-144494: Khắc phục hồi quy hiệu suất trong
asyncio.all_tasks()trên free-threaded builds. Bản vá của Kumar Aditya.gh-144316: Khắc phục sự cố trong
_remote_debuggingkhiếntest_external_inspectionthỉnh thoảng bị lỗi. Bản vá của Taegyun Kim.gh-143637: Đã khắc phục sự cố trong socket.sendmsg() có thể xảy ra nếu dữ liệu phụ trợ bị thay đổi khi nhập lại trong quá trình phân tích cú pháp đối số.
gh-143543: Khắc phục sự cố trong itertools.groupby có thể xảy ra khi phương thức
__eq__()do người dùng xác định nhập lại trình vòng lặp trong quá trình so sánh khóa.gh-140652: Khắc phục sự cố trong
_interpchannels.list_all()sau khi đóng kênh.gh-143698: Cho phép các đối số scheduler và setpgroup rõ ràng là
Nonekhi gọios.posix_spawn()hoặcos.posix_spawnp(). Bản vá của Bénédikt Trần.gh-143698: Tăng
TypeErrorthay vìSystemErrorkhi scheduler trongos.posix_spawn()hoặcos.posix_spawnp()không phải là một bộ dữ liệu. Bản vá của Bénédikt Trần.gh-142516:
ssl: sửa lỗi rò rỉ tham chiếu trong các đối tượngssl.SSLContext. Bản vá của Bénédikt Trần.gh-143304: Sửa lỗi
ctypes.CDLLtôn vinh tham sốhandletrên hệ thống POSIX.gh-142781:
zoneinfo: khắc phục sự cố khi khởi tạo các đối tượngZoneInfomà bộ nhớ đệm cấp lớp bên trong không nhất quán.gh-142763: Khắc phục tình trạng chạy đua giữa quá trình tạo
zoneinfo.ZoneInfovàzoneinfo.ZoneInfo.clear_cache()có thể tăngKeyError.gh-142787: Khắc phục lỗi xác nhận trong chỉ số dưới blob
sqlite3khi cắt bằng các chỉ mục dẫn đến một lát trống.gh-142352: Sửa
asyncio.StreamWriter.start_tls()để chuyển dữ liệu được đệm từStreamReadersang lớp SSL, ngăn ngừa mất dữ liệu khi nâng cấp kết nối lên giữa luồng TLS (ví dụ: khi triển khai hỗ trợ giao thức PROXY).gh-141707: Không thay đổi loại
tarfile.TarInfotừAREGTYPEthànhDIRTYPEkhi phân tích tên dài GNU hoặc tiêu đề liên kết.gh-139933: Cải thiện đề xuất
AttributeErrorcho các lớp bằng phương thức__dir__()tùy chỉnh trả về danh sách các giá trị không thể sắp xếp. Bản vá của Bénédikt Trần.gh-137335: Loại bỏ mọi khả năng xung đột tên cho các đường dẫn được đặt tên trong
multiprocessingvàasynciotrên Windows, dù nhỏ đến đâu.gh-80667: Hỗ trợ tra cứu chữ Tangut trong
unicodedata.bpo-40243: Sửa
unicodedata.ucd_3_2_0.numeric()cho các giá trị không thập phân.
Tài liệu¶
gh-126676: Mở rộng tài liệu
argparsechotype=boolbằng cách minh họa hành vi đáng ngạc nhiên và gợi ý các lựa chọn thay thế phổ biến.gh-145649: Sửa lỗi ngắt dòng và định dạng văn bản của các mô tả tùy chọn
-Xtrong trang man python(1) bằng cách sử dụng đánh dấu roff thích hợp.gh-145450: Tài liệu thiếu các phương thức getter
wave.Wave_writecông khai.gh-136246: Liên kết "Cải thiện trang này" mới có sẵn ở thanh bên trái của tài liệu, cung cấp các liên kết để tạo sự cố GitHub, bài đăng trên diễn đàn thảo luận hoặc yêu cầu kéo.
Kiểm tra¶
gh-144418: Trình mô phỏng RAM của máy thử nghiệm Android đã được tăng từ 2 GB lên 4 GB.
gh-146202: Khắc phục tình trạng chạy đua trong regrtest: đảm bảo rằng thư mục tạm thời được tạo trong quy trình công nhân. Trước đây, temp_cwd() có thể bị lỗi trên Windows nếu thư mục "build" không được tạo. Bản vá của Victor Stinner.
gh-144739: Khi Python được biên dịch với hệ thống người nước ngoài cũ hơn 2.7.2 nhưng các bài kiểm tra chạy với người nước ngoài mới hơn, vẫn bỏ qua
test.test_pyexpat.MemoryProtectionTest.
xây dựng¶
gh-146541: Nền tảng thử nghiệm Android hiện có thể được xây dựng cho các mục tiêu ARM và x86 32-bit.
gh-146498: Tập lệnh xây dựng XCframework của iOS hiện đảm bảo libpython không được đưa vào nội dung ứng dụng đã cài đặt và mạnh mẽ hơn trong việc xác định nội dung nhị phân của thư viện tiêu chuẩn yêu cầu xử lý.
gh-146450: Tập lệnh xây dựng Android đã được sửa đổi để cải thiện tính tương đương với các tập lệnh xây dựng nền tảng khác.
gh-146446: Mục tiêu rõ ràng cho tập lệnh xây dựng XCframework của Apple/iOS giờ đây có tính chọn lọc hơn khi nhắm mục tiêu vào một kiến trúc duy nhất.
gh-145801: Khi bản dựng Python được tối ưu hóa với GCC bằng PGO, hãy sử dụng tùy chọn
-fprofile-update=atomicđể sử dụng các thao tác nguyên tử khi cập nhật thông tin hồ sơ. Tùy chọn này giúp giảm nguy cơ hỏng Tệp dữ liệu gcov (.gcda) có thể gây ra sự cố GCC ngẫu nhiên. Bản vá của Victor Stinner.
cửa sổ¶
gh-145307: Trì hoãn việc tải mô-đun
psapi.dllcho đến khictypes.util.dllist()sử dụng nó.gh-144551: Đã cập nhật phiên bản đi kèm của OpenSSL lên 3.0.19.
gh-140131: Sửa vị trí con trỏ REPL trên Windows khi dòng đề xuất hoàn thành mô-đun chạm vào chiều rộng bảng điều khiển.
macOS¶
gh-144551: Cập nhật trình cài đặt macOS để sử dụng OpenSSL 3.0.19.
gh-137586: Gọi osascript với đường dẫn tuyệt đối trong
webbrowservàturtledemo.
C API¶
gh-146056:
PyUnicodeWriter_WriteRepr()hiện hỗ trợ đối sốNULL.gh-145010: Sử dụng các lựa chọn thay thế phương ngữ GCC để tập hợp nội tuyến trong
object.hđể các tiêu đề Python biên dịch chính xác với-masm=intel.gh-144981: Làm cho
PyUnstable_Code_SetExtra(),PyUnstable_Code_GetExtra()vàPyUnstable_Eval_RequestCodeExtraIndex()an toàn theo luồng trên bản dựng free threaded.
Bản cuối cùng của Python 3.14.3¶
Release date: 2026-02-03
cửa sổ¶
gh-128067: Sửa lỗi trong PyREPL trên Windows khiến đầu ra không có dòng mới ở cuối bị ghi đè bởi lời nhắc tiếp theo.
Công cụ/Bản trình diễn¶
gh-142095: Tạo lệnh gdb 'py-bt' sử dụng khung từ trạng thái cục bộ của luồng khi khả dụng. Bản vá của Sam Gross và Victor Stinner.
Kiểm tra¶
gh-144415: Nền tảng thử nghiệm Android hiện phân biệt giữa các thông báo stdout/stderr được kích hoạt bởi dòng mới và những thông báo được kích hoạt bởi lệnh gọi thủ công tới
flush. Điều này khắc phục việc ghi nhật ký các chỉ báo tiến trình và nội dung tương tự.gh-143460: Bỏ qua các bài kiểm tra dựa trên khả năng thu hồi vô hạn nếu kích thước ngăn xếp không giới hạn.
gh-65784: Thêm hỗ trợ cho tài nguyên được tham số hóa
wantobjectstrong regrtests, cho phép chạy thử nghiệm Tkinter với giá trị được chỉ định làtkinter.wantobjects, ví dụ:-u wantobjects=0.gh-143553: Thêm hỗ trợ cho các tài nguyên được tham số hóa, chẳng hạn như
-u xpickle=2.7.gh-142836: Chứa Solaris trong
test_pdb.test_script_target_anonymous_pipe.bpo-31391: Chuyển tiếp cổng test_xpickle từ Python 2 sang Python 3 và thêm tài nguyên trở lại dòng lệnh của thử nghiệm.
Bảo mật¶
gh-144125:
BytesGeneratorbây giờ sẽ từ chối tuần tự hóa (ghi) các tiêu đề được gấp hoặc phân cách không an toàn; xemverify_generated_headers. (Được đóng góp bởi Bas Bloemsaat và Petr Viktorin trong gh-121650).gh-143935: Đã sửa lỗi sắp xếp các nhận xét khi làm phẳng thư email bằng chính sách email hiện đại. Các nhận xét bao gồm một chuỗi rất dài các ký tự không thể gập lại được có thể kích hoạt việc ngắt dòng bắt buộc, bỏ qua khoảng trắng bắt buộc ở đầu dòng tiếp theo, khiến phần còn lại của nhận xét được hiểu là trường tiêu đề mới. Điều này cho phép chèn tiêu đề với các đầu vào được chế tạo cẩn thận.
gh-143925: Từ chối các ký tự điều khiển trong các loại phương tiện
data:URL.gh-143919: Từ chối các ký tự điều khiển trong các trường và giá trị
http.cookies.Morsel.gh-143916: Từ chối các ký tự điều khiển C0 trong các trường, giá trị và tham số wsgiref.headers.Headers.
Thư viện¶
gh-144380: Cải thiện hiệu suất lặp lại dòng
io.BufferedReaderthêm ~49%.gh-144169: Khắc phục ba sự cố khi cung cấp đối số từ khóa không phải chuỗi cho các đối tượng trong mô-đun
ast.gh-144100: Đã khắc phục sự cố trong ctypes khi sử dụng loại
POINTER(str)không được dùng nữa trongargtypes. Thay vì hủy bỏ, ctypes hiện đưa ra một ngoại lệ Python thích hợp khi loại mục tiêu con trỏ chưa được giải quyết.gh-144050: Sửa
stat.filemode()trong quá trình triển khai Python thuần túy để tránh phân loại sai các giá trị chế độ không hợp lệ thành thiết bị khối.gh-144023: Đã sửa lỗi xác thực bộ mô tả tệp 0 trong các hàm posix khi được sử dụng với tham số follow_symlinks.
gh-143999: Khắc phục sự cố trong đó
inspect.getgeneratorstate()vàinspect.getcoroutinestate()có thể bị lỗi đối với các trình tạo được bao bọc bởitypes.coroutine()ở trạng thái treo.gh-143831: Các đối tượng
annotationlib.ForwardRefhiện có thể băm được khi được tạo từ phạm vi chú thích có bao đóng. Trước đây, việc băm các đối tượng như vậy sẽ tạo ra một ngoại lệ. Bản vá của Bartosz Sławecki.gh-143874: Đã sửa lỗi trong
pdbkhiến kết quả biểu thức không được gửi lại cho máy khách từ xa.gh-143880: Khắc phục tình trạng chạy đua dữ liệu trong
functools.partial()trong bản dựng free threading.gh-143706: Sửa máy chủ phân nhánh
multiprocessingđểsys.argvđược đặt chính xác trước khi__main__được tải trước. Trước đây,sys.argvtrống trong quá trình nhập mô-đun chính trong các tiến trình con của máy chủ ngã ba. Điều này khắc phục lỗi hồi quy được giới thiệu trong 3.13.8 và 3.14.1. Root do Aaron Wieczorek gây ra, thử nghiệm do Thomas Watson cung cấp, cảm ơn!gh-143638: Cấm các lệnh gọi lại của phương thức
pickle.Picklervàpickle.Unpicklerđể triển khai C. Trước đây, điều này có thể gây ra sự cố hoặc hỏng dữ liệu, giờ đây, các lệnh gọi đồng thời của các phương thức của cùng một đối tượng sẽ gây raRuntimeError.gh-78724: Tăng
RuntimeErrorkhi người dùng cố gắng gọi các phương thức trên các đối tượngStructđược khởi tạo một nửa, Ví dụ: được tạo bởiStruct.__new__(Struct). Bản vá của Sergey B Kirpicchev.gh-143196: Khắc phục sự cố khi đối tượng bộ mã hóa bên trong được trả về bởi hàm
json.encoder.c_make_encoder()không có giấy tờ được gọi với đối số giây khác 0 (_current_indent_level).gh-143191:
_thread.stack_size()hiện tăngValueErrornếu kích thước ngăn xếp quá nhỏ. Bản vá của Victor Stinner.gh-143602: Khắc phục sự cố không nhất quán trong
write()dẫn đến ghi đè bộ đệm không mong muốn bằng cách loại bỏ trùng lặp xuất bộ đệm.gh-143547: Sửa lỗi
sys.unraisablehook()khi hook đưa ra một ngoại lệ và thay đổisys.unraisablehook(): giữ một tham chiếu mạnh đến hook cũ. Bản vá của Victor Stinner.gh-143517:
annotationlib.get_annotations()không còn tăngSyntaxErrorkhi đánh giá chú thích được gắn dấu sao được xâu chuỗi bắt đầu bằng một hoặc nhiều ký tự khoảng trắng, theo sau là*. Bản vá của Bartosz Sławecki.gh-143378: Khắc phục sự cố use-after-free khi đối tượng
BytesIObị đột biến đồng thời trongwrite()hoặcwritelines().gh-143346: Sửa lỗi gói dữ liệu Base64 trong
plistlib._PlistWriterkhông chính xác khi thụt lề chứa kết hợp các tab và dấu cách.gh-143310:
tkinter: khắc phục sự cố khilistPython bị đột biến trong quá trình chuyển đổi sang đối tượng Tcl (ví dụ: khi đặt biến Tcl). Bản vá của Bénédikt Trần.gh-143309: Khắc phục sự cố trong
os.execve()trên nền tảng không phải Windows khi được cung cấp ánh xạ môi trường tùy chỉnh, sau đó bị thay đổi trong quá trình phân tích cú pháp. Bản vá của Bénédikt Trần.gh-143308:
pickle: khắc phục sự cố không sử dụng sau khiPickleBufferbị đột biến đồng thời bởi lệnh gọi lại bộ đệm tùy chỉnh trong quá trình tẩy. Bản vá của Bénédikt Tran và Aaron Wieczorek.gh-143237: Khắc phục sự hỗ trợ của các đường ống được đặt tên trong trình xử lý
loggingxoay.gh-143249: Khắc phục các rò rỉ bộ đệm có thể xảy ra trong I/O chồng chéo của Windows khi xử lý lỗi.
gh-143241:
zoneinfo: sửa vòng lặp vô hạn trongZoneInfo.from_filekhi phân tích cú pháp tệp TZif không đúng định dạng. Bản vá của Fatih Celik.gh-142830:
sqlite3: khắc phục sự cố use-after-free khi lệnh gọi lại của kết nối bị thay đổi trong quá trình thực hiện lệnh gọi lại. Bản vá của Bénédikt Trần.gh-143200:
xml.etree.ElementTree: khắc phục sự cố use-after-free trong các phương thức__getitem__()và__setitem__()củaElementkhi phần tử bị đột biến đồng thời. Bản vá của Bénédikt Trần.gh-142195: Cập nhật logic đánh giá thời gian chờ trong
subprocessđể tương thích với các môi trường xác định như Shadow nơi thời gian di chuyển chính xác theo yêu cầu.gh-142164: Sửa thông báo lỗi tràn bitfield ctypes để báo cáo phép tính kích thước và độ lệch chính xác.
gh-143145: Đã sửa lỗi rò rỉ tham chiếu có thể xảy ra trong ctypes khi xây dựng kết quả có nhiều tham số đầu ra bị lỗi.
gh-122431: Đã sửa thông báo lỗi trong
readline.append_history_file()để nói rằngnelementsphải không âm thay vì dương.gh-143004: Khắc phục khả năng không sử dụng sau này trong
collections.Counter.update()khi mã người dùng thay đổi Bộ đếm trong quá trình cập nhật.gh-143046:
asyncioREPL không còn in thông báo bản quyền và phiên bản ở chế độ im lặng (-q). Bản vá của Bartosz Sławecki.gh-140648:
asyncioREPL hiện tôn trọng cờ-I(chế độ cách ly). Trước đây, nó sẽ tải và thực thiPYTHONSTARTUPngay cả khi cờ được đặt. Đóng góp bởi Bartosz Sławecki.gh-142991: Đã sửa lỗi các hoạt động của ổ cắm như recvfrom() và sendto() cho ổ cắm chuyển hướng FreeBSD(4).
gh-143010: Đã sửa lỗi trong
mailboxtrong đó thời gian chính xác của sự kiện bên ngoài có thể dẫn đến việc thư viện mở tệp hiện có thay vì tệp mà nó dự kiến tạo.gh-142881: Sửa lỗi cuộc gọi đồng thời và gọi lại của
atexit.unregister().gh-112127: Khắc phục lỗi use-after-free trong
atexit.unregister()khi lệnh gọi lại chưa được đăng ký trong quá trình so sánh.gh-142783: Sửa lỗi không sử dụng thông tin vùng sau bằng bộ mô tả _weak_cache. bộ mô tả là _weak_cache có thể gây ra sự cố trong quá trình tạo đối tượng. Bản sửa lỗi đảm bảo tính tham chiếu thích hợp cho các đối tượng do bộ mô tả cung cấp.
gh-142754: Thêm thuộc tính ownerDocument vào các thành phần và thuộc tính
xml.dom.minidomđược tạo bằng cách khởi tạo trực tiếp lớpElementhoặcAttr. Lưu ý rằng cách tạo nút này không được hỗ trợ; Thay vào đó, nên sử dụng các hàm tạo nhưxml.dom.Document.documentElement().gh-142784:
asyncioREPL hiện đóng vòng lặp đúng cách khi kết thúc phiên tương tác. Trước đây, nó có thể gây ra những cảnh báo đáng ngạc nhiên. Đóng góp bởi Bartosz Sławecki.gh-142555:
array: khắc phục sự cố tronga[i] = vkhi chuyển đổi i thành chỉ mục thông quai.__index__hoặci.__float__làm thay đổi mảng.gh-142594: Khắc phục sự cố trong
TextIOWrapper.close()khi thuộc tínhclosedcủa bộ đệm cơ bản gọidetach().gh-142451:
hmac: Đảm bảo rằng thuộc tínhHMAC.block_sizeđượcHMAC.copysao chép chính xác. Bản vá của Bénédikt Trần.gh-142495:
collections.defaultdicthiện ưu tiên__setitem__()khi chèn các giá trị mặc định từdefault_factory. Điều này ngăn chặn các điều kiện tương tranh trong đó giá trị mặc định sẽ ghi đè lên giá trị được đặt trước khidefault_factorytrả về.gh-142651:
unittest.mock: khắc phục sự cố an toàn luồng trong đóMock.call_countcó thể trả về giá trị không chính xác khi mô hình được gọi đồng thời từ nhiều luồng.gh-142595: Đã thêm kiểm tra loại trong quá trình khởi tạo mô-đun
decimalđể ngăn sự cố trong trường hợp stdlib bị hỏng. Bản vá của Sergey B Kirpicchev.gh-142556: Khắc phục sự cố khi tác vụ được đăng ký lại trong quá trình hoàn thiện trong
asyncio. Bản vá của Kumar Aditya.gh-123241: Tránh các hoạt động đếm tham chiếu trong bộ sưu tập rác của các đối tượng
ctypes.gh-142517: Các chính sách
emailkhông phảicompat32hiện xử lý chính xác việc gấp lại các từ được mã hóa có chứa byte không thể giải mã được trong bộ ký tự được chỉ định của chúng. Trước đây điều này dẫn đến ngoại lệ mã hóa trong quá trình gấp.gh-112527: Văn bản trợ giúp cho các tùy chọn bắt buộc trong
argparsekhông còn được mở rộng bằng " (mặc định: Không)".gh-142346: Sửa định dạng sử dụng cho các nhóm loại trừ lẫn nhau trong
argparsekhi chúng đứng trước các đối số vị trí hoặc theo sau hoặc trộn lẫn với các đối số tùy chọn khác.gh-142315: Pdb hiện có thể chạy các tập lệnh từ các đường dẫn ẩn danh được sử dụng để thay thế quy trình. Bản vá của Bartosz Sławecki.
gh-142332: Sửa định dạng sử dụng cho các đối số vị trí trong các nhóm loại trừ lẫn nhau trong
argparse. trongargparse.gh-142282: Sửa
winreg.QueryValueEx()để không vô tình đọc bộ đệm rác trong điều kiện chạy đua.gh-75949: Sửa
argparseđể duy trì các dấu phân cách|trong các nhóm loại trừ lẫn nhau khi dòng sử dụng bị ngắt quãng do độ dài.gh-142267: Cải thiện hiệu suất
argparsebằng cách lưu vào bộ đệm bộ định dạng được sử dụng để xác thực đối số.gh-68552: Các lỗi
MisplacedEnvelopeHeaderDefectvàMissing header namehiện được chuyển chính xác sang phương thứchandle_defectcủapolicytrongFeedParser.gh-142006: Sửa lỗi trong thuật toán gấp
email.policy.defaultdẫn đến một dòng mới được nhân đôi không chính xác khi một dòng kết thúc ở đúng max_line_length được theo sau bởi một mã thông báo có thể mở được.gh-105836: Khắc phục
asyncio.run_coroutine_threadsafe()khiến tác vụ asyncio bị hủy cơ bản đang chạy.gh-139971:
pydoc: Đảm bảo rằng liên kết tới tài liệu trực tuyến của mô-đun stdlib là chính xác.gh-139262: Một số lần nhấn phím có thể bị nuốt trong
PyREPLmới trên Windows, đặc biệt khi được sử dụng cùng với phím ALT. Sửa chữa bởi Chris Eibl.gh-138897: Cải thiện hiển thị
license/copyright/creditstrong REPL: hiện sử dụng máy nhắn tin.gh-79986: Thêm phân tích cú pháp cho tiêu đề
ReferencesvàIn-Reply-Tovào thư việnemailđể phân tích nội dung tiêu đề dưới dạng danh sách mã thông báo id tin nhắn. Điều này giúp chúng không bị gấp lại không đúng cách.gh-136282: Thêm hỗ trợ cho
UNNAMED_SECTIONkhi tạo một phần thông qua truy cập giao thức ánh xạgh-109263: Bắt đầu một quá trình từ bối cảnh sinh sản trong
multiprocessingkhông còn đặt phương thức bắt đầu trên toàn cầu nữa.gh-132715: Bỏ qua việc ghi các đối tượng trong quá trình sắp xếp sau khi xảy ra lỗi.
IDLE¶
gh-143774: Giải thích rõ hơn về thao tác Format/ Format Paragraph.
Tài liệu¶
gh-140806: Thêm tài liệu cho
enum.bin().
Cốt lõi và nội dung¶
gh-144307: Ngăn chặn rò rỉ tham chiếu khi phân tích mô-đun khi hoàn tất trình thông dịch.
gh-144194: Khắc phục lỗi xử lý khi khởi tạo perf jitdump do lỗi cấp phát bộ nhớ.
gh-144012: Kiểm tra xem kết quả có phải là
NULLtrong opcodeBINARY_OP_EXTENThay không.gh-141805: Khắc phục sự cố trong
setkhi các đối tượng có cùng hàm băm được thêm đồng thời vào tập hợp sau khi xóa phần tử có cùng hàm băm trong khi tập hợp vẫn chứa các phần tử có cùng hàm băm.gh-143670: Khắc phục sự cố trong chức năng
ga_repr_items_list.gh-143377: Khắc phục sự cố trong
_interpreters.capture_exception()khi ngoại lệ được định dạng không chính xác. Bản vá của Bénédikt Trần.gh-136924: Chế độ trợ giúp tương tác trong REPL không còn cú pháp sai làm nổi bật văn bản nhập dưới dạng mã Python. Đóng góp bởi Olga Matoula.
gh-143189: Khắc phục sự cố khi chèn khóa không phải
strvào từ điển bảng phân tách khi khóa khớp với khóa hiện có trong bảng phân tách nhưng không có giá trị tương ứng trong lệnh.gh-143228: Khắc phục sự cố use-after-free trong tấm bạt lò xo hoàn hảo khi chuyển đổi cấu hình trong khi các luồng đang chạy hoặc trong quá trình hoàn thiện trình thông dịch với các luồng daemon đang hoạt động. Bản sửa lỗi sử dụng tính năng tham chiếu để đảm bảo các tấm bạt lò xo không được giải phóng trong khi bất kỳ đối tượng mã nào vẫn có thể tham chiếu chúng. Pach của Pablo Galindo
gh-142664: Khắc phục sự cố use-after-free trong
memoryview.__hash__khi phương thức__hash__của đối tượng được tham chiếu làm thay đổi đối tượng hoặc chế độ xem đó. Bản vá của Bénédikt Trần.gh-142557: Khắc phục sự cố use-after-free trong bytearray.__mod__ khi
bytearraybị biến đổi trong khi định dạng các đối số kiểu%. Bản vá của Bénédikt Trần.gh-143195: Khắc phục sự cố use-after-free trong
bytearray.hex()vàmemoryview.hex()khi__len__()của dấu phân cách làm thay đổi đối tượng ban đầu. Bản vá của Bénédikt Trần.gh-142975: Khắc phục sự cố sau khi giải phóng tất cả các đối tượng được bộ thu gom rác theo dõi trên bản dựng free threaded.
gh-143135: Đặt
sys.flags.inspectthành1khiPYTHONINSPECTlà0. Trước đây, nó được đặt thành0trong trường hợp này.gh-143003: Khắc phục lỗi tràn bộ đệm trống dùng chung trong
bytearray.extend()khi__length_hint__()trả về 0 cho trình vòng lặp không trống.gh-143006: Khắc phục lỗi xác nhận có thể xảy ra khi so sánh
floatkhông nguyên âm vàintcó cùng số bit trong phần nguyên.gh-143057: Tránh khóa
PyTraceMalloc_Track()vàPyTraceMalloc_Untrack()khitracemallockhông được bật.gh-142776: Sửa lỗi rò rỉ bộ mô tả tệp trong import.c
gh-142829: Khắc phục sự cố use-after-free trong so sánh
contextvars.Contextkhi phương thức__eq__tùy chỉnh sửa đổi ngữ cảnh thông quaset().gh-142766: Xóa khung của trình tạo khi
generator.close()được gọi.gh-142737: Dấu vết sẽ được hiển thị ở chế độ dự phòng ngay cả khi
io.open()bị mất. Trước đây, điều này sẽ làm hỏng trình thông dịch. Bản vá của Bartosz Sławecki.gh-142554: Khắc phục sự cố trong
divmod()khi_pylong.int_divmod()không trả về chính xác một bộ có độ dài hai. Bản vá của Bénédikt Trần.gh-142560: Khắc phục lỗi use-after-free trong các phương pháp giống tìm kiếm
bytearray(find(),count(),index(),rindex()vàrfind()) bằng cách đánh dấu bộ nhớ là đã xuất, khiến các nỗ lực phân bổ lại tăngBufferError. Đối vớicontains(),split()vàrsplit(), buffer protocol được sử dụng cho việc này.gh-142531: Khắc phục hồi quy hiệu suất GC theo luồng tự do. Nếu có nhiều bộ dữ liệu không được theo dõi, GC sẽ chạy quá thường xuyên, dẫn đến hiệu suất kém. Cách khắc phục là đưa các bộ dữ liệu không được theo dõi vào số lượng đối tượng "tồn tại lâu". Số lượng đối tượng bị đóng băng hiện cũng được bao gồm vì GC có luồng tự do cũng phải quét những đối tượng đó.
gh-142402: Sửa lỗi tính tham chiếu khi các phần chữ liền kề được hợp nhất trong khi xây dựng
string.templatelib.Template, ngăn không cho đối tượng chuỗi bị dịch chuyển bị rò rỉ.gh-133932: Khắc phục sự cố trong bản dựng luồng miễn phí khi xóa các khung chứa số nguyên được gắn thẻ.
gh-142343: Khắc phục sự cố SIGILL trên m68k do ràng buộc lắp ráp không chính xác.
gh-100964: Sửa chu trình tham chiếu trong các khung máy phát đã cạn kiệt. Bản vá của Savannah Ostrowski.
gh-69605: Khắc phục các trường hợp cạnh xung quanh các mô-đun đã được nhập trong quá trình nhập tự động hoàn tất của REPL.
gh-138568: Đã điều chỉnh chức năng
help()tích hợp để bỏ qua các đầu vào trống trong chế độ tương tác.gh-137007: Sửa lỗi trong quá trình biên dịch JIT khiến cho việc xác nhận gỡ lỗi thu thập rác không thành công.
C API¶
gh-142589: Khắc phục việc xử lý
PyUnstable_Object_IsUniqueReferencedTemporary()các int được gắn thẻ trên ngăn xếp trình thông dịch.gh-142571:
PyUnstable_CopyPerfMapFile()hiện kiểm tra xem việc mở tệp có thành công hay không trước khi xóa.
xây dựng¶
gh-142454: Khi tính toán tổng hợp đầu vào giấy nến JIT, hãy sắp xếp các tệp đã băm theo tên tệp trước khi thêm nội dung của chúng vào trình băm. Điều này đảm bảo đầu vào băm xác định và do đó hàm băm xác định, độc lập với thứ tự hệ thống tệp.
gh-141808: Khi chạy
make clean-retain-profile, hãy giữ lại các mẫu tô JIT đã tạo. Bằng cách đó, các giấy nến không được tạo ra hai lần khi sử dụng Tối ưu hóa theo hướng dẫn hồ sơ (PGO). Nó cũng cho phép các nhà phân phối cung cấp giấy nến JIT được tạo sẵn của riêng họ.gh-138061: Đảm bảo các bản dựng có thể lặp lại bằng cách xác định việc tạo tiêu đề stencil JIT.
Python 3.14.2 cuối cùng¶
Release date: 2025-12-05
Bảo mật¶
gh-142145: Xóa hành vi bậc hai trong quá trình xóa bộ đệm ID nút
xml.minidom.gh-119452: Khắc phục khả năng từ chối dịch vụ bộ nhớ trong mô-đun
http.server. Khi một người dùng độc hại được kết nối với máy chủ CGI trên Windows, điều đó có thể khiến một lượng bộ nhớ tùy ý được phân bổ. Điều này có thể dẫn đến các triệu chứng bao gồmMemoryError, hoán đổi, hết bộ nhớ (OOM) các tiến trình hoặc vùng chứa bị chết hoặc thậm chí là sự cố hệ thống.
Thư viện¶
gh-140797: Hoàn nguyên các thay đổi đối với lớp
re.Scannerkhông có giấy tờ. Các nhóm chụp vẫn được phép tương thích ngược, mặc dù việc sử dụng chúng có thể dẫn đến kết quả không chính xác. Chúng sẽ bị cấm trong các phiên bản Python trong tương lai.gh-142206: Trình theo dõi tài nguyên trong mô-đun
multiprocessinghiện sử dụng giao thức truyền thông gốc, như trong Python 3.14.0 trở xuống, theo mặc định. Điều này tránh được các vấn đề khi nâng cấp Python khi nó đang chạy. (Lưu ý rằng các bản nâng cấp 'tại chỗ' như vậy không được thử nghiệm.) Trình theo dõi vẫn tương thích với các quy trình con sử dụng giao thức mới (nghĩa là các quy trình con sử dụng Python 3.13.10, 3.14.1 và 3.15).gh-142214: Khắc phục hai hồi quy trong
dataclassestrong Python 3.14.1 liên quan đến chú thích.Một ngoại lệ không còn xuất hiện nếu
slots=Trueđược sử dụng và phương thức__init__không có thuộc tính__annotate__(có thể vìinit=Falseđã được sử dụng).Một ngoại lệ không còn xuất hiện nếu chú thích được yêu cầu trên phương thức
__init__và một trong các trường không có trong chú thích lớp. Điều này có thể xảy ra trong một số tình huống động nhất định.
Bản vá của Jelle Zijlstra.
Cốt lõi và nội dung¶
Thư viện¶
Bản cuối cùng của Python 3.14.1¶
Release date: 2025-12-02
cửa sổ¶
gh-139810: Cài đặt bằng
py install 3[.x]-devbây giờ sẽ chọn phiên bản cuối cùng cũng như bản phát hành trước.
Công cụ/Bản trình diễn¶
gh-141692: Mỗi lát của XCframework iOS hiện chứa thư mục
libchứa liên kết tượng trưng đến libpython dylib. Điều này cho phép biên dịch các mô-đun nhị phân cho iOS bằng cách sử dụng liên kết thư viện động, thay vì liên kết Khung.gh-141442: Nền tảng thử nghiệm iOS hiện xử lý chính xác các đối số thử nghiệm có chứa dấu cách.
gh-140702: Ứng dụng thử nghiệm iOS hiện sẽ hiển thị biến môi trường
GITHUB_ACTIONScho các ứng dụng iOS đang được thử nghiệm.gh-137484: Yêu cầu
Tools/wasm/wasiđặt bản dựng Python vào một thư mục được đặt tên theo bộ ba bản dựng thay vì "bản dựng".gh-137248: Thêm tùy chọn
--logdirvàoTools/wasm/wasiđể chỉ định nơi ghi tệp nhật ký.gh-137243: Yêu cầu Công cụ/wasm/wasi phát hiện cài đặt WASI SDK trong /opt khi nó được trích xuất trực tiếp từ tarball phát hành.
Kiểm tra¶
gh-140482: Bảo tồn và khôi phục trạng thái
stty echonhư một phần của môi trường thử nghiệm.gh-140082: Cập nhật
python -m testđể đặtFORCE_COLOR=1khi chạy với màu được bật đểunittestđược nó chạy với đầu ra được chuyển hướng sẽ xuất ra màu.gh-139208: Fix regrtest
--fast-ci --verbose: đừng bỏ qua tùy chọn--verbosenữa. Bản vá của Victor Stinner.gh-136442: Sử dụng mã thoát
1thay vì5nếuunittest.TestCase.setUpClass()đưa ra một ngoại lệ
Bảo mật¶
gh-139700: Kiểm tra tính nhất quán của phần cuối zip64 của bản ghi thư mục trung tâm. Hỗ trợ các bản ghi với "dữ liệu mở rộng zip64" nếu không có byte nào được thêm vào tệp ZIP.
gh-139283:
sqlite3: xử lý chính xác số lượng hàng tối đa để tìm nạp trongCursor.fetchmanyvà từ chối các giá trị âm choCursor.arraysize. Bản vá của Bénédikt Trần.gh-137836: Thêm hỗ trợ cho phần tử "plaintext", phần tử RAWTEXT "xmp", "iframe", "noembed" và "noframes" và phần tử RAWTEXT tùy chọn "noscript" trong
html.parser.HTMLParser.gh-136063:
email.message: đảm bảo độ phức tạp tuyến tính cho việc phân tích các tham số HTTP cũ. Bản vá của Bénédikt Trần.gh-136065: Sửa độ phức tạp bậc hai trong
os.path.expandvars().gh-119451: Khắc phục khả năng từ chối dịch vụ bộ nhớ trong mô-đun
http.client. Khi kết nối với máy chủ độc hại, nó có thể khiến một lượng bộ nhớ tùy ý được phân bổ. Điều này có thể dẫn đến các triệu chứng bao gồmMemoryError, hoán đổi, hết bộ nhớ (OOM) các tiến trình hoặc vùng chứa bị chết hoặc thậm chí là sự cố hệ thống.gh-119342: Khắc phục khả năng từ chối dịch vụ bộ nhớ trong mô-đun
plistlib. Khi đọc tệp Plist nhận được từ nguồn không đáng tin cậy, nó có thể khiến một lượng bộ nhớ tùy ý được phân bổ. Điều này có thể dẫn đến các triệu chứng bao gồmMemoryError, hoán đổi, hết bộ nhớ (OOM) các tiến trình hoặc vùng chứa bị chết hoặc thậm chí là sự cố hệ thống.
Thư viện¶
gh-74389: Khi stdin đang được phiên bản
subprocess.Popensử dụng bị đóng, điều này hiện bị bỏ qua trongsubprocess.Popen.communicate()thay vì để lớp ở trạng thái không nhất quán.gh-87512: Khắc phục tình trạng hết thời gian chờ của
subprocess.Popen.communicate()trên Windows khi ghi dữ liệu đầu vào lớn. Trước đây, thời gian chờ bị bỏ qua trong quá trình ghi stdin, khiến phương thức này bị chặn vô thời hạn nếu tiến trình con không tiêu thụ dữ liệu đầu vào nhanh chóng. Việc ghi stdin hiện được thực hiện trong một luồng nền, cho phép thực thi đúng thời gian chờ.gh-141473: Khi
subprocess.Popen.communicate()được gọi với input và timeout và được gọi lần thứ hai sau ngoại lệTimeoutExpiredtrước khi quá trình kết thúc, nó sẽ không còn bị treo nữa.gh-59000: Khắc phục độ phân giải điểm dừng
pdbcho các phương thức lớp khi mô-đun xác định lớp không được nhập.gh-141570: Hỗ trợ file-like object nâng
OSErrortừfileno()trong phát hiện màu (_colorize.can_colorize()). Điều này có thể xảy ra khisys.stdoutđược chuyển hướng.gh-141659: Sửa lỗi bad file descriptor từ
_posixsubprocesstrên AIX.gh-141600: Sửa lỗi phát hiện phiên bản musl trên Void Linux.
gh-141497:
ipaddress: đảm bảo rằng các phương thứcIPv4Network.hosts()vàIPv6Network.hosts()luôn trả về một iterator.gh-140938: Các hàm
statistics.stdev()vàstatistics.pstdev()hiện đưa raValueErrorkhi đầu vào chứa vô cực hoặc NaN.gh-124111: Đã cập nhật cấu hình luồng Tcl trong
_tkinterđể giả định rằng các luồng luôn có sẵn trong Tcl 9 trở lên.gh-137109:
os.forkvà các API phân nhánh có liên quan sẽ không còn cảnh báo trong trường hợp phổ biến khi API nền tảng Linux hoặc macOS trả về số lượng luồng trong một quy trình và tìm thấy câu trả lời là 1 ngay cả khi lệnh gọi lạios.register_at_fork()after_in_parent=(lại) bắt đầu một chuỗi.gh-141314: Khắc phục lỗi xác nhận trong
io.TextIOWrapper.tell()khi đọc các tệp có kết thúc dòng trả về dòng độc lập (\r).gh-141311: Khắc phục lỗi xác nhận trong
io.BytesIO.readinto()và hành vi không xác định phát sinh khi vị trí đọc vượt quá dung lượng trongio.BytesIO.gh-141141: Khắc phục sự cố an toàn luồng với
base64.b85decode(). Đóng góp bởi Benel Tayar.gh-137969: Khắc phục
annotationlib.ForwardRef.evaluate()trả về các đối tượngForwardRefkhông cập nhật với các đối tượng toàn cầu mới.gh-140911:
collections: Đảm bảo rằng các phương thứcUserString.rindex()vàUserString.index()chấp nhận các phiên bảncollections.UserStringlàm đối số phụ.gh-140797: Lớp
re.Scannerkhông có giấy tờ hiện cấm các biểu thức thông thường chứa các nhóm thu thập trong các mẫu từ vựng của nó. Các mẫu sử dụng nhóm chụp trước đây có thể dẫn đến sự cố do lỗi phân đoạn. Thay vào đó, hãy sử dụng các nhóm không bắt giữ (?:...)gh-125115: Tái cấu trúc vấn đề phân tích cú pháp
pdbđể các đối số vị trí có thể được xử lý một cách trực quan.gh-140815:
faulthandlerhiện phát hiện xem khung hoặc đối tượng mã có hợp lệ hay được giải phóng hay không. Bản vá của Victor Stinner.gh-100218: Đặt chính xác
errnokhisocket.if_nametoindex()hoặcsocket.if_indextoname()tăngOSError. Bản vá của Bénédikt Trần.gh-140875: Khắc phục việc xử lý các tham chiếu ký tự không được tiết lộ (được đặt tên và số), theo sau là phần cuối của tệp trong
html.parser.HTMLParservớiconvert_charrefs=False.gh-140734:
multiprocessing: sửa từng lỗi một khi kiểm tra độ dài của đường dẫn tệp ổ cắm tạm thời. Bản vá của Bénédikt Trần.gh-140874: Chuyển phiên bản pip đi kèm trong Ensurepip lên phiên bản 25.3
gh-140691: Trong
urllib.request, khi mở FTP URL không thành công do không thể thực hiện kết nối dữ liệu, ổ cắm của kết nối điều khiển hiện đã đóng để tránhResourceWarning.gh-103847: Khắc phục tình trạng treo khi hủy quá trình được tạo bởi
asyncio.create_subprocess_exec()hoặcasyncio.create_subprocess_shell(). Bản vá của Kumar Aditya.gh-120057: Thêm
os.reload_environ()vàoos.__all__.gh-140228: Tránh thực hiện các lệnh gọi hệ thống tệp không cần thiết cho các mô-đun bị đóng băng trong
linecachekhi không có bộ đệm mô-đun chung.gh-140590: Khắc phục các đối số kiểm tra
functools.partial.__setstate__()có thể dẫn đến lỗi và sự cố trạng thái nội bộ. Bản vá của Sergey Miryanov.gh-125434: Hiển thị tên thread trong
faulthandlertrên Windows. Bản vá của Victor Stinner.gh-140634: Sửa lỗi đếm tham chiếu trong
os.sched_param.__reduce__().gh-140633: Bỏ qua
AttributeErrorkhi đặt thuộc tính__file__của mô-đun khi tải mô-đun mở rộng được đóng gói dưới dạng Apple Framework.gh-140593:
xml.parsers.expat: Khắc phục rò rỉ bộ nhớ có thể ảnh hưởng đến người dùng khiElementDeclHandler()được đặt thành trình xử lý khai báo phần tử tùy chỉnh. Bản vá của Sebastian Pipping.gh-140607: Bên trong
io.RawIOBase.read(), xác thực rằng số byte đượcio.RawIOBase.readinto()trả về là hợp lệ (bên trong bộ đệm được cung cấp).gh-138162: Sửa
logging.LoggerAdapterbằngmerge_extra=Truevà không có đối số extra.gh-138774:
ast.unparse()hiện tạo mã nguồn đầy đủ khi xử lý các nútast.Interpolationkhông có nguồn được chỉ định.gh-140474: Khắc phục rò rỉ bộ nhớ trong
array.arraykhi tạo mảng từstrtrống và mã loạiu.gh-137530:
dataclassesSửa các chú thích cho các phương thức__init__được tạo bằng cách thay thế các chú thích nằm trong dòng trong mã nguồn được tạo bằng các hàm__annotate__được đính kèm với các phương thức.gh-140348: Khắc phục sự hồi quy trong Python 3.14.0 trong đó việc sử dụng toán tử
|trên đối tượngtyping.Unionkết hợp với một đối tượng không phải là loại sẽ gây ra lỗi.gh-140272: Khắc phục rò rỉ bộ nhớ trong phương thức
clear()của cơ sở dữ liệudbm.gnu.gh-140041: Khắc phục sự cố nhập
ctypestrên Android và Cygwin khi có cờ ABI.gh-140120: Đã sửa lỗi rò rỉ bộ nhớ trong
hmackhi nó đang sử dụng chương trình phụ trợ hacl-star. Được phát hiện bởi@ashm-devbằng cách sử dụng addressSanitizer.gh-139905: Thêm gợi ý vào thông báo lỗi cho các lớp con
typing.Generickhi thiếucls.__parameters__do lớp cha không gọi đượcsuper().__init_subclass__()trong__init_subclass__của nó.gh-139894: Sửa lỗi chia sẻ tác vụ hiện tại không chính xác với tiến trình con trong khi phân nhánh trong
asyncio. Bản vá của Kumar Aditya.gh-139845: Sửa lỗi không in KeyboardInterrupt hai lần trong asyncio REPL mặc định.
gh-139783: Sửa
inspect.getsourcelines()trong trường hợp trang trí được theo sau bởi một nhận xét hoặc một dòng trống.gh-139809: Ngăn chặn quá trình tô màu sớm của trình phân tích cú pháp con
progtrongargparse.ArgumentParser.add_subparsers()để tôn trọng các thay đổi của biến môi trường màu sau khi tạo trình phân tích cú pháp.gh-139736: Sửa lỗi thụt lề quá mức trong
argparseHelpFormattermặc định. Bản vá của Alexander Edland.gh-70765:
http.server: sửa lỗi xử lý mặc định các yêu cầu HTTP/0.9 trongBaseHTTPRequestHandler. Trước đây,BaseHTTPRequestHandler.parse_request()đã đợi tiêu đề trong yêu cầu một cách không chính xác mặc dù những tiêu đề đó không được hỗ trợ trong HTTP/0.9. Bản vá của Bénédikt Trần.gh-63161: Sửa
tokenize.detect_encoding(). Hỗ trợ shebang không phải UTF-8 và nhận xét nếu mã hóa không phải UTF-8 được chỉ định. Phát hiện lỗi giải mã đối với mã hóa không phải UTF-8. Phát hiện byte rỗng trong mã nguồn.gh-139391: Khắc phục sự cố khi, trên các nền tảng không phải Windows, không thể thoát khỏi quy trình
python -m asynciobị tạm dừng bởi Ctrl+Z và sau đó được tiếp tục lại bởi fg chứ không phải bằng kill.gh-101828: Sửa các codec
'shift_jisx0213','shift_jis_2004','euc_jisx0213'và'euc_jis_2004'cắt bớt các ký tự null vì chúng được coi là một phần của chuỗi nhiều ký tự.gh-139289: Thực hiện nhập từng phần thực sự trên
rlcompletertrongpdbvà khôi phục bộ hoàn thiện hiện có sau khi nhậprlcompleter.gh-139246: sửa lỗi: dán độ rộng bằng 0 vào chiều rộng thay thế mặc định là sai.
gh-90949: Thêm
SetAllocTrackerActivationThreshold()vàSetAllocTrackerMaximumAmplification()vào các đối tượng xmlparser để ngăn việc sử dụng lượng bộ nhớ động không cân xứng từ bên trong trình phân tích cú pháp người nước ngoài. Bản vá của Bénédikt Trần.gh-139210: Sửa lỗi use-after-free khi báo cáo sự kiện không xác định trong
xml.etree.ElementTree.iterparse(). Bản vá của Ken Jin.gh-138860: Nhập lười biếng
rlcompletertrongpdbđể tránh bế tắc trong quy trình con.gh-112729: Khắc phục sự cố khi gọi
concurrent.interpreters.create()khi tiến trình hết bộ nhớ.gh-135729: Khắc phục ngoại lệ không thể xử lý được trong quá trình hoàn thiện khi sử dụng
concurrent.interpreterstrong REPL.gh-139076: Sửa lỗi trong mô-đun
pydocẩn các chức năng trong mô-đun Python nếu chúng được triển khai trong mô-đun mở rộng và mô-đun không có__all__.gh-139065: Sửa dấu cách ở cuối trước một từ dài được bao bọc nếu độ dài dòng chính xác là width trong
textwrap.gh-139001: Khắc phục tình trạng cuộc đua trong
pathlib.Pathtrên trường_raw_pathsnội bộ.gh-138813:
multiprocessing.BaseProcessmặc địnhkwargslàNonethay vì từ điển dùng chung.gh-138891: Sửa lỗi
SyntaxErrorkhiinspect.get_annotations(f, eval_str=True)được gọi trên một hàm được chú thích bằng PEP 646star_expressiongh-130567: Khắc phục sự cố có thể xảy ra trong
locale.strxfrm()do lỗi nền tảng trên macOS.gh-138859: Sửa lỗi tham số hóa loại chung nâng cao
TypeErrorkhi bỏ quaParamSpeccó mặc định không phải là danh sách các loại.gh-138764: Ngăn
annotationlib.call_annotate_function()gọi các hàm__annotate__không hỗ trợVALUE_WITH_FAKE_GLOBALStrong một không gian tên toàn cầu giả với các toàn cục trống.Làm cho các chú thích
FORWARDREFvàSTRINGquay trở lại sử dụng các chú thíchVALUEtrong trường hợp cả định dạng riêng của chúng vàVALUE_WITH_FAKE_GLOBALSđều không được hỗ trợ.gh-138775: Việc sử dụng
python -mvớibase64đã được sửa để phát hiện đầu vào từ thiết bị đầu cuối để nó thông báo chính xác EOF.gh-138779: Hỗ trợ số thiết bị lớn hơn
2**63-1cho trườngst_rdevcủa cấu trúcos.stat_result.gh-137706: Sửa lỗi đánh giá một phần các chú thích sử dụng
typing.Annotated[T, x]trong đóTlà tham chiếu chuyển tiếp.gh-88375: Sửa lỗi chuẩn hóa các quy tắc và URL
robots.txttrong mô-đunurllib.robotparser. Không còn bỏ qua dấu vết?nữa. Phân biệt các ký tự đặc biệt thô?,=và&với các ký tự được mã hóa phần trăm.gh-111788: Sửa lỗi phân tích cú pháp trong mô-đun
urllib.robotparser. Đừng thất bại khi cố gắng phân tích các đường dẫn kỳ lạ. Đừng cố gắng giải mã các tệprobots.txtkhông phải UTF-8.gh-98896: Khắc phục lỗi trong đa xử lý Resource_tracker khi tên SharedMemory chứa dấu hai chấm. Bản vá của Rani Pinchuk.
gh-138425: Khắc phục việc đánh giá một phần các đối tượng
annotationlib.ForwardRefdựa trên tên được xác định là toàn cục.gh-138432:
zoneinfo.reset_tzpath()bây giờ sẽ chuyển đổi bất kỳ đối tượngos.PathLikenào nó nhận được thành chuỗi trước khi thêm chúng vàoTZPATH. Nó sẽ tăngTypeErrornếu tìm thấy bất cứ thứ gì ngoài chuỗi sau chuyển đổi này. Nếu được cung cấp một đối tượngos.PathLikeđại diện cho một đường dẫn tương đối, giờ đây nó sẽ đưa raValueErrorthay vìTypeErrorvà hiển thị thông báo lỗi nhiều thông tin hơn.gh-138008: Sửa lỗi phân đoạn trong mô-đun
ctypesdoargtypeskhông hợp lệ. Bản vá của Dũng Nguyễn.gh-60462: Sửa lỗi
locale.strxfrm()trên Solaris (và có thể cả các nền tảng khác).gh-138239: REPL hiện làm nổi bật
typenhư một từ khóa mềm trong type statements.gh-138204: Cấm mở rộng
memory mapsẩn danh được chia sẻ trên Linux, điều này gây ra lỗi bus.gh-138010: Khắc phục sự cố trong đó việc xác định một lớp với lớp cơ sở được trang trí
@warnings.deprecatedcó thể không gọi phương thức__init_subclass__()chính xác trong trường hợp liên quan đến nhiều kế thừa. Bản vá của Brian Schubert.gh-138151: Trong
annotationlib, cải thiện việc đánh giá các tham chiếu chuyển tiếp tới các biến không tiêu điểm chưa được xác định khi chú thích được đánh giá ban đầu.gh-137317:
inspect.signature()hiện xử lý chính xác các lớp sử dụng bộ mô tả trên phương thức__init__()hoặc__new__()được bao bọc. Đóng góp bởi Yongyu Yan.gh-137754: Sửa lỗi nhập mô-đun
zoneinfonếu triển khai C của mô-đundatetimekhông khả dụng.gh-137490: Xử lý
ECANCELEDtheo cách tương tự nhưEINTRtrongsignal.sigwaitinfo()trên NetBSD.gh-137477: Sửa
inspect.getblock(),inspect.getsourcelines()vàinspect.getsource()cho biểu thức trình tạo.gh-137044: Trả về giá trị giới hạn lớn dưới dạng số nguyên dương thay vì số nguyên âm trong
resource.getrlimit(). Chấp nhận các giá trị lớn và từ chối các giá trị âm (ngoại trừRLIM_INFINITY) đối với các giới hạn trongresource.setrlimit().gh-75989:
tarfile.TarFile.extractall()vàtarfile.TarFile.extract()hiện ghi đè lên các liên kết tượng trưng khi trích xuất các liên kết cứng. (Được đóng góp bởi Alexander Enrique Urieles Nieto trong gh-75989.)gh-137017: Sửa
threading.Thread.is_aliveđể duy trìTruecho đến khi luồng hệ điều hành cơ bản được dọn sạch hoàn toàn. Điều này tránh các kết quả âm tính giả trong các trường hợp đặc biệt liên quan đến việc giám sát luồng hoặc các lệnh gọithreading.Thread.is_alivesớm.gh-137273: Khắc phục lỗi xác nhận gỡ lỗi trong
locale.setlocale()trên Windows.gh-137239:
heapq: Cập nhậtheapq.__all__với các chức năng*_max.gh-81325:
tarfile.TarFilehiện chấp nhận path-like khi làm việc trên kho lưu trữ tar. (Được đóng góp bởi Alexander Enrique Urieles Nieto trong gh-81325.)gh-137185: Khắc phục sự cố an toàn tín hiệu không đồng bộ tiềm ẩn trong
faulthandlerkhi in dấu vết ngăn xếp C.gh-136914: Sửa lỗi truy xuất
doctest.DocTest.linenocho các đối tượng được trang trí bằngfunctools.cache()hoặcfunctools.cached_property.gh-136912:
hmac.digest()hiện xử lý chính xác các khóa và thông báo lớn bằng cách quay lại triển khai Python thuần túy khi cần thiết. Bản vá của Bénédikt Trần.gh-83424: Cho phép tạo
ctypes.CDLLkhông có tên khi chuyển một điều khiển làm đối số.gh-136234: Khắc phục
asyncio.WriteTransport.writelines()hoạt động tốt khi xảy ra lỗi kết nối, bằng cách sử dụng hành vi tương tự nhưwrite().gh-136507: Sửa mimetypes CLI để xử lý nhiều tham số tệp.
gh-136057: Đã sửa lỗi trong
pdbvàbdbtrong đónextvàstepkhông thể vượt qua dòng nếu tồn tại một vòng lặp trong dòng.gh-135386: Sửa lỗi mở cơ sở dữ liệu
dbm.sqlite3để đọc từ tệp hoặc thư mục chỉ đọc.gh-135444: Sửa
asyncio.DatagramTransport.sendto()để tính kích thước tiêu đề datagram khi không thể gửi dữ liệu.gh-126631: Sửa lỗi
multiprocessingforkserverkhiến__main__không được tải trước.gh-135307:
email: Sửa ngoại lệ trongset_content()khi mã hóa văn bản và max_line_length được đặt thành0hoặcNone(không giới hạn).gh-134453: Đã sửa lỗi xử lý
subprocess.Popen.communicate()input=của các phiên bảnmemoryviewkhông có định dạng byte trên nền tảng POSIX. Giờ đây, chúng được truyền chính xác sang chế độ xem hình byte thay vì cắt bớt đầu vào. Nền tảng Windows không có lỗi này.gh-134698: Khắc phục sự cố khi gọi các phương thức
ssl.SSLContexthoặcssl.SSLSockettrên nhiều luồng.gh-125996: Sửa lỗi an toàn thread của
collections.OrderedDict. Bản vá của Kumar Aditya.gh-133789: Khắc phục việc giải nén các đối tượng
pathlibđã được chọn trong Python 3.13.gh-127081: Khắc phục sự cố an toàn luồng libc với
dbmbằng cách thực hiện các thao tác có trạng thái trong các phần quan trọng.gh-132551: Đảm bảo
io.BytesIOan toàn trong bản dựng free-threaded.gh-131788: Làm cho
ResourceTracker.sendtừmultiprocessingđăng ký lại an toàngh-118981: Khắc phục khả năng treo trong
multiprocessing.popen_spawn_posixcó thể xảy ra khi tiến trình con chết sớm bằng cách đóng fds con ngay lập tức.gh-102431: Làm rõ các ràng buộc cho các đối số "logic" trong các phương thức của
decimal.Context.gh-78319: UTF8 hỗ trợ cho lệnh IMAP APPEND đã được thực hiện tương thích với RFC.
bpo-38735: Khắc phục lỗi khi nhập mô-đun từ thư mục gốc trên các nền tảng giống Unix với bộ sys.pycache_prefix.
bpo-41839: Cho phép các giá trị ưu tiên âm từ các hàm
os.sched_get_priority_min()vàos.sched_get_priority_max().
IDLE¶
Tài liệu¶
gh-141994:
xml.sax.handler: Tạo Tài liệu củaxml.sax.handler.feature_external_gescảnh báo việc mở tối đa external entity attacks. Bản vá của Sebastian Pipping.gh-140578: Xóa câu lỗi thời trong tài liệu dành cho
multiprocessing, ngụ ý rằngconcurrent.futures.ThreadPoolExecutorkhông tồn tại.
Cốt lõi và nội dung¶
gh-142048: Khắc phục độ trễ thu gom rác tăng bậc hai trong bản dựng có luồng tự do.
Thư viện¶
Cốt lõi và nội dung¶
gh-141930: Khi nhập mô-đun, hãy sử dụng đối tượng tệp thông thường của Python để đảm bảo rằng quá trình ghi vào tệp
.pycđã hoàn tất hoặc xảy ra lỗi thích hợp.gh-120158: Khắc phục trạng thái không nhất quán khi bật hoặc tắt các sự kiện giám sát quá nhiều lần.
gh-139653: Chỉ tăng
RecursionErrorhoặc gây ra lỗi nghiêm trọng nếu con trỏ ngăn xếp đều ở dưới con trỏ giới hạn and phía trên cơ sở ngăn xếp. Nếu nằm ngoài những giới hạn này thì cho rằng điều đó là ổn. Điều này ngăn chặn các kết quả dương tính giả khi các luồng trong không gian người dùng hoán đổi ngăn xếp.gh-139103: Cải thiện khả năng mở rộng đa luồng của các lớp dữ liệu trên bản dựng có luồng tự do.
gh-141579: Sửa
sys.activate_stack_trampoline()để hỗ trợ chính xác phần phụ trợperf_jit. Bản vá của Pablo Galindo.gh-114203: Bỏ qua khóa nếu đối tượng đã bị khóa bởi phần quan trọng hai mutex.
gh-141528: Đề xuất sử dụng
concurrent.interpreters.Interpreter.close()thay vì chức năng_interpreters.destroyriêng tư khi cảnh báo về các trình thông dịch phụ còn lại. Bản vá của Sergey Miryanov.gh-141312: Khắc phục lỗi xác nhận trong phương thức
__setstate__của trình vòng lặp phạm vi khi một đối số không nguyên được truyền. Bản vá của Sergey Miryanov.
Thư viện¶
gh-116738: Đảm bảo an toàn cho luồng mô-đun csv trên bản dựng free threaded.
Cốt lõi và nội dung¶
gh-140939: Khắc phục rò rỉ bộ nhớ khi
bytearrayhoặcbytesđược định dạng với định dạng%*bvới chiều rộng lớn dẫn đếnMemoryError.
Thư viện¶
Cốt lõi và nội dung¶
gh-140530: Sửa lỗi rò rỉ tham chiếu khi
raise exc from causebị lỗi. Bản vá của Bénédikt Trần.gh-140373: Phát ra sự kiện
PY_UNWINDchính xác khi đóng đối tượng trình tạo. Bản vá của Mikhail Efimov.gh-140576: Đã khắc phục sự cố trong
tokenize.generate_tokens()trong trường hợp đầu vào không chính xác cụ thể. Bản vá của Mikhail Efimov.gh-140551: Đã khắc phục sự cố trong
dictnếudict.clear()được gọi ở giai đoạn tra cứu. Bản vá của Mikhail Efimov và Inada Naoki.gh-140517: Đã sửa lỗi rò rỉ tham chiếu khi lặp qua kết quả của
map()vớistrict=Truekhi các lần lặp đầu vào có độ dài khác nhau. Bản vá của Mikhail Efimov.gh-140471: Khắc phục khả năng tràn bộ đệm khi khởi tạo nút
ast.ASTkhi gặp phải_fieldskhông đúng định dạng có chứa không phảistr.gh-140431: Khắc phục sự cố trong garbage collector của Python do các đối tượng coroutine được khởi tạo một phần khi bật độ sâu theo dõi nguồn gốc coroutine (
sys.set_coroutine_origin_tracking_depth()).
Thư viện¶
gh-140398: Khắc phục rò rỉ bộ nhớ trong các hàm
readlineread_init_file(),read_history_file(),write_history_file()vàappend_history_file()khiPySys_Audit()bị lỗi.
Cốt lõi và nội dung¶
gh-140406: Khắc phục rò rỉ bộ nhớ khi phương thức
__hash__()của đối tượng trả về một đối tượng không phải làint.gh-140358: Khôi phục thời gian đã trôi qua và số lượng đối tượng không thể truy cập trong đầu ra gỡ lỗi GC. Những thứ này đã vô tình bị xóa trong quá trình tái cấu trúc
gc.c. Nhật ký gỡ lỗi bây giờ lại báo cáo thời gian thu thập đã trôi qua và số lượng đối tượng không thể truy cập được. Đóng góp bởi Pål Grønås Drange.gh-140306: Khắc phục rò rỉ bộ nhớ trong các hoạt động của kênh phiên dịch chéo và xử lý không gian tên được chia sẻ.
gh-140301: Khắc phục rò rỉ bộ nhớ của
PyConfigtrong trình thông dịch phụ.gh-140257: Khắc phục tình trạng xung đột dữ liệu giữa trình thông dịch_clear() và take_gil() trên eval_breaker trong quá trình hoàn thiện bằng các chuỗi daemon.
gh-139951: Khắc phục hiện tượng hồi quy về hiệu suất GC đối với vùng heap ngày càng tăng bao gồm chủ yếu là các bộ dữ liệu nhỏ.
Đếm số lượng đối tượng được theo dõi thực sự, thay vì các đối tượng có thể theo dõi được. Điều này đảm bảo rằng việc bỏ theo dõi các bộ dữ liệu có tác dụng giảm chi phí GC như mong muốn.
Không theo dõi hầu hết các bộ dữ liệu không thể theo dõi trong quá trình tạo. Điều này ngăn chặn số lượng lớn các bộ dữ liệu nhỏ gây ra quá nhiều GC.
gh-140104: Sửa lỗi xử lý ngoại lệ trong JIT. Bản vá của Ken Jin. Lỗi được báo cáo bởi Daniel Diniz.
gh-140061: Sửa lỗi kiểm tra xem một đối tượng có được tham chiếu duy nhất hay không để đảm bảo khả năng tương thích theo luồng tự do. Bản vá của Sergey Miryanov.
gh-140067: Khắc phục rò rỉ bộ nhớ khi tạo trình thông dịch phụ.
gh-140000: Khắc phục khả năng rò rỉ bộ nhớ khi tồn tại chu trình tham chiếu giữa một phiên bản của
typing.TypeAliasType,typing.TypeVar,typing.ParamSpechoặctyping.TypeVarTuplevà thuộc tính__name__của nó. Bản vá của Mikhail Efimov.gh-139914: Khôi phục hỗ trợ cho HP PA-RISC, có ngăn xếp ngày càng tăng.
gh-139988: Khắc phục rò rỉ bộ nhớ khi không tạo được loại
Union. Bản vá của Bénédikt Trần.gh-139748: Khắc phục rò rỉ tham chiếu trong các nhánh lỗi của hàm chấp nhận chuỗi hoặc byte đường dẫn như
compile()vàos.system(). Bản vá của Bénédikt Trần.gh-139516: Sửa lỗi dấu hai chấm lambda bắt đầu sai thông số định dạng trong chuỗi f trong mã thông báo.
gh-139640:
ast.parse()không còn phát ra cảnh báo cú pháp choreturn/break/continuetrongfinally(xem PEP 765) -- chúng chỉ được phát ra trong quá trình biên dịch.gh-139640: Sửa lỗi nuốt một số cảnh báo cú pháp trong các mô-đun khác nhau nếu chúng vô tình có cùng một thông báo và được phát ra từ cùng một dòng. Sửa các cảnh báo trùng lặp trong khối
finally.gh-63161: Hỗ trợ shebang không phải UTF-8 và nhận xét trong tệp nguồn Python nếu mã hóa không phải UTF-8 được chỉ định. Phát hiện lỗi giải mã trong nhận xét đối với mã hóa mặc định (UTF-8). Hiển thị dòng và vị trí lỗi giải mã đối với mã hóa mặc định trong truy nguyên. Hiển thị dòng chứa cookie mã hóa khi nó xung đột với BOM trong truy nguyên.
Thư viện¶
gh-116738: Đảm bảo luồng
mmapan toàn trên bản dựng free threaded.
Cốt lõi và nội dung¶
gh-138558: Khắc phục việc xử lý các chú thích chuỗi t bất thường trong Annotationlib. Bản vá của Dave Peck.
gh-134466: Không chạy PyREPL trong môi trường xuống cấp nơi không cho phép đặt thuộc tính termios.
gh-138944: Sửa thông báo
SyntaxErrorkhi cú pháp không hợp lệ xuất hiện trên cùng dòng với câu lệnhimport ... as ...hoặcfrom ... import ... as ...hợp lệ. Bản vá của Brian Schubert.gh-105487: Xóa
__copy__(),__deepcopy__()và__bases__không tồn tại khỏi các mục__dir__()củatypes.GenericAlias.gh-69605: Khắc phục một số mô-đun con thư viện tiêu chuẩn bị thiếu trong quá trình nhập tự động REPL.
Thư viện¶
gh-116738: Đảm bảo luồng
cProfilean toàn trên bản dựng free threaded.gh-138004: Trên nền tảng Solaris/Illumos, tên chuỗi hiện được mã hóa thành ASCII để tránh lỗi trên các hệ thống (ví dụ: OpenIndiana) không hỗ trợ tên không phải ASCII.
Cốt lõi và nội dung¶
gh-137433: Khắc phục tình trạng bế tắc tiềm ẩn trong bản dựng free threading khi các luồng daemon bật hoặc tắt tính năng lập hồ sơ hoặc theo dõi trong khi luồng chính đang tắt trình thông dịch.
gh-137400: Khắc phục sự cố trong bản dựng free threading khi tắt tính năng lập hồ sơ hoặc theo dõi trên tất cả các luồng bằng
PyEval_SetProfileAllThreads()hoặcPyEval_SetTraceAllThreads()hoặc các tương đương Python của chúng làthreading.settrace_all_threads()vàthreading.setprofile_all_threads().gh-58124: Sửa tên mã hóa Python trong lỗi Unicode của codec trang mã: sử dụng "cp65000" và "cp65001" thay vì "CP_UTF7" và "CP_UTF8" không phải là tên mã Python hợp lệ. Bản vá của Victor Stinner.
gh-132657: Cải thiện hiệu suất của
frozensetbằng cách loại bỏ các khóa trong bản dựng luồng tự do.gh-133400: Đã sửa lỗi hành vi Ctrl+D (^D) trong mô-đun _pyrepl để khớp với hành vi cũ của REPL trước 3.13.
gh-128640: Khắc phục sự cố khi sử dụng các luồng bên trong trình thông dịch phụ.
C API¶
gh-137422: Khắc phục tình trạng đua free threading trong
PyImport_AddModuleRef(). Trước đây, hai lệnh gọi hàm có thể trả về hai đối tượng khác nhau, chỉ một trong số đó được lưu trữ trongsys.modules.gh-140042: Đã xóa lệnh gọi sqlite3_shutdown có thể gây ra việc đóng kết nối cho sqlite khi được sử dụng với nhiều trình thông dịch phụ.
gh-141042: Tạo qNaN trong
PyFloat_Pack2()vàPyFloat_Pack4(), nếu trong khi chuyển đổi sang định dạng dấu phẩy động có độ chính xác hẹp hơn --- phần tải trọng còn lại sau khi cắt bớt sẽ bằng 0. Bản vá của Sergey B Kirpicchev.gh-140487: Sửa
Py_RETURN_NOTIMPLEMENTEDtrong giới hạn C API 3.11 trở lên: đừng coiPy_NotImplementedlà bất tử. Bản vá của Victor Stinner.gh-140153: Sửa định nghĩa
Py_REFCNT()trên C API 3.11-3.13 bị giới hạn. Bản vá của Victor Stinner.gh-139653: Thêm các hàm
PyUnstable_ThreadState_SetStackProtection()vàPyUnstable_ThreadState_ResetStackProtection()để đặt địa chỉ cơ sở bảo vệ ngăn xếp và kích thước bảo vệ ngăn xếp của trạng thái luồng Python. Bản vá của Victor Stinner.
xây dựng¶
gh-141808: Không tạo giấy nến jit hai lần trong trường hợp PGO xây dựng trên Windows.
gh-141784: Sửa lỗi biên dịch
_remote_debugging_module.ctrên Linux 32-bit. Bao gồm Python.h trước tiêu đề hệ thống để đảm bảo rằng_remote_debugging_module.csử dụng cùng loại (ABI) với Python. Bản vá của Victor Stinner.gh-140768: Cảnh báo khi phiên bản WASI SDK không khớp với những gì được hỗ trợ.
gh-140513: Tạo ra lỗi biên dịch rõ ràng khi
_Py_TAIL_CALL_INTERPđược bật nhưngpreserve_nonehoặcmusttailkhông được hỗ trợ.gh-140189: Bản dựng iOS đã được thêm vào CI.
gh-138489: Khi biên dịch chéo cho WASI bởi
build_wasmhoặcbuild_emscripten, bướcbuild-details.jsonhiện được đưa vào quá trình xây dựng, giống như với các bản dựng gốc.Điều này khắc phục tác vụ
libinstallyêu cầu tệpbuild-details.jsontrong quá trình này.gh-137618:
PYTHON_FOR_REGENhiện yêu cầu Python 3.10 đến Python 3.15. Bản vá của Adam Turner.gh-123681: Kiểm tra hành vi của
strftime()trong thời gian chạy thay vì tại thời điểm biên dịch để hỗ trợ biên dịch chéo. Loại bỏ macro nội bộ_Py_NORMALIZE_CENTURY.
Bản cuối cùng của Python 3.14.0¶
Release date: 2025-10-07
macOS¶
cửa sổ¶
gh-139573: Đã cập nhật phiên bản đi kèm của OpenSSL lên 3.0.18.
Công cụ/Bản trình diễn¶
gh-139330: công cụ tạo SBOM đã không kiểm tra chéo các giá trị phiên bản và tổng kiểm tra đối với tập lệnh
Modules/expat/refresh.sh, dẫn đến các giá trị trở nên lỗi thời trong quá trình cập nhật định kỳ.gh-132006: XCframeworks hiện bao gồm các bản kê khai quyền riêng tư để đáp ứng các yêu cầu gửi của Apple App Store.
gh-138171: Tập lệnh xây dựng iOS XCframework đã được thêm vào. Là một phần của thay đổi này, thư mục
iOScấp cao nhất đã được chuyển thành thư mục con của thư mụcApple.
Bảo mật¶
gh-139400:
xml.parsers.expat: Đảm bảo rằng các trình phân tích cú pháp người nước ngoài gốc chỉ được thu thập rác khi chúng không còn được tham chiếu bởi các trình phân tích cú pháp con doExternalEntityParserCreate()tạo ra. Bản vá của Sebastian Pipping.
Thư viện¶
gh-139312: Nâng cấp gói libexpat lên 2.7.3
Ứng viên phát hành Python 3.14.0 3¶
Release date: 2025-09-18
cửa sổ¶
gh-138896: Sửa lỗi cài đặt thời gian chạy C trên máy Windows chưa cập nhật
Công cụ/Bản trình diễn¶
gh-137873: Trình chạy thử nghiệm iOS đã được đơn giản hóa, giải quyết một số vấn đề đã được quan sát thấy khi sử dụng trình chạy trong môi trường thử nghiệm GitHub Actions và Azure Pipelines.
Bảo mật¶
gh-135661: Sửa lỗi phân tích phần CDATA trong
html.parser.HTMLParsertheo chuẩn HTML5:] ]>và]] >không còn kết thúc phần CDATA nữa. Thêm phương thức riêng_set_support_cdata()có thể được sử dụng để chỉ định cách phân tích cú pháp<[CDATA[--- dưới dạng phần CDATA trong nội dung nước ngoài (SVG hoặc MathML) hoặc dưới dạng nhận xét không có thật trong không gian tên HTML.
Thư viện¶
gh-138998: Cập nhật gói libexpat lên 2.7.2
gh-118803: Thêm lại
collections.abc.ByteStringvàtyping.ByteString. Cả hai đều đã bị xóa trong các ứng cử viên alpha, beta và phát hành trước đó cho Python 3.14, nhưng việc xóa chúng hiện đã bị hoãn lại đối với Python 3.17.gh-137226: Khắc phục các lệnh gọi
typing.get_type_hints()trên các lớptyping.TypedDictchung được xác định bằng chú thích chuỗi.gh-138804: Tăng
TypeErrorthay vìAttributeErrorkhi một đối số có loại không chính xác được chuyển tớishlex.quote(). Điều này khôi phục hoạt động của hàm trước phiên bản 3.14.gh-128636: Khắc phục sự cố trong PyREPL khi os.environ bị ghi đè bằng giá trị không hợp lệ cho mac
gh-138514: Tăng
ValueErrorkhi một chuỗi nhiều ký tự được truyền tới tham số echo_char củagetpass.getpass(). Bản vá của Benjamin Johnson.gh-99948:
ctypes.util.find_library()hiện hoạt động trong bản dựng Emscripten.gh-138253: Thêm tham số block trong phương thức
put()vàget()của hàng đợiconcurrent.interpretersđể tương thích với giao diệnqueue.Queue.gh-138133: Ngăn chặn vòng lặp truy nguyên vô hạn khi gửi CTRL^C tới Python thông qua
strace.gh-134869: Khắc phục sự cố khi nhấn Ctrl+C trong khi hoàn thành tab trong REPL sẽ khiến menu tự động hoàn thành ở trạng thái bị hỏng.
gh-90548: Sửa lỗi phát hiện
muslchoplatform.libc_ver()trên Alpine Linux nếu được biên dịch bằng --strip-all.gh-136134:
SMTP.auth_cram_md5()hiện tăngSMTPExceptionthay vìValueErrornếu Python được xây dựng mà không hỗ trợ MD5. Đặc biệt, máy kháchSMTPsẽ không cố gắng sử dụng phương pháp này ngay cả khi máy chủ từ xa được cho là hỗ trợ nó. Bản vá của Bénédikt Trần.gh-136134:
IMAP4.login_cram_md5hiện tăngIMAP4.errornếu xác thực CRAM-MD5 không được hỗ trợ. Bản vá của Bénédikt Trần.gh-134953: Mở rộng chủ đề
_colorizevớikeyword_constantvà triển khai trong repl.
Cốt lõi và nội dung¶
gh-71810: Tăng
OverflowErrorcho(-1).to_bytes()cho các chuyển đổi đã ký khi số byte bằng 0. Bản vá của Sergey B Kirpicchev.gh-138192: Sửa lỗi khởi tạo
contextvarsđể tất cả các trình thông dịch phụ được gán giá trịMISSING.gh-138479: Khắc phục sự cố khi
__typing_subst__của đối tượng chung trả về một đối tượng không phải làtuple.gh-138372: Sửa
SyntaxWarningphát ra cho các biểu thức chỉ số dưới sai liên quan đến template string literals. Bản vá của Brian Schubert.gh-138318: REPL mặc định hiện tránh làm nổi bật các tên cài sẵn (ví dụ:
sethoặcformat()) khi chúng được sử dụng làm tên thuộc tính (ví dụ: trongvalue.sethoặctext.format).gh-138349: Khắc phục sự cố trong một số trường hợp nhất định trong đó mô-đun chứa cả chú thích cấp mô-đun và phần hiểu.
gh-137384: Khắc phục sự cố khi sử dụng mô-đun
warningstrong bộ hoàn thiện khi tắt máy. Bản vá của Kumar Aditya.gh-137883: Khắc phục lỗi đệ quy chạy trốn khi gọi hàm bằng đối số từ khóa.
gh-137079: Sửa lỗi nhận dạng từ khóa khi phân tích tệp. Bản vá của Pablo Galindo.
gh-137728: Sửa lỗi xử lý nhiều biến cục bộ của JIT. Điều này trước đây đã gây ra lỗi phân tách.
gh-137576: Khắc phục mã nguồn không chính xác được hiển thị trong dấu vết từ REPL cơ bản khi
PYTHONSTARTUPđược cung cấp. Bản vá của Adam Hartz.
Ứng viên phát hành Python 3.14.0 2¶
Release date: 2025-08-14
macOS¶
cửa sổ¶
gh-137134: Cập nhật trình cài đặt Windows đi kèm với SQLite 3.50.4.
Thư viện¶
gh-137426: Loại bỏ việc ngừng sử dụng mã của
importlib.abc.ResourceLoader. Nó được ghi lại là không được dùng nữa nhưng được để lại để tương thích ngược với các lớp khác trongimportlib.abc.gh-137282: Sửa lỗi hoàn thành tab và
dir()trênconcurrent.futures.gh-137257: Chuyển phiên bản pip đi kèm trong Ensurepip lên phiên bản 25.2
gh-137226: Khắc phục hành vi của
annotationlib.ForwardRef.evaluate()khi tham số type_params được truyền và tên của thông số loại cũng xuất hiện trong phạm vi kèm theo.gh-130522: Sửa lỗi
TypeErrorkhông thể nâng cấp được trong quá trình interpreter shutdown trong mô-đunthreading.gh-137059: Khắc phục việc xử lý URL tệp bằng ký tự ổ đĩa Windows trong cơ quan URL của
urllib.request.url2pathname(). Điều này khắc phục sự hồi quy trong các bản phát hành trước của Python 3.14.gh-130577:
tarfilehiện xác thực các bản lưu trữ để đảm bảo mức chênh lệch thành viên không âm. (Được đóng góp bởi Alexander Enrique Urieles Nieto trong gh-130577.)gh-135228: Khi
dataclassesthay thế một lớp bằng một lớp dữ liệu có rãnh, giờ đây lớp ban đầu có thể được thu thập lại. Những thay đổi trước đó trong Python 3.14 khiến lớp này luôn tồn tại cùng với lớp thay thế dodataclassestổng hợp.
Tài liệu¶
gh-136155: Chúng tôi hiện đang kiểm tra các lỗi nghiêm trọng trong bản dựng EPUB trong CI.
Cốt lõi và nội dung¶
gh-137400: Khắc phục sự cố trong bản dựng free threading khi tắt tính năng lập hồ sơ hoặc theo dõi trên tất cả các luồng bằng
PyEval_SetProfileAllThreads()hoặcPyEval_SetTraceAllThreads()hoặc các tương đương Python của chúng làthreading.settrace_all_threads()vàthreading.setprofile_all_threads().gh-137314: Đã sửa lỗi hồi quy trong đó các chuỗi f thô diễn giải không chính xác các chuỗi thoát trong thông số định dạng. Chuỗi f thô hiện bảo toàn đúng cách các dấu gạch chéo ngược bằng chữ trong thông số định dạng, khớp với hành vi từ Python 3.11. Ví dụ:
rf"{obj:\xFF}"hiện tạo ra'\\xFF'thay vì'ÿ'một cách chính xác. Bản vá của Pablo Galindo.gh-137308: Một chuỗi tài liệu độc lập trong phần thân nút được tối ưu hóa dưới dạng câu lệnh
passđể đảm bảo rằng phần thân của nút không bao giờ trống. Mặt khác, có mộtValueErrortrongcompile().gh-137288: Sửa lỗi trong đó một số hướng dẫn mã byte của biểu thức boolean không được liên kết với trình xử lý ngoại lệ chính xác.
gh-134291: Xóa một số cách sử dụng macOS API mới hơn khỏi trình biên dịch JIT để khôi phục khả năng tương thích với các mục tiêu triển khai OSX 10.15 cũ hơn.
gh-131338: Tắt kiểm tra giới hạn ngăn xếp được tính toán trên nền tảng linux không phải glibc để khắc phục sự cố khi đệ quy sâu.
gh-136870: Khắc phục tình trạng chạy đua dữ liệu trong khi loại bỏ mã byte của các đối tượng mã chạy đồng thời trong các luồng.
C API¶
gh-137573: Đánh dấu
_PyOptimizer_OptimizelàPy_NO_INLINEđể ngăn chặn sự cố tràn ngăn xếp trên macOS.
xây dựng¶
gh-132339: Thêm hỗ trợ cho OpenSSL 3.5.
Ứng viên phát hành Python 3.14.0 1¶
Release date: 2025-07-22
Công cụ/Bản trình diễn¶
gh-136251: Sửa lỗi và cải tiến khả năng sử dụng cho
Tools/wasm/emscripten/web_example
Bảo mật¶
gh-135661: Sửa các thuộc tính phân tích cú pháp có khoảng trắng xung quanh dấu phân cách
=tronghtml.parser.HTMLParsertheo chuẩn HTML5.gh-118350: Khắc phục sự hỗ trợ của chế độ văn bản thô có thể thoát (các phần tử "textarea" và "title") trong
html.parser.HTMLParser.
Thư viện¶
gh-136170: Đã xóa thuộc tính
zipfile.ZipFile.data_offsetchưa được phát hành được thêm vào trong 3.14.0a7 vì nó không hoàn toàn rõ ràng về hành vi nào nên có trong một số trường hợp nên kết quả không phải lúc nào cũng như người dùng mong đợi.gh-124621: pyrepl hiện hoạt động trong Emscripten.
gh-136874: Loại bỏ truy vấn và đoạn URL trong
urllib.request.url2pathname().gh-136549: Sửa chữ ký
threading.excepthook().gh-136523: Sửa lỗi
wave.Wave_writephát ra lỗi không thể nâng được khi mở tăng.gh-52876: Thêm tham số
keepends(Truemặc định) bị thiếu vàocodecs.StreamReaderWriter.readline()vàcodecs.StreamReaderWriter.readlines().gh-136470: Sửa tên thread mặc định của
concurrent.futures.InterpreterPoolExecutor.gh-136476: Sửa lỗi khiến hàm
get_async_stack_tracebỏ sót một số khung hình trong dấu vết ngăn xếp.gh-136434: Sửa lỗi tạo tài liệu
UnboundItemtrongconcurrent.interpreterskhi chạy với-OO.gh-136380: Tăng
AttributeErrorkhi truy cậpconcurrent.futures.InterpreterPoolExecutorvà không có trình thông dịch phụ.gh-134759: Sửa
UnboundLocalErrortrongemail.message.Message.get_payload()khi tải trọng cần giải mã là đối tượngbytes. Bản vá của Kliment Lamonov.gh-134657:
asyncio: Xóa một số tên riêng khỏiasyncio.__all__.
Cốt lõi và nội dung¶
gh-136801: Sửa lỗi đánh dấu cú pháp PyREPL trên các trường hợp khớp sau trường hợp nhiều dòng. Đóng góp bởi Olga Matoula.
Thư viện¶
Cốt lõi và nội dung¶
gh-136541: Khắc phục một số vấn đề với tấm bạt lò xo hoàn hảo trên x86-64 và aarch64. Các tấm bạt lò xo không được tạo chính xác trong một số trường hợp, điều này có thể dẫn đến việc tích hợp hoàn hảo không hoạt động chính xác. Bản vá của Pablo Galindo.
gh-136517: Đã sửa lỗi đánh máy ngăn việc in các đối tượng không thể thu thập được khi chế độ
gc.DEBUG_UNCOLLECTABLEđược đặt.gh-136525: Khắc phục sự cố trong đó mã byte trên mỗi luồng không được thiết lập cho các luồng mới được tạo.
gh-132661:
Interpolation.expressionhiện có mặc định là chuỗi trống.gh-132661: Phản ánh sự thay đổi gần đây của PEP 750.
Không cho phép nối
string.templatelib.Templatevàstr. Ngoài ra, không cho phép nối ngầm các chuỗi ký tự chuỗi t với chuỗi ký tự chuỗi hoặc chuỗi f.
Thư viện¶
gh-116738: Tạo các hàm trong
grpan toàn theo luồng trên bản dựng free threaded.
Cốt lõi và nội dung¶
gh-135148: Đã sửa lỗi trong đó các biểu thức gỡ lỗi chuỗi f (sử dụng =) sẽ loại bỏ không chính xác các phần của chuỗi chứa dấu ngoặc kép thoát và # characters. Bản vá của Pablo Galindo.
gh-133136: Hạn chế mức sử dụng bộ nhớ dư thừa trong bản dựng free threading khi một từ điển hoặc danh sách lớn được thay đổi kích thước và được truy cập bởi nhiều luồng.
gh-91153: Khắc phục sự cố khi
bytearraybị đột biến đồng thời trong quá trình gán vật phẩm.gh-127971: Sửa lỗi đọc từng cái một ngoài phần cuối của chuỗi trong tìm kiếm chuỗi.
C API¶
gh-112068: Hoàn nguyên hỗ trợ các đối số có thể rỗng trong
PyArg_Parse().gh-133296: Các biến thể mới cho phần quan trọng API chấp nhận một hoặc hai con trỏ
PyMutexthay vì các phiên bảnPyObjecthiện được công khai trong C API không giới hạn.gh-134009: Hiển thị
PyMutex_IsLocked()như một phần của C API công khai.
xây dựng¶
Python 3.14.0 beta 4¶
Release date: 2025-07-08
Công cụ/Bản trình diễn¶
gh-135968: Sơ khai cho
striphiện được cung cấp như một phần của bản cài đặt iOS.gh-133600: Sắp xếp lại tệp backport cho Tools/wasm/wasi.
Điều này sẽ làm cho việc chuyển ngược các thay đổi mã trong tương lai trở nên dễ dàng hơn. Nó cũng đơn giản hóa các hướng dẫn về cách xây dựng WASI trong devguide.
Kiểm tra¶
Bảo mật¶
gh-136053:
marshal: khắc phục sự cố có thể xảy ra khi giải tuần tự hóa các đối tượngslice.gh-135661: Sửa lỗi phân tích thẻ bắt đầu và kết thúc trong
html.parser.HTMLParsertheo chuẩn HTML5.Khoảng trắng không còn được chấp nhận giữa
</và tên thẻ. Ví dụ.</ script>không kết thúc phần script.Các khoảng trắng được lập bảng dọc (
\v) và không phải ASCII không còn được nhận dạng là khoảng trắng nữa. Khoảng trắng duy nhất là\t\n\r\fvà dấu cách.Ký tự rỗng (U+0000) không còn kết thúc tên thẻ.
Các thuộc tính và dấu gạch chéo sau tên thẻ trong thẻ kết thúc hiện bị bỏ qua, thay vì chấm dứt sau
>đầu tiên trong giá trị thuộc tính được trích dẫn. Ví dụ.</script/foo=">"/>.Nhiều dấu gạch chéo và khoảng trắng giữa thuộc tính cuối cùng và
>đóng hiện bị bỏ qua trong cả thẻ bắt đầu và thẻ kết thúc. Ví dụ.<a foo=bar/ //>.Nhiều
=giữa tên thuộc tính và giá trị không còn bị thu gọn nữa. Ví dụ.<a foo==bar>tạo thuộc tính "foo" có giá trị "=bar".[Đã hoàn nguyên trong gh-136927] Khoảng trắng giữa dấu phân cách
=và tên hoặc giá trị thuộc tính không còn bị bỏ qua. Ví dụ.<a foo =bar>tạo ra hai thuộc tính "foo" và "=bar", cả hai đều có giá trị Không;<a foo= bar>tạo ra hai thuộc tính: "foo" có giá trị "" và "bar" có giá trị Không.
gh-102555: Sửa lỗi phân tích bình luận trong
html.parser.HTMLParsertheo chuẩn HTML5.--!>hiện đã kết thúc bình luận.-- >không còn kết thúc bình luận nữa. Hỗ trợ kết thúc bình luận trống bất thường<-->và<--->.
Thư viện¶
gh-136286: Khắc phục lỗi tẩy cho các giao thức 0 và 1 cho nhiều đối tượng được phân bổ cho trình thông dịch phụ.
gh-136316: Cải thiện khả năng hỗ trợ đánh giá các tham chiếu lồng nhau về phía trước trong
typing.evaluate_forward_ref().gh-85702: Nếu
zoneinfo._common.load_tzdatađược cung cấp một gói không có tài nguyên thìzoneinfo.ZoneInfoNotFoundErrorsẽ được nâng lên thay vìPermissionError. Bản vá của Victor Stinner.gh-136028: Sửa tên tháng phân tích cú pháp có chứa "İ" (U+0130, LATIN CAPITAL LETTER I WITH DOT ABOVE) trong
time.strptime(). Điều này ảnh hưởng đến các ngôn ngữ az_AZ, ber_DZ, ber_MA và crh_UA.gh-135995: Trong mã hóa palmos, tạo byte
0x9bgiải mã thành›(U+203A - SINGLE RIGHT-POINTING ANGLE QUOTATION MARK).gh-53203: Sửa
time.strptime()cho các định dạng%cvà%xtrên các ngôn ngữ byn_ER, wal_ET và lzh_TW, cũng như sửa định dạng%Xtrên các ngôn ngữ ar_SA, bg_BG và lzh_TW.gh-91555: Một thay đổi trước đó, được giới thiệu trong 3.14.0b2, đã được hoàn nguyên. Nó đã vô hiệu hóa việc ghi nhật ký cho trình ghi nhật ký trong khi xử lý thông điệp tường trình cho trình ghi nhật ký đó. Kể từ khi đảo ngược, hoạt động sẽ giống như trước phiên bản 3.14.0b2.
gh-135878: Khắc phục sự cố
types.SimpleNamespacetrên các bản dựng free threading, khi một số luồng đang gọi phương thức__repr__()của nó cùng một lúc.gh-135836: Khắc phục
IndexErrortrongasyncio.loop.create_connection()có thể xảy ra khi ngoại lệ không phảiOSErrorxuất hiện trong quá trình kết nối vàclose()của socket tăngOSError.gh-135836: Khắc phục
IndexErrortrongasyncio.loop.create_connection()có thể xảy ra khi thuật toán Happy Eyeballs dẫn đến danh sách ngoại lệ trống trong quá trình thử kết nối.gh-135855: Tăng
TypeErrorthay vìSystemErrorkhi_interpreters.set___main___attrs()được truyền một đối tượng không chính xác. Bản vá của Brian Schubert.gh-135815:
netrc: bỏ qua kiểm tra bảo mật nếu thiếuos.getuid(). Bản vá của Bénédikt Trần.gh-135640: Lỗi địa chỉ trong đó có thể gọi
xml.etree.ElementTree.ElementTree.write()trên đối tượng ElementTree có phần tử gốc không hợp lệ. Hành vi này làm trống tệp được chuyển tớiwritenếu nó đã tồn tại.gh-135645: Đã thêm trường
supports_isolated_interpretersvàosys.implementation.gh-135646: Đưa ra các ngoại lệ
NameErrornhất quán trongannotationlib.ForwardRef.evaluate()gh-135557: Khắc phục các cuộc đua trên bản cập nhật
heapqvàlistđọc trên bản dựng free threaded.gh-119180: Chỉ tìm nạp toàn cục và cục bộ nếu cần thiết trong
annotationlib.get_annotations()gh-135561: Khắc phục sự cố trên các bản dựng DEBUG khi quy trình HACL* HMAC không thành công. Bản vá của Bénédikt Trần.
gh-135487: Sửa
reprlib.Repr.repr_int()khi đưa ra số nguyên có nhiều hơnsys.get_int_max_str_digits()chữ số. Bản vá của Bénédikt Trần.gh-135335:
multiprocessing: Xóastdoutvàstderrsau khi tải trước các mô-đun trongforkserver.gh-135069: Sửa lỗi ngoại lệ "Xử lý lỗi không hợp lệ" trong
encodings.idna.IncrementalDecoderđể thay thế chính xác tham số 'lỗi'.gh-130662: +Chấp nhận các số 0 đứng đầu trong các trường độ chính xác và chiều rộng cho định dạng +:class:
Decimal, ví dụformat(Decimal(1.25), '.016f').gh-130662: Chấp nhận các số 0 đứng đầu trong các trường độ chính xác và chiều rộng cho định dạng
Fraction, ví dụ:format(Fraction(1, 3), '.016f').gh-87790: Hỗ trợ dấu gạch dưới và dấu phẩy dưới dạng dấu phân cách hàng nghìn trong phần phân số để định dạng
Fraction. Bản vá của Sergey B Kirpicchev.gh-87790: Hỗ trợ dấu gạch dưới và dấu phẩy dưới dạng dấu phân cách hàng nghìn trong phần phân số để định dạng
Decimal. Bản vá của Sergey B Kirpicchev.gh-130664: Xử lý trường hợp góc cho định dạng của
Fraction: coi phần đệm bằng 0 (trước trường chiều rộng bằng ký tự 0 ('0')) tương đương với ký tự điền của'0'với kiểu căn chỉnh là'=', giống như trong trường hợp củafloat.
Tài liệu¶
gh-136155: Các bản dựng EPUB được sửa bằng cách loại trừ các thẻ không tương thích với XHTML.
Cốt lõi và nội dung¶
gh-109700: Sửa lỗi xử lý lỗi bộ nhớ trong
PyDict_SetDefault().gh-78465: Sửa thông báo lỗi cho
cls.__new__(cls, ...)trong đóclskhông phải là loại tiện ích mở rộng hoặc nội dung sẵn có (vớitp_newđược đặt thànhNULL).gh-129958: Phân biệt giữa chuỗi t và chuỗi f trong lỗi cú pháp cho dòng mới trong bộ xác định định dạng của chuỗi nội suy trích dẫn đơn.
gh-135871: Giờ đây, các lần thử khóa mutex không chặn sẽ quay trở lại ngay lập tức khi khóa đang bận thay vì quay nhanh trong bản dựng free threading.
gh-135106: Hạn chế cơ chế thùng rác đối với các đối tượng được GC và bỏ theo dõi chúng khi ở trong thùng rác để ngăn xung đột giữa cơ chế GC và thùng rác.
gh-135607: Khắc phục các cuộc đua
weakreftiềm ẩn trong hàm hủy của đối tượng trên bản dựng free threaded.gh-135608: Khắc phục sự cố trong JIT liên quan đến thuộc tính của mô-đun.
gh-135543: Phát ra sự kiện kiểm tra
sys.remote_execkhisys.remote_exec()được gọi và di chuyểnremote_debugger_scriptsangcpython.remote_debugger_script.gh-134280: Tắt tính năng gập liên tục cho
~bằng đối số boolean. Điều này chuyển cảnh báo không dùng nữa từ thời gian biên dịch sang thời gian chạy.
C API¶
gh-135906: Sửa lỗi biên dịch khi biên dịch các tiêu đề nội bộ bằng trình biên dịch C++.
xây dựng¶
gh-134273: Thêm hỗ trợ định cấu hình cờ trình biên dịch cho JIT với
CFLAGS_JIT
Python 3.14.0 beta 3¶
Release date: 2025-06-17
cửa sổ¶
Kiểm tra¶
Bảo mật¶
gh-135462: Khắc phục độ phức tạp bậc hai trong quá trình xử lý đầu vào được chế tạo đặc biệt trong
html.parser.HTMLParser. Lỗi cuối tệp hiện được xử lý theo thông số kỹ thuật HTML5 -- nhận xét và khai báo được tự động đóng, thẻ bị bỏ qua.gh-135034: Khắc phục nhiều sự cố cho phép bỏ qua các bộ lọc trích xuất
tarfile(filter="data"vàfilter="tar") bằng cách sử dụng các liên kết tượng trưng và liên kết cứng được tạo thủ công.Địa chỉ CVE 2024-12718, CVE 2025-4138, CVE 2025-4330 và CVE 2025-4517.
Thư viện¶
gh-65697: Thông báo lỗi của
configparserkhi cố gắng viết khóa không hợp lệ giờ đây hữu ích hơn.gh-135497: Khắc phục lỗi
os.getlogin()đối với tên người dùng dài hơn trên nền tảng dựa trên BSD.gh-135429: Sửa lỗi đối số không khớp trong
_lsprofcho sự kiệnPY_THROW.gh-135368: Sửa lỗi tạo
unittest.mock.Mocktrên các đối tượngdataclasses.dataclass(). Bây giờ tất cả các thuộc tính đặc biệt được đặt như trước gh-124429.gh-133967: Không bình thường hóa tên
locale'C.UTF-8' thành 'en_US.UTF-8'.gh-135321: Đưa ra một ngoại lệ chính xác cho các giá trị lớn hơn 0x7fffffff đối với opcode
BINSTRINGtrong quá trình triển khai C củapickle.gh-135276: Các bản sửa lỗi được chuyển ngược lại trong zipfile.Path từ zipp 3.23. Đã sửa lỗi
.name,.stemvà các thuộc tính dựa trên tên cơ sở khác trên Windows khi làm việc với tệp zip trên đĩa.gh-135244:
uuid: khi không thể xác định được địa chỉ MAC, ID nút 48 bit hiện được tạo bằng trình tạo số giả ngẫu nhiên được bảo mật bằng mật mã (CSPRNG) theo RFC 9562, §6.10.3. Điều này ảnh hưởng đếnuuid1()vàuuid6().gh-134970: Sửa ngoại lệ "hành động không xác định" trong
argparse.ArgumentParser.add_argument_group()để thay thế chính xác lớp hành động.gh-134718:
ast.dump()hiện chỉ bỏ qua các giá trịNonevà[]nếu chúng là giá trị mặc định.gh-134939: Thêm mô-đun
concurrent.interpreters. Xem PEP 734.gh-134885: Khắc phục sự cố có thể xảy ra trong mô-đun
compression.zstdliên quan đến cài đặt loại tham số. Bản vá của Jelle Zijlstra.gh-134857: Cải thiện báo cáo lỗi khi chạy
doctestvớiunittest. Xóa các khung mô-đundoctestkhỏi dấu vết và ký tự dòng mới dư thừa khỏi thông báo lỗi.gh-128840: Sửa lỗi phân tích địa chỉ IPv6 dài bằng địa chỉ IPv4 được nhúng.
gh-134637: Khắc phục hồi quy hiệu suất khi gọi con trỏ hàm
ctypestrong free threading.gh-134696: Việc triển khai HACL* và OpenSSL tích hợp của các hàm tạo hàm băm hiện chấp nhận chính xác các đối số được đặt tên documented giống nhau. Ví dụ:
md5()trước đây có thể được gọi làmd5(data=data)hoặcmd5(string=string)tùy thuộc vào cách triển khai cơ bản nhưng các lệnh gọi này không tương thích. Bản vá của Bénédikt Trần.gh-134151:
email: SửaTypeErrortrongemail.utils.decode_params()khi sắp xếp các phần tiếp theo của RFC 2231 có chứa phần không được đánh số.gh-134210:
curses.window.getch()hiện xử lý tín hiệu chính xác. Bản vá của Bénédikt Trần.gh-134152:
email: Sửa lỗi phân tích ID email có tên miền không hợp lệ.gh-133489:
random.getrandbits()hiện có thể tạo ra nhiều hơn 2:sup:31bit đó.random.randbytes()hiện có thể tạo ra nhiều hơn 256 MiB.gh-132813: Cải thiện thông báo lỗi về loại và giá trị không chính xác của thuộc tính
csv.Dialect.gh-132969: Ngăn chặn luồng thực thi
ProcessPoolExecutor, vẫn chạy khishutdown(wait=False), cố gắng điều chỉnh các quy trình công nhân của nhóm sau khi trạng thái đối tượng đã được đặt lại trong khi tắt máy. Sự kết hợp của các điều kiện, bao gồm cả quy trình công nhân đã chấm dứt bất thường, dẫn đến ngoại lệ và khả năng bị treo khi luồng thực thi vẫn đang chạy cố gắng thay thế các công nhân đã chết trong nhóm.gh-127081: Khắc phục sự cố an toàn của luồng libc với
osbằng cách thay thếgetloginbằng phiên bản đăng ký lạigetlogin_r.gh-131884: Khắc phục sự cố định dạng trong
json.dump()khi sử dụng cả indent và skipkeys.gh-130999: Tránh thoát khỏi REPL mới và đưa ra đề xuất ngay cả khi có những ứng cử viên không phải chuỗi khi xảy ra lỗi.
Tài liệu¶
Cốt lõi và nội dung¶
gh-135496: Sửa lỗi đánh máy trong lỗi loại chuyển đổi chuỗi f ("dấu chấm than" -> "chấm than").
gh-135371: Đã sửa các công cụ gỡ lỗi
asynciođể hiển thị chính xác các ngăn xếp lệnh gọi coroutine nội bộ cùng với các phần phụ thuộc của tác vụ bên ngoài. Các lệnhpython -m asyncio psvàpython -m asyncio pstreehiện hiển thị bối cảnh thực thi hoàn chỉnh. Bản vá của Pablo Galindo.
Thư viện¶
gh-127319: Đặt biến lớp
allow_reuse_portthànhFalsetrên máy chủ XMLRPC, ghi nhật ký và HTTP. Điều này phù hợp với hành vi trong các bản phát hành Python trước đó, tức là không cho phép sử dụng lại cổng.
Cốt lõi và nội dung¶
gh-135171: Hoàn nguyên hành vi của các biểu thức trình tạo không đồng bộ khi được tạo bằng đối tượng không có phương thức __aiter__ về hành vi đưa ra TypeError trước 3.13.
gh-130077: Đưa ra các lỗi cú pháp tùy chỉnh đúng cách khi gặp phải cú pháp không chính xác chứa tên là tiền tố của từ khóa mềm. Bản vá của Pablo Galindo.
gh-135171: Hoàn nguyên hành vi của các biểu thức trình tạo khi được tạo bằng một biểu thức không thể lặp lại thành hành vi đưa ra TypeError trước 3.13. Không còn có thể gây ra sự cố trong trình gỡ lỗi bằng cách thay đổi các biến cục bộ của biểu thức trình tạo. Điều này đạt được bằng cách di chuyển lệnh
GET_ITERtrở lại việc tạo biểu thức trình tạo và thêm một kiểm tra bổ sung vàoFOR_ITER.
Thư viện¶
gh-116738: Tạo các phương thức trong
heapqan toàn theo luồng trên bản dựng free threaded.
Cốt lõi và nội dung¶
Thư viện¶
gh-134908: Khắc phục sự cố khi lặp qua các dòng trong tệp văn bản trên bản dựng free threaded.
Cốt lõi và nội dung¶
gh-132617: Khắc phục lỗi kiểm tra sửa đổi
dict.update()có thể gây ra lỗi "dict bị thay đổi trong quá trình cập nhật" không chính xác khi một từ điển khác được sửa đổi có chung đối tượng khóa cơ bản.gh-134679: Khắc phục sự cố trong mã QSBR của bản dựng free threading có thể xảy ra khi thay đổi thuộc tính
__dict__của đối tượng.gh-127682: Không còn gọi
__iter__hai lần khi hiểu danh sách. Điều này mang lại hành vi hiểu danh sách phù hợp với các hình thức lặp khácgh-133912: Sửa hàm API C
PyObject_GenericSetDictđể xử lý các lớp mở rộng có giá trị nội tuyến.
C API¶
gh-134989: Sửa macro
Py_RETURN_NONE,Py_RETURN_TRUEvàPy_RETURN_FALSEtrong giới hạn C API 3.11 trở lên: không coiPy_None,Py_TruevàPy_Falselà bất tử. Bản vá của Victor Stinner.gh-134989: Triển khai
PyObject_DelAttr()vàPyObject_DelAttrString()dưới dạng macro trong C API 3.12 trở lên giới hạn. Bản vá của Victor Stinner.gh-133968: Thêm hàm
PyUnicodeWriter_WriteASCII()để ghi chuỗi ASCII vàoPyUnicodeWriter. Hàm này nhanh hơnPyUnicodeWriter_WriteUTF8()nhưng có hành vi không xác định nếu chuỗi đầu vào chứa các ký tự không phải ASCII. Bản vá của Victor Stinner.
xây dựng¶
gh-119132: Xóa thẻ "thử nghiệm" khỏi bản dựng luồng tự do CPython.
gh-135497: Sửa lỗi phát hiện
MAXLOGNAMEtrong tập lệnhconfigure.ac.gh-134923: Các bản dựng Windows có bật tính năng tối ưu hóa theo hướng dẫn cấu hình hiện sử dụng
/GENPROFILEvà/USEPROFILEthay vì các tùy chọn/LTCG:không còn được dùng nữa.gh-134774: Khắc phục cảnh báo xác định lại macro
Py_DEBUGtrên các bản dựng gỡ lỗi Windows. Bản vá của Chris Eibl.gh-134632: Đã sửa lỗi tạo
build-details.jsonđể sử dụngINCLUDEPY, nhằm tham chiếu thư mục conpythonX.Ycủa thư mục bao gồm, như được yêu cầu trong PEP 739, thay vì thư mục bao gồm cấp cao nhất.
Python 3.14.0 beta 2¶
Release date: 2025-05-26
cửa sổ¶
gh-130727: Khắc phục sự chạy đua trong lệnh gọi nội bộ vào WMI có thể dẫn đến ngoại lệ "xử lý không hợp lệ" khi tải cao. Bản vá của Chris Eibl.
gh-76023: Làm cho
os.path.realpath()bỏ qua lỗi Windows 1005 khi ở chế độ không nghiêm ngặt.gh-133779: Hoàn nguyên thay đổi để tạo các tệp
pyconfig.hkhác nhau dựa trên cài đặt trình biên dịch, vì nó thường khiến các bản dựng tiện ích mở rộng bị hỏng. Đặc biệt, biến tiền xử lýPy_GIL_DISABLEDhiện phải luôn được xác định rõ ràng khi biên dịch cho thời gian chạy luồng tự do thử nghiệm. Hàmsysconfig.get_config_var()có thể được sử dụng để xác định xem thời gian chạy hiện tại có được biên dịch bằng cờ đó hay không.gh-133626: Đảm bảo các gói không vô tình được gói vào trình cài đặt truyền thống.
Công cụ/Bản trình diễn¶
Kiểm tra¶
gh-133744: Sửa lỗi kiểm tra ngắt đa xử lý. Thêm một sự kiện để đồng bộ hóa tiến trình cha với tiến trình con: đợi cho đến khi tiến trình con bắt đầu ngủ. Bản vá của Victor Stinner.
gh-133682: Đã sửa lỗi trường hợp thử nghiệm
test.test_annotationlib.TestStringFormat.test_displaysđể đảm bảo xử lý đúng cách các cấu trúc dữ liệu phức tạp (danh sách, bộ, từ điển và bộ dữ liệu) trong chú thích chuỗi.gh-133639: Sửa lỗi
TestPyReplAutoindent.test_auto_indent_default()không chạyinput_code.
Bảo mật¶
Thư viện¶
gh-132710: Nếu có thể, hãy đảm bảo rằng
uuid.getnode()trả về cùng một kết quả ngay cả trên các quy trình khác nhau. Trước đây, kết quả chỉ không đổi trong cùng một quy trình. Bản vá của Bénédikt Trần.gh-80334:
multiprocessing.freeze_support()hiện kiểm tra hoạt động trên mọi nền tảng phương thức bắt đầu "sinh sản" thay vì chỉ trên Windows.gh-134582: Sửa lỗi khứ hồi tokenize.untokenize() liên quan đến thoát dấu ngoặc nhọn chuỗi t
gh-134546: Đảm bảo tập lệnh gỡ lỗi từ xa
pdbcó thể đọc được bằng quy trình Python từ xa.gh-134451: Đã chuyển đổi
asyncio.tools.CycleFoundExceptiontừ lớp dữ liệu sang loại ngoại lệ thông thường.gh-114177: Sửa
asynciođể không đóng các đường ống xử lý con, nếu không sẽ xảy ra lỗi khi vòng lặp sự kiện đã đóng.gh-90871: Đã sửa lỗi tắt một lỗi liên quan đến tham số tồn đọng trong
create_unix_server(). Đóng góp bởi Christian Harries.gh-134323: Sửa phương thức
threading.RLock.locked().gh-86802: Đã sửa lỗi rò rỉ bộ nhớ không đồng bộ trong các tác vụ khiên bị hủy. Đối với các tác vụ được bảo vệ trong đó lá chắn đã bị hủy, hãy ghi lại các ngoại lệ tiềm ẩn thông qua trình xử lý ngoại lệ. Đóng góp bởi Christian Harries.
gh-134209:
curses: Các phương thứccurses.window.instr()vàcurses.window.getstr()hiện phân bổ bộ đệm bên trong của chúng trên heap thay vì trên ngăn xếp; Ngoài ra, kích thước bộ đệm tối đa được tăng từ 1023 lên 2047.gh-134235: Đã cập nhật hoàn thành tab trên REPL để bao gồm các mô-đun dựng sẵn. Được đóng góp bởi Tom Wang, Hunter Young
gh-134152: Đã sửa lỗi
UnboundLocalErrorcó thể xảy ra trong quá trình phân tích cú pháp tiêu đềemailnếu thiếu dấu phân cách ở cuối dự kiến trong một số ngữ cảnh.gh-134168:
http.server: Sửa lỗi liên kết địa chỉ IPv6 và xử lý--directorykhi sử dụng HTTPS.gh-62184: Xóa việc nhập triển khai C của
io.FileIOkhỏi triển khai Python có triển khai riênggh-133982: Phát ra
RuntimeWarningtrong quá trình triển khaiiocủa Python khi file-like object không được đóng rõ ràng khi có nhiều lớp I/O.gh-133890: Mô-đun
tarfilehiện xử lýUnicodeEncodeErrortheo cách tương tự nhưOSErrorkhi không thể trích xuất thành viên.gh-134097: Khắc phục sự tương tác của tùy chọn dòng lệnh REPL và
-X showrefcountmới.gh-133889: Trang danh sách thư mục được tạo trong
http.server.SimpleHTTPRequestHandlerhiện chỉ hiển thị thành phần đường dẫn được giải mã của URL được yêu cầu chứ không hiển thị truy vấn và đoạn.gh-134098: Sửa các đường dẫn xử lý kết thúc bằng dấu gạch chéo được mã hóa phần trăm (
%2fhoặc%2F) tronghttp.server.SimpleHTTPRequestHandler.gh-132124: Trên các hệ thống tuân thủ POSIX,
multiprocessing.util.get_temp_dir()hiện bỏ quaTMPDIR(và các biến môi trường tương tự) nếu độ dài đường dẫn của tệp ổ cắmAF_UNIXvượt quá độ dài tối đa dành riêng cho nền tảng khi sử dụng phương thức khởi động forkserver. Bản vá của Bénédikt Trần.gh-134062:
ipaddress: khắc phục xung đột trong__hash__()cho các đối tượngIPv4NetworkvàIPv6Network.gh-133970: Tạo
string.templatelib.Templatevàstring.templatelib.Interpolationchung.gh-71253: Tăng
ValueErrortrongopen()nếu opener trả về một bộ mô tả tệp phủ định trong quá trình triển khaiiocủa Python để khớp với việc triển khai C.gh-133960: Đơn giản hóa và cải thiện
typing.evaluate_forward_ref(). Bây giờ nó không còn gây ra lỗi trên một số loại không hợp lệ nữa. Trong một số trường hợp, giờ đây nó có thể đánh giá các tài liệu tham khảo chuyển tiếp mà trước đây không được hỗ trợ.gh-133925: Làm cho lớp riêng
typing._UnionGenericAliascó thể băm được.gh-133653: Sửa
argparse.ArgumentParserbằng đối số formatter_class. Sửa lỗi TypeError khi formatter_class là lớp con tùy chỉnh củaHelpFormatter. Sửa lỗi TypeError khi formatter_class không phải là lớp con củaHelpFormattervà prefix_char không chuẩn được sử dụng. Sửa lỗi hỗ trợ tô màu khi formatter_class không phải là lớp con củaHelpFormatter.gh-132641: Đã sửa lỗi một cuộc đua trong
functools.lru_cache()theo luồng tự do.gh-133783: Sửa lỗi áp dụng
copy.replace()cho các đối tượngast. Các thuộc tính mặc định làNoneđã được xử lý không chính xác theo yêu cầu đối với các nút AST được tạo thủ công.gh-133684: Sửa lỗi trong đó
annotationlib.get_annotations()trả về kết quả sai cho một số lớp nhất định là một phần của hệ thống phân cấp lớp trong đófrom __future__ import annotationsđược sử dụng.gh-77057: Khắc phục việc xử lý các khai báo đánh dấu không hợp lệ trong
html.parser.HTMLParser.gh-130328: Tăng tốc độ dán trong
PyREPLtrên Windows trong bảng điều khiển cũ. Bản vá của Chris Eibl.gh-133701: Sửa lỗi trong đó các lớp
typing.TypedDictđược xác định trongfrom __future__ import annotationsvà kế thừa từ mộtTypedDictkhác có thuộc tính__annotations__không chính xác.gh-133581: Cải thiện khả năng phân tích chuỗi t trong
ast.unparse()vàfrom __future__ import annotations. Giờ đây, các chuỗi t trống đã được thực hiện chính xác và định dạng trong các phép nội suy được giữ nguyên. Bản vá của Jelle Zijlstra.gh-133551: Hỗ trợ chuỗi t (PEP 750) trong
annotationlib. Bản vá của Jelle Zijlstra.gh-133439: Sửa lỗi lệnh dấu chấm có dấu cách bị nhầm lẫn với câu lệnh SQL nhiều dòng trong giao diện dòng lệnh sqlite3.
gh-132493: Tránh truy cập
__annotations__một cách không cần thiết tronginspect.signature().gh-132876:
ldexp()trên Windows không làm tròn các kết quả không bình thường trước Windows 11, nhưng nên làm như vậy. Trình bao bọcmath.ldexp()của Python hiện đã làm tròn chúng, do đó, kết quả có thể thay đổi một chút, trong một số trường hợp hiếm hoi là kết quả rất nhỏ, trên các phiên bản Windows trước 11.gh-133009:
xml.etree.ElementTree: Khắc phục sự cố trongElement.__deepcopy__khi phần tử bị đột biến đồng thời. Bản vá của Bénédikt Trần.gh-91555: Bỏ qua các thông điệp tường trình được tạo trong quá trình xử lý thông điệp tường trình, để tránh bế tắc hoặc đệ quy vô hạn. [NOTE: Thay đổi này đã được hoàn nguyên.]
gh-125028:
functools.Placeholderkhông thể được chuyển tớifunctools.partial()làm đối số từ khóa.gh-62824: Sửa bí danh cho mã hóa
iso8859_8. Bản vá của Dave Goncalves.gh-86155:
html.parser.HTMLParser.close()không còn mất dữ liệu khi thẻ<script>không được đóng. Bản vá của Waylan Limberg.gh-69426: Sửa
html.parser.HTMLParserđể không thoát các thực thể ký tự trong các giá trị thuộc tính nếu chúng được theo sau bởi một chữ số ASCII hoặc dấu bằng.bpo-28494: Cải thiện tỷ lệ dương tính giả xác thực tệp Zip trong
zipfile.is_zipfile().gh-134381: Sửa lỗi
RuntimeErrorkhi sử dụngthreading.Threadchưa khởi động sau khi gọios.fork()
Cốt lõi và nội dung¶
gh-127960: Shell tương tác PyREPL không còn bắt đầu với tên chung
__package__và__file__được đặt thành nội bộ gói_pyrepl. Đóng góp bởi Yuichiro Tachibana.gh-130397: Loại bỏ lớp vỏ đặc biệt dành cho giới hạn độ sâu ngăn xếp C cho WASI. Do tính năng bảo vệ ngăn xếp tích hợp của WebAssugging, điều này không gây ra mối lo ngại về bảo mật.
gh-128066: Khắc phục trường hợp Edge trong đó PyREPL đưa ra lỗi không đúng cách khi Python được gọi trên hệ thống tệp chỉ đọc trong khi cố gắng ghi các mục nhập tệp lịch sử.
gh-69605: Khi tự động hoàn thành quá trình nhập trong REPL, việc không tìm thấy ứng cử viên nào hiện không đưa ra đề xuất nào thay vì đề xuất từ không gian tên hiện tại.
gh-134158: Sửa màu của dấu ngoặc kép trong dây f và dây t trong REPL.
gh-134119: Khắc phục sự cố khi gọi
next()trên trình vòng lặp chuỗi mẫu đã hết. Bản vá của Jelle Zijlstra.gh-134100: Khắc phục lỗi use-after-free xảy ra khi mô-đun đã nhập không có trong
sys.modulessau lần nhập đầu tiên. Bản vá của Nico-Posada.gh-133999: Khắc phục hồi quy
SyntaxErrortrong phân tích cú phápexceptsau gh-123440.gh-133886: Sửa
sys.remote_exec()cho các đường dẫn không phải ASCII ở các ngôn ngữ không phải UTF-8 và các đường dẫn không phải UTF-8 ở các ngôn ngữ UTF-8.gh-133703: Fix hashtable trong dict có thể lớn hơn dự định trong một số trường hợp.
gh-133778: Sửa lỗi trong đó việc gán cho thuộc tính
__annotations__của các lớp được xác định trongfrom __future__ import annotationskhông có hiệu lực.gh-132762:
fromkeys()không còn lặp lại mãi mãi khi thêm một bộ phím nhỏ vào một lệnh cơ sở lớn. Bản vá của Angela Liss.gh-133541: Việc thụt lề không nhất quán trong dữ liệu đầu vào của người dùng đã làm hỏng REPL mới khi tính năng đánh dấu cú pháp được kích hoạt. Điều này hiện đã được sửa.
gh-133516: Tăng
ValueErrorkhi các hằng sốTrue,FalsehoặcNoneđược sử dụng làm mã định danh sau khi chuẩn hóa NFKC.gh-132542: Cập nhật
Thread.native_idsau fork(2) để đảm bảo độ chính xác. Bản vá của Noam Cohen.
C API¶
gh-134144: Khắc phục sự cố khi gọi
Py_EndInterpreter()bằng thread state không phải là chuỗi ban đầu cho trình thông dịch.
xây dựng¶
gh-134455: Đã sửa lỗi tạo
build-details.jsonđể sử dụngc_api.headerschính xác như được xác định trong PEP 739, thay vìc_api.include.gh-131769: Khắc phục sự cố phát hiện khi bản dựng Python trong bản dựng chéo là bản dựng pydebug.
gh-117088: Trình liên kết AIX không hỗ trợ tùy chọn -h, vì vậy hãy tránh nó thông qua kiểm tra nền tảng
Python 3.14.0 beta 1¶
Release date: 2025-05-06
cửa sổ¶
gh-132930: Đánh dấu trình cài đặt dành cho Windows là không được dùng nữa và cập nhật tài liệu để bao gồm trình quản lý cài đặt Python mới.
gh-127405: Thêm
ABIFLAGSvàosysconfig.get_config_vars()trên Windows. Bản vá của Xuehai Pan.
Công cụ/Bản trình diễn¶
Kiểm tra¶
gh-133131: Giờ đây, hệ thống thử nghiệm iOS sẽ chọn thiết bị "loại SE" được phát hành gần đây nhất để thử nghiệm nếu thiết bị không được chỉ định rõ ràng.
gh-91048: Thêm khả năng kiểm tra bên ngoài tất cả các tác vụ không đồng bộ đang chờ xử lý, ngay cả khi hiện tại không có tác vụ nào được nhập vào vòng lặp sự kiện.
gh-109981: Trình trợ giúp kiểm tra đếm danh sách các bộ mô tả tệp đang mở hiện sử dụng phương pháp
/dev/fdđược tối ưu hóa trên tất cả các nền tảng của Apple, không chỉ macOS. Điều này tránh được sự cố do bộ mô tả tệp được bảo vệ gây ra.gh-132678: Thêm
--prioritizevào-m test. Tùy chọn này cho phép người dùng chỉ định những thử nghiệm được chọn nào sẽ thực hiện trước, ngay cả khi thứ tự được chọn ngẫu nhiên. Điều này đặc biệt hữu ích cho các bài kiểm tra chạy lâu nhất.gh-131290: Các thử nghiệm trong
Lib/testhiện có thể được thực thi chính xác dưới dạng tập lệnh độc lập.
Bảo mật¶
gh-115322: Các mô-đun mở rộng cơ bản đằng sau
readline:,subprocessvàctypeshiện đưa ra các sự kiện kiểm tra trên các đường dẫn mã chưa được phát hiện trước đó có thể dẫn đến quyền truy cập hệ thống tệp liên quan đến việc gọi hàm C và thực thi nhị phân bên ngoài. Móc kiểm tractypes.call_functioncũng đã được sửa để sử dụng giá trị không dấu chofunction pointercủa nó.
Thư viện¶
gh-133490: Thêm hỗ trợ màu cho PDB ở chế độ từ xa.
gh-132493: Tránh đánh giá vội vàng các chú thích trong các hàm được trang trí bằng
reprlib.recursive_repr().gh-130645: Thêm màu vào CLI stdlib argparse. Bản vá của Hugo van Kemenade.
gh-119180: Làm cho
annotationlib.get_annotations()thành công với định dạngFORWARDREFnếu việc đánh giá các chú thích đưa ra một ngoại lệ khác ngoàiNameErrorhoặcAttributeError.gh-133351: Sửa lỗi PDB từ xa để yêu cầu hoàn thành tab một cách chính xác cho các biểu thức Python từ máy chủ khi hoàn thành dòng tiếp tục của khối Python nhiều dòng.
gh-133367: Thêm các tùy chọn
--feature-version,--optimizevà--show-emptyvào giao diện dòng lệnhast. Bản vá của Semyon Moroz.gh-133363: Lớp
cmd.Cmdđã được sửa để gọi phương thứccompletedefaultmột cách đáng tin cậy bất cứ khi nào phương thứcdo_shellkhông được xác định và yêu cầu hoàn thành tab cho một dòng bắt đầu bằng!.gh-133349: Đã giới thiệu tính năng tự động thụt lề trong đầu vào nhiều dòng
pdb.gh-133306: Sử dụng
\zthay vì\Ztrongfnmatch.translate()vàglob.translate().gh-133306: Hỗ trợ
\zlàm từ đồng nghĩa với\Ztrongregular expressions.gh-133300: Đặt
suggest_on_errorcủaargparse.ArgumentParserlàm tham số chỉ từ khóa. Bản vá của Hugo van Kemenade.gh-133290: Khắc phục sự cố bộ nhớ đệm thuộc tính khi cài đặt
ctypes._Pointer._type_trong hàmctypes.SetPointerType()không có giấy tờ và không được dùng nữa cũng như phương thứcset_type()không có giấy tờ.gh-133223: Khi PDB được gắn vào một quy trình từ xa, hãy thực hiện tốt hơn việc chặn Ctrl+C và chuyển tiếp nó đến quy trình từ xa.
gh-133153: Không hoàn thành các lệnh
pdbở chế độinteractcủapdb.gh-133139: Thêm chức năng
curses.assume_default_colors(), một cải tiến của chức năngcurses.use_default_colors()cho phép thay đổi cặp màu0.gh-133089: Sử dụng giá trị thời gian chờ ban đầu cho
subprocess.TimeoutExpiredkhi funcsubprocess.run()được gọi với thời gian chờ thay vì đôi khi là giá trị thời gian chờ còn lại một phần khó hiểu được sử dụng nội bộ trênwait()cuối cùng.gh-133036:
codecs.open()hiện không được dùng nữa. Thay vào đó hãy sử dụngopen(). Đóng góp bởi Inada Naoki.gh-132987: Nhiều hàm dựng sẵn và hàm mở rộng chấp nhận đối số số nguyên không dấu, hiện sử dụng
__index__()nếu có.gh-124703: Đặt mã trả về thành
1khi hủy bỏ quá trình từpdb.gh-133005: Hỗ trợ chuyển tùy chọn
presetsangtarfile.open()khi sử dụng chế độ'w|xz'.gh-115032: Hỗ trợ trình xử lý ghi nhật ký tùy chỉnh với đối số strm không được dùng nữa và được lên lịch xóa trong Python 3.16. Thay vào đó, hãy xác định trình xử lý bằng đối số stream. Bản vá của Mariusz Felisiak.
gh-132991: Thêm hằng số
socket.IP_FREEBINDtrên Linux 2.4 trở lên.gh-132995: Chuyển phiên bản pip đi kèm trong Ensurepip lên phiên bản 25.1.1
gh-132933: Mô-đun zipapp hiện áp dụng bộ lọc khi tạo danh sách tệp cần thêm, thay vì đợi cho đến khi tệp được thêm vào kho lưu trữ.
gh-121249: Luôn hỗ trợ các loại float complex và double complex C trong mô-đun
struct. Bản vá của Sergey B Kirpicchev.gh-132915:
fcntl.fcntl()vàfcntl.ioctl()hiện có thể phát hiện lỗi tràn bộ đệm và tăngSystemError. Ngăn xếp và bộ nhớ có thể bị hỏng trong trường hợp như vậy, vì vậy hãy coi lỗi này là nghiêm trọng.gh-132017: Sửa lỗi khi
pyreplbị treo, sau đó tiếp tục và chấm dứt.gh-132893: Độ chính xác của
statistics.NormalDist.cdf()được cải thiện cho các đầu vào nhỏ hơn giá trị trung bình.gh-130328: Tăng tốc độ dán trong
PyREPLtrên Windows. Sửa chữa bởi Chris Eibl.gh-132882: Sửa lỗi sao chép các đối tượng
typing.Unionchứa các đối tượng không hỗ trợ toán tử|.gh-93696: Đã sửa lỗi hiển thị điểm dừng cho các mô-đun bị đóng băng trong
pdb.gh-129965: Thêm các loại MIME cho
.7z,.apk,.deb,.glb,.gltf,.gz,.m4v,.php,.rar,.rpm,.stlvà.wmv. Bản vá của Hugo van Kemenade.gh-132742:
fcntl.fcntl()hiện hỗ trợ bytes-like objects tùy ý, không chỉbytes.fcntl.ioctl()hiện tự động thử lại các cuộc gọi hệ thống không thành công với EINTR và giải phóng GIL trong cuộc gọi hệ thống ngay cả đối với đối tượng giống như byte lớn.gh-132451: CLI cho trình gỡ lỗi PDB hiện chấp nhận đối số
-p PIDđể cho phép đính kèm vào một quy trình đang chạy. Quá trình này phải chạy cùng phiên bản Python với phiên bản đang chạy PDB.gh-125618: Thêm tham số format vào
annotationlib.ForwardRef.evaluate(). Việc đánh giá các chú thích ở định dạngFORWARDREFhiện đã thành công trong nhiều trường hợp mà trước đây lẽ ra đã đưa ra ngoại lệ.gh-132805: Khắc phục việc xử lý không chính xác các giá trị không cố định lồng nhau ở định dạng FORWARDREF trong
annotationlib.gh-132673: Sửa lỗi
AssertionErrortăng lên trênctypes.Structurevới_align_ = 0và_fields_ = [].gh-132578: Đổi tên trường
threading.Thread._handleđể tránh các phương thức tạo bóng được xác định trên các lớp con củathreading.Thread.gh-132561: Sửa phương thức
lockedcông khai của lớpmultiprocessing.SemLock. Đồng thời thêm 2 bài kiểm tra cho các lớpmultiprocessing.Lockvàmultiprocessing.RLockphái sinh.gh-121468: Thêm chức năng
pdb.set_trace_async()để hỗ trợ các câu lệnhawaittrongpdb.gh-132493:
typing.Protocolhiện sử dụngannotationlib.get_annotations()khi kiểm tra xem một phiên bản có triển khai giao thức vớiisinstance()hay không. Điều này cho phép hỗ trợ kiểm traisinstanceđối với các lớp có chú thích bị trì hoãn.gh-132536: Không tắt sự kiện
PY_THROWtrongbdbvì không thể tắt nó.gh-132527: Bao gồm mã kiểu hợp lệ 'w' trong thông báo lỗi khi mã kiểu không hợp lệ được chuyển tới
array.array.gh-132099: Ổ cắm Bluetooth có giao thức
BTPROTO_HCItrên Linux hiện chấp nhận địa chỉ ở định dạng số nguyêndevice_id, không chỉ một bộ(device_id,).gh-81793: Khắc phục
os.link()trên các nền tảng (như Linux) nơi chức nănglink()của hệ thống không tuân theo các liên kết tượng trưng. Trên Linux, bây giờ nó đi theo các liên kết tượng trưng theo mặc định hoặc nếufollow_symlinks=Trueđược chỉ định. Trên Windows, hiện tại nó sẽ báo lỗi nếufollow_symlinks=Trueđược chuyển. Trên macOS, hiện tại, nó sẽ phát sinh lỗi nếufollow_symlinks=Falseđược chuyển và chức nănglinkat()của hệ thống không khả dụng trong thời gian chạy.gh-132493: Hỗ trợ tạo các lớp
typing.Protocolvới các chú thích không thể giải quyết được tại thời điểm tạo lớp.gh-132491: Đổi tên
annotationlib.value_to_stringthànhannotationlib.type_repr()và cung cấp khả năng xử lý tốt hơn cho các đối tượng chức năng.gh-132426: Thêm
annotationlib.get_annotate_from_class_namespace()làm công cụ trợ giúp để truy cập các chú thích trong siêu dữ liệu và xóaannotationlib.get_annotate_function.gh-70145: Thêm hỗ trợ cho các kênh trong giao thức Bluetooth HCI (
BTPROTO_HCI).gh-131913: Thêm chức năng phím tắt
multiprocessing.Process.interrupt()cùng vớimultiprocessing.Process.terminate()vàmultiprocessing.Process.kill()hiện có để cải thiện khả năng kiểm soát việc chấm dứt tiến trình con.gh-132439: Sửa lỗi
PyREPLtrên Windows: ký tự nhập qua AltGr bị nuốt. Bản vá của Chris Eibl.gh-132429: Sửa lỗi hỗ trợ ổ cắm Bluetooth trên NetBSD và DragonFly BSD. Thêm hỗ trợ cho cid và bdaddr_type trong địa chỉ BTPROTO_L2CAP trên FreeBSD. Trả về cid trong
getsockname()cho BTPROTO_L2CAP nếu nó khác 0.gh-132106:
QueueListener.starthiện tăngRuntimeErrornếu trình nghe đã bắt đầu.gh-132417: Sửa lỗi vô hiệu hóa con trỏ
NULLkhi hàm C được gọi bằngctypesvớirestypepy_objecttrả vềNULL.gh-132385: Khắc phục các đề xuất lỗi phiên bản kích hoạt các ngoại lệ tiềm ẩn trong
object.__getattr__()trongtraceback.gh-125866: Thêm đối số add_scheme tùy chọn vào
urllib.request.pathname2url(); khi được đặt thành true, URL hoàn chỉnh sẽ được trả về. Tương tự, thêm đối số require_scheme tùy chọn vàourl2pathname(); khi được đặt thành true, URL hoàn chỉnh sẽ được chấp nhận.gh-132308:
traceback.TracebackExceptionhiện hiển thị chính xác các thuộc tính__context__và__cause__từ falseyExceptionvà thuộc tínhexceptionstừ falseyExceptionGroup.gh-130645: Thêm màu vào đầu ra trợ giúp
argparse. Bản vá của Hugo van Kemenade.gh-127495: Trong PyREPL, thêm một mục mới vào tệp
PYTHON_HISTORYafter mỗi câu lệnh. Điều này sẽ lưu giữ lịch sử dòng lệnh sau khi trình thông dịch bị chấm dứt. Bản vá của Sergey B Kirpicchev.gh-129463: So sánh các đối tượng
annotationlib.ForwardRefkhông còn sử dụng các thuộc tính__code__và__ast_node__bên trong, được sử dụng làm bộ đệm.gh-132250: Đã sửa lỗi
SystemErrortrongcProfilekhi định vị hàm C thực tế của một phương thức phát sinh một ngoại lệ.gh-132064:
annotationlib.get_annotations()hiện sử dụng thuộc tính__annotate__nếu nó hiện diện, ngay cả khi__annotations__không hiện diện. Ngoài ra, hàm hiện sẽ tăngTypeErrornếu nó được truyền vào một đối tượng không có bất kỳ chú thích nào.gh-130664: Hỗ trợ bộ phân tách chữ số
'_'trong việc định dạng phần không thể thiếu củaDecimal. Bản vá của Sergey B Kirpicchev.gh-131952: Thêm đầu ra màu cho json CLI. Bản vá của Tomas Roun.
gh-132063: Ngăn chặn các ngoại lệ được đánh giá là sai (cụ thể là khi phương thức
__bool__của chúng trả vềFalsehoặc phương thức__len__của chúng trả về 0) khỏi bịconcurrent.futures.ProcessPoolExecutorvàconcurrent.futures.ThreadPoolExecutorbỏ qua.gh-132106:
logging.handlers.QueueListenerhiện triển khai giao thức quản lý bối cảnh, cho phép nó được sử dụng trong câu lệnhwith.gh-132054: Loại mime
application/yaml(RFC 9512) hiện đượcmimetypeshỗ trợ. Bản vá của Sasha "Nelie" Chernykh và Hugo van Kemenade.gh-119605: Tôn trọng
follow_wrappedđối với các phương thức__init__()và__new__()khi lấy chữ ký lớp cho một lớp cóinspect.signature(). Giữ nguyên chữ ký lớp sau khi gói bằngwarnings.deprecated(). Bản vá của Xuehai Pan.gh-118761: Cải thiện thời gian nhập lên tới 33 lần cho mô-đun
shlexvà cải thiện hiệu suất củashlex.quote()lên tới 12 lần. Bản vá của Adam Turner.gh-85302: Thêm hỗ trợ cho
BTPROTO_SCOtrong socket trên FreeBSD.gh-131757: Thực hiện
functools.lru_cache()gọi chức năng được lưu trong bộ nhớ đệm đã được mở khóa để cho phép hoạt động đồng thời.gh-131423:
sslcó thể hiển thị mô tả về các lỗi được thêm vào trong OpenSSL 3.4.1. Bản vá của Bénédikt Trần.gh-131434: Cải thiện báo cáo lỗi định dạng không chính xác trong
time.strptime().gh-131524: Thêm thông báo trợ giúp vào giao diện dòng lệnh
platform. Đóng góp bởi Harry Lees.gh-100926: Di chuyển bộ đệm loại
ctypes.POINTER()từ bộ đệm nội bộ chung (_pointer_type_cache) sang thuộc tínhctypes._CData.__pointer_type__của loạictypestương ứng. Điều này sẽ ngăn bộ đệm phát triển không giới hạn trong một số trường hợp.gh-85702: Nếu
zoneinfo._common.load_tzdatađược cung cấp một gói không có tài nguyên thìZoneInfoNotFoundErrorsẽ được nâng lên thay vìIsADirectoryError.gh-123471: Thực hiện các lần lặp đồng thời trên
itertools.repeatmột cách an toàn trong luồng tự do.gh-131127: Các hệ thống sử dụng LibreSSL hiện đã được xây dựng thành công.
gh-89157: Thực hiện triển khai
datetime.date.fromisoformat()bằng Python thuần túy, chỉ chấp nhận các chuỗi ASCII để thống nhất với việc triển khai C.gh-130941: Sửa lỗi nội suy trống phân tích cú pháp
configparser.ConfigParservớiallow_no_valueđược đặt thànhTrue.gh-110067: Đặt các hàm heap tối đa
heapqheapq.heapify_max(),heapq.heappush_max(),heapq.heappop_max()vàheapq.heapreplace_max()ở chế độ công khai. Việc đặt tên gạch dưới trước đó được giữ lại để tương thích ngược. Ngoài ra, hàm bị thiếuheapq.heappushpop_max()đã được thêm vào cả bản triển khai C và Python.gh-129098: Khắc phục báo cáo truy nguyên REPL khi sử dụng
compile()với tệp không tồn tại. Bản vá của Bénédikt Trần.gh-130631:
http.cookiejar.join_header_words()bây giờ giống với phiên bản Perl gốc hơn. Bây giờ nó trích dẫn cùng một bộ ký tự và luôn trích dẫn các giá trị kết thúc bằng"\n".gh-130482: Thêm khả năng chỉ định tên cho
tkinter.OptionMenuvàtkinter.ttk.OptionMenu.gh-77065: Thêm đối số tùy chọn chỉ từ khóa echo_char cho
getpass.getpass()để hỗ trợ phản hồi bàn phím trực quan tùy chọn. Bản vá của Semyon Moroz.gh-130317: Sửa
PyFloat_Pack2()vàPyFloat_Unpack2()cho NaN có tải trọng. Điều này sửa lỗi khứ hồi chostruct.unpack()vàstruct.pack()trong trường hợp loại "nửa chính xác" IEEE 754 nhị phân16. Bản vá của Sergey B Kirpicchev.gh-130402: Việc tham gia các luồng daemon đang chạy trong khi tắt trình thông dịch giờ đây sẽ tăng
PythonFinalizationError.gh-130167: Cải thiện tốc độ của
difflib.IS_LINE_JUNK(). Bản vá của Semyon Moroz.gh-101410: Đã thêm thông báo chi tiết hơn về lỗi miền trong mô-đun
math.gh-128384: Yêu cầu
warnings.catch_warningssử dụng biến ngữ cảnh để giữ trạng thái lọc cảnh báo nếu cờsys.flags.context_aware_warningsđược đặt thành true. Điều này làm cho việc sử dụng trình quản lý bối cảnh trở nên an toàn trong các chương trình đa luồng. Cờ này theo mặc định là đúng trong các bản dựng có luồng tự do và nếu không thì là sai. Giá trị của cờ có thể được ghi đè bằng tùy chọn dòng lệnh-X context_aware_warningshoặc bằng biến môi trườngPYTHON_CONTEXT_AWARE_WARNINGS.gh-129719: Sửa lỗi hằng số
socket.CAN_RAW_ERR_FILTERbị thiếu trong mô-đun ổ cắm trên hệ thống Linux. Nó bị thiếu kể từ Python 3.11.gh-129027: Tăng
DeprecationWarningchosys._clear_type_cache(). Hàm này không được dùng nữa trong Python 3.13 nhưng nó không đưa ra cảnh báo thời gian chạy.gh-128307: Thêm đối số từ khóa
eager_startvàoasyncio.loop.create_task()gh-127604: Thêm hỗ trợ in dấu vết ngăn xếp C trên các hệ thống hỗ trợ nó thông qua
faulthandler.dump_c_stack()hoặc thông qua đối số c_stack trongfaulthandler.enable().gh-126838: Thêm tham số chỉ từ khóa resolve_host vào
urllib.request.url2pathname()và khắc phục việc xử lý URL tệp với cơ quan chức năng.gh-82129: Sửa lỗi
NameErrorkhi gọityping.get_type_hints()trêndataclasses.dataclass()được tạo bởidataclasses.make_dataclass()với các trường không được chú thích.gh-122559: Loại bỏ các phương thức
__reduce__()và__reduce_ex__()luôn tăngTypeErrortrong quá trình triển khai C củaio.FileIO,io.BufferedReader,io.BufferedWritervàio.BufferedRandomvà thay thế chúng bằng các phương thức__getstate__()mặc định tăngTypeError. Điều này khôi phục các chi tiết tốt về hoạt động của Python 3.11 và các phiên bản cũ hơn.gh-122179:
hashlib.file_digest()hiện tăngBlockingIOErrorkhi không có dữ liệu trong quá trình I/O không chặn. Trước đó, nó đã thêm các byte rỗng giả vào bản tóm tắt.gh-53032: Hiển thị
decimal.IEEEContext()để hỗ trợ tạo ngữ cảnh tương ứng với các định dạng trao đổi thập phân IEEE 754 (2008). Bản vá của Sergey B Kirpicchev.gh-120220: Không dùng nữa các phương thức
tkinter.Variabletrace_variable(),trace_vdelete()vàtrace_vinfo(). Các phương thứctrace_add(),trace_remove()vàtrace_info()có thể được sử dụng thay thế.gh-113539:
webbrowser: Tên trong biến môi trườngBROWSERhiện có thể tham chiếu đến các trình duyệt web đã đăng ký, thay vì luôn tạo lệnh trình duyệt mới.Điều này giúp có thể đặt
BROWSERthành giá trị của một trong các trình duyệt được hỗ trợ trên macOS.bpo-44172: Giữ tham chiếu đến các cửa sổ
cursesgốc trong cửa sổ con để cửa sổ gốc không bị xóa trước cửa sổ con.gh-75223: Không dùng các tiện ích mở rộng không có dấu chấm trong
mimetypes.MimeTypes.add_type(). Bản vá của Hugo van Kemenade.
IDLE¶
gh-112936: sửa IDLE: không có mục menu Shell ở chế độ xử lý đơn.
Tài liệu¶
gh-107006: Di chuyển tài liệu và mã ví dụ cho
threading.localtừ chuỗi tài liệu của nó sang tài liệu chính thức.gh-125142: Là một phần của văn bản giới thiệu trợ giúp dựng sẵn, hiển thị các phím tắt cho REPL mới, không cơ bản (F1, F2 và F3).
Cốt lõi và nội dung¶
gh-133336:
-Jkhông còn được Jython dành riêng để sử dụng nữa. Bản vá của Adam Turner.gh-133261: Sửa lỗi chu trình GC có thể bỏ theo dõi các vật thể trong thùng rác vì chúng trông giống như bất tử. Khi các đối tượng được thêm vào thùng rác, chúng tôi cẩn thận để đảm bảo chúng giữ được số lượng tham chiếu quan trọng.
gh-133346: Đã thêm hỗ trợ theo chủ đề màu thử nghiệm cho mô-đun
_colorize.gh-132917: Đối với bản dựng có luồng tự do, hãy kiểm tra mức tăng sử dụng bộ nhớ của quy trình trước khi kích hoạt thu thập rác hoàn toàn tự động. Nếu bộ nhớ được sử dụng không tăng 10% kể từ lần thu thập cuối cùng thì hãy hoãn lại.
gh-91048: Thêm giao diện dòng lệnh
python -m asyncio ps PIDmới để kiểm tra các tác vụ asyncio trong quy trình Python đang chạy. Hiển thị một bảng phẳng chứa các mối quan hệ chờ đợi. Một biến thể hiển thị chế độ xem dạng cây cũng có sẵn dưới dạngpython -m asyncio pstree PID. Cả hai đều hữu ích để gỡ lỗi mã không đồng bộ. Bản vá của Pablo Galindo, Łukasz Langa, Yury Selivanov và Marta Gomez Macias.gh-133304: Giải pháp "chuẩn hóa" của NaN trong
PyFloat_Pack4()vàPyFloat_Unpack4()trên RISC-V.gh-133197: Cải thiện thông báo lỗi
SyntaxErrorcho tiền tố chuỗi/byte không tương thích.gh-133231: Thêm tiện ích mới quan sát tổng hợp JIT:
sys._jit.is_available(),sys._jit.is_enabled(),sys._jit.is_active().
Thư viện¶
gh-133194:
ast.parse()sẽ không còn phân tích cú pháp PEP 758 mới với feature_version cũ hơn đã được thông qua.
Cốt lõi và nội dung¶
gh-131798: Chia
CALL_LENthành nhiều uops cho phép JIT loại bỏ chúng khi tối ưu hóa. Bản vá của Diego Russo.gh-131798: Sử dụng
sym_new_typethay vìsym_new_not_nullcho _BUILD_STRING, _BUILD_SETgh-132942: Sửa hai chủng tộc trong bộ đệm tra cứu loại. Điều này ảnh hưởng đến việc xây dựng luồng tự do và có thể gây ra sự cố (dường như khá khó kích hoạt).
gh-131798: Truyền bá kiểu trả về của
_BINARY_OP_SUBSCR_TUPLE_INTtrong JIT. Bản vá của Tomas Roungh-132952: Tăng tốc độ khởi động với đối số
-Sbằng cách nhập mô-đun_ioriêng thay vìio. Điều này khắc phục sự hồi quy hiệu suất được giới thiệu trước đó trong quá trình phát triển Python 3.14 và khôi phục hiệu suất về mức Python 3.13.gh-131798: Cho phép JIT loại bỏ các bộ bảo vệ int sau
_CALL_LENbằng cách đặt kiểu trả về thành int. Bản vá của Diego Russogh-131798: Chia
CALL_TUPLE_1thành nhiều phần cho phép JIT loại bỏ một số trong số chúng. Bản vá của Tomas Roungh-131798: Chia
CALL_STR_1thành nhiều phần cho phép JIT loại bỏ một số trong số chúng. Bản vá của Tomas Roungh-132825: Cải thiện các thông báo lỗi khóa/thành phần không thể băm cho
dictvàset. Bản vá của Victor Stinner.gh-131591: Đặt lại mọi cuộc gọi gỡ lỗi từ xa PEP 768 đang chờ xử lý ở trẻ em sau các cuộc gọi
os.fork().gh-132713: Khắc phục tình trạng đua
repr(list): giữ tham chiếu mạnh đến vật phẩm trong khi gọirepr(item). Bản vá của Victor Stinner.gh-132661: Triển khai PEP 750 (Chuỗi mẫu). Thêm cú pháp mới cho chuỗi t và triển khai các loại
string.templatelib.Templatevàstring.templatelib.Interpolationnội bộ mới.gh-132479: Khắc phục sự cố trình biên dịch trong một số trường hợp nhất định trong đó nhiều chú thích cấp mô-đun bao gồm phần hiểu và phạm vi lồng nhau khác.
gh-132747: Khắc phục sự cố khi gọi
__get__()của method với đối số thứ hai làNone.gh-132744: Một số cuộc gọi hiện đang kiểm tra đệ quy chạy trốn và tôn trọng giới hạn đệ quy của hệ thống.
gh-132449: Các lỗi cú pháp trông giống như lỗi chính tả của từ khóa Python hiện cung cấp gợi ý sửa lỗi hữu ích cho lỗi đánh máy. Đóng góp của Pablo Galindo Salgado.
Thư viện¶
Cốt lõi và nội dung¶
gh-132639: Đã thêm
PyLong_AsNativeBytes(),PyLong_FromNativeBytes()vàPyLong_FromUnsignedNativeBytes()vào C API giới hạn.gh-100239: Thêm chuyên môn hóa cho
BINARY_OP/SUBSCRvào danh sách và lát cắt.gh-132508: Sử dụng các số nguyên được gắn thẻ trên ngăn xếp đánh giá để thể hiện độ lệch lệnh khi đưa ra một ngoại lệ. Điều này tránh việc phải đóng hộp số nguyên có thể bị lỗi trong điều kiện bộ nhớ thấp.
gh-124476: Sửa lỗi giải mã từ mã hóa ngôn ngữ trong ngôn ngữ C.UTF-8.
gh-131927: Các cảnh báo của trình biên dịch bắt nguồn từ cùng một mô-đun và số dòng hiện chỉ được phát ra một lần, khớp với hành vi của các cảnh báo được phát ra từ mã người dùng. Điều này cũng có thể được cấu hình với các bộ lọc
warnings.gh-132457: Tạo
staticmethod()vàclassmethod()chung.gh-131798: Sử dụng
sym_new_typethay vìsym_new_not_nullcho _BUILD_LIST, _BUILD_SET, _BUILD_MAPgh-131798: Chia
CALL_TYPE_1thành nhiều phần cho phép JIT loại bỏ một số trong số chúng.gh-132386: Khắc phục sự cố khi chuyển lớp con dict làm tham số
globalschoexec().gh-127682: Không còn gọi
__iter__hai lần khi tạo và thực thi biểu thức trình tạo. Việc tạo biểu thức trình tạo từ một biểu thức không thể tương tác sẽ chỉ tăng lên khi biểu thức trình tạo được thực thi. Điều này làm cho hành vi của các biểu thức trình tạo phù hợp với các trình tạo khác.gh-132261: Bộ nhớ trong cho các chú thích và chức năng chú thích trên các lớp hiện sử dụng các khóa khác nhau trong từ điển lớp. Điều này giúp loại bỏ các trường hợp đặc biệt khác nhau trong đó việc truy cập vào các thuộc tính
__annotate__và__annotations__sẽ hoạt động không thể đoán trước.gh-132284: Không bọc các khe
PyCFunctioncơ bản khi tạo lớp nếu không bị ghi đè.gh-130415: Cải thiện khả năng của JIT để loại bỏ các tải biến cục bộ và cố định không được sử dụng, đồng thời khắc phục sự cố trong đó việc hủy phân bổ các giá trị không được sử dụng có thể khiến mã JIT gặp sự cố hoặc hoạt động không chính xác.
gh-126703: Khắc phục khả năng sử dụng sau khi miễn phí trong trường hợp định nghĩa của phương thức có cùng thời gian tồn tại với
selfcủa nó.gh-132286: Sửa lỗi
type.__annotate__không bị xóa khitype.__annotations__bị xóa.gh-131798: Cho phép JIT xóa lệnh
_TO_BOOL_BOOLbổ sung sau_CONTAINS_OP_DICTbằng cách đặt kiểu trả về thành bool.gh-124715: Ngăn chặn tình trạng tràn ngăn xếp khi gọi
Py_DECREF(). Các đối tượng mở rộng của bên thứ ba không còn cần phải sử dụng cơ chế "thùng rác" vì tính năng bảo vệ hiện đã được tích hợp trong macroPy_DECREF().gh-131798: Cho phép trình biên dịch JIT loại bỏ một số kiểm tra kiểu đối với các hoạt động trên danh sách, bộ dữ liệu, từ điển và bộ.
gh-128398: Cải thiện thông báo lỗi khi một đối tượng hỗ trợ giao thức quản lý bối cảnh đồng bộ (tương ứng không đồng bộ) được nhập bằng
async with(tương ứngwith) thay vìwith(tương ứngasync with). Bản vá của Bénédikt Trần.gh-131798: Cho phép JIT loại bỏ các bộ bảo vệ unicode sau
_BINARY_OP_SUBSCR_STR_INTbằng cách đặt kiểu trả về thành chuỗi.gh-131878: Xử lý các ngoại lệ chưa được phát hiện trong vòng lặp đầu vào chính cho REPL mới.
gh-131878: Khắc phục sự cố hỗ trợ các ký tự unicode có hai điểm mã trở lên trên Windows trong REPL mới.
gh-126835: Di chuyển liên tục đến trình tối ưu hóa lỗ nhìn trộm. Đổi tên các tệp liên quan đến tối ưu hóa AST (Python/ast_opt.c -> Python/ast_preprocess.c), cấu trúc (_PyASTOptimizeState -> _PyASTPreprocessState) và các hàm (_PyAST_Optimize -> _PyAST_Preprocess, _PyCompile_AstOptimize -> _PyCompile_AstPreprocess).
gh-114809: Thêm hỗ trợ cho các bản dựng đa vòm macOS khi bật JIT
gh-131507: PyREPL hiện hỗ trợ tô sáng cú pháp. Đóng góp bởi Łukasz Langa.
gh-130907: Nếu
__annotations__của một đối tượng mô-đun được truy cập trong khi mô-đun đang thực thi, hãy trả về các chú thích đã được xác định cho đến nay mà không lưu chúng vào bộ nhớ đệm.gh-130104:
pow()ba đối số bây giờ hãy thử gọi__rpow__()nếu cần. Trước đây nó chỉ được gọi trongpow()hai đối số và toán tử lũy thừa nhị phân.gh-130070: Đã sửa lỗi xác nhận cho
exec()đã truyền một chuỗisourcevà một chuỗiNoneclosure. Bản vá của Bartosz Sławecki.gh-129958: Sửa lỗi cho phép dòng mới không nhất quán trong các công cụ xác định định dạng cho chuỗi f trích dẫn đơn. Bản vá của Pablo Galindo.
gh-129858: Các câu lệnh
eliftheo sau khốielsehiện có thông báo lỗi cụ thể.gh-69605: Thêm tính năng tự động hoàn thành mô-đun vào PyREPL.
gh-128555: Thêm cờ
sys.flags.thread_inherit_context.Cờ này được đặt thành true theo mặc định trên bản dựng có luồng tự do và ngược lại là sai. Nếu cờ này đúng, thì việc bắt đầu một chuỗi mới bằng
threading.Threadtheo mặc định sẽ sử dụng một bản sao củacontextvars.Contexttừ người gọithreading.Thread.start()thay vì sử dụng ngữ cảnh trống.Thêm tùy chọn dòng lệnh
-X thread_inherit_contextvà biến môi trườngPYTHON_THREAD_INHERIT_CONTEXTđể đặt cờthread_inherit_context.Thêm tham số từ khóa
contextvàoThread. Nó có thể được sử dụng để chuyển một cách rõ ràng một giá trị ngữ cảnh được sử dụng bởi một luồng mới.Tích hợp mô-đun
_contextvars.
gh-123539: Cải thiện thông báo
SyntaxErrorkhi sử dụngimport ... asvàfrom ... import ... askhông có tên.gh-102567:
-X importtimehiện chấp nhận giá trị2, cho biết rằng mục nhậpimporttimecũng phải được in nếu mô-đun nhập đã được tải. Bản vá của Noah Kim và Adam Turner.gh-116436: Cải thiện thông báo lỗi khi
TypeErrorxảy ra trongdict.update()gh-103997: Các đối số chuỗi được truyền cho "-c" hiện được tự động lùi dòng như thể bởi
textwrap.dedent(). Điều này cho phép các lệnh gọi "python -c" được thụt lề trong tập lệnh shell mà không gây ra lỗi thụt lề. (Bản vá của Jon Crall và Steven Sun)
Thư viện¶
gh-89562: Xóa thành viên
hostflagskhỏi cấu trúcPySSLContext.
C API¶
gh-133166: Khắc phục hồi quy trong đó
PyType_GetModuleByDef()trả về NULL mà không đặtTypeErrorkhi một loại tĩnh được truyền.gh-133164: Thêm hàm
PyUnstable_Object_IsUniqueReferencedTemporary()để xác định xem một đối tượng có tồn tại dưới dạng biến tạm thời duy nhất trên ngăn xếp của trình thông dịch hay không. Đây là giải pháp thay thế cho một số trường hợp trong đó việc kiểm tra xemPy_REFCNT()có phải là không còn đủ để xác định xem liệu việc sửa đổi đối tượng Python tại chỗ có an toàn mà không có tác dụng phụ rõ ràng hay không.gh-133140: Thêm
PyUnstable_Object_IsUniquelyReferenced()thay thế choPy_REFNCT(op) == 1trên các bản dựng free threaded của Python.gh-131747: Trên nền tảng không phải Windows, không dùng
ctypes.Structure._pack_để sử dụng bố cục tương thích với Windows trên nền tảng không phải Windows. Bố cục phải được chỉ định rõ ràng bằng cách đặtctypes.Structure._layout_thành'ms'.gh-128972: Đối với các bản dựng không có luồng tự do, bố cục bộ nhớ của
PyASCIIObjectđược hoàn nguyên để phù hợp với Python 3.13. (Lưu ý rằng cấu trúc không phải là một phần của ABI ổn định và do đó bố cục bộ nhớ của nó là guaranteed để duy trì ổn định.)gh-133079: Các API không có giấy tờ
Py_C_RECURSION_LIMITvàPyThreadState.c_recursion_remaining, được thêm vào trong 3.13, sẽ bị xóa mà không có thời gian ngừng sử dụng.gh-132987: Các định dạng
kvàKtrongPyArg_Parse()hiện hỗ trợ phương thức đặc biệt__index__(), giống như tất cả các định dạng số nguyên khác.gh-132909: Khắc phục lỗi tràn khi xử lý định dạng K trong
Py_BuildValue(). Bản vá của Bénédikt Trần.gh-132798: Các hàm không được dùng nữa và không có giấy tờ
PyUnicode_AsEncodedObject(),PyUnicode_AsDecodedObject(),PyUnicode_AsEncodedUnicode()vàPyUnicode_AsDecodedUnicode()được lên lịch xóa trong 3.15.gh-132470: Việc tạo một
ctypes.CFieldvới một byte_size không khớp với kích thước loại thực tế hiện sẽ tạo ra mộtValueErrorthay vì làm hỏng trình thông dịch.gh-112068: [Đã hoàn nguyên trong gh-136991] Thêm hỗ trợ các đối số có thể rỗng trong
PyArg_Parse()và các hàm tương tự. Việc thêm?sau bất kỳ đơn vị định dạng nào sẽ làm choNoneđược chấp nhận làm giá trị.gh-50333: Các chuỗi không phải bộ dữ liệu không được dùng làm đối số cho đơn vị định dạng
(items)trongPyArg_ParseTuple()và các hàm argument parsing khác nếu items chứa các đơn vị định dạng lưu trữ borrowed buffer hoặc borrowed reference.
xây dựng¶
gh-113464: Sử dụng kho lưu trữ "bên ngoài" cpython-bin-deps để quản lý phần phụ thuộc LLVM của Windows. Việc cài đặt LLVM theo cách thủ công không còn cần thiết đối với các bản dựng Windows JIT.
gh-133183: Các miếng chêm trình biên dịch iOS hiện bao gồm
IPHONEOS_DEPLOYMENT_TARGETtrong bộ ba mục tiêu, đảm bảo rằng mức tối thiểu của phiên bản SDK được tôn trọng.gh-133167: Sửa lỗi quá trình biên dịch với
--enable-optimizationsvà--without-docstrings.gh-133171: Vì các bản dựng luồng tự do không hỗ trợ trình biên dịch JIT thử nghiệm, nên hãy ngăn kết hợp các cấu hình này.
gh-132758: Sửa tòa nhà bằng trình thông dịch cuộc gọi đuôi và pystat.
gh-132649: Tập lệnh
PClayouthiện cho phép truyền--include-tcltktrên Windows ARM64.gh-132257: Thay đổi cờ LTO mặc định trên GCC để không vượt qua
-flto-partition=nonevà cho phép song song hóa LTO. Đối với các hãng sản xuất GNU và GCC mới hơn, điều này có khả năng tăng tốc nhiều yếu tố cho thời gian xây dựng LTO mà không bị giảm hiệu suất đáng chú ý.gh-132026: Khắc phục việc sử dụng số nhận dạng không xác định trong phát hiện bộ ba nền tảng trên nền tảng MIPS Linux.
Python 3.14.0 alpha 7¶
Release date: 2025-04-08
macOS¶
cửa sổ¶
gh-131423: Cập nhật phiên bản OpenSSL đi kèm lên 3.0.16. Bản dựng mới cũng vô hiệu hóa hỗ trợ đường lên, có thể liên quan đến trình nhúng nhưng không ảnh hưởng đến việc sử dụng thông thường.
gh-131453: Một số hằng số
SND_*vàMB_*được thêm vàowinsound.gh-91349: Thay thế bản sao
zlibcủa chúng tôi bằngzlib-ngđể cải thiện hiệu suất trongzlib.gh-131025: Cập nhật trình cài đặt Windows đi kèm với SQLite 3.49.1.
Công cụ/Bản trình diễn¶
Kiểm tra¶
gh-131277: Cho phép bỏ đặt một hoặc nhiều biến môi trường cùng lúc thông qua
EnvironmentVarGuard.unset(). Bản vá của Bénédikt Trần.gh-131050:
test_ssl.test_dh_paramsbị bỏ qua nếu thư viện TLS cơ bản không hỗ trợ Diffie-Hellman phù du trường hữu hạn.
Bảo mật¶
gh-131809: Cập nhật gói libexpat lên 2.7.1
gh-131261: Nâng cấp lên libexpat 2.7.0
gh-121284: Sửa lỗi gấp các từ được mã hóa rfc2047 khi làm phẳng thư email bằng chính sách email hiện đại. Trước đây, khi một từ được mã hóa quá dài so với một dòng, nó sẽ được giải mã, chia thành các dòng và mã hóa lại. Tuy nhiên, dấu phẩy và các ký tự đặc biệt khác trong văn bản gốc có thể không được mã hóa và không được trích dẫn. Về mặt lý thuyết, điều này có thể được sử dụng để giả mạo các dòng tiêu đề bằng cách sử dụng từ được mã hóa được xây dựng cẩn thận nếu email được hiển thị kết quả được truyền đi hoặc phân tích cú pháp lại.
Thư viện¶
gh-132174: Sửa tên hàm trong thông báo lỗi của
_interpreters.run_string.gh-132171: Khắc phục sự cố
_interpreters.run_stringtrên các lớp con chuỗi.gh-129204: Giới thiệu núm biến môi trường
_PYTHON_SUBPROCESS_USE_POSIX_SPAWNmới trongsubprocessđể kiểm soát việc sử dụngos.posix_spawn().gh-132159: Không ẩn các đối số của người dùng trong
__new__()được tạo bởi trình trang tríwarnings.deprecated. Bản vá của Xuehai Pan.gh-132168: Loại
ctypes.py_objecthiện hỗ trợ đăng ký, biến nó thành generic type.gh-84481: Thêm thuộc tính
zipfile.ZipFile.data_offset, lưu trữ phần bù vào phần đầu của dữ liệu ZIP trong một tệp khi có sẵn. Khizipfile.ZipFileđược mở ở chế độ'w'hoặc'x'và tệp cơ bản không hỗ trợtell(), thay vào đó giá trị sẽ làNone.gh-132075: Khắc phục khả năng sử dụng cấu trúc địa chỉ
socketvới các thành viên chưa được khởi tạo. Bây giờ tất cả các thành viên cấu trúc được khởi tạo bằng số 0 theo mặc định.gh-118761: Cải thiện thời gian nhập lên tới 27 lần cho mô-đun
string. Bản vá của Adam Turner.gh-125434: Hiển thị tên chủ đề trong
faulthandler. Bản vá của Victor Stinner.gh-132002: Khắc phục sự cố khi phân bổ
contextvars.ContextVarvới các tên chuỗi kỳ lạ không thể xóa được.gh-131938:
xml.etree.ElementTree: cập nhật thông báo lỗi khi không tìm thấy phần tử cần xóa quaElement.remove. Bản vá của Bénédikt Trần.gh-115942: Thêm
threading.RLock.locked(),multiprocessing.Lock.locked(),multiprocessing.RLock.locked()và cho phépmultiprocessing.managers.SyncManager.Lock()vàmultiprocessing.managers.SyncManager.RLock()thực hiện cuộc gọilocked()proxy.gh-131974: Khắc phục một số vấn đề về an toàn luồng trong
ctypestrên bản dựng free threaded.gh-118761: Cải thiện thời gian nhập của mô-đun
astbằng cách trích xuất hàmunparse()sang mô-đun trợ giúp.gh-107369: Cải thiện hiệu suất của
textwrap.indent()trung bình ~ 1,3 lần. Bản vá của Adam Turner.gh-131792: Cải thiện hiệu suất của
textwrap.dedent()trung bình ~ 2,4 lần, (với mức cải thiện lên tới 4 lần cho đầu vào lớn) và sửa lỗi trong đó các dòng trống có ký tự khoảng trắng không phải dấu cách hoặc tab ngang không được chuẩn hóa thành dòng mới. Bản vá của Adam Turner, Marius Juston và Pieter Eendebak.gh-131668:
socket: Sửa mã phân tích địa chỉ ổ cắm AF_BLUETOOTH.gh-60115: Hỗ trợ các mô-đun cố định cho
linecache.getline().gh-131492: Khắc phục rò rỉ tài nguyên khi xây dựng
gzip.GzipFilebằng tên tệp không thành công, chẳng hạn như khi truyềncompresslevelkhông hợp lệ.gh-131435: Cải thiện hiệu suất 10-20% của
random.randint().gh-131461: Khắc phục
ResourceWarningkhi xây dựnggzip.GzipFileở chế độ ghi với đối tượng tệp bị hỏng.gh-125866: Không dùng mô-đun
nturl2pathnữa. Thay vào đó hãy gọiurllib.request.url2pathname()vàpathname2url().gh-126367: Khắc phục sự cố trong đó
urllib.request.url2pathname()tăngOSErrorkhi được cấp Windows URI chứa ký tự dấu hai chấm không theo sau ký tự ổ đĩa, chẳng hạn như trước luồng dữ liệu thay thế NTFS.gh-120144: Vô hiệu hóa sự kiện
CALLtrongbdbtrong phần phụ trợmonitoringkhi chúng tôi không cần bất kỳ sự kiện mới nào trên đối tượng mã để có hiệu suất tốt hơn.gh-131358: Đăng ký
cseuckrlàm bí danh mã hóa choeuc_kr.gh-131325: Khắc phục việc triển khai dự phòng sendfile để tiêu hao dữ liệu sau khi ghi vào truyền tải trong
asyncio.gh-90548:
platform.libc_ver()hiện có thể phát hiện và báo cáo phiên bảnmusltrên Alpine Linux.gh-129843: Sửa lỗi truyền đối số không chính xác trong
warnings.warn_explicit().gh-70647: Khi tạo một đối tượng
datetimecó ngày nằm ngoài phạm vi, sẽ xuất hiện một lỗi nhiều thông tin hơn.gh-130914: Cho phép gọi
graphlib.TopologicalSorter.prepare()nhiều lần miễn là việc phân loại chưa bắt đầu. Bản vá của Daniel Pope.gh-131236: Cho phép tạo nhiều UUID cùng lúc thông qua
python -m uuid --count.gh-126895: Sửa
readlinetrong bản dựng free-threaded.gh-121468:
$_asynctaskđược thêm dưới dạng biến tiện lợipdbđể truy cập tác vụ asyncio hiện tại nếu có.gh-118761: Cải thiện thời gian nhập của
localebằng cách sử dụngrenhập lười biếng. Bản vá của Semyon Moroz.gh-129598: Sửa
ast.unparse()khiast.Interactivechứa nhiều câu lệnh.gh-85162: Mô-đun
http.serverhiện bao gồm hỗ trợ tích hợp cho các máy chủ HTTPS dohttp.server.HTTPSServercung cấp. Chức năng này được hiển thị qua giao diện dòng lệnh (python -m http.server) thông qua các tùy chọn--tls-cert,--tls-keyvà--tls-password-file. Bản vá của Semyon Moroz.gh-129463: Việc triển khai đẳng thức và hàm băm cho
annotationlib.ForwardRefhiện sử dụng tất cả các thuộc tính trên đối tượng. Hai đối tượngForwardRefchỉ bằng nhau nếu tất cả các thuộc tính đều bằng nhau.gh-128593: các đối tượng
annotationlib.ForwardRefkhông còn lưu trữ giá trị của chúng khi chúng được đánh giá thành công. Các cuộc gọi liên tiếp tớiannotationlib.ForwardRef.evaluate()có thể trả về các giá trị khác nhau.gh-117779: Sửa lỗi đọc các mục trùng lặp trong
zipfiletheo tên. Việc đọc các mục trùng lặp (ngoại trừ mục cuối cùng) củaZipInfohiện phát ra cảnh báo thay vì đưa ra ngoại lệ.gh-128715: Lớp mô tả trường
Structure/Unionhiện có sẵn dưới dạngCFieldvà có các thuộc tính mới để hỗ trợ gỡ lỗi và xem xét nội tâm.gh-128055: Sửa lỗi
test.test_sysconfig.test_sysconfigdata_jsonkhi chạy ngoài thư mục build (ví dụ sau khi cài đặt).gh-126037:
xml.etree.ElementTree: Khắc phục sự cố trongElement.find,Element.findtextvàElement.findallkhi thẻ tìm thực hiện phương thức__eq__()làm thay đổi phần tử đang được truy vấn. Bản vá của Bénédikt Trần.gh-127794: Khi tiêu đề được thêm vào đối tượng
email.message.Message, thông quaemail.message.Message.__setitem__()hoặcemail.message.Message.add_header(), tên trường hiện được xác thực theo RFC 5322, Section 2.2 vàValueErrorđược nâng lên nếu tên trường chứa bất kỳ ký tự không hợp lệ nào.gh-123599: Không dùng nữa
pathlib.PurePath.as_uri(); thay vào đó hãy sử dụngpathlib.Path.as_uri().gh-126033:
xml.etree.ElementTree: Khắc phục sự cố trongElement.removekhi phần tử bị đột biến đồng thời. Bản vá của Bénédikt Trần.gh-120144: Thêm phần phụ trợ tùy chọn của
sys.monitoringvàobdbvà sử dụng nó chopdb.gh-74598: Thêm
fnmatch.filterfalse()để loại trừ các tên khớp với mẫu. Bản vá của Bénédikt Trần.gh-114917: Thêm hỗ trợ cho AI_NUMERICSERV trong mô phỏng getaddrinfo
bpo-17254: Đã thêm bí danh cho Ngôn ngữ Thái bằng cách sử dụng Trang mã Microsoft.
Tài liệu¶
gh-131417: Đề cập đến
asyncio.Futurevàasyncio.Tasktrong danh sách lớp chung.
Cốt lõi và nội dung¶
gh-131798: Cho phép JIT xóa lệnh
_TO_BOOL_BOOLbổ sung sau_CONTAINS_OP_SETbằng cách đặt kiểu trả về thành bool.gh-132011: Khắc phục sự cố khi gọi
list.append()dưới dạng phương thức không liên kết.gh-131998: Khắc phục sự cố khi sử dụng đối tượng descriptor phương thức không liên kết trong hàm sử dụng bộ mô tả phương thức liên kết.
gh-131591: Triển khai PEP 768 (Giao diện gỡ lỗi bên ngoài an toàn cho CPython). Thêm chức năng
sys.remote_exec()mới vào mô-đunsys. Hàm này lên lịch thực thi tệp Python trong một quy trình riêng biệt. Bản vá của Pablo Galindo, Matt Wozniski và Ivona Stojanovic.gh-131798: Cho phép JIT bỏ qua bảo vệ str trong kiểm tra tính trung thực khi biết loại str.
gh-131833: Thêm hỗ trợ cho việc tùy chọn bỏ dấu ngoặc đơn nhóm khi sử dụng nhiều loại ngoại lệ theo PEP 758. Bản vá của Pablo Galindo
gh-130924: Việc sử dụng tên trong chú thích phạm vi hàm không còn kích hoạt việc tạo ô cho biến đó nữa. Điều này khắc phục sự hồi quy trong các bản alpha trước đó của Python 3.14.
gh-131800: Cải thiện khả năng của JIT thử nghiệm để loại bỏ kiểm tra loại đối với một số hoạt động đăng ký nhất định.
gh-131738: Trình biên dịch phát ra mã được tối ưu hóa cho các lệnh gọi bất kỳ/tất cả/bộ dữ liệu dựng sẵn qua biểu thức trình tạo.
gh-131719: Sửa lỗi thiếu kiểm tra NULL trong
_PyMem_FreeDelayedtrong bản dựng free-threaded.gh-131670: Khắc phục lỗi
anext()khi đồng bộ hóa__anext__()gây ra ngoại lệ.gh-131666: Sửa chữ ký của đối tượng
anext_awaitable.close. Bản vá của Bénédikt Trần.gh-130415: Tối ưu so sánh 2 hằng số trong build JIT
gh-129149: Thêm đường dẫn nhanh cho các số nguyên cỡ vừa và nhỏ trong
PyLong_FromInt32(),PyLong_FromUInt32(),PyLong_FromInt64()vàPyLong_FromUInt64(). Bản vá của Chris Eibl.gh-130887: Tối ưu hóa việc tạo mã AArch64 cho JIT. Bản vá của Diego Russo
gh-130956: Tối ưu hóa việc tạo mã AArch64 cho JIT. Bản vá của Diego Russo
gh-130928: Sửa thông báo lỗi khi định dạng byte bằng cờ
'i'. Bản vá của Maxim Ageev.gh-130935: Các chú thích ở cấp độ lớp và mô-đun được xác định có điều kiện hiện chỉ được phản ánh trong
__annotations__nếu khối chứa chúng được thực thi. Bản vá của Jelle Zijlstra.gh-130775: Không gặp sự cố trên
columnâm vàend_columnở các vị tríast.gh-130704: Tối ưu hóa
LOAD_FASTvà hình thức siêu lệnh của nó để giảm chi phí tính tham chiếu. Các hướng dẫn này được thay thế bằng các biến thể nhanh hơn tải các tham chiếu mượn vào ngăn xếp toán hạng khi chúng tôi có thể chứng minh rằng tham chiếu trong khung tồn tại lâu hơn tham chiếu được tải lên ngăn xếp.gh-88887: Sửa lỗi rò rỉ quy trình Resource Tracker đa xử lý, thường thấy khi chạy Python dưới dạng PID 1.
gh-130115: Khắc phục sự cố với mã nhận dạng chuỗi được mở rộng bằng dấu hiệu trên một số nền tảng.
Thư viện¶
Cốt lõi và nội dung¶
gh-130080: Triển khai PEP 765: Không cho phép quay lại/ngắt/tiếp tục thoát khỏi khối cuối cùng.
gh-129900: Sửa mã trả lại bên trong
SystemExitkhông được REPL trả về.gh-128632: Không cho phép
__classdict__làm tên của tham số loại. Việc sử dụng tên này trước đây có thể làm hỏng trình thông dịch trong một số trường hợp.gh-126703: Cải thiện hiệu suất của các phương thức dựng sẵn bằng cách sử dụng danh sách tự do.
gh-126703: Cải thiện hiệu suất của
rangebằng cách sử dụng danh sách miễn phí.
C API¶
xây dựng¶
gh-131865: Bản dựng DTrace hiện chuyển các biến
CCvàCFLAGSsang lệnhdtracemột cách chính xác khi sử dụng SystemTap trên Linux.gh-131675: Sửa các bản dựng thư viện mimalloc cho mục tiêu ARM 32-bit.
gh-131691: clang-cl trên Windows cần tùy chọn
/EHađể hỗ trợ SEH (xử lý ngoại lệ có cấu trúc) một cách chính xác. Sửa chữa bởi Chris Eibl.gh-131278: Thêm cờ tối ưu hóa
WITH_COMPUTED_GOTOSvào các bản dựng Windows khi sử dụng trình biên dịch hỗ trợ nó (hiện tại là clang-cl). Bản vá của Chris Eibl.gh-130213: Cập nhật thư viện HACL* được cung cấp để khắc phục sự cố xây dựng với trình biên dịch clang cũ hơn.
gh-130673: Khắc phục
KeyErrortiềm ẩn khi xử lý các phần đối tượng trong quá trình xây dựng JIT.
Python 3.14.0 alpha 6¶
Release date: 2025-03-14
macOS¶
gh-128540: Đảm bảo trình duyệt web được
webbrowser.open()khởi chạy trên macOS, ngay cả đối với các URLfile://.
cửa sổ¶
gh-131020: pylauncher phát hiện chính xác BOM khi tìm kiếm Shebang. Sửa chữa bởi Chris Eibl.
Công cụ/Bản trình diễn¶
gh-130453: Cho phép ghi đè các từ khóa mặc định trong pygettext.
gh-85012: Đặt lại chính xác
msgctxtkhi biên dịch tin nhắn trong msgfmt.gh-130453: Mở rộng hỗ trợ để chỉ định từ khóa tùy chỉnh trong pygettext.
gh-130195: Thêm thông báo cảnh báo khi tùy chọn
-a/--extract-allchưa được triển khaipygettextđược gọi.gh-130057: Thêm hỗ trợ nhận xét của người dịch trong pygettext.py.
gh-130025: Nền tảng thử nghiệm iOS hiện xử lý chính xác các liên kết tượng trưng được sử dụng làm tham chiếu khung Python.
gh-129911: Sửa mục nhập từ khóa trong đầu ra trợ giúp của pygettext.
Kiểm tra¶
gh-129200: Giờ đây, nhiều trình chạy thử nghiệm iOS có thể được khởi động cùng lúc mà không gây ra sự mơ hồ về quyền sở hữu trình mô phỏng.
gh-130292: Giờ đây, bản thử nghiệm iOS sẽ chạy thành công trên máy chưa chạy thử nghiệm Xcode trước đó (chẳng hạn như cấu hình CI).
gh-130293: Các thử nghiệm về màu sắc của thiết bị đầu cuối không còn nhạy cảm với giá trị của biến
TERMtrong môi trường thử nghiệm.gh-129401: Khắc phục thử nghiệm không ổn định trong
test_repr_rlockđể kiểm tra cách trình bày củamultiprocessing.RLock.gh-126332: Thêm bài kiểm tra đơn vị cho pyrepl.
Bảo mật¶
gh-127371: Tránh đệm không giới hạn cho
tempfile.SpooledTemporaryFile.writelines(). Trước đây, tình trạng tràn ổ đĩa chỉ được kiểm tra sau khi các dòng lặp đã hết. Việc này bây giờ được thực hiện sau mỗi dòng được viết.
Thư viện¶
gh-131204: Sử dụng phông chữ đơn cách từ System Font Stack để hỗ trợ đa nền tảng trong
difflib.HtmlDiff.gh-131196: Cải thiện hiệu suất của
uuid.UUID.hexvàuuid.UUID.__str__.gh-130940: Hành vi của
PyConfig.use_system_loggerđã được sửa đổi để bật theo mặc định trên iOS. Nó vẫn bị tắt theo mặc định trên macOS.gh-131123: Hỗ trợ hoàn thành các thuộc tính của biến tiện lợi trong
pdb.gh-93096: Đã xóa CLI
python -m difflibkhông có giấy tờ. Thay vào đó hãy sử dụngpython -m doctest Lib/difflib.py -v. Bản vá của Semyon Moroz.gh-93096: Đã xóa các đối số
-tvà-vkhông có giấy tờ củapython -m pickle. Thay vào đó hãy sử dụngpython -m doctest Lib/pickle.py -v. Bản vá của Semyon Moroz.gh-81267: Sửa thông báo lỗi
time.sleep()khi cung cấp một đối tượng không thể hiểu là số nguyên hoặc số float.gh-93096: Đã xóa các đối số
-tvà-vkhông có giấy tờ củapython -m pickletools. Thay vào đó hãy sử dụngpython -m doctest Lib/pickletools.py -v. Bản vá của Semyon Moroz.gh-131045: Khắc phục sự cố với
__contains__, giá trị và thành viên giả choenum.Flag.gh-130959: Khắc phục sự cố triển khai
datetime.time.fromisoformat()bằng Python thuần túy để loại bỏ thời gian có dấu cách ở phần phân số (ví dụ:12:34:56.400 +02:00), khớp với cách triển khai C. Bản vá của Michał Gorny.gh-130806: Xóa
gzip.GzipFiletrước khi đóng nó sẽ phát raResourceWarning.gh-130637: Thêm xác thực cho dữ liệu phản hồi số trong phương thức poplib.POP3.stat()
gh-130665: Chỉ áp dụng ngôn ngữ cho calendar CLI khi được đặt qua
--localechứ không phải qua biến môi trườngLANG.gh-130660:
sys.ps1vàsys.ps2hiện được khôi phục sau lệnh gọicode.interact().gh-130608: Xóa đối số dirs_exist_ok khỏi
pathlib.Path.copy()vàcopy_into(). Những phương thức này mới có trong Python 3.14.gh-130461: Xóa chỉ thị
.. index::khỏi tài liệu mô-đunuuid. Các lệnh này trước đây đã tạo các mục trong chỉ mục chung chogetnode()cũng như các hàm xây dựnguuid1(),uuid3(),uuid4(),uuid5()vàuuid8().gh-130379: Mô-đun zipapp hiện tính toán danh sách các tệp sẽ được thêm vào kho lưu trữ trước khi tạo kho lưu trữ. Điều này tránh việc vô tình bao gồm mục tiêu khi nó đang được tạo trong thư mục nguồn.
gh-82987: Các điểm dừng nội tuyến như
breakpoint()hoặcpdb.set_trace()sẽ luôn dừng chương trình ở khung đang gọi, bỏ qua mẫuskip(nếu có).gh-125377:
<tab>ở đầu dòng trong kiểu nhập nhiều dòngpdbbây giờ sẽ điền vào thụt lề 4 dấu cách, thay vì chèn ký tự\t.gh-125413: Đảm bảo đường dẫn được trả về từ
pathlib.Path.copy()hoặcmove()cóinfomới.gh-65697: stdlib configparser bây giờ sẽ cố gắng xác thực rằng các khóa mà nó ghi sẽ không dẫn đến hỏng tệp (tạo một tệp không thể được phân tích cú pháp chính xác bằng lệnh gọi read() trong tương lai từ cùng một trình phân tích cú pháp). Cố gắng ghi() bị hỏng sẽ gây ra lỗi InvalidWriteError.
gh-125413: Tăng tốc
Path.copybằng cách sử dụnginfonội bộ tốt hơn.gh-130285: Sửa trường hợp góc cho
random.sample()cho phép tham số counts chỉ định một tập hợp trống. Vì vậy, bây giờ,sample([], 0, counts=[])vàsample('abc', k=0, counts=[0, 0, 0])đều cho kết quả giống nhưsample([], 0).gh-124703: Thực thi lệnh
quittrongpdbsẽ tăngbdb.BdbQuitkhipdbđược khởi động từ bảng điều khiển tương tác sử dụngbreakpoint()hoặcpdb.set_trace().gh-107773: Làm cho lớp con
datetime__repr__()nhất quán cả hai cách triển khai. Bản vá của Semyon Moroz.gh-130250: Sửa lỗi hồi quy trong
traceback.print_last().gh-123471: Thực hiện các lần lặp đồng thời trên
itertools.batchedmột cách an toàn trong luồng tự do.gh-57537: Hỗ trợ các điểm dừng cho các mô-đun
zipimporttrênpdbgh-130230: Khắc phục sự cố trong
pow()chỉ với đối số thứ baDecimal.gh-126944: Hiển thị lỗi rõ ràng khi thiếu đối số bắt buộc của lệnh
pdbgh-127750: Cải thiện sự lặp lại của các phương thức và bộ mô tả
functools.singledispatchmethod.gh-128520: Áp dụng chuyển đổi loại một cách nhất quán trong các phương thức
pathlib.PurePathvàPathcó thể chấp nhận một đối tượng đường dẫn làm đối số, chẳng hạn nhưmatch()vàrename(). Đối số hiện được chuyển đổi thành đối tượng đường dẫn nếu nó thiếu thuộc tínhwith_segments()chứ không phải thuộc tính khác.gh-118761: Hoàn nguyên một thay đổi trong bản phát hành trước nhằm cố gắng thực hiện một số thao tác nhập stdlib được sử dụng trong mô-đun
subprocessmột cách lười biếng vì điều này gây ra lỗi trong các phương thức gọi bộ hoàn thiện__del__nhưterminate,killhoặcsend_signal.gh-130164: Đã sửa lỗi không thể tăng
TypeErrortronginspect.Signature.bind()cho các đối số chỉ có vị trí được cung cấp bởi từ khóa khi có đối số từ khóa đa dạng (ví dụ:**kwargs).gh-130151: Sửa lỗi rò rỉ tham chiếu trong
_hashlib.hmac_new()và_hashlib.hmac_digest(). Bản vá của Bénédikt Trần.gh-130145: Sửa
asyncio.AbstractEventloop.run_forever()khi một vòng lặp khác đang chạy.gh-130139: Sửa lỗi trong đó
ast.parse()không gặp lỗi trên đầu vào AST không đúng loại, khi được gọi với tối ưu hóa=False.gh-127260: Cấm sử dụng dấu hai chấm (: //) làm dấu tách thành phần phân số và các cải tiến khác đối với tính nhất quán trong việc tăng lỗi giữa quá trình triển khai C và Python của
datetime.time.fromisoformat()vàdatetime.datetime.fromisoformat(). Bản vá của Semyon Moroz.gh-85795: Việc sử dụng
super()và__class__closure variable trong các phương thức do người dùng định nghĩa của các lớp contyping.NamedTuplehiện bị cấm rõ ràng trong thời gian chạy. Được đóng góp bởi Bartosz Sławecki trong gh-130082.gh-118761: Cải thiện thời gian nhập
cmdbằng cách lười biếng nhậpinspectvà xóastring. Bản vá của Semyon Moroz.gh-129726: Khắc phục
gzip.GzipFileđưa ra ngoại lệ không thể xử lý được trong quá trình thu gom rác khi tham chiếu đến một đối tượng tạm thời bằng cách ngắt vòng lặp tham chiếu bằngweakref.gh-127750: Xóa bộ nhớ đệm
functools.singledispatchmethod()bị hỏng được giới thiệu trong gh-85160. Đạt được hiệu suất tương tự bằng cách sử dụng tối ưu hóa khác nhau.gh-129948: Thêm hỗ trợ cho
setđược chia sẻ vớimultiprocessing.managers.SyncManagerquaSyncManager.set().gh-129965: Cập nhật các loại MIME cho
.avivà.wav. Thêm các loại MIME cho.docx,.pptx,.xlsx,.epub,.flac,.m4a,.odg,.odp,.ods,.odt,.oga,.ogg,.ogxvà.weba. Bản vá của Hugo van Kemenade.gh-129889: Hỗ trợ giao thức quản lý bối cảnh của
contextvars.Token. Bản vá của Andrew Svetlov.gh-97850: Cập nhật cảnh báo không dùng nữa của
importlib.abc.Loader.load_module().gh-129678:
configparser.ConfigParser: không viết phần trống không têngh-128641: Khôi phục hiệu suất
configparser.ConfigParser.read().gh-129569: Sửa
unicodedata.normalize()để luôn trả về đối tượngstrtích hợp khi được cung cấp đầu vào của lớp constr, bất kể chuỗi đã được chuẩn hóa hay chưa.gh-128231: Việc thực thi nhiều câu lệnh trong REPL mới hiện dừng ngay lập tức khi gặp phải ngoại lệ đầu tiên. Bản vá của Bartosz Sławecki.
gh-96092: Sửa lỗi trong
traceback.walk_stack()có tên là Không có lỗi bỏ qua nhiều khung hình hơn so với các phiên bản trước. Bản sửa lỗi này cũng thay đổi walk_stack để di chuyển ngăn xếp trong khung nơi nó được gọi thay vì nơi nó được sử dụng lần đầu tiên.gh-129288: Thêm các trường
l2_cidvàl2_bdaddr_typetùy chọn vào bộ dữ liệusocketBTPROTO_L2CAPsockaddr.gh-128703: Sửa
mimetypes.guess_type()để sử dụng ánh xạ mặc định choContent-Typetrống trong sổ đăng ký.gh-128647: Háo hức ghi vào bộ đệm được chuyển tới triển khai
readinto()vàreadinto1()củagzip.GzipFile, tránh việc phân bổ không cần thiết. Bản vá của Chris Markiewicz.gh-128184: Cải thiện hiển thị đối tượng
annotationlib.ForwardReftrong các biểu diễninspect.Signature. Điều này cũng khắc phục lỗiNameErrorphát sinh khi sử dụngdataclasses.dataclass()trên các lớp có tham chiếu chuyển tiếp không thể giải quyết được.gh-128041: Thêm
concurrent.futures.ProcessPoolExecutor.terminate_workers()vàconcurrent.futures.ProcessPoolExecutor.kill_workers()làm cách để chấm dứt hoặc loại bỏ tất cả các quy trình công nhân đang hoạt động trong nhóm nhất định. (Được đóng góp bởi Charles Machalow trong gh-130849.)gh-127647: Thêm giao thức
io.Readervàio.Writerthay thế chotyping.IO,typing.TextIOvàtyping.BinaryIO.gh-109798: Đã thêm thông tin bổ sung vào các thông báo lỗi trong
datetimevà làm cho các thông báo nhất quán hơn giữa quá trình triển khai C và Python. Bản vá của Semyon Moroz.gh-125746: Trì hoãn thời gian loại bỏ
zipimport.zipimporter.load_module()không được dùng nữa đến 3.15. Thay vào đó hãy sử dụngzipimport.zipimporter.exec_module().gh-74028: Thêm tham số
buffersizetùy chọn vàoconcurrent.futures.Executor.map()để giới hạn số lượng tác vụ đã gửi mà chưa mang lại kết quả. Nếu bộ đệm đầy, quá trình lặp qua iterables sẽ tạm dừng cho đến khi có kết quả từ bộ đệm.gh-124927: Các ký tự không in được hiện đã được xử lý đúng cách trong REPL mới.
gh-124096: Bật chế độ thiết bị đầu cuối ảo và bật tính năng dán trong ngoặc trong REPL trên bảng điều khiển Windows. (Nếu thiết bị đầu cuối không hỗ trợ dán trong ngoặc thì việc bật nó không có tác dụng gì.)
gh-89083: Thêm
uuid.uuid7()để tạo đối tượng UUIDv7 như được chỉ định trong RFC 9562. Bản vá của Bénédikt Trần.gh-89083: Thêm
uuid.uuid6()để tạo đối tượng UUIDv6 như được chỉ định trong RFC 9562. Bản vá của Bénédikt Trần.gh-117151: Tăng
io.DEFAULT_BUFFER_SIZEtừ 8k lên 128k và điều chỉnhopen()trên các nền tảng trong đóos.fstat()cung cấp trườngst_blksize(chẳng hạn như Linux) để sử dụngmax(min(blocksize, 8 MiB), io.DEFAULT_BUFFER_SIZE)thay vì luôn sử dụng kích thước khối thiết bị. Điều này sẽ cải thiện hiệu suất I/O. Bản vá của Romain Morotti.gh-105499: Đặt
types.UnionTypelàm bí danh chotyping.Union. Cảint | strvàUnion[int, str]hiện đều tạo các phiên bản cùng loại. Bản vá của Jelle Zijlstra.gh-93096: Ghi lại dòng lệnh cho
mimetypes. Bây giờ nó thoát với1do lỗi thay vì0và2trên các tham số dòng lệnh không chính xác thay vì1. Ngoài ra, các lỗi được in ra stderr thay vì stdout và văn bản của chúng được làm chặt chẽ hơn. Bản vá của Oleg Iarygin và Hugo van Kemenade.
Tài liệu¶
gh-125722: Yêu cầu Sphinx 8.2.0 trở lên để xây dựng tài liệu Python. Bản vá của Adam Turner.
gh-129712: Các thẻ bánh xe được hỗ trợ bởi mỗi tùy chọn SDK phổ biến của macOS hiện đã được ghi lại.
gh-46236: C API: Tài liệu
PyUnicode_RSplit(),PyUnicode_Partition()vàPyUnicode_RPartition().
Cốt lõi và nội dung¶
gh-131141: Khắc phục tình trạng xung đột dữ liệu trong công cụ
sys.monitoringkhi đăng ký lệnh gọi lại.gh-130804: Sửa lỗi hỗ trợ ký tự unicode trên Windows trong REPL mới.
gh-130932: Sửa lỗi xử lý ngoại lệ không chính xác trong
_PyModule_IsPossiblyShadowinggh-122029:
sys.setprofile()vàsys.settrace()sẽ không tạo ra sự kiệnc_callchoINSTRUMENTED_CALL_FUNCTION_EXnếu phương thức có thể gọi được là một phương thức có hàm C được bao bọc, vì chúng tôi không tạo ra sự kiệnc_returntrong trường hợp đó.gh-129964: Khắc phục sự cố JIT trên Windows trên Arm. Bản vá của Diego Russo và Brandt Bucher.
gh-130851: Khắc phục sự cố trong bản dựng free threading khi xây dựng đối tượng
codevớico_constschứa các phiên bản của các loại không được trình biên dịch mã byte tạo ra.gh-128534: Đảm bảo rằng cả nhánh trái và nhánh phải đều có cùng nguồn cho vòng lặp
async for. Thêm các nhánh này vào trình vòng lặpco_branches().gh-130794: Khắc phục sự cố rò rỉ bộ nhớ trong bản dựng free threaded khi thay đổi kích thước danh sách hoặc từ điển được chia sẻ từ nhiều chuỗi tồn tại trong thời gian ngắn.
gh-130415: Cải thiện sự hiểu biết của JIT về số nguyên trong ngữ cảnh boolean.
gh-130382: Sửa lỗi
PyRefTracer_DESTROYkhông được gửi từPython/ceval.cPy_DECREF().gh-124878: Khắc phục các điều kiện tương tranh trong quá trình hoàn tất thời gian chạy có thể dẫn đến việc truy cập vào bộ nhớ đã giải phóng.
gh-130415: Cải thiện khả năng thu hẹp các giá trị boolean của JIT thử nghiệm dựa trên kết quả kiểm tra tính trung thực.
gh-130618: Sửa lỗi khiến
UnicodeDecodeErrorhoặcSystemErrortăng lên khi sử dụng chuỗi f có biểu thứclambdacó ký tự không phải ASCII. Bản vá của Pablo Galindogh-123044: Đảm bảo rằng vị trí của mục tiêu nhánh trong trường hợp
matchnằm trong phần thân chứ không phải trong mẫu.gh-128534: Thêm giám sát nhánh (sự kiện
BRANCH_LEFTvàBRANCH_RIGHT) cho các vòng lặpasync for.gh-130163: Khắc phục các sự cố có thể xảy ra liên quan đến thay đổi đồng thời và sử dụng các thuộc tính mô-đun
sys.gh-122029:
INSTRUMENTED_CALL_KWsẽ mở rộng phương pháp trước khi giám sát để phản ánh hành vi thực tế chính xác hơn.gh-130415: Cải thiện khả năng tối ưu hóa chuỗi của JIT trong bối cảnh boolean.
gh-130396: Sử dụng giới hạn ngăn xếp thực tế (từ pthread_getattr_np(3)) cho linux và các hệ thống khác có
_GNU_SOURCEđược xác định khi xác định giới hạn cho bảo vệ ngăn xếp C.gh-128396: Khắc phục sự cố xảy ra khi gọi
locals()bên trong khả năng hiểu nội tuyến sử dụng cùng một biến cục bộ với phạm vi khung bên ngoài trong đó biến là biến tự do hoặc biến ô.gh-129107: Sửa thêm 2 hàm
bytearraycho free threading.gh-127705: Sử dụng các tham chiếu được gắn thẻ (
_PyStackRef) cho bản dựng mặc định cũng như bản dựng luồng tự do. Điều này có tác động tiêu cực nhỏ đến hiệu suất trong thời gian ngắn nhưng sẽ cho phép tăng tốc lớn hơn trong tương lai và giảm đáng kể chi phí bảo trì bằng cách cho phép triển khai một lần các tham chiếu được gắn thẻ trong tương lai.gh-130094: Khắc phục hai điều kiện chạy đua liên quan đến quá trình nhập đồng thời có thể dẫn đến lỗi giả với
ModuleNotFoundError.gh-129107: Làm cho trình vòng lặp
bytearrayan toàn trong free threading.gh-115802: Sử dụng mô hình mã "trung bình" hiệu quả hơn cho mã do JIT biên dịch trên các nền tảng được hỗ trợ.
gh-107956: Tệp
build-details.jsonhiện được cài đặt trong thư mục thư viện tiêu chuẩn độc lập với nền tảng (triển khai PEP 739).gh-116042: Sửa vị trí cho Lỗi Cú pháp của các lần thoát không hợp lệ trong bộ mã thông báo. Bản vá của Pablo Galindo
gh-91079: Thay đổi tính năng chống tràn ngăn xếp C để xem xét lượng ngăn xếp được tiêu thụ, thay vì bộ đếm. Điều này cho phép đệ quy sâu hơn trong nhiều trường hợp nhưng vẫn an toàn.
gh-129715: Cải thiện khả năng xử lý trả lời của JIT thử nghiệm cho những người gọi không xác định.
Thư viện¶
gh-129983: Khắc phục tình trạng chạy đua dữ liệu trong biên dịch_template trong
sre.c.
Cốt lõi và nội dung¶
gh-129967: Khắc phục tình trạng chạy đua trong bản dựng free threading khi
repr(set)được gọi đồng thời vớiset.clear().gh-129953: Ngăn xếp (đánh giá) nội bộ hiện đã bị tràn vào bộ nhớ bất cứ khi nào quá trình thực thi thoát khỏi trình thông dịch hoặc mã được biên dịch JIT. Điều này sẽ không có tác dụng có thể quan sát được trong Python hoặc các tiện ích mở rộng dựng sẵn, nhưng sẽ cho phép thực hiện nhiều tối ưu hóa quan trọng khác nhau trong tương lai.
gh-129515: Làm rõ các thông báo lỗi cú pháp cho các biểu thức điều kiện khi một câu lệnh được chỉ định trước
ifhoặc sau từ khóaelse.gh-129349:
bytes.fromhex()vàbytearray.fromhex()hiện chấp nhận ASCIIbytesvà bytes-like objects.gh-129149: Thêm đường dẫn nhanh cho số nguyên cỡ trung bình trong
PyLong_FromSsize_t(). Bản vá của Chris Eibl.gh-129107: Đặt
bytearrayan toàn trong free threading.gh-128974: Khắc phục sự cố trong
UnicodeError.__str__khi thuộc tính tùy chỉnh triển khai__str__()kèm theo các tác dụng phụ. Bản vá của Bénédikt Trần.gh-126085:
typing.TypeAliasTypehiện hỗ trợ giải nén sao.gh-125331:
from __future__ import barry_as_FLUFLhiện hoạt động trong nhiều ngữ cảnh hơn, bao gồm cả khi nó được sử dụng trong các tệp, với cờ-cvà trong REPL khi có nhiều câu lệnh trên cùng một dòng. Trước đây, nó chỉ hoạt động trên các dòng tiếp theo trong REPL và khi các cờ thích hợp được chuyển trực tiếp tớicompile(). Bản vá của Pablo Galindo.gh-121464: Thực hiện các lần lặp đồng thời trên cùng một trình vòng lặp
enumerate()một cách an toàn trong luồng tự do. Xem Strategy for Iterators in Free Threading.gh-87790: Hỗ trợ dấu gạch dưới và dấu phẩy dưới dạng dấu phân cách hàng nghìn trong phần phân số cho các kiểu trình bày dấu phẩy động của định dạng chuỗi kiểu mới (với
format()hoặc dây f). Bản vá của Sergey B Kirpicchev.gh-124445: Khắc phục sự chuyên môn hóa của các bí danh chung chung trên
typing.ParamSpecvà đã được chuyên biệt hóa bằng một biến kiểu lồng nhau.gh-120608: Điều chỉnh
reversed()để sử dụng trong bản dựng luồng tự do. Zz002zz vẫn không an toàn theo luồng theo nghĩa là các lần lặp đồng thời có thể nhìn thấy cùng một đối tượng, nhưng chúng sẽ không làm hỏng trạng thái trình thông dịch.
Thư viện¶
gh-100388: Sửa phương thức
platform._sys_version()khi__DATE__không được xác định tại thời điểm xây dựng bằng cách thay đổi chuỗi ngày giờ xây dựng mặc định thành kỷ nguyên UNIX.
Cốt lõi và nội dung¶
bpo-44369: Cải thiện lỗi cú pháp cho các chuỗi đóng không chính xác. Bản vá của Pablo Galindo
C API¶
gh-111178: Sửa
PyCMethodAPI: thay thếsize_t nargsbằngPy_ssize_t nargstrongPyCMethod. Bản vá của Victor Stinner.gh-130947: Thêm lại
PySequence_Fast()vào C API giới hạn. Bản vá của Victor Stinner.gh-128863: Các hàm riêng tư sau đây không được dùng nữa và được lên kế hoạch xóa trong Python 3.18:
_PyUnicodeWriter_Init(): thay thế_PyUnicodeWriter_Init(&writer)bằngwriter = PyUnicodeWriter_Create(0)._PyUnicodeWriter_Finish(): thay thế_PyUnicodeWriter_Finish(&writer)bằngPyUnicodeWriter_Finish(writer)._PyUnicodeWriter_Dealloc(): thay thế_PyUnicodeWriter_Dealloc(&writer)bằngPyUnicodeWriter_Discard(writer)._PyUnicodeWriter_WriteChar(): thay thế_PyUnicodeWriter_WriteChar(&writer, ch)bằngPyUnicodeWriter_WriteChar(writer, ch)._PyUnicodeWriter_WriteStr(): thay thế_PyUnicodeWriter_WriteStr(&writer, str)bằngPyUnicodeWriter_WriteStr(writer, str)._PyUnicodeWriter_WriteSubstring(): thay thế_PyUnicodeWriter_WriteSubstring(&writer, str, start, end)bằngPyUnicodeWriter_WriteSubstring(writer, str, start, end)._PyUnicodeWriter_WriteASCIIString(): thay thế_PyUnicodeWriter_WriteASCIIString(&writer, str)bằngPyUnicodeWriter_WriteUTF8(writer, str)._PyUnicodeWriter_WriteLatin1String(): thay thế_PyUnicodeWriter_WriteLatin1String(&writer, str)bằngPyUnicodeWriter_WriteUTF8(writer, str)._PyUnicodeWriter_Prepare(): (không thay thế)._PyUnicodeWriter_PrepareKind(): (không thay thế).
pythoncapi-compat project có thể được sử dụng để nhận các hàm công khai mới này trên Python 3.13 trở lên.
Bản vá của Victor Stinner.
gh-45325: Thêm tham số định dạng
pmới vàoPy_BuildValue()cho phép lấy số nguyên C và tạo ra đối tượng Pythonbool. Bản vá của Pablo Galindo.
xây dựng¶
gh-131035: Sử dụng
-flto=thinđể có thời gian xây dựng nhanh hơn bằng clang-cl trên Windows. Bản vá của Chris Eibl.gh-130740: Đảm bảo rằng
Python.hđược đưa vào trướcstdbool.htrừ khipyconfig.hđược đưa vào trước hoặc trong một số ngữ cảnh dành riêng cho nền tảng.gh-130090: Xây dựng bằng
PlatformToolset=ClangCLtrên Windows hiện hỗ trợ PGO (tối ưu hóa theo hướng dẫn hồ sơ). Bản vá của Chris Eibl với sự hỗ trợ vô giá từ Steve Dover.gh-129819: Cho phép xây dựng JIT bằng trình thông dịch tailcall.
gh-129989: Sửa lỗi bật trình thông dịch tailcall khi
--without-tail-call-interpđược cung cấp cho tập lệnh cấu hình.gh-129838: Không xác định lại
_Py_NO_SANITIZE_UNDEFINEDkhi biên dịch với phiên bản GCC gần đây và đã bật trình khử trùng không xác định.gh-82909: liên kết dựa trên
#pragmavớipython3*.libhiện có thể được tắt bằng Py_NO_LINK_LIB. Bản vá của Jean-Christophe Fillion-Robin.
Python 3.14.0 alpha 5¶
Release date: 2025-02-11
macOS¶
gh-91132: Cập nhật trình cài đặt macOS để sử dụng ncurses 6.5.
Công cụ/Bản trình diễn¶
Kiểm tra¶
gh-129386: Thêm
test.support.reset_code, có thể được sử dụng để đặt lại các tối ưu hóa cấp mã byte khác nhau và công cụ đo lường cục bộ cho một hàm.gh-128474: Vô hiệu hóa các trường hợp kiểm tra
test_embedphân tách lỗi trên các tệp nhị phân của công cụ BOLT. Các thử nghiệm chỉ bị tắt khi BOLT được bật.gh-128003: Thêm tùy chọn
--parallel-threads=Nvào trình chạy thử nghiệm hồi quy chạy song song các thử nghiệm riêng lẻ trong nhiều luồng để tìm lỗi đồng thời. Lưu ý rằng hầu hết bộ thử nghiệm vẫn chưa được xem xét về độ an toàn của luồng hoặc được chú thích bằng@thread_unsafekhi cần thiết.
Bảo mật¶
gh-105704: Khi sử dụng phân tích cú pháp máy chủ
urllib.parse.urlsplit()vàurllib.parse.urlparse()sẽ không từ chối các tên miền chứa dấu ngoặc vuông ([và]). Dấu ngoặc vuông chỉ hợp lệ cho các máy chủ IPv6 và IPvFuture theo RFC 3986 Section 3.2.2.gh-126108: Sửa lỗi vô hiệu hóa con trỏ
NULLcó thể có trongPySys_AddWarnOptionUnicode().gh-80222: Sửa lỗi gấp các chuỗi được trích dẫn khi làm phẳng thư email bằng chính sách email hiện đại. Trước đây, khi một chuỗi trích dẫn được gấp lại để nó kéo dài hơn một dòng, các dấu ngoặc kép xung quanh và các ký tự thoát bên trong sẽ bị bỏ qua. Về mặt lý thuyết, điều này có thể được sử dụng để giả mạo các dòng tiêu đề bằng cách sử dụng chuỗi trích dẫn được xây dựng cẩn thận nếu email được hiển thị kết quả được truyền đi hoặc phân tích cú pháp lại.
gh-119511: Khắc phục khả năng từ chối dịch vụ trong mô-đun
imaplib. Khi kết nối với máy chủ độc hại, nó có thể khiến một lượng bộ nhớ tùy ý được phân bổ. Trên nhiều hệ thống, điều này vô hại vì bộ nhớ ảo không được sử dụng chỉ là ánh xạ, nhưng nếu điều này đạt đến giới hạn kích thước địa chỉ ảo thì có thể dẫn đến lỗiMemoryErrorhoặc sự cố quy trình khác. Trên các hệ thống hoặc bản dựng bất thường trong đó tất cả bộ nhớ được phân bổ đều được chạm và hỗ trợ bởi ram hoặc bộ lưu trữ thực tế, nó có thể tiêu tốn tài nguyên khi làm như vậy cho đến khi gặp sự cố tương tự.
Thư viện¶
gh-129939: Các trang so sánh có các thay đổi được đánh dấu do lớp
difflib.HtmlDifftạo ra hiện hỗ trợ chế độ tối.gh-129928: Tăng
sqlite3.ProgrammingErrornếu hàm SQL do người dùng xác định có số lượng tham số không hợp lệ được tạo. Bản vá của Erlend Aasland.gh-129583: Cập nhật gói pip lên 25.0.1
gh-129766: Khắc phục sự cố trong
warnings, khi gọi_release_lock()mà không có khóa hiện có.gh-129005:
_pyio.FileIO.readall()hiện phân bổ, thay đổi kích thước và điền vào bộ đệm dữ liệu bằng cùng một thuật toán mà_io.FileIO.readall()sử dụng.gh-129646: Cập nhật ánh xạ bí danh miền địa phương trong mô-đun
localeđể khớp với ánh xạ bí danh miền địa phương X Org mới nhất và hỗ trợ các miền địa phương mới trong Glibc 2.41.gh-128317: Đặt đánh dấu lịch CLI trong lớp riêng tư, xóa
highlight_daykhỏicalendar.TextCalendarAPI công khai. Bản vá của Hugo van Kemenade.gh-129603: Sửa lỗi trong đó các đối tượng
sqlite3.Rowcó thể bị lỗi nếudescriptionkế thừa của chúng được đặt thànhNone. Bản vá của Erlend Aasland.gh-129559: Thêm phương thức
bytearray.resize()đểbytearraycó thể thay đổi kích thước tại chỗ một cách hiệu quả.gh-129502: Các lỗi khó xảy ra khi chuẩn bị đối số cho lệnh gọi lại
ctypeshiện được xử lý theo cách tương tự như các lỗi phát sinh trong lệnh gọi lại khi chuyển đổi kết quả của lệnh gọi lại -- sử dụngsys.unraisablehook()thay vìsys.excepthook()và không đặtsys.last_exccũng như các biến khác.gh-129403: Đã sửa thông báo
ValueErrorchoasyncio.Barriervàthreading.Barrier.gh-129409: Khắc phục lỗi tràn số nguyên trong mô-đun
csvkhi ghi trường dữ liệu lớn hơn 2GB.gh-126400: Thêm đối số từ khóa timeout vào
logging.handlers.SysLogHandler.gh-118761: Luôn lười nhập
warningsvàothreading. Bản vá của Taneli Hukkinen.gh-118761: Cải thiện thời gian nhập
subprocessbằng cách lười biếng nhậplocalevàsignal. Bản vá của Taneli Hukkinen.gh-129346: Trong
sqlite3, xử lý tình trạng hết bộ nhớ khi tạo các hàm SQL do người dùng xác định.gh-129005: Tối ưu hóa
_pyio.FileIO.readintobằng cách tránh các đối tượng và bản sao không cần thiết bằngos.readinto().gh-129195: Hỗ trợ báo cáo thông tin biểu đồ cuộc gọi từ
asyncio.staggered.staggered_race().gh-129205: Thêm
os.readinto()để đọc thành buffer object từ bộ mô tả tệp.gh-128772: Sửa
pydoccho các phương thức có thuộc tính__module__bằngNone.gh-129061: Sửa lỗi FORCE_COLOR và NO_COLOR khi chuỗi trống. Bản vá của Hugo van Kemenade.
gh-92897: Đã lên lịch ngừng sử dụng đối số
check_homecủasysconfig.is_python_build()đối với Python 3.15.gh-129064: Không dùng
sysconfig.expand_makefile_vars()nữa mà sử dụngsysconfig.get_paths()với đối sốvars.gh-128550: Đã xóa tối ưu hóa không chính xác liên quan đến các nhiệm vụ háo hức trong
asyncio.TaskGroupdẫn đến việc hủy bỏ bị bỏ lỡ.gh-128991: Giải phóng tham chiếu khung nhập trong lệnh gọi lại
bdbgh-118761: Giảm tới 20% thời gian nhập
pstatsvàzipfilebằng cách loại bỏ các thao tác nhập không cần thiết vàotyping. Bản vá của Bénédikt Trần.gh-128978: Sửa lỗi
NameErrortrongsysconfig.expand_makefile_vars(). Bản vá của Bénédikt Trần.gh-128961: Khắc phục sự cố khi cài đặt trạng thái trên trình vòng lặp
array.arrayđã hết.gh-128894: Sửa lỗi
traceback.TracebackException._format_syntax_errorkhông gặp lỗi ngoại lệ với siêu dữ liệu tùy chỉnh.gh-128916: Không cố gắng đặt
SO_REUSEPORTtrên ổ cắm của các họ địa chỉ khác vớiAF_INETvàAF_INET6, vì điều đó là vô nghĩa với các họ địa chỉ này và cuộc gọi không thành công với nhân Linux 6.12.9 trở lên.gh-118761: Cải thiện thời gian nhập
tomllibbằng cách loại bỏ nhậptyping,stringvàtomllib._types. Bản vá của Taneli Hukkinen.gh-128679:
tracemalloc: Khắc phục các điều kiện tương tranh khitracemalloc.stop()được một luồng gọi, trong khi các luồng khác đang theo dõi phân bổ bộ nhớ. Bản vá của Victor Stinner.gh-128891: Thêm opcode chuyên dụng cho
opcode.opname.gh-118761: Giảm thời gian nhập
gettexttới 10 lần bằng cách nhậpretheo yêu cầu. Đặc biệt,rekhông còn bị lộ ngầm làgettext.renữa. Bản vá của Eli Schwartz.gh-118761: Giảm thời gian nhập của
optparsekhi không có văn bản trợ giúp nào được in. Bản vá của Eli Schwartz.gh-128657: Sửa lỗi tham chiếu bổ sung có thể có khi sử dụng các đối tượng được trả về bởi
hashlib.sha256()trong free threading.gh-118761: Giảm thời gian nhập
csvtới năm lần bằng cách nhậpretheo yêu cầu. Đặc biệt,rekhông còn bị lộ ngầm nhưcsv.renữa. Bản vá của Bénédikt Trần.gh-128308: Hỗ trợ đối số từ khóa name cho các nhiệm vụ háo hức trong
asyncio.loop.create_task(),asyncio.create_task()vàasyncio.TaskGroup.create_task(), bằng cách chuyển tất cả kwargs đến nhà máy nhiệm vụ doasyncio.loop.set_task_factory()đặt ra.gh-118761: Cải thiện hiệu suất của
base64.b16decode()lên tới mười lần bằng cách kiểm tra chuỗi byte để tìm các chữ số thập lục phân hiệu quả hơn. Giảm thời gian nhậpbase64tới sáu lần bằng cách không nhậprenữa. Bản vá của Bénédikt Tran, Chris Markiewicz và Adam Turner.gh-128156: Khi sử dụng hệ thống macOS
libffi, việc hỗ trợ các loại phức tạp trongctypeshiện được kiểm tra khi chạy (macOS 10.15 hoặc mới hơn). Các loại này cũng phải có sẵn tại thời điểm xây dựng.gh-128636: Khắc phục lỗi PyREPL khi
os.environbị ghi đè bằng giá trị không hợp lệ.gh-128498: Mặc định là stdout isatty để phát hiện màu thay vì stderr. Bản vá của Hugo van Kemenade.
gh-128384: Thêm khóa vào
warningsđể tránh một số cuộc đua dữ liệu khi sử dụng luồng tự do. Thay đổi_warnings_runtime_state.mutexthành một mutex đệ quy và hiển thị nó thànhwarnings, thông qua các hàm_acquire_lock()và_release_lock(). Khóa được giữ khifiltersvà_filters_versionđược cập nhật.gh-128509: Thêm
sys._is_immortal()để xác định các đối tượng immortal khi chạy.gh-128479: Khắc phục các tác vụ rò rỉ
asyncio.staggered.staggered_race()và đưa ra một ngoại lệ chưa được xử lý.gh-128427:
uuid.NILvàuuid.MAXhiện có sẵn để thể hiện các định dạng Nil và Max UUID như được xác định bởi RFC 9562.gh-91279:
zipfile.ZipFile.writestr()hiện tôn trọngSOURCE_DATE_EPOCHmà các bản phân phối có thể thiết lập tập trung và yêu cầu các công cụ xây dựng sử dụng điều này để tạo ra đầu ra có thể lặp lại.gh-112064: Sửa lỗi xử lý sai kích thước đọc âm trong
HTTPResponse.read. Bản vá của Yury Manushkin.gh-128131: Hỗ trợ hoàn toàn quyền truy cập ngẫu nhiên vào các tệp zip chỉ đọc không được mã hóa, không nén mà
ZipFile.openthu được.gh-127975: Tránh sử dụng lại các loại trích dẫn trong
ast.unparse()nếu không cần thiết.gh-115514: Khắc phục các ngoại lệ và ghi không đầy đủ sau khi
asyncio._SelectorTransportbị đóng trước khi quá trình ghi hoàn tất.gh-121604: Thêm cảnh báo Khấu hao bị thiếu cho
importlib.machinery.DEBUG_BYTECODE_SUFFIXES,importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXES,importlib.machinery.WindowsRegistryFinder,importlib.abc.ResourceLoader,importlib.abc.SourceLoader.path_mtime().gh-127873: Khi
-Eđược đặt, chỉ bỏ quaPYTHON_COLORSvà không bỏ quaFORCE_COLOR/NO_COLOR/TERMkhi tô màu đầu ra. Bản vá của Hugo van Kemenade.gh-125413: Thêm thuộc tính
pathlib.Path.info, lưu trữ một đối tượng triển khai giao thứcpathlib.types.PathInfo(cũng mới). Đối tượng hỗ trợ truy vấn loại tệp và lưu trữ nội bộ các kết quảstat(). Các đối tượng đường dẫn doiterdir()tạo ra được khởi tạo với thông tin loại tệp được thu thập từ quá trình quét thư mục mẹ.gh-127712: Khắc phục việc xử lý đối số
securecủalogging.handlers.SMTPHandler.gh-127096: Không tạo lại phần chưa đặt tên trong mỗi lần đọc trong
configparser.ConfigParser. Bản vá của Andrey Efremov.gh-124369: Không dùng nữa
pdb.Pdb.curframe_localsgh-126332: Khắc phục sự cố _pyrepl khi nhập CTRL-Z kép trên dòng tràn.
gh-125553: Sửa lỗi bất biến khứ hồi để tiếp tục dấu gạch chéo ngược trong
tokenize.untokenize().gh-91048: Thêm chức năng
asyncio.capture_call_graph()vàasyncio.print_call_graph().gh-124703: Việc thoát
pdbở chế độinlinesẽ đưa ra lời nhắc xác nhận và thoát ngay bây giờ, thay vì in dấu vết ngoại lệ.gh-123987: Đã khắc phục sự cố trong NamespaceReader trong đó một mục không phải đường dẫn trong đường dẫn không gian tên, chẳng hạn như một mục tiêu được thêm bởi trình cài đặt có thể chỉnh sửa, sẽ làm hỏng quá trình tải tài nguyên.
gh-119349: Thêm chức năng
ctypes.util.dllist()để liệt kê các thư viện dùng chung đã tải cho quy trình hiện tại.gh-55454: Thêm hỗ trợ IMAP4
IDLEvào mô-đunimaplib. Bản vá của Forest.gh-119257: Hiển thị menu hoàn thành tab bên dưới dòng hiện tại, điều này dẫn đến hoạt động ít giật hơn và sửa lỗi di chuyển con trỏ. Bản vá của Daniel Hollas
gh-101410: Hỗ trợ các thông báo tùy chỉnh về lỗi miền trong mô-đun
math(math.sqrt(),math.log()vàmath.atanh()đã được sửa đổi làm ví dụ). Bản vá của Charlie Zhao và Sergey B Kirpicchev.gh-81340: Sử dụng
os.copy_file_range()trong các hàmshutil.copy(),shutil.copy2()vàshutil.copyfile()theo mặc định. Lệnh gọi hệ thống Linux cơ bản mang lại cho hệ thống tệp cơ hội triển khai việc sử dụng tính năng sao chép khi ghi (trong trường hợp btrfs và XFS) hoặc bản sao phía máy chủ (trong trường hợp NFS.) Bản vá của Illia Volochii.bpo-27307: Thêm hỗ trợ truy cập thuộc tính và mục cho
string.Formatterở chế độ đánh số tự động, cho phép các chuỗi định dạng như '{.name}' và '{[1]}'.
IDLE¶
gh-129873: Đơn giản hóa việc hiển thị tài liệu IDLE bằng cách chỉ sao chép phần văn bản của id.html sang idlib/help.html. Bản vá của Stan Ulbrych.
Tài liệu¶
gh-125722: Yêu cầu Sphinx 8.1.3 trở lên để xây dựng tài liệu Python. Bản vá của Adam Turner.
gh-67206: Tài liệu cho thấy
string.printablekhông thể in được theo nghĩa POSIX. Cụ thể,string.printable.isprintable()trả vềFalse. Bản vá của Bénédikt Trần.
Cốt lõi và nội dung¶
gh-100239: Thay thế opcode BINARY_SUBSCR và họ của nó bằng BINARY_OP bằng oparg NB_SUBSCR.
gh-129732: Đã sửa lỗi một cuộc đua trong
_Py_qsbr_reservetrong bản dựng luồng miễn phí.gh-129763: Xóa macro
LLTRACEbên trong (thay vào đó hãy sử dụngPy_DEBUG).gh-129715: Cải thiện hiệu suất JIT cho máy phát điện.
gh-129643: Khắc phục sự cố an toàn luồng của
PyList_Insert()trong các bản dựng luồng tự do.gh-129668: Khắc phục tình trạng chạy đua khi tăng
MemoryErrortrong bản dựng luồng miễn phí.gh-129643: Khắc phục sự cố an toàn luồng của
PyList_SetItem()trong các bản dựng luồng tự do. Bản vá của Kumar Aditya.gh-128563: Khắc phục sự cố trong đó tính năng gỡ lỗi "lltrace" có thể được bật không chính xác cho một số khung.
gh-129393: Trên FreeBSD,
sys.platformkhông còn chứa phiên bản chính nữa. Nó luôn là'freebsd', thay vì'freebsd13'hoặc'freebsd14'.
Thư viện¶
gh-129345: Sửa lỗi vô hiệu hóa con trỏ null trong
syslog.openlog()khi móc kiểm tra đưa ra một ngoại lệ.
Cốt lõi và nội dung¶
gh-129231: Cải thiện bố cục bộ nhớ của dấu vết JIT. Bản vá của Diego Russo
gh-129149: Thêm đường dẫn nhanh cho số nguyên cỡ trung bình trong
PyLong_FromUnsignedLong(),PyLong_FromUnsignedLongLong()vàPyLong_FromSize_t().gh-129201: Phiên bản có luồng miễn phí của trình thu thập rác tuần hoàn đã được tối ưu hóa để sử dụng có điều kiện các hướng dẫn tìm nạp trước CPU trong quá trình thu thập. Điều này có thể giảm thời gian thu thập bằng cách làm cho dữ liệu có nhiều khả năng nằm trong bộ nhớ đệm CPU khi cần thiết. Hướng dẫn tìm nạp trước được bật nếu số lượng đối tượng tồn tại lâu dài (đối tượng tồn tại trong toàn bộ bộ sưu tập) vượt quá ngưỡng.
gh-129093: Sửa các chuỗi f như
f'{expr=}'đôi khi không hiển thị biểu thức đầy đủ khi biểu thức chứa!=.gh-124363: Xử lý các biểu thức gỡ lỗi trong chuỗi f dưới dạng chuỗi thô. Bản vá của Pablo Galindo
gh-128714: Khắc phục các cuộc đua tiềm ẩn trong các phương thức get/set dunder
__annotations__,__annotate__và__type_params__cho đối tượng hàm và thêm các bài kiểm tra liên quan.gh-128799: Thêm khung của
except*vào traceback khi nó bao bọc một ngoại lệ trần trụi.gh-128842: Thu thập số liệu thống kê bộ nhớ JIT bằng pystats. Bản vá của Diego Russo.
gh-100239: Chuyên
BINARY_OPcho các phép toán logic bit trên số nguyên nhỏ gọn.gh-128910: Các hàm C-API riêng tư không có giấy tờ và không được sử dụng
_PyTrash_beginvà_PyTrash_endsẽ bị xóa.gh-128807: Thêm giai đoạn đánh dấu vào GC có luồng tự do. Điều này tương tự như những gì đã được thực hiện trong gh-126491. Vì GC luồng tự do không có thế hệ và không tăng dần nên giai đoạn đánh dấu sẽ tìm kiếm tất cả các đối tượng có thể truy cập được từ các gốc đã biết. Nguồn gốc là những đối tượng được coi là không phải rác, giống như từ điển mô-đun cho
sys. Đối với hầu hết các chương trình, giai đoạn đánh dấu này sẽ làm cho GC nhanh hơn một chút vì thường thực hiện ít công việc hơn cho mỗi đối tượng.gh-100239: Thêm opcode
BINARY_OP_EXTENDthực thi một cặp chức năng (chức năng bảo vệ và chuyên môn hóa) được truy cập từ bộ nhớ đệm nội tuyến.gh-128563: Một loại trình thông dịch mới đã được thêm vào CPython. Trình thông dịch này sử dụng các lệnh gọi đuôi cho trình xử lý lệnh của nó. Kết quả điểm chuẩn sơ bộ cho thấy trung bình hình học nhanh hơn 7-11% đối với hiệu suất hoạt động (tùy thuộc vào nền tảng) và nhanh hơn tới 30% đối với khối lượng công việc sử dụng nhiều Python. Trình thông dịch này hiện chỉ hoạt động trên các trình biên dịch mới hơn, chẳng hạn như
clang-19. Các trình biên dịch khác sẽ tiếp tục sử dụng trình thông dịch cũ. Bản vá của Ken Jin, với các ý tưởng về cách triển khai tính năng này trong CPython của Mark Shannon, Garret Gu, Haoran Xu và Josh Haberman.gh-126703: Cải thiện hiệu suất lặp qua danh sách và bộ dữ liệu bằng cách sử dụng danh sách tự do cho các đối tượng trình vòng lặp.
gh-127953: Thời gian xử lý sự kiện
LINEtrong sys.monitoring (và sys.settrace) hiện không phụ thuộc vào số dòng trong đối tượng mã.gh-128330: Khôi phục các ký tự điều khiển đầu cuối khi thoát REPL.
gh-128016: Đã cải thiện thông báo
SyntaxWarningcho các chuỗi thoát không hợp lệ để làm rõ rằng các chuỗi như vậy sẽ tạo raSyntaxErrortrong các bản phát hành Python trong tương lai. Thông báo mới cũng gợi ý cách khắc phục tiềm năng, tức làDid you mean "\\e"?.gh-126004: Khắc phục việc xử lý các giá trị
UnicodeError.startvàUnicodeError.endtrong trình xử lý lỗicodecs.replace_errors(). Bản vá của Bénédikt Trần.gh-126004: Khắc phục việc xử lý các giá trị
UnicodeError.startvàUnicodeError.endtrong trình xử lý lỗicodecs.backslashreplace_errors(). Bản vá của Bénédikt Trần.gh-126004: Khắc phục việc xử lý các giá trị
UnicodeError.startvàUnicodeError.endtrong trình xử lý lỗicodecs.xmlcharrefreplace_errors(). Bản vá của Bénédikt Trần.gh-127349: Đã sửa lỗi khi thay đổi kích thước thiết bị đầu cuối trong Python REPL. Bản vá của Semyon Moroz.
gh-125723: Khắc phục sự cố với
gi_frame.f_localskhi khung trình tạo tồn tại lâu hơn trình tạo của chúng. Bản vá của Mikhail Efimov.
Thư viện¶
gh-126349: Thêm trình quản lý bối cảnh
turtle.fill(),turtle.poly()vàturtle.no_animation(). Bản vá của Marie Roald và Yngve Mardal Moe.
Cốt lõi và nội dung¶
gh-115911: Nếu không thể xác định được thư mục làm việc hiện tại do quyền thì quá trình nhập sẽ không tăng
PermissionErrornữa. Bản vá của Alex Willmer.
Thư viện¶
gh-112713: Đã thêm hỗ trợ cho cờ cookie
Partitionedtronghttp.cookies.
C API¶
gh-129533: Cập nhật
PyGC_Enable(),PyGC_Disable(),PyGC_IsEnabled()để sử dụng thao tác nguyên tử nhằm đảm bảo an toàn cho luồng khi xây dựng luồng tự do. Bản vá của Donghee Na.gh-89188: Triển khai
PyUnicode_KIND()vàPyUnicode_DATA()dưới dạng hàm, ngoài các macro có cùng tên. Các macro dựa trên các trường bit C có bố cục dành riêng cho trình biên dịch. Bản vá của Victor Stinner.gh-91417: Xóa
PySequence_Fast()khỏi C API giới hạn, vì chức năng này phải được sử dụng vớiPySequence_Fast_GET_ITEMvốn không bao giờ hoạt động trong C API giới hạn. Bản vá của Victor Stinner.gh-128509: Thêm
PyUnstable_IsImmortal()để xác định xem một đối tượng có phải là immortal hay không.gh-129033: Xóa chức năng riêng tư của
_PyInterpreterState_GetConfigCopy()và_PyInterpreterState_SetConfig(). Thay vào đó, hãy sử dụngPyConfig_Get()vàPyConfig_Set(), C API công khai được thêm bởi PEP 741 "Cấu hình Python C API". Bản vá của Victor Stinner.gh-129033: Xóa chức năng
_Py_InitializeMain()riêng tư. Đó là provisional API được thêm vào Python 3.8 bởi PEP 587. Bản vá của Victor Stinner.gh-128844: Thêm các API không ổn định
PyUnstable_TryIncRef()vàPyUnstable_EnableTryIncRef(). Đây là những công cụ trợ giúp để xử lý các tham chiếu không có chủ sở hữu theo cách an toàn theo luồng, đặc biệt là trong bản dựng luồng miễn phí.gh-128911: Thêm các hàm trợ giúp
PyImport_ImportModuleAttr()vàPyImport_ImportModuleAttrString()để nhập mô-đun và lấy thuộc tính của mô-đun. Bản vá của Victor Stinner.gh-128863: Các hàm riêng tư sau đây không được dùng nữa và được lên kế hoạch xóa trong Python 3.18:
_PyBytes_Join(): sử dụngPyBytes_Join()._PyDict_GetItemStringWithError(): sử dụngPyDict_GetItemStringRef()._PyDict_Pop(): sử dụngPyDict_Pop()._PyLong_Sign(): sử dụngPyLong_GetSign()._PyLong_FromDigits()và_PyLong_New(): sử dụngPyLongWriter_Create()._PyThreadState_UncheckedGet(): sử dụngPyThreadState_GetUnchecked()._PyUnicode_AsString(): sử dụngPyUnicode_AsUTF8()._Py_HashPointer(): sử dụngPy_HashPointer()._Py_fopen_obj(): sử dụngPy_fopen().
pythoncapi-compat project có thể được sử dụng để nhận các hàm công khai mới này trên Python 3.13 trở lên.
Bản vá của Victor Stinner.
gh-126599: Xóa một số API thử nghiệm nội bộ cho trình biên dịch JIT thử nghiệm.
gh-127925: Chuyển đổi mô-đun
decimalđể sử dụng PEP 757 C API (xuất-nhập số nguyên), tăng tốc độ nếu phần nguyên của phiên bảnDecimalnhỏ. Bản vá của Sergey B Kirpicchev.
xây dựng¶
Python 3.14.0 alpha 4¶
Release date: 2025-01-14
macOS¶
gh-127592: Việc sử dụng API nhật ký hệ thống Apple hợp nhất đã bị vô hiệu hóa khi phiên bản macOS tối thiểu sớm hơn 10.12.
Công cụ/Bản trình diễn¶
gh-128152: Khắc phục lỗi trong đó trình phân tích cú pháp tiền xử lý C của Argument Clinic đã cố phân tích các chỉ thị tiền xử lý bên trong các nhận xét C. Bản vá của Erlend Aasland.
Kiểm tra¶
gh-128690: Tạm thời không sử dụng test_embed trong các bản dựng hồ sơ PGO cho đến khi vấn đề test_init_pyvenv_cfg bị lỗi trong một số cấu hình được giải quyết.
Thư viện¶
gh-128731: Sửa
ResourceWarningtrongurllib.robotparser.RobotFileParser.read().gh-71339: Thêm các phương thức xác nhận mới cho
unittest:assertHasAttr(),assertNotHasAttr(),assertIsSubclass(),assertNotIsSubclass()assertStartsWith(),assertNotStartsWith(),assertEndsWith()vàassertNotEndsWith().gh-118761: Cải thiện 25% thời gian nhập của
picklebằng cách xóa biểu thức chính quy không cần thiết. Do đó,rekhông còn có sẵn nhưpickle.renữa. Bản vá của Bénédikt Trần.gh-128661: Sửa lỗi
typing.evaluate_forward_ref()không hiển thị không được dùng nữa khitype_paramsarg không được thông qua.gh-128562: Khắc phục các xung đột có thể xảy ra trong tên tiện ích
tkinterđược tạo nếu tên lớp tiện ích kết thúc bằng một chữ số.gh-128552: Sửa lỗi tuần hoàn được giới thiệu bởi
asyncio.loop.create_task()vàasyncio.TaskGroup.create_task()giữ tham chiếu đến tác vụ đã tạo nếu nó háo hức.gh-128340: Thêm tay cầm an toàn luồng bên trong sẽ được sử dụng trong
asyncio.loop.call_soon_threadsafe()để hủy an toàn luồng.gh-128182: Khắc phục sự cố khi sử dụng đồng thời con trỏ
ctypestrên bản dựng free threaded.gh-128400: Chỉ hiển thị chuỗi hiện tại trong
faulthandlertrên bản dựng free threaded để ngăn chặn các cuộc đua.gh-128400: Khắc phục sự cố khi sử dụng
faulthandler.dump_traceback()trong khi các luồng khác đang hoạt động trên bản dựng free threaded.gh-128388: Sửa lỗi
PyREPLtrên Windows để hỗ trợ nhiều tổ hợp phím hơn, chẳng hạn như tổ hợp phím bỏ qua từ Control-← và Control-→ và những tổ hợp phím có meta (tức là Alt), ví dụ: Alt-d đếnkill-wordhoặc Alt-Backspacebackward-kill-word.gh-88834: Thống nhất kiểm tra phiên bản cho
typing.Unionvàtypes.UnionType:Unionhiện sử dụng kiểm tra phiên bản theo các tham số của nó thay vì kiểm tra lớp con.gh-128302: Sửa lỗi
xml.dom.xmlbuilder.DOMEntityResolver.resolveEntity()bị hỏng do quá trình chuyển đổi Python 3.0.gh-128317: Đánh dấu ngày hôm nay bằng màu sắc trong đầu ra CLI của
calendar. Bản vá của Hugo van Kemenade.gh-128302: Cho phép
xml.dom.xmlbuilder.DOMParser.parse()xử lý chính xác các trường hợpxml.dom.xmlbuilder.DOMInputSourcechỉ có bộ thuộc tínhsystemId.gh-128151: Cải thiện việc tạo các đối tượng
UUIDphiên bản 3, 4, 5 và 8 thông qua các chức năng chuyên dụng của chúng thêm 30%. Bản vá của Bénédikt Trần.gh-128118: Cải thiện hiệu suất của
copy.copy()thêm 30% thông qua đường dẫn nhanh cho các loại nguyên tử và loại vùng chứa.gh-127946: Khắc phục sự cố khi sửa đổi đồng thời các đối tượng
ctypes._CFuncPtrtrên bản dựng free threaded.gh-128062: Hoàn nguyên phông chữ của thanh menu của
turtledemovề giá trị mặc định và hiển thị các phím tắt ở đúng vị trí.gh-128014: Khắc phục việc đặt lại biểu tượng cửa sổ mặc định bằng cách chuyển
default=''sang phương thứctkinterwm_iconbitmap().gh-41872: Khắc phục việc trích xuất nhanh các chuỗi tài liệu mô-đun từ một tệp trong
pydoc. Hiện tại, nó hỗ trợ các chuỗi tài liệu có dấu ngoặc đơn, chuỗi thoát, chuỗi ký tự thô và cú pháp Python khác.gh-127060: Đặt biến môi trường TERM thành "câm" để tắt màu truy ngược trong IDLE, vì IDLE không hiểu các chuỗi thoát ANSI. Bản vá của Victor Stinner.
gh-126742: Khắc phục sự hỗ trợ của các thông báo lỗi cục bộ được báo cáo bởi dlerror(3) và gdbm_strerror trong các chức năng
ctypesvàdbm.gnutương ứng. Bản vá của Bénédikt Trần.gh-122548: Thêm hai sự kiện cục bộ mới vào sys.monitoring,
BRANCH_LEFTvàBRANCH_RIGHT. Điều này cho phép hai nhánh của nhánh bị vô hiệu hóa một cách độc lập, điều này sẽ cải thiện đáng kể hiệu suất của các công cụ quản lý cấp nhánh. Sự kiện nhánh cũ,BRANCHhiện không còn được dùng nữa.gh-127847: Sửa vị trí khi thực hiện tìm kiếm và đọc xen kẽ trong các tệp zip không nén, không được mã hóa được trả về bởi
zipfile.ZipFile.open().gh-127688: Thêm hằng số
SCHED_DEADLINEvàSCHED_NORMALvào mô-đunos.gh-83662: Thêm phương thức
__class_getitem__bị thiếu vào quá trình triển khaifunctools.partial()của Python, để làm cho nó tương thích với phiên bản C. Điều này chủ yếu phù hợp với việc triển khai Python thay thế như PyPy và GraalPy, vì CPython thường sẽ sử dụng cách triển khai C của hàm đó.gh-127586:
multiprocessing.pool.Poolhiện khôi phục chính xác các trình xử lý tín hiệu bị chặn của luồng gốc khi tạo các tiến trình thông qua spawn hoặc forkserver.gh-98188: Khắc phục sự cố trong
email.message.Message.get_payload()khiến dữ liệu không thể giải mã được nếu cơ chế Mã hóa truyền nội dung chứa các khoảng trắng ở cuối hoặc văn bản rác bổ sung. Bản vá của Hui Liu.gh-127529: Hành vi đúng của
asyncio.selector_events.BaseSelectorEventLoop._accept_connection()khi xử lýConnectionAbortedErrortrong một vòng lặp. Điều này cải thiện hiệu suất trên OpenBSD.gh-127360: Khi không thể cung cấp thông báo lỗi mô tả cho
ssl.SSLError, thông báo "lỗi không xác định" hiện hiển thị mã lỗi nội bộ (được truy xuất bởiERR_get_errorvà các hàm OpenSSL tương tự).gh-127196: Khắc phục sự cố khi lệnh có các khóa có mã hóa không hợp lệ được chuyển đến một số chức năng trong mô-đun
_interpreters.gh-124130: Sửa lỗi khớp biểu thức chính quy
\Btrong chuỗi đầu vào trống. Bây giờ nó luôn đối lập với\b. Để có hành vi cũ, hãy sử dụng(?!\A\Z)\B. Để có hành vi mới trong các phiên bản Python cũ, hãy sử dụng(?!\b).gh-126639:
tempfile.NamedTemporaryFilebây giờ sẽ phát hànhResourceWarningkhi nó được người thu gom rác hoàn thiện mà không bị đóng rõ ràng.gh-126624: Hiển thị mã lỗi
XML_ERROR_NOT_STARTEDcủa Expat >=2.6.4 trongxml.parsers.expat.errors.gh-126225:
getoptvàoptparsekhông còn được đánh dấu là không dùng nữa. Có những lý do chính đáng để sử dụng một trong các mô-đun này thay vìargparsevà không có mô-đun nào trong số này có nguy cơ bị xóa khỏi thư viện tiêu chuẩn. Trong số ba,argparsevẫn là lựa chọn mặc định được đề xuất, unless là một trong những mối lo ngại được ghi chú ở đầu tài liệu mô-đunoptparse.gh-124761: Thêm hằng số
SO_REUSEPORT_LBvàosocketcho FreeBSD.gh-121720:
enum.EnumDicthiện có thể được sử dụng mà không cần dùng đến API riêng tư.gh-123424: Thêm thuộc tính mặc định của cài đặt
zipfile.ZipInfo._for_archive()trên các đối tượngZipInfo. Bản vá của Bénédikt Tran và Jason R. Coombs.gh-121676: Không chấp nhận việc gọi triển khai
functools.reduce()bằng Python bằngfunctionhoặcsequencelà keyword argument. Điều này sẽ bị cấm trong Python 3.16 để phù hợp với việc triển khai C.gh-112015:
ctypes.memoryview_at()hiện tồn tại để tạo đối tượngmemoryviewtham chiếu đến con trỏ và độ dài được cung cấp. Điều này hoạt động giống nhưctypes.string_at()ngoại trừ việc nó tránh được bản sao bộ đệm và thường hữu ích khi triển khai các hàm gọi lại Python thuần túy được chuyển qua bộ đệm có kích thước động.gh-95371: Đã thêm hỗ trợ cho các định dạng hình ảnh khác (PNG, PGM và PPM) vào mô-đun rùa. Bản vá của Shin-myoung-serp.
Cốt lõi và nội dung¶
gh-128078: Sửa lỗi
SystemErrorkhi sử dụnganext()với giá trị bộ dữ liệu mặc định. Bản vá của Bénédikt Trần.gh-128717: Khắc phục sự cố khi đặt giới hạn đệ quy trong khi các luồng khác đang hoạt động trên bản dựng free threaded.
gh-124483: Coi
Py_DECREFvà các biến thể là thoát khi tạo siêu dữ liệu opcode và uop. Điều này ngăn khả năng phương pháp__del__khiến JIT hoạt động không chính xác.gh-126703: Cải thiện hiệu suất của các phương thức lớp bằng cách sử dụng danh sách tự do.
gh-128137: Cập nhật bố cục
PyASCIIObjectđể xử lý trường thực tập bằng thao tác nguyên tử. Bản vá của Donghee Na.
Thư viện¶
gh-128192: Nâng cấp thuật toán xác thực thông báo HTTP cho
urllib.requestbằng cách hỗ trợ xác thực thông báo SHA-256 như được chỉ định trong RFC 7616.
Cốt lõi và nội dung¶
gh-126868: Tăng cường sử dụng danh sách tự do để phân bổ
int.gh-114203: Tối ưu hóa
Py_BEGIN_CRITICAL_SECTIONcho các cuộc gọi đệ quy đơn giản.gh-127705: Thêm tính năng gỡ lỗi stackref khi
Py_STACKREF_DEBUGđược đặt. Tìm tất cả các lần đóng kép và rò rỉ, ghi lại nguồn gốc và lần mượn cuối cùng.Lấy cảm hứng từ chế độ gỡ lỗi của HPy. https://docs.hpyproject.org/en/latest/debug-mode.html
gh-128079: Sửa lỗi trong đó
except*không kiểm tra đúng giá trị trả về của hàmsplit()củaExceptionGroup, dẫn đến sự cố trong một số trường hợp. Bây giờ, khisplit()trả về một đối tượng không hợp lệ,except*sẽ tăng mộtTypeErrorvới đối tượngExceptionGroupđược nâng lên ban đầu được nối với nó.gh-128030: Tránh lỗi khi gọi
PyModule_GetFilenameObjecttrên đối tượng không phải mô-đun khi nhập biểu tượng không tồn tại từ đối tượng không phải mô-đun.
Thư viện¶
gh-128035: Cho biết thông qua
ssl.HAS_PHAxem mô-đunsslcó hỗ trợ xác thực ứng dụng khách sau bắt tay TLSv1.3 (PHA) hay không. Bản vá của Will Childs-Klein.
Cốt lõi và nội dung¶
gh-127274: Thêm một cờ mới,
CO_METHOD, vàoco_flagsđể cho biết liệu đối tượng mã có thuộc về một hàm được xác định trong phạm vi lớp hay không.gh-66409: Trong path initialization, bây giờ chúng tôi kiểm tra xem
base_exec_prefixcó giống vớibase_prefixhay không trước khi quay lại tìm kiếm thư mục trình thông dịch Python.gh-127970: Hiện chúng tôi sử dụng vị trí của thư viện thời gian chạy
libpythonđược sử dụng trong quy trình hiện tại để xác địnhsys.base_prefixtrên tất cả các nền tảng triển khai chức năng dladdr được xác định bởi tiêu chuẩn UNIX — bao gồm Linux, Android, macOS, iOS, FreeBSD, v.v. Điều này đã xảy ra trên các bản dựng Windows và macOS Framework.gh-127773: Không sử dụng bộ đệm thuộc tính loại cho các loại có MRO không tương thích.
gh-127903:
Objects/unicodeobject.c: khắc phục sự cố trên các bản dựng DEBUG trong_copy_characterskhi không có gì để sao chép.gh-127809: Khắc phục sự cố trong đó JIT thử nghiệm có thể suy ra loại kết quả không chính xác cho lũy thừa (
**và**=), dẫn đến lỗi hoặc sự cố.gh-126862: Khắc phục tình trạng tràn có thể xảy ra khi một lớp kế thừa từ số lượng siêu lớp vô lý. Báo cáo của Valery Fedorenko. Bản vá của Bénédikt Trần.
C API¶
gh-128400:
Py_FatalError()không còn hiển thị tất cả các luồng trên bản dựng free threaded để tránh sự cố.gh-128629: Thêm macro
Py_PACK_VERSION()vàPy_PACK_FULL_VERSION()cho số phiên bản Python đóng gói bit.gh-128008: Thêm chức năng
PyWeakref_IsDead()để kiểm tra xem tham chiếu yếu có bị chết hay không.gh-127350: Thêm chức năng
Py_fopen()để mở file. Tương tự như hàmfopen(), nhưng tham số path là một đối tượng Python và một ngoại lệ được đặt do lỗi. Ngoài ra còn có thêm chức năngPy_fclose()để đóng một tập tin, chức năng cần thiết để hỗ trợ Windows. Bản vá của Victor Stinner.
xây dựng¶
gh-128627: Đối với các bản dựng Emscripten, con trỏ hàm truyền cuộc gọi tấm bạt lò xo hiện sử dụng lệnh wasm-gc ref.test nếu nó có sẵn thay vì phản ánh kiểu Wasm JS.
gh-128472: Bỏ qua việc tối ưu hóa các chức năng của BOLT bằng gotos được tính toán, sửa lỗi khi xây dựng với LLVM 19.
gh-115765: GNU Autoconf 2.72 hiện được yêu cầu để tạo
configure. Bản vá của Erlend Aasland.gh-123925: Sửa lỗi xây dựng mô-đun
cursestrên nền tảng có libncurses nhưng không có libncursesw.gh-90905: Thêm hỗ trợ biên dịch chéo thành x86_64 trên macOS aarch64/arm64.
gh-128321: Đặt
LIBSthay vìLDFLAGSkhi kiểm tra xem các chức năng thư việnsqlite3có khả dụng hay không. Điều này khắc phục thứ tự của các thư viện được liên kết trong quá trình kiểm tra, điều này không chính xác khi sử dụnglibsqlite3được liên kết tĩnh.gh-100384: Lỗi trên
unguarded-availabilitytrong các bản dựng macOS, ngăn việc sử dụng không hợp lệ các ký hiệu không có trong các phiên bản hệ điều hành cũ hơn.gh-128104: Loại bỏ các điều kiện
Py_STRFTIME_C99_SUPPORTđể yêu cầu hỗ trợ trình xác định C99 strftime(3) tại thời điểm xây dựng. Khi biên dịch chéo, không có kiểm tra thời gian xây dựng và giả định hỗ trợ.gh-127951: Thêm tùy chọn
--pystatsvào bản dựng Windows để cho phép thu thập thống kê hiệu suất.
Python 3.14.0 alpha 3¶
Release date: 2024-12-17
cửa sổ¶
Công cụ/Bản trình diễn¶
Kiểm tra¶
gh-127906: Kiểm tra giới hạn C API trong test_cppext. Bản vá của Victor Stinner.
gh-127637: Thêm các bài kiểm tra cho giao diện dòng lệnh
dis. Bản vá của Bénédikt Trần.gh-126925: Kết quả kiểm tra iOS hiện được phát trực tuyến trong quá trình thực hiện kiểm tra và xcresulttool không còn được sử dụng nữa.
gh-127076: Tắt kiểm tra cuộc gọi hệ thống dựa trên strace khi LD_PRELOAD được đặt.
gh-127076: Lọc các lệnh gọi
mmap,munmapvàmprotectliên quan đến bộ nhớ từ các cuộc gọi liên quan đến tệp khi kiểm tra hành viiobằng strace.
Bảo mật¶
gh-127655: Đã sửa lỗi truyền tải
asyncio.selector_events._SelectorSocketTransportkhông tạm dừng ghi cho giao thức khi bộ đệm đạt đến vạch nước cao khi sử dụngasyncio.WriteTransport.writelines().
Thư viện¶
gh-126907: Khắc phục sự cố khi sử dụng đồng thời
atexittrên bản dựng free-threaded.gh-127870: Phát hiện các cuộc gọi đệ quy trong xử lý ctypes
_as_parameter_. Bản vá của Victor Stinner.gh-127732: Mô-đun
platformhiện phát hiện chính xác Windows Server 2025.gh-126789: Đã sửa lỗi
sysconfig.get_config_vars(),sysconfig.get_paths()và anh chị em, trả về dữ liệu đã lưu trong bộ nhớ đệm lỗi thời nếu giá trị củasys.prefixhoặcsys.exec_prefixthay đổi. Việc ghi đèsys.prefixhoặcsys.exec_prefixvẫn không được khuyến khích vì điều đó có thể phá vỡ các phần khác của mã.gh-127718: Thêm màu cho đầu ra
test.regrtest. Bản vá của Hugo van Kemenade.gh-127610: Đã thêm xác thực cho nhiều tham số var-positional hoặc var-keyword trong
inspect.Signature. Bản vá của Maxim Ageev.gh-127627: Đã thêm
posix._emscripten_debugger()để giúp gỡ lỗi bộ thử nghiệm trên mục tiêu Emscripten.gh-126821: Ứng dụng macOS và iOS hiện có thể chọn chuyển hướng thiết bị xuất chuẩn và thiết bị xuất chuẩn đến nhật ký hệ thống trong quá trình định cấu hình trình thông dịch.
gh-93312: Bao gồm
<sys/pidfd.h>để có được hằng sốos.PIDFD_NONBLOCK. Bản vá của Victor Stinner.gh-127065: Đảm bảo an toàn cho luồng
operator.methodcaller()và người đăng ký lại an toàn.gh-127321:
pdb.set_trace()sẽ không dừng lại ở opcode không có số dòng liên quan nữa.gh-127429: Đã sửa lỗi trong đó, trên các bản dựng chéo, dữ liệu
sysconfigPOSIX đang được tạo bằngMakefilecủa Python. Dữ liệu hiện được tạo từMakefilecủa bản dựng hiện tại.gh-127413: Thêm tùy chọn dòng lệnh
dis --specializedđể hiển thị mã byte chuyên dụng. Bản vá của Bénédikt Trần.gh-125413: Hoàn nguyên việc thêm
pathlib.Path.scandir(). Phương pháp này đã được thêm vào 3.14.0a2. Các tối ưu hóa vẫn được duy trì đối với các đường dẫn hệ thống tệp, nhưng các lớp con khác chỉ phải triển khaipathlib.Path.iterdir().gh-127257: Trong
ssl, lỗi cuộc gọi hệ thống mà OpenSSL báo cáo bằngERR_LIB_SYShiện được nâng lên thànhOSError.gh-59705: Trên Linux,
threading.Threadhiện đặt tên luồng cho hệ điều hành. Bản vá của Victor Stinner.gh-127303: Công khai
EXACT_TOKEN_TYPEStrongtoken.__all__.gh-127331:
sslcó thể hiển thị mô tả về các lỗi được thêm vào trong OpenSSL 3.4.gh-123967: Sửa lỗi xử lý cho khung bạt lò xo. Nếu khung trên cùng là khung tấm bạt lò xo, hãy bỏ qua nó. Bản vá của Victor Stinner.
gh-127178: Tệp
_sysconfig_vars_(...).jsonhiện được gửi trong thư mục thư viện tiêu chuẩn. Nó chứa đầu ra củasysconfig.get_config_vars()trên môi trường mặc định được mã hóa dưới dạng dữ liệu JSON. Đây là chi tiết triển khai và có thể thay đổi bất kỳ lúc nào.gh-127072: Loại bỏ các hằng số
socket.NETLINK_*lỗi thời không có trong nhân Linux ngoài phiên bản 2.6.17.gh-127255: Chức năng
CopyComPointer()hiện được công khai. Trước đây, tính năng này là riêng tư và chỉ có trong_ctypes.gh-127182: Khắc phục sự cố
io.StringIO.__setstate__()khiNoneđược chuyển làm giá trị đầu tiên.gh-127217: Sửa
urllib.request.pathname2url()cho các đường dẫn bắt đầu bằng nhiều dấu gạch chéo trên Posix.gh-125866:
urllib.request.pathname2url()hiện thêm quyền hạn trống khi tạo URL cho đường dẫn bắt đầu bằng chính xác một dấu gạch chéo. Ví dụ: đường dẫn/etc/hostsđược chuyển đổi thành URL///etc/hostskhông có sơ đồ. Do sự thay đổi này, các URL không có thẩm quyền chỉ được tạo cho các đường dẫn tương đối.gh-127221: Thêm màu cho đầu ra
unittest. Bản vá của Hugo van Kemenade.gh-127035: Sửa lỗi
shutil.whichtrên Windows. Bây giờ, nó xem xét kết quả khớp trực tiếp khi và chỉ khi lệnh kết thúc bằng phần mở rộng PATHEXT hoặc X_OK không ở chế độ. Hỗ trợ các tệp không có phần mở rộng nếu "." nằm trong PATHEXT. Hỗ trợ các phần mở rộng PATHEXT kết thúc bằng dấu chấm.gh-122273: Hỗ trợ lịch sử PyREPL trên Windows. Bản vá của devdanzin và Victor Stinner.
gh-125866:
urllib.request.pathname2url()vàurl2pathname()không còn chuyển đổi ký tự ổ đĩa Windows thành chữ hoa.gh-127078: Khắc phục sự cố trong đó
urllib.request.url2pathname()không thể loại bỏ dấu gạch chéo bổ sung trước ổ UNC trong đường dẫn URL trên Windows.gh-126766: Khắc phục sự cố trong đó
urllib.request.url2pathname()không thể loại bỏ bất kỳ quyền hạn 'localhost' nào có trong URL.gh-127065: Khắc phục sự cố khi gọi phiên bản
operator.methodcaller()từ nhiều luồng trong bản dựng luồng miễn phí.gh-127090: Sửa giá trị của
urllib.response.addinfourl.urlcho các URLfile:thể hiện đường dẫn tương đối và đường dẫn Windows tuyệt đối. URL chuẩn được tạo bởiurllib.request.pathname2url()hiện đã được sử dụng.gh-126992: Sửa các mã opcode LONG và INT để chỉ sử dụng cơ sở 10 để chuyển đổi chuỗi thành số nguyên trong
pickle.gh-126997: Khắc phục sự hỗ trợ của các opcode STRING và GLOBAL với các đối số không phải ASCII trong
pickletools.pickletools.dis()hiện xuất ra các byte không phải ASCII trong các đối số STRING, BINSTRING và SHORT_BINSTRING dưới dạng thoát (\xXX).gh-126316:
grp: Làm cho luồnggrp.getgrall()an toàn bằng cách thêm một mutex. Bản vá của Victor Stinner.gh-126618: Sửa cách biểu diễn đối tượng
itertools.countkhi giá trị đếm làsys.maxsize.gh-126615: Ngoại lệ
COMErrorhiện được công khai. Trước đây, tính năng này là riêng tư và chỉ có trong_ctypes.gh-126985: Khi chạy trong môi trường ảo có
sitebị tắt (xem-S),sys.prefixvàsys.base_prefixgiờ đây sẽ trỏ đến môi trường ảo, thay vì cài đặt cơ bản.gh-112192: Trong mô-đun
trace, tăng độ chính xác vùng phủ sóng (cov%) lên một số thập phân.gh-118761: Cải thiện thời gian nhập của
mimetypeskhoảng 11-16 lần. Bản vá của Hugo van Kemenade.gh-126947: Tăng
TypeErrortrong_pydatetime.timedelta.__new__()nếu các đối số được truyền không phải làinthoặcfloat, để việc triển khai Python phù hợp với việc triển khai C.gh-126946: Cải thiện thông báo lỗi
GetoptErrorkhi tiền tố tùy chọn dài khớp với nhiều tùy chọn được chấp nhận tronggetopt.getopt()vàgetopt.gnu_getopt().gh-126899: Tạo các phương thức tiện ích tkinter
after()vàafter_idle()chấp nhận các đối số được truyền theo từ khóa.gh-85168: Khắc phục sự cố trong đó
urllib.request.url2pathname()vàpathname2url()luôn sử dụng UTF-8 khi trích dẫn và hủy trích dẫn URI tệp. Bây giờ họ sử dụng filesystem encoding and error handler.gh-126780: Sửa
os.path.normpath()cho các đường dẫn liên quan đến ổ đĩa trên Windows.gh-126775: Đảm bảo luồng
linecache.checkcache()an toàn và việc tái nhập GC an toàn.gh-126601: Khắc phục sự cố trong đó
urllib.request.pathname2url()tăngOSErrorkhi được cung cấp đường dẫn Windows chứa ký tự dấu hai chấm không theo sau ký tự ổ đĩa, chẳng hạn như trước luồng dữ liệu thay thế NTFS.gh-126727:
locale.nl_langinfo(locale.ERA)hiện trả về nhiều phân đoạn mô tả thời đại được phân tách bằng dấu chấm phẩy. Trước đây nó chỉ trả lại phân đoạn đầu tiên trên nền tảng có Glibc.gh-118201: Đã sửa lỗi không liên tục của
os.confstr,os.pathconfvàos.sysconftrên iOS và Android.gh-86463: Tham số
usagecủaargparse.ArgumentParserkhông còn ảnh hưởng đến giá trị mặc định của tham sốprogtrong phân tích cú pháp con.gh-124008: Khắc phục sự cố có thể xảy ra (trong bản dựng gỡ lỗi), đầu ra không chính xác hoặc trả về giá trị không chính xác từ
write()nhị phân thô khi ghi vào bảng điều khiển trên Windows.gh-123401: Mô-đun
http.cookieshiện hỗ trợ phân tích cú pháp các định dạng ngày RFC 850 lỗi thời, phù hợp với yêu cầu của RFC 9110. Bản vá của Nano Zheng.gh-122431:
readline.append_history_file()hiện tăngValueErrorkhi được cung cấp giá trị âm.gh-122356: Đảm bảo rằng vị trí của một đối tượng giống như tệp được truyền tới
zipfile.is_zipfile()sẽ không bị ảnh hưởng sau cuộc gọi. Bản vá của Bénédikt Trần.gh-122288: Cải thiện hiệu suất của
fnmatch.translate()theo hệ số 1,7. Bản vá của Bénédikt Trần.gh-88110: Đã sửa lỗi
multiprocessing.Processbáo cáo.exitcodelà 1 ngay cả khi thành công khi sử dụng phương thức khởi động"fork"trong khi sử dụngconcurrent.futures.ThreadPoolExecutor.gh-97514: Xác thực đã được thêm vào ổ cắm điều khiển phương thức khởi động máy chủ ngã ba
multiprocessingđể chỉ những quá trình có khóa xác thực được tạo bởi quá trình tạo ra máy chủ ngã ba mới có thể kiểm soát nó. Đây là một cải tiến so với các bản sửa lỗi gh-97514 khác để quyền truy cập không còn bị giới hạn bởi các quyền của hệ thống tệp.Bộ mô tả tập tin trao đổi các ống điều khiển với quy trình phân nhánh hiện yêu cầu một byte xác nhận rõ ràng phải được gửi qua ổ cắm sau khi trao đổi trên tất cả các nền tảng hỗ trợ máy chủ phân nhánh. Điều đó làm cho việc kiểm tra ở trên dễ dàng hơn nhiều.
Tài liệu¶
gh-127347: Công khai
traceback.print_list()trongtraceback.__all__.
Cốt lõi và nội dung¶
gh-127740: Sửa thông báo lỗi trong
bytes.fromhex()khi được cung cấp một số chữ số lẻ để chỉ ra chính xác rằng cần có một số chẵn các chữ số thập lục phân.gh-127058:
PySequence_Tuplehiện tạo bộ dữ liệu kết quả một cách nguyên tử, ngăn không cho bộ thu gom rác hoặc thông quagc.get_referrers()nhìn thấy các bộ dữ liệu được tạo một phầngh-127599: Khắc phục số liệu thống kê về mức tăng của số lượng tham chiếu đối tượng (đặc biệt, khi số lượng tham chiếu được tăng hơn 1 trong một thao tác).
gh-127651: Khi tăng
ImportErrorcho các ký hiệu bị thiếu trong quá trình nhậpfrom, hãy sử dụng__file__trong thông báo lỗi nếu__spec__.originkhông phải là một vị trígh-127582: Khắc phục sự cố phục hồi đối tượng không an toàn theo luồng khi gọi các lệnh hoàn thiện và lệnh gọi lại của trình theo dõi trong bản dựng luồng miễn phí.
gh-127434: Miếng chêm trình biên dịch iOS hiện có thể chấp nhận các đối số có dấu cách.
gh-127536: Thêm các khóa bị thiếu xung quanh một số thao tác gán danh sách trong bản dựng luồng miễn phí.
gh-127085: Khắc phục sự cố khi xuất bộ đệm từ đối tượng
memoryviewtrên bản dựng free-threaded.gh-127238: Sửa lỗi cho
sys.set_int_max_str_digits().gh-113841: Sửa lỗi phân chia hành vi không xác định có thể có bằng 0 trong
_Py_c_pow()củacomplex.
Thư viện¶
gh-127133: Gọi
argparse.ArgumentParser.add_argument_group()trên một nhóm đối số và gọiargparse.ArgumentParser.add_argument_group()hoặcargparse.ArgumentParser.add_mutually_exclusive_group()trên một nhóm loại trừ lẫn nhau hiện sẽ đưa ra các ngoại lệ. Việc lồng ghép này không bao giờ được hỗ trợ, thường không hoạt động chính xác và vô tình bị lộ thông qua tính kế thừa. Chức năng này không được dùng nữa kể từ Python 3.11.
Cốt lõi và nội dung¶
gh-126491: Thêm pha đánh dấu vào GC. Tất cả các đối tượng có thể truy cập tạm thời từ các mô-đun dựng sẵn hoặc ngăn xếp đều được đánh dấu là có thể truy cập trước khi phát hiện chu kỳ. Điều này làm giảm khoảng một nửa số lượng công việc được thực hiện bởi GC.
gh-127020: Khắc phục sự cố trong bản dựng luồng miễn phí khi
PyCode_GetCode(),PyCode_GetVarnames(),PyCode_GetCellvars()hoặcPyCode_GetFreevars()được gọi từ nhiều luồng cùng một lúc.gh-127010: Đơn giản hóa việc theo dõi GC của từ điển. Tất cả các từ điển đều được theo dõi khi được tạo, thay vì bị theo dõi một cách lười biếng khi một đối tượng có thể theo dõi được thêm vào chúng. Điều này giúp đơn giản hóa mã đáng kể và dẫn đến tăng tốc một chút.
gh-126980: Khắc phục lỗi
__buffer__()củabytearraykhiREADhoặcWRITEđược chuyển làm cờ.gh-126937: Khắc phục
TypeErrorkhictypes.Structurecó kích thước trường không vừa với số nguyên 16 bit không dấu. Thay vào đó, số lượng bits tối đa làsys.maxsize.gh-126868: Tăng hiệu suất của
intbằng cách thêm danh sách tự do cho số nguyên nhỏ gọn.gh-126881: Khắc phục sự cố khi hoàn tất trạng thái dtoa. Bản vá của Kumar Aditya.
gh-126892: Yêu cầu mã nguội hoặc không hợp lệ để "làm nóng" trước khi JIT được biên dịch lại.
gh-126091: Đảm bảo dấu vết ngăn xếp hoàn tất khi đưa vào chuỗi trình tạo kết thúc bằng trình tạo tùy chỉnh.
gh-126024: Tối ưu hóa việc giải mã các chuỗi UTF-8 ngắn chứa các ký tự không phải ASCII khoảng 15%.
gh-125420: Thêm
memoryview.index()vào đối tượngmemoryview. Bản vá của Bénédikt Trần.gh-125420: Thêm
memoryview.count()vào đối tượngmemoryview. Bản vá của Bénédikt Trần.gh-124470: Khắc phục sự cố trong các bản dựng luồng tự do khi thay thế từ điển đối tượng trong khi đọc thuộc tính trên một luồng khác
gh-69639: Triển khai các quy tắc số học ở chế độ hỗn hợp kết hợp số thực và số phức theo quy định của tiêu chuẩn C kể từ C99. Bản vá của Sergey B Kirpicchev.
gh-120010: Sửa các trường hợp góc không hợp lệ dẫn đến đầu ra
(nan+nanj)trong phép nhân phức tạp, ví dụ:(1e300+1j)*(nan+infj). Bản vá của Sergey B Kirpicchev.gh-109746: Nếu
_thread.start_new_thread()không khởi động được một luồng mới, nó sẽ xóa trạng thái của nó khỏi trình thông dịch và do đó tránh được việc dọn dẹp nhiều lần khi hoàn thiện.
C API¶
gh-127896: Hàm
PySequence_In()không có giấy tờ trước đây là soft deprecated. Thay vào đó hãy sử dụngPySequence_Contains().gh-127791: Khắc phục tình trạng mất lệnh gọi lại sau nhiều cuộc gọi tới
PyUnstable_AtExit().gh-127691: Unicode Exception Objects C API hiện tăng
TypeErrornếu đối số ngoại lệ của nó không phải là đối tượngUnicodeError. Bản vá của Bénédikt Trần.gh-123378: Đảm bảo rằng giá trị của
UnicodeEncodeError.endđượcPyUnicodeEncodeError_GetEnd()truy xuất nằm trong[min(1, objlen), max(min(1, objlen), objlen)]trong đó objlen là độ dài củaUnicodeEncodeError.object. Các đối số tương tự áp dụng choUnicodeDecodeErrorvàUnicodeTranslateErrorvà giao diện C tương ứng của chúng. Bản vá của Bénédikt Trần.gh-127314: Cải thiện thông báo lỗi khi gọi C API mà không có trạng thái luồng hoạt động trên bản dựng free-threaded.
gh-123378: Đảm bảo rằng giá trị của
UnicodeEncodeError.startđượcPyUnicodeEncodeError_GetStart()truy xuất nằm trong[0, max(0, objlen - 1)]trong đó objlen là độ dài củaUnicodeEncodeError.object. Các đối số tương tự áp dụng choUnicodeDecodeErrorvàUnicodeTranslateErrorvà giao diện C tương ứng của chúng. Bản vá của Bénédikt Trần.gh-109523: Đọc văn bản từ luồng không chặn bằng
readhiện có thể tăngBlockingIOErrornếu thao tác không thể trả về byte ngay lập tức.gh-102471: Thêm một API nhập và xuất mới cho các đối tượng
intcủa Python (PEP 757):Bản vá của Victor Stinner.
gh-121058:
PyThreadState_Clear()hiện cảnh báo (và gọisys.excepthook) nếu trạng thái luồng vẫn có ngoại lệ hoạt động.
xây dựng¶
gh-127865: Khắc phục lỗi xây dựng trên các hệ thống không hỗ trợ thread-locals.
gh-127629: Các bản dựng Emscripten hiện bao gồm hỗ trợ ctypes.
gh-127111: Đã cập nhật ví dụ web Emscripten để sử dụng các mô-đun ES6 và được tích hợp vào thư mục con
web_exampleriêng biệt.gh-115869: Làm cho
jit_stencils.h(được tạo ra trong quá trình xây dựng JIT) có thể tái tạo được.gh-126898: Bản dựng Emscripten của Python hiện dựa trên các mô-đun ES6.
Python 3.14.0 alpha 2¶
Release date: 2024-11-19
cửa sổ¶
gh-126911: Cập nhật đầu ra lệnh tín dụng.
gh-118973: Đảm bảo cài đặt theo luồng miễn phí thử nghiệm bao gồm mô-đun
_tkinter. Thành phần Tcl/Tk tùy chọn cũng phải được cài đặt để mô-đun hoạt động.gh-126497: Khắc phục lỗi venv do thiếu tệp thực thi chuyển hướng trong các bản cài đặt luồng miễn phí thử nghiệm.
gh-126074: Đã xóa các tệp DLL không cần thiết khỏi gói có thể nhúng của Windows
gh-125315: Tránh gặp sự cố trong
platformdo lệnh gọi WMI chậm trên một số máy Windows.gh-126084: Sửa venvwlauncher để khởi chạy pythonw thay vì python để không tạo thêm cửa sổ bảng điều khiển nào.
gh-125842: Sửa lỗi
SystemErrorkhisys.exit()được gọi bằng0xfffffffftrên Windows.gh-125550: Kích hoạt Trình quản lý cài đặt Python để phát hiện các bản cài đặt Python 3.14 từ Windows Store.
gh-123803: Tất cả các trang mã Windows hiện được hỗ trợ dưới dạng codec "cpXXX" trên Windows.
Công cụ/Bản trình diễn¶
Kiểm tra¶
Bảo mật¶
gh-126623: Nâng cấp libexpat lên 2.6.4
Thư viện¶
gh-85957: Thêm các loại MIME bị thiếu cho hình ảnh có RFC: emf, fit, g3fax, jp2, jpm, jpx, t38, tiff-fx và wmf. Bản vá của Hugo van Kemenade.
gh-126920: Sửa lỗi các khóa
prefixvàexec_prefixtừsysconfig.get_config_vars()có cùng giá trị tương ứng vớisys.base_prefixvàsys.base_exec_prefixtrong môi trường ảo. Bây giờ chúng phản ánh chính xácsys.prefixvàsys.exec_prefix.gh-67877: Khắc phục rò rỉ bộ nhớ khi kết hợp
regular expressionchấm dứt đột ngột, do tín hiệu hoặc do việc phân bổ bộ nhớ không thành công.gh-125063:
marshalhiện hỗ trợ các đối tượngslice. Phiên bản định dạng nguyên soái đã được tăng lên 5.gh-126789: Đã sửa các giá trị của
sysconfig.get_config_vars(),sysconfig.get_paths()và anh chị em của chúng khi quá trình khởi tạositediễn ra sau khisysconfigđã tạo bộ đệm chosysconfig.get_config_vars().gh-126188: Cập nhật gói pip lên 24.3.1
gh-126766: Khắc phục sự cố trong đó
urllib.request.url2pathname()không thể loại bỏ hai dấu gạch chéo ở đầu giới thiệu phần quyền hạn trống.gh-126705: Cho phép
os.PathLikelàm cơ sở cho Giao thức.gh-126699: Cho phép
collections.abc.AsyncIteratorlàm cơ sở cho Giao thức.gh-126654: Khắc phục sự cố khi không có dict được chuyển đến một số chức năng trong mô-đun
_interpreters.gh-104745: Hạn chế khởi động một bản vá (từ
unittest.mock.patch()hoặcunittest.mock.patch.object()) nhiều lần mà không dừng nógh-126595: Khắc phục sự cố khi khởi tạo
itertools.countvới số lượng ban đầu làsys.maxsizetrên các bản dựng gỡ lỗi. Bản vá của Bénédikt Trần.gh-120423: Khắc phục sự cố trong đó
urllib.request.pathname2url()xử lý sai đường dẫn Windows bằng dấu gạch chéo phía trước được nhúng.gh-126565: Cải thiện hiệu suất của
zipfile.Path.open()cho các chế độ không đọc.gh-126505: Sửa lỗi khi biên dịch
regular expressionskhông phân biệt chữ hoa chữ thường với các lớp ký tự chứa các ký tự không phải BMP: ký tự viết hoa không phải BMP đã bị bỏ qua và cờ ASCII bị bỏ qua khi khớp với phạm vi ký tự có giới hạn trên nằm ngoài vùng BMP.gh-117378: Đã sửa lỗi quy trình máy chủ phân nhánh phương thức bắt đầu
multiprocessing"forkserver"để kế thừa chính xácsys.pathcủa cha mẹ trong quá trình nhập mô-đunmultiprocessing.set_forkserver_preload()theo cách tương tự nhưsys.pathđược định cấu hình trong trình chạy trước khi thực thi các mục công việc.Lỗi này khiến cho một số mô-đun máy chủ ngã ba tải trước không thể tải trước một cách âm thầm. Điều này được biểu hiện bằng sự suy giảm hiệu suất trong các tiến trình con khi cần có
sys.pathdo mỗi công nhân phải thực hiện thêm công việc lặp đi lặp lại.Nó cũng có thể có tác dụng phụ là
""vẫn còn trongsys.pathtrong quá trình nhập tải trước máy chủ ngã ba thay vì đường dẫn tuyệt đối từos.getcwd()tại thời điểm nhập đa xử lý được sử dụng trongsys.pathcông nhân.Sự khác biệt về
sys.pathgiữa các giai đoạn trong quy trình con có thể có khả năng khiến tải trước nhập những thứ không chính xác từ sai vị trí. Chúng tôi không biết điều đó đã thực sự xảy ra trong thực tế.gh-125679: Các giá trị
multiprocessing.Lockvàmultiprocessing.RLockreprkhông còn có nội dung "không xác định" trên macOS.gh-126476: Tăng
calendar.IllegalMonthError(hiện là lớp con củaIndexError) chocalendar.month()khi tháng đầu vào không chính xác.gh-126489: Việc triển khai
picklebằng Python không còn gọipickle.Pickler.persistent_id()cho kết quả củapersistent_id()nữa.gh-126451: Đăng ký loại
contextvars.Contextvàocollections.abc.Mapping.gh-126175: Thêm thuộc tính
msg,doc,pos,linenovàcolnovàotomllib.TOMLDecodeError. Không dùng nữa việc khởi tạo bằng các đối số dạng tự do.gh-89416: Thêm các loại RFC 9559 MIME cho các định dạng vùng chứa nghe nhìn Matroska. Bản vá của Hugo van Kemenade.
gh-126417: Đăng ký loại
multiprocessing.managers.DictProxyvàmultiprocessing.managers.ListProxytrongmultiprocessing.managersđếncollections.abc.MutableMappingvàcollections.abc.MutableSequencetương ứng.gh-126390: Thêm hỗ trợ trả về các tùy chọn trộn lẫn và các đối số không phải tùy chọn theo thứ tự trong
getopt.gnu_getopt().gh-126374: Thêm hỗ trợ cho các tùy chọn với các đối số tùy chọn trong mô-đun
getopt.gh-126363: Tăng tốc độ phân tích cú pháp mẫu trong
pathlib.Path.glob()bằng cách bỏ qua việc tạo đối tượngpathlib.Pathcho mẫu.gh-126353:
asyncio.get_event_loop()hiện không ngầm tạo ra vòng lặp sự kiện. Bây giờ nó sẽ tăngRuntimeErrornếu không có vòng lặp sự kiện nào được thiết lập. Bản vá của Kumar Aditya.gh-126313: Khắc phục sự cố trong
curses.napms()khicurses.initscr()chưa được gọi. Bản vá của Bénédikt Trần.gh-126303: Sửa lỗi tẩy và sao chép các đối tượng
os.sched_param.gh-126138: Khắc phục sự cố use-after-free trên các đối tượng
asyncio.Taskcó coroutine cơ bản tạo ra một đối tượng triển khai__getattribute__()độc ác. Bản vá của Nico Posada.gh-120057: Thay thế phương thức
os.environ.refresh()bằng hàmos.reload_environ()mới. Bản vá của Victor Stinner.gh-126220: Khắc phục sự cố trong
cProfile.Profilevà_lsprof.Profilerkhi lệnh gọi lại của chúng được gọi trực tiếp với 0 đối số.gh-126212: Khắc phục sự cố trong đó
urllib.request.pathname2url()vàurl2pathname()xóa dấu gạch chéo khỏi đường dẫn và URL ổ đĩa DOS của Windows.gh-126223: Tăng
UnicodeEncodeErrorthay vìSystemErrorkhi gọi_interpreters.create()bằng ký tự Unicode không hợp lệ.gh-126205: Khắc phục sự cố trong đó
urllib.request.pathname2url()tạo URL bắt đầu bằng bốn dấu gạch chéo (thay vì hai) khi được cung cấp đường dẫn UNC của Windows.gh-126156: Cải thiện hiệu suất tạo đối tượng
Morsellên gấp 3,8 lần.gh-126105: Khắc phục sự cố trong
astkhi thuộc tínhast.AST._fieldsbị xóa.gh-126106: Sửa lỗi vô hiệu hóa con trỏ
NULLcó thể có trongssl.gh-126080: Khắc phục sự cố use-after-free trên các đối tượng
asyncio.Taskmà vòng lặp sự kiện cơ bản thực hiện một__getattribute__()xấu. Báo cáo của Nico-Posada. Bản vá của Bénédikt Trần.gh-125322: Phát hiện chính xác hỗ trợ số phức trong libffi.
gh-126083: Đã sửa lỗi rò rỉ tham chiếu trong các đối tượng
asyncio.Taskkhi khởi tạo lại cùng một đối tượng với ngữ cảnh không phảiNone. Bản vá của Nico Posada.gh-126068: Sửa các ngoại lệ trong mô-đun
argparseđể hiện chỉ dịch các thông báo lỗi cho ArgumentError và ArgumentTypeError. ArgumentError hiện chỉ được sử dụng cho các lỗi dòng lệnh, không dùng cho các lỗi logic trong chương trình. TypeError hiện được nâng lên thay vì ValueError đối với một số lỗi logic.gh-125413: Thêm phương thức
pathlib.Path.scandir()để tìm nạp thư mục con và thuộc tính tệp của chúng một cách hiệu quả. Đây là một trình bao bọc tầm thường củaos.scandir().gh-125984: Khắc phục sự cố không sử dụng sau khi sử dụng trên các đối tượng
asyncio.Futuremà vòng lặp sự kiện cơ bản thực hiện một__getattribute__()xấu. Báo cáo của Nico-Posada. Bản vá của Bénédikt Trần.gh-125926: Sửa
urllib.parse.urljoin()cho URI cơ sở với quyền không xác định. Mặc dù RFC 3986 chỉ chỉ định độ phân giải tham chiếu cho cơ sở tuyệt đối URI, nhưngurljoin()sẽ tiếp tục trả về kết quả hợp lý cho cơ sở tương đối URI.gh-125969: Khắc phục sự cố ngoài giới hạn khi
asyncio.loop.call_soon()độc ác làm thay đổi độ dài của danh sách gọi lại nội bộ. Bản vá của Bénédikt Trần.gh-125966: Khắc phục sự cố không sử dụng được trong
asyncio.Future.remove_done_callback(). Bản vá của Bénédikt Trần.gh-125789: Khắc phục sự cố có thể xảy ra khi thay đổi danh sách các lệnh gọi lại được
asyncio.Future._callbackstrả về. Bây giờ nó luôn trả về một bản sao mới trong quá trình triển khai C_asyncio. Bản vá của Kumar Aditya.gh-126916: Cho phép truyền tham số initial của
functools.reduce()làm đối số từ khóa. Bản vá của Sayandip Dutta.gh-124452: Khắc phục sự cố trong
email.policy.EmailPolicy.header_source_parse()vàemail.policy.Compat32.header_source_parse()đưa các khoảng trắng giả ở đầu vào các giá trị tiêu đề khi tiêu đề bao gồm ký tự dòng mới sau dấu phân cách tên tiêu đề (:) và trước giá trị.gh-117941:
argparse.BooleanOptionalActionhiện từ chối các tên tùy chọn bắt đầu bằng--no-.gh-125884: Đã sửa lỗi cho
pdbkhông thể đặt điểm dừng trên các hàm có chú thích nhất định.gh-125355: Sửa một số lỗi trong
argparse.ArgumentParser.parse_intermixed_args().Trình phân tích cú pháp không còn thay đổi tạm thời trong quá trình phân tích cú pháp.
Giá trị mặc định không được xử lý hai lần.
Các nhóm loại trừ lẫn nhau bắt buộc có chứa đối số vị trí hiện được hỗ trợ.
Báo cáo đối số bị thiếu hiện bao gồm tên của tất cả các đối số tùy chọn và vị trí bắt buộc.
Các tùy chọn không xác định có thể được trộn lẫn với các đối số vị trí trong pars_known_intermixed_args().
gh-125767: đối tượng
superhiện làpickleablevàcopyable.gh-124969:
locale.nl_langinfo(locale.ALT_DIGITS)bây giờ lại trả về một chuỗi. Giá trị trả về bao gồm tối đa 100 ký hiệu được phân tách bằng dấu chấm phẩy.gh-84850: Xóa các lớp
URLopenervàFancyURLopenerkhỏiurllib.request. Trước đây họ đã nâng cấpDeprecationWarningkể từ Python 3.3.gh-125666: Tránh thoát trình thông dịch nếu một byte rỗng được đưa vào làm đầu vào trong REPL mới.
gh-125710: [Enum] sửa các so sánh có thể băm<->không thể băm cho các giá trị thành viên
gh-125631: Khôi phục khả năng đặt thuộc tính
persistent_idvàpersistent_loadcủa các phiên bản của lớpPicklervàUnpicklertrong mô-đunpickle.gh-125378: Đã sửa lỗi trong
pdbtrong đó sau lệnh nhiều dòng, một dòng trống sẽ lặp lại dòng đầu tiên của lệnh nhiều dòng, thay vì lệnh đầy đủ.gh-125682: Từ chối các chữ số không phải ASCII trong quá trình triển khai
json.loads()của Python tuân theo đặc tả JSON.gh-125660: Từ chối các lối thoát unicode không hợp lệ khi triển khai
json.loads()bằng Python.gh-52551: Sử dụng
wcsftime()để triển khaitime.strftime()trên Windows.gh-125259: Khắc phục logic xóa ghi chú đối với các lỗi xảy ra khi khởi tạo enum.
gh-125633: Thêm hàm
inspect.ispackage()để xác định đối tượng có phải là package hay không.gh-125614: Ở định dạng
FORWARDREFcủaannotationlib, sửa lỗi khiến các biểu thức lồng nhau không được trả về dưới dạng định dạngannotationlib.ForwardRef.gh-125590: Cho phép
FrameLocalsProxyxóa và bật nếu phím không phải là biến nhanh.gh-125600: Chỉ hiển thị cảnh báo mã cũ trong
pdbkhi chúng tôi hiển thị mã nguồn.gh-125542: Không dùng nữa việc chuyển đối số prefix_chars chỉ từ khóa cho
argparse.ArgumentParser.add_argument_group().gh-125541: Việc nhấn Ctrl-C khi bị chặn trong
threading.Lock.acquire(),threading.RLock.acquire()vàthreading.Thread.join()hiện sẽ làm gián đoạn lệnh gọi hàm và đưa ra ngoại lệKeyboardInterrupttrên Windows, tương tự như cách các chức năng đó hoạt động trên macOS và Linux.gh-125519: Cải thiện khả năng truy nguyên nếu
importlib.reload()được gọi với một đối tượng không phải là mô-đun. Bản vá của Alex Waygood.gh-125451: Khắc phục tình trạng bế tắc khi
concurrent.futures.ProcessPoolExecutortắt đồng thời kèm theo lỗi khi cung cấp công việc cho quy trình công nhân.gh-125115: Đã sửa lỗi trong
pdbtrong đó các đối số bắt đầu bằng-không thể được chuyển tới tập lệnh đã gỡ lỗi.gh-125398: Sửa lỗi chuyển đổi đường dẫn
VIRTUAL_ENVtrong tập lệnh kích hoạt trongvenvkhi chạy trong Git Bash cho Windows.gh-125245: Khắc phục tình trạng chủng tộc khi nhập
collections.abc, điều này có thể trả về mô-đun trống không chính xác.gh-52551: Khắc phục sự cố mã hóa trong
time.strftime(), phương thứcstrftime()của các lớpdatetimedatetime,datevàtimecũng như định dạng của các lớp này. Các ký tự không thể mã hóa ở ngôn ngữ hiện tại hiện có thể được chấp nhận trong chuỗi định dạng. Các cặp thay thế và chuỗi byte được mã hóa thay thế không còn được kết hợp lại nữa. Ký tự null được nhúng không còn kết thúc chuỗi định dạng nữa.gh-124984: Đã sửa lỗi an toàn luồng trong
sslở bản dựng luồng tự do. Các hoạt động OpenSSL hiện được bảo vệ bằng khóa theo từng đối tượng.gh-124651: Trích dẫn chính xác các chuỗi mẫu trong tập lệnh kích hoạt
venv.gh-124694: Chúng tôi đã thêm
concurrent.futures.InterpreterPoolExecutor, cho phép bạn chạy mã trong nhiều trình thông dịch riêng biệt. Điều này cho phép bạn tránh được các hạn chế của các luồng bị ràng buộc bởi CPU (do GIL). Bản vá của Eric Snow.Sự bổ sung này không liên quan đến PEP 734.
gh-58032: Không dùng bộ chuyển đổi loại
argparse.FileType.gh-99749: Thêm tính năng để tùy chọn bật đề xuất cho các lựa chọn đối số và tên trình phân tích cú pháp con nếu người dùng nhập sai.
gh-58956: Đã sửa lỗi trong
pdbtrong đó đôi khi điểm ngắt sẽ không kích hoạt nếu nó được đặt trên một hàm đã có trong ngăn xếp cuộc gọi.gh-124111: Mô-đun tkinter hiện có thể được xây dựng để sử dụng phiên bản 9.0.0 mới của Tcl/Tk hoặc bản phát hành mới nhất 8.6.15 của Tcl/Tk 8. Tcl/Tk 9 bao gồm nhiều cải tiến, cả về ngôn ngữ Tcl cũng như hình thức và tiện ích của giao diện người dùng đồ họa do Tk cung cấp.
gh-80958: khám phá không đáng tin cậy nhất hỗ trợ các gói không gian tên PEP 420 làm thư mục bắt đầu lại.
gh-123370: Sửa lỗi canvas không xóa sau khi chạy đồng hồ Turtledemo.
gh-89083: Thêm
uuid.uuid8()để tạo đối tượng UUIDv8 như được chỉ định trong RFC 9562. Bản vá của Bénédikt Trầngh-122549: Thêm
platform.invalidate_caches()để vô hiệu hóa kết quả được lưu trong bộ nhớ đệm.gh-120754: Cập nhật các lệnh gọi
readkhông giới hạn trongzipfileđể chỉ định mộtsizerõ ràng đặt giới hạn về lượng dữ liệu chúng có thể đọc. Điều này cũng cập nhật việc xử lý kích thước nhận xét tối đa xung quanh ZIP để phù hợp với tiêu chuẩn thay vì đọc các nhận xét quá dài một byte.gh-121267: Cải thiện hiệu suất của
tarfilekhi ghi tệp, bằng cách lưu vào bộ đệm tên người dùng và tên nhóm.gh-70764: Đã khắc phục sự cố trong đó
inspect.getclosurevars()phân loại không chính xác tên thuộc tính thành biến toàn cục khi tên đó tồn tại cả dưới dạng tên thuộc tính và biến toàn cục.gh-118289:
posixpath.realpath()hiện tăngNotADirectoryErrorkhi chế độ strict được bật và đường dẫn không phải thư mục có dấu gạch chéo được cung cấp.gh-119826: Luôn trả về đường dẫn tuyệt đối cho
os.path.abspath()trên Windows.gh-97850: Xóa
pkgutil.get_loader()vàpkgutil.find_loader()không được dùng nữa.gh-118986: Thêm hằng số
socket.IPV6_RECVERR(có sẵn từ Linux 2.2).gh-116897: Chấp nhận các đối tượng có giá trị sai (như
0và[]) ngoại trừ các chuỗi trống, các đối tượng giống byte vàNonetrong các hàmurllib.parseparse_qsl()vàparse_qs()hiện không được dùng nữa.gh-101955: Sửa SystemError khi khớp mẫu biểu thức chính quy có chứa một số kết hợp của bộ định lượng sở hữu, nhóm thay thế và nhóm chụp.
gh-71936: Khắc phục tình trạng đua trong
multiprocessing.pool.Pool.bpo-46128: Loại bỏ các khung ngăn xếp
unittest.IsolatedAsyncioTestCasekhỏi dấu vết ngăn xếp được báo cáo.gh-84852: Thêm các loại MIME cho các phông chữ MS Embedded OpenType, OpenType Layout, TrueType, WOFF 1.0 và 2.0. Bản vá của Sahil Prajapati và Hugo van Kemenade.
Tài liệu¶
gh-126622: Đã thêm các trang sơ khai cho các mô-đun đã xóa, giải thích việc xóa chúng, nơi tìm phần thay thế và liên kết đến phiên bản Python cuối cùng hỗ trợ chúng. Đóng góp bởi Ned Batchelder.
gh-125277: Yêu cầu Sphinx 7.2.6 trở lên để xây dựng tài liệu Python. Bản vá của Adam Turner.
gh-60712: Bao gồm loại
objecttrong danh sách các loại tài liệu. Thay đổi bởi Furkan Onder và Martin Panter.
Cốt lõi và nội dung¶
gh-126795: Tăng ngưỡng khởi động mã JIT. Tùy thuộc vào nền tảng và khối lượng công việc, điều này có thể giúp tăng hiệu suất từ 1-9% và tiết kiệm bộ nhớ từ 3-5%.
gh-126341: Bây giờ
ValueErrorđược nâng lên thay vìSystemErrorkhi cố gắng lặp lại một đối tượngmemoryviewđã được phát hành.gh-126688: Khắc phục sự cố khi gọi
os.fork()trên một số hệ điều hành, bao gồm cả SerenityOS.
Thư viện¶
Cốt lõi và nội dung¶
Thư viện¶
gh-126209: Khắc phục sự cố với tham số
skip_file_prefixesdẫn đến hành vi không nhất quán giữa quá trình triển khaiwarnings.warn()bằng C và Python. Bản vá của Daehee Kim.
Cốt lõi và nội dung¶
gh-126312: Khắc phục sự cố trong quá trình thu thập rác trên một đối tượng bị đóng băng bởi
gc.freeze()trên bản dựng có luồng tự do.gh-103951: Giảm bớt các yêu cầu tối ưu hóa để cho phép truy cập thuộc tính nhanh vào các lớp con mô-đun.
gh-126072: Sau gh-126101, đối với Đối tượng mã như lambda, chú thích và bí danh loại, chúng tôi không còn thêm
Nonevàoco_constscủa nó nữa.gh-126195: Cải thiện hiệu suất JIT thêm 1,4% trên macOS Apple Silicon bằng cách sử dụng API bảo vệ bộ nhớ dành riêng cho nền tảng. Bản vá của Diego Russo.
gh-126139: Cung cấp vị trí lỗi tốt hơn khi cố gắng sử dụng future statement với một tính năng không xác định trong tương lai.
gh-126072: Thêm thuộc tính mới trong
co_flagsđể cho biết mục đầu tiên trongco_constscó phải là chuỗi tài liệu hay không. Nếu một đối tượng mã không có chuỗi tài liệu,Nonesẽ được chèn NOT.gh-126076: Các đối tượng được di dời như các đối tượng
tuple,bytesvàstrđược theo dõi chính xác bởitracemallocvà các hook liên quan của nó. Bản vá của Pablo Galindo.gh-90370: Tránh tạo bộ dữ liệu tạm thời cho vararg khi truyền đối số bằng mã do Phòng khám đối số tạo ra (nếu đối số là vararg hoặc chỉ có vị trí).
gh-126018: Khắc phục sự cố trong
sys.audit()khi truyền một đối số không phải chuỗi làm đối số đầu tiên và Python được biên dịch ở chế độ gỡ lỗi.gh-126012: Loại
memoryviewhiện hỗ trợ đăng ký, biến nó thành generic type.gh-125837: Thêm hướng dẫn
LOAD_SMALL_INTvàLOAD_CONST_IMMORTAL.LOAD_SMALL_INTđẩy một số nguyên nhỏ bằngopargvào ngăn xếp.LOAD_CONST_IMMORTALhoạt động tương tự nhưLOAD_CONSTnhưng hiệu quả hơn đối với các vật thể bất tử. Loại bỏ hướng dẫnRETURN_CONST.gh-125942: Trên Android, cài đặt
errorscủasys.stdoutđã được thay đổi từsurrogateescapethànhbackslashreplace.gh-125859: Khắc phục sự cố trong bản dựng luồng miễn phí khi
gc.get_objects()hoặcgc.get_referrers()được gọi trong quá trình thu gom rác đang diễn ra.gh-125868: Chỉ trong 3.14.0a1, việc tra cứu thuộc tính có thể đưa ra giá trị sai. Điều này là do chuyên môn không chính xác trong những trường hợp rất cụ thể. Điều này đã được sửa trong 3.14.0a2.
gh-125498: JIT đã được cập nhật để tận dụng thuộc tính
preserve_nonemới của Clang 19, hỗ trợ nhiều nền tảng hơn và hữu ích hơn quy ước gọighccchiện có của LLVM. Điều này cũng loại bỏ nhu cầu vá thủ công quy ước gọi trong LLVM IR, đơn giản hóa quá trình biên dịch JIT.gh-125703: Tôn vinh chính xác các hook
tracemalloctrong các đường dẫnPy_DECREFchuyên dụng. Bản vá của Pablo Galindogh-125593: Sử dụng màu sắc để đánh dấu các vị trí lỗi trong truy nguyên từ nhóm ngoại lệ
gh-125017: Khắc phục sự cố trên một số quyền truy cập nhất định vào
__annotations__của các đối tượngstaticmethodvàclassmethod.gh-125588: Trình tạo PEG của Python hiện có thể sử dụng chuỗi f trong các hành động ngữ pháp. Bản vá của Pablo Galindo
gh-125444: Khắc phục hướng dẫn bất hợp pháp cho kiến trúc Arm cũ hơn. Bản vá của Diego Russo, thử nghiệm của Ross Burton.
gh-118423: Thêm macro
INSTRUCTION_SIZEmới vào trình tạo trường hợp trả về kích thước lệnh hiện tại.gh-125038: Khắc phục sự cố khi lặp qua biểu thức trình tạo sau khi thay đổi trực tiếp trên
gi_frame.f_locals. Bản vá của Mikhail Efimov.gh-124855: Không cho phép hỗ trợ JIT và perf hoạt động cùng lúc. Bản vá của Pablo Galindo
gh-123714: Cập nhật phần tổng hợp JIT để sử dụng LLVM 19
gh-123930: Cải thiện thông báo lỗi khi tập lệnh che khuất mô-đun từ thư viện chuẩn khiến
ImportErrorđược nâng lên trong quá trình nhập "từ". Tương tự, cải thiện thông báo lỗi khi tập lệnh theo dõi mô-đun bên thứ ba cố gắng "từ" nhập thuộc tính từ mô-đun bên thứ ba đó trong khi vẫn khởi tạo.gh-119793:
map()tích hợp hiện có cờ strict chỉ dành cho từ khóa tùy chọn nhưzip()để kiểm tra xem tất cả các lần lặp có độ dài bằng nhau hay không. Bản vá của Wannes Boeykens.
Thư viện¶
C API¶
gh-126554: Khắc phục lỗi xử lý trong các đối tượng
ctypes.CDLLcó thể dẫn đến sự cố trong một số trường hợp hiếm gặp.gh-126061: Thêm
PyLong_IsPositive(),PyLong_IsNegative()vàPyLong_IsZero()để kiểm tra xemPyLongObjectlần lượt là dương, âm hay bằng 0.gh-125608: Khắc phục lỗi trong đó trình theo dõi từ điển (ví dụ:
PyDict_Watch()) trên từ điển thuộc tính của đối tượng (__dict__) không được kích hoạt khi thuộc tính của đối tượng được sửa đổi.gh-123619: Đã thêm chức năng
PyUnstable_Object_EnableDeferredRefcount()để bật tính năng đếm tham chiếu trì hoãn PEP 703.gh-121654: Thêm chức năng
PyType_Freeze()để tạo một loại bất biến. Bản vá của Victor Stinner.gh-120026: Macro
Py_HUGE_VALlà soft deprecated.
xây dựng¶
gh-126691: Đã xóa cờ cấu hình
--with-emscripten-target. Chúng tôi đã hợp nhất các tùy chọnnodevàbrowservà hiện có thể sử dụng cùng một bản dựng, không phụ thuộc vào thời gian chạy mục tiêu.gh-123877: Sử dụng
wasm32-wasip1làm bộ ba mục tiêu cho WASI thay vìwasm32-wasi. Cái sau cuối cùng sẽ được lấy lại cho WASI 1.0 trong khi CPython hiện chỉ hỗ trợ WASI Preview1.gh-126458: Tắt hỗ trợ SIMD cho HACL dưới WASI.
gh-89640: Thứ tự từ float mã cứng dưới dạng endian nhỏ trên WASM.
gh-126206:
make clinichiện chạy Argument Clinic bằng tùy chọn--force, do đó sẽ tái tạo mạnh mẽ mã được tạo.gh-126187: Đã giới thiệu
Tools/wasm/emscripten.pyđể đơn giản hóa việc xây dựng Emscripten.gh-124932: Đối với các bản dựng chéo, hiện đã có hỗ trợ để cài đặt
prefixkhác vớihost_prefixđượcgetpath.pysử dụng. Điều này được đặt thành/theo mặc định cho Emscripten, trên các nền tảng khác, hành vi mặc định vẫn giống như trước.gh-125946: Phiên bản Android được hỗ trợ tối thiểu hiện nay là 7.0 (API cấp 24).
gh-125940: Bản dựng Android hiện hỗ trợ 16 KB page sizes.
gh-89640: Cải thiện khả năng phát hiện thứ tự từ float trên Linux khi bật tối ưu hóa thời gian liên kết.
gh-124928: Bản dựng Emscripten hiện yêu cầu nút >= 18.
gh-115382: Khắc phục lỗi biên dịch chéo khi SOABI máy chủ và mục tiêu khớp nhau.
Python 3.14.0 alpha 1¶
Release date: 2024-10-15
macOS¶
cửa sổ¶
gh-124487: Tăng mức độ hệ điều hành Windows và API lên Windows 10.
gh-124609: Sửa lỗi
_Py_ThreadIdcho các bản dựng Windows bằng MinGW. Bản vá của Tony Roberts.gh-124448: Đã cập nhật gói Tcl/Tk lên 8.6.15.
gh-124254: Đảm bảo các tệp nhị phân có luồng tự do thử nghiệm vẫn được cài đặt khi cập nhật.
gh-123915: Đảm bảo rằng
Tools\msi\buildrelease.batsử dụng các thư mục khác nhau cho các bản dựng AMD64 và ARM64.gh-123418: Cập nhật bản dựng Windows để sử dụng OpenSSL 3.0.15.
gh-123476: Thêm hỗ trợ cho
socket.TCP_QUICKACKtrên nền tảng Windows.gh-122573: Bản dựng Windows của CPython hiện yêu cầu 3.10 hoặc mới hơn.
gh-100256:
mimetypeskhông còn bị lỗi khi gặp khóa đăng ký không thể truy cập được.gh-119679: Đảm bảo các thư viện nhập chính xác được đưa vào bản cài đặt Windows.
gh-119690: Thêm hỗ trợ Unicode và sửa các sự kiện kiểm tra cho
_winapi.CreateNamedPipe.gh-111201: Thêm hỗ trợ cho pyrepl mới trên Windows
gh-119070: Sửa lỗi xử lý
py.exeđối với các shebang như/usr/bin/env python3.12, trước đây được hiểu làpython3.exethay vìpython3.12.exe.gh-117505: Khắc phục sự cố trình cài đặt Windows không chạy Ensurepip trong môi trường bị cô lập hoàn toàn. Điều này có thể gây ra những tương tác không mong muốn với các gói trang web của người dùng.
gh-118209: Tránh gặp sự cố với
mmaptrên Windows khi không thể truy cập được bộ nhớ được ánh xạ do lỗi hệ thống tệp hoặc vi phạm quyền truy cập.gh-79846: Làm cho
ssl.create_default_context()bỏ qua các chứng chỉ không hợp lệ trong kho chứng chỉ Windows
Công cụ/Bản trình diễn¶
gh-123418: Cập nhật quy trình công việc GitHub CI để sử dụng OpenSSL 3.0.15 và multissltests để sử dụng 3.0.15, 3.1.7 và 3.2.3.
Kiểm tra¶
gh-125041: Kích hoạt lại các kiểm tra đã bỏ qua cho
zlibtrên kiến trúc s390x: chỉ bỏ qua kiểm tra các byte nén, điều này có thể khác nhau giữa quá trình triển khai phần mềm của zlib và triển khai tăng tốc phần cứng.gh-124378: Đã cập nhật
test_ttkđể vượt qua Tcl/Tk 8.6.15.gh-124213: Phát hiện xem bộ kiểm tra có đang chạy bên trong vùng chứa systemd-nspawn hay không bằng tùy chọn
--suppress-sync=truevà bỏ qua các kiểm tratest_osvàtest_mmapkhông thành công trong trường hợp này.gh-124190: Thêm khả năng bỏ qua toàn bộ tập tin hoặc thư mục trong công cụ CI cảnh báo kiểm tra
gh-121921: Cập nhật
Lib/test/crashers/bogus_code_obj.pyđể nó gặp sự cố trở lại bình thường.gh-112301: Thêm công cụ để kiểm tra những thay đổi trong cảnh báo của trình biên dịch. Bản vá của Nate Ohlson.
gh-59022: Thêm bài kiểm tra cho
pkgutil.extend_path(). Bản vá của Andreas Stocker.gh-99242:
os.getloadavg()có thể đưa raOSErrorkhi chạy kiểm tra hồi quy trong một số điều kiện nhất định (ví dụ: chroot). Lỗi này hiện đã được phát hiện và bỏ qua vì báo cáo mức tải trung bình là tùy chọn.gh-121084: Sửa lỗi rò rỉ ngẫu nhiên test_typing. Xóa bộ đệm ABC đang gõ khi chạy kiểm tra tìm phản hồi (tùy chọn
-R): gọi_abc_caches_clear()khi gõ các lớp trừu tượng và các lớp con của chúng. Bản vá của Victor Stinner.gh-121160: Thêm bài kiểm tra cho
readline.set_history_length(). Lưu ý rằng thử nghiệm này có thể thất bại trên các thư viện readline.gh-121200: Sửa lỗi
test_expanduser_pwd2()củatest_posixpath. Gọigetpwnam()để nhậnpw_dir, vì nó có thể khác vớigetpwall()pw_dir. Bản vá của Victor Stinner.gh-121188: Khi tạo tệp JUnit XML, regrtest hiện thoát các ký tự không hợp lệ trong XML, chẳng hạn như ký tự điều khiển chr(27) được sử dụng trong chuỗi thoát ANSI. Bản vá của Victor Stinner.
gh-120801: Đã dọn dẹp các thiết bị cố định để kiểm tra importlib.metadata và hợp nhất hành vi với 'test.support.os_helper'.
gh-119727: Thêm tùy chọn dòng lệnh
--single-processvào trình chạy thử nghiệm Python (regrtest). Bản vá của Victor Stinner.gh-119273: Trình chạy thử Python không còn chạy thử nghiệm bằng TTY (ví dụ: test_ioctl) trong nhóm quy trình (sử dụng
setsid()). Trước đây, các bài kiểm tra sử dụng TTY đều bị bỏ qua. Bản vá của Victor Stinner.gh-119050: người chạy thử regrtest: Thêm hỗ trợ XML cho trình kiểm tra phản ánh (tùy chọn -R). Bản vá của Victor Stinner.
gh-101525: Bỏ qua
test_gdbnếu nhị phân được di dời bởi BOLT. Bản vá của Donghee Na.gh-107562: Chứng chỉ kiểm tra đã được cập nhật để hết hạn trong tương lai. Điều này cho phép kiểm tra Y2038 với thời gian hệ thống được đặt sau đó, để các sự cố Y2038 thực tế có thể được phát hiện và không bị che lấp bởi các lỗi chứng chỉ hết hạn.
Bảo mật¶
gh-125140: Xóa thư mục hiện tại khỏi
sys.pathkhi sử dụng PyREPL.gh-123678: Nâng cấp libexpat lên 2.6.3
gh-112301: Kích hoạt các tùy chọn trình biên dịch cảnh báo các lỗ hổng bảo mật tiềm ẩn.
gh-122792: Đã thay đổi
ipaddress.IPv6Addressđược ánh xạ IPv4 để sử dụng nhất quán giá trị địa chỉ IPv4 được ánh xạ cho các thuộc tính quyết định. Các thuộc tính có hành vi cố định làis_multicast,is_reserved,is_link_local,is_globalvàis_unspecified.gh-112301: Thêm khả năng bỏ qua cảnh báo trên mỗi tệp với số lượng cảnh báo trong công cụ kiểm tra cảnh báo. Bản vá của Nate Ohlson.
gh-112301: Thêm tính năng theo dõi cảnh báo macOS vào công cụ kiểm tra cảnh báo. Bản vá của Nate Ohlson.
gh-122133: Xác thực kết nối ổ cắm cho dự phòng
socket.socketpair()trên các nền tảng không cóAF_UNIXnhư Windows.Bản vá của Gregory P. Smith <greg@krypto.org> và Seth Larson <seth@python.org>. Báo cáo của Ellie <el@horse64.org>
gh-121957: Đã sửa lỗi thiếu các sự kiện kiểm tra xung quanh việc sử dụng Python tương tác, giờ đây cũng kích hoạt đúng cách cho
python -i, cũng như chopython -m asyncio. Các sự kiện được đề cập làcpython.run_stdinvàcpython.run_startup.gh-112301: Kích hoạt tính năng bảo vệ thời gian chạy cho glibc để hủy bỏ quá trình thực thi khi gặp phải hành vi không an toàn, đối với tất cả các nền tảng ngoại trừ Windows.
gh-121285: Loại bỏ việc quay lui khỏi phân tích cú pháp tiêu đề tarfile cho các tiêu đề thưa thớt
hdrcharset, PAX và GNU.gh-112301: Thêm tùy chọn trình biên dịch mặc định để cải thiện tính bảo mật. Kích hoạt -Wimplicit-fallthrough, -fstack-protector-strong, -Wtrampolines.
gh-118773: Sửa lỗi tạo ACL trong
os.mkdir()trên Windows để hoạt động chính xác trên các máy không phải tiếng Anh.gh-118486:
os.mkdir()trên Windows hiện chấp nhận mode của0o700để hạn chế thư mục mới cho người dùng hiện tại. Điều này khắc phục CVE 2024-4030 ảnh hưởng đếntempfile.mkdtemp()trong các trường hợp trong đó thư mục tạm thời cơ sở dễ dàng hơn mặc định.
Thư viện¶
gh-125422: Đã sửa lỗi
pdbvàbdbcó thể bước vào khung người gọi phía dưới.gh-100141: Đã sửa lỗi
pdbsẽ bị kẹt trong vòng lặp vô hạn khi gỡ lỗi một tệp trống.gh-53203: Sửa
time.strptime()cho các định dạng%c,%xvà%Xở nhiều ngôn ngữ sử dụng chữ số không phải ASCII, như tiếng Ba Tư, tiếng Miến Điện, tiếng Odia và tiếng Shan.gh-125206: Đã thêm giải pháp cho các phiên bản libffi cũ. Mô-đun ctypes chỉ hỗ trợ double complex với libffi >= 3.3.0. Bản vá của Mikhail Efimov.
gh-89967: Đảm bảo
WeakKeyDictionaryvàWeakValueDictionaryan toàn trước các đột biến đồng thời từ các luồng khác. Bản vá của Kumar Aditya.gh-125260: Tham số
gzip.compress()mtime hiện được mặc định là 0 cho đầu ra có thể tái tạo. Bản vá của Bernhard M. Wiedemann và Adam Turner.gh-125243: Khắc phục tình trạng chạy đua dữ liệu khi tạo đối tượng
zoneinfo.ZoneInfotrong bản dựng luồng miễn phí.gh-125254: Sửa lỗi trong đó ArgumentError bao gồm tùy chọn không rõ ràng không chính xác trong
argparse.gh-125235: Giữ đường dẫn
tkinterTCL trong venv trỏ đến cài đặt cơ sở trên Windows.gh-61011: Sửa lỗi kế thừa các nhóm lồng nhau loại trừ lẫn nhau từ trình phân tích cú pháp gốc trong
argparse.ArgumentParser. Trước đây, tất cả các nhóm lồng nhau loại trừ lẫn nhau đều mất kết nối với nhóm chứa chúng và được hiển thị là thuộc về trình phân tích cú pháp.gh-125118: Không sao chép các giá trị tùy ý vào _Bool trong mô-đun
struct.gh-125069: Khắc phục sự cố trong đó việc cung cấp đối tượng
pathlib.PurePathlàm đối số khởi tạo cho đối tượngPurePaththứ hai với mộtparserkhác dẫn đến việc các đối số cho trình khởi tạo của đối tượng cũ được trình phân tích cú pháp của đối tượng sau tham gia.gh-125096: Nếu biến môi trường
PYTHON_BASIC_REPLđược đặt, mô-đunsitekhông còn nhập mô-đun_pyreplnữa. Hơn nữa, mô-đunsitehiện tôn trọng các tùy chọn dòng lệnh-Evà-I: bỏ quaPYTHON_BASIC_REPLtrong trường hợp này. Bản vá của Victor Stinner.gh-124969: Sửa
locale.nl_langinfo(locale.ALT_DIGITS). Bây giờ, nó trả về một bộ có tối đa 100 chuỗi (một bộ trống trên hầu hết các ngôn ngữ). Trước đây nó trả về mục đầu tiên của bộ dữ liệu đó hoặc một chuỗi trống.gh-124960: Khắc phục sự hỗ trợ cho cờ tương lai
barry_as_FLUFLtrong REPL mới.gh-69998: Sửa
locale.nl_langinfo()trong trường hợp các danh mục khác nhau có ngôn ngữ khác nhau. Hàm hiện đặt tạm thời ngôn ngữLC_CTYPEtrong một số trường hợp. Thay đổi tạm thời này ảnh hưởng đến các chủ đề khác.gh-124958: Khắc phục lỗi tái chế trong các trường hợp ngoại lệ được nêu ra từ
asyncio.TaskGroupvà cách triển khai python củaasyncio.Futuregh-53203: Sửa
time.strptime()cho các định dạng%cvà%xở nhiều ngôn ngữ: Ả Rập, Bislama, Breton, Bodo, Kashubian, Chuvash, Estonia, Pháp, Ireland, Ge'ez, Gurajati, Manx Gaelic, Do Thái, Hindi, Chhattisgarhi, Haiti Kreyol, Nhật Bản, Kannada, Hàn Quốc, Marathi, Malay, Na Uy, Nynorsk, Punjabi, Rajasthani, Tok Pisin, Yoruba, Yue Trung Quốc, Yau/Nungon và Trung Quốc.gh-123961: Chuyển đổi
cursessang khởi tạo nhiều pha (PEP 489), từ đó khắc phục rò rỉ tham chiếu khi tắt trình thông dịch. Bản vá của Bénédikt Trần.gh-117151: Kích thước bộ đệm mặc định được
shutil.copyfileobj()sử dụng đã tăng từ 64k lên 256k trên nền tảng không phải Windows. Nó đã lớn hơn trên Windows.gh-90102: Bỏ qua lệnh gọi hệ thống
isattytrong khi mở() khi tệp được xác định không phải là thiết bị ký tự. Điều này giúp cải thiện hiệu suất một chút khi đọc toàn bộ tệp.gh-124917: Cho phép gọi
os.path.exists()vàos.path.lexists()bằng đối số từ khóa trên Windows. Sửa lỗi hồi quy trong 3.13.0.gh-65865:
argparsehiện phát sinh lỗi sớm đối với các đối sốhelpkhông hợp lệ thànhadd_argument(),add_subparsers()vàadd_parser().gh-124653: Khắc phục sự cố phát hiện Hàng đợi API tối thiểu mà mô-đun
loggingcần. Bản vá của Bénédikt Trần.gh-91818: CLI của nhiều mô-đun (
ast,ensurepip,json,pdb,sqlite3,tokenize,venv) hiện sử dụng tên thực thi thực tế thay vì chỉ đơn giản là "python" để hiển thị trong thông báo sử dụng.gh-124858: Sửa các chu kỳ tham chiếu còn sót lại trong dấu vết trong
asyncio.open_connection()khi được sử dụng vớihappy_eyeballs_delaygh-124390: Đã sửa lỗi
AssertionErrorkhi sử dụngasyncio.staggered.staggered_race()vớiasyncio.eager_task_factory.gh-85935:
argparse.ArgumentParser.add_argument()hiện đưa ra một ngoại lệ nếu hành động không sử dụng đối số (như 'store_const' hoặc 'store_true') hoặcnargs=0rõ ràng được chỉ định cho đối số vị trí.gh-124835: Làm cho
tomllib.loads()tăngTypeErrorchứ không phảiAttributeErrortrên các loại đầu vào xấu không có thuộc tínhreplace. Cải thiện thông báo lỗi khi nhận đượcbytes.gh-124693: Sửa lỗi
argparsekhông nhận ra số phức âm hoặc số âm bằng ký hiệu khoa học.gh-124787: Sửa
typing.TypeAliasTypevới đối sốtype_paramskhông chính xác. Bây giờ, nó sẽ tăngTypeErrorkhi một tham số loại không có mặc định theo sau một tham số mặc định và khi một mục trong bộ dữ liệutype_paramskhông phải là đối tượng tham số loại.gh-66436: Cải thiện giá trị mặc định buổi lễ cho
argparse.ArgumentParser. Bây giờ nó sẽ bao gồm tên của tệp thực thi Python cùng với tên mô-đun hoặc gói hoặc đường dẫn đến thư mục, tệp ZIP hoặc thư mục trong tệp ZIP nếu mã được chạy theo cách đó.gh-116850: Sửa
argparsecho các không gian tên có lệnh không thể ghi trực tiếp (ví dụ: các lớp).gh-101552: Thêm tham số annoation_format vào
inspect.signature(). Thêm tham số quote_annotation_strings vàoinspect.Signature.format(). Sử dụng chức năng mới để cải thiện việc hiển thị chú thích trong chữ ký trongpydoc. Bản vá của Jelle Zijlstra.gh-58573: Khắc phục xung đột giữa các tùy chọn dài viết tắt trong trình phân tích cú pháp gốc và trình phân tích cú pháp con trong
argparse.gh-124594: Tất cả lời nhắc
asyncioREPL đều chạy trong cùng mộtcontext. Đóng góp bởi Bartosz Sławecki.gh-61181: Khắc phục sự hỗ trợ của sự lựa chọn với giá trị chuỗi trong
argparse. Chuỗi con của chuỗi đã chỉ định không còn được coi là giá trị hợp lệ.gh-116750: Cung cấp
sys.monitoring.clear_tool_id()để hủy đăng ký tất cả các sự kiện và lệnh gọi lại do công cụ đặt.gh-124552: Cải thiện độ chính xác trong quá trình kiểm tra của
bdbvề khả năng có điểm dừng trong một khung. Điều này giúp bạn có thể tắt các sự kiện không cần thiết trong hàm.gh-124538: Đã khắc phục sự cố khi sử dụng
gc.get_referents()trên đối tượng viên nang.gh-80259: Khắc phục sự hỗ trợ của
argparseđối với các đối số vị trí vớinargs='?',default=argparse.SUPPRESSvàtypeđược chỉ định.gh-120378: Khắc phục sự cố liên quan đến tràn số nguyên trong
curses.resizeterm()vàcurses.resize_term().gh-124498: Sửa
typing.TypeAliasTypekhông chung chung, khitype_paramslà một bộ trống.gh-53834: Sửa lỗi hỗ trợ đối số với sự lựa chọn trong
argparse. Các đối số vị trí có lảm nhảm bằng'?'hoặc'*'không còn kiểm tra mặc định vớichoicesnữa. Các đối số tùy chọn cónargsbằng'?'không còn kiểm tra const vớichoicesnữa.gh-123884: Đã sửa lỗi trong itertools.tee() xử lý các đầu vào tee khác (một tee trong một tee). Đầu ra hiện có các trình vòng lặp mới độc lập n đã hứa. Trước đây, trình vòng lặp đầu tiên giống hệt (không độc lập) với trình vòng lặp đầu vào. Điều này đôi khi sẽ mang lại kết quả đáng ngạc nhiên.
gh-123017: Do kết quả không đáng tin cậy trên một số thiết bị,
time.strftime()không còn chấp nhận năm âm trên Android.gh-123014:
os.pidfd_open()vàsignal.pidfd_send_signal()hiện không khả dụng khi xây dựng dựa trên các cấp độ API của Android cũ hơn 31, vì các lệnh gọi hệ thống cơ bản có thể gây ra sự cố.gh-124176: Thêm hỗ trợ cho
dataclasses.dataclass()trongunittest.mock.create_autospec(). Bây giờcreate_autospecsẽ kiểm tra các lớp dữ liệu tiềm năng và sử dụng hàmdataclasses.fields()để lấy thông tin thông số kỹ thuật.gh-124345:
argparsehỗ trợ các tùy chọn dài một dấu gạch ngang viết tắt được phân tách bằng=khỏi giá trị của nó.gh-124400: Đã sửa lỗi
pdbtrong đóuntilkhông có tác dụng khi xuất hiện theo chuỗicommands. Ngoài ra, tránh in thông tin khung tại điểm ngắt có danh sách lệnh chứa lệnh tiếp tục thực thi.gh-90562: Sửa đổi các lớp dữ liệu để hỗ trợ super() không có đối số khi
slots=Trueđược chỉ định. Điều này hoạt động bằng cách sửa đổi tất cả các tham chiếu đến__class__để trỏ đến lớp mới được tạo.gh-104860: Sửa lỗi không cho phép viết tắt các tùy chọn dài một dấu gạch ngang trong
argparsevớiallow_abbrev=False.gh-63143: Sửa lỗi phân tích cú pháp các đối số loại trừ lẫn nhau trong
argparse. Các đối số có giá trị giống với giá trị mặc định (ví dụ: boolean, số nguyên nhỏ, chuỗi trống hoặc chuỗi 1 ký tự) không còn được coi là "không có mặt".gh-72795: Các đối số vị trí có lảm nhảm bằng
'*'hoặcargparse.REMAINDERkhông còn cần thiết nữa. Điều này cho phép sử dụng đối số vị trí cónargs='*'và không códefaulttrong nhóm loại trừ lẫn nhau và cải thiện thông báo lỗi về các đối số bắt buộc.gh-59317: Sửa lỗi phân tích cú pháp đối số vị trí với lảm nhảm bằng
'?'hoặc'*'nếu nó đứng trước một tùy chọn và một đối số vị trí khác.gh-100980: Thuộc tính
_fields_củactypes.StructurevàUnionkhông còn được đặt nếu thao tác setattr gây ra lỗi.gh-53780:
argparsehiện bỏ qua"--"(dấu gạch ngang kép) đầu tiên giữa tùy chọn và lệnh.gh-124217: Thêm RFC 9637 khối IPv6 dành riêng
3fff::/20trong mô-đunipaddress.gh-111513: Cải thiện thông báo lỗi có thể do
datetime.date.fromtimestamp()đưa ra.gh-124248: Đã khắc phục sự cố có thể xảy ra khi sử dụng
structđể xử lý các trường 'chuỗi Pascal' có độ rộng bằng 0 (0p).gh-81691: Khắc phục việc xử lý nhiều
"--"(dấu gạch ngang kép) trongargparse. Bây giờ chỉ có cái đầu tiên đã bị xóa, tất cả những cái tiếp theo bây giờ được hiểu theo nghĩa đen.gh-87041: Sửa lỗi trong
argparsetrong đó trợ giúp đối số phân tích cú pháp con dài dòng được thụt lề không chính xác.gh-84559: Phương thức khởi động
multiprocessingmặc định trên Linux và các hệ thống POSIX khác đã được thay đổi từ"fork"thường không an toàn thành"forkserver"(khi nền tảng này hỗ trợ gửi các thẻ xử lý tệp qua các đường ống như hầu hết đều làm) hoặc"spawn". Mac và Windows không thay đổi vì chúng đã mặc định là"spawn".gh-124212: Sửa biến không hợp lệ trong
venvxử lý liên kết tượng trưng bị lỗi trên Windowsgh-124171: Thêm cách giải quyết cho việc triển khai
fmod()bị hỏng trên Windows, dấu 0 lỏng lẻo đó (ví dụ:fmod(-10, 1)trả về0.0). Bản vá của Sergey B Kirpicchev.gh-123978: Loại bỏ
time.thread_time()vàtime.thread_time_ns()bị hỏng trên NetBSD.gh-123934: Sửa lỗi
unittest.mock.MagicMockđặt lại các phương thức ma thuật trả về giá trị sau khi.reset_mock(return_value=True)được gọi.gh-124016: Cập nhật cơ sở dữ liệu
unicodedatalên Unicode 16.0.0.gh-123968: Sửa giao diện dòng lệnh cho mô-đun
randomđể chọn số float giữa 0 và N, không phải 1 và N.gh-123945: Sửa lỗi
argparsekhông nhận ra số âm có dấu gạch dướigh-123935: Sửa lỗi phát hiện vị trí gốc cho các lớp dữ liệu kế thừa từ các lớp có
__dictoffset__.gh-123892: Thêm
"_wmi"vàosys.stdlib_module_names. Bản vá của Victor Stinner.gh-84808: Khắc phục lỗi xử lý trong phương thức
socketconnect_ex()trên các nền tảng màerrnocó thể âm.gh-123756: Đã thêm đối số mới
modevàopdb.Pdb. Chỉ cho phéppdbtừ dòng lệnh sử dụng lệnhrestart.gh-122765: Sửa lỗi trích dẫn không cân bằng xảy ra khi activate.csh trong
venvđược lấy nguồn bằng lời nhắc tùy chỉnh chứa dấu ngoặc kép hoặc dòng mới không ghép đôi.gh-123657: Khắc phục sự cố và rò rỉ bộ nhớ trong
decimal.getcontext(). Nó bị lỗi khi sử dụng bối cảnh luồng cục bộ của--with-decimal-contextvar=no.gh-123339: Sửa
inspect.getsource()cho các lớp trong mô-đuncollections.abcvàdecimal(để triển khai Python thuần túy).inspect.getcomments()hiện tăng OSError thay vì IndexError nếu giá trị__firstlineno__cho một lớp nằm ngoài giới hạn.gh-123374: Xóa kiểm tra mục ghi nhớ được xác định lại trong
pickletools.dis().gh-123504: Đã sửa lỗi rò rỉ tham chiếu khi hoàn thiện
tkinter.gh-123430: Các trang được tạo bởi mô-đun
http.servercho phép trình duyệt áp dụng chế độ tối mặc định của nó.gh-123446: Sửa tên hàm trống trong
TypeErrorkhi sử dụngcsv.reader(),csv.writer()hoặccsv.register_dialect()mà không có đối số bắt buộc.gh-123448: Đã sửa lỗi rò rỉ bộ nhớ của
typing.NoDefaultbằng cách di chuyển nó sang mảng kiểu tĩnh.gh-123409: Sửa đầu ra
ipaddress.IPv6Address.reverse_pointertheo RFC 3596, §2.5. Bản vá của Bénédikt Trần.gh-123089: Đảm bảo
weakref.WeakSetan toàn trước các đột biến đồng thời trong khi nó đang được lặp lại. Bản vá của Kumar Aditya.gh-123363: Hiển thị giá trị chuỗi của
CONTAINS_OPoparg trong đầu radis. Bản vá của Alexandr153.gh-123341: Thêm
__class_getitem__()vàotkinter.Eventđể hỗ trợ chỉ số loại khi chạy. Bản vá của Adonis Rakateli.gh-123340: Hiển thị giá trị chuỗi của
IS_OPoparg trong đầu radis.gh-119518: Tăng tốc độ chuẩn hóa các đối tượng
pathlib.PurePathvàPathbằng cách không thực hiện các phần chuỗi.gh-123270: Đã áp dụng một bản sửa lỗi mang tính phẫu thuật hơn đối với các tải trọng không đúng định dạng trong
zipfile.Pathgây ra các vòng lặp vô hạn (gh-122905) mà không phá vỡ nội dung bằng cách sử dụng các ký tự hợp lệ.gh-73991: Thêm
pathlib.Path.copy_into()vàmove_into(), sao chép và di chuyển các tập tin và thư mục vào các thư mục existing.gh-123228: Sửa kiểu trả về cho
_pyrepl.readline._ReadlineWrapper.get_line_buffer()thànhstr(). Bản vá của Sergey B Kirpicchev.gh-123240: Tăng cường các sự kiện kiểm tra cho
input()trong REPL mới.gh-76960: Sửa
urllib.parse.urljoin()vàurllib.parse.urldefrag()cho các URI chứa các thành phần trống. Ví dụ:urljoin()có tham chiếu tương đối "?" bây giờ đặt truy vấn trống và xóa đoạn. Giữ nguyên các thành phần trống (quyền, thông số, truy vấn, đoạn) trongurljoin(). Giữ nguyên các thành phần trống (quyền, thông số, truy vấn) trongurldefrag().gh-116810: Giải quyết rò rỉ bộ nhớ được giới thiệu trong
sslcủa CPython 3.10 khi thuộc tínhssl.SSLSocket.sessionđược truy cập. Tăng tốc độ truy cập đọc và ghi vào thuộc tính nói trên bằng cách không còn sao chép các đối tượng phiên một cách không cần thiết thông qua tuần tự hóa.gh-123243: Sửa lỗi rò rỉ bộ nhớ trong
_decimal.gh-122546: Luôn sử dụng cùng một tên tệp cho các ngoại lệ khác nhau trong bản thay thế mới. Bản vá của Sergey B Kirpicchev.
gh-123213: Việc gán
xml.etree.ElementTree.Element.extend()vàElementkhông còn ẩn ngoại lệ bên trong nếu một trình tạo sai được thông qua. Bản vá của Bar Harel.gh-85110: Giữ nguyên đường dẫn tương đối trong URL mà không cần netloc trong
urllib.parse.urlunsplit()vàurllib.parse.urlunparse().gh-122909: Trong urllib.request khi URLError được nâng lên khi mở ftp URL, đối số ngoại lệ giờ đây nhất quán là một chuỗi. Các phiên bản trước đã chuyển một chuỗi hoặc một phiên bản ngoại lệ ftplib làm đối số cho URLError.
gh-123084: Không dùng nữa
shutil.ExecError, hàm này chưa được nâng cấp bởi bất kỳ hàmshutilnào kể từ Python 3.4. Bây giờ nó là bí danh choRuntimeError.gh-123085: Trong lệnh gọi đơn giản tới
importlib.resources.files(), hãy đảm bảo khung của người gọi được phát hiện chính xác khiimportlib.resourceschỉ có sẵn dưới dạng mô-đun được biên dịch (không có nguồn).gh-123067: Khắc phục độ phức tạp bậc hai khi phân tích cú pháp các giá trị cookie được trích dẫn
"bằng dấu gạch chéo ngược củahttp.cookies.gh-123049: Thêm hỗ trợ cho
UNNAMED_SECTIONtrongconfigparser.ConfigParser.add_section().gh-121735: Khi làm việc với kho lưu trữ zip, importlib.resources giờ đây tôn trọng chính xác các tham chiếu liền kề với mô-đun (ví dụ:
files(pkg.mod)chứ không chỉfiles(pkg)).gh-122981: Sửa
inspect.getsource()cho các lớp được tạo bằng các lớp cơ sở Python (ví dụ: enum).gh-122903:
zipfile.Path.globhiện khớp chính xác các thư mục thay vì âm thầm bỏ qua chúng.gh-122905: các đối tượng
zipfile.Pathhiện đã loại bỏ tên khỏi tệp zip.gh-122873: Cho phép mô-đun
jsonhoạt động như một tập lệnh bằng cách sử dụng khóa chuyển-m:python -m json. Xem tài liệu JSON command-line interface. Bản vá của Trey Hunner.gh-122858: Không dùng
asyncio.iscoroutinefunction()nữa mà thay vào đó làinspect.iscoroutinefunction().gh-116263:
logging.handlers.RotatingFileHandlerkhông còn cuộn qua các tệp nhật ký trống nữa.gh-105376: Khôi phục phương thức
loggingwarn()không được dùng nữa. Nó đã bị xóa trong Python 3.13 alpha 1. Giữ phương thứcwarn()không được dùng nữa trong Python 3.13. Bản vá của Victor Stinner.gh-122311: Cải thiện lỗi trong mô-đun
pickle.PicklingErrorhiện được nâng lên thường xuyên hơn thay vìUnicodeEncodeError,ValueErrorvàAttributeError, và ngoại lệ ban đầu được gắn với nó. Cải thiện và thống nhất các thông báo lỗi khi triển khai Python và C.gh-122744: Chuyển phiên bản pip đi kèm trong Assurancepip lên phiên bản 24.2.
gh-118761: Cải thiện thời gian nhập của
pprintkhoảng bảy lần. Bản vá của Hugo van Kemenade.gh-118974: Thêm tham số
decoratorvàodataclasses.make_dataclass()để tùy chỉnh việc tạo chức năng của các lớp dữ liệu.gh-118814: Sửa hàm tạo
typing.TypeVarkhi tên được truyền theo từ khóa.gh-122637: Điều chỉnh
cmath.tanh(nanj)vàcmath.tanh(infj)cho các tiêu chuẩn C gần đây.gh-122478: Xóa các khung bên trong khỏi dấu vết được hiển thị trong
code.InteractiveInterpretervớisys.excepthook()không mặc định. Lưu dấu vết chính xác trongsys.last_tracebackvà cập nhật thuộc tính__traceback__củasys.last_valuevàsys.last_exc.gh-116622: Trên Android, các hằng số
FICLONEvàFICLONERANGEkhông còn đượcfcntlhiển thị nữa vì các ioctl này bị SELinux chặn.gh-82378: Đảm bảo rằng REPL mới diễn giải
sys.tracebacklimitgiống như cách REPL cổ điển đã làm.gh-122334: Khắc phục sự cố khi nhập
sslsau khi trình thông dịch chính khởi động lại.gh-122459: Tối ưu hóa
picklingtheo tên đối tượng không có thuộc tính__module__.gh-87320: Trong
code.InteractiveInterpreter, xử lý các trường hợp ngoại lệ do gọisys.excepthook()không mặc định. Trước đó, ngoại lệ xuất hiện ở người gọi, kết thúc REPL.gh-122272: Trên một số nền tảng như Linux, năm với thế kỷ không được đệm 0 khi được định dạng bởi
strftime()với các chỉ định dành riêng cho C99'%C'hoặc'%F'. Hành vi đệm 0 hiện được đảm bảo khi các bộ xác định định dạng'%C'và'%F'được thư viện C hỗ trợ. Bản vá của Ben Hsinggh-122400: Xử lý
ValueErrors đượcos.stat()đưa ra trongfilecmp.dircmpvàfilecmp.cmpfiles(). Bản vá của Bénédikt Trần.gh-121650: Các tiêu đề
emailcó dòng mới được nhúng hiện được trích dẫn trên đầu ra. Zz002zz bây giờ sẽ từ chối tuần tự hóa (ghi) các tiêu đề được gấp hoặc phân cách một cách không an toàn; xemverify_generated_headers. (Được đóng góp bởi Bas Bloemsaat và Petr Viktorin trong gh-121650.)gh-122332: Đã sửa lỗi segfault với
asyncio.Task.get_coro()khi sử dụng nhà máy tác vụ háo hức.gh-105733:
ctypes.ARRAY()hiện là soft deprecated: nó không còn phát ra cảnh báo không dùng nữa và không được lên lịch xóa.gh-122213: Thêm ghi chú cho lỗi tuần tự hóa dưa chua cho phép xác định nguồn gốc của lỗi.
gh-119180: Là một phần của PEP 749, hãy thêm các thuộc tính sau để tùy chỉnh đánh giá phạm vi chú thích:
evaluate_valuetrêntyping.TypeAliasTypeevaluate_bound,evaluate_constraintsvàevaluate_defaulttrêntyping.TypeVarevaluate_defaulttrêntyping.ParamSpecevaluate_defaulttrêntyping.TypeVarTuple
gh-119180: Khắc phục việc xử lý các lớp bằng siêu dữ liệu tùy chỉnh trong
annotationlib.get_annotations.gh-122170: Xử lý
ValueErrors đượcos.stat()đưa ra tronglinecache. Bản vá của Bénédikt Trần.gh-122163: Thêm ghi chú cho lỗi tuần tự hóa JSON cho phép xác định nguồn gốc của lỗi.
gh-122129: Cải thiện khả năng hỗ trợ của bộ mô tả phương thức và trình bao bọc trong tiêu đề trợ giúp.
gh-122145: Khắc phục sự cố khi báo cáo dấu vết tương ứng với mã Python phát ra nội dung AST trống. Bản vá của Nikita Sobolev và Bénédikt Tran.
gh-121723: Làm cho
logging.config.dictConfig()chấp nhận bất kỳ đối tượng nào triển khai API hàng đợi công khai. Xem phần queue configuration để biết chi tiết. Bản vá của Bénédikt Trần.gh-82951: Việc tuần tự hóa các đối tượng có
__qualname__phức tạp (chẳng hạn như các phương thức không liên kết và các lớp lồng nhau) theo tên không còn liên quan đến việc tuần tự hóa các đối tượng cha mẹ theo giá trị trong giao thức dưa chua < 4.gh-120754:
Pathlib.read_byteskhông còn mở tệp ở chế độ I/O đệm của Python nữa. Điều này làm giảm chi phí chung khi mã đọc toàn bộ tệp dẫn đến tăng tốc độ khiêm tốn.gh-113785:
csvhiện phân tích chính xác các trường số (khi được sử dụng vớicsv.QUOTE_NONNUMERIChoặccsv.QUOTE_STRINGS) bắt đầu bằng ký tự thoát.gh-122088:
@warnings.deprecatedhiện sao chép trạng thái coroutine của các hàm và phương thức đểinspect.iscoroutinefunction()trả về kết quả chính xác.gh-122081: Khắc phục sự cố trong chức năng tùy chọn
decimal.IEEEContext()có sẵn thông qua cờ cấu hìnhEXTRA_FUNCTIONALITY.gh-73991: Thêm
pathlib.Path.move(), di chuyển cây tập tin hoặc thư mục.gh-121268: Xóa cách giải quyết cho các hệ thống 754 không phải IEEE trong
cmath.gh-119698: Do không được quan tâm nhiều đến
symtable.Class.get_methods(), phương thức này được đánh dấu là không dùng nữa và sẽ bị xóa trong Python 3.16. Bản vá của Bénédikt Trần.gh-121889: Điều chỉnh
cmath.acosh(complex('0+nanj'))cho các tiêu chuẩn C gần đây.gh-121804: Hiển thị chính xác các vị trí lỗi khi
SyntaxErrorxuất hiện trong bản thay thế mới. Bản vá của Sergey B Kirpicchev.gh-121797: Thêm hàm tạo
Fractionthay thếFraction.from_number().gh-121798: Thêm hàm tạo
Decimalthay thếDecimal.from_number().gh-120930: Đã sửa lỗi do gh-92081 giới thiệu đã thêm khoảng trống bổ sung không chính xác vào các từ được mã hóa xuất hiện trong tiêu đề được gói.
gh-57141: Đối số shallow cho
filecmp.dircmp(mới trong Python 3.13) hiện chỉ có từ khóa.gh-121245: Đơn giản hóa việc xử lý tệp lịch sử trong trình trợ giúp
site.register_readline(). BiếnCAN_USE_PYREPLbây giờ sẽ được khởi tạo khi được nhập. Bản vá của Sergey B Kirpicchev.gh-121249: Hỗ trợ các loại float complex và double complex C trong mô-đun
structnếu trình biên dịch có số học phức tạp C11. Bản vá của Sergey B Kirpicchev.gh-121486: Các hàm
mathisqrt(),log(),log2()vàlog10()hiện hỗ trợ các số nguyên lớn hơn2**2**32trên nền tảng 32 bit.gh-121474: Khắc phục tình trạng thiếu kiểm tra độ chính xác cho
partiesarg trong hàm tạothreading.Barrier. Bản vá của Clinton Christian (pygeek).gh-121450: Các điểm dừng được mã hóa cứng (
breakpoint()vàpdb.set_trace()) hiện sử dụng lại phiên bảnPdbgần đây nhất gọiPdb.set_trace(), thay vì tạo một phiên bản mới mỗi lần. Do đó, tất cả dữ liệu cụ thể của phiên bản nhưdisplayvàcommandsđều được giữ nguyên trên các điểm dừng được mã hóa cứng.gh-119169: Tăng tốc độ
os.walk()một chút bằng cách đơn giản hóa việc xử lý ngoại lệ.gh-121423: Cải thiện thời gian nhập của
socketbằng cách lười biếng nhập mô-đun và viếtsocket.errorTabdưới dạng hằng số.gh-59110:
zipimporthiện hỗ trợ các gói không gian tên khi không có mục nhập thư mục nào tồn tại.gh-119004: Khắc phục sự cố trong OrderedDict.__eq__ khi toán hạng bị thay đổi trong quá trình kiểm tra. Bản vá của Bénédikt Trần.
gh-121313: Giới hạn kích thước đọc trong lớp
multiprocessing.connection.Connectionở mức 64 KiB để ngăn chặn việc phân bổ quá mức bộ nhớ và các lệnh gọi hệ thống quản lý bộ nhớ không cần thiết.gh-121332: Sửa lỗi hàm tạo của các nút
astbằng_attributestùy chỉnh. Trước đây, việc chuyển các thuộc tính tùy chỉnh sẽ tạo raDeprecationWarning. Việc truyền các đối số cho hàm tạo không có trong_fieldshoặc_attributesvẫn không được dùng nữa. Bản vá của Jelle Zijlstra.gh-121245: Sửa lỗi xử lý lịch sử lệnh của REPL mới khiến tệp lịch sử bị xóa khi thoát REPL.
gh-121210: Xử lý các nút AST thiếu các trường hoặc thuộc tính thời gian chạy trong
ast.compare(). Bản vá của Bénédikt Trần.gh-121163: Thêm hỗ trợ cho
alldưới dạngactionhợp lệ chowarnings.simplefilter()vàwarnings.filterwarnings().gh-121151: Sửa lỗi gói văn bản sử dụng dài của các đối số bên trong một nhóm loại trừ lẫn nhau trong
argparse.gh-121141: Thêm hỗ trợ cho các nút
copy.replace()đến AST. Bản vá của Bénédikt Trần.gh-87744: Khắc phục sự cố chờ đợi trong khi gọi
send_signal()bằng asyncio. Bản vá của Kumar Aditya.gh-121027: Thêm cảnh báo trong tương lai trong
functools.partial.__get__(). Trong các phiên bản Python tương lai,functools.partialsẽ là bộ mô tả phương thức.gh-121027: Biến đối tượng
functools.partialthành một bộ mô tả phương thức.gh-117784: CPython hiện phát hiện xem thư viện TLS được liên kết của nó có hỗ trợ xác thực sau bắt tay TLSv1.3 hay không và tắt tính năng đó nếu thiếu hỗ trợ.
gh-121025: Cải thiện
__repr__()củafunctools.partialmethod. Bản vá của Bénédikt Trần.gh-121018: Đã khắc phục sự cố trong đó
argparse.ArgumentParser.parse_args()không tôn trọngexit_on_error=False. Dựa trên bản vá của Ben Hsing.gh-119614: Sửa lỗi cắt bớt chuỗi có ký tự null được nhúng trong một số thao tác nội bộ trong
tkinter.gh-120910: Khi đọc các tệp đã cài đặt từ một quả trứng, hãy sử dụng
relative_to(walk_up=True)để tôn vinh các tệp được cài đặt bên ngoài thư mục gốc cài đặt.gh-61103: Hỗ trợ các loại float complex, double complex và long double complex C trong
ctypesnhưc_float_complex,c_double_complexvàc_longdouble_complexnếu trình biên dịch có số học phức tạp C11. Bản vá của Sergey B Kirpicchev.gh-120888: Nâng cấp bánh xe pip đi kèm với Ensurepip (pip 24.1.1)
gh-101830: Việc truy cập vào biểu diễn chuỗi của đối tượng
tkinterkhông còn chuyển đổi đối tượng Tcl cơ bản thành chuỗi trên Windows nữa.gh-120678: Khắc phục sự hồi quy trong REPL mới, điều đó có nghĩa là các phần tổng thể từ các tệp được truyền bằng đối số
-isẽ không được đưa vào không gian tên chung của REPL. Bản vá của Alex Waygood.gh-120811: Khắc phục khả năng rò rỉ bộ nhớ trong
contextvars.Context.run().gh-120782: Sửa các tham chiếu sai của loại
datetimesau khi tải lại mô-đun.gh-120713:
datetime.datetime.strftime()hiện đã mất 0 năm với ít hơn bốn chữ số cho các công cụ xác định định dạng%Yvà%Gtrên Linux. Bản vá của Ben Hsinggh-120769: Tạo dòng trống trong
pdblặp lại lệnh cuối cùng ngay cả khi lệnh đến từcmdqueue.gh-120780: Hiển thị giá trị chuỗi của LOAD_SPECIAL oparg trong đầu ra
dis.gh-41431: Thêm
datetime.time.strptime()vàdatetime.date.strptime(). Đóng góp bởi Wannes Boeykens.gh-120743: chức năng Soft deprecate
os.popen()vàos.spawn*. Chúng không còn được sử dụng để viết mã mới nữa. Thay vào đó, nên sử dụng mô-đunsubprocess. Bản vá của Victor Stinner.gh-120732: Sửa lỗi
nametruyền tới đối tượngunittest.mock.Mockkhi sử dụngunittest.mock.create_autospec().gh-111259:
rehiện xử lý các mẫu như"[\s\S]"hoặc"\s|\S"khớp với bất kỳ ký tự nào một cách hiệu quả như dấu chấm với công cụ sửa đổiDOTALL("(?s:.)").gh-120683: Sửa lỗi trong
logging.LogRecord, khi phần nguyên của dấu thời gian được làm tròn, trong khi phép tính mili giây bị cắt ngắn, khiến dấu thời gian của nhật ký bị sai tới 999 mili giây (bị ảnh hưởng khoảng 1 trên 8 triệu dấu thời gian).gh-118710:
ipaddress.IPv4Addressvàipaddress.IPv6Addressthuộc tínhversionvàmax_prefixlenhiện có sẵn trên lớp.gh-120633: Di chuyển thanh cuộn và loại bỏ các menu xé nhỏ trong Turtledemo.
gh-120606: Cho phép người dùng sử dụng EOF để thoát định nghĩa
commandstrongpdbgh-120284: Cho phép
asyncio.Runner.run()chấp nhận các đối tượng awaitable thay vì chỉ coroutines.gh-120541: Cải thiện lời nhắc trong máy nhắn tin "less" khi
help()được gọi với đối số không phải chuỗi.gh-120495: Sửa lỗi xử lý ngoại lệ không chính xác trong Tab Nanny. Bản vá của Wulian233.
gh-120388: Cải thiện thông báo cảnh báo khi phương pháp kiểm tra trong
unittesttrả về thứ gì đó không phải làNone. Bây giờ chúng tôi hiển thị loại đối tượng được trả về và mẹo liên quan đến asyncio tùy chọn.gh-120381: Sửa
inspect.ismethoddescriptor()để kiểm tra xem có thiếu__delete__()không. Bản vá của Jan Kaliszewski.gh-90425: Byte hệ điều hành trong tiêu đề gzip hiện luôn được đặt thành 255 khi sử dụng
gzip.compress().gh-120343: Sửa báo cáo bù cột cho các mã thông báo xuất hiện sau chuỗi f nhiều dòng trong mô-đun
tokenize.gh-119180: Là một phần của việc triển khai PEP 649 và PEP 749, hãy thêm mô-đun mới
annotationlib. Thêm hỗ trợ cho các tham chiếu chuyển tiếp chưa được giải quyết trong chú thích tớidataclasses,typing.TypedDictvàtyping.NamedTuple.gh-119600: Sửa
unittest.mock.patch()không đọc thuộc tính của mục tiêu khinew_callableđược đặt. Bản vá của Robert Collins.gh-120289: Đã khắc phục sự cố không sử dụng trong
cProfilebằng cách không cho phépdisable()vàclear()trong bộ hẹn giờ bên ngoài.gh-82017: Đã thêm hỗ trợ để chuyển đổi bất kỳ đối tượng nào có phương thức
as_integer_ratio()thànhFraction.gh-114053: Sửa lỗi Edge-case trong đó
typing.get_type_hints()sẽ tạo ra kết quả không chính xác nếu tham số loại trong phạm vi lớp bị ghi đè bởi các phép gán trong phạm vi lớp và ngữ nghĩafrom __future__ import annotationsđược bật. Bản vá của Alex Waygood.gh-114053: Sửa lỗi
NameErrorkhi gọiinspect.get_annotations()bằngeval_str=True`trên một lớp sử dụng tham số loại PEP 695 trong mô-đun cófrom __future__ import annotationsở đầu tệp. Bản vá của Alex Waygood.gh-120268: Cấm chuyển
Nonesang Pythondatetime.date.fromtimestamp()thuần túy để đạt được tính nhất quán khi triển khai tiện ích mở rộng C.gh-120244: Khắc phục rò rỉ bộ nhớ trong
re.sub()khi chuỗi thay thế chứa các phản hồi ngược.gh-120254: Đã thêm đối số
commandsvàopdb.set_trace()cho phép người dùng gửi lệnh gỡ lỗi từ tệp nguồn.gh-120211: Sửa
tkinter.ttkbằng Tcl/Tk 9.0.gh-71587: Khắc phục sự cố trong phiên bản C của
datetime.datetime.strptime()khi được gọi lại trên trình thông dịch được khởi động lại.gh-117983: Trì hoãn việc nhập
threadingtrongimportlib.utilcho đến khi sử dụng tải chậm.gh-120157: Loại bỏ hằng số
concurrent.futures._base._FUTURE_STATESkhông sử dụng trongconcurrent.futures. Bản vá của Clinton Christian (pygeek).gh-120161:
datetimekhông còn gặp sự cố trong một số tình huống chu trình tham chiếu phức tạp nhất định.gh-119698: Sửa
symtable.Class.get_methods()và ghi lại hành vi của nó. Bản vá của Bénédikt Trần.gh-120121: Thêm
concurrent.futures.InvalidStateErrorvào__all__của mô-đun.gh-119933: Thêm bảng liệt kê
symtable.SymbolTableTypeđể thể hiện các kết quả đầu ra có thể có của phương thứcsymtable.SymbolTable.get_type. Bản vá của Bénédikt Trần.gh-120029: Hiển thị các phương thức
symtable.Symbolis_free_class(),is_comp_iter()vàis_comp_cell(). Bản vá của Bénédikt Trần.gh-120108: Sửa lỗi gọi
copy.deepcopy()trên câyastđã được sửa đổi để có tham chiếu đến các nút cha. Bản vá của Jelle Zijlstra.gh-120056: Thêm hằng số
socket.IP_RECVERRvàsocket.IP_RECVTTL(cả hai đều có sẵn từ Linux 2.2). Và hằng sốsocket.IP_RECVORIGDSTADDR(có sẵn từ Linux 2.6.29).gh-120057: Đã thêm phương thức
os.environ.refresh()để cập nhậtos.environvới các thay đổi đối với môi trường doos.putenv(),os.unsetenv()thực hiện hoặc được thực hiện bên ngoài Python trong cùng một quy trình. Bản vá của Victor Stinner.gh-120029: Hiển thị
symtable.Symbol.is_type_parameter()trong mô-đunsymtable. Bản vá của Bénédikt Trần.gh-119819: Khắc phục hồi quy để cho phép cấu hình ghi nhật ký với các loại hàng đợi đa xử lý.
gh-65454:
unittest.mock.Mock.attach_mock()không còn kích hoạt lệnh gọi đếnPropertyMockđược đính kèm nữa.gh-117142: Mô-đun
ctypeshiện có thể được nhập vào tất cả các trình thông dịch phụ, bao gồm cả những trình thông dịch có GIL riêng.gh-118835: Khắc phục sự cố _pyrepl khi sử dụng lời nhắc tùy chỉnh với mã thoát ANSI.
gh-81936: Các phương thức
help()vàshowtopic()hiện tôn trọng đối số output được định cấu hình chopydoc.Helpervà không sử dụng máy nhắn tin trong những trường hợp như vậy. Bản vá của Enrico Tröger.gh-117398: Mô-đun
_datetime(triển khai C chodatetime) hiện hỗ trợ nhập vào nhiều trình thông dịch.gh-119824: In mục nhập ngăn xếp trong
pdbkhi và chỉ khi cần người dùng nhập vào.gh-119838: Trong các phép tính số học hỗn hợp với
Fractionvà phức tạp, phân số hiện được chuyển đổi thànhfloatthay vìcomplex.gh-119770: Tạo hằng số
termiosioctl()dương. Bản vá của Victor Stinner.gh-89727: Khắc phục sự cố với
shutil.rmtree()trong đóRecursionErrorđược nâng lên trên cây thư mục sâu.gh-119577:
DeprecationWarningđược phát ra khi kiểm tra giá trị thực củaxml.etree.ElementTree.Elementhiện mô tả việc trả vềTruevô điều kiện trong phiên bản tương lai thay vì đưa ra một ngoại lệ trong Python 3.14.gh-89727: Khắc phục một phần sự cố với
shutil.rmtree()trong đóRecursionErrorđược nâng lên trên cây thư mục sâu. Lỗi đệ quy không còn xuất hiện khirmtree.avoids_symlink_attackssai.gh-93963: Xóa các tên không được dùng nữa khỏi
importlib.abcnhư được tìm thấy trongimportlib.resources.abc.gh-119118: Khắc phục sự hồi quy hiệu suất trong mô-đun
tokenizebằng cách lưu vào bộ đệm thuộc tính mã thông báolinevà tính toán độ lệch cột hiệu quả hơn.gh-89727: Khắc phục sự cố với
os.fwalk()trong đóRecursionErrorđược tạo trên cây thư mục sâu bằng cách điều chỉnh quá trình triển khai thành lặp lại thay vì đệ quy.gh-119594: Nếu một người gọi pow(phân số.Fraction, x, mô-đun) với modulo không phải Không có, thì thông báo lỗi hiện cho biết rằng các loại này không tương thích thay vì nói rằng pow chỉ nhận 2 đối số. Bản vá của Wim Jeantine-Glenn và Mark Dickinson.
gh-119588:
zipfile.Path.is_symlinkhiện đánh giá xem đường dẫn đã cho có phải là liên kết tượng trưng hay không.gh-119562: Xóa
ast.Num,ast.Str,ast.Bytes,ast.NameConstantvàast.Ellipsis. Tất cả đều đưa ra cảnh báo không dùng nữa kể từ Python 3.12. Bản vá của Alex Waygood.gh-119555: Bắt
SyntaxErrortừcompile()trong phương thức runsource() của InteractiveColoredConsole. Bản vá của Sergey B Kirpicchev.gh-118908: Hạn chế các toàn cầu được hiển thị từ các định nghĩa và nhập nội bộ khi khởi động REPL mới. Bản vá của Eugene Triguba và Pablo Galindo.
gh-117865: Cải thiện thời gian nhập của mô-đun
astbằng cách trì hoãn việc nhậpre. Bản vá của Jelle Zijlstra.gh-119127: Đối số vị trí của đối tượng
functools.partial()hiện hỗ trợ trình giữ chỗ thông quafunctools.Placeholder.gh-113892: Bây giờ, phương thức
sock_connectcủaasyncio.ProactorEventLoopsẽ tăngValueErrornếu ổ cắm đã cho không ở chế độ không chặn, cũng như trong các triển khai vòng lặp khác.gh-119506: Sửa phương thức
io.TextIOWrapper.write()phá vỡ bộ đệm bên trong khi phương thức này được gọi lại trong quá trình xóa bộ đệm bên trong.gh-69214: Sửa tham số
fcntl.ioctl()request: sử dụngunsigned longthay vìunsigned intcho tham số request củafcntl.ioctl()để hỗ trợ các yêu cầu lớn hơnUINT_MAX. Bản vá của Victor Stinner.gh-119105:
DIffer.compare()củadifflib(và cảndiff) không còn có thể bị kích động thành hành vi thời gian khối hoặc thành đệ quy không giới hạn và nhìn chung cũng sẽ nhanh hơn trong các trường hợp thông thường. Kết quả có thể thay đổi trong một số trường hợp, mặc dù điều đó rất hiếm. Độ chính xác của khác biệt không bị ảnh hưởng. Một số dòng tương tự cách xa nhau có thể được báo cáo là xóa một dòng và thêm dòng kia, trước khi chúng được hiển thị trên các dòng đầu ra liền kề với phần đánh dấu hiển thị sự khác biệt trong dòng.gh-119443: REPL tương tác không còn chạy khi bật
from __future__ import annotations. Bản vá của Jelle Zijlstra.gh-119461: Cộng hằng số
socket.VMADDR_CID_LOCAL. Bản vá của Victor Stinner.gh-117398: Các đối tượng trong datetime C-API hiện đều được phân bổ tĩnh, điều đó có nghĩa là an toàn bộ nhớ tốt hơn, đặc biệt là khi mô-đun được tải lại. Điều này phải minh bạch với người dùng.
gh-118894:
asyncioREPL hiện có khả năng tương tự như PyREPL.gh-118911: Trong PyREPL, đã cập nhật logic của
maybe-acceptđể nếu người dùng nhấn Enter hai lần, họ có thể chấm dứt khối ngay cả khi có khoảng trắng ở cuối. Ngoài ra, bây giờ khi người dùng nhấn mũi tên lên, con trỏ sẽ ở dòng chức năng cuối cùng. Điều này phù hợp với hành vi của IPython. Bản vá của Aya Elsayed.gh-115225: Phát sinh lỗi trên một số chuỗi ISO 8601 hợp lệ về mặt kỹ thuật nhưng có bệnh lý được chuyển tới
datetime.time.fromisoformat()trước đó đã được phân tích cú pháp không chính xác.gh-111201: Xóa phần phụ thuộc vào
readlinekhỏi Python REPL mới.gh-119189: Khi sử dụng toán tử
**hoặcpow()vớiFractionlàm cơ số và số mũ không hợp lý, số float hoặc số phức, phân số không còn được chuyển đổi thành số float nữa.gh-119174: Khắc phục DPI cao khiến cửa sổ Turtledemo (ví dụ về đồ họa rùa) bị mờ Bản vá của Wulian233 và Terry Jan Reedy
gh-119121: Sửa lỗi NameError xảy ra trong
asyncio.staggered.staggered_race. Chức năng này hiện đã được thử nghiệm.gh-119105:
difflib.Differnhanh hơn nhiều đối với một số trường hợp khác biệt trong đó có nhiều cặp dòng giống nhau.gh-119113: Khắc phục sự cố trong đó
pathlib.PurePath.with_suffix()không tăngTypeErrorkhi đưaNonelàm hậu tố.gh-118643: Sửa lỗi AttributionError trong mô-đun
emailkhi gấp lại danh sách địa chỉ dài. Đồng thời khắc phục thêm trường hợp mã hóa sai dấu phân cách địa chỉ trong danh sách địa chỉ.gh-73991: Thêm
pathlib.Path.copy(), sao chép tệp hoặc thư mục này sang tệp khác.gh-58933: Làm cho
pdbquay lại khung người gọi một cách chính xác khif_tracecủa khung người gọi không được đặtgh-82805: Hỗ trợ các phần mở rộng tệp một dấu chấm trong
pathlib.PurePath.suffixvà các thuộc tính và phương thức liên quan. Ví dụ:suffixescủaPurePath('foo.bar.')hiện là['.bar', '.']thay vì[]. Điều này giúp phân chia phần mở rộng tệp phù hợp vớios.path.splitext().gh-118924: Xóa
versionvàversion_infokhỏisqlite3. Bản vá của Hugo van Kemenade.gh-118928: Không cho phép sử dụng chuỗi tham số có phần giữ chỗ được đặt tên trong truy vấn
sqlite3. Bản vá của Erlend E. Aasland.gh-118895: Đặt thuộc tính trên
typing.NoDefaulthiện tăngAttributeErrorthay vìTypeError.gh-118868: Đã khắc phục sự cố trong đó kwargs không còn được chuyển đến trình xử lý ghi nhật ký QueueHandler nữa
gh-118827: Xóa lớp
Quoterkhông được dùng nữa khỏiurllib.parse. Trước đây nó đã đưa raDeprecationWarningkể từ Python 3.11. Bản vá của Nikita Sobolev.gh-118824: Xóa
pty.master_open()vàpty.slave_open()không được dùng nữa. Thay vào đó hãy sử dụngpty.openpty(). Bản vá của Nikita Sobolev.gh-118851: các đối số
ctxcho hàm tạo của các lớp nútasthiện được mặc định làast.Load(). Bản vá của Jelle Zijlstra.gh-101588: Xóa bản sao, bản sâu và phần chọn khỏi itertools. Những điều này trước đây đã đưa ra Cảnh báo không dùng nữa kể từ Python 3.12.
gh-118805: Loại bỏ các thông số type, choices, metavar của
argparse.BooleanOptionalAction. Chúng không được dùng nữa kể từ Python 3.12.gh-118803:
typing.ByteStringvàcollections.abc.ByteStringbị xóa. Trước đây họ đã đưa raDeprecationWarningkể từ Python 3.12.gh-118798: Tham số isdst đã bị xóa khỏi
email.utils.localtime(). Bản vá của Hugo van Kemenade.gh-118760: Khôi phục giá trị mặc định của
tkiter.wantobjectsvề1.gh-118760: Sửa lỗi gọi liên kết Tkinter trên Windows.
gh-74033: Bỏ hỗ trợ chuyển đối số từ khóa cho
pathlib.Path.gh-101357: Loại bỏ tất cả các ngoại lệ
OSErrortừ các phương thứcpathlib.Path.exists()vàis_*(), thay vì chọn các lỗi phổ biến hơn. Hành vi mới nhất quán vớios.path.exists(),os.path.isdir(), v.v. Sử dụngpathlib.Path.stat()để truy xuất trạng thái tệp mà không loại bỏ các ngoại lệ.gh-78707: Bỏ hỗ trợ chuyển các đối số vị trí bổ sung cho
pathlib.PurePath.relative_to()vàis_relative_to().gh-118507: Sửa lỗi
os.path.isfile()trên Windows đối với pipe. Tăng tốcos.path.isjunction()vàos.path.lexists()trên Windows bằng cách triển khai gốc.gh-118772: Cho phép các phiên bản
typing.TypeVarkhông có mặc định theo dõi các phiên bản không có mặc định trong một số trường hợp. Bản vá của Jelle Zijlstra.gh-118714: Cho phép
restartgỡ lỗi sau khi xử lýpdb. Đã xóa thông báo khởi động lại khi người dùng thoát pdb khỏi chế độ khám nghiệm tử thi.gh-118673: Đã xóa các bit thực thi và shebang khỏi các mô-đun stdlib.
gh-110863:
os.path.realpath()hiện chặn mọiOSErrortừos.readlink()khi chế độ strict bị tắt (mặc định).gh-118263: Tăng tốc
os.path.splitroot()&os.path.normpath()bằng lệnh gọi C trực tiếp.gh-110190: Sửa cấu trúc ctypes với mảng trên SPARC bằng cách đặt
MAX_STRUCT_SIZEthành 32 trong stgdict. Bản vá của Jakub Kulikgh-118033: Sửa lỗi
dataclasses.dataclass()không tạo khe__weakref__khi phân lớptyping.Generic.gh-106531: Trong
importlib.resources, đồng bộ hóa với importlib_resources 6.3.2, bao gồm:MultiplexedPathhiện mong đợi các đường dẫnTraversable, không dùng các đối số chuỗi thànhMultiplexedPath; Đã bật hỗ trợ cho tài nguyên trong các gói không gian tên trong tệp zip; Đã sửa lỗiNotADirectoryErrorkhi gọi các tệp trên thư mục con của gói không gian tên.gh-115937: Đã xóa tiền xử lý bổ sung cho thuộc tính
__signature__: mã chỉ kiểm tra xem đó có phải là phiên bảninspect.Signaturehay không. Bản vá của Sergey B Kirpicchev.gh-115808: Thêm chức năng
operator.is_none()vàoperator.is_not_none().gh-114264: Cải thiện hiệu suất của
copy.deepcopy()bằng cách thêm đường dẫn nhanh cho các loại nguyên tử.gh-113878: Thêm tham số doc vào
dataclasses.field()để nó có thể được lưu trữ và hiển thị dưới dạng tài liệu/siêu dữ liệu. Nếu@dataclass(slots=True)được sử dụng thì chuỗi được cung cấp sẽ có sẵn trong lệnh__slots__. Mặt khác, chuỗi được cung cấp chỉ có sẵn trong đối tượngdataclasses.Fieldtương ứng.Để hỗ trợ tính năng này, chúng tôi đang thay đổi định dạng
__slots__trong các lớp dữ liệu từtuplethànhdictkhi có tài liệu/siêu dữ liệu.gh-113978: Bỏ qua các cảnh báo về việc hoàn thành văn bản bên trong REPL.
gh-113008: Đầu ra sử dụng argparse chính xác cho các nhóm bắt buộc, loại trừ lẫn nhau có chứa đối số vị trí
gh-108172:
webbrowsertôn vinh trình duyệt hệ điều hành ưa thích trên Linux khi tên mục nhập trên máy tính để bàn của nó chứa văn bản của một tên trình duyệt đã biết.gh-109109: Bây giờ bạn có thể nhận chuỗi chứng chỉ TLS thô từ các kết nối TLS thông qua các phương thức
ssl.SSLSocket.get_verified_chain()vàssl.SSLSocket.get_unverified_chain().Đóng góp bởi Mateusz Nowak.
gh-105623: Khắc phục tình trạng suy giảm hiệu suất trong
logging.handlers.RotatingFileHandler. Bản vá của Craig Robson.gh-102450: Thêm ISO-8601 24:00 bị thiếu thay thế cho nửa đêm ngày hôm sau vào
datetime.datetime.fromisoformat()vàdatetime.time.fromisoformat(). Bản vá của Izan "TizzySaurus" Robinson (tizzysaurus@gmail.com)gh-103956: Khắc phục sự cố thiếu ký tự dòng mới trong đầu ra mô-đun
tracekhi tính năng theo dõi dòng được bật nhưng dòng mã nguồn cho khung hiện tại không khả dụng.gh-92081: Sửa các khoảng trống bị thiếu trong tiêu đề email khi các khoảng trắng được trộn lẫn với các ký tự 8 bit được mã hóa.
gh-103194: Chuẩn bị Tkinter cho những thay đổi của C API trong Tcl 8.7/9.0 để tránh
_tkinter.Tcl_Objbị trả về bất ngờ thay vìbool,str,bytearrayhoặcint.gh-87106: Đã sửa lỗi xử lý trong
inspect.Signature.bind()các đối số từ khóa có cùng tên với các đối số chỉ có vị trí khi có đối số từ khóa biến thiên (ví dụ:**kwargs).gh-103134: Thêm các phương thức bổ sung vào proxy objects trong mô-đun
multiprocessing:clear()vàcopy()cho proxy củalistfromkeys(),reversed(d),d | {},{} | d,d |= {'b': 2}cho proxy củadict
bpo-45767: Sửa lỗi chuyển đổi số nguyên trong
os.major(),os.minor()vàos.makedev(). Hỗ trợ số lượng thiết bị lớn hơn2**63-1. Hỗ trợ số thiết bị không tồn tại (NODEV).bpo-44864: Không dịch các chuỗi do người dùng cung cấp trong
argparse.ArgumentParser.bpo-41843: Solaris hiện sử dụng tòa nhà sao chép nhanh
os.sendfile()để có các chức năng liên quan đến sao chép tệpshutilhiệu quả hơn.bpo-15987: Đã triển khai
ast.compare()để so sánh hai AST. Bản vá của Batuhan Taskaya với sự trợ giúp của Jeremy Hylton.gh-67693: Sửa
urllib.parse.urlunparse()vàurllib.parse.urlunsplit()cho URI có đường dẫn bắt đầu bằng nhiều dấu gạch chéo và không có thẩm quyền. Dựa trên bản vá của Ashwin Ramaswami.bpo-14074: Sửa lỗi xử lý metavar
argparseđể cho phép các đối số vị trí có metavar tuple.
IDLE¶
gh-122392: Tăng khoảng cách dọc hiện chưa đủ cho trình duyệt IDLE (đường dẫn, mô-đun và ngăn xếp) trên màn hình có độ phân giải cao.
gh-112938: Khắc phục tình trạng treo liên tục khi Shell xuất dữ liệu nhanh liên tục.
gh-122482: Thay đổi Giới thiệu về IDLE để hướng người dùng đến Discussion.python.org thay vì danh sách gửi thư và email dành cho nhà phát triển nhàn rỗi hiện chưa được sử dụng.
gh-78889: Stop Shell đóng băng bằng cách chặn quyền truy cập của người dùng vào các thuộc tính sys.stdout.shell không theo phương thức, tất cả đều ở chế độ riêng tư.
gh-120083: Thêm màu nền trước IDLE Hovertip màu đen rõ ràng cần thiết cho macOS gần đây. Sửa lỗi Sonoma hiển thị màu trắng khó đọc trên nền màu vàng nhạt. Bản vá của John Riggles.
gh-120104: Sửa phần đệm trong cửa sổ hộp thoại cấu hình và tìm kiếm trong IDLE.
Tài liệu¶
gh-124872: Đã thêm định nghĩa cho context, current context và context management protocol, cập nhật các định nghĩa liên quan để nhất quán và mở rộng tài liệu cho
contextvars.Context.gh-125018: Tài liệu
importlib.metadatahiện bao gồm các mục tiêu tham chiếu chéo ngữ nghĩa cho các API được ghi lại quan trọng. Điều này có nghĩa là các tham chiếu intersphinx nhưimportlib.metadata.version()giờ đây sẽ hoạt động như mong đợi.gh-124720: Cập nhật phần "Sử dụng Python trên máy Mac" của tài liệu "Thiết lập và sử dụng Python" và bao gồm thông tin về cách cài đặt hỗ trợ luồng tự do.
gh-124457: Xóa tính năng quét phạm vi bảo hiểm khỏi kho lưu trữ CPython. Nó đã không được sử dụng từ năm 2020 và hiện không được bảo trì.
gh-116622: Thêm hướng dẫn về nền tảng Android và gắn cờ các mô-đun không có sẵn trên Android.
gh-123976: Làm mới tài liệu về các nhà cung cấp tùy chỉnh.
gh-70870: Làm rõ cách sử dụng kép của thuật ngữ "biến tự do" (cả ý nghĩa chính thức của bất kỳ tham chiếu nào đến các tên được xác định bên ngoài phạm vi cục bộ và ý nghĩa thực dụng hẹp hơn của các biến không cục bộ có tên trong
co_freevars).gh-121277: Người viết tài liệu của CPython hiện có thể sử dụng
nextlàm phiên bản cho các lệnhversionchanged,versionadded,deprecated.gh-117765: Tài liệu được cải tiến cho
unittest.mock.patch.dict()gh-121749: Sửa tài liệu cho
PyModule_AddObjectRef().gh-120012: Làm rõ hành vi của
multiprocessing.Queue.empty()vàmultiprocessing.SimpleQueue.empty()trên hàng đợi đóng. Bản vá của Bénédikt Trần.gh-119574: Đã thêm một số biến môi trường bị thiếu vào đầu ra của
--help-env.bpo-34008: Tài liệu
Py_Main()đã chuyển từ phần "API cấp rất cao" sang phần "Khởi tạo và hoàn thiện".Ngoài ra, hãy nói rõ rằng chúng tôi mong đợi
Py_Mainthường được gọi thay vìPy_Initializethay vì sau nó (vìPy_Mainthực hiện lệnh gọi riêng của nó tớiPy_Initialize). Tài liệu hỗ trợ cả hai lệnh gọi nhưng phiên bản phụ thuộc vào cài đặt nào sẽ được áp dụng chính xác.
Cốt lõi và nội dung¶
gh-124375: Khắc phục sự cố trong bản dựng luồng miễn phí khi GC chạy đồng thời với một luồng mới bắt đầu.
gh-125221: Khắc phục tình trạng chạy đua có thể xảy ra khi gọi
__reduce_ex__()lần đầu tiên trong bản dựng luồng miễn phí.gh-125174: Giúp việc xử lý số lượng tham chiếu của các vật thể bất tử trở nên mạnh mẽ hơn. Các đối tượng bất tử có số lượng tham chiếu sai lệch so với số lượng tham chiếu ban đầu của chúng lên tới một tỷ (nửa tỷ trên bản dựng 32 bit) vẫn được tính là bất tử.
gh-125039: Tạo const
this_instrvàprev_instrtrong trình tạo trường hợp.
Thư viện¶
gh-125008: Sửa lỗi
tokenize.untokenize()tạo ra cú pháp không hợp lệ cho dấu ngoặc kép đứng trước một số ký tự thoát nhất định.
Cốt lõi và nội dung¶
gh-124871: Sửa lỗi trình biên dịch (trong một số phiên bản 3.13) trong đó xác nhận không thành công trong quá trình phân tích khả năng tiếp cận.
gh-123378: Khắc phục sự cố trong phương thức
__str__()của đối tượngUnicodeErrorkhi giá trịUnicodeError.startvàUnicodeError.endkhông hợp lệ hoặc nằm ngoài phạm vi. Bản vá của Bénédikt Trần.gh-118093: Cải thiện khả năng của trình biên dịch JIT thử nghiệm để luôn "theo dõi" khi gặp các nhánh có độ lệch cao.
gh-124642: Đã khắc phục sự cố về khả năng mở rộng trong các bản dựng có luồng tự do để đọc không bị khóa từ từ điển trong các tình huống đa luồng
gh-116510: Khắc phục sự cố do các chuỗi nội bộ bất tử được chia sẻ giữa các trình thông dịch phụ sử dụng init một pha cơ bản. Trong trường hợp đó, chuỗi có thể được sử dụng bởi trình thông dịch tồn tại lâu hơn trình thông dịch đã tạo và thực hiện chuỗi đó. Đối với các thông dịch viên chia sẻ trạng thái obmalloc, cũng chia sẻ lệnh thực tập với thông dịch viên chính.
gh-116510: Khắc phục lỗi có thể gây ra sự cố khi trình thông dịch phụ sử dụng mô-đun mở rộng một pha "cơ bản". Các đối tượng được chia sẻ có thể tham chiếu đến các nút PyGC_Head đã được giải phóng như một phần của quá trình dọn dẹp trình thông dịch.
gh-119180: Mô-đun
__main__không còn chứa từ điển__annotations__trong không gian tên chung của nó nữa.gh-124547: Khi hủy phân bổ một đối tượng có các giá trị nội tuyến mà
__dict__vẫn tồn tại: nếu việc cấp phát bộ nhớ cho các giá trị nội tuyến không thành công, hãy xóa từ điển. Ngăn chặn sự cố thông dịch viên.gh-124513: Khắc phục sự cố trong hàm tạo FrameLocalsProxy: kiểm tra số lượng đối số. Bản vá của Victor Stinner.
gh-124442: Khắc phục tính không xác định trong quá trình biên dịch bằng cách sắp xếp giá trị của
__static_attributes__. Bản vá của kp2pml30.gh-124285: Sửa lỗi trong đó
bool(a)có thể được gọi nhiều lần trong quá trình đánh giá biểu thức boolean phức hợp.gh-123856: Khắc phục lỗi PyREPL khi kích hoạt ngắt bàn phím sau khi sử dụng tìm kiếm lịch sử
gh-65961: Không dùng cài đặt này và sử dụng
__package__và__cached__.gh-119726: JIT hiện tạo mã hiệu quả hơn cho các lệnh gọi đến hàm C, giúp tiết kiệm tới 0,8% bộ nhớ và cải thiện tốc độ 1,5% trên AArch64. Bản vá của Diego Russo.
gh-122878: Sử dụng tệp nhị phân
pager, nếu có (ví dụ: trên Debian và các phiên bản phái sinh), để hiển thị REPLhelp().gh-124188: Sửa lỗi đọc và giải mã một dòng từ tệp nguồn bằng mã hóa không phải UTF-8 đối với các lỗi cú pháp xuất hiện trong trình biên dịch.
gh-124027: Hỗ trợ các phím
<page up>,<page down>và<delete>trong Python REPL khi$TERMđược đặt thànhvt100.gh-124022: Sửa lỗi chuỗi tài liệu bị xóa khỏi các lớp ở chế độ tương tác.
gh-123958: chuỗi tài liệu hiện đã bị xóa khỏi AST được tối ưu hóa ở cấp độ tối ưu hóa 2.
gh-123923: Trường
f_executabletrong cấu trúc_PyInterpreterFramebên trong hiện sử dụng con trỏ được gắn thẻ. Trình phân tích và trình gỡ lỗi sử dụng trường này phải xóa bit có trọng số thấp nhất để khôi phục con trỏ PyObject*.gh-77894: Khắc phục sự cố có thể xảy ra trong trình thu gom rác khi nó cố gắng phá vỡ vòng lặp tham chiếu chứa đối tượng
memoryview. Bây giờ, đối tượngmemoryviewchỉ có thể bị xóa nếu không có bộ đệm tham chiếu đến nó.gh-120221: asyncio REPL hiện lại nhận dạng chính xác các ngắt bàn phím. Đã sửa lỗi hiển thị các ngoại lệ được đưa ra trong các luồng phụ.
gh-119310: Cho phép trình bao tương tác mới đọc các tệp lịch sử được viết bằng thư viện dòng chỉnh sửa sử dụng các mục nhập thoát unicode. Bản vá của aorcajo và Łukasz Langa.
gh-123572: Sửa ánh xạ phím cho các phím F khác nhau trong Windows cho REPL mới. Bản vá của devdanzin
Thư viện¶
gh-123614: Thêm
turtle.save()để dễ dàng lưu bản vẽ Rùa dưới dạng tệp PostScript. Bản vá của Marie Roald và Yngve Mardal Moe.
Cốt lõi và nội dung¶
gh-123339: Việc đặt thuộc tính
__module__cho một lớp hiện sẽ xóa mục__firstlineno__khỏi lệnh của loại, do đó chúng sẽ không còn nhất quán nữa.gh-119034: Thay đổi các phím
<page up>và<page down>của Python REPL để tiến/lùi tìm kiếm lịch sử. Bản vá của Victor Stinner.gh-123562: Cải thiện thông báo
SyntaxErrorkhi sử dụngcase ... as ...không có tên.gh-123545: Khắc phục lỗi giảm gấp đôi trong một số trường hợp hiếm gặp trên các bản dựng JIT thử nghiệm.
gh-123484: Sửa
_Py_DebugOffsetsđể các đối tượng dài có liên quan đến điểm bắt đầu của đối tượng thay vì điểm bắt đầu của một đối tượng con.gh-123446: Sửa tên hàm trống trong
TypeErrorkhi sử dụng các phương thức ma thuật dựng sẵn mà không có đối số cần thiết.gh-123440: Cải thiện thông báo
SyntaxErrorkhi sử dụngexcept askhông có tên.gh-116017: Cải thiện mức tiêu thụ bộ nhớ JIT bằng cách giải phóng định kỳ bộ nhớ được sử dụng bởi mã được thực thi không thường xuyên. Thay đổi này đặc biệt có khả năng cải thiện dung lượng bộ nhớ của các chương trình chạy dài.
gh-123344: Thêm tối ưu hóa AST cho các giá trị mặc định của tham số loại.
gh-123321: Ngăn chặn tình trạng chạy phân tích cú pháp/myreadline khỏi việc phân tách lỗi khi sử dụng đa luồng. Bản vá của Bar Harel và Amit Wienner.
gh-123177: Sửa lỗi khiến các dấu nhắc đi lạc xuất hiện ở giữa các dòng được ngắt dòng trong REPL mới.
gh-122982: Kéo dài thời gian ngừng sử dụng tính năng đảo ngược bool (
~) thêm hai năm.gh-123271: Thực hiện các lần lặp đồng thời trên cùng một trình vòng lặp
zip()một cách an toàn trong luồng tự do.gh-123275: Hỗ trợ
-X gil=1vàPYTHON_GIL=1trên các bản dựng không có luồng tự do.gh-123177: Vô hiệu hóa tính năng ngắt dòng trong Apple Terminal thông qua mã thoát ANSI. Bản vá của Pablo Galindo
gh-123229: Khắc phục cảnh báo valgrind bằng cách khởi tạo bộ đệm chuỗi f thành 0 trong bộ mã thông báo. Bản vá của Pablo Galindo
gh-122298: Khôi phục bản in số liệu thống kê GC khi
gc.set_debug(gc.DEBUG_STATS)được gọi. Tính năng này vô tình bị xóa khi triển khai GC tăng dần.gh-121804: Hiển thị chính xác các vị trí lỗi khi
SyntaxErrorđược nâng lên trong REPL cơ bản. Bản vá của Sergey B Kirpicchev.gh-115776: Bật các giá trị nội tuyến (tương đương với các lớp ẩn của Python) trên bất kỳ lớp nào có phiên bản có kích thước cố định.
gh-123142: Khắc phục vị trí nguồn quá rộng trong các dấu vết ngoại lệ đến từ các lần lặp bị lỗi trong phần hiểu.
gh-123048: Sửa lỗi trong đó mã khớp mẫu có thể phát ra
JUMP_FORWARDmà không có vị trí nguồn.gh-118093: Chia
CALL_ALLOC_AND_ENTER_INITthành các hoạt động vi mô và nới lỏng yêu cầu đối với các đối số chính xác, nhằm tăng số lượng mã được cấp 2 hỗ trợ.gh-123123: Sửa lỗi hiển thị ngoại lệ
SyntaxErrortrên nhiều dòng. Bản vá của Pablo Galindogh-123083: Khắc phục khả năng không sử dụng được trong
STORE_ATTR_WITH_HINT.gh-123022: Khắc phục sự cố trong bản dựng luồng tự do khi gọi
Py_Initialize()từ một luồng không chính.gh-118093: Thêm ba chuyên ngành cho
CALL_KW:CALL_KW_PYđể gọi hàm PythonCALL_KW_BOUND_METHODcho các cuộc gọi đến các phương thức bị ràng buộcCALL_KW_NON_PYcho tất cả các cuộc gọi khác
gh-122821: Đảm bảo rằng các nhánh trong câu lệnh
whilecó độ lệch nhất quán chosys.monitoring. Các câu lệnhwhilehiện được biên dịch bằng một bước nhảy đơn giản ở cuối phần nội dung, thay vì lặp lại bài kiểm tra.gh-122907: Xây dựng với
HAVE_DYNAMIC_LOADINGhiện hoạt động tốt như trong 3.12. Những thiếu sót hiện tại sẽ được giải quyết riêng. (Xem https://github.com/tamnd/python-docs-vi/issues/122950.)gh-122888: Khắc phục sự cố trên một số lệnh gọi tới
str()với các đối số vị trí không đúng loại. Bản vá của Jelle Zijlstra.gh-118093: Cải thiện khả năng xử lý mã đa hình của JIT thử nghiệm.
gh-122697: Đã sửa lỗi rò rỉ bộ nhớ khi tắt trình thông dịch trong bản dựng có luồng tự do, đồng thời báo cáo các khối bộ nhớ bị rò rỉ thông qua
-X showrefcount.gh-116622: Sửa lỗi thông báo stdout và stderr của Android bị cắt bớt hoặc bị mất.
gh-122527: Khắc phục sự cố xảy ra khi
PyStructSequencebị hủy phân bổ sau khi từ điển loại của nó bị GC xóa.tp_basicsizecủa loại hiện chiếm các trường không có chuỗi không được bao gồm trongPy_SIZEcủa chuỗi.gh-122445: Chỉ thêm các trường được sửa đổi thông qua self.* vào
__static_attributes__.gh-122417: Trong bản dựng có luồng tự do, số lượng tham chiếu cho các đối tượng loại heap hiện được lưu trữ một phần theo cách phân tán trong mảng trên mỗi luồng. Điều này làm giảm sự tranh chấp trên các trường đếm tham chiếu của loại heap khi tạo hoặc hủy các phiên bản cùng loại từ nhiều luồng đồng thời.
gh-116090: Khắc phục sự cố trong các bản dựng JIT ngăn một số vòng lặp
forkích hoạt chính xác các sự kiện giám sátRAISE.gh-122300: Giữ nguyên các nút AST cho chuỗi f với các công cụ xác định định dạng một phần tử. Bản vá của Pablo Galindo
gh-120906:
frame.f_localshiện hỗ trợ các đối tượng có thể băm tùy ý làm khóa.gh-122239: Khi giải nén một
list,tuplehoặcdictcó quá nhiều thành phần, hãy hiển thị độ dài thực tế trong thông báo lỗi.gh-122245: Việc phát hiện ghi vào
__debug__được chuyển từ giai đoạn mã hóa của trình biên dịch sang bảng biểu tượng. Điều này có nghĩa là những lỗi này hiện được phát hiện ngay cả trong mã đã được tối ưu hóa trước codegen (chẳng hạn như các xác nhận bằng tùy chọn dòng lệnh-O).gh-122234: Các chuyên môn về tổng có đầu vào float và complex trong
sum()hiện luôn sử dụng tổng bù. Ngoài ra, đối với các mục số nguyên trong các chuyên ngành trên:PyLong_AsDouble()được sử dụng thay vìPyLong_AsLongAndOverflow(). Bản vá của Sergey B Kirpicchev.gh-122208: Trình theo dõi từ điển hiện chỉ cung cấp sự kiện PyDict_EVENT_ADDED khi quá trình chèn ở trạng thái tốt đã biết để thành công.
gh-122160: Xóa mã
BUILD_CONST_KEY_MAP. Thay vào đó hãy sử dụngBUILD_MAP.gh-122029: Phát ra các sự kiện
c_calltrongsys.setprofile()khiPyMethodObjecttrỏ đếnPyCFunctionđược gọi.gh-122026: Sửa lỗi khiến mã thông báo không xác định chính xác các dấu ngoặc đơn không khớp bên trong chuỗi f trong một số trường hợp. Bản vá của Pablo Galindo
gh-99108: Hashlib của Python hiện sử dụng vô điều kiện thư viện HACL* được cung cấp cho Blake2. Python không còn chấp nhận libb2 làm phần phụ thuộc tùy chọn cho Blake2 nữa.
Chúng tôi đã làm mới HACL* lên phiên bản mới nhất và hiện tại triển khai vectơ rộng 128-bit và 256-bit của nhà cung cấp HACL* cho Blake2, được sử dụng trên chuỗi công cụ x86/x64 khi các tính năng CPU bắt buộc có sẵn trong thời gian chạy.
Việc triển khai vectơ rộng 128 bit của HACL* cho Blake2 cũng có thể chạy trên ARM NEON và Power8, nhưng thiếu bằng chứng về việc tăng hiệu suất nên những tính năng này chưa được bật.
Thư viện¶
Cốt lõi và nội dung¶
gh-121860: Khắc phục sự cố khi vật chất hóa lại từ điển được quản lý sau khi nó bị xóa.
gh-121795: Cải thiện hiệu suất kiểm tra thành viên tập hợp,
set.remove()vàset.discard()khi đối số là một tập hợp.gh-121814: Đã sửa SegFault khi sử dụng
PyEval_SetTrace()mà không có khung Python trên ngăn xếp.gh-121295: Khắc phục sự cố bảng điều khiển PyREPL rơi vào trạng thái bị chặn sau khi làm gián đoạn quá trình dán dài
gh-121794: Sửa lỗi trong Python có luồng tự do trong đó một đối tượng được phục hồi có thể dẫn đến lỗi xác nhận số lượt giới thiệu âm.
gh-121657: Cải thiện thông báo
SyntaxErrornếu người dùng cố gắng sử dụngyield frombên ngoài một chức năng.gh-121609: Sửa lỗi dán các ký tự có chứa ký tự unicode nối trong REPL mới. Bản vá của Marta Gomez Macias
gh-121297: Trước đây, việc sử dụng
awaitkhông chính xác hoặc khả năng hiểu không đồng bộ trong mã bị loại bỏ bởi tùy chọn-Okhông được trình biên dịch Python gắn cờ. Bây giờ, mã như vậy sẽ tăngSyntaxError. Bản vá của Jelle Zijlstra.gh-117482: Trình bao bọc vị trí không mong muốn không còn được tạo cho các kiểu tĩnh dựng sẵn trong trình thông dịch phụ.
gh-121562: Tối ưu hóa hiệu suất của hex_from_char bằng cách thay thế switch-case bằng bảng tra cứu
gh-121499: Sửa lỗi ảnh hưởng đến cách hiển thị lịch sử nhiều dòng trong REPL mới sau khi tương tác với bộ đệm màn hình mới. Bản vá của Pablo Galindo
gh-121497: Khắc phục lỗi ngăn REPL tôn trọng chính xác lịch sử khi đặt hook đầu vào. Bản vá của Pablo Galindo
gh-121012: Việc thực thi Cấp 2 giờ đây đảm bảo rằng các trình vòng lặp danh sách vẫn đã cạn kiệt một khi chúng đã cạn kiệt.
gh-121439: Cho phép sử dụng lại các bộ dữ liệu có độ dài 20 trong danh sách tự do.
gh-121288: Thông báo
ValueErrorcholist.index(),range.index(),deque.index(),deque.remove()vàShareableList.index()không còn chứa giá trị repr của giá trị tìm kiếm (có thể lớn tùy ý) và nhất quán với thông báo lỗi cho các phương thứcindex()vàremove()khác.gh-121368: Khắc phục tình trạng đua trong
_PyType_Lookuptrong bản dựng có luồng tự do do thiếu hàng rào bộ nhớ. Điều này có thể dẫn đến việc_PyType_Lookuptrả về kết quả không chính xác trên arm64.gh-121149: Đã thêm chuyên môn hóa để tính tổng các phức, điều này cũng cải thiện độ chính xác của
sum()tích hợp cho các đầu vào như vậy. Bản vá của Sergey B Kirpicchev.gh-121130: Sửa chuỗi f bằng biểu thức gỡ lỗi trong bộ xác định định dạng. Bản vá của Pablo Galindo
Thư viện¶
gh-121381: Xóa tài liệu và mã thoát
subprocess._USE_VFORK. Nó chỉ được thêm vào để đề phòng và không có trường hợp nào được biết đến yêu cầu nó.
Cốt lõi và nội dung¶
gh-119726: Tối ưu hóa bố cục mã cho các lệnh gọi đến hàm C từ JIT trên AArch64. Bản vá của Diego Russo.
gh-121115:
PyLong_AsNativeBytes()không còn sử dụng các phương thức__index__()theo mặc định nữa. CờPy_ASNATIVEBYTES_ALLOW_INDEXđã được thêm vào để cho phép điều đó.gh-120838:
Py_Finalize()vàPy_FinalizeEx()hiện luôn chạy với trình thông dịch chính đang hoạt động.gh-113433: Giờ đây, trình thông dịch phụ sẽ tự động được dọn dẹp trong quá trình hoàn thiện thời gian chạy.
gh-119726: Cải thiện tốc độ và mức sử dụng bộ nhớ của lệnh gọi hàm C từ mã JIT trên AArch64. Bản vá của Diego Russo
gh-116017: Đơn giản hóa cơ chế khởi động được sử dụng cho "thoát bên" trong mã JIT, mang lại hiệu suất tốt hơn một chút và mức sử dụng bộ nhớ thấp hơn một chút cho hầu hết các nền tảng.
gh-98442: Sửa các vị trí nguồn quá rộng của hướng dẫn dọn dẹp của câu lệnh with.
gh-120754: Giảm số lượng lệnh gọi hệ thống được gọi khi đọc toàn bộ tệp (ví dụ:
open('a.txt').read()). Đối với một chương trình mẫu đọc nội dung của hơn 400 tệp.rsttrong thư mụcDoccủa kho lưu trữ cpython, số lượng cuộc gọi hệ thống đã giảm hơn 10%.gh-119462: Đảm bảo rằng các bất biến của phiên bản loại được duy trì: * Siêu lớp luôn được gán số phiên bản trước các lớp con * Thẻ phiên bản luôn bằng 0 nếu thẻ không hợp lệ. * Thẻ phiên bản luôn không phải nếu thẻ hợp lệ.
gh-120437: Khắc phục sự cố tối ưu hóa
_CHECK_STACK_SPACEđược giới thiệu trong gh-118322.gh-120722: Đặt chính xác vị trí mã byte trên các lệnh trả về trong lambdas. Bản vá của Jelle Zijlstra.
gh-120367: Sửa lỗi trong đó trình biên dịch tạo bước nhảy dư thừa trong quá trình thay thế giả. Chỉ có thể xảy ra với AST tổng hợp có lần thử trên cùng dòng với hướng dẫn theo trình xử lý ngoại lệ.
gh-120507: Xóa hướng dẫn
BEFORE_WITHvàBEFORE_ASYNC_WITH. Thêm lệnhLOAD_SPECIALmới. Tạo mã cho câu lệnhwithvàasync withbằng lệnh mới.gh-113993: Các chuỗi được thực hiện bằng
sys.intern()lại được thu gom rác khi không còn được sử dụng nữa, theo tài liệu. Các chuỗi được thực hiện bằng hàm CPyUnicode_InternInPlace()vẫn bất tử. Nội bộ của cơ chế thực hiện chuỗi đã được thay đổi. Điều này có thể ảnh hưởng đến hiệu suất và danh tính của các đối tượngstr.
Thư viện¶
gh-120485: Thêm ghi đè
allow_reuse_porttrên các lớp phân lớpsocketserver.TCPServertrong đóallow_reuse_addresscũng bị ghi đè.
Cốt lõi và nội dung¶
gh-120384: Khắc phục sự cố ngoài giới hạn của mảng trong
list_ass_subscript, có thể được gọi thông qua một số đầu vào được tùy chỉnh cụ thể: bao gồm sửa đổi đồng thời một đối tượng danh sách, trong đó một luồng gán một lát và một luồng khác xóa nó.gh-120367: Khắc phục sự cố trong trình biên dịch trên mã có NOP và JUMP dư thừa hiển thị sau khi trình xử lý ngoại lệ được chuyển đến cuối mã.
Thư viện¶
gh-120380: Sửa lỗi triển khai
pickle.Picklercủa Python cho các đối tượngbytesvàbytearraykhi sử dụng giao thức phiên bản 5. Bản vá của Bénédikt Tran.
Cốt lõi và nội dung¶
gh-120397: Cải thiện thông lượng lên tới hai lần cho các phương pháp
str.count(),bytes.count()vàbytearray.count()để đếm các ký tự đơn.gh-120221: Cung cấp tín hiệu thực trên Ctrl-C và Ctrl-Z trong REPL mới. Bản vá của Pablo Galindo
gh-120346: Tôn trọng
PYTHON_BASIC_REPLkhi chạy ở chế độ kiểm tra tương tác (python -i). Bản vá của Pablo Galindogh-93691: Sửa vị trí nguồn của hướng dẫn được tạo cho trình vòng lặp của câu lệnh for.
gh-120198: Khắc phục sự cố khi nhiều luồng đọc và ghi vào cùng một
__class__của một đối tượng đồng thời.gh-120298: Sửa lỗi use-after free trong
list_richcompare_impl, tính năng này có thể được gọi thông qua một số đầu vào xấu được thiết kế riêng.gh-119666: Khắc phục sự cố trình biên dịch trong trường hợp có hai cách hiểu trong phạm vi lớp đều tham chiếu
__class__.gh-119726: JIT: Tái sử dụng tấm bạt lò xo trên AArch64 khi tạo giấy nến. Bản vá của Diego Russo
gh-120225: Khắc phục sự cố trong trình biên dịch trên khối trống ở cuối trình xử lý ngoại lệ.
gh-93691: Sửa vị trí nguồn của hướng dẫn được tạo bằng các câu lệnh.
gh-120097:
FrameLocalsProxyhiện phân lớpcollections.abc.Mappingvà có thể được so khớp dưới dạng ánh xạ trong câu lệnhmatchgh-120080: Lệnh gọi trực tiếp tới
int.__round__()hiện chấp nhậnNonelàm đối số hợp lệ.gh-119933: Cải thiện thông báo
SyntaxErrorcho các biểu thức không hợp lệ trong một tham số loại bị ràng buộc, một bộ ràng buộc tham số loại hoặc một tham số loại mặc định. Bản vá của Bénédikt Trần.gh-119724: Đã hoàn nguyên các cải tiến đối với thông báo lỗi đối với các câu lệnh
elif/elsekhông khớp với bất kỳ câu lệnh hợp lệ nào, khiến việc xác định lỗi cú pháp bên trong các khốielif/elseđó trở nên khó khăn.gh-119879: Tìm kiếm chuỗi hiện nhanh hơn một chút trong một số trường hợp nhất định. Bây giờ nó sử dụng khoảng cách ký tự cuối cùng (quy tắc hậu tố tốt) cho kim định kỳ hai chiều.
gh-119842: Tôn vinh
PyOS_InputHook()trong REPL mới. Bản vá của Pablo Galindogh-119180:
classmethod()vàstaticmethod()hiện bao bọc các thuộc tính__annotations__và__annotate__của khả năng gọi cơ bản của chúng một cách lười biếng. Xem PEP 649. Bản vá của Jelle Zijlstra.gh-119821: Khắc phục việc thực thi annotation scopes trong các lớp khi
globalsđược đặt thành không chính tả. Bản vá của Jelle Zijlstra.gh-118934: Tạo
PyEval_GetLocalstrả lại tài liệu tham khảo đã mượngh-119740: Xóa ủy quyền
int()thành__trunc__()không được dùng nữa trước đây.gh-119689: Tạo siêu dữ liệu hiệu ứng ngăn xếp cho các lệnh giả từ bytecodes.c.
gh-109218:
complex()hiện chỉ chấp nhận một chuỗi làm đối số vị trí. Việc truyền số phức dưới dạng đối số "thực" hoặc "hình ảnh" không được dùng nữa; nó chỉ nên được thông qua dưới dạng một đối số vị trí duy nhất.gh-119548: Thêm lệnh
clearvào REPL. Bản vá của Pablo Galindogh-111999: Sửa chữ ký
str.format_map().gh-119560: Xác nhận không hợp lệ trong phiên bản beta 1 đã bị xóa. Xác nhận sẽ thất bại nếu
PyState_FindModule()được sử dụng trong hàm init của mô-đun mở rộng trước khi def mô-đun được khởi tạo.gh-119369: Khắc phục tình trạng bế tắc trong quá trình xóa luồng trong bản dựng luồng tự do, điều này có thể xảy ra khi GIL được bật trong thời gian chạy.
gh-119525: Khắc phục tình trạng bế tắc liên quan đến bộ nhớ đệm
_PyType_Lookup()trong bản dựng có luồng tự do khi GIL được bật động trong thời gian chạy.gh-119258: Loại bỏ các bộ bảo vệ phiên bản loại trong trình thông dịch cấp hai.
Lưu ý rằng việc cài đặt
tp_version_tagtheo cách thủ công (chưa bao giờ được hỗ trợ) có thể dẫn đến sự cố.gh-119311: Sửa lỗi tên bị đọc sai một cách bất ngờ trong cơ sở của các lớp chung.
gh-119395: Sửa lỗi các tên xuất hiện sau một lớp chung bị đọc sai như thể chúng thuộc lớp chung.
gh-119372: Sửa các trường hợp góc không hợp lệ trong phép chia phức tạp (kết quả là đầu ra
(nan+nanj)), ví dụ:1/complex('(inf+infj)'). Bản vá của Sergey B Kirpicchev.gh-119180: Việc đánh giá các chú thích hiện bị hoãn lại. Xem PEP 649 để biết chi tiết.
gh-119180: Thay thế opcode
LOAD_ASSERTION_ERRORbằngLOAD_COMMON_CONSTANTvà thêm hỗ trợ choNotImplementedError.gh-119213: Các mô-đun không được tích hợp sẵn được xây dựng bằng phòng khám đối số sẽ gặp sự cố nếu được sử dụng trong trình thông dịch phụ trước trình thông dịch chính. Các đối tượng gây ra sự cố do rò rỉ giữa các trình thông dịch một cách bất cẩn đã được khắc phục.
gh-119011: Sửa
type.__type_params__để trả về một bộ dữ liệu trống thay vì một bộ mô tả.gh-118692: Tránh tạo các phiên bản
StopIterationkhông cần thiết để theo dõi.gh-119180: Thêm thuộc tính
__annotate__vào các hàm, lớp và mô-đun như một phần của PEP 649. Bản vá của Jelle Zijlstra.gh-119049: Sửa lỗi hiển thị dòng nguồn cho các cảnh báo được tạo bởi C API nếu mô-đun
warningschưa được nhập.gh-119057: Cải thiện thông báo lỗi
ZeroDivisionError. Giờ đây, tất cả các thông báo lỗi đã được thống nhất: tất cả các thao tác/,//và%chỉ sử dụng thông báo "chia cho 0". Và hoạt động0 ** -1sử dụng "công suất từ 0 đến âm".gh-118844: Khắc phục lỗi xây dựng khi định cấu hình bằng cả
--disable-gilvà--enable-experimental-jit.gh-118921: Thêm phương thức
copy()choFrameLocalsProxyđể trả về ảnh chụp nhanhdictcho các biến cục bộ.gh-117657: Khắc phục tình trạng chạy đua dữ liệu trên trường lưu trữ con trỏ tới luồng chính của trình thông dịch xảy ra trong các bản dựng luồng tự do.
gh-118750: Nếu có sẵn phiên bản C của mô-đun
decimal,int(str)hiện sử dụng nó để cung cấp khả năng chuyển đổi tiệm cận nhanh hơn nhiều. Tuy nhiên, điều này chỉ áp dụng nếu chuỗi chứa trên 2 triệu chữ số.gh-118767: Sử dụng
NotImplementedtrong ngữ cảnh boolean hiện tăngTypeError. Đóng góp bởi Jelle Zijlstra.gh-118561: Khắc phục tình trạng tương tranh trong bản dựng luồng tự do trong đó
list.extend()có thể hiển thị bộ nhớ chưa được khởi tạo cho các trình đọc đồng thời.gh-117139: Chuyển đổi ngăn xếp đánh giá Python để sử dụng tham chiếu ngăn xếp nội bộ. Mục đích là để hỗ trợ các con trỏ được gắn thẻ. Trong PEP 703, điều này sẽ cho phép nó sử dụng hình thức đếm tham chiếu hoãn lại. Đối với cả bản dựng mặc định và bản dựng theo luồng tự do, điều này sẽ thiết lập cơ sở hạ tầng cho các số nguyên không được đóng hộp trong tương lai.
Thư viện¶
gh-115801: Tăng
TypeErrorkhi truyền một chuỗi tớidifflib.unified_diff()vàdifflib.context_diff().
Cốt lõi và nội dung¶
gh-117558: Cải thiện thông báo lỗi khi mong đợi một đối tượng chuỗi, byte hoặc bytearray có độ dài 1.
gh-117195: Tránh lỗi xác nhận đối với các bản dựng gỡ lỗi khi gọi
object.__sizeof__(1)gh-116022: Cải thiện đầu ra
__repr__()của các nútAST.gh-114091: Đã thay đổi thông báo lỗi chờ đợi thứ gì đó không thể chờ đợi từ "không thể sử dụng đối tượng <type> trong biểu thức chờ đợi" thành "không thể chờ đợi đối tượng '<type>'".
gh-113190:
Py_Finalize()hiện xóa tất cả các chuỗi được thực hiện.gh-84978: Thêm phương thức lớp
float.from_number()vàcomplex.from_number().gh-95144: Cải thiện thông báo lỗi từ
a in bkhibkhông phải là vùng chứa đề cập đến thuật ngữ "container".bpo-24766: Sửa lỗi xử lý đối số
doccho các lớp con củaproperty.
C API¶
gh-123961: Chuyển đổi loại tĩnh curses.window được macro
PyCursesWindow_Typehiển thị trongInclude/py_curses.hthành heap type. Bản vá của Bénédikt Trần.gh-124502: Thêm hàm
PyUnicode_Equal()vào giới hạn C API: kiểm tra xem hai chuỗi có bằng nhau không. Bản vá của Victor Stinner.gh-124296:
PyDictObjectkhông còn duy trì trường thẻ phiên bản riêng tưma_version_tagtrên mỗi PEP 699. Trường này ban đầu được thêm vào Python 3.6 (PEP 509) và không được dùng nữa trong Python 3.12.gh-124160: Khắc phục sự cố khi nhập mô-đun chứa trạng thái khởi tạo một pha và trạng thái trong trình thông dịch phụ.
gh-124153: Thêm khe
PyType_GetBaseByToken()vàPy_tp_tokenđể kiểm tra loại dễ dàng hơn, liên quan đến PEP 489 và PEP 630.gh-124127: Trong phiên bản giới hạn C API 3.14 trở lên,
Py_REFCNT()hiện được triển khai dưới dạng lệnh gọi hàm không rõ ràng để ẩn chi tiết triển khai. Bản vá của Victor Stinner.gh-123880: Đã sửa lỗi ngăn chặn việc nhập vòng tròn các mô-đun mở rộng sử dụng khởi tạo một pha.
gh-123909:
PyType_FromSpec(),PyType_FromSpecWithBases()vàPyType_FromModuleAndSpec()bây giờ sẽ thất bại nếu siêu dữ liệu của loại mới cótp_newtùy chỉnh.gh-107954: Thêm chức năng cấu hình khởi tạo Python (PEP 741):
Bản vá của Victor Stinner.
gh-107954: Thêm chức năng để nhận và thiết lập cấu hình Python thời gian chạy hiện tại:
Bản vá của Victor Stinner.
gh-123465:
Py_RELATIVE_OFFSEThiện được phép trongPyMemberDefđối với thành viên bù đắp đặc biệt"__vectorcalloffset__", cũng như các thành viên bù đắp đặc biệt không được khuyến khích"__dictoffset__"và"__weaklistoffset__"gh-100554: Đã thêm một khe
Py_tp_vectorcallđể đặttp_vectorcallthông qua họ hàmPyType_FromSpec(). Các tiện ích mở rộng API có giới hạn có thể sử dụng tính năng này để cung cấp khả năng triển khai dựa trên lệnh gọi vectơ hiệu quả hơn cho__new__và__init__.gh-122854: Thêm
Py_HashBuffer()để tính toán và trả về giá trị băm của bộ đệm. Bản vá của Antoine Pitrou và Victor Stinner.gh-122728: Sửa
PyEval_GetLocals()để tránhSystemError("đối số xấu đối với chức năng bên trong"). Bản vá của Victor Stinner.gh-116622: Làm cho
PyObject_Printkhắc phục một lỗi trong Android và OpenBSD khiến nó không thể đưa ra ngoại lệ khi cố gắng ghi vào luồng chỉ đọc.gh-105201: Thêm
PyIter_NextItem()để thay thếPyIter_Next(), có giá trị trả về không rõ ràng. Bản vá của Irit Katriel và Erlend Aasland.gh-121489: Xuất lại
_PyBytes_Join()riêng tư.gh-121645: Thêm hàm
PyBytes_Join(sep, iterable), tương tự nhưsep.join(iterable)trong Python. Bản vá của Victor Stinner.gh-89364: Xuất hàm
PySignal_SetWakeupFd(). Trước đây, chức năng này đã được ghi lại nhưng không thể sử dụng được trong mã của bên thứ 3. Bản vá của Victor Stinner.gh-113993:
PyUnicode_InternInPlace()không còn ngăn đối số của nó bị thu thập rác nữa.Một số hàm sử dụng
char *hiện được ghi lại là có thể ngăn các đối tượng chuỗi bị thu gom rác; tham khảo tài liệu của họ để biết chi tiết: các chức năng tiện lợiPyUnicode_InternFromString(),PyDict_SetItemString(),PyObject_SetAttrString(),PyObject_DelAttrString(),PyUnicode_InternFromString()vàPyModule_Add*.gh-113601: Đã xóa các xác nhận xây dựng gỡ lỗi liên quan đến chuỗi nội bộ, được kích hoạt sai bởi các tiện ích mở rộng ABI ổn định.
gh-112136: Khôi phục cấu trúc
_PyArg_Parserriêng tư và hàm_PyArg_ParseTupleAndKeywordsFast()riêng tư, đã bị xóa trước đó trong Python 3.13 alpha 1. Bản vá của Victor Stinner.gh-120642: Xóa loại
_Py_CODEUNITriêng tư khỏi C API công khai. Tiêu đềpycore_code.hnội bộ bây giờ sẽ được sử dụng để lấy loại nội bộ này. Bản vá của Victor Stinner.gh-120858:
PyDict_Next()không còn khóa từ điển trong bản dựng có luồng tự do nữa. Việc khóa cần được người gọi thực hiện trong toàn bộ vòng lặp.gh-120642: Loại bỏ các chức năng không ổn định sau:
PyUnstable_Replace_Executor()PyUnstable_SetOptimizer()PyUnstable_GetOptimizer()PyUnstable_GetExecutor()PyUnstable_Optimizer_NewCounter()PyUnstable_Optimizer_NewUOpOptimizer()
Bản vá của Victor Stinner.
gh-120389: Thêm chức năng mới để chuyển đổi số C
<stdint.h>từ/sang Pythonint:Bản vá của Victor Stinner.
gh-120600: Trong phiên bản giới hạn C API 3.14 trở lên,
Py_TYPE()hiện được triển khai dưới dạng lệnh gọi hàm không rõ ràng để ẩn chi tiết triển khai. Bản vá của Victor Stinner.gh-70278:
PyUnicode_FromFormat()không còn tạo ký tự\ufffdkết thúc cho chuỗi C bị cắt ngắn khi sử dụng độ chính xác với%svà%V. Bây giờ nó cắt ngắn chuỗi trước khi bắt đầu chuỗi nhiều byte bị cắt ngắn.gh-119771: Đặt
errnotrong_Py_c_pow()khi tràn. Bản vá của Sergey B Kirpicchev.gh-119182: Thêm một
PyUnicodeWriterAPI mới để tạo đối tượngstrPython:Bản vá của Victor Stinner.
gh-119613: Soft không dùng macro
Py_MEMCPY: thay vào đó hãy sử dụng trực tiếpmemcpy(). Bản vá của Victor Stinner.gh-119775: Việc tạo
immutable typesvới các cơ sở có thể thay đổi đã không được dùng kể từ phiên bản 3.12 và hiện tăngTypeError.gh-119585: Khắc phục sự cố khi trạng thái luồng được tạo bởi
PyGILState_Ensure()gọi hàm hủy mà trongPyThreadState_Clear()gọi lại thànhPyGILState_Ensure()vàPyGILState_Release(). Điều này có thể xảy ra khi ở bản dựng luồng tự do hoặc khi sử dụng các biến cục bộ luồng có hàm hủy gọiPyGILState_Ensure().gh-119613: Macro
Py_IS_NAN,Py_IS_INFINITYvàPy_IS_FINITElà soft deprecated.gh-119336: Khôi phục chức năng
_PyLong_NumBits()đã bị xóa. Nó được sử dụng bởi dự án pywin32. Bản vá của Ethan Smithgh-119344: Phần quan trọng API hiện được công khai như một phần của C API không giới hạn.
gh-119333: Thêm API
PyContext_AddWatcher()vàPyContext_ClearWatcher()để đăng ký lệnh gọi lại nhằm nhận thông báo về việc vào và thoát của các đối tượng ngữ cảnh.gh-119247: Đã thêm macro
Py_BEGIN_CRITICAL_SECTION_SEQUENCE_FASTvàPy_END_CRITICAL_SECTION_SEQUENCE_FASTđể có thể sử dụng API PySequence_Fast một cách an toàn khi chạy theo luồng tự do và cập nhật str.join để hoạt động mà không cần sử dụng GIL.gh-111389: Thêm hằng số
PyHASH_MULTIPLIER: hệ số nhân nguyên tố được sử dụng trong chuỗi và nhiều hàm băm khác. Bản vá của Victor Stinner.gh-118771: Một số khai báo C có tên không bắt đầu bằng tiền tố
Pyhoặc_Py, được thêm nhầm vào bản phát hành 3.13 alpha và beta, đã được chuyển sang tiêu đề nội bộ.gh-116984: Tạo mimalloc bao gồm liên quan đến tệp hiện tại để tránh các trình nhúng hoặc tiện ích mở rộng cần bao gồm
Internal/mimallocnếu chúng đã bao gồm các tiêu đề CPython nội bộ.gh-118789: Thêm
PyUnstable_Object_ClearWeakRefsNoCallbacks(), xóa các điểm yếu mà không gọi lại lệnh gọi lại của chúng.gh-118789: Khôi phục
_PyWeakref_ClearRefđã bị xóa trước đó trong Python 3.13 alpha 1.gh-116560: Thêm chức năng
PyLong_GetSign(). Bản vá của Sergey B Kirpicchev.gh-97588: Khắc phục việc tạo bitfield trong cấu trúc và liên kết
ctypes. Các trường không còn chồng chéo nữa.gh-87135: Việc cố gắng lấy GIL sau khi quá trình hoàn thiện thời gian chạy đã bắt đầu trong một luồng khác hiện khiến luồng bị treo thay vì chấm dứt, điều này tránh được các sự cố tiềm ẩn hoặc hỏng bộ nhớ do cố gắng chấm dứt một luồng đang chạy mã không được thiết kế riêng để hỗ trợ việc chấm dứt. Trong hầu hết các trường hợp, việc treo này là vô hại vì quá trình này sẽ sớm thoát ra.
Chức năng
PyThread_exit_threadhiện không được dùng nữa. Hành vi của nó không nhất quán trên các nền tảng và nó chỉ có thể được sử dụng một cách an toàn trong trường hợp hiếm hoi là mọi chức năng trong toàn bộ ngăn xếp cuộc gọi đã được thiết kế để hỗ trợ cơ chế chấm dứt phụ thuộc vào nền tảng. Người dùng chức năng này nên thay đổi thiết kế của mình để không yêu cầu chấm dứt luồng. Trong trường hợp không chắc rằng việc chấm dứt luồng là cần thiết và có thể được thực hiện một cách an toàn, người dùng có thể chuyển sang gọi trực tiếp các API dành riêng cho nền tảng nhưpthread_exit(POSIX) hoặc_endthreadex(Windows).bpo-34008: Đã thêm
Py_IsInitializedvào danh sách các API an toàn để gọi trước khi khởi chạy trình thông dịch và cập nhật các thử nghiệm nhúng để bao quát nó.
xây dựng¶
gh-125269: Khắc phục sự cố phát hiện xem có cần
-latomickhi biên dịch chéo CPython bằng tập lệnh cấu hình hay không.gh-123990: Xóa cấu hình bản dựng macro
WITH_FREELISTSvà--without-freelistsgh-124102: Cập nhật tài liệu nội bộ trong PCbuild, vì vậy hiện tại tài liệu này nêu chính xác rằng Windows yêu cầu VS2017 trở lên và Python 3.10 trở lên
gh-124043: Tòa nhà sử dụng
--with-trace-refs(tạm thời) không được phép khi GIL bị tắt.gh-123418: Cập nhật bản dựng Android để sử dụng OpenSSL 3.0.15.
gh-123297: Truyền giá trị của
LDFLAGStớiLDCXXSHAREDtrongsysconfig. Bản vá của Pablo Galindogh-121634: Cho phép chỉ định bộ ba biên dịch đích cho WASI.
gh-122578: Sử dụng WASI SDK 24 để thử nghiệm.
gh-116622: Đổi tên biến bản dựng
MODULE_LDFLAGStrở lạiLIBPYTHON, vì nó được sử dụng bởi các hệ thống xây dựng gói (ví dụ: Meson).gh-118943: Khắc phục sự cố trong đó JIT thử nghiệm có thể được mục tiêu
make regen-allxây dựng nhiều lần, dẫn đến các điều kiện chạy đua có thể xảy ra trên các bản dựng song song nhiều.gh-121996: Giới thiệu các tùy chọn ./configure --disable-safety và --enable-slow-safety. Bản vá của Donghee Na.
gh-120522: Đã thêm tùy chọn
--with-app-store-complianceđể khắc phục các sự cố đã biết với quy trình đánh giá macOS/iOS App Store.gh-120371: Hỗ trợ WASI SDK 22 bằng cách bỏ qua rõ ràng các hàm chỉ còn sơ khai trong wasi-libc.
gh-121731: Sửa lỗi biên dịch mimalloc trên GNU/Hurd
gh-121487: Khắc phục cảnh báo không dùng nữa cho ATOMIC_VAR_INIT trong mimalloc.
gh-121467: Sửa lỗi Makefile ngăn cài đặt các tệp tiêu đề mimalloc.
gh-121103: Trên các hệ thống POSIX, không bao gồm các bản cài đặt khung macOS, thư mục lib cho bản dựng luồng tự do hiện bao gồm hậu tố "t" để tránh xung đột với bản cài đặt bản dựng mặc định cùng vị trí.
gh-120831: Phiên bản iOS tối thiểu mặc định đã được tăng lên 13.0.
gh-121082: Khắc phục lỗi xây dựng khi nhà phát triển sử dụng đối số
--enable-pystatstrong lệnh cấu hình sau #118450.gh-120671: Khắc phục lỗi kiểm tra cấu hình do thiếu dung lượng khi thêm vào CFLAGS.
gh-120602: Xử lý chính xác các lượt cài đặt LLVM bằng
LLVM_VERSION_SUFFIXkhi xây dựng bằng--enable-experimental-jit.gh-120688: Trên WASI ở chế độ gỡ lỗi, Python hiện được xây dựng với cờ trình biên dịch
-O3thay vì-Og, để hỗ trợ nhiều lệnh gọi đệ quy hơn. Bản vá của Victor Stinner.gh-118943: Khắc phục tình trạng tương tranh có thể xảy ra ảnh hưởng đến các bản dựng song song được định cấu hình bằng
--enable-experimental-jit, trong đóFileNotFoundErrorcó thể do một quá trình khác đã chuyểnjit_stencils.h.newsangjit_stencils.hgây ra.gh-120326: Trên Windows, sửa lỗi build khi kết hợp tùy chọn
--disable-gilvà--experimental-jit.gh-120291: Làm cho tập lệnh shell
python-configtương thích với các shell không bash.gh-113565: Cải thiện việc kiểm tra phần phụ thuộc
cursesvàcurses.paneltrong configure.gh-119729: Trên hệ thống POSIX, tên tệp pkg-config (
.pc) hiện bao gồm các cờ ABI, có thể bao gồm gỡ lỗi ("d") và phân luồng tự do ("t"). Ví dụ: *python-3.14.pc(mặc định, bản dựng không gỡ lỗi) *python-3.14d.pc(mặc định, bản dựng gỡ lỗi) *python-3.14t.pc(bản dựng không có luồng)gh-119400:
make_ssl_certs, tập lệnh chuẩn bị dữ liệu chứng chỉ cho bộ thử nghiệm, giờ đây cho phép chỉ định ngày hết hạn.gh-115119: Quay lại libmpdec đi kèm nếu không tìm thấy phiên bản hệ thống.
gh-119132: Cập nhật
sys.versionđể xác định xem bản dựng là bản dựng mặc định hay bản dựng luồng tự do. Bản vá của Donghee Na.gh-118836: Sửa lỗi
AssertionErrorkhi xây dựng với--enable-experimental-jitvà trình biên dịch phát ra phầnSHT_NOTE.gh-118943: Khắc phục tình trạng tương tranh có thể xảy ra ảnh hưởng đến các bản dựng song song được định cấu hình bằng
--enable-experimental-jit, trong đó lỗi biên dịch có thể do tệp tiêu đề được tạo không đầy đủ gây ra.
Python 3.13.0 beta 1¶
Release date: 2024-05-08
Bảo mật¶
Cốt lõi và nội dung¶
gh-118414: Thêm các mã hoạt động được đo lường vào xác nhận YIELD_VALUE để theo dõi các trường hợp.
gh-117953: Khi một mô-đun dựng sẵn hoặc mở rộng được nhập lần đầu tiên, trong khi trình thông dịch phụ đang hoạt động, chức năng init của mô-đun hiện được chạy bởi trình thông dịch chính trước khi quá trình nhập tiếp tục trong trình thông dịch phụ. Do đó, các mô-đun init một pha hiện không thành công trong một trình thông dịch con bị cô lập mà không có chức năng init chạy trong trình thông dịch đó, trong khi trước đó nó sẽ chạy trong trình thông dịch con before bị lỗi, có khả năng để lại trạng thái chung và lệnh gọi lại, đồng thời khiến mô-đun ở trạng thái không nhất quán.
gh-117549: Không sử dụng cú pháp khởi tạo được chỉ định trong các hàm nội tuyến trong tiêu đề nội bộ. Chúng gây ra sự cố cho người dùng C++ hoặc MSVC chưa sử dụng tiêu chuẩn C++ mới nhất (C++20). Mặc dù nội bộ, pycore_backoff.h, được bao gồm (gián tiếp, thông qua pycore_code.h) bởi một số phần mềm chính của bên thứ 3 nhằm tăng tốc độ.
Thư viện¶
gh-95382: Cải thiện hiệu suất của
json.dumps()vàjson.dump()khi sử dụng đối số indent. Tùy thuộc vào dữ liệu, việc mã hóa bằngjson.dumps()với indent có thể nhanh hơn tới 2 đến 3 lần.
Cốt lõi và nội dung¶
gh-116322: Trong các bản dựng
--disable-gil, GIL sẽ được bật trong khi tải các mô-đun mở rộng C. Nếu mô-đun cho biết nó hỗ trợ chạy mà không cần GIL thì GIL sẽ bị tắt sau khi quá trình tải hoàn tất. Nếu không, GIL sẽ vẫn được bật trong suốt thời gian còn lại của trình thông dịch. Hành vi này không áp dụng nếu GIL đã được bật hoặc tắt rõ ràng bằngPYTHON_GILhoặc-Xgil.gh-118513: Sửa lỗi
UnboundLocalErrorkhông chính xác khi hai cách hiểu trong cùng một hàm đều tham chiếu đến cùng một tên và trong một cách hiểu thì tên bị ràng buộc trong khi ở cách hiểu khác thì nó là toàn cục.gh-118518: Cho phép hỗ trợ hoàn hảo của Linux hoạt động mà không cần con trỏ khung bằng cách sử dụng hỗ trợ JIT nâng cao của perf. Tính năng này được kích hoạt khi sử dụng biến môi trường
PYTHON_PERF_JIT_SUPPORThoặc khi chạy Python với-Xperf_jit. Bản vá của Pablo Galindo.gh-117514: Thêm hàm
sys._is_gil_enabled()trả về xem GIL hiện có được bật hay không. Trong bản dựng mặc định, nó luôn trả vềTruevì GIL luôn được bật. Trong bản dựng có luồng tự do, nó có thể trả vềTruehoặcFalse.gh-118164: Phá vỡ vòng lặp giữa quá trình triển khai Python của mô-đun
decimalvà mã Python để chuyển đổi số nguyên thành chuỗi. Đồng thời tối ưu hóa chuyển đổi số nguyên thành chuỗi cho các giá trị trong phạm vi từ 9_000 đến 135_000 chữ số thập phân.gh-118473: Sửa lỗi
sys.set_asyncgen_hooks()không được đặt một phần khi tăngTypeError.gh-118465: Trình biên dịch điền trường
__firstlineno__mới trên một lớp với số dòng của dòng đầu tiên của định nghĩa lớp.gh-118492: Khắc phục sự cố trong đó bộ đệm loại có thể hiển thị thuộc tính đã truy cập trước đó khi chạy trình hoàn thiện.
gh-117714: cập nhật
async_generator.athrow().close()vàasync_generator.asend().close()để đóng phần của chúng trong trình tạo không đồng bộ cơ bảngh-111201: Trình thông dịch interactive hiện được triển khai bằng Python, cho phép thực hiện một số tính năng mới như màu sắc, đầu vào nhiều dòng, xem lịch sử và chế độ dán. Được đóng góp bởi Pablo Galindo, Łukasz Langa và Lysandros Nikolaou dựa trên mã từ dự án PyPy.
gh-74929: Triển khai PEP 667: đã chuyển đổi
FrameType.f_localsvàPyFrame_GetLocals()để trả về một đối tượng proxy ghi qua khi khung tham chiếu đến một hàm hoặc mức độ hiểu.gh-116767: Khắc phục sự cố trong trình biên dịch trên 'async with' có nhiều trình quản lý ngữ cảnh.
gh-118335: Thay đổi cách sử dụng trình thông dịch cấp 2. Thay vì chạy Python với
-X uopshoặc đặt biến môi trườngPYTHON_UOPS=1, lựa chọn này hiện được thực hiện tại thời điểm xây dựng bằng cách định cấu hình với--enable-experimental-jit=interpreter.Beware! Điều này thay đổi biến môi trường để bật hoặc tắt micro-ops thành
PYTHON_JIT. Zz001zz cũ không còn được sử dụng nữa.gh-118306: Cập nhật phần tổng hợp JIT để sử dụng LLVM 18
gh-118160: Annotation scopes trong các lớp hiện có thể chứa phần hiểu. Tuy nhiên, những hiểu biết như vậy không được đưa vào phạm vi gốc của chúng khi chạy. Bản vá của Jelle Zijlstra.
gh-118272: Sửa lỗi
generator.closekhông giải phóng cục bộ của khung máy phát điện.gh-118216: Đừng xem xét việc nhập
__future__có dấu chấm trước tên mô-đun.gh-118074: Đảm bảo rằng các đối tượng Executor trong mảng COLD_EXITS không được coi là có khả năng GC (sẽ truy cập các byte bên ngoài đối tượng).
gh-107674: Số dòng khung tải lười biếng để cải thiện hiệu suất truy tìm
gh-118082: Cải thiện thông báo
SyntaxErrorcho các mục nhập không có tên, như trong trường hợpfrom x importvàimport. Bây giờ nó chỉ ra cho người dùng rằngimportmong đợi ít nhất một cái tên sau nó.gh-118090: Cải thiện thông báo
SyntaxErrorcho dấu ngoặc thông số loại trống.gh-117958: Đã thêm phương thức
get_jit_code()để truy cập mã máy được biên dịch JIT từ UOp Executor khi JIT thử nghiệm được bật. Bản vá của Anthony Shaw.gh-117901: Thêm tùy chọn cho codegen của trình biên dịch để lưu các chuỗi lệnh lồng nhau để xem xét nội tâm.
gh-116622: Chuyển hướng stdout và stderr sang nhật ký hệ thống khi được nhúng vào ứng dụng Android.
gh-109118: annotation scope trong phạm vi lớp hiện có thể chứa lambdas.
gh-117894: Ngăn chặn việc sử dụng lại các đối tượng
agen.aclose()sau.throw().gh-117881: ngăn truy cập đồng thời vào trình tạo không đồng bộ thông qua athrow().throw() hoặc asend().throw()
gh-117536: Sửa lỗi
RuntimeWarningkhi gọiagen.aclose().throw(Exception).gh-117755: Sửa lỗi bộ cấp phát mimalloc để phân bổ bộ nhớ lớn (khoảng 8.589.934.592 GiB) trên s390x. Bản vá của Victor Stinner.
gh-117750: Khắc phục sự cố trong đó lệnh của đối tượng không đồng bộ với các giá trị bên trong của đối tượng khi bị xóa.
obj.__dict__.clear()hiện xóa các giá trị bên trong nhưng để lại lệnh được đính kèm với đối tượng.gh-117431: Cải thiện hiệu suất của các phương thức
bytesvàbytearraysau bằng cách điều chỉnh chúng theo quy ước gọiMETH_FASTCALL:count()find()index()rfind()rindex()
gh-117709: Tăng tốc độ cuộc gọi tới
str()với đối số chỉ vị trí, bằng cách sử dụng quy ước gọi PEP 590vectorcall. Bản vá của Erlend Aasland.gh-117680: Cung cấp cho
_PyInstructionSequencegiao diện Python và sử dụng nó trong các thử nghiệm.gh-115776: Theo định nghĩa, các đối tượng được phân bổ tĩnh là bất tử nên phải được đánh dấu như vậy bất kể chúng có nằm trong mô-đun mở rộng hay không.
gh-117385: Xóa các sự kiện
PY_MONITORING_EVENT_BRANCHvàPY_MONITORING_EVENT_EXCEPTION_HANDLEDchưa được xử lý khỏisys.settrace().gh-116322: Các mô-đun mở rộng có thể cho biết thời gian chạy rằng chúng có thể chạy mà không cần GIL. Các mô-đun init nhiều pha thực hiện điều này bằng cách gọi việc cung cấp
Py_MOD_GIL_NOT_USEDcho khePy_mod_gil, trong khi các mô-đun init một pha gọiPyUnstable_Module_SetGIL(mod, Py_MOD_GIL_NOT_USED)từ hàm init của chúng.gh-116129: Triển khai PEP 696, thêm hỗ trợ cho các giá trị mặc định trên các tham số loại. Bản vá của Jelle Zijlstra.
gh-93502: Thêm hai chức năng mới vào C-API,
PyRefTracer_SetTracer()vàPyRefTracer_GetTracer(), cho phép theo dõi việc tạo và hủy đối tượng giống như cách mà mô-đuntracemallocthực hiện. Bản vá của Pablo Galindogh-107674: Cải thiện đáng kể hiệu suất của
sys.settrace()gh-95754: Cải thiện thông báo lỗi khi tập lệnh che khuất mô-đun từ thư viện chuẩn khiến
AttributeErrorđược nâng lên. Tương tự, cải thiện thông báo lỗi khi tập lệnh theo dõi mô-đun bên thứ ba cố gắng truy cập thuộc tính từ mô-đun bên thứ ba đó trong khi vẫn khởi tạo.gh-99180: Loại bỏ các chỉ báo truy ngược không có thông tin trong các câu lệnh
returnvàassignmentđơn giản. Bản vá của Pablo Galindo.gh-105879: Cho phép chuyển các đối số globals và locals thành
exec()vàeval()làm từ khóa.
Thư viện¶
gh-118418: Một
DeprecationWarninghiện được phát ra nếu bạn không chuyển giá trị cho tham số type_params mới củatyping._eval_type()hoặctyping.ForwardRef._evaluate(). (Không nên sử dụng một trong hai hàm riêng tư và không có giấy tờ này ngay từ đầu, nhưng việc không chuyển giá trị cho tham sốtype_paramscó thể dẫn đến hành vi không chính xác trên Python 3.12 hoặc mới hơn.)gh-118660: Thêm tham số loại thứ hai tùy chọn vào
typing.ContextManagervàtyping.AsyncContextManager, đại diện cho kiểu trả về tương ứng là__exit__()và__aexit__(). Tham số này mặc định làbool | None.gh-118650: Mô-đun
enumcho phép xác định phương thức có tên_repr_*trên các loạiEnum.gh-118648: Thêm mặc định tham số loại vào
typing.Generatorvàtyping.AsyncGenerator.gh-118164: Việc triển khai Python của mô-đun
decimalcó thể bị treo trong các trường hợp công suất tương đối nhỏ (như2**117) nếu độ chính xác của ngữ cảnh được đặt ở giá trị rất cao. Hiện đang sử dụng một phương pháp khác để kiểm tra các kết quả có thể biểu thị chính xác mà không dựa vào tính toán10**precision(có thể quá lớn để tính toán).gh-111744:
breakpoint()vàpdb.set_trace()hiện vào trình gỡ lỗi ngay sau cuộc gọi thay vì trước khi dòng tiếp theo được thực thi.gh-118406: Thêm chữ ký cho đối tượng
sqlite3.Connection.gh-101732: Sử dụng chức năng thời gian openssl tương thích với Y2038 khi khả dụng.
gh-118404: Sửa
inspect.signature()cho các lệnh gọi không thể so sánh được.gh-118402: Sửa
inspect.signature()cho kết quả của lệnh gọifunctools.cmp_to_key().gh-116622: Trên Android,
sysconfig.get_platformhiện trả về định dạng do PEP 738 chỉ định.gh-118285: Cho phép chỉ định chữ ký của các phiên bản có thể gọi tùy chỉnh của loại tiện ích mở rộng theo thuộc tính
__text_signature__. Chỉ định chữ ký của các phiên bảnoperator.attrgetter,operator.itemgettervàoperator.methodcaller.gh-118314: Khắc phục trường hợp cạnh ở chế độ nghiêm ngặt
binascii.a2b_base64(), trong đó không phát hiện thấy phần đệm quá mức khi không cần phần đệm.gh-118271: Thêm các phương thức
PhotoImageread()để đọc hình ảnh từ một tệp vàdata()để lấy dữ liệu hình ảnh. Thêm tham số background và grayscale vào phương thứcPhotoImagewrite().gh-118225: Thêm phương thức
PhotoImagecopy_replace()để sao chép một vùng từ hình ảnh này sang hình ảnh khác, có thể bằng cách thu phóng pixel và/hoặc lấy mẫu con. Thêm tham số from_coords vào các phương thứcPhotoImagecopy(),zoom()vàsubsample(). Thêm tham số zoom và subsample vào phương thứcPhotoImagecopy().gh-118221: Sửa lỗi khiến
sqlite3.Connection.iterdump()có thể bị lỗi nếu sử dụngrow factorytùy chỉnh. Bản vá của Erlend Aasland.gh-118013: Khắc phục sự hồi quy được giới thiệu trong gh-103193, điều đó có nghĩa là việc gọi
inspect.getattr_static()trên một phiên bản sẽ khiến tham chiếu mạnh đến lớp của phiên bản đó tồn tại trong bộ đệm trong trong mô-đuninspect. Điều này gây ra mức tiêu thụ bộ nhớ không mong muốn nếu lớp được tạo động, lớp đó chứa các tham chiếu mạnh đến các đối tượng khác chiếm một lượng bộ nhớ đáng kể và bộ nhớ đệm chứa tham chiếu mạnh duy nhất đến lớp đó. Bản sửa lỗi hồi quy dẫn đến sự chậm lại tronggetattr_static(), nhưng hàm này vẫn phải nhanh hơn đáng kể so với trong Python 3.11. Bản vá của Alex Waygood.gh-118218: Tăng tốc
itertools.pairwise()trong trường hợp thông thường lên tới 1,8 lần.gh-117486: Cải thiện hành vi của các lớp con do người dùng xác định của
ast.AST. Các lớp như vậy giờ đây sẽ không yêu cầu thay đổi trong trường hợp thông thường để phù hợp với các thay đổi hành vi của mô-đunasttrong Python 3.13. Bản vá của Jelle Zijlstra.gh-90848: Đã sửa lỗi
unittest.mock.create_autospec()để định cấu hình mô hình gốc bằng các đối số từ khóa.gh-118168: Sửa lỗi thay thế đối số không chính xác khi
typing.Unpackđược sử dụng vớitupledựng sẵn.typing.Unpackhiện tăngTypeErrorkhi được sử dụng với một số loại không hợp lệ. Bản vá của Jelle Zijlstra.gh-118131: Thêm giao diện dòng lệnh cho mô-đun
random. Bản vá của Hugo van Kemenade.gh-118107: Khắc phục lỗi đọc
zipimportcủa tệp ZIP64 với các mục nhập tệp quá lớn hoặc chênh lệch quá xa.gh-102511: Sửa lỗi
os.path.normpath()cho đường dẫn UNC trên Windows. Tăng tốcos.path.splitroot()bằng cách triển khai gốc.gh-117535: Thay đổi tên tệp không xác định của
warningstừsysthành<sys>để làm rõ rằng đó không phải là tên tệp thực.gh-114053: Sửa lỗi
NameErrorkhi gọityping.get_type_hints()trên một lớp sử dụng tham số loại PEP 695 trong mô-đun cófrom __future__ import annotationsở đầu tệp. Bản vá của Alex Waygood.gh-116931: Thêm tham số fileobj kiểm tra
tarfile.TarFile.addfile()gh-117995: Không tăng
DeprecationWarningkhi sử dụng sequence tham số để liên kết các phần giữ chỗ không tên, được lập chỉ mục. Xem thêm gh-100668.gh-80361: Sửa lỗi TypeError trong
email.message.Message.get_payload()khi bộ ký tự được mã hóa RFC 2231.gh-86650: Khắc phục lỗi IndexError khi phân tích cú pháp một số email có Message-ID không hợp lệ (bao gồm cả các địa chỉ một lần được tạo bởi Microsoft Outlook).
gh-117691: Cải thiện các thông báo lỗi do cảnh báo không dùng nữa
tarfileliên quan đến PEP 706. Nếu đối sốfilterkhông được cung cấp choextract()hoặcextractall, thì cảnh báo không dùng nữa giờ sẽ trỏ đến dòng trong mã của người dùng nơi hàm liên quan được gọi. Bản vá của Alex Waygood.gh-115874: Đã sửa lỗi phân đoạn có thể xảy ra trong quá trình thu thập rác của các đối tượng
_asyncio.FutureIter. Bản vá của Savannah Ostrowski.gh-115060: Tăng tốc
pathlib.Path.glob()bằng cách bỏ qua lệnh gọiis_dir()ban đầu. Do thay đổi này,glob()không thể tăngOSErrornữa.gh-77102: mô-đun
sitehiện phân tích tệp.pthvới UTF-8 trước và locale encoding nếuUnicodeDecodeErrorxảy ra. Nó chỉ hỗ trợ mã hóa miền địa phương trước đây.gh-76785: Chúng tôi đã giới thiệu mô-đun
_interpreterscấp thấp nhằm mục đích triển khai PyPI của PEP 734. Đôi khi nó có sẵn dưới dạng mô-đun_xxsubinterpretersvà trước đây chỉ được sử dụng để thử nghiệm. Trong hầu hết các trường hợp, nó phải được coi là một mô-đun nội bộ, như_threadvà_imp. Xem https://discuss.python.org/t/pep-734-multiple-interpreters-in-the-stdlib/41147/26.gh-115060: Tăng tốc
pathlib.Path.glob()bằng cách không quét các thư mục để tìm các phân đoạn mẫu không phải ký tự đại diện.gh-117727: Tăng tốc
pathlib.Path.iterdir()bằng cách sử dụngos.scandir()nội bộ.gh-117586: Tăng tốc
pathlib.Path.walk()bằng cách làm việc với các chuỗi bên trong.gh-117722: Thay đổi hỗ trợ nhiều dấu phân cách mới trong
asyncio.StreamReader.readuntil()để chỉ chấp nhận các bộ dấu phân cách thay vì các lần lặp tùy ý.gh-117692: Sửa lỗi khi
doctest.DocTestFinderkhông hoạt động trênbuiltin_function_or_methodđược gói.gh-117348: Đã khôi phục phần lớn hiệu suất thời gian nhập của trình phân tích cú pháp cấu hình bằng cách tránh các lớp dữ liệu.
gh-117641: Tăng tốc
os.path.commonpath()trên Unix.gh-117663: Sửa
_simple_enumđể phát hiện bí danh khi có nhiều đối số nhưng chỉ có một đối số là giá trị thành viên.gh-117636: Tăng tốc
os.path.join().gh-117618: Hỗ trợ
package.moduledưới dạngfilenamecho lệnhbreakcủapdbgh-102247: mã trạng thái enum với các hằng số trong http.HTTPStatus được cập nhật để bao gồm các tên từ RFC9110. Zz002zz này bao gồm một số trạng thái HTTP trước đây chỉ được sử dụng cho WEBDAV và gán nhiều tên chung hơn cho chúng.
Các hằng số cũ được giữ nguyên để tương thích ngược.
gh-117607: Tăng tốc
os.path.relpath().gh-117586: Tăng tốc
pathlib.Path.glob()bằng cách làm việc với các chuỗi bên trong.gh-117225: Thêm màu vào đầu ra doctest. Bản vá của Hugo van Kemenade.
gh-117566:
ipaddress.IPv6Address.is_loopback()bây giờ sẽ trả vềTruecho các địa chỉ loopback được ánh xạ IPv4, tức là các địa chỉ trong không gian địa chỉ::ffff:127.0.0.0/104.gh-117546: Khắc phục sự cố trong đó
os.path.realpath()ngừng giải quyết các liên kết tượng trưng sau khi gặp phải vòng lặp liên kết tượng trưng trên POSIX.gh-116720: Cải thiện hành vi của
asyncio.TaskGroupkhi hủy bên ngoài va chạm với hủy bên trong. Ví dụ: khi hai nhóm nhiệm vụ được lồng nhau và cả hai đều gặp phải một ngoại lệ trong một nhiệm vụ con cùng một lúc, có thể nhóm nhiệm vụ bên ngoài sẽ hoạt động sai vì tính năng hủy bên trong của nó đã bị nhóm nhiệm vụ bên trong nuốt chửng.Trong trường hợp một nhóm nhiệm vụ bị hủy bên ngoài và cũng phải đưa ra
ExceptionGroup, giờ đây nó sẽ gọi phương thứccancel()của nhiệm vụ mẹ. Điều này đảm bảo rằngasyncio.CancelledErrorsẽ được nâng lên ởawaittiếp theo, do đó việc hủy không bị mất.Lợi ích bổ sung của những thay đổi này là các nhóm nhiệm vụ hiện giữ nguyên số lần hủy (
asyncio.Task.cancelling()).Để xử lý một số trường hợp góc,
asyncio.Task.uncancel()hiện có thể đặt lại cờ_must_cancelkhông có giấy tờ khi số lần hủy đạt đến 0.gh-117516: Thêm
typing.TypeIs, triển khai PEP 742. Bản vá của Jelle Zijlstra.gh-117503: Khắc phục sự cố hỗ trợ tên người dùng không phải ASCII trong đường dẫn byte trong
os.path.expanduser()trên Posix.gh-117394:
os.path.ismount()hiện nhanh hơn 2-3 lần nếu người dùng có quyền.gh-117313: Chỉ coi
'\n','\r'và'\r\n'là dấu phân cách dòng khi gấp lại các tin nhắnemail. Giữ nguyên các ký tự điều khiển'\v','\f','\x1c','\x1d'và'\x1e'và các dấu phân cách dòng Unicode'\x85','\u2028'và'\u2029'.gh-117142: Chuyển đổi
_ctypessang khởi tạo nhiều pha (PEP 489).gh-66543: Thêm chức năng
mimetypes.guess_file_type()hoạt động với đường dẫn tệp. Truyền đường dẫn tệp thay vì URL trongguess_type()là soft deprecated.gh-68583: webbrowser CLI: thay thế getopt bằng argparse, thêm tùy chọn dài. Bản vá của Hugo van Kemenade.
gh-116871: Đề xuất tên cho
AttributeErrorvàImportErrorhiện chỉ bao gồm các tên được gạch dưới nếu tên ban đầu được gạch dưới.gh-116023: Không hiển thị các trường trống (giá trị
Nonehoặc[]) trongast.dump()theo mặc định. Thêm tham sốshow_empty=Falseđể tùy chọn hiển thị chúng.gh-115961: Đã thêm thuộc tính
namevàmodecho các đối tượng giống như tệp được nén và lưu trữ trong các mô-đunbz2,lzma,tarfilevàzipfile. Giá trị của thuộc tínhmodecủagzip.GzipFileđã được thay đổi từ số nguyên (1hoặc2) thành chuỗi ('rb'hoặc'wb'). Giá trị của thuộc tínhmodecủa đối tượng giống như tệp có thể đọc được trả về bởizipfile.ZipFile.open()đã được thay đổi từ'r'thành'rb'.gh-82062: Sửa
inspect.signature()để xử lý chính xác các giá trị mặc định của tham số trên các phương thức trong mô-đun mở rộng sử dụng tên được xác định trong không gian tên mô-đun.gh-83856: Tôn vinh
atexitcho tất cả các phương thức khởi độngmultiprocessinggh-113081: In ngoại lệ được tô màu giống như truy nguyên tích hợp trong
pdbgh-112855: Tăng tốc độ tẩy các đối tượng
pathlib.PurePath. Bản vá của Barney Gale.gh-109617:
ncurses: đã khắc phục sự cố có thể xảy ra trên macOS 13 trở về trước khi Python được xây dựng bằng SDK của Apple Xcode 15.gh-83151: Đã bật các câu lệnh và đánh giá tùy ý trong shell
pdbđể truy cập các biến cục bộ của khung hiện tại, giúp mã đa phạm vi như trình tạo hoặc hàm lồng nhau có thể hoạt động.gh-110209: Thêm
__class_getitem__()vàotypes.GeneratorTypevàtypes.CoroutineTypecho mục đích gợi ý loại. Bản vá của James Hilton-Balfe.gh-108191:
types.SimpleNamespacehiện chấp nhận một đối số vị trí tùy chọn chỉ định các giá trị ban đầu của các thuộc tính dưới dạng một lệnh hoặc một cặp khóa-giá trị có thể lặp lại.gh-62090: Sửa lỗi xác nhận do khoảng trắng gây ra trong metavar hoặc nhóm
SUPPRESS-ed trongargparsebằng cách đơn giản hóa định dạng sử dụng. Bản vá của Ali Hamdan.gh-102402: Điều chỉnh
logging.LogRecordđể sử dụngtime.time_ns()và sửa lỗi nhỏ liên quan đến toán dấu phẩy động.gh-100242: Làm cho việc triển khai Python thuần túy
functools.partial.__new__phù hợp hơn với việc triển khai C bằng cách không chỉ luôn kiểm tra sự hiện diện của thuộc tính'func'trên đối số đầu tiên củapartial. Thay vào đó, cả phiên bản Python và phiên bản C đều thực hiện kiểm traisinstance(func, partial)đối số đầu tiên củapartial.gh-99730: yêu cầu HEAD không còn được nâng cấp lên yêu cầu GET trong quá trình chuyển hướng trong urllib.
gh-66410: Đặt
wantobjectstoàn cầu của mô-đuntkinterthành2trước khi tạo đối tượngTkhoặc gọi phương thứcwantobjects()của đối tượngTkvới đối số2giờ đây tạo các đối số cho lệnh gọi lại đã đăng ký trong mô-đuntkinterđể được chuyển dưới dạng các đối tượng Python khác nhau (int,float,bytes,tuple), tùy thuộc vào cách biểu diễn bên trong của chúng trong Tcl, thay vì luôn làstr.tkinter.wantobjectshiện được đặt thành2theo mặc định.bpo-40943: Khắc phục một số lỗi IndexError khi phân tích email có ID tin nhắn, địa chỉ, tuyến đường, v.v. bị cắt ngắn, v.v.
example@.bpo-39324: Thêm ánh xạ loại mime cho .md <-> text/markdown
bpo-18108:
shutil.chown()hiện hỗ trợ các đối số từ khóa dir_fd và follow_symlinks.bpo-30988: Sửa lỗi phân tích cú pháp email có tiêu đề địa chỉ không hợp lệ có dấu chấm ở đầu hoặc cuối. Bản vá của tsufeki.
bpo-32839: Thêm phương thức
after_info()cho các widget Tkinter.
Tài liệu¶
gh-117928: Phiên bản Sphinx tối thiểu cần thiết cho tài liệu hiện là 6.2.1.
xây dựng¶
gh-118734: Sửa bản dựng Windows khi được gọi trực tiếp (không thông qua tập lệnh
build.bat) mà không chỉ định giá trị choUseTIER2.gh-115119: Tùy chọn
configure--with-system-libmpdechiện được mặc định làyes. Bản sao đi kèm củalibmpdecimalsẽ bị xóa trong Python 3.15.gh-117845: Khắc phục sự cố xây dựng dựa trên các phiên bản libedit gần đây bằng cách phát hiện chữ ký móc đọc dòng trong configure.
gh-116622: Một dự án thử nghiệm đã được thêm vào để chạy bộ thử nghiệm trên Android.
gh-117645: Tăng kích thước ngăn xếp WASI từ 512 KiB lên 8 MiB và bộ nhớ ban đầu từ 10 MiB lên 20 MiB. Bản vá của Victor Stinner.
gh-115119: configure hiện sử dụng pkg-config để phát hiện các phụ thuộc
decimalnếu tùy chọn--with-system-libmpdecđược cung cấp.
cửa sổ¶
gh-115119: Cập nhật trình cài đặt Windows để sử dụng libmpdecimal 4.0.0.
gh-118486:
os.mkdir()hiện chấp nhận mode của0o700để hạn chế thư mục mới cho người dùng hiện tại.gh-118347: Sửa lỗi không cài đặt được bản cập nhật launcher.
gh-118293: Mô-đun
multiprocessinghiện chuyển cờSTARTF_FORCEOFFFEEDBACKkhi quá trình sinh sản để báo cho Windows không thay đổi con trỏ chuột.gh-115009: Cập nhật trình cài đặt Windows để sử dụng SQLite 3.45.3.
gh-90329: Loại bỏ cảnh báo hiển thị khi tạo môi trường ảo khi đường dẫn được yêu cầu và đường dẫn được tạo chỉ khác nhau bởi một tên ngắn (kiểu 8.3). Cảnh báo sẽ tiếp tục được hiển thị nếu một điểm nối hoặc liên kết tượng trưng trong đường dẫn khiến venv được tạo ở một vị trí khác với vị trí được yêu cầu ban đầu.
gh-117786: Sửa lỗi môi trường ảo không khởi chạy chính xác khi được tạo từ bản cài đặt Store.
macOS¶
gh-115119: Cập nhật trình cài đặt macOS để sử dụng libmpdecimal 4.0.0.
gh-114099: Việc sử dụng biểu tượng tiền xử lý iOS đã được làm cho tương thích với SDK macOS cũ hơn.
gh-115009: Cập nhật trình cài đặt macOS để sử dụng SQLite 3.45.3.
gh-91629: Sử dụng config
~/.config/fish/conf.dvà fish_add_path để thiết lậpPATHkhi cài đặt cho Fish shell.
IDLE¶
bpo-34774: Sử dụng chủ đề màu do người dùng chọn cho Trợ giúp => IDLE Doc.
C API¶
gh-118124: Sửa
Py_BUILD_ASSERTvàPy_BUILD_ASSERT_EXPRcho các biểu thức không cố định: sử dụngstatic_assert()trên C11 và mới hơn. Bản vá của Victor Stinner.gh-110850: Thêm biến thể "Thô" của hàm PyTime
Bản vá của Victor Stinner.
gh-117987: Khôi phục các hàm đã bị xóa trong Python 3.13 alpha 1:
Bản vá của Victor Stinner.
gh-117929: Khôi phục chức năng
PyEval_InitThreads()đã bị xóa. Bản vá của Victor Stinner.gh-117534: Cải thiện logic xác thực trong quá trình triển khai C của
datetime.datetime.fromisoformat()để xử lý tốt hơn những năm không hợp lệ. Bản vá của Vlad Efanov.gh-68114: Đã sửa lỗi xử lý của Skipitem() đối với các trình định dạng 'w' và 'w#' cũ. Những thứ này không còn được hỗ trợ và hiện sẽ đưa ra một ngoại lệ nếu được sử dụng.
gh-111997: Thêm C-API để kích hoạt các sự kiện giám sát.
Python 3.13.0 alpha 6¶
Release date: 2024-04-09
Cốt lõi và nội dung¶
gh-117494: Tái cấu trúc cấu trúc dữ liệu chuỗi lệnh từ biên dịch.c thành hướng dẫn_sequence.c.
gh-116968: Giới thiệu loại bộ đếm lùi 16 bit thống nhất (
_Py_BackoffCounter), được chia sẻ giữa chuyên gia thích ứng Cấp 1 và trình tối ưu hóa Cấp 2. Zz002zz được sử dụng cho bộ đếm chuyên môn hóa thích ứng đã thay đổi nhưng hành vi (được cho là) giống hệt nhau.Hoạt động của bộ đếm Cấp 2 được thay đổi:
Không còn ngưỡng động nữa (chúng tôi chưa bao giờ thay đổi các ngưỡng này).
Tất cả các bộ đếm bây giờ đều sử dụng cùng một thời gian lùi theo cấp số nhân.
Bộ đếm cho
JUMP_BACKWARDbắt đầu đếm ngược từ 16.temperatureở lối ra bên cạnh bắt đầu đếm ngược từ 64.
gh-117431: Cải thiện hiệu suất của các phương thức
bytesvàbytearraysau bằng cách điều chỉnh chúng theo quy ước gọiMETH_FASTCALL:endswith()startswith()
gh-117431: Cải thiện hiệu suất của các phương thức
strsau bằng cách điều chỉnh chúng theo quy ước gọiMETH_FASTCALL:gh-117411: Di chuyển
PyFutureFeaturessang tiêu đề nội bộ và đặt nó ở chế độ riêng tư.gh-109120: Đã thêm phần xử lý các biểu thức dấu sao không chính xác, ví dụ:
f(3, *). Bản vá của Grigoryev Semyongh-117266: Khắc phục sự cố cho một số lớp con do người dùng tạo của
ast.AST. Các lớp như vậy hiện được mong đợi sẽ đặt thuộc tính_field_types.gh-99108: Đã cập nhật mã HACL* project C tích hợp sẵn của
hashlibtừ thượng nguồn mà chúng tôi sử dụng cho nhiều hoạt động triển khai khi chúng không có mặt qua OpenSSL trong một bản dựng nhất định. Điều này cũng tránh được khả năng hiếm gặp về vấn đề liên kết một quy tắc định nghĩa tên ký hiệu C.gh-117108: Thay đổi bit không gian cũ của các đối tượng trong thế hệ trẻ từ 0 thành gcstate->đã truy cập, để mọi đối tượng được tạo trong GC sẽ có bit cũ được đặt chính xác nếu chúng được chuyển sang thế hệ cũ.
gh-117108: Giờ đây, chu trình GC chọn kích thước gia số dựa trên tổng kích thước vùng nhớ heap, thay vì tốc độ tạo đối tượng. Điều này đảm bảo rằng nó có thể theo kịp với số đống ngày càng tăng.
gh-116735: Đối với
INSTRUMENTED_CALL_FUNCTION_EX, đặtarg0thànhsys.monitoring.MISSINGthay vìNonecho sự kiệnCALL.gh-113964: Việc bắt đầu các luồng mới và tạo quy trình thông qua
os.fork()hiện chỉ bị ngăn chặn khi tất cả các luồng không phải daemon thoát ra.gh-116626: Đảm bảo
INSTRUMENTED_CALL_FUNCTION_EXluôn phát raCALLgh-116554:
list.sort()hiện khai thác nhiều trường hợp sắp xếp thứ tự một phần hơn, đặc biệt là những trường hợp có lượt chạy giảm dần dài với lượt chạy phụ có giá trị bằng nhau. Hiện tại, chúng được công nhận là các lần chạy đơn lẻ (trước đây, mỗi khối giá trị lặp lại sẽ tạo ra một lần chạy mới).gh-114099: Đã thêm Trình tải có thể khám phá các mô-đun mở rộng trong thư mục Khung kiểu iOS.
gh-115775: Trình biên dịch điền trường
__static_attributes__mới trên một lớp với tên của các thuộc tính của lớp này được truy cập thông qua self.X từ bất kỳ hàm nào trong nội dung của nó.gh-115776: Mảng giá trị, cấu trúc
PyDictValueshiện được nhúng vào đối tượng trong quá trình phân bổ. Điều này mang lại hiệu suất tốt hơn trong trường hợp thông thường và không bị suy giảm nhiều khi__dict__của đối tượng được hiện thực hóa.gh-108362: Triển khai trình thu gom rác tuần hoàn gia tăng. Bằng cách thu thập thế hệ cũ theo từng bước, không cần phải quét toàn bộ vùng nhớ heap. Điều này có thể giảm đáng kể thời gian tạm dừng tối đa cho các chương trình có số lượng lớn.
Giảm số thế hệ từ ba xuống còn hai. Thế hệ cũ được chia thành hai không gian, “đã ghé thăm” và “đang chờ xử lý”.
Việc thu thập diễn ra theo hai bước:: * Một phần gia tăng được hình thành từ thế hệ trẻ và một phần nhỏ của không gian đang chờ xử lý. * Phần gia tăng này được quét và những người sống sót di chuyển đến cuối không gian đã ghé thăm.
Khi không gian thu thập trở nên trống, hai không gian đó sẽ được hoán đổi cho nhau.
Thư viện¶
Cốt lõi và nội dung¶
bpo-24612: Cải thiện
SyntaxErrorxảy ra khi 'không' xuất hiện sau toán tử. Bản vá của Pablo Galindo
Thư viện¶
gh-117648: Cải thiện hiệu suất của
os.path.join()vàos.path.expanduser().gh-117584: Tăng
TypeErrorcho các đường dẫn không có trongposixpath.relpath.gh-117467: Giữ quyền sở hữu hộp thư khi viết lại trong
mailbox.mbox.flush. Bản vá của Tony Mountifield.gh-114848: Tăng
FileNotFoundErrorkhigetcwd()trả về '(không thể truy cập)', điều này có thể xảy ra trên Linux >= 2.6.36 với glibc < 2.27.gh-117459:
asyncio.asyncio.run_coroutine_threadsafe()hiện lưu giữ dấu vết củaCancelledError,TimeoutErrorvàInvalidStateErrorđược đưa ra trong coroutine.gh-117381: Sửa thông báo lỗi cho
ntpath.commonpath().gh-117337: Không dùng các hàm
glob.glob0()vàglob.glob1()không có giấy tờ. Thay vào đó, hãy sử dụngglob.glob()và chuyển một thư mục tới đối số root_dir của nó.gh-117348:
configparser.RawConfigParser._read()được tái cấu trúc để giảm độ phức tạp của chu kỳ và cải thiện khả năng hiểu.gh-117335: Tăng TypeError đối với các chuỗi không phải của
ntpath.commonpath().gh-66449:
configparser.ConfigParserhiện chấp nhận các phần chưa được đặt tên trước các phần được đặt tên, nếu được định cấu hình để làm như vậy.gh-88014: Trong tài liệu về
gzip.GzipFiletrong gzip mô-đun, giải thích kiểu dữ liệu của đối số hàm tạo tùy chọn mtime và đề xuấtmtime = 0để tạo các luồng xác định.gh-117310: Đã sửa lỗi không thể xảy ra sớm và
Py_DECREFbổ sung gây ra sự cố trongsslkhi tạo_ssl._SSLContextmới nếu CPython được xây dựng không hợp lý sao cho danh sách mật mã mặc định trống or thư viện SSL mà nó được liên kết với các báo cáo lỗi từ CSSL_CTX_set_cipher_list()API của nó.gh-117294:
DocTestCasehiện báo cáo là bị bỏ qua nếu tất cả các ví dụ trong doctest đều bị bỏ qua.gh-98966: Trong
subprocess, đưa ra thông báo nhiều thông tin hơn khistdout=STDOUT.gh-117225: doctest: chỉ in "và X không thành công" khi khác 0, không chia số nhiều "1 mục". Bản vá của Hugo van Kemenade.
gh-117205: Tăng tốc
compileall.compile_dir()lên 20% khi sử dụng đa xử lý bằng cách tăngchunksize.gh-117178: Khắc phục tình trạng hồi quy trong quá trình tải lười biếng các mô-đun tự tham chiếu, được giới thiệu trong gh-114781.
gh-112383: Khắc phục việc xử lý các hướng dẫn
ENTER_EXECUTORcủa mô-đundis.gh-117182: Tải từng phần các mô-đun sửa đổi
__class__của riêng chúng không còn hoàn nguyên__class__thànhtypes.ModuleTypenữa.gh-117084: Sửa lỗi trích xuất
zipfilecho các mục thư mục có tên chứa dấu gạch chéo ngược trên Windows.gh-117114: Cung cấp
os.path.isdevdrive()trên tất cả các nền tảng. Đối với những người không cung cấp Dev Drives, nó sẽ luôn trả vềFalse.gh-117110: Sửa lỗi ngăn các lớp con của
typing.Anyđược khởi tạo bằng đối số. Bản vá của Chris Fu.gh-109653: Trì hoãn nhập khẩu trong importlib.metadata và importlib.resources để tăng tốc 14%.
gh-70647: Bắt đầu giai đoạn ngừng sử dụng đối với hành vi hiện tại của
datetime.datetime.strptime()vàtime.strptime()luôn không phân tích được chuỗi ngày cóValueErrorliên quan đến một ngày trong tháng, chẳng hạn nhưstrptime("02-29", "%m-%d")khi một năm được chỉ định là not và ngày đó xảy ra là ngày 29 tháng 2. Điều này sẽ giúp tránh việc người dùng tìm thấy lỗi mới bốn năm một lần do giả định sai lầm tự nhiên về API khi phân tích cú pháp các giá trị một phần ngày.gh-116987: Đã sửa lỗi
inspect.findsource()cho các đối tượng mã lớp.gh-114099: Sửa đổi thư viện tiêu chuẩn để cho phép có sự khác biệt về nền tảng iOS.
gh-90872: Trên Windows,
subprocess.Popen.wait()không còn gọiWaitForSingleObject()với thời gian chờ âm nữa: chuyển0ms nếu thời gian chờ âm. Bản vá của Victor Stinner.gh-116957: configparser: Không để các giá trị ConfigParser ở trạng thái không hợp lệ (được lưu dưới dạng danh sách thay vì str) sau khi đọc DuplicateSectionError hoặc DuplicateOptionError trước đó.
gh-115538:
_io.WindowsConsoleIOhiện phát ra cảnh báo nếu giá trị boolean được truyền dưới dạng đối số mô tả tệp.gh-90095: Bỏ qua các dòng trống và nhận xét trong
.pdbrcgh-106531: Đã làm mới zipfile._path từ zipp 3.18, cung cấp khả năng tương thích tốt hơn cho PyPy, hiệu suất toàn cầu tốt hơn cho các tệp zip được lồng sâu và cung cấp quyền truy cập nội bộ vào
CompleteDirs.injectđể sử dụng trong các thử nghiệm khác (như importlib.resources).gh-63207: Trên Windows,
time.time()hiện sử dụng đồng hồGetSystemTimePreciseAsFileTime()để có độ phân giải tốt hơn 1 us, thay vì đồng hồGetSystemTimeAsFileTime()có độ phân giải 15,6 ms. Bản vá của Victor Stinner.gh-116764: Khôi phục hỗ trợ
Nonevà các giá trị sai khác trong các hàmurllib.parseparse_qs()vàparse_qsl(). Ngoài ra, giờ đây họ đưa ra TypeError cho các số nguyên khác 0 và các chuỗi không trống.gh-116811: Trong
PathFinder.invalidate_caches, ủy quyền choMetadataPathFinder.invalidate_caches.gh-116647: Sửa lỗi con đệ quy trong các lớp dữ liệu
gh-113171: Đã sửa nhiều lỗi dương tính giả và âm tính giả khác nhau trong
ipaddress.IPv4Address.is_private(xem các tài liệu này để biết chi tiết)
Ngoài ra còn có thuộc tính
ipaddress.IPv4Networkvàipaddress.IPv6Networktương ứng.gh-63283: Trong
encodings.idna, mọi cách viết hoa tiền tố ACE (xn--) hiện đều được chấp nhận. Bản vá của Pepijn de Vos và Zackery Spytz.gh-71042: Thêm
platform.android_ver(), cung cấp thông tin về thiết bị và hệ điều hành trên Android.gh-73468: Đã thêm chức năng
math.fma()mới, gói hoạt độngfma()của C99: chức năng cộng nhân hợp nhất. Bản vá của Mark Dickinson và Victor Stinner.gh-116608: Các hàm
importlib.resourcesis_resource(),open_binary(),open_text(),path(),read_binary()vàread_text()không được dùng nữa và hỗ trợ các thư mục con thông qua nhiều đối số vị trí. Hàmcontents()cũng cho phép các thư mục con nhưng vẫn không được dùng nữa.gh-116484: Thay đổi tên tiện ích
tkinter.Checkbuttonđược tạo tự động để tránh xung đột với tên tiện íchtkinter.ttk.Checkbuttonđược tạo tự động trong cùng một tiện ích gốc.gh-114314: Trong
ctypes, dữ liệu ctype hiện được lưu trữ trực tiếp trong các đối tượng loại thay vì trong lớp con dict. Đây là một thay đổi nội bộ sẽ không ảnh hưởng đến việc sử dụng.gh-116401: Sửa lỗi chặn
os.fwalk()vàshutil.rmtree()khi mở ống có tên.gh-71052: Triển khai
ctypes.util.find_library()trên Android.gh-90535: Khắc phục sự hỗ trợ của các giá trị interval > 1 trong
logging.TimedRotatingFileHandlerchowhen='MIDNIGHT'vàwhen='Wx'.gh-113308: Xóa một số bộ phận được bảo vệ bên trong khỏi
uuid:_has_uuid_generate_time_safe,_netbios_getnode,_ipconfig_getnodevà_load_system_functions. Chúng không được sử dụng.gh-115627: Sửa lỗi mô-đun
sslxử lý lỗi kết nối ngang hàng. Bây giờ nó đưa ra OSError với mã lỗi thích hợp thay vì EOFError.gh-114847: Tăng tốc
os.path.realpath()trên nền tảng không phải Windows.gh-114271: Sửa một cuộc đua trong
threading.Thread.join().threading._MainThreadhiện luôn đại diện cho luồng chính của trình thông dịch chính.PyThreadState.on_deletevàPyThreadState.on_delete_datađã bị xóa.gh-113538: Thêm các phương thức
asyncio.Server.close_clients()vàasyncio.Server.abort_clients()cho phép đóng máy chủ asyncio mạnh mẽ hơn.gh-85287: Thay đổi codec Unicode để trả về UnicodeEncodeError hoặc UnicodeDecodeError, thay vì chỉ UnicodeError.
gh-105866: Đã sửa lỗi
_get_slotsgây ra lỗi khi xác định các lớp dữ liệu có vị trí và một điểm yếu.gh-96471: Thêm kết thúc
asyncio.Queuebằng phương thứcshutdown().bpo-33533:
asyncio.as_completed()hiện trả về một đối tượng vừa là trình vòng lặp không đồng bộ vừa là trình vòng lặp đơn giản. Mẫu lặp không đồng bộ mới cho phép tương quan dễ dàng hơn giữa các nhiệm vụ trước đó và kết quả đã hoàn thành của chúng. Đây là một kết quả gần giống với mẫu lặp củaconcurrent.futures.as_completed(). Bản vá của Justin Arthur.bpo-27578:
inspect.getsource()(và các hàm liên quan) hoạt động với các tệp mô-đun trống, trả về'\n'(hoặc tương đương hợp lý) thay vì tăngOSError. Bản vá của Kernc.bpo-37141: Chấp nhận lặp lại các dấu phân cách trong
asyncio.StreamReader.readuntil(), dừng lại khi gặp một trong số chúng.gh-66543: Giúp
mimetypes.guess_type()phân tích cú pháp chính xác các URL chỉ bằng tên máy chủ, URL chứa đoạn hoặc truy vấn và tên tệp chỉ có điểm chia sẻ UNC trên Windows. Dựa trên bản vá của Dong-hee Na.bpo-15010:
unittest.TestLoader.discover()hiện lưu giá trị ban đầu củaunittest.TestLoader._top_level_dirvà khôi phục nó khi kết thúc cuộc gọi.
Tài liệu¶
Kiểm tra¶
gh-83434: Tắt đầu ra JUnit XML (tùy chọn dòng lệnh
--junit-xml=FILE) trong regrtest khi tìm kiếm rò rỉ tham chiếu (tùy chọn-R). Bản vá của Victor Stinner.gh-117187: Khắc phục các bài kiểm tra XML cho người nước ngoài vani <2.6.0.
gh-116333: Các thử nghiệm về những thứ liên quan đến TLS (mã lỗi, v.v.) đã được cập nhật để nhẹ nhàng hơn về các chuỗi và hành vi thông báo lỗi cụ thể như đã thấy trong các nhánh BoringSSL và AWS-LC của OpenSSL.
gh-117089: Các thử nghiệm tổng hợp cho importlib.metadata trong gói
metadatacủa riêng chúng.gh-115979: Cập nhật test_importlib để nó vượt qua WASI SDK 21.
gh-112536: Thêm --tsan vào test.regrtest để chạy thử nghiệm TSAN trong thời gian thực hiện hợp lý. Bản vá của Donghee Na.
gh-116307: Đã thêm trình trợ giúp nhập
isolated_modulesvìCleanImportkhông xóa các mô-đun được nhập trong ngữ cảnh. Sử dụng nó trong các thử nghiệm importlib.resources để tránh để lạimodnhằm cản trở các thử nghiệm importlib.metadata.
xây dựng¶
cửa sổ¶
gh-117267: Đảm bảo
DirEntry.stat().st_ctimehoạt động nhất quán vớios.stat()trong thời gianst_ctimekhông dùng nữa bằng cách chứa cùng giá trị vớist_birthtime. Sau thời gian không dùng nữa,st_ctimesẽ là thời gian thay đổi siêu dữ liệu (hoặc không có sẵn thông quaDirEntry) và chỉst_birthtimemới chứa thời gian tạo.gh-116195: Cải thiện hiệu suất của
os.getppid()bằng cách sử dụng hệ thống thay thế API khi có sẵn. Đóng góp bởi vxiiduu.gh-88494: Trên Windows,
time.monotonic()hiện sử dụng đồng hồQueryPerformanceCounter()để có độ phân giải tốt hơn 1 us, thay vì đồng hồGetTickCount64()có độ phân giải 15,6 ms. Bản vá của Victor Stinner.gh-116773: Sửa các phiên bản của
<_overlapped.Overlapped object at 0xXXX> still has pending operation at deallocation, the process may crash.gh-91227: Khắc phục việc triển khai asyncio ProactorEventLoop để việc gửi gói dữ liệu đến một địa chỉ không được lắng nghe sẽ không ngăn cản việc nhận thêm bất kỳ gói dữ liệu nào.
gh-115119: Đã chuyển từ mã
libmpdecimalđược cung cấp sang gói bên ngoài được lưu trữ riêng trong kho lưu trữcpython-source-depskhi xây dựng mô-đun_decimal.
C API¶
gh-117642: Khắc phục việc triển khai PEP 737 cho
%#Tvà%#N.gh-87193:
_PyBytes_Resize()hiện có thể được gọi cho các đối tượng byte có số tham chiếu > 1, bao gồm các đối tượng byte 1 byte. Nó tạo một đối tượng byte mới và hủy đối tượng cũ nếu nó có số tham chiếu > 1.gh-117021: Khắc phục lỗi tràn số nguyên trong
PyLong_AsPid()trên nền tảng 64-bit không phải Windows.gh-115756:
PyCode_GetFirstFree()hiện là một API có thể sử dụng được và đã được đổi tên thànhPyUnstable_Code_GetFirstFree(). (Được đóng góp bởi Bogdan Romanyuk trong gh-115781)gh-116869: Thêm kiểm tra
test_cext: xây dựng tiện ích mở rộng C để kiểm tra xem Python C API có phát ra cảnh báo trình biên dịch C hay không. Bản vá của Victor Stinner.gh-116869: Làm cho C API tương thích lại với cờ trình biên dịch
-Werror=declaration-after-statement. Bản vá của Victor Stinner.gh-116936: Thêm
PyType_GetModuleByDef()vào C API giới hạn. Bản vá của Victor Stinner.gh-116809: Khôi phục chức năng
_PyErr_ChainExceptions1()riêng tư đã bị xóa. Bản vá của Victor Stinner.gh-115754: Trong phiên bản giới hạn C API 3.13, việc nhận các đơn vị
Py_None,Py_False,Py_True,Py_EllipsisvàPy_NotImplementedhiện được triển khai dưới dạng lệnh gọi hàm ở cấp ABI ổn định để ẩn chi tiết triển khai. Việc lấy các hằng số này vẫn trả về các tài liệu tham khảo đã mượn. Bản vá của Victor Stinner.gh-115754: Thêm hàm
Py_GetConstant()vàPy_GetConstantBorrowed()để lấy hằng số. Ví dụ:Py_GetConstant(Py_CONSTANT_ZERO)trả về strong reference về hằng số 0. Bản vá của Victor Stinner.gh-111696: Thêm hỗ trợ cho các định dạng
%T,%T#,%Nvà%N#choPyUnicode_FromFormat(): định dạng tên đủ điều kiện của một loại đối tượng và của một loại: gọiPyType_GetModuleName(). Xem PEP 737 để biết thêm thông tin. Bản vá của Victor Stinner.gh-111696: Thêm chức năng
PyType_GetModuleName()để lấy tên mô-đun của loại. Tương đương với việc lấy thuộc tínhtype.__module__. Bản vá của Eric Snow và Victor Stinner.gh-111696: Thêm chức năng
PyType_GetFullyQualifiedName()để lấy tên đủ điều kiện của loại. Tương đương vớif"{type.__module__}.{type.__qualname__}"hoặctype.__qualname__nếutype.__module__không phải là một chuỗi hoặc bằng"builtins". Bản vá của Victor Stinner.gh-85283: Các phần mở rộng
fcntl,grp,pwd,termios,_statisticsvà_testconsoleC hiện được xây dựng với limited C API. Bản vá của Victor Stinner.gh-111140: Thêm cờ bổ sung vào
PyLong_AsNativeBytes()vàPyLong_FromNativeBytes()để cho phép người gọi xác định cách xử lý các trường hợp cạnh xung quanh các giá trị lấp đầy toàn bộ bộ đệm.gh-113024: Thêm chức năng
PyObject_GenericHash().
Python 3.13.0 alpha 5¶
Release date: 2024-03-12
Bảo mật¶
gh-115398: Cho phép kiểm soát Expat >=2.6.0 phân tích lại sự trì hoãn (CVE 2023-52425) bằng cách thêm năm phương thức mới:
gh-114572:
ssl.SSLContext.cert_store_stats()vàssl.SSLContext.get_ca_certs()hiện khóa chính xác quyền truy cập vào kho chứng chỉ khissl.SSLContextđược chia sẻ trên nhiều luồng.
Cốt lõi và nội dung¶
gh-116604: Tôn trọng trạng thái của trình thu gom rác khi các cuộc gọi gián tiếp được thực hiện thông qua
PyErr_CheckSignals()và bộ ngắt đánh giá. Bản vá của Pablo Galindogh-112087:
listhiện tương thích với việc triển khai PEP 703.gh-116381: Thêm chuyên môn cho
CONTAINS_OP.gh-116296: Khắc phục hiện tượng phản ánh có thể xảy ra trong quá trình xử lý lỗi nội bộ của
object.__reduce__().gh-115823: Tính toán chính xác phạm vi lỗi trong trình phân tích cú pháp khi đưa ra các ngoại lệ
SyntaxErrordo chuỗi byte không hợp lệ gây ra. Bản vá của Pablo Galindogh-115778: Thêm chú thích
tierNcho định nghĩa hướng dẫn trong trình thông dịch DSL.gh-115733: Khắc phục sự cố khi gọi
next()trên các trình lặp danh sách đã hết.gh-115700: Giai đoạn xây dựng trường hợp regen hiện hoạt động trên Windows.
gh-115347: Sửa lỗi chuỗi tài liệu bị thay thế bằng NOP dư thừa khi Python chạy với
-OO.gh-115323: Làm cho thông báo lỗi có ý nghĩa hơn khi
bytearray.extend()được gọi bằng đối tượngstr.gh-112175: Mỗi
PyThreadStatehiện cóeval_breakerriêng, cho phép các luồng cụ thể bị gián đoạn.
Thư viện¶
gh-115154: Sửa lỗi khiến hàm
tokenize.untokenize()xử lý không chính xác các ký tự có tên unicode. Bản vá của Pablo Galindo
Cốt lõi và nội dung¶
gh-112433: Thêm khả năng buộc căn chỉnh
ctypes.Structurebằng thuộc tính_align_mới trên lớp.
Thư viện¶
gh-104090: Trình theo dõi tài nguyên đa xử lý hiện thoát với mã trạng thái khác 0 nếu phát hiện rò rỉ tài nguyên. Nếu không nó vẫn thoát với mã trạng thái 0.
Cốt lõi và nội dung¶
gh-105858: Cải thiện hàm tạo cho các nút
ast. Các đối số của loại danh sách hiện mặc định là danh sách trống nếu bị bỏ qua và các trường tùy chọn được mặc định làNone. Các nút AST hiện có thuộc tính__annotations__với các loại thuộc tính dự kiến của chúng. Việc truyền các đối số bổ sung không được nhận dạng tới các nút AST không được dùng nữa và sẽ trở thành lỗi trong Python 3.15. Việc bỏ qua đối số bắt buộc đối với nút AST không được dùng nữa và sẽ trở thành lỗi trong Python 3.15. Bản vá của Jelle Zijlstra.gh-101860: Hiển thị thuộc tính
__name__trên thuộc tính.gh-96497: Sửa độ phân giải không chính xác của các biến lớp bị sai lệch được sử dụng trong các biểu thức gán trong phần hiểu.
Thư viện¶
gh-116349:
platform.java_ver()không được dùng nữa và sẽ bị xóa trong phiên bản 3.15. Nó phần lớn chưa được kiểm tra, có API khó hiểu và chỉ hữu ích cho việc hỗ trợ Jython.gh-116143: Khắc phục một cuộc đua trong pydoc
_start_server, loại bỏ một cửa sổ trong đó_start_servercó thể trả về một chuỗi đang "phục vụ" nhưng không có bộdocserver.gh-116127:
typing: triển khai PEP 705 để bổ sung hỗ trợtyping.ReadOnlychotyping.TypedDict.gh-116325:
typing: tăngSyntaxErrorthay vìAttributeErrortrên các tham chiếu chuyển tiếp dưới dạng chuỗi trống.gh-115957: Khi
asyncio.TaskGroup.create_taskđược gọi trênasyncio.TaskGroupkhông hoạt động, coroutine đã cho sẽ bị đóng (điều này ngăn cảnRuntimeWarning).gh-115978: Tắt preadv(), readv(), pwritev() và writev() trên WASI.
Trong thời gian chờ đợi cho WASI 0.2, các hàm này không vượt qua test_posix (https://github.com/bytecodealliance/wasmtime/issues/7830).
gh-88352: Sửa cách tính thời gian chuyển tiếp tiếp theo trong trình xử lý
logging.TimedRotatingFileHandler.computeRollover()hiện luôn trả về dấu thời gian lớn hơn thời gian đã chỉ định và hoạt động chính xác trong quá trình thay đổi DST.doRollover()không còn ghi đè lên tệp đã được cuộn lại, tránh mất dữ liệu khi chạy vào lúc nửa đêm hoặc trong thời gian lặp lại khi thay đổi DST.gh-87115: Đặt
__main__.__spec__thànhNonekhi chạy tập lệnh vớipdbgh-76511: Sửa lỗi UnicodeEncodeError trong
email.Message.as_string()dẫn đến khi một thông báo tuyên bố nằm trong bộ ký tự ascii nhưng thực tế lại có các ký tự không phải mã ascii. Các ký tự không phải mã ascii hiện được thay thế bằng ký tự thay thế U+FFFD, giống như trong trình xử lý lỗireplace.gh-89547: Thêm hỗ trợ cho các biểu mẫu đặc biệt gõ lồng nhau như Final[ClassVar[int]].
gh-116040: [Enum] sửa lệnh gọi theo giá trị khi giá trị thứ hai là sai; ví dụ: Hồng Y(1, 0)
gh-115821: [Enum] Cải thiện thông báo lỗi khi gọi super().__new__() trong __new__ tùy chỉnh.
gh-85644: Sử dụng biến môi trường
XDG_CURRENT_DESKTOPtrongwebbrowserđể kiểm tra máy tính để bàn. Thích nó hơnGNOME_DESKTOP_SESSION_IDkhông dùng nữa để phát hiện GNOME.gh-75988: Đã sửa lỗi
unittest.mock.create_autospec()để chuyển cuộc gọi đến đối tượng được bao bọc để trả về kết quả thực.gh-115881: Khắc phục sự cố trong đó
ast.parse()gắn cờ không chính xác các trình quản lý bối cảnh có điều kiện (chẳng hạn nhưwith (x() if y else z()): ...) thành cú pháp không hợp lệ nếufeature_version=(3, 8)được thông qua. Điều này hoàn nguyên các thay đổi về ngữ pháp được thực hiện như một phần của gh-94949.gh-115886: Sửa lỗi cắt ngắn tên bằng ký tự null được nhúng trong
multiprocessing.shared_memory.SharedMemory.gh-115532: Thêm ước tính mật độ hạt nhân vào mô-đun thống kê.
gh-115714: Trên WASI, mô-đun
timekhông còn nhận được thời gian xử lý bằngtimes()hoặcCLOCK_PROCESS_CPUTIME_ID, hệ thống API không đáng tin cậy và có khả năng bị xóa khỏi WASI. Các chức năng đồng hồ bị ảnh hưởng sẽ quay lại gọiclock().gh-115809: Cải thiện thuật toán tính toán các tệp nhật ký cuộn qua cần xóa trong
logging.TimedRotatingFileHandler. Hiện tại, nó đáng tin cậy đối với các trình xử lý không cónamervà vớinamerxác định tùy ý để lại phần ngày giờ trong tên tệp không bị sửa đổi.gh-74668: Các hàm
urllib.parseparse_qs()vàparse_qsl()hiện hỗ trợ các đối số byte chứa dữ liệu thô và không phải ASCII được mã hóa theo phần trăm.gh-67044:
csv.writer()hiện luôn trích dẫn hoặc thoát'\r'và'\n', bất kể giá trị lineterminator.gh-115712: Khôi phục hỗ trợ dấu phân cách khoảng trắng bằng
skipinitialspace=Truetrongcsv.csv.writer()hiện trích dẫn các trường trống nếu dấu phân cách là khoảng trắng và Skipinitialspace là đúng và đưa ra ngoại lệ nếu không thể trích dẫn.gh-112364: Đã sửa lỗi
ast.unparse()để xử lý format_spec với",'hoặc\\. Được vá bởi Frank Hoffmann.gh-112997: Dừng ghi nhật ký các đối số gọi lại có khả năng nhạy cảm trong
asynciotrừ khi chế độ gỡ lỗi được kích hoạt.gh-114914: Khắc phục sự cố trong đó
StreamWriterbị bỏ rơi sẽ không được thu thập rác.gh-111358: Sửa lỗi trong
asyncio.BaseEventLoop.shutdown_default_executor()để đảm bảo thời gian chờ chuyển sang coroutine hoạt động như mong đợi.gh-115618: Sửa lỗi giảm số lượng tham chiếu không đúng cho đối số
Nonetrong các phương thứcpropertygetter(),setter()vàdeleter().gh-112720: Tái cấu trúc
dis.ArgResolverđể có thể phân lớp và thay đổi cách diễn giải các đối số nhảy.gh-112006: Sửa
inspect.unwrap()cho các loại bằng bộ mô tả dữ liệu__wrapper__. Sửainspect.Signature.from_callable()cho nội dungclassmethod()vàstaticmethod().gh-101293: Hỗ trợ các lệnh gọi bằng phương thức
__call__()và các loại với phương thức__new__()và__init__()được đặt thành phương thức lớp, phương thức tĩnh, phương thức ràng buộc, hàm một phần cũng như các loại phương thức và bộ mô tả khác tronginspect.Signature.from_callable().gh-113942:
pydockhông còn bỏ qua các hàm toàn cục được triển khai dưới dạng các phương thức dựng sẵn, chẳng hạn nhưMethodDescriptorTypevàWrapperDescriptorType.gh-115256: Đã thêm cảnh báo không dùng nữa khi truy cập thuộc tính tarfile của đối tượng TarInfo. Thuộc tính này không bao giờ được sử dụng nội bộ và chỉ được gắn vào TarInfos khi tarfile được mở ở chế độ ghi chứ không phải chế độ đọc. Thuộc tính này tạo ra một chu trình tham chiếu không cần thiết có thể gây ra lỗi khi không đóng phần xử lý sau khi ghi tarfile.
gh-115197:
urllib.requestkhông còn phân giải tên máy chủ trước khi kiểm tra nó với danh sách bỏ qua proxy của hệ thống trên macOS và Windows.gh-113812:
DatagramTransport.sendto()bây giờ sẽ gửi các gói dữ liệu có độ dài bằng 0 nếu được gọi với đối tượng byte trống. Kiểm soát luồng truyền tải bây giờ cũng tính đến tiêu đề datagram khi tính toán kích thước bộ đệm.gh-114763: Bảo vệ các mô-đun được tải bằng
importlib.util.LazyLoaderkhỏi các điều kiện chạy đua khi nhiều luồng cố gắng truy cập các thuộc tính trước khi quá trình tải hoàn tất.gh-114709:
posixpath.commonpath()hiện đưa ra một ngoại lệValueErrorkhi truyền một vòng lặp trống. Trước đây,IndexErrorđã được nâng lên.posixpath.commonpath()hiện đưa ra ngoại lệTypeErrorkhi vượt quaNone. Trước đây,ValueErrorđã được nâng lên.gh-114610: Sửa lỗi trong đó
pathlib.PurePath.with_stem()chuyển đổi hậu tố đường dẫn không trống thành gốc khi đưa ra đối số stem trống. Bây giờ nó sẽ tăngValueError, giống nhưpathlib.PurePath.with_suffix()khi được gọi trên một đường dẫn có gốc trống, với đối số suffix không trống.gh-107361: Thêm
ssl.VERIFY_X509_PARTIAL_CHAINvàVERIFY_X509_STRICTvào ngữ cảnh SSL mặc định được tạo bằngssl.create_default_context().gh-112281: Cho phép tạo union of types cho
typing.Annotatedvới siêu dữ liệu không thể băm được.gh-111775: Sửa lỗi
importlib.resources.simple.ResourceHandle.open()cho chế độ văn bản, thêm đối sốstreambị thiếu.gh-90095: Làm cho .pdbrc và -c hoạt động với mọi lệnh pdb hợp lệ.
gh-107625: Tăng
configparser.ParsingErrortừ các phương thứcread()vàread_file()củaconfigparser.ConfigParsernếu một khóa không có giá trị tương ứng được tiếp tục (nghĩa là, theo sau là một dòng thụt lề).gh-107155: Sửa đầu ra không chính xác của
help(x)trong đóxlà hàmlambda, có thuộc tính từ điển__annotations__với khóa"return".gh-57141: Thêm tùy chọn so sánh non-shallow với
filecmp.dircmpnhưfilecmp.cmp(). Bản vá gốc của Steven Ward. Được tăng cường bởi Tobias Rautenkranzgh-69990:
Profile.print_stats()đã được cải tiến để chấp nhận nhiều đối số sắp xếp. Được vá bởi Chiu-Hsiang Hsu và Furkan Onder.gh-104061: Cộng hằng số
socket.SO_BINDTOIFINDEX.gh-60346: Sửa lỗi ArgumentParser không nhất quán với pars_known_args.
gh-102389: Thêm
windows_31jvào bí danh cho codeccp932gh-72249: Luôn bao gồm tên module trong
repr()của đối tượngfunctools.partial(). Bản vá của Furkan Onder và Anilyka Barry.gh-100985: Cập nhật HTTPSConnection để bao bọc Địa chỉ IPv6 một cách nhất quán khi sử dụng proxy.
gh-100884: email: sửa lỗi sai dấu phẩy trong danh sách địa chỉ trên nhiều dòng kết hợp với mã hóa unicode.
gh-95782: Sửa lỗi
io.BufferedReader.tell(),io.BufferedReader.seek(),_pyio.BufferedReader.tell(),io.BufferedRandom.tell(),io.BufferedRandom.seek()và_pyio.BufferedRandom.tell()có thể trả về giá trị âm.gh-96310: Khắc phục dấu vết trong
argparsekhi tất cả các tùy chọn trong một nhóm loại trừ lẫn nhau đều bị chặn.gh-93205: Đã sửa lỗi trong
logging.handlers.TimedRotatingFileHandlertrong đó nhiều phiên bản trình xử lý luân phiên trỏ đến các tệp có cùng tên nhưng các phần mở rộng khác nhau sẽ xung đột và không xóa đúng tệp.bpo-31116: Thêm mã hóa Z85 vào
base64.bpo-44865: Thêm lệnh gọi bị thiếu vào chức năng bản địa hóa trong
argparse.bpo-43952: Sửa
multiprocessing.connection.Listener.accept()để chấp nhận byte trống làm khóa xác thực. Việc không chấp nhận byte trống làm khóa sẽ khiến nó bị treo vô thời hạn.bpo-42125: linecache: lấy tên mô-đun từ
__spec__nếu có. Điều này cho phép lấy mã nguồn cho mô-đun__main__khi sử dụng trình tải tùy chỉnh.bpo-41122: Việc không truyền đối số chính xác cho
functools.singledispatchmethod()giờ đây sẽ tạo ra TypeError thay vì nhấn một chỉ mục vượt quá giới hạn bên trong.bpo-40818: asyncio REPL hiện chạy
sys.__interactivehook__khi khởi động. Việc triển khai mặc định củasys.__interactivehook__cung cấp tính năng tự động hoàn thành cho asyncio REPL. Bản vá được đóng góp bởi Rémi Lapeyre.bpo-33775: Thêm văn bản trợ giúp 'mặc định' và 'phiên bản' để bản địa hóa trong argparse.
Tài liệu¶
gh-115399: Tài liệu CVE 2023-52425 của Expat <2.6.0 trong "lỗ hổng XML".
Kiểm tra¶
gh-71052: Thêm loại trừ thử nghiệm để hỗ trợ chạy bộ thử nghiệm trên Android.
gh-71052: Kích hoạt
test_concurrent_futurestrên các nền tảng hỗ trợ phân luồng nhưng không hỗ trợ đa xử lý.gh-115796: Tạo '_testinternalcapi.assemble_code_object' xây dựng bảng ngoại lệ cho đối tượng mã.
gh-115720: Kiểm tra rò rỉ (
-R,--huntrleaks) hiện hiển thị bản tóm tắt về số lượng rò rỉ được tìm thấy trong mỗi lần lặp.gh-115122: Thêm tùy chọn
--bisectđể lấy lại thử nghiệm chạy thử: chạy các thử nghiệm thất bại vớitest.bisect_cmdđể xác định các thử nghiệm thất bại. Bản vá của Victor Stinner.gh-115596: Sửa
ProgramPriorityTeststrongtest_osthay đổi vĩnh viễn mức độ ưu tiên của quy trình.gh-115556: Trên Windows, dấu phẩy được truyền trong đối số cho
Tools\buildbot\test.batvàPCbuild\\rt.bathiện đã được xử lý đúng cách.gh-115420: Sửa lỗi dịch các mục tiêu xử lý ngoại lệ bằng
_testinternalcapi.optimize_cfg.gh-115376: Sửa lỗi segfault trong
_testinternalcapi.compiler_codegenkhi đầu vào không hợp lệ.
xây dựng¶
gh-116313: Để các bản dựng WASI hoạt động theo wasmtime 18 w/WASI 0.2/preview2 nguyên thủy.
gh-71052: Thay đổi
sys.platformcủa Android từ"linux"thành"android".gh-116117: Backport PR #42 của
libb2để sửa lỗi biên dịch CPython trên Windows 32-bit bằngclang-cl.gh-71052: Khắc phục một số sự cố khi xây dựng Android
gh-114099: Một dự án thử nghiệm đã được thêm vào để chạy bộ thử nghiệm trên iOS.
gh-115350: Sửa mô-đun xây dựng ctypes với -DWIN32_LEAN_AND_MEAN được xác định
gh-111225: Liên kết các mô-đun mở rộng với libpython trên Android.
gh-115737: Tên cài đặt cho libPython hiện được đặt chính xác cho các bản dựng macOS không có khung.
gh-114099: Mục tiêu Makefile đã được thêm vào để hỗ trợ biên dịch bản dựng khung tương thích với iOS.
cửa sổ¶
gh-116012: Đảm bảo giá trị của
GetLastError()được giữ nguyên trong các hoạt động GIL.gh-115582: Các tiện ích mở rộng xây dựng dành cho các bản dựng CPython có luồng miễn phí hiện yêu cầu biên dịch bằng
/DPy_GIL_DISABLEDtheo cách thủ công khi sử dụng bản cài đặt thông thường. Điều này dự kiến sẽ thay đổi trong các phiên bản tương lai.gh-115554: Trình cài đặt hiện có các quy tắc nghiêm ngặt hơn về việc cập nhật Trình quản lý cài đặt Python. Nhìn chung, hầu hết người dùng chỉ cài đặt một launcher duy nhất và sẽ không thấy sự khác biệt. Khi nhiều trình khởi chạy đã được cài đặt, tùy chọn cài đặt trình khởi chạy sẽ bị tắt cho đến khi tất cả trừ một trình khởi chạy đã bị xóa. Việc hạ cấp trình khởi chạy (điều chưa bao giờ được phép) giờ đây rõ ràng đã bị chặn.
gh-115543: Trình quản lý cài đặt Python hiện có thể phát hiện Python 3.13 khi được cài đặt từ Microsoft Store và sẽ cài đặt Python 3.12 theo mặc định khi
PYLAUNCHER_ALLOW_INSTALLđược đặt.
macOS¶
gh-116145: Cập nhật trình cài đặt macOS lên Tcl/Tk 8.6.14.
IDLE¶
gh-88516: Trên macOS hiển thị biểu tượng proxy trên thanh tiêu đề của cửa sổ soạn thảo để phù hợp với hoạt động của nền tảng.
Công cụ/Bản trình diễn¶
C API¶
gh-114626: Thêm lại tên
_PyCFunctionFastWithKeywords, bị xóa nhầm trong Python 3.13 alpha 4. Giữ tên_PyCFunctionFastWithKeywordsriêng tư cũ (Python 3.7) làm bí danh cho tên công khai mớiPyCFunctionFastWithKeywords(Python 3.13a4). Bản vá của Victor Stinner.gh-111418: Thêm macro
PyHASH_MODULUS,PyHASH_BITS,PyHASH_INFvàPyHASH_IMAGC. Bản vá của Sergey B Kirpicchev.
Python 3.13.0 alpha 4¶
Release date: 2024-02-15
Bảo mật¶
gh-115399: Cập nhật gói libexpat lên 2.6.0
gh-115243: Khắc phục sự cố có thể xảy ra trong
collections.deque.index()khi deque được sửa đổi đồng thời.
Cốt lõi và nội dung¶
gh-112087: Đối với một trình vòng lặp ngược trống cho danh sách sẽ được giảm xuống
reversed(). Bản vá của Donghee Nagh-114570: Thêm ngoại lệ
PythonFinalizationError. Ngoại lệ này bắt nguồn từRuntimeErrorđược đưa ra khi một thao tác bị chặn trong Python finalization. Bản vá của Victor Stinner.gh-114695: Thêm
sys._clear_internal_caches(), xóa tất cả bộ nhớ đệm liên quan đến hiệu suất nội bộ (và không dùng hàmsys._clear_type_cache()ít chung chung hơn nữa).gh-114828: Khắc phục sự cố biên dịch trong các ví dụ mã không phổ biến bằng cách sử dụng
super()bên trong phần hiểu trong nội dung lớp.gh-112069: Điều chỉnh các phương pháp
setvàfrozensetcho Phòng khám tranh luận.gh-115011: Setters cho các thành viên có loại số nguyên không dấu hiện hỗ trợ cùng một phạm vi giá trị hợp lệ cho các đối tượng có phương thức
__index__()như đối vớiint.gh-114887: Đã thay đổi xác thực loại ổ cắm trong
create_datagram_endpoint()để chấp nhận tất cả các ổ cắm không phải luồng. Điều này khắc phục sự hồi quy về khả năng tương thích với các ổ cắm thô.gh-114944: Sửa lỗi đua giữa
PyParkingLot_Parkvà_PyParkingLot_UnparkAll.gh-113462: Giới hạn số lượng phiên bản mà một lớp có thể sử dụng. Ngăn chặn một số lớp bướng bỉnh sử dụng hết số phiên bản.
gh-76763: Hàm dựng sẵn
chr()hiện luôn tăngValueErrorcho các giá trị nằm ngoài phạm vi hợp lệ. Trước đây nó đã tăngOverflowErrorcho các giá trị rất lớn hoặc nhỏ.gh-114806: Không còn chuyên biệt hóa lệnh gọi đến các lớp nếu các lớp đó có siêu dữ liệu. Sửa lỗi phương thức
__call__của siêu dữ liệu không được gọi.gh-107944: Cải thiện thông báo lỗi cho lệnh gọi hàm có đối số từ khóa không hợp lệ thông qua getargs
gh-112529: Bản dựng luồng tự do không còn phân bổ không gian cho cấu trúc
PyGC_Headtrong các đối tượng hỗ trợ thu thập rác theo chu kỳ. Một số trường và cấu trúc dữ liệu khác được sử dụng để thay thế, bao gồm cấu trúc dữ liệu nội bộob_gc_bits,ob_tidvà mimalloc.gh-114456: Hạ giới hạn đệ quy trong bản dựng gỡ lỗi của WASI.
gh-114083: Trình biên dịch áp dụng việc gấp LOAD_CONST với hướng dẫn sau trong một bước riêng biệt trước các tối ưu hóa khác. Điều này cho phép nhảy luồng trong một số trường hợp nhất định.
gh-114388: Sửa lỗi
RuntimeWarningphát ra khi gán một giá trị giống số nguyên không phải là phiên bản củaintcho một thuộc tính tương ứng với thành viên cấu trúc C của type T_UINT và T_ULONG. Sửa lỗiRuntimeWarningkép phát ra khi gán giá trị số nguyên âm cho thuộc tính tương ứng với thành viên cấu trúc C thuộc loại T_UINT.gh-114265: Trình biên dịch truyền bá số dòng trước khi tối ưu hóa, dẫn đến nhiều cơ hội tối ưu hóa hơn và loại bỏ nhu cầu hack
guarantee_lineno_for_exits.gh-112529: Bản dựng theo luồng tự do hiện có triển khai GC an toàn theo luồng riêng, sử dụng mimalloc để tìm các đối tượng được theo dõi GC. Nó không mang tính thế hệ, không giống như việc triển khai GC hiện có.
gh-114050: Sửa lỗi phân đoạn do chuỗi định dạng không chính xác gây ra trong ngoại lệ
TypeErrorkhi có nhiều hơn hai đối số được chuyển đếnint.gh-112354: Lệnh
END_FORhiện chỉ hiển thị một giá trị. Điều này nhằm hỗ trợ tốt hơn cho việc thoát ra bên trong các vòng lặp.gh-113884: Đảm bảo luồng
queue.SimpleQueuean toàn khi GIL bị tắt.gh-114058: Triển khai nền tảng của cơ chế loại bỏ dư thừa Cấp 2.
gh-113939: frame.clear(): Xóa cả frame.f_locals và không chỉ những người dân địa phương nhanh chóng. Điều này có liên quan khi frame.f_locals được truy cập, nó cũng sẽ chứa các tham chiếu đến tất cả người dân địa phương.
gh-112050: Chuyển đổi
collections.dequeđể sử dụng Argument Clinic.gh-112050: Tạo các phương thức trên luồng
collections.dequean toàn khi GIL bị tắt.gh-113464: Thêm tùy chọn (
--enable-experimental-jitcho các bản dựng dựa trênconfigurehoặc--experimental-jitcho các bản dựng dựa trênPCbuild) để xây dựng trình biên dịch đúng lúc experimental, dựa trên copy-and-patchgh-113055: Tạo con trỏ interp->obmalloc. Đối với các trình thông dịch chia sẻ trạng thái với trình thông dịch chính, điều này trỏ đến cùng một cấu trúc bộ nhớ tĩnh. Đối với các thông dịch viên có trạng thái obmalloc riêng, nó được phân bổ theo đống. Thêm free_obmalloc_arenas() sẽ giải phóng các đấu trường obmalloc và cấu trúc cây cơ số cho người phiên dịch với trạng thái obmalloc của riêng họ.
gh-55664: Thêm cảnh báo khi tạo
typebằng từ điển không gian tên có khóa không phải chuỗi. Được vá bởi Daniel Urban và Furkan Onder.gh-104530: Sử dụng các biến điều kiện Win32 gốc.
Thư viện¶
gh-115392: Sửa lỗi trong
doctestkhiến số dòng không chính xác được báo cáo cho các chức năng trang trí.gh-114563: Khắc phục một số lỗi
format()khi sử dụng triển khai C củaDecimal: * rò rỉ bộ nhớ trong một số trường hợp hiếm gặp khi sử dụng tùy chọn định dạngz(ép buộc âm 0) * đầu ra không chính xác khi áp dụng tùy chọn định dạngzđể nhậpF(điểm cố định với chữ hoaNAN/INF) * đầu ra không chính xác khi áp dụng tùy chọn định dạng#(thay thế) hình thức)gh-102840: Khắc phục lỗi truy ngược nhầm lẫn khi các hoạt động Floordiv, mod hoặc divmod xảy ra giữa các phiên bản của
fractions.Fractionvàcomplex.gh-115165: Hầu hết các trường hợp ngoại lệ hiện bị bỏ qua khi cố gắng đặt thuộc tính
__orig_class__trên các đối tượng được trả về khi gọi các bí danh chungtyping(bao gồm các bí danh chung được tạo bằngtyping.Annotated). Trước đây chỉ cóAttributeErrorbị bỏ qua. Bản vá của Dave Shawley.gh-112903: Sửa lỗi "issubclass() arg 1 must be a class" trong một số trường hợp đa kế thừa với các bí danh chung (hồi quy trong các bản phát hành 3.13 alpha đầu tiên).
gh-115133: Khắc phục các bài kiểm tra cho
XMLPullParservới Expat 2.6.0.gh-115059:
io.BufferedRandom.read1()hiện xóa bộ đệm ghi cơ bản.gh-79382: Trailing
**không còn cho phép khớp các tệp và đường dẫn không tồn tại trongglob()đệ quy.gh-67837: Tránh các điều kiện chạy đua trong việc tạo thư mục trong quá trình trích xuất đồng thời trong
tarfilevàzipfile.gh-115060: Tăng tốc
pathlib.Path.glob()bằng cách loại bỏ kết hợp biểu thức chính quy dư thừa.gh-97928: Hoàn nguyên một phần hoạt động của
tkinter.Text.count(). Theo mặc định, nó duy trì hoạt động của các phiên bản Python cũ hơn, ngoại trừ việc cài đặtwantobjectsthành 0 không còn hiệu lực. Thêm tham số mới return_ints: việc chỉ địnhreturn_ints=TruekhiếnText.count()luôn trả về số đếm đơn dưới dạng số nguyên thay vì 1 bộ hoặcNone.gh-114628: Khi csv.Error được đưa ra khi xử lý TypeError, không in truy nguyên TypeError.
gh-85984: Đã thêm
_POSIX_VDISABLEtừ<unistd.h>của C vàotermios.gh-114965: Cập nhật gói pip lên 24.0
gh-114959:
tarfilekhông còn bỏ qua lỗi khi cố gắng trích xuất một thư mục ở đầu tệp.gh-114894: Thêm
array.array.clear().gh-114071: Hỗ trợ các lớp con tuple sử dụng auto() cho giá trị thành viên enum.
gh-109475: Khắc phục sự hỗ trợ của giá trị tùy chọn rõ ràng "--" trong
argparse(ví dụ:--option=--).gh-49766: Sửa lỗi so sánh
date-datetime. Bây giờ, các phương pháp so sánh đặc biệt như__eq__và__lt__trả vềNotImplementednếu một trong các giá trị so sánh làdatevà cái còn lại làdatetimethay vì bỏ qua phần thời gian và múi giờ hoặc buộc phải trả về "không bằng" hoặc tăngTypeError. Nó làm cho việc so sánh các lớp condatevàdatetimetrở nên đối xứng hơn và cho phép thay đổi hành vi mặc định bằng cách ghi đè các phương thức so sánh đặc biệt trong các lớp con.gh-110190: Sửa cấu trúc ctypes với mảng trên nền tảng Windows ARM64 bằng cách đặt
MAX_STRUCT_SIZEthành 32 trong stgdict. Bản vá của Diego Russogh-114678: Đảm bảo rằng cảnh báo không dùng nữa đối với công cụ xác định 'N' ở định dạng
Decimalkhông được đưa ra trong trường hợp 'N' xuất hiện ở những vị trí khác trong công cụ xác định định dạng. Dựa trên bản vá của Stefan Krah.gh-70303: Trả về cả tệp và thư mục từ
pathlib.Path.glob()nếu mẫu kết thúc bằng "**". Trước đây chỉ có các thư mục được trả lại.gh-109653: Cải thiện thời gian nhập
importlib.metadatavàemail.utils.gh-113280: Khắc phục sự cố rò rỉ ổ cắm mở trong một số trường hợp hiếm gặp khi xảy ra lỗi khi tạo
ssl.SSLSocket.gh-77749:
email.policy.EmailPolicy.fold()hiện luôn mã hóa các ký tự không phải ASCII trong tiêu đề nếuutf8sai.gh-83383: Đồng bộ hóa cơ sở dữ liệu
dbm.dumbhiện không hoạt động nếu không có sửa đổi nào kể từ khi mở hoặc đồng bộ hóa lần cuối. Tệp thư mục cho cơ sở dữ liệudbm.dumbtrống mới được tạo hiện được tạo ngay sau khi mở thay vì trì hoãn việc này cho đến khi đồng bộ hóa hoặc đóng.gh-91602: Thêm tham số chỉ từ khóa filter vào
sqlite3.Connection.iterdump()để lọc các đối tượng cơ sở dữ liệu cần kết xuất. Bản vá của Mariusz Felisiak.gh-112451: Cấm phân lớp thuần Python
datetime.timezone. Điều này phù hợp với việc triển khai phần mở rộng C. Bản vá của Mariusz Felisiak.gh-69893: Thêm phương thức
close()cho trình lặp được trả về bởixml.etree.ElementTree.iterparse().gh-109653: Giảm thời gian nhập mô-đun
threadingxuống ~50%. Bản vá của Daniel Hollas.gh-114492: Làm cho kết quả của
termios.tcgetattr()có thể tái tạo trên Alpine Linux. Trước đây nó có thể để lại rác ngẫu nhiên ở một số trường.gh-114315: Biến
threading.Lockthành một lớp thực sự chứ không phải một hàm xuất xưởng. Thêm__new__vào loại_thread.lock.gh-100414: Thêm
dbm.sqlite3làm phụ trợ chodbmvà đặt nó làm phụ trợdbmmặc định mới. Bản vá của Raymond Hettinger và Erlend E. Aasland.gh-113267: Hoàn nguyên các thay đổi trong gh-106584 khiến lệnh gọi các phương thức
TestResultstartTest()vàstopTest()không cân bằng.gh-75128: Bỏ qua
OSErrortrongasyncio.BaseEventLoop.create_server()khi có sẵn IPv6 nhưng giao diện thực sự không thể hỗ trợ nó.gh-114423: các mục
_DummyThreadtrongthreading._activehiện sẽ tự động bị xóa khi chuỗi liên quan bị chết.gh-114257: Loại bỏ lỗi
FileNotFoundtrongctypes.util.find_library()và chỉ trả vềNonetrên Linux.gh-114321: Hiển thị nhiều hằng số cụ thể hơn cho nền tảng trong mô-đun
fcntltrên Linux, macOS, FreeBSD và NetBSD.gh-114328:
tty.setcbreak()vàtty.cfmakecbreak()mới không còn xóa cờ ICRLF đầu vào đầu cuối. Điều này khắc phục một hồi quy được giới thiệu trong 3.12 không còn khớp với cách các hệ điều hành xác định chế độ cbreak trong các trang hướng dẫnstty(1)của họ.gh-114281: Xóa gợi ý loại khỏi
Lib/asyncio/staggered.py. Thay vào đó, nên sử dụng các chú thích trong dự án typeshed.gh-101438: Tránh chu trình tham chiếu trong ElementTree.iterparse. Trình lặp được trả về bởi
ElementTree.iterparsecó thể giữ một bộ mô tả tệp. Chu trình tham chiếu đã ngăn chặn việc dọn dẹp nhanh chóng bộ mô tả tệp nếu trình vòng lặp được trả về chưa hết.gh-114198: Chữ ký cho phương thức
__replace__trêndataclasseshiện có đối số đầu tiên được đặt tên làself, thay vìobj.gh-104522:
OSErrorxuất hiện khi chạy một quy trình con hiện chỉ có thuộc tính filename được đặt thành cwd nếu lỗi xảy ra do nỗ lực thay đổi thư mục hiện tại không thành công.gh-114149: Enum: xử lý chính xác các lớp con tuple trong
__new__tùy chỉnh.gh-83648: Hỗ trợ loại bỏ các tùy chọn, đối số vị trí và lệnh phụ trong
argparse.gh-114087: Tăng tốc độ
dataclasses.asdictlên tới 1,35x.gh-109534: Khắc phục rò rỉ tham chiếu trong
asyncio.selector_events.BaseSelectorEventLoopkhi bắt tay SSL không thành công. Bản vá được đóng góp bởi Jamie Phan.gh-79634: Chấp nhận path-like objects làm mẫu trong
pathlib.Path.glob()vàrglob().gh-112202: Đảm bảo rằng cuộc gọi
asyncio.Condition.notify()không bị mất nếuTaskđã đánh thức bị hủy đồng thời hoặc gặp bất kỳ lỗi nào khác.gh-113951: Khắc phục hành vi của các phương thức
tag_unbind()của các lớptkinter.Textvàtkinter.Canvasvới ba đối số. Trước đây,widget.tag_unbind(tag, sequence, funcid)đã hủy liên kết hiện tại cho sequence, khiến sequence không bị liên kết và xóa lệnh funcid. Bây giờ nó chỉ xóa funcid khỏi liên kết cho sequence, giữ các lệnh khác và xóa lệnh funcid. Nó chỉ để sequence không bị ràng buộc nếu funcid là lệnh bị ràng buộc cuối cùng.gh-97959: Sửa lỗi hiển thị các phương thức lớp, phương thức liên kết, bí danh phương thức và hàm trong
pydoc. Các phương thức lớp không còn có ghi chú "phương thức của thể hiện buildins.type". Các ghi chú tương ứng hiện đã được thêm vào cho các phương thức lớp và không liên kết. Các bí danh của phương thức và hàm hiện có các tham chiếu đến mô-đun hoặc lớp nơi nguồn gốc được xác định nếu nó khác với hiện tại. Các phương thức ràng buộc hiện được liệt kê trong phần phương thức tĩnh. Các phương thức của các lớp dựng sẵn hiện được hỗ trợ cũng như các phương thức của các lớp Python.gh-113796: Thêm nhiều kiểm tra xác thực hơn trong hàm tạo
csv.Dialect.ValueErrorhiện được nâng lên nếu cùng một ký tự được sử dụng ở các vai trò khác nhau.gh-113732: Sửa lỗi hỗ trợ
QUOTE_NOTNULLvàQUOTE_STRINGStrongcsv.reader().gh-113225: Tăng tốc
pathlib.Path.walk()bằng cách sử dụngos.DirEntry.pathnếu có thể.gh-89039: Khi phương thức thay thế() được gọi trên một lớp con của ngày giờ, ngày hoặc giờ, hãy gọi đúng hàm tạo dẫn xuất. Trước đây, chỉ có hàm tạo của lớp cơ sở được gọi.
Ngoài ra, hãy đảm bảo chuyển các giá trị gấp khác 0 khi tạo các lớp con theo nhiều phương thức khác nhau. Trước đây, nếp gấp đã bị bỏ qua một cách âm thầm.
gh-112919: Tăng tốc
datetime.datetime.replace(),datetime.date.replace()vàdatetime.time.replace().gh-59013: Đặt điểm dừng trên dòng thực thi đầu tiên của hàm, thay vì dòng định nghĩa hàm khi người dùng thực hiện
break funcbằngpdbgh-112343: Cải thiện việc xử lý các biến tiện lợi pdb để tránh thay thế nội dung chuỗi.
gh-112240: Thêm tùy chọn vào mô-đun lịch CLI để chỉ định ngày trong tuần bắt đầu mỗi tuần. Bản vá của Steven Ward.
gh-111741: Nhận dạng
image/webplà định dạng chuẩn trong mô-đunmimetypes.gh-43457: Sửa phương thức widget
tkinterwm_attributes(). Bây giờ nó chấp nhận tên thuộc tính mà không có tiền tố trừ để lấy thuộc tính cửa sổ và cho phép chỉ định các thuộc tính và giá trị để đặt làm đối số từ khóa. Thêm đối số từ khóa tùy chọn mới return_python_dict: gọiw.wm_attributes(return_python_dict=True)trả về các thuộc tính dưới dạng một lệnh thay vì một bộ dữ liệu. Việc gọiw.wm_attributes()bây giờ trả về một bộ thay vì chuỗi nếu wantobjects được đặt thành 0.gh-82626: Hiện tại, nhiều hàm phát ra cảnh báo nếu giá trị boolean được truyền dưới dạng đối số mô tả tệp.
gh-111051: Đã thêm kiểm tra sửa đổi tệp trong quá trình gỡ lỗi với
pdbgh-110345: Hiển thị bản vá Tcl/Tk (chứ không phải phiên bản) trong
tkinter._test().gh-38807: Khắc phục tình trạng cuộc đua trong
trace. Thay vì kiểm tra xem thư mục có tồn tại hay không và tạo nó, hãy gọi trực tiếpos.makedirs()bằng kwargexist_ok=True.gh-75705: Đặt phong bì unixfrom trong
mailbox.mboxvàmailbox.MMDF.gh-106233: Sửa lỗi stacklevel trong
InvalidTZPathWarningtrong quá trình nhập mô-đunzoneinfo.gh-105102: Cho phép
ctypes.Unionđược lồng trongctypes.Structurekhi độ bền của hệ thống đối lập với các lớp.gh-104282: Sửa lỗi vô hiệu hóa con trỏ null trong
lzma._decode_filter_properties()do xử lý không đúng các bộ lọc BCJ có thuộc tính có độ dài bằng 0. Bản vá của Radislav Chugunov.gh-96471: Thêm kết thúc
queue.Queuevớishutdown().gh-101599: Đã thay đổi định dạng tùy chọn cờ argparse để loại bỏ phần dư thừa.
gh-85984: Thêm các hàm giả đầu cuối POSIX
os.posix_openpt(),os.grantpt(),os.unlockpt()vàos.ptsname().gh-102512: Khi
os.fork()được gọi từ một luồng ngoại (hay còn gọi là_DummyThread), loại luồng trong tiến trình con được đổi thành_MainThread. Cũng đã thay đổi tên và trạng thái daemon, bây giờ nó có thể được tham gia.gh-88569: Thêm
os.path.isreserved(), xác định các tên đường dẫn dành riêng như "NUL", "AUX" và "CON". Chức năng này chỉ có trên Windows.Không dùng nữa
pathlib.PurePath.is_reserved().bpo-38364: Các hàm
inspectisgeneratorfunction,iscoroutinefunction,isasyncgenfunctionhiện hỗ trợ các hàm được góifunctools.partialmethodgiống như cách chúng hỗ trợfunctools.partial.
Tài liệu¶
gh-115233: Sửa một ví dụ cho
LoggerAdaptertrong Sổ tay ghi nhật ký.gh-114123: Di chuyển chuỗi tài liệu của mô-đun
csvsang mô-đuncsvthay vì xuất lại nó từ mô-đun_csvbên trong và xóa__doc__khỏicsv.__all__.Di chuyển
csv.__version__sang mô-đuncsvthay vì xuất lại nó từ mô-đun_csvbên trong và xóa__version__khỏicsv.__all__.
Kiểm tra¶
xây dựng¶
gh-115167: Tránh bán
vcruntime140_threads.dllkhi xây dựng bằng Visual Studio 2022 phiên bản 17.8.gh-113632: Nâng cấp WASI lên nền tảng cấp 2 và loại bỏ Emscripten khỏi cấp 3 trong configure.ac.
gh-114099: configure và Makefile đã được tái cấu trúc để phù hợp với các bản dựng khung trên các nền tảng của Apple ngoài macOS.
gh-114875: Thêm
getgrent()làm điều kiện tiên quyết để xây dựng mô-đungrp.
cửa sổ¶
gh-115049: Khắc phục lỗi trình khởi chạy
py.exekhi chạy với tư cách người dùng không có hồ sơ người dùng.gh-115009: Cập nhật trình cài đặt Windows để sử dụng SQLite 3.45.1.
gh-109991: Cập nhật bản dựng Windows để sử dụng OpenSSL 3.0.13.
gh-111239: Cập nhật các bản dựng Windows để sử dụng zlib v1.3.1.
gh-100107: Trình khởi chạy
py.exesẽ không còn cố chạy trình chuyển hướng Microsoft Store khi khởi chạy tập lệnh chứa shebang/usr/bin/envgh-112984: Thêm các tệp nhị phân có luồng tự do vào trình cài đặt Windows dưới dạng thành phần tùy chọn.
gh-89240: Cho phép
multiprocessingtạo nhóm gồm hơn 62 quy trình.
macOS¶
gh-115009: Cập nhật trình cài đặt macOS để sử dụng SQLite 3.45.1.
gh-109991: Cập nhật trình cài đặt macOS để sử dụng OpenSSL 3.0.13.
gh-114490: Thêm hỗ trợ liên kết Mach-O cho
platform.architecture().gh-87804: Trên macOS, kết quả của
os.statvfsvàos.fstatvfshiện đã báo cáo chính xác kích thước của các đĩa rất lớn, trong các phiên bản trước, số khối được báo cáo là sai đối với các đĩa có ít nhất 2**32 khối.
IDLE¶
Công cụ/Bản trình diễn¶
gh-113516: Không đặt
LDSHAREDkhi xây dựng cho WASI.gh-109991: Cập nhật quy trình công việc GitHub CI để sử dụng OpenSSL 3.0.13 và multissltests để sử dụng 1.1.1w, 3.0.13, 3.1.5 và 3.2.1.
gh-115015: Sửa lỗi trong Phòng khám đối số tạo mã không chính xác cho các phương thức không có tham số sử dụng quy ước gọi METH_METHOD | METH_FASTCALL | METH_KEYWORDS. Chỉ kiểm tra số lượng tham số vị trí; mọi đối số từ khóa được thông qua sẽ được âm thầm chấp nhận.
C API¶
gh-111140: Thêm các chức năng
PyLong_AsNativeBytes(),PyLong_FromNativeBytes()vàPyLong_FromUnsignedNativeBytes().gh-114685:
PyBuffer_FillInfo()hiện tăngSystemErrornếu được gọi vớiPyBUF_READhoặcPyBUF_WRITElàm cờ. Những cờ này chỉ nên được sử dụng vớiPyMemoryView_*C API.gh-114685:
PyObject_GetBuffer()hiện tăngSystemErrornếu được gọi vớiPyBUF_READhoặcPyBUF_WRITElàm cờ. Những cờ này chỉ nên được sử dụng vớiPyMemoryView_*C API.gh-114626: Thêm các typedef
PyCFunctionFastvàPyCFunctionFastWithKeywords(giống hệt với các typedef_PyCFunctionFastvà_PyCFunctionFastWithKeywordshiện có, chỉ không có tiền tố_ở đầu).gh-114329: Thêm
PyList_GetItemRef(), tương tự nhưPyList_GetItem()nhưng trả về strong reference thay vì borrowed reference.gh-110850: Thêm PyTime C API:
loại
PyTime_t.hằng số
PyTime_MINvàPyTime_MAX.Các chức năng
PyTime_AsSecondsDouble(),PyTime_Monotonic(),PyTime_PerfCounter()vàPyTime_Time().
Bản vá của Victor Stinner.
gh-112066: Thêm
PyDict_SetDefaultRef(): chèn khóa và giá trị vào từ điển nếu khóa chưa có. Điều này tương tự nhưdict.setdefault(), nhưng trả về một giá trị số nguyên cho biết khóa đã có sẵn hay chưa. Nó cũng tương tự nhưPyDict_SetDefault(), nhưng trả về một tham chiếu mạnh thay vì một tham chiếu mượn.
Python 3.13.0 alpha 3¶
Release date: 2024-01-17
Bảo mật¶
Cốt lõi và nội dung¶
gh-107901: Trình biên dịch sao chép các khối cơ bản có kiểm tra bộ ngắt eval, không có số dòng và nhiều khối tiền nhiệm.
gh-107901: Một bước nhảy khiến trình xử lý ngoại lệ trở lại mã bình thường không còn kiểm tra bộ ngắt eval nữa.
gh-113655: Đặt giới hạn đệ quy C thành 4000 trên Windows và 10000 trên Linux/OSX. Điều này dường như gần đạt đến mức tối ưu để duy trì sự an toàn nhưng không ảnh hưởng đến khả năng tương thích ngược.
gh-113710: Thêm các hiệu ứng ngăn xếp đã nhập vào trình thông dịch DSL, cùng với các chú thích hướng dẫn khác nhau.
gh-77046: Trên Windows, bộ mô tả tệp bao bọc các tay cầm Windows hiện được tạo không thể kế thừa theo mặc định (PEP 446). Bản vá của Zackery Spytz và Victor Stinner.
gh-113853: Đảm bảo tất cả người thực thi đều tiến bộ. Điều này sau đó đảm bảo rằng việc thực thi cấp 2 luôn đạt được tiến bộ.
gh-113753: Khắc phục sự cố trong đó bộ hoàn thiện của các đối tượng
PyAsyncGenASendcó thể không được gọi nếu chúng được phân bổ từ danh sách miễn phí.gh-107901: Trình biên dịch đã thay đổi để các bước nhảy tổng hợp không ở cuối vòng lặp không còn kiểm tra bộ ngắt eval nữa.
gh-113703: Khắc phục sự hồi quy trong mô-đun
codeopkhiến mô-đun này xác định không chính xác các chuỗi f không đầy đủ. Bản vá của Pablo Galindogh-89811: Kiểm tra
tp_version_taghợp lệ trước khi thực hiện các chuyên môn về mã byte dựa vào giá trị này có thể sử dụng được.gh-111488: Thông báo lỗi đã thay đổi trong trường hợp không có từ khóa 'in' sau 'for' trong phần hiểu danh sách
gh-113657: Khắc phục sự cố khiến các cập nhật con trỏ lệnh quan trọng được tối ưu hóa ngoài dấu vết cấp hai.
gh-113603: Đã sửa lỗi trong đó NOP dư thừa không bị xóa, khiến xác nhận không thành công trong trình biên dịch ở chế độ gỡ lỗi.
gh-113602: Khắc phục lỗi khiến trình phân tích cú pháp cố gắng ghi đè các lỗi hiện có và bị lỗi trong quá trình này. Bản vá của Pablo Galindo
gh-113486: Không còn phát hành các sự kiện
PY_UNWINDgiả cho các lệnh gọi lớp học được tối ưu hóa.gh-113297: Sửa lỗi segfault trong trình biên dịch bằng câu lệnh với 19 trình quản lý ngữ cảnh.
gh-111375: Chỉ sử dụng
NULLtrong ngăn xếp ngoại lệ để cho biết ngoại lệ đã được xử lý. Bản vá của Carey Metcalfe.gh-112215: Tăng giới hạn đệ quy C lên 3 lần đối với các bản dựng không gỡ lỗi, ngoại trừ nền tảng webassembly và s390 không thay đổi. Điều này giảm thiểu một số hồi quy trong 3.12 với nội dung trộn đệ quy sâu (C) và mã Python.
gh-113054: Đã sửa lỗi trong đó NOP dư thừa không bị xóa, khiến xác nhận không thành công trong trình biên dịch ở chế độ gỡ lỗi.
gh-106905: Sử dụng theo trạng thái của mỗi trình phân tích cú pháp AST thay vì trạng thái chung để theo dõi độ sâu đệ quy trong trình phân tích cú pháp AST nhằm ngăn chặn tình trạng chạy đua tiềm ẩn do phân tích cú pháp đồng thời.
Sự cố chủ yếu xuất hiện trong phiên bản 3.11 bởi người dùng
ast.parse()đa luồng. Trong phiên bản 3.12, một thay đổi về thời điểm thu gom rác có thể được kích hoạt đã ngăn chặn tình trạng chạy đua xảy ra.gh-108866: Thay đổi API và rút gọn
_PyExecutorObjectđể trả về con trỏ next_instr, thay vì khung và để luôn thực thi ít nhất một lệnh.gh-112943: Tính toán chính xác độ lệch cột cuối cho mã thông báo nhiều dòng trong mô-đun
tokenize. Bản vá của Pablo Galindogh-112125: Sửa lỗi
None.__ne__(None)trả vềNotImplementedthay vìFalse.gh-74616:
input()hiện tăng ValueError khi xuất trên thiết bị đầu cuối nếu lời nhắc chứa các ký tự null được nhúng thay vì âm thầm cắt bớt nó.gh-112716: Sửa SystemError trong câu lệnh
importvà trong các phương thức__reduce__()của các kiểu dựng sẵn khi__builtins__không phải là một lệnh.gh-112730: Sử dụng màu sắc để đánh dấu các vị trí lỗi trong truy nguyên. Bản vá của Pablo Galindo
gh-112625: Sửa lỗi trong đó đối tượng bytearray có thể bị xóa trong khi lặp lại một đối số trong phương thức
bytearray.join()có thể dẫn đến việc đọc bộ nhớ sau khi nó được giải phóng.gh-112660: Không xóa các lỗi không mong muốn trong quá trình định dạng thông báo lỗi cho ImportError và AttributionError cho các mô-đun.
gh-105967: Khắc phục lỗi trong thư viện zlib nền tảng macOS của Apple, trong đó
zlib.crc32()vàbinascii.crc32()có thể tạo ra kết quả không chính xác trên đầu vào nhiều gigabyte. Bao gồm cả khi sử dụngzipfiletrên các zip chứa dữ liệu lớn.gh-95754: Cung cấp thông báo lỗi tốt hơn khi truy cập các thuộc tính không hợp lệ trên các mô-đun được khởi tạo một phần. Nguồn gốc của mô-đun đang được truy cập hiện đã được đưa vào thông báo để trợ giúp giải quyết vấn đề chung về việc theo dõi các mô-đun khác.
gh-112217: Thêm kiểm tra loại
__cause__được trả về từ việc gọi loạiTtrongraise from T.gh-111058: Thay đổi coro.cr_frame/gen.gi_frame để trả về
Nonesau khi đóng coroutine/generator. Điều này khắc phục lỗi trong đógetcoroutinestate()vàgetgeneratorstate()trả về trạng thái sai cho một coroutine/trình tạo đã đóng.gh-112388: Sửa lỗi khiến trình phân tích cú pháp cố gắng ghi đè lỗi mã thông báo. Bản vá của pablo Galindo
gh-112387: Sửa vị trí lỗi cho chuỗi giải mã bị lỗi tokenize ngược. Bản vá của Pablo Galindo
gh-99606: Tạo mã được tạo cho chuỗi f trống giống hệt mã của chuỗi trống thông thường.
gh-112367: Tránh hành vi không xác định khi sử dụng tấm bạt lò xo hoàn hảo bằng cách không giải phóng các đấu trường mã cho đến khi tắt máy. Bản vá của Pablo Galindo
gh-112320: Trình dịch Cấp 2 hiện theo dõi mức độ tin cậy để duy trì "theo dõi" (tức là không quay lại trình thông dịch Cấp 1) cho các hướng dẫn nhánh dựa trên số bit được đặt trong "bộ đếm" nhánh. Quá trình dịch dấu vết kết thúc khi độ tin cậy giảm xuống dưới 1/3.
gh-109598:
PyComplex_RealAsDouble()/PyComplex_ImagAsDouble()hiện cố gắng chuyển đổi một đối tượng thành một phiên bảncomplexbằng phương thức__complex__()trước khi quay lại phương thức__float__(). Bản vá của Sergey B Kirpicchev.gh-94606: Khắc phục UnicodeEncodeError khi
email.message.get_payload()đọc thư có ký tự thay thế Unicode và nội dung thư không được định dạng đúng để mã hóa thay thế. Bản vá của Sidney Markowitz.bpo-21861: Sử dụng tên lớp thực tế của đối tượng trong
_io.FileIO.__repr__(),_io._WindowsConsoleIO()và_io.TextIOWrapper.__repr__(), để làm cho các phương thức này trở nên thân thiện với lớp con.bpo-34392: Đã thêm
sys._is_interned().
Thư viện¶
gh-114077: Có thể sửa lỗi
OverflowErrortrongsocket.socket.sendfile()khi vượt qua count lớn hơn 2 GiB trên nền tảng 32-bit.gh-111803:
plistlibhiện hỗ trợ tải các danh sách lồng nhau sâu hơn ở định dạng nhị phân.gh-114014: Đã sửa lỗi trong
fractions.Fractiontrong đó chuỗi không hợp lệ sử dụngdtrong phần thập phân sẽ tạo ra lỗi khác so với các chữ cái/ký tự không hợp lệ khác. Bản vá của Jeremiah Gabriel Pascual.gh-108364:
sqlite3.Connection.iterdump()hiện đảm bảo rằng hỗ trợ khóa ngoại bị vô hiệu hóa trước khi kết xuất lược đồ cơ sở dữ liệu, nếu có bất kỳ vi phạm khóa ngoại nào. Bản vá của Erlend E. Aasland và Mariusz Felisiak.gh-113971: Thuộc tính
._compresslevelđược bảo vệ trước đây củazipfile.ZipInfođã được công khai là.compress_levelvới tên_compresslevelcũ vẫn có sẵn làm thuộc tính để duy trì khả năng tương thích.gh-113877: Sửa lỗi
tkinterphương phápwinfo_pathname()trên Windows 64-bit.gh-113868: Đã thêm
mmap.MAP_NORESERVE,mmap.MAP_NOEXTEND,mmap.MAP_HASSEMAPHORE,mmap.MAP_NOCACHE,mmap.MAP_JIT,mmap.MAP_RESILIENT_CODESIGN,mmap.MAP_RESILIENT_MEDIA,mmap.MAP_32BIT,mmap.MAP_TRANSLATED_ALLOW_EXECUTE,mmap.MAP_UNIX03vàmmap.MAP_TPRO. Tất cả đều là cờmmap(2)trên macOS.gh-113848: Trình quản lý bối cảnh
asyncio.TaskGroup()vàasyncio.timeout()hiện xử lý các lớp conCancelledErrorcũng nhưCancelledErrorchính xác.gh-113661: Á hậu không đáng tin cậy nhất: Không thoát 5 nếu bài kiểm tra bị bỏ qua. Mục đích của việc thoát 5 là phát hiện các vấn đề mà bộ thử nghiệm chưa được phát hiện. Nếu chúng tôi bỏ qua các bài kiểm tra, nó đã được phát hiện chính xác.
gh-96037: Chèn
TimeoutErrorvào ngữ cảnh ngoại lệ được nêu ra khi thoát khỏi khốiasyncio.timeout()đã hết hạn.gh-113781: Tắt tiếng AttributionError không thể phát hiện được khi cảnh báo được phát ra trong quá trình hoàn thiện Python.
gh-113238: Thêm
Anchorvàoimportlib.resources(để code đúng với tài liệu)gh-111693:
asyncio.Condition.wait()hiện khởi động lại phiên bảnCancelledErrortương tự có thể đã khiến nó bị gián đoạn. Đã sửa lỗi tình trạng cuộc đua trongasyncio.Semaphore.acquire()khi bị gián đoạn bởiCancelledError.gh-113791: Thêm
CLOCK_MONOTONIC_RAW_APPROXvàCLOCK_UPTIME_RAW_APPROXvàotimetrên macOS. Đây là những đồng hồ có sẵn trên macOS 10.12 trở lên.gh-112932: Khôi phục khả năng cho
zipfilethànhextractalltừ các tệp zip có mục nhập thư mục "/" trong đó vì một số nhà xuất khẩu dữ liệu theo dõi lỗi hoặc wiki thường thêm vào tệp zip.gh-113568: Đưa ra cảnh báo không dùng nữa từ
pathlib.PurePathchứ không phải từ lớp cơ sở riêngPurePathBasecủa nó.gh-113594: Sửa lỗi
UnicodeEncodeErrortrongemailkhi gấp lại các dòng chứa phần mã hóa 8bit không xác định, theo sau là phần mã hóa 8bit không xác định.gh-113538: Trong
asyncio.StreamReaderProtocol.connection_made(), có lệnh gọi lại ghi lại lỗi nếu tác vụ gói "gọi lại được kết nối" không thành công. Cuộc gọi lại này sẽ tự thất bại nếu tác vụ bị hủy. Ngăn chặn điều này bằng cách kiểm tra xem tác vụ có bị hủy trước hay không. Nếu vậy, hãy đóng phương tiện vận chuyển nhưng không ghi lại lỗi.gh-113626: Thêm hỗ trợ cho đối số allow_code trong mô-đun
marshal. Việc chuyểnallow_code=Falsesẽ ngăn việc tuần tự hóa và hủy tuần tự hóa các đối tượng mã không tương thích giữa các phiên bản Python.gh-85567: Khắc phục cảnh báo tài nguyên cho các tệp không được tiết lộ trong giao diện dòng lệnh
picklevàpickletools.gh-113537: Hỗ trợ tải
strtrongplistlib.loads().gh-89850: Thêm các triển khai mặc định của các phương thức
pickle.Pickler.persistent_id()vàpickle.Unpickler.persistent_load()trong quá trình triển khai C. Việc gọisuper().persistent_id()vàsuper().persistent_load()trong các lớp con của quá trình triển khai C của các lớppickle.Picklervàpickle.Unpicklerkhông còn gây ra đệ quy vô hạn nữa.gh-113569: Cho biết liệu không có lệnh gọi thực tế nào trong lỗi
assert_has_calls()nhỏ nhất hay không.gh-101225: Tăng tồn đọng cho các đối tượng
multiprocessing.connection.Listenerđược tạo bởimultiprocessing.managervàmultiprocessing.resource_sharerđể giảm đáng kể nguy cơ gặp lỗi từ chối kết nối khi tạomultiprocessing.connection.Connectioncho chúng.gh-113568: Tăng các sự kiện kiểm tra từ
pathlib.Pathchứ không phải lớp cơ sở riêngPathBase.gh-113543: Đảm bảo rằng
webbrowser.MacOSXOSAScriptgửi sự kiện kiểm trawebbrowser.open.gh-113028: Khi tham chiếu thứ hai đến một chuỗi xuất hiện trong đầu vào của
picklevà triển khai Python đang được sử dụng, chúng tôi đảm bảo rằng một bản sao sẽ được chọn và một đối tượng được chia sẻ khi tải lại. Trước đây, trong giao thức 0, khi một chuỗi chứa một số ký tự nhất định (ví dụ: dòng mới), nó sẽ dẫn đến các đối tượng trùng lặp.gh-113421: Khắc phục trình ghi nhật ký đa xử lý cho
%(filename)s.gh-111784: Sửa lỗi phân đoạn trong mô-đun
_elementtree. Khắc phục lỗi phân đoạn đầu tiên trong quá trình phân bổ phiên bản_elementtree.XMLParserbằng cách duy trì tham chiếu mạnh đến mô-đunpyexpatở trạng thái mô-đun trong suốt vòng đời của viên nang. Khắc phục lỗi phân đoạn thứ hai xảy ra trong cùng một quy trình phân bổ bằng cách duy trì tham chiếu mạnh đến mô-đun_elementtreetrong cấu trúcXMLParsertrong suốt thời gian tồn tại của mô-đun_elementtree.gh-113407: Sửa lỗi nhập
unittest.mockkhi CPython được xây dựng mà không có chuỗi tài liệu.gh-113320: Khắc phục sự hồi quy trong Python 3.12 trong đó các lớp
Protocolkhông được đánh dấu làruntime-checkablesẽ bị xem xét nội tâm một cách không cần thiết, có khả năng gây ra ngoại lệ nếu giao thức có thành viên có vấn đề. Bản vá của Alex Waygood.gh-53502: Thêm tùy chọn mới
aware_datetimetrongplistlibđể tải hoặc loại bỏ ngày giờ nhận biết.gh-113358: Khắc phục lỗi hiển thị dấu vết có ngoại lệ với __getattr__ bị hỏng
gh-113214: Sửa lỗi
AttributeErrortrong khi giao thức asyncio SSL bị hủy bỏ trong các tình huống SSL-over-SSL.gh-113246: Cập nhật gói pip lên 23.3.2.
gh-87264: Đã sửa lỗi phương thức tarfile list() để hiển thị loại tệp.
gh-112182:
asyncio.futures.Future.set_exception()hiện chuyển đổiStopIterationthànhRuntimeErrorthay vì treo hoặc có hành vi sai trái khác. Bản vá được đóng góp bởi Jamie Phan.gh-113225: Tăng tốc
pathlib.Path.glob()bằng cách sử dụngos.DirEntry.pathnếu có thể.gh-113149: Cải thiện thông báo lỗi khi mảng hoặc đối tượng JSON chứa dấu phẩy ở cuối. Bản vá của Carson Radtke.
gh-113117: Mô-đun
subprocesshiện có thể sử dụng chức năngos.posix_spawn()vớiclose_fds=Truetrên các nền tảng có sẵnposix_spawn_file_actions_addclosefrom_np. Bản vá của Jakub Kulik.gh-113199: Làm cho
http.client.HTTPResponse.read1vàhttp.client.HTTPResponse.readlineđóng IO sau khi đọc tất cả dữ liệu khi biết độ dài nội dung. Bản vá của Illia Volochii.gh-113191: Thêm hỗ trợ
os.fchmod()và bộ mô tả tệp trongos.chmod()trên Windows.gh-113188: Sửa lỗi
shutil.copymode()vàshutil.copystat()trên Windows. Trước đây, chúng hoạt động khác nếu dst là một liên kết tượng trưng: chúng sửa đổi các bit cấp phép của chính dst thay vì tệp mà nó trỏ đến nếu follow_symlinks là đúng hoặc src không phải là một liên kết tượng trưng và không sửa đổi các bit cấp phép nếu follow_symlinks là sai và src là một liên kết tượng trưng.gh-113119:
os.posix_spawn()hiện chấp nhậnenv=None, điều này làm cho quy trình mới được sinh ra sử dụng môi trường quy trình hiện tại. Bản vá của Jakub Kulik.gh-113202: Thêm tùy chọn
strictvàobatched()trong mô-đunitertools.gh-61648: Phát hiện số dòng thuộc tính trong doctest.
gh-113175: Đồng bộ hóa với importlib_metadata 7.0, bao gồm các chú thích loại được cải thiện, khắc phục sự cố với các gói liên kết tượng trưng trong
package_distributions, thêmEntryPoints.__repr__, giới thiệu tập lệnhdiagnose, thêm thuộc tínhDistribution.originvà xóa quyền truy cậpEntryPointkhông được dùng nữa theo chỉ mục số (hành vi tuple).gh-59616: Thêm hỗ trợ
os.lchmod()và đối số follow_symlinks trongos.chmod()trên Windows. Lưu ý rằng giá trị mặc định của follow_symlinks trongos.lchmod()làFalsetrên Windows.gh-112559:
signal.signal()vàsignal.getsignal()không còn gọireprtrên các trình xử lý có thể gọi được nữa.asyncio.run()vàasyncio.Runner.run()không còn gọireprtrên kết quả nhiệm vụ nữa. Bản vá của Yilei Yang.gh-112962: Các chức năng mô-đun
disthêm thông tin bộ đệm vào phiên bảnInstructionthay vì tạo các phiên bảnInstructiongiả để thể hiện các mục nhập bộ đệm.gh-112989: Giảm chi phí kết nối ổ cắm với
asyncioSelectorEventLoop.gh-112970: Sử dụng
closefrom()trên Linux nếu có (ví dụ: glibc-2.34), thay vì chỉ FreeBSD.gh-110190: Sửa cấu trúc ctypes với mảng trên nền tảng PPC64LE bằng cách đặt
MAX_STRUCT_SIZEthành 64 trong stgdict. Bản vá của Diego Russo.gh-112540: Hàm stats.geometric_mean() hiện trả về số 0 cho các tập dữ liệu chứa số 0. Trước đây, nó sẽ đưa ra một ngoại lệ.
gh-87286: Đã thêm
LOG_FTP,LOG_NETINFO,LOG_REMOTEAUTH,LOG_INSTALL,LOG_RASvàLOG_LAUNCHDvào mô-đunsyslog, tất cả đều là hằng số được sử dụng trên macOS.gh-112800: Sửa lỗi
asyncioSubprocessTransport.close()không némPermissionErrorkhi sử dụng với các tệp thực thi setuid.gh-51944: Thêm các hằng số sau vào mô-đun
termios. Các giá trị này có trong tiêu đề hệ thống macOS:ALTWERASE,B14400,B28800,B7200,B76800,CCAR_OFLOW,CCTS_OFLOW,CDSR_OFLOW,CDTR_IFLOW,CIGNORE,CRTS_IFLOW,EXTPROC,IUTF8,MDMBUF,NL2,NL3,NOKERNINFO,ONOEOT,OXTABS,VDSUSP,VSTATUS.gh-79325: Sửa lỗi đệ quy vô hạn khi dọn dẹp
tempfile.TemporaryDirectory()trên Windows.gh-94692:
shutil.rmtree()hiện chỉ bắt được ngoại lệ OSError. Trước đây, phiên bản chống tấn công liên kết tượng trưng củashutil.rmtree()có thể bỏ qua hoặc chuyển đến ngoại lệ tùy ý của trình xử lý lỗi khi các đối số không hợp lệ được cung cấp.gh-112736: Việc sử dụng các ký hiệu del-safe trong
subprocessđã được tái cấu trúc để cho phép sử dụng trong môi trường xây dựng đa nền tảng.gh-112727: Tăng tốc độ
pathlib.Path.absolute(). Bản vá của Barney Gale.gh-74690: Tăng tốc độ kiểm tra
issubclass()so vớiruntime-checkable protocolsđơn giản khoảng 6%. Bản vá của Alex Waygood.gh-74690: Tăng tốc độ kiểm tra
isinstance()khoảng 20% đối vớiruntime-checkable protocolschỉ có một thành viên có thể gọi được. Tăng tốcissubclass()kiểm tra các giao thức này khoảng 10%. Bản vá của Alex Waygood.gh-112645: Xóa lỗi không dùng nữa khi chuyển
onerrorsangshutil.rmtree().gh-112640: Thêm tham số
kwdefaultsvàotypes.FunctionTypeđể đặt giá trị đối số từ khóa mặc định.gh-112622: Đảm bảo tham số
nameđược chuyển đến vòng lặp sự kiện trongasyncio.create_task().gh-112618: Sửa lỗi bộ nhớ đệm liên quan đến
typing.Annotated.Annotated[str, True]không còn giống vớiAnnotated[str, 1]nữa.gh-112334: Đã sửa lỗi hồi quy hiệu suất trong
subprocesscủa 3.12 trên Linux, nơi nó sẽ không còn sử dụng lệnh gọi hệ thốngvfork()đường dẫn nhanh khi có thể do lỗi logic, thay vào đó quay trở lạifork()an toàn nhưng chậm hơn.Đồng thời sửa lỗi bảo mật tiềm ẩn 3.12.0 thứ hai. Nếu một giá trị của
extra_groups=[]được chuyển tớisubprocess.Popenhoặc các API liên quan, lệnh gọi hệ thốngsetgroups(0, NULL)cơ bản để xóa danh sách nhóm sẽ không được thực hiện trong quy trình con trướcexec().Điều này được xác định thông qua việc kiểm tra mã trong quá trình sửa lỗi đầu tiên.
gh-110190: Sửa cấu trúc ctypes với mảng trên nền tảng Arm bằng cách đặt
MAX_STRUCT_SIZEthành 32 trong stgdict. Bản vá của Diego Russo.gh-81194: Khắc phục sự cố trong
socket.if_indextoname()với giá trị cụ thể (UINT_MAX). Khắc phục lỗi tràn số nguyên trongsocket.if_indextoname()trên nền tảng 64-bit không phải Windows.gh-112578: Sửa lỗi
RuntimeWarninggiả khi thực thi mô-đunzipfile.gh-112516: Cập nhật bản sao đi kèm của pip lên phiên bản 23.3.1.
gh-112510: Thêm
readline.backendđể sử dụng dòng đọc phụ trợ (editlinehoặcreadline)gh-112328: [Enum] Đặt
EnumDict,EnumDict.member_names,EnumType._add_alias_vàEnumType._add_value_alias_ở chế độ công khai.gh-112509: Khắc phục các trường hợp đặc biệt có thể khiến khóa xuất hiện trong cả thuộc tính
__required_keys__và__optional_keys__củatyping.TypedDict. Bản vá của Jelle Zijlstra.gh-101336: Thêm tham số từ khóa
keep_alivechoAbstractEventLoop.create_server()vàBaseEventLoop.create_server().gh-63284: Đã thêm hỗ trợ cho chế độ TLS-PSK (khóa chia sẻ trước) cho mô-đun
ssl.gh-112414: Khắc phục sự hồi quy trong Python 3.12 trong đó việc gọi
repr()trên mô-đun đã được nhập bằng loader tùy chỉnh có thể không thành công vớiAttributeError. Bản vá của Alex Waygood.gh-112358: Hoàn nguyên thay đổi về khởi tạo
struct.Structđã phá vỡ một số trường hợp phân lớp.gh-112405: Tối ưu hóa
pathlib.PurePath.relative_to(). Bản vá của Alex Waygood.gh-94722: Sửa lỗi so sánh giữa các phiên bản của
DocTestkhông thành công nếu một trong số chúng cóNonelàm lineno.gh-112361: Tăng tốc một số phương pháp
pathlibbằng cách xóa một số đối tượng tạm thời.gh-112345: Cải thiện thông báo lỗi khi cố gắng gọi
issubclass()đối vớityping.Protocolkhông có thành viên phương thức. Bản vá của Randolf Scholz.gh-112137: Thay đổi đầu ra
disđể hiển thị no-lineno là "--" thay vì "Không".gh-112332: Không dùng trường
exc_typecủatraceback.TracebackException. Thêmexc_type_strđể thay thế.gh-81620: Thêm các bài kiểm tra bổ sung cho
random.binomialvariate()gh-112292: Khắc phục sự cố trong
readlinekhi được nhập từ trình thông dịch phụ. Bản vá của Anthony Shawgh-77621: Cải thiện một chút thời gian nhập của mô-đun
pathlibbằng cách trì hoãn một số lần nhập. Bản vá của Barney Gale.gh-112137: Thay đổi đầu ra
disđể hiển thị nhãn logic cho mục tiêu nhảy thay vì bù trừ.gh-112139: Thêm
Signature.format()để định dạng chữ ký thành chuỗi với các tùy chọn bổ sung. Và sử dụng nó trongpydocđể hiển thị các chữ ký dễ đọc hơn có các dòng mới giữa các tham số.gh-112105: Làm cho
readline.set_completer_delims()hoạt động với libeditgh-106922: Hiển thị nhiều dòng với
tracebackkhi lỗi trải dài trên nhiều dòng.gh-111874: Khi tạo lớp
typing.NamedTuple, hãy đảm bảo__set_name__()được gọi trên tất cả các đối tượng xác định__set_name__và tồn tại trong các giá trị của từ điển lớp của lớpNamedTuple. Bản vá của Alex Waygood.gh-68166: Thêm hỗ trợ loại phần tử "vsapi" trong
tkinter.ttk.Style.element_create().gh-110275: Các phương thức được đặt tên là
_replace()và__replace__()hiện tăng TypeError thay vì ValueError cho các đối số từ khóa không hợp lệ.gh-99367: Không đọc sai
sys.path[0]trongpdbnếu safe_path được đặtgh-111615: Khắc phục lỗi hồi quy do sửa lỗi gh-93162, theo đó bạn không thể định cấu hình
QueueHandlermà không chỉ định trình xử lý.gh-75666: Khắc phục hành vi của phương thức
unbind()của tiện íchtkinterbằng hai đối số. Trước đây,widget.unbind(sequence, funcid)đã hủy liên kết hiện tại cho sequence, khiến sequence không bị liên kết và xóa lệnh funcid. Bây giờ nó chỉ xóa funcid khỏi liên kết cho sequence, giữ các lệnh khác và xóa lệnh funcid. Nó chỉ để sequence không bị ràng buộc nếu funcid là lệnh bị ràng buộc cuối cùng.gh-67790: Triển khai hỗ trợ định dạng cơ bản (chiều rộng tối thiểu, căn chỉnh, tô màu) cho
fractions.Fraction.gh-111049: Khắc phục sự cố trong quá trình thu gom rác của đối tượng bộ đệm
io.BytesIO.gh-102980: Chuyển hướng đầu ra của lệnh
interactcủapdbsang cùng kênh với trình gỡ lỗi. Thêm bài kiểm tra và cải thiện tài liệu.gh-102988:
email.utils.getaddresses()vàemail.utils.parseaddr()hiện trả về('', '')2 bộ dữ liệu trong nhiều trường hợp gặp phải địa chỉ email không hợp lệ thay vì các giá trị có thể không chính xác. Thêm tham số strict tùy chọn vào hai chức năng này: sử dụngstrict=Falseđể lấy hành vi cũ, chấp nhận dữ liệu đầu vào không đúng định dạng.getattr(email.utils, 'supports_strict_parsing', False)có thể được sử dụng để kiểm tra xem tham số strict có khả dụng hay không. Bản vá của Thomas Dwyer và Victor Stinner để cải thiện bản sửa lỗi CVE 2023-27043.gh-52161:
cmd.Cmd.do_help()hiện xóa các chuỗi tài liệu bằnginspect.cleandoc()trước khi viết chúng. Bản vá của Filip Łapkiewicz.gh-82300: Thêm tham số
trackvàomultiprocessing.shared_memory.SharedMemorycho phép sử dụng các khối bộ nhớ dùng chung mà không cần phải đăng ký với trình theo dõi tài nguyên POSIX tự động giải phóng chúng khi thoát khỏi quá trình.gh-110109: Thêm lớp
pathlib._PurePathBaseriêng: lớp cơ sở chopathlib.PurePathbỏ qua một số phương thức ma thuật nhất định. Nó có thể được công khai (cùng với_PathBase) trong tương lai.gh-109858: Bảo vệ
zipfilekhỏi zipbomb "trích dẫn chồng chéo". Bây giờ nó sẽ tăng BadZipFile khi cố đọc một mục trùng lặp với mục nhập hoặc thư mục trung tâm khác.gh-109786: Khắc phục lỗi rò rỉ và lỗi tham chiếu có thể xảy ra khi nhập lại phương thức
__next__()củaitertools.pairwise.gh-91539: Cải thiện hiệu suất nhỏ (10 - 20%) và không đáng kể của
urllib.request.getproxies_environment(), thường hữu ích khi có nhiều biến môi trường cần xem xét.gh-103363: Thêm đối số chỉ từ khóa follow_symlinks vào
pathlib.Path.owner()vàgroup(), mặc định làTrue.gh-99437:
runpy.run_path()hiện giải mã các đối tượng giống đường dẫn, đảm bảo __file__ và sys.argv[0] của mô-đun đang chạy luôn ở dạng chuỗi.gh-104003: Thêm
warnings.deprecated(), một công cụ trang trí để đánh dấu các hàm không được dùng nữa cho trình kiểm tra kiểu tĩnh và để cảnh báo về việc sử dụng các lớp và hàm không được dùng nữa. Xem PEP 702. Bản vá của Jelle Zijlstra.gh-103708: Tạo tên python được mã hóa cứng, một tham số có thể định cấu hình để các triển khai python khác nhau có thể ghi đè lên nó thay vì tạo ra những khác biệt lớn trong sysconfig.py
gh-66515:
mailbox.MHhiện hỗ trợ các thư mục không chứa tệp.mh_sequences(ví dụ: thư mục Claws Mail IMAP-cache). Bản vá của Serhiy Storchaka.gh-83162: Đã đổi tên
re.errorthànhPatternErrorcho rõ ràng và giữ nguyênre.errorđể tương thích ngược. Bản vá của Matthias Bussonnier và Adam Chhina.gh-91133: Sửa lỗi dọn dẹp
tempfile.TemporaryDirectory, giờ đây lỗi này không còn hủy bỏ các liên kết tượng trưng khi xử lý các lỗi cấp phép hệ thống tệp.bpo-43153: Trên Windows,
tempfile.TemporaryDirectorytrước đây đã che dấuPermissionErrorbằngNotADirectoryErrortrong quá trình dọn dẹp thư mục. Bây giờ nó sẽ tăngPermissionErrormột cách chính xác nếu lỗi không được bỏ qua. Bản vá của Andrei Kulakov và Ken Jin.bpo-32731:
getpass.getuser()hiện tăngOSErrorcho tất cả các lỗi thay vìImportErrortrên các hệ thống thiếu mô-đunpwdhoặcKeyErrornếu cơ sở dữ liệu mật khẩu trống.bpo-34321:
mmap.mmaphiện có tham số trackfd trên Unix; nếu làFalse, bộ mô tả tệp được chỉ định bởi fileno sẽ không bị trùng lặp.bpo-35332: Chức năng
shutil.rmtree()hiện bỏ qua lỗi khi gọios.close()khi ignore_errors làTruevàos.close()không còn thử lại sau khi gặp lỗi.bpo-35928:
io.TextIOWrapperhiện xử lý chính xác bộ đệm giải mã sauread()vàwrite().bpo-26791:
shutil.move()hiện di chuyển một liên kết tượng trưng vào một thư mục khi thư mục đó là mục tiêu của liên kết tượng trưng. Điều này cung cấp hành vi tương tự như lệnh mv shell. Hành vi trước đó đã đưa ra một ngoại lệ. Bản vá của Jeffrey Kintscher.bpo-41422: Đã sửa lỗi rò rỉ bộ nhớ của
pickle.Picklervàpickle.Unpicklerliên quan đến các tham chiếu tuần hoàn thông qua ánh xạ ghi nhớ nội bộ.bpo-19821: Chức năng
pydoc.ispackage()không còn được dùng nữa.bpo-40262: Phương thức
ssl.SSLSocket.recv_into()không còn yêu cầu đối số buffer để triển khai__len__và hỗ trợ bộ đệm với kích thước mục tùy ý.bpo-39912:
warnings.filterwarnings()vàwarnings.simplefilter()hiện đưa ra các ngoại lệ thích hợp thay vìAssertionError. Bản vá được đóng góp bởi Rémi Lapeyre.bpo-37260: Đã khắc phục tình trạng tương tranh trong
shutil.rmtree()trong đó các mục nhập thư mục bị xóa bởi một tiến trình hoặc luồng khác trong khishutil.rmtree()đang chạy có thể khiến nó tăng FileNotFoundError. Bản vá của Jeffrey Kintscher.bpo-36959: Sửa một số thông báo lỗi cho các kết hợp chuỗi định dạng ISO không hợp lệ trong
strptime()tham chiếu đến các lệnh không có trong chuỗi định dạng. Bản vá của Gordon P. Hemsley.bpo-18060: Đã khắc phục sự cố kế thừa lớp có thể gây ra lỗi phân tách khi lấy hai hoặc nhiều cấp độ lớp con từ lớp cơ sở là Cấu trúc hoặc Liên minh.
bpo-29779: Thêm biến môi trường
PYTHON_HISTORYmới để đặt vị trí của tệp.python_history.bpo-21360:
mailbox.Maildirhiện bỏ qua các tệp có dấu chấm ở đầu.
Tài liệu¶
gh-111699: Chuyển thông báo ngừng sử dụng
smtpdsang phần riêng thay vì dướilocaletrong tài liệu Có gì mới trong Python 3.12gh-110746: Đánh dấu được cải thiện cho các tùy chọn/giá trị hợp lệ cho các phương thức ttk.treeview.column và ttk.treeview.heading cũng như cho Bố cục.
gh-95649: Tài liệu cho thấy mô-đun
asynciochứa mã lấy từ v0.16.0 of the uvloop project, cũng như thông tin cấp phép MIT bắt buộc.
Kiểm tra¶
gh-111798: Vô hiệu hóa
test_super_deep()khỏitest_calltrong bản dựng pydebug trên WASI; độ sâu ngăn xếp quá nhỏ để làm cho việc kiểm tra trở nên hữu ích.gh-111801: Hạ giới hạn đệ quy trong
test_isinstancechotest_infinitely_many_bases(). Điều này ngăn chặn tình trạng tràn ngăn xếp trên bản dựng pydebug của WASI.gh-111802: Chỉ định độ sâu đệ quy thấp cho
test_bad_getattr()trongtest.pickletesterđể tránh làm cạn kiệt ngăn xếp trong bản dựng pydebug cho WASI.gh-44626: Sửa lỗi
os.path.isabs()trả vềTruekhông chính xác khi được cung cấp một đường dẫn bắt đầu bằng chính xác một dấu gạch chéo (trở lại) trên Windows.Sửa lỗi
pathlib.PureWindowsPath.is_absolute()trả vềFalsekhông chính xác cho một số đường dẫn bắt đầu bằng hai dấu gạch chéo (trở lại).gh-113633: Sử dụng trạng thái mô-đun cho mô-đun mở rộng _testcapi.
gh-109980: Sửa
test_tarfile_vs_tartrongtest_shutilcho macOS, trong đó tar hệ thống có thể bao gồm nhiều thông tin trong kho lưu trữ hơnshutil.make_archive.gh-112769: Các bài kiểm tra hiện so sánh chính xác phiên bản zlib khi
zlib.ZLIB_RUNTIME_VERSIONchứa hậu tố không nguyên. Ví dụ zlib-ng định nghĩa phiên bản là1.3.0.zlib-ng.gh-112334: Thêm kiểm tra hồi quy để xác minh rằng
vfork()được sử dụng khi đượcsubprocessmong đợi trên các hệ thống POSIX hỗ trợ vfork (Linux).gh-108927: Đã sửa lỗi phụ thuộc thứ tự khi chạy thử nghiệm trong cùng một quy trình khi một thử nghiệm có mô-đun con (ví dụ: test_importlib) theo sau một thử nghiệm nhập mô-đun con của nó (ví dụ: test_importlib.util) và đi trước một thử nghiệm (ví dụ: test_unittest hoặc test_compileall) sử dụng mô-đun con đó.
bpo-40648: Kiểm tra các chế độ mà tệp có thể nhận được bằng chmod() trên Windows.
xây dựng¶
gh-114013: Sửa
Tools/wasm/wasi.pyđể không bao gồm đường dẫn đếnpython.wasmnhư một phần củaHOSTRUNNER. Biến môi trường nhằm chỉ định cách chỉ chạy máy chủ WASI, cópython.wasmvà các cờ có liên quan được thêm vàoHOSTRUNNER. Điều này khắc phục công việc củamake test.gh-113258: Đã thay đổi bản dựng Windows để ghi các mô-đun cố định được tạo vào cây bản dựng thay vì cây nguồn.
gh-112305: Đã sửa bước
check-clean-srcđược thực hiện trên các bản dựng ngoài cây để phát hiện các tệp$(srcdir)/Python/frozen_modules/*.hbị lỗi và đề xuất các bước dọn dẹp cây nguồn thích hợp để bản dựng hoạt động trở lại.gh-112536: Thêm hỗ trợ cho việc khử trùng luồng (TSAN)
gh-112867: Sửa bản dựng cho trường hợp đã đặt WITH_PYMALLOC_RADIX_TREE=0.
gh-103065: Giới thiệu
Tools/wasm/wasi.pyđể đơn giản hóa việc xây dựng WASI.bpo-11102: Các chức năng
os.major(),os.makedev()vàos.minor()hiện có sẵn trên HP-UX v3.bpo-36351: Không đặt ipv6type khi biên dịch chéo.
cửa sổ¶
gh-114096: Các đặc quyền của quy trình được kích hoạt để tạo các mối nối thư mục hiện được khôi phục sau đó, tránh các thay đổi hành vi trong các phần khác của chương trình.
gh-111877: lệnh gọi
os.stat()trả về giá trị thời gian không chính xác cho các tệp không thể truy cập trực tiếp.gh-111973: Cập nhật trình cài đặt Windows để sử dụng SQLite 3.44.2.
gh-113009:
multiprocessing: Trên Windows, khắc phục tình trạng chủng tộc trongProcess.terminate(): không còn đặt thuộc tínhreturncodeđể luôn gọiWaitForSingleObject()trongProcess.wait(). Trước đây, đôi khi quá trình này vẫn chạy sauTerminateProcess()ngay cả khiGetExitCodeProcess()không phải làSTILL_ACTIVE. Bản vá của Victor Stinner.gh-86179: Sửa lỗi tính toán đường dẫn khi khởi chạy Python trên Windows thông qua liên kết tượng trưng.
gh-71383: Cập nhật Tcl/Tk trong trình cài đặt Windows lên 8.6.13 bằng bản vá để chặn các cảnh báo ThemeChanged không chính xác.
gh-111650: Đảm bảo biến tiền xử lý
Py_GIL_DISABLEDđược xác định trongpyconfig.hđể các mô-đun mở rộng được viết bằng C có thể sử dụng nó.gh-112278: Giảm chi phí thời gian cho một số chức năng trong
platformtrên Windows nếu người dùng hiện tại không có quyền đối với WMI.gh-73427: Không dùng nữa
sys._enablelegacywindowsfsencoding(). Thay vào đó hãy sử dụngPYTHONLEGACYWINDOWSFSENCODING. Bản vá của Inada Naoki.gh-87868: Sắp xếp và loại bỏ chính xác các biến môi trường trùng lặp trong
_winapi.CreateProcess().bpo-37308: Sửa mojibake trong
mmap.mmapkhi sử dụng đối số không phải ASCII tagname trên Windows.
macOS¶
gh-113666: Thêm các hằng số sau vào mô-đun
stat:UF_SETTABLE,UF_TRACKED,UF_DATAVAULT,SF_SUPPORTED,SF_SETTABLE,SF_SYNTHETIC,SF_RESTRICTED,SF_FIRMLINKvàSF_DATALESS. Các giá trịUF_SETTABLE,SF_SUPPORTED,SF_SETTABLEvàSF_SYNTHETICchỉ khả dụng trên macOS.gh-113536:
os.waitid()hiện đã có trên macOSgh-110459: Chạy
configure ... --with-openssl-rpath=X/Y/Zkhông còn bị lỗi phát hiện OpenSSL trên macOS nữa.gh-74573: Tài liệu cho thấy
dbm.ndbmcó thể âm thầm làm hỏng các tệp DBM trên các bản cập nhật khi vượt quá giới hạn nền tảng không có giấy tờ và có thể gặp sự cố (lỗi phân đoạn) khi đọc tệp bị hỏng như vậy. (FB8919203)gh-65701: Công cụ freeze không hoạt động với các bản dựng khung của Python. Hãy ghi lại điều này và thoát ra sớm khi chạy công cụ với bản dựng như vậy.
gh-87277: webbrowser: Đừng tìm trình duyệt X11 trên macOS. Những thứ đó thường không được sử dụng và việc tìm kiếm chúng có thể dẫn đến việc khởi động XQuartz ngay cả khi nó không được sử dụng theo cách khác.
gh-111973: Cập nhật trình cài đặt macOS để sử dụng SQLite 3.44.2.
gh-108269: Đặt
CFBundleAllowMixedLocalizationsthành true trong Info.plist cho khung, nhúng Python.app và IDLE.app khi cài đặt khung trên macOS. Điều này cho phép các ứng dụng chọn ngôn ngữ ưa thích của người dùng khi ngôn ngữ đó khác với tiếng Anh.gh-102362: Đảm bảo kết quả của
sysconfig.get_plaform()bao gồm ít nhất một phiên bản chính và phụ, ngay cả khiMACOSX_DEPLOYMENT_TARGETđược đặt thành chỉ một phiên bản chính trong quá trình xây dựng để phù hợp với định dạng mà pip mong đợi.gh-110017: Vô hiệu hóa bài kiểm tra căng thẳng xử lý tín hiệu trên macOS do lỗi trong macOS (FB13453490).
gh-110820: Đảm bảo các định nghĩa tiền xử lý cho
ALIGNOF_MAX_ALIGN_T,SIZEOF_LONG_DOUBLEvàHAVE_GCC_ASM_FOR_X64là chính xác cho các bản dựng Universal 2 trên macOS.gh-109981: Sử dụng
/dev/fdtrên macOS để xác định số lượng tệp đang mở trongtest.support.os_helper.fd_countnhằm tránh sự cố với bộ mô tả tệp "được bảo vệ" khi thăm dò các tệp đang mở.
IDLE¶
gh-72284: Cải thiện danh sách các tính năng, liên kết phím soạn thảo và tổ hợp phím shell trong tài liệu IDLE.
gh-113903: Khắc phục lỗi hiếm gặp của test.test_idle, trong test_configdialog.
gh-113729: Sửa lỗi menu "Trợ giúp -> IDLE Doc" trong 3.11.7 và 3.12.1.
gh-113269: Sửa lỗi test_editor bị treo trên macOS Catalina.
gh-112898: Sửa lỗi xử lý file chưa lưu khi thoát IDLE trên macOS.
bpo-13586: Nhập văn bản đã chọn khi mở hộp thoại "Thay thế".
C API¶
gh-106560: Sửa các khai báo thừa trong C API công khai. Chỉ khai báo PyBool_Type, PyLong_Type và PySys_Audit() một lần. Bản vá của Victor Stinner.
gh-112438: Khắc phục sự hỗ trợ của các đơn vị định dạng "es", "et", "es#" và "et#" trong các bộ dữ liệu lồng nhau trong các hàm giống
PyArg_ParseTuple().gh-111545: Thêm hàm
Py_HashPointer()để băm một con trỏ. Bản vá của Victor Stinner.gh-65210: Thay đổi khai báo tham số keywords của
PyArg_ParseTupleAndKeywords()vàPyArg_VaParseTupleAndKeywords()để tương thích tốt hơn với C++.
Python 3.13.0 alpha 2¶
Release date: 2023-11-22
Cốt lõi và nội dung¶
gh-112243: Không đưa nhận xét vào biểu thức gỡ lỗi chuỗi f. Bản vá của Pablo Galindo
gh-112287: Tối ưu hóa một chút trình thông dịch Cấp 2 (uop) bằng cách chỉ tải
opargvàoperandkhi cần. Đồng thời tăng gấp đôi giới hạn kích thước dấu vết một lần nữa, lên 512 lần này.gh-112266: Thay đổi chuỗi tài liệu của
__dict__và__weakref__.gh-111807: Giảm độ sâu ngăn xếp trình phân tích cú pháp tối đa xuống 1000 trong các bản dựng gỡ lỗi WASI.
gh-111798: Khi Python được xây dựng ở chế độ gỡ lỗi, hãy đặt giới hạn đệ quy C thành 500 thay vì 1500. Bản dựng gỡ lỗi có thể được xây dựng với mức tối ưu hóa thấp, ngụ ý mức sử dụng bộ nhớ ngăn xếp cao hơn bản dựng phát hành. Bản vá của Victor Stinner.
gh-106529: Cho phép dịch
FOR_ITERkhông chuyên biệt sang Cấp 2.gh-111916: Làm cho các mô-đun liên quan đến hashlib an toàn theo luồng mà không cần GIL
gh-81137: Không dùng nữa việc gán cho trường
__code__của hàm khi đối tượng mã mới thuộc loại không khớp (ví dụ: từ trình tạo đến hàm đơn giản).gh-79932: Đưa ra ngoại lệ nếu
frame.clear()được gọi trên khung treo.gh-81925: Triển khai id luồng gốc cho GNU KFreeBSD.
gh-111843: Sử dụng thời gian chờ theo cấp số nhân để giảm hơn 99% số lần thử tối ưu hóa cấp 2 không thành công.
gh-110829: Việc tham gia một chuỗi bây giờ đảm bảo rằng chuỗi hệ điều hành cơ bản đã thoát. Điều này là cần thiết để fork() an toàn hơn trong các quy trình đa luồng.
gh-109369: Đảm bảo rằng dấu vết cấp 2 không được tối ưu hóa nếu mã được đo lường
gh-111772: Chuyên tải và lưu trữ vị trí cho _Py_T_OBJECT cũng như Py_T_OBJECT_EX
gh-111666: Tăng tốc
BaseExceptionGroup.derive(),BaseExceptionGroup.subgroup()vàBaseExceptionGroup.split()bằng cách thay đổi cách chúng phân tích các đối số được truyền.gh-111654: Khắc phục sự cố khi chạy khi xảy ra một số lỗi trong opcode
LOAD_FROM_DICT_OR_DEREF.gh-111623: Thêm hỗ trợ chia sẻ bộ dữ liệu giữa các trình thông dịch bằng cách sử dụng trình thông dịch chéo API. Bản vá của Anthony Shaw.
gh-111354: Oparg của
YIELD_VALUEbây giờ là1nếu lệnh là một phần của kết quả thu được hoặc đang chờ và0nếu ngược lại.Trạng thái khung SUSPENDED hiện được chia thành
SUSPENDEDvàSUSPENDED_YIELD_FROM. Điều này giúp đơn giản hóa mã trong_PyGen_yf.gh-111520: Hợp nhất các trình thông dịch Cấp 1 (mã byte) và Cấp 2 (micro-ops) lại với nhau, di chuyển vòng lặp trình thông dịch Cấp 2 và chuyển sang
_PyEval_EvalFrameDefault()trongPython/ceval.c. TệpPython/executor.cđã biến mất. Ngoài ra, các macroTIER_ONEvàTIER_TWOhiện được xử lý bởi trình tạo mã.Beware! Điều này thay đổi các biến môi trường để kích hoạt các micro-op và việc gỡ lỗi của chúng thành
PYTHON_UOPSvàPYTHON_LLTRACE.gh-109181: Tăng tốc độ tạo đối tượng
Tracebackbằng cách tính toán số dòng một cách lười biếng. Bản vá của Pablo Galindogh-111420: Cho phép nhập nhận xét trong câu lệnh
withđược ngoặc đơngh-111438: Thêm hỗ trợ chia sẻ float giữa các trình thông dịch bằng cách sử dụng trình thông dịch chéo API. Bản vá của Anthony Shaw.
gh-111435: Thêm hỗ trợ chia sẻ
TruevàFalsegiữa các trình thông dịch bằng cách sử dụng trình thông dịch chéo API. Bản vá của Anthony Shaw.gh-102388: Sửa lỗi khiến codec
iso2022_jp_3vàiso2022_jp_2004đọc vượt quá giới hạngh-111366: Khắc phục sự cố trong
codeopgây ra ngoại lệSyntaxErrorkhi có cú pháp không hợp lệ để không chứa thông báo lỗi chính xác. Bản vá của Pablo Galindogh-111380: Sửa lỗi khiến
SyntaxWarningxuất hiện hai lần khi phân tích cú pháp nếu sau này gặp phải cú pháp không hợp lệ. Bản vá của Pablo galindogh-111374: Đã thêm biến môi trường mới
PYTHON_FROZEN_MODULES. Nó xác định xem các mô-đun cố định có bị bộ máy nhập bỏ qua hay không, tương đương với tùy chọn dòng lệnh-X frozen_modules.gh-111354: Xóa
opargkhỏiYIELD_VALUE. Thay đổiopargcủaRESUMEđể bao gồm thông tin về độ sâu ngoại trừ. Những thay đổi này giúp đơn giản hóa mã khi đóng trình tạo.gh-94438: Khắc phục lỗi hồi quy ngăn việc nhảy qua
is Nonevàis not Nonekhi gỡ lỗi. Bản vá của Savannah Ostrowski.gh-67224: Hiển thị các dòng nguồn trong dấu vết khi sử dụng tùy chọn
-ckhi chạy Python. Bản vá của Pablo Galindogh-111123: Khắc phục lỗi trong đó khai báo
globaltrong khốiexceptbị từ chối khi toàn cầu được sử dụng trong khốielse.gh-110938: Sửa thông báo lỗi cho các khối thụt lề với các hàm và lớp có tham số loại chung. Bản vá của Pablo Galindo
gh-109214: Xóa các cập nhật con trỏ lệnh không cần thiết trước khi quay lại từ khung.
gh-110912: Hiển thị chính xác dấu vết cho các ngoại lệ
MemoryErrorbằng mô-đuntraceback. Bản vá của Pablo Galindogh-109894: Đã khắc phục sự cố do
MemoryErrortĩnh được khởi tạo không đúng cách trong trình thông dịch phụ.gh-110892: Trả về
NULLcho các sự kiệnPyTrace_RETURNdo ngoại lệ gây ragh-110864: Sửa lỗi phân tích cú pháp đối số bằng
_PyArg_UnpackKeywordsWithVarargcho các hàm xác định tham số pos-or-keyword, vararg và chỉ kw.gh-109094: Thay thế
prev_instrtrên khung trình thông dịch bằnginstr_ptrtrỏ đến phần đầu của lệnh hiện đang thực thi (hoặc sẽ thực thi khi khung tiếp tục lại).gh-110805: Cho phép người thay thế hiển thị mã nguồn và truy nguyên hoàn toàn. Bản vá của Pablo Galindo
gh-110722: Thêm
PYTHON_PRESITE=package.moduleđể sớm nhập mô-đun trong vòng đời của trình thông dịch trước khisite.pyđược thực thi. Python cần phải là built in debug mode để tùy chọn này tồn tại.gh-110481: Triển khai tính năng đếm tham chiếu sai lệch trong các bản dựng
--disable-gil.gh-110543: Khắc phục sự hồi quy trong Python 3.12 trong đó
types.CodeType.replace()sẽ tạo ra một đối tượng mã bị hỏng nếu được gọi trên một đối tượng mã mô-đun hoặc lớp có chứa khả năng hiểu. Bản vá của Jelle Zijlstra.gh-89519: Đã xóa các bộ mô tả
classmethodcó chuỗi (được giới thiệu trong bpo-19072). Điều này không còn có thể được sử dụng để bao bọc các bộ mô tả khác nhưproperty. Thiết kế cốt lõi của tính năng này có sai sót và gây ra một số vấn đề về sau. Để "chuyển qua"classmethod, hãy cân nhắc sử dụng thuộc tính__wrapped__đã được thêm vào Python 3.10.gh-103615: Sử dụng các sự kiện cục bộ để theo dõi opcode
bpo-46657: Thêm hỗ trợ cấp phát bộ nhớ mimalloc.
gh-106718: Khi PyConfig.stdlib_dir được đặt rõ ràng, giờ đây nó được tôn trọng và sẽ không bị PyConfig.home ghi đè.
gh-106905: Sửa lỗi SystemError không chính xác về độ sâu đệ quy của hàm tạo AST không khớp.
gh-100445: Cải thiện thông báo lỗi cho các chuỗi bị kết thúc có lối thoát.
bpo-45759: Cải thiện thông báo lỗi cho các câu lệnh
elif/elsekhông khớp với bất kỳ câu lệnh hợp lệ nào. Bản vá của Jeremiah Vivian.
Thư viện¶
gh-111942: Sửa SystemError trong hàm tạo TextIOWrapper với đối số "lỗi" không thể mã hóa ở chế độ không gỡ lỗi.
gh-111995: Đã thêm hằng số
NI_IDNvào mô-đunsocketkhi có trong C tại thời điểm xây dựng để sử dụng vớisocket.getnameinfo().gh-109538: Đưa ra thông báo cảnh báo thay vì hiển thị
RuntimeErrorkhi vòng lặp sự kiện đã được đóng tạiStreamWriter.__del__().gh-111942: Khắc phục sự cố trong
io.TextIOWrapper.reconfigure()khi truyền đối số không hợp lệ, ví dụ: mã hóa không phải chuỗi.gh-111460:
curses: khôi phục hỗ trợ ký tự rộng (bao gồmcurses.unget_wch()vàget_wch()) trên macOS, vốn không khả dụng do hồi quy trong Python 3.12.gh-103791:
contextlib.suppresshiện hỗ trợ loại bỏ các ngoại lệ được đưa ra như một phần củaBaseExceptionGroup, ngoài sự hỗ trợ gần đây choExceptionGroup.gh-111835: Lớp
mmap.mmaphiện có phương thứcseekable()có thể được sử dụng khi cần một đối tượng giống như tệp có thể tìm kiếm được. Phương thứcseek()hiện trả về vị trí tuyệt đối mới. Bản vá của Donghee Na.gh-111804: Xóa posix.fallocate() trong WASI vì posix_fallocate() cơ bản không có sẵn trong bản xem trước WASI2.
gh-111841: Sửa lỗi cắt ngắn các đối số trên ký tự null được nhúng trong
os.putenv()vàos.unsetenv()trên Windows.gh-111768:
wsgiref.util.is_hop_by_hop()hiện được hiển thị chính xác trong__all__.gh-80731: Tránh thực thi chức năng mặc định trong
cmd.Cmdtrong khối ngoại trừgh-111541: Sửa
doctestcho các lớp conSyntaxErrorkhông được tích hợp sẵn.gh-111719: Thêm xác thực đối số bổ sung cho lệnh
aliastrongpdbgh-111482:
time: Làm cho các chức năngtime.clock_gettime()vàtime.clock_gettime_ns()nhanh hơn gấp 2 lần bằng quy ước gọi nhanh hơn. Bản vá của Victor Stinner.gh-110894: Gọi trình xử lý ngoại lệ vòng lặp cho các ngoại lệ trong
client_connected_cbcủaasyncio.start_server()để ứng dụng có thể xử lý. Bản vá của Kumar Aditya.gh-111531: Khắc phục rò rỉ tham chiếu trong phương thức
bind_class()vàbind_all()của widgettkinter.gh-111246:
asyncio.loop.create_unix_server()bây giờ sẽ tự động xóa ổ cắm Unix khi máy chủ đóng.gh-111356: Đã thêm
io.text_encoding(),io.DEFAULT_BUFFER_SIZEvàio.IncrementalNewlineDecodervàoio.__all__.gh-66425: Xóa mã để đặt tiêu đề REMOTE_HOST khỏi mô-đun wsgiref vì không thể truy cập được. Tiêu đề này được sử dụng vì lý do hiệu suất, điều này không cần thiết trong mô-đun wsgiref.
gh-111429: Tăng tốc
pathlib.PurePath.relative_to()vàis_relative_to().gh-111342: Đã sửa lỗi chính tả trong
math.sumprod().gh-68166: Xóa đề cập đến loại phần tử "vsapi" không được hỗ trợ trong
tkinter.ttk.Style.element_create(). Thêm thử nghiệm choelement_create()và các phương phápttk.Stylekhác. Thêm ví dụ vềelement_create()trong tài liệu.gh-111388: Thêm tham số
show_groupvàotraceback.format_exception_only(), cho phép định dạng các phiên bảnExceptionGroup.gh-79033: Một nỗ lực khác nhằm sửa lỗi
asyncio.Server.wait_closed(). Bây giờ nó sẽ chặn cho đến khi cả hai điều kiện đều đúng: máy chủ đã đóng, and không còn kết nối nào hoạt động nữa. (Điều này có nghĩa là trong một số trường hợp ở 3.12.0, chức năng này incorrectly đã quay trở lại ngay lập tức, giờ đây nó sẽ chặn; đặc biệt, khi không có kết nối nào đang hoạt động nhưng máy chủ vẫn chưa bị đóng.)gh-111259: Tối ưu hóa các ký tự đại diện đệ quy trong
pathlib.gh-111253: Thêm tính năng kiểm tra lỗi trong quá trình khởi tạo mô-đun
_socket.gh-111251: Sửa lỗi
_blake2không kiểm tra lỗi khi khởi tạo.gh-111174: Khắc phục sự cố trong
io.BytesIO.getbuffer()được gọi liên tục đối với ByteIO trống.gh-111187: Hoãn phiên bản xóa locale.getdefaultlocale() sang Python 3.15.
gh-111159: Sửa lỗi so sánh đầu ra
doctestđối với các ngoại lệ có ghi chú.gh-110910: Sửa lỗi xử lý trạng thái không hợp lệ trong
asyncio.TaskGroupvàasyncio.Timeout. Bây giờ, chúng sẽ đưa ra RuntimeError thích hợp nếu chúng được sử dụng không đúng cách và vẫn ở trạng thái nhất quán sau đó.gh-111092: Chạy Turtledemo mà không bật root mặc định.
gh-110944: Hỗ trợ bí danh và các biến tiện lợi để hoàn thành
pdbgh-110745: Đã thêm tham số newline vào
pathlib.Path.read_text(). Bản vá của Junya Okabe.gh-84583: Đặt
pdbvào chế độ khám nghiệm tử thi ngay cả đối vớiSyntaxErrorgh-80675: Đặt
f_trace_lines = Truetrên tất cả các khung hình trênpdb.set_trace()gh-110771: Hiển thị các phần thiết lập và dọn dẹp của
asyncio.run_forever()dưới dạng các phương thức độc lậpasyncio.run_forever_setup()vàasyncio.run_forever_cleanup(). Điều này cho phép tích hợp chặt chẽ hơn với các vòng lặp sự kiện GUI.gh-110774: Hỗ trợ cài đặt
asyncio.Runnerloop_factory kwarg trongunittest.IsolatedAsyncioTestCasegh-110392: Sửa lỗi
tty.setraw()vàtty.setcbreak(): trước đó chúng đã trả về danh sách được sửa đổi một phần của các thuộc tính tty ban đầu.tty.cfmakeraw()vàtty.cfmakecbreak()hiện tạo một bản sao của danh sách các ký tự đặc biệt trước khi sửa đổi nó.gh-59013: Làm cho số dòng của điểm dừng hàm chính xác hơn trong
pdbgh-88434: Đưa ra cảnh báo không dùng nữa đối với các số không nguyên trong các hàm và phương thức
gettextxem xét dạng số nhiều ngay cả khi không tìm thấy bản dịch.gh-110395: Đảm bảo rằng các đối tượng
select.kqueue()xuất hiện chính xác dưới dạng đóng trong các phần tử con được phân nhánh, để ngăn các thao tác trên bộ mô tả tệp không hợp lệ.gh-110196: Thêm phương thức
__reduce__vàoIPv6Addressđể giữscope_idgh-109747: Cải thiện lỗi cho các mẫu nhìn phía sau không được hỗ trợ. Bây giờ re.error được nâng lên thay vì OverflowError hoặc RuntimeError vì chiều rộng của mẫu nhìn phía sau quá lớn.
gh-109466: Thêm thuộc tính
ipaddress.IPv4Address.ipv6_mapped, thuộc tính này trả về địa chỉ IPv6 được ánh xạ IPv4.gh-85098: Triển khai CLI của mô-đun
symtablevà cải thiện repr củaSymbol.gh-108791: Cải thiện khả năng xử lý lỗi trong giao diện dòng lệnh
pdb, giúp giao diện này tạo ra các thông báo lỗi ngắn gọn hơn.gh-105931: Thay đổi
compileallđể chỉ loại bỏ tiền tố Stripdir khỏi đường dẫn đầy đủ được ghi trong tệp.pycđã biên dịch, khi tiền tố khớp toàn bộ với phần đầu của đường dẫn đầy đủ. Khi tiền tố không khớp, việc loại bỏ sẽ không được thực hiện và cảnh báo về hiệu ứng này sẽ được hiển thị.Trước đây, tất cả các thành phần đường dẫn của tiền tố Stripdir khớp với đường dẫn đầy đủ đã bị xóa, trong khi những thành phần không khớp sẽ được giữ nguyên (bao gồm cả những thành phần nằm xen kẽ giữa các thành phần khớp).
gh-107431: Tạo các loại
DictProxyvàListProxytrongmultiprocessing.managersGeneric Alias Types để[]sử dụng trong ngữ cảnh gõ.gh-72904: Thêm
glob.translate(). Hàm này chuyển đổi tên đường dẫn có ký tự đại diện kiểu shell thành biểu thức chính quy.gh-90026: Xác định
USE_XATTRStrên Cygwin để các chức năng liên quan đến XATTR trong mô-đunoscó sẵn.gh-90890: Phương pháp mới
mailbox.Maildir.get_info(),mailbox.Maildir.set_info(),mailbox.Maildir.get_flags(),mailbox.Maildir.set_flags(),mailbox.Maildir.add_flag(),mailbox.Maildir.remove_flag(). Các phương pháp này tăng tốc độ truy cập vào thông tin và/hoặc cờ của thư và rất hữu ích khi không cần truy cập vào nội dung của thư, như khi lặp qua Maildir để tìm thư có cờ cụ thể.gh-102956: Khắc phục việc trả về chuỗi byte trống sau khi tìm kiếm trong mô-đun zipfile
gh-102895: Đã thêm tham số
local_exitchocode.interact()để ngănexit()vàquitđóngsys.stdinvà tăngSystemExit.gh-97928: Thay đổi hành vi của
tkinter.Text.count(). Bây giờ nó luôn trả về một số nguyên nếu một hoặc ít tùy chọn đếm được chỉ định. Trước đây, nó có thể trả về một số đếm duy nhất dưới dạng 1 tuple, một số nguyên (chỉ khi tùy chọn"update"được chỉ định) hoặcNonenếu không tìm thấy mục nào. Kết quả bây giờ giống nhau nếuwantobjectsđược đặt thành0.gh-96954: Chuyển đổi bộ lưu trữ tên điểm mã unicode để sử dụng cấu trúc dữ liệu khác, directed acyclic word graph. Điều này làm cho thư viện chia sẻ unicodedata nhỏ hơn khoảng 440 KiB. Được đóng góp bởi Carl Friedrich Bolz-Tereick bằng cách sử dụng mã từ dự án PyPy.
gh-73561: Bỏ qua phạm vi giao diện khỏi địa chỉ IPv6 khi được
http.clientsử dụng làm tiêu đề Máy chủ.gh-86826:
zipinfohiện hỗ trợ đầy đủ các giá trị trong chuỗi TZ được xác định bởi RFC 8536 và phát hiện tất cả các định dạng không hợp lệ. Cả hai cách triển khai Python và C hiện đều đưa ra các ngoại lệ cùng loại trên dữ liệu không hợp lệ.
Kiểm tra¶
gh-111808: Đặt giá trị mặc định của
test.support.infinite_recursion()thành có điều kiện dựa trên việc có sử dụng tối ưu hóa khi biên dịch trình thông dịch hay không. Điều này hữu ích với các nền tảng như WASI có kích thước ngăn xếp bị hạn chế rất nhiều trong các bản dựng gỡ lỗi.gh-110722: Việc thu thập phạm vi dòng của các thư viện tiêu chuẩn trong bộ kiểm tra hồi quy giờ đây đã chính xác và nhanh hơn nhiều. Bản vá của Łukasz Langa.
gh-110367: Làm cho tùy chọn
--verbose3regrtest tương thích với các tùy chọn--huntrleaks -jN. Lệnh./python -m test -j1 -R 3:3 --verbose3hiện hoạt động như mong đợi. Bản vá của Victor Stinner.gh-111165: Xóa các hàm
run_unittest()vàrun_doctest()không còn được sử dụng khỏi mô-đuntest.support.gh-110932: Sửa lỗi regrtest nếu biến môi trường
SOURCE_DATE_EPOCHđược xác định: sử dụng giá trị biến làm hạt giống ngẫu nhiên. Bản vá của Victor Stinner.gh-110995: test_gdb: Sửa lỗi phát hiện gdb được xây dựng mà không hỗ trợ tập lệnh Python. Bản vá của Victor Stinner.
gh-110918: Các mẫu khớp trường hợp kiểm thử được chỉ định bởi các tùy chọn
--match,--ignore,--matchfilevà--ignorefilehiện được kiểm tra theo thứ tự đặc điểm kỹ thuật và kết quả khớp cuối cùng sẽ xác định xem trường hợp kiểm thử sẽ được chạy hay bị bỏ qua.gh-108747: Thêm bài kiểm tra đơn vị cho hook
usercustomizevàsitecustomizetừsite.
xây dựng¶
gh-96954: Làm cho
make regen-unicodedatahoạt động với các bản dựng CPython ngoài cây.gh-112088: Thêm tập lệnh
Tools/build/regen-configure.shđể tạo lạiconfigurebằng hình ảnh bộ chứa Ubuntu. Hình ảnh vùng chứaquay.io/tiran/cpython_autoconf:271(tiran/cpython_autoconf) không còn được sử dụng nữa. Bản vá của Victor Stinner.gh-111046: Đối với các luồng wasi, bộ nhớ hiện được xuất để khắc phục các sự cố tương thích với một số thời gian chạy wasm.
gh-110828: AIX 32bit cần
-latomicđể xây dựng mô-đun mở rộng_testcapi.gh-85283: Các tiện ích mở rộng
errno,md5,resource,winsound,_ctypes_test,_multiprocessing.posixshmem,_scproxy,_stat,_testimportmultiplevà_uuidC hiện được xây dựng cùng với limited C API. Bản vá của Victor Stinner.
cửa sổ¶
gh-111856: Sửa lỗi
fstat()trên hệ thống tệp không hỗ trợ yêu cầu ID tệp. Điều này bao gồm FAT32 và exFAT.gh-111293: Khắc phục
os.DirEntry.inodegiảm 64 bit id tệp cao hơn trên một số hệ thống tệp trên Windows.gh-110913: WindowsConsoleIO giờ đây đã phân chia chính xác các bộ đệm lớn mà không cần chia tách các chuỗi UTF-8.
macOS¶
gh-59703: Đối với các bản dựng khung macOS, trong
getpath.csử dụng hàmdladdrcủa hệ thống để tìm đường dẫn đến thư viện dùng chung thay vì phụ thuộc vào các API macOS không được dùng nữa.gh-110950: Cập nhật trình cài đặt macOS để bao gồm bản sửa lỗi Tcl/Tk ngược dòng cho cảnh báo
Secure coding is not enabled for restorable state!gặp phải trong Tkinter trên macOS 14 Sonoma.gh-111015: Đảm bảo rằng IDLE.app và Python Launcher.app được cài đặt với các quyền thích hợp trên các bản dựng macOS.
gh-71383: Cập nhật trình cài đặt macOS để bao gồm bản sửa lỗi Tcl/Tk ngược dòng cho lỗi
ttk::ThemeChangedgặp phải trong Tkinter.gh-92603: Cập nhật trình cài đặt macOS để bao gồm bản sửa lỗi được chấp nhận bởi Tcl/Tk ngược dòng đối với sự cố xảy ra sau khi phiên bản
tkinter.Tk()đầu tiên bị hủy.
IDLE¶
bpo-35668: Thêm chuỗi tài liệu vào mô-đun trình gỡ lỗi IDLE. Sửa hai lỗi: khởi tạo
Idb.botframe(phải ở Bdb); trongIdb.in_rpc_code, hãy kiểm tra xemprev_framecó phải làNonehay không trước khi thử sử dụng nó. Mở rộng đáng kể test_debugger.
Công cụ/Bản trình diễn¶
gh-111903: Argument Clinic hiện hỗ trợ chỉ thị
@critical_sectionhướng dẫn Argument Clinic tạo một phần quan trọng xung quanh lệnh gọi hàm, khóa đối tượngselftrong các bản dựng--disable-gil. Bản vá của Sam Gross.
C API¶
gh-112026: Thêm lại hàm
_PyThreadState_UncheckedGet()riêng tư làm bí danh cho hàmPyThreadState_GetUnchecked()công khai mới. Bản vá của Victor Stinner.gh-112026: Khôi phục chức năng
_PyDict_GetItemStringWithError()đã bị xóa. Nó được sử dụng bởi numpy. Bản vá của Victor Stinner.gh-112026: Khôi phục các hàm, macro và cấu trúc C API riêng tư đã bị xóa mà hiện tại không có sự thay thế đơn giản nào:
_PyDict_GetItem_KnownHash()
_PyDict_NewPresized()
_PyHASH_BITS
_PyHASH_IMAG
_PyHASH_INF
_PyHASH_MODULUS
_PyHASH_MULTIPLIER
_PyLong_Copy()
_PyLong_FromDigits()
_PyLong_Mới()
_PyLong_Sign()
_PyObject_CallMethodId()
_PyObject_CallMethodNoArgs()
_PyObject_CallMethodOneArg()
_PyObject_CallOneArg()
_PyObject_EXTRA_INIT
_PyObject_FastCallDict()
_PyObject_GetAttrId()
_PyObject_Vectorcall()
_PyObject_VectorcallMethod()
_PyStack_AsDict()
_PyThread_CurrentFrames()
_Cấu trúc PyUnicodeWriter
_PyUnicodeWriter_Dealloc()
_PyUnicodeWriter_Finish()
_PyUnicodeWriter_Init()
_PyUnicodeWriter_Prepare()
_PyUnicodeWriter_PrepareKind()
_PyUnicodeWriter_WriteASCIIString()
_PyUnicodeWriter_WriteChar()
_PyUnicodeWriter_WriteLatin1String()
_PyUnicodeWriter_WriteStr()
_PyUnicodeWriter_WriteSubstring()
_PyUnicode_AsString()
_PyUnicode_FromId()
_PyVectorcall_Function()
_Py_IDENTIFIER()
_Py_c_abs()
_Py_c_diff()
_Py_c_neg()
_Py_c_pow()
_Py_c_prod()
_Py_c_quot()
_Py_c_sum()
_Py_static_string()
_Py_static_string_init()
Bản vá của Victor Stinner.
gh-112026: Thêm lại
<ctype.h>và<unistd.h>bao gồm trongPython.h, nhưng không đưa chúng vào phiên bản C API giới hạn 3.13 trở lên. Bản vá của Victor Stinner.gh-111956: Thêm khởi tạo một lần chỉ dành cho nội bộ API:
_PyOnceFlagvà_PyOnceFlag_CallOnce.gh-111262: Thêm chức năng
PyDict_Pop()vàPyDict_PopString(): xóa khóa khỏi từ điển và tùy ý trả về giá trị đã xóa. Điều này tương tự nhưdict.pop(), nhưng không có giá trị mặc định và không tăngKeyErrornếu thiếu khóa. Bản vá của Stefan Behnel và Victor Stinner.gh-111863: Đổi tên
Py_NOGILthànhPy_GIL_DISABLED. Bản vá của Hugo van Kemenade.gh-111138: Thêm hàm
PyList_Extend()vàPyList_Clear(): tương tự như phương thứclist.extend()vàlist.clear()của Python. Bản vá của Victor Stinner.gh-108765: Trên Windows,
Python.hkhông còn bao gồm tệp tiêu đề chuẩn<stddef.h>nữa. Nếu cần, bây giờ nó sẽ được đưa vào một cách rõ ràng. Bản vá của Victor Stinner.gh-111569: Triển khai "Các phần quan trọng của Python" từ PEP 703. Đây là các macro giúp thay thế GIL bằng khóa theo từng đối tượng trong bản dựng
--disable-gilcủa CPython. Các macro không hoạt động trong bản dựng mặc định.gh-111506: Trong phiên bản giới hạn C API 3.13, hàm
Py_SET_REFCNT()hiện được triển khai dưới dạng lệnh gọi hàm mờ. Bản vá của Victor Stinner.gh-108082: Thêm chức năng
PyErr_FormatUnraisable().gh-110964: Di chuyển các hàm _PyArg riêng tư không có giấy tờ và cấu trúc _PyArg_Parser sang C API (
pycore_modsupport.h) nội bộ. Bản vá của Victor Stinner.gh-110815: Hỗ trợ tên từ khóa không phải ASCII trong
PyArg_ParseTupleAndKeywords().gh-109587: Giới thiệu
PyUnstable_PerfTrampoline_CompileCode(),PyUnstable_PerfTrampoline_SetPersistAfterFork()vàPyUnstable_CopyPerfMapFile(). Các chức năng này cho phép các mô-đun mở rộng khởi tạo tấm bạt lò xo một cách háo hức sau khi ứng dụng được "khởi động". Điều này giúp cho các tấm bạt lò xo hoàn hảo có thể chạy theo kiểu luôn được kích hoạt.gh-85283: Thêm chức năng
PySys_Audit()vào C API bị giới hạn. Bản vá của Victor Stinner.gh-85283: Thêm
PyMem_RawMalloc(),PyMem_RawCalloc(),PyMem_RawRealloc()vàPyMem_RawFree()vào C API giới hạn. Bản vá của Victor Stinner.gh-106672: Các hàm
PyDict_GetItem(),PyDict_GetItemString(),PyMapping_HasKey(),PyMapping_HasKeyString(),PyObject_HasAttr(),PyObject_HasAttrString()vàPySys_GetObject(), xóa tất cả các lỗi xảy ra trong khi gọi hàm, báo cáo ngay bằngsys.unraisablehook().gh-67565: Loại bỏ kiểm tra liên tục C dư thừa trong
getargs.c,binascii,sslvà Argument Clinic. Được vá bởi Stefan Krah và Furkan Onder
Python 3.13.0 alpha 1¶
Release date: 2023-10-13
Bảo mật¶
gh-108310: Đã khắc phục sự cố trong đó các phiên bản của
ssl.SSLSocketdễ bị bỏ qua quá trình bắt tay TLS và bao gồm các biện pháp bảo vệ (như xác minh chứng chỉ) và xử lý dữ liệu không được mã hóa đã gửi như thể đó là dữ liệu được mã hóa sau TLS. Sự cố bảo mật được Aapo Oksman báo cáo là CVE 2023-40217. Bản vá của Gregory P. Smith.gh-107774: PEP 669 chỉ định rằng
sys.monitoring.register_callbacksẽ tạo ra một sự kiện kiểm tra. Các bản phát hành trước của Python 3.12 không tạo ra sự kiện kiểm tra. Điều này hiện đã được sửa.gh-102988: Hoàn nguyên thay đổi cải tiến bảo mật
email.utilsđược phát hành trong 3.12beta4 đã vô tình khiếnemail.utils.getaddresseskhông thể phân tích cú pháp địa chỉ email bằng dấu phẩy trong trường tên được trích dẫn. Xem gh-106669.gh-99108: Làm mới mã
hashlibtích hợp HACL* mới của chúng tôi từ thượng nguồn. SHA2 tích hợp sẽ nhanh hơn và sự cố với SHA3 trên nền tảng 32-bit đã được khắc phục.gh-102509: Bắt đầu khởi tạo
ob_digittrong quá trình tạo đối tượngPyLongObject. Bản vá của Illia Volochii.
Cốt lõi và nội dung¶
gh-110782: Khắc phục sự cố khi
typing.TypeVarđược tạo bằng đối số từ khóa. Bản vá của Jelle Zijlstra.gh-110752: Đặt lại
ceval.eval_breakertronginterpreter_clear()gh-110721: Sử dụng triển khai
tracebackcho chức năngPyErr_Display()mặc định. Bản vá của Pablo Galindogh-110696: Sửa thông báo lỗi không chính xác khi giải nén đối số không hợp lệ. Bản vá của Pablo Galindo
gh-104169: Chia tokenizer thành hai thư mục riêng biệt: - Một phần bao gồm logic tạo từ vựng thực tế và tồn tại trong
Parser/lexer. - Phần thứ hai bao bọc lexer theo các chế độ mã thông báo khác nhau mà chúng tôi có (chuỗi, utf-8, tệp, tương tác, dòng đọc) và tồn tại trongParser/tokenizer.gh-110688: Xóa phương thức
test_c_apikhông có giấy tờ khỏiset, phương thức này chỉ được xác định cho mục đích thử nghiệm trongPy_DEBUG. Bây giờ chúng tôi có các bài kiểm tra CAPI thích hợp.gh-104584: Khắc phục rò rỉ tham chiếu khi chạy với
PYTHONUOPShoặc-X uopsđược bật.gh-110514: Thêm
PY_THROWvào sự kiệnsys.setprofile()gh-110489: Tối ưu hóa
math.ceil()khi đầu vào chính xác là float, dẫn đến cải thiện khoảng 10%.gh-110455: Bảo vệ
assert(tstate->thread_id > 0)bằng#ifndef HAVE_PTHREAD_STUBS. Điều này cho phép các bản dựng pydebug hoạt động theo WASI (hiện tại) thiếu hỗ trợ luồng.gh-110309: Loại bỏ các nút cố định trống không cần thiết trong thông số kỹ thuật chuỗi f.
gh-110259: Xác định chính xác thông số định dạng trong chuỗi f (có dấu ngoặc đơn hoặc dấu ngoặc kép) có nhiều dòng trong phần biểu thức và bao gồm thông số định dạng. Bản vá của Pablo Galindo
gh-110237: Sửa lỗi thiếu kiểm tra cuộc gọi tới
PyList_Appendtrong_PyEval_MatchClass.gh-110164: regrtest: Nếu biến môi trường
SOURCE_DATE_EPOCHđược xác định, regrtest hiện vô hiệu hóa ngẫu nhiên các thử nghiệm. Bản vá của Victor Stinner.gh-109889: Sửa thuật toán phát hiện NOP dư thừa của trình biên dịch để bỏ qua các NOP không có số dòng khi tìm kiếm dòng lệnh tiếp theo.
gh-109853:
sys.path[0]hiện được đặt chính xác cho trình thông dịch phụ.gh-109923: Đặt số dòng trên
POP_TOPtheo sauRETURN_GENERATOR.gh-105716: Trình thông dịch phụ hiện đã xử lý chính xác trường hợp có các luồng chạy trong nền. Trước đây, những luồng như vậy sẽ cản trở việc dọn dẹp và hủy chúng, cũng như ngăn chặn việc chạy một tập lệnh khác.
gh-109369: eval_breaker nội bộ và các cờ hỗ trợ, cùng với phiên bản giám sát đã được hợp nhất thành một số nguyên nguyên tử duy nhất để tăng tốc độ kiểm tra.
gh-109823: Sửa lỗi trình biên dịch không điều chỉnh nhãn khi xóa khối cơ bản trống là mục tiêu nhảy.
gh-109793: Luồng chính không còn thoát sớm khi trình thông dịch phụ được dọn sạch trong quá trình hoàn thiện thời gian chạy. Lỗi này đặc biệt là một vấn đề vì khi được kích hoạt, quy trình Python sẽ luôn trả về với mã thoát là 0, ngay cả khi nó không thành công.
gh-109719: Sửa lỗi thiếu nhãn mục tiêu nhảy khi trình biên dịch sắp xếp lại các khối lạnh/ấm.
gh-109595: Thêm tùy chọn dòng lệnh
-X cpu_countđể ghi đè kết quả trả về củaos.cpu_count()vàos.process_cpu_count(). Tùy chọn này hữu ích cho người dùng cần giới hạn tài nguyên CPU của hệ thống vùng chứa mà không phải sửa đổi vùng chứa (mã ứng dụng). Bản vá của Donghee Na.gh-109627: Sửa lỗi trong đó trình biên dịch không gán nhãn đích nhảy mới cho khối thoát nhỏ bị trùng lặp.
gh-109596: Sửa một số mã thông báo trong ngữ pháp bị đánh dấu không chính xác là từ khóa mềm. Đồng thời sửa một số tên quy tắc lặp lại và đảm bảo rằng các quy tắc lặp lại không được phép. Bản vá của Pablo Galindo
gh-109496: Trên Python được xây dựng ở chế độ gỡ lỗi,
Py_DECREF()hiện gọi_Py_NegativeRefcount()nếu đối tượng là một con trỏ lơ lửng tới bộ nhớ đã được giải phóng: bộ nhớ chứa đầy0xDD"byte chết" bằng móc gỡ lỗi trên bộ cấp phát bộ nhớ. Cách khắc phục là kiểm tra số tham chiếu before để tìm_Py_IsImmortal(). Bản vá của Victor Stinner.gh-107265: Deopt các opcode bị ẩn bởi người thực thi khi cần opcode cơ sở
gh-109371: Đã loại bỏ chính xác hướng dẫn khởi tạo công cụ và sửa đổi xác nhận không chính xác trong công cụ đo lường, khi công cụ trước đó đã đặt sự kiện INSTRUCTION
gh-105658: Sửa lỗi trong đó dấu vết dòng của khối ngoại trừ kết thúc bằng điều kiện bao gồm một sự kiện vượt quá dòng biểu thức điều kiện.
gh-109219: Sửa lỗi biên dịch phạm vi thông số loại sử dụng tên cũng miễn phí trong phạm vi bên trong.
gh-109351: Khắc phục sự cố khi biên dịch AST không hợp lệ liên quan đến biểu thức có tên (hải mã).
gh-109341: Khắc phục sự cố khi biên dịch AST không hợp lệ liên quan đến
ast.TypeAlias.gh-109195: Sửa vị trí nguồn cho lệnh
LOAD_*trướcLOAD_SUPER_ATTRđể tảisupertoàn cục (hoặc biến ẩn) để nó chỉ bao gồm tênsuperchứ không phải các dấu ngoặc đơn sau.gh-109256: ID opcode cho các opcode chuyên biệt được phân bổ trong phạm vi riêng của chúng để cải thiện tính ổn định của ID cho các opcode 'thực'.
gh-109207: Sửa lỗi SystemError trong
__repr__của đối tượng mục nhập có thể điều chỉnh được.gh-109179: Sửa lỗi hiển thị truy ngược C làm rơi ghi chú từ
SyntaxError.gh-109118: Không cho phép các phạm vi lồng nhau (lambda, biểu thức trình tạo và mức độ hiểu) trong phạm vi chú thích PEP 695 được lồng trong các lớp.
gh-109156: Thêm các bài kiểm tra cho hướng dẫn loại bỏ thiết bị trong khi vẫn giữ thiết bị đo cho các dòng
gh-109114: Giảm bớt việc phát hiện thông báo lỗi cho các lambda không hợp lệ bên trong chuỗi f để không tìm kiếm các trường thay thế tùy ý nhằm tránh kết quả dương tính giả. Bản vá của Pablo Galindo
gh-105848: Thêm opcode
CALL_KWmới, được sử dụng cho các lệnh gọi chứa đối số từ khóa. Ngoài ra, hãy khắc phục sự cố có thể xảy ra khi nhảy qua lệnh gọi phương thức trong trình gỡ lỗi.gh-109052: Sử dụng opcode cơ sở khi so sánh các đối tượng mã để tránh nhiễu từ thiết bị đo đạc
gh-109118: Khắc phục sự cố trình thông dịch khi NameError được nâng lên bên trong các tham số loại của một lớp chung.
gh-88943: Cải thiện lỗi cú pháp cho ký tự không phải ASCII theo sau một chữ số. Bây giờ nó trỏ đến ký tự không phải là ASCII không hợp lệ, không phải bằng chữ số hợp lệ.
gh-108976: Khắc phục sự cố xảy ra sau khi hủy thiết bị đối tượng mã trong lệnh gọi lại giám sát.
gh-108732: Hiển thị các biến lặp của khả năng hiểu trong phạm vi mô-đun và lớp đối với pdb và các công cụ khác sử dụng lại
frame.f_locals.gh-108959: Sửa vị trí dấu mũ cho các vị trí lỗi đối với các phép toán chỉ số dưới và nhị phân liên quan đến dấu ngoặc đơn và dấu cách không có ngữ nghĩa. Bản vá của Pablo Galindo
gh-104584: Khắc phục sự cố khi chạy với
PYTHONUOPShoặc-X uopsđược bật và xảy ra lỗi trong quá trình tối ưu hóa.gh-108727: Xác định
tp_deallocchoCounterOptimizer_Type. Điều này khắc phục lỗi phân tách khi phân bổ.gh-108520: Sửa
multiprocessing.synchronize.SemLock.__setstate__()để khởi tạomultiprocessing.synchronize.SemLock._is_fork_ctxđúng cách. Điều này khắc phục hiện tượng hồi quy khi chuyển SemLock qua các quy trình lồng nhau.Đổi tên
multiprocessing.synchronize.SemLock.is_fork_ctxthànhmultiprocessing.synchronize.SemLock._is_fork_ctxđể tránh bị lộ dưới dạng API công khai.gh-108654: Khôi phục các nội dung cục bộ bị che khuất bởi khả năng hiểu nội tuyến nếu khả năng hiểu này đưa ra một ngoại lệ.
gh-108488: Thay đổi việc khởi tạo các mục bộ đệm nội tuyến để mục bộ đệm cho
JUMP_BACKWARDđược khởi tạo về 0, thay vì giá trịadaptive_counter_warmup()được sử dụng cho tất cả các hướng dẫn khác. Bộ đếm này, duy nhất trong số các lệnh, đếm từ 0.gh-108716: Tắt tính năng đóng băng sâu các đối tượng mã. Các mô-đun vẫn bị đóng băng, do đó không cần tìm kiếm hệ thống tệp cho các mô-đun thông thường.
gh-108614: Thêm lệnh RESUME_CHECK để tránh phải xử lý các thiết bị chuyển mạch, tín hiệu và ngữ cảnh trong công cụ thực thi cấp 2.
gh-108487: Di chuyển một xác nhận có thể gây ra sự cố giả trong trường hợp sai lệch mà chỉ kích hoạt quá trình hủy tối ưu hóa.
gh-106176: Sử dụng
WeakValueDictionaryđể theo dõi danh sách chứa các mô-đun mà mỗi luồng hiện đang nhập. Điều này giúp tránh rò rỉ tham chiếu khiến danh sách tồn tại lâu hơn mức cần thiết. Các tham chiếu yếu được sử dụng vì GC không thể làm gián đoạn quá trình dọn dẹp.gh-105481: Giai đoạn xây dựng regen-opcode đã bị loại bỏ và công việc của nó hiện được thực hiện trong các trường hợp regen.
gh-107901: Sửa số dòng bị thiếu trên
JUMP_BACKWARDở cuối vòng lặp for.gh-108113:
compile()tích hợp hiện có thể chấp nhận một cờ mới,ast.PyCF_OPTIMIZED_AST, tương tự nhưast.PyCF_ONLY_ASTngoại trừ việcASTtrả về được tối ưu hóa theo giá trị của đối sốoptimize.ast.parse()hiện chấp nhận một đối số tùy chọnoptimizeđược chuyển chocompile()tích hợp sẵn. Điều này giúp có thể đạt đượcASTđược tối ưu hóa.gh-107971: ID Opcode được tạo từ bytecodes.c thay vì được mã hóa cứng trong opcode.py.
gh-107944: Cải thiện thông báo lỗi cho lệnh gọi hàm có đối số từ khóa không hợp lệ. Bản vá của Pablo Galindo
gh-108390: Đưa ra ngoại lệ khi đặt sự kiện không cục bộ (
RAISE,EXCEPTION_HANDLED, v.v.) trongsys.monitoring.set_local_events.Khắc phục sự cố khi theo dõi các lệnh gọi đệ quy tới các lớp Python.
gh-108035: Xóa cấu trúc
_PyCFrame, di chuyển con trỏ đến khung trình thông dịch hiện tại trở lại trạng thái luồng, giống như đối với phiên bản 3.10 trở về trước. Zz002zz tồn tại dưới dạng tối ưu hóa hiệu suất cho việc theo dõi. Vì PEP 669 đã được triển khai nên tính năng tối ưu hóa này không còn được áp dụng nữa.gh-91051: Khắc phục sự cố hủy bỏ / segfault khi sử dụng tất cả tám vị trí trình theo dõi loại, trên các nền tảng có
charđược ký theo mặc định.gh-106581: Khắc phục các lỗi xác nhận có thể xảy ra và các sự kiện đo lường bị thiếu khi
PYTHONUOPShoặc-X uopsđược bật.gh-107526: Hoàn nguyên việc chuyển đổi
vars,dir,next,getattrvàitersang phòng khám tranh luận.gh-84805: Tự động tạo chữ ký cho các chức năng mở rộng
METH_NOARGSvàMETH_O.gh-107758: Làm cho quy trình
dump_stack()được tính nănglltracesử dụng (gỡ lỗi trình thông dịch cấp thấp) trở nên mạnh mẽ chống lại đệ quy bằng cách đảm bảo rằng nó không bao giờ gọi phương thức__repr__được triển khai trong Python. Đồng thời tạo đầu ra tương tự cho uops Cấp 2 xuất hiện trênstdout(thay vìstderr), để khớp với mãlltracetrong ceval.c.gh-107659: Thêm tài liệu cho
ctypes.pointer()vàctypes.POINTER().gh-105848: Sửa đổi mã byte để lệnh gọi thực tế cho
CALLở một vị trí nhất quán trên ngăn xếp (bất kể tối ưu hóa gọi phương thức ràng buộc có hoạt động hay không).gh-107674: Đã sửa lỗi hồi quy hiệu suất trong
sys.settrace.gh-107724: Trong các phiên bản tiền phát hành 3.12, tối đa RC1, hàm gọi lại sys.monitoring cho sự kiện
PY_THROWbị thiếu đối số ngoại lệ thứ ba. Điều đó bây giờ đã được sửa.gh-84436: Bỏ qua các sửa đổi về số lượng tham chiếu đối với nhiều vật thể bất tử đã biết.
gh-107596: Chuyên đăng ký các đối tượng
strtheo chỉ mụcint.gh-107080: Các bản dựng giới thiệu dấu vết (
--with-trace-refs) bị lỗi khi sử dụng với các trình thông dịch phụ bị cô lập. Trạng thái toàn cầu có vấn đề đã được tách biệt với mỗi phiên dịch viên. Sửa các lỗi treo máy khác, thay đổi này không ảnh hưởng tới người dùng.gh-107557: Tạo các trường hợp cần thiết cho trình thông dịch trừu tượng cấp 2 cơ bản để tối ưu hóa trong CPython.
gh-106608: Tạo độ dài thay đổi
_PyUOpExecutorObject.gh-100964: Xóa trạng thái ngoại lệ của trình tạo sau
returnđể phá vỡ chu kỳ tham chiếu.gh-107455: Cải thiện thông báo lỗi khi chuyển đổi loại không tương thích sang
ctypes.c_char_p,ctypes.c_wchar_pvàctypes.c_void_p.gh-107263: Tăng giới hạn đệ quy C cho các hàm không phải trình thông dịch chính từ 800 lên 1500. Điều này sẽ cho phép các hàm như
list.__repr__vàjson.dumpsxử lý tất cả dữ liệu đầu vào mà chúng có thể xử lý trước phiên bản 3.12gh-104584: Khắc phục sự cố khiến bộ đệm nội tuyến không chính xác được đọc khi chạy với
PYTHONUOPShoặc-X uopsđược bật.gh-104432: Khắc phục khả năng truy cập bộ nhớ không được phân bổ tiềm năng trên các API C liên quan đến các chuỗi con trỏ
char *được trả về trong mô-đungrpvàsocket. Những điều này đã được tiết lộ bằng cách sử dụng bản dựng-fsaniziter=alignmenttrên macOS ARM. Bản vá của Christopher Chavez.gh-106078: Cô lập
_decimal(áp dụng PEP 687). Bản vá của Charlie Zhao.gh-106898: Thêm ngoại lệ làm đối số thứ ba cho lệnh gọi lại
PY_UNINDtrongsys.monitoring. Điều này làm cho lệnh gọi lạiPY_UNWINDnhất quán với các lệnh gọi lại xử lý ngoại lệ khác.gh-106895: Tăng
ValueErrorkhi chức năng gọi lại giám sát trả vềDISABLEcho các sự kiện không thể tắt cục bộ.gh-106897: Thêm sự kiện
RERAISEvàosys.monitoring, xảy ra khi một ngoại lệ được khởi động lại, rõ ràng bằng một câu lệnhraiseđơn giản hoặc ngầm trong khốiexcepthoặcfinally.gh-77377: Đảm bảo rằng các đối tượng đồng bộ hóa đa xử lý được tạo trong ngữ cảnh phân nhánh không được gửi đến một quy trình khác được tạo trong ngữ cảnh sinh sản. Điều này thay đổi một segfault thành một RuntimeError có thể xử lý được trong tiến trình gốc.
gh-106931: Các đối tượng chuỗi được phân bổ tĩnh hiện được thực hiện trên toàn cầu thay vì trên mỗi trình thông dịch. Điều này khắc phục tình huống trong đó một chuỗi như vậy sẽ chỉ được thực hiện trong một trình thông dịch duy nhất. Các đối tượng chuỗi bình thường không bị ảnh hưởng.
gh-104621: Các mô-đun không được hỗ trợ hiện luôn không được nhập.
gh-107122: Thêm
dbm.ndbm.ndbm.clear()vàodbm.ndbm. Bản vá của Donghee Na.gh-107122: Thêm
dbm.gnu.gdbm.clear()vàodbm.gnu. Bản vá của Donghee Na.gh-107015: Mã thông báo ASYNC và AWAIT bị xóa khỏi Ngữ pháp, điều này loại bỏ khả năng tạo từ khóa mềm
asyncvàawaitkhi sử dụngfeature_version<7trongast.parse().gh-106917: Khắc phục các lệnh gọi phương thức
super()kiểu phương thức lớp (tức là, trong đó đối số thứ hai chosuper()hoặc đối số thứ hai ngụ ý được rút ra từself/clstrong trường hợp super zero-arg, là một loại) khi mục tiêu của lệnh gọi không phải là phương thức lớp.gh-105699: Python không còn gặp sự cố do chạy đua không thường xuyên khi khởi tạo các chuỗi thực tập trên mỗi phiên dịch viên. Sự cố sẽ xuất hiện khi trình thông dịch được hoàn tất.
gh-105699: Python không còn gặp sự cố do chạy đua không thường xuyên trong cài đặt
Py_FileSystemDefaultEncodingvàPy_FileSystemDefaultEncodeErrors(cả hai đều không được dùng nữa), khi khởi tạo đồng thời hai trình thông dịch phụ bị cô lập. Bây giờ chúng chỉ được đặt trong quá trình khởi tạo thời gian chạy.gh-106908: Khắc phục nhiều lỗi treo, rò rỉ tham chiếu, lỗi kiểm tra và lỗi theo dõi/xem xét nội tâm khi chạy với
PYTHONUOPShoặc-X uopsđược bật.gh-106092: Khắc phục lỗi phân đoạn do lỗi use-after-free trong
frame_deallockhi thùng rác trì hoãn việc phân bổPyFrameObject.gh-106485: Giảm số lượng từ điển phiên bản cụ thể hóa bằng cách phi vật chất hóa chúng khi có thể.
gh-106719: Không còn ngăn chặn các lỗi tùy ý trong getter và setter
__annotations__trong loại và loại mô-đun.gh-106723: Truyền bá
frozen_modulesđến các trình thông dịch quy trình sinh ra đa xử lý.gh-104909: Chia
LOAD_ATTR_INSTANCE_VALUEthành các vi lệnh.gh-104909: Chia các chuyên môn của
LOAD_GLOBALthành các hoạt động vi mô.gh-106597: Một cấu trúc gỡ lỗi mới của các offset đã được thêm vào
_PyRuntimeStatesẽ giúp các trình gỡ lỗi và trình lược tả ngoài quy trình có được các offset cho các cấu trúc trình thông dịch có liên quan theo cách không rõ ràng về cách Python được biên dịch và không yêu cầu sao chép các tiêu đề. Bản vá của Pablo Galindogh-106487: Cho phép đối số count của
str.replace()làm từ khóa. Bản vá của Hugo van Kemenade.gh-96844: Cải thiện thông báo lỗi của
list.remove(). Bản vá của Donghee Na.gh-81283: Trình biên dịch hiện loại bỏ thụt lề khỏi chuỗi tài liệu. Nó giảm 5% kích thước tệp
pyckhi mô-đun được ghi chép nhiều. Thay đổi này ảnh hưởng đến__doc__nên các công cụ như doctest sẽ bị ảnh hưởng.gh-106396: Khi đặc tả định dạng của một biểu thức chuỗi f trống, trình phân tích cú pháp hiện tạo một nút
ast.JoinedStrtrống cho nó thay vì mộtast.JoinedStrmột phần tử với một chuỗi trốngast.Constant.gh-100288: Chuyên
LOAD_ATTRcho những người không mô tả trong lớp. ThêmLOAD_ATTR_NONDESCRIPTOR_WITH_VALUESvàLOAD_ATTR_NONDESCRIPTOR_NO_DICT.gh-106008: Khắc phục các rò rỉ tham chiếu có thể xảy ra khi không tối ưu hóa các so sánh với
Nonetrong trình biên dịch mã byte.gh-106145: Yêu cầu tạo
end_linenovàend_col_offsettrên các nút asttype_param.gh-106213: Đã thay đổi cách hoạt động của các tấm bạt lò xo gọi Emscripten để tương thích với tích hợp Wasm/JS Promise.
gh-106182:
sys.getfilesystemencoding()vàsys.getfilesystemencodeerrorshiện trả về đối tượng Unicode nội bộ.gh-106210: Đã xóa tấm bạt lò xo nhập khẩu Emscripten vì nó không còn cần thiết đối với Pyodide.
gh-104584: Đã thêm trình tối ưu hóa và trình thông dịch theo dõi mới, mang tính thử nghiệm (còn gọi là "cấp 2"). Điều này hiện đang bi quan, vì vậy đừng sử dụng -- đây là cơ sở hạ tầng để chúng ta có thể thử nghiệm việc tối ưu hóa các đường chuyền. Để kích hoạt nó, hãy chuyển
-Xuopshoặc đặtPYTHONUOPS=1. Để nhận kết quả gỡ lỗi, hãy đặtPYTHONUOPSDEBUG=Ntrong đóNlà mức gỡ lỗi (0-4, trong đó 0 là không có kết quả gỡ lỗi và 4 là quá dài dòng).gh-105775:
LOAD_CLOSUREhiện là một phiên bản giả.gh-105730: Cho phép bất kỳ đối tượng có thể gọi nào khác ngoài loại đối tượng làm vị từ điều kiện trong
BaseExceptionGroup.split()vàBaseExceptionGroup.subgroup().gh-105979: Khắc phục sự cố trong
_imp.get_frozen_object()do xử lý ngoại lệ không đúng cách.gh-106003: Thêm lệnh
TO_BOOLmới, thực hiện các chuyển đổi boolean choPOP_JUMP_IF_TRUE,POP_JUMP_IF_FALSEvàUNARY_NOT(tất cả đều mong đợi các giá trịboolchính xác hiện nay). Ngoài ra, hãy sửa đổi oparg củaCOMPARE_OPđể bao gồm cờ "chuyển đổi boolean" tùy chọn.gh-98931: Đảm bảo thông báo lỗi
SyntaxErrortùy chỉnh được đưa ra khi nhập không hợp lệ với nhiều mục tiêu. Bản vá của Pablo Galindogh-105724: Cải thiện thông báo lỗi
assertbằng cách cung cấp phạm vi lỗi chính xác.gh-105908: Đã sửa lỗi trong đó gh-99111 phá vỡ
barry_as_FLUFLnhập trong tương lai trong Python REPL.gh-105840: Khắc phục sự cố có thể xảy ra khi gọi hàm chuyên biệt với quá nhiều
__defaults__.gh-105831: Sửa lỗi chuỗi f, trong đó việc sử dụng biểu thức gỡ lỗi (dấu
=) xuất hiện ở dòng cuối cùng của tệp dẫn đến bộ đệm gỡ lỗi giữ văn bản biểu thức quá nhỏ một ký tự.gh-105800: Phát hành chính xác
SyntaxWarningtrong chuỗi f nếu sử dụng chuỗi không hợp lệ. Bản vá của Pablo Galindogh-105340: Bao gồm biến lặp mức hiểu trong
locals()bên trong mức độ hiểu phạm vi mô-đun hoặc lớp.gh-105331: Tăng
ValueErrornếu đối sốdelaychoasyncio.sleep()là NaN (khớp vớitime.sleep()).gh-105587: Thời gian chạy không thể đảm bảo rằng các vật thể bất tử sẽ không bị Tiện ích mở rộng biến đổi. Do đó, điều này sửa đổi _PyStaticObject_CheckRefcnt để cảnh báo thay vì xác nhận.
gh-105564: Không bao gồm các dòng mới giả tạo trong thuộc tính
linecủa mã thông báo trong API của mô-đuntokenize. Bản vá của Pablo Galindogh-105549: Token hóa riêng biệt các token
NUMBERvàNAMEkhông mơ hồ. Bản vá của Pablo Galindo.gh-105588: Khắc phục sự cố có thể dẫn đến sự cố khi biên dịch các nút
astkhông đúng định dạng.gh-100987: Cho phép các đối tượng không phải đối tượng mã là "có thể thực thi" trong các khung bên trong. Về lâu dài, điều này có thể giúp các công cụ như Cython và PySpy tương tác hiệu quả hơn. Trong ngắn hạn, nó cho phép chúng tôi thực hiện một số tối ưu hóa đơn giản hơn.
gh-105375: Sửa lỗi trong mô-đun
builtinskhiến các ngoại lệ có thể bị ghi đè.gh-105375: Sửa lỗi trong trình biên dịch trong đó một ngoại lệ có thể bị ghi đè.
gh-105375: Cải thiện việc xử lý lỗi trong
PyUnicode_BuildEncodingMap()trong đó một ngoại lệ có thể bị ghi đè.gh-105486: Thay đổi danh sách đối số của
ParamSpectrongtypes.GenericAlias.gh-105678: Chia lệnh
MAKE_FUNCTIONthành hai phần,MAKE_FUNCTIONtạo hàm vàSET_FUNCTION_ATTRIBUTEđặt các thuộc tính trên hàm. Điều này làm cho hiệu ứng ngăn xếp củaMAKE_FUNCTIONtrở nên thường xuyên để dễ dàng tối ưu hóa và tạo mã.gh-105435: Sửa ký tự dòng mới giả nếu tệp kết thúc bằng nhận xét mà không có dòng mới. Bản vá của Pablo Galindo
gh-105390: Tăng chính xác các ngoại lệ
tokenize.TokenErrorthay vìSyntaxErrorđối với các lỗi mã hóa, chẳng hạn như dữ liệu nhập không đầy đủ. Bản vá của Pablo Galindogh-105259: Không bao gồm ký tự dòng mới cho mã thông báo
NEWLINEở cuối được phát ra trong mô-đuntokenize. Bản vá của Pablo Galindogh-104635: Loại bỏ các lệnh
STORE_FASTdư thừa trong trình biên dịch. Bản vá của Donghee Na và Carl Meyer.gh-105324: Sửa chức năng chính của module
tokenizekhi đọc từsys.stdin. Bản vá của Pablo Galindogh-33092: Đơn giản hóa và tăng tốc trình thông dịch cho chuỗi f. Loại bỏ opcode
FORMAT_VALUE. Thêm mã hoạt độngCONVERT_VALUE,FORMAT_SIMPLEvàFORMAT_WITH_SPEC. Trình biên dịch tạo ra chuỗi hiệu quả hơn cho từng biểu thức định dạng.gh-105229: Loại bỏ các siêu lệnh gồm hai đơn vị mã còn lại. Tất cả các lệnh thượng tầng còn lại chỉ có một đơn vị mã duy nhất, giúp đơn giản hóa công cụ đo lường và tăng tốc độ.
gh-105235: Ngăn chặn truy cập bộ nhớ ngoài giới hạn trong các cuộc gọi
mmap.find().gh-98963: Khôi phục khả năng cho một lớp con của
propertyxác định__slots__hoặc nói cách khác là không có chính tả bằng cách bỏ qua các lỗi đặt chuỗi tài liệu trên một lớp như vậy. Hành vi này đã được khắc phục trong phiên bản 3.12beta1. MộtAttributeErrormà trước đây chưa từng có sẽ làm gián đoạn mã hiện có.gh-104812: Bộ máy "cuộc gọi đang chờ xử lý" hiện hoạt động với tất cả trình thông dịch, không chỉ trình thông dịch chính và chạy trong tất cả các luồng chứ không chỉ luồng chính. Một số lệnh gọi vẫn chỉ được thực hiện trong luồng chính, do đó trong trình thông dịch chính. Thay đổi này không ảnh hưởng đến việc xử lý tín hiệu cũng như C-API (
Py_AddPendingCall()) công khai hiện có, cả hai vẫn chỉ nhắm mục tiêu vào luồng chính. Chức năng mới hiện chỉ được sử dụng nội bộ vì hậu quả của việc sử dụng nó vẫn chưa được hiểu rõ ngoài một số trường hợp rất hạn chế. Sự thay đổi này mang lại khả năng phù hợp với mục đích khi nhà nước đã tạo ra một phiên dịch viên cách đây vài năm.gh-105194: Không thoát bằng dấu gạch chéo ngược trong công cụ xác định định dạng chuỗi f. Bản vá của Pablo Galindo
gh-105229: Thay thế một số lệnh thượng tầng động bằng các lệnh tương đương.
gh-105162: Đã sửa lỗi trong Generator.close()/throw() trong đó trình vòng lặp bên trong sẽ bị bỏ qua khi trình vòng lặp bên ngoài được trang bị.
gh-105164: Đảm bảo chú thích được thiết lập chính xác nếu chú thích duy nhất trong một khối nằm trong khối
match. Bản vá của Jelle Zijlstra.gh-105148: Tạo
_PyASTOptimizeStatenội bộ cho ast_opt.c. Làm cho_PyAST_Optimizelấy hai số nguyên thay vì một con trỏ tới cấu trúc này. Điều này tránh sự cần thiết phải đưa pycore_compile.h vào ast_opt.c.gh-104799: Thuộc tính của các nút
astlà danh sách hiện được mặc định là danh sách trống nếu bị bỏ qua. Điều này có nghĩa là một số mã trước đây đã đưa raTypeErrorkhi nút AST được sử dụng giờ đây sẽ tiếp tục với danh sách trống. Bản vá của Jelle Zijlstra.gh-105111: Xóa macro thùng rác
Py_TRASHCAN_SAFE_BEGINvàPy_TRASHCAN_SAFE_ENDcũ. Chúng nên được thay thế bằng macro mớiPy_TRASHCAN_BEGINvàPy_TRASHCAN_END.gh-105035: Khắc phục các lệnh gọi
super()trên các loại bằng cách triển khaitp_getattrotùy chỉnh (ví dụ: các loại meta.)gh-105017: Hiển thị các dòng CRLF trong thuộc tính chuỗi tokenize trong cả mã thông báo NL và NEWLINE. Bản vá của Marta Gómez.
gh-105013: Khắc phục việc xử lý các lambda có dấu ngoặc đơn nhiều dòng trong
inspect.getsource(). Bản vá của Pablo Galindogh-105017: Không bao gồm mã thông báo
NLcuối cùng bổ sung khi phân tích cú pháp tệp có dòng CRLF. Bản vá của Marta Gómez.gh-104976: Đảm bảo rằng các đối tượng
DEDENTtokenize.TokenInfotheo sau do mô-đuntokenizephát ra được báo cáo như trong Python 3.11. Bản vá của Pablo Galindogh-104972: Đảm bảo rằng thuộc tính
linetrong đối tượngtokenize.TokenInfotrong mô-đuntokenizeluôn chính xác. Bản vá của Pablo Galindogh-104955: Sửa chữ ký cho slot
__release_buffer__()mới. Bản vá của Jelle Zijlstra.gh-104690: Bắt đầu các luồng mới và tạo quy trình thông qua
os.fork()trong khi tắt trình thông dịch (chẳng hạn như từ trình xử lýatexit) không còn được hỗ trợ. Nó có thể dẫn đến tình trạng xung đột giữa các trạng thái luồng giải phóng luồng thời gian chạy Python chính trong khi các quy trìnhthreadingnội bộ đang cố gắng phân bổ và sử dụng trạng thái của các luồng vừa tạo. Hoặc các phần tử con được phân nhánh đang cố gắng sử dụng thời gian chạy giữa lúc tắt máy và trạng thái luồng trong tiến trình con.gh-104879: Khắc phục sự cố khi truy cập thuộc tính
__module__của loại bí danh được xác định bên ngoài mô-đun. Bản vá của Jelle Zijlstra.gh-104825: Mã thông báo do mô-đun
tokenizephát ra không bao gồm ký tự\nẩn trong thuộc tínhlinenữa. Bản vá của Pablo Galindogh-104770: Nếu trình tạo trả về một giá trị khi bị đóng thì giá trị đó hiện được trả về bởi
generator.close().gh-89091: Tăng
RuntimeWarningcho các phương thức tạo không đồng bộ không được chờ đợi nhưasend(),athrow()vàaclose(). Bản vá của Kumar Aditya.gh-96663: Thêm thông báo lỗi tốt hơn, dễ hiểu hơn khi đặt thuộc tính trên các lớp không có
__dict__và không có thành viên vị trí cho thuộc tính.gh-93627: Cập nhật cách triển khai mô-đun dưa chua Python để phù hợp với cách triển khai C của mô-đun dưa chua. Đối với các phương pháp giảm cài đặt đối tượng như
__reduce_ex__()hoặc__reduce__()thànhNone, việc tẩy rửa sẽ dẫn đếnTypeError.gh-101006: Cải thiện khả năng xử lý lỗi khi đọc dữ liệu
marshal.gh-91095: Chuyên gọi tới hầu hết các lớp Python. Cụ thể, bất kỳ lớp nào kế thừa từ
objecthoặc lớp Python khác và không ghi đè__new__.Hướng dẫn chuyên ngành thực hiện như sau:
Tạo đối tượng (bằng cách gọi
object.__new__)Đẩy khung chêm vào ngăn xếp khung (để dọn dẹp sau
__init__)Đẩy khung cho
__init__vào ngăn xếp khung
Tăng tốc độ khởi tạo của hầu hết các lớp Python.
Thư viện¶
gh-110786: CLI của
sysconfighiện bỏ quaBrokenPipeError, khiến nó thoát bình thường nếu đầu ra của nó đang được dẫn và đường ống đóng lại.gh-103480: Mô-đun
sysconfighiện là một gói, thay vì mô-đun một tệp.gh-110733: Tối ưu hóa vi mô: Tránh gọi
min(),max()trongBaseEventLoop._run_once().gh-94597: Đã thêm
asyncio.EventLoopđể sử dụng vớiasyncio.run()loop_factory kwarg nhằm tránh gọi hệ thống chính sách asyncio.gh-110682:
runtime-checkable protocolstừng coi__match_args__là thành viên giao thức trong__instancecheck__nếu nó có trên giao thức. Bây giờ, thuộc tính này sẽ bị bỏ qua nếu nó hiện diện.gh-110488: Khắc phục một số vấn đề trong
pathlib.PurePath.with_name(): một dấu chấm đơn lẻ bị coi là tên hợp lệ một cách không chính xác và trongPureWindowsPath, một tên có luồng dữ liệu thay thế NTFS, nhưa:b, bị coi là không hợp lệ một cách không chính xác.gh-110590: Sửa lỗi trong
_sre.compile()trong đóTypeErrorsẽ bịOverflowErrorghi đè khi đối số code là danh sách không phải số nguyên.gh-65052: Ngăn
pdbgặp sự cố khi cố gắng hiển thị các đối tượng không thể hiển thịgh-110519: Cảnh báo không dùng nữa về số không nguyên trong
gettexthiện luôn đề cập đến dòng trong mã người dùng nơi sử dụng hàm hoặc phương thức gettext. Trước đây nó có thể đề cập đến một dòng trong mãgettext.gh-89902: Không dùng công cụ xác định định dạng không chuẩn "N" cho
decimal.Decimal. Nó không được ghi lại và chỉ được hỗ trợ khi triển khai C.gh-110378: Trình quản lý bối cảnh
contextmanager()vàasynccontextmanager()hiện đóng một đối tượng trình tạo cơ bản không hợp lệ mang lại nhiều hơn một giá trị.gh-106670: Trong
pdb, đặt biến tiện lợi$_exceptionđể gỡ lỗi sau khi chết.gh-110365: Sửa lỗi
termios.tcsetattr()ghi đè các lỗi hiện có trong quá trình phân tích số nguyên từ danh sáchterm.gh-109653: Cải thiện một chút thời gian nhập của một số mô-đun thư viện tiêu chuẩn bằng cách trì hoãn việc nhập
warningstrong các mô-đun đó. Bản vá của Alex Waygood.gh-110273:
dataclasses.replace()hiện tăng TypeError thay vì ValueError nếu chỉ định đối số từ khóa cho trường được khai báo bằng init=False hoặc bỏ lỡ đối số từ khóa cho trường InitVar bắt buộc.gh-110249: Thêm cờ
--inline-cachesvào dòng lệnhdis.gh-109653: Khắc phục hồi quy Python 3.12 trong thời gian nhập
random. Bản vá của Alex Waygood.gh-110222: Thêm hỗ trợ các đối tượng chuỗi cấu trúc trong
copy.replace(). Được vá bởi Xuehai Pan.gh-109649:
multiprocessing,concurrent.futures,compileall: Thay thếos.cpu_count()bằngos.process_cpu_count()để chọn số lượng luồng và quy trình công việc mặc định. Nhận mối quan hệ CPU nếu được hỗ trợ. Bản vá của Victor Stinner.gh-110150: Sửa lỗi xử lý trường hợp cơ bản trong stats.quantiles. Bây giờ cho phép một điểm dữ liệu duy nhất.
gh-110036: Trên Windows,
Popen.terminate()đa xử lý hiện bắt đượcPermissionErrorvà lấy mã thoát quy trình. Nếu quá trình vẫn đang chạy, hãy nâng lạiPermissionError. Nếu không, quá trình sẽ kết thúc như mong đợi: lưu mã thoát của nó. Bản vá của Victor Stinner.gh-110038: Đã khắc phục sự cố khiến
KqueueSelector.select()không trả về tất cả các sự kiện sẵn sàng trong một số trường hợp khi bộ mô tả tệp được đăng ký cho cả đọc và ghi.gh-110045: Cập nhật mô-đun
symtableđể hỗ trợ các phạm vi mới do PEP 695 giới thiệu.gh-88402: Thêm biến mới vào
sysconfig.get_config_vars()trên Windows:LIBRARY,LDLIBRARY,LIBDIR,SOABIvàPy_NOGIL.gh-109631: Các chức năng
renhưre.findall(),re.split(),re.search()vàre.sub()thực hiện các kết quả khớp lặp lại ngắn hiện có thể bị gián đoạn bởi người dùng.gh-109653: Giảm thời gian nhập
email.utilskhoảng 43%. Điều này dẫn đến thời gian nhập củaemail.messagegiảm khoảng 18%, do đó thời gian nhập củaimportlib.metadatagiảm khoảng 6%. Bản vá của Alex Waygood.gh-109818: Sửa lỗi
reprlib.recursive_repr()không sao chép__type_params__từ chức năng trang trí.gh-109047:
concurrent.futures: executor manager thread hiện có ngoại lệ khi thêm một mục vào call queue. Trong quá trình hoàn thiện Python, giờ đây việc tạo một luồng mới có thể nâng caoRuntimeError. Bắt ngoại lệ và gọiterminate_broken()trong trường hợp này. Bản vá của Victor Stinner.gh-109782: Đảm bảo chữ ký của
os.path.isdir()giống hệt nhau trên tất cả các nền tảng. Bản vá của Amin Alaee.gh-109653: Cải thiện thời gian nhập của
functoolskhoảng 13%. Bản vá của Alex Waygood.gh-109590:
shutil.which()sẽ ưu tiên các tệp có phần mở rộng làPATHEXTnếu chế độ đã cho bao gồmos.X_OKtrên win32. Nếu không tìm thấy kết quả phù hợp vớiPATHEXT, một tệp không có phần mở rộng trongPATHEXTcó thể được trả về. Thay đổi này sẽ khiếnshutil.which()hoạt động tương tự như hành vi trước đó trong Python 3.11.gh-109653: Giảm hơn 50% thời gian nhập của
enum. Bản vá của Alex Waygood.gh-109593: Tránh bế tắc khi thực hiện lệnh gọi lại tới trình theo dõi tài nguyên đa xử lý. Lệnh gọi lại như vậy, mặc dù khó xảy ra, nhưng có thể xảy ra nếu lệnh GC gọi trình hoàn thiện cho một đối tượng đa xử lý như SemLock.
gh-109653: Giảm thời gian nhập của
typingkhoảng một phần ba. Bản vá của Alex Waygood.gh-109649: Thêm chức năng
os.process_cpu_count()để lấy số lượng CPU logic có thể sử dụng được theo luồng gọi của quy trình hiện tại. Bản vá của Victor Stinner.gh-74481: Thêm các hằng số liên quan đến
set_error_modetrong mô-đunmsvcrttrong bản dựng gỡ lỗi Python.gh-109613: Fix
os.stat()vàos.DirEntry.stat(): kiểm tra ngoại lệ. Trước đây, trên Python được xây dựng ở chế độ gỡ lỗi, các hàm này có thể gây ra lỗi Python nghiêm trọng (và hủy bỏ quá trình) khi một hàm thành công với một bộ ngoại lệ. Bản vá của Victor Stinner.gh-109599: Hiển thị loại đối tượng PyCapsule là
types.CapsuleType.gh-109109: Bây giờ bạn có thể nhận chuỗi chứng chỉ TLS thô từ các kết nối TLS thông qua các phương thức
ssl.SSLSocket.get_verified_chain()vàssl.SSLSocket.get_unverified_chain().Đóng góp bởi Mateusz Nowak.
gh-109559: Cập nhật cơ sở dữ liệu
unicodedatalên Unicode 15.1.0.gh-109543: Loại bỏ kiểm tra
hasattr()không cần thiết trong quá trình tạotyping.TypedDict.gh-109495: Loại bỏ
__slots__bổ sung không cần thiết trong quá trình triển khai python thuần túy củadatetimeđể giảm kích thước bộ nhớ, vì chúng được xác định trong siêu lớp. Bản vá của James Hilton-Balfegh-109461:
logging: Sử dụng trình quản lý bối cảnh để thu thập khóa.gh-109096:
http.server.CGIHTTPRequestHandlerkhông còn được dùng để xóa trong phiên bản 3.15. Thiết kế của nó đã cũ và thế giới web từ lâu đã vượt ra ngoài CGI.gh-109409: Khắc phục lỗi khi có thể kế thừa một lớp dữ liệu bị đóng băng từ nhiều lớp dữ liệu gốc, một số trong đó có thể không bị đóng băng.
gh-109375: Lệnh
pdbaliashiện ngăn việc đăng ký bí danh mà không có đối số.gh-109319: Không dùng trường
dis.HAVE_ARGUMENTmà thay vào đó làdis.hasarg.gh-107219: Khắc phục tình trạng đua trong
concurrent.futures. Khi một quy trình trong nhóm quy trình bị chấm dứt đột ngột (trong khi tương lai đang chạy hoặc đang chờ xử lý), hãy đóng kết thúc ghi kết nối. Nếu hàng đợi cuộc gọi bị chặn khi gửi byte đến một quy trình công nhân, việc đóng đầu ghi kết nối sẽ làm gián đoạn quá trình gửi, do đó hàng đợi có thể bị đóng. Bản vá của Victor Stinner.gh-66143: Đối tượng
codecs.CodecInfođã được tạo thành có thể sao chép và chọn được. Được vá bởi Robert Lehmann và Furkan Onder.gh-109187:
pathlib.Path.resolve()hiện xử lý các vòng lặp liên kết tượng trưng giống như các lỗi khác: ở chế độ nghiêm ngặt,OSErrorđược nâng lên và ở chế độ không nghiêm ngặt, không có ngoại lệ nào được đưa ra.gh-50644: Các nỗ lực chọn lọc hoặc tạo bản sao nông hoặc sâu của luồng
codecsgiờ đây sẽ gây ra TypeError. Trước đây, việc sao chép không thành công với RecursionError, trong khi việc tẩy chọn tạo ra kết quả sai mà cuối cùng khiến việc giải nén không thành công với RecursionError.gh-109174: Thêm hỗ trợ
types.SimpleNamespacetrongcopy.replace().gh-109164:
pdb: Thay thếgetoptbằngargparseđể phân tích các đối số dòng lệnh.gh-109151: Kích hoạt tính năng chỉnh sửa
readlinetrong sqlite3 command-line interface (python -m sqlite3).gh-108987: Khắc phục tình trạng đua
_thread.start_new_thread(). Nếu một luồng được tạo trong quá trình hoàn thiện Python, thì luồng mới được sinh ra hiện sẽ thoát ngay lập tức thay vì cố gắng truy cập vào bộ nhớ đã giải phóng và dẫn đến sự cố. Bản vá của Victor Stinner.gh-108682: Enum: yêu cầu
names=()hoặctype=...để tạo một enum trống bằng cú pháp hàm.gh-109033: Các ngoại lệ do hàm dựng sẵn os.utime đưa ra hiện bao gồm tên tệp liên quan
gh-108843: Khắc phục sự cố trong
ast.unparse()khi giải nén chuỗi f chứa nhiều loại trích dẫn.gh-108469:
ast.unparse()hiện hỗ trợ cú pháp f-string mới được giới thiệu trong Python 3.12. Lưu ý rằng các trích dẫn f-string được chọn lại để đơn giản theo cú pháp mới. (Bản vá của Steven Sun)gh-108751: Thêm chức năng
copy.replace()cho phép tạo bản sao sửa đổi của một đối tượng. Nó hỗ trợ các bộ dữ liệu có tên, các lớp dữ liệu và nhiều đối tượng khác.gh-108682: Enum: tăng
TypeErrornếusuper().__new__()được gọi từ__new__tùy chỉnh.gh-108278: Không dùng nữa việc chuyển lệnh gọi lại có thể gọi theo từ khóa cho các API
sqlite3.Connectionsau:Các tham số bị ảnh hưởng sẽ chỉ có vị trí trong Python 3.15.
Bản vá của Erlend E. Aasland.
gh-105829: Khắc phục sự bế tắc đồng thời.futures.ProcessPoolExecutor
gh-108295: Khắc phục sự cố liên quan đến việc sử dụng điểm yếu trên
typing.TypeVar.gh-108463: Làm cho biểu thức/câu lệnh hoạt động như mong đợi trong pdb
gh-108277: Thêm
os.timerfd_create(),os.timerfd_settime(),os.timerfd_gettime(),os.timerfd_settime_ns()vàos.timerfd_gettime_ns()để cung cấp giao diện cấp thấp cho bộ mô tả tệp thông báo hẹn giờ của Linux.gh-107811:
tarfile: việc trích xuất các thành viên có UID hoặc GID quá lớn (ví dụ: trên hệ điều hành cóid_t32-bit) hiện không thành công theo cách tương tự như không đặt ID.gh-64662: Sửa lỗi hỗ trợ bảng ảo trong
sqlite3.Connection.iterdump(). Bản vá của Aviv Palivoda.gh-108111: Khắc phục hồi quy được giới thiệu trong gh-101251 cho 3.12, dẫn đến tính toán bù không chính xác trong
gzip.GzipFile.seek().gh-108294:
time.sleep()hiện đang phát sinh một sự kiện kiểm tra.gh-108278: Không dùng tên truyền, số lượng đối số và đối số có thể gọi làm đối số từ khóa cho các API
sqlite3.Connectionsau:Các tham số bị ảnh hưởng sẽ chỉ có vị trí trong Python 3.15.
Bản vá của Erlend E. Aasland.
gh-108322: Tăng tốc NormalDist.samples() bằng cách sử dụng phương thức CDF nghịch đảo thay vì gọi Random.gauss().
gh-83417: Thêm khả năng cho venv tạo tệp
.gitignorekhiến môi trường đã tạo bị Git bỏ qua. Nó được bật theo mặc định khi venv được gọi thông qua CLI.gh-105736: Hài hòa phiên bản Python thuần túy của
OrderedDictvới phiên bản C. Bây giờ, cả hai phiên bản đều thiết lập trạng thái bên trong của chúng bằng__new__. Trước đây, phiên bản Python thuần túy đã thiết lập trong__init__.gh-108083: Sửa lỗi trong hàm tạo của
sqlite3.Connectionvàsqlite3.Connection.close()khiến các ngoại lệ có thể bị rò rỉ. Bản vá của Erlend E. Aasland.gh-107932: Sửa mô-đun
disđể báo cáo và hiển thị đúng mã byte không có dòng nguồn.gh-105539:
sqlite3hiện phát raResourceWarningnếu đối tượngsqlite3.Connectionkhông phải làclosedmột cách rõ ràng. Bản vá của Erlend E. Aasland.gh-107995: Thuộc tính
__module__trên các phiên bản củafunctools.cached_propertyhiện được đặt thành tên của mô-đun trong đó cached_property được xác định, thay vì "functools". Điều này có nghĩa là các doctest trong chuỗi tài liệucached_propertyhiện đã được mô-đundoctestthu thập chính xác. Bản vá của Tyler Smart.gh-107963: Sửa
multiprocessing.set_forkserver_preload()để kiểm tra danh sách tên mô-đun đã cho. Bản vá của Donghee Na.gh-106242: Sửa
os.path.normpath()để xử lý các ký tự null được nhúng mà không cắt bớt đường dẫn.gh-81555:
xml.dom.minidomhiện chỉ trích dẫn"trong thuộc tính.gh-50002:
xml.dom.minidomhiện giữ nguyên khoảng trắng trong thuộc tính.gh-93057: Truyền nhiều đối số vị trí cho
sqlite3.connect()và hàm tạosqlite3.Connectionkhông được dùng nữa. Các tham số còn lại sẽ chỉ có từ khóa trong Python 3.15. Bản vá của Erlend E. Aasland.gh-76913: Thêm tham số/tính năng merge_extra vào
logging.LoggerAdaptergh-107913: Khắc phục các tổn thất có thể xảy ra của các giá trị
errnovàwinerrortrong các ngoại lệOSErrornếu chúng bị xóa hoặc sửa đổi bằng mã dọn dẹp trước khi tạo đối tượng ngoại lệ.gh-107845:
tarfile.data_filter()hiện tính đến vị trí của các liên kết tượng trưng khi xác định mục tiêu của chúng, do đó, nó sẽ không còn từ chối một số tarball hợp lệ vớiLinkOutsideDestinationErrornữa.gh-107812: Mở rộng hỗ trợ liên kết mạng của socket sang nền tảng FreeBSD.
gh-107805: Sửa chữ ký của các hàm được tạo ở cấp mô-đun trong
turtle.gh-107782:
pydochiện có thể hiển thị các chữ ký không thể biểu thị bằng Python, ví dụ: chogetattrvàdict.pop.gh-56166: Không dùng nữa việc chuyển các đối số tùy chọn maxsplit, count và flags trong các hàm cấp mô-đun
re.split(),re.sub()vàre.subn()làm vị trí. Chúng chỉ nên được thông qua theo từ khóa.gh-107710: Tăng tốc độ
logging.getHandlerNames().gh-107715: Sửa
doctest.DocTestFinder.find()khi có tên lớp có ký tự đặc biệt. Bản vá của Gertjan van Zwieten.gh-100814: Việc chuyển một đối tượng có thể gọi làm giá trị tùy chọn cho hình ảnh Tkinter hiện sẽ tăng TclError dự kiến thay vì AttributionError.
gh-72684: Thêm các phương thức tiện ích
tkinter:tk_busy_hold(),tk_busy_configure(),tk_busy_cget(),tk_busy_forget(),tk_busy_current()vàtk_busy_status().gh-106684: Tăng
ResourceWarningkhiasyncio.StreamWriterkhông được đóng dẫn đến rò rỉ bộ nhớ. Bản vá của Kumar Aditya.gh-107465: Thêm phương thức lớp
pathlib.Path.from_uri().gh-107077: Có vẻ như trong một số điều kiện, OpenSSL sẽ trả về
SSL_ERROR_SYSCALLthay vìSSL_ERROR_SSLkhi xác minh chứng nhận không thành công, nhưng thông số lỗi vẫn sẽ chứaERR_LIB_SSLvàSSL_R_CERTIFICATE_VERIFY_FAILED. Chúng tôi hiện đang phát hiện tình huống này và đưa rassl.SSLCertVerificationErrorthích hợp. Bản vá của Pablo Galindogh-107576: Sửa
types.get_original_bases()để chỉ trả về__orig_bases__nếu nó hiện diện trực tiếp trêncls. Bản vá của James Hilton-Balfe.gh-105481: Xóa
opcode.is_pseudo,opcode.MIN_PSEUDO_OPCODEvàopcode.MAX_PSEUDO_OPCODE, được thêm vào trong 3.12, chưa bao giờ được ghi lại và không có ý định sử dụng bên ngoài.gh-105481:
opcode.ENABLE_SPECIALIZATION(đã được thêm vào 3.12 nhưng chưa bao giờ được ghi lại hoặc dự định sử dụng bên ngoài) được chuyển sang_opcode.ENABLE_SPECIALIZATIONnơi các bài kiểm tra có thể truy cập nó.gh-107396: tarfile; Đã sửa lỗi sử dụng trước khi gán self.Exception để giải nén gzip
gh-107409: Đặt thuộc tính
__wrapped__trongreprlib.recursive_repr().gh-107406: Triển khai phương thức
__repr__()mới chostruct.Struct. Bây giờ nó trả vềStruct(<format repr>).gh-107369: Tối ưu hóa
textwrap.indent(). Nó nhanh hơn ~ 30% cho đầu vào lớn. Bản vá của Inada Naoki.gh-78722: Khắc phục sự cố trong đó
pathlib.Path.iterdir()không tăngOSErrorcho đến khi lặp lại.gh-105578: Không dùng
typing.AnyStrnữa mà sử dụng cú pháp Thông số Loại mới. Xem PEP 695.gh-62519: Thực hiện
gettext.pgettext()tìm kiếm định nghĩa số nhiều khi không tìm thấy bản dịch.gh-107089: Kệ được mở bằng
shelve.open()có phương phápclear()nhanh hơn nhiều. Bản vá của James Cave.gh-82500: Khắc phục lỗi tràn trên hệ thống 32 bit bằng cách triển khai
asyncioos.sendfile().gh-83006: Hành vi tài liệu của
shutil.disk_usage()dành cho các hệ thống tệp không được gắn trên Unix.gh-65495: Sử dụng chữ thường
mail fromvàrcpt totrongsmptlib.SMTP.gh-106186: Không báo cáo lỗi
MultipartInvariantViolationDefectkhi lớpemail.parser.Parserđược sử dụng để phân tích email bằngheadersonly=True.gh-105002: Sửa kết quả không hợp lệ từ phương pháp
PurePath.relative_to()khi cố gắng đi qua đoạn ".." trong other khi bật walk_up. Một ngoại lệValueErrorhiện đã được đưa ra trong trường hợp này.gh-106739: Thêm
rtype_cachevào thông báo cảnh báo (như một phần bổ sung cho loại đối tượng bị rò rỉ và số lượng đối tượng bị rò rỉ đã có trong thông báo) để giúp việc gỡ lỗi các đối tượng bị rò rỉ dễ dàng hơn khi quá trình theo dõi tài nguyên đa xử lý tìm thấy các đối tượng bị rò rỉ khi tắt máy. Điều này giúp xác định nhanh hơn những gì đã bị rò rỉ và/hoặc tại sao đối tượng bị rò rỉ không được dọn dẹp đúng cách.gh-106751: Tối ưu hóa
SelectSelector.select()cho nhiều trường hợp lặp lại. Bản vá của Donghee Na.gh-106751: Tối ưu hóa
_PollLikeSelector.select()cho nhiều trường hợp lặp lại.gh-106751: Tối ưu hóa
KqueueSelector.select()cho nhiều trường hợp lặp lại. Bản vá của Donghee Na.gh-106831: Khắc phục khả năng kiểm tra
NULLbị thiếu trong kết quảd2i_SSL_SESSIONtrong_ssl.c.gh-105481: Các danh sách opcode khác nhau trong mô-đun
dishiện được tạo từ bytecodes.c thay vì được xây dựng rõ ràng trong opcode.py.gh-106727: Làm cho
inspect.getsource()thông minh hơn cho lớp có định nghĩa giống nhaugh-105726: Đã thêm
__slots__vàocontextlib.AbstractContextManagervàcontextlib.AbstractAsyncContextManagerđể các lớp con có thể sử dụng__slots__.gh-106774: Cập nhật bản sao đi kèm của pip lên phiên bản 23.2.1.
gh-106751:
selectors: Tối ưu hóa mãEpollSelector.select()bằng cách di chuyển một số mã ra ngoài vòng lặp.gh-106752: Đã sửa một số lỗi trong zipfile.Path, bao gồm: trong
zipfile.Path.match(), các dấu phân cách của Windows không còn được tôn trọng nữa (và không bao giờ có ý định như vậy); Đã sửa lỗi các thao tácname/suffix/suffixes/stemkhi không có tên tệp và Đường dẫn không nằm ở gốc của tệp zip; Toàn cầu được làm lại để có hiệu suất và hành vi khớp chính xác hơn.gh-105293: Xóa lệnh gọi tới
SSL_CTX_set_session_id_contexttrong quá trình tạo ngữ cảnh phía máy khách trong mô-đunssl.gh-106734: Vô hiệu hóa tính năng hoàn thành tab ở chế độ nhiều dòng của
pdbgh-105481: Hiển thị siêu dữ liệu opcode thông qua
_opcode.gh-106670: Thêm lệnh
exceptionsmới vào trình gỡ lỗi Pdb. Nó giúp bạn có thể di chuyển giữa các ngoại lệ theo chuỗi khi sử dụng tính năng gỡ lỗi sau khi chết.gh-106664:
selectors: Thêm phương thức_SelectorMapping.get()và tối ưu hóa_SelectorMapping.__getitem__().gh-106628: Tăng tốc độ phân tích email lên khoảng 20% bằng cách không biên dịch biểu thức chính quy mới cho mỗi email.
gh-89427: Đặt biến môi trường
VIRTUAL_ENV_PROMPTkhi kích hoạtvenv, ngay cả khiVIRTUAL_ENV_DISABLE_PROMPTđược đặt.gh-106530: Hoàn nguyên một thay đổi thành
colorsys.rgb_to_hls()gây ra sự chia cho 0 đối với một số đầu vào gần như trắng nhất định. Bản vá của Terry Jan Reedy.gh-106584: Sửa mã thoát cho
unittestnếu tất cả các bài kiểm tra bị bỏ qua. Bản vá của Egor Eliseev.gh-106566: Tối ưu hóa
(?!)(mẫu luôn bị lỗi) trong biểu thức thông thường.gh-106554:
selectors: Giảm chi phí sử dụng Bộ chọn bằng cách sử dụngdict.get()để tra cứu bộ mô tả tệp.gh-106558: Xóa chu kỳ ref trong người gọi
convert_to_error()bằng cách xóaresultkhỏi phạm vi trong khốifinally.gh-100502: Thêm thuộc tính lớp
pathlib.PurePath.pathmodlưu trữ việc triển khaios.pathđược sử dụng cho các hoạt động đường dẫn cấp thấp:posixpathhoặcntpath.gh-106527: Giảm chi phí để thêm và xóa trình đọc và trình ghi
asyncio.gh-106524: Khắc phục sự cố trong
_sre.template()với các mẫu chứa chỉ mục nhóm không hợp lệ.gh-106531: Đã xóa
_legacyvà các tên mà nó cung cấp khỏiimportlib.resources:Resource,contents,is_resource,open_binary,open_text,path,read_binaryvàread_text.gh-106052: mô-đun
re: sửa lỗi khớp các bộ định lượng sở hữu trong trường hợp mẫu con chứa quay lui.gh-106510: Cải thiện kết quả gỡ lỗi cho các nhóm nguyên tử trong biểu thức chính quy.
gh-106503: Sửa chu kỳ ref trong
asyncio._SelectorSocketTransportbằng cách xóa_write_readytrongclose.gh-105497: Sửa lỗi đảo ngược mặt nạ cờ khi tồn tại cờ không tên.
gh-90876: Ngăn
multiprocessing.spawnkhông thành import trong môi trường màsys.executablelàNone. Điều này đã được khắc phục trong phiên bản 3.11 với việc bổ sung hỗ trợ cho các đối tượng giống đường dẫn trong đa xử lý.gh-106403: Các phiên bản
typing.TypeVar,typing.ParamSpec,typing.ParamSpecArgs,typing.ParamSpecKwargsvàtyping.TypeVarTuplemột lần nữa hỗ trợ các tham chiếu yếu, sửa lỗi hồi quy được giới thiệu trong Python 3.12.0 beta 1. Bản vá của Jelle Zijlstra.gh-89812: Thêm lớp
pathlib._PathBaseriêng tư, cung cấp hỗ trợ thử nghiệm cho các hệ thống tệp ảo và có thể được công khai trong phiên bản Python trong tương lai.gh-106292: Kiểm tra giá trị được lưu trong bộ nhớ đệm instance-dict trong phương thức
__get__()củafunctools.cached_property(). Điều này phù hợp hơn với hành vi trước 3.12 và cải thiện khả năng tương thích cho người dùng phân lớpfunctools.cached_property()và thêm phương thức__set__().gh-106350: Phát hiện lỗi cấp phát bộ nhớ có thể xảy ra trong hàm libtommath
mp_init()được mô-đun_tkintersử dụng.gh-106330: Sửa lỗi khớp các đường dẫn trống trong
pathlib.PurePath.match(). Lỗi này đã được giới thiệu trong Python 3.12.0 beta 1.gh-106309: Không dùng nữa
typing.no_type_check_decorator(). Không có trình kiểm tra loại chính nào từng hỗ trợ thêm cho trình trang trí này. Bản vá của Alex Waygood.gh-102541: Làm cho
pydoc.doc()bắt được mô-đunImportErrorxấu khi luồng đầu ra không phải làNone.gh-106263: Khắc phục sự cố khi gọi
reprbằng đối tượng SignalDict được xây dựng thủ công. Bản vá của Charlie Zhao.gh-106236: Thay thế các câu lệnh
assertbằngraise RuntimeErrortrongthreading, để_DummyThreadkhông thể kết nối ngay cả với-OO.gh-106238: Khắc phục lỗi đồng thời hiếm gặp khi thu thập khóa bằng gói ghi nhật ký.
gh-106152: Đã thêm móc sự kiện PY_THROW cho
cProfilecho máy phát điệngh-106075: Đã thêm
asyncio.taskgroups.__all__vàoasyncio.__all__để xuất trong nhập sao.gh-104527: Zipapp bây giờ sẽ bỏ qua việc thêm tệp lưu trữ vào chính nó.
gh-106046: Cải thiện thông báo lỗi từ
os.fspath()nếu được gọi trên một đối tượng trong đó__fspath__được đặt thànhNone. Bản vá của Alex Waygood.gh-105987: Khắc phục sự cố do tính tham chiếu không chính xác trong quy trình nội bộ của nhà máy nhiệm vụ háo hức
asyncio.gh-105974: Sửa lỗi trong đó lớp
typing.Protocolcó một hoặc nhiều thành viên không thể gọi được sẽ tăngTypeErrorkhiissubclass()được gọi chống lại nó, ngay cả khi nó xác định phương thức__subclasshook__tùy chỉnh. Hành vi trong Python 3.11 trở xuống -- hiện đã được khôi phục -- không tăngTypeErrortrong những tình huống này nếu phương thức__subclasshook__tùy chỉnh được xác định. Bản vá của Alex Waygood.gh-96145: Đã hoàn nguyên việc thêm
json.AttrDict.gh-89812: Thêm
pathlib.UnsupportedOperation, được nâng lên thay vìNotImplementedErrorkhi thao tác đường dẫn không được hỗ trợ.gh-105808: Khắc phục hồi quy được giới thiệu trong gh-101251 cho 3.12, khiến
gzip.GzipFile.flush()không xả máy nén (cũng không chuyển đối sốzip_mode).gh-105481:
stack_effect()không còn đưa ra ngoại lệ nếuopargđược cung cấp choopcodekhông sử dụng đối số của nó hoặc khi nó không được cung cấp choopcodesử dụng nó. Trong trường hợp sau, hiệu ứng ngăn xếp được trả về chooparg=0.gh-104799: Cho phép
ast.unparse()phân tích cú pháp các định nghĩa hàm và lớp được tạo mà không có trườngtype_paramsmới từ PEP 695. Bản vá của Jelle Zijlstra.gh-105793: Thêm đối số chỉ từ khóa follow_symlinks vào
pathlib.Path.is_dir()vàis_file(), mặc định làTrue.gh-105570: Không dùng nữa hai phương thức tạo các lớp
typing.TypedDictvới 0 trường bằng cú pháp hàm:TD = TypedDict("TD")vàTD = TypedDict("TD", None). Cả hai sẽ không được phép trong Python 3.15. Để tạo lớpTypedDictcó 0 trường, hãy sử dụngclass TD(TypedDict): passhoặcTD = TypedDict("TD", {}).gh-105745: Sửa phương thức
webbrowser.Konqueror.open.gh-105733:
ctypes: Không dùng các hàmctypes.SetPointerType()vàctypes.ARRAY()không có giấy tờ. Bản vá của Victor Stinner.gh-105687: Xóa
re.template,re.T,re.TEMPLATE,sre_constans.SRE_FLAG_TEMPLATEkhông được dùng nữa.gh-105684: Hiện tại, việc hỗ trợ
asyncio.Task.set_name()là bắt buộc đối với việc triển khai tác vụ của bên thứ ba. Hàm_set_task_name()không có giấy tờ (không dùng nữa kể từ phiên bản 3.8) đã bị xóa. Bản vá của Kumar Aditya.gh-105375: Sửa lỗi trong
_Unpickler_SetInputStream()khiến ngoại lệ có thể bị ghi đè trong trường hợp lỗi.gh-105626: Thay đổi giá trị trả về mặc định của
http.client.HTTPConnection.get_proxy_response_headers()thànhNonechứ không phải{}.gh-105375: Sửa lỗi trong
systrong đó các ngoại lệ có thể bị ghi đè do xử lý lỗi bị trì hoãn.gh-105605: Tăng cường xử lý lỗi
pyexpattrong quá trình khởi tạo mô-đun để ngăn các trường hợp ngoại lệ có thể bị ghi đè và các đối tượng không bị hủy đăng ký hai lần.gh-105375: Sửa lỗi trong
decimaltrong đó một ngoại lệ có thể bị ghi đè.gh-105375: Sửa lỗi trong
_datetimetrong đó các ngoại lệ có thể bị ghi đè trong trường hợp khởi tạo mô-đun không thành công.gh-105375: Sửa lỗi trong quá trình khởi tạo
_sslcó thể dẫn đến các tài liệu tham khảo bị rò rỉ và các ngoại lệ bị ghi đè.gh-105375: Sửa lỗi trong
array.arraykhiến ngoại lệ có thể bị ghi đè.gh-105375: Sửa lỗi trong
_ctypeskhiến các ngoại lệ có thể bị ghi đè.gh-105375: Sửa lỗi trong mô-đun
posixkhiến ngoại lệ có thể bị ghi đè.gh-105375: Sửa lỗi trong
_elementtreekhiến các ngoại lệ có thể bị ghi đè.gh-105375: Sửa lỗi trong
zoneinfokhiến các ngoại lệ có thể bị ghi đè.gh-105375: Sửa lỗi trong
errnokhiến các ngoại lệ có thể bị ghi đè.gh-105566: Không dùng nữa việc tạo lớp
typing.NamedTuplebằng cách sử dụng đối số từ khóa để biểu thị các trường (NT = NamedTuple("NT", x=int, y=str)). Điều này sẽ không được phép trong Python 3.15. Thay vào đó hãy sử dụng cú pháp dựa trên lớp hoặc cú pháp chức năng.Hai phương thức tạo lớp
NamedTuplecó trường 0 bằng cú pháp hàm cũng không được dùng nữa và sẽ không được phép trong Python 3.15:NT = NamedTuple("NT")vàNT = NamedTuple("NT", None). Để tạo lớpNamedTuplecó 0 trường, hãy sử dụngclass NT(NamedTuple): passhoặcNT = NamedTuple("NT", []).gh-105545: Loại bỏ thuộc tính
webbrowser.MacOSXOSAScript._name3.11.gh-105497: Sửa lỗi đảo ngược cờ khi tồn tại các thành viên bí danh/mặt nạ.
gh-105509:
typing.Annotatedhiện được triển khai dưới dạng phiên bản củatyping._SpecialFormchứ không phải là một lớp. Điều này sẽ không có tác động đối với người dùng đối với người dùng mô-đuntypingAPI công khai.gh-105375: Sửa lỗi trong
picklekhiến các ngoại lệ có thể bị ghi đè.gh-70303: Phát ra
FutureWarningtừpathlib.Path.glob()vàrglob()nếu mẫu đã cho kết thúc bằng "**". Trong bản phát hành Python trong tương lai, các mẫu có phần cuối này sẽ khớp với cả tệp và thư mục. Thêm dấu gạch chéo ở cuối để chỉ khớp với các thư mục.gh-105375: Sửa lỗi trong
sqlite3trong đó một ngoại lệ có thể bị ghi đè trong lệnh gọi lạicollation.gh-105382: Xóa các tham số cafile, capath và cadefault của hàm
urllib.request.urlopen(), không được dùng nữa trong Python 3.6. Bản vá của Victor Stinner.gh-105376:
logging: Loại bỏ các phương thứcLogger.warn()vàLoggerAdapter.warn()cũng như hàmlogging.warn()không có giấy tờ và chưa được kiểm tra. Không được dùng nữa kể từ Python 3.3, chúng là bí danh của phương thứclogging.Logger.warning(), phương thứclogging.LoggerAdapter.warning()và hàmlogging.warning(). Bản vá của Victor Stinner.gh-105332: Hoàn nguyên phương pháp tẩy từ tên theo giá trị.
gh-104554: Thêm hỗ trợ lược đồ RTSPS trong urllib.parse
gh-105292: Thêm tùy chọn vào
traceback.format_exception_only()để lặp lại ngoại lệ lồng nhau củaBaseExceptionGroup.gh-105280: Sửa lỗi trong đó
isinstance([], collections.abc.Mapping)có thể đánh giá thànhTruenếu việc thu gom rác diễn ra không đúng lúc. Lỗi xảy ra do những thay đổi trong quá trình triển khaityping.Protocoltrong Python 3.12.gh-105239: Sửa lỗi tồn tại lâu dài trong đó
issubclass(object, typing.Protocol)sẽ đánh giá thànhTruetrong một số trường hợp khó khăn. Bản vá của Alex Waygood.gh-104310: Trong bản phát hành beta 1, chúng tôi đã thêm một chức năng tiện ích cho các tác giả mô-đun mở rộng để sử dụng khi thử nghiệm mô-đun của họ để được hỗ trợ trong nhiều trình thông dịch hoặc theo GIL cho mỗi phiên dịch. Tên của hàm đó đã đổi từ
allowing_all_extensionsthành_incompatible_extension_module_restrictions. Giá trị mặc định cho đối số "disable_check" đã thay đổi từTruethànhFalseđể phù hợp hơn với tên hàm mới.gh-105080: Đã sửa lỗi chữ ký không nhất quán trên các lớp dẫn xuất cho
inspect.signature()gh-105144: Khắc phục hồi quy gần đây trong mô-đun
typing. Hồi quy có nghĩa là việc thực hiệnclass Foo(X, typing.Protocol), trong đóXlà một lớp cóabc.ABCMetalà siêu dữ liệu của nó, sau đó sẽ khiến các lệnh gọiisinstance(1, X)tiếp theo tăng nhầmTypeError. Bản vá của Alex Waygood.gh-62948: Trình hoàn thiện
io.IOBasehiện ghi lại các lỗi phương thứcclose()vớisys.unraisablehook. Trước đây, các lỗi được âm thầm bỏ qua theo mặc định và chỉ đăng nhập vào Python Development Mode hoặc trên Python built on debug mode. Bản vá của Victor Stinner.gh-105096:
wave: Không dùng nữa các phương thứcgetmark(),setmark()vàgetmarkers()của các lớpwave.Wave_readvàwave.Wave_write. Chúng sẽ bị xóa trong Python 3.15. Bản vá của Victor Stinner.gh-104992: Xóa phương thức
unittest.TestProgram.usageExit()chưa được kiểm tra và không có giấy tờ, không được dùng nữa trong Python 3.11. Bản vá của Hugo van Kemenade.gh-104996: Cải thiện hiệu suất khởi tạo
pathlib.PurePathbằng cách trì hoãn việc kết hợp các đường dẫn khi có nhiều đối số được đưa ra.gh-101588: Ngừng hỗ trợ sao chép/deepcopy/pickle không có giấy tờ cho itertools.
gh-103631: Sửa lỗi
pathlib.PurePosixPath(pathlib.PureWindowsPath(...))không chuyển đổi dấu phân cách đường dẫn để khôi phục hành vi tương thích với 3.11.gh-104947: So sánh giữa các đối tượng
pathlib.PureWindowsPathnhất quán trên Windows và Posix để phù hợp với hành vi 3.11.gh-104773: PEP 594: Xóa mô-đun
audioop, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104773: PEP 594: Xóa mô-đun
aifc, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104773: PEP 594: Xóa mô-đun
uu, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104935: Sửa lỗi tương tác giữa
typing.runtime_checkable()vàtyping.Genericdo quá trình triển khai PEP 695 gây ra. Bản vá của Jelle Zijlstra.gh-104773: PEP 594: Xóa mô-đun
cryptvà tiện ích mở rộng_cryptriêng của nó, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104773: PEP 594: Xóa mô-đun
nis, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104898: Thêm
__slots__bị thiếu vàoos.PathLike.gh-104773: PEP 594: Xóa mô-đun
xdrlib, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104773: PEP 594: Xóa mô-đun
nntplib, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104886: Xóa lớp
configparser.LegacyInterpolationkhông có giấy tờ, không được dùng trong chuỗi tài liệu kể từ Python 3.2 và có cảnh báo không dùng nữa kể từ Python 3.11. Bản vá của Hugo van Kemenade.gh-104786: Xóa việc tạo
typing.TypedDictdựa trên kwargsgh-104876: Xóa phương thức
turtle.RawTurtle.settiltangle(), không được dùng nữa trong tài liệu kể từ Python 3.1 và có cảnh báo không dùng nữa kể từ Python 3.11. Bản vá của Hugo van Kemenade.gh-104773: PEP 594: Đã xóa gói
msilib, không được dùng nữa trong Python 3.11.gh-104773: PEP 594: Xóa mô-đun
spwd, không được dùng nữa trong Python 3.11: có thể sử dụng dự án python-pam để thay thế. Bản vá của Victor Stinner.gh-75552: Đã xóa mô-đun
tkinter.tix, không được dùng nữa kể từ Python 3.6.gh-104773: PEP 594: Xóa mô-đun
chunk, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104773: PEP 594: Xóa mô-đun
mailcap, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104773: PEP 594: Xóa mô-đun
sunau, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104780: PEP 594: Xóa mô-đun
ossaudiodev, không được dùng nữa trong Python 3.11. Vá Victor Stinner.gh-104773: PEP 594: Xóa mô-đun
pipes, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104873: Thêm
typing.get_protocol_members()để trả về tập hợp các thành viên xác địnhtyping.Protocol. Thêmtyping.is_protocol()để kiểm tra xem một lớp có phải làtyping.Protocolhay không. Bản vá của Jelle Zijlstra.gh-104874: Ghi lại các thuộc tính
__name__và__supertype__củatyping.NewType. Bản vá của Jelle Zijlstra.gh-104835: Đã xóa các hàm
unittestsau, không được dùng nữa trong Python 3.11:unittest.findTestCases()unittest.makeSuite()unittest.getTestCaseNames()
Thay vào đó hãy sử dụng các phương thức
TestLoader:Bản vá của Hugo van Kemenade.
gh-104804: Xóa lớp
webbrowserMacOSXchưa được kiểm tra và không có giấy tờ, không được dùng nữa trong Python 3.11. Bản vá của Hugo van Kemenade.gh-83863: Hỗ trợ sử dụng các đối tượng
pathlib.Pathlàm trình quản lý bối cảnh đã bị xóa. Trước Python 3.9, việc thoát trình quản lý bối cảnh đã đánh dấu một đường dẫn là "đã đóng", điều này khiến một số phương thức (nhưng không phải tất cả!) tăng lên khi được gọi. Kể từ Python 3.9, việc sử dụng đường dẫn làm trình quản lý bối cảnh không có tác dụng gì.gh-104799: Điều chỉnh vị trí của trường
type_params(xem PEP 695) trênast.ClassDef,ast.AsyncFunctionDefvàast.FunctionDefđể duy trì khả năng tương thích ngược tốt hơn. Bản vá của Jelle Zijlstragh-104797: Cho phép các lớp
typing.Protocolkế thừa từcollections.abc.Buffer. Bản vá của Jelle Zijlstra.gh-104783: Xóa hàm
locale.resetlocale()không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104780: Xóa chương trình
2to3và mô-đunlib2to3, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104773: PEP 594: Xóa mô-đun
telnetlib, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104773: PEP 594: Xóa mô-đun
imghdr, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104773: PEP 594: Xóa các mô-đun
cgivàcgitb, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104773: PEP 594: Xóa mô-đun
sndhdr, không được dùng nữa trong Python 3.11. Bản vá của Victor Stinner.gh-104372: Trên Linux, nơi
subprocesscó thể sử dụng tòa nhàvfork()để sinh sản nhanh hơn, ngăn chặn tiến trình gốc chặn các luồng khác bằng cách loại bỏ GIL trong khi chờ kết quảexec()của tiến trình con vfork'ed. Điều này ngăn việc sinh ra tệp nhị phân từ hệ thống tệp chậm chặn phần còn lại của ứng dụng.gh-99108: Hiện tại, chúng tôi phát hành GIL xung quanh các tính toán
hashlibtích hợp có kích thước hợp lý cho họ SHA và các hàm băm MD5, khớp với những gì tính toán băm được hỗ trợ OpenSSL của chúng tôi đã thực hiện.gh-102613: Cải thiện hiệu suất của
pathlib.Path.glob()khi mở rộng mẫu có thành phần "**" không đầu cuối bằng cách lọc các đường đi qua biểu thức chính quy, thay vì gọios.scandir()nhiều lần trên mỗi thư mục.gh-104399: Chuẩn bị mô-đun
_tkinterđể xây dựng với Tcl 9.0 và libtommath trong tương lai bằng cách thay thế việc sử dụng các hàm không dùng nữamp_to_unsigned_bin_n()vàmp_unsigned_bin_size()khi cần thiết.gh-102676: Thêm các trường
start_offset,cache_offset,end_offset,baseopname,baseopcode,jump_targetvàopargvàodis.Instruction.gh-103558: Đã sửa cơ chế xác thực đối số
parentcủaargparse. Cải thiện phạm vi kiểm tra.gh-103464: Cung cấp thông báo sử dụng hữu ích khi phân tích cú pháp các lệnh
pdbkhông chính xác.gh-103384: Tổng quát hóa mẫu biểu thức chính quy
BaseConfigurator.INDEX_PATTERNđể cho phép khoảng trắng và ký tự không phải chữ và số trong các phím.gh-101162: Cấm sử dụng
builtins.issubclass()vớitypes.GenericAliaslàm đối số đầu tiên.gh-103200: Sửa ngữ nghĩa tái tạo bộ nhớ đệm của zipimport.invalidate_caches(). Bộ đệm bây giờ được phục hồi lại khi truy xuất các tệp có bộ đệm không hợp lệ, chứ không phải khi bộ đệm bị vô hiệu.
gh-100061: Sửa lỗi gây ra kết quả khớp sai cho các biểu thức thông thường với vòng loại sở hữu.
gh-77609: Thêm đối số follow_symlinks vào
pathlib.Path.glob()vàrglob(), mặc định là sai.gh-102541: Ẩn dấu vết trong lời nhắc
help()khi quá trình nhập không thành công.gh-102120: Đã thêm chế độ truyền phát vào
tarfilecho phép đọc các kho lưu trữ mà không cần lưu thông tin vào bộ đệm về các tệp bên trong.gh-102029: Không dùng nữa việc chuyển bất kỳ đối số nào tới
threading.RLock().gh-88233: Đã tái cấu trúc
zipfile._strip_extrađể sử dụng tính trừu tượng ở cấp độ cao hơn cho các tính năng bổ sung thay vì vòng lặp trạng thái nặng.gh-102024: Giảm cuộc gọi của
_idle_semaphore.release()trongconcurrent.futures.thread._worker().gh-73435: Thêm hỗ trợ cho các ký tự đại diện đệ quy trong
pathlib.PurePath.match().gh-84867:
unittest.TestLoaderkhông còn tải các trường hợp thử nghiệm từ các lớpunittest.TestCasevàunittest.FunctionTestCasechính xác nữa.gh-99203: Khôi phục hành vi CPython <= 3.10.5 sau đây của
shutil.make_archive(): không tạo kho lưu trữ trống nếuroot_dirkhông phải là một thư mục và trong trường hợp đó, hãy tăngFileNotFoundErrorhoặcNotADirectoryErrorbất kể lựa chọnformat. Ngoài hành vi được đưa trở lại, giờ đây hàm này còn có thể đưa ra các ngoại lệ này ở chế độdry_run.gh-80480: Phát ra
DeprecationWarningcho mã loại'u'củaarray, không được dùng nữa trong tài liệu kể từ Python 3.3.gh-94924:
unittest.mock.create_autospec()hiện trả về chính xác các hàm coroutine tương thích vớiinspect.iscoroutinefunction()gh-94777: Khắc phục lỗi treo
multiprocessingProcessPoolExecutorkhi một tiến trình con gặp sự cố trong khi dữ liệu đang được ghi vào hàng đợi cuộc gọi.gh-92871: Xóa các không gian tên
typing.iovàtyping.re, không được dùng nữa kể từ Python 3.8. Tất cả các mục vẫn có sẵn từ mô-đuntypingchính.bpo-43633: Cải thiện cách trình bày văn bản của các địa chỉ IPv6 được ánh xạ IPv4 (RFC 4291 Phần 2.2, 2.5.5.2) trong
ipaddress. Bản vá của Oleksandr Pavliuk.bpo-44850: Cải thiện hiệu suất của
operator.methodcaller()bằng cách sử dụng quy ước PEP 590vectorcall. Bản vá của Anthony Lee và Pieter Eendebak.bpo-44185:
unittest.mock.mock_open()sẽ gọi phương thứcclose()của mô hình xử lý tệp khi nó thoát khỏi trình quản lý bối cảnh. Bản vá của Samet Yaslan.bpo-40988: Cải thiện hiệu suất của
functools.singledispatchmethodbằng cách lưu vào bộ đệm trình bao bọc công văn đã tạo. Tối ưu hóa được đề xuất bởi frederico. Bản vá của @mental32, Alex Waygood và Pieter Eendebak.bpo-41768: thông số kỹ thuật
unittest.mockkhông còn gọi thuộc tính lớp nữa. Bản vá của Melanie Witt.bpo-18319: Đảm bảo
gettext(msg)truy xuất bản dịch ngay cả khi tồn tại dạng số nhiều. Nói cách khác:gettext(msg) == ngettext(msg, '', 1).bpo-17013: Thêm
ThreadingMockvàounittest.mockcó thể được sử dụng để tạo các đối tượng Mock có thể đợi cho đến khi chúng được gọi. Bản vá của Karthikeyan Singaravelan và Mario Corchero.
Tài liệu¶
gh-109209: Phiên bản Sphinx tối thiểu cần thiết cho tài liệu hiện là 4.2.
gh-108826: Giao diện dòng lệnh của mô-đun
dishiện được đề cập trong tài liệu.gh-107305: Thêm tài liệu cho
PyInterpreterConfigvàPy_NewInterpreterFromConfig(). Đồng thời làm rõ một số tài liệu lân cận liên quan đến GIL trên mỗi phiên dịch viên.gh-106948: Thêm một số tên bên ngoài tiêu chuẩn vào
nitpick_ignore.gh-106232: Làm cho các dòng lệnh timeit doc tương thích với Windows bằng cách sử dụng dấu ngoặc kép cho các đối số. Điều này cũng hoạt động trên linux và macOS.
gh-105172: Đã sửa lỗi tính toán chuỗi tài liệu
functools.lru_cache()cho cách xử lý khác nhau của đối sốtypedđối với str và int. Bản vá của Bar Harel.gh-105052: Cập nhật tài liệu
timeitđể chỉ định thời gian tính bằng giây chỉ là mặc định.gh-89455: Thêm tài liệu còn thiếu cho các tham số
max_group_depthvàmax_group_widthcũng như thuộc tínhexceptionscủa lớptraceback.TracebackException.gh-89412: Thêm tài liệu còn thiếu cho các thuộc tính
end_linenovàend_offsetcủa lớptraceback.TracebackException.gh-104943: Xóa đề cập đến các phiên bản Python cũ trong
typing.NamedTuple.gh-54738: Thêm tài liệu về cách bản địa hóa mô-đun
argparse.gh-102823: Ghi lại kiểu trả về của
x // ykhixvàycó kiểufloat.gh-102759: Căn chỉnh chữ ký hàm cho
functools.reducetrong tài liệu và chuỗi tài liệu bằng cách triển khai C.
Kiểm tra¶
gh-110647: Sửa test_stress_modifying_handlers() của test_signal. Bản vá của Victor Stinner.
gh-103053: Sửa test_tools.test_freeze trên FreeBSD: chạy "make distclean" thay vì "make clean" trong thư mục nguồn đã sao chép để xóa chương trình "python". Bản vá của Victor Stinner.
gh-110167: Khắc phục sự cố bế tắc trong test_socket khi máy chủ bị lỗi khi hết thời gian chờ nhưng máy khách vẫn đang chạy trong luồng của nó. Không giữ khóa để gọi các hàm dọn dẹp trong doCleanups(). Một trong các chức năng dọn dẹp sẽ đợi cho đến khi máy khách hoàn thành, trong khi máy khách có thể bị bế tắc nếu gọi addCleanup() trong tình huống như vậy. Bản vá của Victor Stinner.
gh-110367: regrtest: Khi sử dụng quy trình công nhân (-jN) với tùy chọn --verbose3, regrtest hiện có thể hiển thị đầu ra của công nhân ngay cả khi quy trình công nhân gặp sự cố. Trước đây, sys.stdout và sys.stderr đã được thay thế và do đó, kết quả đầu ra của công nhân bị mất do sự cố. Bản vá của Victor Stinner.
gh-110267: Thêm các bài kiểm tra để tẩy và sao chép các đối tượng PyStructSequence. Được vá bởi Xuehai Pan.
gh-110171:
libregrtesthiện luôn thiết lập và hiển thịrandom.seed, vì vậy các bài kiểm tra có khả năng lặp lại cao hơn. Sử dụng cờ--randseedđể chuyển hạt giống ngẫu nhiên rõ ràng cho các bài kiểm tra.gh-110152: Xóa
Tools/scripts/run_tests.pyvàmake hostrunnertest. Thay vào đó chỉ cần chạy./python -m test --slow-ci,make buildbottesthoặcmake test. Trình chạy thử nghiệm Python (regrtest) hiện xử lý việc biên dịch chéo và HOSTRUNNER. Nó cũng bổ sung thêm các tùy chọn cho Python-u -E -W default -bbnhanh như vậy khi sử dụng tùy chọn--fast-cihoặc--slow-ci. Bản vá của Victor Stinner.gh-110031: Bỏ qua các bài kiểm tra test_threading bằng thread+fork nếu Python được xây dựng bằng Trình khử trùng địa chỉ (ASAN). Bản vá của Victor Stinner.
gh-110088: Khắc phục thời gian chờ test_asyncio: không đo thời lượng tối đa, bài kiểm tra không nên đo hiệu suất CI. Chỉ đo thời lượng tối thiểu khi tác vụ có thời gian chờ hoặc bị trì hoãn. Thêm
CLOCK_RESvàotest_asyncio.utils. Bản vá của Victor Stinner.gh-109974: Khắc phục các điều kiện chạy đua trong các bài kiểm tra khóa test_threading. Đợi cho đến khi đáp ứng một điều kiện thay vì sử dụng
time.sleep()với số giây được mã hóa cứng. Bản vá của Victor Stinner.gh-110033: Sửa lỗi
test_interprocess_signal()củatest_signal. Đảm bảo rằng đối tượngsubprocess.Popenbị xóa trước khi thử nghiệm đưa ra ngoại lệ trong trình xử lý tín hiệu. Nếu không,Popen.__del__()có thể nhận được ngoại lệ được ghi làException ignored in: ...và quá trình kiểm tra không thành công. Bản vá của Victor Stinner.gh-109594: Sửa test_timeout() của test_concurrent_futures.test_wait. Xóa tương lai có thể hoàn thành hoặc không tùy thuộc vào việc nó có mất nhiều thời gian hơn thời gian chờ hay không. Giữ tương lai thứ hai không hoàn thành trước khi hết thời gian chờ(). Bản vá của Victor Stinner.
gh-109972: Tách tệp test_gdb.py thành gói test_gdb được tạo thành từ nhiều thử nghiệm, do đó, giờ đây các thử nghiệm có thể được chạy song song. Bản vá của Victor Stinner.
gh-109566: regrtest: Khi tùy chọn
--fast-cihoặc--slow-ciđược sử dụng, regrtest hiện thay thế quy trình hiện tại bằng một quy trình mới để thêm tùy chọn-u -W default -bb -Evào Python. Bản vá của Victor Stinner.gh-109748: Fix
test_zippath_from_non_installed_posix()của test_venv: không sao chép các thư mục con__pycache__/, vì chúng có thể bị sửa đổi bởi các thử nghiệm Python khác đang chạy song song. Bản vá của Victor Stinner.gh-109739: regrtest: Sửa lỗi kiểm tra rò rỉ tham chiếu trên Windows. Vô hiệu hóa trình theo dõi tải trên Windows ở chế độ kiểm tra rò rỉ tham chiếu (tùy chọn -R). Bản vá của Victor Stinner.
gh-109276: regrtest: Khi thử nghiệm thất bại với "env đã thay đổi" và tùy chọn --rerun được sử dụng, thử nghiệm hiện được chạy lại ở chế độ dài dòng trong một quy trình mới. Bản vá của Victor Stinner.
gh-103053: Bỏ qua test_freeze_simple_script() của test_tools.test_freeze nếu Python được xây dựng bằng
./configure --enable-optimizations, nghĩa là với Tối ưu hóa hướng dẫn cấu hình (PGO): nó chỉ làm cho quá trình kiểm tra quá chậm. Công cụ đóng băng được nhiều tổ chức tín dụng khác thử nghiệm với các cờ trình biên dịch khác (nhanh hơn). Bản vá của Victor Stinner.gh-109580: Bỏ qua
test_perf_profilernếu Python được xây dựng bằng trình khử trùng ASAN, MSAN hoặc UBSAN. Python gặp sự cố ngẫu nhiên trong thử nghiệm này trên bản dựng như vậy. Bản vá của Victor Stinner.gh-109566: regrtest: Thêm tùy chọn
--fast-civà--slow-ci.--fast-cisử dụng thời gian chờ mặc định là 10 phút và-u all,-cpu(bỏ qua các bài kiểm tra chậm nhất).--slow-cisử dụng thời gian chờ mặc định là 20 phút và-u all(chạy tất cả các bài kiểm tra). Bản vá của Victor Stinner.gh-109425: libregrtest hiện giải mã thiết bị xuất chuẩn của các quy trình của nhân viên kiểm tra bằng trình xử lý lỗi "backslashreplace" để ghi nhật ký thiết bị xuất chuẩn bị hỏng, thay vì bị lỗi và không ghi lại thiết bị xuất chuẩn. Bản vá của Victor Stinner.
gh-109396: Sửa
test_socket.test_hmac_sha1()ở chế độ FIPS. Sử dụng khóa dài hơn: chế độ FIPS yêu cầu ít nhất 112 bit. Khóa trước đó chỉ có 32 bit. Bản vá của Victor Stinner.gh-104736: Sửa test_gdb trên Python được xây dựng bằng LLVM clang 16 trên Linux ppc64le (ví dụ: Fedora 38). Các mẫu tìm kiếm trong đầu ra lệnh "bt" của gdb để phát hiện khi gdb không truy xuất được dấu vết. Ví dụ: bỏ qua bài kiểm tra nếu tìm thấy
Backtrace stopped: frame did not save the PC. Bản vá của Victor Stinner.gh-109276: libregrtest hiện gọi
random.seed()trước khi chạy từng tệp kiểm tra khi sử dụng tùy chọn dòng lệnh-r/--randomize. Hơn nữa, nó còn được gọi trong quy trình công nhân. Nó sẽ giúp làm cho các bài kiểm tra mang tính quyết định hơn. Trước đây, nó chỉ được gọi một lần trong quy trình chính trước khi chạy tất cả các tệp thử nghiệm và nó không được gọi trong quy trình công nhân. Bản vá của Victor Stinner.gh-109276: libregrtest hiện sử dụng bộ mô tả tệp riêng biệt để ghi kết quả kiểm tra dưới dạng JSON. Trước đây, nếu quá trình kiểm tra viết thông báo gỡ lỗi muộn xung quanh JSON thì quy trình kiểm tra chính không thể phân tích cú pháp JSON. Bản vá của Victor Stinner.
gh-108996: Sửa và kích hoạt
test_msvcrt.gh-109237: Khắc phục
test_site.test_underpth_basic()khi thư mục làm việc chứa ít nhất một ký tự không phải ASCII: mã hóa tệp._pththành UTF-8 và bật Chế độ UTF-8 để sử dụng UTF-8 cho thiết bị xuất chuẩn của tiến trình con. Bản vá của Victor Stinner.gh-109230: Khắc phục
test_pyexpat.test_exception(): giờ đây nó có thể được chạy từ một thư mục khác với thư mục mã nguồn Python. Trước đây, thử nghiệm đã thất bại trong trường hợp này. Bỏ qua bài kiểm tra nếu nguồn Mô-đun/pyexpat.c không có sẵn. Bỏ qua phần kiểm tra về triển khai Python ngoài CPython. Bản vá của Victor Stinner.gh-108996: Thêm bài kiểm tra cho
msvcrt.gh-109015: Sửa các bài kiểm tra test_asyncio, test_imaplib và test_socket trên FreeBSD nếu lỗ đen TCP được bật (
sysctl net.inet.tcp.blackhole). Bỏ qua một số thử nghiệm không thành công vớiETIMEDOUTcó cấu hình không chuẩn như vậy. Hiện tại, FreeBSD GCP image enables TCP and UDP blackhole (sysctl net.inet.tcp.blackhole=2vàsysctl net.inet.udp.blackhole=1). Bản vá của Victor Stinner.gh-91960: Bỏ qua
test_gdbnếu gdb không thể truy xuất các đối tượng khung Python: nếu khung là<optimized out>. Khi Python được xây dựng bằng "clang -Og", gdb có thể không truy xuất được tham số frame của_PyEval_EvalFrameDefault(). Trong trường hợp này, các thử nghiệm nhưpy_bt()có thể sẽ thất bại. Nếu không có quyền truy cập vào các khung Python,python-gdb.pyhầu như không biết cách truy xuất dấu vết Python. Hơn nữa,test_gdbkhông còn bị bỏ qua trên macOS nếu Python được xây dựng bằng Clang. Bản vá của Victor Stinner.gh-108962: Bỏ qua
test_tempfile.test_flags()nếuchflags()bị lỗi với "OSError: [Errno 45] Thao tác không được hỗ trợ" (ví dụ: trên FreeBSD 13). Bản vá của Victor Stinner.gh-91960: Phạm vi bảo hiểm CI FreeBSD 13.2 cho các yêu cầu kéo hiện được cung cấp bởi Cirrus-CI (dịch vụ CI được lưu trữ hỗ trợ Linux, macOS, Windows và FreeBSD).
gh-89392: Đã xóa hỗ trợ chức năng
test_main()trong các thử nghiệm. Bây giờ họ luôn sử dụng Á hậu thử nghiệm nhỏ nhất bình thường.gh-108851: Khắc phục các thử nghiệm đệ quy
test_tomllibcho các buildbot WASI: giảm giới hạn đệ quy và tính toán mảng/dict lồng nhau tối đa tùy thuộc vào giới hạn đệ quy hiện có. Bản vá của Victor Stinner.gh-108851: Thêm chức năng
get_recursion_available()vàget_recursion_depth()vào mô-đuntest.support. Bản vá của Victor Stinner.gh-108834: Thêm tùy chọn
--fail-rerun optionđể kiểm tra lại: nếu kiểm tra thất bại sau đó vượt qua khi chạy lại ở chế độ dài dòng, hãy thoát quy trình với mã thoát 2 (lỗi), thay vì mã thoát 0 (thành công). Bản vá của Victor Stinner.gh-108834: Đổi tên tùy chọn regrtest
--verbose2(-w) thành--rerun. Giữ--verbose2làm bí danh không được dùng nữa. Bản vá của Victor Stinner.gh-108834: Khi regrtest chạy lại các bài kiểm tra không thành công ở chế độ dài dòng (
./python -m test --rerun), các bài kiểm tra hiện được chạy lại trong quy trình công nhân mới thay vì được thực thi trong quy trình chính. Nếu quá trình kiểm thử gặp sự cố hoặc bị hủy do hết thời gian chờ, quy trình chính có thể phát hiện và xử lý quy trình công nhân bị giết. Các thử nghiệm sẽ được chạy lại song song nếu tùy chọn-jNđược sử dụng để chạy thử nghiệm song song. Bản vá của Victor Stinner.gh-108822:
regrtesthiện tính toán số liệu thống kê trên tất cả các bài kiểm tra: thành công, thất bại và bị bỏ qua.test_netrc,test_pep646_syntaxvàtest_xml_etreehiện trả về kết quả trong hàmtest_main()của chúng. Bản vá của Victor Stinner và Alex Waygood.gh-108794: Phương thức
doctest.DocTestRunner.run()hiện đếm số lượng bài kiểm tra bị bỏ qua. Thêm thuộc tínhdoctest.DocTestRunner.skipsvàdoctest.TestResults.skipped. Bản vá của Victor Stinner.gh-108388: Chuyển đổi test_concurrent_futures thành gói gồm 7 bài kiểm tra phụ. Bản vá của Victor Stinner.
gh-108388: Chia test_multiprocessing_fork, test_multiprocessing_forkserver và test_multiprocessing_spawn thành các gói thử nghiệm. Mỗi gói được tạo thành từ 4 bài kiểm tra phụ: quy trình, chủ đề, trình quản lý và linh tinh. Nó cho phép chạy nhiều thử nghiệm song song hơn và do đó giảm tổng thời gian thử nghiệm. Bản vá của Victor Stinner.
gh-105776: Sửa test_cppext khi lệnh trình biên dịch C tùy chọn
-std=c11: loại bỏ các tùy chọn-std=khỏi lệnh trình biên dịch. Bản vá của Victor Stinner.gh-107652: Thiết lập CIFuzz để chạy các mục tiêu fuzz trong GitHub Actions. Bản vá của Illia Volochii.
gh-107237:
test_logging: Khắc phụctest_udp_reconnection()bằng cách tăng thời gian chờ từ 100 ms lên 5 phút (LONG_TIMEOUT). Bản vá của Victor Stinner.gh-107178: Thêm bài kiểm tra C API cho các chức năng trong Giao thức ánh xạ, Giao thức tuần tự và một số chức năng trong Giao thức đối tượng.
gh-106714: test_capi: Sửa test_no_FatalError_infinite_loop() để không còn ghi kết xuất lõi nữa bằng cách sử dụng test.support.SuppressCrashReport. Bản vá của Victor Stinner.
gh-104090: Tránh tạo tham chiếu đến đối tượng thử nghiệm trong
collectedDurations().gh-106752: Đã chuyển các bài kiểm tra cho
zipfile.PathsangLib/test/test_zipfile/_path. Đã biếnzipfile._paththành một gói.gh-106690: Thêm .coveragerc vào kho lưu trữ cpython để sử dụng với gói bảo hiểm.
gh-101634: Khi chạy bộ kiểm tra Python với tùy chọn
-jN, nếu không thể giải mã được thiết bị xuất chuẩn của công nhân từ mã hóa ngôn ngữ thì báo cáo kiểm tra không thành công nên mã thoát khác 0. Bản vá của Victor Stinner.gh-105084: Khi bản dựng Python được định cấu hình
--with-wheel-pkg-dir, các thử nghiệm yêu cầu bánh xesetuptoolsvàwheelsẽ tìm kiếm các bánh xe trongWHEEL_PKG_DIR.gh-81005: Kiểm tra chuỗi được sửa đổi để phản ánh rằng
strvàunicodeđược hợp nhất trong Python 3. Bản vá của Daniel Fortunov.gh-103186: Ngăn chặn và xác nhận RuntimeWarnings dự kiến trong test_sys_settrace.py
gh-69714: Thêm các bài kiểm tra bổ sung vào
calendarđể đạt được phạm vi kiểm tra đầy đủ.
xây dựng¶
gh-103053: "make check-clean-src" hiện cũng kiểm tra xem chương trình "python" có được tìm thấy trong thư mục nguồn hay không: lỗi nếu nó tồn tại. Bản vá của Victor Stinner.
gh-109191: Sửa lỗi biên dịch khi xây dựng với các phiên bản libedit gần đây.
gh-110276: Không còn âm thầm bỏ qua lỗi
PROFILE_TASKnữa: lệnh được sử dụng bởi Tối ưu hóa hướng dẫn cấu hình (PGO). Bản vá của Victor Stinner.gh-109566: Xóa mục tiêu
make testall: thay vào đó hãy sử dụngmake buildbottest. Bản vá của Victor Stinner.gh-109740: Cờ định cấu hình
--disable-gilthử nghiệm hiện bao gồm "t" (dành cho "luồng") trong thẻ ABI mở rộng.gh-109054: Sửa lỗi xây dựng tiện ích mở rộng
_testcapitrên Linux AArch64 yêu cầu liên kết tới libatomic khi sử dụng<cpython/pyatomic.h>: chức năng_Py_atomic_or_uint64()yêu cầu libatomic__atomic_fetch_or_8()trên nền tảng này. Tập lệnh cấu hình hiện sẽ kiểm tra xem có cần liên kết tới libatomic hay không và tạo biến LIBATOMIC mới được sử dụng để xây dựng tiện ích mở rộng _testcapi. Bản vá của Victor Stinner.gh-63760: Sửa bản dựng Solaris: không còn xác định lại chức năng
gethostname(). Solaris xác định chức năng này từ năm 2005. Bản vá của Victor Stinner, bản vá gốc của Jakub Kulík.gh-108740: Khắc phục tình trạng đua trong
make regen-all. Nguồndeepfreeze.cvà các tệp do Argument Clinic tạo ra hiện được tạo hoặc cập nhật trước khi tạo "đối tượng chung". Trước đây, một số mã định danh có thể bị thiếu tùy thuộc vào thứ tự tạo các tệp này. Bản vá của Victor Stinner.gh-108634: Python được xây dựng bằng
configure--with-trace-refs(tham chiếu theo dõi) hiện tương thích với ABI với bản phát hành Python và debug build. Bản vá của Victor Stinner.gh-85283: Tiện ích mở rộng
_statC hiện được xây dựng với limited C API. Bản vá của Victor Stinner.gh-108447: Sửa bản dựng x86_64 GNU/Hurd
gh-107814: Khi gọi
find_python.batbằng-q, đầu ra của nuget không tắt tiếng đúng cách. Điều đó bây giờ đã được sửa.gh-105481: Loại bỏ mục tiêu tạo
regen-opcode-targets, hợp nhất công việc của nó vàoregen-opcodelặp lại hầu hết phép tính. Điều này giúp đơn giản hóa mã xây dựng và giảm sự trùng lặp mã.gh-106881: Kiểm tra
linux/limits.htrước khi đưa nó vàoModules/posixmodule.c.gh-95855: Tái cấu trúc mã phát hiện bộ ba nền tảng và thêm tính năng phát hiện cho MIPS soft float và musl libc.
gh-106962: Phát hiện trình biên dịch MPI trong
configure.gh-106118: Sửa lỗi biên dịch cho các nền tảng không có
O_CLOEXEC. Sự cố đã xảy ra với Python 3.12b1 trong gh-103295. Bản vá của Erlend Aasland.gh-105875: Cần có SQLite 3.15.2 hoặc mới hơn để xây dựng mô-đun mở rộng
sqlite3. Bản vá của Erlend Aasland.gh-90005: Khắc phục sự hồi quy trong
configurekhiến chúng tôi có thể vô tình liên kết vớilibbsd.gh-102404: Tài liệu cách thực hiện bản dựng WASI trên Linux. Đồng thời thêm Tools/wasm/build_wasi.sh làm tài liệu triển khai tham khảo.
gh-89886: Hiện cần có Autoconf 2.71 và aclocal 1.16.4 để tạo lại
configure.gh-104692: Bao gồm
commoninstalllàm điều kiện tiên quyết chobininstallĐiều này đảm bảo rằng
commoninstallđược hoàn thành trước khibininstallđược khởi động khi sử dụng các bản dựng song song (make -j install) và do đó, liên kết tượng trưngpython3chỉ được cài đặt sau khi tất cả các mô-đun thư viện tiêu chuẩn được cài đặt.gh-101538: Thêm hỗ trợ wasi-thread thử nghiệm. Bản vá của Takashi Yamamoto.
cửa sổ¶
gh-110437: Cho phép ghi đè nguồn của các bản phân phối lại VC để các bản phát hành có thể được đảm bảo không bao giờ hạ cấp giữa các bản cập nhật.
gh-109286: Cập nhật trình cài đặt Windows để sử dụng SQLite 3.43.1.
gh-82367:
os.path.realpath()hiện phân giải tên tệp kiểu MS-DOS ngay cả khi không thể truy cập được tệp. Bản vá của Moonsik Park.gh-109991: Cập nhật bản dựng Windows để sử dụng OpenSSL 3.0.11.
gh-106242: Sửa
realpath()để hoạt động nhất quán khi đi qua đường dẫn chứa ký tự null được nhúng trên Windows. Ở chế độ nghiêm ngặt, giờ đây nó tăngOSErrorthay vìValueErrorbất ngờ và ở chế độ không nghiêm ngặt sẽ làm cho đường dẫn trở nên tuyệt đối.gh-83180: Thay đổi Trình quản lý cài đặt Python để ưu tiên môi trường ảo đang hoạt động khi tập lệnh được khởi chạy có dòng shebang sử dụng lệnh ảo giống Unix, ngay cả khi lệnh yêu cầu một phiên bản Python cụ thể.
gh-106844: Sửa lỗi tràn số nguyên và cắt bớt ký tự null trong
_winapi.LCMapStringEx()ảnh hưởng đếnntpath.normcase().gh-105436: Đảm bảo rằng khối môi trường trống được kết thúc bằng hai ký tự null, theo yêu cầu của Windows.
gh-105146: Đã cập nhật các liên kết ở cuối trình cài đặt để trỏ đến Diễn ngôn thay vì danh sách gửi thư.
gh-103646: Khi được cài đặt từ Microsoft Store,
pipkhông còn được mặc định cho các lượt cài đặt theo mỗi người dùng nữa. Tuy nhiên, vì thư mục cài đặt không thể ghi được nên nó sẽ tự động quyết định thực hiện cài đặt cho mỗi người dùng. Điều này sẽ giải quyết các vấn đề khipipđược thông qua một tùy chọn xung đột với--user.gh-88745: Cải thiện hiệu suất của
shutil.copy2()bằng cách sử dụng chức năngCopyFile2của hệ điều hành. Điều này có thể dẫn đến những thay đổi nhỏ đối với siêu dữ liệu được sao chép cùng với một số tệp, khiến chúng phù hợp với hoạt động bình thường của hệ điều hành.gh-104820: Sửa lỗi
stat()và các chức năng liên quan trên hệ thống tệp không hỗ trợ yêu cầu ID tệp. Điều này bao gồm FAT32 và exFAT.gh-104803: Thêm
os.path.isdevdrive()để phát hiện xem đường dẫn có nằm trên Windows Dev Drive hay không. Trả vềFalsetrên nền tảng không hỗ trợ Dev Drive và không có trên nền tảng không phải Windows.
macOS¶
IDLE¶
gh-104719: Xóa sửa đổi tokenize.tabsize của IDLE và kiểm tra các cách sử dụng khác của dữ liệu và phương thức tokenize.
Công cụ/Bản trình diễn¶
gh-109991: Cập nhật quy trình công việc GitHub CI để sử dụng OpenSSL 3.0.11 và multissltests để sử dụng 1.1.1w, 3.0.11 và 3.1.3.
gh-108494: Argument Clinic hiện đã hỗ trợ một phần Limited API: xem documentation in the Python Developer's Guide Patch của Victor Stinner.
gh-107704: Giờ đây, bạn có thể ngừng truyền đối số từ khóa cho tham số từ khóa hoặc vị trí bằng Argument Clinic bằng cách sử dụng cú pháp
/ [from X.Y]mới. (Được đọc là "positional-only from Python version X.Y".) Xem documentation in the Python Developer's Guide để biết thêm thông tin.gh-107880: Argument Clinic hiện có thể sao chép các phương thức
__init__()và__new__().gh-104683: Thêm tùy chọn
--excludevào Argument Clinic CLI.gh-95065: Argument Clinic hiện hỗ trợ ghi đè chữ ký được tạo tự động bằng cách sử dụng lệnh
@text_signature. Xem documentation in the Python Developer's Guidegh-107609: Sửa lỗi kiểm tra mô-đun trùng lặp trong Argument Clinic. Trước đây, một định nghĩa trùng lặp sẽ được âm thầm chấp nhận một cách không chính xác. Bản vá của Erlend E. Aasland.
gh-107467: Công cụ dòng lệnh Argument Clinic hiện in ra stderr thay vì stdout khi bị lỗi.
gh-106970: Sửa lỗi trong lệnh Argument Clinic
destination <name> clear; bộ đệm đích sẽ không bao giờ bị xóa và trình phân tích cú pháp chỉ thịdestinationsẽ chỉ tiếp tục xử lý lỗi sau khi xử lý lệnh. Bản vá của Erlend E. Aasland.gh-106706: Thay đổi cú pháp mã byte cho các họ để loại bỏ cú pháp giả khớp tên dư thừa.
gh-106359: Phòng khám đối số hiện cấm rõ ràng "các biểu tượng kwarg" trong lệnh gọi hàm được sử dụng làm chú thích.
gh-103186:
freezehiện tìm nạpCONFIG_ARGStừ phiên bản CPython ban đầu mà Makefile sử dụng để gọi các tập lệnh tiện ích. Bản vá của Ijtaba Hussain.gh-95065: Hiện tại có thể ngừng sử dụng các tham số truyền theo vị trí với Argument Clinic bằng cách sử dụng cú pháp
* [from X.Y]mới. (Được đọc là "keyword-only from Python version X.Y".) Xem documentation in the Python Developer's Guide để biết thêm thông tin. Bản vá của Erlend E. Aasland với sự trợ giúp của Alex Waygood, Nikita Sobolev và Serhiy Storchaka.
C API¶
gh-85283: Nếu macro
Py_LIMITED_APIđược xác định, các macroPy_BUILD_CORE,Py_BUILD_CORE_BUILTINvàPy_BUILD_CORE_MODULEhiện không được xác định bởi<Python.h>. Bản vá của Victor Stinner.gh-110289: Thêm chức năng
PyUnicode_EqualToUTF8AndSize()vàPyUnicode_EqualToUTF8().gh-110235: Tăng
TypeErrorcho các trường trùng lặp/không xác định trong hàm tạoPyStructSequence. Được vá bởi Xuehai Pan.gh-110014: Xóa hằng số
PY_TIMEOUT_MAXkhông có giấy tờ khỏi C API bị giới hạn. Bản vá của Victor Stinner.gh-109521:
PyImport_GetImporter()hiện đặt RuntimeError nếu không nhận đượcsys.path_hookshoặcsys.path_importer_cachehoặc chúng không có trong danh sách và lệnh chính tả tương ứng. Trước đây, nó có thể trả về NULL mà không đặt lỗi trong các trường hợp khó hiểu, gặp sự cố hoặc tăng SystemError nếu các thuộc tính này có loại sai.gh-85283: Thêm hàm
PySys_AuditTuple(): tương tự nhưPySys_Audit(), nhưng truyền đối số sự kiện dưới dạng đối tượngtuplecủa Python. Bản vá của Victor Stinner.gh-108867: Thêm chức năng
PyThreadState_GetUnchecked(): tương tự nhưPyThreadState_Get(), nhưng không giết tiến trình với lỗi nghiêm trọng nếu đó là NULL. Người gọi có trách nhiệm kiểm tra xem kết quả có phải là NULL hay không. Trước đây, chức năng này là riêng tư và được gọi là_PyThreadState_UncheckedGet(). Bản vá của Victor Stinner.gh-108765:
Python.hkhông còn bao gồm tệp tiêu đề chuẩn<ctype.h>nữa. Nếu cần, bây giờ nó sẽ được đưa vào một cách rõ ràng. Ví dụ: nó cung cấp các hàmisalpha()vàtolower()phụ thuộc vào miền địa phương. Python cung cấp các hàm độc lập với miền địa phương, nhưPy_ISALPHA()vàPy_TOLOWER(). Bản vá của Victor Stinner.gh-108765:
Python.hkhông còn bao gồm tệp tiêu đề chuẩn<unistd.h>nữa. Nếu cần, bây giờ nó sẽ được đưa vào một cách rõ ràng. Ví dụ: nó cung cấp các chức năng:close(),getpagesize(),getpid()vàsysconf(). Bản vá của Victor Stinner.gh-108765:
Python.hkhông còn bao gồm tiêu đề chuẩn<ieeefp.h>nữa. Nó được bao gồm cho chức năngfinite()hiện được cung cấp bởi tiêu đề<math.h>. Bây giờ nó sẽ được đưa vào một cách rõ ràng nếu cần. Loại bỏ macroHAVE_IEEEFP_H. Bản vá của Victor Stinner.gh-108765:
Python.hkhông còn bao gồm các tệp tiêu đề tiêu chuẩn sau:<time.h>,<sys/select.h>và<sys/time.h>. Nếu cần, bây giờ chúng sẽ được đưa vào một cách rõ ràng. Ví dụ:<time.h>cung cấp các hàmclock()vàgmtime(),<sys/select.h>cung cấp hàmselect()và<sys/time.h>cung cấp các hàmfutimes(),gettimeofday()vàsetitimer(). Bản vá của Victor Stinner.gh-108511: Thêm chức năng
PyObject_HasAttrWithError(),PyObject_HasAttrStringWithError(),PyMapping_HasKeyWithError()vàPyMapping_HasKeyStringWithError().gh-107073: Thêm các hàm
PyObject_VisitManagedDict()vàPyObject_ClearManagedDict()phải được gọi bằng các hàm duyệt và xóa của một loại bằng cách sử dụng cờPy_TPFLAGS_MANAGED_DICT. Bản vá của Victor Stinner.gh-108634: Python được xây dựng bằng
configure--with-trace-refs(tham chiếu theo dõi) hiện hỗ trợ Limited API. Bản vá của Victor Stinner.gh-108014: Thêm chức năng
PyLong_AsInt(): tương tự nhưPyLong_AsLong(), nhưng lưu kết quả vào C int thay vì C long. Trước đây, nó được gọi là hàm riêng_PyLong_AsInt()(có tiền tố gạch dưới). Bản vá của Victor Stinner.gh-108314: Thêm chức năng
PyDict_ContainsString(): giống nhưPyDict_Contains(), nhưng key được chỉ định dưới dạng chuỗi byte được mã hóa const char* UTF-8, thay vì PyObject*. Bản vá của Victor Stinner.gh-108337: Thêm các thao tác nguyên tử trên các kiểu dữ liệu bổ sung trong pyatomic.h.
gh-108014: Thêm chức năng
Py_IsFinalizing(): kiểm tra xem trình thông dịch Python chính có phải là shutting down không. Bản vá của Victor Stinner.gh-107916: C API có các hàm
PyErr_SetFromErrnoWithFilename(),PyErr_SetExcFromWindowsErrWithFilename()vàPyErr_SetFromWindowsErrWithFilename()lưu ngay mã lỗi trước khi gọiPyUnicode_DecodeFSDefault().gh-107915: Các chức năng C API như
PyErr_SetString(),PyErr_Format(),PyErr_SetFromErrnoWithFilename()và nhiều chức năng khác không còn gặp sự cố hoặc bỏ qua lỗi nếu không định dạng được thông báo lỗi hoặc giải mã tên tệp. Thay vào đó, họ giữ một lỗi tương ứng.gh-107810: Cải thiện
DeprecationWarningđể sử dụngPyType_Specvới siêu dữ liệu cótp_newtùy chỉnh.gh-107249: Triển khai macro
Py_UNUSEDcho trình biên dịch MSVC của Windows. Bản vá của Victor Stinner.gh-107226:
PyModule_AddObjectRef()hiện chỉ có sẵn trong phiên bản giới hạn API 3.10 trở lên.gh-106320: Xóa bí danh
_PyUnicode_AsString()riêng tư thànhPyUnicode_AsUTF8(). Nó được giữ để tương thích ngược với Python 3.0 - 3.2. Zz002zz có sẵn kể từ Python 3.3. HàmPyUnicode_AsUTF8String()có thể được sử dụng để duy trì khả năng tương thích với Python 3.2 trở lên. Bản vá của Victor Stinner.gh-106572: Chuyển đổi macro
PyObject_DelAttr()vàPyObject_DelAttrString()thành hàm. Bản vá của Victor Stinner.gh-106307: Thêm chức năng
PyMapping_GetOptionalItem().gh-106521: Thêm chức năng
PyObject_GetOptionalAttr()vàPyObject_GetOptionalAttrString().gh-106320: Xóa bí danh
_PyInterpreterState_Get()thànhPyInterpreterState_Get()được giữ để tương thích ngược với Python 3.8. Bản vá của Victor Stinner.gh-106316: Xóa tệp tiêu đề
cpython/pytime.h: nó chỉ chứa các chức năng riêng tư. Bản vá của Victor Stinner.gh-106023: Xóa chức năng
_PyObject_FastCall()riêng tư: sử dụngPyObject_Vectorcall()có sẵn kể từ Python 3.8 (PEP 590). Bản vá của Victor Stinner.gh-106168: Nếu Python được xây dựng bằng debug mode hoặc
with assertions,PyTuple_SET_ITEM()vàPyList_SET_ITEM()bây giờ hãy kiểm tra đối số chỉ mục bằng một xác nhận. Nếu xác nhận không thành công, hãy đảm bảo rằng kích thước được đặt trước đó. Bản vá của Victor Stinner.gh-106084: Xóa các bí danh cũ cho các hàm gọi hàm được giữ lại để tương thích ngược với API tạm thời của Python 3.8:
_PyObject_CallMethodNoArgs(): sử dụngPyObject_CallMethodNoArgs()_PyObject_CallMethodOneArg(): sử dụngPyObject_CallMethodOneArg()_PyObject_CallOneArg(): sử dụngPyObject_CallOneArg()_PyObject_FastCallDict(): sử dụngPyObject_VectorcallDict()_PyObject_Vectorcall(): sử dụngPyObject_Vectorcall()_PyObject_VectorcallMethod(): sử dụngPyObject_VectorcallMethod()_PyVectorcall_Function(): sử dụngPyVectorcall_Function()
Chỉ cần xóa tiền tố gạch dưới để cập nhật mã của bạn. Bản vá của Victor Stinner.
gh-106004: Thêm chức năng
PyDict_GetItemRef()vàPyDict_GetItemStringRef(): tương tự nhưPyDict_GetItemWithError()nhưng trả về strong reference thay vì borrowed reference. Bản vá của Victor Stinner.gh-105927: Không dùng các hàm
PyWeakref_GetObject()vàPyWeakref_GET_OBJECT(): thay vào đó hãy sử dụng hàmPyWeakref_GetRef()mới. Bản vá của Victor Stinner.gh-105927: Thêm chức năng
PyWeakref_GetRef(): tương tự nhưPyWeakref_GetObject()nhưng trả về strong reference hoặcNULLnếu người giới thiệu không còn tồn tại. Bản vá của Victor Stinner.gh-105922: Thêm
PyImport_AddModuleRef(): tương tự nhưPyImport_AddModule(), nhưng trả về strong reference thay vì borrowed reference. Bản vá của Victor Stinner.gh-105227:
PyType_GetDict()mới cung cấp từ điển cho đối tượng loại nhất định thường đượccls.__dict__hiển thị. Thông thường, chỉ cần sử dụngtp_dictlà đủ, nhưng đối với các kiểu dựng sẵn tĩnh,tp_dictgiờ đây luôn làNULL. Thay vào đó,PyType_GetDict()cung cấp đối tượng dict chính xác.gh-105375: Sửa lỗi trong
PyErr_WarnExplicit()trong đó một ngoại lệ có thể bị ghi đè nếu API bị lỗi nội bộ.gh-105603: Chúng tôi đã đổi tên
PyInterpreterConfig.own_gilmới (trong 3.12) thànhPyInterpreterConfig.gilvà thay đổi ý nghĩa của giá trị từ "bool" thành số nguyên với các giá trị được hỗ trợ làPyInterpreterConfig_DEFAULT_GIL,PyInterpreterConfig_SHARED_GILvàPyInterpreterConfig_OWN_GIL. Mặc định là "chia sẻ".gh-105387: Trong phiên bản giới hạn C API 3.12, các hàm
Py_INCREF()vàPy_DECREF()hiện được triển khai dưới dạng lệnh gọi hàm mờ để ẩn chi tiết triển khai. Bản vá của Victor Stinner.gh-105396: Không dùng nữa hàm
PyImport_ImportModuleNoBlock()vốn chỉ là bí danh củaPyImport_ImportModule()kể từ Python 3.3. Bản vá của Victor Stinner.gh-103968:
PyType_FromMetaclass()hiện cho phép siêu dữ liệu vớitp_newđược đặt thànhNULL.gh-105268: Xóa macro
_PyGC_FINALIZED()riêng tư, không có giấy tờ và chưa được kiểm tra cũ được giữ lại để tương thích ngược với Python 3.8 trở lên. Bản vá của Victor Stinner.gh-105182: Xóa các hàm
PyEval_AcquireLock()vàPyEval_ReleaseLock(), không được dùng nữa trong Python 3.2. Bản vá của Victor Stinner.gh-105182: Xóa các hàm
PyEval_InitThreads()vàPyEval_ThreadsInitialized(), không được dùng nữa trong Python 3.9. Bản vá của Victor Stinner.gh-105145: Không dùng nữa các hàm khởi tạo Python cũ:
Bản vá của Victor Stinner.
gh-85275:
PyObject_AsCharBuffer(),PyObject_AsReadBuffer(),PyObject_CheckReadBuffer()vàPyObject_AsWriteBuffer()bị xóa. Vui lòng chuyển sang giao thức đệm mới;PyObject_GetBuffer()vàPyBuffer_Release().gh-105156: Không dùng nữa loại
Py_UNICODEvàPY_UNICODE_TYPEcũ: thay vào đó hãy sử dụng trực tiếp loạiwchar_t. Vì Python 3.3,Py_UNICODEvàPY_UNICODE_TYPEchỉ là bí danh củawchar_t. Bản vá của Victor Stinner.gh-105145: Xóa các hàm cũ sau để định cấu hình khởi tạo Python, không được dùng nữa trong Python 3.11:
PySys_AddWarnOptionUnicode()PySys_AddWarnOption()PySys_AddXOption()PySys_HasWarnOptions()PySys_SetArgvEx()PySys_SetArgv()PySys_SetPath()Py_SetPath()Py_SetProgramName()Py_SetPythonHome()Py_SetStandardStreamEncoding()_Py_SetProgramFullPath()
Bản vá của Victor Stinner.
gh-105107: Xóa các hàm không được dùng nữa trong Python 3.9.
PyEval_CallObject(),PyEval_CallObjectWithKeywords(): thay vào đó hãy sử dụngPyObject_CallNoArgs()vàPyObject_Call()(đối số vị trí không được là NULL).PyEval_CallFunction(): thay vào đó hãy sử dụngPyObject_CallFunction().PyEval_CallMethod(): thay vào đó hãy sử dụngPyObject_CallMethod().PyCFunction_Call(): thay vào đó hãy sử dụngPyObject_Call().
Bản vá của Victor Stinner.
gh-105115:
PyTypeObject.tp_bases(vàtp_mro) cho các kiểu tĩnh dựng sẵn hiện được chia sẻ bởi tất cả các trình thông dịch, trong khi ở 3.12-beta1, chúng được lưu trữ trênPyInterpreterState. Cũng lưu ý rằng bây giờ các bộ dữ liệu là những vật thể bất tử.gh-105071: Thêm
PyUnstable_Exc_PrepReraiseStarvào api C không ổn định để lộ cách triển khaiexcept*.gh-104922:
PY_SSIZE_T_CLEANkhông còn cần thiết để sử dụng các định dạng'#'trong các API nhưPyArg_ParseTuple()vàPy_BuildValue(). Họ sử dụngPy_ssize_tcho'#'bất kểPY_SSIZE_T_CLEAN.gh-104584: Thêm một C API không ổn định để nối vào trình tối ưu hóa. Đây chủ yếu là nội bộ, nhưng được đánh dấu là "không ổn định" để cho phép bên thứ ba thử nghiệm.
gh-104668: Không gọi
PyOS_InputHookhoặcPyOS_ReadlineFunctionPointertrong các trình thông dịch phụ, vì nhìn chung khó tránh khỏi việc sử dụng trạng thái chung trong lệnh gọi lại đã đăng ký của chúng. Điều này cũng tránh các tình huống trong đó các tiện ích mở rộng có thể chạy trong trình thông dịch phụ mà chúng không hỗ trợ (hoặc chưa được tải vào).bpo-42327: Thêm chức năng
PyModule_Add(): tương tự nhưPyModule_AddObjectRef()vàPyModule_AddObject(), nhưng luôn lấy tham chiếu đến giá trị.bpo-40309: Xử lý đúng cách các khoảng trắng ở cuối trước khi đóng dấu ngoặc đơn trong chuỗi định dạng
Py_BuildValue().
Python 3.12.0 beta 1¶
Release date: 2023-05-22
Bảo mật¶
gh-99889: Đã khắc phục lỗ hổng bảo mật trong
uu.decode()có thể cho phép truyền tải thư mục dựa trên đầu vào nếu không chỉ địnhout_file.gh-104049: Không hiển thị vị trí cục bộ trên đĩa trong các chỉ mục thư mục do
http.client.SimpleHTTPRequestHandlertạo.gh-99108: Nâng cấp triển khai
hashlibSHA3 tích hợp lên triển khai đã được xác minh từ dự ánHACL*. Được sử dụng khi OpenSSL không có hoặc thiếu SHA3.gh-102153:
urllib.parse.urlsplit()hiện loại bỏ các ký tự khoảng trắng và điều khiển C0 hàng đầu theo thông số kỹ thuật cho các URL được xác định bởi WHATWG để phản hồi lại CVE 2023-24329. Bản vá của Illia Volochii.
Thư viện¶
Cốt lõi và nội dung¶
gh-104615: Sửa sai thứ tự gán bài tập trong mã như
a, a = x, y. Đóng góp bởi Carl Meyer.gh-104572: Cải thiện thông báo lỗi cú pháp cho các cấu trúc không hợp lệ trong ngữ cảnh PEP 695 và trong các chú thích khi
from __future__ import annotationshoạt động.gh-104482: Sửa ba lỗi xử lý lỗi trong quá trình xác thực các câu lệnh khớp mẫu của ast.c.
gh-102818: Không thêm khung vào traceback trong chức năng trampoline
sys.setprofilevàsys.settrace. Điều này đảm bảo rằng các khung không bị trùng lặp nếu một ngoại lệ được nêu ra trong hàm gọi lại và đảm bảo rằng các khung không bị bỏ qua nếu sử dụng lệnh gọi lại C và điều đó không thêm khung.gh-104405: Khắc phục sự cố trong đó một số lệnh bytecode có thể bỏ qua PEP 523 khi gọi "nội tuyến".
gh-103082: Thay đổi hành vi của các sự kiện
sys.monitoring.events.LINEtrongsys.monitoring: Các sự kiện dòng hiện xảy ra khi một dòng mới được truy cập một cách linh hoạt, thay vì sử dụng phép tính gần đúng tĩnh như trước đây. Điều này làm cho hành vi rất giống với hành vi của các sự kiện "dòng" trongsys.settrace. Điều này sẽ giúp dễ dàng chuyển các công cụ từ 3.11 sang 3.12.gh-104263: Sửa
float("nan")để tạo ra NaN yên tĩnh trên các nền tảng (như MIPS), trong đó ý nghĩa của bit tín hiệu/im lặng bị đảo ngược so với ý nghĩa thông thường của nó. Đồng thời giới thiệu một macroPy_INFINITYmới phù hợp vớiINFINITYcủa C99 và tái cấu trúc các phần bên trong để dựa vào các macroNANvàINFINITYcủa C99 thay vì các mẫu bit mã hóa cứng cho vô cực và NaN. Cảm ơn Sebastian Berg.gh-99113: Các mô-đun mở rộng init nhiều pha hiện có thể cho biết rằng chúng hỗ trợ chạy trong các trình thông dịch phụ có GIL riêng. Điều này được thực hiện bằng cách sử dụng
Py_MOD_PER_INTERPRETER_GIL_SUPPORTEDlàm giá trị cho khe def mô-đunPy_mod_multiple_interpreters. Nếu không, theo mặc định, mô-đun không thể được nhập vào các trình thông dịch phụ như vậy. (Điều này không ảnh hưởng đến trình thông dịch chính hoặc các trình thông dịch phụ không có GIL riêng.) Ngoài khả năng cách ly mà init nhiều pha thường yêu cầu, việc hỗ trợ cho mỗi trình thông dịch GIL còn bao gồm một hạn chế bổ sung: an toàn luồng. Nếu mô-đun có các phần phụ thuộc (được liên kết) bên ngoài và các thư viện đó có bất kỳ trạng thái nào không an toàn cho luồng thì mô-đun đó phải thực hiện công việc bổ sung để thêm an toàn cho luồng. Đây phải là một trường hợp hiếm gặp.gh-99113: GIL hiện là (tùy chọn) cho mỗi phiên dịch. Đây là thay đổi cơ bản đối với PEP 684. Tất cả điều này có thể thực hiện được nhờ trạng thái biệt lập của mỗi trình thông dịch trong quy trình. Hành vi của trình thông dịch chính vẫn không thay đổi. Tương tự, các trình thông dịch được tạo bằng
Py_NewInterpreter()cũng không bị ảnh hưởng. Để có được một thông dịch viên có GIL riêng, hãy gọiPy_NewInterpreterFromConfig().gh-104108: Các mô-đun mở rộng init nhiều pha hiện có thể cho biết liệu chúng có thực sự hỗ trợ nhiều trình thông dịch hay không. Theo mặc định, các mô-đun như vậy dự kiến sẽ hỗ trợ sử dụng trong nhiều trình thông dịch. Trong trường hợp hiếm gặp là không có, nó có thể sử dụng khe cắm def mô-đun
Py_mod_multiple_interpretersmới. Giá trị0có nghĩa là mô-đun không hỗ trợ chúng.1có nghĩa là có. Mặc định là1.gh-104142: Khắc phục sự cố trong đó việc lặp lại
listhoặctuplecó thể không tôn trọng PEP 683.gh-104078: Cải thiện hiệu suất của
PyObject_HasAttrString()gh-104066: Cải thiện hiệu suất của
hasattr()cho các đối tượng mô-đun bị thiếu thuộc tính.gh-104028: Giảm việc tạo đối tượng trong khi gọi hàm gọi lại từ gc. Bản vá của Donghee Na.
gh-104018: Không cho phép trình xác định định dạng "z" ở định dạng % của đối tượng byte.
gh-102213: Khắc phục tình trạng mất hiệu suất khi truy cập các thuộc tính của đối tượng được xác định
__getattr__.gh-103895: Cải thiện khả năng xử lý các trường hợp khó khăn khi hiển thị
Exception.__notes__. Đảm bảo rằng các tin nhắn luôn kết thúc bằng một dòng mới và chuỗi/byte đó không bị phân tán trên nhiều dòng. Bản vá của Carey Metcalfe.gh-103907: Không sửa đổi số lần đếm của các vật thể bất tử đã biết (
True,FalsevàNone) trong vòng lặp trình thông dịch chính.gh-103899: Cung cấp gợi ý hữu ích trong thông báo
TypeErrorkhi vô tình gọi một đối tượng module có thuộc tính có thể gọi được cùng tên (chẳng hạn nhưdis.dis()hoặcdatetime.datetime).gh-103845: Xóa cả thiết bị đo dòng và thiết bị hướng dẫn trước khi thêm thiết bị mới để theo dõi, để tránh việc thiết bị đo mới được thêm vào bị xóa ngay lập tức.
gh-103763: Triển khai PEP 695, thêm hỗ trợ cú pháp cho các lớp chung, hàm chung và bí danh loại.
Một cú pháp
type X = ...mới được thêm vào cho các bí danh loại, cú pháp này sẽ phân giải trong thời gian chạy thành một phiên bản của lớptyping.TypeAliasTypemới. Giá trị được đánh giá một cách lười biếng và có thể truy cập được thông qua thuộc tính.__value__. Điều này được triển khai dưới dạng nút AST mớiast.TypeAlias.Cú pháp mới (
class X[T]: ...,def func[T](): ...) được thêm vào để xác định các hàm và lớp chung. Điều này được triển khai dưới dạng thuộc tínhtype_paramsmới trên các nút AST cho các lớp và hàm. Nút này chứa các phiên bản của các lớp AST mớiast.TypeVar,ast.ParamSpecvàast.TypeVarTuple.typing.TypeVar,typing.ParamSpec,typing.ParamSpecArgs,typing.ParamSpecKwargs,typing.TypeVarTuplevàtyping.Generichiện được triển khai bằng C thay vì Python.Có các hướng dẫn mã byte mới
LOAD_LOCALS,LOAD_CLASSDICT_OR_GLOBALvàLOAD_CLASSDICT_OR_DEREFđể hỗ trợ độ phân giải chính xác của tên trong không gian tên lớp.Bản vá của Eric Traut, Larry Hastings và Jelle Zijlstra.
Thư viện¶
Cốt lõi và nội dung¶
gh-102310: Thay đổi phạm vi lỗi cho các byte không hợp lệ.
gh-103590: Không bao bọc một ngoại lệ duy nhất được tạo ra từ cấu trúc
try-except*trongExceptionGroup.gh-103650: Thay đổi định dạng bản đồ hoàn hảo để xóa tiền tố '0x' khỏi địa chỉ
gh-102856: Triển khai các thay đổi cần thiết về mã thông báo C cho PEP 701. Bản vá của Pablo Galindo Salgado, Lysandros Nikolaou, Batuhan Taskaya, Marta Gómez Macías và sunmy2019.
gh-100530: Làm rõ thông báo lỗi nêu ra khi phần được gọi của mẫu lớp không thực sự là một lớp.
gh-103492: Làm rõ
SyntaxWarningbằng so sánhistheo nghĩa đen bằng cách chỉ định nghĩa đen nào có vấn đề, vì so sánh sử dụngisvới ví dụ:Nonevà bool nghĩa đen là thành ngữ.gh-87729: Thêm
LOAD_SUPER_ATTR(và chuyên môn hóa chosuper().method()) để tăng tốcsuper().method()vàsuper().attr. Điều này làm chosuper().method()nhanh hơn khoảng 2,3 lần và mang lại hiệu suất chỉ bằng 20% so với lệnh gọi phương thức đơn giản. Bản vá của Vladimir Matveev và Carl Meyer.gh-103488: Thay đổi địa chỉ mục tiêu trả về và sản lượng phân biệt bù đắp bên trong để con trỏ lệnh chính xác cho việc xử lý ngoại lệ và giải phóng ngăn xếp khác.
gh-82012: Toán tử đảo ngược bitwise (
~) trên bool không được dùng nữa. Nó trả về sự đảo ngược bitwise của biểu diễnintcơ bản sao chobool(~True) == True, điều này có thể gây nhầm lẫn. Sử dụngnotđể phủ định logic các bool. Trong trường hợp hiếm hoi mà bạn thực sự cần đảo ngược bitwise củaintcơ bản, hãy chuyển đổi thành int~int(x)một cách rõ ràng.gh-77757: Các ngoại lệ được đưa ra trong phương thức
__set_name__của typeobject không còn được bao bọc bởiRuntimeErrornữa. Thông tin ngữ cảnh được thêm vào ngoại lệ dưới dạng ghi chú PEP 678.gh-103333:
AttributeErrorhiện giữ lại thuộc tínhnamekhi được ngâm và không được ngâm.gh-103242: Di chuyển phương thức
set_ecdh_curve()để không sử dụng API OpenSSL không được dùng nữa. Bản vá của Donghee Na.gh-103323: Chúng tôi đã thay thế việc sử dụng
_PyRuntime.tstate_currentbằng biến cục bộ theo luồng. Đây là chi tiết triển khai ở mức độ khá thấp và sẽ không có thay đổi nào về hành vi.gh-84436: Việc triển khai PEP-683 bổ sung các Đối tượng bất tử bằng cách sử dụng số lượng tham chiếu cố định bỏ qua việc đếm tham chiếu để làm cho các đối tượng thực sự bất biến.
gh-102700: Cho phép các mô-đun tích hợp trở thành mô-đun con. Điều này cho phép các mô-đun con được liên kết tĩnh thành mã nhị phân CPython.
gh-103082: Triển khai Giám sát tác động thấp PEP 669 cho CPython.
gh-102500: Làm cho giao thức bộ đệm có thể truy cập được bằng mã Python bằng cách sử dụng các phương thức ma thuật
__buffer__và__release_buffer__mới. Xem PEP 688 để biết chi tiết. Bản vá của Jelle Zijlstra.gh-97933: PEP 709: danh sách nội tuyến, đọc chính tả và thiết lập mức độ hiểu để cải thiện hiệu suất và giảm kích thước mã byte.
gh-99184: Bỏ qua quyền truy cập thuộc tính phiên bản của
__name__trongreprcủaweakref.ref.gh-98003: Lệnh gọi hàm phức tạp giờ đây nhanh hơn và không tiêu tốn dung lượng ngăn xếp C.
bpo-39610:
len()cho các đối tượngmemoryview0 chiều (chẳng hạn nhưmemoryview(ctypes.c_uint8(42))) hiện tăngTypeError. Trước đây, điều này đã trả về1, điều này không nhất quán với việcmem_0d[0]tăngIndexError.
Thư viện¶
bpo-31821: Sửa
pause_reading()để hoạt động khi được gọi từconnection_made()trongasyncio.gh-104600:
functools.update_wrapper()hiện đặt thuộc tính__type_params__(được thêm bởi PEP 695).gh-104340: Khi giao thức đường ống
asynciomất kết nối do lỗi và người gọi không chờwait_closed()trênStreamWritertương ứng, đừng ghi lại cảnh báo về một ngoại lệ không bao giờ được truy xuất. Xét cho cùng, theo tài liệuStreamWriter.close(), lệnh gọiwait_closed()là tùy chọn ("không bắt buộc").gh-104555: Khắc phục sự cố trong đó việc kiểm tra
issubclass()so sánh lớpXvớiruntime-checkable protocolYvới các thành viên không thể gọi được sẽ không khiếnTypeErrorđược nâng lên nếu lệnh gọiisinstance()trước đó đã được thực hiện so sánh một phiên bản củaXvớiY. Sự cố này đã xuất hiện trong các trường hợp khó khăn trên Python 3.11 nhưng trở nên nổi bật hơn trong phiên bản 3.12 do một số thay đổi không liên quan được thực hiện đối với các giao thức có thể kiểm tra thời gian chạy. Bản vá của Alex Waygood.gh-104372: Đã tái cấu trúc các phần bên trong của
_posixsubprocessđể tránh việc sử dụng Python C API giữa fork và exec khi đánh dấu các bộ mô tả tệppass_fds=có thể kế thừa.gh-104484: Đã thêm đối số case_sensitive vào
pathlib.PurePath.match()gh-75367: Sửa lỗi phát hiện bộ mô tả dữ liệu trong
inspect.getattr_static().gh-104536: Khắc phục tình trạng tương tranh trong logic dọn dẹp
multiprocessing.processnội bộ có thể biểu hiện dưới dạngAttributeErrorngoài ý muốn khi gọiprocess.close().gh-103857: Cập nhật stracktrace của datetime không được dùng nữa để trỏ đến đường dây gọi điện
gh-101520: Di chuyển chức năng cốt lõi của mô-đun
tracemalloctrong thư mụcPython/, chỉ để lại trình bao bọc mô-đun trongModules/.gh-104392: Xóa thuộc tính
_paramspec_tvarskhông có giấy tờ và không được sử dụng khỏi một số lớp trongtyping.gh-102613: Khắc phục sự cố trong đó
pathlib.Path.glob()tăngRecursionErrorkhi đi sâu vào cây thư mục.gh-103000: Cải thiện hiệu suất của
dataclasses.asdict()cho trường hợp phổ biến trong đó dict_factory làdict. Bản vá của David C Ellis.gh-104301: Cho phép khoảng trắng ở đầu trong các câu lệnh phân biệt trong
pdb.gh-104139: Hướng dẫn
urllib.parse.unsplit()giữ lại"//"khi tập hợp các URL Apple Platform Deployment kiểuitms-services://?action=generate-bugs.gh-104307:
socket.getnameinfo()hiện phát hành GIL trong khi liên hệ với máy chủ DNSgh-104310: Người dùng hiện có thể sử dụng
importlib.util.allowing_all_extensions()(trình quản lý ngữ cảnh) để tạm thời vô hiệu hóa các kiểm tra tương thích nghiêm ngặt để nhập mô-đun mở rộng trong trình thông dịch phụ.gh-87695: Khắc phục sự cố trong đó
pathlib.Path.glob()tăngOSErrorkhi gặp liên kết tượng trưng đến một đường dẫn quá dài.gh-104265: Ngăn chặn sự cố có thể xảy ra bằng cách không cho phép khởi tạo các loại
_csv.Readervà_csv.Writer. Hồi quy được giới thiệu trong 3.10.0a4 với PR 23224 (bpo-14935). Bản vá của Radislav Chugunov.gh-102613: Cải thiện hiệu suất của
pathlib.Path.glob()khi mở rộng các ký tự đại diện đệ quy ("**") bằng cách hợp nhất các ký tự đại diện liền kề và chỉ loại bỏ kết quả trùng lặp khi cần thiết.gh-65772: Xóa các nhận xét và mã không cần thiết trong Turtle.py.
gh-90208: Đã khắc phục sự cố trong đó
pathlib.Path.glob()trả về kết quả không đầy đủ khi gặpPermissionError. Phương pháp này hiện ngăn chặn tất cả các ngoại lệOSError, ngoại trừ những ngoại lệ được nêu ra từ việc gọiis_dir()trên đường dẫn cấp cao nhất.gh-104144: Tối ưu hóa
asyncio.TaskGroupkhi sử dụngasyncio.eager_task_factory(). Bỏ qua việc lên lịch gọi lại đã hoàn tất nếu tác vụ của Nhóm tác vụ hoàn thành một cách háo hức.gh-104144: Tối ưu hóa
asyncio.gather()khi sử dụngasyncio.eager_task_factory()để hoàn thành một cách háo hức nếu tất cả các fututre đều hoàn thành một cách háo hức. Tránh lên lịch các cuộc gọi lại đã thực hiện cho tương lai hoàn thành một cách háo hức.gh-104114: Khắc phục sự cố trong đó
pathlib.Path.glob()trả về các đường dẫn bằng cách sử dụng trường hợp phân đoạn không phải ký tự đại diện cho các phân đoạn đường dẫn tương ứng, thay vì trường hợp hệ thống tệp thực.gh-104104: Cải thiện hiệu suất của
pathlib.Path.glob()bằng cách sử dụngre.IGNORECASEđể triển khai đối sánh không phân biệt chữ hoa chữ thường.gh-104102: Cải thiện hiệu suất của
pathlib.Path.glob()khi đánh giá các mẫu có chứa phân đoạn'../'.gh-103822: Cập nhật kiểu trả về của
weekdaythành thuộc tính Ngày mới được thêm vàogh-103629: Cập nhật
reprcủatyping.Unpacktheo PEP 692.gh-103963: Làm cho
dishiển thị tên của các đối số choCALL_INTRINSIC_*.gh-104035: Đừng bỏ qua các phương thức
__getstate__và__setstate__do người dùng định nghĩa cho các lớp dữ liệu được cố định theo rãnh.gh-103987: Trong
mmap, sửa một số lỗi có thể dẫn đến việc truy cập vào các tệp được ánh xạ bộ nhớ sau khi chúng bị vô hiệu hóa.gh-88773: Đã thêm
turtle.teleport()vào mô-đunturtleđể di chuyển rùa đến một điểm mới mà không cần vạch đường, dù nhìn thấy hay vô hình. Bản vá của Liam Gersten.gh-103935: Sử dụng
io.open_code()để thực thi các tệp thay vìopen()thôgh-68968: Đã sửa lỗi đầu ra bị cắt xén của
assertEqual()khi đầu vào thiếu dòng mới cuối cùng.gh-100370: Khắc phục
OverflowErrortiềm năng trongsqlite3.Connection.blobopen()cho các bản dựng 32 bit. Bản vá của Erlend E. Aasland.gh-102628: Thay thế CTRL-D bằng CTRL-Z trong biểu ngữ
sqlite3CLI khi chạy trên Windows.gh-103636: Thuộc tính cấp mô-đun
JanuaryvàFebruarykhông còn được dùng nữa từcalendar.gh-103583: Cô lập các mô-đun mở rộng
_multibytecodecvà codec. Các bản vá của Erlend E. Aasland.gh-103848: Thêm kiểm tra để đảm bảo rằng các máy chủ
]trong ngoặc[được tìm thấy bởiurllib.parse.urlsplit()có định dạng IPv6 hoặc IPvFuture.gh-103872: Cập nhật bản sao đi kèm của pip lên phiên bản 23.1.2.
gh-74940: Ngôn ngữ C.UTF-8 không còn được chuyển đổi thành en_US.UTF-8, cho phép sử dụng mã hóa UTF-8 trên các hệ thống chưa cài đặt ngôn ngữ.
gh-103861: Sửa lỗi
zipfile.Zipfiletạo tệp zip không hợp lệ khiforce_zip64được sử dụng để thêm tệp vào chúng. Bản vá của Carey Metcalfe.gh-103857:
datetime.datetime.utcnow()vàdatetime.datetime.utcfromtimestamp()không được dùng nữa. (Bản vá của Paul Ganssle)gh-103839: Tránh lỗi biên dịch do không tìm thấy tommath.h khi xây dựng Tkinter dựa trên Tcl 8.7 được xây dựng bằng libtommath đi kèm.
gh-103791:
contextlib.suppresshiện hỗ trợ loại bỏ các ngoại lệ được đưa ra như một phần củaExceptionGroup. Nếu các ngoại lệ khác tồn tại trong nhóm, chúng sẽ được đưa lại vào một nhóm không chứa các ngoại lệ bị loại bỏ.gh-90750: Sử dụng
datetime.datetime.fromisocalendar()khi triển khaidatetime.datetime.strptime(), hiện chỉ chấp nhận các ngày ISO hợp lệ. (Bản vá của Paul Ganssle)gh-103685: Chuẩn bị
tkinter.Menu.index()cho Tk 8.7 để nó không tăngTclError: expected integer but got ""khi cần trả vềNone.gh-81403:
urllib.request.CacheFTPHandlerkhông còn tăngURLErrornếu phiên bản FTP được lưu trong bộ nhớ đệm được sử dụng lại. Phương thức endtransfer của ftplib gọi voidresp để thoát kết nối nhằm xử lý việc tái sử dụng phiên bản FTP đúng cách.gh-103699: Thêm
__orig_bases__vào TypedDicts không chung chung, TypedDicts dựa trên cuộc gọi và NamedTuples dựa trên cuộc gọi. Các TypedDicts và NamedTuples khác đã có thuộc tính này.gh-92248: Không dùng nữa các tham số
type,choicesvàmetavarcủaargparse.BooleanOptionalAction.gh-89415: Thêm hằng số
socketcho phát đa hướng theo nguồn cụ thể. Bản vá của Reese Hyde.gh-103673:
socketservernhận được các lớpForkingUnixStreamServervàForkingUnixDatagramServer. Bản vá của Jay Berry.gh-103636: Đã thêm Enum cho tháng và ngày trong mô-đun lịch.
gh-84976: Tạo tệp
Lib/_pydatetime.pymới xác định phiên bản Python của mô-đundatetimevà khiếndatetimechỉ nhập nội dung của thư viện mới nếu thiếu triển khai C. Hiện tại, việc triển khai Python đầy đủ được xác định và sau đó bị xóa nếu việc triển khai C không khả dụng, làm chậmimport datetimemột cách không cần thiết.gh-103596: Thuộc tính/phương thức không còn bị che khuất bởi các thành viên enum cùng tên, mặc dù chúng có thể bị che khuất bởi enum.property.
gh-103584: Đã cập nhật
importlib.metadatavới những thay đổi từimportlib_metadata5.2 đến 6.5.0, bao gồm: Hỗ trợinstalled-files.txtchoDistribution.fileskhi có.PackageMetadatahiện quy định một phương phápgetbổ sung cho phép truy vấn dễ dàng các khóa siêu dữ liệu có thể không có.packages_distributionshiện vinh danh các gói và mô-đun có mô-đun Python không phải nguồn.py(ví dụ:.pyc,.so). Mở rộng giao thức choPackageMetadata.get_allđể phù hợp với cách triển khai ngược dòng củaemail.message.Message.get_alltrong python/typeshed#9620. Không còn sử dụngDistributionmà không xác định các phương thức trừu tượng. Không còn kỳ vọng rằngPackageMetadata.__getitem__sẽ trả vềNonecho các khóa bị thiếu. Trong tương lai, nó sẽ tăngKeyError.gh-103578: Đã sửa lỗi
pdbgặp sự cố khi đọc tệp nguồn có mã hóa khác bằng cách thay thếio.open()bằngio.open_code(). Phương thức mới cũng sẽ gọi vào hook doPyFile_SetOpenCodeHook()đặt.gh-103556: Hiện không thể tạo các đối tượng
inspect.Signaturevới tham số chỉ vị trí với mặc định theo sau là tham số vị trí hoặc từ khóa mà không có tham số nào.gh-103559: Cập nhật bản sao đi kèm của pip lên phiên bản 23.1.1.
gh-103548: Cải thiện hiệu suất của
pathlib.Path.absolute()vàcwd()bằng cách chỉ nối các đường dẫn khi cần thiết. Đồng thời cải thiện hiệu suất củapathlib.PurePath.is_absolute()trên Posix bằng cách bỏ qua quá trình phân tích cú pháp và chuẩn hóa đường dẫn.gh-103538: Xóa mã mô-đun
_tkinterđược bảo vệ theo định nghĩa của macroTK_AQUAvốn chỉ cần cho Tk 8.4.7 trở về trước và chưa bao giờ thực sự được xác định bởi bất kỳ hệ thống xây dựng hoặc tài liệu nào để sử dụng thủ công.gh-103525: Sửa thông báo ngoại lệ gây hiểu lầm khi các đối số
strvàbyteshỗn hợp được cung cấp chopathlib.PurePathvàPath.gh-103489: Thêm
getconfig()vàsetconfig()vàoConnectionđể thực hiện thay đổi cấu hình cho kết nối cơ sở dữ liệu. Bản vá của Erlend E. Aasland.gh-103365: Đặt ranh giới Cờ mặc định thành
STRICTvà sửa các thao tác theo bit.gh-103472: Tránh
ResourceWarningtiềm ẩn tronghttp.client.HTTPConnectionbằng cách đóng phản hồi CONNECT của proxy/đường hầm một cách rõ ràng.gh-103462: Đã khắc phục sự cố khi sử dụng
writelines()trongasynciođể gửi tải trọng rất lớn vượt quá lượng dữ liệu có thể được ghi trong một lệnh gọi tớisocket.socket.send()hoặcsocket.socket.sendmsg(), dẫn đến bộ đệm còn lại không được ghi.gh-103449: Sửa lỗi tạo chuỗi tài liệu trong
dataclasses.dataclass().gh-103092: Cô lập
_collections(áp dụng PEP 687). Bản vá của Erlend E. Aasland.gh-103357: Đã thêm hỗ trợ cho tham số
logging.Formatterdefaultschologging.config.dictConfig()vàlogging.config.fileConfig(). Bản vá của Bar Harel.gh-74690: Hiệu suất kiểm tra
isinstance()so vớiruntime-checkable protocolsđã được cải thiện đáng kể đối với các giao thức chỉ có một vài thành viên. Để đạt được cải tiến này, một số chi tiết triển khai nội bộ của mô-đuntypingđã được tái cấu trúc, bao gồmtyping._ProtocolMeta.__instancecheck__,typing._is_callable_members_onlyvàtyping._get_protocol_attrs. Các bản vá của Alex Waygood.gh-74690: Các thành viên của giao thức có thể kiểm tra thời gian chạy hiện được coi là "đóng băng" khi chạy ngay khi lớp được tạo. Xem "What's new in Python 3.12" để biết thêm chi tiết.
gh-103256: Đã khắc phục lỗi khiến
hmacđưa ra ngoại lệ khi thuật toán băm được yêu cầu không có sẵn trong OpenSSL mặc dù nó có sẵn riêng biệt như một phần củahashlib. Bây giờ nó quay trở lại đúng với phần tích hợp sẵn. Ví dụ: điều này có thể xảy ra khi OpenSSL của bạn không bao gồm hỗ trợ SHA3 và bạn muốn tính toánhmac.digest(b'K', b'M', 'sha3_256').gh-103285: Cải thiện hiệu suất của
ast.get_source_segment().gh-103225: Sửa lỗi
pdbkhi hiển thị số dòng mã nguồn cấp mô-đun.gh-103092: Điều chỉnh mô-đun mở rộng
winsoundthành PEP 687.gh-93910: Loại bỏ quyền truy cập enum
member.member.gh-102978: Sửa lỗi
unittest.mock.patch()không thực thi chữ ký hàm cho các phương thức được trang trí bằng@classmethodhoặc@staticmethodkhi bản vá được gọi bằngautospec=True.gh-103092: Cô lập
_socket(áp dụng PEP 687). Bản vá của Erlend E. Aasland.gh-100479: Thêm
pathlib.PurePath.with_segments(), tạo đối tượng đường dẫn từ các đối số. Phương thức này được gọi bất cứ khi nào một đường dẫn phái sinh được tạo, chẳng hạn như từpathlib.PurePath.parent. Các lớp con có thể ghi đè phương thức này để chia sẻ thông tin giữa các đối tượng đường dẫn.gh-103220: Khắc phục sự cố trong đó
os.path.join()thêm dấu gạch chéo khi nối vào ổ UNC chưa hoàn chỉnh có dấu gạch chéo ở cuối trên Windows.gh-103204: Sửa lỗi
http.serverchấp nhận các yêu cầu HTTP với số phiên bản HTTP đứng trước '+' hoặc '-' hoặc bằng các ký tự '_' phân tách bằng chữ số. Độ dài của số phiên bản cũng bị hạn chế.gh-75586: Khắc phục các sự cố khác nhau dành riêng cho Windows với
shutil.which.gh-103193: Cải thiện hiệu suất của
inspect.getattr_static(). Bản vá của Alex Waygood.gh-103176:
sys._current_exceptions()hiện trả về ánh xạ từ thread-id đến một phiên bản ngoại lệ, thay vì trả về bộ dữ liệu(typ, exc, tb).gh-103143: Đánh bóng các thông báo trợ giúp và tài liệu của
pdb.gh-103015: Thêm tham số chỉ từ khóa entrypoint vào
sqlite3.Connection.load_extension(), để ghi đè điểm nhập tiện ích mở rộng SQLite. Bản vá của Erlend E. Aasland.gh-103000: Cải thiện hiệu suất của
dataclasses.astuple()vàdataclasses.asdict()trong trường hợp nội dung là các loại Python phổ biến.gh-102953: Các phương thức trích xuất trong
tarfilevàshutil.unpack_archive(), có một đối số filter mới cho phép hạn chế các tính năng tar có thể gây ngạc nhiên hoặc nguy hiểm, chẳng hạn như tạo tệp bên ngoài thư mục đích. Xem Bộ lọc trích xuất để biết chi tiết.gh-97696: Triển khai nhà máy sản xuất tác vụ háo hức trong asyncio. Khi được sử dụng làm nhà máy tác vụ trên vòng lặp sự kiện, nó sẽ thực hiện việc thực thi các coroutine một cách nhanh chóng. Các coroutine có thể hoàn thành đồng bộ (ví dụ: trả về hoặc tăng mà không chặn) sẽ được trả về ngay lập tức dưới dạng một tác vụ đã hoàn thành và tác vụ đó không bao giờ được lên lịch cho vòng lặp sự kiện. Nếu coroutine chặn thì tác vụ (đang chờ xử lý) sẽ được lên lịch và trả về.
gh-81079: Thêm đối số chỉ từ khóa case_sensitive vào
pathlib.Path.glob()vàrglob().gh-101819: Cô lập mô-đun mở rộng
iobằng cách áp dụng PEP 687. Bản vá của Kumar Aditya, Victor Stinner và Erlend E. Aasland.gh-91896: Không dùng nữa
collections.abc.ByteStringgh-101362: Tăng tốc độ xây dựng
pathlib.Pathbằng cách bỏ qua neo đường dẫn khỏi danh sách nội bộ của các phần đường dẫn.gh-102114: Các hàm trong mô-đun
dischấp nhận chuỗi mã nguồn làm đối số hiện in một dấu vết ngắn gọn hơn khi chuỗi chứa lỗi cú pháp hoặc lỗi thụt lề.gh-62432: Á hậu
unittestbây giờ sẽ thoát với mã trạng thái 5 nếu không có thử nghiệm nào được chạy. Thông thường, việc cấu hình sai trình chạy thử sẽ không tìm thấy bất kỳ thử nghiệm nào, đây có thể là một lỗi.gh-78079: Khắc phục sự chuẩn hóa không chính xác của gốc đường dẫn thiết bị UNC và gốc đường dẫn chia sẻ UNC một phần, trong
pathlib.PurePath. Pathlib không còn thêm dấu gạch chéo vào các đường dẫn như vậy nữa.gh-85984: Thêm
tty.cfmakeraw()vàtty.cfmakecbreak()vàottyvà hiện đại hóa, hoạt động củatty.setraw()vàtty.setcbreak()để sử dụng POSIX.1-2017 Chương 11 mặt nạ cờ "Giao diện đầu cuối chung" theo mặc định.gh-101688: Triển khai
types.get_original_bases()để cung cấp thêm khả năng xem xét nội tâm cho các loại.gh-101640:
argparse.ArgumentParserhiện bắt lỗi khi viết tin nhắn, chẳng hạn như khisys.stderrlàNone. Bản vá của Oleg Iarygin.gh-83861: Sửa giá trị trả về của phương thức datetime.astimezone khi được gọi trên một phiên bản datetime đơn giản biểu thị giờ địa phương rơi vào khoảng cách chuyển đổi múi giờ. PEP 495 yêu cầu các phiên bản có Fold=1 tạo ra thời gian sớm hơn so với các phiên bản có Fold=0 trong trường hợp này.
gh-89550: Giảm 15% thời gian thực thi của một số tệp
gzipghi bằng cách thêm bộ đệm thích hợp hơn.gh-95299: Xóa bánh xe setuptools đi kèm khỏi
ensurepipvà ngừng cài đặt setuptools trong môi trường dovenvtạo.gh-99353: Tôn trọng cờ
http.client.HTTPConnection.debugleveltrongurllib.request.AbstractHTTPHandlerkhi tham số hàm tạodebuglevelcủa nó không được đặt. Và làm tương tự với*HTTPS*.gh-98040: Xóa mô-đun
impkhông còn được dùng nữa.gh-97850: Không dùng
pkgutil.find_loader()vàpkgutil.get_loader()mà thay vào đó làimportlib.util.find_spec().gh-94473: Làm phẳng đối số trong
tkinter.Canvas.coords(). Giờ đây nó không chỉ chấp nhậnx1, y1, x2, y2, ...và[x1, y1, x2, y2, ...]mà còn cả(x1, y1), (x2, y2), ...và[(x1, y1), (x2, y2), ...].gh-98040: Xóa thêm các API nhập khẩu không được dùng nữa:
find_loader(),find_module(),importlib.abc.Finder,pkgutil.ImpImporter,pkgutil.ImpLoader.gh-96522: Khắc phục tình trạng bế tắc tiềm ẩn trong pty.spawn()
gh-96534: Hỗ trợ chuyển hướng(4) được thêm vào FreeBSD 14.
gh-87474: Khắc phục khả năng rò rỉ bộ mô tả tệp trong
subprocess.Popen.gh-94906: Hỗ trợ nhiều bước trong
math.nextafter(). Bản vá của Shantanu Jain và Matthias Gorgens.gh-51574: Làm cho
tempfile.mkdtemp()trả về đường dẫn tuyệt đối khi tham số dir của nó là tương đối.gh-94518: Chuyển đổi
_posixsubprocess.fork_exec()riêng tư để sử dụng Argument Clinic.gh-92184: Khi tạo file zip bằng
zipfile,os.altsep, nếu không phảiNone, sẽ luôn được coi là dấu phân cách đường dẫn ngay cả khi không phải là/. Bản vá của Carey Metcalfe.bpo-46797: Cảnh báo không dùng nữa hiện được đưa ra cho
ast.Num,ast.Bytes,ast.Str,ast.NameConstantvàast.Ellipsis. Những tính năng này đã được ghi lại là không dùng nữa kể từ Python 3.8 và sẽ bị xóa trong Python 3.14.bpo-44844: Cho phép
webbrowserphát hiện và khởi chạy trình duyệt Microsoft Edge.bpo-45606: Đã sửa lỗi trong
pathlib.Path.glob()-- trước đây, phương pháp này sẽ không tìm thấy liên kết tượng trưng lơ lửng khi mẫu khớp chính xác, nhưng sẽ được tìm thấy khi mẫu chứa ký tự đại diện hoặc ký tự đại diện đệ quy (**). Với sự thay đổi này, một liên kết tượng trưng lơ lửng sẽ được tìm thấy trong cả hai trường hợp.bpo-23041: Thêm
QUOTE_STRINGSvàQUOTE_NOTNULLvào bộ kiểu trích dẫn mô-đuncsv.bpo-24964: Đã thêm
http.client.HTTPConnection.get_proxy_response_headers()cung cấp quyền truy cập vào tiêu đề HTTP trên phản hồi của máy chủ proxy đối với yêu cầuCONNECT.bpo-17258:
multiprocessinghiện hỗ trợ các thuật toán HMAC mạnh hơn để xác thực kết nối giữa các quá trình thay vì chỉ HMAC-MD5.bpo-39744: Làm cho
asyncio.subprocess.Process.communicate()đóng stdin của quy trình con ngay cả khi được gọi bằnginput=None.bpo-22708: http.client CONNECT cải tiến đường hầm phương pháp: Sử dụng giao thức HTTP 1.1; gửi tiêu đề Host: phù hợp với CONNECT, nếu không được cung cấp; chuyển đổi tên miền IDN sang Punycode. Bản vá của Michael Handler.
Tài liệu¶
gh-67056: Tài liệu cho thấy tác động của việc đăng ký hoặc hủy đăng ký chức năng dọn dẹp
atexittừ bên trong chức năng dọn dẹp đã đăng ký là không xác định.gh-103629: Đề cập đến cách gõ
**kwargsmới vớiUnpackvàTypedDictđược giới thiệu trong PEP 692.gh-48241: Tài liệu làm rõ về tham số url tới urllib.request.urlopen và urllib.request.Request cần được mã hóa chính xác.
gh-86094: Thêm hỗ trợ cho Trường bổ sung đường dẫn Unicode trong ZipFile. Bản vá của Yeojin Kim và Andrea Giudiceandrea
gh-99202: Sửa loại tiện ích mở rộng từ tài liệu để biên dịch ở chế độ C++20
Kiểm tra¶
gh-104494: Cập nhật
test_pack_configure_invàtest_place_configure_inđể thay đổi định dạng thông báo lỗi trong Tk 8.7.gh-104461: Chỉ chạy test_configure_screen trên X11, vì biến môi trường
DISPLAYvà tùy chọn-screencho cấp cao nhất không hữu ích trên Tk cho Win32 hoặc Aqua.gh-86275: Đã thêm các bài kiểm tra dựa trên thuộc tính vào các bài kiểm tra
zoneinfo, cùng với các bài kiểm tra sơ khai cho giao diệnhypothesis. (Bản vá của Paul Ganssle)gh-103329: Đã thêm các bài kiểm tra hồi quy về hoạt động của
unittest.mock.PropertyMock.gh-102795: sửa lỗi sử dụng cuộc thăm dò trong test_control_and_wait của test_epoll
gh-75729: Khắc phục lỗi kiểm tra
os.spawn*trên Windows khi thư mục làm việc hoặc đường dẫn trình thông dịch chứa khoảng trắng.
xây dựng¶
gh-101282: Tối ưu hóa BOLT hiện được áp dụng cho thư viện chia sẻ libpython nếu xây dựng thư viện dùng chung. Giờ đây, cài đặt ứng dụng và công cụ BOLT có thể bị ảnh hưởng thông qua các biến cấu hình
BOLT_INSTRUMENT_FLAGSvàBOLT_APPLY_FLAGS.gh-99017:
PYTHON_FOR_REGENhiện yêu cầu Python 3.10 trở lên.gh-104490: Xác định mục tiêu tạo
.PHONY/ảo một cách nhất quán và chính xác.gh-104106: Thêm dự phòng gcc của mkfifoat/mknodat cho macOS. Bản vá của Donghee Na.
gh-103532: Macro
TKINTER_PROTECT_LOADTKkhông còn được xác định hoặc sử dụng trong mô-đun_tkinter. Trước đây nó chỉ được xác định khi xây dựng dựa trên Tk 8.4.13 trở lên, nhưng Tk cũ hơn 8.5.12 đã không được hỗ trợ kể từ gh-91152.gh-99069: Giải pháp mở rộng xác định
static_assertkhi bị thiếu trong tiêu đề libc cho tất cả các bản dựng clang và gcc. Đặc biệt, điều này sửa lỗi xây dựng trên macOS <= 10.10.gh-100220: Đã thay đổi giá trị mặc định của biến Makefile
SHELLtừ/bin/shthành/bin/sh -eđể đảm bảo rằng các công thức phức tạp sẽ thất bại chính xác sau khi xảy ra lỗi. Trước đây,make installcó thể không cài đặt được một số tệp nhưng vẫn trả về kết quả thành công.gh-90656: Thêm bộ ba nền tảng cho LoongArch 64-bit:
loongarch64-linux-gnusf
loongarch64-linux-gnuf32
loongarch64-linux-gnu
Bản vá của Zhang Na.
cửa sổ¶
gh-104623: Cập nhật trình cài đặt Windows để sử dụng SQLite 3.42.0.
gh-82814: Khắc phục
[Errno 13] Permission deniedtiềm ẩn khi sử dụngshutil.copystat()trong Hệ thống con Windows cho Linux (WSL) trên hệ thống tệp được gắn bằng cách thêmerrno.EACCESvào danh sách các lỗi bị bỏ qua trong quá trình triển khai nội bộ.gh-103088: Sửa tập lệnh
activatemôi trường ảo có kết thúc dòng không chính xác cho Cygwin.gh-103088: Sửa lỗi venv không hoạt động trong bash trên Windows trên các đĩa khác nhau
gh-102997: Cập nhật trình cài đặt Windows để sử dụng SQLite 3.41.2.
gh-88013: Đã sửa lỗi
TypeErrorđược nâng lên khi gọintpath.realpath()bằng tham số byte trong một số trường hợp.
macOS¶
gh-99834: Cập nhật trình cài đặt macOS lên Tcl/Tk 8.6.13.
gh-104623: Cập nhật trình cài đặt macOS lên SQLite 3.42.0.
gh-103545: Thêm
os.PRIO_DARWIN_THREAD,os.PRIO_DARWIN_PROCESS,os.PRIO_DARWIN_BGvàos.PRIO_DARWIN_NONUI. Chúng có thể được sử dụng vớios.setpriorityđể chạy quy trình ở mức ưu tiên thấp hơn và tận dụng các lõi hiệu quả trên hệ thống Apple Silicon.gh-104180: Hỗ trợ đọc cấu hình proxy SOCKS từ Cấu hình hệ thống macOS. Bản vá của Sam Schott.
gh-60436: cập nhật hộp văn bản lời nguyền để xử lý thêm phím lùi bằng cách nhấn phím
curses.ascii.DEL.gh-102997: Cập nhật trình cài đặt macOS lên SQLite 3.41.2.
IDLE¶
Công cụ/Bản trình diễn¶
C API¶
gh-101291: Đã thêm C API không ổn định để trích xuất giá trị của số nguyên "nhỏ gọn":
PyUnstable_Long_IsCompact()vàPyUnstable_Long_CompactValue().gh-104109: Chúng tôi đã thêm
Py_NewInterpreterFromConfig()vàPyInterpreterConfigvào C-API công khai (nhưng chưa phải là ABI ổn định; ít nhất là chưa). Chức năng mới có thể được sử dụng để tạo một trình thông dịch mới với nhiều tính năng khác nhau được định cấu hình. Chức năng này đã được thêm vào để hỗ trợ PEP 684 (GIL cho mỗi phiên dịch viên).gh-103968:
PyType_FromSpec()và các biến thể của nó hiện cho phép tạo các lớp có siêu dữ liệu ghi đètp_new.tp_newbị bỏ qua. Hành vi này không được dùng nữa và sẽ không được phép trong phiên bản 3.14+. Zz003zz mới đã không cho phép điều đó.gh-103743: Thêm chức năng
PyUnstable_Object_GC_NewWithExtraData()có thể được sử dụng để phân bổ bộ nhớ bổ sung sau một đối tượng cho dữ liệu không được Python quản lý.gh-103295: Giới thiệu
PyUnstable_WritePerfMapEntry(),PyUnstable_PerfMapState_Init()vàPyUnstable_PerfMapState_Fini(). Điều này cho phép các mô-đun mở rộng (đặc biệt là trình biên dịch JIT) ghi vào các tệp perf-map theo cách an toàn theo luồng. Zz004zz cũng sử dụng các API này để ghi các mục vào tệp bản đồ hoàn hảo.gh-103509: Đã thêm C API để mở rộng các loại có bố cục bộ nhớ phiên bản mờ:
PyType_Spec.basicsizehiện có thể bằng 0 hoặc âm,PyObject_GetTypeData()có thể được sử dụng để lấy dữ liệu dành riêng cho lớp con vàPy_TPFLAGS_ITEMS_AT_ENDcó thể được sử dụng để mở rộng các đối tượng có kích thước thay đổi một cách an toàn. Xem PEP 697 để biết chi tiết.gh-103091: Thêm chức năng C-API mới để háo hức gán thẻ phiên bản cho PyTypeObject:
PyUnstable_Type_AssignVersionTag().gh-101408:
PyObject_GC_Resizenên tính toán kích thước tiêu đề trước nếu cần. Bản vá của Donghee Na.gh-98836: Thêm hỗ trợ nhiều tùy chọn định dạng hơn (căn trái, bát phân, thập lục phân viết hoa,
intmax_t,ptrdiff_t,wchar_tchuỗi C, độ rộng và độ chính xác thay đổi) trongPyUnicode_FromFormat()vàPyUnicode_FromFormatV().gh-96803: Thêm các hàm C-API không ổn định để lấy đối tượng mã, số cuối và số dòng từ
_PyInterpreterFramenội bộ trong API giới hạn. Các chức năng là:PyCodeObject * PyUnstable_InterpreterFrame_GetCode(struct _PyInterpreterFrame *frame)int PyUnstable_InterpreterFrame_GetLasti(struct _PyInterpreterFrame *frame)int PyUnstable_InterpreterFrame_GetLine(struct _PyInterpreterFrame *frame)
Python 3.12.0 alpha 7¶
Release date: 2023-04-04
Cốt lõi và nội dung¶
gh-102192:
_PyErr_ChainExceptionskhông được dùng nữa mà thay vào đó là_PyErr_ChainExceptions1.gh-89987: Giảm số lượng mục nhập
CACHEnội tuyến choBINARY_SUBSCR.gh-102859: Đã xóa hướng dẫn
JUMP_IF_FALSE_OR_POPvàJUMP_IF_TRUE_OR_POP.gh-101975: Đã sửa giá trị
stacktopkhi theo dõi các mục để tránh hỏng trong quá trình thu thập rác.gh-102778: Thêm
sys.last_excvà ngừng sử dụngsys.last_type,sys.last_valuevàsys.last_traceback, những thứ chứa cùng thông tin ở dạng cũ.gh-100982: Thay thế tất cả các lần xuất hiện của
COMPARE_AND_BRANCHbằngCOMPARE_OP.gh-102701: Sửa lỗi tràn khi tạo dict rất lớn.
gh-102755: Thêm
PyErr_DisplayException()chỉ lấy một phiên bản ngoại lệ, để thay thếPyErr_Display()kế thừa lấy bộ ba(typ, exc, tb).gh-102594: Thêm ghi chú vào ngoại lệ được đưa ra trong
PyErr_SetObjectkhi quá trình chuẩn hóa không thành công.gh-90997: Thu nhỏ số lượng mục nhập
CACHEnội tuyến đượcLOAD_GLOBALsử dụng.
Thư viện¶
gh-102491: Cải thiện thời gian nhập của
platformbằng cách xóa phân tích cú pháp phiên bản IronPython. Phân tích cú pháp phiên bản IronPython không hoạt động (xem https://github.com/IronLanguages/ironpython3/issues/1667).
Cốt lõi và nội dung¶
gh-101291: Sắp xếp lại các bit trong trường đầu tiên (sau tiêu đề) của PyLongObject. * Bit 0 và 1: 1 - dấu. tức là 0 cho số dương, 1 cho số 0 và 2 cho số âm. * Bit 2 dành riêng (có thể dành cho bit bất tử) * Bit 3+ kích thước không dấu.
Điều này làm cho một số thao tác hiệu quả hơn một chút và sẽ cho phép biểu diễn phần bù 2 giây nhỏ gọn hơn và nhanh hơn của hầu hết các số nguyên trong tương lai.
gh-102397: Sửa lỗi segfault từ race condition trong việc xử lý tín hiệu trong quá trình thu gom rác. Bản vá của Kumar Aditya.
gh-102406: lỗi mã hóa/giải mã
codecshiện nhận được thông tin ngữ cảnh (thao tác nào và codec nào) được đính kèm dưới dạng ghi chú PEP 678 thay vì thông qua chuỗi một phiên bản ngoại lệ mới.gh-102281: Khắc phục khả năng vô hiệu hóa nullptr và sử dụng bộ nhớ chưa được khởi tạo trong fileutils. Bản vá của Max Bachmann.
gh-102300: Tái sử dụng các toán hạng có số lần đếm là 1 trong các chuyên ngành float của BINARY_OP.
gh-102213: Khắc phục tình trạng mất hiệu suất khi truy cập các thuộc tính của đối tượng được xác định
__getattr__.gh-102255: Cải thiện hỗ trợ xây dựng cho Xbox. Bản vá của Max Bachmann.
xây dựng¶
gh-102027: Sửa lỗi phát hiện SSE2 và SSE3 trong mô-đun nội bộ
_blake2. Bản vá của Max Bachmann.
Cốt lõi và nội dung¶
gh-101865: Không dùng
co_lnotabtrong các đối tượng mã, lên lịch xóa nó trong Python 3.14
Thư viện¶
bpo-1635741: Điều chỉnh
_picklethành PEP 687. Bản vá của Mohamed Koubaa và Erlend Aasland.gh-103085: Trăn thuần túy
locale.getencoding()sẽ không cảnh báo không dùng nữa.gh-103068: Không thể đăng ký các điểm ngắt có điều kiện trong
Pdbđể tăngSyntaxErrornữa. Bản vá của Tian Gao.gh-102549: Đừng bỏ qua các ngoại lệ khi tạo loại thành viên.
gh-103056: Đảm bảo
_generate_next_value_cuối cùng làstaticmethod.gh-103046: Hiển thị chính xác nhãn dòng hiện tại trong
diskhishow_cacheslà Sai vàlastitrỏ đến mục nhập CACHE.gh-102433:
isinstance()kiểm traruntime-checkable protocolshiện sử dụnginspect.getattr_static()thay vìhasattr()để tra cứu xem các thuộc tính có tồn tại hay không. Điều này có nghĩa là các bộ mô tả và phương thức__getattr__()không còn được đánh giá bất ngờ trong quá trình kiểm traisinstance()đối với các giao thức có thể kiểm tra thời gian chạy. Tuy nhiên, điều đó cũng có thể có nghĩa là một số đối tượng từng được coi là phiên bản của giao thức có thể kiểm tra thời gian chạy có thể không còn được coi là phiên bản của giao thức đó trên Python 3.12+ và ngược lại. Hầu hết người dùng khó có thể bị ảnh hưởng bởi sự thay đổi này. Bản vá của Alex Waygood.gh-103023: Không thể đăng ký biểu thức để hiển thị trong
Pdbnâng caoSyntaxErrornữa. Bản vá của Tian Gao.gh-102947: Cải thiện khả năng truy nguyên khi
dataclasses.fields()được gọi trên một lớp không phải dữ liệu. Bản vá của Alex Waygoodgh-102780: Trình quản lý bối cảnh
asyncio.Timeouthiện hoạt động đáng tin cậy ngay cả khi thực hiện dọn dẹp do hủy tác vụ. Trước đây nó có thể tăngCancelledErrorthay vìTimeoutErrortrong những trường hợp như vậy.gh-102871: Xóa hỗ trợ cho các trình duyệt lỗi thời khỏi
webbrowser. Các trình duyệt bị xóa bao gồm Grail, Khảm, Netscape, Galeon, Skipstone, Iceape, Firebird và Firefox phiên bản 35 trở xuống.gh-102839: Cải thiện hiệu suất xử lý đối số
math.log()bằng cách loại bỏ phòng khám đối số.gh-102828: Thêm đối số
onexcvàoshutil.rmtree(), giống nhưonerrornhưng mong đợi một trường hợp ngoại lệ thay vì một bộ dữ liệu ex_info. Không dùng nữaonerror.gh-88965: đánh máy: Sửa lỗi liên quan đến việc thay thế trong các lớp tùy chỉnh chung trên
ParamSpec. Trước đây, nếuParamSpecđược thay thế bằng danh sách tham số chứaTypeVarthì sau đó không thể thay thếTypeVartrong danh sách tham số. Điều này hiện đã được sửa.Bản vá của Nikita Sobolev.
gh-76846: Khắc phục sự cố trong đó các phương thức
__new__()và__init__()của các lớp conpathlib.PurePathvàPathkhông được gọi trong một số trường hợp.gh-78530:
asyncio.wait()hiện chấp nhận các tác vụ tạo ra năng suất. Bản vá của Kumar Aditya.gh-102748:
asyncio.iscoroutine()hiện trả vềFalsecho các trình tạo vìasynciokhông hỗ trợ các coroutine dựa trên trình tạo cũ. Bản vá của Kumar Aditya.gh-102670: Tối ưu hóa fmean(), tương quan(), hiệp phương sai() và tuyến tính_regression() bằng cách sử dụng hàm math.sumprod() mới.
gh-102615: Typing: Cải thiện
reprcủa các bí danh chung cho các lớp chung trênParamSpec. (Sử dụng dấu ngoặc vuông để thể hiện danh sách tham số.)gh-100112:
asyncio.Task.get_coro()giờ đây luôn trả về một coroutine khi gói một đối tượng có thể chờ đợi. Bản vá của Kumar Aditya.gh-102578: Tăng tốc độ thiết lập hoặc xóa các thuộc tính có thể thay đổi trên các lớp con không phải lớp dữ liệu của các lớp dữ liệu đã cố định. Do việc triển khai
__setattr__và__delattr__cho các lớp dữ liệu cố định, điều này trước đây có độ phức tạp về thời gian là O(n). Bây giờ nó có độ phức tạp về thời gian là O(1).gh-102519: Thêm chức năng
os.listdrives(),os.listvolumes()vàos.listmounts()trên Windows để liệt kê ổ đĩa, ổ đĩa và điểm gắn kếtgh-74468: Tên thuộc tính của đối tượng tệp
tarfileđược trích xuất hiện giữ tên tệp của chính nó thay vì tên kho lưu trữ chứa nó. Bản vá của Oleg Iarygin.gh-102378: Phương thức trợ giúp riêng
inspect._signature_strip_non_python_syntaxsẽ không loại bỏ/khỏi chuỗi đầu vào nữa.gh-79940: Thêm
inspect.getasyncgenstate()vàinspect.getasyncgenlocals(). Bản vá của Thomas Krennwallner.gh-102103: Thêm đối số
modulevàodataclasses.make_dataclass()và làm cho các lớp do nó tạo ra có thể chọn được.gh-102069: Sửa lỗi tạo bộ mô tả
__weakref__cho các lớp dữ liệu tùy chỉnh.gh-102038: Bỏ qua
stattrongsitenếu chúng ta đã tìm thấypyvenv.cfggh-98886: Khắc phục sự cố khi xác định các lớp dữ liệu có các trường có tên gạch dưới cụ thể mà
dataclasseskhông đặt trước rõ ràng.gh-101673: Sửa lỗi
pdbtrong đóllxóa các thay đổi đối với các biến cục bộ.gh-101313: Đã thêm đối số -h và --help vào trình duyệt web CLI
gh-100372:
ssl.SSLContext.load_verify_locations()không còn chấp nhận sai một số trường hợp dữ liệu theo sau khi phân tích cú pháp DER.gh-89727: Sửa lỗi pathlib.Path.walk RecursionError trên cây thư mục sâu bằng cách viết lại bằng phép lặp thay vì đệ quy.
gh-100131: Đã thêm đối số từ khóa
deletetùy chọn vàotempfile.TemporaryDirectory.gh-48330: Đã thêm tùy chọn dòng lệnh
--durations, hiển thị N trường hợp kiểm thử chậm nhất. Các hàm tạounittest.TextTestRunnervàunittest.TextTestResultchấp nhận đối số từ khóa durations mới. Các lớp con nên tính đến điều này hoặc chấp nhận**kwargs. Đã thêm phương thứcunittest.TestResult.addDuration()và thuộc tínhunittest.TestResult.collectedDurations.(Đóng góp bởi Giampaolo Rodola)
gh-98169: Khắc phục sự cố
dataclasses.astuple()khicollections.defaultdictcó trong thuộc tính.gh-96931: Sửa kết quả sai từ
ssl.SSLSocket.shared_ciphers()gh-95495: Khi được xây dựng dựa trên OpenSSL 3.0, mô-đun
sslcó lỗi trong đó nó báo cáo các EOF không được xác thực (tức là không có close_notify) dưới dạng EOF cấp TLS sạch. Bây giờ nó tăngSSLEOFError, phù hợp với hành vi trong các phiên bản OpenSSL trước đó. Thuộc tínhoptionstrênSSLContextcũng không còn bao gồmOP_IGNORE_UNEXPECTED_EOFtheo mặc định. Tùy chọn này có thể được đặt để chỉ định hành vi OpenSSL 3.0 trước đó.gh-94684: Hiện tại, các hàm
uuid.uuid3()vàuuid.uuid5()hỗ trợ các đối tượngbyteslàm đối số name của chúng.gh-94440: Khắc phục lỗi
concurrent.futures.processtrong đó việc tắtProcessPoolExecutorcó thể bị treo sau khi tương lai được gửi và hủy nhanh chóng.gh-72346: Đã thêm cảnh báo không dùng nữa cho tham số isdst của
email.utils.localtime().bpo-36305: Khắc phục việc xử lý tên tệp Windows giống với ổ đĩa, chẳng hạn như
./a:b, trongpathlib.
Tài liệu¶
gh-103112: Thêm chuỗi tài liệu vào
http.client.HTTPResponse.read()để sửa đầu rapydoc.
Kiểm tra¶
xây dựng¶
cửa sổ¶
gh-102690: Cập nhật
webbrowserđể quay lại Microsoft Edge thay vì Internet Explorer.gh-99726: Cải thiện tính chính xác của kết quả thống kê cho Windows và sử dụng API nhanh hơn khi có sẵn
Công cụ/Bản trình diễn¶
gh-102809:
Misc/gdbinitđã bị xóa.
C API¶
gh-102013: Thêm hàm C-API mới (không ổn định) để lặp qua các đối tượng có thể GC bằng cách sử dụng lệnh gọi lại:
PyUnstable_VisitObjects.
Python 3.12.0 alpha 6¶
Release date: 2023-03-07
Bảo mật¶
gh-99108: Thay thế việc triển khai hashlib dựng sẵn của MD5 và SHA1 bằng các triển khai đã được xác minh từ dự án HACL*.
gh-101727: Đã cập nhật phiên bản OpenSSL được sử dụng trong các bản phát hành nhị phân Windows và macOS lên 1.1.1t để giải quyết CVE 2023-0286, CVE 2022-4303 và CVE 2022-4303 mỗi the OpenSSL 2023-02-07 security advisory.
gh-99108: Thay thế các triển khai
hashlibdựng sẵn của SHA2-384 và SHA2-512 ban đầu từ LibTomCrypt bằng mã kháng kênh bên đã được xác minh chính thức từ dự án HACL*. Các phần dựng sẵn vẫn là phương án dự phòng chỉ được sử dụng khi OpenSSL không cung cấp chúng.gh-101283:
subprocess.Popenhiện sử dụng phương pháp an toàn hơn để tìmcmd.exekhi khởi chạy vớishell=True. Bản vá của Eryk Sun, dựa trên bản vá của Oleg Iarygin.
Cốt lõi và nội dung¶
gh-102493: Khắc phục sự hồi quy về ngữ nghĩa chuẩn hóa trong
PyErr_SetObject.gh-102416: Không ghi nhớ các quy tắc vòng lặp được tạo tự động không chính xác trong trình phân tích cú pháp. Bản vá của Pablo Galindo.
gh-102356: Sửa lỗi gây ra sự cố khi hủy phân bổ các đối tượng bộ lọc lồng nhau sâu. Bản vá của Marta Gómez Macías.
gh-102336: Dọn dẹp Windows 7 xử lý đặc biệt. Bản vá của Max Bachmann.
gh-102250: Đã sửa lỗi segfault xảy ra khi trình thông dịch gọi phương thức
__bool__tăng lên.gh-102126: Khắc phục tình trạng bế tắc khi tắt máy khi xóa trạng thái luồng nếu bất kỳ trình hoàn thiện nào cố lấy khóa đầu thời gian chạy. Bản vá của Kumar Aditya.
gh-102027: Sử dụng
GetCurrentProcessIdtrên Windows khigetpidkhông khả dụng. Bản vá của Max Bachmann.gh-102056: Sửa lỗi xử lý lỗi trong mã in ngoại lệ của trình thông dịch, có thể gây ra sự cố khi đệ quy vô hạn.
gh-100982: Hạn chế phạm vi của lệnh
FOR_ITER_RANGEtrong phạm vi của lệnhFOR_ITERban đầu, để cho phép thiết bị đo đạc.gh-101967: Khắc phục lỗi phân đoạn có thể xảy ra trong hàm
positional_only_passed_as_keywordkhi tạo danh sách mới.gh-101952: Sửa lỗi phân đoạn có thể xảy ra trong opcode
BUILD_SETkhi bộ mới được tạo.gh-74895:
socket.getaddrinfokhông còn tăngOverflowErrorcho các giá trịintport nằm ngoài phạm vi dài C. Các giá trị ngoài phạm vi được để lại cho thư viện C dựa trên chuỗi cơ bản API để báo cáo. Thay vào đó,socket.gaierrorSAI_SERVICEcó thể xảy ra hoặc không có lỗi nào cả vì không phải tất cả các thư viện nền tảng C đều phát sinh lỗi.gh-101799: Thêm
CALL_INTRINSIC_2và sử dụng nó thay vìPREP_RERAISE_STAR.gh-101857: Sửa lỗi phát hiện hỗ trợ xattr trên hệ thống Linux bằng cách mở rộng kiểm tra sang linux, không chỉ glibc. Điều này khắc phục sự hỗ trợ cho musl.
gh-84783: Làm cho đối tượng lát cắt có thể băm được. Bản vá của Will Bradshaw và Furkan Onder.
gh-87849: Thay đổi lệnh
SENDđể giữ bộ thu trên ngăn xếp. Điều này cho phép dạngSENDchuyên dụng bỏ qua chuỗi lệnh gọi C và chuyển trực tiếp đếnRESUMEtrong trình tạo hoặc coroutine.gh-101765: Sửa lỗi SystemError/phân đoạn trong iter
__reduce__khi quyền truy cập bên trong của các phímbuiltins.__dict__làm thay đổi đối tượng iter.gh-101430: Cập nhật
tracemallocđể xử lý việc đặt trước đối tượng đúng cách. Bản vá của Donghee Na.gh-101696: Thẻ phiên bản loại không hợp lệ trong
_PyStaticType_Deallocđối với các loại tĩnh, tránh lỗi khi nhấn bộ đệm sai có thể làm hỏng trình thông dịch. Bản vá của Kumar Aditya.gh-101632: Thêm lệnh
RETURN_CONSTmới.gh-100719: Xóa trường gi_code khỏi các đối tượng trình tạo (và trình tạo coroutine và async) vì nó dư thừa. Khung đã bao gồm tham chiếu đến đối tượng mã.
gh-98627: Khi trình thông dịch được định cấu hình để kiểm tra (và chỉ khi đó), việc nhập mô-đun mở rộng giờ đây sẽ không thành công khi tiện ích mở rộng không hỗ trợ nhiều trình thông dịch (tức là không triển khai init đa pha PEP 489). Điều này không áp dụng cho trình thông dịch chính cũng như các trình thông dịch phụ được tạo bằng
Py_NewInterpreter().
Thư viện¶
gh-102302: Hàm băm tối ưu hóa vi mô của
inspect.Parameter, giảm thời gian băm một phiên bản khoảng 40%.gh-101979: Sửa lỗi trong đó dấu ngoặc đơn trong đối số
metavarthànhargparse.ArgumentParser.add_argument()bị bỏ. Bản vá của Yeojin Kim.gh-91038:
platform.platform()hiện có các đối số mặc định boolean.gh-81652: Thêm hằng số
mmap.MAP_ALIGNED_SUPERFreeBSD vàmmap.MAP_CONCEALOpenBSD vàommap. Bản vá của Yeojin Kim.gh-101961: Đối với chế độ nhị phân,
fileinput.hookcompressed()không đặt giá trịencodingngay cả khi giá trị làNone. Bản vá của Gihwan Kim.gh-101936: Giá trị mặc định của
fptrở thànhio.BytesIOnếuHTTPErrorđược khởi tạo mà không có tham sốfpđược chỉ định. Bản vá của Long Võ.gh-101566: Trong zipfile, đồng bộ hóa Đường dẫn với zipp 3.14, bao gồm sửa lỗi trích xuất tất cả trên tệp zip bên dưới sau khi được gói trong
Path.gh-97930: Áp dụng các thay đổi từ importlib_resources 5.12, bao gồm sửa lỗi cho
MultiplexedPathđể hỗ trợ các thư mục trong nhiều không gian tên (python/importlib_resources#265).gh-101997: Nâng cấp bánh xe pip đi kèm với Ensurepip (pip 23.0.1)
gh-99108: Các mô-đun mở rộng tích hợp cho thuật toán
hashlibSHA2, được sử dụng khi OpenSSL không cung cấp chúng, hiện nằm trong một mô-đun_sha2nội bộ duy nhất thay vì các mô-đun_sha256và_sha512riêng biệt.gh-101892: Trình vòng lặp có thể gọi không còn tăng
SystemErrorkhi đối tượng có thể gọi làm cạn kiệt trình vòng lặp nhưng quên trả về giá trị trọng điểm hoặc tăngStopIteration.gh-87634: Xóa hành vi khóa khỏi
functools.cached_property().gh-97786: Khắc phục hành vi không xác định tiềm ẩn trong các trường hợp góc của chuyển đổi điểm nổi theo thời gian.
gh-101517: Đã sửa lỗi trong đó
bdbtra cứu dòng nguồn vớilinecachevớilineno=None, khiến nó bị lỗi với một ngoại lệ chưa được xử lý.gh-101773: Tối ưu hóa
fractions.Fractioncho các thành phần nhỏ. Đối số riêng_normalizecủa hàm tạofractions.Fractionđã bị xóa.gh-101693: Trong
sqlite3.Cursor.execute(),DeprecationWarninghiện được phát ra khi named placeholders được sử dụng cùng với các tham số được cung cấp dưới dạng sequence thay vìdict. Bắt đầu từ Python 3.14, việc sử dụng trình giữ chỗ được đặt tên với các tham số được cung cấp dưới dạng chuỗi sẽ tạo raProgrammingError. Bản vá của Erlend E. Aasland.gh-101446: Thay đổi Repr của
collections.OrderedDictđể sử dụng định dạng từ điển thông thường thay vì các cặp khóa và giá trị.gh-101362: Tăng tốc độ xây dựng
pathlib.PurePathbằng cách xử lý các đối số thống nhất hơn. Khi một đối sốpathlib.Pathđược cung cấp, chúng tôi sử dụng biểu diễn chuỗi của nó thay vì nối các phần của nó vớios.path.join().gh-101362: Tăng tốc độ xây dựng
pathlib.PurePathbằng cách chỉ gọios.path.join()khi có hai đối số trở lên.gh-101362: Tăng tốc độ xây dựng
pathlib.Pathbằng cách chỉ chạy kiểm tra tính tương thích của đường dẫn khi pathlib được nhập.gh-85984: Tái cấu trúc việc triển khai
pty.fork()để sử dụngos.login_tty().Một
DeprecationWarninghiện được nâng lên bởipty.master_open()vàpty.slave_open(). Chúng không được ghi lại và không được dùng nữa từ lâu trong chuỗi tài liệu để ủng hộpty.openpty().gh-101561: Thêm trang trí mới
typing.override(). Xem PEP 698 để biết chi tiết. Bản vá của Steven Troxler.gh-101360: Sửa lỗi khớp neo trong
pathlib.PureWindowsPath.match(). Các neo đường dẫn và mẫu hiện được khớp vớifnmatch, giống như các phần đường dẫn khác. Điều này cho phép khớp các mẫu như"*:/Users/*".gh-101277: Xóa trạng thái toàn cầu khỏi mô-đun
itertools(PEP 687). Các bản vá của Erlend E. Aasland.gh-100809: Khắc phục việc xử lý các đường dẫn liên quan đến ổ đĩa (như 'C:' và 'C:foo') trong
pathlib.Path.absolute(). Phương pháp này hiện sử dụng OS API để truy xuất đúng thư mục làm việc hiện tại cho ổ đĩa.gh-99138: Áp dụng PEP 687 cho
zoneinfo. Bản vá của Erlend E. Aasland.gh-96764:
asyncio.wait_for()hiện sử dụngasyncio.timeout()làm triển khai cơ bản. Bản vá của Kumar Aditya.gh-88233: Giữ nguyên chính xác các trường "phụ" trong
zipfilebất kể thứ tự của chúng so với "phụ" zip64.bpo-23224: Khắc phục các lỗi phân đoạn khi tạo đối tượng
lzma.LZMADecompressorvàbz2.BZ2Decompressormà không gọi__init__(), đồng thời sửa lỗi rò rỉ khóa và bộ đệm bên trong khi gọi các phương thức__init__()của các đối tượnglzma.LZMADecompressor,lzma.LZMACompressor,bz2.BZ2Compressorvàbz2.BZ2Decompressornhiều lần.
Tài liệu¶
gh-85417: Cập nhật tài liệu
cmathđể làm rõ hành vi cắt cành.gh-97725: Sửa mô tả
asyncio.Task.print_stack()chofile=None. Bản vá của Oleg Iarygin.
Kiểm tra¶
gh-102019: Khắc phục tình trạng bế tắc khi tắt máy nếu
test_current_{exception,frames}bị lỗi. Bản vá của Jacob Bower.gh-85984: Sử dụng các chức năng "winsize" mới từ termios trong các bài kiểm tra pty.
gh-89792:
test_toolshiện sao chép dữ liệu nguồn ít hơn tới 10 lần vào thư mục tạm thời trong quá trình kiểm trafreezebằng cách bỏ qua siêu dữ liệu git và các thành phần lạ khác. Nó cũng hạn chế tính song song của bản dựng python dựa trên os.cpu_count thay vì mã hóa cứng thành 8 lõi.
xây dựng¶
gh-99942: Trên Android, trong bản dựng tĩnh, python-config ở chế độ nhúng không còn báo cáo sai thư viện để liên kết tới nữa.
gh-99942: Trên Android, python.pc hiện báo cáo chính xác thư viện cần liên kết tới, giống như python-config.sh.
gh-100221: Sửa lỗi tạo thư mục cài đặt trong
make sharedinstallnếu chúng đã tồn tại bên ngoàiDESTDIR.gh-96821: Đánh dấu rõ ràng các mô-đun mở rộng C cần tràn số nguyên có dấu được xác định và thêm tùy chọn cấu hình
--with-strict-overflow. Bản vá của Matthias Görgens và Shantanu Jain.
cửa sổ¶
gh-102344: Triển khai
winreg.QueryValuebằngQueryValueExvàwinreg.SetValuebằngSetValueEx. Bản vá của Max Bachmann.gh-101881: Xử lý đúng cách các thao tác đọc và ghi trên các ống không chặn trên Windows.
gh-101881: Thêm hỗ trợ cho các hàm os.get_blocking() và os.set_blocking() trên Windows.
gh-101849: Đảm bảo trình cài đặt sẽ nâng cấp chính xác các bản cài đặt trình khởi chạy
py.exehiện có.gh-101763: Cập nhật bản sao libffi đi kèm với các bản cài đặt Windows lên 3.4.4.
gh-101759: Cập nhật trình cài đặt Windows lên SQLite 3.40.1.
gh-101614: Xử lý chính xác các tiện ích mở rộng được xây dựng dựa trên các tệp nhị phân gỡ lỗi tham chiếu
python3_d.dll.gh-101196: Các chức năng
os.path.isdir,os.path.isfile,os.path.islinkvàos.path.existshiện nhanh hơn từ 13% đến 28% trên Windows nhờ thực hiện ít lệnh gọi Win32 API hơn.
macOS¶
gh-101759: Cập nhật trình cài đặt macOS lên SQLite 3.40.1.
C API¶
gh-101907: Loại bỏ việc sử dụng phần mở rộng C++ không chuẩn trong các tệp tiêu đề công khai.
gh-99293: Tài liệu cho biết Py_TPFLAGS_VALID_VERSION_TAG là một tính năng nội bộ, không được sử dụng và sẽ bị xóa.
gh-101578: Thêm
PyErr_GetRaisedException()vàPyErr_SetRaisedException()để lưu và khôi phục ngoại lệ hiện tại. Các hàm này trả về và chấp nhận một đối tượng ngoại lệ duy nhất, thay vì ba đối số củaPyErr_Fetch()vàPyErr_Restore()hiện không được dùng nữa. Điều này ít xảy ra lỗi hơn và hiệu quả hơn một chút.Thêm
PyException_GetArgs()vàPyException_SetArgs()làm các hàm tiện lợi để truy xuất và sửa đổiargsđược truyền cho hàm tạo của ngoại lệ.gh-91744: Giới thiệu Unstable C API tier, đánh dấu APi được phép thay đổi trong các bản phát hành nhỏ mà không có thời gian ngừng sử dụng. Xem PEP 689 để biết chi tiết.
Python 3.12.0 alpha 5¶
Release date: 2023-02-07
Bảo mật¶
Cốt lõi và nội dung¶
gh-92173: Sửa các đối số
defsvàkwdefsthànhPyEval_EvalCodeEx()và rò rỉ tham chiếu trong hàm đó.gh-59956: GILState API hiện tương thích một phần với trình thông dịch phụ. Trước đây,
PyThreadState_GET()vàPyGILState_GetThisThreadState()sẽ không đồng bộ, gây ra sự cố và hoạt động không nhất quán.gh-101400: Sửa lỗi dòng lệnh trong thông báo ngoại lệ trên
continuehoặcbreakkhông nằm trong vòng lặp. Bản vá của Donghee Na.gh-101372: Sửa
is_normalized()để xử lý đúng các trường hợp UCD 3.2.0. Bản vá của Donghee Na.gh-101266: Sửa lỗi báo cáo
sys.getsizeof()cho các lớp conint.gh-101291: Tái cấu trúc cấu trúc
PyLongObjectthành tiêu đề đối tượng Python bình thường và cấu trúcPyLongValue.gh-101046: Khắc phục khả năng rò rỉ bộ nhớ trong trình phân tích cú pháp khi nâng cao
MemoryError. Bản vá của Pablo Galindogh-101037: Khắc phục sự cố phân bổ thiếu bộ nhớ tiềm ẩn cho các phiên bản của lớp con
intcó giá trị bằng 0.gh-100762: Ghi lại độ sâu khối ngoại lệ (ảo) trong oparg của
YIELD_VALUE. Sử dụng điều này để tránhthrow()đắt tiền khi đóng các trình tạo (và coroutine) có thể được đóng một cách tầm thường.gh-100982: Thêm lệnh
COMPARE_AND_BRANCHmới. Điều này hiệu quả hơn một chút khi thực hiện so sánh ngay sau một nhánh và khôi phục mục đích thiết kế của PEP 659 mà các chuyên môn hóa là cục bộ cho một lệnh duy nhất.gh-100942: Đã sửa lỗi segfault trong property.getter/setter/deleter xảy ra khi một lớp con thuộc tính ghi đè phương thức
__new__để trả về một phiên bản không thuộc tính.gh-100923: Xóa mục nhập bộ đệm
maskcho lệnhCOMPARE_OPvà nhúng mặt nạ vào oparg.gh-100892: Sửa lỗi chủng tộc trong khi lặp lại trạng thái luồng khi xóa
threading.local. Bản vá của Kumar Aditya.gh-91351: Khắc phục trường hợp việc nhập lại của người đăng ký lại có thể làm hỏng mã phát hiện khóa nhập và khiến
KeyErrorđược đưa ra ngoàiimportlib/_bootstrap. Ngoài các trường hợp đơn giản, điều này cũng có thể xảy ra khi việc thu thập rác dẫn đến cảnh báo được phát ra -- như xảy ra khi nó thu thập một ổ cắm hoặc tệp đang mở)gh-100726: Tối ưu hóa việc xây dựng đối tượng
rangecho số nguyên có kích thước trung bình.gh-100712: Đã thêm tùy chọn để xây dựng cpython với tính năng chuyên môn hóa bị tắt, bằng cách đặt
ENABLE_SPECIALIZATION=Falsetrongopcode, tiếp theo làmake regen-all.
Thư viện¶
bpo-32780: Khoảng đệm giữa các trường hiện được chèn vào chuỗi định dạng PEP3118 thu được từ các đối tượng
ctypes.Structure, phản ánh sự thể hiện thực sự của chúng trong bộ nhớ.gh-101541: [Enum] - sửa lỗi tạo cờ psuedo
gh-101570: Nâng cấp bánh xe pip đi kèm với Ensurepip (pip 23.0)
gh-101323: Sửa lỗi không được zlib._ZlibDecompressor ném ra nếu gặp phải trong quá trình giải nén.
gh-101317: Thêm tham số ssl_shutdown_timeout cho
asyncio.StreamWriter.start_tls().gh-101326: Khắc phục hồi quy khi chuyển
Nonelàm đối số thứ hai hoặc thứ ba choFutureIter.throw.gh-92123: Điều chỉnh mô-đun mở rộng
_elementtreethành init nhiều pha (PEP 489). Các bản vá của Erlend E. Aasland.gh-100795: Tránh khả năng xảy ra lệnh gọi
freeaddrinfobất ngờ (miễn phí gấp đôi) trongsocketkhi triển khai libcgetaddrinfo()để lại rác trong con trỏ đầu ra khi trả về lỗi. Bản vá gốc của Sergey G. Brester.gh-101143: Xóa các tham chiếu không sử dụng đến
TimerHandletrongasyncio.base_events.BaseEventLoop._add_callback.gh-101144: Làm cho
zipfile.Path.open()vàzipfile.Path.read_text()cũng chấp nhậnencodinglàm đối số vị trí. Đây là hành vi trong Python 3.9 trở về trước. 3.10 đã giới thiệu một hồi quy trong đó việc cung cấp nó làm đối số vị trí sẽ dẫn đếnTypeError.gh-94518: Các biến liên quan đến nhóm của mô-đun
_posixsubprocessđược đổi tên để nhấn mạnh rằng mối quan hệ nhóm bổ sung được thêm vào một nhánh chứ không thay thế các biến được kế thừa. Bản vá của Oleg Iarygin.gh-101015: Sửa lỗi
typing.get_type_hints()trên'*tuple[...]'và*tuple[...]. Nó không được bỏ phầnUnpack.gh-101000: Thêm
os.path.splitroot(), chia đường dẫn thành bộ 3 mục(drive, root, tail). Chức năng mới này đượcpathlibsử dụng để cải thiện hiệu suất xây dựng đường dẫn lên tới một phần ba.gh-100573: Khắc phục lỗi
asynciocủa Windows với các đường ống được đặt tên trong đó khách hàng thực hiệnos.stat()trên đường ống sẽ gây ra lỗi trong máy chủ khiến việc phân phát các yêu cầu trong tương lai bị vô hiệu hóa.gh-39615:
warnings.warn()hiện có khả năng bỏ qua các khung ngăn xếp dựa trên tiền tố tên tệp mã thay vì chỉstackleveldạng số thông qua đối số từ khóaskip_file_prefixesmới.gh-100750: chuyển kwarg mã hóa sang quy trình con trong nền tảng
gh-100160: Đưa ra cảnh báo không dùng nữa trong
asyncio.DefaultEventLoopPolicy.get_event_loop()nếu không có vòng lặp sự kiện hiện tại nào được đặt và nó quyết định tạo một vòng lặp.gh-96290: Khắc phục việc xử lý các ổ UNC một phần và không hợp lệ trong
ntpath.splitdrive()vàntpath.normpath()trên các hệ thống không phải Windows. Các đường dẫn như '\server' và '\' hiện đượcsplitdrive()coi là chỉ chứa một ổ đĩa và do đó không đượcnormpath()sửa đổi trên các hệ thống không phải Windows. Hoạt động củanormpath()trên hệ thống Windows không bị ảnh hưởng vì API hệ điều hành gốc được sử dụng. Bản vá của Eryk Sun, với sự đóng góp của Barney Gale.gh-99952: Khắc phục sự cố đếm thiếu tham chiếu trong
ctypes.Structurevới kết quảfrom_param()lớn hơn con trỏ C.gh-67790: Thêm hỗ trợ định dạng kiểu float cho các phiên bản
fractions.Fraction.gh-99266: Lưu giữ các thông báo lỗi chi tiết hơn trong
ctypes.gh-86682: Đảm bảo các bộ sưu tập được tạo trong thời gian chạy có tên mô-đun chính xác bằng cách sử dụng
sys._getframemodulename()(nội bộ) mới được thêm vào.gh-88597:
uuidhiện có giao diện dòng lệnh. Hãy thửpython -m uuid -h.gh-60580: Định nghĩa
ctypes.wintypes.BYTEđã thay đổi từc_bytethànhc_ubyteđể phù hợp với Windows SDK. Bản vá của Anatoly Techtonik và Oleg Iarygin.gh-94518:
_posixsubprocesshiện khởi tạo tất cả các biến UID và GID bằng cách sử dụng giá trị-1dành riêng thay vì một cờ riêng. Bản vá của Oleg Iarygin.bpo-38941: Mô-đun
xml.etree.ElementTreehiện phát raDeprecationWarningkhi kiểm tra giá trị thực củaxml.etree.ElementTree.Element. Trước đây, quá trình triển khai Python phát raFutureWarningvà quá trình triển khai C không phát ra gì.bpo-40077: Chuyển đổi loại
elementtreethành loại heap. Bản vá của Erlend E. Aasland.bpo-29847: Sửa lỗi trong đó
pathlib.Pathchấp nhận và bỏ qua các đối số từ khóa. Bản vá được cung cấp bởi Yurii Karabas.gh-77772:
ctypes.CDLL,ctypes.OleDLL,ctypes.WinDLLvàctypes.PyDLLhiện chấp nhận path-like objects làm đối sốnamecủa chúng. Bản vá của Robert Hoelzl.
Tài liệu¶
gh-88324: Viết lại
subprocessđể nhấn mạnh hành vi mặc định của các đối số stdin, stdout và stderr. Xóa tuyên bố không chính xác về kế thừa xử lý tệp con.
Kiểm tra¶
gh-101334:
test_tarfileđã được cập nhật để vượt qua khi chạy ở mức UID cao.
xây dựng¶
gh-101282: Cập nhật cấu hình BOLT để không sử dụng cách sử dụng
--split functionskhông được dùng nữa. Bản vá của Donghee Na.gh-101522: Cho phép ghi đè các phiên bản và đường dẫn phụ thuộc của Windows bằng thuộc tính MSBuild.
gh-77532: Sửa lỗi nhỏ để cho phép xây dựng bằng
PlatformToolset=ClangCLtrên Windows.gh-101152: Theo PEP 699, trường
ma_version_tagtrongPyDictObjectkhông được dùng cho các mô-đun mở rộng. Việc truy cập vào trường này sẽ tạo ra cảnh báo trình biên dịch tại thời điểm biên dịch. Trường này sẽ bị xóa trong Python 3.14.gh-100340: Cho phép chuyển đổi -Wno-int-conversion cho wasm-sdk 17 trở đi, do đó cho phép xây dựng các bản dựng WASI một lần dựa trên sdk mới nhất.
gh-101060: Thêm
-fno-reorder-blocks-and-partitionvào cấu hình có điều kiện. Sửa lỗi--enable-boltmột cách hiệu quả khi sử dụng Clang, vì đây dường như là cờ chỉ dành cho GCC.gh-98705:
__bool__được xác định trong các tệp tiêu đề hệ thống AIX sẽ phá vỡ bản dựng trong AIX, vì vậy hãy hủy xác định nó.gh-98636: Khắc phục lỗi hồi quy khi phát hiện thư viện
gdbm_compatcho bản dựng mô-đun_gdbm.gh-96305:
_aix_supporthiện sử dụng một mã đơn giản để lấy thông tin chi tiết về nền tảng thay vì_bootsubprocesshiện không tồn tại trong quá trình khởi động.
cửa sổ¶
gh-101543: Đảm bảo đường dẫn cài đặt trong sổ đăng ký chỉ được sử dụng khi thư viện chuẩn chưa được định vị theo bất kỳ cách nào khác.
gh-101467: Trình khởi chạy
py.exehiện lọc chính xác khi chỉ cài đặt một thời gian chạy duy nhất. Nó cũng xử lý chính xác các kết quả khớp tiền tố trên thẻ để-3.1không khớp với3.11nhưng vẫn khớp với3.1-32.gh-99834: Cập nhật bản sao Tcl/Tk đi kèm lên 8.6.13.0
gh-101135: Khôi phục khả năng khởi chạy các phiên bản 32 bit cũ hơn từ trình khởi chạy
py.exekhi có sẵn cả bản cài đặt 32 bit và 64 bit của cùng một phiên bản.gh-82052: Đã khắc phục sự cố trong đó việc ghi hơn 32K đầu ra Unicode vào màn hình bảng điều khiển trong một lần có thể dẫn đến mojibake.
gh-100320: Đảm bảo khóa đăng ký
PythonPathtừ một bản cài đặt được sử dụng khi khởi chạy từ một bản sao Python khác dựa trên bản cài đặt hiện có để cung cấp bản sao các mô-đun và thư viện chuẩn của nó.gh-100247: Khôi phục hỗ trợ cho trình khởi chạy
py.exetìm các lệnh Shebang trong tệp cấu hình của nó bằng tên lệnh đầy đủ.
Python 3.12.0 alpha 4¶
Release date: 2023-01-10
Cốt lõi và nội dung¶
gh-100776: Sửa giá trị mặc định sai lệch trong
__text_signature__củainput().gh-99005: Loại bỏ
UNARY_POSITIVE,ASYNC_GEN_WRAPvàLIST_TO_TUPLE, thay thế chúng bằng nội tại.gh-99005: Thêm lệnh
CALL_INTRINSIC_1mới. XóaIMPORT_STAR,PRINT_EXPRvàSTOPITERATION_ERROR, thay thế chúng bằng lệnhCALL_INTRINSIC_1.gh-100288: Loại bỏ lệnh chuyên dùng LOAD_ATTR_METHOD_WITH_DICT. Số liệu thống kê cho thấy nó không hữu ích.
gh-100720: Đã thêm
_PyFrame_NumSlotsForCodeObject, trả về số lượng vị trí cần thiết trong khung cho một đối tượng mã nhất định.gh-100719: Đã xóa trường co_nplaincellvars khỏi đối tượng mã vì nó dư thừa.
gh-100637: Sửa phép tính
int.__sizeof__()để bao gồm mảngob_digit1 phần tử cho0vàFalse.gh-100649: Cập nhật trường Native_thread_id của PyThreadState sau ngã ba.
gh-100126: Khắc phục sự cố trong đó các khung "không hoàn chỉnh" có thể hiển thị nhanh với mã C trong khi các khung khác đang bị phá bỏ, có thể dẫn đến trình thông dịch bị hỏng hoặc gặp sự cố nghiêm trọng khi chạy trình hoàn thiện.
gh-87447: Khắc phục
SyntaxErrorkhi kiểm tra lại khả năng hiểu bằng các tên không thực sự được xác định lại.Bây giờ việc gán lại
btrong[(b := 1) for a, b.prop in some_iter]được cho phép. Việc chỉ định lạiavẫn không được phép theo PEP 572.gh-100268: Thêm
int.is_integer()để cải thiện khả năng tương thích loại vịt giữaintvàfloat.gh-100425: Cải thiện độ chính xác của
sum()bằng phép tính tổng bù.
Thư viện¶
gh-100374: Sửa kết quả không chính xác và độ trễ trong
socket.getfqdn(). Bản vá của Dominic Socular.
Cốt lõi và nội dung¶
gh-100357: Chuyển đổi
vars,dir,next,getattrvàitersang phòng khám tranh luận.gh-100117: Cải thiện đầu ra của
codeobject.co_lines()bằng cách chỉ phát ra một mục nhập cho mỗi phạm vi dòng.gh-90043: Xử lý NaN khi chuyên biệt
COMPARE_OPcho các giá trịfloat.gh-100222: Xác định lại
_Py_CODEUNITtypedef như một sự kết hợp để mô tả bố cục của nó cho trình biên dịch C, tránh việc chơi chữ và cải thiện độ rõ ràng.gh-99955: Các hàm biên dịch nội bộ (trong biên dịch.c) giờ đây luôn trả về -1 nếu có lỗi và 0 nếu thành công.
gh-100188: Lệnh
BINARY_SUBSCR_LIST_INTvàBINARY_SUBSCR_TUPLE_INTkhông còn được sử dụng cho số nguyên âm vì các lệnh đó luôn bị trượt khi gặp số nguyên âm.gh-99110: Khởi tạo frame->previous trong frameobject.c để sửa lỗi phân đoạn khi truy cập các khung được tạo bởi
PyFrame_New().gh-94155: Cải thiện thuật toán băm cho các đối tượng mã, giảm thiểu một số xung đột băm.
gh-99540:
Nonebây giờ được băm thành một giá trị không đổi. Đây không phải là một sự thay đổi yêu cầu.gh-100143: Khi được xây dựng bằng
--enable-pystats, tính năng thu thập số liệu thống kê hiện bị tắt theo mặc định. Để kích hoạt sớm khi khởi động, hãy chuyển cờ-Xpystats. Số liệu thống kê bây giờ luôn bị hủy, ngay cả khi bị tắt.gh-100146: Cải thiện opcode
BUILD_LISTđể nó hoạt động tương tự như opcodeBUILD_TUPLE, bằng cách lấy cắp các tham chiếu từ ngăn xếp thay vì sử dụng nhiều lần các thao tác ngăn xếp để đặt các thành phần danh sách. Chi tiết triển khai có trong API_PyList_FromArraySteal()riêng tư mới.gh-100110: Chuyên
FOR_ITERcho các bộ dữ liệu.gh-100050: Xử lý các lỗi hiện có khi tìm kiếm dấu ngoặc đơn không khớp trong mã thông báo. Bản vá của Pablo Galindo
gh-92216: Cải thiện hiệu suất của
hasattr()cho các đối tượng loại bị thiếu thuộc tính.gh-99554: Đóng gói các bảng vị trí gỡ lỗi hiệu quả hơn trong quá trình biên dịch mã byte.
gh-98522: Thêm số phiên bản nội bộ vào các đối tượng mã, để cung cấp phiên bản tốt hơn cho các chức năng bên trong và khả năng hiểu, từ đó chuyên môn hóa tốt hơn các chức năng đó. Thay đổi này là vô hình đối với cả phần mở rộng Python và C.
gh-94603: Cải thiện hiệu suất của
list.popcho danh sách nhỏ.
Thư viện¶
Cốt lõi và nội dung¶
bpo-32782: Các mảng
ctypescó độ dài 0 hiện báo cáo kích thước mục chính xác khimemoryviewđược tạo từ chúng, thay vì luôn đưa ra giá trị 0.
Thư viện¶
gh-100833: Tăng tốc
math.fsum()bằng cách loại bỏ các vòng loạivolatilephòng thủ.gh-100805: Sửa đổi cách triển khai
random.choice()để một lần nữa hoạt động với mảng NumPy.gh-100813: Cộng hằng số
socket.IP_PKTINFO.gh-100792: Tạo
email.message.Message.__contains__()nhanh gấp đôi.gh-91851: Tối ưu hóa vi mô cho
fractions.Fraction.__round__(),fractions.Fraction.__ceil__()vàfractions.Fraction.__floor__().gh-90104: Tránh RecursionError trên
reprnếu định nghĩa trường lớp dữ liệu có tham chiếu tuần hoàn.gh-100689: Khắc phục sự cố trong
pyexpatbằng cách phân bổ tĩnh viên nangPyExpat_CAPI.gh-100740: Khắc phục
unittest.mock.Mockkhông tôn trọng thông số kỹ thuật cho tên thuộc tính có tiền tốassert.gh-91219: Thay đổi
SimpleHTTPRequestHandlerđể hỗ trợ phân lớp nhằm cung cấp một tập hợp tên tệp chỉ mục khác thay vì sử dụng tham số__init__.gh-100690: các đối tượng
Mockkhông an toàn giờ đây sẽ đưa raAttributeErrorkhi truy cập một thuộc tính khớp với tên của một xác nhận nhưng không có tiền tốassert_, ví dụ: truy cậpcalled_oncethay vìassert_called_once. Ngoài ra, điều này còn xảy ra khi truy cập các thuộc tính có tiền tốassert,assret,asert,aseertvàassrt.gh-89727: Đơn giản hóa và tối ưu hóa
os.walk()bằng cách sử dụng các bước kiểm traisinstance()để kiểm tra phần trên cùng của ngăn xếp.gh-100485: Thêm math.sumprod() để tính tổng các tích.
gh-86508: Sửa
asyncio.open_connection()để bỏ qua liên kết với các địa chỉ cục bộ của nhóm khác. Bản vá của Kumar Aditya.gh-97930:
importlib.resources.fileshiện chấp nhận mô-đun làm điểm neo thay vì chỉ chấp nhận các gói. Nếu một mô-đun được thông qua, các tài nguyên sẽ được phân giải liền kề với mô-đun đó (trong cùng một gói hoặc tại thư mục gốc của gói). Tham số này đã được đổi tên từpackagethànhanchorvới tính năng tương thích cho những người chuyển qua từ khóa. Ngoài ra, tham sốanchormới hiện là tùy chọn và sẽ mặc định cho mô-đun của người gọi.gh-100585: Đã sửa lỗi importlib.resources.as_file để con trỏ tệp mở
gh-100562: Cải thiện hiệu suất của
pathlib.Path.absolute()gần gấp 2 lần. Điều này phải trả giá bằng sự hồi quy hiệu suất trongpathlib.Path.cwd(), thường được sử dụng ít thường xuyên hơn trong mã người dùng.gh-100519: Đơn giản hóa một chút
http.cookiejar.eff_request_host()giúp cải thiện khả năng đọc và phù hợp hơn với từ ngữ RFC.gh-100287: Sửa lỗi tương tác của
unittest.mock.seal()vớiunittest.mock.AsyncMock.gh-100488: Thêm
Fraction.is_integer()để kiểm tra xemfractions.Fractioncó phải là số nguyên hay không. Điều này cải thiện khả năng tương thích của loại vịt vớifloatvàint.gh-100474:
http.serverhiện kiểm tra xem trang chỉ mục có thực sự là một tệp thông thường hay không trước khi thử phân phát nó. Điều này tránh được các vấn đề với thư mục có tênindex.html.gh-100363: Tăng tốc
asyncio.get_running_loop()bằng cách loại bỏ các kiểm tragetpiddư thừa. Bản vá của Kumar Aditya.gh-78878: Khắc phục sự cố khi tạo phiên bản
_ctypes.CField.gh-100348: Sửa chu kỳ ref trong
asyncio._SelectorSocketTransportbằng cách xóa_read_ready_cbtrongclose.gh-100344: Cung cấp triển khai C cho
asyncio.current_task()để tăng tốc 4x-6x.gh-100272: Sửa lỗi tuần tự hóa JSON của OrderedDict. Bây giờ nó giữ nguyên thứ tự của các phím.
gh-83076: Việc khởi tạo
Mock()vàAsyncMock()hiện nhanh hơn 3,8 lần.gh-100234: Đặt giá trị mặc định là 1,0 cho tham số
lambdtrong Random.expovariate().gh-100228:
DeprecationWarningcó thể được tăng lên khios.fork()hoặcos.forkpty()được gọi từ các quy trình đa luồng. Việc phân nhánh với các luồng không an toàn và có thể gây ra bế tắc, sự cố và các vấn đề khó phát hiện. Việc thiếu cảnh báo không cho thấy lệnh gọi fork thực sự an toàn, vì Python có thể không nhận biết được tất cả các luồng.gh-100039: Cải thiện chữ ký cho enum và cờ.
gh-100133: Khắc phục hồi quy trong
asynciotrong đó quy trình con đôi khi sẽ mất dữ liệu nhận được từ đường ống.bpo-44592: Khắc phục việc xử lý không nhất quán phân biệt chữ hoa chữ thường của extrasaction arg trong
csv.DictWriter.gh-100098: Sửa lỗi các lớp con
tupleđược chuyển thànhtuplekhi được sử dụng làm giá trị enum.gh-85432: Đổi tên tham số fmt của quá trình triển khai Python thuần túy của
datetime.time.strftime()thành format. Đổi tên tham số t củadatetime.datetime.fromtimestamp()thành timestamp. Những thay đổi này có nghĩa là tên tham số trong quá trình triển khai Python thuần túy hiện khớp với tên tham số trong quá trình triển khai C. Bản vá của Alex Waygood.gh-98778: Cập nhật
HTTPErrorđể được khởi tạo đúng cách, ngay cả khifplàNone. Bản vá của Donghee Na.gh-99925: Thống nhất các thông báo lỗi trong tuần tự hóa JSON giữa
json.dumps(float('nan'), allow_nan=False)vàjson.dumps(float('nan'), allow_nan=False, indent=<SOMETHING>). Bây giờ cả hai đều bao gồm việc biểu diễn giá trị không thể được tuần tự hóa.gh-89727: Khắc phục sự cố với
os.walk()trong đóRecursionErrorsẽ xuất hiện trên các cấu trúc thư mục sâu bằng cách điều chỉnh việc triển khaios.walk()thành lặp lại thay vì đệ quy.gh-94943: Thêm Hỗ trợ lớp dữ liệu vào
Enum__repr__(). Khi kế thừa từdataclass, chỉ hiển thị tên trường trong phần giá trị của thành viênrepr()chứ không hiển thị tên lớp của lớp dữ liệu.gh-83035: Khắc phục việc xử lý
inspect.getsource()các lệnh gọi trang trí bằng dấu ngoặc đơn lồng nhau.gh-99576: Sửa phương pháp
.save()choLWPCookieJarvàMozillaCookieJar: tệp đã lưu không bị cắt bớt khi lưu nhiều lần.gh-94912: Thêm trình trang trí
inspect.markcoroutinefunction()để đánh dấu thủ công một hàm là coroutine vì lợi ích củaiscoroutinefunction().gh-99509: Thêm hỗ trợ PEP 585 cho
multiprocessing.queues.Queue.gh-99482: Xóa mã tương thích một phần
Jythonkhỏi một số mô-đun stdlib.gh-99433: Khắc phục lỗi
doctesttrêntypes.MethodWrapperTypetrong các mô-đun.gh-85267: Một số cải tiến trong cách xử lý
__text_signaturecủainspect.signature(). - Khắc phục trường hợpinspect.signature()giảm tham số - Khắc phục trường hợpinspect.signature()tăngtokenize.TokenError- Cho phépinspect.signature()hiểu các giá trị mặc định liên quan đến hoạt động nhị phân của hằng số -inspect.signature()được ghi lại là chỉ tăngTypeErrorhoặcValueError, nhưng đôi khi tăngRuntimeError. Những trường hợp này hiện tăngValueError- Đã xóa đường dẫn mã chếtgh-91166:
asynciođược tối ưu hóa để tránh sao chép quá nhiều khi ghi vào socket và sử dụngsendmsg()nếu nền tảng hỗ trợ. Bản vá của Kumar Aditya.gh-98030: Thêm các tùy chọn ổ cắm TCP bị thiếu từ Linux:
TCP_MD5SIG,TCP_THIN_LINEAR_TIMEOUTS,TCP_THIN_DUPACK,TCP_REPAIR,TCP_REPAIR_QUEUE,TCP_QUEUE_SEQ,TCP_REPAIR_OPTIONS,TCP_TIMESTAMP,TCP_CC_INFO,TCP_SAVE_SYN,TCP_SAVED_SYN,TCP_REPAIR_WINDOW,TCP_FASTOPEN_CONNECT,TCP_ULP,TCP_MD5SIG_EXT,TCP_FASTOPEN_KEY,TCP_FASTOPEN_NO_COOKIE,TCP_ZEROCOPY_RECEIVE,TCP_INQ,TCP_TX_DELAY.gh-88500: Giảm mức sử dụng bộ nhớ của
urllib.parse.unquote()vàurllib.parse.unquote_to_bytes()trên các giá trị lớn.gh-96127:
inspect.signatuređang kêu gọiTypeErrorbằng các đối tượng giả. Bây giờ nó trả về chính xác(*args, **kwargs)dưới dạng chữ ký được suy ra.gh-95882: Khắc phục hồi quy 3,11 trong
asynccontextmanager(), khiến nó lan truyền các ngoại lệ với các dấu vết truy nguyên không chính xác và sửa lỗi hồi quy 3,11 trongcontextmanager(), khiến nó lan truyền các ngoại lệ với các dấu vết truy ngược không chính xác choStopIteration.gh-78707: Không dùng nữa việc chuyển nhiều hơn một đối số vị trí cho
pathlib.PurePath.relative_to()vàis_relative_to().gh-92122: Sửa lỗi cú pháp reStructuredText trong chuỗi tài liệu trong mô-đun
enum.gh-91851: Tối ưu hóa số học
Fractioncho các thành phần nhỏ.bpo-24132: Tạo
pathlib.PurePathvàPathcó thể phân lớp (riêng tư để bắt đầu). Trước đây, việc cố gắng khởi tạo một lớp con đã dẫn đến kết quả làAttributeErrorđược nâng lên. Bản vá của Barney Gale.bpo-40447: Chấp nhận
os.PathLike(chẳng hạn nhưpathlib.Path) trong các đối sốstripdircủacompileall.compile_file()vàcompileall.compile_dir().bpo-36880: Khắc phục sự cố đếm tham chiếu khi lệnh gọi lại
ctypescó kiểu trả vềpy_objecttrả vềNone, điều này có thể gây ra sự cố.
Tài liệu¶
gh-100616: Ghi lại tham số
attrhiện có vào hàmcurses.window.vline()trongcurses.gh-100472: Xóa xác nhận trong tài liệu rằng các tham số
stripdir,prependdirvàlimit_sl_destcủacompileall.compile_dir()vàcompileall.compile_file()có thể làbytes.bpo-25377: Làm rõ việc sử dụng định dạng bát phân của đối số chế độ trong trợ giúp (os.chmod) cũng như trợ giúp (os.fchmod)
Kiểm tra¶
gh-100454: Bắt đầu chạy thử nghiệm SSL với OpenSSL 3.1.0-beta1.
gh-100086: Trình chạy thử Python (libregrtest) hiện ghi lại thông tin bản dựng Python như bản dựng "gỡ lỗi" và "phát hành" hoặc tối ưu hóa LTO và PGO. Bản vá của Victor Stinner.
gh-93018: Thực hiện hai thử nghiệm tha thứ cho libexpat của hệ thống máy chủ có áp dụng các bản sửa lỗi bảo mật được chuyển ngược lại.
xây dựng¶
gh-100540: Đã xóa tùy chọn
--with-system-fficonfigure;libffihiện phải luôn được hệ thống cung cấp trên tất cả các nền tảng không phải Windows. Tùy chọn này không có tác dụng trên các nền tảng không phải của Darwin đối với một số bản phát hành và trong 3.11 chỉ có tác dụng không rõ ràng là gọipkg-configđể tìmlibffivà không bao giờ thiết lập-DUSING_APPLE_OS_LIBFFI. Giờ đây, trên nền tảng Darwin,configuretrước tiên sẽ kiểm tra hệ điều hànhlibffivà sau đó quay lại quá trình xử lý tương tự như các nền tảng khác nếu không tìm thấy.gh-88267: Tránh xuất ký hiệu Python trong các ứng dụng Windows được liên kết khi lõi được xây dựng ở dạng tĩnh.
bpo-41916: Cho phép ghi đè ac_cv_cxx_thread để python được biên dịch chéo có thể đặt -pthread cho CXX.
cửa sổ¶
gh-100180: Cập nhật trình cài đặt Windows lên OpenSSL 1.1.1s
gh-99191: Sử dụng
_MSVC_LANG >= 202002Lthay vì_MSC_VER >=1929kém chính xác hơn để kiểm tra chính xác hơn khả năng hỗ trợ C++20 trongPC/_wmimodule.cpp.gh-79218: Xác định
MS_WIN64cho Mingw-w64 64bit, sửa lỗi biên dịch cython.gh-99941: Đảm bảo rằng
asyncio.Protocol.data_received()nhận được một đối tượngbytesbất biến (như tài liệu), thay vìbytearray.bpo-43984:
winreg.SetValueEx()hiện giữ nguyên giá trị mục tiêu trong trường hợp có lỗi chuyển đổi. Trước đây,-1sẽ được viết trong trường hợp có lỗi như vậy.bpo-34816:
hasattr(ctypes.windll, 'nonexistant')hiện trả vềFalsethay vì tăngOSError.
macOS¶
Công cụ/Bản trình diễn¶
bpo-45256: Sửa lỗi khiến
AttributeErrorđược nâng lên trongpython-gdb.pykhi sử dụngpy-localsmà không có khung.gh-100342: Thêm kiểm tra
NULLbị thiếu để tìm lỗi phân bổ có thể xảy ra khi phân tích cú pháp*argstrong Phòng khám đối số.
C API¶
gh-99947: Việc tăng SystemError khi nhập giờ đây sẽ có nguyên nhân được đặt thành ngoại lệ không mong muốn ban đầu.
gh-99240: Trong phân tích cú pháp đối số, sau khi giải phóng bộ nhớ mới được cấp phát, hãy đặt lại con trỏ của nó thành NULL.
gh-98724: Các macro
Py_CLEAR,Py_SETREFvàPy_XSETREFhiện chỉ đánh giá các đối số của chúng một lần. Nếu một đối số có tác dụng phụ thì những tác dụng phụ này sẽ không còn bị trùng lặp nữa. Bản vá của Victor Stinner.
Python 3.12.0 alpha 3¶
Release date: 2022-12-06
Bảo mật¶
gh-100001:
python -m http.serverkhông còn cho phép in các ký tự điều khiển đầu cuối được gửi trong yêu cầu rác vào nhật ký máy chủ stderr nữa.Điều này được thực hiện bằng cách thay đổi phương thức
http.serverBaseHTTPRequestHandler.log_messageđể thay thế các ký tự điều khiển bằng ký tự thoát hex\xHHtrước khi in.gh-87604: Tránh xuất bản danh sách các móc kiểm tra đang hoạt động trên mỗi phiên dịch viên thông qua mô-đun
gc
Cốt lõi và nội dung¶
gh-99891: Sửa lỗi trong trình mã thông báo có thể gây ra đệ quy vô hạn khi hiển thị cảnh báo cú pháp xảy ra ở dòng đầu tiên của nguồn. Bản vá của Pablo Galindo
gh-91054: Thêm API
PyCode_AddWatcher()vàPyCode_ClearWatcher()để đăng ký lệnh gọi lại nhằm nhận thông báo về việc tạo và hủy các đối tượng mã.gh-99729: Khắc phục sự cố có thể khiến các khung hiển thị với mã Python khi chúng bị phá bỏ, có thể dẫn đến hỏng bộ nhớ hoặc sự cố nghiêm trọng của trình thông dịch.
gh-99708: Sửa lỗi trình biên dịch gặp sự cố trên biểu thức if có khối nội dung trống.
gh-99578: Sửa lỗi tham chiếu trong
_imp.create_builtin()sau khi tạo trình thông dịch phụ đầu tiên cho các mô-đunbuiltinsvàsys. Bản vá của Victor Stinner.gh-99581: Đã khắc phục lỗi gây tràn bộ đệm nếu bộ mã thông báo sao chép một dòng thiếu ký tự dòng mới từ một tệp có độ dài bằng bộ đệm bộ mã thông báo có sẵn. Bản vá của Pablo galindo
gh-99553: Sửa lỗi trong đó lớp con
ExceptionGroupcó thể bao bọcBaseException.
Thư viện¶
Cốt lõi và nội dung¶
gh-99377: Thêm sự kiện kiểm tra để tạo chuỗi và xóa hoạt động.
gh-98686: Xóa "chuyên môn"
BINARY_OP_GENERICvàCOMPARE_OP_GENERIC.gh-99298: Xóa các đường dẫn lỗi còn lại đối với các chuyên môn thuộc tính và từ chối truy cập thuộc tính chuyên biệt trên các loại chưa có
PyType_Ready()được gọi.gh-99127: Chỉ cho phép một số tính năng của
syslogđối với trình thông dịch chính. Bản vá của Donghee Na.gh-91053: Tối ưu hóa trình thông dịch và trình biên dịch JIT có thể cần vô hiệu hóa siêu dữ liệu nội bộ khi các chức năng được sửa đổi. Thay đổi này bổ sung khả năng cung cấp lệnh gọi lại sẽ được gọi mỗi khi một hàm được tạo, sửa đổi hoặc hủy.
gh-90994: Cải thiện thông báo lỗi khi có lỗi cú pháp với đối số cuộc gọi. Ba trường hợp sau đây được đề cập: - Không có giá trị nào được gán cho đối số được đặt tên, ví dụ:
foo(a=). - Một giá trị được gán cho đối số hình sao, ví dụfoo(*args=[0]). - Một giá trị được gán cho đối số từ khóa hai sao, ví dụfoo(**kwarg={'a': 0}).bpo-45026: Tối ưu hóa trình lặp đối tượng
range. Bây giờ nó nhỏ hơn, lặp lại nhanh hơn các phạm vi chứa số lượng lớn. Dưa chua nhỏ hơn, ngâm dưa chua nhanh hơn.bpo-31718: Tăng
ValueErrorthay vìSystemErrorkhi gọi các phương thức của đối tượngio.IncrementalNewlineDecoderchưa được khởi tạo. Bản vá của Oren Milman.bpo-38031: Khắc phục lỗi xác nhận có thể xảy ra trong
io.FileIOkhi trình mở trả về bộ mô tả tệp không hợp lệ.
Thư viện¶
gh-100001: Ngoài ra escape s trong http.server BaseHTTPRequestHandler.log_message để về mặt kỹ thuật có thể phân tích cú pháp dòng và tái tạo lại dữ liệu gốc. Nếu không có điều này, xHH sẽ không rõ ràng về việc liệu đó có phải là sự thay thế hex mà chúng tôi đã đưa vào hay các ký tự r"x" xuất hiện trong dòng yêu cầu ban đầu hay không.
gh-99957: Thêm tham số
frozen_defaultvàotyping.dataclass_transform().gh-79033: Sửa
asyncio.Server.wait_closed()để thực sự làm được những gì tài liệu hứa hẹn -- đợi tất cả các kết nối hiện có hoàn tất, sau khi đóng máy chủ.gh-51524: Sửa lỗi khi gọi trace.CoverageResults với infile hợp lệ.
gh-99645: Sửa lỗi xử lý việc dọn dẹp lớp trong
unittest.TestCase. Bây giờaddClassCleanup()sử dụng các danh sách riêng biệt cho các lớp conTestCasekhác nhau vàdoClassCleanups()chỉ dọn sạch lớp cụ thể.gh-99508: Sửa
TypeErrortrongLib/importlib/_bootstrap_external.pykhi gọi_imp.source_hash().gh-66285: Sửa
asynciođể không chia sẻ vòng lặp sự kiện và báo hiệu Wakeupfd trong các quy trình phân nhánh. Bản vá của Kumar Aditya.gh-97001: Giải phóng GIL khi gọi API termios để tránh chặn luồng.
gh-92647: Sử dụng trạng thái cuối cùng của một enum để xác định nhánh tra cứu hoặc tạo của API chức năng.
gh-99388: Thêm tham số loop_factory vào
asyncio.run()để cho phép chỉ định nhà máy vòng lặp sự kiện tùy chỉnh. Bản vá của Kumar Aditya.gh-99341: Sửa
ast.increment_lineno()để che cảast.TypeIgnorekhi thay đổi số dòng.gh-99382: Kiểm tra số lượng đối số thay thế trong tên chung của người dùng có chứa
TypeVarTuplevà một hoặc nhiềuTypeVar.gh-99379: Sửa lỗi thay thế
ParamSpectheo sau làTypeVarTupletrong các bí danh chung.gh-99344: Sửa lỗi thay thế
TypeVarTuplevàParamSpeccùng nhau trong tên chung của người dùng.gh-99284: Xóa
_use_broken_old_ctypes_structure_semantics_bản hack cũ chưa được kiểm tra và không có giấy tờ khỏictypes.gh-99201: Sửa lỗi
IndexErrorkhi khởi tạo các biến config trên Windows nếuHAVE_DYNAMIC_LOADINGkhông được thiết lập.gh-99240: Sửa lỗi double-free trong Argument Clinic
str_converterbằng cách trích xuất bộ nhớ sạch sang phầnpost_parsingmới.gh-64490: Sửa lỗi đếm lại khi các đối số được đóng gói thành bộ trong Phòng khám đối số.
gh-99029:
pathlib.PurePath.relative_to()hiện coi đường dẫn ổ đĩa Windows trần là tương đối. Điều này làm cho hành vi của nó phù hợp với các phần khác của pathlib.gh-98253: Việc triển khai mô-đun gõ giờ đây có khả năng phục hồi tốt hơn trước các rò rỉ tham chiếu trong các mô-đun mở rộng nhị phân.
Trước đây, một rò rỉ tham chiếu trong mô-đun mở rộng dựa trên C API được gõ có thể làm rò rỉ phần bên trong của mô-đun gõ, từ đó có thể gây ra rò rỉ trong bất kỳ gói nào khác có chữ ký hàm được gõ. Mặc dù gói đánh máy không phải là nguồn gốc của vấn đề, nhưng sự phụ thuộc không cục bộ như vậy làm trầm trọng thêm việc gỡ lỗi của các dự án quy mô lớn và do đó việc triển khai đã được thay đổi để giảm thiểu tác hại bằng cách cung cấp khả năng cách ly tốt hơn.
gh-98458: Khắc phục vòng lặp vô hạn ở mức không đáng tin cậy nhất khi ngoại lệ chuỗi tự tham chiếu được nâng lên
gh-93453:
asyncio.get_event_loop()và nhiều hàmasynciokhác nhưasyncio.ensure_future(),asyncio.shield()hoặcasyncio.gather(), và cả phương thứcget_event_loop()củaasyncio.BaseDefaultEventLoopPolicyhiện sẽ tăngRuntimeErrornếu được gọi khi không có vòng lặp sự kiện đang chạy và vòng lặp sự kiện hiện tại chưa được thiết lập. Trước đây họ đã ngầm tạo và thiết lập một vòng lặp sự kiện hiện tại mới.DeprecationWarningkhông còn được phát ra nếu không có vòng lặp sự kiện đang chạy nhưng vòng lặp sự kiện hiện tại đã được đặt.gh-97966: Trên
uname_result, đã khôi phục kỳ vọng rằng_fieldsvà_asdictsẽ bao gồm tất cả sáu thuộc tính bao gồmprocessor.gh-98248: Cung cấp thông báo lỗi đầy thông tin trong
struct.pack()khi các đối số tích phân của nó không nằm trong phạm vi.gh-98108:
zipfile.Pathhiện có thể chọn được nếu các tham số khởi tạo của nó có thể chọn được (ví dụ: đối với đường dẫn hệ thống tệp).gh-98098: Tạo các gói từ mô-đun zipfile và test_zipfile, tách biệt chức năng
zipfile.Path.gh-82836: Sửa thuộc tính
is_privatetrong mô-đunipaddress. Các mạng không riêng tư trước đây (0.0.0.0/0) sẽ trả vềTruetừ phương thức này; bây giờ họ trả lại chính xácFalse.gh-96828: Thêm tùy chọn
OP_ENABLE_KTLSđể cho phép sử dụng kernel TLS (kTLS). Bản vá của Illia Volochii.gh-88863: Để tránh rò rỉ bộ nhớ rõ ràng khi
asyncio.open_connection()tăng lên, hãy ngắt chu kỳ tham chiếu được tạo bởi ngoại lệ cục bộ và các phiên bản trong tương lai (có phiên bản ngoại lệ là var thành viên của nó). Bản vá của Dong Uk, Kang.gh-91078:
TarFile.next()hiện trả vềNonekhi được gọi trên một tarfile trống.bpo-47220: Ghi lại tham số callback tùy chọn của
WeakMethod. Bản vá của Géry Ogam.bpo-44817: Bỏ qua WinError 53 (ERROR_BAD_NETPATH), 65 (ERROR_NETWORK_ACCESS_DENIED) và 161 (ERROR_BAD_PATHNAME) khi sử dụng ntpath.realpath().
bpo-41260: Đổi tên tham số fmt của quá trình triển khai Python thuần túy của
datetime.date.strftime()thành format.bpo-15999: Tất cả các hàm tích hợp hiện chấp nhận đối số thuộc bất kỳ loại nào thay vì chỉ
boolvàintcho các tham số boolean.
Tài liệu¶
gh-99931: Sử dụng sphinxext-opengraph để tạo OpenGraph metadata.
gh-89682: Chuỗi tài liệu được điều chỉnh lại của
__contains__mặc định để làm rõ rằng nó trả vềbool.gh-88330: Đã cải thiện mô tả về tài nguyên trong tài liệu importlib.resources.
gh-92892: Tài liệu cho biết việc gọi các hàm biến đổi bằng ctypes cần được chăm sóc đặc biệt trên macOS/arm64 (và có thể cả các nền tảng khác).
bpo-41825: Tái cấu trúc tài liệu cho nhóm hàm
os.wait*và cải thiện tài liệu choos.waitid()với phần giải thích rõ hơn về các hằng số đối số có thể có.
Kiểm tra¶
gh-99892: Bỏ qua test_normalization() của test_unicodedata nếu không tải xuống được tệp NormalizationTest.txt từ pythontest.net. Bản vá của Victor Stinner.
gh-99934: Test_marsh đúng trên (32 bit) x86: bộ test_deterministic không thành công.
gh-99741: Chúng tôi đã triển khai init nhiều pha (PEP 489/630/687) cho mô-đun _xxsubinterpreters nội bộ (để thử nghiệm).
gh-99659: Các bài kiểm tra bộ nhớ lớn tùy chọn trong
test_sqlite3hiện đã tìm ra loại ngoại lệsqlite.DataErrorchính xác trong trường hợp các chuỗi và/hoặc các đốm màu quá lớn được thông qua.gh-99593: Bao gồm các bài kiểm tra Unicode C API.
gh-96002: Thêm bài kiểm tra chức năng cho Argument Clinic.
xây dựng¶
gh-99086: Khắc phục cảnh báo trình biên dịch
-Wimplicit-int,-Wstrict-prototypesvà-Wimplicit-function-declarationtrong kiểm tra configure.gh-99337: Khắc phục sự cố biên dịch với GCC 12 trên macOS.
gh-99289: Thêm biến
COMPILEALL_OPTStrong Makefile để ghi đè các tùy chọncompileall(mặc định:-j0) trongmake install. Đồng thời hợp nhất các lệnhcompileallthành một tệp .pyc xây dựng lệnh duy nhất cho tất cả các mức tối ưu hóa (0, 1, 2) cùng một lúc. Bản vá của Victor Stinner.gh-98872: Khắc phục rò rỉ fd có thể xảy ra trong
Programs/_freeze_module.cđược giới thiệu trong Python 3.11.gh-88226: Luôn xác định nhãn
TARGET_*trongPython/ceval.c, ngay cả khiUSE_COMPUTED_GOTOSbị tắt. Điều này cho phép đặt điểm ngắt tại các nhãn đó trong (ví dụ)gdb.
cửa sổ¶
gh-99345: Sử dụng các chức năng khởi tạo nhanh hơn để phát hiện vị trí cài đặt cho gói Windows Store
gh-98629: Sửa lỗi khởi tạo
sys.versionvàsys._gittrên Windowsgh-99442: Khắc phục sự cố xử lý trong Trình quản lý cài đặt Python khi
argv[0]không bao gồm phần mở rộng tệp.bpo-40882: Sửa lỗi rò rỉ bộ nhớ trong
multiprocessing.shared_memory.SharedMemorytrên Windows.
macOS¶
Công cụ/Bản trình diễn¶
gh-64490: Sửa lỗi các biến thể của Argument Clinic
Sửa lỗi out-of-bounds trong
_PyArg_UnpackKeywordsWithVararg().Sửa lỗi kiểm tra không chính xác cho phép nhiều hơn một biến thể trong Clinic.py.
Sửa lỗi tính toán sai
noptargstrong mã được tạo.Không tạo
noptargskhi có đối số vararg và không có đối số tùy chọn.
C API¶
gh-98680: Hằng số
PyBUF_*được đánh dấu là một phần của Limited API của Python 3.11+. Chúng có sẵn trong phiên bản 3.11.0 vớiPy_LIMITED_APIđược xác định cho 3.11 và cần thiết để sử dụng bộ đệm API.gh-99612: Sửa
PyUnicode_DecodeUTF8Stateful()cho dữ liệu chỉ có ASCII:*consumedchưa được đặt.gh-47146: Tiêu đề
structmember.hkhông được dùng nữa. Nội dung không được dùng nữa của nó hiện có sẵn chỉ bằng cách bao gồmPython.h, với tiền tốPy_được thêm vào nếu nó bị thiếu. (Nội dung không được dùng nữa là các cờT_OBJECT,T_NONEvà no-op.) Bản vá của Petr Viktorin, dựa trên tác phẩm trước đó của Alexander Belopolsky và Matthias Braun.
Python 3.12.0 alpha 2¶
Release date: 2022-11-14
Bảo mật¶
gh-98433: Bộ giải mã codec IDNA được sử dụng trên tên máy chủ DNS bởi
sockethoặc các chức năng phân giải tên liên quan đếnasynciokhông còn liên quan đến thuật toán bậc hai. Điều này ngăn chặn khả năng từ chối dịch vụ CPU nếu tên máy chủ có độ dài vượt quá thông số kỹ thuật liên quan đến các ký tự hai chiều được giải mã. Một số giao thức như chuyển hướngurllibhttp3xxcó khả năng cho phép kẻ tấn công cung cấp tên như vậy.Các nhãn riêng lẻ trong tên DNS được mã hóa IDNA giờ đây sẽ sớm phát sinh lỗi trong quá trình giải mã IDNA nếu chúng dài hơn 1024 ký tự unicode vì mỗi nhãn DNS được giải mã phải có 63 ký tự trở xuống và toàn bộ tên DNS được giải mã bị giới hạn ở 255. Chỉ ứng dụng hiển thị tên máy chủ hoặc nhãn bao gồm chủ yếu các ký tự RFC 3454 3.1 "Không có gì" được bị loại bỏ sẽ đạt đến giới hạn mới này. Xem thêm RFC 5894 phần 6 và RFC 3491.
gh-98739: Cập nhật gói libexpat lên 2.5.0
Cốt lõi và nội dung¶
gh-81057: Các tài liệu nói rõ rằng không nên sử dụng
PyImport_Inittab,PyImport_AppendInittab()vàPyImport_ExtendInittab()sau khiPy_Initialize()được gọi. Bây giờ chúng tôi thực thi điều này cho hai chức năng. Ngoài ra, thời gian chạy hiện sử dụng bản sao nội bộ củaPyImport_Inittabđể bảo vệ khỏi sửa đổi.gh-99298: Khắc phục sự cố có thể gây ra lỗi xử lý không chính xác đối với một số hướng dẫn mã byte.
gh-99254: Trình biên dịch hiện loại bỏ tất cả các hằng số không được sử dụng khỏi các đối tượng mã (ngoại trừ hằng số đầu tiên, có thể là một chuỗi tài liệu).
gh-99205: Khắc phục sự cố khiến bộ nhớ
PyThreadStatevàPyInterpreterStatekhông được giải phóng đúng cách.gh-81057: 18 biến C toàn cục giữ trạng thái của bộ cấp phát đã được chuyển sang
_PyRuntimeState. Đây là một sự thay đổi hoàn toàn nội bộ và không có sự thay đổi nào về hành vi.gh-99181: Khắc phục lỗi trong
except*với các ngoại lệ không thể xóa được.gh-99204: Khắc phục tính toán
sys._base_executablekhi ở trong môi trường ảo POSIX bằng cách sử dụng các bản sao của tệp nhị phân python khi cài đặt cơ sở không cung cấp tên thực thi được sử dụng bởi venv. Việc tính toán sẽ quay lại các tên thay thế ("python<MAJOR>", "python<MAJOR>.<MINOR>").gh-96055: Cập nhật
faulthandlerđể phát ra thông báo lỗi với số tín hiệu không mong muốn phù hợp. Bản vá của Donghee Na.gh-99153: Sửa vị trí của
SyntaxErrorcho khốitryvới cảexceptvàexcept*.gh-98686: Hợp nhất logic opcode thích ứng vào biến thể không nhanh chóng của mỗi lệnh và hợp nhất logic trong
EXTENDED_ARG_QUICKthànhEXTENDED_ARG. Với những thay đổi này, việc tăng tốc độ tạo đối tượng mã giờ đây chỉ chịu trách nhiệm khởi tạo bộ đếm khởi động và chèn siêu lệnh.gh-99103: Sửa lỗi báo lỗi vị trí của neo traceback chuyên dụng khi dòng nguồn chứa ký tự Unicode.
gh-99139: Cải thiện đề xuất lỗi cho các trường hợp ngoại lệ
NameError. Bây giờ, nếuNameErrorđược nêu ra trong một phương thức và phiên bản có thuộc tính chính xác bằng tên trong ngoại lệ, thì đề xuất sẽ bao gồmself.<NAME>thay vì kết quả khớp gần nhất trong phạm vi phương thức. Bản vá của Pablo Galindogh-98401: Thoát bát phân có giá trị lớn hơn
0o377(ví dụ:"\477"), không được dùng nữa trong Python 3.11, hiện tạo raSyntaxWarning, thay vìDeprecationWarning. Trong phiên bản Python tương lai, cuối cùng chúng sẽ làSyntaxError. Bản vá của Victor Stinner.gh-98401: Cặp ký tự dấu gạch chéo ngược không phải là chuỗi thoát hợp lệ hiện tạo ra
SyntaxWarning, thay vìDeprecationWarning. Ví dụ:re.compile("\d+\.\d+")hiện phát raSyntaxWarning("\d"là chuỗi thoát không hợp lệ), hãy sử dụng chuỗi thô cho biểu thức chính quy:re.compile(r"\d+\.\d+"). Trong phiên bản Python tương lai,SyntaxErrorcuối cùng sẽ được nâng lên, thay vìSyntaxWarning. Bản vá của Victor Stinner.gh-96793: Xử lý StopIteration và StopAsyncIteration được nêu trong trình tạo hoặc coroutine trong mã byte, thay vì gói mã C.
gh-98931: Cải thiện thông báo lỗi
SyntaxErrorkhi người dùng gõimport x from ythay vìfrom y import x. Bản vá của Pablo Galindogh-98852: Sửa lỗi đăng ký các bí danh loại chứa các loại chung chung hoặc các loại như
TypeVar: ví dụ:tuple[A, T][int]vàtuple[TypeVar, T][int], trong đóAlà loại chung vàTlà biến loại.gh-98925: Giảm độ sâu đệ quy cho soái ca trên WASI để hỗ trợ wasmtime (đang phát triển) 2.0.
gh-98783: Khắc phục nhiều sự cố trong chế độ gỡ lỗi khi sử dụng các lớp con
strthay vì chínhstr.gh-98811: Sử dụng các vị trí nguồn hoàn chỉnh để đơn giản hóa việc phát hiện các mục nhập
__future__không có ở đầu tệp. Đồng thời sửa phần bù trong trường hợp ngoại lệ được nêu ra trong một trường hợp, ngoại lệ này bị tắt một phần và cản trở việc đánh dấu.gh-96793: Thêm chuyên môn hóa
FOR_ITERcho máy phát điện. Lưu nhiều lớp điều phối và kiểm tra để nhận từ lệnhFOR_ITERtrong trình gọi đếnRESUMEtrong trình tạo.gh-98586: Đã thêm các phương thức
PyObject_Vectorcall()vàPyObject_VectorcallMethod()vào Limited API cùng với hằng số macro phụ trợPY_VECTORCALL_ARGUMENTS_OFFSET.Tính khả dụng của các chức năng này cho phép các cuộc gọi vectơ PEP 590 hiệu quả hơn từ các mô-đun mở rộng nhị phân giúp tránh được chi phí mở hộp/đóng hộp đối số.
gh-99257: Khắc phục sự cố trong đó các bộ mô tả thành viên (chẳng hạn như các bộ mô tả cho
__slots__) có thể hoạt động không chính xác hoặc bị lỗi thay vì đưa raTypeErrorkhi được truy cập thông qua một phiên bản của loại không hợp lệ.gh-93143: Thay vì thay đổi
co_code, trình thông dịch hiện sẽ hiển thịRuntimeWarningvà gánNonecho bất kỳ cục bộ nhanh nào không bị ràng buộc sau khi nhảy hoặc câu lệnhdelđược thực thi trong khi theo dõi.gh-96421: Khi gọi vào mã Python từ mã C, thông qua
PyEval_EvalFrameEx()hoặc hàm C-API có liên quan, một khung shim được chèn vào ngăn xếp cuộc gọi. Điều này xảy ra trong hàm_PyEval_EvalFrameDefault(). Khung bổ sung phải ẩn đối với tất cả các tiện ích mở rộng Python và hầu hết C, nhưng các trình lược tả và trình gỡ lỗi ngoài quy trình cần phải biết về nó. Những khung chêm này có thể được phát hiện bằng cách kiểm traframe->owner == FRAME_OWNED_BY_CSTACK.Các tiện ích mở rộng triển khai trình thông dịch của riêng chúng bằng cách sử dụng PEP 523 cần phải biết về khung shim này và những thay đổi về ngữ nghĩa của
RETURN_VALUE,YIELD_VALUEvàRETURN_GENERATOR, hiện đã xóa khung này.
xây dựng¶
Cốt lõi và nội dung¶
gh-98686: Tăng tốc tất cả các đối tượng mã và chuyên biệt hóa các lệnh mã byte thích ứng mạnh mẽ hơn.
gh-92119: In tên lớp ngoại lệ thay vì biểu diễn chuỗi của nó khi phát sinh lỗi từ lệnh gọi
ctypes.gh-91058:
ImportErrorđược tạo ra từfrom <module> import <name>không thành công hiện bao gồm các đề xuất về giá trị của<name>dựa trên các tên có sẵn trong<module>. Bản vá của Pablo Galindogh-96793:
FOR_ITERbây giờ để lại trình vòng lặp trên ngăn xếp khi kết thúc vòng lặp. Điều này nhằm hỗ trợ việc chuyên môn hóa các vòng lặp cho máy phát điện.gh-90716: Thêm mô-đun _pylong.py. Nó bao gồm các thuật toán tiệm cận nhanh hơn có thể được sử dụng cho các phép tính trên số nguyên có nhiều chữ số. Nó được longobject.c sử dụng để tăng tốc một số thao tác.
gh-95389: Hiển thị
ETH_P_ALLvà một số ETHERTYPE_* constants trongsocket. Bản vá của Noam Cohen.
Thư viện¶
gh-93696: Cho phép
pdbđịnh vị nguồn cho các mô-đun đã cố định trong thư viện chuẩn.gh-99418: Sửa lỗi trong
urllib.parse.urlparse()khiến các sơ đồ URL bắt đầu bằng một chữ số, dấu cộng hoặc dấu trừ bị phân tích cú pháp không chính xác.gh-94597: Không dùng nữa
asyncio.AbstractChildWatchersẽ bị xóa trong Python 3.14. Bản vá của Kumar Aditya.gh-99305: Cải thiện hiệu suất của
secrets.token_hex().gh-74044: Đã sửa lỗi trong đó
inspect.signature()báo cáo các đối số không chính xác cho các phương thức được trang trí.gh-99275: Sửa
SystemErrortrongctypeskhi ngoại lệ không được đặt trong__initsubclass__.gh-99277: Xóa phiên bản cũ hơn của
_SSLProtocolTransport.get_write_buffer_limitstrongasyncio.sslprotogh-99248: sửa số âm không thành công trong verify()
gh-99155: Khắc phục sự cố
statistics.NormalDistvới giao thức0và1.gh-93464:
enum.auto()hiện được kích hoạt chính xác khi kết hợp với các giá trị gán khác. Ví dụ.ONE = auto(), 'some text'bây giờ sẽ đánh giá là(1, 'some text').gh-99134: Cập nhật bản sao đi kèm của pip lên phiên bản 22.3.1.
gh-92584: Xóa gói
distutils. Nó không được dùng nữa trong Python 3.10 bởi PEP 632 "Không dùng mô-đun distutils". Đối với các dự án vẫn đang sử dụngdistutilsvà không thể cập nhật lên thứ khác, có thể cài đặt dự ánsetuptools: nó vẫn cung cấpdistutils. Bản vá của Victor Stinner.gh-98999: Bây giờ
_pyionhất quán với_iotrong việc tăngValueErrorkhi thực thi các phương thức trên bộ đệm đóng.gh-83004: Dọn dẹp phản hồi khi khởi tạo mô-đun không thành công trong
_zoneinfogh-83004: Dọn dẹp các phản ánh khi khởi tạo mô-đun không thành công trong
_picklegh-83004: Dọn dẹp phản ánh về quá trình khởi tạo mô-đun không thành công trong
_io.gh-98897: Khắc phục rò rỉ bộ nhớ trong
math.dist()khi cả hai điểm không có cùng kích thước. Bản vá của Kumar Aditya.gh-98878: Sử dụng nội dung giới hạn khung khi đưa ra đề xuất tên trong
tracebackđể tránh gặp sự cố khi__builtins__không phải là lệnh.gh-98139: Trong
importlib._bootstrap, nâng cao gói không gian tên lên<module 'x' (namespace) from ['path']>.gh-90352: Sửa lỗi
_SelectorDatagramTransportkế thừa từDatagramTransporttrongasyncio. Bản vá của Kumar Aditya.gh-98793: Sửa lỗi đánh máy đối số trong hàm
_overlapped.WSAConnect()và_overlapped.Overlapped.WSASendTo().gh-98744: Ngăn chặn sự cố trong
tracebackkhi truy xuất phần bù byte cho một số tệp nguồn có chứa các ký tự unicode nhất định.gh-98740: Sửa lỗi nội bộ trong mô-đun
remà trong một số trường hợp rất hiếm đã ngăn cản việc biên dịch biểu thức chính quy chứa conditional expression mà không có nhánh "else".gh-98703: Sửa lỗi
asyncio.StreamWriter.drain()chỉ gọi lạiprotocol.connection_lostmột lần trên Windows.gh-98624: Thêm một mutex vào unittest.mock.NonCallableMock để bảo vệ quyền truy cập đồng thời vào các thuộc tính mô phỏng.
gh-98658: Lớp
array.arrayhiện hỗ trợ đăng ký, biến nó thành generic type.gh-98284: Thông báo
TypeErrorđược cải tiến cho các phương thức trừu tượng không xác định của phiên bảnabc.ABC. Tên của các phương thức còn thiếu được bao quanh bởi dấu ngoặc đơn để làm nổi bật chúng.gh-96151: Cho phép
BUILTINSlà tên trường hợp lệ cho các lớp dữ liệu cố định.gh-98086: Đảm bảo
patch.dict()có thể được áp dụng trên các hàm không đồng bộ.gh-72719: Xóa các mô-đun
asyncorevàasynchat, những mô-đun này không còn được dùng nữa bởi PEP 594.gh-96192: Sửa lỗi xử lý
bytespath-like objects trongos.ismount().gh-94172:
ftplib: Xóa thuộc tính lớpFTP_TLS.ssl_version: thay vào đó hãy sử dụng tham số context. Bản vá của Victor Stinnergh-94172: Xóa các tham số keyfile và certfile khỏi các mô-đun
ftplib,imaplib,poplibvàsmtplibcũng như các tham số key_file, cert_file và check_hostname khỏi mô-đunhttp.client, tất cả đều không được dùng nữa kể từ Python 3.6. Thay vào đó, hãy sử dụng tham số context (ssl_context trongimaplib). Bản vá của Victor Stinner.gh-83638: Thêm thuộc tính
autocommitvàosqlite3.Connectionvà tham số autocommit vàosqlite3.connect()để kiểm soát transaction handling tuân thủ PEP 249. Bản vá của Erlend E. Aasland.gh-92452: Đã khắc phục tình trạng dồn đuổi có thể khiến
sysconfig.get_config_var()trả vềNonekhông chính xác trong các chương trình đa luồng.gh-91803: Sửa lỗi khi sử dụng phương thức của đối tượng được mô phỏng bằng
unittest.mock.create_autospec()sau khi nó được niêm phong bằng hàmunittest.mock.seal().bpo-38523:
shutil.copytree()hiện áp dụng đối số ignore_dangling_symlinks theo cách đệ quy.bpo-40358: Thêm đối số walk_up trong
pathlib.PurePath.relative_to().bpo-36267: Sửa lỗi IndexError trong
argparse.ArgumentParserkhi một hành độngstore_trueđược đưa ra một đối số rõ ràng.
Tài liệu¶
gh-98832: Thay đổi cách diễn đạt của chuỗi tài liệu cho
pathlib.Path.iterdir().gh-97966: Cập nhật tài liệu chưa tên để làm rõ tính chất đặc biệt của thuộc tính nền tảng và cho biết thời điểm thuộc tính này bị giới hạn muộn.
Kiểm tra¶
gh-98903: Bộ kiểm tra Python hiện không thành công với mã thoát 4 nếu không chạy thử nghiệm nào. Nó sẽ giúp phát hiện lỗi chính tả trong tên thử nghiệm và phương pháp thử nghiệm.
gh-98713: Sửa lỗi trong các thử nghiệm
typingtrong đó thử nghiệm dựa trên chi tiết triển khai dành riêng cho CPython không được trang trí bằng@cpython_onlyvà không bị bỏ qua trong các triển khai khác.gh-87390: Thêm các bài test star-unpack với PEP 646, và một số bài test PEP 646 linh tinh khác.
gh-96853: Đã thêm mức độ bao phủ rõ ràng của
Py_Initialize(và do đó làPy_InitializeEx) quay lại các bài kiểm tra nhúng (tất cả các bài kiểm tra nhúng khác đã di chuyển sangPy_InitializeFromConfigtrong Python 3.11)bpo-34272: Một số bài kiểm tra C API đã được chuyển vào thư mục Lib/test/test_capi/ mới.
xây dựng¶
gh-99086: Khắc phục cảnh báo trình biên dịch
-Wimplicit-inttrong configure, kiểm traPTHREAD_SCOPE_SYSTEM.gh-99016: Sửa bản dựng với
PYTHON_FOR_REGEN=python3.8.gh-97731: Chỉ định đường dẫn đầy đủ đến vị trí nguồn cho
make docclean(cần thiết cho các bản dựng chéo).gh-98949: Loại bỏ phần phụ thuộc bản dựng không được sử dụng trên
readelf.gh-98989: Sử dụng
python3.11, nếu có, để tái tạo và đóng băng.gh-98831: Thêm công cụ mới, trong
Tools/cases_generator, để tạo câu lệnh chuyển đổi trình thông dịch từ danh sách các định nghĩa opcode. Điều này chỉ ảnh hưởng đến việc thêm, sửa đổi hoặc xóa định nghĩa lệnh. Các định nghĩa lệnh hiện có trongPython/bytecodes.c, dưới dạng custom DSL (under development). Công cụ này đọc tệp này và ghiPython/generated_cases.c.h, sau đó đượcPython/ceval.cđưa vào để cung cấp hầu hết các trường hợp chuyển đổi trình thông dịch chính.gh-98817: Xóa PCbuild/lib.pyproj: nó không được sử dụng cho bất kỳ mục đích gì, chỉ là một tiện ích nhỏ cho người dùng Visual Studio (những người có lẽ hầu như không biết về nó) và phải tốn rất nhiều công sức bảo trì để luôn cập nhật.
gh-98776: Sửa
make regen-test-levenshteincho các bản dựng ngoài cây.gh-98707: Không sử dụng các tiêu đề
libmpdecđược bán lại nếu--with-system-libmpdecđược chuyển cho configure. Không sử dụng tiêu đềlibexpatđược bán lại nếu--with-system-expatđược chuyển cho configure.
cửa sổ¶
gh-98689: Cập nhật các bản dựng Windows lên zlib v1.2.13. v1.2.12 có CVE 2022-37434, nhưng
inflateGetHeaderAPI dễ bị tổn thương không được Python sử dụng.gh-98790: Giả sử rằng thư mục
DLLsbị thiếu có nghĩa là các mô-đun mở rộng tiêu chuẩn nằm trong thư mục của tệp thực thi.gh-98745: Cập nhật launcher
py.exeđể cài đặt 3.11 theo mặc định và 3.12 theo yêu cầu.gh-98692: Sửa lỗi Trình quản lý cài đặt Python bỏ qua các dòng shebang không được nhận dạng thay vì coi chúng là đường dẫn cục bộ
gh-94328: Cập nhật trình cài đặt Windows để sử dụng SQLite 3.39.4.
macOS¶
gh-94328: Cập nhật trình cài đặt macOS lên SQLite 3.39.4.
C API¶
gh-98724: Các macro
Py_CLEAR,Py_SETREFvàPy_XSETREFhiện chỉ đánh giá đối số của chúng một lần. Nếu đối số có tác dụng phụ thì các tác dụng phụ này không còn bị trùng lặp nữa. Bản vá của Victor Stinner.gh-98978: Sửa lỗi use-after-free trong các lệnh gọi hàm
Py_SetPythonHome(NULL),Py_SetProgramName(NULL)và_Py_SetProgramFullPath(NULL). Vấn đề được báo cáo bởi Benedikt Reinartz. Bản vá của Victor Stinner.gh-98410: Thêm
getbufferprocvàreleasebufferprocvào API ổn định.gh-98610: Một số khả năng có thể định cấu hình của trình thông dịch phụ đã thay đổi. Hiện tại, họ luôn cho phép các quy trình con (
subprocess), trong khi trước đó các quy trình con có thể không được phép tùy ý đối với trình thông dịch phụ. Thay vào đó,os.exec()hiện có thể không được phép. Việc không cho phép các chủ đề daemon hiện được hỗ trợ. Việc không cho phép tất cả các chủ đề vẫn được cho phép nhưng không bao giờ được thực hiện theo mặc định. Lưu ý rằng các hạn chế tùy chọn chỉ khả dụng thông qua_Py_NewInterpreterFromConfig(), đây không phải là API công khai. Chúng không ảnh hưởng đến trình thông dịch chính cũng nhưPy_NewInterpreter().gh-98608: Một
_PyInterpreterConfigđã được thêm vào và_Py_NewInterpreter()đã được đổi tên thành_Py_NewInterpreterFromConfig(). Đối số "isolat_subinterpreters" hiện là cấu hình chi tiết nắm bắt hành vi trước đó. Lưu ý rằng đây hoàn toàn là API "riêng tư".gh-96853:
Py_InitializeExhiện gọi chính xácPyConfig_Clearsau khi khởi tạo trình thông dịch (sự thiếu sót không gây ra rò rỉ bộ nhớ chỉ vì không có trường cấu hình được phân bổ động nào được điền bởi hàm bao bọc)gh-91248: Thêm các hàm
PyFrame_GetVar()vàPyFrame_GetVarString()để lấy biến khung theo tên của nó. Bản vá của Victor Stinner.
Python 3.12.0 alpha 1¶
Release date: 2022-10-25
Bảo mật¶
gh-97616: Sửa lỗi nhân danh sách với một số nguyên (
list *= int): phát hiện tràn số nguyên khi độ dài được phân bổ mới gần với kích thước tối đa. Vấn đề được báo cáo bởi Jordan Limor. Bản vá của Victor Stinner.gh-97514: Trên Linux, mô-đun
multiprocessingquay lại sử dụng ổ cắm miền unix được hỗ trợ bởi hệ thống tệp để liên lạc với quy trình forkserver thay vì không gian tên ổ cắm trừu tượng Linux. Chỉ mã chọn sử dụng "forkserver" start method mới bị ảnh hưởng.Ổ cắm trừu tượng không có quyền và có thể cho phép bất kỳ người dùng nào trên hệ thống trong cùng một network namespace (thường là toàn bộ hệ thống) đưa mã vào quy trình forkserver đa xử lý. Đây là một sự leo thang đặc quyền tiềm năng. Các quyền của ổ cắm dựa trên hệ thống tệp hạn chế điều này đối với người dùng quy trình forkserver như mặc định trong Python 3.8 trở về trước.
Điều này ngăn cản Linux CVE 2022-42919.
gh-87389:
http.server: Khắc phục lỗ hổng chuyển hướng mở trong máy chủ HTTP khi đường dẫn URI bắt đầu bằng//. Lỗ hổng được phát hiện và bản sửa lỗi ban đầu được đề xuất bởi Hamza Avvan.gh-79096: LWPCookieJar và MozillaCookieJar tạo file với chế độ file 600 thay vì 644 (Microsoft Windows không bị ảnh hưởng)
gh-92888: Sửa lỗi sử dụng
memoryviewsau khi rảnh khi truy cập bộ đệm sao lưu trong một số trường hợp nhất định.gh-68966: Mô-đun mailcap không được dùng nữa hiện từ chối đưa văn bản không an toàn (tên tệp, loại MIME, tham số) vào lệnh shell. Thay vì sử dụng văn bản như vậy, nó sẽ cảnh báo và hoạt động như thể không tìm thấy kết quả trùng khớp (hoặc đối với các lệnh kiểm tra, như thể kiểm tra thất bại).
Cốt lõi và nội dung¶
gh-98374: Loại bỏ ImportError đối với truy vấn không hợp lệ đối với lệnh help(). Bản vá của Donghee Na.
gh-98461: Sửa vị trí nguồn trong mã byte để hiểu danh sách, tập hợp và đọc chính tả cũng như các biểu thức trình tạo.
gh-98354: Đã thêm kiểm tra unicode cho thuộc tính
namecủa đối sốspecđược truyền trong hàm_imp.create_builtin().gh-98398: Sửa vị trí nguồn của mã byte 'xác nhận'.
gh-98390: Sửa vị trí của biểu thức phụ của biểu thức boolean bằng cách giảm phạm vi của chúng xuống phạm vi của biểu thức phụ.
gh-98254: Các mô-đun từ thư viện tiêu chuẩn hiện có khả năng được đề xuất như một phần của thông báo lỗi được trình thông dịch hiển thị khi
NameErrorđược nâng lên mức cao nhất. Bản vá của Pablo Galindogh-97997: Thêm độ lệch cột đang chạy vào trạng thái mã thông báo để tránh tính toán thông tin cột AST bằng số học con trỏ.
gh-97973: Sửa đổi mã thông báo để trả về tất cả thông tin cần thiết mà trình phân tích cú pháp cần để đặt thông tin vị trí trong các nút AST, để trình phân tích cú pháp không phải tính toán những thao tác số học con trỏ đó.
Thư viện¶
gh-96078:
os.sched_yield()hiện giải phóng GIL trong khi gọi sched_yield(2). Bản vá của Donghee Na.
Cốt lõi và nội dung¶
gh-97912: Trình biên dịch hiện tránh hành vi bậc hai khi tìm hướng dẫn nào nên sử dụng opcode
LOAD_FAST_CHECK.gh-97002: Khắc phục sự cố trong đó một số đối tượng khung có thể được hỗ trợ bởi cùng một khung trình thông dịch, có thể dẫn đến bộ nhớ bị hỏng và trình thông dịch gặp sự cố nghiêm trọng.
gh-97943: Sửa lỗi:
PyFunction_GetAnnotations()sẽ trả về một tham chiếu đã mượn. Nó đang trả về một tài liệu tham khảo mới.gh-97922: Trình thu gom rác hiện chỉ chạy trên cơ chế ngắt eval của vòng đánh giá mã byte Python thay vì chạy trên phân bổ đối tượng. GC cũng có thể chạy khi
PyErr_CheckSignals()được gọi nên các phần mở rộng C cần chạy trong thời gian dài mà không thực thi bất kỳ mã Python nào cũng có cơ hội thực thi GC định kỳ.gh-65961: Khi
__package__khác với__spec__.parent, hãy tăngDeprecationWarningthay vìImportWarning.Đồng thời xóa
importlib.util.set_package()đã được lên lịch xóa.gh-97850: Từ lâu đã không còn được dùng nữa,
module_repr()hiện sẽ bị xóa hoàn toàn.gh-86298: Trong trường hợp
warnings.warn_explicit()tham khảo bộ tải của mô-đun,DeprecationWarningsẽ được đưa ra khim.__loader__khác vớim.__spec__.loader.gh-97779: Đảm bảo rằng tất cả các đối tượng khung Python đều được hỗ trợ bởi các khung "hoàn chỉnh".
gh-91052: Thêm API để đăng ký các sự kiện sửa đổi trên các từ điển đã chọn.
gh-97752: Khắc phục lỗi hoặc sự cố dữ liệu có thể xảy ra khi truy cập thành viên
f_backcủa trình tạo hoặc khung coroutine mới được tạo.gh-97591: Đã sửa lỗi thiếu cặp tăng/giảm trong
Exception.__setstate__(). Bản vá của Ofey Chan.gh-97670: Xóa chức năng
sys.getdxp()và tập lệnhTools/scripts/analyze_dxp.py. DXP là viết tắt của "cặp thực thi động". Chúng liên quan đến macroDYNAMIC_EXECUTION_PROFILEvàDXPAIRSđã bị xóa trong Python 3.11. Giờ đây, Python có thể được xây dựng bằng./configure --enable-pystatsđể thu thập số liệu thống kê về các mã Python. Bản vá của Victor Stinner.gh-94526: Sửa cấu hình đường dẫn Python được sử dụng để khởi tạo
sys.pathkhi khởi động Python. Các đường dẫn không còn được mã hóa thành UTF-8/strict để tránh lỗi mã hóa nếu nó chứa các ký tự thay thế (đường dẫn byte được giải mã bằng trình xử lý lỗi thay thế). Bản vá của Victor Stinner.gh-96670: Trình phân tích cú pháp hiện tăng
SyntaxErrorkhi phân tích mã nguồn chứa byte rỗng. Bản vá của Pablo Galindogh-96975: Khắc phục sự cố xảy ra khi
PyEval_GetFrame()được gọi trong khi khung Python trên cùng ở trạng thái khởi tạo một phần.gh-96848: Sửa lỗi phân tích cú pháp dòng lệnh: từ chối tùy chọn
-X int_max_str_digitskhông có giá trị (không hợp lệ) khi biến môi trườngPYTHONINTMAXSTRDIGITSđược đặt ở giới hạn hợp lệ. Bản vá của Victor Stinner.gh-95921: Sửa thông tin vị trí nguồn quá rộng cho các so sánh theo chuỗi được sử dụng làm điều kiện phân nhánh.
Thư viện¶
gh-96821: Khắc phục hành vi không xác định trong
audioop.c.
Cốt lõi và nội dung¶
gh-96821: Khắc phục hành vi không xác định trong
_testcapimodule.c.gh-95778: Khi
ValueErrorđược nâng lên nếu số nguyên lớn hơn giới hạn, hãy đề cập đến hàmsys.set_int_max_str_digits()trong thông báo lỗi. Bản vá của Victor Stinner.gh-96387: Khi thoát Python, đôi khi một luồng đang giữ GIL có thể đợi mãi một luồng (thường là luồng daemon) yêu cầu loại bỏ GIL, trong khi luồng đó đã thoát. Để khắc phục tình trạng tương tranh, chuỗi yêu cầu thả GIL hiện đặt lại yêu cầu của nó trước khi thoát. Vấn đề được phát hiện và phân tích bởi Mingliang ZHAO. Bản vá của Victor Stinner.
gh-96864: Khắc phục lỗi xác nhận có thể xảy ra, lỗi nghiêm trọng hoặc
SystemErrornếu sự kiện theo dõi dòng gây ra ngoại lệ trong khi tính năng theo dõi opcode được bật.gh-95778: Hàm
PyLong_FromStringđã được tái cấu trúc để dễ bảo trì và mở rộng hơn.gh-96678: Khắc phục hành vi không xác định trong mã C của số học con trỏ null.
gh-96754: Đảm bảo rằng tất cả các đối tượng khung được tạo đều được tạo từ các khung thông dịch hợp lệ. Ngăn chặn khả năng xảy ra các khung không hợp lệ trong các dấu vết lùi và bộ xử lý tín hiệu.
gh-90997: Cải thiện hiệu suất đọc và ghi bộ đệm mã byte nội tuyến trên một số nền tảng.
gh-96751: Loại bỏ mã chết khỏi opcode
CALL_FUNCTION_EX.gh-90751:
memoryviewhiện hỗ trợ nửa nổi. Bản vá của Donghee Na và Antoine Pitrou.gh-96678: Khắc phục trường hợp hành vi không xác định trong ceval.c
Thư viện¶
Cốt lõi và nội dung¶
gh-96636: Đảm bảo tính năng dò tìm,
sys.setrace(), được bật ngay lập tức. Trong các phiên bản tiền phát hành 3.11, một số sự kiện theo dõi có thể bị mất khi bật tính năng theo dõi theo phương pháp__del__hoặc bị gián đoạn.gh-96572: Sửa lỗi sử dụng sau khi rảnh ở chế độ xây dựng dấu vết giới thiệu. Bản vá của Kumar Aditya.
gh-96611: Khi tải tệp có UTF-8 không hợp lệ bên trong chuỗi nhiều dòng, Lỗi Cú pháp chính xác sẽ được phát ra.
gh-96612: Đảm bảo rằng các khung chưa hoàn chỉnh không hiển thị trong dấu vết tracemalloc.
gh-90230: Khắc phục các cảnh báo của trình biên dịch và lỗi kiểm tra khi xây dựng với
--enable-pystats.gh-96587: Tăng
SyntaxErrormột cách chính xác trên các nhóm ngoại lệ (PEP 654) trên các phiên bản python trước 3.11gh-96569: Loại bỏ hai trường hợp hành vi không xác định, bằng cách thêm kiểm tra NULL.
gh-96582: Sửa lỗi vô hiệu hóa con trỏ
NULLcó thể có trong_PyThread_CurrentFrames. Bản vá của Kumar Aditya.gh-91079: Tách biệt việc kiểm tra đệ quy Python khỏi kiểm tra đệ quy C, giúp giảm nguy cơ tràn ngăn xếp C và cho phép tăng giới hạn đệ quy một cách an toàn.
gh-93911: Khắc phục sự cố có thể khiến
LOAD_ATTRkhông thể chuyên môn hóa đúng cách khi truy cập các thuộc tính.gh-96348: Phát ra cảnh báo không dùng nữa khi
throw(),throw()hoặcathrow()được gọi với nhiều hơn một đối số.gh-95196: Vô hiệu hóa việc chọn lọc không chính xác các bộ mô tả phương thức lớp được triển khai C.
gh-96364: Sửa chữ ký văn bản của
list.__getitem__vàdict.__getitem__.gh-96352: Sửa lỗi thiếu thuộc tính
AttributeErrornamevàobjtrongobject.__getattribute__(). Bản vá của Philip Georgi.gh-93554: Thay đổi mã lệnh nhảy để tất cả các bước nhảy có điều kiện đều là bước nhảy về phía trước. Các bước nhảy lùi được trình biên dịch chuyển đổi thành một bước nhảy tiến có điều kiện với mục tiêu là khối dự phòng (và có điều kiện đảo ngược), sau đó là một bước nhảy lùi không điều kiện. Ví dụ:
POP_JUMP_IF_TRUE BACKWARD_TARGETtrở thànhPOP_JUMP_IF_FALSE NEXT_BLOCK; JUMP BACKWARD_TARGET.Tất cả các mã nhảy có điều kiện được chỉ đạo đã bị xóa:
POP_JUMP_FORWARD_IF_TRUE,POP_JUMP_BACKWARD_IF_TRUE,POP_JUMP_FORWARD_IF_FALSE,POP_JUMP_BACKWARD_IF_FALSE,POP_JUMP_FORWARD_IF_NONE,POP_JUMP_BACKWARD_IF_NONE,POP_JUMP_FORWARD_IF_NOT_NONE,POP_JUMP_BACKWARD_IF_NOT_NONE.Các mã lệnh tương ứng không có hướng không còn là lệnh giả nữa và chúng thực hiện các bước nhảy có điều kiện về phía trước.
gh-96268: Đang tải tệp có UTF-8 không hợp lệ giờ đây sẽ báo cáo ký tự bị hỏng ở đúng vị trí.
gh-96237: Trường nội bộ
_PyInterpreterFrame.f_funcđược đổi tên thành_PyInterpreterFrame.f_funcobjvà có thể là bất kỳ đối tượng nào. Các trườngf_globalsvàf_builtincó thể chứa các giá trị rác.An toàn nhất là coi cấu trúc
_PyInterpreterFramelà mờ đục.gh-96187: Đã sửa lỗi khiến
_PyCode_GetExtratrả lại rác cho các chỉ mục tiêu cực. Bản vá của Pablo Galindogh-96143: Thêm tùy chọn dòng lệnh
-X perfPython mới cũng như chức năngsys.activate_stack_trampoline()vàsys.deactivate_stack_trampoline()trong mô-đunsyscho phép đặt/hủy đặt trình thông dịch theo cách mà trình lược tảperfcủa Linux có thể phát hiện các cuộc gọi Python. Chức năngsys.is_stack_trampoline_active()mới cho phép truy vấn trạng thái của tấm bạt lò xo hoàn hảo. Thiết kế của Pablo Galindo. Bản vá của Pablo Galindo và Christian Heimes với sự đóng góp của Gregory P. Smith [Google] và Mark Shannon.gh-96071: Khắc phục tình trạng bế tắc trong
PyGILState_Ensure()khi phân bổ trạng thái luồng mới. Bản vá của Kumar Aditya.gh-96046:
PyType_Ready()hiện khởi chạyht_cached_keysvà thực hiện kiểm tra bổ sung để đảm bảo rằng các đối tượng loại được cấu hình đúng. Điều này tránh sự cố trong các gói của bên thứ 3 không sử dụng API thông thường để tạo loại mới.gh-96005: Trên WASI
ENOTCAPABLEhiện được ánh xạ tớiPermissionError. Các mô-đunerrnohiển thị số lỗi mới.getpath.pyhiện bỏ quaPermissionErrorkhi nó không thể mở các tệp mốcpybuilddir.txtvàpyenv.cfg.gh-93678: Đã thêm thử nghiệm khai thác cho các thử nghiệm đơn vị trực tiếp của giai đoạn tối ưu hóa của trình biên dịch. Hàm
_testinternalcapi.optimize_cfg()chạy trình tối ưu hóa theo trình tự hướng dẫn. LớpCfgOptimizationTestCasetrongtest.supportcó các tiện ích để gọi trình tối ưu hóa và kiểm tra đầu ra.gh-95245: Giảm kích thước của đối tượng Python "đơn giản" từ 8 xuống 6 từ bằng cách di chuyển con trỏ lập trình yếu vào tiêu đề trước ngay trước con trỏ dict/value của đối tượng.
gh-90997: Biên dịch các khối
try/exceptảo để xử lý các ngoại lệ được đưa ra trong các lệnh gọiclose()hoặcthrow()thông qua khung treo.gh-95977: Tối ưu hóa việc gọi
__get__()bằng vectorcall. Bản vá của Kumar Aditya.gh-91210: Cải thiện thông báo lỗi khi một tham số không có giá trị mặc định theo sau một tham số có giá trị mặc định và hiển thị cùng một thông báo, ngay cả khi trình tự không mặc định/mặc định được đặt trước bởi các tham số chỉ có vị trí.
gh-95922: Đã sửa lỗi trong đó hàm
eliminate_empty_basic_blockscủa trình biên dịch bỏ qua khối cuối cùng của đơn vị mã.gh-95818: Bỏ qua các khung hình chưa hoàn chỉnh trong
PyThreadState_GetFrame().gh-95876: Sửa chuỗi định dạng trong
_PyPegen_raise_error_known_locationcó thể dẫn đến hỏng bộ nhớ trên một số hệ thống 64bit. Hàm đang xây dựng một bộ dữ liệu vớii(int) thay vìn(Py_ssize_t) cho các đối số Py_ssize_t.gh-95605: Sửa nội dung thông báo lỗi gây hiểu lầm khi chuyển đổi chuỗi toàn khoảng trắng thành
float.gh-95150: Cập nhật hàm băm và đẳng thức của đối tượng mã để xem xét tất cả các bảng xử lý lỗi và ngoại lệ. Điều này khắc phục sự cố trong đó một số đối tượng mã không giống nhau có thể bị "loại bỏ trùng lặp" trong quá trình biên dịch.
gh-91146: Giảm kích thước phân bổ của
listtừstr.split()vàstr.rsplit(). Bản vá của Donghee Na và Inada Naoki.gh-87092: Tạo bản tóm tắt 'nhãn mục tiêu nhảy' trong trình biên dịch để giai đoạn codegen của trình biên dịch không hoạt động trực tiếp với các khối cơ bản. Điều này chuẩn bị mã cho những thay đổi đối với cơ chế tạo CFG cơ bản.
gh-95355:
_PyPegen_Parser_Newhiện phát hiện chính xác các lỗi phân bổ bộ nhớ mã thông báo. Bản vá của Honglin Zhu.gh-90081: Chạy mã Python trong chức năng theo dõi/hồ sơ ở tốc độ tối đa. Khắc phục tình trạng chậm trong các phiên bản 3.11 trước đó.
gh-95324: Phát ra cảnh báo trong chế độ gỡ lỗi nếu một đối tượng không gọi
PyObject_GC_UnTrack()trước khi phân bổ. Bản vá của Pablo Galindo.gh-95245: Hợp nhất con trỏ giá trị và chính tả được quản lý thành một con trỏ được gắn thẻ duy nhất để lưu một từ trong tiêu đề trước.
gh-93678: Thêm cấu trúc cfg_builder và cấu trúc lại mã liên quan để có thể tạo một cfg mà không cần có phiên bản của cấu trúc trình biên dịch.
gh-95185: Đã ngăn chặn sự cố trong hàm tạo AST khi biên dịch một số biểu thức dài vô lý như
"+0"*1000000. Thay vào đó,RecursionErrorhiện đã được nâng lên. Bản vá của Pablo Galindogh-93351: Vị trí nút
ast.ASThiện được xác thực khi được cung cấp chocompile()và các chức năng liên quan khác. Nếu phát hiện vị trí không hợp lệ,ValueErrorsẽ được nâng lên.gh-94438: Khắc phục sự cố khiến các đối số opcode mở rộng và một số cửa sổ bật lên có điều kiện bị bỏ qua khi tính toán các mục tiêu nhảy hợp lệ cho các phép gán cho thuộc tính
f_linenocủa các đối tượng khung. Trong một số trường hợp, điều này có thể gây ra trạng thái bên trong không nhất quán, dẫn đến tình trạng trình thông dịch gặp sự cố nghiêm trọng.gh-95060: Hàm
PyCode_Addr2Locationkhông có giấy tờ hiện trả về chính xác khi đối sốaddrqnhỏ hơn 0.gh-95113: Thay thế tất cả các hướng dẫn
EXTENDED_ARG_QUICKbằng các hướng dẫnEXTENDED_ARGcơ bản trong mã chưa được chỉnh sửa nhanh. Người sử dụng mã byte không thích ứng sẽ có thể xử lý các đối số mở rộng giống như cách chúng được xử lý trong CPython 3.10 trở lên.gh-91409: Sửa thông tin vị trí nguồn không chính xác do một số tối ưu hóa nhất định trong trình biên dịch mã byte gây ra.
Thư viện¶
gh-95023: Triển khai
os.setns()vàos.unshare()cho Linux. Bản vá của Noam Cohen.
Cốt lõi và nội dung¶
gh-94036: Sửa thông tin vị trí nguồn không chính xác cho một số lệnh gọi phương thức và truy cập thuộc tính nhiều dòng.
gh-94938: Sửa lỗi phát hiện lỗi trong một số hàm dựng sẵn khi tên đối số từ khóa là một phiên bản của lớp con str có
__eq__và__hash__bị quá tải. Trước đây nó có thể gây ra SystemError hoặc hành vi không mong muốn khác.
Thư viện¶
gh-94996:
ast.parse()sẽ không còn phân tích cú pháp các định nghĩa hàm với các tham số chỉ vị trí khi truyềnfeature_versionnhỏ hơn(3, 8). Bản vá của Shantanu Jain.
Cốt lõi và nội dung¶
gh-94739: Cho phép nhảy vào, ra và qua các trình xử lý ngoại lệ trong trình gỡ lỗi.
Thư viện¶
gh-94949:
ast.parse()sẽ không còn phân tích cú pháp các trình quản lý bối cảnh được đặt trong ngoặc đơn khi vượt quafeature_versionnhỏ hơn(3, 9). Bản vá của Shantanu Jain.gh-94947:
ast.parse()sẽ không còn phân tích cú pháp các biểu thức gán khi truyềnfeature_versionnhỏ hơn(3, 8). Bản vá của Shantanu Jain.
Cốt lõi và nội dung¶
gh-91256: Đảm bảo biết tên chương trình trong văn bản trợ giúp trong quá trình khởi động trình thông dịch.
gh-94869: Sửa lỗi bù cột cho một số biểu thức trong các nút
astchuỗi f nhiều dòng. Bản vá của Pablo Galindo.gh-94893: Khắc phục sự cố trong đó các thao tác đối tượng khung có thể làm hỏng bộ đệm mã byte nội tuyến.
gh-94822: Khắc phục sự cố trong đó việc tra cứu các bộ mô tả siêu dữ liệu có thể bị bỏ qua khi một thuộc tính có tên giống hệt cũng tồn tại trên chính lớp đó.
gh-91153: Khắc phục sự cố trong đó việc gán mục
bytearraycó thể bị lỗi nếu nó được thay đổi kích thước bằng phương pháp__index__()của giá trị mới.gh-90699: Sửa lỗi đếm tham chiếu trong
bool.__repr__(). Bản vá của Kumar Aditya.gh-94694: Khắc phục sự cố có thể khiến mã tra cứu bằng phương pháp nhiều dòng có thông tin lệch cột sai lệch hoặc không chính xác. Trong một số trường hợp (khi biên dịch AST được tạo thủ công), điều này có thể dẫn đến sự cố nghiêm trọng cho trình thông dịch.
gh-93252: Khắc phục sự cố khiến các khung bên trong tồn tại lâu hơn các lệnh gọi hàm Python không thành công, có thể dẫn đến rò rỉ bộ nhớ hoặc sự cố trình thông dịch cứng.
gh-94215: Khắc phục sự cố trong đó các ngoại lệ do sự kiện dò dòng gây ra sẽ khiến các khung bị giữ ở trạng thái không hợp lệ, có thể dẫn đến sự cố nghiêm trọng của trình thông dịch.
gh-92228: Vô hiệu hóa tính năng tối ưu hóa khối thoát nhỏ nội tuyến của trình biên dịch đối với các khối thoát được liên kết với các dòng mã nguồn. Điều này khắc phục lỗi trong đó trình gỡ lỗi không thể biết trình xử lý ngoại lệ kết thúc ở đâu và khối mã sau bắt đầu ở đâu.
gh-94485: Số dòng của lệnh
RESUMEcủa mô-đun được đặt thành 0 như được chỉ định trong PEP 626.gh-94438: Tài khoản cho các hướng dẫn có thể đẩy NULL vào ngăn xếp khi đặt số dòng trong một khung. Ngăn chặn một số sự cố (không thể xảy ra).
gh-91719: Tải lại
opcodekhi nâng caounknown opcode errortrong vòng lặp chính của trình thông dịch, để trình biên dịch C tạo mã điều phối một cách độc lập.gh-94329: Biên dịch và chạy mã bằng cách giải nén các chuỗi cực lớn (1000 phần tử). Mã như vậy không thể biên dịch được. Bây giờ nó biên dịch và chạy chính xác.
gh-94360: Đã khắc phục sự cố mã thông báo khi đọc các tệp được mã hóa có lỗi cú pháp từ
stdinvới văn bản được mã hóa không phải utf-8. Bản vá của Pablo Galindogh-88116: Khắc phục sự cố khi đọc số dòng từ đối tượng mã nếu số dòng được mã hóa gần với
INT_MIN. Bản vá của Pablo Galindogh-94262: Không tạo đối tượng khung cho các khung chưa hoàn chỉnh. Ngăn không cho các phần mở rộng Python và C có thể quan sát được việc tạo các trình tạo và đóng, khôi phục hoạt động của phiên bản 3.10 trở về trước.
gh-94192: Sửa lỗi cho các ký tự trong từ điển có giá trị là biểu thức không hợp lệ.
gh-87995: Các phiên bản
types.MappingProxyTypehiện có thể băm được nếu ánh xạ cơ bản có thể băm được.gh-93883: Sửa đổi chiến lược hiển thị các vị trí lỗi tăng cường truy nguyên. Các chỉ báo chỉ được hiển thị khi vị trí không trải dài trên toàn bộ dòng.
gh-94163: Thêm hướng dẫn
BINARY_SLICEvàSTORE_SLICEđể xử lý hiệu quả hơn và chuyên môn hóa tốt hơn các hoạt động cắt lát, trong đó lát cắt được thể hiện rõ ràng trong mã nguồn.gh-94021: Khắc phục cảnh báo mã không thể truy cập trong
Python/specialize.c.gh-93911: Chuyên
LOAD_ATTRcho các đối tượng có__getattribute__tùy chỉnh.gh-93955: Cải thiện hiệu suất tra cứu thuộc tính trên các đối tượng với
__getattribute__và__getattr__tùy chỉnh. Bản vá của Ken Jin.gh-93911: Chuyên
LOAD_ATTRcho thuộc tínhproperty().gh-93678: Tái cấu trúc mã tối ưu hóa trình biên dịch để nó không còn cần
struct assemblervàstruct compilerđược chuyển đi nữa. Thay vào đó, mỗi hàm lấy CFG và dữ liệu khác mà nó thực sự cần. Điều này sẽ giúp bạn có thể kiểm tra mã này một cách trực tiếp.gh-93841: Khi được xây dựng với các chức năng
-enable-pystats,sys._stats_on(),sys._stats_off(),sys._stats_clear()vàsys._stats_dump()đã được thêm vào để cho phép thu thập số liệu thống kê cho các phần của chương trình.gh-93516: Lưu trữ phần bù của lệnh có thể theo dõi đầu tiên trong đối tượng mã để tránh phải tính toán lại nó cho mỗi lệnh khi theo dõi.
gh-93516: Tạo một cách lười biếng một bảng ánh xạ độ lệch mã byte thành số dòng để tăng tốc độ tính toán số dòng khi theo dõi.
gh-89828:
types.GenericAliaskhông còn chuyển tiếp thuộc tính__class__nữa. Ví dụ:isinstance(list[int], type)không còn trả vềTruenữa.gh-93678: Cấu trúc lại trình biên dịch để giảm bớt bản soạn sẵn và sự lặp lại.
gh-93671: Khắc phục một số trường hợp vết ngược hàm mũ xảy ra với các mẫu trình tự được lồng sâu trong câu lệnh so khớp. Bản vá của Pablo Galindo
gh-93662: Đảm bảo rằng độ lệch cột cuối là chính xác trong lệnh gọi phương thức nhiều dòng. Trước đây, cột cuối có thể đứng trước cột bù.
Thư viện¶
gh-93461:
importlib.invalidate_caches()hiện loại bỏ các mục từsys.path_importer_cachevới đường dẫn tương đối làm tên. Điều này giải quyết vấn đề về bộ nhớ đệm khi một tiến trình thay đổi thư mục làm việc hiện tại của nó.FileFinderkhông còn chèn dấu chấm vào đường dẫn nữa, ví dụ:/egg/./spambây giờ là/egg/spam.
Cốt lõi và nội dung¶
gh-93621: Thay đổi thứ tự các hướng dẫn mã byte được phát ra cho
withvàasync withđể giảm số lượng mục trong bảng ngoại lệ.gh-93533: Giảm kích thước bộ đệm nội tuyến cho
LOAD_METHODxuống 2 byte.gh-93444: Đã xóa các trường dư thừa khỏi cấu trúc khối cơ bản của trình biên dịch:
b_nofallthrough,b_exit,b_return. Chúng có thể được tính toán dễ dàng từ opcode của lệnh cuối cùng của khối.gh-93429: lệnh
LOAD_METHODđã bị xóa. Nó đã được sáp nhập lại vàoLOAD_ATTR.gh-93418: Đã sửa lỗi xác nhận trong đó chuỗi f có dấu bằng '=' theo sau một biểu thức nhưng không có dấu ngoặc nhọn. Ví dụ: f"{i=".
gh-93382: Cache kết quả của hàm
PyCode_GetCode()để khôi phục tra cứu O(1) của thuộc tínhco_code.gh-93359: Đảm bảo rằng các nút
asttùy chỉnh không có vị trí cuối rõ ràng có thể được biên dịch. Bản vá của Pablo Galindo.gh-93356: Mã dành cho trình xử lý ngoại lệ được phát ra ở cuối mã byte của đơn vị mã. Điều này tránh được một lần nhảy khi không có ngoại lệ nào được đưa ra.
gh-93354: Sử dụng độ trễ theo cấp số nhân cho bộ đếm chuyên môn trong trình thông dịch. Có thể giảm đáng kể số lượng chuyên môn không đạt và tránh bị chậm lại đối với những phần của chương trình không phù hợp với chuyên môn.
gh-93283: Cải thiện thông báo lỗi về cú pháp ký tự chuyển đổi không hợp lệ trong biểu thức chuỗi f.
gh-93345: Khắc phục sự cố khi thay thế
TypeVartrong bí danh chung lồng nhau sauTypeVarTuple.gh-93223: Khi một lệnh mã byte nhảy tới lệnh nhảy vô điều kiện, lệnh đầu tiên thường có thể được tối ưu hóa để nhắm mục tiêu trực tiếp vào mục tiêu của bước nhảy vô điều kiện. Vì lý do truy tìm, điều này trước đây chỉ xảy ra nếu cả hai lệnh có cùng số dòng. Điều này bây giờ cũng xảy ra nếu bước nhảy vô điều kiện là nhân tạo, tức là nếu nó không có số dòng liên quan.
gh-84694: Tùy chọn cấu hình
--experimental-isolated-subinterpretersvà macroEXPERIMENTAL_ISOLATED_SUBINTERPRETERSđã bị xóa.gh-91924: Sửa tính năng gỡ lỗi
__lltrace__nếu mã hóa thiết bị xuất chuẩn không phải là UTF-8. Bản vá của Victor Stinner.gh-93040: Gói các tham số không sử dụng trong
Objects/obmalloc.cbằngPy_UNUSED.gh-93143: Tránh
NULLkiểm tra các biến cục bộ chưa được khởi tạo bằng cách xác định tại thời điểm biên dịch những biến nào phải được khởi tạo.gh-93061: Nhảy lùi sau các vòng lặp
async forkhông còn được cung cấp số dòng đáng ngờ nữa.gh-93065: Khắc phục việc triển khai HAMT của bối cảnh để xử lý việc lặp lại trên cây sâu.
Lỗi này đã được Eli Libman phát hiện và sửa chữa. Xem MagicStack/immutables#84 để biết thêm chi tiết.
gh-93012: Đã thêm hàm mới
PyType_FromMetaclass(), hàm này tổng quát hóaPyType_FromModuleAndSpec()hiện có bằng cách sử dụng đối số siêu dữ liệu bổ sung. Điều này hữu ích cho các công cụ liên kết ngôn ngữ, nơi nó có thể được sử dụng để chặn các hoạt động liên quan đến loại như phân lớp con hoặc truy cập thuộc tính tĩnh bằng cách chỉ định siêu dữ liệu với các vị trí tùy chỉnh.Điều quan trọng là
PyType_FromMetaclass()có sẵn trong API Limited, cung cấp một lộ trình hướng tới việc di chuyển nhiều công cụ liên kết hơn sang ABI ổn định.gh-93021: Sửa lỗi
__text_signature__cho các phương thức__get__()được triển khai trong C. Patch của Jelle Zijlstra.gh-89914: Toán hạng của lệnh
YIELD_VALUEđược đặt ở độ sâu ngăn xếp. Điều này được thực hiện để giúp xử lý khung trênyieldvà có thể hỗ trợ trình gỡ lỗi.gh-92955: Khắc phục sự cố rò rỉ bộ nhớ trong các dòng của đối tượng mã và định vị các trình vòng lặp khi chúng chưa được hoàn tất khi thoát. Bản vá của Kumar Aditya.
gh-92930: Đã khắc phục sự cố trong
_pickle.cdo đột biến các bộ sưu tập trong__reduce__hoặcpersistent_id.gh-90690: Lệnh PRECALL đã bị xóa. Nó chỉ mang lại một lợi thế nhỏ cho việc chuyên môn hóa và không cần thiết trong phần lớn các trường hợp.
gh-92914: Luôn làm tròn kích thước được phân bổ cho danh sách lên đến số chẵn gần nhất.
gh-92858: Cải thiện thông báo lỗi cho một số bộ có lỗi cú pháp trước ':'
gh-90473: Giảm giới hạn đệ quy mặc định trên WASI để giải quyết kích thước ngăn xếp cuộc gọi bị giới hạn.
gh-92804: Khắc phục rò rỉ bộ nhớ trong trình vòng lặp
memoryviewvì nó chưa được hoàn tất khi thoát. Bản vá của Kumar Aditya.gh-92777: Chuyên
LOAD_METHODcho các đối tượng có từ điển lười. Bản vá của Ken Jin.gh-92658: Thêm hỗ trợ kết nối và liên kết với ổ cắm Hyper-V trên máy chủ và máy khách Windows Hyper-V.
gh-92236: Loại bỏ sự kiện "LINE" giả khi khởi động trình tạo hoặc coroutine, các hàm theo dõi hiển thị được triển khai trong C.
Thư viện¶
gh-91102:
_warnings.warn_explicit()được chuyển đến Phòng khám tranh luận.
Cốt lõi và nội dung¶
gh-92619: Chỉ làm cho trình biên dịch sao chép một khối thoát nếu không có lệnh nào của nó có dòng (trước đây chỉ lệnh đầu tiên trong khối được chọn, dẫn đến các khối bị trùng lặp không cần thiết).
gh-88750: Biến môi trường
PYTHONTHREADDEBUGchỉ xây dựng gỡ lỗi không được dùng nữa không còn làm bất cứ điều gì nữa.
Thư viện¶
gh-92261: Khắc phục tình trạng treo khi cố gắng lặp lại
typing.Union.
Cốt lõi và nội dung¶
gh-91399: Đã xóa mục nhập '{0, 0, 0, 0, 0, 0}' trùng lặp trong 'Đối tượng/unicodetype_db.h'.
gh-91578: Cập nhật thông báo lỗi cho lớp trừu tượng.
bpo-47091: Cải thiện hiệu suất lặp lại của
listvàtuplebằng cách sử dụngmemcpyđể sao chép dữ liệu và thực hiện các bước tăng tham chiếu trong một bước.bpo-46142: Làm cho đầu ra
--helpngắn hơn bằng cách di chuyển một số thông tin sang các tùy chọn dòng lệnh--help-envvà--help-xoptionsmới. Đồng thời thêm tùy chọn--help-allđể in mức sử dụng hoàn chỉnh.bpo-42316: Ghi lại một số vị trí mà biểu thức gán cần có dấu ngoặc đơn.
Thư viện¶
gh-89237: Khắc phục lỗi treo trên Windows trong
subprocess.wait_closed()trongasynciovớiProactorEventLoop. Bản vá của Kumar Aditya.gh-97928:
tkinter.Text.count()hiện đưa ra một ngoại lệ cho các tùy chọn bắt đầu bằng "-" thay vì âm thầm bỏ qua chúng.gh-98393: Mô-đun
oskhông còn chấp nhận các đường dẫn giống byte, như loạibytearrayvàmemoryview: chỉ loạibyteschính xác được chấp nhận cho chuỗi byte. Bản vá của Victor Stinner.gh-98363: Đã thêm itertools.batched() vào dữ liệu hàng loạt thành các danh sách có độ dài nhất định với danh sách cuối cùng có thể ngắn hơn các danh sách khác.
gh-98331: Cập nhật các bản sao đi kèm của pip và setuptools lên phiên bản 22.3 và 65.5.0 tương ứng.
gh-98307: Phương thức
createSocket()đã được thêm vàoSysLogHandler.gh-96035: Sửa lỗi trong
urllib.parse.urlparse()khiến một số cổng nhất định chứa khoảng trắng, dấu gạch dưới, dấu cộng và dấu trừ hoặc các chữ số không phải ASCII được chấp nhận không chính xác.gh-98257: Thực hiện lại chức năng
sys.setprofile()vàsys.settrace(). Họ không thể thất bại lâu dài với:RuntimeError("Cannot install a trace function while another trace function is being installed"). Bản vá của Victor Stinner.gh-98251: Cho phép
venvchuyển các biếnPYTHON*sangensurepipvàpipkhi chúng không ảnh hưởng đến độ phân giải đường dẫngh-94597: Các phương thức
asyncio.AbstractEventLoopPolicy.get_child_watcher()vàasyncio.AbstractEventLoopPolicy.set_child_watcher()không được dùng nữa sẽ bị xóa trong Python 3.14. Bản vá của Kumar Aditya.gh-98178: Trên macOS, khắc phục sự cố trong
syslog.syslog()trong các ứng dụng đa luồng. Trên macOS, hàm libcsyslog()không an toàn theo luồng nênsyslog.syslog()không còn nhả GIL để gọi nó nữa. Bản vá của Victor Stinner.gh-44098: Giải phóng GIL khi tạo đối tượng
mmap.mmaptrên Unix.gh-87730: Bao gồm các lỗi mạng một cách nhất quán trong hỗ trợ urllib FTP, do đó bộ kiểm tra không bị lỗi khi có mạng nhưng không thể truy cập internet công cộng.
gh-94597: Các lớp trình theo dõi con
MultiLoopChildWatcher,FastChildWatchervàSafeChildWatcherkhông được dùng nữa và sẽ bị xóa trong Python 3.14. Bản vá của Kumar Aditya.gh-98023: Thay đổi trình theo dõi trẻ em mặc định thành
PidfdChildWatchertrên các hệ thống Linux hỗ trợ nó. Bản vá của Kumar Aditya.gh-90985: Trước đó trong phiên bản 3.11, chúng tôi đã ngừng sử dụng
asyncio.Task.cancel("message"). Chúng tôi nhận ra rằng mình đã quá khắc nghiệt và không chấp nhận điều đó.gh-65961: Không chỉ dựa vào
__cached__trên các mô-đun; mã cũng sẽ hỗ trợ__spec__.cached.gh-97646: Thay thế
application/javascriptkhông dùng nữa bằngtext/javascripttrongmimetypes. Xem RFC 9239. Bản vá của Noam Cohen.gh-97930: Áp dụng các thay đổi từ importlib_resources 5.8 và 5.9:
Traversable.joinpathcung cấp cách triển khai cụ thể.as_filehiện hỗ trợ các thư mục tài nguyên.gh-97850: Xóa
importlib.util.set_loader()vàimportlib.util.module_for_loader()không được dùng nữa khỏiimportlib.util.gh-97837: Thay đổi thông báo cảnh báo không dùng nữa trong
unittesttừIt is deprecated to return a value!=Noneđể
It is deprecated to return a value that is not None from a test casegh-97825: Sửa
AttributeErrorkhisubprocess.check_output()được sử dụng với đối sốinput=Nonevà một trong hai đối số encoding hoặc errors được sử dụng.gh-97008: Các đề xuất chính tả
NameErrorvàAttributeErrorđược cung cấp kể từ gh-82711 hiện cũng được phát ra bởi mô-đuntracebackPython thuần túy. Việc kiểm tra những đề xuất đó hiện thực hiện cả hai cách triển khai để đảm bảo chúng tương đương nhau. Bản vá của Carl Friedrich Bolz-Tereick và Łukasz Langa.gh-97799:
dataclasshiện sử dụnginspect.get_annotations()để kiểm tra các chú thích trên các đối tượng lớp.gh-97781: Đã xóa các giao diện không được dùng nữa trong
importlib.metadata(điểm vào được truy cập dưới dạng từ điển, xây dựng từ điển ngầm của chuỗi các đối tượngEntryPoint, khả năng thay đổi của kết quảEntryPoints, truy cập điểm vào theo chỉ mục).entry_pointshiện có API đơn giản hơn, dễ hiểu hơn (trả vềEntryPoints).gh-96827: Tránh truy nguyên giả từ
asynciokhi quá trình dọn dẹp trình thực thi mặc định bị trì hoãn cho đến sau khi vòng lặp sự kiện được đóng lại (ví dụ: do bàn phím bị gián đoạn).gh-95534:
gzip.GzipFile.read()đọc nhanh hơn 10%.gh-97592: Tránh sự cố trong phiên bản C của
asyncio.Future.remove_done_callback()khi một đối số xấu được thông qua.gh-97545: Làm cho Semaphore chạy nhanh hơn.
gh-73588: Sửa lỗi tạo tên mặc định của
tkinter.Checkbutton. Trước đây, các nút kiểm trong các tiện ích con khác nhau có thể có cùng tên viết tắt và có cùng trạng thái nếu các đối số "tên" và "biến" không được chỉ định. Bây giờ chúng là duy nhất trên toàn cầu.gh-96865: sửa Flag sử dụng ranh giới CONFORM
Điều này khôi phục hành vi Cờ trước đó về việc cho phép kết hợp các cờ có giá trị không tuần tự; ví dụ.
Bỏ qua lớp (Cờ): TWO = 2 EIGHT = 8
Skip.TWO | Skip.EIGHT -> <Skip.TWO|TÁM: 10>
gh-97005: Cập nhật gói libexpat lên 2.4.9
gh-85760: Khắc phục tình trạng đua trong
asynciotrong đóprocess_exited()được gọi trướcpipe_data_received()dẫn đến đầu ra không nhất quán. Bản vá của Kumar Aditya.gh-96704: Truyền
contextvars.Contextchính xác khi trình xử lý ngoại lệasynciođược gọi thay mặt cho một tác vụ hoặc trình xử lý gọi lại. Điều này bổ sung một phương thứcTaskmới,get_contextvà cũng là một phương thứcHandlemới có cùng tên. Nếu không tìm thấy phương thức này trên một đối tượng tác vụ (có lẽ vì đó là thư viện bên thứ ba chưa cung cấp phương thức này), bối cảnh phổ biến tại thời điểm trình xử lý ngoại lệ được gọi sẽ được sử dụng.gh-96819: Đã sửa lỗi kiểm tra
multiprocessing.resource_trackerđể đảm bảo rằng độ dài ghi vào ống dẫn không lớn hơnPIPE_BUF.gh-95865: Giảm mức sử dụng bộ nhớ
urllib.parse.quote_from_bytes()trên các giá trị lớn.Đóng góp bởi Dennis Sweeney.
gh-96741: Đã sửa chú thích kiểu cho thuộc tính lớp dữ liệu
pstats.FunctionProfile.ncallsthànhstr.gh-96734: Cập nhật cơ sở dữ liệu
unicodedatalên Unicode 15.0.0.gh-96735: Khắc phục hành vi không xác định trong
struct.unpack().gh-46412: Cải thiện hiệu suất của
bool(db)cho cơ sở dữ liệu ndb/gdb lớn. Trước đây, lệnh này sẽ gọilen(db)sẽ lặp lại trên tất cả các khóa -- câu trả lời (trống hoặc không) sẽ được biết sau khóa đầu tiên.gh-96652: Khắc phục việc triển khai trình xử lý lỗi của
faulthandler.register(signal, chain=True)nếu chức năngsigaction()không khả dụng: không gọi trình xử lý tín hiệu trước đó nếu đó là NULL. Bản vá của Victor Stinner.gh-68163: Chuyển đổi chính xác từ
numbers.Rationalthànhfloat.gh-96538: Tăng tốc các chức năng của
bisect.bisect()bằng cách tận dụng tính ổn định của loại.gh-96465: Băm phân số hiện được lưu vào bộ nhớ đệm.
gh-96079: Trong
typing, sửa trường bị thiếunamevà__module__không chính xác trong _AnnotatedAlias.gh-96415: Xóa
types._cell_factorykhỏi không gian tên mô-đun.gh-95987: Sửa lỗi
reprcủa các lớp conAny.gh-96388: Khắc phục các chức năng ổ cắm bị thiếu trong
__repr__củasocket.gh-96385: Sửa
TypeVarTuple.__typing_prepare_subst__.TypeErrorkhông được nâng lên khi sử dụng nhiều hơn mộtTypeVarTuple, giống như[*T, *V]trong thay thế bí danh loại.gh-96142: Thêm
match_args,kw_only,slotsvàweakref_slotvào_DataclassParams.gh-96073: Trong
inspect, khắc phục sự thay thế quá mức "typing." trong chú thích định dạng.gh-89258: Đã thêm phương thức
getChildren()vàologging.Loggerđể lấy các trình ghi nhật ký con ngay lập tức của một trình ghi nhật ký.gh-96346: Sử dụng bộ nhớ đệm kép cho các mẫu RE đã biên dịch.
gh-96349: Đã sửa lỗi hồi quy hiệu suất nhỏ trong
threading.Event.__init__()gh-90467: Sửa
asyncio.streams.StreamReaderProtocolđể giữ tham chiếu mạnh đến tác vụ đã tạo, để nó không bị thu thập rácgh-96172: Sửa lỗi trong
unicodedata:east_asian_widthdùng để trả về giá trị sai cho các ký tự chưa được gán; và cho các ký tự chưa được gán nhưng được bảo lưu.gh-96159: Khắc phục sự hồi quy hiệu suất khi ghi nhật ký TimedRotatingFileHandler. Chỉ kiểm tra các tệp đặc biệt khi thời gian chuyển qua đã qua.
gh-96175: Sửa tham số
localNamekhông được sử dụng trong lớpAttrtrongxml.dom.minidom.gh-96145: Thêm AttrDict vào mô-đun JSON để sử dụng với object_hook.
gh-96052: Khắc phục các cảnh báo của trình biên dịch xử lý (Cảnh báo cú pháp và Cảnh báo khấu hao) trong
codeop.compile_command()khi kiểm tra đầu vào không đầy đủ. Trước đây nó đã đưa ra cảnh báo và đưa ra Lỗi Cú pháp. Bây giờ nó luôn trả vềNonecho đầu vào không đầy đủ mà không đưa ra bất kỳ cảnh báo nào.gh-96125: Khắc phục tình trạng sai khiến
sys.thread_info.namebị lỗi trên nền tảng pthread.gh-96019: Sửa lỗi trong tập lệnh
makeunicodedata.pydẫn đến tiết kiệm khoảng 13 KiB dung lượng trong mô-đununicodedata, cụ thể là dữ liệu phân tách ký tự.gh-95463: Xóa thay đổi không tương thích khỏi bpo-28080 gây ra hồi quy bỏ qua utf8 trong
ZipInfo.flag_bits. Bản vá của Pablo Galindo.gh-69142: Thêm mã định dạng strftime
%:z(tạo tzoffset với dấu hai chấm làm dấu phân cách), xem hành vi strftime() và strptime().gh-95899: Sửa lỗi
asyncio.Runnerchỉ gọiasyncio.set_event_loop()một lần để tránh gọiattach_loop()nhiều lần đối với người theo dõi trẻ em. Bản vá của Kumar Aditya.gh-95736: Sửa
unittest.IsolatedAsyncioTestCaseđể thiết lập vòng lặp sự kiện trước khi gọi các chức năng thiết lập. Bản vá của Kumar Aditya.gh-95865: Tăng tốc
urllib.parse.quote_from_bytes()bằng cách thay thế khả năng hiểu danh sách bằngmap().gh-95861: Thêm hỗ trợ tính toán hệ số tương quan của Spearman cho hàm stats.correlation() hiện có.
gh-95804: Sửa trình xử lý tắt máy
loggingđể nó tôn trọngMemoryHandler.flushOnClose.gh-95704: Khi một tác vụ bắt được
asyncio.CancelledErrorvà phát sinh một số lỗi khác, lỗi khác thường không được âm thầm loại bỏ.gh-95149:
HTTPStatusenum cung cấp một vài thuộc tính để biểu thị danh mục trạng thái HTTP, ví dụ:HTTPStatus.OK.is_success.gh-95609: Cập nhật gói pip lên 22.2.2.
gh-95289: Sửa lỗi
asyncio.TaskGroupđể truyền bá ngoại lệ khiasyncio.CancelledErrorđược thay thế bằng một ngoại lệ khác bởi trình quản lý bối cảnh. Bản vá của Kumar Aditya và Guido van Rossum.gh-94909: Sửa lỗi kết nối không chính xác các đường dẫn Windows tương đối với các ổ đĩa trong trình khởi tạo
pathlib.PurePath.gh-95385:
json.dumps()nhanh hơn khi không yêu cầu sắp xếp khóa (mặc định).gh-83901: Cải thiện thông báo lỗi
Signature.bindkhi thiếu các đối số chỉ từ khóa.gh-95339: Cập nhật gói pip lên 22.2.1.
gh-95045: Khắc phục sự cố GC khi hủy phân bổ
_lsprof.Profilerbằng cách bỏ theo dõi nó trước khi gọi bất kỳ lệnh gọi lại nào. Bản vá của Kumar Aditya.gh-95231: Thất bại nếu
EPERMhoặcENOSYSđược nâng lên khi tải các phương thứccrypt. Điều này có thể xảy ra khi cố tảiMD5trên nhân Linux đã bật FIPS.gh-95097: Sửa
asyncio.run()để triển khaiasyncio.Taskmà không cần phương phápuncancel(). Bản vá của Kumar Aditya.gh-95087: Sửa lỗi IndexError khi phân tích ngày không hợp lệ trong mô-đun
email.gh-95199: Nâng cấp các công cụ thiết lập đi kèm lên 63.2.0.
gh-95194: Nâng cấp gói pip lên 22.2.
gh-93899: Sửa lỗi kiểm tra sự tồn tại của các cờ
os.EFD_CLOEXEC,os.EFD_NONBLOCKvàos.EFD_SEMAPHOREtrên các phiên bản kernel cũ hơn mà các cờ này không xuất hiện. Bản vá của Kumar Aditya.gh-95166: Sửa
concurrent.futures.Executor.map()để hủy lỗi hiện đang chờ trong tương lai - ví dụ: Hết thời gianLỗi hoặc Bàn phím bị ngắt.gh-95132: Khắc phục hồi quy
sqlite3trong đó*argsvà**kwdsđược chuyển tiếp không chính xác từconnect()đến nhà máyConnection. Hồi quy được giới thiệu trong 3.11a1 với PR 24421 (gh-85128). Bản vá của Erlend E. Aasland.gh-93157: Sửa mô-đun
fileinputkhông hỗ trợ tùy chọnerrorskhiinplacelà đúng.gh-91212: Đã sửa lỗi nhấp nháy cửa sổ rùa khi tắt bộ theo dõi. Bản vá của Shin-myoung-serp.
gh-95077: Thêm cảnh báo không dùng nữa đối với quyền truy cập enum
member.member(ví dụ:Color.RED.BLUE). XóaEnumMeta.__getattr__.gh-95109: Đảm bảo rằng thời gian chờ đã lên lịch với
asyncio.Timeoutđã hết hạn sẽ được gửi kịp thời.gh-95105:
wsgiref.types.InputStream.__iter__()sẽ trả vềIterator[bytes], không phảiIterable[bytes]. Bản vá của Shantanu Jain.gh-95066: Đã thay thế khẳng định bằng ngoại lệ trong
ast.parse(), khifeature_versioncó phiên bản chính không hợp lệ. Bản vá của Shantanu Jain.gh-77617: Thêm
sqlite3command-line interface. Bản vá của Erlend Aasland.gh-95005: Thay thế _PyAccu bằng _PyUnicodeWriter trong bộ mã hóa JSON và StringIO, đồng thời xóa việc triển khai _PyAccu.
gh-90085: Loại bỏ tùy chọn
-c/--clockvà-t/--timeCLI củatimeit. Các tùy chọn này không được dùng nữa kể từ Python 3.3 và chức năng này đã bị xóa trong Python 3.7. Bản vá của Shantanu Jain.gh-94857: Sửa lỗi phản chiếu trong
_io.TextIOWrapper.reconfigure. Bản vá của Kumar Aditya.gh-94821: Sửa lỗi liên kết ổ cắm unix với địa chỉ trống trên Linux để sử dụng địa chỉ có sẵn từ không gian tên trừu tượng, thay vì "0".
gh-94736: Khắc phục sự cố khi hủy phân bổ một phiên bản của lớp con
_multiprocessing.SemLock. Bản vá của Kumar Aditya.gh-81620: Thêm ngẫu nhiên.binomialvariate().
gh-74116: Cho phép
asyncio.StreamWriter.drain()được chờ đợi đồng thời bởi nhiều tác vụ. Bản vá của Kumar Aditya.gh-87822: Khi được gọi bằng
capture_locals=True, các chức năng của mô-đuntracebacksẽ nuốt các ngoại lệ được tạo ra từ các lệnh gọi tớirepr()trên các biến cục bộ của khung. Điều này là để ưu tiên ngoại lệ ban đầu hơn các lỗi kết xuất. Một dấu hiệu lỗi được in thay cho giá trị còn thiếu. (Bản vá của Simon-Martin Schroeder).gh-88050: Sửa lỗi vận chuyển quy trình con
asynciođể tiêu diệt quy trình một cách sạch sẽ khi quy trình bị chặn và tránhRuntimeErrorkhi vòng lặp được đóng. Bản vá của Kumar Aditya.gh-94637:
SSLContext.set_default_verify_paths()hiện phát hành lệnh gọi GIL xung quanhSSL_CTX_set_default_verify_paths. Lệnh gọi hàm thực hiện công việc chuyên sâu về I/O và CPU.gh-94309: Không dùng bí danh
typing.Hashablevàtyping.Sizedgh-92546: Điểm chuẩn
python -m pprintkhông có giấy tờ được chuyển vào bộ pyperformancepprint. Bản vá của Oleg Iarygin.gh-94607: Sửa lỗi phân lớp tổng quát phức tạp với các biến loại trong
typing. Trước đó một thông báo lỗi cho biếtSome type variables ... are not listed in Generic[...]đã được hiển thị.typingkhông còn điền__parameters__với__parameters__của lớp Python nữa.gh-94619: Xóa
module_repr()không được dùng nữa khỏiimportlib.gh-93910: Khả năng truy cập các giá trị khác của enum trên enum (ví dụ:
Color.RED.BLUE) đã được khôi phục để khắc phục hồi quy hiệu suất.gh-93896: Sửa
asyncio.run()vàunittest.IsolatedAsyncioTestCasethành vòng lặp sự kiện đã đặt như đã được thực hiện trong Python 3.10 trở về trước. Bản vá của Kumar Aditya.gh-94343: Cho phép thiết lập thuộc tính của
reprlib.Reprtrong quá trình khởi tạo đối tượnggh-94382: Chuyển các loại mô-đun
_multiprocessingtĩnh sang các loại heap. Bản vá của Kumar Aditya.gh-78724: Khắc phục sự cố trong
struct.Structkhi nó chưa được khởi tạo hoàn toàn bằng cách khởi tạo nó trong__new__(). Bản vá của Kumar Aditya.gh-94510: Đăng ký lại cuộc gọi tới
sys.setprofile()vàsys.settrace()hiện tăngRuntimeError. Bản vá của Pablo Galindo.gh-92336: Sửa lỗi
linecache.getline()không thành công trên các tập tin xấu vớiUnicodeDecodeErrorhoặcSyntaxError. Bây giờ nó trả về một chuỗi trống theo tài liệu.gh-94398: Sau khi
asyncio.TaskGroupbắt đầu tắt (tức là, ít nhất một tác vụ không thành công và nhóm nhiệm vụ đã bắt đầu hủy các nhiệm vụ còn lại), thì không thể thêm nhiệm vụ mới vào nhóm nhiệm vụ.gh-94383:
xml.etree: Loại bỏ phương thứcElementTree.Element.copy()của quá trình triển khai Python thuần túy, không được dùng nữa trong Python 3.10, thay vào đó hãy sử dụng hàmcopy.copy(). Việc triển khai C củaxml.etreekhông có phương thứccopy(), chỉ có phương thức__copy__(). Bản vá của Victor Stinner.gh-94379:
zipimport: Loại bỏ các phương thứcfind_loader()vàfind_module(), không được dùng nữa trong Python 3.10: thay vào đó hãy sử dụng phương thứcfind_spec(). Xem PEP 451 để biết lý do. Bản vá của Victor Stinner.gh-94352:
shlex.split(): Việc chuyểnNonecho đối số s hiện đưa ra một ngoại lệ, thay vì đọcsys.stdin. Tính năng này không được dùng nữa trong Python 3.9. Bản vá của Victor Stinner.gh-94318: Loại bỏ các dấu cách ở cuối trong văn bản đầu ra
pydoc.gh-89988: Sửa lỗi rò rỉ bộ nhớ trong
pickle.Picklerkhi tra cứudispatch_table. Bản vá của Kumar Aditya.gh-90016: Không dùng nữa
sqlite3default adapters and converters. Bản vá của Erlend E. Aasland.gh-94254: Đã sửa lỗi các loại mô-đun
structkhông thể thay đổi được. Bản vá của Kumar Aditya.gh-93259: Bây giờ tăng
ValueErrorkhiNonehoặc một chuỗi trống được chuyển tớiDistribution.from_name(và những người gọi khác).gh-74696:
shutil.make_archive()hiện chuyển đối số root_dir cho các bộ lưu trữ tùy chỉnh hỗ trợ nó.gh-94216: Mô-đun
dishiện có các mã hoạt động cho các lệnh giả (những mã được trình biên dịch sử dụng trong quá trình tạo mã nhưng sau đó bị loại bỏ hoặc thay thế bằng các mã hoạt động thực trước khi mã byte cuối cùng được phát ra).gh-93096: Đã xóa
python -m codecskhông có giấy tờ. Thay vào đó hãy sử dụngpython -m unittest test.test_codecs.EncodedFileTest.gh-94207: Tạo
_struct.StructGC theo dõi để khắc phục rò rỉ tham chiếu trong mô-đun_struct.gh-93096: Đã xóa đối số
-tkhông có giấy tờ củapython -m base64. Thay vào đó hãy sử dụngpython -m unittest test.test_base64.LegacyBase64TestCase.test_encodebytes.gh-94226: Xóa hàm
locale.format(), không được dùng nữa trong Python 3.7: thay vào đó hãy sử dụnglocale.format_string(). Bản vá của Victor Stinner.gh-94199: Loại bỏ chức năng
ssl.match_hostname(). Zz002zz không được dùng nữa trong Python 3.7. OpenSSL thực hiện khớp tên máy chủ kể từ Python 3.7, Python không còn sử dụng hàmssl.match_hostname()nữa. Bản vá của Victor Stinner.gh-94214: Ghi lại đối tượng
contextđược sử dụng trong lớpvenv.EnvBuildervà thêm đường dẫn thư viện của môi trường mới vào đó.gh-94199: Xóa hàm
ssl.wrap_socket(), không được dùng nữa trong Python 3.7: thay vào đó, hãy tạo một đối tượngssl.SSLContextvà gọi phương thứcssl.SSLContext.wrap_socketcủa nó. Gói nào còn sử dụngssl.wrap_socket()đều bị hỏng và không an toàn. Hàm này không gửi phần mở rộng SNI TLS cũng như không xác thực tên máy chủ của máy chủ. Mã phải tuân theo Xác thực chứng chỉ không đúng CWE 295. Bản vá của Victor Stinner.gh-94199: Xóa hàm
ssl.RAND_pseudo_bytes(), không dùng nữa trong Python 3.6: thay vào đó hãy sử dụngos.urandom()hoặcssl.RAND_bytes(). Bản vá của Victor Stinner.gh-94199:
hashlib: Loại bỏ cách triển khai Python thuần túy củahashlib.pbkdf2_hmac(), không được dùng nữa trong Python 3.10. Python 3.10 trở lên yêu cầu OpenSSL 1.1.1 (PEP 644): phiên bản OpenSSL này cung cấp triển khai C củapbkdf2_hmac()nhanh hơn. Bản vá của Victor Stinner.gh-94196:
gzip: Xóa thuộc tínhfilenamecủagzip.GzipFile, không được dùng nữa kể từ Python 2.6, thay vào đó hãy sử dụng thuộc tínhname. Trong chế độ ghi, thuộc tínhfilenameđã thêm phần mở rộng tệp'.gz'nếu nó không có. Bản vá của Victor Stinner.gh-94182: chạy
asyncio.PidfdChildWatchertrên vòng lặp đang chạy, điều này cho phép các vòng lặp sự kiện chạy các quy trình con khi không có vòng lặp sự kiện mặc định nào chạy trên luồng chínhgh-94169: Xóa
io.OpenWrappervà_pyio.OpenWrapper, không được dùng nữa trong Python 3.10: thay vào đó chỉ sử dụngopen(). Hàmopen()(io.open()) là hàm được tích hợp sẵn. Kể từ Python 3.10,_pyio.open()cũng là một phương thức tĩnh. Bản vá của Victor Stinner.gh-91742: Khắc phục sự cố
pdbsau khi nhảy do vô hiệu hóa con trỏ null. Bản vá của Kumar Aditya.gh-94101: Việc khởi tạo thủ công các đối tượng
ssl.SSLSessionkhông còn được phép vì điều này dẫn đến các phiên bản bị định cấu hình sai làm hỏng trình thông dịch khi các thuộc tính được truy cập trên chúng.gh-84753:
inspect.iscoroutinefunction(),inspect.isgeneratorfunction()vàinspect.isasyncgenfunction()hiện trả về đúng cáchTruecho các đối tượng giống hàm kiểu vịt như các phiên bản củaunittest.mock.AsyncMock.Điều này làm cho
inspect.iscoroutinefunction()nhất quán với hoạt động củaasyncio.iscoroutinefunction(). Bản vá của Mehdi ABAAKOUK.gh-94028: Khắc phục sự hồi quy trong
sqlite3trong đó các đối tượng câu lệnh không được xóa và đặt lại đúng cách sau khi sử dụng trong các lần lặp con trỏ. Hồi quy được giới thiệu bởi PR 27884 trong Python 3.11a1. Bản vá của Erlend E. Aasland.gh-93973: Thêm đối số từ khóa
all_errorsvàoasyncio.create_connectionđể có thể đưa ra nhiều lỗi kết nối dưới dạngExceptionGroup.gh-93963: Chính thức không dùng nữa từ các lớp
importlib.abcđã chuyển sangimportlib.resources.abc.gh-93858: Ngăn chặn lỗi khi kích hoạt venv trong các phiên bản cá lồng nhau.
gh-93847: Sửa lỗi lặp lại enum của các bí danh chung.
gh-91404: Khôi phục rò rỉ bộ nhớ
rekhi kết quả khớp bị kết thúc do lỗi phân bổ tín hiệu hoặc bộ nhớ do bản sửa lỗi được triển khai gây ra sự suy giảm hiệu suất lớn.gh-93820: Đã sửa lỗi hồi quy khi
copy.copy()-ingenum.Flagcó nhiều thành viên gắn cờ.gh-79512: Sửa tên và giá trị
__module__của các lớpweakrefReferenceType,ProxyType,CallableProxyType. Nó làm cho chúng có thể ngâm được.gh-91389: Khắc phục sự cố trong đó các tiện ích
discó thể báo cáo thông tin vị trí bị thiếu hoặc không chính xác khi có các mụcCACHE.gh-93626: Đặt
__future__.annotationscó một bản phát hành bắt buộcNoneđể cho biết rằng nó hiện là 'TBD'.gh-90473: Emscripten và WASI không có thư mục chính và không thể cung cấp thư mục trang web của người dùng PEP 370.
gh-90494:
copy.copy()vàcopy.deepcopy()hiện luôn đưa ra TypeError nếu__reduce__()trả về một bộ dữ liệu có độ dài 6 thay vì âm thầm bỏ qua mục thứ 6 hoặc tạo ra kết quả không chính xác.gh-90549: Khắc phục lỗi đa xử lý trong đó tài nguyên có tên chung (chẳng hạn như semaphore) có thể bị rò rỉ khi một tiến trình con được sinh ra (trái ngược với việc phân nhánh).
gh-93521: Đã khắc phục trường hợp các lớp dữ liệu cố gắng thêm
__weakref__vào__slots__cho một lớp dữ liệu đã chỉ địnhweakref_slot=Truekhi nó đã được xác định ở một trong các cơ sở của nó. Điều này dẫn đếnTypeErrorkhi lớp mới được tạo.gh-79579:
sqlite3hiện phát hiện chính xác các truy vấn DML có nhận xét hàng đầu. Bản vá của Erlend E. Aasland.gh-93421: Cập nhật
sqlite3.Cursor.rowcountkhi câu lệnh DML chạy đến khi hoàn thành. Điều này sửa số lượng hàng cho các truy vấn SQL nhưUPDATE ... RETURNING. Bản vá của Erlend E. Aasland.gh-93475: Hiển thị các hằng số
FICLONEvàFICLONERANGEtrongfcntl. Bản vá của Illia Volochii.gh-93370: Không dùng nữa
versionvàversion_info.gh-91810: Ngăn chặn việc viết khai báo XML trong các tệp đang mở trong
ElementTree.write()vớiencoding='unicode'vàxml_declaration=None.gh-91162: Hỗ trợ phân tách các bộ dữ liệu có độ dài tùy ý đã giải nén theo các tham số
TypeVarvàTypeVarTuple. Ví dụ:A[T, *Ts][*tuple[int, ...]]->A[int, *tuple[int, ...]]A[*Ts, T][*tuple[int, ...]]->A[*tuple[int, ...], int]
gh-93353: Sửa trình quản lý bối cảnh
importlib.resources.as_file()để xóa tệp tạm thời nếu bị hủy muộn trong quá trình hoàn thiện Python: giữ tham chiếu cục bộ cho hàmos.remove(). Bản vá của Victor Stinner.gh-83658: Làm cho
multiprocessing.Poolđưa ra một ngoại lệ nếumaxtasksperchildkhông phải làNonehoặc int dương.gh-93312: Thêm cờ
os.PIDFD_NONBLOCKđể mở bộ mô tả tệp cho quy trình cóos.pidfd_open()ở chế độ không chặn. Bản vá của Kumar Aditya.gh-88123: Triển khai
Enum.__contains__trả vềTruehoặcFalseđể thay thế hành vi không được dùng nữa mà đôi khi sẽ tạo raTypeError.gh-93297: Tạo các nhóm tác vụ asyncio ngăn các tác vụ con bị GCed
gh-85308: Đã thay đổi
argparse.ArgumentParserđể sử dụng filesystem encoding and error handler thay vì mã hóa văn bản mặc định để đọc các đối số từ tệp (ví dụ: tùy chọnfromfile_prefix_chars). Thay đổi này ảnh hưởng đến Windows; tệp đối số phải được mã hóa bằng UTF-8 thay vì ANSI Codepage.gh-93156: Truy cập chuỗi
pathlib.PurePath.parentscủa một đường dẫn tuyệt đối bằng cách sử dụng các giá trị chỉ mục âm sẽ tạo ra kết quả không chính xác.gh-93162: Thêm khả năng để
logging.config.dictConfig()định cấu hìnhQueueHandlervàQueueListenermột cách hữu ích thành một cặp, đồng thời thêm APIlogging.getHandlerByName()vàlogging.getHandlerNames()để cho phép truy cập vào trình xử lý theo tên.gh-93243: Mô-đun
smtpdđã bị xóa theo lịch trình trong PEP 594.gh-92886: Thay thế các câu lệnh
assertbằngraise AssertionError()trongBaseHandlerđể hành vi đã kiểm tra được duy trì chạy với các tối ưu hóa(-O).gh-90155: Sửa lỗi
asyncio.Semaphorekhi quá trình thu thập bị hủy.gh-90817: Hàm
locale.resetlocale()không được dùng nữa và sẽ bị xóa trong Python 3.13. Thay vào đó hãy sử dụnglocale.setlocale(locale.LC_ALL, ""). Bản vá của Victor Stinner.gh-91513: Đã thêm thuộc tính
taskNamevào mô-đunloggingđể sử dụng với các tác vụasyncio.gh-74696:
shutil.make_archive()không còn tạm thời thay đổi thư mục làm việc hiện tại trong quá trình tạo kho lưu trữ.ziphoặc tar tiêu chuẩn.gh-92728: Hàm
re.template()và các cờre.TEMPLATEvàre.Ttương ứng được khôi phục sau khi chúng bị xóa trong 3.11.0b1, nhưng hiện tại chúng không được dùng nữa nên có thể bị xóa khỏi Python 3.13.gh-93033: Tìm kiếm trong một số chuỗi (phụ thuộc vào nền tảng, tức là [U+0xFFFF, U+0x0100] trên Windows hoặc [U+0xFFFFFFFF, U+0x00010000] trên Linux 64-bit) hiện nhanh hơn tới 10 lần.
gh-89973: Sửa lỗi
re.errortăng lên trongfnmatchnếu mẫu chứa phạm vi ký tự có giới hạn trên thấp hơn giới hạn dưới (ví dụ:[c-a]). Bây giờ những phạm vi như vậy được hiểu là những phạm vi trống.gh-93044: Không còn chuyển đổi đối số cơ sở dữ liệu của
sqlite3.connect()thành byte trước khi chuyển nó đến nhà máy.gh-93010: Trong một trường hợp rất đặc biệt, gói email đã cố gắng thêm
InvalidHeaderErrorkhông tồn tại vào danh sách lỗi. Đáng lẽ nó phải làInvalidHeaderDefect.gh-92986: Sửa
ast.unparse()khiImportFrom.levellàNonegh-92932: Bây giờ
dis()vàget_instructions()xử lý các giá trị toán hạng cho các lệnh có tiền tố làEXTENDED_ARG_QUICK. Bản vá của Sam Gross và Donghee Na.gh-92675: Sửa
venv.ensure_directories()để chấp nhận các đối sốpathlib.Pathngoài đường dẫnstr. Bản vá của David Foster.gh-87901: Đã xóa đối số
encodingkhỏios.popen()đã được thêm vào 3.11b1.gh-91922: Sửa chức năng
sqlite.connect()và hàm tạosqlite.Connectiontrên các ngôn ngữ không phải UTF-8. Ngoài ra, giờ đây chúng còn hỗ trợ các đường dẫn byte không thể giải mã được bằng mã hóa FS hiện tại.gh-92869: Đã thêm
c_time_tvàoctypes, có cùng kích thước với loạitime_ttrong C.gh-92839: Đã khắc phục sự cố do gọi bisect.insort() hoặc bisect.insort_left() với đối số khóa không bằng
None.gh-90473:
subprocesshiện không hoạt động sớm trên nền tảng Emscripten và WASI để khắc phục tình trạng thiếuos.pipe()trên WASI.gh-89325: Đã xóa nhiều tính năng
unittestcũ không được dùng nữa: bí danh phương thứcTestCase, phương thứcTestCasekhông có giấy tờ và bị hỏngassertDictContainsSubset, tham sốTestLoader.loadTestsFromModulekhông có giấy tờ use_load_tests và bí danh được gạch dưới của lớpTextTestResult.gh-92734: Cho phép in đẹp các đại diện đa thành phần do
reprlibphát ra bằng cách sử dụng thụt lề có thể định cấu hình.gh-92671: Đã sửa lỗi
ast.unparse()cho các bộ dữ liệu trống trong ngữ cảnh mục tiêu gán.gh-91581:
utcfromtimestamp()không còn cố gắng giải quyếtfoldtrong quá trình triển khai Python thuần túy nữa, vì số lần gấp không bao giờ là 1 trong UTC. Ngoài việc nhanh hơn một chút trong trường hợp thông thường, điều này còn ngăn ngừa một số lỗi khi dấu thời gian gần vớidatetime.min. Bản vá của Paul Ganssle.gh-86388: Đã xóa chức năng randrange() không được dùng nữa kể từ Python 3.10. Trước đây, Randrange(10.0) được chuyển đổi dễ dàng thành Randrange(10). Bây giờ, nó báo lỗi TypeError. Ngoài ra, ngoại lệ được nêu ra đối với các giá trị không tách rời như randrange(10.5) hoặc randrange('10') đã được thay đổi từ ValueError thành TypeError.
gh-90385: Thêm
pathlib.Path.walk()thay thế choos.walk().gh-92550: Sửa
pathlib.Path.rglob()cho mẫu trống.gh-92591: Cho phép các bộ lọc
loggingtrả về một phiên bảnlogging.LogRecordđể các bộ lọc được gắn vàologging.Handlers có thể làm phong phú các bản ghi mà không có tác dụng phụ đối với các trình xử lý khác.gh-92445: Sửa lỗi trong
argparsetrong đónargs="*"sẽ phát sinh lỗi thay vì trả về danh sách trống khi cung cấp 0 đối số nếu lựa chọn cũng được xác định trongparser.add_argument.gh-92547: Xóa các tính năng
sqlite3không có giấy tờ không được dùng nữa trong Python 3.10:sqlite3.enable_shared_cache()sqlite3.OptimizedUnicode
Bản vá của Erlend E. Aasland.
gh-92530: Khắc phục sự cố xảy ra sau khi làm gián đoạn
threading.Condition.notify().gh-92531: Hàm stats.median_grouped() giờ đây luôn trả về một số float. Trước đây, nó không chuyển đổi loại đầu vào đối với các chuỗi có độ dài bằng một.
gh-84131: Phương thức
link_tokhông được dùng nữapathlib.Pathđã bị xóa. Thay vào đó, hãy sử dụng phương pháphardlink_to()của 3.10 vì ngữ nghĩa của nó nhất quán với phương phápsymlink_to().gh-89336: Đã xóa API mô-đun
configparser: bí danh lớpSafeConfigParser, thuộc tính và tham sốParsingError.filenamecũng như phương thứcConfigParser.readfp, tất cả đều không được dùng nữa kể từ Python 3.2.gh-92391: Thêm
__class_getitem__()vàocsv.DictReadervàcsv.DictWriter, cho phép chúng được tham số hóa khi chạy. Bản vá của Marc Mueller.gh-91968: Thêm hằng số
SO_RTABLEvàSO_USER_COOKIEvàosocket.gh-91810: Phương thức
ElementTreewrite()và hàmtostring()hiện sử dụng mã hóa của tệp văn bản ("UTF-8" nếu không có sẵn) thay vì mã hóa miền địa phương trong khai báo XML khiencoding="unicode"được chỉ định.gh-81790:
os.path.splitdrive()hiện đã hiểu đường dẫn thiết bị DOS với các liên kết UNC (bắt đầu từ\\?\UNC\). Đóng góp bởi Barney Gale.gh-91760: Áp dụng các quy tắc chặt chẽ hơn cho tham chiếu nhóm số và tên nhóm trong biểu thức chính quy. Hiện chỉ có chuỗi chữ số ASCII được chấp nhận làm tham chiếu số. Tên nhóm trong mẫu byte và chuỗi thay thế giờ đây chỉ có thể chứa các chữ cái, chữ số và dấu gạch dưới ASCII.
gh-90622: Các quy trình công nhân cho
concurrent.futures.ProcessPoolExecutorkhông còn được sinh ra theo yêu cầu (một tính năng được thêm vào trong 3.9) khi phương thức bắt đầu ngữ cảnh đa xử lý là"fork"vì điều đó có thể dẫn đến bế tắc trong các quy trình con do xảy ra phân nhánh trong khi các luồng đang chạy.gh-91577: Di chuyển quá trình nhập trong các phương thức
SharedMemorysang cấp mô-đun để chúng có thể được thực thi muộn trong quá trình hoàn thiện python.gh-91581: Loại bỏ trường hợp lỗi chưa được xử lý trong quá trình triển khai C các lệnh gọi tới
datetime.fromtimestampmà không có múi giờ (tức là lấy giờ địa phương từ dấu thời gian Epoch). Điều này sẽ không có tác dụng đối với người dùng ngoài việc đưa ra thông báo lỗi có thể chính xác hơn khi được gọi với dấu thời gian rơi vào 10000-01-01 theo giờ địa phương. Bản vá của Paul Ganssle.gh-91539: Cải thiện hiệu suất của
urllib.request.getproxies_environmentkhi có nhiều biến môi trườnggh-91524: Tăng tốc độ thay thế biểu thức chính quy (hàm
re.sub()vàre.subn()và các phương thứcre.Patterntương ứng) cho các chuỗi thay thế chứa tham chiếu nhóm lên 2--3 lần.gh-91447: Sửa lỗi findtext trong mô-đun xml để chỉ cung cấp một chuỗi trống khi thuộc tính văn bản được đặt thành
None.gh-91456: Loại bỏ hành vi auto() mặc định hiện tại: Trong 3.13, mặc định sẽ dành cho auto() để luôn trả về giá trị thành viên lớn nhất tăng thêm 1 và tăng nếu sử dụng loại giá trị không tương thích.
bpo-47231: Đã khắc phục sự cố với dấu gạch chéo ở cuối không nhất quán trong thư mục tên dài tarfile.
bpo-39064:
zipfile.ZipFilehiện tăngzipfile.BadZipFilethay vìValueErrorkhi đọc tệp zip bị hỏng trong đó phần bù thư mục trung tâm là âm.bpo-41287: Khắc phục việc xử lý đối số
doctrong các lớp con củaproperty().gh-90005:
ctypesphụ thuộclibffihiện được phát hiện vớipkg-config.bpo-32547: Các hàm tạo cho
DictWritervàDictReaderhiện ép buộc đối sốfieldnamesthànhlistnếu nó là một trình vòng lặp.bpo-35540: Khắc phục sự cố
dataclasses.asdict()khicollections.defaultdictcó trong thuộc tính.bpo-47063: Thêm tham số index_pages để hỗ trợ sử dụng tên trang chỉ mục không mặc định.
bpo-46951: Sắp xếp nội dung của kho lưu trữ zipapp để giúp các bản dựng dễ tái tạo hơn.
bpo-42777: Triển khai
pathlib.Path.is_mount()cho đường dẫn Windows.bpo-46755: Trong
QueueHandler, xóastack_infokhỏiLogRecordđể ngăn dấu vết ngăn xếp được ghi hai lần.bpo-45393: Sửa định dạng cho
await xvànot xtrong bảng ưu tiên toán tử khi sử dụng hệ thốnghelp().bpo-46642: Cải thiện thông báo lỗi khi cố gắng phân lớp một phiên bản của
typing.TypeVar,typing.ParamSpec,typing.TypeVarTuple, v.v. Dựa trên bản vá của Gregory Beauregard.bpo-46364: Hạn chế sử dụng ổ cắm thay vì đường ống cho stdin của các quy trình con được tạo bởi
asynciochỉ nền tảng AIX.bpo-28249: Đặt
doctest.DocTest.linenothànhNonekhi đối tượng không có__doc__.bpo-46197: Khắc phục sự cô lập môi trường
ensurepipcho tiến trình con đang chạypip.bpo-45924: Sửa lỗi truy nguyên không chính xác của
asynciokhi ngoại lệ trong tương lai được đưa ra nhiều lần. Bản vá của Kumar Aditya.bpo-45046: Thêm hỗ trợ trình quản lý bối cảnh trong
unittest: phương thứcenterContext()vàenterClassContext()của lớpTestCase, phương thứcenterAsyncContext()của lớpIsolatedAsyncioTestCasevà hàmunittest.enterModuleContext().bpo-44173: Cho phép tìm kiếm nhanh
zipfile.ZipExtFilekhông được mã hóa không nénbpo-42627: Sửa lỗi phân tích cú pháp cài đặt proxy đăng ký Windows không chính xác
bpo-42047: Thêm hỗ trợ
threading.get_native_id()cho DragonFly BSD. Bản vá của David Carlier.bpo-14243: Hàm
tempfile.NamedTemporaryFilecó tham số tùy chọn mới delete_on_closebpo-41246: Cung cấp chức năng gọi lại tương tự khi thực hiện thao tác chồng chéo đối với các chức năng
recv,recv_into,recvfrom,sendto,sendvàsendfilebên trongIocpProactor.bpo-39264: Đã sửa lỗi
collections.UserDict.get()để không gọi__missing__()khi không tìm thấy giá trị. Điều này phù hợp với hành vi củadict. Bản vá của Bar Harel.bpo-38693:
importlibhiện sử dụng chuỗi f bên trong thay vìstr.format.bpo-38267: Thêm tham số timeout vào
asyncio.loop.shutdown_default_executor(). Giá trị mặc định làNone, có nghĩa là người thi hành sẽ có thời gian không giới hạn. Khi được gọi từasyncio.Runnerhoặcasyncio.run(), thời gian chờ mặc định là 5 phút.bpo-34828:
sqlite3.Connection.iterdump()hiện xử lý cơ sở dữ liệu sử dụngAUTOINCREMENTtrong một hoặc nhiều bảng.bpo-32990: Hỗ trợ đọc file wave với định dạng
WAVE_FORMAT_EXTENSIBLEtrong modulewave.bpo-26253: Cho phép điều chỉnh mức độ nén đối với các luồng tarfile trong
tarfile.open().
Tài liệu¶
gh-85525: Xóa hàng thừa
gh-86404: Các công cụ không dùng nữa
make suspiciousvàrstlint.pyhiện đã bị xóa. Chúng đã được thay thế bởi sphinx-lint.gh-97741: Sửa lỗi
!trong cú pháp mục tiêu giới thiệu miền c thông qua bản váconf.py, do đó, nó hoạt động như dự định nhằm vô hiệu hóa độ phân giải mục tiêu giới thiệu.gh-96432: Phân số hiện hỗ trợ khoảng trắng xung quanh dấu gạch chéo lên,
Fraction('2 / 3').gh-96098: Cải thiện khả năng khám phá của mô-đun concurrent.futures cấp cao hơn bằng cách cung cấp các liên kết rõ ràng hơn từ các mô-đun phân luồng và đa xử lý cấp thấp hơn.
gh-95957: Có gì mới 3.11 hiện có hướng dẫn về cách cung cấp cờ trình biên dịch và trình liên kết cho Tcl/Tk và OpenSSL trên RHEL 7 và CentOS 7.
gh-95588: Làm rõ lời khuyên mâu thuẫn được đưa ra trong tài liệu
astvề việcast.literal_eval()"an toàn" để sử dụng trên đầu vào không đáng tin cậy, đồng thời cảnh báo rằng nó có thể làm hỏng quá trình. Tuyên bố sau là đúng và được coi là không thể sửa được nếu không có một lượng lớn công việc không phù hợp để sửa lỗi. Vì vậy, chúng tôi giữ nguyên cảnh báo và không khẳng định rằngliteral_evalan toàn nữa.gh-91207: Sửa lỗi biểu định kiểu không hoạt động trong tài liệu trợ giúp html CHM của Windows và thêm cảnh báo rằng chúng không được dùng nữa. Đóng góp bởi C.A.M. Gerlach.
gh-95454: Đã thay thế các giá trị đúng/sai được viết sai trong tài liệu. Bản vá của Robert O'Shea
gh-95451: Cập nhật tài liệu thư viện với availability information trên nền tảng WebAssugging
wasm32-emscriptenvàwasm32-wasi.gh-95415: Sử dụng cú pháp nhất quán để đảm bảo tính khả dụng của nền tảng. Lệnh hiện hỗ trợ nội dung và đưa ra cảnh báo khi gặp nền tảng không xác định.
gh-94321: Ghi lại loại giao thức kiểu PEP 246
sqlite3.PrepareProtocol.gh-86128: Ghi lại giới hạn trong ThreadPoolExecutor trong đó trình xử lý thoát của nó được thực thi trước bất kỳ trình xử lý nào trong atexit.
gh-61162: Làm rõ hành vi của
sqlite3khi Cách sử dụng trình quản lý bối cảnh kết nối.gh-87260: Căn chỉnh các thông số đối số
sqlite3với cách triển khai thực tế.gh-86986: Phiên bản Sphinx tối thiểu cần có để xây dựng tài liệu hiện là 3.2.
gh-88831: Tài liệu mở rộng của asyncio.create_task(). Làm rõ sự cần thiết phải giữ các tham chiếu rõ ràng đến các nhiệm vụ và thêm đoạn mã nêu chi tiết cách thực hiện việc này.
gh-86438: Làm rõ rằng
-WvàPYTHONWARNINGSđược khớp theo nghĩa đen và không phân biệt chữ hoa chữ thường, thay vì dưới dạng biểu thức thông thường, trongwarnings.gh-93031: Cập nhật đầu ra giới thiệu hướng dẫn để sử dụng phạm vi không hợp lệ 3.10+ SyntaxError.
gh-92240: Đã thêm ngày phát hành cho "Có gì mới trong Python 3.X" cho 3.0, 3.1, 3.2, 3.8 và 3.10
bpo-47161: Chứng minh rằng
pathlib.PurePathkhông thu gọn dấu gạch chéo kép ban đầu vì chúng biểu thị đường dẫn UNC.bpo-40838: Ghi lại rằng
inspect.getdoc(),inspect.getmodule()vàinspect.getsourcefile()có thể trả vềNone.bpo-43689: Tài liệu
Differhiện cũng đề cập đến các ký tự khoảng trắng khác, khiến việc hiểu đầu ra khác biệt trở nên khó khăn hơn.bpo-38056: Đại tu tài liệu Trình xử lý lỗi trong
codecs.bpo-13553: Tài liệu tkinter.Tk lập luận.
Kiểm tra¶
gh-95027: Trên Windows, khi bộ thử nghiệm Python được chạy với tùy chọn
-jN, trang mã ANSI hiện được sử dụng làm mã hóa cho tệp tạm thời xuất chuẩn, thay vì sử dụng UTF-8, điều này có thể dẫn đến lỗi giải mã. Bản vá của Victor Stinner.gh-96624: Đã khắc phục lỗi chạy lặp lại
test.test_unittestdo tác dụng phụ trongtest_dotted_but_module_not_loaded.gh-95243: Giảm thiểu tình trạng chạy đua cố hữu khi sử dụng find_unused_port() trong testSockName() bằng cách cố gắng tìm một cổng không được sử dụng một vài lần trước khi thất bại. Bản vá của Ross Burton.
gh-95573: Lib/test/test_asyncio/test_ssl.py đã phát hiện ra một lỗi trong nhân macOS trong đó tải đồng thời cường độ cao trên các ổ cắm không chặn đôi khi khiến
errno.ENOBUFS("Không có dung lượng bộ đệm") được phát ra. FB11063974 đã nộp đơn cho Apple, đồng thời giảm kích thước bộ đệm giải pháp được sử dụng trong các thử nghiệm trên macOS để tránh các lỗi không liên tục. Bản vá của Fantix King.gh-95280: Khắc phục sự cố với
test_ssltest_get_cipherstrên các hệ thống yêu cầu mật mã bảo mật chuyển tiếp hoàn hảo (PFS).gh-95212: Tạo trường hợp thử nghiệm đa xử lý
test_shared_memory_recreatean toàn song song.gh-95218: Di chuyển các bài kiểm tra cho importlib.resources vào test_importlib.resources.
gh-93963: Đã cập nhật các bài kiểm tra để sử dụng vị trí ưa thích cho ABC
importlib.resources.gh-94675: Thêm kiểm tra hồi quy về tốc độ chậm theo cấp số nhân của
rekhi sử dụng rjsmin.gh-91330: Đã thêm nhiều thử nghiệm hơn cho
dataclassesđể bao quát hành vi với các trường dựa trên bộ mô tả dữ liệu.gh-94208:
test_sslhiện đang kiểm tra phiên bản và giao thức TLS được hỗ trợ trong nhiều thử nghiệm hơn.gh-94315: Các bài kiểm tra hiện kiểm tra khả năng ghi đè của DAC thay vì dựa vào
os.geteuid().gh-54781: Đổi tên test_tk thành test_tkinter và đổi tên test_ttk_guionly thành test_ttk. Bản vá của Victor Stinner.
gh-93839: Chuyển
Lib/ctypes/test/sangLib/test/test_ctypes/. Bản vá của Victor Stinner.gh-93951: Trong test_bdb.StateTestCase.test_skip, tránh bao gồm các nhà nhập khẩu phụ trợ.
gh-93957: Cung cấp báo cáo lỗi tốt hơn từ các quy trình con trong test_venv.EnsurePipTest.test_with_pip.
gh-93884: Thêm các trường hợp thử nghiệm cho
PyNumber_ToBase()lấy số lượng lớn hoặc đối tượng không phải int làm tham số.gh-93852: test_asyncio, test_logging, test_socket và test_socketserver hiện tạo các miền AF_UNIX trong thư mục hiện tại để không còn bị lỗi với
OSError("AF_UNIX path too long")nếu thư mục tạm thời (biến môi trườngTMPDIR) quá dài. Bản vá của Victor Stinner.gh-93353: regrtest hiện kiểm tra xem thử nghiệm có rò rỉ các tệp hoặc thư mục tạm thời hay không nếu chạy với tùy chọn -jN. Bản vá của Victor Stinner.
gh-84461:
run_tests.pyhiện xử lý việc biên dịch chéo các vars env một cách chính xác và chuyểnHOSTRUNNERsang các bài kiểm tra hồi quy.gh-93616:
test_modulefinderhiện tạo thư mục tạm thời trongModuleFinderTest.setUp()thay vì phạm vi mô-đun.gh-93575: Khắc phục sự cố với test_unicode test_raiseMemError. Trường hợp thử nghiệm hiện sử dụng
test.support.calcobjsizeđể tính toán kích thước của cấu trúc PyUnicode.sys.getsizeof()có thể trả về kích thước khác khi chuỗi có bộ nhớ UTF-8.gh-90473: WASI không có tòa nhà
chmod(2).os.chmod()hiện là một chức năng giả trên WASI. Bỏ qua tất cả các bài kiểm tra phụ thuộc vào hoạt động củaos.chmod().gh-90473: Bỏ qua các bài kiểm tra trên WASI yêu cầu liên kết tượng trưng với đường dẫn tuyệt đối.
gh-57539: Tăng phạm vi kiểm tra lịch cho
calendar.LocaleTextCalendar.formatweekday().gh-90473: Bỏ qua các bài kiểm tra liên kết tượng trưng trên WASI. wasmtime sử dụng
openat2(2)với cờRESOLVE_BENEATH, điều này ngăn chặn các liên kết tượng trưng có đường dẫn tuyệt đối.gh-89858: Sửa
test_embedcho các bản dựng ngoài cây. Bản vá của Kumar Aditya.gh-92886: Sửa các bài kiểm tra không thành công khi chạy với tối ưu hóa (
-O) trongtest_imaplib.py.gh-92886: Sửa các bài kiểm tra không thành công khi chạy với tối ưu hóa (
-O) trongtest_zipimport.pygh-92886: Sửa các bài kiểm tra không thành công khi chạy với tối ưu hóa (
-O) trongtest_py_compile.pygh-92886: Sửa các bài kiểm tra không thành công khi chạy với tối ưu hóa (
-O) trongtest_sys_settrace.py.gh-92886: Sửa các bài kiểm tra không thành công khi chạy với tối ưu hóa (
-O) trong_test_multiprocessing.pygh-92670: Bỏ qua kiểm tra
test_shutil.TestCopy.test_copyfile_nonexistent_dirtrên AIX vì kiểm tra sử dụng dấu gạch chéo ở cuối để buộc hệ điều hành coi đường dẫn là một thư mục, nhưng trên AIX dấu gạch chéo ở cuối không có tác dụng và được coi là một tệp.gh-92514: Xóa
test.support.BasicTestRunnerkhông sử dụng. Bản vá của Jelle Zijlstra.bpo-47016: Tạo quy trình làm việc GitHub Actions để xác minh các công cụ thiết lập và pip đi kèm. Bản vá của Illia Volochii và Adam Turner.
xây dựng¶
gh-96761: Khắc phục quá trình xây dựng trình biên dịch clang cho _bootstrap_python nếu áp dụng tối ưu hóa LTO. Bản vá của Matthias Görgens và Donghee Na.
gh-96883: Bản dựng
wasm32-emscriptencho trình duyệt hiện bao gồmconcurrent.futureschoasynciovàunittest.mock.gh-85936: CPython hiện sử dụng tùy chọn ThinLTO làm chính sách mặc định nếu trình biên dịch Clang chấp nhận cờ. Bản vá của Donghee Na.
gh-96729: Đảm bảo rằng các bản phát hành Windows được xây dựng bằng
Tools\msi\buildrelease.batcó thể nâng cấp lên và từ các bản phát hành Python chính thức.gh-96269: Mục tiêu mô-đun được chia sẻ hiện phụ thuộc vào biến
MODULE_DEPSmới, bao gồmEXPORTSYMS. Điều này khắc phục sự cố về thứ tự xây dựng trên nền tảng AIX không được hỗ trợ.gh-84461: Nền tảng
wasm32-emscriptenkhông còn xây dựng mô-đunresource,getresuid(),getresgid()và các bộ cài đặt của chúng nữa. Các API còn sơ khai và không hoạt động.gh-95973: Thêm tùy chọn cấu hình
--with-dsymutilmới để liên kết thông tin gỡ lỗi trong macOS. Bản vá của Pablo Galindo.gh-90536: Sử dụng trình tối ưu hóa liên kết bài đăng BOLT để cải thiện hiệu suất, đặc biệt trên các ứng dụng từ trung bình đến lớn.
gh-93744: Xóa tùy chọn xây dựng
configure --with-cxx-main: nó không hoạt động trong nhiều năm. Xóa biếnMAINCCkhỏiconfigurevàMakefile. Bản vá của Victor Stinner.gh-94801: Khắc phục sự hồi quy trong tập lệnh
configurekhiến một số kiểm tra tiêu đề bỏ quaCPPFLAGStùy chỉnh. Hồi quy đã được giới thiệu trong gh-94802.gh-95145: các bản dựng wasm32-wasi không còn phụ thuộc vào sơ khai pthread của WASIX nữa. Python hiện có pthread API sơ khai của riêng nó.
gh-95174: Python hiện phát hiện hàm
dupbị thiếu trong WASI và xử lý một số hằng sốerrno,selectvàsocketbị thiếu.gh-95174: Python hiện bỏ qua các hàm và phương thức
socketbị thiếu trên WASI. WASI chỉ có thể tạo socket từ fd/accept hiện có và không có netdb.gh-95085: Nền tảng
wasm32-unknown-emscriptenvàwasm32-unknown-wasiđã được nâng cấp lên hỗ trợ nền tảng PEP 11 cấp 3.gh-94847: Đã khắc phục sự cố xây dựng mô-đun
_decimaltrên GCC khi biên dịch bằng LTO và pydebug. Bản dựng gỡ lỗi không còn bắt buộc nội tuyến các hàm.gh-94841: Khắc phục hồi quy hiệu suất có thể có của
PyObject_Free()được biên dịch với MSVC phiên bản 1932.gh-94801:
configurehiện sử dụng các cờ tùy chỉnh nhưZLIB_CFLAGSvàZLIB_LIBSkhi tìm kiếm tiêu đề và thư viện.gh-94773:
deepfreeze.pyhiện hỗ trợ đối tượng mã với các tập hợp đông lạnh chứa các loại không tương thích, không thể sắp xếp.gh-94682: Xây dựng và thử nghiệm với OpenSSL 1.1.1q
gh-90005: Sự phụ thuộc của mô-đun
readlinevàcurseshiện được phát hiện trong tập lệnhconfigurevớipkg-config. Chỉncurses/ncurseswđược phát hiện tự động. Thư việncursescũ không được cấu hình tự động. Giải pháp cho thư việntermcaphoặctinfobị thiếu đã bị xóa.gh-90005: Sửa lỗi xây dựng tiện ích mở rộng
_ctypeskhông cópkg-config.gh-90005: Các phần phụ thuộc của mô-đun
_dbmhiện được phát hiện bằng cách định cấu hình.gh-94404:
makesetuphiện đang khắc phục sự cố với sed trên macOS và sử dụng CFLAGS chính xác cho các tệp đối tượng kết thúc trong tiện ích mở rộng được chia sẻ. Mô-đun CFLAGS được sử dụng trước PY_STDMODULE_CFLAGS để tránh xung đột với các tiêu đề hệ thống.gh-93939: Các mô-đun mở rộng C hiện được
configurevàmakexây dựng thay vìdistutilsvàsetup.py.gh-93939: Các tập lệnh
2to3,idlevàpydochiện được tạo và cài đặt bởiMakefilethay vìsetup.py.gh-94280: Cập nhật tập lệnh tái tạo pegen trên Windows để tìm và sử dụng Python 3.9 trở lên. Trước đó, quá trình tái tạo pegen đã yêu cầu phiên bản 3.9 trở lên nhưng tập lệnh có thể đã sử dụng các phiên bản Python thấp hơn.
gh-93584: Địa chỉ tình trạng tương tranh trong
Makefilekhi cài đặt bản dựng PGO. Tất cả các mục tiêutestvàinstallhiện phụ thuộc vào mục tiêuall.gh-93491:
configurehiện phát hiện và báo cáo các cấp độ hỗ trợ PEP 11.gh-69093: Sửa quy tắc
Modules/Setup.stdlib.incho tiện ích mở rộng_sqlite3.gh-93207:
va_start()với hai tham số, nhưva_start(args, format),hiện được yêu cầu để xây dựng Python.va_start()không còn được gọi với một tham số duy nhất. Bản vá của Kumar Aditya.gh-93202: Python hiện luôn sử dụng định dạng printf
%zuvà%zdđể định dạng sốsize_thoặcPy_ssize_t. Xây dựng Python 3.12 yêu cầu trình biên dịch C11, vì vậy các định dạng printf này hiện luôn được hỗ trợ. Bản vá của Victor Stinner.gh-90473: Tắt pymalloc và tăng kích thước ngăn xếp trên
wasm32-wasi.bpo-34449: Bỏ công tắc biên dịch không hợp lệ
-fPICcho HP aCC trên HP-UX. Bản vá của Michael Osipov.
cửa sổ¶
gh-98360: Sửa các tiến trình con sinh ra
multiprocessingtrên Windows từ môi trường ảo để đảm bảo rằng các tiến trình con cũng sử dụngmultiprocessingđể sinh ra nhiều con hơn sẽ nhận ra rằng chúng đang ở trong môi trường ảo.gh-98414: Khắc phục sự cố xử lý trình khởi chạy
py.execủa tùy chọn-V:<company>/khi tùy chọn mặc định đã được đặt trong các biến môi trường hoặc tệp cấu hình.gh-97728: Khắc phục các sự cố có thể xảy ra do sử dụng các biến chưa được khởi tạo khi truyền các đối số không hợp lệ trong
os.system()trên Windows và trong các mô-đun dành riêng cho Windows (nhưwinreg).gh-90989: Cài đặt Trình quản lý cài đặt Python cho mỗi người dùng theo mặc định (trừ khi cài đặt tất cả người dùng đã tồn tại) và làm rõ một số văn bản trong trình cài đặt.
gh-97649: Thư mục
Toolskhông còn được cài đặt trên Windowsgh-96965: Cập nhật libffi lên 3.4.3
gh-96577: Khắc phục lỗi tràn bộ đệm có thể xảy ra trong
msilib.gh-96559: Sửa lỗi trình khởi chạy Windows không sử dụng cách giải thích tương thích của các thẻ mặc định được tìm thấy trong tệp cấu hình khi không có thẻ nào được chuyển tới lệnh.
gh-94781: Sửa
pcbuild.projđể xóa các phiên bản trước của tệp đầu ra trong thư mụcPython\deepfreezevàPython\frozen_modulestrên Windows. Bản vá của Charlie Zhao.gh-89545: Cập nhật mã
platformlấy phiên bản Windows để sử dụng các truy vấn Công cụ quản lý Windows (WMI) gốc nhằm xác định phiên bản, loại và kiến trúc hệ điều hành.gh-95733: Đặt một số yêu cầu nhất định của gói Windows Store thành tùy chọn để cho phép cài đặt trên các bản cập nhật Windows trước đó.
gh-95656: Kích hoạt
enable_load_extension()sqlite3API.gh-95587: Khắc phục một số sự cố trong đó trình cài đặt Windows phát hiện không chính xác một số tính năng nhất định của bản cài đặt hiện có khi nâng cấp.
gh-94399: Khôi phục hành vi của Trình quản lý cài đặt Python cho các dòng shebang
/usr/bin/env, giờ đây sẽ tìm kiếmPATHđể tìm tệp thực thi khớp với lệnh đã cho. Nếu không tìm thấy, quy trình tìm kiếm thông thường sẽ được sử dụng.gh-95445: Khắc phục lỗi xóa thư mục tài liệu HTML không thành công khi gỡ cài đặt bằng Windows msi.
gh-95359: Khắc phục sự cố xử lý Trình quản lý cài đặt Python của các lệnh
py.ini(nó đã mong đợi tiền tốpy_trên các phím không chính xác) và gặp sự cố khi đọc tệp cấu hình cho mỗi người dùng.gh-95285: Khắc phục việc xử lý Trình quản lý cài đặt Python các dòng lệnh trong đó nó chỉ được truyền một tên thực thi ngắn.
gh-90844: Cho phép môi trường ảo khởi chạy chính xác khi chúng có khoảng trắng trên đường dẫn.
gh-94772: Khắc phục việc xử lý không chính xác các dòng shebang trong trình khởi chạy py.exe
gh-94018:
zipfilehiện sẽ xóa dấu cách khỏi các thành phần đường dẫn khi giải nén tệp trên Windows.gh-93824: Tính năng kéo và thả tệp vào tệp Python trong Windows Explorer đã được bật cho Windows ARM64.
gh-43414:
os.get_terminal_size()hiện cố gắng đọc kích thước từ bất kỳ bộ điều khiển được cung cấp nào, thay vì chỉ hỗ trợ các bộ mô tả tệp 0, 1 và 2.gh-92817: Đảm bảo rằng
py.exesẽ thích môi trường ảo đang hoạt động hơn các thẻ mặc định được chỉ định bằng các biến môi trường hoặc thông qua tệppy.ini.gh-92984: Vô hiệu hóa rõ ràng liên kết gia tăng đối với các bản dựng không gỡ lỗi
gh-92841:
asynciokhông còn gửiRuntimeError: Event loop is closedkhi thoát trình thông dịch sau hoạt động ổ cắm không đồng bộ. Bản vá của Oleg Iarygin.bpo-46907: Cập nhật trình cài đặt Windows để sử dụng SQLite 3.38.4.
gh-91061: Chấp nhận os.PathLike làm đối số cho wonound.PlaySound
bpo-42658: Hỗ trợ so sánh đường dẫn không phân biệt chữ hoa chữ thường của Windows bằng cách sử dụng
LCMapStringExthay vìstr.lower()trongntpath.normcase(). ThêmLCMapStringExvào mô-đun_winapi.bpo-38704: Ngăn cài đặt trên các phiên bản Windows không được hỗ trợ.
macOS¶
gh-97897: macOS 13 SDK bao gồm hỗ trợ cho các lệnh gọi hệ thống
mkfifoatvàmknodat. Việc sử dụng tùy chọndir_fdvớios.mkfifo()hoặcos.mknod()có thể dẫn đến lỗi phân tách nếu cpython được xây dựng bằng macOS 13 SDK nhưng chạy trên phiên bản macOS cũ hơn. Ngăn chặn điều này bằng cách thêm hỗ trợ thời gian chạy để phát hiện các cuộc gọi hệ thống này ("liên kết yếu") như được thực hiện đối với các cuộc gọi hệ thống mới hơn khác trên macOS.
IDLE¶
gh-97527: Sửa lỗi trong bản sửa lỗi trước khiến IDLE không khởi động khi chạy với 3.10.8, 3.12.0a1 và ít nhất cài đặt Microsoft Python 3.10.2288.0 mà không có gói Lib/test. 3.11.0 không bao giờ bị ảnh hưởng.
gh-65802: Xử lý tài liệu của các tiện ích mở rộng trong hộp thoại Lưu dưới dạng.
gh-95191: Bao gồm lời nhắc khi lưu Shell (đầu vào và đầu ra tương tác).
gh-95511: Sửa lỗi sao chép menu ngữ cảnh Shell với lời nhắc sao chép một dòng bổ sung khi chọn toàn bộ dòng.
gh-95471: Trong menu Chỉnh sửa, di chuyển
Select Allvà thêm dấu phân cách mới.gh-95411: Cho phép sử dụng trình duyệt mô-đun của IDLE với các tệp .pyw.
gh-89610: Thêm .pyi làm tiện ích mở rộng được công nhận cho IDLE trên macOS. Điều này cho phép mở các tệp sơ khai bằng cách nhấp đúp vào chúng trong Finder.
Công cụ/Bản trình diễn¶
gh-68686: Xóa tập lệnh ptags và eptags.
gh-97681: Xóa thư mục
Tools/demo/chứa các tập lệnh demo cũ. Một bản sao có thể được tìm thấy trong old-demos project. Bản vá của Victor Stinner.gh-97669: Xóa các tập lệnh mẫu lỗi thời của thư mục
Tools/scripts/. Một bản sao có thể được tìm thấy trong old-demos project. Bản vá của Victor Stinner.gh-95853: Tập lệnh
wasm_build.pyhiện xây dựng sẵn các cổng Emscripten, kiểm tra các phiên bản EMSDK bị hỏng và cảnh báo về các biến env pkg-config.gh-95853: Công cụ mới
Tools/wasm/wasm_builder.pytự động hóa các bước định cấu hình, biên dịch và kiểm tra để xây dựng CPython trên nền tảng WebAssembly.gh-95731: Khắc phục việc xử lý chuỗi tài liệu mô-đun trong
Tools/i18n/pygettext.py.gh-93939: Thêm tập lệnh
Tools/scripts/check_modules.pyđể kiểm tra và xác thực các mô-đun mở rộng được chia sẻ và tích hợp sẵn. Tập lệnh cũng xử lýModules/Setupvà cuối cùng sẽ thay thếsetup.py.gh-94538: Sửa đầu ra của Phòng khám đối số thành đích tệp tùy chỉnh. Bản vá của Erlend E. Aasland.
gh-94430: Cho phép các tham số có tên
modulevàselfvới tên C tùy chỉnh trong Argument Clinic. Bản vá của Erlend E. Aaslandgh-86087: Tập lệnh
Tools/scripts/parseentities.pydùng để phân tích các thực thể HTML4 đã bị xóa.
C API¶
gh-98393: Hàm
PyUnicode_FSDecoder()không còn chấp nhận các đường dẫn giống byte, như loạibytearrayvàmemoryview: chỉ loạibyteschính xác mới được chấp nhận cho chuỗi byte. Bản vá của Victor Stinner.gh-91051: Thêm
PyType_Watch()và các API liên quan để cho phép gọi lại trênPyType_Modified().gh-95756: Tạo và lưu vào bộ nhớ đệm các thuộc tính
co_để có hiệu suất tốt hơn cho trình lấy mã.gh-96512: Cấu hình cho integer string conversion length limitation hiện có trong cấu trúc PyConfig C API.
gh-95589: Các lớp tiện ích mở rộng đặt
tp_dictoffsetvàtp_weaklistoffsetmất hỗ trợ cho nhiều kế thừa nhưng hiện an toàn. Các lớp mở rộng nên sử dụngPy_TPFLAGS_MANAGED_DICTvàPy_TPFLAGS_MANAGED_WEAKREFthay thế.gh-95781: Một ký tự định dạng không được nhận dạng trong
PyUnicode_FromFormat()vàPyUnicode_FromFormatV()hiện đặtSystemError. Trong các phiên bản trước, nó khiến tất cả phần còn lại của chuỗi định dạng được sao chép nguyên trạng vào chuỗi kết quả và mọi đối số bổ sung sẽ bị loại bỏ.gh-92678: Khôi phục hành vi 3.10 để kế thừa nhiều lớp mở rộng C lưu trữ từ điển của chúng ở cuối cấu trúc.
gh-92678: Hỗ trợ tiện ích mở rộng C sử dụng từ điển được quản lý bằng cách đặt cờ
Py_TPFLAGS_MANAGED_DICT.gh-93274: API để triển khai vectorcall (
Py_TPFLAGS_HAVE_VECTORCALL,PyVectorcall_NARGS()vàPyVectorcall_Call()) đã được thêm vào API giới hạn và ABI ổn định.gh-95504: Sửa vị trí ký hiệu khi chỉ định chiều rộng hoặc độ chính xác trong
PyUnicode_FromFormat()vàPyUnicode_FromFormatV(). Bản vá của Philip Georgi.gh-93012: Cờ
Py_TPFLAGS_HAVE_VECTORCALLhiện bị xóa khỏi một lớp khi phương thức__call__()của lớp được gán lại. Điều này làm cho vectorcall an toàn khi sử dụng với các loại có thể thay đổi (tức là các loại heap không có cờimmutable). Các loại có thể thay đổi không ghi đètp_callhiện kế thừa cờPy_TPFLAGS_HAVE_VECTORCALL.gh-95388: Việc tạo
immutable typesvới các cơ sở có thể thay đổi không được dùng nữa và theo kế hoạch sẽ bị vô hiệu hóa trong Python 3.14.gh-92678: Thêm các hàm C-API không ổn định
_PyObject_VisitManagedDictvà_PyObject_ClearManagedDictđể cho phép các tiện ích mở rộng C cho phép VM quản lý từ điển đối tượng của chúng.gh-94936: Đã thêm
PyCode_GetVarnames(),PyCode_GetCellvars()vàPyCode_GetFreevars()để truy cậpco_varnames,co_cellvarsvàco_freevarstương ứng thông qua C API.gh-94930: Sửa lỗi
SystemErrortăng lên khiPyArg_ParseTupleAndKeywords()được sử dụng với#trong(...)nhưng không xác địnhPY_SSIZE_T_CLEAN.gh-94731: Python lại sử dụng các kiểu ép kiểu C cho hầu hết các thao tác truyền khi được biên dịch bằng C++. Điều này có thể kích hoạt các cảnh báo của trình biên dịch, nếu chúng được bật bằng ví dụ: tùy chọn
-Wold-style-casthoặc-Wzero-as-null-pointer-constantchog++.gh-93937: Các chức năng và loại khung sau hiện có sẵn trực tiếp với
#include <Python.h>, không cần thêm#include <frameobject.h>nữa:Bản vá của Victor Stinner.
gh-91321: Khắc phục khả năng tương thích của Python C API với C++ cũ hơn C++11. Bản vá của Victor Stinner.
gh-91731: Tránh xác định
static_assertkhi biên dịch bằng C++ 11, trong đó đây là từ khóa và việc xác định lại nó có thể dẫn đến hành vi không xác định. Bản vá của Pablo Galindogh-89546:
PyType_FromMetaclass()(và các hàmPyType_From*khác) hiện kiểm tra xem các offset vàtp_basicsizecủa lớp cơ sở có phù hợp vớitp_basicsizecủa lớp mới không.gh-93503: Thêm hai hàm công khai mới vào C-API,
PyEval_SetProfileAllThreads()vàPyEval_SetTraceAllThreads()công khai, cho phép thiết lập các chức năng theo dõi và lập hồ sơ trong tất cả các luồng đang chạy ngoài luồng đang gọi. Ngoài ra, hai hàm tương tự với mô-đunthreading(threading.setprofile_all_threads()vàthreading.settrace_all_threads()) cho phép thực hiện điều tương tự từ Python. Bản vá của Pablo Galindogh-93442: Thêm quá tải C++ cho _Py_CAST_impl() để xử lý 0/NULL. Điều này sẽ cho phép các tiện ích mở rộng C++ chuyển 0 hoặc NULL sang macro bằng cách sử dụng _Py_CAST() để tiếp tục biên dịch.
gh-93466: ID vị trí trong PyType_Spec có thể không được lặp lại. Tài liệu đã được cập nhật để đề cập đến điều này. Đối với một số trường hợp vị trí lặp lại, PyType_FromSpec và các hàm liên quan giờ đây sẽ đưa ra một ngoại lệ.
gh-92898: Khắc phục cảnh báo của trình biên dịch C++ khi truyền đối số hàm tới
PyObject*. Bản vá của Serge Guelton.gh-93103: Không dùng các biến cấu hình chung, như
Py_IgnoreEnvironmentFlag, trong tài liệu: thay vào đó làPy_InitializeFromConfig()API. Bản vá của Victor Stinner.gh-77782: Không dùng biến cấu hình chung như
Py_IgnoreEnvironmentFlag: thay vào đó làPy_InitializeFromConfig()API. Bản vá của Victor Stinner.gh-92913: Đảm bảo các thay đổi đối với
PyConfig.module_search_pathsbị bỏ qua trừ khiPyConfig.module_search_paths_setđược đặtgh-92781: Tránh trộn lẫn các khai báo và mã trong C API để khắc phục cảnh báo của trình biên dịch: "ISO C90 cấm khai báo và mã hỗn hợp" [-Werror=declaration-after-statement]. Bản vá của Victor Stinner.
gh-92651: Xóa tệp tiêu đề
token.h. Chưa bao giờ có bất kỳ tokenizer công khai nào C API. Tệp tiêu đềtoken.hchỉ được thiết kế để sử dụng cho nội bộ Python. Bản vá của Victor Stinner.gh-92536: Xóa API Unicode cũ dựa trên
Py_UNICODE*.gh-85858: Xóa chức năng
PyUnicode_InternImmortal()và macroSSTATE_INTERNED_IMMORTAL. Bản vá của Victor Stinner.gh-92193: Thêm chức năng mới
PyFunction_SetVectorcall()vào C API để đặt trường vectorcall của mộtPyFunctionObjectnhất định.Cảnh báo: các tiện ích mở rộng sử dụng API này phải duy trì hoạt động của chức năng không bị thay đổi!
gh-59121: Đã khắc phục một xác nhận ngăn
PyRun_InteractiveOnecung cấp dấu vết khi phân tích cú pháp từ FD được cung cấp.bpo-45383:
PyType_FromSpec()API bây giờ sẽ tìm và sử dụng siêu dữ liệu dựa trên các cơ sở được cung cấp. Một lỗi sẽ xuất hiện nếu có xung đột siêu dữ liệu.
Python 3.11.0 beta 1¶
Release date: 2022-05-06
Bảo mật¶
gh-57684: Thêm tùy chọn dòng lệnh
-Pvà biến môi trườngPYTHONSAFEPATHđể không thêm đường dẫn có thể không an toàn tớisys.path. Bản vá của Victor Stinner.
Cốt lõi và nội dung¶
gh-89519: Chuỗi mô tả phương thức lớp (được giới thiệu trong bpo-19072) không được dùng nữa. Nó không còn có thể được sử dụng để bao bọc các bộ mô tả khác như thuộc tính(). Thiết kế cốt lõi của tính năng này có sai sót và nó gây ra một số vấn đề về sau.
gh-92345:
pymain_run_python()hiện nhậpreadlinevàrlcompletertrước khi sys.path được mở rộng để bao gồm thư mục làm việc hiện tại của trình thông dịch tương tác. Thông dịch viên không tương tác không bị ảnh hưởng.bpo-43857: Cải thiện thông báo
AttributeErrorkhi xóa thuộc tính bị thiếu. Bản vá của Géry Ogam.gh-92245: Đảm bảo rằng PEP 523 được tôn trọng trong mọi trường hợp. Trong 3.11a7, tính chuyên môn hóa có thể đã ngăn chặn các lệnh gọi Python-to-Python tôn trọng PEP 523.
gh-92203: Thêm tham số chỉ có từ khóa đóng vào
exec(). Nó chỉ có thể được chỉ định khi thực thi một đối tượng mã sử dụng các biến tự do. Khi được chỉ định, nó phải là một bộ, với chính xác số lượng biến ô được đối tượng mã tham chiếu. bao đóng có giá trị mặc định làNonevà nó phải làNonenếu đối tượng mã không tham chiếu đến bất kỳ biến tự do nào.gh-91173: Vô hiệu hóa các mô-đun bị đóng băng trong các bản dựng gỡ lỗi. Bản vá của Kumar Aditya.
gh-92114: Cải thiện thông báo lỗi khi đăng ký một loại có
__class_getitem__được đặt thànhNone.gh-92112: Khắc phục sự cố do
mro()tùy chỉnh xấu gây ra trên siêu dữ liệu.gh-92063: Lệnh
PRECALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDShiện đảm bảo các phương thức chỉ được gọi trên các đối tượng đúng loại.gh-92031: Hủy tối ưu hóa các đối tượng mã được phân bổ tĩnh trong
Py_FINALIZE()để các lệnh gọi_PyCode_Quickentrong tương lai luôn bắt đầu bằng mã chưa được xử lý nhanh.gh-92036: Khắc phục sự cố trong trình thông dịch phụ liên quan đến trình thu gom rác. Khi một trình thông dịch phụ bị xóa, hãy bỏ theo dõi tất cả các đối tượng được theo dõi bởi GC của nó. Để ngăn chặn sự cố trong các hàm giải phóng mong muốn các đối tượng được theo dõi bởi GC, hãy cố ý rò rỉ một tham chiếu mạnh đến các đối tượng này để chúng không bao giờ bị xóa và các hàm giải phóng của chúng không được gọi. Bản vá của Victor Stinner.
gh-92032: Trình thông dịch hiện có thể tự động hoàn thành các từ khóa mềm, kể từ
match,casevà_(mẫu ký tự đại diện) từ PEP 634.gh-87999: Cảnh báo do trình phân tích cú pháp Python đưa ra cho một chữ số ngay sau từ khóa đã được thay đổi từ cảnh báo không dùng nữa thành cảnh báo cú pháp.
gh-91869: Khắc phục sự cố trong đó các opcode chuyên dụng có đối số mở rộng có thể tạo ra kết quả theo dõi không chính xác hoặc dẫn đến lỗi xác nhận.
gh-91603: Tăng tốc độ khởi tạo
types.UnionType. Dựa trên bản vá được cung cấp bởi Yurii Karabas.gh-89373: Nếu Python được xây dựng ở chế độ gỡ lỗi, Python hiện đảm bảo rằng các hàm giải mã không thay đổi ngoại lệ hiện tại. Bản vá của Victor Stinner.
gh-91632: Khắc phục rò rỉ bộ nhớ nhỏ khi thoát: giải phóng bộ nhớ loại
generic_alias_iterator. Bản vá của Donghee Na.gh-81548: Thoát bát phân có giá trị lớn hơn
0o377hiện tạo raDeprecationWarning. Trong phiên bản Python tương lai, chúng sẽ làSyntaxWarningvà cuối cùng làSyntaxError.bpo-43950: Sử dụng một bảng nhỏ gọn duy nhất để bắt đầu, kết thúc dòng và bù trừ cột. Giảm mức tiêu thụ bộ nhớ cho thông tin vị trí xuống một nửa
gh-91102: Sử dụng Phòng khám đối số cho
EncodingMap. Bản vá của Oleg Iarygin.gh-91636: Đã khắc phục sự cố trong trường hợp thu thập rác, trong đó hàm
PyFunction_Type.tp_clearcó thể khiến đối tượng hàm python ở trạng thái không nhất quán.gh-91603: Tăng tốc độ kiểm tra
isinstance()vàissubclass()chotypes.UnionType. Bản vá của Yurii Karabas.gh-91625: Đã sửa lỗi trong đó các opcode thích ứng bỏ qua mọi
EXTENDED_ARGtrước đó do lỗi chuyên môn hóa.gh-78607: Bản dựng đặc biệt LLTRACE hiện tìm kiếm tên
__lltrace__được xác định trong mô-đun toàn cục, thay vì tên__ltrace__, vốn được giới thiệu là do lỗi đánh máy.gh-91576: Tăng tốc độ lặp của chuỗi ascii lên 50%. Bản vá của Kumar Aditya.
gh-89279: Cải thiện hiệu suất trình thông dịch trên Windows bằng cách nội tuyến một số macro cụ thể.
gh-91502: Thêm chức năng
_PyFrame_IsEntryFrame()API mới để kiểm tra xemPyFrameObjectcó phải là khung nhập hay không. Bản vá của Pablo Galindo.gh-91266: Tái cấu trúc các phương thức dải
bytearraystrip,lstripvàrstripđể sử dụng cách triển khai chung.gh-91479: Đã thay thế trường
__note__củaBaseException(được thêm trong phiên bản 3.11 cũ hơn) bằng thiết kế cuối cùng của PEP 678. Cụ thể,BaseExceptioncó phương thứcadd_note()và trường__notes__của nó được tạo khi cần thiết.gh-46055: Tăng tốc độ dịch chuyển sang phải của số nguyên âm, bằng cách loại bỏ việc tạo tạm thời không cần thiết. Bản vá gốc của Xinhang Xu, được Mark Dickinson làm lại.
gh-91462: Làm cho đầu ra tính năng theo dõi cấp thấp (lltrace) của trình thông dịch trở nên dễ đọc hơn bằng cách hiển thị tên opcode (thay vì chỉ số) và bằng cách hiển thị nội dung ngăn xếp trước mỗi opcode.
gh-89455: Đã sửa lỗi giá trị bool chưa được khởi tạo trong đường dẫn mã in truy ngược được giới thiệu bởi nhóm ngoại lệ bpo-45292 ban đầu.
gh-91421: Khắc phục lỗi tràn số nguyên tiềm năng trong _Py_DecodeUTF8Ex.
gh-91428: Thêm
static const char *const _PyOpcode_OpName[256] = {...};vàoopcode.hcho các bản dựng gỡ lỗi nhằm hỗ trợ gỡ lỗi trình thông dịch Python. Giờ đây, thuận tiện hơn khi làm cho nhiều hình thức đầu ra gỡ lỗi khác nhau dễ đọc hơn với con người bằng cách bao gồm tên opcode thay vì chỉ các chữ số thập phân tương ứng.bpo-47120: Tạo
POP_JUMP_IF_TRUE,POP_JUMP_IF_FALSE,POP_JUMP_IF_NONEvàPOP_JUMP_IF_NOT_NONEảo, ánh xạ tới các mã nhảy tương đối mới.bpo-45317: Thêm tài liệu nội bộ giải thích thiết kế của ngăn xếp khung mới (cho 3.11).
Thư viện¶
bpo-47197: ctypes được sử dụng để xử lý sai các kiểu trả về
void, do đó, chẳng hạn, một hàm được khai báo nhưctypes.CFUNCTYPE(None, ctypes.c_int)sẽ được gọi với chữ kýint f(int)thay vìvoid f(int). Mục tiêu Wasm yêu cầu phải gọi con trỏ hàm với chữ ký chính xác nên điều này dẫn đến sự cố. Vấn đề hiện đã được khắc phục.
Cốt lõi và nội dung¶
bpo-47120: Tạo các opcode
JUMP_IF_TRUE_OR_POPvàJUMP_IF_FALSE_OR_POPtương đối thay vì tuyệt đối.bpo-47177: Thay thế thành viên
f_lasticủa cấu trúc_PyInterpreterFramebên trong bằng con trỏprev_instr, giúp giảm chi phí trong vòng lặp trình thông dịch chính. Thuộc tínhf_lasticủa các đối tượng khung lớp Python được giữ nguyên để tương thích ngược.bpo-46961: Các phép toán mod/phần dư số nguyên, bao gồm dạng ba đối số của
pow(), giờ đây liên tục trả về số nguyên từ bộ nhớ đệm số nguyên nhỏ toàn cục khi có thể.bpo-46962: Các lớp và hàm khai báo chuỗi tài liệu của chúng một cách vô điều kiện bỏ qua cờ biên dịch
--without-doc-stringskhông còn làm như vậy nữa.Các lớp bị ảnh hưởng là
ctypes.UnionType,pickle.PickleBuffer,testcapi.RecursingInfinitelyErrorvàtypes.GenericAlias.Các chức năng bị ảnh hưởng là 24 phương thức trong
ctypes.Bản vá của Oleg Iarygin.
bpo-46942: Sử dụng Phòng khám đối số cho hàm tạo
types.MethodType. Bản vá của Oleg Iarygin.bpo-46764: Khắc phục sự cố gói các phương thức bị ràng buộc bằng @classmethod
bpo-43464: Tối ưu hóa
set.intersection()cho các đối số không được đặt.bpo-46721: Tối ưu hóa
set.issuperset()cho đối số không được đặt.bpo-46509: Thêm các phiên bản chuyên biệt về loại của
Py_DECREF()và sử dụng chúng chofloat,int,str,boolvàNoneđể tránh truy đuổi con trỏ trong thời gian chạy trong đó các loại được biết đến tại thời điểm biên dịch C.
xây dựng¶
bpo-46045: Không sử dụng các ngữ nghĩa POSIX trên NetBSD
Cốt lõi và nội dung¶
bpo-36819: Khắc phục sự cố trong bộ mã hóa tích hợp với trình xử lý lỗi trả về vị trí nhỏ hơn hoặc bằng vị trí bắt đầu của các ký tự không thể mã hóa.
bpo-34093:
marshal.dumps()sử dụngFLAG_REFcho tất cả các chuỗi được thực hiện. Điều này làm cho đầu ra mang tính quyết định hơn và giúp xây dựng có thể tái tạo.bpo-26579: Đã thêm
object.__getstate__cung cấp cách triển khai mặc định của phương thức__getstate__().Sao chép và chọn lọc các phiên bản của các lớp con của các kiểu dựng sẵn bytearray, set, Frozenset, Collections.OrderedDict, Collection.deque, Yếuref.WeakSet và datetime.tzinfo giờ đây sao chép và triển khai các thuộc tính cá thể Pickles dưới dạng vị trí.
Thư viện¶
gh-87901: Thêm tham số encoding vào
os.popen().gh-90997: Khắc phục sự cố trong đó các tiện ích
discó thể hiểu các mục nhập bộ đệm nội tuyến được điền là hướng dẫn hợp lệ.gh-92332: Không dùng
typing.Text(hiện chưa có kế hoạch loại bỏ lớp này). Bản vá của Alex Waygood.gh-78157: Không còn dùng các lớp lồng nhau trong định nghĩa enum để trở thành thành viên -- trong 3.13 chúng sẽ là các lớp bình thường; thêm chức năng
membervànonmemberđể cho phép kiểm soát kết quả ngay bây giờ.gh-92356: Đã sửa lỗi hồi quy hiệu suất trong lệnh gọi hàm ctypes.
gh-90997: Hiển thị các giá trị được đặt tên thực tế được lưu trữ trong bộ nhớ đệm nội tuyến khi
show_caches=Trueđược chuyển tới các tiện íchdis.gh-92301: Ưu tiên
close_range()lặp lại các giao dịch để đóng bộ mô tả tệp trongsubprocessđể có hiệu suất tốt hơn.gh-67248: Sắp xếp các chủ đề linh tinh trong Cmd.do_help()
gh-92210: Chuyển
socket.__init__đến Phòng khám tranh luận. Bản vá của Cinder.gh-80010: Thêm hỗ trợ phân tích cú pháp ISO 8601 tổng quát thành
datetime.datetime.fromisoformat(),datetime.date.fromisoformat()vàdatetime.time.fromisoformat(). Bản vá của Paul Ganssle.gh-92118: Khắc phục hồi quy 3.11 trong
contextmanager(), khiến nó lan truyền các ngoại lệ với dấu vết ngược không chính xác.gh-90887: Thêm các hằng số
COPYFILE_STAT,COPYFILE_ACLvàCOPYFILE_XATTRchoos.fcopyfile()có sẵn trong macOS.gh-91215: Đối với
@~dataclasses.dataclass, thêm weakref_slot. Tham số mới mặc định làFalse. Nếu đúng và nếuslots=True, hãy thêm một vị trí có tên"__weakref__", điều này sẽ cho phép các phiên bản được giới thiệu yếu. Đóng góp bởi Eric V. Smithgh-85984: Hàm mới os.login_tty() cho Unix.
gh-92128: Thêm
__class_getitem__()vàologging.LoggerAdaptervàlogging.StreamHandler, cho phép chúng được tham số hóa khi chạy. Bản vá của Alex Waygood.gh-92049: Cấm các hằng số ngâm chua
re._constants.SUCCESS, v.v. Trước đây, việc tẩy chua không thất bại, nhưng kết quả là không thể giải quyết được.gh-92062:
inspect.Parameterhiện tăngValueErrornếunamelà một từ khóa, ngoài việc kiểm tra hiện tại xem đó có phải là mã định danh hay không.gh-87390: Thêm thuộc tính
__unpacked__vàotypes.GenericAlias. Bản vá của Jelle Zijlstra.gh-88089: Thêm hỗ trợ cho
typing.NamedTuplechung.gh-91996: http.HTTPMethod enum mới để thể hiện tất cả các phương thức yêu cầu HTTP có sẵn một cách thuận tiện
gh-91984: Chuỗi kiểm tra đã sửa đổi trong test_argparse.py để không chứa dấu cách ở cuối dòng.
gh-91952: Thêm hỗ trợ
encoding="locale"choTextIOWrapper.reconfigure().gh-91954: Thêm đối số encoding và errors vào
subprocess.getoutput()vàsubprocess.getstatusoutput().bpo-47029: Luôn đóng đầu đọc của ống được sử dụng bởi
multiprocessing.Queueafter lần ghi cuối cùng của dữ liệu được đệm vào đầu ghi của ống để tránhBrokenPipeErrorkhi thu gom rác và khi gọimultiprocessing.Queue.close(). Bản vá của Géry Ogam.gh-91928: Thêm bí danh
datetime.UTCchodatetime.timezone.utc.Bản vá của Kabir Kwatra.
gh-68966: Mô-đun
mailcaphiện không được dùng nữa và sẽ bị xóa trong Python 3.13. Xem PEP 594 để biết lý do và mô-đunmimetypesđể biết giải pháp thay thế. Bản vá của Victor Stinner.gh-91401: Cung cấp cách vô hiệu hóa việc sử dụng
vfork()củasubprocesstrong trường hợp cần thiết và ghi lại cơ chế hiện có choposix_spawn().gh-64783: Sửa giá trị
signal.NSIGtrên FreeBSD để chấp nhận các số tín hiệu lớn hơn 32, nhưsignal.SIGRTMINvàsignal.SIGRTMAX. Bản vá của Victor Stinner.gh-91910: Thêm tiền tố f bị thiếu vào chuỗi f trong thông báo lỗi từ mô-đun
multiprocessingvàasyncio.gh-91860: Thêm
typing.dataclass_transform(), triển khai PEP 681. Bản vá của Jelle Zijlstra.gh-91832: Thêm thuộc tính
requiredvào đầu ra reprargparse.Action.gh-91827: Trong mô-đun
tkinter, thêm phương thứcinfo_patchlevel()trả về phiên bản chính xác của thư viện Tcl dưới dạng một bộ dữ liệu có tên tương tự nhưsys.version_info.gh-84461: Thêm
--enable-wasm-pthreadsđể bật hỗ trợ pthread cho các bản dựng WASM.Emscripten/nodekhông còn bật tính năng phân luồng theo mặc định nữa. Bao gồm các hệ thống tập tin bổ sung.gh-91821: Sửa lỗi kiểm tra
test_from_tuplekhông ổn định trongtest_decimal.py.gh-91217: Không dùng mô-đun xdrlib nữa.
gh-91217: Không dùng mô-đun uu nữa.
gh-91760: Các quy tắc nghiêm ngặt hơn sẽ được áp dụng cho tham chiếu nhóm số và tên nhóm trong biểu thức chính quy. Hiện tại, cảnh báo không dùng nữa được đưa ra đối với các tham chiếu nhóm và tên nhóm. Đây sẽ là lỗi trong các phiên bản Python trong tương lai.
gh-84461: Thêm bộ dữ liệu có tên
sys._emscripten_infotạm thời với thông tin về thời gian xây dựng và thời gian chạy về nền tảng Emscripten.gh-90623:
signal.raise_signal()vàos.kill()hiện kiểm tra ngay các tín hiệu đang chờ xử lý. Bản vá của Victor Stinner.gh-91734: Sửa lỗi hỗ trợ âm thanh OSS trên Solaris.
gh-90633: Bao gồm giá trị được chuyển vào ngoại lệ do
typing.assert_never()đưa ra. Bản vá của Jelle Zijlstra.gh-91700: Việc tổng hợp biểu thức chính quy chứa biểu thức điều kiện
(?(group)...)hiện tăngre.errorthích hợp nếu số nhóm đề cập đến nhóm không được xác định. Trước đây đã xảy ra lỗi RuntimeError nội bộ.gh-91231: Thêm tham số từ khóa shutdown_timeout tùy chọn vào hàm tạo
multiprocessing.BaseManager. Hủy quá trình nếu chấm dứt() mất nhiều thời gian hơn thời gian chờ. Bản vá của Victor Stinner.gh-91621: Sửa
typing.get_type_hints()chocollections.abc.Callable. Bản vá của Shantanu Jain.gh-90568: Phân tích cú pháp
\Nthoát khỏi Chuỗi ký tự được đặt tên Unicode trongregular expressionhiện tăngre.errorthay vìTypeError.gh-91670: Xóa biến cấu hình
SOkhông được dùng nữa trongsysconfig.gh-91217: Không dùng mô-đun telnetlib nữa.
gh-91217: Không dùng mô-đun sunau nữa.
gh-91217: Không dùng mô-đun spwd nữa.
gh-91217: Ngừng sử dụng mô-đun sndhdr cũng như chức năng cần thiết nội tuyến cho
email.mime.MIMEAudio.gh-91616: mô-đun
re, sửa lỗifullmatch()không khớp khi sử dụng Nhóm nguyên tử hoặc Bộ định lượng sở hữu.gh-91217: Không dùng mô-đun 'ống'.
gh-91217: Không dùng mô-đun ossaudiodev nữa.
bpo-47256: mô-đun
re, giới hạn nhóm thu thập tối đa ở mức 1.073.741.823 trong bản dựng 64-bit, điều này làm tăng độ sâu của quá trình quay lui.gh-91217: Không dùng mô-đun nis nữa.
gh-91595: Sửa lỗi so sánh ký tự và số nguyên bên trong
Tools.gdb.libpython.write_repr(). Bản vá của Yu Liu.gh-74166: Thêm tùy chọn để đưa ra tất cả các lỗi từ
create_connection()trongExceptionGroupkhi không tạo được kết nối. Mặc định vẫn chỉ nêu ra lỗi cuối cùng xảy ra khi thử nhiều địa chỉ.gh-91487: Tối ưu hóa tốc độ asyncio UDP, nhanh hơn 100 lần khi truyền file dung lượng lớn.
gh-91575: Cập nhật tính năng khớp không phân biệt chữ hoa chữ thường trong mô-đun
relên phiên bản Unicode mới nhất.gh-90622: Trong
concurrent.futures.process.ProcessPoolExecutorkhông cho phép phương thức khởi động đa xử lý "ngã ba" khi tính năngmax_tasks_per_childmới được sử dụng làm kết hợp các luồng+ngã ba có thể treo các tiến trình con. Mặc định sử dụng phương pháp bắt đầu "sinh sản" an toàn trong trường hợp đó nếu không cung cấpmp_context.gh-89022: Trong
sqlite3, mã kết quảSQLITE_MISUSEhiện được ánh xạ tớiInterfaceErrorthay vìProgrammingError. Ngoài ra, các ngoại lệ chính xác hơn sẽ được đưa ra khi các tham số liên kết không thành công. Bản vá của Erlend E. Aasland.gh-91526: Dừng gọi
os.device_encoding(file.fileno())bằngTextIOWrapper. Nó phức tạp, chưa bao giờ được ghi lại và không hoạt động trong hầu hết các trường hợp. (Bản vá của Inada Naoki.)gh-88116: Thay đổi các chức năng liên quan đến khung trong mô-đun
inspectđể trả về một đối tượng thông thường (tương thích ngược với giao diện giống bộ dữ liệu cũ) bao gồm thông tin vị trí PEP 657 mở rộng (số dòng cuối, cột và cột cuối). Các chức năng bị ảnh hưởng là:inspect.getframeinfo(),inspect.getouterframes(),inspect.getinnerframes(),inspect.stack()vàinspect.trace(). Bản vá của Pablo Galindo.gh-69093: Thêm hỗ trợ lập chỉ mục và cắt lát cho
sqlite3.Blob. Bản vá của Aviv Palivoda và Erlend E. Aasland.gh-69093: Thêm hỗ trợ context manager cho
sqlite3.Blob. Bản vá của Aviv Palivoda và Erlend E. Aasland.gh-91217: Không dùng nntplib.
gh-91217: Không dùng msilib nữa.
gh-91404: Cải thiện hiệu suất của việc so khớp
rebằng cách sử dụng gotos được tính toán (hoặc "mã luồng") trên các nền tảng được hỗ trợ và loại bỏ các hướng dẫn con trỏ đắt tiền.gh-91217: Không dùng mô-đun imghdr nữa.
gh-91217: Không dùng mô-đun mật mã nữa.
gh-91276: Tạo khoảng trống cho các opcode dài hơn ở đầu ra
dis.bpo-47000: Làm cho
TextIOWrappersử dụng mã hóa miền địa phương khiencoding="locale"được chỉ định ngay cả ở chế độ UTF-8.gh-91230:
warnings.catch_warnings()hiện chấp nhận các đối số chowarnings.simplefilter(), cung cấp một cách ngắn gọn hơn để bỏ qua các cảnh báo cục bộ hoặc chuyển chúng thành lỗi.gh-91217: Không dùng mô-đun chunk nữa.
gh-91498: Thêm tùy chọn
TCP_CONNECTION_INFO(có trên macOS) vàosocket.bpo-47260: Khắc phục
os.closerange()có khả năng không hoạt động trong hộp cát seccomp của Linux.bpo-47087: Triển khai
typing.Requiredvàtyping.NotRequired(PEP 655). Bản vá của David Foster và Jelle Zijlstra.bpo-47061: Không dùng cgi và cgitb.
bpo-47061: Không dùng nữa audioop.
bpo-47000: Thêm
locale.getencoding()để nhận mã hóa ngôn ngữ hiện tại. Nó tương tự nhưlocale.getpreferredencoding(False)nhưng bỏ qua Python UTF-8 Mode.bpo-42012: Thêm
wsgiref.types, chứa các loại dành riêng cho WSGI để kiểm tra loại tĩnh.bpo-47227: Loại bỏ chuỗi biểu thức để có thêm lỗi phân tích cú pháp
re.bpo-47211: Xóa chức năng
re.template()không có giấy tờ và không bao giờ hoạt động và gắn cờre.TEMPLATE. Điều này sau đó đã được hoàn nguyên trong 3.11.0b2 và thay vào đó không được dùng nữa.bpo-47135:
decimal.localcontext()hiện chấp nhận thuộc tính ngữ cảnh thông qua đối số từ khóabpo-43323: Sửa lỗi trong mô-đun
emailnếu bản thân bộ ký tự chứa các ký tự không thể giải mã/không thể mã hóa.bpo-46841: Tháo gỡ mã nhanh.
bpo-46681: Chuyển tiếp mức nén gzip.compress() tới zlib.
bpo-45100: Thêm
typing.get_overloads()vàtyping.clear_overloads(). Bản vá của Jelle Zijlstra.bpo-44807:
typing.Protocolkhông còn âm thầm thay thế các phương thức__init__()được xác định trên các lớp con nữa. Bản vá của Adrian Garcia Badaracco.bpo-46787: Khắc phục rò rỉ bộ nhớ ngoại lệ
concurrent.futures.ProcessPoolExecutorbpo-46720: Thêm hỗ trợ cho các đối tượng giống đường dẫn vào
multiprocessing.set_executable()để Windows ngang hàng với các hệ thống giống Unix. Bản vá của Géry Ogam.bpo-46053: Sửa lỗi hỗ trợ âm thanh OSS trên NetBSD.
bpo-45639:
image/avifvàimage/webpđã được thêm vàomimetypes.bpo-46285: Thêm tùy chọn dòng lệnh
-p/--protocolvào mô-đunhttp.serverđể chỉ định phiên bản HTTP mà máy chủ tuân thủ (các máy chủ tuân thủ HTTP/1.1 hiện có thể chạy từ giao diện dòng lệnh của mô-đunhttp.server). Bản vá của Géry Ogam.bpo-44791: Chấp nhận dấu ba chấm làm đối số cuối cùng của
typing.Concatenate.bpo-46547: Loại bỏ các biến rò rỉ vào không gian tên lớp
pydoc.Helper.bpo-46415: Sửa ipaddress.ip_{address,interface,network} tăng TypeError thay vì ValueError nếu được cung cấp bộ dữ liệu không hợp lệ làm tham số địa chỉ.
bpo-46075:
CookieJarvớiDefaultCookiePolicyhiện có thể xử lý cookie từ localhost với domain=localhost được chỉ định rõ ràng trong tiêu đề Set-Cookie.bpo-45995: Thêm tùy chọn "z" vào đặc tả định dạng chuỗi nhằm ép các giá trị dấu phẩy động số 0 âm thành số 0 dương sau khi làm tròn đến độ chính xác của định dạng. Đóng góp bởi John Belmonte.
bpo-26175: Triển khai đầy đủ giao diện
io.BufferedIOBasehoặcio.TextIOBasecho các đối tượngtempfile.SpooledTemporaryFile. Điều này cho phép chúng hoạt động chính xác với các lớp cấp cao hơn (như mô-đun nén). Bản vá của Carey Metcalfe.bpo-45138: Khắc phục hồi quy trong lệnh gọi lại theo dõi
sqlite3trong đó các tham số ràng buộc không được mở rộng trong chuỗi câu lệnh đã truyền. Hồi quy được giới thiệu trong Python 3.10 bởi bpo-40318. Bản vá của Erlend E. Aasland.bpo-44863: Cho phép các lớp con
TypedDictcũng bao gồmGenericlàm lớp cơ sở trong cú pháp dựa trên lớp. Qua đó cho phép người dùng xác định mộtTypedDictchung, giống như một cái chung do người dùng xác định nhưng có ngữ nghĩaTypedDict.bpo-44587: Sửa BooleanOptionalAction để không tự động thêm chuỗi mặc định. Nếu muốn có một chuỗi mặc định, hãy sử dụng trình định dạng để thêm chuỗi đó.
bpo-43827: Tất cả các tham số vị trí hoặc từ khóa cho
ABCMeta.__new__hiện chỉ có vị trí để tránh xung đột với các đối số từ khóa được chuyển tới__init_subclass__().bpo-43218: Ngăn chặn việc tạo venv có đường dẫn chứa dấu phân cách PATH. Điều này có thể ảnh hưởng đến việc sử dụng tập lệnh kích hoạt. Bản vá của Dustin Rodrigues.
bpo-38435: Thêm tham số
process_groupvàosubprocess.Popenđể giúp loại bỏ nhiều thứ hơn khỏi tham sốpreexec_fnkhông an toàn.bpo-42066: Sửa lỗi sắp xếp cookie trong
CookieJar.__iter__(), đây là một hành vi bổ sung và không được đề cập trong giao thức cookie RFC 2965 hoặc Netscape. Bây giờ các cookie trongCookieJartuân theo thứ tự của tiêu đềSet-Cookie. Bản vá của Iman Kermani.bpo-40617: Thêm
create_window_function()vàosqlite3.Connectionđể tạo các hàm cửa sổ tổng hợp. Bản vá của Erlend E. Aasland.bpo-40676: Chuyển đổi
csvđể sử dụng Argument Clinic chocsv.field_size_limit(),csv.get_dialect(),csv.unregister_dialect()vàcsv.list_dialects().bpo-39716: Tăng
ArgumentErrorkhi cùng một tên trình phân tích con được thêm hai lần vàoargparse.ArgumentParser. Điều này nhất quán với hành vi (mặc định) khi cùng một chuỗi tùy chọn được thêm hai lần vàoArgumentParser.bpo-36073: Tăng
ProgrammingErrorthay vì phân tách việc sử dụng con trỏ đệ quy trong bộ chuyển đổisqlite3. Bản vá của Serge Fedoseev.bpo-34975: Thêm phương thức
start_tls()vàoStreamWriter, nâng cấp kết nối với TLS bằng cách sử dụngSSLContextđã cho.bpo-22276: các phương thức
Pathglob()vàrglob()chỉ trả về các thư mục nếu pattern kết thúc bằng dấu phân cách thành phần tên đường dẫn (/hoặcsep). Bản vá của Eisuke Kawashima.bpo-24905: Thêm
blobopen()vàosqlite3.Connection.sqlite3.Blobcho phép các thao tác I/O tăng dần trên các đốm màu. Bản vá của Aviv Palivoda và Erlend E. Aasland.
Tài liệu¶
gh-91888: Thêm vai trò
ghmới vào tài liệu để liên kết với các sự cố GitHub.gh-91783: Vấn đề bảo mật tài liệu liên quan đến việc sử dụng chức năng
shutil.unpack_archive()gh-91547: Xóa trang "Mô-đun không có giấy tờ".
gh-91298: Trong
importlib.resources.abc, đã tinh chỉnh tài liệu về Giao thức có thể truyền tải, áp dụng các thay đổi từ importlib_resources 5.7.1.bpo-44347: Làm rõ ý nghĩa của dirs_exist_ok, một kwarg của
shutil.copytree().bpo-36329: Xóa 'make -C Doc Serve' thay vào đó là 'make -C Doc htmlview'
bpo-47189: Thêm mục Có gì mới trong Python 3.11 cho dự án CPython nhanh hơn. Tài liệu của Ken Jin và Kumar Aditya.
bpo-38668: Cập nhật phần giới thiệu tài liệu về
os.pathđể xóa các cảnh báo không còn phù hợp sau khi triển khai PEP 383 và PEP 529.bpo-47115: Tài liệu hiện liệt kê các thành viên nào của cấu trúc C là một phần của Limited API/Stable ABI.
bpo-46962: Tất cả các chuỗi tài liệu trong đoạn mã hiện được gói vào
PyDoc_STRđể tuân theo hướng dẫn của PEP 7's Documentation Strings paragraph. Bản vá của Oleg Iarygin.bpo-26792: Cải thiện chuỗi tài liệu của
runpy.run_module()vàrunpy.run_path(). Bản vá gốc của Andrew Brezovsky.
Kiểm tra¶
gh-92169: Sử dụng
warnings_helper.import_deprecated()để nhập các mô-đun không dùng nữa một cách thống nhất trong các thử nghiệm. Bản vá của Hugo van Kemenade.gh-84461: Khi bật đa xử lý, libregrtest hiện có thể sử dụng tệp thực thi Python khác ngoài
sys.executablethông qua cờ--python.gh-91904: Khắc phục việc khởi tạo
PYTHONREGRTEST_UNICODE_GUARDngăn cản việc chạy thử nghiệm hồi quy trên ngôn ngữ không phải UTF-8.gh-91752: Đã thêm @requires_zlib vào test.test_tools.test_freeze.TestFreeze.
gh-91607: Sửa
test_concurrent_futuresđể kiểm tra bối cảnh phương thức bắt đầu đa xử lý chính xác trong một số trường hợp logic kiểm tra trộn lẫn điều này.bpo-40280: Kiểm tra luồng hiện bị bỏ qua trên các mục tiêu WASM mà không hỗ trợ pthread.
bpo-47109: Kiểm tra
ctypes.macholib.dyld,ctypes.macholib.dylibvàctypes.macholib.frameworkđược thực hiện từ lần trướcunittestthủ công đến vị trí và cấu trúcctypes.test. Bản vá của Oleg Iarygin.bpo-29890: Thêm các thử nghiệm cho việc xây dựng
ipaddress.IPv4Interfacevàipaddress.IPv6Interfacevới các đối số bộ dữ liệu. Bản vá gốc và các bài kiểm tra của Louisom.
xây dựng¶
gh-89452: gdbm-compat hiện được ưu tiên hơn ndbm nếu cả hai đều có sẵn trên hệ thống. Điều này cho phép tránh vấn đề ndbm.h trên macOS.
gh-91731: Python hiện được xây dựng với tùy chọn trình biên dịch
-std=c11, thay vì-std=c99. Bản vá của Victor Stinner.bpo-47152: Thêm tập lệnh và tạo mục tiêu để tạo
sre_constants.h.bpo-47103: Bản dựng Windows
PGInstrumenthiện sao chép DLL được yêu cầu vào thư mục đầu ra, giúp chạy giai đoạn hồ sơ của bản dựng PGO dễ dàng hơn.
cửa sổ¶
bpo-46907: Cập nhật trình cài đặt Windows để sử dụng SQLite 3.38.3.
bpo-47239: Đã sửa lỗi đầu ra --list và --list-paths cho Trình quản lý cài đặt Python khi được sử dụng trong môi trường ảo đang hoạt động.
bpo-46907: Cập nhật trình cài đặt Windows để sử dụng SQLite 3.38.2.
bpo-46785: Khắc phục tình trạng tương tranh giữa
os.stat()và hủy liên kết một tệp trên Windows, bằng cách sử dụng mã lỗi đượcFindFirstFileW()trả về khi thích hợp trongwin32_xstat_impl.bpo-40859: Cập nhật bản dựng Windows để sử dụng xz-5.2.5
macOS¶
bpo-46907: Cập nhật trình cài đặt macOS lên SQLite 3.38.4.
Công cụ/Bản trình diễn¶
gh-91583: Khắc phục sự hồi quy trong mã do Argument Clinic tạo ra cho các hàm có tham số
defining_class.gh-91575: Thêm tập lệnh
Tools/scripts/generate_re_casefix.pyvà tạo mục tiêuregen-ređể tạo dữ liệu bổ sung cho việc khớp không phân biệt chữ hoa chữ thường theo phiên bản Unicode hiện tại.gh-91551: Xóa trình chỉnh sửa màu Pynche cổ xưa. Nó đã chuyển sang https://gitlab.com/warsaw/pynche
C API¶
gh-88279: Không dùng các hàm C:
PySys_SetArgv(),PySys_SetArgvEx(),PySys_SetPath(). Bản vá của Victor Stinner.gh-92154: Đã thêm chức năng
PyCode_GetCode(). Hàm này thực hiện tương đương với mã Pythongetattr(code_object, 'co_code').gh-92173: Sửa đối số
closurethànhPyEval_EvalCodeEx().gh-91320: Khắc phục cảnh báo của trình biên dịch C++ về "dàn kiểu cũ" (
g++ -Wold-style-cast) trong Python C API. Sử dụng các phôi C++reinterpret_cast<>vàstatic_cast<>khi Python C API được sử dụng trong C++. Bản vá của Victor Stinner.gh-80527: Đánh dấu các hàm không được dùng nữa bởi PEP 623:
PyUnicode_AS_DATA(),PyUnicode_AS_UNICODE(),PyUnicode_GET_DATA_SIZE(),PyUnicode_GET_SIZE(). Bản vá của Victor Stinner.gh-91768: Loại đối số của hàm
Py_REFCNT(),Py_TYPE(),Py_SIZE()vàPy_IS_TYPE()hiện làPyObject*, thay vìconst PyObject*. Bản vá của Victor Stinner.gh-91020: Thêm
PyBytes_Type.tp_allocđể khởi tạoPyBytesObject.ob_shashcho các lớp con byte.bpo-40421: Thêm chức năng
PyFrame_GetLastiC-API để truy cập thuộc tínhf_lasticủa đối tượng khung một cách an toàn từ mã C.bpo-35134: Xóa tệp tiêu đề
Include/code.h. Phần mở rộng C chỉ nên bao gồm tệp tiêu đề<Python.h>chính. Bản vá của Victor Stinner.bpo-47169:
PyOS_CheckStack()hiện được xuất trong ABI ổn định trên Windows.bpo-47169:
PyThread_get_thread_native_id()bị loại khỏi ABI ổn định trên các nền tảng không tồn tại (như Solaris).bpo-46343: Đã thêm
PyErr_GetHandledException()vàPyErr_SetHandledException()làm các lựa chọn thay thế đơn giản hơn choPyErr_GetExcInfo()vàPyErr_SetExcInfo().Chúng được bao gồm trong ABI ổn định.
Python 3.11.0 alpha 7¶
Release date: 2022-04-05
Cốt lõi và nội dung¶
bpo-47212: Tăng
IndentationErrorthay vìSyntaxErrorđể cóexcepttrần không có thụt lề theo sau. Cải thiện vị tríSyntaxErrorcho trình tạo không có dấu ngoặc đơn được sử dụng làm đối số. Bản vá của Matthieu Dartiailh.bpo-47186: Thay
JUMP_IF_NOT_EG_MATCHbằngCHECK_EG_MATCH+ nhảy.bpo-47176: Bản dựng Emscripten không thể xử lý tín hiệu theo cách thông thường do hạn chế về nền tảng. Python bây giờ có thể xử lý tín hiệu. Để sử dụng, hãy đặt Module.Py_EmscriptenSignalBuffer thành một byte đơn SharedArrayBuffer và đặt Py_EMSCRIPTEN_SIGNAL_HANDLING thành 1. Việc ghi một số vào SharedArrayBuffer sẽ khiến tín hiệu tương ứng được đưa vào luồng Python.
bpo-47186: Thay
JUMP_IF_NOT_EXC_MATCHbằngCHECK_EXC_MATCH+ nhảy.bpo-47120: Thay thế opcode nhảy tuyệt đối
JUMP_NO_INTERRUPTbằngJUMP_BACKWARD_NO_INTERRUPTtương đối.bpo-46841: Tránh phân bổ không cần thiết khi so sánh các đối tượng mã.
bpo-47182: Khắc phục sự cố khi sử dụng ký tự unicode được đặt tên như
"\N{digit nine}"sau khi trình thông dịch chính được khởi chạy lần thứ hai.bpo-47162: WebAssugging không thể xử lý các kiểu con trỏ hàm xấu (số lượng hoặc loại đối số khác nhau). Python hiện có thể sử dụng trampolines cuộc gọi để giảm thiểu vấn đề. Xác định
PY_CALL_TRAMPOLINEđể kích hoạt trampolines cuộc gọi.bpo-46775: Một số mã lỗi hệ thống Windows (>= 10000) hiện được ánh xạ vào đúng lỗi và hiện có thể tạo ra một lớp con của
OSError. Bản vá của Donghee Na.bpo-47129: Cải thiện thông báo lỗi trong lỗi cú pháp chuỗi f liên quan đến biểu thức trống.
bpo-47117: Khắc phục sự cố nếu chúng tôi không giải mã được các ký tự ở chế độ tương tác nếu bộ đệm mã thông báo chưa được khởi tạo. Bản vá của Pablo Galindo.
bpo-47127: Tăng tốc độ gọi đến các hàm c với đối số từ khóa thêm 25% với chuyên môn hóa. Bản vá của Kumar Aditya.
bpo-47120: Thay thế
JUMP_ABSOLUTEbằng bước nhảy tương đốiJUMP_BACKWARD.bpo-42197:
PyFrame_FastToLocalsWithError()vàPyFrame_LocalsToFast()không còn được gọi trong quá trình lập hồ sơ cũng như theo dõi. Mã C có thể truy cập thuộc tínhf_localscủaPyFrameObjectbằng cách gọiPyFrame_GetLocals().bpo-47070: Cải thiện hiệu suất của
array_inplace_repeatbằng cách giảm số lần gọimemcpy. Tái cấu trúcrepeatvà thay thế các phương thứcrepeatcủaarray,bytes,bytearrayvàunicodeobjectđể sử dụng_PyBytes_Repeatphổ biến.bpo-47053: Giảm tính năng khử tối ưu hóa trong opcode
BINARY_OP_INPLACE_ADD_UNICODEchuyên dụng.bpo-47045: Xóa trường
f_statekhỏi cấu trúc _PyInterpreterFrame. Thêm trườngownervào cấu trúc _PyInterpreterFrame để thể hiện quyền sở hữu rõ ràng nhằm đơn giản hóa việc xóa và phân bổ các khung cũng như trình tạo.
Thư viện¶
bpo-46968: Kiểm tra sự tồn tại của tiêu đề "sys/auxv.h" trong
faulthandlerđể tránh các sự cố biên dịch trong các hệ thống không tồn tại tiêu đề này. Bản vá của Pablo Galindo
Cốt lõi và nội dung¶
bpo-46329: Sử dụng bit thấp của
LOAD_GLOBALđể cho biết có nên đẩyNULLlên trước toàn cục hay không. Giúp sắp xếp trình tự cuộc gọi một chút.bpo-46841: Tăng tốc mã byte tại chỗ bằng cách lưu trữ nó như một phần của
PyCodeObjecttương ứng.bpo-47012: Tăng tốc độ lặp của
bytesvàbytearraylên 30%. Bản vá của Kumar Aditya.bpo-47009: Cải thiện hiệu suất của
list.append()và khả năng hiểu danh sách bằng cách tối ưu hóa cho trường hợp thông thường, trong đó không cần thay đổi kích thước. Bản vá của Dennis Sweeney.bpo-47005: Cải thiện hiệu suất của
bytearray_repeatvàbytearray_irepeatbằng cách giảm số lượng lệnh gọimemcpy.
Thư viện¶
bpo-46829: Không dùng nữa việc chuyển tin nhắn vào
asyncio.Future.cancel()vàasyncio.Task.cancel()
Cốt lõi và nội dung¶
bpo-46993: Tăng tốc độ tạo
bytearraytừlistvàtuplelên 40%. Bản vá của Kumar Aditya.bpo-39829: Đã xóa lệnh gọi
__len__()khi khởi tạo danh sách và chuyển khởi tạo sanglist_extend. Bản vá của Jeremiah Pascual.bpo-46944: Tăng tốc độ ném ngoại lệ trong trình tạo với quy ước gọi
METH_FASTCALL. Bản vá của Kumar Aditya.bpo-46841: Sửa đổi
STORE_SUBSCRđể sử dụng mục nhập bộ nhớ đệm nội tuyến (chứ không phải oparg của nó) làm bộ đếm thích ứng.bpo-46841: Sử dụng bộ nhớ đệm nội tuyến cho
PRECALLvàCALL, đồng thời loại bỏ bộ máy nội bộ để quản lý bộ nhớ đệm không nội tuyến (hiện chưa được sử dụng).bpo-46881: Phân bổ tĩnh và khởi tạo các ký tự latin1.
bpo-46838: Cải thiện lỗi cú pháp khi định nghĩa hàm không chính xác. Bản vá của Pablo Galindo
bpo-43721: Sửa các chuỗi tài liệu của
getter,settervàdeleterđể làm rõ rằng chúng tạo bản sao mới của thuộc tính.bpo-43224: Thực hiện các thay đổi ngữ pháp cần thiết cho PEP 646.
Thư viện¶
bpo-47208: Cho phép nhà cung cấp ghi đè
CTYPES_MAX_ARGCOUNT.bpo-23689: mô-đun
re: khắc phục rò rỉ bộ nhớ khi trận đấu bị kết thúc do lỗi phân bổ tín hiệu hoặc bộ nhớ. Bản vá của Ma Lin.bpo-47167: Cho phép ghi đè kiểm tra tuân thủ trong tương lai trong
asyncio.Task.bpo-47151: Khi quy trình con cố gắng sử dụng vfork, nó sẽ quay trở lại fork nếu vfork trả về lỗi. Điều này cho phép sử dụng trong các trường hợp vfork không được nhân hệ điều hành cho phép.
bpo-47152: Chuyển đổi mô-đun
rethành một gói. Ngừng sử dụng các mô-đunsre_compile,sre_constantsvàsre_parse.bpo-4833: Thêm
ZipFile.mkdir()bpo-27929: Sửa
asyncio.loop.sock_connect()để chỉ phân giải tên cho các dòngsocket.AF_INEThoặcsocket.AF_INET6. Độ phân giải có thể không có ý nghĩa đối với các dòng khác, nhưsocket.AF_BLUETOOTHvàsocket.AF_UNIX.bpo-14265: Thêm tên kiểm tra đủ điều kiện vào đầu ra nhỏ nhất
bpo-47061: Không dùng mô-đun aifc nữa.
bpo-39622: Xử lý Ctrl+C trong các chương trình asyncio để làm gián đoạn tác vụ chính.
bpo-47101:
hashlib.algorithms_availablehiện chỉ liệt kê các thuật toán được cung cấp bởi các nhà cung cấp mật mã đã kích hoạt trên OpenSSL 3.0. Các thuật toán kế thừa không được liệt kê trừ khi nhà cung cấp kế thừa đã được tải vào ngữ cảnh OSSL mặc định.bpo-47099: Tất cả các thông báo ngoại lệ
URLErrorđược nêu trongurllib.request.URLopenerhiện chứa dấu hai chấm giữaftp errorvà phần còn lại của tin nhắn. Trước đây,open_ftp()đã bỏ lỡ dấu hai chấm. Bản vá của Oleg Iarygin.bpo-47099: Chuỗi ngoại lệ được thay đổi từ
Exception.with_traceback()/sys.exc_info()thành PEP 3134. Bản vá của Oleg Iarygin.bpo-47095: Mô-đun
_blake2nội bộ củahashlibhiện thíchlibb2từ https://www.blake2.net/ hơn bản sao blake2 được cung cấp bởi Python.bpo-47098: Gói mã Keccak cho mô-đun
_sha3nội bộ củahashlibđã được thay thế bằng tiny_sha3. Mô-đun này được sử dụng làm dự phòng khi Python được xây dựng mà không có OpenSSL.bpo-47088: Triển khai
typing.LiteralString, một phần của PEP 675. Bản vá của Jelle Zijlstra.bpo-42885: Tối ưu hóa
re.search(),re.split(),re.findall(),re.finditer()vàre.sub()cho các biểu thức thông thường bắt đầu bằng\Ahoặc^.bpo-23691: Bảo vệ trình vòng lặp
re.finditer()khỏi bị nhập lại.bpo-47067: Tối ưu hóa việc gọi các đối tượng
GenericAliasbằng cách sử dụng PEP 590vectorcallvà bằng cách thay thếPyObject_SetAttrStringbằngPyObject_SetAttr.bpo-28080: Thêm tham số metadata_encoding trong hàm tạo
zipfile.ZipFilevà tùy chọn--metadata-encodingtrongzipfileCLI để cho phép đọc tệp zip bằng cách sử dụng codec không chuẩn để mã hóa tên tệp trong kho lưu trữ.bpo-47000: Làm cho
io.text_encoding()trả về "utf-8" khi chế độ UTF-8 được bật.bpo-42369: Khắc phục sự an toàn của luồng của
zipfile._SharedFile.tell()để tránh ngoại lệ "zipfile.BadZipFile: Bad CRC-32 for file" khi đọcZipFiletừ nhiều luồng.bpo-38256: Sửa
binascii.crc32()khi nó được biên dịch để sử dụng zlib'c crc32 để hoạt động bình thường trên đầu vào có độ dài 4+GiB thay vì trả về kết quả sai. Cách giải quyết trước đó là luôn cung cấp dữ liệu hàm theo gia số nhỏ hơn 4GiB hoặc chỉ gọi hàm mô-đun zlib.Chúng tôi cũng yêu cầu
binascii.crc32()phát hành GIL khi tính toán trên đầu vào lớn hơn nhưzlib.crc32()vàhashlib.Điều này cũng giúp tăng hiệu suất trên Windows vì hiện tại nó sử dụng triển khai zlib crc32 cho
binascii.crc32()để tăng tốc gấp 2-3 lần.Việc stdlib có crc32 API trong hai mô-đun là một điều kỳ lạ trong lịch sử đã được biết đến. Điều này đưa chúng ta đến gần hơn với một triển khai duy nhất đằng sau chúng.
bpo-47066: Cờ nội tuyến toàn cầu (ví dụ:
(?i)) hiện chỉ có thể được sử dụng khi bắt đầu biểu thức chính quy. Việc sử dụng chúng không phải ở đầu biểu thức không được dùng nữa kể từ Python 3.6.bpo-39394: Cảnh báo về các cờ nội tuyến không ở đầu biểu thức chính quy hiện chứa vị trí của cờ.
bpo-433030: Thêm hỗ trợ nhóm nguyên tử (
(?>...)) và bộ định lượng sở hữu (*+,++,?+,{m,n}+) trongregular expressions.bpo-47062: Triển khai trình quản lý bối cảnh
asyncio.Runner.bpo-46382:
dataclass()slots=Truehiện bỏ qua chính xác các vị trí đã được xác định trong các lớp cơ sở. Bản vá của Arie Bovenberg.bpo-47057: Sử dụng quy ước FASTCALL cho
FutureIter.throw()bpo-47061: Không dùng nữa các mô-đun khác nhau được liệt kê bởi PEP 594:
aifc, asynchat, asyncore, audioop, cgi, cgitb, chunk, crypt, imghdr, msilib, nntplib, nis, ossaudiodev, pipe, smtpd, sndhdr, spwd, sunau, telnetlib, uu, xdrlib
bpo-34790: Loại bỏ các đối tượng coroutine được chuyển tới
asyncio.wait().bpo-47039: Chuẩn hóa
repr()của các đối tượng nhiệm vụ và tương lai asyncio.bpo-2604: Sửa lỗi doctest sử dụng toàn cầu sẽ không thành công khi chạy nhiều lần.
bpo-45150: Thêm trình trợ giúp
hashlib.file_digest()để băm đối tượng tệp hiệu quả.bpo-34861: Đặt cumtime làm khóa sắp xếp mặc định cho cProfile
bpo-45997: Sửa lỗi
asyncio.Semaphorelấy lại đơn hàng FIFO.bpo-47022: Các mô-đun
asynchat,asyncorevàsmtpdđã không còn được dùng nữa kể từ ít nhất là Python 3.6. Tài liệu và cảnh báo không dùng nữa của họ hiện đã được cập nhật để lưu ý rằng chúng sẽ bị xóa trong Python 3.12 (PEP 594).bpo-43253: Khắc phục sự cố khi đóng các phương tiện vận chuyển trong đó tay cầm ổ cắm bên dưới đã không hợp lệ trên vòng lặp sự kiện Proactor.
bpo-40280:
select.select()hiện chuyểnNULLđếnselectcho mỗi fdset trống.bpo-47004: Áp dụng các bản sửa lỗi từ importlib_metadata 4.11.3, bao gồm cả bản sửa lỗi cho EntryPoint.extras, vốn trả về các đối tượng khớp chứ không phải các chuỗi bổ sung.
bpo-46998: Cho phép phân lớp
typing.Any. Bản vá của Shantanu Jain.bpo-46995: Không dùng
asyncio.Task.set_name()bị thiếu khi triển khai tác vụ của bên thứ ba, lên lịch bắt buộc sử dụngasyncio.Task.set_name()trong Python 3.13.bpo-46994: Chấp nhận bối cảnh rõ ràng.Context trong
asyncio.create_task()vàasyncio.loop.create_task().bpo-46981:
typing.get_args(typing.Tuple[()])hiện trả về()thay vì((),).bpo-46968: Thêm
os.sysconf_names['SC_MINSIGSTKSZ'].bpo-46985: Nâng cấp bánh xe pip đi kèm với Ensurepip (pip 22.0.4)
bpo-46968:
faulthandler: Trên Linux 5.14 trở lên, tự động xác định kích thước của kích thước ngăn xếp trình xử lý tín hiệu mà CPython phân bổ bằnggetauxval(AT_MINSIGSTKSZ). Những thay đổi này cho phép yêu cầu của tiện ích mở rộng Python đối với nhân Linux sử dụng tập lệnh AMX_TILE trên bộ xử lý Sapphire Rapids Xeon để thành công, bỏ chặn việc sử dụng ISA trong các khung.bpo-46917: Giá trị
math.nanhiện luôn có sẵn. Bản vá của Victor Stinner.bpo-46955: Hiển thị
asyncio.base_events.Serverlàasyncio.Server. Bản vá của Stefan Zabka.bpo-23325: Mô-đun
signalkhông còn giả định rằngSIG_IGNvàSIG_DFLlà các int singleton nhỏ.bpo-46932: Cập nhật gói libexpat lên 2.4.7
bpo-46933: Mô-đun
pwdhiện là tùy chọn.os.path.expanduser()trả về đường dẫn khi mô-đunpwdkhông có sẵn.bpo-40059: PEP 680, mô-đun
tomllib. Thêm hỗ trợ phân tích cú pháp TOML.bpo-464471: Đã thêm trình quản lý bối cảnh
asyncio.timeout()vàasyncio.timeout_at(). Bản vá của Tin Tvrtković và Andrew Svetlov.bpo-46805: Đã thêm các chức năng socket datagram thô cho asyncio:
sock_sendto(),sock_recvfrom()vàsock_recvfrom_into().bpo-46644: Không còn yêu cầu kiểu chữ hợp lệ để có thể gọi được. Điều này cho phép
typing.Annotatedbao bọctyping.ParamSpecArgsvàdataclasses.InitVar. Bản vá của Gregory Beauregard.bpo-46581: Mang đến sự lan truyền
ParamSpecchoGenericAliasphù hợp vớiConcatenate(và những thứ khác).bpo-45413: Xác định posix_venv và nt_venv sysconfig installation schemes được sử dụng để khởi động các môi trường ảo mới. Thêm sơ đồ cài đặt sysconfig venv để có sơ đồ thích hợp ở trên. Các sơ đồ này giống hệt với các sơ đồ cài đặt posix_prefix và nt hiện có. Mô-đun
venvhiện sử dụng sơ đồ venv để tạo môi trường ảo mới thay vì mã hóa cứng các đường dẫn chỉ tùy thuộc vào nền tảng. Các nhà phân phối Python hạ nguồn tùy chỉnh sơ đồ cài đặt posix_prefix hoặc nt theo cách không tương thích với sơ đồ cài đặt được sử dụng trong môi trường ảo được khuyến khích không tùy chỉnh sơ đồ cài đặt venv. Khi Python tự chạy trong môi trường ảo,sysconfig.get_default_scheme()vàsysconfig.get_preferred_scheme()vớikey="prefix"trả về venv.bpo-43224: Triển khai hỗ trợ cho PEP 646 trong Typing.py.
bpo-43224: Cho phép giải nén các loại. Đối tượng GenericAlias, ví dụ:
*tuple[int, str].bpo-46557: Các cảnh báo do mô-đun ghi nhật ký ghi lại hiện được ghi lại mà không có chuỗi định dạng để ngăn các hệ thống nhóm nhật ký theo đối số msg nhóm các cảnh báo đã ghi lại với nhau.
bpo-41370:
typing.get_type_hints()hiện hỗ trợ đánh giá các chuỗi dưới dạng tham chiếu chuyển tiếp trong PEP 585 generic aliases.bpo-46607: Thêm
DeprecationWarningvàoLegacyInterpolation, không được dùng nữa trong chuỗi tài liệu kể từ Python 3.2. Sẽ bị xóa trong Python 3.13. Thay vào đó hãy sử dụngBasicInterpolationhoặcExtendedInterpolation.bpo-26120:
pydochiện loại trừ nhập __future__ từ các mục dữ liệu của mô-đun.bpo-46480: Thêm
typing.assert_type(). Bản vá của Jelle Zijlstra.bpo-46421: Khắc phục sự cố không đáng tin cậy nhất trong đó nếu lệnh được gọi là
python -m unittestvà (các) tên tệp bắt đầu bằng dấu chấm (.), thìValueErrorsẽ được trả về.bpo-46245: Thêm tham số tùy chọn dir_fd vào
shutil.rmtree().bpo-22859:
unittest.TestProgram.usageExit()được đánh dấu là không dùng nữa và sẽ bị xóa trong Python 3.13.bpo-46170: Cải thiện thông báo lỗi khi bạn cố gắng phân lớp một phiên bản của
typing.NewType.bpo-20392: Khắc phục sự không nhất quán với phần mở rộng tệp viết hoa trong
MimeTypes.guess_type(). Bản vá của Kumar Aditya.bpo-46030: Thêm các hằng số FreeBSD
LOCAL_CREDS,LOCAL_CREDS_PERSISTENTvàSCM_CREDS2vào mô-đun ổ cắm.bpo-44439: Sửa phương thức
.write()của file thành viên trongZipFile, khi dữ liệu đầu vào là đối tượng hỗ trợ giao thức đệm thì độ dài file có thể sai.bpo-45171: Khắc phục việc xử lý đối số
stacklevelđối với các hàm ghi nhật ký trong mô-đunloggingđể nó nhất quán trên tất cả các hàm ghi nhật ký và, như được quảng cáo, tương tự như đối sốstacklevelđược sử dụng trongwarn().bpo-24959: Khắc phục lỗi trong đó
unittestđôi khi làm rơi khung hình khỏi dấu vết của các ngoại lệ được đưa ra trong các thử nghiệm.bpo-44859: Đưa ra các ngoại lệ chính xác hơn và tương thích với PEP 249 trong
sqlite3.Tăng
InterfaceErrorthay vìProgrammingErrorđối với lỗiSQLITE_MISUSE.Không ghi đè
BufferErrorbằngValueErrorkhi chuyển đổi sang BLOB không thành công.Tăng
ProgrammingErrorthay vìWarningnếu người dùng cố gắngexecute()nhiều hơn một câu lệnh SQL.Tăng
ProgrammingErrorthay vìValueErrornếu truy vấn SQL chứa ký tự null.
bpo-44493: Thêm NUL bị kết thúc bị thiếu trong độ dài của sockaddr_un
Điều này có thể được quan sát thấy khi sử dụng ổ cắm gói dữ liệu AF_UNIX không trừu tượng cho các quy trình được viết bằng ngôn ngữ lập trình khác.
bpo-41930: Thêm hỗ trợ
serialize()vàdeserialize()chosqlite3. Bản vá của Erlend E. Aasland.bpo-33178: Đã thêm các lớp
ctypes.BigEndianUnionvàctypes.LittleEndianUnion, như được ghi lại ban đầu trong tài liệu thư viện nhưng chưa được triển khai.bpo-43352: Thêm một đối tượng Barrier trong nguyên tắc đồng bộ hóa của asyncio Lib để nhất quán với Barrier từ threading và multiprocessing libs*
bpo-35859: module
re, sửa một số lỗi về nhóm capture. Trong một số ít trường hợp, nhóm chụp nhận được một chuỗi không chính xác. Bản vá của Ma Lin.
Tài liệu¶
bpo-47040: Làm rõ ghi chú tương thích phiên bản Python cũ của các hàm
binascii.crc32()/zlib.adler32()/zlib.crc32().bpo-46033: Làm rõ việc thực thi câu lệnh
fortrong tài liệu của nó.bpo-45790: Điều chỉnh cụm từ không chính xác trong Xác định các loại tiện ích mở rộng: Hướng dẫn về trường
ob_basevà các macro được sử dụng để truy cập nội dung của nó.bpo-42340: Ghi lại rằng trong một số trường hợp,
KeyboardInterruptcó thể khiến mã chuyển sang trạng thái không nhất quán. Cung cấp một cách giải quyết mẫu để tránh nó nếu cần.bpo-41233: Liên kết các lỗi được tham chiếu trong
Doc/library/exceptions.rstvới phần tương ứng của chúng trongDoc/library/errno.rstvà ngược lại. Trước đây việc này chỉ được thực hiện cho EINTR và InterruptedError. Bản vá của Yan "yyyyyyyan" Orestes.
Kiểm tra¶
bpo-47205: Bỏ qua kiểm tra trường hợp lỗi
sched_getaffinity()vàsched_setaffinity()trên FreeBSD.bpo-46126: Khôi phục 'mô tả' khi chạy thử nghiệm nội bộ.
bpo-47104: Viết lại các bài kiểm tra
asyncio.to_thread()để sử dụngunittest.IsolatedAsyncioTestCase.bpo-40280: Bộ thử nghiệm hiện đang chuyển trên nền tảng Emscripten. Tất cả các thử nghiệm dựa trên nhánh, ổ cắm và quy trình con đều bị bỏ qua.
bpo-47037: Bỏ qua phần kiểm tra tính năng
strftime("%4Y")trên Windows. Nó có thể gây ra lỗi xác nhận trong bản dựng gỡ lỗi.bpo-46587: Bỏ qua các bài kiểm tra nếu
strftimecủa nền tảng không hỗ trợ các tiện ích mở rộng glibc không di động.bpo-47015: Trường hợp thử nghiệm cho
os.sendfile()được chuyển đổi từasyncorekhông dùng nữa (xem PEP 594) thànhasyncio. Bản vá của Oleg Iarygin.
xây dựng¶
bpo-40280: Thêm tùy chọn cấu hình
--enable-wasm-dynamic-linkingđể bậtdlopenvà MAIN_MODULE/SIDE_MODULE trênwasm32-emscripten.bpo-46023:
makesetuphiện phát hiện và bỏ qua tất cả các định nghĩa mô-đun trùng lặp. Mục đầu tiên sẽ thắng.bpo-40280: Thêm SOABI
wasm32-emscriptencho Emscripten vàwasm32-wasicho WASI trên 32bit WASM cũng như các bộ phận truy cậpwasm64.bpo-47032: Đảm bảo các bản dựng cài đặt Windows không thành công chính xác bằng mã thoát khác 0 khi một phần của bản dựng bị lỗi.
bpo-47024: Cập nhật OpenSSL lên 1.1.1n cho trình cài đặt macOS và tất cả các bản dựng Windows.
bpo-46996: Gói
tkinterhiện yêu cầu Tcl/Tk phiên bản 8.5.12 hoặc mới hơn.bpo-46973: Thêm
regen-configuretạo mục tiêu để tạo lại tập lệnh cấu hình với hình ảnh vùng chứaquay.io/tiran/cpython_autoconf:269của Christian.bpo-46917: Xây dựng Python hiện yêu cầu hỗ trợ IEEE 754 số dấu phẩy động. Bản vá của Victor Stinner.
bpo-45774:
configurehiện xác minh rằng tất cả API SQLite C cần thiết cho mô-đun mở rộngsqlite3đều được tìm thấy.
cửa sổ¶
bpo-47194: Cập nhật
zliblên v1.2.12 để giải quyết CVE 2018-25032.bpo-47171: Cho phép cài đặt launcher
py.exetrên Windows ARM64.bpo-46566: Đã nâng cấp Trình quản lý cài đặt Python để hỗ trợ đối số
-V:company/tagmới để hỗ trợ PEP 514 đầy đủ và phát hiện các lượt cài đặt ARM64. Hậu tố-64trên các đối số không được dùng nữa nhưng vẫn chọn mọi cài đặt không phải 32 bit. Việc đặtPYLAUNCHER_ALLOW_INSTALLvà chỉ định phiên bản chưa được cài đặt sẽ cố gắng cài đặt phiên bản được yêu cầu từ Microsoft Store.bpo-47086: Trình cài đặt dành cho Windows hiện bao gồm tài liệu dưới dạng tệp HTML lỏng lẻo thay vì một tệp
.chmđược biên dịch.bpo-46907: Cập nhật trình cài đặt Windows để sử dụng SQLite 3.38.1.
bpo-44549: Cập nhật bzip2 lên 1.0.8 trong các bản dựng Windows để giảm thiểu CVE 2016-3189 và CVE 2019-12900.
bpo-46948: Ngăn chặn CVE 2022-26488 bằng cách đảm bảo tùy chọn Thêm vào PATH trong trình cài đặt Windows sử dụng đúng đường dẫn khi sửa chữa.
macOS¶
Công cụ/Bản trình diễn¶
bpo-40280: Thay thế lớp vỏ giới hạn của Emscripten bằng browser-ui REPL của Katie Bell từ dự án python-wasm.
C API¶
bpo-40421: Thêm các hàm
PyFrame_GetBuiltins,PyFrame_GetGeneratorvàPyFrame_GetGlobalsC-API để truy cập các thuộc tính đối tượng khung một cách an toàn từ mã C.bpo-46850: Di chuyển loại
_PyFrameEvalFunctionriêng tư và các hàm_PyInterpreterState_GetEvalFrameFunc()và_PyInterpreterState_SetEvalFrameFunc()riêng tư sang C API bên trong. Loại hàm gọi lại_PyFrameEvalFunctionhiện sử dụng loại_PyInterpreterFramelà một phần của C API nội bộ. Bản vá của Victor Stinner.bpo-46850: Di chuyển hàm
_PyEval_EvalFrameDefault()không có giấy tờ riêng sang C API bên trong. Hàm hiện sử dụng loại_PyInterpreterFramelà một phần của C API bên trong. Bản vá của Victor Stinner.bpo-46850: Xóa chức năng riêng tư không có giấy tờ
_PyEval_CallTracing()khỏi C API. Thay vào đó hãy gọi hàmsys.call_tracing()công khai. Bản vá của Victor Stinner.bpo-46850: Xóa chức năng riêng tư không có giấy tờ
_PyEval_GetCoroutineOriginTrackingDepth()khỏi C API. Thay vào đó hãy gọi hàmsys.get_coroutine_origin_tracking_depth()công khai. Bản vá của Victor Stinner.bpo-46850: Xóa các hàm không có giấy tờ riêng tư sau khỏi C API:
_PyEval_GetAsyncGenFirstiter()_PyEval_GetAsyncGenFinalizer()_PyEval_SetAsyncGenFirstiter()_PyEval_SetAsyncGenFinalizer()
Thay vào đó hãy gọi các hàm
sys.get_asyncgen_hooks()vàsys.set_asyncgen_hooks()công khai. Bản vá của Victor Stinner.bpo-46987: Xóa chức năng riêng tư
_PySys_GetObjectId()và_PySys_SetObjectId(). Bản vá của Donghee Na.bpo-46906: Thêm chức năng mới để đóng gói và giải nén C double (serialize và deserialize):
PyFloat_Pack2(),PyFloat_Pack4(),PyFloat_Pack8(),PyFloat_Unpack2(),PyFloat_Unpack4()vàPyFloat_Unpack8(). Bản vá của Victor Stinner.
Python 3.11.0 alpha 6¶
Release date: 2022-03-07
Cốt lõi và nội dung¶
bpo-46940: Tránh ghi đè thông tin siêu dữ liệu
AttributeErrorcho các lệnh gọi truy cập thuộc tính lồng nhau. Bản vá của Pablo Galindo.bpo-46927: Bao gồm tên loại trong thông báo lỗi để đăng ký các loại không chung chung.
bpo-46921: Hỗ trợ vectorcall cho
super(). Bản vá của Ken Jin.bpo-46841: Khắc phục việc xử lý không chính xác các mục bộ nhớ đệm nội tuyến khi chuyên về
BINARY_OP.bpo-46841: Sử dụng oparg để đơn giản hóa việc xây dựng các thông báo lỗi hữu ích trong
GET_AWAITABLE.bpo-46903: Đảm bảo rằng các lớp con str có thể được sử dụng làm tên thuộc tính cho các phiên bản có từ điển ảo. Sửa lỗi hồi quy trong 3.11alpha
bpo-46841: Thêm số liệu thống kê lỗi chuyên môn chi tiết hơn cho
COMPARE_OP, sau đó làEXTENDED_ARG.bpo-46891: Sửa lỗi xuất hiện trong phiên bản 3.11alpha trong đó các lớp con của
types.ModuleTypevới__slots__không được khởi tạo chính xác, dẫn đến lỗi trình thông dịch.bpo-46841: Sử dụng bộ nhớ đệm nội tuyến cho
LOAD_ATTR,LOAD_METHODvàSTORE_ATTR.bpo-46841: Sử dụng bộ đệm nội tuyến cho
BINARY_SUBSCR.bpo-46841: Sử dụng bộ nhớ đệm nội tuyến cho
COMPARE_OP.bpo-46864: Không dùng nữa
PyBytesObject.ob_shash. Nó sẽ bị xóa trong Python 3.13.bpo-46841: Sử dụng bộ nhớ đệm nội tuyến cho
UNPACK_SEQUENCE.bpo-46845: Giảm kích thước dict bằng cách xóa giá trị băm khỏi bảng băm khi tất cả các khóa được chèn là Unicode. Ví dụ:
sys.getsizeof(dict.fromkeys("abcdefg"))trở thành 272 byte từ 352 byte trên nền tảng 64bit.bpo-46841: Sử dụng bộ đệm nội tuyến cho
LOAD_GLOBAL.bpo-46852: Đổi tên phương thức
float.__set_format__()không có giấy tờ riêng tư thànhfloat.__setformat__()để sửa lỗi đánh máy được giới thiệu trong Python 3.7. Phương thức này chỉ được sử dụng bởi test_float. Bản vá của Victor Stinner.bpo-46852: Xóa phương thức
float.__set_format__()riêng tư không có giấy tờ, trước đây gọi làfloat.__setformat__()trong Python 3.7. Chuỗi tài liệu của nó cho biết: "Có thể bạn không muốn sử dụng hàm này. Nó tồn tại chủ yếu để sử dụng trong bộ thử nghiệm của Python." Bản vá của Victor Stinner.bpo-40116: Khắc phục hồi quy khiến dict.update(other) có thể không tôn trọng thứ tự lặp của cái khác khi cái khác là lệnh chia sẻ khóa.
bpo-46712: Chia sẻ số nhận dạng chuỗi toàn cầu trong các mô-đun được cố định sâu.
bpo-46430: Khắc phục sự cố rò rỉ bộ nhớ trong các chuỗi mô-đun được cố định sâu.
bpo-46841: Lưu trữ nội tuyến bộ đệm
BINARY_OPbằng cách sử dụng lệnhCACHEmới.bpo-45107: Chuyên
LOAD_METHODcho các trường hợp có lệnh.bpo-44337: Giảm mức sử dụng bộ nhớ của các lệnh
LOAD_ATTRvàSTORE_ATTRchuyên dụng.bpo-46729: Thêm số lượng ngoại lệ phụ vào
BaseException.__str__().bpo-45885: Không hủy điều chỉnh
COMPARE_OPkhi thu thập số liệu thống kê chuyên môn.bpo-46329: Sửa lỗi thu thập số liệu thống kê chuyên môn cho hướng dẫn
PRECALL.
Thư viện¶
bpo-46794: Nâng cấp phiên bản libexpat lên 2.4.6
Cốt lõi và nội dung¶
bpo-46823: Triển khai opcode kết hợp chuyên dụng
LOAD_FAST__LOAD_ATTR_INSTANCE_VALUE. Bản vá của Dennis Sweeney.bpo-46820: Sửa lỗi phân tích cú pháp một chữ số ngay lập tức (không có dấu cách) theo sau là từ khóa "không có trong", như trong
1not in x. Bây giờ trình phân tích cú pháp chỉ đưa ra cảnh báo chứ không đưa ra lỗi cú pháp.bpo-46329: Di chuyển
KW_NAMEStrước lệnhPRECALLtrong chuỗi cuộc gọi. Thay đổioperandcủaCALLđể khớp vớiPRECALLđể chuyên môn hóa dễ dàng hơn.bpo-46808: Xóa macro
NEXT_BLOCKkhỏi biên dịch.c và làm cho trình biên dịch tự động tạo các khối ngầm khi cần.bpo-46329: Thêm lệnh
PUSH_NULL. Điều này được sử dụng làm tiền tố khi đánh giá một lệnh có thể gọi được, sao cho ngăn xếp có hình dạng giống nhau cho các phương thức và các lệnh gọi khác.PRECALL_FUNCTIONvàPRECALL_METHODđược hợp nhất thành một lệnhPRECALLduy nhất.Không có thay đổi về ngữ nghĩa.
bpo-46762: Khắc phục lỗi xác nhận trong bản dựng gỡ lỗi khi '<', '>' hoặc '=' là ký tự cuối cùng trong chuỗi f thiếu dấu ngoặc nhọn đóng.
bpo-46730: Thông báo AttributionError gây ra bởi việc nhận, thiết lập hoặc xóa một thuộc tính không có chức năng tương ứng hiện đề cập rằng thuộc tính đó trên thực tế là một thuộc tính và cũng chỉ định loại lớp mà thuộc tính đó thuộc về.
bpo-46724: Đảm bảo rằng tất cả các bước nhảy lùi đều sử dụng lệnh
JUMP_ABSOLUTE, thay vìJUMP_FORWARDvới đối số là(2**32)+offset.bpo-46732: Sửa chuỗi tài liệu cho phương thức
__bool__(). Bản vá của Jelle Zijlstra.bpo-46072: Thêm số liệu thống kê lỗi chuyên môn hóa chi tiết hơn cho
BINARY_OP.bpo-46707: Tránh khả năng quay lui theo cấp số nhân khi tạo ra một số lỗi cú pháp liên quan đến nhiều dấu ngoặc. Bản vá của Pablo Galindo.
Thư viện¶
Cốt lõi và nội dung¶
bpo-45923: Thêm một dạng
RESUMEđược rút ngắn để bỏ qua các bước kiểm tra tăng tốc.bpo-46702: Chuyên dùng
UNPACK_SEQUENCEđể giải néntuplevàlist.bpo-46072: Số liệu thống kê cặp Opcode hiện được thu thập bằng
--enable-pystats. Việc xác địnhDYNAMIC_EXECUTION_PROFILEhoặcDXPAIRSkhông còn tác dụng nữa.bpo-46675: Cho phép nhiều hơn 16 mục trong một lệnh phân chia trước khi được kết hợp. Giới hạn bây giờ là 254.
Thư viện¶
bpo-40479: Thêm cuộc gọi bị thiếu vào
va_end()trongModules/_hashopenssl.c.bpo-46323: Sử dụng
PyObject_Vectorcall()trong khi gọi hàm gọi lại ctypes. Bản vá của Donghee Na.
Cốt lõi và nội dung¶
bpo-46615: Khi lặp lại các tập hợp nội bộ trong
setobject.c, hãy thu được các tham chiếu mạnh đến các mục kết quả từ tập hợp đó. Điều này ngăn chặn sự cố trong các trường hợp góc của các hoạt động tập hợp khác nhau trong đó tập hợp bị đột biến.bpo-45828: Trình biên dịch mã byte hiện cố gắng áp dụng các thao tác ngăn xếp thời gian chạy tại thời gian biên dịch (bất cứ khi nào có thể làm như vậy).
bpo-30496: Đã khắc phục sự cố nhỏ về tính di động khi triển khai
PyLong_FromLong()và thêm đường dẫn nhanh cho các số nguyên có một chữ số tớiPyLong_FromLongLong().
Thư viện¶
bpo-25707: Đã sửa lỗi rò rỉ tệp trong
xml.etree.ElementTree.iterparse()khi trình vòng lặp chưa hết. Bản vá của Jacob Walls.bpo-46877: Xuất
unittest.doModuleCleanups()trongunittest. Bản vá của Kumar Aditya.bpo-46848: Để có hiệu suất, hãy sử dụng triển khai tìm kiếm chuỗi được tối ưu hóa từ
find()vàrfind()chofind()vàrfind().bpo-46736:
SimpleHTTPRequestHandlerhiện sử dụng ngữ pháp HTML5. Bản vá của Donghee Na.bpo-44886: Kế thừa vận chuyển gói dữ liệu asyncio proactor từ
asyncio.DatagramTransport.bpo-46827: Hỗ trợ ổ cắm UDP trong
asyncio.loop.sock_connect()cho các vòng lặp sự kiện dựa trên bộ chọn. Bản vá của Thomas Grainger.bpo-46811: Tạo bộ thử nghiệm hỗ trợ Expat >=2.4.5
bpo-46252: Tăng
TypeErrornếussl.SSLSocketđược chuyển tới các API dựa trên truyền tải.bpo-46784: Khắc phục xung đột biểu tượng libexpat với libexpat được tải động hoặc liên kết tĩnh của người dùng trong Python được nhúng.
bpo-46786: Chuỗi HTML trong xml.etree.ElementTree hiện ghi
embed,source,trackvàwbrdưới dạng thẻ trống, như được định nghĩa trong HTML 5.bpo-39327:
shutil.rmtree()hiện có thể hoạt động với các thư mục chia sẻ VirtualBox khi chạy từ hệ điều hành khách.bpo-45390: Truyền tin nhắn
asyncio.CancelledErrortừ tác vụ bên trong đến bộ chờ bên ngoài.bpo-46756: Sửa lỗi trong
urllib.request.HTTPPasswordMgr.find_user_password()vàurllib.request.HTTPPasswordMgrWithPriorAuth.is_authenticated()cho phép bỏ qua ủy quyền. Ví dụ: quyền truy cập vào URIexample.org/foobarđược cho phép nếu người dùng được ủy quyền cho URIexample.org/foo.bpo-46737:
random.gauss()vàrandom.normalvariate()hiện có các đối số mặc định.bpo-46752: Thêm nhóm nhiệm vụ vào asyncio (cấu trúc đồng thời, lấy cảm hứng từ vườn ươm của Trio). Điều này cũng đưa ra một thay đổi đối với việc hủy tác vụ, trong đó tác vụ đã hủy không thể bị hủy lại cho đến khi nó gọi .uncancel().
bpo-46333: Phương thức
__repr__()củatyping.ForwardRefhiện bao gồm tham sốmodulecủatyping.ForwardRefkhi nó được đặt.bpo-46643: Trong
typing.get_type_hints(), hỗ trợ đánh giá các chú thíchParamSpecArgsvàParamSpecKwargsđược xâu chuỗi. Bản vá của Gregory Beauregard.bpo-45863: Khi mô-đun
tarfiletạo kho lưu trữ định dạng pax, nó sẽ đặt một biểu diễn số nguyên của dấu thời gian trong tiêu đề ustar (nếu có thể) vì lợi ích của những người hủy lưu trữ cũ hơn, ngoài các dấu thời gian có độ chính xác hoàn toàn hiện có trong tiêu đề mở rộng pax.bpo-46066: Không dùng cú pháp dựa trên kwargs cho các định nghĩa
typing.TypedDict. Nó có ngữ nghĩa khó hiểu khi xác định tổng thể và phần lớn không được sử dụng. Bản vá của Jingchen Ye.bpo-46676: Làm cho
typing.ParamSpecargs và kwargs bằng chính chúng. Bản vá của Gregory Beauregard.bpo-46323:
ctypes.CFUNCTYPE()vàctypes.WINFUNCTYPE()hiện không tạo được loại nếu thành viên_argtypes_của nó chứa quá nhiều đối số. Trước đây, lỗi chỉ xuất hiện khi gọi một hàm. Bản vá của Victor Stinner.bpo-46672: Sửa
NameErrortrongasyncio.gather()khi kiểm tra loại ban đầu không thành công.bpo-46659: Các lớp
calendar.LocaleTextCalendarvàcalendar.LocaleHTMLCalendarhiện sử dụnglocale.getlocale(), thay vì sử dụnglocale.getdefaultlocale(), nếu không có ngôn ngữ nào được chỉ định. Bản vá của Victor Stinner.bpo-46659: Hàm
locale.getdefaultlocale()không được dùng nữa và sẽ bị xóa trong Python 3.13. Thay vào đó, hãy sử dụng các hàmlocale.setlocale(),locale.getpreferredencoding(False)vàlocale.getlocale(). Bản vá của Victor Stinner.bpo-46655: Trong
typing.get_type_hints(), hỗ trợ đánh giá các chú thíchTypeAliasđược xâu chuỗi đơn giản. Bản vá của Gregory Beauregard.bpo-45948: Đã khắc phục sự khác biệt trong quá trình triển khai C của mô-đun
xml.etree.ElementTree. Bây giờ, việc khởi tạo mộtxml.etree.ElementTree.XMLParserbằng từ khóatarget=Nonesẽ cung cấp mục tiêuxml.etree.ElementTree.TreeBuildermặc định giống như cách triển khai Python.bpo-46626: Hiển thị tùy chọn
IP_BIND_ADDRESS_NO_PORTcủa Linux trongsocket.bpo-46521: Sửa lỗi trong mô-đun
codeopxác định không chính xác mã không hợp lệ liên quan đến dấu ngoặc kép là mã hợp lệ.bpo-46571: Cải thiện
typing.no_type_check().Bây giờ nó không sửa đổi các lớp và chức năng bên ngoài. Bây giờ chúng tôi cũng đánh dấu chính xác các phương thức lớp là không được kiểm tra kiểu.
bpo-46400: expat: Cập nhật libexpat từ 2.4.1 lên 2.4.4
bpo-46556: Không còn hỗ trợ không có giấy tờ để sử dụng đối tượng
pathlib.Pathlàm trình quản lý bối cảnh.bpo-46534: Triển khai PEP 673
typing.Self. Bản vá của James Hilton-Balfe.bpo-46522: Tạo các mô-đun khác nhau
__getattr__AttributionErrors khớp chặt hơn với AttributionError điển hìnhbpo-46475: Thêm
typing.Nevervàtyping.assert_never(). Bản vá của Jelle Zijlstra.bpo-46333: Các phương thức
__eq__()và__hash__()củatyping.ForwardRefhiện tôn vinh tham sốmodulecủatyping.ForwardRef. Các tài liệu tham khảo chuyển tiếp từ các mô-đun khác nhau hiện đã được phân biệt.bpo-46246: Thêm
__slots__bị thiếu vàoimportlib.metadata.DeprecatedList. Bản vá của Arie Bovenberg.bpo-46232: Mô-đun
sslhiện xử lý chính xác các chứng chỉ có chuỗi bit trong DN.bpo-46195:
typing.get_type_hints()không còn thêmOptionalvào các tham số cóNonelàm mặc định. Điều này phù hợp với những thay đổi đối với PEP 484 trong https://github.com/python/peps/pull/689bpo-31369: Thêm
RegexFlagvàore.__all__và ghi lại nó. ThêmNOFLAGđể biểu thị không có cờ nào được đặt.bpo-45898:
ctypeskhông còn xác định các ký hiệuffi_type_*trongcfield.c. Các biểu tượng đã được libffi cung cấp trong hơn một thập kỷ.bpo-44953: Gọi các đối tượng
operator.itemgettervàoperator.attrgettergiờ đây nhanh hơn nhờ sử dụng quy ước gọi vectorcall.bpo-44289: Khắc phục sự cố với phương thức
is_tarfile()khi sử dụng đối số fileobj: vị trí trong fileobj được nâng cao về phía trước khiếntarfile.TarFile.open()không thể đọc được.bpo-44011: Triển khai lại hỗ trợ SSL/TLS trong asyncio, mượn cách triển khai từ thư viện uvloop.
bpo-41086: Làm cho hàm tạo
configparser.ConfigParsertăngTypeErrornếu tham sốinterpolationkhông thuộc loạiconfigparser.Interpolationbpo-29418: Triển khai
inspect.ismethodwrapper()và sửainspect.isroutine()trong trường hợp cung cấp phương thức gói. Bản vá của Hakan Çelik.bpo-14156: argparse.FileType hiện hỗ trợ đối số '-' ở chế độ nhị phân, trả về thuộc tính .buffer của sys.stdin/sys.stdout nếu thích hợp. Các chế độ bao gồm 'x' và 'a' được xử lý tương đương với 'w' khi đối số là '-'. Bản vá được đóng góp bởi Josh Rosenberg
Tài liệu¶
bpo-42238:
Doc/tools/rstlint.pyđã chuyển sang kho lưu trữ riêng và hiện được đóng gói trên PyPI dưới dạngsphinx-lint.
Kiểm tra¶
bpo-46913: Khắc phục test_faulthandler.test_sigfpe() nếu Python được xây dựng với trình khử trùng hành vi không xác định (UBSAN): tắt UBSAN trên hàm errorhandler_sigfpe(). Bản vá của Victor Stinner.
bpo-46760: Loại bỏ độ lệch mã byte khỏi các giá trị dự kiến trong mô-đun test.test_dis. Giảm các trở ngại trong việc sửa đổi VM hoặc trình biên dịch.
bpo-46708: Ngăn chặn cảnh báo sửa đổi chính sách vòng lặp sự kiện asyncio mặc định sau khi thực thi
test_asyncio.bpo-46678: Chức năng
make_legacy_pyctrongLib/test/support/import_helper.pykhông còn bị lỗi khiPYTHONPYCACHEPREFIXđược đặt thành một thư mục trên một thiết bị khác với nơi lưu trữ tệp tạm thời.bpo-46623: Bỏ qua test_pair() và test_speech128() của test_zlib trên s390x vì chúng không thành công nếu zlib sử dụng bộ tăng tốc phần cứng s390x. Bản vá của Victor Stinner.
xây dựng¶
bpo-46860: Tôn trọng
--with-suffixkhi xây dựng trên hệ thống tệp không phân biệt chữ hoa chữ thường.bpo-46656: Xây dựng Python hiện yêu cầu trình biên dịch C11. Các tính năng C11 tùy chọn không bắt buộc. Bản vá của Victor Stinner.
bpo-46656: Xây dựng Python hiện yêu cầu hỗ trợ cho Not-a-Number dấu phẩy động (NaN): xóa macro
Py_NO_NAN. Bản vá của Victor Stinner.bpo-46640: Xây dựng Python hiện yêu cầu tệp tiêu đề C99
<math.h>cung cấp hằng sốNANhoặc hàm tích hợp__builtin_nan(). Bản vá của Victor Stinner.bpo-46608: Loại trừ dữ liệu được đông lạnh theo thứ tự nếu đóng băng sâu để tiết kiệm dung lượng ổ đĩa 300 KB. Điều này bao gồm việc thêm trường
is_packagemới vào_frozen. Bản vá của Kumar Aditya.bpo-40280: Khắc phục lỗi kiểm tra wasm32-emscripten và các sự cố nền tảng. - Tắt các cuộc gọi chung không được hỗ trợ hoặc không hoạt động, ví dụ: chờ đã, getrusage, prlimit, mkfifo, mknod, setres[gu]id, setgroups. - Sử dụng fd_count để đếm các fds đang mở. - Thêm nhiều kiểm tra hơn cho quy trình con và fork. - Thêm cách giải quyết cho việc thiếu _multiprocessing và không thành công socket.accept(). - Kích hoạt bzip2. - Vô hiệu hóa hỗ trợ tập tin lớn. - Tắt tín hiệu.alarm.
bpo-46430: Thực hiện chuỗi trong các mô-đun được cố định sâu. Bản vá của Kumar Aditya.
cửa sổ¶
bpo-46744: Thư mục cài đặt mặc định của tất cả người dùng cho ARM64 hiện nằm trong thư mục
Program Filesgốc, thay vìProgram Files (Arm)dành cho các tệp ARM (32-bit).bpo-46567: Thêm hỗ trợ Tcl và Tk cho Windows ARM64. Điều này cũng thêm IDLE vào quá trình cài đặt.
bpo-46638: Đảm bảo ảo hóa sổ đăng ký luôn bị tắt. Đối với phiên bản 3.10 trở về trước, tính năng này vẫn được bật (một số thao tác ghi sổ đăng ký được bảo vệ), trong khi đối với phiên bản 3.11 trở về trước, tính năng này bị tắt (các sửa đổi sổ đăng ký ảnh hưởng đến tất cả các ứng dụng).
IDLE¶
C API¶
bpo-46748: Các tiêu đề công khai của Python không còn nhập
<stdbool.h>nữa, để lại mã nhúng/mở rộng Python miễn phí để xác địnhbool,truevàfalse.bpo-46836: Di chuyển định nghĩa loại
PyFrameObject(struct _frame) sang tệp tiêu đề C APIpycore_frame.hbên trong. Bản vá của Victor Stinner.bpo-45459: Đổi tên tệp tiêu đề
Include/buffer.hthànhInclude/pybuffer.hđể tránh xung đột với các dự án có tệp tiêu đềbuffer.hhiện có. Bản vá của Victor Stinner.bpo-45412: Xóa macro
HAVE_PY_SET_53BIT_PRECISION(đã chuyển sang C API bên trong). Bản vá của Victor Stinner.bpo-46613: Đã thêm chức năng
PyType_GetModuleByDef(), cho phép truy cập vào trạng thái mô-đun khi lớp xác định của phương thức không có sẵn.
Python 3.11.0 alpha 5¶
Release date: 2022-02-03
Cốt lõi và nội dung¶
bpo-45773: Xóa hai tối ưu hóa "lỗ nhìn trộm" không hợp lệ khỏi trình biên dịch mã byte.
bpo-46564: Không tạo đối tượng khung khi tạo đối tượng
super. Bản vá của Kumar Aditya.bpo-45885: Đã thêm nhiều số liệu thống kê lỗi chuyên môn chi tiết hơn liên quan đến mã byte
COMPARE_OP.bpo-44977: Việc ủy quyền
int()đến__trunc__()hiện không còn được dùng nữa. Gọiint(a)khitype(a)triển khai__trunc__()chứ không phải__int__()hay__index__()giờ sẽ tăngDeprecationWarning.bpo-46458: Sắp xếp lại mã do trình biên dịch phát ra cho khối
try-exceptđể mã của khốielsengay sau phần thântry(không có bước nhảy). Điều này tối ưu hơn cho con đường hạnh phúc.bpo-46527: Cho phép chuyển lại
iterablelàm đối số từ khóa choenumerate(). Bản vá của Jelle Zijlstra.bpo-46528: Thay thế một số lệnh thao tác ngăn xếp (
DUP_TOP,DUP_TOP_TWO,ROT_TWO,ROT_THREE,ROT_FOURvàROT_N) bằng các lệnhCOPYvàSWAPmới.bpo-46329: Sử dụng hai hoặc ba mã byte để thực hiện hầu hết các lệnh gọi.
Các cuộc gọi không có đối số được đặt tên được triển khai dưới dạng một chuỗi gồm hai hướng dẫn:
PRECALL; CALL. Các cuộc gọi với các đối số được đặt tên được triển khai dưới dạng một chuỗi gồm ba hướng dẫn:PRECALL; KW_NAMES; CALL. Có hai hướng dẫnPRECALLkhác nhau:PRECALL_FUNTIONvàPRECALL_METHOD. Cặp thứ hai vớiLOAD_METHOD.Việc phân vùng này thành cuộc gọi trước và cuộc gọi cho phép chuyên môn hóa tốt hơn và do đó hiệu suất cuối cùng sẽ tốt hơn.
Không có thay đổi về ngữ nghĩa.
bpo-46503: Khắc phục xác nhận khi phân tích cú pháp một số chuỗi thoát N không hợp lệ trong chuỗi f.
bpo-46431: Cải thiện thông báo lỗi khi gọi tới
BaseExceptionGroup.__new__()không hợp lệ.bpo-46476: Sửa lỗi rò rỉ bộ nhớ trong các đối tượng mã được tạo bởi deepfreeze. Bản vá của Kumar Aditya.
bpo-46481: Tăng tốc cuộc gọi tới
weakref.ref.__call__()bằng cách sử dụng quy ước gọi PEP 590vectorcall. Bản vá của Donghee Na.bpo-46417: Khắc phục tình trạng chạy đua khi đặt thuộc tính loại
__bases__: hàm nội bộadd_subclass()hiện có thành viênPyTypeObject.tp_subclassessau khi gọiPyWeakref_NewRef(), điều này có thể kích hoạt bộ sưu tập rác có thể sửa đổi gián tiếpPyTypeObject.tp_subclasses. Bản vá của Victor Stinner.bpo-46417:
python -X showrefcounthiện hiển thị tổng số tham chiếu sau khi xóa và hủy trình thông dịch Python chính. Trước đây, nó đã được hiển thị trước đó. Bản vá của Victor Stinner.bpo-43683: Thêm opcode ASYNC_GEN_WRAP để bọc giá trị mang lại trong trình tạo không đồng bộ. Loại bỏ sự cần thiết của các trình tạo không đồng bộ trong trường hợp đặc biệt trong lệnh
YIELD_VALUE.bpo-46407: Tối ưu hóa một số thao tác modulo trong
Objects/longobject.c. Bản vá của Jeremiah Vivian.bpo-46409: Thêm mã byte
RETURN_GENERATORmới để tạo trình tạo. Đơn giản hóa việc gọi các hàm Python trong VM, vì chúng không còn cần đến các hàm tạo chữ hoa chữ thường đặc biệt nữa.Đồng thời thêm mã byte
JUMP_NO_INTERRUPThoạt động giống nhưJUMP_ABSOLUTEnhưng không kiểm tra các ngắt.bpo-46406: Việc triển khai
//chia số nguyên đã được tối ưu hóa để giúp trình biên dịch hiểu rõ hơn các ràng buộc của nó. Nó có thể nhanh hơn 20% trên nền tảng amd64 khi chia int cho giá trị nhỏ hơn2**30.
Thư viện¶
bpo-46383: Sửa chữ ký không hợp lệ của chức năng
module_freecủa_zoneinfođể giải quyết sự cố trên nền tảng wasm32-emscripten.
Cốt lõi và nội dung¶
bpo-46361: Đảm bảo rằng các số nguyên "nhỏ" được tạo bởi
int.from_bytes()vàdecimal.Decimalđược lưu vào bộ đệm đúng cách.bpo-46161: Sửa lỗi xây dựng lớp khi đối số là hằng số và CALL_FUNCTION_EX được sử dụng.
bpo-46028: Sửa lỗi tính toán
sys._base_executablekhi ở trong môi trường ảo sử dụng liên kết tượng trưng có tên nhị phân khác với môi trường cơ sở cung cấp.bpo-46091: Tính toán chính xác mức độ thụt lề cho các dòng có ký tự khoảng trắng được kết thúc bằng các ký tự tiếp tục dòng. Bản vá của Pablo Galindo
Thư viện¶
bpo-30512: Thêm hỗ trợ Ổ cắm CAN cho NetBSD.
xây dựng¶
bpo-46045: Không sử dụng các ngữ nghĩa POSIX trên NetBSD
Cốt lõi và nội dung¶
Thư viện¶
bpo-46624: Khôi phục hỗ trợ cho các đối số không nguyên của
random.randrange()vàrandom.randint().bpo-46591: Làm cho tài liệu IDLE URL trên hộp thoại Giới thiệu về IDLE có thể nhấp được.
bpo-46565: Loại bỏ các biến vòng lặp rò rỉ vào không gian tên của mô-đun.
bpo-46553: Trong
typing.get_type_hints(), hỗ trợ đánh giá các chú thíchClassVarđược xâu chuỗi đơn giản. Bản vá của Gregory Beauregard.bpo-46544: Không rò rỉ các bình trung gian
x&uspacetrongtextwrap.TextWrapper.bpo-46487: Thêm phương thức
get_write_buffer_limitsvàoasyncio.transports.WriteTransportvà vào phương thức vận chuyển SSL.bpo-45173: Lưu ý rằng việc ngừng sử dụng configparser sẽ bị xóa trong Python 3.12.
bpo-45162: Các API
unittestkhông được dùng nữa đã bị xóa trong 3.11a1 đã được khôi phục tạm thời để bị xóa trong 3.12 trong khi tiến hành dọn dẹp trong các dự án bên ngoài.bpo-46539: Trong
typing.get_type_hints(), hỗ trợ đánh giá các chú thíchClassVarvàFinalđược xâu chuỗi bên trongAnnotated. Bản vá của Gregory Beauregard.bpo-46510: Thêm bài kiểm tra còn thiếu cho
types.TracebackTypevàtypes.FrameType. Tính toán chúng trực tiếp từ ngoại lệ bị bắt mà không cần gọisys.exc_info().bpo-46491: Cho phép
typing.Annotatedbao bọctyping.Finalvàtyping.ClassVar. Bản vá của Gregory Beauregard.bpo-46483: Xóa
__class_getitem__()khỏipathlib.PurePathvì lớp này không được cho là chung chung.bpo-46436: Sửa tùy chọn dòng lệnh
-d/--directorytrong mô-đunhttp.serverbị bỏ qua khi kết hợp với tùy chọn dòng lệnh--cgi. Bản vá của Géry Ogam.bpo-41403: Làm cho
mock.patch()tăngTypeErrorbằng thông báo lỗi liên quan về đối số không hợp lệ. Trước đây nó đã cho phép mộtAttributeErrorkhó hiểu trốn thoát.bpo-46474: Trong
importlib.metadata.EntryPoint.pattern, tránh khả năng REDoS tiềm ẩn bằng cách hạn chế sự mơ hồ trong khoảng trắng liên tiếp.bpo-46474: Đã xóa phương thức riêng tư khỏi
importlib.metadata.Path. Đồng bộ hóa với importlib_metadata 4.10.0.bpo-46470: Xóa nhánh không sử dụng khỏi
typing._remove_dups_flattenbpo-46469: Các lớp chung
asynciohiện trả vềtypes.GenericAliastrong__class_getitem__thay vì cùng một lớp.bpo-41906: Hỗ trợ chuyển các phiên bản bộ lọc trong các giá trị
filterscủahandlersvàloggerstrong từ điển được truyền chologging.config.dictConfig().bpo-46422: Sử dụng
dis.Positionstrongdis.Instructionthay vìtuplethông thường.bpo-46434:
pdbhiện xử lýhelpmột cách duyên dáng khi thiếu__doc__, chẳng hạn như khi chạy với các tệp.pycđược tối ưu hóa trước.bpo-43869: Python sử dụng cùng thời gian Epoch trên tất cả các nền tảng. Thêm một bài kiểm tra đơn vị rõ ràng để đảm bảo rằng đó là trường hợp. Bản vá của Victor Stinner.
bpo-46414: Thêm
typing.reveal_type(). Bản vá của Jelle Zijlstra.bpo-40280:
subprocesshiện nhập các mục nhập dành riêng cho Windows khi có mô-đunmsvcrtvà nhập dành riêng cho POSIX trên tất cả các nền tảng khác. Điều này đưa ra một ngoại lệ rõ ràng khi_posixsubprocesskhông có sẵn (ví dụ: mục tiêu trình duyệt Emscripten).bpo-40066:
IntEnum,IntFlagvàStrEnumsử dụng loại hỗn hợp cho đầu rastr()vàformat()của chúng.bpo-46316: Tối ưu hóa
pathlib.Path.iterdir()bằng cách xóa kiểm tra không cần thiết cho các mục đặc biệt.bpo-29688: Tài liệu
pathlib.Path.absolute()(đã luôn tồn tại).bpo-43012: Lớp
_Accessornội bộ và lỗi thời của mô-đun pathlib đã bị xóa để chuẩn bị địa hình cho các cải tiến sắp tới của mô-đun.bpo-46258: Tăng tốc
math.isqrt()cho số nguyên dương nhỏ bằng cách thay thế hai bước chia bằng bảng tra cứu.bpo-46242: Cải thiện thông báo lỗi khi tạo loại
enum.Enummới phân lớp mộtEnumhiện có với_member_names_bằngenum.Enum.__call__().bpo-43118: Sửa lỗi trong
inspect.signature()khiến nó bị lỗi trên một số lớp con của các lớp có mô-đun tham chiếu toàn cục__text_signature__. Bản vá của Weipeng Hong.bpo-26552: Đã khắc phục trường hợp
asyncio.ensure_future()bị lỗi không đóng được coroutine. Bản vá của Kumar Aditya.bpo-21987: Khắc phục sự cố khiến
tarfile.TarFile.getmember()nhận được tên thư mục có dấu gạch chéo ở cuối.bpo-46124: Cập nhật
zoneinfođể dựa vào importlib.resources API có thể duyệt qua.bpo-46103: Bây giờ
inspect.getmembers()chỉ nhận được thuộc tính__bases__từ loại lớp. Bản vá của Weipeng Hong.bpo-46080: Khắc phục ngoại lệ trong việc tạo văn bản trợ giúp argparse nếu mặc định của đối số
argparse.BooleanOptionalActionlàargparse.SUPPRESSvà nó đã chỉ địnhhelp. Bản vá của Felix Fontein.bpo-44791: Sửa lỗi thay thế
ParamSpectrongConcatenatebằng các biểu thức tham số khác nhau. Việc thay thế bằng một danh sách các loại bây giờ sẽ trả về một bộ các loại. Việc thay thế bằngConcatenatebây giờ trả vềConcatenatevới danh sách đối số được nối.
Tài liệu¶
bpo-46463: Sửa tập lệnh
escape4chm.pyđược sử dụng khi xây dựng tệp tài liệu CHM
Kiểm tra¶
bpo-43478: Bạn không thể cung cấp Mô hình làm thông số kỹ thuật cho các Mô hình khác nữa. Kết quả là, một đối tượng đã được mô phỏng không thể được chuyển tới
mock.Mock(). Điều này có thể phát hiện ra lỗi trong các thử nghiệm vì các Mô phỏng có nguồn gốc từ Mô phỏng này sẽ luôn vượt qua các thử nghiệm nhất định (ví dụ: isinstance) và các hàm xác nhận dựng sẵn (ví dụ: khẳng định_gọi_once_with) sẽ vượt qua vô điều kiện.bpo-46616: Đảm bảo
test_importlib.test_windowsdọn sạch các khóa đăng ký sau khi hoàn thành.bpo-44359: test_ftplib hiện âm thầm bỏ qua các lỗi ổ cắm để ngăn chặn việc ghi lại các ngoại lệ luồng chưa được xử lý. Bản vá của Victor Stinner.
bpo-46600: Sửa test_gdb.test_pycfunction() cho Python được xây dựng bằng
clang -Og. Chấp nhận các hàm nội tuyến trong truy nguyên gdb. Bản vá của Victor Stinner.bpo-46542: Khắc phục sự cố Python trong test_lib2to3 khi sử dụng Python được tích hợp ở chế độ gỡ lỗi: giới hạn giới hạn đệ quy. Bản vá của Victor Stinner.
bpo-46576: test_peg_generator hiện vô hiệu hóa tính năng tối ưu hóa trình biên dịch khi thử nghiệm quá trình biên dịch các phần mở rộng C của chính nó để tăng tốc đáng kể quá trình thử nghiệm trên các bản dựng CPython không gỡ lỗi.
bpo-46542: Sửa các bài kiểm tra
test_jsonđang kiểm traRecursionError: sửa đổi các bài kiểm tra này để sử dụngsupport.infinite_recursion(). Bản vá của Victor Stinner.bpo-13886: Bỏ qua các bài kiểm tra test_buildin PTY trên các ký tự không phải ASCII nếu mô-đun dòng đọc được tải. Mô-đun readline thay đổi hành vi input(), nhưng test_buildin không nhằm mục đích kiểm tra mô-đun readline. Bản vá của Victor Stinner.
bpo-40280: Thêm trang trí
test.support.requires_fork()để đánh dấu các bài kiểm tra yêu cầuos.fork()hoạt động.bpo-40280: Thêm trang trí
test.support.requires_subprocess()để đánh dấu các bài kiểm tra yêu cầu mô-đunsubprocesshoặcos.spawn*hoạt động. Nền tảng wasm32-emscripten không hỗ trợ các quy trình.bpo-46126: Tắt 'mô tả' khi chạy thử nghiệm nội bộ.
xây dựng¶
bpo-46602: Đã dọn dẹp configure.ac để conftest.c bị cắt bớt thay vì được nối thêm. Điều này hỗ trợ trong trường hợp 'rm' của conftest.c không xảy ra giữa các lần kiểm tra. Các vấn đề ở hạ lưu chẳng hạn như SOABI bị ghi đè có thể xảy ra.
bpo-46600: Sửa lỗi kiểm tra xem trình biên dịch C có hỗ trợ tùy chọn
-Ogtrong tập lệnh./configuređể sử dụng-Ogtrên clang có hỗ trợ nó hay không. Bản vá của Victor Stinner.bpo-38472: Sửa lỗi phát hiện GCC trong setup.py khi biên dịch chéo. Trình biên dịch C hiện đang chạy với LC_ALL=C. Trước đây, việc phát hiện không thành công với ngôn ngữ tiếng Đức.
bpo-46513: configure không còn sử dụng macro
AC_C_CHAR_UNSIGNEDvàpyconfig.hkhông còn xác định ký hiệu dành riêng__CHAR_UNSIGNED__nữa.bpo-46471: Sử dụng các singleton chung cho các đối tượng byte đơn trong deepfreeze.
bpo-46443: Deepfreeze hiện sử dụng các số nguyên nhỏ được lưu trong bộ nhớ đệm vì nó tiết kiệm một số dung lượng cho các số nguyên nhỏ phổ biến.
bpo-46429: Hợp nhất tất cả các tệp được đông lạnh sâu thành một để tiết kiệm dung lượng. Bản vá của Kumar Aditya.
bpo-45569: Bản dựng hiện mặc định sử dụng các chữ số 30 bit cho số nguyên Python. Trước đây, chữ số 15 bit hoặc 30 bit sẽ được chọn, tùy thuộc vào nền tảng. Các chữ số 15 bit vẫn có thể được chọn bằng cách sử dụng tùy chọn
--enable-big-digits=15cho tập lệnhconfigurehoặc bằng cách xác địnhPYLONG_BITS_IN_DIGITtrongpyconfig.h.bpo-45925: Cập nhật trình cài đặt Windows để sử dụng SQLite 3.37.2.
bpo-43112: Phát hiện musl libc dưới dạng SOABI riêng biệt (được gắn thẻ là
linux-musl).
cửa sổ¶
bpo-33125: Trình cài đặt dựa trên EXE/MSI truyền thống dành cho Windows hiện có sẵn cho ARM64
bpo-46362: os.path.abspath("C:CON") hiện đã được sửa để trả về "\.CON", không phải cùng một đường dẫn. Sự hồi quy đúng với tất cả các thiết bị DOS cũ như COM1, LPT1 hoặc NUL.
bpo-44934: Trình cài đặt hiện cung cấp tùy chọn chỉ dòng lệnh để thêm thư mục cài đặt vào cuối
PATHthay vì ở đầu.
macOS¶
bpo-45925: Cập nhật trình cài đặt macOS lên SQLite 3.37.2.
IDLE¶
bpo-45296: Làm rõ việc đóng, thoát và thoát trong IDLE. Trong menu Tệp, 'Đóng' và 'Thoát' hiện là 'Đóng cửa sổ' (cửa sổ hiện tại) và 'Thoát' hiện là 'Thoát IDLE' (bằng cách đóng tất cả các cửa sổ). Trong Shell, 'quit()' và 'exit()' có nghĩa là 'đóng Shell'. Nếu không có cửa sổ nào khác thì cái này cũng thoát IDLE.
C API¶
bpo-40170: Xóa macro
PyHeapType_GET_MEMBERS(). Nó đã bị lộ ra trong C API công khai do nhầm lẫn, nó chỉ được sử dụng bởi Python trong nội bộ. Thay vào đó hãy sử dụng thành viênPyTypeObject.tp_members. Bản vá của Victor Stinner.bpo-40170: Di chuyển các hàm riêng _Py_GetAllocatedBlocks() và _PyObject_DebugMallocStats() sang C API nội bộ. Bản vá của Victor Stinner.
bpo-46433: Hàm nội bộ _PyType_GetModuleByDef hiện xử lý chính xác các mẫu kế thừa liên quan đến các kiểu tĩnh.
bpo-45459:
Py_buffervà nhiều chức năng liên quan đếnPy_bufferhiện là một phần của API giới hạn và ABI ổn định.bpo-14916: Đã sửa lỗi trong trình mã thông báo ngăn
PyRun_InteractiveOnephân tích cú pháp từ FD được cung cấp.
Python 3.11.0 alpha 4¶
Release date: 2022-01-13
Cốt lõi và nội dung¶
bpo-46070:
Py_EndInterpreter()hiện bỏ theo dõi rõ ràng tất cả các đối tượng hiện được GC theo dõi. Trước đây, nếu sau này một đối tượng được một trình thông dịch khác sử dụng, việc gọiPyObject_GC_UnTrack()trên đối tượng đó sẽ bị lỗi nếu đối tượng trước đó hoặc đối tượng tiếp theo của cấu trúcPyGC_Headtrở thành một con trỏ lơ lửng. Bản vá của Victor Stinner.bpo-46347: Khắc phục rò rỉ bộ nhớ trong PyEval_EvalCodeEx.
bpo-46339: Khắc phục sự cố trong trình phân tích cú pháp khi truy xuất văn bản lỗi cho các biểu thức chuỗi f nhiều dòng không bắt đầu ở dòng đầu tiên của chuỗi. Bản vá của Pablo Galindo
bpo-46331: Không đặt số dòng của chuỗi tài liệu lưu trữ lệnh. Sửa lỗi hồi quy được giới thiệu trong 3.11 alpha.
bpo-46314: Loại bỏ sự kiện "gọi" giả khi tạo hàm lambda vô tình được đưa vào trong 3.11a4.
bpo-46289: Khai báo ASDL của
FormattedValueđã thay đổi để phản ánh trườngconversionkhông phải là tùy chọn.bpo-46297: Đã khắc phục sự cố trình thông dịch khi khởi động với nhiều PythonPath được đặt trong sổ đăng ký Windows. Bản vá của Derzsi Dániel.
bpo-46237: Sửa số dòng lỗi mã thông báo bên trong chuỗi f. Bản vá của Pablo Galindo.
bpo-46263: Chúng tôi luôn mong đợi cấu hình "use_frozen_modules" sẽ được đặt, giờ đây getpath.c đã được viết lại bằng Python thuần túy và logic được cải thiện.
bpo-46006: Khắc phục hồi quy khi một phương thức loại như
__init__()được sửa đổi trong trình thông dịch phụ. Sửa lỗi hồi quy trong_PyUnicode_EqualToASCIIId()và gõupdate_slot(). Hoàn nguyên thay đổi đã làm cho từ điển Unicode của các chuỗi nội bộ tương thích với các trình thông dịch phụ: từ điển nội bộ được chia sẻ lại bởi tất cả các trình thông dịch. Bản vá của Victor Stinner.bpo-45923: Thêm mã hoạt động RESUME. Đây là một điều không hợp lý. Nó được trình biên dịch phát ra ở bất cứ nơi nào có thể nhập hàm Python. Nó được trình thông dịch sử dụng để thực hiện kiểm tra theo dõi và tối ưu hóa.
Thư viện¶
bpo-46208: Khắc phục sự hồi quy của os.path.normpath("A/../../B") không trả về "../B" như mong đợi mà là "B".
Cốt lõi và nội dung¶
bpo-46240: Sửa thông báo lỗi dấu ngoặc đơn không đóng khi tokenizer không đến cuối nguồn khi báo lỗi. Bản vá của Pablo Galindo
bpo-46009: Xóa mã
GEN_START.bpo-46235: Một số thao tác nhân chuỗi nhất định như
[0] * 1_000hiện nhanh hơn nhờ tối ưu hóa tính toán tham chiếu. Bản vá của Dennis Sweeney.bpo-46221:
PREP_RERAISE_STARkhông còn đẩylastivào ngăn xếp nữa.bpo-46202: Xóa
POP_EXCEPT_AND_RERAISEvà thay thế nó bằng một chuỗi các opcode khác tương đương.
Thư viện¶
bpo-46085: Sửa cơ chế iterator cache của
OrderedDict.
Cốt lõi và nội dung¶
bpo-46055: Tăng tốc độ dịch chuyển với các số nguyên nhỏ hơn
PyLong_BASE. Bản vá của Xinhang Xu.bpo-46110: Thêm kiểm tra đệ quy tối đa vào trình phân tích cú pháp PEG để tránh tràn ngăn xếp. Bản vá của Pablo Galindo
bpo-46107: Sửa lỗi trong đó
ExceptionGroup.split()vàExceptionGroup.subgroup()không sao chép trường__note__của nhóm ngoại lệ vào các phần.bpo-45711: Việc thể hiện các ngoại lệ được xử lý của trạng thái trình thông dịch (còn gọi là exec_info hoặc _PyErr_StackItem) hiện chỉ có trường
exc_value,exc_typevàexc_tracebackđã bị xóa vì giá trị của chúng có thể bắt nguồn từexc_value.bpo-44525: Thay thế bốn lệnh mã byte cuộc gọi, trong đó một lệnh gọi trước và hai lệnh gọi.
Loại bỏ
CALL_FUNCTION,CALL_FUNCTION_KW,CALL_METHODvàCALL_METHOD_KW.Thêm hướng dẫn gọi
CALL_NO_KWvàCALL_KWcũng như tiền tốPRECALL_METHODđể ghép nối vớiLOAD_METHOD.bpo-46039: Xóa lệnh
YIELD_FROMvà thay thế bằng lệnhSENDthực hiện thao tác tương tự nhưng không có vòng lặp.bpo-45635: Mã được gọi từ
_PyErr_Display()đã được cấu trúc lại để cải thiện việc xử lý lỗi. Bây giờ nó thoát ngay lập tức khi gặp lỗi không thể phục hồi.bpo-46054: Sửa lỗi trình phân tích cú pháp khi phân tích các ký tự không phải utf8 trong tệp nguồn. Bản vá của Pablo Galindo.
bpo-46042: Cải thiện vị trí của dấu mũ trong các ngoại lệ
SyntaxErrorđược phát ra bởi bảng ký hiệu. Bản vá của Pablo Galindo.bpo-46049: Đảm bảo các tệp
._pthhoạt động như dự định trên các nền tảng khác ngoài Windows.bpo-46048: Sửa lỗi phân tích cú pháp các tệp
._pthkhi khởi động để đường dẫn một ký tự được đọc chính xác.bpo-37971: Khắc phục lỗi trong đó số dòng được cung cấp trong truy nguyên khi ứng dụng trang trí đưa ra ngoại lệ bị sai.
bpo-46031: Thêm opcode
POP_JUMP_IF_NOT_NONEvàPOP_JUMP_IF_NONEđể tăng tốc độ nhảy có điều kiện.bpo-46025: Khắc phục sự cố trong mô-đun
atexitliên quan đến các chức năng tự hủy đăng ký trước khi đưa ra ngoại lệ. Bản vá của Pablo Galindo.
Thư viện¶
Cốt lõi và nội dung¶
bpo-44525: Chuyên biệt hóa lệnh CALL_FUNCTION cho các lệnh gọi đến các kiểu dựng sẵn với một đối số duy nhất. Tăng tốc
range(x),list(x)và đặc biệt làtype(obj).bpo-42918: Khắc phục lỗi trong đó chức năng
compile()tích hợp không phải lúc nào cũng đưa raSyntaxErrorkhi truyền nhiều câu lệnh ở chế độ 'đơn'. Bản vá của Weipeng Hong.bpo-45953: Trình thông dịch chính trong _PyRuntimeState.interpreters hiện được phân bổ tĩnh (như một phần của _PyRuntime). Tương tự như vậy đối với trạng thái luồng ban đầu của mỗi trình thông dịch. Điều này có nghĩa là ít phân bổ hơn trong quá trình khởi tạo thời gian chạy cũng như vị trí bộ nhớ tốt hơn cho các đối tượng trạng thái chính này.
bpo-45292: Hoàn tất quá trình triển khai PEP 654: thêm
except*.bpo-43413: Hoàn nguyên các thay đổi trong
set.__init__. Lớp con củasetcần xác định phương thức__init__()nếu nó định nghĩa phương thức__new__()với các tham số từ khóa bổ sung.bpo-43931: Đã thêm hằng số
Py_Versioncó cùng giá trị vớiPY_VERSION_HEX. Bản vá của Gabriele N. Tornetta.
Thư viện¶
bpo-46342: Trình trang trí
@typing.finalhiện đặt thuộc tính__final__trên đối tượng được trang trí để cho phép xem xét nội tâm thời gian chạy. Bản vá của Jelle Zijlstra.bpo-46328: Đã thêm phương thức
sys.exception()trả về phiên bản ngoại lệ đang hoạt động.bpo-46307: Thêm phương thức
string.Template.is_valid()vàstring.Template.get_identifiers().bpo-46306: Giả sử rằng
types.CodeTypeluôn cótypes.CodeType.co_firstlinenotrongdoctest.bpo-40479: Sửa tùy chọn
hashlibusedforsecurity để hoạt động chính xác với OpenSSL 3.0.0 ở chế độ FIPS.bpo-46070: Khắc phục lỗi phân đoạn có thể xảy ra khi nhập song song mô-đun
asynciotừ các trình thông dịch phụ khác nhau. Bản vá của Erlend E. Aasland.bpo-46244: Đã xóa
__slots__khỏityping.ParamSpecvàtyping.TypeVar. Họ không phục vụ mục đích. Bản vá của Arie Bovenberg.bpo-46278: Phản ánh đối số
contexttrong các phương thứcAbstractEventLoop.call_*(). Việc triển khai vòng lặp đã hỗ trợ nó.bpo-46269: Loại bỏ lớp vỏ đặc biệt của
__new__trongenum.Enum.__dir__().bpo-46266: Cải thiện hằng số ngày trong
calendar.Bây giờ tất cả các hằng số (
MONDAY...SUNDAY) đều được ghi lại, kiểm tra và thêm vào__all__.bpo-46257: Đã tối ưu hóa các hàm trung bình, phương sai và stdev trong mô-đun thống kê. Nếu đầu vào là một trình lặp, nó sẽ được sử dụng trong một lần thay vì tiêu tốn bộ nhớ bằng cách chuyển đổi thành danh sách. Thuật toán truyền một lần nhanh hơn khoảng hai lần so với hai mật mã trước đó.
bpo-41011: Đã thêm hai biến mới vào pyvenv.cfg được tạo bởi mô-đun
venv: executable cho tệp thực thi và command cho dòng lệnh được sử dụng để tạo môi trường.bpo-46239: Cải thiện thông báo lỗi khi nhập
asyncio.windows_eventstrên máy không phải Windows.bpo-46238: Sử dụng lại hằng số
_winapitrongasyncio.windows_events.bpo-46222: Thêm hằng số tệp gửi
SF_NOCACHEcho FreeBSD cho mô-đun posix.bpo-37295: Thêm đường dẫn nhanh cho
0 <= k <= n <= 67chomath.comb().bpo-46176: Thêm hằng số
MAP_STACKcho mô-đun mmap.bpo-43424: Không dùng
webbrowser.MacOSXOSAScript._namenữa và thay vào đó hãy sử dụngname.bpo-45321: Đã thêm mã lỗi bị thiếu vào mô-đun
xml.parsers.expat.errors.bpo-46125: Kiểm tra cấu trúc lại để kiểm tra trực tiếp API có thể truyền tải. Bao gồm các thay đổi từ importlib 5.4.0.
bpo-46118: Đã chuyển importlib.resources và chức năng liên quan của nó sang một gói.
bpo-37578: Thêm tham số include_hidden vào
glob()vàiglob()để khớp các file và thư mục ẩn khi sử dụng các ký tự đặc biệt như*,**,?và[].bpo-20369:
concurrent.futures.wait()không còn bị chặn vĩnh viễn khi được cung cấp Hợp đồng tương lai trùng lặp. Bản vá của Kumar Aditya.bpo-46105: Thông số kỹ thuật tôn trọng khi tạo thông số kỹ thuật yêu cầu bằng url và tính năng bổ sung (importlib_metadata 4.8.3).
bpo-44893: Đối tượng EntryPoint không còn là bộ dữ liệu nữa. Phương tiện được đề xuất để truy cập là theo thuộc tính ('.name', '.group') hoặc trình truy cập ('.load()'). Truy cập theo chỉ mục không được dùng nữa và sẽ đưa ra cảnh báo không dùng nữa.
bpo-22815: In những thành công bất ngờ cùng với những lỗi, lỗi tóm tắt trong
unittest.TextTestResult.bpo-22047: Việc gọi
add_argument_group()trên một nhóm đối số không được dùng nữa. Việc gọiadd_argument_group()hoặcadd_mutually_exclusive_group()trên một nhóm loại trừ lẫn nhau không được dùng nữa.Những tính năng này không bao giờ được hỗ trợ và không phải lúc nào cũng hoạt động chính xác. Các chức năng tồn tại trên API một cách tình cờ thông qua tính kế thừa và sẽ bị xóa trong tương lai.
bpo-26952:
argparsetăngValueErrorvới thông báo rõ ràng khi cố gắng hiển thị mức sử dụng cho một nhóm trống loại trừ lẫn nhau. Trước đây nó đã đưa ra mộtIndexErrorkhó hiểu.bpo-45615: Các hàm trong mô-đun
tracebacktăngTypeErrorthay vìAttributeErrorkhi đối số ngoại lệ không thuộc loạiBaseException.bpo-16594: Thêm cờ allow_reuse_port trong socketserver.
bpo-27718: Khắc phục trợ giúp cho mô-đun
signal. Một số chức năng (ví dụ:signal()vàgetsignal()) đã bị bỏ qua.bpo-46032: Phương thức
registry()của các hàmfunctools.singledispatch()hiện kiểm tra đối số đầu tiên hoặc chú thích tham số đầu tiên và đưa ra TypeError nếu nó không được hỗ trợ. Các "loại" không được hỗ trợ trước đây đã bị bỏ qua (ví dụ:typing.List[int]) hoặc gây ra lỗi tại thời điểm gọi (ví dụ:list[int]).bpo-46014: Thêm khả năng sử dụng
typing.Unionvàtypes.UnionTypelàm đối số gửi tớifunctools.singledispatch. Bản vá được cung cấp bởi Yurii Karabas.bpo-27062: Thêm
__all__vàoinspect, bản vá của Kumar Aditya.bpo-46018: Đảm bảo rằng
math.expm1()không dâng lên khi dòng chảy tràn.bpo-46016: Thêm hằng số
F_DUP2FDvàF_DUP2FD_CLOEXECtừ FreeBSD vào mô-đunfcntl.bpo-45755: Bí danh chung
typinghiện tiết lộ các thuộc tính lớp của lớp chung ban đầu khi được chuyển tớidir(). Đây là hành vi lên tới Python 3.6 nhưng đã được thay đổi trong 3.7-3.9.bpo-45874: Chuỗi truy vấn trống, không có đối số truy vấn, hiện được xử lý chính xác trong
urllib.parse.parse_qsl. Điều này đã gây ra sự cố trước đây khi bật tính năng phân tích cú pháp nghiêm ngặt.bpo-44674: Thay đổi cách các lớp dữ liệu không cho phép các giá trị mặc định có thể thay đổi. Nó thường sử dụng danh sách các loại đã biết (danh sách, dict, set). Bây giờ nó không cho phép các đối tượng không thể băm được làm mặc định. Nó sử dụng tính không thể băm làm đại diện cho khả năng thay đổi. Bản vá của Eric V. Smith, ý tưởng của Raymond Hettinger.
bpo-23882: Xóa hỗ trợ gói không gian tên (PEP 420) khỏi khám phá nhỏ nhất. Nó được giới thiệu trong Python 3.4 nhưng đã bị hỏng kể từ Python 3.7.
bpo-25066: Đã thêm phương thức
__repr__()vào các đối tượngmultiprocessing.Event, bản vá của Kumar Aditya.bpo-45643: Đã thêm
signal.SIGSTKFLTtrên nền tảng nơi tín hiệu này được xác định.bpo-44092: Tìm nạp qua rollback không còn tăng
InterfaceErrornữa. Thay vào đó, chúng tôi để thư viện SQLite xử lý những trường hợp này. Bản vá của Erlend E. Aasland.bpo-42413: Thay thế
concurrent.futures.TimeoutErrorvàasyncio.TimeoutErrorbằngTimeoutErrortích hợp, giữ các tên này làm bí danh không được dùng nữa.
Tài liệu¶
Kiểm tra¶
bpo-46296: Thêm trường hợp thử nghiệm cho
enumvới_use_args_ == Truevà_member_type_ == object.bpo-46205: Khắc phục tình trạng treo trong runtest_mp do tình trạng cuộc đua
bpo-46263: Fix test_capi trên FreeBSD 14-dev: hướng dẫn jemalloc không lấp đầy bộ nhớ trống bằng byte rác.
bpo-46262: Che đường dẫn
ValueErrortrong các thử nghiệm dành choenum.Flag._missing_().bpo-46150: Bây giờ
fakenametrongtest_pathlib.PosixPathTest.test_expanduserđược kiểm tra là không tồn tại.bpo-46129: Viết lại các bài kiểm tra
asyncio.locksvới cách sử dụngunittest.IsolatedAsyncioTestCase.bpo-23819: Đã sửa lỗi kiểm tra
asyncioở chế độ tối ưu hóa python. Bản vá của Kumar Aditya.bpo-46114: Sửa trường hợp thử nghiệm cho phiên bản OpenSSL 3.0.1. OpenSSL 3.0 sử dụng
0xMNN00PP0L.
xây dựng¶
bpo-44133: Khi Python được định cấu hình bằng
--without-static-libpython, thư viện tĩnh Python (libpython.a) không còn được tạo nữa. Bản vá của Victor Stinner.bpo-44133: Khi Python được xây dựng mà không có
--enable-shared, chương trìnhpythonhiện được liên kết với các tệp đối tượng, thay vì được liên kết với thư viện tĩnh Python (libpython.a), để đảm bảo rằng tất cả các ký hiệu đều được xuất. Trước đây, trình liên kết đã bỏ qua một số ký hiệu như hàmPy_FrozenMain(). Bản vá của Victor Stinner.bpo-40280: Tập lệnh
configurecó tùy chọn mới--with-emscripten-targetđể chọn trình duyệt hoặc nút làm mục tiêu xây dựng Emscripten.bpo-46315: Đã thêm và sửa lỗi kiểm tra
#ifdef HAVE_FEATUREđể tìm chức năng không có trên nền tảng WASI.bpo-45723: Đã sửa lỗi hồi quy trong quá trình kiểm tra
configurechoselect.epoll().bpo-46263:
configurekhông còn đặtMULTIARCHtrên nền tảng FreeBSD nữa.bpo-46106: Đã cập nhật OpenSSL lên 1.1.1m trong các bản dựng Windows, bản dựng trình cài đặt macOS và CI. Bản vá của Kumar Aditya.
bpo-46088: Tự động phát hiện hoặc cài đặt thời gian chạy Python bootstrap khi xây dựng từ Visual Studio.
bpo-46072: Thêm tùy chọn cấu hình --with-pystats để bật thu thập số liệu thống kê nội bộ.
bpo-40280: Một thư mục mới
Tools/wasmchứa các trình trợ giúp liên quan đến WebAssembly nhưconfig.siteghi đè cho wasm32-emscripten, trình tạo nội dung wasm để gói stdlib và README.bpo-46023: makesetup không còn xây dựng các tiện ích mở rộng đã được đánh dấu là disabled nữa. Điều này cho phép người dùng vô hiệu hóa các mô-đun trong
Modules/Setup.local.bpo-45949: Sử dụng Python
freeze_modulethuần túy cho tất cả trừ các tệp khởi động importlib. Tùy chọn--with-freeze-moduleconfigure không còn cần thiết cho các bản dựng chéo.
cửa sổ¶
bpo-46217: Đã xóa tham số không được hỗ trợ trên Windows 8.1 và Windows 10 đời đầu và có thể gây ra lỗi xây dựng hoặc thời gian chạy.
macOS¶
bpo-40477: Ứng dụng Python Launcher dành cho macOS hiện khởi chạy chính xác các tập lệnh và nếu cần, ứng dụng Terminal khi chạy trên các bản phát hành macOS gần đây.
C API¶
bpo-46236: Sửa lỗi trong
PyFunction_GetAnnotations()khiến nó trả vềtuplethay vìdict.bpo-46140:
PyBuffer_GetPointer(),PyBuffer_FromContiguous(),PyBuffer_ToContiguous()vàPyMemoryView_FromBuffer()hiện lấy thông tin bộ đệm bằngconst Py_buffer *thay vìPy_buffer *, vì chúng không cần khả năng thay đổi.PyBuffer_FromContiguous()hiện cũng lấy bộ đệm nguồn làconst void *và tương tựPyBuffer_GetPointer()cũng có những bước tiến nhưconst Py_ssize_t *.bpo-45855: Chứng minh rằng đối số no_block với
PyCapsule_Import()hiện không hoạt động.bpo-45855: Đã thay thế việc sử dụng
PyImport_ImportModuleNoBlock()không được dùng nữa bằngPyImport_ImportModule()trong các mô-đun stdlib. Bản vá của Kumar Aditya.bpo-46007: Macro
PyUnicode_CHECK_INTERNED()đã bị loại khỏi C API giới hạn. Nó không bao giờ có thể sử dụng được ở đó vì nó sử dụng các cấu trúc bên trong không có sẵn trong C API giới hạn. Bản vá của Victor Stinner.
Python 3.11.0 alpha 3¶
Release date: 2021-12-08
Cốt lõi và nội dung¶
bpo-46009: Khôi phục hành vi từ phiên bản 3.9 trở về trước khi gửi thông tin không phải Không tới trình tạo mới khởi động. Trong 3.9, điều này không ảnh hưởng đến trạng thái của trình tạo. Trong 3.10.0 và 3.10.1
gen_func().send(0)tương đương vớigen_func().throw(TypeError(...)làm cạn kiệt máy phát điện. Từ phiên bản 3.10.2 trở đi, hành vi đã được hoàn nguyên về phiên bản 3.9.bpo-46004: Sửa vị trí
SyntaxErrorcho các lỗi liên quan đến vòng lặp với mục tiêu không hợp lệ. Bản vá của Pablo Galindobpo-45711:
_PyErr_ChainStackItem()không còn chuẩn hóaexc_infonữa (bao gồm cả việc thiết lập truy nguyên trên phiên bản ngoại lệ) vìexc_infoluôn được chuẩn hóa.bpo-45607: Trường
__note__đã được thêm vàoBaseException. Theo mặc định, nó làNonenhưng có thể được đặt thành một chuỗi được thêm vào truy nguyên của ngoại lệ.bpo-45947: Đặt con trỏ tới lệnh và giá trị ngay trước tiêu đề GC. Điều này làm giảm số lần tải bộ nhớ phụ thuộc để truy cập vào lệnh hoặc giá trị từ 3 xuống 1.
bpo-45915:
is_valid_fdhiện sử dụngfcntl(fd, F_GETFD)nhanh hơn trên Linux, macOS và Windows.bpo-44530: Hoàn nguyên một thay đổi đối với
code.__new__audit event từ bản phát hành trước đó.bpo-42268: Không thực hiện được bước định cấu hình nếu trình biên dịch đã chọn không hỗ trợ quá trình khử trùng bộ nhớ. Bản vá của Pablo Galindo
bpo-45711: Ba giá trị của
exc_infohiện luôn nhất quán với nhau. Đặc biệt, các trườngtypevàtracebackhiện được lấy từ phiên bản ngoại lệ. Điều này tác động đến giá trị trả về củasys.exc_info()vàPyErr_GetExcInfo()nếu phiên bản ngoại lệ được sửa đổi trong khi ngoại lệ được xử lý, cũng nhưPyErr_SetExcInfo(), hiện bỏ qua các đối sốtypevàtracebackđược cung cấp cho nó.bpo-45727: Tinh chỉnh lỗi cú pháp tùy chỉnh cho thấy rằng dấu phẩy có thể bị thiếu để chỉ kích hoạt khi phát hiện các biểu thức giữa dấu ngoặc đơn hoặc dấu ngoặc đơn. Bản vá của Pablo Galindo
bpo-45885: Chuyên opcode
COMPARE_OPsử dụng máy PEP 659.bpo-45786: Phân bổ không gian cho khung thông dịch trong đối tượng khung, để tránh phân bổ bổ sung khi đối tượng khung hết thời gian kích hoạt khung.
Thư viện¶
Cốt lõi và nội dung¶
bpo-45813: Khắc phục sự cố khi gọi coro.cr_frame.clear() sau khi coroutine được giải phóng.
bpo-45811: Cải thiện lỗi tokenizer khi gặp các ký tự điều khiển vô hình trong trình phân tích cú pháp. Bản vá của Pablo Galindo
bpo-45848: Cho phép trình phân tích cú pháp lấy các dòng lỗi trực tiếp từ các tệp được mã hóa. Bản vá của Pablo Galindo
bpo-45709: Khôi phục hành vi từ phiên bản 3.10 khi truy tìm một ngoại lệ được đưa ra trong câu lệnh with.
bpo-44525: Thêm opcode
COPY_FREE_VARSmới, để sao chép các biến tự do từ hàm sang khung một cách rõ ràng. Giúp tối ưu hóa các cuộc gọi đến hàm Python.bpo-45829: Chuyên
BINARY_SUBSCRcho các lớp có phương thức__getitem__được triển khai bằng Pythonbpo-45826: Đã khắc phục sự cố khi gọi
.with_traceback(None)trênNameError. Điều này xảy ra nội bộ trongunittest.TestCase.assertRaises().bpo-45822: Đã sửa lỗi trong trình phân tích cú pháp khiến nó không tôn trọng cookie mã hóa PEP 263 khi không có cờ nào được cung cấp. Bản vá của Pablo Galindo
bpo-45820: Sửa lỗi segfault khi trình phân tích cú pháp bị lỗi mà không đọc được bất kỳ thông tin đầu vào nào. Bản vá của Pablo Galindo
bpo-45636: Đơn giản hóa việc triển khai
BINARY_OPbằng cách lập chỉ mục vào một mảng các con trỏ hàm (thay vì bật oparg).bpo-42540: Khắc phục sự cố khi
os.fork()được gọi bằng bộ cấp phát bộ nhớ không mặc định đang hoạt động.bpo-45738: Sửa tính toán vị trí lỗi cho các ký tự tiếp tục không hợp lệ trong trình phân tích cú pháp. Bản vá của Pablo Galindo.
bpo-45636: Xóa "đường dẫn nhanh" hiện có cho định dạng chuỗi kiểu cũ vì dường như nó không còn có bất kỳ tác động nào có thể đo lường được nữa.
bpo-45753: Thực hiện kiểm tra đệ quy hiệu quả hơn một chút bằng cách theo dõi số lượng cuộc gọi còn lại trước khi tràn.
bpo-45773: Khắc phục tình trạng treo trình biên dịch khi cố gắng tối ưu hóa các kiểu nhảy nhất định.
bpo-45764: Trình phân tích cú pháp hiện đưa ra thông báo lỗi tốt hơn khi bỏ dấu ngoặc đơn mở
(sau câu lệnhdef:>>> giải quyết: Tệp "<stdin>", dòng 1 chắc chắn f: ^ Lỗi cú pháp: dự kiến '('
bpo-45609: Chuyên opcode
STORE_SUBSCRsử dụng máy PEP 659.bpo-45636: Thay thế tất cả các hướng dẫn
BINARY_*vàINPLACE_*bằng số bằng một triển khaiBINARY_OPduy nhất.bpo-45582: Tính toán đường dẫn (được gọi là
getpath) đã được triển khai lại dưới dạng mô-đun Python cố định. Điều này sẽ không có tác động rõ ràng nhưng có thể ảnh hưởng đến việc tính toán tất cả các đường dẫn được tham chiếu trongsysvàsysconfig.bpo-45450: Cải thiện thông báo lỗi cú pháp cho các đối số trong ngoặc đơn. Bản vá của Pablo Galindo.
Thư viện¶
bpo-27946: Khắc phục sự cố có thể xảy ra khi nhận thuộc tính của
xml.etree.ElementTree.Elementđồng thời thay thế lệnhattrib.bpo-45711: Làm cho
asynciobình thường hóa các ngoại lệ ngay khi chúng được ghi lại bằngPyErr_Fetch()và trước khi chúng được lưu trữ dưới dạng bộ ba ex_info. Điều này làm choasynciophù hợp với phần còn lại của cơ sở mã, trong đó bộ ba exc_info luôn được chuẩn hóa.bpo-23819: Đã thay thế các xác nhận bằng ngoại lệ trong asyncio, bản vá của Kumar Aditya.
bpo-13236:
unittest.TextTestResultvàunittest.TextTestRunnerhiện luồng đầu ra thường xuyên hơn.bpo-45917: Đã thêm
math.exp2():, trả về 2 lũy thừa của x.bpo-37658: Khắc phục sự cố khi ở một số điều kiện nhất định,
asyncio.wait_for()có thể cho phép coroutine hoàn thành thành công nhưng không trả về kết quả, có khả năng gây rò rỉ bộ nhớ hoặc các sự cố khác.bpo-45876: Cải thiện độ chính xác của stdev() và pstdev() trong mô-đun thống kê. Khi đầu vào là số float hoặc phân số, đầu ra là số float được làm tròn chính xác
bpo-44649: Xử lý dataclass(slots=True) với trường có giá trị mặc định nhưng init=False.
bpo-45803: Đã thêm tham số kw_only bị thiếu vào dataclasses.make_dataclass().
bpo-45837:
turtle.RawTurtle.settiltangle()không được dùng nữa kể từ Python 3.1, hiện tại nó phát ra cảnh báo không dùng nữa và sẽ bị xóa trong Python 3.13.Thay vào đó hãy sử dụng
turtle.RawTurtle.tiltangle().turtle.RawTurtle.tiltangle()trước đó đã bị đánh dấu không chính xác là không dùng nữa, chuỗi tài liệu của nó đã được sửa.Bản vá của Hugo van Kemenade.
bpo-45831:
faulthandlerhiện có thể ghi các chuỗi chỉ dành cho ASCII (như tên tệp và tên hàm) bằng một lệnh gọi tòa nhà write() duy nhất khi kết xuất truy nguyên. Nó làm giảm nguy cơ nhận được kết xuất không thể đọc được khi hai luồng hoặc hai tiến trình kết xuất truy nguyên vào cùng một tệp (như stderr) cùng một lúc. Bản vá của Victor Stinner.bpo-45828: Lệnh gọi lại
sqliteC hiện sử dụng các ngoại lệ không thể xử lý được nếu tính năng theo dõi lệnh gọi lại được bật. Bản vá của Erlend E. Aasland.bpo-41735: Sửa khóa luồng trong phương thức
zlib.Decompress.flush()trướcPyObject_GetBuffer.bpo-45235: Đã hoàn nguyên một bản sửa lỗi argparse gây ra sự hồi quy trong việc xử lý các đối số mặc định cho các trình phân tích cú pháp con. Điều này ngăn không cho các đối số cấp lá được ưu tiên hơn các đối số cấp gốc.
bpo-45754: Khắc phục hồi quy trong Python 3.11a1 và 3.11a2 trong đó
sqlite3sẽ sử dụngSQLITE_LIMIT_LENGTHkhông chính xác khi kiểm tra độ dài câu lệnh SQL. Bây giờ,SQLITE_LIMIT_SQL_LENGTHđược sử dụng. Bản vá của Erlend E. Aasland.bpo-45766: Đã thêm tùy chọn proportional vào
statistics.linear_regression().bpo-45765: Trong importlib.metadata, sửa lỗi phát hiện phân phối cho đường dẫn trống.
bpo-45757: Sửa lỗi trong đó
distạo ra một oparg không chính xác khiEXTENDED_ARGđược theo sau bởi một opcode không sử dụng đối số của nó.bpo-45644: Định dạng tệp JSON tại chỗ bằng
python3 -m json.tool infile infilehiện hoạt động chính xác, trước đây nó để trống tệp. Bản vá của Chris Wesseling.bpo-45703: Khi một gói không gian tên được nhập trước khi một mô-đun khác từ cùng một không gian tên được tạo/cài đặt ở một vị trí
sys.pathkhác trong khi chương trình đang chạy, việc gọi hàmimportlib.invalidate_caches()giờ đây cũng sẽ đảm bảo mô-đun mới được chú ý.bpo-45535: Cải thiện đầu ra của
dir()bằng Enums.bpo-45664: Sửa
types.resolve_bases()vàtypes.new_class()cho phiên bảntypes.GenericAliaslàm cơ sở.bpo-45663: Sửa lỗi
dataclasses.is_dataclass()cho các lớp dữ liệu là lớp con củatypes.GenericAlias.bpo-45662: Sửa lỗi repr của
dataclasses.InitVarbằng bí danh loại cho lớp tích hợp sẵn, ví dụ:InitVar[list[int]].bpo-43137: Khởi chạy trình duyệt web GNOME thông qua công cụ gio thay vì gvfs-open lỗi thời
bpo-45429: Trên Windows,
time.sleep()hiện sử dụng bộ hẹn giờ có thể chờ hỗ trợ bộ hẹn giờ có độ phân giải cao. Bản vá của Donghee Na và Eryk Sun.bpo-37295: Tối ưu hóa
math.comb()vàmath.perm().bpo-45514: Các hàm cũ không được dùng nữa trong
importlib.resources.bpo-45507: Thêm thử nghiệm cho các đoạn giới thiệu bị cắt bớt/thiếu trong quá trình triển khai gzip.decompress.
bpo-45359: Triển khai PEP 585 cho
graphlib.TopologicalSorter.bpo-44733: Thêm
max_tasks_per_childvàoconcurrent.futures.ProcessPoolExecutor. Điều này cho phép người dùng chỉ định số lượng tác vụ tối đa mà một quy trình sẽ thực hiện trước khi quy trình đó cần được khởi động lại.bpo-28806: Cải thiện thư viện netrc. netrc không còn cần chứa tất cả các mã thông báo nữa. Và nếu tên đăng nhập là ẩn danh thì việc kiểm tra bảo mật không còn cần thiết nữa.
bpo-43498: Tránh "RuntimeError: dictionary changed size during iteration" có thể xảy ra khi điều chỉnh số lượng quy trình của
ProcessPoolExecutor.bpo-42158: Thêm các loại MIME cho N-quads, N-triples, Notation3 và TriG vào
mimetypes.bpo-30533: Thêm
inspect.getmembers_static(), nó trả về tất cả các thành viên mà không kích hoạt tra cứu động thông qua giao thức mô tả. Bản vá của Weipeng Hong.
Tài liệu¶
bpo-42238:
make -C Doc suspicioussẽ sớm bị xóa để nhường chỗ chomake -C Doc check, hãy đánh dấu nó là không dùng nữa.bpo-45840: Cải thiện tham chiếu chéo trong tài liệu dành cho mô hình dữ liệu.
bpo-45640: Các mã thông báo ngữ pháp được đánh dấu chính xác trong tài liệu hiện có thể nhấp vào được và đưa bạn đến định nghĩa của một phần ngữ pháp nhất định. Bản vá của Arthur Milchior.
bpo-45788: Liên kết tài liệu của sys.prefix với tài liệu sysconfig trên đường dẫn cài đặt.
bpo-45772: Tài liệu
socket.socketđược sửa thành một lớp từ một hàm.bpo-45392: Cập nhật chuỗi tài liệu của
typetích hợp để loại bỏ một dòng thừa và đề cập đến các đối số từ khóa cho hàm tạo.bpo-45250: Cập nhật tài liệu để lưu ý rằng CPython không nhất quán yêu cầu các trình vòng lặp để xác định
__iter__.bpo-25381: Trong chương mở rộng của tài liệu mở rộng, hãy cập nhật một đoạn về các biến toàn cục chứa thông tin ngoại lệ.
bpo-43905: Tài liệu
astuple()vàasdict()mở rộng, cảnh báo về việc áp dụng deepcopy và cung cấp giải pháp thay thế.
Kiểm tra¶
bpo-45695: Các bản dựng ngoài cây có thư mục nguồn chỉ đọc hiện đã được CI kiểm tra.
bpo-19460: Thêm thử nghiệm mới cho
Lib/email/mime/nonmultipart.py::MIMENonMultipart.bpo-45835: Khắc phục tình trạng chạy đua trong các bài kiểm tra test_queue với nhiều luồng "trung chuyển".
bpo-45783: Quá trình kiểm tra công cụ đóng băng hiện xử lý việc di chuyển và xóa tệp.
bpo-45745: Loại bỏ tùy chọn dòng lệnh
--findleakscủa regrtest: thay vào đó hãy sử dụng tùy chọn--fail-env-changed. Kể từ Python 3.7, nó là bí danh không được dùng nữa cho tùy chọn--fail-env-changed.bpo-45701: Thêm các bài kiểm tra với loại
tuplevớifunctools.lru_cache()vàotest_functools.
xây dựng¶
bpo-44035: CI hiện xác minh rằng các tệp autoconf đã được tạo lại bằng gói autoconf hiện tại và chưa được vá.
bpo-45950: Hệ thống xây dựng hiện sử dụng trình thông dịch _bootstrap_python để đóng băng và đóng băng lại. Để tăng tốc quá trình xây dựng, các công cụ xây dựng _bootstrap_python và _freeze_module không còn được xây dựng bằng LTO nữa.
bpo-45881: Tập lệnh configure hiện chấp nhận các tùy chọn
--with-build-pythonvà--with-freeze-moduleđể biên dịch chéo dễ dàng hơn.bpo-40280: Nền tảng Emscripten hiện sử dụng hậu tố
.wasmtheo mặc định.bpo-40280: Vô hiệu hóa các mô-đun mở rộng lõi không sử dụng được trên các mục tiêu WASM/Emscripten.
bpo-40280:
configurehiện kiểm tra chức năng socketshutdown. Việc kiểm tra giúp có thể tắtSYS_shutdownbằngac_cv_func_shutdown=notrong CONFIG_SITE.bpo-40280:
configurehiện kiểm tra các chức năngfork1, getegid, geteuid, getgid, getppid, getuid, opendir, pipe, system, wait, ttyname.bpo-33393: Cập nhật
config.guesslên 2021-06-03 vàconfig.sublên 2021-08-14.Makefilehiện có mục tiêuupdate-configđể giúp việc cập nhật thuận tiện hơn.bpo-45866:
make regen-allhiện tạo ra kết quả tương tự khi chạy từ một thư mục không phải cây nguồn: khi xây dựng Python từ cây nguồn. pegen bây giờ loại bỏ thư mục của bản vá tiêu đề "được tạo bởi pygen từ <FILENAME>" của Victor Stinner.bpo-40280:
configurehiện chấp nhận máywasm32hoặcwasm64và OSwasihoặcemscriptenđể xây dựng chéo, ví dụ:wasm32-unknown-emscripten,wasm32-wasihoặcwasm32-unknown-wasi.bpo-41498: Python hiện biên dịch trên nền tảng không có
sigset_t. Một số chức năng trongsignalkhông khả dụng khi thiếusigset_t.Dựa trên bản vá của Roman Yurchak cho pyodide.
bpo-45881:
setup.pyhiện sử dụngCCtừ môi trường trước tiên để khám phá các đường dẫn biên dịch đa luồng và biên dịch chéo.bpo-45886: Đường dẫn chương trình
_freeze_modulehiện có thể được ghi đè trên dòng lệnh, ví dụ:make FREEZE_MODULE=../x86_64/Program/_freeze_module.bpo-45873: Loại bỏ bước xây dựng
_bootstrap_python. Tập lệnh deepfreeze.py hiện được chạy bằng$(PYTHON_FOR_REGEN), có thể là Python 3.7 hoặc mới hơn (trên Windows, 3.8 hoặc mới hơn).bpo-45847: Phần mở rộng hashlib tích hợp cổng cho macro
PY_STDLIB_MODvàaddext().bpo-45723: Thêm trình trợ giúp
autoconfđể lưu và khôi phục các biến môi trường:SAVE_ENV: Lưu$CFLAGS,$LDFLAGS,$LIBSvà$CPPFLAGS.RESTORE_ENV: Khôi phục$CFLAGS,$LDFLAGS,$LIBSvà$CPPFLAGS.WITH_SAVE_ENV([SCRIPT]): ChạySCRIPTđược gói bằngSAVE_ENVvàRESTORE_ENV.
Bản vá của Erlend E. Aasland.
bpo-45573: Các mô-đun lõi bắt buộc, cần thiết để khởi động Python, hiện có trong
Modules/Setup.bootstrap.bpo-45573:
configurehiện tạoModules/Setup.stdlibvới các dòng mô-đun mở rộng được bật/tắt có điều kiện. Tệp này chưa được sử dụng.bpo-45573:
configurehiện sử dụng định dạng hợp nhất để đặt trạng thái, cờ trình biên dịch và cờ liên kết trong Makefile. MacroPY_STDLIB_MODmới đặt ba biến được sử dụng bởiModules/Setupvàsetup.py.bpo-45816: Python hiện hỗ trợ xây dựng bằng Visual Studio 2022 (MSVC v143, VS Phiên bản 17.0). Bản vá của Jeremiah Vivian.
bpo-45800: Cài đặt cho tiện ích mở rộng
pyexpatC hiện đượcconfigurephát hiện. Thư việnexpatđi kèm được xây dựng trongMakefile.bpo-45798: Cài đặt cho tiện ích mở rộng C nội bộ
decimalhiện đượcconfigurephát hiện. Thư việnlibmpdecđi kèm được xây dựng trongMakefile.bpo-45723: configure có tùy chọn mới
--with-pkg-configđể tắt hoặc yêu cầu pkg-config.bpo-45774: Các phần phụ thuộc bản dựng cho
sqlite3hiện đượcconfigurevàpkg-configphát hiện. Bản vá của Erlend E. Aasland.bpo-45763: Các phần phụ thuộc bản dựng cho
zlib,bz2vàlzmahiện đượcconfigurephát hiện.bpo-45747: các phần phụ thuộc của bản dựng gdbm và dbm hiện được
configurephát hiện.bpo-45743: Trên macOS, hệ thống xây dựng không còn chuyển
search_paths_firstcho trình liên kết nữa. Cờ đã được mặc định kể từ Xcode 4/macOS 10.6.bpo-45723:
configure.achiện tương thích với autoconf 2.71. Các kiểm tra không được dùng nữaSTDC_HEADERSvàAC_HEADER_TIMEđã bị xóa.bpo-45723:
configurehiện in cảnh báo khi thiếu pkg-config.bpo-45731:
configure --enable-loadable-sqlite-extensionshiện được xử lý bởi macroPY_SQLITE_ENABLE_LOAD_EXTENSIONmới thay vì logic trong setup.py.bpo-45723: configure.ac hiện sử dụng macro trợ giúp tùy chỉnh và
AC_CACHE_CHECKđể đơn giản hóa và tăng tốc độ chạy cấu hình.bpo-45696: Bỏ qua bước sắp xếp cho các mô-đun cố định bằng cách tạo mã C để tạo ra một tập hợp các đối tượng mã sẵn sàng sử dụng. Điều này tăng tốc thời gian khởi động thêm 10% hoặc hơn.
bpo-45561: Chạy công cụ dirty.py từ $(srcdir).
cửa sổ¶
bpo-46105: Đã sửa lỗi tính toán
sys.pathtrong venv trên Windows.bpo-45901: Khi được cài đặt thông qua Microsoft Store và được đặt làm ứng dụng mặc định cho các tệp
*.py, các đối số dòng lệnh giờ đây sẽ được chuyển tới Python khi gọi tập lệnh mà không khởi chạy Python một cách rõ ràng (nghĩa làscript.py argsthay vìpython script.py args).bpo-45616: Khắc phục khả năng phân biệt giữa các phiên bản 3.1 và 3.10 của Python Launcher khi một trong hai phiên bản được yêu cầu rõ ràng. Trước đây, 3.1 sẽ được sử dụng nếu yêu cầu 3.10 nhưng chưa được cài đặt và 3.10 sẽ được sử dụng nếu 3.1 được yêu cầu nhưng 3.10 đã được cài đặt.
bpo-45850: Triển khai các thay đổi để xây dựng bằng các mô-đun được cố định sâu trên Windows. Lưu ý rằng hiện tại chúng tôi yêu cầu Python 3.10 làm Python "bootstrap" hoặc "máy chủ".
bpo-45732: Cập nhật gói Tcl/Tk lên 8.6.12.
bpo-45720: Tham chiếu nội bộ tới
shlwapi.dllđã bị loại bỏ để giúp cải thiện thời gian khởi động. Zz002zz này sẽ không còn được tải khi bắt đầu mọi quy trình Python nữa.
macOS¶
bpo-45732: Cập nhật trình cài đặt macOS python.org để sử dụng Tcl/Tk 8.6.12.
C API¶
bpo-39026: Sửa Python.h để xây dựng tiện ích mở rộng C bằng Xcode: xóa phần bao gồm họ hàng khỏi
Include/cpython/pystate.h.
Python 3.11.0 alpha 2¶
Release date: 2021-11-05
Cốt lõi và nội dung¶
bpo-45716: Cải thiện thông báo
SyntaxErrorkhi sử dụngTrue,NonehoặcFalselàm từ khóa trong lệnh gọi hàm. Bản vá của Pablo Galindo.bpo-45688:
sys.stdlib_module_nameshiện chứa mô-đun_scproxydành riêng cho macOS.bpo-45379: Làm rõ thông báo
ImportErrorkhi chúng tôi cố gắng nhập rõ ràng một mô-đun bị cố định nhưng các mô-đun bị cố định bị tắt.bpo-44525: Chuyên gọi các hàm Python đơn giản (không có starargs, dict từ khóa hoặc đóng)
bpo-45530: Các trường hợp sắp xếp sử dụng bộ dữ liệu làm khóa hiện có thể nhanh hơn đáng kể trong một số trường hợp. Bản vá của Tim Peters.
Thứ tự của kết quả có thể khác với các bản phát hành trước đó nếu các phần tử bộ dữ liệu không xác định tổng thứ tự (xem So sánh giá trị để biết thông tin về tổng thứ tự). Nhìn chung, kết quả của việc sắp xếp không được xác định rõ ràng khi không có thứ tự tổng thể trên các thành phần trong danh sách.
bpo-45526: Trong obmalloc, đặt ADDRESS_BITS để không bỏ qua bất kỳ bit nào (bỏ qua 16 bit trước đó). Điều đó an toàn hơn trong trường hợp hạt nhân cung cấp các địa chỉ ảo trong không gian người dùng trải rộng trong phạm vi lớn hơn 48 bit.
bpo-30570: Đã khắc phục sự cố trong
issubclass()do đệ quy vô hạn khi tìm kiếm các bộ dữ liệu__bases__bệnh lý.bpo-45521: Sửa lỗi trong mã cây cơ số obmalloc. Trên các máy 64-bit, lỗi này khiến cây chứa 46-bit địa chỉ ảo, thay vì 48-bit như dự kiến.
bpo-45494: Khắc phục sự cố trình phân tích cú pháp khi báo cáo lỗi liên quan đến các ký tự tiếp tục không hợp lệ. Bản vá của Pablo Galindo.
bpo-45445: Python hiện không khởi tạo được nếu tìm thấy tùy chọn
-Xkhông hợp lệ trong dòng lệnh. Bản vá của Pablo Galindo.bpo-45340: Thuộc tính đối tượng được giữ trong một mảng thay vì từ điển. Từ điển của một đối tượng chỉ được tạo một cách lười biếng khi cần thiết. Giảm mức tiêu thụ bộ nhớ của một đối tượng Python điển hình khoảng 30%. Bản vá của Mark Shannon.
bpo-45408: Khắc phục sự cố trong trình phân tích cú pháp khi báo cáo lỗi mã thông báo xảy ra cùng lúc với dấu ngoặc đơn không đóng được phát hiện. Bản vá của Pablo Galindo.
bpo-29410: Thêm SipHash13 cho thuật toán băm chuỗi và sử dụng nó theo mặc định.
bpo-45385: Sửa lỗi rò rỉ tham chiếu từ descr_check. Bản vá của Donghee Na.
bpo-45367: Chuyên biệt hóa opcode
BINARY_MULTIPLYthànhBINARY_MULTIPLY_INTvàBINARY_MULTIPLY_FLOATbằng cách sử dụng máy PEP 659.bpo-21736: Các mô-đun stdlib đông lạnh hiện có
__file__vào tệp .py mà chúng sẽ được tải từ đó, nếu có thể. Đối với các gói,__path__hiện có mục nhập chính xác thay vì là một danh sách trống, cho phép nhập các mô-đun con chưa đóng băng. Chúng chỉ được đặt nếu thư mục stdlib được biết khi thời gian chạy được khởi tạo. Lưu ý rằng tệp tại__file__không được đảm bảo tồn tại. Hiện tại, điều này không ảnh hưởng đến các mô-đun cố định không phải stdlib cũng như các mô-đun cố định được nhập bằngPyImport_ImportFrozenModule(). Ngoài ra, hiện tạico_filenamechưa được cập nhật cho mô-đun.bpo-45020: Đối với các mô-đun stdlib bị đóng băng, hãy ghi tên mô-đun ban đầu là
module.__spec__.loader_state.origname. Nếu giá trị khác vớimodule.__spec__.namethì mô-đun được xác định là bí danh trong Tools/scripts/freeze_modules.py. Nếu làNonethì mô-đun này đến từ một tệp nguồn bên ngoài stdlib.bpo-45324: Trong FrozenImporter.find_spec(), hiện tại chúng tôi lưu giữ thông tin cần thiết trong exec_module() để tải mô-đun. Sự thay đổi này chủ yếu tác động đến các chi tiết nội bộ hơn là thay đổi hành vi của nhà nhập khẩu.
bpo-45292: Triển khai PEP 654. Thêm
ExceptionGroupvàBaseExceptionGroup. Cập nhật mã hiển thị truy nguyên.bpo-40116: Thay đổi cách triển khai từ điển phân chia. Các lớp trong đó các phiên bản khác nhau về tập thuộc tính chính xác hoặc theo thứ tự các thuộc tính đó được đặt, vẫn có thể chia sẻ khóa. Điều này sẽ không có tác động rõ rệt đối với người dùng Python hoặc C-API. Bản vá của Mark Shannon.
bpo-44050: Các tiện ích mở rộng cho biết chúng sử dụng trạng thái chung (bằng cách đặt
m_sizethành -1) lại có thể được sử dụng trong nhiều trình thông dịch. Điều này trở lại hoạt động của Python 3.8.bpo-44525: Thiết lập cơ sở hạ tầng chuyên môn hóa ban đầu cho opcode
CALL_FUNCTION. Đã triển khai các chuyên môn ban đầu cho lệnh gọi hàm C:CALL_FUNCTION_BUILTIN_Ocho cờMETH_O.CALL_FUNCTION_BUILTIN_FASTcho cờMETH_FASTCALLkhông có từ khóa.CALL_FUNCTION_LENcholen(o).CALL_FUNCTION_ISINSTANCEchoisinstance(o, t).
bpo-44511: Cải thiện mã byte được tạo cho các mẫu ánh xạ và lớp.
bpo-43706: Tăng tốc độ cuộc gọi tới
enumerate()bằng cách sử dụng quy ước gọi PEP 590vectorcall. Bản vá của Donghee Na.
Thư viện¶
bpo-45679: Sửa bộ nhớ đệm của
typing.Literalđa giá trị.Literal[True, 2]không còn bằngLiteral[1, 2]nữa.bpo-42064: Chuyển đổi
sqlite3sang khởi tạo nhiều pha (PEP 489). Các bản vá của Erlend E. Aasland.bpo-45438: Sửa lỗi biểu diễn chuỗi kiểu gõ.Chữ ký cho các kiểu dựng sẵn chung.
bpo-45613:
sqlite3hiện đặtsqlite3.threadsafetydựa trên chế độ phân luồng mặc định mà thư viện SQLite cơ bản đã được biên dịch. Bản vá của Erlend E. Aasland.bpo-45574: Khắc phục cảnh báo về việc
print_escapekhông được sử dụng.bpo-45581:
sqlite3.connect()hiện tăngMemoryErrormột cách chính xác nếu SQLite API cơ bản báo hiệu lỗi bộ nhớ. Bản vá của Erlend E. Aasland.bpo-45557:
pprint.pprint()hiện xử lý underscore_numbers một cách chính xác. Trước đây nó luôn được đặt thànhFalse.bpo-44019: Thêm
operator.call()vàooperator.__all__. Bản vá của Kreusada.bpo-42174:
shutil.get_terminal_size()hiện quay trở lại giá trị bình thường nếu số cột hoặc dòng bằng 0.bpo-35673: Cải thiện khả năng xem xét nội tâm của thuộc tính
__loader__cho các gói không gian tên.importlib.machinery.NamespaceLoaderhiện ở chế độ công khai và triển khai giao diệnimportlib.abc.InspectLoader._NamespaceLoaderđược giữ lại để tương thích ngược.bpo-45515: Thêm tài liệu tham khảo đến
zoneinfotrong tài liệudatetime, chủ yếu thay thế các tài liệu tham khảo đã lỗi thời chodateutil.tz. Thay đổi của Paul Ganssle.bpo-45475: Đã hoàn nguyên việc tối ưu hóa việc lặp lại
gzip.GzipFile,bz2.BZ2Filevàlzma.LZMAFile(xem bpo-43787) vì nó gây ra sự hồi quy khi người dùng lặp lại chúng mà không tham chiếu đến chúng. Bản vá của Inada Naoki.bpo-45489: Cập nhật
ForwardRefđể hỗ trợ toán tử|. Bản vá của Donghee Na.bpo-42222: Đã xóa hỗ trợ không được dùng nữa cho các đối số float trong randrange().
bpo-45428: Khắc phục hồi quy trong py_compile khi đọc tên tệp từ đầu vào tiêu chuẩn.
bpo-45467: Sửa bộ giải mã gia tăng và trình đọc luồng trong codec "raw-unicode-escape". Trước đây họ đã thất bại nếu chuỗi thoát bị chia cắt.
bpo-45461: Sửa bộ giải mã gia tăng và trình đọc luồng trong codec "unicode-escape". Trước đây họ đã thất bại nếu chuỗi thoát bị chia cắt.
bpo-45239: Đã sửa lỗi
email.utils.parsedate_tz()gặp sự cố vớiUnboundLocalErrortrên một số đầu vào không hợp lệ thay vì trả vềNone. Bản vá của Ben Hoyt.bpo-45417: Khắc phục hành vi bậc hai trong mô-đun enum: Việc tạo các lớp enum có nhiều mục là bậc hai.
bpo-45249: Khắc phục hành vi của
traceback.print_exc()khi hiển thị dấu mũ khiend_offsettrong ngoại lệ được đặt thành 0. Bản vá của Pablo Galindobpo-45416: Khắc phục việc sử dụng
asyncio.Conditionvới các đối tượngasyncio.Lockrõ ràng, đây là một sự hồi quy do loại bỏ các đối số vòng lặp rõ ràng. Bản vá của Jongi Kim.bpo-20028: Không được phép escapechar/quotechar trống khi khởi tạo
csv.Dialect. Bản vá của Vajrasky Kok và Donghee Na.bpo-44904: Sửa lỗi trong mô-đun
doctestkhiến nó bị lỗi nếu chuỗi tài liệu bao gồm một ví dụ cóclassmethodproperty. Bản vá của Alex Waygood.bpo-45406: Làm cho
inspect.getmodule()bắtFileNotFoundErrordoinspect.getabsfile()đưa ra và trả vềNoneđể cho biết rằng không thể xác định được mô-đun.bpo-45411: Thêm phần mở rộng cho file chứa phụ đề - .srt & .vtt - vào mô-đun mimetypes.py.
bpo-10716: Đã di chuyển pydoc sang HTML5 (mà không thay đổi giao diện của nó). Tác dụng phụ là cập nhật
ServerHTMLDoccủa xmlrpc hiện cũng sử dụng CSS. cgitb hiện ít phụ thuộc hơn vào pydoc (vì nó không thể sử dụng tệp CSS).bpo-45262: Ngăn chặn việc sử dụng sau khi rảnh rỗi trong asyncio. Đảm bảo rằng bộ giữ vòng lặp đang chạy được lưu trong bộ nhớ cache sẽ bị xóa trên dealloc để ngăn việc sử dụng sau khi rảnh rỗi trong get_running_loop
bpo-45386: Làm cho
xmlrpc.clienttrở nên mạnh mẽ hơn trong thời gian chạy C trong đó hàm Cstrftimecơ bản dẫn đếnValueErrorkhi kiểm tra các tùy chọn định dạng năm.bpo-20028: Cải thiện thông báo lỗi
csv.Dialectkhi khởi tạo. Bản vá của Vajrasky Kok và Donghee Na.bpo-45343: Cập nhật gói pip lên 21.2.4 và setuptools lên 58.1.0
bpo-45328: Đã sửa lỗi
http.client.HTTPConnectionđể hoạt động bình thường trong các hệ điều hành không hỗ trợ tùy chọn ổ cắmTCP_NODELAY.bpo-45243: Thêm
setlimit()vàgetlimit()vàosqlite3.Connectionđể cài đặt và nhận giới hạn SQLite theo cơ sở kết nối. Bản vá của Erlend E. Aasland.bpo-45320: Đã xóa khỏi mô-đun
inspect:- hàm
getargspec, không được dùng nữa kể từ Python 3.0; thay vào đó hãy sử dụng
inspect.signature()hoặcinspect.getfullargspec().
- hàm
hàm
formatargspec, không được dùng nữa kể từ Python 3.5; sử dụng trực tiếp hàminspect.signature()và đối tượngSignature.các hàm
Signature.from_builtinvàSignature.from_functionkhông có giấy tờ, không được dùng nữa kể từ Python 3.5; thay vào đó hãy sử dụng phương phápSignature.from_callable().
Bản vá của Hugo van Kemenade.
bpo-45192: Sửa hàm
tempfile._infer_return_typeđể đối sốdircủa hàmtempfilechấp nhận một đối tượng triển khai giao thứcos.PathLike.Bản vá của Kyungmin Lee.
bpo-45160: Khi theo dõi biến tkinter được sử dụng bởi ttk OptionMenu, lệnh gọi lại không còn được thực hiện hai lần nữa.
bpo-25625: Đã thêm trình quản lý bối cảnh
chdir()không an toàn song song để thay đổi thư mục làm việc hiện tại rồi khôi phục nó khi thoát. Trình bao bọc đơn giản xung quanhchdir().bpo-24139: Thêm hỗ trợ cho mã kết quả mở rộng SQLite trong
sqlite3.Error. Bản vá của Erlend E. Aasland.bpo-24444: Đã sửa lỗi xuất hiện trong màn hình trợ giúp
argparsekhi trợ giúp cho một tùy chọn được đặt thành hơn 1 khoảng trắng hoặc khi choices arg là một vùng chứa trống.bpo-44547: Triển khai
Fraction.__int__, để phiên bảnfractions.Fractionfvượt qua kiểm traisinstance(f, typing.SupportsInt).bpo-40321: Thêm hỗ trợ cho HTTP 308 chuyển hướng đến
urllib. Xem RFC 7538 để biết chi tiết. Bản vá của Jochem Schulenklopper.bpo-41374: Đảm bảo rằng các hằng số
socket.TCP_*được hiển thị trên Cygwin 3.1.6 trở lên.bpo-35970: Thêm cờ trợ giúp vào giao diện dòng lệnh của mô-đun base64. Bản vá được đóng góp bởi Robert Kuska.
Tài liệu¶
bpo-45726: Cải thiện tài liệu cho
functools.singledispatch()vàfunctools.singledispatchmethod.bpo-45680: Sửa đổi tài liệu về đối tượng
GenericAliasđể làm rõ rằng các lớp không chứa cũng có thể triển khai__class_getitem__. Bản vá được đóng góp bởi Alex Waygood.bpo-45618: Cập nhật phiên bản Sphinx dùng để xây dựng tài liệu lên 4.2.0. Bản vá của Maciej Olko.
bpo-45655: Thêm phần "PEP có liên quan" mới vào đầu tài liệu dành cho mô-đun
typing. Bản vá của Alex Waygood.bpo-45604: Thêm đối số
levelvào tài liệu hàmmultiprocessing.log_to_stderr.bpo-45516: Thêm mô tả giao thức vào tài liệu
importlib.abc.TraversableResources.bpo-45464: Đề cập trong tài liệu của Built-in Exceptions rằng việc kế thừa từ nhiều loại ngoại lệ trong một lớp con không được khuyến khích do có thể không tương thích với bố cục bộ nhớ.
bpo-45449: Thêm ghi chú về PEP 585 trong
collections.abc.bpo-45516: Thêm mô tả giao thức vào tài liệu
importlib.abc.Traversable.bpo-20692: Thêm mục Lập trình FAQ giải thích rằng quyền truy cập thuộc tính int bằng chữ yêu cầu khoảng trắng sau hoặc dấu ngoặc đơn xung quanh chữ.
Kiểm tra¶
bpo-45678: Thêm thử nghiệm cho các kịch bản trong đó
functools.singledispatchmethodđược xếp chồng lên trên một phương thức đã được hai trình trang trí khác bao bọc. Bản vá của Alex Waygood.bpo-45578: Thêm bài kiểm tra cho
dis.distb()bpo-45678: Thêm các kiểm tra để đảm bảo rằng
functools.singledispatchmethodbao bọc chính xác các thuộc tính của hàm mục tiêu.bpo-45668: Các bài kiểm tra PGO hiện đã vượt qua khi Python được xây dựng mà không có mô-đun mở rộng kiểm tra.
bpo-45577: Thêm các bài kiểm tra phụ cho tất cả các giao thức
pickletrongtest_zoneinfo.bpo-45566: Fix
test_frozen_pickletrongtest_dataclassesđể kiểm tra tất cả các phiên bảnpickle.bpo-43592:
test.libregrtesthiện tăng giới hạn tài nguyên mềm cho số lượng bộ mô tả tệp tối đa khi mặc định quá thấp đối với bộ thử nghiệm của chúng tôi như thường thấy trên macOS.bpo-39679: Thêm nhiều test case cho
@functools.singledispatchmethodkhi kết hợp với@classmethodhoặc@staticmethod.bpo-45410: Khi libregrtest sinh ra một quy trình công nhân, stderr hiện được ghi vào thiết bị xuất chuẩn để giữ trật tự cho các tin nhắn. Sử dụng một ống duy nhất cho thiết bị xuất chuẩn và thiết bị xuất chuẩn, thay vì hai ống. Trước đây, các thông báo không đúng thứ tự khiến việc phân tích nhật ký buildbot trở nên khó khăn hơn. Patch của Victor Stinner.
bpo-45402: Sửa lỗi test_tools.test_sundry() khi Python được xây dựng từ cây: sửa cách công cụ Freeze_modules.py định vị chương trình _freeze_module. Bản vá của Victor Stinner.
bpo-45403: Khắc phục test_sys.test_stdlib_dir() khi Python được xây dựng bên ngoài cây nguồn: so sánh các đường dẫn chuẩn hóa. Bản vá của Victor Stinner.
bpo-45400: Khắc phục test_name_error_suggestions_do_not_trigger_for_too_many_locals() của test_Exceptions nếu tên thư mục chứa "a1" (như "Python-3.11.0a1"): sử dụng biểu thức chính quy chặt chẽ hơn. Bản vá của Victor Stinner.
bpo-10572: Đổi tên các bài kiểm tra
sqlite3từtest_sqlitethànhtest_sqlite3và chuyển chúng thànhLib/test/test_sqlite3. Bản vá của Erlend E. Aasland.
xây dựng¶
bpo-43158:
setup.pyhiện sử dụng các giá trị từ tập lệnh cấu hình để xây dựng mô-đun mở rộng_uuid. Cấu hình bây giờ cũng phát hiệnlibuuidcủa util-linux.bpo-45666: Khắc phục cảnh báo sử dụng
swprintfvà%strong_testembed.cbpo-45548:
Modules/SetupvàModules/makesetupđã được cải tiến. TệpSetuphiện chứa các quy tắc làm việc cho tất cả tiện ích mở rộng. Những bình luận lỗi thời đã bị xóa. Các quy tắc được xác định bởimakesetuptheo dõi các phần phụ thuộc một cách chính xác.bpo-45548: Việc triển khai
mathvàcmathhiện yêu cầulibmtương thích với C99 và không còn cung cấp giải pháp thay thế cho các chức năng acosh, asinh, atanh, expm1 và log1p bị thiếu.bpo-45595:
setup.pyvàmakesetuphiện theo dõi các phần phụ thuộc của bản dựng trên tất cả các tệp tiêu đề Python và các tệp tiêu đề cụ thể của mô-đun.bpo-45571:
Modules/Setuphiện sử dụngPY_CFLAGS_NODISTthay vìPY_CFLAGSđể biên dịch các mô-đun dùng chung.bpo-45570:
pyexpatvà_elementtreekhông còn xác định các macroHAVE_EXPAT_CONFIG_HvàUSE_PYEXPAT_CAPIlỗi thời nữa.XML_POOR_ENTROPYhiện được xác định trongexpat_config.h.bpo-43974:
setup.pykhông còn định nghĩaPy_BUILD_CORE_MODULEnữa. Thay vào đó, mọi mô-đun sử dụng API bên trong sẽ xác định macro.bpo-45548: Điền các mục còn thiếu trong Mô-đun/Cài đặt.
bpo-45532: Cập nhật
sys.versionđể sử dụngmainlàm thông tin dự phòng. Bản vá của Jeong YunWon.bpo-45536: Tập lệnh
configurehiện kiểm tra xem các tiêu đề và thư viện OpenSSL có cung cấp các API cần thiết hay không. Hầu hết các API phổ biến đều được xác minh. Việc kiểm tra sẽ phát hiện OpenSSL đã lỗi thời hoặc bị thiếu. Thất bại không ngừng cấu hình.bpo-45221: Đã sửa lỗi hồi quy trong việc xử lý các tùy chọn
LDFLAGSvàCPPFLAGStrong đóargparse.parse_known_args()có thể hiểu một tùy chọn là một trong các đối số dòng lệnh tích hợp sẵn, chẳng hạn như-hđể được trợ giúp.bpo-45440: Xây dựng Python hiện yêu cầu tệp tiêu đề C99
<math.h>cung cấp các chức năng sau:copysign(),hypot(),isfinite(),isinf(),isnan(),round(). Bản vá của Victor Stinner.bpo-45405: Ngăn chặn
internal configure errorkhi chạyconfigurevới các phiên bản gần đây của tiếng kêu không phải của Apple. Bản vá của David Bohman.bpo-45433: Tránh liên kết libpython với libcrypt.
cửa sổ¶
bpo-43652: Cập nhật Tcl/Tk lên 8.6.11, thực ra là lần này. Bản cập nhật trước đó bao gồm không chính xác 8.6.10.
bpo-45337: venv hiện cảnh báo khi môi trường đã tạo có thể cần được truy cập ở một đường dẫn khác do chuyển hướng, liên kết hoặc mối nối. Giờ đây, nó cũng cài đặt hoặc nâng cấp chính xác các thành phần khi cần có đường dẫn thay thế.
bpo-43851: Xây dựng SQLite
SQLITE_OMIT_AUTOINITtrên Windows. Bản vá của Erlend E. Aasland.
macOS¶
bpo-44828: Tránh lỗi hộp thoại tệp tkinter trên macOS 12 Monterey khi sử dụng Tk 8.6.11 do trình cài đặt macOS python.org cung cấp. Bản vá của Marc Culler của dự án Tk.
IDLE¶
bpo-45495: Thêm từ khóa ngữ cảnh 'case' và 'match' vào danh sách hoàn thành.
C API¶
bpo-29103:
PyType_FromSpec*hiện sao chép tên lớp từ thông số kỹ thuật sang bộ đệm thuộc sở hữu của lớp đó, do đó tên gốc có thể được giải phóng một cách an toàn. Bản vá của Petr Viktorin.bpo-45522: Danh sách tự do nội bộ cho khung, float, danh sách, dict, trình tạo không đồng bộ và các đối tượng ngữ cảnh hiện có thể bị tắt.
bpo-35134: Loại trừ
PyWeakref_GET_OBJECT()khỏi C API giới hạn. Nó không bao giờ hoạt động vì cấu trúcPyWeakReferencemờ đục trong C API giới hạn.bpo-35081: Di chuyển tệp tiêu đề
interpreteridobject.htừInclude/sangInclude/internal/. Nó chỉ cung cấp các chức năng riêng tư. Bản vá của Victor Stinner.bpo-35134: Các tệp API không giới hạn
cellobject.h,classobject.h,context.h,funcobject.h,genobject.hvàlongintrepr.hđã được chuyển đến thư mụcInclude/cpython. Hơn nữa, tệp tiêu đềeval.hđã bị xóa. Không được đưa trực tiếp các tệp này vào vì chúng đã được đưa vàoPython.h: Include Files. Nếu chúng đã được đưa trực tiếp vào, thay vào đó hãy xem xét việc đưa vàoPython.h. Bản vá của Victor Stinner.bpo-45474: Các mục sau không còn khả dụng khi
Py_LIMITED_APIđược xác định:macro
Py_MARSHAL_VERSION
Đây không phải là một phần của limited API.
Bản vá của Victor Stinner.
bpo-45434: Xóa tệp tiêu đề
pystrhex.h. Nó chỉ chứa các chức năng riêng tư. Phần mở rộng C chỉ nên bao gồm tệp tiêu đề<Python.h>chính. Bản vá của Victor Stinner.bpo-45440: Xóa macro
Py_FORCE_DOUBLE(). Nó được sử dụng bởi macroPy_IS_INFINITY(). Bản vá của Victor Stinner.bpo-45434:
<Python.h>không còn bao gồm các tệp tiêu đề<stdlib.h>,<stdio.h>,<errno.h>và<string.h>khi macroPy_LIMITED_APIđược đặt thành0x030b0000(Python 3.11) trở lên. Tiện ích mở rộng C phải bao gồm rõ ràng các tệp tiêu đề sau#include <Python.h>. Bản vá của Victor Stinner.bpo-41123: Xóa macro
Py_UNICODE_COPY()vàPy_UNICODE_FILL(), không được dùng nữa kể từ Python 3.3. Thay vào đó, hãy sử dụng các hàmPyUnicode_CopyCharacters()hoặcmemcpy()(chuỗiwchar_t*) vàPyUnicode_Fill(). Bản vá của Victor Stinner.bpo-45412: Loại bỏ các macro toán học sau bằng biến
errno:Py_ADJUST_ERANGE1()Py_ADJUST_ERANGE2()Py_OVERFLOWED()Py_SET_ERANGE_IF_OVERFLOW()Py_SET_ERRNO_ON_MATH_ERROR()
Bản vá của Victor Stinner.
bpo-45395: Các mô-đun cố định tùy chỉnh (mảng được đặt thành
PyImport_FrozenModules) hiện được coi là phần bổ sung, thay vì thay thế tất cả các mô-đun cố định mặc định. Các mô-đun stdlib đông lạnh vẫn có thể bị tắt bằng cách đặt trường "code" của mục nhập mảng tùy chỉnh thành NULL.bpo-43760: Thêm các hàm
PyThreadState_EnterTracing()vàPyThreadState_LeaveTracing()mới vào C API giới hạn để tạm dừng và tiếp tục theo dõi cũng như lập hồ sơ. Bản vá của Victor Stinner.bpo-44220:
PyStructSequence_UnnamedFieldđược thêm vào ABI ổn định.
Python 3.11.0 alpha 1¶
Release date: 2021-10-05
Bảo mật¶
bpo-42278: Đã thay thế việc sử dụng
tempfile.mktemp()bằngTemporaryDirectoryđể tránh tình trạng chạy đua tiềm ẩn.bpo-44600: Sửa số dòng không chính xác trong khi truy tìm một số mẫu bị lỗi trong câu lệnh match. Bản vá của Charles Burkland.
bpo-41180: Thêm các sự kiện kiểm tra vào mô-đun
marshalvà ngừng đưa ra các sự kiệncode.__init__cho mọi đối tượng mã không được sắp xếp theo thứ tự. Các đối tượng mã được khởi tạo trực tiếp sẽ tiếp tục phát sinh một sự kiện và các trình xử lý sự kiện kiểm tra sẽ kiểm tra hoặc thu thập dữ liệu nguyên soái thô. Điều này làm giảm chi phí hoạt động đáng kể khi tải từ các tệp.pyc.bpo-44394: Cập nhật bản sao libexpat được bán lên 2.4.1 (từ 2.2.8) để nhận bản sửa lỗi cho lỗ hổng "Billion Laughs" của CVE 2013-0340. Bản sao này được sử dụng nhiều nhất trên Windows và macOS.
bpo-43124: Tạo chức năng
putcmdbên trong trongsmtplibkiểm tra đầu vào để tìm sự hiện diện của các ký tự\rvà\nnhằm tránh việc tiêm lệnh (không thể xảy ra).bpo-44022:
http.clienthiện tránh đọc vô hạn các tiêu đề HTTP tiềm năng sau phản hồi trạng thái100 Continuetừ máy chủ.
Cốt lõi và nội dung¶
bpo-43760: Số lượng nhánh phần cứng trên mỗi lần gửi lệnh giảm từ hai xuống còn một bằng cách thêm một lệnh đặc biệt để theo dõi. Bản vá của Mark Shannon.
bpo-45061: Thêm bộ giải mã vào loại bool để phát hiện lỗi đếm lại trong tiện ích mở rộng C gọi nhầm Py_DECREF(Py_True) hoặc Py_DECREF(Py_False). Đồng thời phát hiện các lỗi đếm lại khi bộ đơn trống hoặc bộ đơn chuỗi trống Unicode bị phá hủy do nhầm lẫn. Bản vá của Victor Stinner.
bpo-24076: sum() đã được tối ưu hóa hơn nữa để tính tổng các số nguyên có một chữ số.
bpo-45190: Cập nhật cơ sở dữ liệu Unicode lên Unicode 14.0.0.
bpo-45167: Sửa lỗi sao chép sâu các đối tượng
types.GenericAlias.bpo-45155:
int.to_bytes()vàint.from_bytes()hiện lấy giá trị mặc định là"big"cho đối sốbyteorder.int.to_bytes()cũng lấy giá trị mặc định là1cho đối sốlength.
Thư viện¶
bpo-44219: Giải phóng GIL trong khi thực hiện lệnh gọi hệ thống
isattytrên các bộ mô tả tệp tùy ý. Đặc biệt, điều này ảnh hưởng đếnos.isatty(),os.device_encoding()vàio.TextIOWrapper. Theo tiện ích mở rộng,io.open()ở chế độ văn bản cũng bị ảnh hưởng. Thay đổi này giải quyết sự bế tắc trongos.isatty(). Bản vá của Vincent Michel trong bpo-44219.
Cốt lõi và nội dung¶
bpo-44959: Đã thêm dự phòng cho các mô-đun mở rộng có hậu tố '.sl' trên HP-UX
Thư viện¶
bpo-45121: Khắc phục sự cố trong đó
Protocol.__init__tăngRecursionErrorkhi được gọi trực tiếp hoặc quasuper(). Bản vá được cung cấp bởi Yurii Karabas.
Cốt lõi và nội dung¶
bpo-44348: Chức năng giải phóng của loại
BaseExceptionhiện sử dụng cơ chế thùng rác để ngăn chặn tràn ngăn xếp. Ví dụ: khi một phiên bảnRecursionErrorđược nâng lên, nó có thể được liên kết với một RecursionError khác thông qua thuộc tính__context__hoặc thuộc tính__traceback__, sau đó một chuỗi ngoại lệ được tạo. Khi chuỗi bị hủy, các lệnh gọi hàm giải phóng lồng nhau có thể gặp sự cố do tràn ngăn xếp nếu chuỗi quá dài so với bộ nhớ ngăn xếp có sẵn. Bản vá của Victor Stinner.bpo-45123: Sửa PyAiter_Check để chỉ kiểm tra sự hiện diện của __anext__ (không phải cho __aiter__). Đổi tên PyAiter_Check thành PyAIter_Check, PyObject_GetAiter -> PyObject_GetAIter.
bpo-1514420: Trình thông dịch không còn cố mở các tệp có tên trong dấu ngoặc nhọn (như "<string>" hoặc "<stdin>") khi định dạng một ngoại lệ.
bpo-41031: Khớp định dạng mã C và Python của các ngoại lệ và ngoại lệ không thể in được trong mô-đun
__main__.bpo-37330:
open(),io.open(),codecs.open()vàfileinput.FileInputkhông còn chấp nhận'U'("dòng mới phổ quát") ở chế độ tệp. Cờ này không được dùng nữa kể từ Python 3.3. Bản vá của Victor Stinner.bpo-45083: Khi trình thông dịch hiển thị một ngoại lệ, tên của nó hiện có tên chất lượng hoàn chỉnh. Trước đây chỉ có tên lớp được nối với tên mô-đun, điều này đôi khi dẫn đến hiển thị tên đầy đủ không chính xác.
(Sự cố này chỉ ảnh hưởng đến kết xuất ngoại lệ mã C, mô-đun
tracebackđã sử dụng qualname rồi).bpo-34561: Sắp xếp danh sách hiện sử dụng chiến lược sắp xếp thứ tự hợp nhất từ
powersort()của Munro và Wild. Không giống như chiến lược trước đây, chiến lược này được chứng minh là gần tối ưu về entropy của phân bố độ dài lần chạy. Hầu hết việc sử dụnglist.sort()có thể sẽ không thấy sự khác biệt đáng kể về thời gian, nhưng có thể thấy những cải thiện đáng kể trong trường hợp chiến lược trước đây đặc biệt kém. Tuy nhiên, vì đây đều là những phép tính gần đúng theo thời gian tuyến tính nhanh cho một bài toán vốn có thời gian bậc hai tốt nhất để giải quyết thực sự tối ưu, nên cũng có thể tạo ra các trường hợp mà chiến lược trước đây đã làm tốt hơn.bpo-45056: Trình biên dịch hiện xóa các hằng số không được sử dụng ở cuối khỏi co_const.
bpo-45020: Thêm tùy chọn dòng lệnh mới, "-X Frozen_modules=[on|off]" để chọn không tham gia (hoặc tham gia) bằng cách sử dụng các mô-đun cố định tùy chọn. Điều này mặc định là "bật" (hoặc "tắt" nếu nó hết cây nguồn).
Thư viện¶
bpo-45012: Trong
posix, phát hành GIL trong các tòa nhà cao tầngstat(),lstat()vàfstatat()doos.DirEntry.stat()tạo. Bản vá của Stanisław Skonieczny.
Cốt lõi và nội dung¶
bpo-45018: Đã sửa lỗi chọn các trình vòng lặp phạm vi đã lặp hơn
2**32lần.bpo-45000: Một
SyntaxErrorhiện được nâng lên khi cố gắng xóa__debug__. Bản vá của Donghee Na.bpo-44963: Triển khai các phương thức
send()vàthrow()cho các đối tượnganext_awaitable. Bản vá của Pablo Galindo.
Thư viện¶
bpo-44962: Khắc phục một cuộc đua trong WeakKeyDictionary, WeakValueDictionary và WeakSet khi hai luồng cố gắng thực hiện lần xóa cuối cùng đang chờ xử lý. Điều này khắc phục asyncio.create_task và khắc phục tình trạng mất dữ liệu trong asyncio.run khi tắt máy_asyncgens không chạy
Cốt lõi và nội dung¶
bpo-24234: Triển khai phương thức đặc biệt
__bytes__()trên loạibytes, để đối tượng bytebvượt qua kiểm traisinstance(b, typing.SupportsBytes).bpo-24234: Triển khai phương thức đặc biệt
__complex__()trên loạicomplex, để số phứczvượt qua kiểm traisinstance(z, typing.SupportsComplex).bpo-44954: Đã sửa lỗi trường hợp góc trong đó kết quả của
float.fromhex('0x.8p-1074')được làm tròn sai cách.bpo-44947: Tinh chỉnh lỗi cú pháp cho dấu phẩy ở cuối câu lệnh nhập. Bản vá của Pablo Galindo.
bpo-44945: Chuyên hướng dẫn BINARY_ADD sử dụng máy PEP 659. Thêm năm hướng dẫn mới:
BINARY_ADD_ADAPTIVE
BINARY_ADD_FLOAT
BINARY_ADD_INT
BINARY_ADD_UNICODE
BINARY_ADD_UNICODE_INPLACE_FAST
Thư viện¶
bpo-44929: Khắc phục một số trường hợp cạnh của biểu diễn chuỗi
enum.Flagtrong REPL. Bản vá của Pablo Galindo.
Cốt lõi và nội dung¶
bpo-44914: Thẻ phiên bản lớp không còn được tái chế.
Điều này có nghĩa là thẻ phiên bản đóng vai trò là mã định danh duy nhất cho trạng thái của một lớp. Chúng tôi dựa vào điều này để chuyên môn hóa hiệu quả LOAD_ATTR và các hướng dẫn khác.
bpo-44698: Khôi phục hành vi lũy thừa phức tạp với số mũ có giá trị nguyên thuộc loại
floathoặccomplex.bpo-44895: Biến gỡ lỗi
PYTHONDUMPREFSFILEđược thêm vào để tạo tệp kết xuất được tạo bởi--with-trace-refs. Bản vá của Donghee Na.bpo-44900: Thêm năm hướng dẫn cao hơn để tăng tốc PEP 659:
LOAD_FAST LOAD_FAST
STORE_FAST LOAD_FAST
LOAD_FAST LOAD_CONST
LOAD_CONST LOAD_FAST
STORE_FAST STORE_FAST
bpo-44889: Triển khai bước đầu chuyên môn hóa thích ứng của
LOAD_METHOD. Các biểu mẫu chuyên biệt sau đây đã được thêm vào:LOAD_METHOD_CACHEDLOAD_METHOD_MODULELOAD_METHOD_CLASS
bpo-44890: Số liệu thống kê chuyên môn luôn được thu thập trong các bản dựng gỡ lỗi.
bpo-44885: Sửa vị trí ast của chuỗi f bằng thông số định dạng và biểu thức lặp lại. Bản vá của Pablo Galindo
bpo-44878: Xóa vòng lặp khỏi trình thông dịch mã byte. Tất cả các hướng dẫn đều kết thúc bằng macro DISPATCH, do đó vòng lặp hiện không còn cần thiết.
bpo-44878: Xóa câu lệnh chuyển đổi cho vòng lặp trình thông dịch khi sử dụng gotos được tính toán. Điều này đảm bảo rằng chúng ta chỉ có một bảng điều phối trong trình thông dịch.
bpo-44874: Không dùng macro thùng rác cũ (
Py_TRASHCAN_SAFE_BEGIN/Py_TRASHCAN_SAFE_END). Chúng nên được thay thế bằng macro mớiPy_TRASHCAN_BEGINvàPy_TRASHCAN_END.bpo-44872: Sử dụng macro thùng rác mới (Py_TRASHCAN_BEGIN/END) trong frameobject.c thay vì macro cũ (Py_TRASHCAN_SAFE_BEGIN/END).
bpo-33930: Sửa lỗi phân đoạn bằng đệ quy sâu khi làm sạch các đối tượng phương pháp. Bản vá của Augusto Goulart và Pablo Galindo.
bpo-25782: Sửa lỗi
PyErr_SetObjectbị treo khi ngoại lệ hiện tại có chu kỳ trong chuỗi ngữ cảnh của nó.bpo-44856: Sửa lỗi rò rỉ tham chiếu trong đường dẫn lỗi của
update_bases()và__build_class__. Bản vá của Pablo Galindo.bpo-44826: Triển khai bước đầu chuyên môn hóa thích ứng của STORE_ATTR
Ba dạng STORE_ATTR chuyên biệt được thêm vào:
STORE_ATTR_SLOT
STORE_ATTR_SPLIT_KEYS
STORE_ATTR_WITH_HINT
bpo-44838: Đã sửa lỗi khiến trình phân tích cú pháp đưa ra
SyntaxErrortùy chỉnh không chính xác cho các biểu thức 'if' không hợp lệ. Bản vá của Pablo Galindo.bpo-44821: Tạo từ điển phiên bản (__dict__) một cách háo hức, để cải thiện tính đều đặn của bố cục đối tượng và hỗ trợ chuyên môn hóa.
bpo-44792: Cải thiện lỗi cú pháp cho biểu thức if. Bản vá của Miguel Brito
bpo-34013: Tổng quát hóa thông báo lỗi tùy chỉnh câu lệnh kế thừa không hợp lệ (như thông báo được tạo khi lệnh "in" được gọi mà không có dấu ngoặc đơn) để bao gồm nhiều biểu thức chung hơn. Bản vá của Pablo Galindo
bpo-44732: Đổi tên
types.Unionthànhtypes.UnionType.bpo-44725: Hiển thị số liệu thống kê chuyên môn trong python thông qua
_opcode.get_specialization_stats().bpo-44717: Cải thiện AttributionError khi nhập vòng tròn các mô-đun con.
bpo-44698: Khắc phục hành vi không xác định trong lũy thừa đối tượng phức tạp.
bpo-44653: Hỗ trợ các loại
typingtrong việc thay thế tham số trong loại kết hợp.bpo-44676: Thêm khả năng tuần tự hóa các đối tượng
types.Union. Bản vá được cung cấp bởi Yurii Karabas.bpo-44633: Việc thay thế tham số của loại kết hợp bằng loại sai hiện sẽ tăng
TypeErrorthay vì trả vềNotImplemented.bpo-44661: Cập nhật
property_descr_setđể sử dụng vectorcall nếu có thể. Bản vá của Donghee Na.bpo-44662: Thêm
__module__vàotypes.Union. Điều này cũng khắc phục sự cốtypes.Unionvớityping.Annotated. Bản vá được cung cấp bởi Yurii Karabas.bpo-44655: Bao gồm tên của loại trong lỗi thuộc tính __slots__ không được đặt. Bản vá của Pablo Galindo
bpo-44655: Không bao gồm thuộc tính bị thiếu có cùng tên với thuộc tính bị lỗi khi đưa ra đề xuất cho các thuộc tính bị thiếu. Bản vá của Pablo Galindo
bpo-44646: Sửa hàm băm của loại kết hợp: nó không còn phụ thuộc vào thứ tự của các đối số.
bpo-44636: Thu gọn kết hợp các loại bằng nhau. Ví dụ. kết quả của
int | intbây giờ làint. Sửa lỗi so sánh loại kết hợp với các đối tượng không thể băm được. Ví dụ.int | str == {}không còn gây ra TypeError nữa.
Thư viện¶
bpo-44611: Trên Windows,
os.urandom(): sử dụng BCryptGenRandom API thay vì CryptGenRandom API không được dùng nữa trên Microsoft Windows API. Bản vá của Donghee Na.
Cốt lõi và nội dung¶
bpo-44635: Chuyển đổi
Nonethànhtype(None)trong hàm tạo kiểu kết hợp.bpo-26280: Triển khai chuyên môn hóa thích ứng cho BINARY_SUBSCR
Ba dạng BINARY_SUBSCR chuyên biệt được thêm vào:
BINARY_SUBSCR_LIST_INT
BINARY_SUBSCR_TUPLE_INT
BINARY_SUBSCR_DICT
bpo-44589: Các mẫu ánh xạ trong câu lệnh
matchcó hai hoặc nhiều khóa bằng nhau giờ đây sẽ tạo raSyntaxErrortại thời gian biên dịch.bpo-44606: Sửa
__instancecheck__và__subclasscheck__cho loại kết hợp.bpo-42073: Trình trang trí
@classmethodhiện có thể bao bọc các bộ mô tả giống phương thức lớp khác.bpo-41972: Đã điều chỉnh thuật toán tìm kiếm chuỗi của fastsearch.h để có vòng lặp bên trong ngắn hơn trong hầu hết các trường hợp.
bpo-44590: Tất cả dữ liệu cần thiết để thực thi hàm Python (biến cục bộ, ngăn xếp, v.v.) hiện được lưu giữ trong ngăn xếp trên mỗi luồng. Các đối tượng khung được phân bổ một cách lười biếng theo yêu cầu. Điều này làm tăng hiệu suất khoảng 7% trên bộ điểm chuẩn tiêu chuẩn. Việc xem xét nội tâm và gỡ lỗi không bị ảnh hưởng vì các đối tượng khung luôn có sẵn khi cần. Bản vá của Mark Shannon.
bpo-44584: Gỡ lỗi luồng (biến môi trường
PYTHONTHREADDEBUG) không được dùng nữa trong Python 3.10 và sẽ bị xóa trong Python 3.12. Tính năng này yêu cầu bản dựng gỡ lỗi của Python. Bản vá của Victor Stinner.bpo-43895: Một bộ đệm nội bộ lỗi thời của các trình xử lý tệp đối tượng dùng chung được thêm vào năm 1995 đã cố gắng nhưng không đảm bảo rằng một .so sẽ không bị xóa hai lần để khắc phục các sai sót trong các hệ điều hành posix-ish giữa những năm 1990 đã bị xóa khỏi dynload_shlib.c.
Thư viện¶
Cốt lõi và nội dung¶
bpo-43950: Các đối tượng mã hiện có thể cung cấp thông tin cột để được hướng dẫn khi có sẵn. Điều này được tận dụng trong quá trình in truy ngược để hiển thị các biểu thức chịu trách nhiệm về lỗi.
Được đóng góp bởi Pablo Galindo, Batuhan Taskaya và Ammar Askar như một phần của PEP 657.
bpo-44562: Loại bỏ việc sử dụng
PyObject_GC_Del()trong đường dẫn lỗi khi khởi tạotypes.GenericAlias.
Thư viện¶
bpo-41486: Khắc phục tình trạng tiêu thụ bộ nhớ và hồi quy hiệu suất sao chép trong các bản phát hành beta 3.10 trước đó nếu ai đó sử dụng bộ đệm đầu ra lớn hơn 4GiB với zlib.decompress trên dữ liệu đầu vào mở rộng đến mức đó.
Cốt lõi và nội dung¶
bpo-43908: Các loại heap có cờ
Py_TPFLAGS_IMMUTABLETYPEhiện có thể kế thừa giao thức vectorcall PEP 590. Trước đây, điều này chỉ có thể thực hiện được với static types. Bản vá của Erlend E. Aasland.bpo-44553: Triển khai các phương pháp GC cho
types.Unionđể phá vỡ chu trình tham chiếu và ngăn chặn rò rỉ bộ nhớ.bpo-44490: Thêm thuộc tính
__parameters__và toán tử__getitem__vàotypes.Union. Bản vá được cung cấp bởi Yurii Karabas.bpo-44523: Loại bỏ sự chuyển tiếp cho
hash()của các đối tượngweakref.proxyđể ngăn chặn những hậu quả không mong muốn khi đối tượng được tham chiếu ban đầu chết trong khi proxy là một phần của đối tượng có thể băm. Bản vá của Pablo Galindo.bpo-44483: Khắc phục sự cố trong các đối tượng
types.Unionkhi tạo liên kết một đối tượng có trường__module__không hợp lệ.bpo-44486: Các mô-đun sẽ luôn có từ điển, ngay cả khi được tạo bởi
types.ModuleType.__new__()bpo-44472: Khắc phục chức năng ltrace khi có ngoại lệ. Bản vá của Pablo Galindo
bpo-12022: Một
TypeErrorhiện được nâng lên thay vìAttributeErrortrong các câu lệnhwithvàasync withcho các đối tượng không hỗ trợ giao thức context manager hoặc asynchronous context manager tương ứng.bpo-44297: Đảm bảo rằng số dòng được đặt khi nhập phạm vi hiểu. Điều này đảm bảo rằng các dấu vết lùi bao gồm các biểu thức trình tạo hiển thị số dòng chính xác.
bpo-44456: Cải thiện lỗi cú pháp khi trộn lẫn các mẫu vị trí và từ khóa. Bản vá của Pablo Galindo.
bpo-44409: Sửa thông tin vị trí lỗi cho các lỗi mã thông báo phát sinh khi khởi tạo mã thông báo. Bản vá của Pablo Galindo.
bpo-44396: Khắc phục sự cố có thể xảy ra trong bộ mã thông báo khi đưa ra lỗi cú pháp cho các chuỗi không được tiết lộ. Bản vá của Pablo Galindo.
bpo-44376: lũy thừa số nguyên chính xác (như
i**2hoặcpow(i, 2)) với số mũ nhỏ sẽ nhanh hơn nhiều do giảm chi phí trong những trường hợp như vậy.bpo-44313: Các đối tượng và mô-đun được nhập trực tiếp (thông qua các câu lệnh nhập và từ nhập) không tạo ra
LOAD_METHOD/CALL_METHODcho các đối tượng được truy cập trực tiếp trên không gian tên của chúng. Bây giờ họ sử dụngLOAD_ATTR/CALL_FUNCTIONthông thường.bpo-44338: Triển khai chuyên môn hóa thích ứng cho LOAD_GLOBAL
Hai dạng LOAD_GLOBAL chuyên biệt được thêm vào:
LOAD_GLOBAL_MODULE
LOAD_GLOBAL_BUILTIN
bpo-44368: Cải thiện lỗi cú pháp cho các mục tiêu "as" không hợp lệ. Bản vá của Pablo Galindo
bpo-44349: Khắc phục trường hợp cạnh khi hiển thị văn bản từ các tệp có lỗi mã hóa theo cú pháp. Bản vá của Pablo Galindo.
bpo-44337: Triển khai bước đầu chuyên môn hóa thích ứng của LOAD_ATTR
Bốn dạng LOAD_ATTR chuyên dụng được thêm vào:
LOAD_ATTR_SLOT
LOAD_ATTR_SPLIT_KEYS
LOAD_ATTR_WITH_HINT
LOAD_ATTR_MODULE
bpo-44335: Sửa lỗi hồi quy khi xác định ký tự sai trong lỗi cú pháp. Bản vá của Pablo Galindo
bpo-43693: Việc tính toán độ lệch của các biến ô được thực hiện trong trình biên dịch thay vì trong thời gian chạy. Điều này làm giảm chi phí xử lý các biến ô và biến tự do, đặc biệt trong trường hợp một biến vừa là đối số vừa là biến ô.
bpo-44317: Cải thiện lỗi mã thông báo với các vị trí được cải thiện. Bản vá của Pablo Galindo.
Thư viện¶
Cốt lõi và nội dung¶
bpo-44305: Cải thiện thông báo lỗi cho các khối
trykhông có khốiexcepthoặcfinally. Bản vá của Pablo Galindo.bpo-43413: Hàm tạo của các lớp con của một số lớp dựng sẵn (ví dụ:
tuple,list,frozenset) không còn chấp nhận các đối số từ khóa tùy ý. [hoàn nguyên trong 3.11a4] Lớp con củasethiện có thể định nghĩa phương thức__new__()với các tham số từ khóa bổ sung mà không ghi đè__init__().bpo-43667: Cải thiện khả năng hỗ trợ Unicode ở các ngôn ngữ không phải UTF trên Oracle Solaris. Sự cố này không ảnh hưởng đến các hệ thống Solaris khác.
bpo-43693: Một mã opcode mới MAKE_CELL đã được thêm vào để di chuyển một cách hiệu quả một số công việc được thực hiện khi nhập hàm vào trình biên dịch và vào vòng lặp eval. Ngoài việc tạo các đối tượng ô cần thiết, opcode mới còn chuyển đổi các đối số có liên quan (và các đối tượng cục bộ khác) thành các biến ô khi nhập hàm.
bpo-44232: Khắc phục hồi quy trong
type()khi siêu dữ liệu đưa ra một ngoại lệ. Hàm Ctype_new()phải báo cáo chính xác ngoại lệ khi hàm tạo siêu dữ liệu đưa ra một ngoại lệ và lớp chiến thắng không phải là siêu dữ liệu. Bản vá của Victor Stinner.bpo-44201: Tránh tác dụng phụ của việc kiểm tra các lỗi cú pháp chuyên biệt trong REPL khiến nó yêu cầu thêm mã thông báo sau khi phát hiện thấy lỗi cú pháp. Bản vá của Pablo Galindo
bpo-43693:
PyCodeObjectđã đạt đượcco_fastlocalnamesvàco_fastlocalkindslà nguồn thông tin địa phương nhanh chóng có thẩm quyền. Các đối tượng mã Marshaled đã thay đổi tương ứng.bpo-44184: Khắc phục sự cố khi thoát Python khi hàm giải mã loại bỏ tham chiếu mạnh cuối cùng đến loại vùng nhớ heap. Bản vá của Victor Stinner.
bpo-44187: Thực hiện tăng tốc trong trình thông dịch. Điều này chưa mang lại lợi ích gì nhưng là một yếu tố hỗ trợ tối ưu hóa trong tương lai. Xem PEP 659 để được giải thích đầy đủ.
bpo-44180: Trình phân tích cú pháp không báo cáo các lỗi cú pháp chung xảy ra ở một vị trí xa hơn vị trí mà nó đạt được trong lần chuyển đầu tiên. Bản vá của Pablo Galindo
bpo-44168: Sửa thông báo lỗi trong trình phân tích cú pháp liên quan đến đối số từ khóa có biểu thức không hợp lệ. Bản vá của Pablo Galindo
bpo-44156: Bộ đệm chuỗi trong
compile.chiện tương thích với trình thông dịch phụ.bpo-44143: Đã khắc phục sự cố trong trình phân tích cú pháp xuất hiện khi đưa ra lỗi mã thông báo khi có ngoại lệ hiện có. Bản vá của Pablo Galindo.
bpo-44032: Di chuyển cục bộ 'nhanh' và các biến khác từ đối tượng khung sang ngăn dữ liệu trên mỗi luồng.
bpo-44114: Sửa chữ ký hàm dictkeys_reversed và dictitems_reversed không chính xác trong mã C, làm hỏng các bản dựng webassembly.
bpo-44110: Cải thiện thông báo lỗi
str.__getitem__()bpo-26110: Thêm opcode
CALL_METHOD_KWđể tăng tốc độ gọi phương thức bằng đối số từ khóa. Ý tưởng bắt nguồn từ PyPy. Một tác dụng phụ là việc thực thiCALL_METHODhiện không còn phân nhánh trong vòng đánh giá.bpo-28307: Trình biên dịch hiện tối ưu hóa định dạng kiểu C đơn giản với định dạng chữ chỉ chứa mã định dạng %s, %r và %a bằng cách chuyển đổi chúng thành biểu thức chuỗi f.
bpo-43149: Sửa thông báo lỗi cú pháp liên quan đến nhiều loại ngoại lệ để không đề cập đến "nhóm ngoại lệ". Bản vá của Pablo Galindo
bpo-43822: Trình phân tích cú pháp sẽ ưu tiên các lỗi mã thông báo hơn các lỗi cú pháp tùy chỉnh khi đưa ra các ngoại lệ. Bản vá của Pablo Galindo.
bpo-40222: Xử lý ngoại lệ "không tốn phí".
Sử dụng bảng tra cứu để xác định cách xử lý các trường hợp ngoại lệ.
Loại bỏ các hướng dẫn khối SETUP_FINALLY và POP_TOP, loại bỏ chi phí thời gian chạy của các câu lệnh thử.
Giảm kích thước của đối tượng khung xuống khoảng 60%.
Bản vá của Mark Shannon
bpo-43918: Ghi lại chữ ký và đối số
defaulttrong chuỗi tài liệu của nội dunganextmới.bpo-43833: Đưa ra cảnh báo không dùng nữa nếu chữ số ngay trước một trong các từ khóa: and, else, for, if, in, is, or. Đưa ra lỗi cú pháp với thông báo chứa nhiều thông tin hơn nếu ngay sau đó là từ khóa hoặc mã định danh khác.
bpo-43879: Thêm Native_thread_id vào PyThreadState. Bản vá của Gabriele N. Tornetta.
bpo-43693: Tính toán độ lệch ô so với cục bộ trong trình biên dịch. Cho phép trình thông dịch xử lý các cục bộ và ô trong một mảng duy nhất, hiệu quả hơn một chút. Đồng thời đặt opcode LOAD_CLOSURE làm bí danh cho LOAD_FAST. Việc bảo toàn LOAD_CLOSURE giúp giữ cho mã byte dễ đọc hơn một chút.
bpo-17792: Thông báo lỗi chính xác hơn để truy cập vào người dân địa phương không bị ràng buộc hoặc các bình miễn phí.
bpo-28146: Sửa thông báo lỗi khó hiểu trong
str.format().bpo-11105: Khi biên dịch các đối tượng
ast.ASTvới các tham chiếu đệ quy thông quacompile(), trình thông dịch không gặp sự cố nữa thay vào đó nó sẽ tạo ra mộtRecursionError.bpo-39091: Khắc phục sự cố khi sử dụng chuyển một ngoại lệ sang phương thức
throw()của trình tạo. Bản vá của Noah Oxerbpo-33346: Hiện tại, việc hiểu không đồng bộ được cho phép bên trong việc hiểu trong các hàm không đồng bộ. Sự hiểu biết bên ngoài ngầm trở nên không đồng bộ.
Thư viện¶
bpo-45371: Khắc phục sự cố đường dẫn clang trong
distutils. UnixCCompiler hiện sử dụng tùy chọn clang chính xác để thêm thư mục thư viện thời gian chạy (rpath) vào thư viện dùng chung.bpo-45329: Sửa lỗi truy cập bộ nhớ được giải phóng trong
pyexpat.xmlparserkhi xây dựng nó bằng thư viện người nước ngoài đã cài đặt <= 2.2.0.bpo-41710: Trên Unix, nếu chức năng
sem_clockwait()có sẵn trong thư viện C (glibc 2.30 trở lên), phương phápthreading.Lock.acquire()hiện sử dụng đồng hồ đơn điệu (time.CLOCK_MONOTONIC) cho thời gian chờ, thay vì sử dụng đồng hồ hệ thống (time.CLOCK_REALTIME), để không bị ảnh hưởng bởi những thay đổi về đồng hồ hệ thống. Bản vá của Victor Stinner.bpo-1596321: Sửa chức năng
threading._shutdown()khi mô-đunthreadingđược nhập trước tiên từ một luồng khác với luồng chính: không còn ghi lại lỗi khi thoát Python.bpo-45274: Khắc phục tình trạng chạy đua trong phương pháp
Thread.join()của mô-đunthreading. Nếu chức năng bị gián đoạn bởi một tín hiệu và trình xử lý tín hiệu đưa ra một ngoại lệ, hãy đảm bảo rằng luồng vẫn ở trạng thái nhất quán để ngăn chặn tình trạng bế tắc. Bản vá của Victor Stinner.bpo-21302: Trong hệ điều hành Unix,
time.sleep()hiện sử dụng chức năngnanosleep(), nếuclock_nanosleep()không có nhưngnanosleep()có sẵn.nanosleep()cho phép ngủ với độ chính xác nano giây.bpo-21302: Trên Windows,
time.sleep()hiện sử dụng bộ hẹn giờ có thể chờ có độ phân giải 100 nano giây (10-7 giây). Trước đây, nó có độ phân giải 1 mili giây (10-3 giây). Bản vá của Benjamin Szőke và Victor Stinner.bpo-45238: Khắc phục
unittest.IsolatedAsyncioTestCase.debug(): hiện nó chạy các phương thức và lệnh gọi lại không đồng bộ.bpo-36674:
unittest.TestCase.debug()hiện tăngunittest.SkipTestnếu lớp hoặc phương thức thử nghiệm được trang trí bằng trình trang trí bỏ qua.bpo-45235: Khắc phục sự cố trong đó argparse không giữ nguyên các giá trị trong không gian tên được cung cấp khi sử dụng trình phân tích cú pháp con có giá trị mặc định.
bpo-45183: Yêu cầu zipimport.zipimporter.find_spec() không đưa ra ngoại lệ khi tệp zip cơ bản đã bị xóa và bộ đệm trong đã được đặt lại thông qua không hợp lệ_cache().
bpo-45234: Đã sửa lỗi hồi quy trong
copyfile(),copy(),copy2()tăngFileNotFoundErrorkhi nguồn là một thư mục, điều này sẽ tăngIsADirectoryErrorbpo-45228: Sửa lỗi tràn bộ đệm ngăn xếp khi phân tích địa chỉ mạng J1939.
bpo-45225: sử dụng chức năng bản đồ thay vì genexpr trong capwords.
bpo-42135: Sửa lỗi đánh máy:
importlib.find_loaderthực sự được dự kiến xóa trong Python 3.12 chứ không phải 3.10, giống như các lỗi khác trong PR 25169.Bản vá của Hugo van Kemenade.
bpo-20524: Cải thiện thông báo lỗi khi vận hành
.format()chostr,float,intvàcomplex. Định dạng mới hiện hiển thị mẫu có vấn đề và loại đối tượng.bpo-45168: Thay đổi đầu ra
dis.dis()để bỏ qua các giá trị op arg không thể giải quyết được doco_consts,co_names, v.v. không được cung cấp. Trước đây, bản thân oparg được lặp lại trong trường giá trị, điều này không hữu ích và có thể gây nhầm lẫn.bpo-21302: Trong hệ điều hành Unix,
time.sleep()hiện sử dụng chức năngclock_nanosleep(), nếu có, cho phép ngủ trong khoảng thời gian được chỉ định với độ chính xác nano giây.bpo-45173: Xóa khỏi mô-đun
configparser: lớpSafeConfigParser, thuộc tínhfilenamecủa lớpParsingError, phương thứcreadfp()của lớpConfigParser, không được dùng nữa kể từ Python 3.2.Bản vá của Hugo van Kemenade.
bpo-44987: Chuỗi ASCII thuần túy hiện được chuẩn hóa theo thời gian không đổi bởi
unicodedata.normalize(). Bản vá của Donghee Na.bpo-35474: Gọi
mimetypes.guess_all_extensions()bằngstrict=Falsekhông còn ảnh hưởng đến kết quả của cuộc gọi sau vớistrict=True. Ngoài ra, việc thay đổi danh sách trả về không còn ảnh hưởng đến trạng thái toàn cầu.bpo-45166:
typing.get_type_hints()hiện hoạt động vớiFinalđược gói trongForwardRef.bpo-45162: Xóa nhiều tính năng
unittestcũ không còn được dùng nữa:Bí danh "
fail*" và "assert*" của phương thứcTestCase.Bị hỏng từ đầu phương thức
TestCaseassertDictContainsSubset().Đã bỏ qua tham số
<unittest.TestLoader.loadTestsFromModule> TestLoader.loadTestsFromModule()use_load_tests.Bí danh cũ
_TextTestResultcủaTextTestResult.
bpo-38371: Loại bỏ phương thức
split()không được dùng nữa của_tkinter.TkappType. Bản vá của Erlend E. Aasland.bpo-20499: Cải thiện tốc độ và độ chính xác của stats.pvariance().
bpo-45132: Xóa các phương thức
__getitem__()củaxml.dom.pulldom.DOMEventStream,wsgiref.util.FileWrappervàfileinput.FileInput, không được dùng nữa kể từ Python 3.9.Bản vá của Hugo van Kemenade.
bpo-45129: Do những lo ngại nghiêm trọng về bảo mật, tham số reuse_address của
asyncio.loop.create_datagram_endpoint(), bị vô hiệu hóa trong Python 3.9, hiện đã bị xóa hoàn toàn. Điều này là do hoạt động của tùy chọn ổ cắmSO_REUSEADDRtrong UDP.Bản vá của Hugo van Kemenade.
bpo-45124: Lệnh
bdist_msi, không được dùng nữa trong Python 3.9, hiện đã bị xóa.Thay vào đó hãy sử dụng
bdist_wheel(gói bánh xe).Bản vá của Hugo van Kemenade.
bpo-30856: Các phương thức
unittest.TestResultaddFailure(),addError(),addSkip()vàaddSubTest()hiện được gọi ngay sau khi đưa ra một ngoại lệ trong bài kiểm tra hoặc hoàn thành bài kiểm tra phụ. Trước đây họ chỉ được gọi sau khi hoàn thành việc dọn dẹp bài kiểm tra.bpo-45034: Thay đổi cách định dạng lỗi cho
struct.packvới chế độ'H'và'h'cũng như số quá lớn/nhỏ. Bây giờ nó hiển thị các giới hạn số thực tế, trong khi trước đó nó hiển thị các biểu thức số học.bpo-25894:
unittesthiện luôn báo cáo riêng các bài kiểm tra phụ bị bỏ qua và không thành công: tách các ký tự ở chế độ mặc định và tách các dòng ở chế độ dài dòng. Ngoài ra, mô tả kiểm tra hiện được xuất ra để phát hiện các lỗi trong quá trình dọn dẹp phương pháp kiểm tra, lớp và mô-đun.bpo-45081: Khắc phục sự cố khi các lớp dữ liệu kế thừa từ các lớp con
typing.Protocolcó__init__sai. Bản vá được cung cấp bởi Yurii Karabas.bpo-45085: Mô-đun
binhex, không được dùng nữa trong Python 3.9, hiện đã bị xóa. Các hàmbinasciisau, không được dùng nữa trong Python 3.9, hiện cũng bị xóa:a2b_hqx(),b2a_hqx();rlecode_hqx(),rledecode_hqx().
Chức năng
binascii.crc_hqx()vẫn khả dụng.Bản vá của Victor Stinner.
bpo-40360: Gói
lib2to3hiện không được dùng nữa và có thể không phân tích được Python 3.10 hoặc mới hơn. Xem PEP 617 (Trình phân tích cú pháp PEG mới cho CPython). Bản vá của Victor Stinner.bpo-45075: Đổi tên
traceback.StackSummary.format_frame()thànhtraceback.StackSummary.format_frame_summary(). Phương pháp này đã được thêm vào phiên bản 3.11 nên nó chưa được phát hành.Đã cập nhật mã và tài liệu để phân biệt rõ hơn khung và FrameSummary.
bpo-31299: Thêm tùy chọn loại bỏ hoàn toàn khung hình khỏi truy nguyên bằng cách trả về
Nonetừ ghi đèformat_frame().bpo-41620:
run()hiện luôn trả về phiên bảnTestResult. Trước đây, nó trả vềNonenếu lớp hoặc phương thức thử nghiệm được trang trí bằng trình trang trí bỏ qua.bpo-45021: Khắc phục tình trạng bế tắc tiềm ẩn khi tắt các phần tử con được phân nhánh khi sử dụng mô-đun
concurrent.futuresbpo-43913: Sửa lỗi dọn dẹp các lớp và mô-đun trong
unittest:Các hàm được đăng ký với
addModuleCleanup()không được gọi trừ khi người dùng xác địnhtearDownModule()trong mô-đun thử nghiệm của họ.Các chức năng được đăng ký với
addClassCleanup()sẽ không được gọi nếutearDownClassđược đặt thànhNone.Bộ đệm trong
TestResultkhông hoạt động với các chức năng được đăng ký vớiaddClassCleanup()vàaddModuleCleanup().Lỗi trong các chức năng được đăng ký với
addClassCleanup()vàaddModuleCleanup()không được xử lý chính xác ở chế độ đệm và gỡ lỗi.Lỗi trong
setUpModule()và các chức năng được đăng ký vớiaddModuleCleanup()đã được báo cáo sai thứ tự.Và một số lỗi nhỏ hơn.
bpo-45030: Sửa lỗi tràn số nguyên trong quá trình tẩy và sao chép trình vòng lặp phạm vi.
bpo-45001: Làm cho việc phân tích ngày email trở nên mạnh mẽ hơn đối với dữ liệu đầu vào không đúng định dạng, cụ thể là tiêu đề
Date:chỉ có khoảng trắng. Bản vá của Wouter Bolsterlee.bpo-45010: Xóa hỗ trợ phương thức đặc biệt
__div__trongunittest.mock. Nó không được sử dụng trong Python 3.bpo-39218: Cải thiện độ chính xác của phép tính phương sai bằng cách sử dụng
x*xthay vìx**2.bpo-43613: Cải thiện tốc độ của
gzip.compress()vàgzip.decompress()bằng cách nén và giải nén cùng lúc trong bộ nhớ thay vì theo kiểu truyền phát.bpo-37596: Đảm bảo rằng các đối tượng
setvàfrozensetluôn có thể tái tạo đượcmarshalled.bpo-44019: Một chức năng mới
operator.callđã được thêm vào, chẳng hạn nhưoperator.call(obj, *args, **kwargs) == obj(*args, **kwargs).bpo-42255:
webbrowser.MacOSXkhông được dùng nữa và sẽ bị xóa trong Python 3.13. Nó chưa được kiểm tra, không có giấy tờ và cũng không đượcwebbrowsersử dụng. Bản vá của Donghee Na.bpo-44955: Phương thức
stopTestRun()hiện luôn được gọi cùng với phương thứcstartTestRun()cho các đối tượngTestResultđược tạo ngầm trongrun(). Trước đây, nó không được yêu cầu cho các phương pháp thử nghiệm và các lớp được trang trí bằng trình trang trí bỏ qua.bpo-39039: tarfile.open tăng
ReadErrorkhi xảy ra lỗi zlib trong quá trình trích xuất tệp.bpo-44935:
subprocesstrên Solaris hiện cũng sử dụngos.posix_spawn()để có hiệu suất tốt hơn.bpo-44911:
IsolatedAsyncioTestCasesẽ không còn đưa ra ngoại lệ khi hủy các tác vụ bị rò rỉ. Bản vá của Bar Harel.bpo-41322: Đã thêm
DeprecationWarningcho các bài kiểm tra và kiểm tra không đồng bộ trả về một giá trị!=None (vì điều này có thể cho thấy bài kiểm tra được viết không đúng, ví dụ: bài kiểm tra được viết dưới dạng hàm tạo).bpo-44524: Làm cho thông báo ngoại lệ hữu ích hơn khi lớp con nhập bí danh biểu mẫu đặc biệt. Bản vá được cung cấp bởi Yurii Karabas.
bpo-38956: Giá trị mặc định của
argparse.BooleanOptionalActionkhông còn được in hai lần khi sử dụng vớiargparse.ArgumentDefaultsHelpFormatter.bpo-44860: Sửa sơ đồ
posix_usertrongsysconfigđể không phụ thuộc vàosys.platlibdir.bpo-44859: Cải thiện khả năng xử lý lỗi trong
sqlite3và đưa ra các ngoại lệ chính xác hơn.MemoryErrorhiện được nâng lên thay vìsqlite3.Warningkhi bộ nhớ không đủ để mã hóa câu lệnh thành UTF-8 trongConnection.__call__()vàCursor.execute().UnicodEncodeErrorhiện được nâng lên thay vìsqlite3.Warningkhi câu lệnh chứa các ký tự thay thế trongConnection.__call__()vàCursor.execute().TypeErrorhiện được nâng lên thay vìValueErrorcho đối số tập lệnh không phải chuỗi trongCursor.executescript().ValueErrorhiện được nâng lên cho tập lệnh chứa ký tự null thay vì cắt bớt nó trongCursor.executescript().Xử lý chính xác các ngoại lệ được đưa ra khi nhận được giá trị boolean của kết quả của trình xử lý tiến trình.
Thêm nhiều thử nghiệm bao gồm các trường hợp góc khác nhau.
bpo-44581: Nâng cấp gói pip lên 21.2.3 và setuptools lên 57.4.0
bpo-44849: Sửa chức năng
os.set_inheritable()trên FreeBSD 14 đối với bộ mô tả tệp được mở bằng cờO_PATH: bỏ qua lỗiEBADFtrênioctl(), dự phòng khi triển khaifcntl(). Bản vá của Victor Stinner.bpo-44605: Trình trang trí @functools.total_ordering() hiện hoạt động với siêu dữ liệu.
bpo-44524: Đã khắc phục sự cố trong đó thuộc tính
__name__và__qualname__của các biểu mẫu đặc biệt đã đăng ký có thể làNone.bpo-44839:
MemoryErrorđược nâng lên trong các hàm do người dùng xác định giờ đây sẽ tạo raMemoryErrortrongsqlite3.OverflowErrorbây giờ sẽ được chuyển đổi thànhDataError. Trước đâyOperationalErrorđược sản xuất trong những trường hợp này.bpo-44822:
sqlite3các hàm và trình tổng hợp do người dùng xác định trả vềstringsvới các ký tự NUL được nhúng không còn bị cắt bớt. Bản vá của Erlend E. Aasland.bpo-44801: Đảm bảo rằng biến
ParamSpectrong Callable chỉ có thể được thay thế bằng biểu thức tham số (danh sách các loại, dấu chấm lửng, ParamSpec hoặc Concatenate).bpo-44806: Các lớp con không có giao thức của
typing.Protocolhiện bỏ qua phương thức__init__được kế thừa từ các lớp cơ sở giao thức.bpo-27275:
collections.OrderedDict.popitem()vàcollections.OrderedDict.pop()không còn gọi các phương thức__getitem__và__delitem__của các lớp con OrderedDict nữa.bpo-44793: Sửa lỗi kiểm tra số lượng đối số khi đăng ký loại chung với tham số
ParamSpec.bpo-44784: Trong các thử nghiệm importlib.metadata, ghi đè hành vi cảnh báo trong phần DeprecationWarnings dự kiến (importlib_metadata 4.6.3).
bpo-44667:
tokenize.tokenize()không tạo mã thông báoNEWLINEkhông chính xác nếu nguồn không kết thúc bằng ký tự dòng mới nhưng dòng cuối cùng là nhận xét vì hàm này đã tạo mã thông báoNL. Bản vá của Pablo Galindobpo-44771: Đã thêm mô-đun
importlib.simpletriển khai bộ điều hợp từ giao diện trình đọc tài nguyên cấp thấp sang giao diệnTraversableResources. API kế thừa (path,contents, ...) hiện được.files()API hỗ trợ hoàn toàn với một miếng chêm tương thích được cung cấp cho các trình tải tài nguyên không có chức năng đó. Tính năng tương đương vớiimportlib_resources5.2.bpo-44752:
rcompleterkhông gọigetattr()trên các đối tượngpropertyđể tránh tác dụng phụ của việc đánh giá phương thức tương ứng.bpo-44747: Tái cấu trúc cách sử dụng
sys._getframetrong mô-đuntyping. Bản vá được cung cấp bởi Yurii Karabas.bpo-42378: Khắc phục sự cố tệp nhật ký bị ghi đè khi
logging.FileHandlerđược sử dụng trongatexitvới filemode được đặt thành'w'. Lưu ý điều này sẽ khiến thông báo trong atexit không được ghi nếu luồng nhật ký đã bị đóng do tắt ghi nhật ký.bpo-44720: các đối tượng
weakref.proxytham chiếu đến các trình không lặp hiện nâng caoTypeErrorthay vì hủy tham chiếu khetp_iternextrỗng và bị lỗi.bpo-44704: Việc triển khai
collections.abc.Set._hash()hiện khớp vớifrozenset.__hash__().bpo-44666: Đã khắc phục sự cố trong
compileall.compile_file()khisys.stdoutđược chuyển hướng. Bản vá của Stefan Hölzl.bpo-44688:
sqlite3.Connection.create_collation()hiện chấp nhận tên đối chiếu không phải ASCII. Bản vá của Erlend E. Aasland.bpo-44690: Áp dụng chế độ nghiêm ngặt của binacii.a2b_base64 trong base64.b64decode.
bpo-42854: Đã sửa lỗi trong mô-đun
_sslnémOverflowErrorkhi sử dụng_ssl._SSLSocket.write()và_ssl._SSLSocket.read()cho giá trị lớn của tham sốlen. Bản vá của Pablo Galindo.bpo-44686: Thay thế
unittest.mock._importerbằngpkgutil.resolve_name.bpo-44353: Làm cho
NewType.__call__nhanh hơn bằng cách triển khai nó trong C. Bản vá do Yurii Karabas cung cấp.bpo-44682: Thay đổi lệnh
pdbcommands để không cho phép cài đặt lệnh cho điểm dừng không hợp lệ và hiển thị lỗi thích hợp.bpo-44353: Tái cấu trúc
typing.NewTypetừ hàm thành lớp có thể gọi được. Bản vá được cung cấp bởi Yurii Karabas.bpo-44678: Đã thêm thông báo lỗi riêng cho phần đệm không liên tục ở chế độ nghiêm ngặt binascii.a2b_base64.
bpo-44524: Thêm các thuộc tính
__name__và__qualname__bị thiếu vào các lớp mô-đuntyping. Bản vá được cung cấp bởi Yurii Karabas.bpo-40897: Ưu tiên sử dụng hàm tạo của lớp hiện tại trong
inspect.signature(). Bản vá của Weipeng Hong.bpo-44638: Thêm tham chiếu đến dự án zipp và gợi ý cách sử dụng nó.
bpo-44648: Đã sửa lỗi bị
inspect.getsource()ném ra khi kiểm tra một lớp trong phiên tương tác. Thay vìTypeError, nó phải làOSErrorvới thông báo lỗi thích hợp.bpo-44608: Khắc phục rò rỉ bộ nhớ trong
_tkinter._flatten()nếu nó được gọi bằng một chuỗi hoặc tập hợp chứ không phải danh sách hoặc bộ dữ liệu.bpo-44594: Khắc phục trường hợp cạnh của chuỗi ngoại lệ
ExitStackvàAsyncExitStack. Bây giờ chúng sẽ khớp với hành vi của khốiwithkhi__context__được đặt rõ ràng thànhNonekhi ngoại lệ đang diễn ra.bpo-42799: Trong
fnmatch, kích thước bộ đệm cho các mẫu biểu thức chính quy đã biên dịch (functools.lru_cache()) đã tăng từ 256 lên 32768, ảnh hưởng đến các chức năng:fnmatch.fnmatch(),fnmatch.fnmatchcase(),fnmatch.filter().bpo-41928: Cập nhật
shutil.copyfile()để nâng caoFileNotFoundErrorthay vì gây nhầm lẫn choIsADirectoryErrorkhi đường dẫn kết thúc bằngos.path.sepkhông tồn tại;shutil.copy()vàshutil.copy2()cũng bị ảnh hưởng.bpo-44569: Đã thêm chức năng
StackSummary.format_frame()trongtraceback. Điều này cho phép người dùng tùy chỉnh cách định dạng các dòng riêng lẻ trong truy nguyên mà không cần triển khai lại logic để xử lý truy ngược đệ quy.bpo-44566: xử lý lớp con StopIteration được nêu ra từ trình tạo @contextlib.contextmanager
bpo-44558: Tạo sự thống nhất khi triển khai
indexOf()giữa các phiên bản C và Python. Bản vá của Donghee Na.bpo-41249: Sửa
TypedDictđể hoạt động vớityping.get_type_hints()và hoãn việc đánh giá các chú thích trên các mô-đun.bpo-44554: Tái cấu trúc quá trình xử lý đối số trong
pdb.main()để đơn giản hóa việc phát hiện lỗi khi tải đầu vào và làm rõ hành vi xung quanh lệnh gọi mô-đun hoặc tập lệnh.bpo-34798: Chia nhỏ đoạn văn về thông số xây dựng
pprint.PrettyPrinterđể dễ đọc hơn.bpo-44539: Đã thêm hỗ trợ nhận dạng tệp JPEG mà không cần đánh dấu JFIF hoặc Exif.
bpo-44461: Sửa lỗi xử lý lỗi nhập của
pdbdo gói không có mô-đun__main__bpo-43625: Sửa lỗi phát hiện tiêu đề tệp CSV của
csv.Sniffer.has_header()và cải thiện tài liệu tương tự.bpo-44516: Cập nhật pip được bán lại lên 21.1.3
bpo-42892: Đã sửa lỗi ngoại lệ được đưa ra khi phân tích cú pháp email nhiều phần không đúng định dạng của
email.message.EmailMessage.bpo-44468:
typing.get_type_hints()hiện tìm thấy các chú thích trong các lớp và lớp cơ sở với__module__không mong muốn. Trước đây, nó đã bỏ qua các phần tử MRO đó.bpo-44491: Cho phép xóa lệnh gọi lại của người ủy quyền
sqlite3bằng cách chuyểnNoneđếnset_authorizer(). Bản vá của Erlend E. Aasland.bpo-43977: Đặt cờ
Py_TPFLAGS_MAPPINGvàPy_TPFLAGS_SEQUENCEthích hợp cho các lớp con được tạo trước khi lớp cha được đăng ký làcollections.abc.Mappinghoặccollections.abc.Sequence.bpo-44482: Khắc phục sự cố rò rỉ tài nguyên rất khó xảy ra trong
globtrong các triển khai Python thay thế.bpo-44466: Mô-đun
faulthandlerhiện phát hiện xem có xảy ra lỗi nghiêm trọng trong quá trình thu thập rác hay không. Bản vá của Victor Stinner.bpo-44471:
TypeErrorhiện được nâng lên thay vìAttributeErrortrongcontextlib.ExitStack.enter_context()vàcontextlib.AsyncExitStack.enter_async_context()cho các đối tượng không hỗ trợ giao thức context manager hoặc asynchronous context manager tương ứng.bpo-44404: Phương thức
after()củatkinterhiện hỗ trợ các lệnh gọi mà không có thuộc tính__name__.bpo-41546: Làm cho
pprint(nhưprintdựng sẵn) không cố ghi vàostdoutkhi nó làNone.bpo-44458:
BUFFER_BLOCK_SIZEhiện được khai báo là tĩnh, để tránh xung đột liên kết khi bz2, lmza hoặc zlib được liên kết tĩnh.bpo-44464: Xóa ngoại lệ cho flap8 trong giao diện importlib.metadata không được dùng nữa. Đồng bộ hóa với importlib_metadata 4.6.
bpo-44446: Hãy tính đến việc
linenocó thể làNonetrongtraceback.FrameSummary.bpo-44439: Khắc phục trong các phương thức
bz2.BZ2File.write()/lzma.LZMAFile.write(), khi dữ liệu đầu vào là đối tượng hỗ trợ giao thức bộ đệm, độ dài tệp có thể sai.bpo-44434: _thread.start_new_thread() không còn gọi PyThread_exit_thread() một cách rõ ràng khi thoát khỏi chuỗi, cuộc gọi là dư thừa. Trên Linux có glibc, pthread_exit() sẽ hủy bỏ toàn bộ quá trình nếu dlopen() không mở được tệp libgcc_s.so (ví dụ: lỗi EMFILE). Bản vá của Victor Stinner.
bpo-42972: Loại _thread.RLock hiện triển khai đầy đủ giao thức GC: thêm chức năng truyền tải và cờ
Py_TPFLAGS_HAVE_GC. Bản vá của Victor Stinner.bpo-44422: Chức năng
threading.enumerate()hiện sử dụng khóa gửi lại để ngăn chặn cuộc gọi gửi lại bị treo. Bản vá của Victor Stinner.bpo-38291: Đang nhập gõ.io hoặc gõ.re hiện in
DeprecationWarning.bpo-37880: mỗi hành động argparse store_const vàappend_const nhận được giá trị mặc định là
Nonekhiconstkwarg không được cung cấp. Trước đây, điều này đã gây raTypeError.bpo-44389: Khắc phục tình trạng ngừng sử dụng
ssl.OP_NO_TLSv1_3bpo-27827:
pathlib.PureWindowsPath.is_reserved()hiện xác định nhiều loại tên tệp dành riêng hơn, bao gồm cả những tên có dấu cách hoặc dấu hai chấm ở cuối.bpo-44395: Sửa
as_string()để truyền unixfrom đúng cách. Bản vá của Donghee Na.bpo-34266: Xử lý các ngoại lệ từ việc phân tích đối số của lệnh chạy/khởi động lại của
pdb.bpo-44362: Cải thiện thông báo ngừng sử dụng mô-đun
ssl, báo cáo lỗi và tài liệu về việc ngừng sử dụng mô-đunssl.bpo-44342: [Enum] Thay đổi cách tẩy từ giá trị phụ thành tên.
bpo-44356: [Enum] Cho phép nhiều mixin kiểu dữ liệu nếu chúng giống nhau.
bpo-44351: Khôi phục lại
parse_makefile()trongdistutils.sysconfigvì nó hoạt động khác với cách triển khai tương tự trongsysconfig.bpo-35800:
smtpd.MailmanProxyhiện đã bị xóa vì không thể sử dụng được nếu không có mô-đun bên ngoài,mailman. Bản vá của Donghee Na.bpo-44357: Đã thêm hàm trả về căn bậc ba của số đã cho
math.cbrt()bpo-44339: Thay đổi
math.pow(±0.0, -math.inf)để trả vềinfthay vì tăngValueError. Điều này làm cho việc xử lý trường hợp đặc biệt củamath.powtuân thủ tiêu chuẩn IEEE 754.bpo-44242: Xóa kiểm tra cờ bị thiếu khỏi quá trình tạo Enum và chuyển sang trình trang trí
verify.bpo-44246: Trong
importlib.metadata, khôi phục khả năng tương thích trong kết quả từDistribution.entry_points(EntryPoints) để đáp ứng những kỳ vọng trong các triển khai cũ hơn và đưa ra cảnh báo không dùng nữa cho những trường hợp này: A. Các đối tượngEntryPointsmột lần nữa có thể thay đổi được, cho phép thực hiệnsort()và các hoạt động đột biến dựa trên danh sách khác. Tránh cảnh báo không dùng nữa bằng cách chuyển sang một chuỗi có thể thay đổi (ví dụ:list(dist.entry_points).sort()). Kết quả B.EntryPointsmột lần nữa cho phép truy cập theo chỉ mục. Để tránh cảnh báo không dùng nữa, trước tiên hãy chuyển kết quả sang Chuỗi (ví dụ:tuple(dist.entry_points)[0]).bpo-44246: Trong importlib.metadata.entry_points, việc loại bỏ trùng lặp các bản phân phối không còn yêu cầu tải siêu dữ liệu đầy đủ cho các đối tượng PathDistribution, cải thiện hiệu suất tải điểm nhập lên ~ 10 lần.
bpo-43858: Đã thêm chức năng trả về bản sao của lệnh ghi mức ghi nhật ký:
logging.getLevelNamesMapping()bpo-44260: Hàm tạo
random.Randomkhông còn đọc entropy hệ thống khi không cần thiết.bpo-44254: Trên máy Mac, cung cấp cho văn bản nút Turtledemo một màu phù hợp trên cả nền sáng hoặc tối. Lập trình viên không thể kiểm soát cái sau.
bpo-44258: Hỗ trợ PEP 515 để khởi tạo Phân số từ chuỗi.
bpo-44235: Xóa các chức năng không được dùng nữa trong
gettext. Bản vá của Donghee Na.bpo-38693: Thích chuỗi f hơn
.formattrong importlib.resources.bpo-33693: Importlib.metadata hiện ưu tiên chuỗi f hơn .format.
bpo-44241: Kết hợp các chỉnh sửa nhỏ từ importlib_metadata 4.1: Giao thức SimplePath, hỗ trợ Metadata 2.2.
bpo-43216: Loại bỏ
@asyncio.coroutinedecorator cho phép các coroutine dựa trên trình tạo cũ tương thích với mã async/await; xóaasyncio.coroutines.CoroWrapperđược sử dụng để gói các đối tượng coroutine cũ ở chế độ gỡ lỗi. Trình trang trí đã không được dùng nữa kể từ Python 3.8 và việc xóa ban đầu được lên kế hoạch cho Python 3.10. Bản vá của Illia Volochii.bpo-44210: Đặt importlib.metadata._meta.PackageMetadata ở chế độ công khai.
bpo-43643: Khai báo reader.MultiplexedPath.name làm thuộc tính cho mỗi thông số kỹ thuật.
bpo-27334: Trình quản lý bối cảnh
sqlite3hiện thực hiện khôi phục (do đó giải phóng khóa cơ sở dữ liệu) nếu cam kết không thành công. Bản vá của Luca Citi và Erlend E. Aasland.bpo-4928: Hành vi hiện có được ghi lại trên POSIX: Các tệp được đặt tên tạm thời không bị xóa khi quá trình tạo bị hủy với SIGKILL
bpo-44154: Tối ưu hóa quá trình tẩy
fractions.Fractioncho các thành phần lớn.bpo-33433: Đối với các địa chỉ IPv6 được ánh xạ IPv4 (RFC 4291 Phần 2.5.5.2), việc kiểm tra
ipaddress.IPv6Address.is_privateđược hoãn lại đối với địa chỉ IPv4 được ánh xạ. Điều này giải quyết lỗi trong đó các địa chỉ IPv4 được ánh xạ công khai được coi là riêng tư khi kiểm tra IPv6.bpo-44150: Thêm đối số weights tùy chọn vào stats.fmean().
bpo-44142:
ast.unparse()bây giờ sẽ loại bỏ các dấu ngoặc đơn dư thừa khi các bộ dữ liệu được sử dụng làm mục tiêu gán (ví dụ: trong các vòng lặp for).bpo-44145: các tính toán
hmackhông giải phóng GIL trong khi gọi OpenSSLHMAC_UpdateC API (một tính năng mới trong 3.9). Điều này vô tình ngăn cản việc tính toán song song như các thuật toánhashlibkhác hỗ trợ.bpo-44095:
zipfile.Pathhiện hỗ trợ các thuộc tínhzipfile.Path.stem,zipfile.Path.suffixesvàzipfile.Path.suffix.bpo-44077: Hiện có thể nhận loại dịch vụ (ToS), hay còn gọi là dịch vụ khác biệt (DS), hay còn gọi là điểm mã dịch vụ khác biệt (DSCP) và các trường tiêu đề IP thông báo tắc nghẽn rõ ràng (ECN) với
socket.IP_RECVTOS.bpo-37788: Khắc phục rò rỉ tham chiếu khi đối tượng Thread không bao giờ được tham gia.
bpo-38908: Các lớp con của
typing.Protocolchỉ có các biến dữ liệu được khai báo giờ đây sẽ tạo raTypeErrorkhi được kiểm tra bằngisinstancetrừ khi chúng được trang trí bằngruntime_checkable(). Trước đây, những cuộc kiểm tra này diễn ra một cách âm thầm. Bản vá được cung cấp bởi Yurii Karabas.bpo-44098:
typing.ParamSpecsẽ không còn được tìm thấy trong__parameters__của hầu hết các loại thuốc generictypingngoại trừ ở các vị trí sử dụng hợp lệ được chỉ định bởi PEP 612. Điều này ngăn chặn việc sử dụng không chính xác nhưtyping.List[P][int]. Thay đổi này có nghĩa là việc sử dụng không chính xác có thể đã diễn ra âm thầm trong phiên bản 3.10 beta 1 trở về trước và giờ đây sẽ có lỗi.bpo-44089: Cho phép phân lớp con
csv.Errortrong 3.10 (nó được cho phép trong 3.9 trở về trước nhưng không được phép trong các phiên bản 3.10 đầu tiên).bpo-44081:
ast.unparse()hiện không sử dụng khoảng trắng thừa để phân táchlambdavà:nếu không có tham số.bpo-44061: Khắc phục hồi quy trong bản phát hành trước khi gọi
pkgutil.iter_modules()bằng danh sách các đối tượngpathlib.Pathbpo-44059: Đăng ký Trình duyệt SerenityOS trong mô-đun
webbrowser.bpo-36515: Mô-đun
hashlibkhông còn truy cập bộ nhớ không được phân bổ khi được biên dịch cho nền tảng ARM.bpo-40465: Xóa các tính năng mô-đun ngẫu nhiên không được dùng nữa trong Python 3.9.
bpo-44018: Random.seed() không còn thay đổi đầu vào bytearray nữa.
bpo-38352: Thêm
IO,BinaryIO,TextIO,MatchvàPatternvàotyping.__all__. Bản vá của Jelle Zijlstra.bpo-44002:
urllib.parsehiện sử dụngfunctool.lru_cache()để phân tách và trích dẫn bộ nhớ đệm URL nội bộ thay vì triển khai bộ đệm riêng như những năm 90.Lớp
urllib.parseQuotednội bộ không có giấy tờ API hiện không được dùng nữa và sẽ bị xóa trong 3.14.bpo-43972: Khi
http.server.SimpleHTTPRequestHandlergửi301 (Moved Permanently)cho đường dẫn thư mục không kết thúc bằng/, hãy thêm tiêu đềContent-Length: 0. Điều này cải thiện hành vi cho một số khách hàng.bpo-28528: Sửa lỗi trong
pdbtrong đócheckline()tăngAttributeErrornếu nó được gọi saureset().bpo-43853: Cải thiện việc xử lý chuỗi cho các hàm và tập hợp do người dùng xác định
sqlite3:Hiện tại có thể chuyển các chuỗi có ký tự null được nhúng vào UDF
Lỗi chuyển đổi hiện đã nâng cao
MemoryErrormột cách chính xác
Bản vá của Erlend E. Aasland.
bpo-43666: AIX:
Lib/_aix_support.get_platform()có thể bị lỗi trong AIX WPAR. Tập tin bos.rte dường như có ngày xây dựng trong cả LPAR và WPAR nên tập tin này được truy vấn thay vì bos.mp64. Để ngăn chặn tình huống tương tự (không có ngày xây dựng trong ODM), giá trị (9988) đủ để hoàn thành bản dựng được cung cấp. Bản vá của M Felt.bpo-43650: Sửa lỗi
MemoryErrortrongshutil.unpack_archive()bị lỗi bên trongshutil._unpack_zipfile()trên các tệp lớn. Bản vá của Igor Bolshakov.bpo-43612:
zlib.compress()hiện chấp nhận tham số wbits cho phép người dùng nén dữ liệu dưới dạng khối giảm phát thô mà không cần tiêu đề và đoạn giới thiệu zlib trong một lần. Trước đây, điều này yêu cầu khởi tạo mộtzlib.compressobj. Nó cũng cung cấp một giải pháp thay thế nhanh hơn chogzip.compresskhi sử dụng wbits=31.bpo-43392:
importlib._bootstrap._find_and_load()hiện thực hiện kiểm tra hai bước để tránh khóa khi các mô-đun đã được nhập và sẵn sàng. Điều này cải thiện hiệu suất của các cuộc gọi lặp lại tớiimportlib.import_module()vàimportlib.__import__().bpo-43318: Sửa lỗi trong đó
pdbkhông phải lúc nào cũng lặp lại các điểm ngắt đã được xóa.bpo-43234: Cấm chuyển các trình thực thi không phải
concurrent.futures.ThreadPoolExecutorsangloop.set_default_executor()sau khi Python 3.8 không được dùng nữa. Bản vá của Illia Volochii.bpo-43232: Cấm các hoạt động có khả năng gây gián đoạn trước đây không được dùng nữa trên
asyncio.trsock.TransportSocket. Bản vá của Illia Volochii.bpo-30077: Đã thêm hỗ trợ cho tính năng nén giả aifc/sowt của Apple
bpo-42971: Thêm định nghĩa về
errno.EQFULLcho các nền tảng xác định hằng số này (chẳng hạn như macOS).bpo-43086: Đã thêm tham số
strict_modetùy chọn mới vào binascii.a2b_base64. Khiscrict_modeđược đặt thànhTrue, hàm a2b_base64 sẽ chỉ chấp nhận nội dung base64 hợp lệ. Bạn có thể tìm thêm thông tin chi tiết về "nội dung base64 hợp lệ" trong tài liệu của hàm.bpo-43024: Cải thiện chữ ký trợ giúp của
traceback.print_exception(),traceback.format_exception()vàtraceback.format_exception_only().bpo-33809: Thêm phương thức
traceback.TracebackException.print()in thông tin ngoại lệ được định dạng.bpo-42862:
sqlite3hiện sử dụngfunctools.lru_cache()để triển khai bộ đệm câu lệnh kết nối. Là một sự tối ưu hóa nhỏ, kích thước bộ đệm câu lệnh mặc định đã được tăng từ 100 lên 128. Bản vá của Erlend E. Aasland.bpo-41818: Soumendra Ganguly: thêm termios.tcgetwinsize(), termios.tcsetwinsize().
bpo-40497:
subprocess.check_output()hiện tăngValueErrorkhi đối số từ khóa không hợp lệ check được truyền bởi mã người dùng. Trước đây việc sử dụng như vậy sau này sẽ không thành công vớiTypeError. Bản vá của Rémi Lapeyre.bpo-37449:
ensurepiphiện sử dụng API có thể duyệt quaimportlib.resources.files()bpo-40956: Sử dụng Phòng khám đối số trong
sqlite3. Các bản vá của Erlend E. Aasland.bpo-41730:
DeprecationWarninghiện được nâng lên khi nhậptkinter.tix, tính năng này không được dùng nữa trong tài liệu kể từ Python 3.6.bpo-20684: Xóa chức năng
_signature_get_bound_paramkhông được sử dụng khỏiinspect- bởi Anthony Sottile.bpo-41402: Sửa lỗi
email.message.EmailMessage.set_content()khi được gọi với dữ liệu nhị phân và mã hóa truyền nội dung7bit.bpo-32695: Các đối số từ khóa compresslevel và preset của
tarfile.open()hiện đều được ghi lại và kiểm tra.bpo-41137: Sử dụng mã hóa utf-8 trong khi đọc tệp .pdbrc. Bản vá của Srinivas Reddy Thatiparthy
bpo-24391: Cải thiện số lần lặp lại của các đối tượng đồng bộ hóa
threading:Semaphore,BoundedSemaphore,EventvàBarrier.bpo-5846: Không dùng nữa các hàm
unittestsau, được lên lịch xóa trong Python 3.13:findTestCases()makeSuite()getTestCaseNames()
Thay vào đó hãy sử dụng các phương thức
TestLoader:Bản vá của Erlend E. Aasland.
bpo-40563: Hỗ trợ các đối tượng giống đường dẫn trên dbm/shelve. Bản vá của Hakan Çelik và Henry-Joseph Audéoud.
bpo-34990: Đã sửa lỗi Y2k38 trong mô-đun biên dịch khiến nó không thể biên dịch các tệp có thời gian sửa đổi sau năm 2038.
bpo-39549: Trong khi mã cho reprlib.Repr trước đây đã sử dụng giá trị chuỗi được mã hóa cứng là '...', PR này cập nhật nó để sử dụng thuộc tính "fillvalue", có giá trị mặc định là '...' và có thể được đặt lại trong các phiên bản reprlib.Repr riêng lẻ hoặc trong các lớp con của chúng.
bpo-37022:
pdbhiện hiển thị các ngoại lệ từrepr()với các lệnhpvàpp.bpo-38840: Khắc phục
test___all__trên các nền tảng thiếu triển khai bộ nhớ dùng chung.bpo-39359: Thêm một kiểm tra còn thiếu để đảm bảo mật khẩu là đối tượng byte cho tệp zip được mã hóa.
bpo-38741:
configparser: sử dụng ']' bên trong tiêu đề phần sẽ không còn cắt ngắn tên phần ở ']' nữabpo-38415: Đã thêm hành vi bị thiếu vào
contextlib.asynccontextmanager()để khớp vớicontextlib.contextmanager()để các hàm được trang trí có thể tự chúng là các hàm trang trí.bpo-30256: Truyền đối số BaseProxy đa xử lý
manager_ownedthông qua AutoProxy.bpo-27513:
email.utils.getaddresses()hiện chấp nhận các đối tượngemail.header.Headercùng với các giá trị chuỗi. Bản vá của Zackery Spytz.bpo-16379: Thêm mã lỗi SQLite và tên vào các ngoại lệ
sqlite3. Bản vá của Aviv Palivoda, Daniel Shahaf và Erlend E. Aasland.bpo-26228: pty.spawn không còn bị treo trên FreeBSD, macOS và Solaris nữa.
bpo-33349: lib2to3 hiện nhận dạng các trình tạo không đồng bộ ở mọi nơi.
bpo-29298: Sửa lỗi
TypeErrorkhi các phân tích cú pháp con được yêu cầu không códestkhông nhận được đối số. Bản vá của Anthony Sottile.
Tài liệu¶
bpo-45216: Xóa các phương thức liệt kê tài liệu bổ sung trong
difflib. Nó được hiển thị hai lần trong pydoc và đã lỗi thời ở một số nơi.bpo-45024: Tài liệu
collections.abcđã được mở rộng để trình bày rõ ràng cách hoạt động của các kiểm tra phiên bản và lớp con, với các ví dụ tài liệu bổ sung và danh sách đầy đủ các ABC kiểm tra tư cách thành viên hoàn toàn bằng sự hiện diện của special methods phù hợp. Bản vá của Raymond Hettinger.bpo-44957: Quảng cáo cú pháp kết hợp PEP 604 bằng cách sử dụng nó nếu có thể. Ngoài ra, hãy đề cập đến
X | Ynổi bật hơn trong phần vềUnionvà đề cập đếnX | Nonechút nào trong phần vềOptional.bpo-16580: Đã thêm các mã tương đương cho các phương thức
int.to_bytes()vàint.from_bytes(), cũng như các thử nghiệm để đảm bảo rằng các mã tương đương này là hợp lệ.bpo-44903: Đã xóa tệp
othergui.rst, mọi tham chiếu đến nó và danh sách các khung GUI trong FAQ. Thay vào đó, tôi đã thêm các liên kết tới Python Wiki page on GUI frameworks.bpo-33479: Tài liệu Tkinter đã được mở rộng đáng kể với các phần "Kiến trúc" và "Mô hình luồng" mới.
bpo-36700:
base64RFC tài liệu tham khảo đã được cập nhật để trỏ đến RFC 4648; một phần đã được thêm vào để hướng người dùng đến phần "cân nhắc về bảo mật" mới của RFC.bpo-44740: Đã thay thế các lần xuất hiện của chữ hoa "Web" và "Internet" bằng các phiên bản chữ thường theo Sách Phong cách Báo chí Associated Press sửa đổi năm 2016.
bpo-44693: Cập nhật định nghĩa của __future__ trong bảng thuật ngữ bằng cách thay thế từ "giả mô-đun" gây nhầm lẫn bằng một mô tả chính xác hơn.
bpo-35183: Thêm các ví dụ điển hình vào tài liệu os.path.splitext
bpo-30511: Làm rõ rằng
shutil.make_archive()không an toàn cho luồng do phụ thuộc vào việc thay đổi thư mục làm việc hiện tại.bpo-44561: Cập nhật ba siêu liên kết đã hết hạn trong Doc/distributing/index.rst: "Cấu trúc dự án", "Xây dựng và đóng gói dự án" và "Tải dự án lên Chỉ mục đóng gói Python".
bpo-44651: Xóa mục "ép buộc" trong Doc/glossary.rst vì định nghĩa lỗi thời của nó.
bpo-42958: Đã cập nhật chuỗi tài liệu và tài liệu của
filecmp.cmp()để chính xác hơn và ít gây nhầm lẫn hơn, đặc biệt là đối với shallow arg.bpo-44631: Tái cấu trúc mã
repr()của_Environ(mô-đun os).bpo-44613: importlib.metadata không còn là tạm thời nữa.
bpo-44558: Khớp cách triển khai chuỗi doc và python của
countOf()với hành vi triển khai c của nó.bpo-44544: Liệt kê tất cả các kwargs cho
textwrap.wrap(),textwrap.fill()vàtextwrap.shorten(). Giờ đây, đã có các liên kết điều hướng đến các thuộc tính củaTextWrap, giúp việc điều hướng dễ dàng hơn nhiều đồng thời giảm thiểu sự trùng lặp trong tài liệu.bpo-38062: Làm rõ rằng atexit sử dụng so sánh bình đẳng trong nội bộ.
bpo-40620: Chuyển đổi các ví dụ trong hướng dẫn controlflow.rst phần 4.3 thành kiểu phiên dịch-demo.
bpo-43066: Đã thêm cảnh báo vào tài liệu
zipfile: tên tệp arg có dấu gạch chéo ở đầu có thể khiến kho lưu trữ không thể mở được trên hệ thống Windows.bpo-39452: Viết lại
Doc/library/__main__.rst. Phạm vi mở rộng của tài liệu để thảo luận và phân biệt rõ ràng giữa__main__.pytrong các gói so với biểu thức__name__ == '__main__'(và các thành ngữ xung quanh nó).bpo-13814: Trong Thiết kế FAQ, trả lời "Tại sao trình tạo không hỗ trợ câu lệnh with?"
bpo-27752: Tài liệu về csv.Dialect mang tính mô tả nhiều hơn.
bpo-44453: Sửa tài liệu về kiểu trả về của
sysconfig.get_path().bpo-44392: Đã thêm phần mới trong tài liệu C API cho các loại được sử dụng trong gợi ý loại. Đã ghi lại
Py_GenericAliasvàPy_GenericAliasType.bpo-38291: Đánh dấu
typing.iovàtyping.relà không dùng nữa kể từ Python 3.8 trong tài liệu. Chúng chưa bao giờ được hỗ trợ đúng cách bởi trình kiểm tra loại.bpo-44322: Tài liệu mà SyntaxError lập luận có một bộ chi tiết và các chi tiết đó được điều chỉnh để tránh các lỗi trong biểu thức thay thế trường chuỗi f.
bpo-42392: Ghi lại việc không dùng nữa và loại bỏ tham số
loopcho nhiều hàm và lớp trongasyncio.bpo-44195: Đã sửa các tham chiếu đến
TraversableResourcestrong tài liệu. Không cóTraversableReader.bpo-41963: Tài liệu
ConfigParserloại bỏ nhận xét khi đọc file cấu hình.bpo-44072: Đúng ở vị trí trong hệ thống phân cấp số ABC, hỗ trợ
**được thêm vào, tức là trong số.Complex, không phải số.Integral.bpo-43558: Thêm nhận xét vào tài liệu
dataclassesrằng__init__()của bất kỳ lớp cơ sở nào đều phải được gọi trong__post_init__(), cùng với một ví dụ về mã.bpo-44025: Làm rõ khi nào '_' trong câu lệnh đối sánh là từ khóa và khi nào thì không.
bpo-41706: Sửa tài liệu về cách gọi các phương thức như
__add__khi đánh giá biểu thức toán tử.bpo-41621: Tài liệu rằng tham số
collections.defaultdictdefault_factorymặc định làNonevà chỉ có vị trí.bpo-41576: tài liệu BaseException ủng hộ ngoại trừ trần
bpo-21760: Đã sửa mô tả cho __file__. Bản vá của Furkan Onder
bpo-39498: Thêm chỉ mục "Cân nhắc bảo mật" liên kết đến các mô-đun thư viện tiêu chuẩn có ghi chép rõ ràng các cân nhắc về bảo mật.
bpo-33479: Xóa xác nhận không đủ tiêu chuẩn rằng tkinter là luồng an toàn. Điều đó đã không đúng trong nhiều năm và có thể chưa bao giờ đúng như vậy. Lời giải thích về điều gì là đúng có thể được thêm vào sau, sau khi thảo luận thêm và có thể sau khi vá _tkinter.c,
Kiểm tra¶
bpo-40173: Sửa
test.support.import_helper.import_fresh_module().bpo-45280: Thêm trường hợp thử nghiệm cho
typing.NamedTupletrống.bpo-45269: Vỏ bọc khi cung cấp loại
markerskhông hợp lệ choc_make_encoder.bpo-45128: Sửa lỗi
test_multiprocessing_forkdo thao táctest_loggingvàsys.modules.bpo-45209: Sửa lỗi cảnh báo
UserWarning: resource_trackertrong_test_multiprocessing._TestSharedMemory.test_shared_memory_cleaned_after_process_terminationbpo-45185: Kích hoạt các trường hợp thử nghiệm
TestEnumerationstrong bộtest_ssl.bpo-45195: Fix test_readline.test_nonascii(): đôi khi, ký tự dòng mới không được viết ở cuối, vì vậy đừng mong đợi nó ở đầu ra. Bản vá của Victor Stinner.
bpo-45156: Sửa vòng lặp vô hạn trên
unittest.mock.seal()của các mô hình được tạo bởicreate_autospec().bpo-45125: Cải thiện các bài kiểm tra và tài liệu tẩy rửa của các đối tượng
SharedMemoryvàSharableList.bpo-44860: Cập nhật
test_sysconfig.test_user_similar()cho sơ đồ posix_user:platlibkhông sử dụngsys.platlibdir. Bản vá của Victor Stinner.bpo-45052: Kiểm tra
WithProcessesTestSharedMemory.test_shared_memory_basicsbị bỏ qua vì dòngself.assertEqual(sms.size, sms2.size)bị lỗi. Bây giờ nó đã bị xóa và bài kiểm tra không bị bỏ qua.Động lực chính khiến dòng này bị loại khỏi thử nghiệm là do
sizecủaSharedMemorykhông bao giờ được đảm bảo giống nhau. Nó được quyết định bởi nền tảng.bpo-44895: libregrtest hiện xóa bộ nhớ đệm loại sau này để giảm nguy cơ cảnh báo sai khi kiểm tra rò rỉ tham chiếu. Trước đây, loại bộ đệm đã bị xóa quá sớm và libregrtest đã đưa ra cảnh báo sai về rò rỉ tham chiếu trong các điều kiện rất cụ thể. Bản vá của Irit Katriel và Victor Stinner.
bpo-45042: Sửa lỗi các lớp kiểm tra được trang trí bằng
@hashlib_helper.requires_hashdigestluôn bị bỏ qua.bpo-25130: Thêm lệnh gọi
gc.collect()trong các thử nghiệm để hỗ trợ PyPy.bpo-45011: Thực hiện các thử nghiệm dựa trên mô-đun mở rộng
_asyncioC tùy chọn để cho phép chạy trên các triển khai Python thay thế. Bản vá của Serhiy Storchaka.bpo-44949: Sửa lỗi kiểm tra lịch sử tự động của test_readline: đôi khi, ký tự dòng mới không được ghi ở cuối, vì vậy đừng mong đợi nó ở đầu ra.
bpo-44891: Các thử nghiệm đã được thêm vào để làm rõ
id()được giữ nguyên khiobj * 1được sử dụng trên các đối tượngstrvàbytes. Bản vá của Nikita Sobolev.bpo-44852: Thêm khả năng tắt tiếng toàn bộ Cảnh báo khấu hao trong khi chạy bộ kiểm tra hồi quy.
bpo-40928: Thông báo cho người dùng đang chạy thử nghiệm hồi quy test_decimal trên macOS về các thông báo "malloc không thể phân bổ vùng" vô hại do test_decimal gửi ra.
bpo-44734: Đã sửa lỗi độ chính xác của dấu phẩy động trong các bài kiểm tra rùa.
bpo-44708: Kiểm tra hồi quy, khi chạy với -w, hiện chỉ chạy lại các phương pháp kiểm tra bị ảnh hưởng thay vì chạy lại toàn bộ tệp kiểm tra.
bpo-42095: Đã thêm các thử nghiệm tương tác cho Apple plists: tạo tệp plist bằng Python plistlib và phân tích cú pháp bằng Apple plutil; và ngược lại.
bpo-44647: Đã thêm biến môi trường có giá trị Unicode cố định vào các thử nghiệm hồi quy để đảm bảo chúng xử lý được trường hợp sử dụng này trong tương lai. Nếu môi trường thử nghiệm của bạn bị hỏng vì lý do đó, hãy báo cáo lỗi cho chúng tôi và tạm thời đặt PYTHONREGRTEST_UNICODE_GUARD=0 trong môi trường thử nghiệm của bạn.
bpo-44515: Điều chỉnh các thử nghiệm lib ngữ cảnh được thêm gần đây để tránh giả sử sử dụng GC được tính lại
bpo-44287: Khắc phục asyncio test_popen() của test_windows_utils bằng cách sử dụng thời gian chờ lâu hơn. Sử dụng thời gian chờ
test.support.SHORT_TIMEOUTđã được thử nghiệm trong trận chiến ở cấp độ quân sự thay vì thời gian chờ được mã hóa cứng là 10 giây: theo mặc định là 30 giây nhưng thời gian chờ này lâu hơn trên các bot xây dựng chậm. Bản vá của Victor Stinner.bpo-44451: Đặt lại bộ lọc
DeprecationWarningtrongtest.test_importlib.test_metadata_api.APITests.test_entry_points_by_indexđể tránh lỗiStopIterationnếuDeprecationWarningsbị bỏ qua.bpo-44363: Tài khoản khử trùng địa chỉ trong test_capi. test_capi hiện đã vượt qua khi chạy trình khử trùng địa chỉ GCC.
bpo-44364: Thêm các bài kiểm tra không tích phân cho hàm
math.sqrt().bpo-43921: Fix test_ssl.test_wrong_cert_tls13(): sử dụng
suppress_ragged_eofs=False, vìread()có thể tăngssl.SSLEOFErrortrên Windows. Bản vá của Victor Stinner.bpo-43921: Fix test_pha_required_nocert() của test_ssl: bắt thêm hai trường hợp EOF (khi phương thức
recv()trả về một chuỗi trống). Bản vá của Victor Stinner.bpo-44131: Thêm test_frozenmain vào test_embed để kiểm tra hàm
Py_FrozenMain()C. Bản vá của Victor Stinner.bpo-31904: Bỏ qua trường hợp chuỗi lỗi trong test_file_not_exists().
bpo-42083: Thêm kiểm tra để kiểm tra xem
PyStructSequence_NewTypecó chấp nhậnPyStructSequence_Descvới trườngdocđược đặt thànhNULLhay không.bpo-35753: Khắc phục sự cố trong doctest khi doctest phân tích các mô-đun bao gồm các hàm không thể mở rộng bằng cách bỏ qua các hàm đó.
bpo-30256: Thêm kiểm tra cho hàng đợi lồng nhau khi sử dụng đối tượng chia sẻ
multiprocessingAutoProxy[Queue]bên trongListProxyvàDictProxy
xây dựng¶
bpo-45220: Tránh tự động xây dựng bản xem trước SDK của Windows 11. Điều này có thể được ghi đè bằng cách đặt biến môi trường
DefaultWindowsSDKVersiontrước khi xây dựng.bpo-45020: Đóng băng các mô-đun stdlib được nhập trong quá trình khởi động. Điều này cung cấp những cải tiến đáng kể về hiệu suất khi khởi động. Nếu cần, hãy sử dụng tùy chọn dòng lệnh "-X Frozen_modules=off" đã thêm trước đó để buộc nhập mô-đun nguồn.
bpo-45188: Bản dựng Windows hiện tái tạo các mô-đun cố định như phần đầu tiên của bản dựng. Trước đây, quá trình tái tạo diễn ra muộn hơn trong quá trình xây dựng, điều này sẽ yêu cầu khởi động lại nó nếu có bất kỳ mô-đun nào đã thay đổi.
bpo-45163: Sửa lỗi xây dựng nền tảng Haiku.
bpo-45067: Hàm ncursesextend_color_content được giới thiệu vào năm 2017
(https://invisible-island.net/ncurses/NEWS.html#index-t20170401). The
Gói ncurses-devel trong CentOS 7 có phiên bản cũ hơn ncurses dẫn đến lỗi biên dịch. Để biên dịch ncurses có hỗ trợ màu mở rộng, chúng tôi xác minh phiên bản của thư viện ncurses >= 20170401.
bpo-45019: Tạo dòng trong các tệp có liên quan cho các mô-đun bị đóng băng. Cho đến nay mỗi tập tin đều phải được chỉnh sửa thủ công. Thay đổi này giúp việc thêm và sửa đổi các mô-đun cố định trở nên dễ dàng hơn.
bpo-44340: Thêm hỗ trợ xây dựng với clang Thin lto thông qua --with-lto=thin/full. Bản vá của Donghee Na và Brett Holman.
bpo-44535: Cho phép xây dựng bằng cài đặt Visual Studio 2022 trên Windows.
bpo-43298: Thông báo lỗi được cải thiện khi xây dựng mà không cài đặt Windows SDK.
bpo-44381: Bản dựng Windows hiện chấp nhận
EnableControlFlowGuardđược đặt thànhguardđể bật CFG.bpo-41282: Khắc phục
make installbị hỏng khiến các mô-đun mở rộng thư viện tiêu chuẩn được xây dựng lại một cách không cần thiết và không chính xác trong giai đoạn cài đặt cpython.
cửa sổ¶
bpo-45375: Khắc phục lỗi xác nhận do tìm kiếm thư viện chuẩn trong các đường dẫn không chuẩn hóa.
bpo-45022: Cập nhật bản phát hành Windows để bao gồm libffi 3.4.2
bpo-45007: Cập nhật lên OpenSSL 1.1.1l trong bản dựng Windows
bpo-44848: Nâng cấp trình cài đặt Windows để sử dụng SQLite 3.36.0.
bpo-44572: Tránh sử dụng đầu vào tiêu chuẩn trong mô-đun
platformbpo-44582: Tăng tốc độ khởi tạo
mimetypesbằng cách triển khai quét sổ đăng ký gốc.bpo-41299: Khắc phục hiện tượng giật hình 16 mili giây khi sử dụng thời gian chờ trong
threading, chẳng hạn như vớithreading.Lock.acquire()hoặcthreading.Condition.wait().bpo-42686: Xây dựng
sqlite3với chức năng toán học được kích hoạt. Bản vá của Erlend E. Aasland.bpo-40263: Đây là lỗi tiếp theo của https://bugs.python.org/issue26903. Sau khi áp dụng lỗi đó, chúng tôi gặp phải một vấn đề xác nhận riêng lẻ. Khẳng định là không chính xác.
macOS¶
bpo-45007: Cập nhật bản dựng trình cài đặt macOS để sử dụng OpenSSL 1.1.1l.
bpo-34602: Khi xây dựng CPython trên macOS với
./configure --with-undefined-behavior-sanitizer --with-pydebug, kích thước ngăn xếp hiện tăng gấp bốn lần để cho phép toàn bộ bộ thử nghiệm vượt qua.bpo-44848: Cập nhật trình cài đặt macOS để sử dụng SQLite 3.36.0.
bpo-44689:
ctypes.util.find_library()hiện hoạt động chính xác trên macOS 11 Big Sur ngay cả khi Python được xây dựng trên phiên bản macOS cũ hơn. Trước đây, khi được xây dựng trên các hệ thống macOS cũ hơn,find_librarykhông thể tìm thấy thư viện hệ thống macOS khi chạy trên Big Sur do những thay đổi trong cách lưu trữ thư viện hệ thống.bpo-41972: Đường dẫn tiêu đề người dùng của bản dựng khung trong sysconfig được thay đổi để thêm thành phần 'pythonX.Y' để phù hợp với hành vi của distutils.
bpo-43109: Cho phép tùy chọn cấu hình --with-lto hoạt động với Xcode hoặc Công cụ dòng lệnh do Apple cung cấp.
bpo-34932: Thêm hỗ trợ socket.TCP_KEEPALIVE cho macOS. Bản vá của Shane Harvey.
IDLE¶
bpo-45296: Trên Windows, thay đổi thông báo thoát/thoát để đề xuất Ctrl-D, thao tác này hoạt động, thay vì <Ctrl-Z Return>, thao tác này không hoạt động trong IDLE.
bpo-45193: Làm cho các hộp hoàn thành xuất hiện lại trên Ubuntu.
bpo-40128: Chủ yếu sửa lỗi hoàn thành trên macOS khi không sử dụng tcl/tk 8.6.11 (như với 3.9). Lệnh gọi update_idletask được thêm vào sẽ vô hại và có thể hữu ích.
bpo-33962: Di chuyển cài đặt khoảng cách thụt lề từ tab Phông chữ sang tab Windows mới. Bản vá của Mark Roseman và Terry Jan Reedy.
bpo-40468: Chia tab Chung của hộp thoại cài đặt thành tab Windows và Shell/ED. Di chuyển các nguồn trợ giúp mở rộng menu Trợ giúp sang tab Tiện ích mở rộng. Tạo khoảng trống cho các tùy chọn mới và rút ngắn hộp thoại. Cái sau làm cho hộp thoại phù hợp hơn với màn hình nhỏ.
bpo-41611: Tránh các ngoại lệ chưa được phát hiện trong
AutoCompleteWindow.winconfig_event().bpo-41611: Khắc phục IDLE đôi khi bị treo khi hoàn thành tab trên macOS.
bpo-44010: Đánh dấu soft keywords của câu lệnh match mới:
match,casevà_. Tuy nhiên, phần tô sáng này không hoàn hảo và sẽ không chính xác trong một số trường hợp hiếm gặp, bao gồm một số_-s trong mẫucase.bpo-44026: Bao gồm các đề xuất sửa lỗi chính tả của trình thông dịch trong dòng thông báo cho NameErrors và AttributionErrors. Bản vá của E. Paine.
Công cụ/Bản trình diễn¶
bpo-44786: Sửa cảnh báo trong biểu thức chính quy trong tập lệnh c-analyzer.
bpo-44967: pydoc hiện trả về mã trạng thái khác 0 khi không tìm thấy mô-đun.
bpo-44978: Cho phép công cụ Argument Clinic xử lý các phương pháp đặc biệt của
__complex__.bpo-43425: Đã xóa dự án demo 'test2to3' thể hiện việc sử dụng lib2to3 để hỗ trợ Python 2.x và Python 3.x từ một nguồn duy nhất trong gói distutils. Bản vá của Donghee Na
bpo-44074: Tạo bản vá tự động phát hiện tên nhánh cơ sở chính xác (trước đây nó được mã hóa cứng thành 'master')
bpo-20291: Đã thêm hỗ trợ cho các tham số vị trí biến đổi trong Phòng khám đối số.
C API¶
bpo-41710: Hàm PyThread_acquire_lock_timed() hiện sẽ kiểm soát thời gian chờ nếu nó quá lớn, thay vì hủy bỏ quá trình. Bản vá của Victor Stinner.
bpo-44687:
BufferedReader.peek()không còn tăngValueErrorkhi toàn bộ tệp đã được lưu vào bộ đệm.bpo-45116: Thêm macro
Py_ALWAYS_INLINEđể yêu cầu trình biên dịch luôn nội tuyến một hàm nội tuyến tĩnh. Trình biên dịch có thể bỏ qua nó và quyết định không đưa hàm vào nội tuyến. Bản vá của Victor Stinner.bpo-45094: Thêm macro
Py_NO_INLINEđể tắt nội tuyến trên một hàm. Bản vá của Victor Stinner.bpo-45061: Thêm bộ giải mã vào loại
boolđể phát hiện lỗi đếm lại trong tiện ích mở rộng C gọi nhầmPy_DECREF(Py_True);hoặcPy_DECREF(Py_False);. Bản vá của Victor Stinner.bpo-42035: Thêm chức năng
PyType_GetQualName()mới để lấy tên đủ điều kiện của loại.bpo-41103: Hoàn nguyên việc xóa giao thức bộ đệm cũ vì chúng là một phần của ABI ổn định.
bpo-44751: Xóa
crypt.hbao gồm khỏi tiêu đềPython.hcông khai.bpo-42747: Cờ loại
Py_TPFLAGS_HAVE_VERSION_TAGhiện không có tác dụng gì. CờPy_TPFLAGS_HAVE_AM_SEND(được thêm vào trong 3.10) sẽ bị xóa. Cả hai đều không cần thiết vì không thể có các đối tượng loại bị thiếu các trường liên quan.bpo-44530: Đã thêm
co_qualnamevào cấu trúcPyCodeObjectđể truyền tên đủ điều kiện từ trình biên dịch đến các đối tượng mã.Bản vá của Gabriele N. Tornetta
bpo-44441:
Py_RunMain()hiện đặt lạiPyImport_Inittabvề giá trị ban đầu khi thoát. Phải có thể gọiPyImport_AppendInittab()hoặcPyImport_ExtendInittab()mỗi lần khởi tạo Python. Bản vá của Victor Stinner.bpo-39947: Xóa 4 hàm C API của thùng rác riêng chỉ được giữ lại để tương thích ngược của ABI ổn định với Python 3.8 trở lên, vì thùng rác API không thể sử dụng được với C API bị giới hạn trên Python 3.8 trở lên. Thùng rác API đã bị loại khỏi C API giới hạn trong Python 3.9.
Các chức năng bị loại bỏ:
_PyTrash_deposit_object()
_PyTrash_destroy_chain()
_PyTrash_thread_deposit_object()
_PyTrash_thread_destroy_chain()
Thùng rác C API không bao giờ có thể sử dụng được với C API giới hạn, vì các macro thùng rác cũ truy cập trực tiếp vào các thành viên
PyThreadStatenhư_tstate->trash_delete_nesting, trong khi cấu trúcPyThreadStatemờ đục trong C API giới hạn.Loại trừ hằng số
PyTrash_UNWIND_LEVELkhỏi C API.Bản vá của Victor Stinner.
bpo-40939: Đã xóa tài liệu cho
PyParser_*C API đã bị xóa.bpo-43795: Danh sách trong Nội dung của Limited API hiện hiển thị tên công khai
PyFrameObjectthay vì_frame. Mục_nodekhông tồn tại không còn xuất hiện trong danh sách.bpo-44378:
Py_IS_TYPE()không còn sử dụngPy_TYPE()để tránh cảnh báo trình biên dịch: không còn truyềnconst PyObject*sangPyObject*nữa. Bản vá của Victor Stinner.bpo-39573: Chuyển đổi macro
Py_TYPE()vàPy_SIZE()thành các hàm nội tuyến tĩnh. Bây giờ, các hàmPy_SET_TYPE()vàPy_SET_SIZE()phải được sử dụng để đặt loại và kích thước đối tượng. Bản vá của Victor Stinner.bpo-44263: Hàm
PyType_Ready()hiện phát sinh lỗi nếu một loại được xác định bằng bộ cờPy_TPFLAGS_HAVE_GCnhưng không có chức năng duyệt ngang (PyTypeObject.tp_traverse). Bản vá của Victor Stinner.bpo-43795: Chức năng không có giấy tờ
Py_FrozenMain()bị xóa khỏi API giới hạn.bpo-44113: Không dùng các hàm sau để định cấu hình khởi tạo Python:
PySys_AddWarnOptionUnicode()PySys_AddWarnOption()PySys_AddXOption()PySys_HasWarnOptions()Py_SetPath()Py_SetProgramName()Py_SetPythonHome()Py_SetStandardStreamEncoding()_Py_SetProgramFullPath()
Thay vào đó, hãy sử dụng
PyConfigAPI mới của Python Initialization Configuration (PEP 587).bpo-44094: Xóa
PyErr_SetFromErrnoWithUnicodeFilename(),PyErr_SetFromWindowsErrWithUnicodeFilename()vàPyErr_SetExcFromWindowsErrWithUnicodeFilename(). Chúng không được ghi lại và không được dùng nữa kể từ Python 3.3.bpo-43795:
PyCodec_Unregister()hiện đã được xuất chính xác dưới dạng một hàm trong Windows Stable ABI DLL.bpo-44029: Xóa các API
Py_UNICODEkhông được dùng nữa:PyUnicode_Encode,PyUnicode_EncodeUTF7,PyUnicode_EncodeUTF8,PyUnicode_EncodeUTF16,PyUnicode_EncodeUTF32,PyUnicode_EncodeLatin1,PyUnicode_EncodeMBCS,PyUnicode_EncodeDecimal,PyUnicode_EncodeRawUnicodeEscape,PyUnicode_EncodeCharmap,PyUnicode_EncodeUnicodeEscape,PyUnicode_TransformDecimalToASCII,PyUnicode_TranslateCharmap,PyUnicodeEncodeError_Create,PyUnicodeTranslateError_Create. Xem PEP 393 và PEP 624 để tham khảo.bpo-42035: Thêm chức năng
PyType_GetName()mới để lấy tên viết tắt của loại.
Python 3.10.0 beta 1¶
Release date: 2021-05-03
Bảo mật¶
bpo-43434: Tạo các đối tượng
sqlite3.Connectionbây giờ cũng tạo rasqlite3.connectvàsqlite3.connect/handleauditing events. Trước đây những sự kiện này chỉ được thực hiện bởi các lệnh gọisqlite3.connect(). Bản vá của Erlend E. Aasland.bpo-43998: Mô-đun
sslđặt mặc định bộ mật mã an toàn hơn. Mật mã không có tính bảo mật chuyển tiếp và với SHA-1 MAC bị tắt theo mặc định. Cấp độ bảo mật 2 cấm các khóa RSA, DH và ECC yếu có mức bảo mật dưới 112 bit.SSLContextmặc định là phiên bản giao thức tối thiểu TLS 1.2. Cài đặt dựa trên nghiên cứu của Hynek Schlawack.bpo-43882: Sự hiện diện của các ký tự dòng mới hoặc tab trong các phần của URL có thể cho phép một số hình thức tấn công.
Tuân theo thông số kiểm soát đối với các URL được xác định bởi WHATWG
urllib.parse()hiện sẽ xóa các dòng và tab mới ASCII khỏi URL, ngăn chặn các cuộc tấn công như vậy.bpo-43472: Đảm bảo móc kiểm tra cấp thông dịch viên nhận được sự kiện
cpython.PyInterpreterState_Newkhi được gọi thông qua mô-đun_xxsubinterpreters.bpo-43362: Sửa lỗi miễn phí không hợp lệ trong mô-đun _sha3. Sự cố đã được giới thiệu trong phiên bản 3.10.0a1. Python 3.9 trở về trước không bị ảnh hưởng.
bpo-43762: Thêm sự kiện kiểm tra cho
sqlite3.connect/handle(),sqlite3.Connection.enable_load_extension()vàsqlite3.Connection.load_extension(). Bản vá của Erlend E. Aasland.bpo-43756: Thêm sự kiện kiểm tra mới
glob.glob/2để kết hợp các đối số root_dir và dir_fd mới được thêm vàoglob.glob()vàglob.iglob().bpo-36384: mô-đun
ipaddresskhông còn chấp nhận bất kỳ số 0 đứng đầu nào trong chuỗi địa chỉ IPv4. Các số 0 đứng đầu không rõ ràng và được một số thư viện hiểu là ký hiệu bát phân. Ví dụ: hàm kế thừasocket.inet_aton()xử lý các số 0 đứng đầu dưới dạng ký hiệu bát phân. Việc triển khai glibc củainet_pton()hiện đại không chấp nhận bất kỳ số 0 đứng đầu nào. Trong một thời gian, mô-đunipaddressđược sử dụng để chấp nhận các số 0 đứng đầu không rõ ràng.bpo-43075: Khắc phục lỗ hổng Từ chối dịch vụ biểu thức chính quy (ReDoS) trong
urllib.request.AbstractBasicAuthHandler. Regex dễ bị tổn thương bởi ReDoS có độ phức tạp bậc hai trong trường hợp xấu nhất và nó cho phép gây ra sự từ chối dịch vụ khi xác định các RFC không hợp lệ được tạo ra. Sự cố ReDoS này nằm ở phía máy khách và cần những kẻ tấn công từ xa để kiểm soát máy chủ HTTP.bpo-42800: Các móc kiểm tra hiện được kích hoạt để truy cập frame.f_code, traceback.tb_frame và mã trình tạo/thuộc tính khung.
bpo-37363: Thêm sự kiện kiểm tra vào mô-đun
http.client.
Cốt lõi và nội dung¶
bpo-43977: Ngăn chặn các lớp vừa là chuỗi vừa là ánh xạ khi khớp mẫu.
bpo-43977: Sử dụng
tp_flagstrên đối tượng lớp để xác định xem chủ đề là một chuỗi hay ánh xạ khi khớp mẫu. Tránh phải nhậpcollections.abckhi khớp mẫu.bpo-43892: Khôi phục xác thực hợp lệ các mẫu giá trị bằng chữ phức tạp khi phân tích cú pháp các khối
match.bpo-43933: Đặt frame.f_lineno thành số dòng của 'with' kweyword khi thực hiện lệnh gọi tới
__exit__.bpo-43933: Nếu vị trí hiện tại trong khung không có số dòng thì hãy đặt thuộc tính f_lineno thành Không, thay vì -1, để tuân theo PEP 626. Điều này thường không thể thực hiện được nhưng có thể xảy ra trong một số trường hợp bất thường.
bpo-43963: Nhập mô-đun
_signalvào trình thông dịch phụ không còn tác dụng phụ nữa.bpo-42739: Biểu diễn bên trong của bảng số dòng được thay đổi để không sử dụng trọng điểm và một tham số độ dài rõ ràng được thêm vào hàm API ngoài quy trình
PyLineTable_InitAddressRange. Điều này làm cho việc xử lý bảng số dòng trở nên mạnh mẽ hơn trong một số trường hợp.
Thư viện¶
bpo-43908: Làm cho các loại
retrở nên bất biến. Bản vá của Erlend E. Aasland.bpo-43908: Làm cho loại
array.arraytrở nên bất biến. Bản vá của Erlend E. Aasland.
Cốt lõi và nội dung¶
bpo-43901: Thay đổi các đối tượng lớp và mô-đun để tạo lười biếng các chú thích trống theo yêu cầu. Các ký tự chú thích được lưu trữ trong __dict__ của đối tượng để tương thích ngược.
bpo-43892: Các mẫu so khớp hiện sử dụng các nút AST chuyên dụng mới (
MatchValue,MatchSingleton,MatchSequence,MatchStar,MatchMapping,MatchClass) thay vì sử dụng lại các nút biểu thức AST.MatchAsvàMatchOrhiện được định nghĩa là nút mẫu thay vì nút biểu thức. Bản vá của Nick Coghlan.bpo-42725: Việc sử dụng
await/yield/yield fromvà các biểu thức được đặt tên trong chú thích hiện bị cấm khi PEP 563 được kích hoạt.bpo-43754: Khi thực hiện khớp mẫu cấu trúc (PEP 634), các tên đã chụp hiện không bị ràng buộc cho đến khi mẫu entire khớp thành công.
bpo-42737: Chú thích cho các mục tiêu phức tạp (mọi thứ bên cạnh những cái tên đơn giản) không còn gây ra bất kỳ hiệu ứng thời gian chạy nào với
from __future__ import annotations.bpo-43914: các trường hợp ngoại lệ
SyntaxErrordo trình thông dịch đưa ra sẽ làm nổi bật toàn bộ phạm vi lỗi của biểu thức cấu thành lỗi cú pháp, thay vì chỉ nơi phát hiện sự cố. Bản vá của Pablo Galindo.bpo-38605: Hoàn nguyên việc đặt
from __future__ import annotationslàm mặc định. Điều này tuân theo quyết định của Hội đồng chỉ đạo về việc hoãn các thay đổi PEP 563 đối với ít nhất là Python 3.11. Xem email gốc để biết thêm thông tin về quyết định: https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/. Patch của Pablo Galindo.bpo-43475: Giá trị băm của NaN hiện phụ thuộc vào danh tính đối tượng. Trước đây, chúng luôn được băm về 0 mặc dù các giá trị NaN không bằng nhau. Việc có cùng hàm băm cho các giá trị không bằng nhau gây ra tình trạng chồng chéo trong bảng băm.
bpo-43859: Cải thiện thông báo lỗi cho các ngoại lệ
IndentationError. Bản vá của Pablo Galindobpo-41323: Việc gấp bộ dữ liệu không đổi trong trình tối ưu hóa mã byte hiện sử dụng lại bộ dữ liệu trong bảng hằng số.
bpo-43846: Việc sử dụng ngăn xếp dữ liệu giảm đi nhiều đối với các biểu thức lệnh gọi và chữ lớn.
bpo-38530: Khi in
NameErrordo trình thông dịch đưa ra,PyErr_Display()sẽ đưa ra gợi ý về các tên biến tương tự trong hàm mà ngoại lệ được tạo ra từ đó. Bản vá của Pablo Galindobpo-43823: Cải thiện lỗi cú pháp cho các từ điển không hợp lệ. Bản vá của Pablo Galindo.
bpo-43822: Cải thiện lỗi cú pháp trong trình phân tích cú pháp do thiếu dấu phẩy giữa các biểu thức. Bản vá của Pablo Galindo.
bpo-43798: các nút
ast.aliashiện bao gồm các thuộc tính siêu dữ liệu vị trí nguồn, ví dụ: lineno, col_offset.bpo-43797: Cải thiện thông báo lỗi
SyntaxErrorđể so sánh không hợp lệ. Bản vá của Pablo Galindo.bpo-43760: Di chuyển cờ để kiểm tra xem tính năng theo dõi có được bật vào ngăn xếp C từ vùng nhớ heap hay không. Nên tăng tốc độ gửi trong trình thông dịch.
bpo-43682: Phương thức tĩnh (
@staticmethod) và phương thức lớp (@classmethod) hiện kế thừa các thuộc tính phương thức (__module__,__name__,__qualname__,__doc__,__annotations__) và có thuộc tính__wrapped__mới. Bản vá của Victor Stinner.bpo-43751: Đã sửa lỗi trong đó
anext(ait, default)trả về sai Không có.bpo-42128:
__match_args__không còn được phép là danh sách nữa.bpo-43683: Thêm mã hoạt động GEN_START. Đánh dấu phần khởi động của trình tạo, bao gồm async hoặc coroutine và xử lý việc gửi các giá trị đến trình tạo hoặc coroutine mới được tạo.
Thư viện¶
bpo-43105: Importlib hiện giải quyết các đường dẫn tương đối khi tạo đối tượng thông số mô-đun từ vị trí tệp.
Cốt lõi và nội dung¶
bpo-43682: Các phương thức tĩnh (
@staticmethod) hiện có thể gọi được như các hàm thông thường. Bản vá của Victor Stinner.bpo-42609: Đã ngăn chặn sự cố trong trình xác thực và trình tối ưu hóa AST khi biên dịch một số biểu thức dài vô lý như
"+0"*1000000. Thay vào đó,RecursionErrorhiện đã được nâng lên.bpo-38530: Khi in
AttributeError,PyErr_Display()sẽ đưa ra gợi ý về tên thuộc tính tương tự trong đối tượng mà ngoại lệ được tạo ra từ đó. Bản vá của Pablo Galindo
Thư viện¶
bpo-44015: Trong @dataclass(), tăng TypeError nếu KW_ONLY được chỉ định nhiều lần.
bpo-25478: Đã thêm phương thức total() vào bộ sưu tập.Counter() để tính tổng số đếm.
bpo-43733: Thay đổi
netrc.netrcđể sử dụng mã hóa UTF-8 trước khi sử dụng mã hóa miền địa phương.bpo-43979: Đã xóa phần hiểu danh sách không cần thiết trước khi lặp từ
urllib.parse.parse_qsl(). Bản vá của Christoph Zwerschke và Donghee Na.bpo-43993: Cập nhật gói pip lên 21.1.1.
bpo-43957: [Enum] Không dùng
TypeErrorkhi không phải thành viên được sử dụng trong kiểm tra ngăn chặn; Trong 3.12TruehoặcFalsesẽ được trả về thay thế và ngăn chặn sẽ trả vềTruenếu giá trị là thành viên của enum đó hoặc một trong các giá trị của thành viên của nó.bpo-42904: Để tương thích ngược với các phiên bản nhỏ trước đó của Python, nếu
typing.get_type_hints()không nhận được đối số từ điển vùng tên,typing.get_type_hints()sẽ tìm kiếm trong các vùng tên toàn cục và cục bộ trong quá trình đánh giá các chú thích kiểu xâu chuỗi (tham chiếu chuyển tiếp chuỗi) bên trong một lớp.bpo-43945: [Enum] Loại bỏ hành vi mixin format() không chuẩn: trong 3.12, thành viên enum, không phải giá trị của thành viên, sẽ được sử dụng cho lệnh gọi format().
bpo-41139: Không dùng nữa
cgi.log()API không có giấy tờ.bpo-43937: Đã sửa mô-đun
turtlehoạt động với cửa sổ gốc không mặc định.bpo-43930: Cập nhật gói pip lên 21.1 và setuptools lên 56.0.0
bpo-43907: Sửa lỗi trong quá trình triển khai dưa chua bằng Python thuần túy khi sử dụng giao thức 5, trong đó các phiên bản bytearray xuất hiện nhiều lần trong biểu đồ đối tượng được chọn sẽ giải nén không chính xác thành các bản sao lặp lại của đối tượng bytearray.
bpo-43926: Trong
importlib.metadata, cung cấp giao diện thống nhất choDescription, cho phép bất kỳ trường nào được mã hóa với các giá trị nhiều dòng, xóa các dòng tiếp tục khỏi các giá trị nhiều dòng và thêm thuộc tính.jsonđể dễ dàng truy cập vào biểu mẫu tương thích với PEP 566 JSON. Đồng bộ hóa vớiimportlib_metadata 4.0.bpo-43920: OpenSSL 3.0.0:
load_verify_locations()hiện trả về thông báo lỗi nhất quán khi cadata không chứa chứng chỉ hợp lệ.bpo-43607:
urllibhiện có thể chuyển đổi đường dẫn Windows có tiền tố\\?\thành đường dẫn URL.bpo-43817: Thêm
inspect.get_annotations(), tính toán an toàn các chú thích được xác định trên một đối tượng. Nó giải quyết những vấn đề khó khăn khi truy cập các chú thích từ nhiều loại đối tượng khác nhau và đưa ra rất ít giả định về đối tượng được truyền vào.inspect.get_annotations()cũng có thể hủy xâu chuỗi các chú thích theo chuỗi một cách chính xác.inspect.signature(),inspect.from_callable()vàinspect.from_function()hiện gọiinspect.get_annotations()để truy xuất chú thích. Điều này có nghĩa làinspect.signature()vàinspect.from_callable()hiện cũng có thể hủy chuỗi các chú thích dạng chuỗi.bpo-43284: platform.win32_ver lấy phiên bản windows từ sys.getwindowsversion().platform_version, phiên bản này lấy phiên bản từ kernel32.dll (có thể là phiên bản khác với chính Windows). Do đó, hãy thay đổi platform.win32_ver để xác định phiên bản bằng cách sử dụng chức năng riêng _syscmd_ver của mô-đun nền tảng để trả về phiên bản chính xác.
bpo-42854: Mô-đun
sslhiện sử dụngSSL_read_exvàSSL_write_exbên trong. Các chức năng hỗ trợ đọc và ghi dữ liệu lớn hơn 2 GB. Việc ghi dữ liệu có độ dài bằng 0 không còn bị lỗi do vi phạm giao thức nữa.bpo-42333: Mô-đun mở rộng cổng
_sslđể khởi tạo nhiều pha.bpo-43880:
sslhiện tăng Cảnh báo ngừng sử dụng đối với các tùy chọn OP_NO_SSL/TLS*, phiên bản TLS cũ, giao thức cũ và các tính năng khác không còn được dùng nữa kể từ Python 3.6, 3.7 hoặc OpenSSL 1.1.0.bpo-41559: PEP 612 hiện được triển khai hoàn toàn bằng Python; các đối tượng
types.GenericAliasdựng sẵn không còn bao gồmtyping.ParamSpectrong__parameters__(ngoại trừcollections.abc.Callable'sGenericAlias). Điều này có nghĩa là việc sử dụngParamSpeckhông hợp lệ trước đây (chẳng hạn nhưlist[P]) hoạt động trong các phiên bản Python 3.10 alpha trước đó, giờ đây sẽ tăngTypeErrortrong quá trình thay thế.bpo-43867: Lớp
multiprocessingServerhiện đã bắt đượcSystemExitmột cách rõ ràng và đóng kết nối máy khách trong trường hợp này. Nó xảy ra khi phương thứcServer.serve_client()đến cuối tệp (EOF).bpo-40443: Xóa các mục nhập không sử dụng: pyclbr không còn sử dụng bản sao và gõ không còn sử dụng ast. Bản vá của Victor Stinner.
bpo-43820: Xóa bản sao không cần thiết của không gian tên được truyền tới dataclasses.make_dataclass().
bpo-43787: Thêm phương thức
__iter__()vàobz2.BZ2File,gzip.GzipFilevàlzma.LZMAFile. Nó làm cho việc lặp lại chúng nhanh hơn khoảng 2 lần. Bản vá của Inada Naoki.bpo-43680: Không dùng nữa io.OpenWrapper và _pyio.OpenWrapper: thay vào đó hãy sử dụng io.open và _pyio.open. Cho đến Python 3.9, _pyio.open không phải là một phương thức tĩnh và nội trang.open được đặt thành OpenWrapper để không trở thành phương thức bị ràng buộc khi được đặt thành biến lớp. _io.open là một hàm tích hợp trong khi _pyio.open là một hàm Python. Trong Python 3.10, _pyio.open() hiện là một phương thức tĩnh và buildins.open() hiện là io.open().
bpo-43680: Hàm
_pyio.open()của Python trở thành một phương thức tĩnh để hoạt động như hàm tích hợpio.open(): không trở thành một phương thức bị ràng buộc khi được lưu trữ dưới dạng biến lớp. Điều này trở nên khả thi vì các phương thức tĩnh hiện có thể gọi được trong Python 3.10. Hơn nữa,_pyio.OpenWrapper()trở thành bí danh đơn giản của_pyio.open(). Bản vá của Victor Stinner.bpo-41515: Sửa lỗi
KeyErrortăng lên trongtyping.get_type_hints()do các mô-đun tổng hợp không xuất hiện trongsys.modules.bpo-43776: Khi các đối số
subprocess.Popenđược cung cấp dưới dạng một chuỗi hoặcpathlib.Path, hiện tại đại diện của đối tượng Popen hiển thị nội dung đúng.bpo-42248: [Enum] đảm bảo các ngoại lệ được nêu trong
_missing__được giải phóngbpo-43744: khắc phục sự cố với tên thành viên enum khớp với phần đầu của tên biến riêng tư
bpo-43772: Đã sửa giá trị trả về của
TypeVar.__ror__. Bản vá của Jelle Zijlstra.bpo-43764: Thêm tham số match_args vào trang trí @dataclass để cho phép ngăn chặn việc tạo __match_args__.
bpo-43799: OpenSSL 3.0.0: xác định
OPENSSL_API_COMPAT1.1.1 để loại bỏ các cảnh báo không dùng nữa. Python yêu cầu API OpenSSL 1.1.1.bpo-43478: Không thể sử dụng Mô hình làm thông số kỹ thuật cho các Mô hình khác nữa. Kết quả là, một đối tượng đã được mô phỏng không thể có thuộc tính được mô phỏng bằng
autospec=Truehoặc là chủ đề của lệnh gọicreate_autospec(...). Điều này có thể phát hiện ra lỗi trong các thử nghiệm vì các Mô phỏng có nguồn gốc từ mô phỏng này sẽ luôn vượt qua các thử nghiệm nhất định (ví dụ:isinstance()) và các hàm xác nhận dựng sẵn (ví dụ: khẳng định_gọi_once_with) sẽ vượt qua vô điều kiện.bpo-43794: Thêm hằng số
ssl.OP_IGNORE_UNEXPECTED_EOF(OpenSSL 3.0.0)bpo-43785: Cải thiện hiệu suất
bz2.BZ2Filebằng cách xóa RLock khỏi BZ2File. Điều này làm cho luồng BZ2File không an toàn khi đối mặt với nhiều trình đọc hoặc trình ghi đồng thời, giống như các lớp tương đương của nó tronggzipvàlzmaluôn như vậy. Bản vá của Inada Naoki.bpo-43789: OpenSSL 3.0.0: Không gọi lại chức năng gọi lại mật khẩu lần thứ hai khi lần gọi đầu tiên đã báo hiệu tình trạng lỗi.
bpo-43788: Các tệp tiêu đề cho mã lỗi
sslhiện dành riêng cho phiên bản OpenSSL. Các ngoại lệ bây giờ sẽ hiển thị lý do chính xác và mã thư viện. Tập lệnhmake_ssl_data.pyđã được viết lại để sử dụng tệp văn bản của OpenSSL có mã lỗi.bpo-43766: Triển khai PEP 647 trong mô-đun
typingbằng cách thêmTypeGuard.bpo-25264:
os.path.realpath()hiện chấp nhận đối số chỉ từ khóa strict. Khi được đặt thànhTrue,OSErrorsẽ được nâng lên nếu đường dẫn không tồn tại hoặc gặp phải vòng lặp liên kết tượng trưng.bpo-43780: Trong
importlib.metadata, kết hợp các thay đổi từ importlib_metadata 3.10: Thêm bộ nhớ đệm dựa trên mtime trong quá trình khám phá phân phối. Việc sử dụng kết quả chính tả được gắn cờ từentry_points()là không được dùng nữa.gh-47383: Các thuộc tính
P.argsvàP.kwargscủatyping.ParamSpechiện là phiên bản của các lớp mớityping.ParamSpecArgsvàtyping.ParamSpecKwargs, cho phéprepr()hữu ích hơn. Bản vá của Jelle Zijlstra.bpo-43731: Thêm tham số
encodinglogging.fileConfig().bpo-43712: Thêm thông số
encodingvàerrorsvàofileinput.input()vàfileinput.FileInput.bpo-38659: Trình trang trí
simple_enumđược thêm vào mô-đunenumđể chuyển đổi một lớp bình thường thành Enum.test_simple_enumđược thêm vào để kiểm tra các enum đơn giản so với Enum bình thường tương ứng. Các mô-đun thư viện chuẩn được cập nhật để sử dụngsimple_enum.bpo-43764: Khắc phục sự cố trong đó việc tạo
__match_args__có thể không thành công đối với một sốdataclasses.bpo-43752: Khắc phục hồi quy
sqlite3cho các đốm màu có kích thước bằng 0 bằng bộ chuyển đổi, trong đób""được trả về thay vìNone. Hồi quy được giới thiệu bởi PR 24723. Bản vá của Erlend E. Aasland.bpo-43655: Cửa sổ hộp thoại
tkinterhiện được người quản lý cửa sổ trên macOS và X Window công nhận là hộp thoại.bpo-43723: Các phương thức
threadingsau hiện không được dùng nữa và cần được thay thế:currentThread=>threading.current_thread()activeCount=>threading.active_count()Condition.notifyAll=>threading.Condition.notify_all()Event.isSet=>threading.Event.is_set()Thread.setName=>threading.Thread.namethread.getName=>threading.Thread.nameThread.isDaemon=>threading.Thread.daemonThread.setDaemon=>threading.Thread.daemon
Bản vá của Jelle Zijlstra.
bpo-2135: Ngừng triển khai find_module() và find_loader() trong importlib và zipimport.
bpo-43534:
turtle.textinput()vàturtle.numinput()hiện tạo một cửa sổ tạm thời hoạt động thay mặt cho cửa sổ canvas.bpo-43532: Thêm khả năng chỉ định các trường chỉ từ khóa cho các lớp dữ liệu. Các trường này sẽ trở thành đối số chỉ có từ khóa cho __init__ được tạo.
bpo-43522: Khắc phục sự cố với
hostname_checks_common_name. OpenSSL không sao chép các cờ máy chủ từ struct SSL_CTX sang struct SSL.bpo-8978: Cải thiện thông báo lỗi cho
tarfile.open()khilzma/bz2không khả dụng. Bản vá của Anthony Sottile.bpo-42967: Cho phép đối số
bytesseparatortrongurllib.parse.parse_qsvàurllib.parse.parse_qslkhi phân tích chuỗi truy vấnstr. Trước đây, điều này đã gây raTypeError.bpo-43296: Cải thiện việc xử lý lỗi
sqlite3: lỗisqlite3_value_blob()đặtSQLITE_NOMEMhiện tăngMemoryError. Bản vá của Erlend E. Aasland.bpo-43312: Các hàm mới
sysconfig.get_preferred_scheme()vàsysconfig.get_default_scheme()được thêm vào để truy vấn một nền tảng cho tên lược đồ "người dùng", "nhà" và "tiền tố" (mặc định) ưa thích của nó.bpo-43265: Cải thiện khả năng xử lý lỗi
sqlite3.Connection.backup(). Thông báo lỗi cho tên cơ sở dữ liệu đích không tồn tại hiện làunknown database <database name>thay vìSQL logic error. Bản vá của Erlend E. Aasland.bpo-41282: Các chương trình cài đặt trong
distutils.command.installhiện được tải từsysconfig.bpo-41282:
distutils.sysconfigđã được hợp nhất thànhsysconfig.bpo-43176: Đã sửa lỗi xử lý lớp dữ liệu kế thừa từ lớp dữ liệu cố định không có trường. Bây giờ nó được phát hiện chính xác là một lỗi.
bpo-43080:
pprinthiện đã hỗ trợdataclasses.dataclass. Bản vá của Lewis Gaul.bpo-39950: Thêm phương thức
pathlib.Path.hardlink_to()thay thếlink_to(). Phương thức mới có cùng thứ tự đối số nhưsymlink_to().bpo-42904:
typing.get_type_hints()hiện kiểm tra không gian tên cục bộ của một lớp khi đánh giá các chú thích PEP 563 bên trong lớp đã nói.bpo-42269: Thêm tham số
slotsvào trang trídataclasses.dataclassđể tự động tạo__slots__cho lớp. Bản vá được cung cấp bởi Yurii Karabas.bpo-39529: Không còn sử dụng
asyncio.get_event_loop()mà không chạy vòng lặp sự kiện. Phát ra cảnh báo không dùng nữa đối với các hàmasynciongầm tạo đối tượngFuturehoặcTasknếu không có vòng lặp sự kiện đang chạy và không có đối số loop rõ ràng nào được truyền:ensure_future(),wrap_future(),gather(),shield(),as_completed()và các hàm tạo củaFuture,Task,StreamReader,StreamReaderProtocol.bpo-18369: Các lớp Chứng chỉ và PrivateKey đã được thêm vào mô-đun ssl. Giờ đây, chứng chỉ và khóa cũng có thể được tải từ bộ nhớ đệm.
bpo-41486: Sử dụng mã quản lý bộ đệm đầu ra mới cho các mô-đun
bz2/lzma/zlibvà thêm chức năng.readall()vào lớp_compression.DecompressReader. Những điều này mang lại một số cải tiến hiệu suất. Bản vá của Ma Lin.bpo-31870: Hàm
ssl.get_server_certificate()hiện có tham số timeout.bpo-41735: Sửa lỗi khóa luồng trong mô-đun zlib có thể gặp lỗi trong một số trường hợp hiếm gặp. Bản vá của Ma Lin.
bpo-36470: Sửa các lớp dữ liệu với
InitVars vàreplace(). Bản vá của Claudiu Popa.bpo-40849: Hiển thị cờ ssl X509_V_FLAG_PARTIAL_CHAIN
bpo-35114:
ssl.RAND_status()hiện trả về giá trị boolean (như tài liệu) thay vì1hoặc0.bpo-39906:
pathlib.Path.stat()vàchmod()hiện chấp nhận đối số chỉ từ khóa follow_symlinks để đảm bảo tính nhất quán với các hàm tương ứng trong mô-đunos.bpo-39899:
os.path.expanduser()hiện từ chối đoán thư mục chính của Windows nếu tên cơ sở của thư mục chính của người dùng hiện tại không khớp với tên người dùng của họ.pathlib.Path.expanduser()vàhome()hiện liên tục đưa ra ngoại lệRuntimeErrorkhi không thể giải quyết được thư mục chính. Trước đây, ngoại lệKeyErrorcó thể được đưa ra trên Windows khi biến môi trường"USERNAME"không được đặt.bpo-36076: Đã thêm hỗ trợ SNI cho
ssl.get_server_certificate().bpo-38490: Hiệp phương sai, tương quan Pearson và chức năng hồi quy tuyến tính đơn giản đã được thêm vào mô-đun thống kê. Bản vá của Tymoteusz Wołodźko.
bpo-33731: Cung cấp hàm locale.localize(), hàm này chuyển đổi chuỗi số chuẩn hóa thành định dạng ngôn ngữ.
bpo-32745: Khắc phục sự hồi quy trong việc xử lý loại
ctypes.c_wchar_pcủa ctypes: các ký tự null được nhúng sẽ khiếnValueErrorđược nâng lên. Bản vá của Zackery Spytz.
Tài liệu¶
bpo-43987: Thêm tài liệu "Các phương pháp hay nhất về chú thích" dưới dạng HOWTO mới.
bpo-43977: Ghi lại các loại cờ
Py_TPFLAGS_MAPPINGvàPy_TPFLAGS_SEQUENCEmới.bpo-43959: Tài liệu về PyContextVar C-API đã được làm rõ.
bpo-43938: Cập nhật tài liệu về lớp dữ liệu để thể hiện rằng FrozenInstanceError có nguồn gốc từ AttributionError.
bpo-43778: Sửa tiện ích mở rộng Sphinx glossary_search: tạo thư mục con _static/ nếu nó không tồn tại.
bpo-43755: Cập nhật tài liệu để phản ánh rằng các biểu thức lambda không được đóng dấu ngoặc đơn không còn có thể là phần biểu thức trong mệnh đề
iftrong phần hiểu và biểu thức trình tạo kể từ Python 3.9.bpo-43739: Sửa mã ví dụ trong Doc/extending/extending.rst để khai báo và khởi tạo biến pmodule đúng loại.
Kiểm tra¶
bpo-43961: Sửa test_logging.test_namer_rotator_inheritance() trên Windows: sử dụng
os.replace()thay vìos.rename(). Bản vá của Victor Stinner.bpo-43842: Khắc phục tình trạng chạy đua trong bài kiểm tra SMTP của test_logging. Không đóng bộ mô tả tệp (socket) từ một luồng khác trong khi asyncore.loop() đang thăm dò bộ mô tả tệp. Bản vá của Victor Stinner.
bpo-43843:
test.libregrtesthiện đánh dấu bài kiểm tra là ENV_CHANGED (đã thay đổi môi trường thực thi) nếu một luồng đưa ra một ngoại lệ nhưng không bắt được nó. Nó đặt một cái móc vàothreading.excepthook(). Sử dụng tùy chọn--fail-env-changedđể đánh dấu bài kiểm tra là không thành công. Bản vá của Victor Stinner.bpo-43811: Kiểm tra nhiều phiên bản OpenSSL trên GitHub Actions. Sử dụng ccache để tăng tốc độ kiểm tra.
bpo-43791: OpenSSL 3.0.0: Vô hiệu hóa việc kiểm tra các giao thức cũ TLS 1.0 và 1.1. Các thử nghiệm không thành công với TLSV1_ALERT_INTERNAL_ERROR.
xây dựng¶
cửa sổ¶
bpo-35306: Thêm đối số bổ sung vào hàm
os.startfile().bpo-43538: Tránh phát sinh lỗi từ
pathlib.Path.exists()khi truyền tên tệp không hợp lệ.bpo-38822: Đã sửa lỗi
os.stat()trên các thư mục không thể truy cập được bằng dấu gạch chéo ở cuối, thay vì quay lại siêu dữ liệu của thư mục mẹ. Điều này ngầm ảnh hưởng đếnos.path.exists()vàos.path.isdir().bpo-26227: Đã sửa lỗi giải mã tên máy chủ trong
socket.gethostbyaddr()vàsocket.gethostbyname_ex().bpo-40432: Cập nhật tập lệnh tái tạo pegen trên Windows để tìm và sử dụng Python 3.8 trở lên. Trước đó, quá trình tái tạo pegen đã yêu cầu phiên bản 3,8 trở lên nhưng tập lệnh có thể đã sử dụng các phiên bản Python thấp hơn.
bpo-43745: Thực tế cập nhật bản phát hành Windows lên OpenSSL 1.1.1k. Các bản phát hành trước đó đã bị gắn nhãn sai và thực tế lại bao gồm 1.1.1i.
bpo-43652: Cập nhật Tcl và Tk lên 8.6.11 trong trình cài đặt Windows.
bpo-43492: Nâng cấp trình cài đặt Windows để sử dụng SQLite 3.35.5.
bpo-30555: Sửa lỗi
WindowsConsoleIOkhi có chuyển hướng fd. Bản vá của Segev Finer.
macOS¶
bpo-42119: Sửa lỗi kiểm tra đường dẫn macOS SDK khi xây dựng Python. Tìm kiếm thu hẹp để khớp với nội dung của SDK, cụ thể là chỉ các tệp trong
/System/Library,/System/IOSSupportvà/usrkhông phải/usr/local. Trước đây, mọi thứ trong/Systemđược cho là nằm trong SDK, điều này gây ra sự cố với bố cục hệ thống tệp mới trong 10.15+ trong đó hệ thống tệp người dùng có thể được gắn trong/System. Các đường dẫn trong/Librarycũng bị coi là vị trí SDK không chính xác.bpo-43568: Bỏ hỗ trợ cho MACOSX_DEPLOYMENT_TARGET < 10.3
bpo-44009: Cung cấp khả năng thực thi "python3.x-intel64" để cho phép buộc các bản dựng khung macOS Universal2 chạy một cách đáng tin cậy theo mô phỏng Rosetta 2 Intel-64 trên máy Mac Apple Silicon. Điều này có thể hữu ích cho việc thử nghiệm hoặc khi bánh xe Universal2 chưa có sẵn.
bpo-43851: Xây dựng SQLite với
SQLITE_OMIT_AUTOINITtrên macOS. Bản vá của Erlend E. Aasland.bpo-43492: Cập nhật trình cài đặt macOS để sử dụng SQLite 3.35.4.
bpo-42235:
Mac/BuildScript/build-installer.pyhiện sẽ sử dụng "--enable-optimizations" và--with-ltokhi xây dựng trên macOS 10.15 trở lên.
IDLE¶
bpo-37903: Thêm thao tác chuột vào thanh bên shell. Nhấp chuột trái và kéo tùy chọn sẽ chọn một hoặc nhiều dòng, giống như với thanh bên số dòng của trình soạn thảo. Nhấp chuột phải sau khi chọn sẽ hiển thị menu ngữ cảnh có 'sao chép có lời nhắc'. Thao tác này sẽ kết hợp các lời nhắc từ thanh bên với các dòng từ văn bản đã chọn.
bpo-43981: Sửa lỗi rò rỉ tham chiếu trong test_sidebar và test_squeezer. Các bản vá của Terry Jan Reedy và Pablo Galindo
bpo-37892: Thụt lề IDLE Đầu vào Shell có dấu cách thay vì tab
bpo-43655: Cửa sổ hộp thoại IDLE hiện được người quản lý cửa sổ trên macOS và X Window công nhận là hộp thoại.
bpo-37903: Shell của IDLE hiện hiển thị lời nhắc trong một thanh bên riêng biệt.
C API¶
bpo-43916: Thêm cờ loại
Py_TPFLAGS_DISALLOW_INSTANTIATIONmới để không cho phép tạo phiên bản loại. Bản vá của Victor Stinner.bpo-43774: Xóa macro
PYMALLOC_DEBUGhiện không được sử dụng. Móc gỡ lỗi trên bộ cấp phát bộ nhớ hiện được cài đặt theo mặc định nếu Python được xây dựng ở chế độ gỡ lỗi (nếu macroPy_DEBUGđược xác định). Hơn nữa, giờ đây chúng có thể được sử dụng trên bản dựng Python ở chế độ phát hành (ví dụ: sử dụng biến môi trườngPYTHONMALLOC=debug).bpo-43962: _PyInterpreterState_IDIncref() hiện gọi _PyInterpreterState_IDInitref() và luôn tăng id_refcount. Trước đây, việc gọi _xxsubinterpreters.get_current() có thể tạo ra sự không nhất quán về id_refcount khi một đối tượng _xxsubinterpreters.InterpreterID bị hủy phân bổ. Bản vá của Victor Stinner.
bpo-28254: Thêm các chức năng C-API mới để kiểm soát trạng thái của bộ thu gom rác:
PyGC_Enable(),PyGC_Disable(),PyGC_IsEnabled(), tương ứng với các chức năng trong mô-đungc.bpo-43908: Giới thiệu cờ
Py_TPFLAGS_IMMUTABLETYPEcho các đối tượng loại bất biến và sửa đổiPyType_Ready()để đặt nó cho các loại tĩnh. Bản vá của Erlend E. Aasland.bpo-43795:
PyMem_Calloc()hiện có sẵn ở phiên bản giới hạn C API (Py_LIMITED_API).bpo-43868:
PyOS_ReadlineFunctionPointer()không còn được xuất bởi các tiêu đề C API giới hạn và bởipython3.dlltrên Windows. Giống như bất kỳ hàm nào sử dụngFILE*, nó không phải là một phần của ABI ổn định.bpo-43795: Các định nghĩa ABI ổn định và API giới hạn được tạo từ một bảng kê khai trung tâm (PEP 652).
bpo-43753: Thêm hàm
Py_Is(x, y)để kiểm tra xem đối tượng x có phải là đối tượng y hay không, giống nhưx is ytrong Python. Ngoài ra, hãy thêm các hàmPy_IsNone(),Py_IsTrue(),Py_IsFalse()để kiểm tra xem một đối tượng lần lượt làNonesingleton,Truesingleton hayFalsesingleton. Bản vá của Victor Stinner.
Python 3.10.0 alpha 7¶
Release date: 2021-04-05
Bảo mật¶
bpo-42988: CVE 2021-3426: Loại bỏ tính năng
getfilecủa mô-đunpydoccó thể bị lạm dụng để đọc các tệp tùy ý trên đĩa (lỗ hổng truyền tải thư mục). Hơn nữa, ngay cả mã nguồn của mô-đun Python cũng có thể chứa dữ liệu nhạy cảm như mật khẩu. Lỗ hổng được báo cáo bởi David Schwörer.bpo-43285:
ftplibkhông còn tin cậy giá trị địa chỉ IP được trả về từ máy chủ để phản hồi lệnh PASV theo mặc định. Điều này ngăn máy chủ FTP độc hại sử dụng phản hồi để thăm dò các kết hợp cổng và địa chỉ IPv4 trên mạng khách.Mã yêu cầu hành vi dễ bị tổn thương trước đây có thể đặt thuộc tính
trust_server_pasv_ipv4_addresstrên các phiên bảnftplib.FTPcủa chúng thànhTrueđể kích hoạt lại nó.bpo-43439: Thêm móc kiểm tra cho
gc.get_objects(),gc.get_referrers()vàgc.get_referents(). Bản vá của Pablo Galindo.
Cốt lõi và nội dung¶
bpo-27129: Cập nhật số ma thuật mã byte CPython.
bpo-43672: Tăng ImportWarning khi gọi find_loader().
bpo-43660: Khắc phục sự cố xảy ra khi thay thế
sys.stderrbằng một lệnh gọi có thể xóa đối tượng trong khi ngoại lệ đang được in. Bản vá của Pablo Galindo.bpo-27129: Trình thông dịch mã byte sử dụng lệnh, thay vì byte, bù trừ nội bộ. Điều này làm giảm số lượng lệnh EXTENDED_ARG cần thiết và hợp lý hóa việc gửi lệnh đi một chút.
Thư viện¶
bpo-40645: Sửa lỗi rò rỉ tham chiếu trong tiện ích mở rộng
_hashopenssl. Bản vá của Pablo Galindo.
Cốt lõi và nội dung¶
bpo-42134: Lệnh gọi tới find_module() của hệ thống nhập giờ đây sẽ đưa ra ImportWarning.
bpo-41064: Cải thiện lỗi cú pháp khi sử dụng không hợp lệ các phần tử được gắn dấu sao kép ('**') trong chuỗi f. Bản vá của Pablo Galindo.
bpo-43575: Tăng tốc độ cuộc gọi tới
map()bằng cách sử dụng quy ước gọi PEP 590vectorcall. Bản vá của Donghee Na.bpo-42137: Hệ thống nhập hiện thích sử dụng
__spec__choModuleType.__repr__hơnmodule_repr().bpo-43452: Đã thêm các tính năng tối ưu hóa vi mô cho
_PyType_Lookup()để cải thiện hiệu suất tra cứu bộ đệm trong trường hợp phổ biến là các lần truy cập bộ đệm.bpo-43555: Báo cáo độ lệch cột cho
SyntaxErrorđối với các ký tự tiếp tục dòng không hợp lệ. Bản vá của Pablo Galindo.bpo-43517: Khắc phục lỗi phát hiện sai khi nhập vòng tròn khi sử dụng
from pkg.mod import attr, điều này gây ra kết quả dương tính giả trong mã đa luồng không tầm thường.bpo-43497: Phát ra Cảnh báo cú pháp cho các xác nhận có hằng số bộ dữ liệu, đây là hồi quy được giới thiệu trong python3.7
bpo-39316: Việc theo dõi hiện có số dòng chính xác để truy cập thuộc tính khi thuộc tính nằm trên một dòng khác với đối tượng. Cải thiện việc gỡ lỗi và lập hồ sơ cho chuỗi phương thức nhiều dòng.
bpo-35883: Python không còn bị lỗi khi khởi động với lỗi nghiêm trọng nếu đối số dòng lệnh chứa ký tự Unicode không hợp lệ. Hàm
Py_DecodeLocale()hiện thoát khỏi chuỗi byte sẽ được giải mã thành ký tự Unicode bên ngoài [U+0000; Phạm vi U+10ffff].bpo-43410: Sửa lỗi khiến trình phân tích cú pháp gặp sự cố khi phát ra lỗi cú pháp khi đọc dữ liệu đầu vào từ stdin. Bản vá của Pablo Galindo
bpo-43406: Khắc phục tình trạng chạy đua có thể xảy ra trong đó
PyErr_CheckSignalscố gắng thực thi trình xử lý tín hiệu không phải Python.bpo-42128: Thêm
__match_args__vào struct sequence objects. Bản vá của Pablo Galindo.bpo-43390: CPython hiện đặt cờ
SA_ONSTACKtrongPyOS_setsigcho trình xử lý tín hiệu mặc định của VM. Điều này thân thiện hơn với mã đang xử lý khác mà mô-đun mở rộng hoặc việc sử dụng nhúng có thể kéo vào (chẳng hạn như cgo của Golang), trong đó các ngăn xếp luồng nhỏ là tiêu chuẩn vàsigaltstack()đã được sử dụng để cung cấp cho bộ xử lý tín hiệu. Đây là thay đổi không hoạt động đối với phần lớn các quy trình không sử dụng sigaltstack.bpo-43287: Tăng tốc độ cuộc gọi tới
filter()bằng cách sử dụng quy ước gọi PEP 590vectorcall. Bản vá của Donghee Na.bpo-37448: Thêm bản đồ bộ nhớ dựa trên cây cơ số để theo dõi các đấu trường obmalloc đang sử dụng. Sử dụng để thay thế cách triển khai cũ của address_in_range(). Cách tiếp cận cây cơ số giúp dễ dàng tăng kích thước nhóm vượt quá kích thước trang của hệ điều hành. Việc tăng quy mô nhóm và đấu trường cho phép obmalloc xử lý tỷ lệ yêu cầu cao hơn đáng kể từ các đường dẫn cực nhanh của nó.
Nó cũng có ưu điểm là loại bỏ hành vi mất vệ sinh bộ nhớ của address_in_range() trước đó. Địa chỉ cũ_in_range() được đánh dấu bằng các chú thích _Py_NO_SANITIZE_ADDRESS, _Py_NO_SANITIZE_THREAD và _Py_NO_SANITIZE_MEMORY. Những chú thích đó không còn cần thiết nữa.
Để tắt bản đồ cây cơ số, hãy đặt cờ tiền xử lý như sau:
-DWITH_PYMALLOC_RADIX_TREE=0.Đồng tác giả: Tim Peters <tim.peters@gmail.com>
bpo-29988: Chỉ xử lý các trường hợp ngoại lệ không đồng bộ và các yêu cầu loại bỏ GIL khi quay lại từ một cuộc gọi hoặc ở các cạnh sau của vòng lặp. Đảm bảo rằng
__exit__()luôn được gọi cùng với các câu lệnh, ngay cả đối với các ngắt.
Thư viện¶
bpo-43720: Ghi lại các trường hợp ngừng sử dụng stdlib khác nhau trong imp, pkgutil và importlib.util để xóa trong Python 3.12.
bpo-43433:
xmlrpc.client.ServerProxykhông còn bỏ qua truy vấn và đoạn trong URL của máy chủ nữa.bpo-31956: Phương thức
index()củaarray.arrayhiện có các tham số start và stop tùy chọn.bpo-40066: Enum: điều chỉnh
repr()để chỉ hiển thị tên enum và thành viên (không phải giá trị cũng như dấu ngoặc nhọn) vàstr()để chỉ hiển thị tên thành viên. Cập nhật và cải thiện tài liệu cho phù hợp.bpo-42136: Không dùng tất cả các phương thức module_repr() có trong importlib vì việc sử dụng chúng đang bị Python 3.12 loại bỏ.
bpo-35930: Đưa ra một ngoại lệ trong phiên bản "tương lai" sẽ tạo ra các chu kỳ tham chiếu.
bpo-41369: Hoàn tất cập nhật libmpdec được cung cấp lên phiên bản 2.5.1. Bản vá của Stefan Krah.
bpo-43422: Hoàn nguyên _decimal C API đã được thêm vào bpo-41324.
bpo-43577: Khắc phục tình trạng bế tắc khi sử dụng lệnh gọi lại gỡ lỗi
ssl.SSLContextvớissl.SSLContext.sni_callback().bpo-43571: Hiện tại có thể tạo ổ cắm MPTCP bằng IPPROTO_MPTCP
bpo-43542:
image/heicvàimage/heifđã được thêm vàomimetypes.bpo-40645: Mô-đun
hmachiện sử dụng triển khai HMAC của OpenSSL khi đối số digmod là tên băm hoặc hàm băm dựng sẵn.bpo-43510: Triển khai PEP 597: Thêm cảnh báo
EncodingWarning, tùy chọn-X warn_default_encoding, biến môi trườngPYTHONWARNDEFAULTENCODINGvà giá trị đối sốencoding="locale".bpo-43521:
ast.unparsehiện có thể hiển thị NaN và các tập hợp trống.bpo-42914:
pprint.pprint()nhận được một đối số tùy chọn booleanunderscore_numbersmới để phát ra các số nguyên có hàng nghìn cách nhau bằng ký tự gạch dưới để cải thiện khả năng đọc (ví dụ:1_000_000thay vì1000000).bpo-41361: Lệnh gọi
rotate()hiện nhanh hơn một chút do phân tích đối số nhanh hơn.bpo-43423:
subprocess.communicate()không còn tăng IndexError khi có bộ đệm IO stdout hoặc stderr trống trong thời gian chờ trên Windows.bpo-27820: Đã sửa lỗi tồn tại lâu dài của smtplib.SMTP khi thực hiện AUTH LOGIN với init_response_ok=False sẽ không thành công.
Nguyên nhân là do SMTP.auth_login _always_ trả về mật khẩu nếu được cung cấp chuỗi thử thách, do đó không tuân thủ tiêu chuẩn dành cho AUTH LOGIN.
Đồng thời sửa lỗi kiểm tra smtpd.
bpo-43445: Thêm mô-đun cố định vào
sys.stdlib_module_names. Ví dụ: thêm tên"_frozen_importlib"và"_frozen_importlib_external".bpo-43245: Thêm hỗ trợ đối số từ khóa cho
ChainMap.new_child().bpo-29982: Thêm tham số tùy chọn ignore_cleanup_errors vào
tempfile.TemporaryDirectory()và cho phép thửcleanup()nhiều lần. Đóng góp bởi C.A.M. Gerlach.bpo-43428: Bao gồm các thay đổi từ importlib_metadata 3.7:
Cải tiến hiệu suất để khám phá phân phối.
entry_pointschỉ trả về các bản phân phối duy nhất.Giới thiệu đối tượng
EntryPointsmới để chứa một tập hợp các điểm vào với các phương thức thuận tiện để chọn điểm vào theo nhóm hoặc tên.entry_pointsbây giờ trả về đối tượng này nếu các tham số lựa chọn được cung cấp nhưng vẫn tiếp tục trả về một đối tượng dict để tương thích. Người dùng được khuyến khích dựa vào giao diện lựa chọn. Kết quả của đối tượng dict có thể sẽ không được dùng nữa trong tương lai.Đã thêm hàm packages_distributions để trả về ánh xạ các gói tới các bản phân phối cung cấp chúng.
bpo-43332: Cải thiện hiệu quả kết nối mạng của
http.clientkhi sử dụng proxy quaset_tunnel(). Ít cuộc gọi gửi nhỏ hơn được thực hiện trong quá trình thiết lập kết nối.bpo-43420: Cải thiện hiệu suất của số học
fractions.Fractioncho các thành phần lớn. Đóng góp của Sergey B. Kirpicchev.bpo-43356: Cho phép truyền số tín hiệu tới
_thread.interrupt_main().bpo-43399: Khắc phục
ElementTree.extendkhông hoạt động trên các trình vòng lặp khi sử dụng triển khai Pythonbpo-43369: Cải thiện việc xử lý lỗi
sqlite3: Nếusqlite3_column_text()vàsqlite3_column_blob()đặtSQLITE_NOMEM,MemoryErrorhiện đã được nâng lên. Bản vá của Erlend E. Aasland.bpo-43368: Khắc phục hồi quy được giới thiệu trong PR 24562, trong đó một chuỗi byte trống được tìm nạp dưới dạng
Nonethay vìb''trongsqlite3. Bản vá của Mariusz Felisiak.bpo-41282: Đã sửa lỗi mức ngăn xếp của
DeprecationWarningphát ra từimport distutils.bpo-42129:
importlib.resourceshiện vinh danh các gói không gian tên, hợp nhất tài nguyên từ mỗi vị trí trong không gian tên như được giới thiệu trongimportlib_resources3.2 và bao gồm các thay đổi ngẫu nhiên cho đến 5.0.3.bpo-43295:
datetime.datetime.strptime()hiện tăngValueErrorthay vìIndexErrorkhi khớp'z'với công cụ xác định định dạng%z.bpo-43125: Trả về chuỗi trống nếu base64mime.body_encode nhận byte trống
bpo-43084:
curses.window.enclose()bây giờ trả vềTruehoặcFalse(như đã được ghi lại) thay vì1hoặc0.bpo-42994: Thêm các loại MIME cho opus, AAC, 3gpp và 3gpp2
bpo-14678: Thêm phương thức không hợp lệ_caches() vào lớp zipimport.zipimporter để hỗ trợ importlib.invalidate_caches(). Bản vá của Desmond Cheong.
bpo-42782: Thất bại nhanh trong
shutil.move()để tránh tạo thư mục đích khi bị lỗi.bpo-40066:
repr()vàstr()của Enum đã thay đổi:repr()bây giờ là EnumClass.MemberName vàstr()là MemberName. Ngoài ra, stdlib Enum có nội dung sẵn có dưới dạng thuộc tính mô-đun, chẳng hạn nhưRegexFlag.IGNORECASE, córepr()là module.name, ví dụ:re.IGNORECASE.bpo-26053: Đã sửa lỗi trong đó lệnh chạy tương tác
pdblặp lại các đối số từ dòng lệnh shell, ngay cả khi những đối số đó đã bị ghi đè tại dấu nhắc pdb.bpo-24160: Đã sửa lỗi trong đó các điểm ngắt không tồn tại qua nhiều phiên gỡ lỗi ở chế độ tương tác của
pdb.bpo-40701: Khi biến toàn cục
tempfile.tempdirđược đặt thành giá trị loại byte, giờ đây biến này được xử lý nhất quán. Các ngoại lệ trước đây có thể được đưa ra từ một số API tạm thời khi thư mục chưa tồn tại trong trường hợp này. Đồng thời đảm bảo rằng các hàmtempfile.gettempdir()vàtempfile.gettempdirb()always trả vềstrvàbytestương ứng.bpo-39342: Hiển thị
X509_V_FLAG_ALLOW_PROXY_CERTSdưới dạngVERIFY_ALLOW_PROXY_CERTSđể cho phép xác thực chứng chỉ proxy như được giải thích trong https://docs.openssl.org/1.1.1/man7/proxy-certificates/.bpo-31861: Thêm nội dung.aiter và nội dung.anext. Bản vá của Joshua Bronson (@jab), Daniel Pope (@lordmauve) và Justin Wang (@justin39).
Tài liệu¶
bpo-43199: Trả lời "Sao không có goto?" trong Thiết kế và Lịch sử FAQ.
bpo-43407: Làm rõ rằng kết quả từ
time.monotonic(),time.perf_counter(),time.process_time()hoặctime.thread_time()có thể được so sánh với kết quả từ bất kỳ lệnh gọi nào sau đó đến cùng một chức năng - không chỉ lệnh gọi ngay lập tức tiếp theo.bpo-43354: Sửa tài liệu loại cho
Fault.faultCode; loại phải làintthay vìstr.bpo-41933: Cách diễn đạt rõ ràng của s * n trong các thao tác dãy chung
Kiểm tra¶
xây dựng¶
bpo-43179: Giới thiệu và sử dụng chính xác ALIGNOF_X thay cho SIZEOF_X cho mã liên quan đến căn chỉnh trong các quy trình chuỗi được tối ưu hóa. Bản vá của Jessica Clarke.
bpo-43631: Cập nhật macOS, Windows và CI lên OpenSSL 1.1.1k.
bpo-43617: Cải thiện configure.ac: Kiểm tra sự hiện diện của gói lưu trữ tự động và xóa các bản sao macro M4 của chúng tôi.
bpo-43466: Tập lệnh
configurehiện hỗ trợ tùy chọn--with-openssl-rpath.bpo-43372: Sử dụng
_freeze_importlibđể tạo mã cho mô-đun__hello__. Cách tiếp cận này đảm bảo mã phù hợp với phiên bản trình thông dịch. Trước đây, PYTHON_FOR_REGEN được sử dụng để tạo mã, điều này có thể sai. Định dạng so sánh cho các đối tượng mã đã thay đổi với bpo-42246, cam kết 877df851. Cập nhật mã và kích thước mã dự kiến trong ctypes test_frozentable.
cửa sổ¶
IDLE¶
bpo-42225: Tài liệu cho thấy IDLE có thể bị lỗi trên Unix do quy tắc giả mạo IP bị định cấu hình sai hoặc lỗi hiển thị các ký tự có màu phức tạp (không phải mã ascii).
C API¶
bpo-43688: C API giới hạn hiện được hỗ trợ nếu Python được xây dựng ở chế độ gỡ lỗi (nếu macro
Py_DEBUGđược xác định). Trong C API giới hạn, các hàmPy_INCREF()vàPy_DECREF()hiện được triển khai dưới dạng lệnh gọi hàm mờ, thay vì truy cập trực tiếp vào thành viênPyObject.ob_refcnt, nếu Python được xây dựng ở chế độ gỡ lỗi và macroPy_LIMITED_APInhắm mục tiêu Python 3.10 trở lên. Có thể hỗ trợ C API giới hạn ở chế độ gỡ lỗi vì cấu trúcPyObjectgiống nhau ở chế độ phát hành và gỡ lỗi kể từ Python 3.8 (xem bpo-36465).C API giới hạn vẫn không được hỗ trợ trong bản dựng đặc biệt
--with-trace-refs(macroPy_TRACE_REFS).Bản vá của Victor Stinner.
bpo-43244: Xóa tệp tiêu đề
pyarena.hcó chức năng:PyArena_New()PyArena_Free()PyArena_Malloc()PyArena_AddPyObject()
Các hàm này không có giấy tờ, bị loại khỏi C API giới hạn và chỉ được trình biên dịch sử dụng nội bộ. Bản vá của Victor Stinner.
bpo-43244: Xóa các hàm trình biên dịch và trình phân tích cú pháp bằng cách sử dụng loại
struct _mod, vì AST C API công khai đã bị xóa:PyAST_Compile()PyAST_CompileEx()PyAST_CompileObject()PyFuture_FromAST()PyFuture_FromASTObject()PyParser_ASTFromFile()PyParser_ASTFromFileObject()PyParser_ASTFromFilename()PyParser_ASTFromString()PyParser_ASTFromStringObject()
Các chức năng này không có giấy tờ và bị loại khỏi C API giới hạn. Bản vá của Victor Stinner.
bpo-43244: Xóa các tệp tiêu đề
ast.h,asdl.hvàPython-ast.h. Các chức năng này không có giấy tờ và bị loại khỏi C API giới hạn. Hầu hết các tên được xác định bởi các tệp tiêu đề này không có tiền tốPyvà do đó có thể tạo ra xung đột tên. Ví dụ:Python-ast.hđã xác định macroYieldxung đột với tênYieldđược sử dụng bởi tiêu đề<winbase.h>của Windows. Thay vào đó hãy sử dụng mô-đun Pythonast. Bản vá của Victor Stinner.bpo-43541: Khắc phục hồi quy
PyEval_EvalCodeEx(): sửa lỗi tính tham chiếu trên nội dung. Bản vá của Victor Stinner.bpo-43244: Xóa tệp tiêu đề
symtable.hvà các hàm không có giấy tờ:PyST_GetScope()PySymtable_Build()PySymtable_BuildObject()PySymtable_Free()Py_SymtableString()Py_SymtableStringObject()
Chức năng
Py_SymtableString()là một phần của ABI ổn định do nhầm lẫn nhưng nó không thể được sử dụng vì tệp tiêu đềsymtable.hđã bị loại khỏi C API giới hạn.Mô-đun
symtablePython vẫn có sẵn và không thay đổi.Bản vá của Victor Stinner.
bpo-43244: Loại bỏ chức năng
PyAST_Validate(). Không thể xây dựng đối tượng AST (loạimod_ty) bằng C API công khai. Chức năng này đã bị loại khỏi C API (PEP 384) giới hạn. Bản vá của Victor Stinner.
Python 3.10.0 alpha 6¶
Release date: 2021-03-01
Bảo mật¶
bpo-42967: Khắc phục lỗ hổng bảo mật bộ đệm web bằng cách đặt mặc định dấu phân cách đối số truy vấn thành
&và cho phép người dùng chọn dấu phân cách tùy chỉnh.
Cốt lõi và nội dung¶
bpo-43321: Sửa lỗi
SystemErrortăng lên khiPyArg_Parse*()được sử dụng với#nhưng không xác địnhPY_SSIZE_T_CLEAN.bpo-36346: Các hàm
PyArg_Parse*()hiện phát raDeprecationWarningkhi sử dụng định dạnguhoặcZ. Xem PEP 623 để biết chi tiết.bpo-43277: Thêm hàm
PySet_CheckExact()mới vào C-API để kiểm tra xem một đối tượng có phải là phiên bản củasetnhưng không phải là phiên bản của kiểu con hay không. Bản vá của Pablo Galindo.bpo-42990: Hàm tạo
types.FunctionTypehiện kế thừa các nội trang hiện tại nếu từ điển globals không có khóa"__builtins__", thay vì sử dụng{"None": None}làm nội trang: hành vi tương tự như các hàmeval()vàexec(). Việc xác định hàm bằngdef function(...): ...trong Python không bị ảnh hưởng, không thể ghi đè toàn cục bằng cú pháp này: nó cũng kế thừa các nội dung hiện tại. Bản vá của Victor Stinner.bpo-42990: Các hàm có thuộc tính
__builtins__mới được sử dụng để tìm kiếm các ký hiệu dựng sẵn khi một hàm được thực thi, thay vì nhìn vào__globals__['__builtins__']. Bản vá của Mark Shannon và Victor Stinner.bpo-43149: Cải thiện thông báo lỗi trong trình phân tích cú pháp cho các nhóm ngoại lệ không có dấu ngoặc đơn. Bản vá của Pablo Galindo.
bpo-43121: Đã sửa thông báo
SyntaxErrorkhông chính xác vì thiếu dấu phẩy trong chữ. Bản vá của Pablo Galindo.
Thư viện¶
bpo-42819:
readline: Vô hiệu hóa rõ ràng tính năng dán trong ngoặc trong trình thông dịch tương tác, ngay cả khi nó được đặt trong inputrc, được bật theo mặc định (ví dụ: GNU Readline 8.1) hoặc người dùng gọireadline.read_init_file(). Python REPL chưa triển khai hỗ trợ dán trong ngoặc. Ngoài ra, chế độ ngoặc ghi chuỗi thoát"\x1b[?2004h"vào thiết bị xuất chuẩn, điều này gây ra lỗi kiểm tra trong các ứng dụng không hỗ trợ nó. Nó vẫn có thể được kích hoạt rõ ràng bằng cách gọireadline.parse_and_bind("set enable-bracketed-paste on"). Bản vá của Dustin Rodrigues.
Cốt lõi và nội dung¶
bpo-42808: Các lệnh gọi đơn giản tới
type(object)hiện nhanh hơn nhờ quy ước gọivectorcall. Bản vá của Dennis Sweeney.bpo-42217: Làm cho trình biên dịch hợp nhất các đối tượng co_code và co_linetable giống nhau trong một mô-đun giống như đã làm cho co_consts.
bpo-41972: Các hàm tìm kiếm chuỗi con như
str1 in str2vàstr2.find(str1)hiện nay đôi khi sử dụng thuật toán so sánh chuỗi "Hai chiều" để tránh hành vi bậc hai trên các chuỗi dài.bpo-42128: Triển khai PEP 634 (khớp mẫu cấu trúc). Bản vá của Brandt Bucher.
Thư viện¶
bpo-40692: Trong
concurrent.futures.ProcessPoolExecutor, xác thực rằngmultiprocess.synchronize()có sẵn trên một nền tảng nhất định và dựa vào kiểm tra đó trong bộ kiểm traconcurrent.futuresđể chúng tôi có thể chạy thử nghiệm không liên quan đếnProcessPoolExecutortrên các nền tảng đó.
Cốt lõi và nội dung¶
bpo-38302: Nếu
object.__ipow__()trả vềNotImplemented, toán tử sẽ quay trở lạiobject.__pow__()vàobject.__rpow__()một cách chính xác như mong đợi.
Thư viện¶
bpo-43316: Ứng dụng dòng lệnh
python -m gziphiện không thành công khi phát hiện tiện ích mở rộng không được hỗ trợ. Nó thoát với mã thoát khác 0 và in thông báo lỗi tới stderr.bpo-43317: Đặt kích thước chunk cho chức năng chính của mô-đun
gzipthành io.DEFAULT_BUFFER_SIZE. Tốc độ này nhanh hơn một chút so với hằng số 1024 byte đã được sử dụng trước đó.bpo-43146: Xử lý Không có trong các phiên bản một đối số của
print_exception()vàformat_exception().bpo-43260: Sửa lỗi TextIOWrapper không thể xóa bộ đệm bên trong mãi mãi sau khi văn bản rất lớn được viết.
bpo-43258: Ngăn chặn việc phân bổ ngữ cảnh hàm tổng hợp
sqlite3không cần thiết khi không có hàng nào khớp với truy vấn tổng hợp. Bản vá của Erlend E. Aasland.bpo-43251: Cải thiện việc xử lý lỗi
sqlite3: lỗisqlite3_column_name()hiện dẫn đếnMemoryError. Bản vá của Erlend E. Aasland.bpo-40956: Sửa lỗi segfault trong
sqlite3.Connection.backup()nếu không có đối số nào được cung cấp. Hồi quy được giới thiệu bởi PR 23838. Bản vá của Erlend E. Aasland.bpo-43172: Mô-đun readline hiện đã vượt qua các bài kiểm tra khi được xây dựng trực tiếp dựa trên libedit. Sự khác biệt không thể hòa giải hiện tại của API vẫn tồn tại trong hành vi của
readline.get_begidx()vàreadline.get_endidx()dựa trên việc sử dụng libreadline và libedit.bpo-43163: Sửa lỗi trong
codeopkhiến nó không yêu cầu thêm dữ liệu đầu vào khi đoạn mã nhiều dòng có dấu ngoặc đơn không được đóng. Bản vá của Pablo Galindobpo-43162: không dùng khả năng không được hỗ trợ để truy cập các thành viên enum như thuộc tính của các thành viên enum khác
bpo-43146: Khắc phục hồi quy gần đây trong Không xử lý đối số trong các hàm mô-đun
traceback.bpo-43102: Phương thức được đặt tên __new__ có __buildins__ được đặt thành Không thay vì một từ điển thực tế. Điều này tạo ra vấn đề cho các công cụ xem xét nội tâm.
bpo-43106: Đã thêm
O_EVTONLY,O_FSYNC,O_SYMLINKvàO_NOFOLLOW_ANYcho macOS. Bản vá của Donghee Na.bpo-42960: Thêm hằng số
resource.RLIMIT_KQUEUEStừ FreeBSD vào mô-đunresource.bpo-42151: Làm cho việc triển khai
xml.etree.ElementTreethuần Python hoạt động giống như triển khai C (_elementree) về các giá trị thuộc tính mặc định (bằng cách không đặtspecified_attributes=1).bpo-29753: Trong ctypes, các trường bit đóng gói hiện được tính toán chính xác và mục đầu tiên của trường bit đóng gói hiện được thu nhỏ chính xác.
Tài liệu¶
Kiểm tra¶
bpo-43288: Sửa test_importlib để bỏ qua kiểm tra tệp Unicode một cách chính xác nếu hệ thống tệp không hỗ trợ chúng.
xây dựng¶
bpo-43174: Bản dựng Windows hiện sử dụng tùy chọn trình biên dịch
/utf-8.bpo-43103: Thêm tùy chọn cấu hình
--without-static-libpythonmới để không xây dựng thư viện tĩnhlibpythonMAJOR.MINOR.avà không cài đặt tệp đối tượngpython.o.bpo-13501: Tập lệnh cấu hình hiện có thể sử dụng libedit thay vì readline với tùy chọn dòng lệnh
--with-readline=editline.bpo-42603: Tạo tập lệnh cấu hình bằng pkg-config để phát hiện vị trí của các tiêu đề và thư viện Tcl/Tk, được sử dụng để xây dựng tkinter.
Trên macOS, cấu hình Tcl/Tk do pkg-config cung cấp sẽ được ưu tiên hơn các khung Tcl/Tk được cài đặt trong
/{System/,}Library/Frameworks. Nếu cả hai đều tồn tại và cái sau được ưu tiên thì các tùy chọn cấu hình--with-tcltk-*thích hợp cần được đặt rõ ràng.bpo-39448: Thêm mục tiêu makefile "regen-frozen" để tạo lại mã cho mô-đun
__hello__đã được đông lạnh.
cửa sổ¶
bpo-43155:
PyCMethod_New()hiện có trongpython3.lib.
macOS¶
bpo-41837: Cập nhật bản dựng trình cài đặt macOS để sử dụng OpenSSL 1.1.1j.
IDLE¶
bpo-43283: Ghi lại lý do tại sao việc in bằng Shell của IDLE thường chậm hơn so với việc in ra thiết bị đầu cuối hệ thống và có thể thực hiện nhanh hơn bằng cách định dạng trước một chuỗi trước khi in.
C API¶
bpo-43278: Luôn đặt thông tin về trình biên dịch và hệ thống trên dòng đầu tiên của thông báo chào mừng REPL.
bpo-43270: Xóa macro
_PyErr_OCCURRED()riêng tư: thay vào đó hãy sử dụng chức năngPyErr_Occurred()công khai.bpo-35134: Di chuyển odictobject.h, Parser_interface.h, Pickbufobject.h, pydebug.h và pyfpe.h vào thư mục cpython/. Chúng không được đưa vào trực tiếp vì chúng đã được Python.h: Include Files đưa vào.
bpo-35134: Di chuyển pyarena.h, pyctype.h và pytime.h vào thư mục cpython/. Chúng không được đưa vào trực tiếp vì chúng đã được Python.h: Include Files đưa vào.
bpo-40170:
PyExceptionClass_Name()hiện luôn được khai báo dưới dạng hàm để ẩn chi tiết triển khai. Macro truy cập trực tiếp vàoPyTypeObject.tp_name. Bản vá của Erlend E. Aasland.bpo-43239: Hàm
PyCFunction_New()hiện được xuất trong ABI khi được biên dịch bằng-fvisibility=hidden.bpo-40170:
PyIter_Check()hiện luôn được khai báo dưới dạng hàm để ẩn chi tiết triển khai. Macro truy cập trực tiếp vàoPyTypeObject.tp_iternext. Bản vá của Erlend E. Aasland.bpo-40170: Chuyển đổi macro
PyDescr_IsData()thành một hàm để ẩn chi tiết triển khai: Macro truy cập trực tiếpPyTypeObject.tp_descr_set. Bản vá của Erlend E. Aasland.bpo-43181: Chuyển đổi macro
PyObject_TypeCheck()thành hàm nội tuyến tĩnh. Bản vá của Erlend E. Aasland.
Python 3.10.0 alpha 5¶
Release date: 2021-02-02
Bảo mật¶
bpo-42938: Tránh bộ đệm tĩnh khi tính toán giá trị repr của các giá trị
ctypes.c_doublevàctypes.c_longdouble.
Cốt lõi và nội dung¶
bpo-42990: Tái cấu trúc nhóm chức năng
PyEval_.Một chức năng mới
_PyEval_Vectorđược thêm vào để đơn giản hóa các lệnh gọi tới Python từ C._PyEval_EvalCodeWithNamebị xóaPyEval_EvalCodeExđược giữ lại như một phần của API nhưng không được sử dụng nội bộ
bpo-38631: Thay thế các lệnh gọi
Py_FatalError()trong trình biên dịch bằng các ngoại lệSystemErrorthông thường. Bản vá của Victor Stinner.bpo-42997: Cải thiện thông báo lỗi thiếu dấu ://trước các khối. Bản vá của Pablo Galindo.
bpo-43017: Cải thiện thông báo lỗi trong trình phân tích cú pháp khi sử dụng các bộ dữ liệu không có dấu ngoặc đơn trong phần hiểu. Bản vá của Pablo Galindo.
bpo-42986: Khắc phục sự cố trình phân tích cú pháp khi báo cáo lỗi cú pháp trong chuỗi f với dòng mới. Bản vá của Pablo Galindo.
bpo-40176: Lỗi cú pháp đối với các chuỗi ký tự không kết thúc giờ đây trỏ đến phần đầu của chuỗi thay vì báo cáo EOF/EOL.
bpo-42927: Bộ đệm nội tuyến cho
LOAD_ATTRhiện cũng tối ưu hóa quyền truy cập vào các thuộc tính được xác định bởi__slots__. Điều này làm cho việc đọc thuộc tính đó nhanh hơn tới 30%.bpo-42864: Cải thiện thông báo lỗi trong trình phân tích cú pháp khi không đóng dấu ngoặc đơn. Bản vá của Pablo Galindo.
bpo-42924: Sửa lỗi lặp lại
bytearraysao chép không chính xác dữ liệu từ đầu bộ đệm, ngay cả khi dữ liệu được bù trong bộ đệm (ví dụ: sau khi gán lại một lát cắt ở đầubytearraythành chuỗi byte ngắn hơn).bpo-42882: Sửa hàm
_PyUnicode_FromId()(_Py_IDENTIFIER(var) API) khiPy_Initialize()/Py_Finalize()được gọi nhiều lần: giữ nguyên giá trị_PyRuntime.unicode_ids.next_index.bpo-42827: Khắc phục sự cố khi xử lý dòng lỗi của
SyntaxErrortrong một số biểu thức nhiều dòng.bpo-42823: frame.f_lineno vẫn đúng ngay cả khi frame.f_trace được đặt thành True
Thư viện¶
bpo-37324: Xóa các bí danh không được dùng nữa thành Bộ sưu tập Các lớp cơ sở trừu tượng khỏi mô-đun
collections.
Cốt lõi và nội dung¶
Thư viện¶
bpo-43108: Đã sửa lỗi rò rỉ tham chiếu trong mô-đun
curses. Bản vá của Pablo Galindobpo-43077: Cập nhật pip đi kèm lên 21.0.1 và setuptools lên 52.0.0.
bpo-41282: Loại bỏ
distutilstrong tài liệu và thêm cảnh báo khi nhập.bpo-43014: Cải thiện hiệu suất của
tokenizethêm 20-30%. Bản vá của Anthony Sottile.bpo-42323: Sửa
math.nextafter()cho NaN trên AIX.bpo-42955: Thêm
sys.stdlib_module_names, chứa danh sách tên mô-đun thư viện tiêu chuẩn. Bản vá của Victor Stinner.bpo-42944: Sửa
random.Random.samplekhi đối sốcountskhông phải làNone.bpo-42934: Sử dụng thông số
compactmới củaTracebackExceptiontrongTestResultđể giảm thời gian và bộ nhớ tiêu thụ khi định dạng truy nguyên.bpo-42931: Thêm
randbytes()vàorandom.__all__.bpo-38250: [Enum] Các cờ bao gồm một bit hiện được coi là hợp lệ và sẽ là các cờ duy nhất được trả về từ danh sách và lặp lại trên một lớp Cờ hoặc thành viên Cờ. Cờ nhiều bit được coi là bí danh; chúng sẽ được trả về từ việc tra cứu và các hoạt động dẫn đến giá trị của chúng. Việc lặp lại cho cả thành viên Cờ và Cờ theo thứ tự định nghĩa.
bpo-42877: Đã thêm tham số
compactvào hàm tạo củatraceback.TracebackExceptionđể giảm thời gian và bộ nhớ cho các trường hợp sử dụng chỉ cần gọiTracebackException.format()vàTracebackException.format_exception_only().bpo-42923: Hàm
Py_FatalError()và mô-đunfaulthandlerhiện kết xuất danh sách các mô-đun mở rộng do lỗi nghiêm trọng.bpo-42848: Đã xóa đệ quy khỏi
TracebackExceptionđể cho phép nó xử lý các chuỗi ngoại lệ dài.bpo-42901: [Enum] chuyển việc tạo thành viên từ
EnumMeta.__new__sang_proto_member.__set_name__, cho phép tạo và hiển thị các thành viên trong__init_subclass__.bpo-42780: Sửa os.set_inheritable() cho bộ mô tả tệp O_PATH trên Linux.
bpo-42866: Khắc phục rò rỉ tham chiếu trong chức năng
getcodec()của codec CJK. Bản vá của Victor Stinner.bpo-42846: Chuyển đổi 6 mô-đun mở rộng codec CJK (_codecs_cn, _codecs_hk, _codecs_iso2022, _codecs_jp, _codecs_kr và _codecs_tw) sang khởi tạo nhiều pha API (PEP 489). Bản vá của Victor Stinner.
bpo-42851: xóa hỗ trợ __init_subclass__ cho các thành viên Enum
bpo-42834: Tạo bộ nhớ đệm bên trong của mô-đun
_jsontương thích với trình thông dịch phụ.bpo-41748: Sửa quy tắc phân tích cú pháp HTMLParser cho các thuộc tính phần tử chứa dấu phẩy và dấu cách. Bản vá của Karl Dubost.
bpo-40810: Yêu cầu SQLite 3.7.15 hoặc mới hơn. Bản vá của Erlend E. Aasland.
bpo-1635741: Chuyển đổi mô-đun mở rộng _multibytecodec (codec CJK) sang khởi tạo nhiều pha (PEP 489). Bản vá của Erlend E. Aasland.
bpo-42802: Lệnh distutils
bdist_wininstkhông được dùng nữa trong Python 3.8 đã bị xóa. Lệnh distutilsbdist_wheelhiện được khuyến nghị để phân phối các gói nhị phân trên Windows.bpo-24464: Hàm tích hợp không có giấy tờ
sqlite3.enable_shared_cachehiện không được dùng nữa, được lên lịch xóa trong Python 3.12. Việc sử dụng nó bị tài liệu SQLite3 không khuyến khích. Bản vá của Erlend E. Aasland.bpo-42384: Tạo pdb điền sys.path[0] giống hệt như thực thi python thông thường.
bpo-42383: Khắc phục pdb: pdb trước đây sẽ không khởi động lại mục tiêu gỡ lỗi nếu nó được chỉ định bằng đường dẫn tương đối và thư mục hiện tại đã thay đổi.
bpo-42005: Sửa CLI của
cProfilevàprofileđể bắtBrokenPipeError.bpo-41604: Không giảm số lượng tham chiếu của user_ptr trước đó khi set_panel_userptr không thành công.
bpo-41149: Cho phép thực thi các lệnh gọi có giá trị boolean là
Falsekhi được chuyển tớiThreading.threadlàm mục tiêu. Bản vá được đóng góp bởi Barney Stratford.bpo-38307: Thêm thuộc tính 'end_lineno' vào các đối tượng Lớp và Hàm xuất hiện trong cây được các hàm pyclbr trả về. Thuộc tính này và thuộc tính 'lineno' hiện có xác định phạm vi của các câu lệnh lớp và def. Bản vá của Aviral Srivastava.
bpo-39273: Các hằng số
BUTTON5_*hiện được hiển thị trong mô-đuncursesnếu có.bpo-33289: Gọi đúng
tkinter.colorchooserđể trả về bộ ba số nguyên RGB thay vì số float. Bản vá của Cheryl Sabella.
Tài liệu¶
Kiểm tra¶
xây dựng¶
bpo-43031: Chuyển tùy chọn
--timeout=$(TESTTIMEOUT)cho lệnh./python -m test --pgotác vụ hồ sơ mặc định.bpo-36143:
make regen-allhiện cũng chạyregen-keyword. Bản vá của Victor Stinner.bpo-42874: Đã xóa cờ grep -q và -E trong phần xác thực tzpath của tập lệnh định cấu hình để phù hợp hơn với người dùng của một số nền tảng (cụ thể là Solaris 10).
bpo-31904: Thêm đường dẫn tìm kiếm thư viện bằng wr-cc trong add_cross_compiling_paths() cho VxWorks.
bpo-42856: Thêm tùy chọn
--with-wheel-pkg-dir=PATHvào tập lệnh./configure. Nếu được chỉ định, mô-đunensurepipsẽ tìm các gói bánh xesetuptoolsvàpiptrong thư mục này: nếu cả hai đều có mặt, các gói bánh xe này sẽ được sử dụng thay vì các gói bánh xe đi kèm Ensurepip.Một số chính sách đóng gói phân phối Linux khuyến nghị không nên đóng gói phụ thuộc. Ví dụ: Fedora cài đặt các gói bánh xe trong thư mục
/usr/share/python-wheels/và không cài đặt góiensurepip._bundled.
cửa sổ¶
macOS¶
bpo-42504: Đảm bảo rằng giá trị của sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') luôn là một chuỗi, ngay cả khi giá trị có thể được phân tích cú pháp dưới dạng số nguyên.
IDLE¶
bpo-43008: Tạo IDLE gọi
sys.excepthook()ở chế độ 2 quy trình bình thường. Bản vá của Ken Hilton.bpo-33065: Khắc phục sự cố gỡ lỗi lớp người dùng bằng phương thức __repr__.
bpo-23544: Tắt Debug=>Stack Viewer khi mã người dùng đang chạy hoặc Debugger đang hoạt động, để tránh bị treo hoặc gặp sự cố. Bản vá của Zackery Spytz.
bpo-32631: Hoàn thành mô-đun mở rộng ví dụ zzdummy: làm cho các mục menu hoạt động; thêm các chuỗi tài liệu và bài kiểm tra với phạm vi bao phủ 100%.
C API¶
bpo-42979: Khi Python được xây dựng ở chế độ gỡ lỗi (với xác nhận C), việc gọi một loại vị trí như
sq_length(__len__()trong Python) hiện không thành công với lỗi nghiêm trọng nếu vị trí đó thành công với một bộ ngoại lệ hoặc không thành công mà không có ngoại lệ nào được đặt. Thông báo lỗi chứa vị trí, tên loại và ngoại lệ hiện tại (nếu ngoại lệ được đặt). Bản vá của Victor Stinner.bpo-43030: Đã sửa lỗi cảnh báo trình biên dịch trong
Py_UNICODE_ISSPACE()trên các nền tảng cówchar_tđã ký.
Python 3.10.0 alpha 4¶
Release date: 2021-01-04
Cốt lõi và nội dung¶
bpo-42814: Khắc phục hành vi không xác định trong
Objects/genericaliasobject.c.bpo-42806: Sửa lỗi bù cột cho các nút
astchuỗi f được bao quanh bởi dấu ngoặc đơn và cho các nút sinh ra nhiều dòng. Bản vá của Pablo Galindo.bpo-40631: Khắc phục hồi quy trong đó một biểu thức được gắn dấu sao trong ngoặc đơn là mục tiêu gán hợp lệ.
bpo-27794: Cải thiện thông báo lỗi khi ghi/xóa không thành công các đối tượng thuộc tính. Khi có thể, tên thuộc tính sẽ được hiển thị. Bản vá được cung cấp bởi Yurii Karabas.
bpo-42745: Tạo bộ đệm tra cứu thuộc tính loại cho mỗi trình thông dịch. Bản vá của Victor Stinner.
bpo-42246: Nhảy tới bước nhảy không bị loại bỏ khi phá vỡ PEP 626.
bpo-42246: Đảm bảo rằng các thuộc tính
f_lastivàf_linenocủa khung được đặt chính xác khi một ngoại lệ được nâng lên hoặc được nâng lên lại. Cần thiết cho PEP 626.bpo-32381: Cookie mã hóa (ví dụ:
# coding: latin1) hiện bị bỏ qua trong lệnh được chuyển đến tùy chọn dòng lệnh-c. Bản vá của Victor Stinner.bpo-30858: Cải thiện vị trí lỗi trong các biểu thức chứa bài tập. Bản vá của Pablo Galindo và Lysandros Nikolaou.
bpo-42615: Loại bỏ các lệnh nhảy trở nên dư thừa bằng cách xóa các khối mã byte không thể truy cập được
Thư viện¶
Cốt lõi và nội dung¶
bpo-32381: Sửa tên mã hóa khi chạy tệp
.pyctrên Windows:PyRun_SimpleFileExFlags()hiện sử dụng mã hóa chính xác để giải mã tên tệp.
Thư viện¶
bpo-42195:
__args__của các generic được tham số hóa chotyping.Callablevàcollections.abc.Callablehiện đã nhất quán.__args__chocollections.abc.Callablehiện đã được làm phẳng trong khityping.Callablekhông thay đổi. Để cho phép thay đổi này,types.GenericAliashiện có thể được phân lớp con và__class_getitem__củacollections.abc.Callablegiờ đây sẽ trả về một lớp con củatypes.GenericAlias. Các bài kiểm tra đánh máy cũng được cập nhật để không phân lớp những thứ nhưCallable[..., T]vì đó không phải là lớp cơ sở hợp lệ. Cuối cùng, cả haiCallablekhông còn xác thựcargtypescủa chúng nữa, trongCallable[[argtypes], resulttype]để chuẩn bị cho PEP 612. Bản vá của Ken Jin.bpo-40137: Chuyển đổi mô-đun functools để sử dụng
PyType_FromModuleAndSpec().bpo-40077: Chuyển đổi
arrayđể sử dụng các loại heap và thiết lập trạng thái mô-đun cho các loại này.bpo-42008: Sửa lỗi gieo hạt _random.Random().
bpo-1635741: Chuyển mô-đun mở rộng
pyexpatsang khởi tạo nhiều pha (PEP 489).
Cốt lõi và nội dung¶
bpo-40521: Làm cho từ điển Unicode của các chuỗi nội bộ tương thích với các trình thông dịch phụ. Bản vá của Victor Stinner.
bpo-39465: Làm cho chức năng
_PyUnicode_FromId()tương thích với các trình thông dịch phụ. Mỗi trình thông dịch hiện có một mảng đối tượng định danh (các chuỗi nội bộ được giải mã từ UTF-8). Bản vá của Victor Stinner.
Thư viện¶
bpo-42257: Xử lý chuỗi trống trong biến thực thi trong platform.libc_ver()
bpo-42772: randrange() hiện tăng TypeError khi bước được chỉ định mà không có đối số dừng. Trước đây, nó âm thầm bỏ qua đối số bước.
bpo-42759: Đã sửa lỗi so sánh đẳng thức giữa
tkinter.Variablevàtkinter.font.Font. Các đối tượng thuộc về các trình thông dịch Tcl khác nhau giờ đây luôn khác nhau, ngay cả khi chúng có cùng tên.bpo-42756: Định cấu hình ổ cắm tên miền Unix LMTP để sử dụng thời gian chờ mặc định chung của ổ cắm khi thời gian chờ không được cung cấp rõ ràng.
bpo-23328: Cho phép / ký tự trong trường tên người dùng, mật khẩu trên envars _PROXY.
bpo-42740:
typing.get_args()vàtyping.get_origin()hiện hỗ trợ các loại kết hợp PEP 604 và bổ sung PEP 612 choCallable.bpo-42655:
subprocessextra_groups hiện đã được chuyển chính xác vào lệnh gọi hệ thống setgroups().bpo-42727:
EnumMeta.__prepare__hiện chấp nhận**kwdsđể hỗ trợ__init_subclass__đúng cáchbpo-38308: Thêm weights tùy chọn vào statistics.harmonic_mean().
bpo-42721: Khi các hộp thoại truy vấn đơn giản (
tkinter.simpledialog), hộp thông báo (tkinter.messagebox) hoặc hộp thoại chọn màu (tkinter.colorchooser) được tạo mà không có đối số master và parent, đồng thời cửa sổ gốc mặc định chưa được tạo vàNoDefaultRoot()chưa được gọi, một cửa sổ gốc ẩn tạm thời mới sẽ được tạo tự động. Nó sẽ không được đặt làm cửa sổ gốc mặc định và sẽ bị hủy ngay sau khi đóng cửa sổ hộp thoại. Nó sẽ giúp sử dụng các cửa sổ hộp thoại đơn giản này trong các chương trình không cần GUI khác.bpo-25246:
collections.deque.remove()được tối ưu hóa.bpo-35728: Đã thêm tham số gốc vào
tkinter.font.nametofont().bpo-15303:
tkinterhiện hỗ trợ các widget có giá trị boolean Sai.bpo-42681: Đã sửa lỗi kiểm tra phạm vi màu và số cặp trong
curses.bpo-42685: Cải thiện việc đặt các cửa sổ truy vấn đơn giản trong Tkinter (chẳng hạn như
tkinter.simpledialog.askinteger()). Bây giờ chúng được căn giữa ở giữa cửa sổ chính nếu nó được chỉ định và hiển thị, nếu không thì ở giữa màn hình.bpo-9694: Trợ giúp Argparse không còn sử dụng cụm từ khó hiểu, "đối số tùy chọn". Nó sử dụng "tùy chọn" thay thế.
bpo-1635741: Chuyển mô-đun mở rộng
_threadsang khởi tạo nhiều pha API (PEP 489) và chuyển đổi kiểu tĩnh của nó thành kiểu heap.bpo-37961: Khắc phục sự cố trong
tracemalloc.Traceback.__repr__()(hồi quy trong Python 3.9).bpo-42630: Các hàm và hàm tạo
tkintercần cửa sổ gốc mặc định sẽ nâng cấp ngay bây giờRuntimeErrorvới thông báo mô tả thay vì che khuấtAttributeErrorhoặcNameErrornếu nó chưa được tạo hoặc không thể được tạo tự động.bpo-42639:
atexit._run_exitfuncs()hiện ghi nhật ký ngoại lệ gọi lại bằngsys.unraisablehook, thay vì ghi chúng trực tiếp vàosys.stderrvà đưa ra ngoại lệ cuối cùng.bpo-42644:
logging.disablebây giờ sẽ xác thực các loại và giá trị của tham số của nó. Giờ đây, nó cũng chấp nhận các chuỗi biểu thị các cấp độ (cũng nhưlogging.setLevel) thay vì chỉ các giá trị số.bpo-42639: Khi thoát Python, nếu lệnh gọi lại được đăng ký với
atexit.register()không thành công thì ngoại lệ của nó hiện đã được ghi lại. Trước đây, chỉ có một số ngoại lệ được ghi lại và ngoại lệ cuối cùng luôn bị bỏ qua một cách âm thầm.bpo-36541: Đã sửa lỗi lib2to3.pgen2 để có thể phân tích cú pháp đối số chỉ vị trí PEP-570.
bpo-42382: Trong
importlib.metadata: - Đối tượngEntryPointhiện hiển thị đối tượng.disttham chiếuDistributionkhi được xây dựng từDistribution. - Thêm hỗ trợ khám phá gói theo quy tắc chuẩn hóa gói. - Đối tượng được trả về bởimetadata()hiện có giao thức được xác định chính thức gọi làPackageMetadatavới sự hỗ trợ được khai báo cho phương thức.get_all(). - Đã đồng bộ hóa với importlib_metadata 3.3.bpo-41877: Một tính năng kiểm tra được thêm vào để tránh lỗi chính tả của autospect, auto_spec và set_spec được chuyển làm đối số cho patch, patch.object và create_autospec.
bpo-39717: [tarfile] cập nhật nâng cao ngoại lệ lồng nhau để sử dụng
from Nonehoặcfrom ebpo-41877: AttributionError đối với các lỗi chính tả bị nghi ngờ của các xác nhận trên mô hình hiện đang chỉ ra rằng nguyên nhân là do các xác nhận sai chính tả và cũng phải làm gì nếu lỗi chính tả thực sự là một tên thuộc tính dự kiến. Tài liệu unittest.mock cũng được cập nhật để phản ánh tập hợp lỗi chính tả hiện tại.
bpo-41559: Đã triển khai PEP 612: đã thêm
ParamSpecvàConcatenatevàotyping. Bản vá của Ken Jin.bpo-42385: StrEnum: sửa _generate_next_value_ để trả về một str
bpo-31904: Xác định THREAD_STACK_SIZE cho VxWorks.
bpo-34750: [Enum]
_EnumDict.update()hiện được hỗ trợ.bpo-42517: Enum: tên riêng không trở thành thành viên/không tạo ra lỗi -- chúng vẫn là thuộc tính bình thường
bpo-42678:
Enum: gọi__init_subclass__sau khi thêm thành viênbpo-28964:
ast.literal_eval()thêm thông tin số dòng (nếu có) trong thông báo lỗi cho các nút không đúng định dạng.bpo-42470:
random.sample()không còn cảnh báo về một chuỗi cũng là một tập hợp.bpo-31904:
posixpath.expanduser()trả về path đầu vào không thay đổi nếu thư mục chính của người dùng là Không có trên VxWorks.bpo-42388: Khắc phục hành vi subprocess.check_output(..., input=None) khi text=True nhất quán với hành vi của tài liệu và Universal_newlines=True.
bpo-34463: Đã sửa lỗi khác biệt giữa
tracebackvà trình thông dịch trong định dạng SyntaxError khi chưa đặt lineno (tracebackđã được thay đổi để khớp với trình thông dịch).bpo-42393: Tăng
OverflowErrorthay vì cắt bớt im lặng trongsocket.ntohs()vàsocket.htons(). Tính năng cắt bớt im lặng không được dùng nữa trong Python 3.7. Bản vá của Erlend E. Aaslandbpo-42222: Xử lý đối số
random.randrange()hài hòa để khớp vớirange().Kiểm tra và chuyển đổi số nguyên trong
randrange()hiện sử dụngoperator.index().Các đối số không nguyên cho
randrange()không được dùng nữa.Zz000zz không còn được dùng nữa để thay thế cho
TypeError.Bây giờ nó chạy nhanh hơn một chút so với trước đây.
(Được đóng góp bởi Raymond Hettinger và Serhiy Storchaka.)
bpo-42163: Khôi phục khả năng tương thích cho
uname_resultxung quanh deepcopy và _replace.bpo-42090:
zipfile.Path.joinpathhiện chấp nhận các đối số tùy ý, giống nhưpathlib.Path.joinpath.bpo-1635741: Chuyển mô-đun _csv sang khởi tạo nhiều pha API (PEP 489).
bpo-42059: các loại
typing.TypedDictđược tạo bằng cú pháp kiểu gọi thay thế hiện tôn trọng chính xác đối số từ khóatotalkhi đặt thuộc tính lớp__required_keys__và__optional_keys__của chúng.bpo-41960: Thêm tham số
globalnsvàlocalnsvàoinspect.signature()vàinspect.Signature.from_callable().bpo-41907: khắc phục hành vi
format()choIntFlagbpo-41891: Đảm bảo asyncio.wait_for chờ hoàn thành nhiệm vụ
bpo-24792: Đã sửa lỗi trong đó
zipimporterđôi khi báo cáo nguyên nhân không chính xác gây ra lỗi nhập.bpo-31904: Sửa các mô-đun trang web và sysconfig cho VxWorks RTOS không có thư mục chính.
bpo-41462: Thêm hỗ trợ
os.set_blocking()cho VxWorks RTOS.bpo-40219: Hạ thấp tiện ích giả
tkinter.ttk.LabeledScaleđể tránh ẩn một phần nhãn nội dung.bpo-37193: Đã sửa lỗi rò rỉ bộ nhớ trong
socketserver.ThreadingMixInđược giới thiệu trong Python 3.7.bpo-39068: Khắc phục tình trạng chạy đua khởi tạo trong
a85encode()vàb85encode()trongbase64. Bản vá của Brandon Stansbury.
Tài liệu¶
bpo-17140: Thêm tài liệu cho lớp
multiprocessing.pool.ThreadPool.bpo-34398: Nổi bật với danh sách từ bảng thuật ngữ trong kết quả tìm kiếm tài liệu. Bản vá của Ammar Askar.
Kiểm tra¶
bpo-42794: Cập nhật test_nntplib để sử dụng tên nhóm chính thức của news.aioe.org để thử nghiệm. Bản vá của Donghee Na.
bpo-31904: Bỏ qua một số bài kiểm tra asyncio trên VxWorks.
bpo-42641: Nâng cao
test_select.test_select(): hiện mất 500 mili giây thay vì 10 giây. Sử dụng Python thay vì shell để làm cho bài kiểm tra dễ mang theo hơn.bpo-31904: Bỏ qua một số bài kiểm tra trong _test_all_chown_common() trên VxWorks.
bpo-42199: Sửa lỗi trình trợ giúp mã byte khẳng địnhNotInBytecode.
bpo-41443: Thêm tính năng kiểm tra thuộc tính trong test_posix.py
bpo-31904: Vô hiệu hóa os.popen và các bài kiểm tra bị ảnh hưởng trên VxWorks
bpo-41439: Chuyển test_ssl và test_uuid sang VxWorks RTOS.
xây dựng¶
bpo-42692: Sửa lỗi kiểm tra __buildin_available trên các trình biên dịch cũ hơn. Bản vá của Joshua Root.
bpo-27640: Đã thêm tùy chọn
--disable-test-modulesvào tập lệnhconfigure: không xây dựng cũng như cài đặt các mô-đun thử nghiệm. Bản vá của Xavier de Gaye, Thomas Petazzoni và Peixing Xin.bpo-42604: Hiện tại tất cả nền tảng đều sử dụng giá trị cho biến xây dựng "EXT_SUFFIX" bắt nguồn từ SOABI (ví dụ: trong freeBSD, "EXT_SUFFIX" hiện là ".cpython-310d.so" thay vì ".so"). Trước đây chỉ có Linux, Mac và VxWorks sử dụng giá trị cho "EXT_SUFFIX" bao gồm "SOABI".
bpo-42598: Sửa các khai báo hàm ẩn trong cấu hình có thể dẫn đến việc kiểm tra cấu hình không chính xác. Bản vá được đóng góp bởi Joshua Root.
bpo-31904: Kích hoạt libpython3.so cho VxWorks.
bpo-29076: Thêm hỗ trợ vỏ cá cho trình cài đặt macOS.
macOS¶
Công cụ/Bản trình diễn¶
C API¶
bpo-42591: Xuất hàm
Py_FrozenMain(): sửa lỗi hồi quy Python 3.9.0. Python 3.9 sử dụng-fvisibility=hiddenvà hàm không được xuất rõ ràng nên không được xuất.bpo-32381: Xóa chức năng
_Py_fopen()riêng tư không còn cần thiết nữa. Thay vào đó hãy sử dụng_Py_wfopen()hoặc_Py_fopen_obj(). Bản vá của Victor Stinner.bpo-1635741: Chuyển mô-đun mở rộng
resourcesang trạng thái mô-đunbpo-42111: Cập nhật mô-đun
xxlimitedđể trở thành ví dụ tốt hơn về cách sử dụng C API bị giới hạn.bpo-40052: Khắc phục cảnh báo/lỗi xây dựng căn chỉnh trong hàm
PyVectorcall_Function(). Bản vá của Andreas Schneider, Antoine Pitrou và Petr Viktorin.
Python 3.10.0 alpha 3¶
Release date: 2020-12-07
Bảo mật¶
bpo-40791: Thêm
volatilevào biến tích lũy tronghmac.compare_digest, làm cho việc tối ưu hóa lỗi liên tục theo thời gian ít xảy ra hơn.
Cốt lõi và nội dung¶
bpo-42576:
types.GenericAliasbây giờ sẽ đưa raTypeErrorkhi cố gắng khởi tạo bằng đối số từ khóa. Trước đây, điều này có thể khiến trình thông dịch gặp sự cố nếu trình thông dịch được biên dịch bằng các ký hiệu gỡ lỗi. Điều này không ảnh hưởng đến các trình thông dịch được biên soạn để phát hành. Bản vá của Ken Jin.bpo-42536: Một số loại thư viện tiêu chuẩn và tích hợp hiện đảm bảo rằng các bộ kết quả nội bộ của chúng luôn được garbage collector theo dõi:
Trước đây, chúng có thể đã không bị theo dõi bởi quá trình thu gom rác trước đó. Bản vá của Brandt Bucher.
bpo-42500: Cải thiện việc xử lý các trường hợp ngoại lệ gần giới hạn đệ quy. Chuyển đổi một số lỗi nghiêm trọng trong RecursionErrors.
bpo-42246: PEP 626: Sau khi trả về, thuộc tính f_lineno của khung luôn là dòng cuối cùng được thực thi.
bpo-42435: Tăng tốc độ so sánh các đối tượng byte với các đối tượng không phải byte khi tùy chọn
-bđược chỉ định. Tăng tốc độ so sánh các đối tượng bytarray với đối tượng không có bộ đệm.
Thư viện¶
bpo-1635741: Chuyển mô-đun mở rộng
_warningssang khởi tạo nhiều pha API (PEP 489). Bản vá của Victor Stinner.
Cốt lõi và nội dung¶
bpo-41686: Trên Windows, sự kiện
SIGINT,_PyOS_SigintEvent(), hiện được tạo ngay cả khi Python được định cấu hình để không cài đặt trình xử lý tín hiệu (nếuPyConfig.install_signal_handlersbằng 0 hoặcPy_InitializeEx(0)).bpo-42381: Cho phép các biểu thức gán theo nghĩa đen đã đặt và đặt mức độ hiểu theo PEP 572. Bản vá của Pablo Galindo.
bpo-42202: Thay đổi biểu diễn bên trong của các chú thích tham số hàm thành bộ chuỗi. Bản vá được cung cấp bởi Yurii Karabas.
bpo-42374: Khắc phục hồi quy do trình phân tích cú pháp mới đưa ra, trong đó toán tử hải mã không được mã hóa không được phép trong các biểu thức trình tạo.
bpo-42316: Cho phép hải mã không được đóng dấu ngoặc đơn trong chỉ mục chỉ số dưới.
bpo-42349: Đảm bảo rằng giao diện người dùng của trình biên dịch tạo ra biểu đồ luồng điều khiển được định dạng đúng. Hãy tích cực hơn trong phần back-end của trình biên dịch, vì giờ đây việc làm đó đã an toàn.
bpo-42296: Trên Windows, khắc phục sự hồi quy trong việc xử lý tín hiệu ngăn cản việc làm gián đoạn chương trình bằng CTRL+C. Trình xử lý tín hiệu có thể chạy trong một luồng khác với luồng Python, trong trường hợp đó, việc kiểm tra quyết định xem luồng có thể xử lý tín hiệu hay không là sai.
bpo-42332: Các đối tượng
types.GenericAliashiện có thể là mục tiêu của các điểm yếu.bpo-42282: Tối ưu hóa các biểu thức con không đổi xuất hiện như một phần của các biểu thức được đặt tên (trước đây trình tối ưu hóa AST không đưa vào các biểu thức được đặt tên). Bản vá của Nick Coghlan.
bpo-42266: Đã khắc phục lỗi với bộ đệm opcode LOAD_ATTR không tôn trọng việc vá khỉ cho thuộc tính cấp lớp để biến nó thành bộ mô tả. Bản vá của Pablo Galindo.
Thư viện¶
Cốt lõi và nội dung¶
bpo-42246: Cải thiện độ chính xác của các sự kiện dò dòng và thuộc tính f_lineno của đối tượng Frame. Xem PEP 626 để biết chi tiết.
Thư viện¶
Cốt lõi và nội dung¶
bpo-42233: Cho phép các đối tượng
GenericAliassử dụng union type expressions. Điều này cho phép các biểu thức nhưlist[int] | dict[float, str]mà trước đâyTypeErrorsẽ được ném ra. Điều này cũng sửa các biểu thức loại kết hợp không loại bỏ các đối tượngGenericAliastrùng lặp. (Được đóng góp bởi Ken Jin trong bpo-42233.)bpo-26131: Hệ thống nhập kích hoạt
ImportWarningkhi nó quay lại sử dụngload_module().
Thư viện¶
bpo-5054: CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT được phân tích cú pháp không đúng. Thay thế getallmatchingheaders cho mục đích đặc biệt bằng phương thức get_all chung và thêm các thử nghiệm có liên quan.
Bản vá gốc của Martin Panter. Được sửa đổi bởi Senthil Kumaran.
bpo-42562: Khắc phục sự cố khi dis không thể phân tích hàm không có số dòng. Bản vá được cung cấp bởi Yurii Karabas.
bpo-17735:
inspect.findsource()hiện tăngOSErrorthay vìIndexErrorkhico_linenocủa đối tượng mã lớn hơn độ dài tệp. Điều này có thể xảy ra, chẳng hạn như khi một tệp được chỉnh sửa sau khi được nhập. PR của Irit Katriel.bpo-42116: Khắc phục việc xử lý các nhận xét theo sau của
inspect.getsource().bpo-42532: Loại bỏ lệnh gọi
__bool__không mong muốn khi chuyển đối sốspec_argtới Mock.bpo-38200: Đã thêm itertools.pairwise()
bpo-41818: Sửa test_master_read() để nó thành công trên tất cả các nền tảng tăng OSError hoặc trả về b"" khi đọc từ chính.
bpo-42487: ChainMap.__iter__ không còn gọi __getitem__ trên bản đồ cơ bản nữa
bpo-42482:
TracebackExceptionkhông còn giữ tham chiếu đến đối tượng truy nguyên của ngoại lệ nữa. Do đó, các phiên bản của TracebackException cho các ngoại lệ tương đương nhưng không bằng nhau hiện được so sánh bằng nhau.bpo-41818: Hãy test_openpty() tránh thành công ngoài ý muốn do số hàng và/hoặc số cột == 0.
bpo-42392: Xóa tham số vòng lặp khỏi các hàm
asyncio.subprocessvàasyncio.tasks. Bản vá được cung cấp bởi Yurii Karabas.bpo-42392: Xóa tham số vòng lặp khỏi các hàm
asyncio.open_connectionvàasyncio.start_server. Bản vá được cung cấp bởi Yurii Karabas.bpo-28468: Thêm chức năng
platform.freedesktop_os_release()để phân tích các tệpos-releasefreedesktop.org.bpo-42299: Đã xóa mô-đun
formatter, mô-đun này không được dùng nữa trong Python 3.4. Nó hơi lỗi thời, ít được sử dụng và chưa được thử nghiệm. Ban đầu nó được lên kế hoạch xóa trong Python 3.6, nhưng việc xóa như vậy đã bị trì hoãn cho đến sau Python 2.7 EOL. Người dùng hiện tại nên sao chép bất kỳ lớp nào họ sử dụng vào mã của họ. Bản vá của Donghee Na và Terry J. Reedy.bpo-26131: Không dùng zipimport.zipimporter.load_module() mà thay vào đó là exec_module().
bpo-41818: Cập nhật các bài kiểm tra cho thư viện pty. test_basic() đã được đổi thành test_openpty(); điều này còn kiểm tra xem các thuật ngữ nô lệ và kích thước thắng nô lệ có được pty.openpty() đặt đúng hay không. Để thêm hỗ trợ cho FreeBSD, NetBSD, OpenBSD và Darwin, điều này cũng bổ sung test_master_read(), chứng tỏ rằng pty.spawn() không nên phụ thuộc vào OSError để thoát khỏi vòng lặp sao chép của nó.
bpo-42392: Xóa tham số vòng lặp khỏi
__init__trong tất cả các lớpasyncio.locksvàasyncio.Queue. Bản vá được cung cấp bởi Yurii Karabas.bpo-15450: Làm cho
filecmp.dircmptôn trọng phân lớp. Bây giờfilecmp.dircmp.subdirshoạt động như mong đợi khi phân lớp dircmp.bpo-42413: Ngoại lệ
socket.timeouthiện là bí danh củaTimeoutError.bpo-31904: Hỗ trợ mô-đun tín hiệu trên VxWorks.
bpo-42406: Chúng tôi đã khắc phục sự cố trong
pickle.whichmoduletrong đó việc nhậpmultiprocessingcó thể thay đổi cách Pickle xác định mô-đun nào thuộc về một đối tượng, có khả năng phá vỡ quá trình bỏ chọn các đối tượng đó.bpo-42403: Đơn giản hóa mã khởi động bên ngoài
importlib:importlib._bootstrap_externalhiện sử dụng tính năng nhập thông thường để nhập các mô-đun dựng sẵn. Khi được nhập, hàm__import__()dựng sẵn đã hoạt động hoàn toàn và do đó có thể được sử dụng để nhập các mô-đun dựng sẵn nhưsys. Bản vá của Victor Stinner.bpo-1635741: Chuyển đổi loại mô-đun _sre thành loại heap (PEP 384). Bản vá của Erlend E. Aasland.
bpo-42375: cập nhật mô-đun quy trình con để hỗ trợ DragonFlyBSD.
bpo-41713: Chuyển mô-đun mở rộng
_signalsang khởi tạo nhiều pha API (PEP 489). Bản vá của Victor Stinner và Mohamed Koubaa.bpo-37205: Các hàm
time.time(),time.perf_counter()vàtime.monotonic()không thể bị lỗi do lỗi nghiêm trọng của Python nữa, thay vào đó, hãy đưa ra một ngoại lệ Python thông thường khi bị lỗi.bpo-42328: Đã sửa lỗi
tkinter.ttk.Style.map(). Hàm hiện chấp nhận biểu diễn trạng thái mặc định dưới dạng chuỗi trống (được trả về bởiStyle.map()). Cấu trúc của kết quả bây giờ giống nhau trên tất cả nền tảng và không phụ thuộc vào giá trị củawantobjects.bpo-42345: Khắc phục nhiều sự cố khác nhau khi xử lý tham số
typing.Literal(làm phẳng, loại bỏ trùng lặp, sử dụng loại để khóa bộ đệm). Bản vá được cung cấp bởi Yurii Karabas.bpo-37205:
time.perf_counter()trên Windows vàtime.monotonic()trên macOS hiện có trên toàn hệ thống. Trước đây, họ đã sử dụng phần bù được tính toán khi khởi động để giảm tổn thất về độ chính xác do kiểu float gây ra. Sử dụngtime.perf_counter_ns()vàtime.monotonic_ns()được thêm vào Python 3.7 để tránh mất độ chính xác này.bpo-42318: Đã sửa lỗi hỗ trợ các ký tự không phải BMP trong
tkintertrên macOS.bpo-42350: Sửa lớp
threading.Threadtại ngã ba: không làm gì nếu luồng đã dừng (ví dụ: fork được gọi khi thoát Python). Trước đó, một lỗi đã được ghi vào tiến trình con.bpo-42333: Mô-đun mở rộng cổng _ssl sang các loại heap.
bpo-42014: Lệnh gọi lại
onerrortừshutil.rmtreehiện nhận được chức năng chính xác khios.openkhông thành công.bpo-42237: Sửa lỗi
os.sendfile()trên illumos.bpo-42308: Thêm
threading.__excepthook__để cho phép truy xuất giá trị ban đầu củathreading.excepthook()trong trường hợp nó được đặt thành giá trị bị hỏng hoặc giá trị khác. Bản vá của Mario Corchero.bpo-42131: Triển khai các phương thức PEP 451/spec trên zipimport.zipimporter: find_spec(), create_module() và exec_module().
Điều này cũng cho phép ngừng sử dụng find_loader(), find_module() và Load_module().
bpo-41877: Các đối tượng mô phỏng không an toàn giờ đây sẽ đưa ra AttributionError nếu một thuộc tính có tiền tố asert, aseert hoặc assrt được truy cập, ngoài ra điều này đã xảy ra đối với các tiền tố khẳng định hoặc khẳng định.
bpo-42264:
sqlite3.OptimizedUnicodeđã không có giấy tờ và lỗi thời kể từ Python 3.3, khi nó được đặt bí danh thànhstr. Hiện tại nó không còn được dùng nữa và đã được lên lịch xóa trong Python 3.12.bpo-42251: Đã thêm
threading.gettrace()vàthreading.getprofile()để truy xuất các hàm dothreading.settrace()vàthreading.setprofile()thiết lập tương ứng. Bản vá của Mario Corchero.bpo-42249: Đã sửa lỗi ghi tệp Plist nhị phân lớn hơn 4 GiB.
bpo-42236: Trên Unix, hàm
os.device_encoding()hiện trả về'UTF-8'thay vì mã hóa thiết bị nếu Python UTF-8 Mode được bật.bpo-41754: webbrowser: Bỏ qua NotADirectoryError khi gọi
xdg-settings.bpo-42183: Sửa lỗi tràn ngăn xếp cho Tác vụ asyncio hoặc Repr trong tương lai().
Lỗi tràn xảy ra trong một số trường hợp khi Nhiệm vụ hoặc Tương lai tự trả về một cách đệ quy.
bpo-42140: Cải thiện chức năng asyncio.wait để tạo tập hợp tương lai chỉ một lần.
bpo-42133: Cập nhật các mô-đun khác nhau trong stdlib để quay lại
__spec__.loaderkhi__loader__không được xác định trên một mô-đun.bpo-26131: Các phương thức
load_module()được tìm thấy trongimportlibhiện kích hoạtDeprecationWarning.bpo-39825: Windows: Thay đổi
sysconfig.get_config_var('EXT_SUFFIX')thành định dạngplatform_tag.extensionđầy đủ như dự kiến. Trước đây nó được mã hóa cứng thành.pyd, bây giờ nó tương thích vớidistutils.sysconfigvà sẽ tạo ra kết quả giống như.cp38-win_amd64.pyd. Điều này làm cho Windows phù hợp với các nền tảng khác.bpo-26389: Các hàm
traceback.format_exception(),traceback.format_exception_only()vàtraceback.print_exception()hiện có thể lấy một đối tượng ngoại lệ làm đối số chỉ có vị trí.bpo-41889: Enum: sửa lỗi hồi quy liên quan đến việc kế thừa một enum được kế thừa nhiều lần
bpo-41861: Chuyển đổi
sqlite3để sử dụng các loại heap (PEP 384). Bản vá của Erlend E. Aasland.bpo-40624: Đã thêm hỗ trợ cho toán tử XPath
!=trong xml.etreebpo-28850: Khắc phục lỗi ghi đè
pprint.PrettyPrinter.format()bị bỏ qua đối với nội dung của các vùng chứa nhỏ. Chức năngpprint._safe_repr()đã bị xóa.bpo-41625: Hiển thị
splice()dưới dạngos.splice()trong mô-đunos. Bản vá của Pablo Galindobpo-34215: Làm rõ thông báo lỗi cho
asyncio.IncompleteReadErrorkhiexpectedlàNone.bpo-41543: Thêm hỗ trợ trình quản lý bối cảnh không đồng bộ cho contextlib.nullcontext.
bpo-21041:
pathlib.PurePath.parentshiện hỗ trợ lập chỉ mục phủ định. Bản vá được đóng góp bởi Yaroslav Pankovych.bpo-41332: Đã thêm phương thức connect_accepted_socket() bị thiếu vào
asyncio.AbstractEventLoop.bpo-12800: Trích xuất liên kết tượng trưng từ tarball sẽ thành công và ghi đè liên kết tượng trưng nếu nó đã tồn tại. Cách khắc phục là xóa tệp hoặc liên kết tượng trưng hiện có trước khi giải nén. Dựa trên bản vá của Chris AtLee, Jeffrey Kintscher và Senthil Kumaran.
bpo-40968:
urllib.requestvàhttp.clienthiện gửi tiện ích mở rộnghttp/1.1ALPN trong quá trình bắt tay TLS khi không có ngữ cảnh tùy chỉnh nào được cung cấp.bpo-41001: Thêm
os.eventfd()để cung cấp giao diện cấp thấp cho bộ mô tả tệp thông báo sự kiện của Linux.bpo-40816: Thêm AsyncContextDecorator vào contextlib để hỗ trợ trình quản lý bối cảnh không đồng bộ làm công cụ trang trí.
bpo-40550: Khắc phục sự cố về thời gian kiểm tra/thời gian hành động trong subprocess.Popen.send_signal.
bpo-39411: Thêm mã định danh
is_asyncvào các đối tượngFunctioncủapyclbr. Bản vá của Batuhan Taskayabpo-35498: Thêm hỗ trợ lát cho
pathlib.PurePath.parents.
Tài liệu¶
bpo-42238: Dự kiến loại bỏ
make suspiciousbằng cách trước tiên xóa nó khỏi CI và các bản dựng tài liệu nhưng vẫn giữ nó để sử dụng thủ công.bpo-42153: Sửa lỗi URL cho tài liệu giao thức IMAP.
bpo-41028: Trình chuyển đổi ngôn ngữ và phiên bản, trước đây được duy trì ở mọi nhánh cpython, hiện được xử lý bởi docsbuild-script.
Kiểm tra¶
bpo-41473: Kích hoạt lại test_gdb trên gdb 9.2 trở lên: lỗi https://bugzilla.redhat.com/show_bug.cgi?id=1866884 đã được sửa trong gdb 10.1.
bpo-42553: Khắc phục tình trạng đua
test_asyncio.test_call_later(): không đo hiệu suất asyncio trong bài kiểm tra đơn vịcall_later(). Thử nghiệm thất bại ngẫu nhiên trên CI.bpo-31904: Sửa test_netrc trên VxWorks: tạo thư mục tạm thời bằng temp_cwd().
bpo-31904: bỏ qua test_getaddrinfo_ipv6_scopeid_symbolic và test_getnameinfo_ipv6_scopeid_symbolic trên VxWorks
bpo-31904: bỏ qua test_test của test_mailcap trên VxWorks
bpo-31904: thêm yêu cầu shell cho test_pipes
bpo-31904: bỏ qua một số bài kiểm tra liên quan đến fifo trên VxWorks
bpo-31904: Khắc phục lỗi test_doctest.py cho VxWorks.
bpo-40754: Bao gồm mô-đun
_testinternalcapitrong trình cài đặt Windows cho bộ thử nghiệmbpo-41561: test_ssl: bỏ qua test_min_max_version_mismatch khi TLS 1.0 không khả dụng
bpo-31904: Sửa lỗi mô-đun hệ điều hành cho VxWorks RTOS.
bpo-31904: Khắc phục các trường hợp kiểm tra fifo cho VxWorks RTOS.
xây dựng¶
bpo-31904: xóa phụ thuộc libnet khỏi detect_socket() cho VxWorks
bpo-42398: Khắc phục tình trạng dồn đuổi trong "make regen-all" khi tùy chọn make -jN được sử dụng để chạy các công việc song song. Tập lệnh Clinic.py hiện chỉ sử dụng tính năng ghi nguyên tử để ghi tệp. Ngoài ra, các tệp được tạo bây giờ không thay đổi nếu nội dung không thay đổi, không thay đổi thời gian sửa đổi tệp.
bpo-41617: Sửa lỗi xây dựng tiêu đề nội bộ
pycore_bitutils.htrên phiên bản clang cũ không có__builtin_bswap16()(ví dụ: Xcode 4.6.3 trên Mac OS X 10.7). Bản vá của Joshua Root và Victor Stinner.bpo-38823: Không thể xây dựng mô-đun mở rộng
_ctypesmà không có loạiwchar_t: xóa macroCTYPES_UNICODE. Dù sao đi nữa, loạiwchar_tlà bắt buộc để xây dựng Python. Bản vá của Victor Stinner.bpo-42087: Đã xóa hỗ trợ cho AIX 5.3 trở xuống. Xem bpo-40680.
bpo-40998: Đã giải quyết ba cảnh báo của trình biên dịch được tìm thấy bởi trình khử trùng hành vi không xác định (ubsan).
cửa sổ¶
macOS¶
bpo-42504: Sửa bản dựng trên macOS Big Sur khi MACOSX_DEPLOYMENT_TARGET=11
bpo-41116: Đảm bảo distutils.unixxcompiler.find_library_file có thể tìm thấy các thư viện do hệ thống cung cấp trên macOS 11.
bpo-41100: Thêm hỗ trợ cho hệ thống macOS 11 và Apple Silicon.
Hiện tại có thể xây dựng các tệp nhị phân "Universal 2" bằng cách sử dụng "--enable-universalsdk --with-universal-archs=universal2".
Các tệp nhị phân được xây dựng trên các phiên bản macOS mới hơn có thể được triển khai trở lại các phiên bản cũ hơn (đã thử nghiệm lên đến macOS 10.9), khi sử dụng đúng mục tiêu triển khai. Điều này đã được thử nghiệm bằng Xcode 11 trở lên.
bpo-42232: Đã thêm các tùy chọn madvise cụ thể của Darwin vào mô-đun mmap.
bpo-38443: Các tùy chọn
--enable-universalsdkvà--with-universal-archscho tập lệnh cấu hình hiện kiểm tra xem các kiến trúc đã chỉ định có thể được sử dụng hay không.
IDLE¶
bpo-42508: Giữ IDLE chạy trên macOS. Loại bỏ giải pháp lỗi thời ngăn chặn việc chạy tệp bằng phím tắt khi sử dụng trình cài đặt Universal2 mới được xây dựng trên macOS 11.
bpo-42426: Sửa lỗi báo cáo lỗi RE trong công cụ tìm kiếm.
bpo-42415: Nhận chuỗi tài liệu cho mẹo gọi IDLE thường xuyên hơn bằng cách sử dụng Inspection.getdoc.
Công cụ/Bản trình diễn¶
C API¶
bpo-42423: Các hàm
PyType_FromSpecWithBases()vàPyType_FromModuleAndSpec()hiện chấp nhận một lớp duy nhất làm đối số bases.bpo-1635741: Mô-đun mở rộng cổng
selectđể khởi tạo nhiều pha (PEP 489).bpo-1635741: Mô-đun mở rộng cổng _posixsubprocess để khởi tạo nhiều pha (PEP 489).
bpo-1635741: Mô-đun mở rộng cổng _posixshmem để khởi tạo nhiều pha (PEP 489)
bpo-1635741: Mô-đun mở rộng cổng _struct để khởi tạo nhiều pha (PEP 489)
bpo-1635741: Mô-đun mở rộng cổng
spwdđể khởi tạo nhiều pha (PEP 489)bpo-1635741: Mô-đun mở rộng cổng
gcđể khởi tạo nhiều pha (PEP 489)bpo-1635741: Mô-đun mở rộng cổng _queue để khởi tạo nhiều pha (PEP 489)
bpo-39573: Chuyển đổi
Py_TYPE()vàPy_SIZE()trở lại macro để cho phép sử dụng chúng làm giá trị l. Nhiều mô-đun mở rộng C của bên thứ ba dựa vào khả năng sử dụng Py_TYPE() và Py_SIZE() để đặt loại và kích thước đối tượng:Py_TYPE(obj) = type;vàPy_SIZE(obj) = size;.bpo-1635741: Mô-đun mở rộng cổng
symtableđể khởi tạo nhiều pha (PEP 489)bpo-1635741: Các mô-đun mở rộng cổng
grpvàpwdđể khởi tạo nhiều pha (PEP 489)bpo-1635741: Mô-đun mở rộng cổng _ngẫu nhiên để khởi tạo nhiều pha (PEP 489)
bpo-1635741: Mô-đun mở rộng cổng _hashlib để khởi tạo nhiều pha (PEP 489)
bpo-41713: Đã xóa chức năng
PyOS_InitInterrupts()không có giấy tờ. Việc khởi tạo Python đã cài đặt ngầm các trình xử lý tín hiệu: xemPyConfig.install_signal_handlers. Bản vá của Victor Stinner.bpo-40170: Macro
Py_TRASHCAN_BEGINkhông còn truy cập các thuộc tính PyTypeObject nữa, nhưng giờ đây có thể nhận được điều kiện bằng cách gọi hàm_PyTrash_cond()riêng tư mới ẩn chi tiết triển khai.bpo-42260: Các hàm
Py_GetPath(),Py_GetPrefix(),Py_GetExecPrefix(),Py_GetProgramFullPath(),Py_GetPythonHome()vàPy_GetProgramName()hiện trả vềNULLnếu được gọi trướcPy_Initialize()(trước khi Python được khởi tạo). Sử dụng Python Initialization Configuration API mới để nhận Python Path Configuration.. Bản vá của Victor Stinner.bpo-42260: Hàm
PyConfig_Read()hiện chỉ phân tích các đối sốPyConfig.argvmột lần:PyConfig.parse_argvđược đặt thành2sau khi các đối số được phân tích cú pháp. Vì các đối số Python bị loại bỏ khỏiPyConfig.argvnên việc phân tích cú pháp các đối số hai lần sẽ phân tích các tùy chọn ứng dụng dưới dạng tùy chọn Python.bpo-42262: Đã thêm các hàm
Py_NewRef()vàPy_XNewRef()để tăng số lượng tham chiếu của một đối tượng và trả về đối tượng. Bản vá của Victor Stinner.bpo-42260: Khi
Py_Initialize()được gọi hai lần, lệnh gọi thứ hai hiện cập nhật nhiều thuộc tínhsyshơn cho cấu hình, thay vì chỉsys.argv. Bản vá của Victor Stinner.bpo-41832: Chức năng
PyType_FromModuleAndSpec()hiện chấp nhận khe cắm NULLtp_doc.bpo-1635741: Đã thêm chức năng
PyModule_AddObjectRef(): tương tự nhưPyModule_AddObject()nhưng không lấy cắp tham chiếu đến giá trị khi thành công. Bản vá của Victor Stinner.bpo-42171: Quy ước gọi
METH_FASTCALLđược thêm vào API giới hạn. Các chức năngPyModule_AddType(),PyType_FromModuleAndSpec(),PyType_GetModule()vàPyType_GetModuleState()được thêm vào API giới hạn trên Windows.bpo-42085: Thêm mục nhập chuyên dụng vào PyAsyncMethods để gửi giá trị
bpo-41073:
PyType_GetSlot()hiện có thể chấp nhận các loại tĩnh.bpo-30459: macro
PyList_SET_ITEM(),PyTuple_SET_ITEM()vàPyCell_SET()không còn có thể được sử dụng làm giá trị l hoặc giá trị r nữa. Ví dụ:x = PyList_SET_ITEM(a, b, c)vàPyList_SET_ITEM(a, b, c) = xhiện không thành công do lỗi trình biên dịch. Nó ngăn chặn các lỗi như kiểm traif (PyList_SET_ITEM (a, b, c) < 0) .... Bản vá của Zackery Spytz và Victor Stinner.
Python 3.10.0 alpha 2¶
Release date: 2020-11-03
Bảo mật¶
bpo-42103: Ngăn chặn cuộc tấn công DoS tiềm ẩn thông qua việc cạn kiệt CPU và RAM khi xử lý các tệp Danh sách tài sản Apple không đúng định dạng ở định dạng nhị phân.
bpo-42051: Mô-đun
plistlibkhông còn chấp nhận khai báo thực thể trong tệp plist XML để tránh các lỗ hổng XML. Điều này sẽ không ảnh hưởng đến người dùng vì các khai báo thực thể không được sử dụng trong các tệp plist thông thường.
Cốt lõi và nội dung¶
bpo-42236: Nếu hàm
nl_langinfo(CODESET)trả về một chuỗi trống thì Python hiện sử dụng UTF-8 làm mã hóa hệ thống tệp. Bản vá của Victor Stinner.bpo-42218: Đã sửa lỗi trong trình phân tích cú pháp PEG gây ra sự cố trong chế độ gỡ lỗi. Hiện tại, các lỗi được kiểm tra trong quy tắc đệ quy trái để tránh trường hợp các lỗi đó không được xử lý kịp thời và xuất hiện dưới dạng các sự cố đường dài ở những nơi khác.
bpo-42214: Đã khắc phục sự cố có thể xảy ra trong trình phân tích cú pháp PEG khi kiểm tra mã thông báo '!=' trong quy tắc
barry_as_flufl. Bản vá của Pablo Galindo.bpo-42206: Tuyên truyền và nêu ra các lỗi do
PyAST_Validate()gây ra trong trình phân tích cú pháp.bpo-41796: Trạng thái bên trong mô-đun
asthiện dành cho mỗi trình thông dịch. Bản vá của Victor Stinner.bpo-42143: Khắc phục lỗi xử lý trong quá trình tạo
PyFunctionObject, dẫn đến các hoạt động trên bộ nhớ chưa được khởi tạo. Bản vá của Yonatan Goldschmidt.bpo-41659: Sửa lỗi trong trình phân tích cú pháp, trong đó dấu ngoặc nhọn theo sau
primarykhông bị lỗi ngay lập tức. Điều này dẫn đến các biểu thức không hợp lệ nhưa {b}để némSyntaxErrorvới sai lệch hoặc các biểu thức không hợp lệ kết thúc bằng dấu ngoặc nhọn nhưa {để không bị lỗi ngay lập tức trong REPL.bpo-42150: Khắc phục lỗi tràn bộ đệm có thể xảy ra trong trình phân tích cú pháp mới khi kiểm tra các dòng tiếp tục. Bản vá của Pablo Galindo.
bpo-42123: Chạy trình phân tích cú pháp hai lần. Trong lần chạy đầu tiên, hãy tắt tất cả các quy tắc chỉ tạo ra thông báo lỗi tốt hơn để đạt được hiệu suất. Nếu có lỗi phân tích cú pháp, hãy chạy trình phân tích cú pháp lần thứ hai với những lỗi đó đã được bật.
bpo-42093: Lệnh
LOAD_ATTRhiện sử dụng cơ chế "mỗi bộ đệm opcode" mới và hiện nhanh hơn khoảng 36%. Bản vá của Pablo Galindo và Yury Selivanov.bpo-42030: Hỗ trợ tải thư viện chia sẻ dành riêng cho AIX đã bị xóa. Tất cả các phiên bản AIX kể từ 4.3 đều đã hỗ trợ và mặc định sử dụng cơ chế Unix phổ biến.
bpo-41984: Trình thu gom rác hiện theo dõi tất cả các lớp do người dùng xác định. Bản vá của Brandt Bucher.
bpo-41993: Đã khắc phục các sự cố tiềm ẩn khi xóa mô-đun chưa được khởi tạo hoàn toàn khỏi
sys.moduleskhi quá trình nhập không thành công.bpo-41979: Hiện đã cho phép giải nén sao với các mục tiêu của vật phẩm trong trình phân tích cú pháp PEG.
bpo-41974: Đã xóa các phương thức đặc biệt
__int__,__float__,__floordiv__,__mod__,__divmod__,__rfloordiv__,__rmod__và__rdivmod__của lớpcomplex. Họ luôn đưa raTypeError.bpo-41902: Tối ưu hóa vi mô khi tính toán
sq_itemvàmp_subscriptcủarange. Bản vá của Donghee Na.bpo-41894: Khi tải mô-đun gốc và xảy ra lỗi tải, hãy ngăn chặn UnicodeDecodeError có thể xảy ra khi không chạy ở ngôn ngữ UTF-8 bằng cách giải mã thông báo lỗi tải bằng cách sử dụng mã hóa của ngôn ngữ hiện tại.
bpo-41902: Tối ưu hóa vi mô cho range.index nếu bước là 1. Bản vá của Donghee Na.
Thư viện¶
bpo-41435: Thêm hàm
sys._current_exceptions()để truy xuất từ điển ánh xạ mã định danh của từng luồng với ngoại lệ trên cùng hiện đang hoạt động trong luồng đó tại thời điểm hàm được gọi.
Cốt lõi và nội dung¶
bpo-38605: Bật
from __future__ import annotations(PEP 563) theo mặc định. Các giá trị tìm thấy trong lệnh__annotations__hiện là chuỗi, ví dụ:{"x": "int"}thay vì{"x": int}.
Thư viện¶
bpo-35455: Trên Solaris,
thread_time()hiện được triển khai vớigethrvtime()vìclock_gettime(CLOCK_THREAD_CPUTIME_ID)không phải lúc nào cũng khả dụng. Bản vá của Jakub Kulik.bpo-42233:
repr()của các loạitypingchứa Generic Alias Types trước đây không hiển thị các loại được tham số hóa trongGenericAlias. Bây giờ họ đã được thay đổi để làm như vậy.bpo-29566:
binhex.binhex()liên tục viết phần cuối dòng macOS 9.bpo-26789: Lớp
logging.FileHandlerhiện giữ tham chiếu đến hàmopen()dựng sẵn để có thể mở hoặc mở lại tệp trong quá trình hoàn thiện Python. Sửa các lỗi như:NameError: name 'open' is not defined. Bản vá của Victor Stinner.bpo-42157: Đã xóa thuộc tính
unicodedata.ucnhash_CAPIvốn là đối tượng PyCapsule bên trong. Cấu trúc_PyUnicode_Name_CAPIriêng tư có liên quan đã được chuyển sang C API nội bộ. Bản vá của Victor Stinner.bpo-42157: Chuyển đổi mô-đun mở rộng
unicodedatathành API khởi tạo nhiều pha (PEP 489) và chuyển đổi loại tĩnhunicodedata.UCDthành loại heap. Bản vá của Mohamed Koubaa và Victor Stinner.bpo-42146: Khắc phục rò rỉ bộ nhớ trong
subprocess.Popen()trong trường hợp uid (gid) được chỉ định tronguser(group,extra_groups) trànuid_t(gid_t).bpo-42103:
InvalidFileExceptionvàRecursionErrorhiện là lỗi duy nhất do tải tệp Plist nhị phân không đúng định dạng (trước đây ValueError và TypeError có thể tăng lên trong một số trường hợp cụ thể).bpo-41490: Trong
importlib.resources, phương pháp.pathtích cực hơn trong việc giải phóng sớm các thẻ điều khiển cho đối tượng zipfile, cho phép các trường hợp sử dụng như certifi để ngữ cảnh mở nhưng xóa tệp zip bên dưới.bpo-41052: Các loại vùng nhớ đệm được triển khai trong C với các giao thức 0 và 1 hiện gây ra lỗi thay vì tạo ra dữ liệu không chính xác.
bpo-42089: Trong
importlib.metadata.PackageNotFoundError, hãy tham chiếu đến siêu dữ liệu gói bị thiếu để cải thiện trải nghiệm người dùng.bpo-41491: plistlib: sửa lỗi phân tích cú pháp XML với các giá trị nguyên thập lục phân
bpo-42065: Sửa lỗi định dạng không chính xác từ
_codecs.charmap_decode()khi được gọi với giá trị được ánh xạ nằm ngoài phạm vi điểm mã Unicode hợp lệ. PR của Max Bernstein.bpo-41966: Sửa lỗi tẩy các lớp con
datetime.timethuần túy của Python. Bản vá của Dean Inwood.bpo-19270:
sched.scheduler.cancel()bây giờ sẽ hủy sự kiện chính xác nếu hai sự kiện có cùng mức độ ưu tiên được lên lịch cùng một lúc. Bản vá của Bar Harel.bpo-28660:
textwrap.wrap()hiện cố gắng ngắt các từ dài sau dấu gạch nối khibreak_long_words=Truevàbreak_on_hyphens=True.bpo-35823: Sử dụng
vfork()thay vìfork()chosubprocess.Popen()trên Linux để cải thiện hiệu suất trong trường hợp được coi là an toàn.bpo-42043: Thêm hỗ trợ kế thừa
zipfile.Path.zipfile.Path.is_file()hiện trả về Sai cho các tên không tồn tại. Các đối tượngzipfile.Pathhiện hiển thị thuộc tính.filenamevà dựa vào thuộc tính đó để giải quyết.namevà.parentkhi đối tượngPathnằm ở thư mục gốc của tệp zip.bpo-42021: Khắc phục các rò rỉ ref có thể xảy ra trong mô-đun
sqlite3init.bpo-39101: Đã sửa lỗi các thử nghiệm sử dụng IsolatAsyncioTestCase bị treo trên BaseExceptions.
bpo-41976: Đã sửa lỗi khiến
ctypes.util.find_library()trả vềNonekhi cố gắng định vị thư viện trong môi trường khi gcc>=9 có sẵn cònldconfigthì không. Bản vá của Pablo Galindobpo-41943: Sửa lỗi TestCase.assertLogs không lọc chính xác thư theo cấp độ.
bpo-41923: Triển khai PEP 613, giới thiệu chú thích
typing.TypeAlias.bpo-41905: Một hàm mới trong abc: update_abstractmethods để tính lại trạng thái trừu tượng của lớp trừu tượng. Ngoài ra, dataclass đã được thay đổi để gọi chức năng này.
bpo-23706: Đã thêm tham số newline vào
pathlib.Path.write_text().bpo-41876: Đại diện lớp phông chữ Tkinter sử dụng tên phông chữ
bpo-41831:
str()cho thuộc tínhtypecủa đối tượngtkinter.Eventluôn trả về mã số được trả về bởi Tk thay vì tên của loại sự kiện.bpo-39337:
encodings.normalize_encoding()hiện bỏ qua các ký tự không phải ASCII.bpo-41747: Đảm bảo tất cả các phương thức được tạo từ đối tượng
dataclasses.dataclass()hiện có thuộc tính__qualname__thích hợp đề cập đến lớp mà chúng thuộc về. Bản vá của Batuhan Taskaya.bpo-30681: Xử lý các ngoại lệ do tiêu đề ngày không thể phân tích cú pháp gây ra khi sử dụng chính sách "mặc định" của email. Bản vá của Tim Bell, Georges Toth
bpo-41586: Thêm F_SETPIPE_SZ và F_GETPIPE_SZ vào mô-đun fcntl. Cho phép thiết lập pipesize trên subprocess.Popen.
bpo-41229: Thêm
contextlib.aclosingđể dọn dẹp xác định các trình tạo không đồng bộ, tương tự nhưcontextlib.closingcho các trình tạo không đồng bộ. Bản vá của Jongi Kim và John Belmonte.bpo-16396: Cho phép nhập
ctypes.wintypestrên các hệ thống không phải Windows.bpo-4356: Thêm chức năng chính vào mô-đun bisect.
bpo-40592:
shutil.which()hiện bỏ qua các mục trống trongPATHEXTthay vì coi chúng là khớp.bpo-40492: Sửa lỗi
--outfilekhiếncProfile/profilekhông ghi file đầu ra vào thư mục gốc khi chương trình được lược tả thay đổi thư mục làm việc. PR của Anthony Sottile.bpo-34204: Mô-đun
shelvehiện sử dụngpickle.DEFAULT_PROTOCOLtheo mặc định thay vì giao thứcpickle3.bpo-27321: Đã sửa lỗi ngoại lệ KeyError khi làm phẳng một email thành một chuỗi cố gắng thay thế tiêu đề Mã hóa chuyển nội dung không tồn tại.
bpo-38976: Mô-đun
http.cookiejarhiện hỗ trợ phân tích cú pháp cookie trong các tệp cookiejar kiểu CURL thông qua MozillaCookieJar trên tất cả các nền tảng. Trước đây, các mục cookie như vậy sẽ bị bỏ qua âm thầm khi tải cookiejar có các mục nhập đó.Ngoài ra, thuộc tính HTTP Only vẫn tồn tại trong đối tượng và sẽ được ghi chính xác vào tệp nếu đối tượng MozillaCookieJar sau đó bị kết xuất.
Tài liệu¶
bpo-42061: Chức năng __format__ tài liệu cho địa chỉ IP.
bpo-41910: Ghi lại cách triển khai mặc định của
object.__eq__.bpo-42010: Làm rõ rằng các biểu thức đăng ký cũng hợp lệ đối với một số classes và types nhất định trong thư viện tiêu chuẩn cũng như đối với các lớp và loại do người dùng xác định nếu phương thức lớp
__class_getitem__()được cung cấp.bpo-41805: Đã ghi lại generic alias type và
types.GenericAlias. Cũng đã thêm một mục trong bảng thuật ngữ cho generic types.bpo-39693: Sửa tài liệu extractfile của tarfile
bpo-39416: Ghi lại một số hạn chế đối với cách biểu diễn chuỗi mặc định của các lớp số.
Kiểm tra¶
bpo-41739: Khắc phục test_logging.test_race_between_set_target_and_flush(): bài kiểm tra hiện chờ cho đến khi tất cả các luồng hoàn thành để tránh rò rỉ các luồng đang chạy.
bpo-41970: Tránh lỗi kiểm tra trong
test_lib2to3nếu mô-đun đã được nhập vào thời điểm thực hiện kiểm tra. Bản vá của Pablo Galindo.bpo-41944: Kiểm tra codec CJK không còn gọi
eval()trên nội dung nhận được qua HTTP.bpo-41306: Đã sửa lỗi xảy ra trong
test_tk.test_widgets.ScaleTestkhi thực hiện kiểm tra với Tk 8.6.10.
xây dựng¶
bpo-38980: Thêm
-fno-semantic-interpositionvào cả dòng biên dịch và dòng liên kết khi xây dựng với--enable-optimizations. Bản vá của Victor Stinner và Pablo Galindo.
cửa sổ¶
bpo-38439: Cập nhật các biểu tượng cho IDLE trong gói Windows Store.
bpo-38252: Sử dụng bước 8 byte để phát hiện chuỗi ASCII trong bản dựng Windows 64 bit.
bpo-39107: Cập nhật Tcl và Tk lên 8.6.10 trong trình cài đặt Windows.
bpo-41557: Cập nhật trình cài đặt Windows để sử dụng SQLite 3.33.0.
bpo-38324: Tránh lỗi Unicode khi truy cập dữ liệu miền địa phương nhất định trên Windows.
macOS¶
bpo-41471: Bỏ qua độ dài tiền tố không hợp lệ trong loại trừ proxy hệ thống.
IDLE¶
bpo-33987: Chủ yếu hoàn tất việc sử dụng các tiện ích ttk, chủ yếu dành cho trình chỉnh sửa, cài đặt và tìm kiếm. Một số bản vá của Mark Roseman.
bpo-40511: Việc nhập dấu ngoặc đơn mở và đóng bên trong dấu ngoặc đơn của lệnh gọi hàm sẽ không còn gây ra tình trạng tắt và bật "nhấp nháy" không cần thiết của mẹo gọi đang mở hiện có, ví dụ: khi gõ vào một chuỗi ký tự.
bpo-38439: Thêm biểu tượng IDLE 256×256 pixel vào tệp .ico của Windows. Được tạo bởi Andrew Clover. Xóa các biến thể gif có màu thấp khỏi tệp .ico.
C API¶
bpo-42157: Cấu trúc
_PyUnicode_Name_CAPIriêng của PyCapsule APIunicodedata.ucnhash_CAPIđã được chuyển sang C API bên trong. Bản vá của Victor Stinner.bpo-42015: Khắc phục sự cố tiềm ẩn trong việc hủy phân bổ các đối tượng phương thức khi thời gian tồn tại của
PyMethodDefđược phân bổ động được quản lý thông qua đối sốselfcủaPyCFunction.bpo-40423: Mô-đun
subprocessvàos.closerangehiện sẽ sử dụng tòa nhàclose_range(low, high, flags)khi nó có sẵn để đóng phạm vi mô tả hiệu quả hơn.bpo-41845:
PyObject_GenericGetDict()lại có sẵn trong API giới hạn khi nhắm mục tiêu 3.10 trở lên.bpo-40422: Thêm chức năng
_Py_closerangeđể cung cấp khả năng đóng một loạt các bộ mô tả tệp một cách hiệu quả.bpo-41986:
Py_FileSystemDefaultEncodeErrorsvàPy_UTF8Modelại có sẵn với số lượng API có giới hạn.bpo-41756: Thêm chức năng
PyIter_Sendđể cho phép gửi giá trị vào trình tạo/coroutine/iterator mà không tăng ngoại lệ StopIteration để trả về tín hiệu.bpo-41784: Đã thêm
PyUnicode_AsUTF8AndSizevào C API giới hạn.
Python 3.10.0 alpha 1¶
Release date: 2020-10-05
Bảo mật¶
bpo-41304: Sửa lỗi
python3x._pthbị bỏ qua trên Windows, nguyên nhân là do sửa lỗi bpo-29778 (CVE 2020-15801).bpo-41162: Các móc kiểm tra hiện sẽ bị xóa sau trong quá trình hoàn thiện để tránh thiếu sự kiện.
bpo-29778: Đảm bảo
python3.dllđược tải từ đúng vị trí khi Python được nhúng (CVE 2020-15523).bpo-41004: Các phương thức __hash__() của ipaddress.IPv4Interface và ipaddress.IPv6Interface đã tạo không chính xác các giá trị băm không đổi lần lượt là 32 và 128. Điều này dẫn đến luôn gây ra xung đột băm. Bản sửa lỗi sử dụng hash() để tạo ra các giá trị băm cho bộ dữ liệu (địa chỉ, độ dài mặt nạ, địa chỉ mạng).
bpo-39603: Ngăn chặn việc chèn tiêu đề http bằng cách từ chối các ký tự điều khiển trong http.client.putrequest(...).
Cốt lõi và nội dung¶
bpo-41909: Đã sửa lỗi tràn ngăn xếp trong
issubclass()vàisinstance()khi nhận thuộc tính__bases__dẫn đến đệ quy vô hạn.bpo-41922: Tăng tốc độ cuộc gọi tới
reversed()bằng cách sử dụng quy ước gọi PEP 590vectorcall. Bản vá của Donghee Na.bpo-41873: Các cuộc gọi tới
float()hiện nhanh hơn nhờ quy ước gọivectorcall. Bản vá của Dennis Sweeney.bpo-41870: Tăng tốc độ cuộc gọi tới
bool()bằng cách sử dụng quy ước gọi PEP 590vectorcall. Bản vá của Donghee Na.
Thư viện¶
bpo-1635741: Chuyển mô-đun
_bisectsang khởi tạo nhiều pha API (PEP 489).
Cốt lõi và nội dung¶
bpo-39934: Đếm chính xác các khối điều khiển trong 'ngoại trừ' trong trình biên dịch. Đảm bảo rằng xảy ra lỗi cú pháp, đúng hơn là lỗi nghiêm trọng, đối với các trình xử lý ngoại lệ được đặt tên lồng nhau sâu.
bpo-41780: Sửa lỗi
__dir__()củatypes.GenericAlias. Bản vá của Batuhan Taskaya.
Thư viện¶
bpo-1635741: Chuyển mô-đun mở rộng
_lsprofsang khởi tạo nhiều pha (PEP 489).bpo-1635741: Chuyển mô-đun mở rộng
cmathsang khởi tạo nhiều pha (PEP 489).bpo-1635741: Chuyển mô-đun mở rộng
_scproxysang khởi tạo nhiều pha (PEP 489).bpo-1635741: Chuyển mô-đun mở rộng
termiossang khởi tạo nhiều pha (PEP 489).bpo-1635741: Chuyển đổi các loại mô-đun mở rộng
_sha256thành các loại heap.
Cốt lõi và nội dung¶
bpo-41690: Khắc phục lỗi tràn ngăn xếp có thể xảy ra trong trình phân tích cú pháp khi phân tích cú pháp các hàm và lớp có số lượng đối số khổng lồ. Bản vá của Pablo Galindo.
Thư viện¶
bpo-1635741: Chuyển mô-đun mở rộng
_overlappedsang khởi tạo nhiều pha (PEP 489).bpo-1635741: Chuyển mô-đun mở rộng
_curses_panelsang khởi tạo nhiều pha (PEP 489).bpo-1635741: Chuyển mô-đun mở rộng
_opcodesang khởi tạo nhiều pha (PEP 489).
Cốt lõi và nội dung¶
bpo-41681: Sửa lỗi mô tả sai trong lỗi phát sinh do sử dụng 2
,trong chuỗi định dạng trong f-string vàstr.format().
Thư viện¶
bpo-41675: Việc triển khai
signal.siginterrupt()hiện sử dụngsigaction()(nếu nó có sẵn trong hệ thống) thay vìsiginterrupt()không còn được dùng nữa. Bản vá của Pablo Galindo.
Cốt lõi và nội dung¶
bpo-41670: Ngăn chặn việc bỏ qua dấu vết dòng trên các nền tảng không được biên dịch bằng
USE_COMPUTED_GOTOS. Khắc phục sự cố trong đó một số dòng được lồng trong khối ngoại trừ thử không được theo dõi trên Windows.bpo-41654: Khắc phục sự cố xảy ra khi hủy các lớp con của
MemoryError. Bản vá của Pablo Galindo.
Thư viện¶
bpo-1635741: Chuyển mô-đun mở rộng
zlibsang khởi tạo nhiều pha (PEP 489).
Cốt lõi và nội dung¶
bpo-41631: Mô-đun
_astlại sử dụng trạng thái chung. Việc sử dụng trạng thái mô-đun cho mỗi phiên bản mô-đun đang gây ra các vấn đề thực tế khó nhận thấy. Ví dụ: dự án Mercurial thay thế hàm__import__()để triển khai nhập lười biếng, trong khi Python mong đợi rằngimport _astluôn trả về mô-đun_astđược khởi tạo đầy đủ.
Thư viện¶
bpo-40077: Chuyển đổi
_operatorđể sử dụngPyType_FromSpec().
Cốt lõi và nội dung¶
bpo-1653741: Cổng
_sha3sang init nhiều pha. Chuyển đổi kiểu tĩnh thành kiểu heap.
Thư viện¶
bpo-1635741: Chuyển mô-đun mở rộng
_blake2sang khởi tạo nhiều pha API (PEP 489).
Cốt lõi và nội dung¶
bpo-41533: Giải phóng ngăn xếp được phân bổ trong
va_build_stacknếudo_mkstackbị lỗi và ngăn xếp không phải làsmall_stack.bpo-41531: Sửa lỗi làm rơi khóa khi biên dịch các ký tự chính tả có nhiều hơn 0xFFFF phần tử. Bản vá của Pablo Galindo.
bpo-41525: Đầu ra của
python --helphiện chỉ chứa các ký tự ASCII.
Thư viện¶
bpo-1635741: Chuyển các mô-đun mở rộng
_sha1,_sha512và_md5sang khởi tạo nhiều pha API (PEP 489).
Cốt lõi và nội dung¶
bpo-41431: Tối ưu hóa
dict_merge()để sao chép dict (ví dụ:dict(d)và{}.update(d)).bpo-41428: Triển khai PEP 604. Điều này hỗ trợ (int | str), v.v. thay cho Union[str, int].
bpo-41340: Đã xóa triển khai dự phòng cho
strdup.bpo-38156: Xử lý chính xác các ngắt xuất hiện sau EOF trong
PyOS_StdioReadline.bpo-41342:
round()với đối số nguyên giờ nhanh hơn (9--60%).bpo-41334: Các hàm tạo
str(),bytes()vàbytearray()hiện nhanh hơn (khoảng 30--40% đối với các vật thể nhỏ).bpo-41295: Giải quyết hồi quy trong CPython 3.8.4 trong đó việc xác định "__setattr__" trong thiết lập đa kế thừa và gọi chuỗi phân cấp có thể không thành công nếu các loại nội dung/tiện ích mở rộng có liên quan đến các loại cơ sở.
bpo-41323: Tối ưu hóa mã byte được thực hiện trực tiếp trên biểu đồ luồng điều khiển. Điều này sẽ dẫn đến các đối tượng mã nhỏ gọn hơn một chút trong một số trường hợp.
bpo-41247: Luôn lưu vào bộ nhớ đệm bộ giữ vòng lặp đang chạy khi chạy
asyncio.set_running_loop.bpo-41252: Sửa lỗi đếm lại không chính xác trong
_servername_callback()của _ssl.c.bpo-1635741: Cổng
multiprocessingđể khởi tạo nhiều pha
Thư viện¶
bpo-1635741: Cổng
winapiđể khởi tạo nhiều pha
Cốt lõi và nội dung¶
bpo-41215: Sử dụng các giá trị mặc định không phải là NULL trong danh sách từ khóa của trình phân tích cú pháp PEG để khắc phục lỗi ngăn Python được biên dịch đúng cách khi sử dụng trình biên dịch XLC. Bản vá của Pablo Galindo.
bpo-41218: Python 3.8.3 có một lỗi hồi quy trong đó việc biên dịch bằng ast.PyCF_ALLOW_TOP_LEVEL_AWAIT sẽ đánh dấu mạnh mẽ khả năng hiểu danh sách bằng CO_COROUTINE. Bây giờ chỉ có khả năng hiểu danh sách bằng cách sử dụng async/await mới được gắn thẻ như vậy.
Thư viện¶
bpo-1635741: Cổng
faulthandlerđể khởi tạo nhiều pha.bpo-1635741: Cổng
sha256để khởi tạo nhiều pha
Cốt lõi và nội dung¶
bpo-41175: Bảo vệ khỏi việc vô hiệu hóa con trỏ NULL trong bytearrayobject được kích hoạt bởi thao tác
bytearray() + bytearray().bpo-41100: thêm arm64 vào các vòm Mac OS được phép trong mpdecimal.h
bpo-41094: Sửa lỗi giải mã khi kiểm tra khi mở tệp có tên không phải ASCII trên ngôn ngữ không phải UTF-8.
bpo-39960: "hackcheck" ngăn chặn việc lén lút xung quanh __setattr__() của một loại bằng cách gọi phương thức siêu lớp đã được viết lại để cho phép C triển khai các loại heap.
bpo-41084: Đặt tiền tố thông báo lỗi bằng 'f-string: ', khi phân tích cú pháp biểu thức chuỗi f tạo ra
SyntaxError.bpo-40521: Các tập hợp đông lạnh trống không còn là tập hợp đơn lẻ nữa.
bpo-41076: Cung cấp trước cho trình phân tích cú pháp vị trí của biểu thức chuỗi f chứ không phải chính chuỗi f, điều này cho phép chúng ta bỏ qua việc dịch chuyển các vị trí nút AST sau khi quá trình phân tích cú pháp hoàn tất.
bpo-41056: Sửa tham chiếu đến không gian ngăn xếp đã được phân bổ lại trong quá trình khởi động khi xây dựng sys.path liên quan đến liên kết tượng trưng tương đối khi mã được cung cấp qua -c. (được khám phá qua Coverity)
bpo-41061: Sửa các biểu thức và xác nhận không chính xác trong mã băm và các bài kiểm tra.
bpo-41052: Chọn không tham gia tuần tự hóa/giải tuần tự hóa cho _random.Random
bpo-40939: Đổi tên các hàm
PyPegen*thànhPyParser*để chúng ta có thể loại bỏ tập hợp các hàmPyParser*cũ đang sử dụng trình phân tích cú pháp cũ nhưng vẫn giữ mọi thứ tương thích ngược.bpo-35975: Stefan Behnel đã báo cáo rằng cf_feature_version được sử dụng ngay cả khi PyCF_ONLY_AST không được đặt. Điều này trái với mục đích và hành vi được ghi lại trong tài liệu, vì vậy nó đã được sửa.
bpo-40939: Xóa các tệp còn lại khỏi trình phân tích cú pháp cũ và mô-đun
symbol.
Thư viện¶
bpo-40077: Chuyển đổi
_bz2để sử dụngPyType_FromSpec().
Cốt lõi và nội dung¶
bpo-41006: Mô-đun
encodings.latin_1không còn được nhập khi khởi động. Bây giờ nó chỉ được nhập khi nó là mã hóa hệ thống tập tin hoặc mã hóa stdio.bpo-40636:
zip()hiện hỗ trợ tham sốstrictcủa PEP 618, tham số này sẽ tăngValueErrornếu các đối số đã hết ở các độ dài khác nhau. Bản vá của Brandt Bucher.bpo-1635741: Cổng
_gdbmđể khởi tạo nhiều pha.bpo-40985: Sửa lỗi khiến văn bản
SyntaxErrorbị trống khi tệp kết thúc bằng một dòng kết thúc bằng ký tự tiếp tục dòng (tức là dấu gạch chéo ngược). Văn bản lỗi phải chứa văn bản của dòng cuối cùng.bpo-40958: Khắc phục lỗi tràn bộ đệm có thể xảy ra trong trình phân tích cú pháp PEG khi thu thập thông tin để phát ra lỗi cú pháp. Bản vá của Pablo Galindo.
bpo-1635741: Cổng
_dbmđể khởi tạo nhiều pha.bpo-40957: Khắc phục phản hồi trong _Py_fopen_obj() khi PySys_Audit() không thành công
Thư viện¶
Cốt lõi và nội dung¶
bpo-40947: Python Path Configuration hiện có tính đến
PyConfig.platlibdir.bpo-40939: Xóa trình phân tích cú pháp cũ, mô-đun
parservà tất cả mã hỗ trợ liên quan, tùy chọn dòng lệnh và biến môi trường. Bản vá của Pablo Galindo.bpo-40847: Sửa lỗi trong đó một dòng chỉ có ký tự tiếp nối dòng không được coi là dòng trống ở cấp mã thông báo. Trong những trường hợp như vậy, nhiều hơn một mã thông báo
NEWLINEđã được phát ra. Trình phân tích cú pháp cũ đang giải quyết vấn đề nhưng trình phân tích cú pháp mới đã đưa raSyntaxErrorcho đầu vào hợp lệ do điều này. Ví dụ: một dòng trống theo sau ký tự tiếp tục dòng được hiểu làSyntaxError.bpo-40890: Mỗi chế độ xem từ điển hiện có thuộc tính
mappingcung cấptypes.MappingProxyTypebao bọc từ điển gốc. Bản vá được đóng góp bởi Dennis Sweeney.bpo-40889: Cải thiện hiệu suất của các thao tác sai phân đối xứng trên chế độ xem mục từ điển. Bản vá của Dennis Sweeney.
bpo-40904: Khắc phục lỗi phân đoạn có thể xảy ra trong trình phân tích cú pháp PEG mới khi phân tích chuỗi f chứa các câu lệnh lợi nhuận không có giá trị (
f"{yield}"). Bản vá của Pablo Galindobpo-40903: Đã sửa lỗi phân tách có thể xảy ra trong trình phân tích cú pháp PEG mới khi tạo thông báo lỗi cho các phép gán không hợp lệ có dạng
p=p=. Bản vá của Pablo Galindobpo-40880: Sửa lỗi đọc bộ nhớ không hợp lệ trong trình phân tích cú pháp mới khi kiểm tra dòng mới trong chuỗi ký tự. Bản vá của Pablo Galindo.
bpo-40883: Sửa lỗi rò rỉ bộ nhớ khi phân tích chuỗi f trong trình phân tích cú pháp mới. Bản vá của Pablo Galindo
bpo-40870: Tăng
ValueErrorkhi xác thực AST tùy chỉnh trong đó các hằng sốTrue,FalsevàNoneđược sử dụng trong nútast.Name.bpo-40854: Cho phép ghi đè
sys.platlibdirthông qua biến môi trườngPYTHONPLATLIBDIRmới.bpo-40826: Khắc phục việc sử dụng GIL trong
PyOS_Readline(): khóa GIL để đặt ngoại lệ và chuyển trạng thái luồng Python khi kiểm tra xem có tín hiệu đang chờ xử lý hay không.bpo-1635741: Cổng
fcntlđể khởi tạo nhiều pha.bpo-19468: Xóa kiểm tra phiên bản không cần thiết trong importlib.reload(). Bản vá của Furkan Önder.
bpo-40824: Các lỗi không mong muốn khi gọi phương thức
__iter__không còn đượcTypeErrorche dấu trong toán tửinvà các hàmcontains(),indexOf()vàcountOf()của mô-đunoperator.bpo-40792: Các thuộc tính
start,stopvàstepcủa đối tượngrangehiện tại luôn có loại chính xác làint. Trước đây, chúng có thể là một phiên bản của lớp con củaint.bpo-40780: Khắc phục trường hợp góc trong đó định dạng chuỗi kiểu g của float không thể xóa các số 0 ở cuối.
bpo-38964: Khi có
SyntaxErrortrong phần biểu thức của chuỗi f, thuộc tính tên tệp củaSyntaxErrorsẽ được đặt chính xác thành tên của tệp chứa chuỗi f.bpo-40750: Hỗ trợ cờ gỡ lỗi "-d" trong trình phân tích cú pháp PEG mới. Bản vá của Pablo Galindo
bpo-40217: Các phiên bản của loại được tạo bằng
PyType_FromSpecWithBases()sẽ không còn tự động truy cập đối tượng lớp của chúng khi duyệt qua các tham chiếu trong trình thu gom rác nữa. Người dùng phải truy cập thủ công lớp của đối tượng. Bản vá của Pablo Galindo.bpo-39573:
Py_TYPE()được thay đổi thành hàm tĩnh nội tuyến. Bản vá của Donghee Na.bpo-40696: Khắc phục lỗi treo có thể phát sinh sau
generator.throw()do một chu kỳ trong chuỗi ngữ cảnh ngoại lệ.bpo-40521: Mỗi trình thông dịch hiện có danh sách, bộ nhớ đơn và bộ đệm miễn phí riêng:
Danh sách miễn phí: float, tuple, list, dict, frame, context, trình tạo không đồng bộ, MemoryError.
Singletons: bộ trống, chuỗi byte trống, chuỗi Unicode trống, ký tự byte đơn, ký tự Unicode đơn (latin1).
Bộ nhớ đệm lát.
Chúng không còn được chia sẻ bởi tất cả các phiên dịch viên.
bpo-40679: Một số thông báo
TypeErrornhất định về các đối số bị thiếu hoặc bổ sung hiện bao gồm qualified name của hàm. Bản vá của Dennis Sweeney.bpo-29590: Thực hiện chính xác dấu vết ngăn xếp sau khi gọi
generator.throw()trên trình tạo được tạo ra từyield from.bpo-4022: Cải thiện hiệu suất của máy phát điện bằng cách không tăng StopIteration nội bộ.
Thư viện¶
bpo-1635741: Cổng
mmapđể khởi tạo nhiều pha.bpo-1635741: Cổng
_lzmađể khởi tạo nhiều pha.
Cốt lõi và nội dung¶
bpo-37999: Các hàm dựng sẵn và mở rộng lấy đối số nguyên không còn chấp nhận
Decimals,Fractions và các đối tượng khác có thể được chuyển đổi thành số nguyên chỉ bị mất (ví dụ: có phương thức__int__()nhưng không có phương thức__index__()).bpo-29882: Thêm
int.bit_count(), đếm số lượng đơn vị trong biểu diễn nhị phân của một số nguyên. Bản vá của Niklas Fiekas.
Thư viện¶
bpo-36982: Sử dụng các hàm màu mở rộng của ncurses khi có sẵn để hỗ trợ các thiết bị đầu cuối có 256 màu và thêm hàm mới
curses.has_extended_color_support()để cho biết liệu thư viện ncurses cơ bản có cung cấp hỗ trợ màu mở rộng hay không.
Cốt lõi và nội dung¶
Thư viện¶
bpo-41900: Tuần tự hóa C14N 2.0 trong xml.etree.ElementTree không thành công đối với các thuộc tính không có tiền tố khi xác định không gian tên mặc định.
bpo-41887: Loại bỏ các khoảng trắng và tab ở đầu trên
ast.literal_eval(). Đồng thời loại bỏ các khoảng trắng và tab choeval().bpo-41773: Lưu ý trong tài liệu rằng
random.choices()không hỗ trợ các trọng số không hữu hạn, hãy tăngValueErrorkhi được cung cấp các trọng số không hữu hạn.bpo-41840: Sửa lỗi trong mô-đun
symtablekhiến các biến toàn cục trong phạm vi mô-đun không được báo cáo dưới dạng cả cục bộ và toàn cục. Bản vá của Pablo Galindo.bpo-41842: Thêm chức năng
codecs.unregister()để hủy đăng ký chức năng tìm kiếm codec.bpo-40564: Trong
zipfile.Path, thay đổi loại đối tượng ZipFile đã truyền thay vì tạo một bản sao. Ngăn chặn sự cố khi cả bản sao cục bộ và bản sao của người gọi đều cố gắng đóng cùng một trình xử lý tệp.bpo-40670: Xác thực các câu lệnh trong
timeit.Timerđáng tin cậy hơn. Bây giờ nó chấp nhận các câu lệnh "trống" (chỉ khoảng trắng và nhận xét) và từ chối các câu lệnh sai.bpo-41833: Hàm tạo
threading.Threadhiện sử dụng tên mục tiêu nếu đối số target được chỉ định nhưng đối số name bị bỏ qua.bpo-41817: sửa
tkinter.EventTypeEnum để tất cả các thành viên đều là chuỗi và không có thành viên nào là bộ dữ liệubpo-41810:
types.EllipsisType,types.NotImplementedTypevàtypes.NoneTypeđã được giới thiệu lại, cung cấp một tập hợp các loại mới có thể dễ dàng hiểu được bằng trình kiểm tra loại tĩnh.bpo-41815: Sửa lỗi phân tách SQLite3 khi sao lưu cơ sở dữ liệu đã đóng. Bản vá được đóng góp bởi Peter David McCormick.
bpo-41816: StrEnum đã thêm: nó đảm bảo rằng tất cả các thành viên đều là chuỗi hoặc ứng cử viên chuỗi
bpo-41517: sửa lỗi cho phép mở rộng Enums thông qua đa kế thừa
bpo-39587: sử dụng kiểu dữ liệu trộn chính xác khi xây dựng Enums
bpo-41792: Thêm hàm is_typeddict vào gõ.py để kiểm tra xem một loại có phải là lớp TypedDict không
Trước đây không có cách nào để kiểm tra điều đó mà không sử dụng API riêng tư. Xem relevant issue in python/typing.
bpo-41789: Honor
objectghi đè trong việc tạo lớpEnum(cụ thể là__str__,__repr__,__format__và__reduce_ex__).bpo-32218: Các thành viên
enum.Flagvàenum.IntFlaghiện có thể lặp lại được.bpo-39651: Khắc phục tình trạng đua trong phương pháp
call_soon_threadsafe()củaasyncio.ProactorEventLoop: không làm gì nếu ổ cắm ống tự đã bị đóng.bpo-1635741: Chuyển mô-đun mở rộng
mashalsang khởi tạo nhiều pha API (PEP 489).bpo-1635741: Chuyển mô-đun mở rộng
_stringsang khởi tạo nhiều pha API (PEP 489).bpo-41732: Đã thêm iterator vào
memoryview.bpo-41720: Đã sửa lỗi
turtle.Vec2D.__rmul__()cho các đối số không phải là int hoặc float.bpo-41696: Sửa lỗi xử lý chế độ gỡ lỗi trong
asyncio.run(). Điều này cho phép cài đặtPYTHONASYNCIODEBUGhoặc-X devđể bật chế độ gỡ lỗi asyncio khi sử dụngasyncio.run().bpo-41687: Sửa lỗi triển khai sendfile để tương thích với Solaris.
bpo-41662: Không còn ghi đè các ngoại lệ được nêu trong
__len__()của một chuỗi các tham số trongsqlite3vớiProgrammingError.bpo-39010: Khởi động lại
ProactorEventLooptrên Windows không còn ghi lạiConnectionResetErrorsgiả nữa.bpo-41638: Thông báo
ProgrammingErrorcho tham số vắng mặt trongsqlite3hiện chứa tên của tham số thay vì chỉ mục của nó khi tham số được cung cấp dưới dạng lệnh.bpo-41662: Đã khắc phục sự cố khi thay đổi danh sách tham số trong quá trình lặp trong
sqlite3.bpo-41513: Cải thiện độ chính xác của math.hypot(). Trong nội bộ, mỗi bước được tính toán với độ chính xác cao hơn để kết quả giờ đây hầu như luôn được làm tròn chính xác.
bpo-41609: Lệnh pdb whatis báo cáo chính xác các phương thức phiên bản là 'Phương thức' thay vì 'Hàm'.
bpo-39994: Đã sửa lỗi xử lý các lớp con dict của pprint ghi đè __repr__.
bpo-32751: Khi hủy tác vụ do hết thời gian chờ,
asyncio.wait_for()bây giờ sẽ đợi cho đến khi quá trình hủy hoàn tất cũng trong trường hợp timeout <= 0, giống như với thời gian chờ tích cực.bpo-37658:
asyncio.wait_for()hiện xử lý chính xác các cuộc đua từ lúc hủy chính nó đến khi hoàn thành việc chờ đợi.bpo-40782: Thay đổi phương thức asyncio.AbstractEventLoop.run_in_executor để không phải là một coroutine.
bpo-41520: Khắc phục hồi quy
codeopngăn việc biến cảnh báo biên dịch thành lỗi.bpo-41528: rùa sử dụng các hàm mô-đun toán học để chuyển đổi độ sang radian và ngược lại và tính định mức vectơ
bpo-41513: Cải tiến nhỏ về thuật toán cho math.hypot() và math.dist() mang lại những cải tiến nhỏ về tốc độ và độ chính xác.
bpo-41503: Đã sửa lỗi chạy đua giữa setTarget và tuôn ra trong log.handlers.MemoryHandler.
bpo-41497: Sửa lỗi UnicodeDecodeError tiềm ẩn trong mô-đun dis.
bpo-41467: Trên Windows, sửa giá trị trả về asyncio
recv_into()khi đóng ổ cắm/ống (BrokenPipeError): trả về0thay vì chuỗi byte trống (b'').bpo-41425: Làm cho ví dụ tài liệu tkinter có thể chạy được.
bpo-41421: Đơn giản hóa đại số thành Random.paretovariate(). Bây giờ nó ít bị lỗi làm tròn hơn một chút và nhanh hơn một chút. Các đầu vào từng gây ra ZeroDivisionError giờ đây gây ra OverflowError.
bpo-41440: Thêm hỗ trợ
os.cpu_count()cho VxWorks RTOS.bpo-41316: Sửa mô-đun
tarfileđể chỉ ghi tên cơ sở của tệp TAR vào tiêu đề nén GZIP.bpo-41384: Tăng TclError thay vì TypeError khi một tùy chọn không xác định được chuyển tới tkinter.OptionMenu.
bpo-41317: Sử dụng add_done_callback() trong asyncio.loop.sock_accept() để sớm hủy đăng ký người đọc khi hủy.
bpo-35328: Đặt biến môi trường
VIRTUAL_ENV_PROMPTkhi kích hoạtvenv.bpo-41341: Đánh giá đệ quy
typing.ForwardReftrongget_type_hints.bpo-41344: Ngăn chặn việc tạo đối tượng
shared_memory.SharedMemorybằngsize=0.bpo-41333:
collections.OrderedDict.pop()hiện nhanh hơn 2 lần.bpo-41288: Việc giải mã opcode NEWOBJ_EX không hợp lệ bằng cách triển khai C hiện tăng lên UnpicklingError thay vì gặp sự cố.
bpo-39017: Tránh vòng lặp vô hạn khi đọc các tệp TAR được chế tạo đặc biệt bằng mô-đun tarfile (CVE 2019-20907).
bpo-41273: Tăng tốc mọi hoạt động truyền tải bằng
_ProactorReadPipeTransportbằng cách gọirecv_intothay vìrecv, do đó không tạo bộ đệm mới cho mỗi lệnh gọirecvtrong vòng đọc của phương tiện vận chuyển.bpo-41235: Sửa lỗi xử lý trong
ssl.SSLContext.load_dh_params().bpo-41207: Trong distutils.spawn, khôi phục kỳ vọng rằng DistutilsExecError được nâng lên khi không tìm thấy lệnh.
bpo-29727: Đăng ký
array.arraylàmMutableSequence. Bản vá của Pablo Galindo.bpo-39168: Loại bỏ phương thức
__new__củatyping.Generic.bpo-41194: Khắc phục sự cố trong mô-đun
_ast: nó không thể tải nhiều lần nữa. Bây giờ nó sử dụng trạng thái toàn cầu thay vì trạng thái mô-đun.bpo-41195: Thêm thuộc tính ssl.SSLContext.security_level chỉ đọc để truy xuất mức bảo mật của ngữ cảnh.
bpo-41193: Chức năng atexit
write_history()của trình hoàn thiện dòng đọc hiện bỏ qua mọiOSErrorđể bỏ qua lỗi nếu hệ thống tệp ở chế độ chỉ đọc, thay vì chỉ bỏ quaFileNotFoundErrorvàPermissionError.bpo-41182: selector: sử dụng DefaultSelector dựa trên việc triển khai
bpo-41161: Mô-đun thập phân hiện yêu cầu libmpdec-2.5.0. Người dùng --with-system-libmpdec nên cập nhật thư viện hệ thống của họ.
bpo-40874: Mô-đun thập phân hiện yêu cầu libmpdec-2.5.0.
bpo-41138: Đã sửa lỗi mô-đun
traceCLI cho các tệp nguồn Python có mã hóa không phải UTF-8.bpo-31082: Sử dụng thuật ngữ "iterable" trong chuỗi tài liệu cho
functools.reduce().bpo-40521: Xóa danh sách tự do khỏi bộ sưu tập.deque().
bpo-31938: Sửa chữ ký giá trị mặc định của một số hàm trong mô-đun
select- của Anthony Sottile.bpo-41068: Đã sửa lỗi đọc các tệp có tên không phải ASCII từ kho lưu trữ ZIP ngay sau khi ghi chúng.
bpo-41058:
pdb.find_function()hiện xác định chính xác mã hóa tệp nguồn.bpo-41056: Hiện tại, các giá trị mô tả tệp không hợp lệ đã bị ngăn không cho truyền tới os.fpathconf. (được phát hiện bởi Coverity)
bpo-41056: Sửa lỗi vô hiệu hóa con trỏ NULL trong mô-đun ssl trong khi xảy ra MemoryError trong lệnh gọi lại keylog. (được phát hiện bởi Coverity)
bpo-41056: Đã khắc phục một trường hợp trong đó MemoryError trong mô-đun Zoneinfo có thể không được báo cáo hoặc không được báo cáo tại nguồn của nó. (được tìm thấy bởi Coverity)
bpo-41048: Hàm
mimetypes.read_mime_types()đọc tệp quy tắc bằng mã hóa UTF-8, không phải mã hóa miền địa phương. Bản vá của Srinivas Reddy Thatiparthy.bpo-41043: Đã sửa lỗi sử dụng
glob()trong stdlib: phần chữ của đường dẫn hiện luôn được thoát chính xác.bpo-41025: Đã khắc phục sự cố ngăn việc triển khai C của
zoneinfo.ZoneInfobị phân lớp.bpo-35018: Thêm lớp
xml.sax.handler.LexicalHandlercó trong các triển khai SAX XML khác.bpo-41002: Cải thiện hiệu suất của HTTPResponse.read với số lượng nhất định. Bản vá của Bruce Merry.
bpo-40448:
ensurepiphiện vô hiệu hóa việc sử dụng bộ đệmpipkhi cài đặt các phiên bản đi kèm củapipvàsetuptools. Bản vá của Krzysztof Konopko.bpo-40967: Đã xóa
asyncio.Task.current_task()vàasyncio.Task.all_tasks(). Bản vá được đóng góp bởi Rémi Lapeyre.bpo-40924: Đảm bảo
importlib.resources.pathtrả về đường dẫn hiện có cho trình đọc tài nguyên của SourceFileLoader. Tránh sự hồi quy được xác định trong bản chính trong khi giải pháp lâu dài được đưa ra.bpo-40955: Khắc phục rò rỉ bộ nhớ nhỏ trong mô-đun
subprocesskhi extra_groups được chỉ định.bpo-40855: Các hàm độ lệch chuẩn và phương sai trong mô-đun thống kê đã bỏ qua các đối số mu và xbar của chúng.
bpo-40939: Sử dụng trình phân tích cú pháp PEG mới khi tạo mô-đun stdlib
keyword.bpo-23427: Thêm thuộc tính
sys.orig_argv: danh sách các đối số dòng lệnh ban đầu được truyền cho tệp thực thi Python.bpo-33689: Bỏ qua các dòng trống hoặc chỉ có khoảng trắng trong tệp .pth. Điều này phù hợp với hành vi được ghi lại. Trước đây, các dòng trống khiến thư mục gói trang web xuất hiện nhiều lần trong sys.path. Bởi Ido Michael, những người đóng góp Malcolm Smith và Tal Einat.
bpo-40884: Đã thêm tham số
defaultsvàologging.Formatter, để cho phép chỉ định giá trị mặc định cho các trường tùy chỉnh. Bản vá của Asaf Alon và Bar Harel.bpo-39791: Làm mới importlib.metadata từ importlib_metadata 1.6.1.
bpo-40807: Dừng codeop._maybe_compile, được sử dụng bởi code.InteractiveInterpreter (và IDLE). từ việc phát ra mỗi cảnh báo ba lần.
bpo-32604: Khắc phục rò rỉ tham chiếu trong mô-đun
selectkhi mô-đun được nhập vào trình thông dịch phụ.bpo-39791: Trình tải tích hợp (SourceFileLoader và ZipImporter) hiện cung cấp các triển khai
TraversableResourceschoResourceReadervà chức năng dự phòng đã bị xóa.bpo-39314:
rlcompleter.Completervà trình bao Python tiêu chuẩn hiện đóng dấu ngoặc đơn cho các hàm không có đối số. Bản vá được đóng góp bởi Rémi Lapeyre.bpo-17005: Chức năng sắp xếp cấu trúc liên kết được giới thiệu ban đầu trong mô-đun
functoolsđã được chuyển sang mô-đungraphlibmới để phù hợp hơn với các công cụ mới và giữ nguyên phạm vi ban đầu của mô-đunfunctools. Bản vá của Pablo Galindobpo-40834: Sửa lỗi cắt bớt khi gửi đối tượng str bằng_xxsubinterpreters.channel_send.
bpo-40755: Thêm so sánh phong phú vào bộ sưu tập.Counter().
bpo-26407: Các lỗi không mong muốn khi gọi phương thức
__iter__không còn đượcTypeErrorche giấu trongcsv.reader(),csv.writer.writerow()vàcsv.writer.writerows().bpo-39384: Đã sửa lỗi email.contentmanager để cho phép set_content() đặt chuỗi rỗng.
bpo-40744: Mô-đun
sqlite3sử dụng các hàm SQLite API yêu cầu SQLite v3.7.3 trở lên. Bản vá này loại bỏ hỗ trợ cho các phiên bản SQLite cũ hơn và yêu cầu rõ ràng SQLite 3.7.3 cả khi xây dựng, biên dịch và thời gian chạy. Bản vá của Sergey Fedoseev và Erlend E. Aasland.bpo-40777: Khởi tạo PyDateTime_IsoCalendarDateType.tp_base trong thời gian chạy để tránh lỗi trên một số trình biên dịch.
bpo-38488: Cập nhật Ensurepip để cài đặt pip 20.1.1 và setuptools 47.1.0.
bpo-40792: Kết quả của
operator.index()hiện luôn có loạiintchính xác. Trước đây, kết quả có thể là một phiên bản của lớp con củaint.bpo-40767:
webbrowsergiờ đây đã tìm thấy chính xác trình duyệt mặc định trong các hệ thống Wayland thuần túy bằng cách kiểm tra biến môi trường WAYLAND_DISPLAY. Bản vá được đóng góp bởi Jérémy Attali.bpo-40791:
hashlib.compare_digest()sử dụng chức năngCRYPTO_memcmp()của OpenSSL khi OpenSSL khả dụng.bpo-40795: mô-đun
ctypes: Nếu ctypes không chuyển đổi được kết quả của lệnh gọi lại hoặc nếu hàm gọi lại ctypes đưa ra một ngoại lệ, thì sys.unraisablehook hiện được gọi với một bộ ngoại lệ. Trước đây lỗi doPyErr_Print()đăng nhập vào stderr.bpo-16995: Thêm
base64.b32hexencode()vàbase64.b32hexdecode()để hỗ trợ Mã hóa Base32 với Bảng chữ cái Hex mở rộng.bpo-30008: Sửa mã
sslđể tương thích với các bản dựng OpenSSL 1.1.x sử dụngno-deprecatedvà--api=1.1.0.bpo-30064: Khắc phục sự cố điều kiện cuộc đua asyncio
loop.sock_*bpo-40759: Không dùng mô-đun
symbolnữa.bpo-40756: Đối số thứ hai (bổ sung) của
LoggerAdapter.__init__hiện được mặc định là Không có.bpo-37129: Thêm cờ
os.RWF_APPENDmới choos.pwritev().bpo-40737: Khắc phục rò rỉ tham chiếu có thể xảy ra khi khởi tạo
sqlite3.bpo-40726: Xử lý các trường hợp
end_linenolàNonetrênast.increment_lineno().bpo-40698: Tải lên
distutilstạo ra các bản tóm tắt SHA2-256 và Blake2b-256. Thông báo MD5 bị bỏ qua nếu nền tảng chặn MD5.bpo-40695:
hashlibkhông còn quay lại triển khai hàm băm dựng sẵn khi OpenSSL cung cấp bản tóm tắt hàm băm và thuật toán bị chặn bởi chính sách bảo mật.bpo-9216:
hashlib.new()đã chuyểnusedforsecuritycho hàm tạo OpenSSL EVP_hashlib.new(). test_hashlib và test_smtplib xử lý chính sách bảo mật nghiêm ngặt tốt hơn.bpo-40614:
ast.parse()sẽ không phân tích cú pháp các biểu thức tự ghi tài liệu trong chuỗi f khifeature_versionđược truyền nhỏ hơn(3, 8).bpo-40626: Thêm phần mở rộng tệp h5 dưới dạng MIME Nhập application/x-hdf5, theo khuyến nghị của Nhóm HDF đối với các tệp dữ liệu có định dạng HDF5. Bản vá được đóng góp bởi Mark Schwab.
bpo-25920: Trên macOS, khi xây dựng Python cho macOS 10.4 trở lên, điều này không xảy ra với trình cài đặt macOS python.org,
socket.getaddrinfo()không còn sử dụng khóa bên trong để ngăn điều kiện chạy đua khi gọigetaddrinfo()vốn an toàn theo luồng kể từ macOS 10.5. Python 3.9 yêu cầu macOS 10.6 trở lên. Khóa bên trong gây ra hiện tượng treo ngẫu nhiên khi một luồng khác đang gọisocket.getaddrinfo(). Khóa này cũng được sử dụng trên FreeBSD cũ hơn 5.3, OpenBSD cũ hơn 201311 và NetBSD cũ hơn 4.bpo-40671: Chuẩn bị
_hashlibcho PEP 489 và sử dụngPyModule_AddType().bpo-32309: Đã thêm coroutine
asyncio.to_thread()mới. Nó chủ yếu được sử dụng để chạy các hàm liên kết IO trong một luồng riêng biệt để tránh chặn vòng lặp sự kiện và về cơ bản hoạt động như một phiên bản cấp cao củarun_in_executor()có thể trực tiếp lấy các đối số từ khóa.bpo-36543: Đã khôi phục mô-đun
xml.etree.cElementTreekhông được dùng nữa.bpo-40611: Hằng số
MAP_POPULATEhiện đã được thêm vào danh sách các cờ mô-đunmmapđã xuất.bpo-39881: PEP 554 để sử dụng trong bộ thử nghiệm. (Bản vá của Joannah Nanjekye)
bpo-13097:
ctypeshiện tăngArgumentErrorkhi gọi lại với hơn 1024 đối số.bpo-39385: Trình quản lý bối cảnh xác nhận thử nghiệm mới,
unittest.assertNoLogs()sẽ đảm bảo một khối mã nhất định không phát ra thông điệp tường trình bằng mô-đun ghi nhật ký. Đóng góp bởi Kit Yan Choi.bpo-23082: Đã cập nhật thông báo lỗi và tài liệu của PurePath.relative_to() để phản ánh rõ hơn hoạt động của hàm.
bpo-40318: Sử dụng SQLite3 trace v2 API, nếu có.
bpo-40105: ZipFile cắt ngắn các tệp để tránh bị hỏng khi nhận xét ngắn hơn được cung cấp ở chế độ chắp thêm ("a"). Bản vá của Jan Mazur.
bpo-40084: Fix
Enum.__dir__: dir(Enum.member) hiện bao gồm các thuộc tính cũng như phương thức.bpo-31122: ssl.wrap_socket() hiện tăng ssl.SSLEOFError thay vì OSError khi ngang hàng đóng kết nối trong quá trình đàm phán TLS
bpo-39728: sửa
_missing_mặc định đểValueErrortrùng lặp không được đặt làm__context__củaValueErrorban đầu.bpo-39244: Đã sửa lỗi
multiprocessing.context.get_all_start_methodsđể trả về đúng phương thức mặc định trước trên macOS.bpo-39040: Sửa lỗi phân tích cú pháp các tham số tiêu đề mime không hợp lệ bằng cách thu gọn khoảng trắng giữa các từ được mã hóa trong chuỗi trích dẫn trần.
bpo-38731: Thêm tùy chọn
--quietvào giao diện dòng lệnh củapy_compile. Bản vá của Gregory Schevchenko.bpo-35714:
struct.errorhiện được nâng lên nếu có ký tự null trong chuỗi định dạngstruct.bpo-38144: Đã thêm thông số root_dir và dir_fd trong
glob.glob().bpo-26543: Sửa lỗi
IMAP4.noop()khi bật chế độ gỡ lỗi (ví dụ:imaplib.Debug = 3).bpo-12178:
csv.writer()hiện đã thoát escapechar một cách chính xác khi đầu vào chứa escapechar. Bản vá của Catalin Iacob, Berker Peksag và Itay Elbirt.bpo-36290: các nút AST hiện đang tăng
TypeErrordo các đối số từ khóa xung đột. Bản vá được đóng góp bởi Rémi Lapeyre.bpo-33944: Đã thêm tính năng theo dõi gói trang web site.py ở chế độ dài dòng.
bpo-35078: Tái cấu trúc các phương thức formatweekday, formatmonthname trong các lớp LocaleHTMLCalendar và LocaleTextCalendar trong mô-đun lịch để gọi các phương thức lớp cơ sở. Điều này cho phép các lớp CSS có thể tùy chỉnh cho LocaleHTMLCalendar. Bản vá của Srinivas Reddy Thatiparthy
bpo-29620:
assertWarns()không còn tăngRuntimeExceptionkhi truy cập__warningregistry__của mô-đun để nhập mô-đun mới hoặc khi mô-đun mới được nhập vào một chuỗi khác. Bản vá của Kernc.bpo-31844: Xóa phương thức
ParserBase.error()khỏi mô-đun_markupbaseriêng tư và không có giấy tờ.html.parser.HTMLParserlà lớp con duy nhất củaParserBasevà việc triển khaierror()của nó không được dùng nữa trong Python 3.4 và bị xóa trong Python 3.5.bpo-34226: Sửa
cgi.parse_multipartkhông có content_length. Bản vá của Roger Duranbpo-33660: Sửa pathlib.PosixPath để giải quyết đúng đường dẫn tương đối nằm trên thư mục gốc.
bpo-28557: Cải thiện thông báo lỗi khi
rawio.readintohoạt động saibpo-26680: Phương thức d.is_integer() được thêm vào loại Decimal, để tương thích với các loại số khác.
bpo-26680: Phương thức x.is_integer() được tích hợp vào các kiểu trừu tượng của tháp số, Thực, Hợp lý và Tích phân, với cách triển khai mặc định phù hợp.
Tài liệu¶
bpo-41428: Thêm tài liệu cho PEP 604 (Cho phép viết các loại kết hợp là
X | Y).bpo-41774: Trong phần Lập trình FAQ "Trình tự (Bộ dữ liệu/Danh sách)", thêm "Làm cách nào để xóa nhiều mục khỏi danh sách".
bpo-35293: Sửa lỗi RemovedInSphinx40Warning khi xây dựng tài liệu. Bản vá của Donghee Na.
bpo-37149: Thay đổi liên kết tài liệu tkinter Shipman từ archive.org thành TkDocs. (Tài liệu đã bị xóa khỏi máy chủ NMT.) Liên kết mới phản hồi nhanh hơn nhiều và bao gồm một ghi chú giải thích ngắn gọn.
bpo-41726: Cập nhật thông tin hoàn tiền của
PyType_FromModuleAndSpec.bpo-41624: Sửa chữ ký
typing.Coroutine.bpo-40204: Bật tùy chọn Sphinx 3.2
c_allow_pre_v3và tắt tùy chọnc_warn_on_allowed_pre_v3để làm cho tài liệu tương thích với Sphinx 2 và Sphinx 3.bpo-41045: Thêm tài liệu về tính năng gỡ lỗi của chuỗi f.
bpo-41314: Đã thay đổi bản phát hành khi
from __future__ import annotationstrở thành mặc định từ4.0thành3.10(sau thay đổi trong PEP 563).bpo-40979: Tái cấu trúc kiểu gõ.rst, sắp xếp hơn 70 lớp, hàm và trang trí thành các phần phụ mới.
bpo-40552: Fix ở phần hướng dẫn 4.2. Đoạn mã hiện đã chính xác.
bpo-39883: Làm cho mã, ví dụ và công thức nấu ăn trong tài liệu Python được cấp phép theo giấy phép BSD0 dễ dãi hơn bên cạnh giấy phép Python 2.0 hiện có.
bpo-37703: Tài liệu được cập nhật để trình bày chi tiết toàn diện về hành vi của Gather.cancel()
Kiểm tra¶
bpo-41939: Fix test_site.test_license_exists_at_url(): gọi
urllib.request.urlcleanup()để đặt lạiurllib.request._openertoàn cầu. Bản vá của Victor Stinner.bpo-41731: Tạo pass test_cmd_line_script với tùy chọn '-vv'.
bpo-41602: Thêm các bài kiểm tra để xử lý SIGINT trong mô-đun runpy.
bpo-41521:
test.support: Đổi tên tham sốblacklistcủacheck__all__()thànhnot_exported.bpo-41477: Tạo ctypes tùy chọn trong test_genericalias.
bpo-41085: Khắc phục lỗi tràn số nguyên trong phương thức
array.array.index()trên Windows 64-bit cho chỉ mục lớn hơn2**31.bpo-41069:
test.support.TESTFNvà thư mục hiện tại để kiểm tra khi chạy quatest.regrtesthiện chứa các ký tự không phải mã ascii nếu có thể.bpo-38377: Trên Linux, bỏ qua các bài kiểm tra sử dụng đa xử lý nếu người dùng hiện tại không thể tạo tệp trong thư mục
/dev/shm/. Thêm chức năngskip_if_broken_multiprocessing_synchronize()vào mô-đuntest.support.bpo-41009: Khắc phục việc sử dụng trang trí
support.require_{linux|mac|freebsd}_version()làm trang trí lớp.bpo-41003: Sửa lỗi
test_copyregkhi cài đặtnumpy:test.pickletesterhiện lưu/khôi phục các bộ lọc cảnh báo khi nhậpnumpy, để bỏ qua các bộ lọc được cài đặt bởinumpy.bpo-40964: Tắt kiểm tra
imaplibtừ xa, máy chủ cyrus.andrew.cmu.edu đang chặn các kết nối đến.bpo-40927: Sửa test_binhex khi chạy hai lần: nó hiện sử dụng import_fresh_module() để đảm bảo rằng nó tăng DeprecationWarning mỗi lần.
bpo-17258: Bỏ qua một số kiểm tra
multiprocessingkhi thông báo băm MD5 bị chặn.bpo-31904: Tăng LOOPBACK_TIMEOUT lên 10 cho VxWorks RTOS.
bpo-38169: Tăng mức độ bao phủ mã cho SharedMemory và ShareableList
bpo-34401: Làm cho test_gdb chạy đúng cách trên HP-UX. Bản vá của Michael Osipov.
xây dựng¶
bpo-38249: Cập nhật
Py_UNREACHABLEđể sử dụng __buildin_unreachable() nếu chỉ trình biên dịch mới có thể sử dụng nó. Bản vá của Donghee Na.bpo-41617: Sửa tệp tiêu đề
pycore_bitutils.hđể hỗ trợ các phiên bản clang cũ:__builtin_bswap16()không có sẵn trong LLVM clang 3.0.bpo-40204: Ghim phiên bản Sphinx lên 2.3.1 trong
Doc/Makefile.bpo-36020: Các hàm C99
snprintf()vàvsnprintf()hiện được yêu cầu để xây dựng Python.bpo-40684:
make installhiện sử dụng biếnPLATLIBDIRcho thư mụclib-dynload/đích khi./configure --with-platlibdirđược sử dụng.bpo-40683: Đã khắc phục sự cố trong đó mô-đun
zoneinfovà các thử nghiệm của nó không được đưa vào khi Python được cài đặt vớimake.
cửa sổ¶
bpo-41744: Sửa lỗi tự động nhập tệp đạo cụ khi sử dụng gói Nuget.
bpo-41627: Thư mục trang web của người dùng dành cho phiên bản 32-bit hiện bao gồm hậu tố
-32để phân biệt với thư mục của trình thông dịch 64-bit.bpo-41526: Đã sửa lỗi bố cục trang cuối cùng của trình cài đặt bằng cách xóa lời cảm ơn đặc biệt tới Mark Hammond (với sự cho phép của anh ấy).
bpo-41492: Sửa mô tả xuất hiện trong lời nhắc UAC.
bpo-40948: Cải thiện thông báo sau cài đặt để hướng mọi người tới lệnh "py".
bpo-41412: Trình cài đặt hiện sẽ không cài đặt được trên Windows 7 và Windows 8. Hơn nữa, phần phụ thuộc UCRT hiện luôn được tải xuống theo yêu cầu.
bpo-40741: Cập nhật bản phát hành Windows để bao gồm SQLite 3.32.3.
bpo-41142:
msilibhiện hỗ trợ tạo các tệp CAB với đường dẫn tệp không phải ASCII và thêm các tệp có đường dẫn tệp không phải ASCII vào chúng.bpo-41074: Đã sửa lỗi hỗ trợ các tên không phải ASCII trong các hàm
msilib.OpenDatabase()vàmsilib.init_database()và không phải ASCII SQL trong phương thứcmsilib.Database.OpenView().bpo-41039: Chuyển hướng ABI ổn định DLL (python3.dll) hiện sử dụng
#pragma comment(linker)để tái xuất.bpo-40164: Cập nhật Windows OpenSSL lên 1.1.1g
bpo-39631: Thay đổi loại MIME đã đăng ký cho các tệp
.pytrên Windows thànhtext/x-pythonthay vìtext/plain.bpo-40677: Xác định IO_REPARSE_TAG_APPEXECLINK theo cách thủ công trong trường hợp một số SDK Windows cũ không có nó.
bpo-37556: Mở rộng trợ giúp py.exe để đề cập đến các phần ghi đè thông qua các tệp venv, shebang, biến môi trường & ini.
macOS¶
bpo-41557: Cập nhật trình cài đặt macOS để sử dụng SQLite 3.33.0.
bpo-39580: Tránh mở cửa sổ Finder nếu chạy trình cài đặt từ dòng lệnh. Bản vá được đóng góp bởi Rick Heil.
bpo-41100: Sửa lỗi cấu hình khi xây dựng trên macOS 11. Lưu ý rằng bản phát hành Python hiện tại đã được phát hành ngay sau bản xem trước đầu tiên dành cho nhà phát triển của macOS 11 (Big Sur); có các vấn đề đã biết khác khi xây dựng và chạy trên bản xem trước dành cho nhà phát triển. Big Sur dự kiến sẽ được hỗ trợ đầy đủ trong bản phát hành sửa lỗi trong tương lai của Python 3.8.x và 3.9.0.
bpo-40741: Cập nhật trình cài đặt macOS để sử dụng SQLite 3.32.3.
bpo-41005: đã khắc phục sự cố cài đặt XDG không cho phép macos mở trình duyệt trong webbrowser.py
bpo-40741: Cập nhật trình cài đặt macOS để sử dụng SQLite 3.32.2.
IDLE¶
bpo-41775: Sử dụng 'IDLE Shell' làm tiêu đề shell
bpo-35764: Viết lại phần tài liệu Calltips.
bpo-40181: Trong chú giải lệnh gọi, hãy ngừng nhắc rằng '/' đánh dấu sự kết thúc của các đối số chỉ có vị trí.
bpo-41468: Cải thiện thông báo lỗi khi chạy IDLE (mà người dùng không bao giờ nên thấy).
bpo-41373: Lưu các tệp được tải mà không có kết thúc dòng, chẳng hạn như khi trống hoặc các kết thúc dòng khác, bằng cách đặt kết thúc dòng của nó thành mặc định của hệ thống. Sửa lỗi hồi quy trong 3.8.4 và 3.9.0b4.
bpo-41300: Lưu tệp bằng ký tự không phải mã ascii. Sửa lỗi hồi quy được phát hành trong 3.9.0b4 và 3.8.4.
bpo-37765: Thêm từ khóa vào danh sách hoàn thành tên mô-đun. Viết lại phần Hoàn thành của tài liệu IDLE.
bpo-41152: Mã hóa của
stdin,stdoutvàstderrtrong IDLE hiện tại luôn là UTF-8.bpo-41144: Làm cho Mô-đun mở mở một mô-đun đặc biệt như os.path.
bpo-39885: Làm cho menu ngữ cảnh Cắt và Sao chép hoạt động trở lại khi nhấp chuột phải vào vùng chọn.
bpo-40723: Tạo test_idle vượt qua khi chạy sau khi nhập.
C API¶
bpo-41936: Đã xóa các macro không có giấy tờ
Py_ALLOW_RECURSIONvàPy_END_ALLOW_RECURSIONcũng như trườngrecursion_criticalcủa cấu trúcPyInterpreterState.bpo-41692: Hàm
PyUnicode_InternImmortal()hiện không được dùng nữa và sẽ bị xóa trong Python 3.12: thay vào đó hãy sử dụngPyUnicode_InternInPlace(). Bản vá của Victor Stinner.bpo-41842: Thêm chức năng
PyCodec_Unregister()để hủy đăng ký chức năng tìm kiếm codec.bpo-41834: Loại bỏ biến
_Py_CheckRecursionLimit: nó đã được thay thế bằngceval.recursion_limitcủa cấu trúcPyInterpreterState. Bản vá của Victor Stinner.bpo-41689: Các loại được tạo bằng
PyType_FromSpec()hiện có thể truy cập được bất kỳ chữ ký nào trong khetp_doccủa chúng từ__text_signature__.bpo-41524: Sửa lỗi trong
PyOS_mystrnicmp()vàPyOS_mystricmp()làm tăng con trỏ vượt quá cuối chuỗi.bpo-41324: Thêm một viên nang thập phân tối thiểu API. Zz002zz hỗ trợ chuyển đổi nhanh giữa các số thập phân lên tới 38 chữ số và biểu diễn bộ ba của chúng dưới dạng cấu trúc C.
bpo-30155: Thêm macro
PyDateTime_DATE_GET_TZINFO()vàPyDateTime_TIME_GET_TZINFO()để truy cập các thuộc tínhtzinfocủa các đối tượngdatetime.datetimevàdatetime.time.bpo-40170: Hoàn nguyên thay đổi
PyType_HasFeature(): nó đọc lại trực tiếp thành viênPyTypeObject.tp_flagskhi C API giới hạn không được sử dụng, thay vì luôn gọiPyType_GetFlags()để ẩn chi tiết triển khai.bpo-41123: Xóa
PyUnicode_AsUnicodeCopy.bpo-41123: Đã xóa
PyLong_FromUnicode().bpo-41123: Đã xóa
PyUnicode_GetMax().bpo-41123: Đã xóa các hàm
Py_UNICODE_str*thao tác với chuỗiPy_UNICODE*.bpo-41103:
PyObject_AsCharBuffer(),PyObject_AsReadBuffer(),PyObject_CheckReadBuffer()vàPyObject_AsWriteBuffer()bị xóa. Vui lòng chuyển sang giao thức đệm mới;PyObject_GetBuffer()vàPyBuffer_Release().bpo-36346: Tăng cảnh báo ngừng sử dụng đối với
PyUnicode_FromUnicode(NULL, size)vàPyUnicode_FromStringAndSize(NULL, size)vớisize > 0.bpo-36346: Đánh dấu
Py_UNICODE_COPY,Py_UNICODE_FILL,PyUnicode_WSTR_LENGTH,PyUnicode_FromUnicode,PyUnicode_AsUnicodevàPyUnicode_AsUnicodeAndSizelà không dùng nữa trong C. XóaPy_UNICODE_MATCHkhông được dùng nữa và bị hỏng kể từ Python 3.3.bpo-40989: Các macro
PyObject_INIT()vàPyObject_INIT_VAR()lần lượt trở thành bí danh của các hàmPyObject_Init()vàPyObject_InitVar().bpo-36020: Trên Windows,
#include "pyerrors.h"không còn xác định macrosnprintfvàvsnprintfnữa.bpo-40943: Macro
PY_SSIZE_T_CLEANhiện phải được xác định để sử dụng các định dạngPyArg_ParseTuple()vàPy_BuildValue()sử dụng#:es#,et#,s#,u#,y#,z#,U#vàZ#. Xem Parsing arguments and building values và PEP 353.bpo-40910: Xuất rõ ràng hàm
Py_GetArgcArgv()sang C API và ghi lại hàm đó. Trước đây, nó đã được xuất ngầm và không còn hoạt động do Python được xây dựng bằng-fvisibility=hidden.bpo-40724: Cho phép xác định vùng đệm trong thông số loại.
bpo-40679: Khắc phục sự cố
_PyEval_EvalCode()nếu đối số qualname là NULL.bpo-40839: Gọi
PyDict_GetItem()mà không giữ GIL đã được cho phép vì lý do lịch sử. Nó không còn được phép.bpo-40826:
PyOS_InterruptOccurred()hiện không thành công với lỗi nghiêm trọng nếu nó được gọi khi GIL được phát hành.bpo-40792: Kết quả của
PyNumber_Index()hiện luôn có loạiintchính xác. Trước đây, kết quả có thể là một phiên bản của lớp con củaint.bpo-39573: Chuyển đổi macro
Py_REFCNT()vàPy_SIZE()thành các hàm nội tuyến tĩnh. Chúng không thể được sử dụng làm giá trị l nữa: sử dụngPy_SET_REFCNT()vàPy_SET_SIZE()để đặt số lượng và kích thước tham chiếu đối tượng. Thay đổi này nhằm mục đích không tương thích ngược, nhằm chuẩn bị cho C API có cấu trúcPyObjectmờ đục.bpo-40703: Các hàm PyType_FromSpec*() không còn ghi đè thuộc tính "__module__" của loại nếu nó được đặt qua "Py_tp_members" hoặc "Py_tp_getset".
bpo-39583: Xóa các khai báo "extern C" thừa khỏi
Include/cpython/*.h.
Python 3.9.0 beta 1¶
Release date: 2020-05-19
Bảo mật¶
Cốt lõi và nội dung¶
bpo-40663: Tạo chính xác các chú thích trong đó dấu ngoặc đơn bị bỏ qua nhưng bắt buộc (ví dụ:
Type[(str, int, *other))].bpo-40596: Đã sửa lỗi
str.isidentifier()cho các chuỗi không được chuẩn hóa chứa các ký tự không phải BMP trên Windows.bpo-40593: Cải thiện lỗi cú pháp đối với các ký tự không hợp lệ trong mã nguồn.
bpo-40585: Đã sửa lỗi khi sử dụng
codeop.compile_command()khiến ngoại lệ bị nuốt chửng với trình phân tích cú pháp mới. Bản vá của Pablo Galindobpo-40502: Khởi tạo
n->n_col_offset. (Bản vá của Joannah Nanjekye)bpo-40527: Sửa lỗi phân tích cú pháp đối số dòng lệnh: không còn ghi lỗi nhiều lần vào stderr.
bpo-1635741: Cổng
errnođể khởi tạo nhiều pha (PEP 489).bpo-40523: Thêm các chuyển tiếp cho
hash()vàreversed()vào các đối tượngweakref.proxy. Bản vá của Pablo Galindo.bpo-1635741: Cổng
syslogđể khởi tạo nhiều pha (PEP 489).bpo-40246: Báo cáo thông báo lỗi chuyên biệt cho tiền tố chuỗi không hợp lệ, được giới thiệu trong bpo-40246, đang bị hoàn nguyên do lo ngại về khả năng tương thích ngược đối với các chuỗi ngay sau một từ khóa dành riêng mà không có khoảng trắng giữa chúng. Các cấu trúc như
bg="#d00" if clear else"#fca"không thể phân tích cú pháp, đây không phải là sự cố có thể chấp nhận được trong thời gian ngắn như vậy.bpo-40417: Khắc phục cảnh báo ngừng sử dụng mô-đun imp khi gọi PyImport_ReloadModule. Bản vá của Robert Rouhani.
bpo-40408: Đã sửa lỗi hỗ trợ các biến loại lồng nhau trong GenericAlias (ví dụ:
list[list[T]]).bpo-1635741: Mô-đun cổng _stat để khởi tạo nhiều pha (PEP 489).
bpo-29587: Bật chuỗi ngoại lệ ngầm khi gọi
generator.throw().bpo-40328: Thêm công cụ tạo tiêu đề ánh xạ cho CJKCodecs.
bpo-40228: Cài đặt frame.f_lineno hiện là w.r.t mạnh mẽ. những thay đổi trong trình biên dịch mã nguồn sang mã byte
bpo-38880: Đã thêm khả năng liệt kê các trình thông dịch được liên kết với các đầu kênh trong mô-đun trình thông dịch phụ nội bộ.
bpo-37986: Cải thiện hiệu suất của
PyLong_FromDouble()cho các giá trị phù hợp với long.
Thư viện¶
bpo-40662: Đã sửa lỗi
ast.get_source_segment()cho các nút ast có thông tin vị trí không đầy đủ. Bản vá của Irit Katriel.bpo-40536: Đã thêm chức năng
available_timezones()vào mô-đunzoneinfo. Bản vá của Paul Ganssle.bpo-40645:
hmac.HMAChiển thị chi tiết triển khai nội bộ. Các thuộc tínhdigest_cons,innervàouterkhông được dùng nữa và sẽ bị xóa trong tương lai.bpo-40645: Mô-đun bên trong
_hashlibbao bọc và hiển thị HMAC API của OpenSSL. Mã mới sẽ được sử dụng trong Python 3.10 sau khi các chi tiết triển khai nội bộ của mô-đun Python HMAC thuần túy không còn là một phần của API công khai.bpo-40637: Các mô-đun băm tích hợp hiện có thể bị vô hiệu hóa hoặc kích hoạt có chọn lọc bằng
configure --with-builtin-hashlib-hashes=sha3,blake1hoặc--without-builtin-hashlib-hashes.bpo-37630: Mô-đun
hashlibhiện có thể sử dụng hàm băm SHA3 và SHAKE XOF từ OpenSSL khi khả dụng.bpo-40257: Hoàn nguyên các thay đổi về
inspect.getdoc().bpo-40607: Khi hủy một tác vụ do hết thời gian chờ,
asyncio.wait_for()sẽ truyền bá ngoại lệ nếu xảy ra lỗi trong quá trình hủy. Bản vá của Roman Skurikhin.bpo-40612: Khắc phục các trường hợp khó khăn trong định dạng SyntaxError. Nếu offset là <= 0 thì không có dấu mũ nào được in. Nếu phần bù > độ dài dòng, dấu mũ được in chỉ sau ký tự cuối cùng.
bpo-40597: Nếu dòng nội dung văn bản dài hơn Policy.max_line_length, hãy luôn sử dụng mã hóa nội dung để đảm bảo chúng được gói gọn.
bpo-40571: Đã thêm functools.cache() như một cách đơn giản hơn, dễ khám phá hơn để truy cập vào biến thể bộ nhớ đệm không giới hạn của lru_cache(maxsize=None).
bpo-40503: PEP 615, mô-đun
zoneinfo. Thêm hỗ trợ cho cơ sở dữ liệu múi giờ IANA.bpo-40397: Đã xóa thuộc tính
__args__và__parameters__khỏi các bí danh chung đặc biệt nhưtyping.List(không được đăng ký).bpo-40549: Chuyển đổi mô-đun posixmodule.c ("posix" hoặc "nt") thành khởi tạo nhiều pha (PEP 489).
bpo-31033: Thêm đối số
msgvàoFuture.cancel()vàTask.cancel().bpo-40541: Đã thêm tham số counts tùy chọn vào Random.sample().
bpo-40515: Các mô-đun
sslvàhashlibhiện đang tích cực kiểm tra xem OpenSSL có được xây dựng với sự hỗ trợ luồng hay không. Python 3.7.0 bắt buộc phải hỗ trợ luồng và không còn hoạt động an toàn với các bản dựng không có luồng.bpo-31033: Khi
asyncio.Taskbị hủy, truy nguyên ngoại lệ bây giờ sẽ quay trở lại nơi nhiệm vụ bị gián đoạn lần đầu tiên.bpo-40504: Các đối tượng
functools.lru_cache()hiện có thể là mục tiêu của các điểm yếu.bpo-40559: Khắc phục khả năng rò rỉ bộ nhớ trong quá trình triển khai C của
asyncio.Task.bpo-40480:
fnmatch.fnmatch()có thể mất thời gian theo cấp số nhân khi có nhiều ký tự mẫu*. Điều này đã được sửa chữa bằng cách tạo ra các biểu thức chính quy phức tạp hơn để tránh việc quay lại vô ích.bpo-40495:
compileallhiện có thể sử dụng liên kết cứng để ngăn trùng lặp trong trường hợp các tệp.pyccho các mức tối ưu hóa khác nhau có cùng nội dung.bpo-40457: Mô-đun ssl hiện hỗ trợ các bản dựng OpenSSL không có phương thức TLS 1.0 và 1.1.
bpo-40355: Cải thiện báo cáo lỗi trong
ast.literal_eval()khi có các nútast.Dictkhông đúng định dạng thay vì âm thầm bỏ qua mọi phần tử không tuân thủ. Bản vá của Curtis Bucher.bpo-40465: Không dùng đối số random tùy chọn cho random.shuffle().
bpo-40459:
platform.win32_ver()hiện tạo ra các chuỗi ptype chính xác thay vì các chuỗi trống.bpo-39435: Đối số đầu tiên của
pickle.loads()hiện chỉ có vị trí.bpo-39305: Cập nhật
nntplibđể hợp nhấtnntplib.NNTPvànntplib._NNTPBase. Bản vá của Donghee Na.bpo-32494: Cập nhật
dbm.gnuđể sử dụng gdbm_count nếu có thể khi gọilen(). Bản vá của Donghee Na.bpo-40453: Thêm tham số chỉ từ khóa
isolated=Truevào_xxsubinterpreters.create(). Trình thông dịch phụ bị cô lập không thể tạo ra các luồng, tạo ra một tiến trình con hoặc gọios.fork().bpo-40286: Xóa
_random.Random.randbytes(): triển khai C củarandbytes(). Triển khai phương thức trong Python để dễ dàng phân lớp con:randbytes()hiện trực tiếp sử dụng lạigetrandbits().bpo-40394: Đã thêm đối số mặc định vào
difflib.SequenceMatcher.find_longest_match().bpo-39995: Khắc phục tình trạng chạy đua trong concurrent.futures._ThreadWakeup: quyền truy cập vào _ThreadWakeup hiện được bảo vệ bằng khóa tắt máy.
bpo-30966:
Process.shutdown(wait=True)củaconcurrent.futureshiện đóng hàng đợi kết quả một cách rõ ràng.bpo-30966: Thêm phương thức
close()mới vào lớpSimpleQueueđể đóng hàng đợi một cách rõ ràng.bpo-39966: Hoàn nguyên bpo-25597.
unittest.mock.MagicMockvới tập hợp kết thúc sử dụng các giá trị trả về mặc định cho các phương thức ma thuật.bpo-39791: Đã thêm chức năng
files()vào importlib.resources với sự hỗ trợ cho các thư mục con trong dữ liệu gói, khớp với backport trong importlib_resources 1.5.bpo-40375:
imaplib.IMAP4.unselect()được thêm vào. Bản vá của Donghee Na.bpo-40389:
repr()hiện trả vềtyping.Optional[T]khi được gọityping.Unionthuộc hai loại, một trong số đó làNoneType.bpo-40291: Thêm hỗ trợ cho ổ cắm CAN_J1939 (có sẵn trên Linux 5.4+)
bpo-40273:
types.MappingProxyTypehiện có thể đảo ngược.bpo-39075: Repr cho
types.SimpleNamespacehiện được chèn theo thứ tự thay vì theo thứ tự bảng chữ cái.bpo-40192: Trên AIX,
thread_time()hiện được triển khai vớithread_cputime()có độ phân giải nano giây, thay vìclock_gettime(CLOCK_THREAD_CPUTIME_ID)có độ phân giải 10 mili giây. Bản vá của Batuhan Taskaya.bpo-40025: Tăng TypeError khi _generate_next_value_ được xác định sau các thành viên. Bản vá của Ethan Onstott.
bpo-39058: Trong mô-đun argparse, đại diện cho Namespace() và các chủ sở hữu đối số khác hiện được hiển thị trong thuộc tính thứ tự đã được thêm vào. Trước đây, nó hiển thị theo thứ tự bảng chữ cái mặc dù thứ tự đối số vẫn được giữ nguyên cho người dùng thấy được các phần của mô-đun.
bpo-24416: Các phương thức
isocalendar()củadatetime.datevàdatetime.datetimehiện trả về named tuple thay vìtuple.
Tài liệu¶
bpo-34790: Thêm phiên bản loại bỏ để chuyển coros rõ ràng vào tài liệu của
asyncio.wait()bpo-40561: Cung cấp tài liệu cho các chức năng mở trình duyệt web.
bpo-40499: Đề cập rằng
asyncio.wait()yêu cầu một tập hợp các sản phẩm có thể chờ được.bpo-39705: Ví dụ hướng dẫn về sắp xếp() trong phần Kỹ thuật vòng lặp được giải thích rõ hơn. Ngoài ra còn có một ví dụ mới để giải thích hành vi cơ bản của Sort().
bpo-39435: Sửa chữ ký sai cho
pickle.loads()trong tài liệu
Kiểm tra¶
xây dựng¶
cửa sổ¶
bpo-40650: Bao gồm winock2.h trong pytime.c cho khoảng thời gian.
bpo-40458: Tăng dung lượng ngăn xếp dành riêng để tránh sự cố tràn trên Windows.
bpo-39148: Thêm hỗ trợ IPv6 cho điểm cuối gói dữ liệu
asynciotrong ProactorEventLoop. Thay đổi ngoại lệ được nêu ra đối với các họ địa chỉ không xác định thành ValueError vì nó không đến từ Windows API.
macOS¶
bpo-34956: Khi xây dựng Python trên macOS từ nguồn,
_tkinterhiện liên kết với các khung Tcl và Tk không thuộc hệ thống nếu chúng được cài đặt trong/Library/Frameworks, như trường hợp trên các bản phát hành macOS cũ hơn. Nếu macOS SDK được định cấu hình rõ ràng, bằng cách sử dụng--enable-universalsdk=hoặc-isysroot, chỉ có SDK được tìm kiếm. Hành vi mặc định vẫn có thể được ghi đè bằng--with-tcltk-includesvà--with-tcltk-libs.bpo-35569: Hiển thị các tùy chọn ổ cắm RFC 3542 IPv6.
Công cụ/Bản trình diễn¶
bpo-40479: Cập nhật trình trợ giúp multissltest để kiểm tra với OpenSSL 1.0.2, 1.1.0, 1.1.1 và 3.0.0-alpha mới nhất.
bpo-40431: Sửa lỗi đánh máy cú pháp trong
turtledemohiện tạo raSyntaxError.bpo-40163: Sửa công cụ multissltest. OpenSSL đã thay đổi tải xuống URL cho các bản phát hành cũ. Công cụ multissltest hiện cố gắng tải xuống từ các URL tải xuống hiện tại và cũ.
C API¶
bpo-39465: Xóa chức năng
_PyUnicode_ClearStaticStrings()khỏi C API.bpo-38787: Thêm macro PyCFunction_CheckExact() để kiểm tra loại chính xác vì giờ đây chúng tôi cho phép các kiểu con của PyCFunction, cũng như PyCMethod_CheckExact() và PyCMethod_Check() cho kiểu con PyCMethod mới.
bpo-40545: Khai báo
_PyErr_GetTopmostException()vớiPyAPI_FUNC()để xuất đúng hàm trong C API. Chức năng này vẫn giữ tiền tố riêng tư (_Py).bpo-40412: Vô hiệu hóa inittab_copy trong quá trình hoàn thiện, ngăn việc khởi tạo trình thông dịch trong tương lai trong tình huống được nhúng bị lỗi. Bản vá của Gregory Szorc.
bpo-40429: Hàm
PyThreadState_GetFrame()hiện trả về một tham chiếu mạnh đến khung.bpo-40428: Xóa các chức năng sau khỏi C API. Gọi
PyGC_Collect()một cách rõ ràng để giải phóng tất cả danh sách miễn phí.PyAsyncGen_ClearFreeLists()PyContext_ClearFreeList()PyDict_ClearFreeList()PyFloat_ClearFreeList()PyFrame_ClearFreeList()PyList_ClearFreeList()PySet_ClearFreeList()PyTuple_ClearFreeList()
bpo-40421: Chức năng
PyFrame_GetBack()mới: lấy khung tiếp theo khung bên ngoài.bpo-40421: Chức năng
PyFrame_GetCode()mới: trả về tham chiếu mượn cho mã khung.bpo-40217: Đảm bảo rằng các phiên bản của loại được tạo bằng
PyType_FromSpecWithBases()sẽ truy cập đối tượng lớp của nó khi duyệt qua các tham chiếu trong trình thu gom rác (được triển khai dưới dạng phần mở rộng củatp_traverseđược cung cấp). Bản vá của Pablo Galindo.bpo-38787: Trạng thái Mô-đun C hiện có thể truy cập được từ các phương thức loại heap do C xác định (PEP 573). Bản vá của Marcel Plch và Petr Viktorin.
Python 3.9.0 alpha 6¶
Release date: 2020-04-27
Bảo mật¶
bpo-40121: Khắc phục các sự kiện kiểm tra xảy ra khi tạo ổ cắm mới.
bpo-39073: Không cho phép CR hoặc LF trong các đối số email.headerregistry.Address để bảo vệ khỏi các cuộc tấn công chèn tiêu đề.
bpo-39503: CVE 2020-8492: Lớp
AbstractBasicAuthHandlercủa mô-đunurllib.requestsử dụng biểu thức chính quy không hiệu quả mà kẻ tấn công có thể khai thác để gây ra sự từ chối dịch vụ. Sửa biểu thức chính quy để ngăn chặn việc quay lại thảm khốc. Lỗ hổng được báo cáo bởi Ben Caller và Matt Schwager.
Cốt lõi và nội dung¶
bpo-40313: Cải thiện hiệu suất của bytes.hex().
bpo-40334: Chuyển sang trình phân tích cú pháp mới, dựa trên PEG. Để biết thêm chi tiết, hãy xem PEP 617. Để tạm thời chuyển về trình phân tích cú pháp cũ, hãy sử dụng
-X oldparserhoặcPYTHONOLDPARSER=1. Trong Python 3.10, chúng tôi sẽ loại bỏ hoàn toàn trình phân tích cú pháp cũ, bao gồm mô-đunparser(đã không được dùng nữa) và mọi thứ phụ thuộc vào nó.bpo-40267: Sửa mã thông báo để hiển thị thông báo lỗi chính xác, khi có
SyntaxErrorở ký tự đầu vào cuối cùng và không có dòng mới nào theo sau. Trước đây nó làunexpected EOF while parsing, trong khi lẽ ra nó phải làinvalid syntax.bpo-39522: Phân tích chính xác tiền tố
urõ ràng cho các chuỗi khi kích hoạt đánh giá bị trì hoãn cho các chú thích. Bản vá của Batuhan Taskaya.bpo-40246: Báo cáo thông báo lỗi chuyên biệt,
invalid string prefix, khi mã thông báo gặp một chuỗi có tiền tố không hợp lệ.bpo-40082: Sửa trình xử lý tín hiệu: giờ đây nó luôn sử dụng trình thông dịch chính, thay vì cố gắng lấy trạng thái luồng Python hiện tại.
bpo-37388: str.encode() và str.decode() không còn kiểm tra mã hóa và lỗi trong chế độ phát triển hoặc chế độ gỡ lỗi trong quá trình hoàn thiện Python. Bộ máy codec không còn có thể hoạt động với các cuộc gọi rất muộn tới str.encode() và str.decode().
bpo-40077: Khắc phục các phản ánh có thể xảy ra trong
_json, bản ghi nhớ của PyScannerObject phải được duyệt qua.bpo-37207: Tăng tốc độ cuộc gọi tới
dict()bằng cách sử dụng quy ước gọi PEP 590vectorcall.bpo-40141: Thêm thông tin cột và dòng vào các nút
ast.keyword. Bản vá của Pablo Galindo.bpo-1635741: Cổng
resourceđể khởi tạo nhiều pha (PEP 489).bpo-1635741: Cổng
mathđể khởi tạo nhiều pha (PEP 489).bpo-1635741: Chuyển mô-đun _uuid sang khởi tạo nhiều pha (PEP 489).
bpo-40077: Chuyển đổi mô-đun json để sử dụng
PyType_FromSpec().bpo-40067: Cải thiện thông báo lỗi cho nhiều biểu thức dấu sao trong một bài tập. Bản vá của Furkan Onder
bpo-1635741: Mô-đun cổng _functools để khởi tạo nhiều pha (PEP 489). Bản vá của Paulo Henrique Silva.
bpo-1635741: Mô-đun toán tử cổng để khởi tạo nhiều pha (PEP 489). Bản vá của Paulo Henrique Silva.
bpo-20526: Sửa
PyThreadState_Clear().PyThreadState.framelà tham chiếu mượn, không phải tham chiếu mạnh:PyThreadState_Clear()không được gọiPy_CLEAR(tstate->frame).bpo-1635741: Mô-đun thời gian cổng để khởi tạo nhiều pha (PEP 489). Bản vá của Paulo Henrique Silva.
bpo-1635741: Mô-đun mở rộng cổng _weakref để khởi tạo nhiều pha (PEP 489).
bpo-40020: Khắc phục sự cố rò rỉ và sự cố sau đó trong phân tích cú pháp.c do sử dụng sai mục đích realloc trên một đường dẫn mã hiếm gặp.
bpo-39939: Đã thêm các phương thức str.removeprefix và str.removesuffix cũng như các phương thức byte, bytearray và Collection.UserString tương ứng để xóa các phụ tố khỏi chuỗi nếu có. Xem PEP 616 để biết mô tả đầy đủ. Bản vá của Dennis Sweeney.
bpo-39481: Triển khai PEP 585. Điều này hỗ trợ list[int], tuple[str, ...] v.v.
bpo-32894: Hỗ trợ unparsing số vô cực trong chú thích bị trì hoãn. Bản vá của Batuhan Taşkaya.
bpo-37207: Tăng tốc độ cuộc gọi tới
list()bằng cách sử dụng quy ước gọi PEP 590vectorcall. Bản vá của Mark Shannon.
Thư viện¶
bpo-40398:
typing.get_args()hiện luôn trả về một bộ dữ liệu trống cho các bí danh chung đặc biệt.bpo-40396: Các hàm
typing.get_origin(),typing.get_args()vàtyping.get_type_hints()hiện hỗ trợ các bí danh chung nhưlist[int].bpo-38061: Tối ưu hóa mô-đun
subprocesstrên FreeBSD bằngclosefrom(). Một tòa nhà cao tầngclose(fd)có giá rẻ, nhưng khisysconf(_SC_OPEN_MAX)ở mức cao, vòng lặp gọiclose(fd)trên mỗi bộ mô tả tệp có thể mất vài mili giây.Cách giải quyết trên FreeBSD để cải thiện hiệu suất là tải và gắn mô-đun hạt nhân fdescfs, nhưng tính năng này không được bật theo mặc định.
Bản vá đầu tiên của Ed Maste (emaste), Conrad Meyer (cem), Kyle Evans (kevans) và Kubilay Kocak (koobs): https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242274
bpo-38061: Trên FreeBSD,
os.closerange(fd_low, fd_high)hiện gọiclosefrom(fd_low)nếu fd_high lớn hơn hoặc bằngsysconf(_SC_OPEN_MAX).Bản vá đầu tiên của Ed Maste (emaste), Conrad Meyer (cem), Kyle Evans (kevans) và Kubilay Kocak (koobs): https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242274
bpo-40360: Mô-đun
lib2to3đang chờ ngừng hoạt động do PEP 617.bpo-40138: Khắc phục việc triển khai
os.waitpid()của Windows đối với mã thoát lớn hơnINT_MAX >> 8. Trạng thái thoát hiện được hiểu là số không dấu.bpo-39942: Đặt "__main__" làm tên mô-đun mặc định khi thiếu "__name__" trong
typing.TypeVar. Bản vá của Weipeng Hong.bpo-40275: Gói
logginghiện chỉ được nhập một cách lười biếng trongunittestkhi xác nhậnassertLogs()được sử dụng.bpo-40275: Gói
asynciohiện chỉ được nhập một cách lười biếng trongunittestkhi lớpIsolatedAsyncioTestCaseđược sử dụng.bpo-40330: Trong
ShareableList.__setitem__(), hãy kiểm tra kích thước của một mục chuỗi mới sau khi mã hóa nó thành utf-8, chứ không phải trước đó.bpo-40148: Đã thêm
pathlib.Path.with_stem()để tạo Đường dẫn mới với phần thân được thay thế.bpo-40325: Hỗ trợ không được dùng nữa cho các đối tượng được đặt trong Random.sample().
bpo-40257: Cải thiện trợ giúp cho mô-đun
typing. Chuỗi tài liệu hiện được hiển thị cho tất cả các biểu mẫu đặc biệt và bí danh chung đặc biệt (nhưUnionvàList). Sử dụnghelp()với bí danh chung nhưList[int]sẽ hiển thị trợ giúp cho loại cụ thể tương ứng (listtrong trường hợp này).bpo-40257:
inspect.getdoc()không còn trả về chuỗi tài liệu được kế thừa từ loại đối tượng hoặc từ lớp cha nếu đó là một lớp nếu nó không được định nghĩa trong chính đối tượng đó. Trongpydoc, chuỗi tài liệu hiện không chỉ được hiển thị cho lớp, hàm, phương thức, v.v. mà còn cho bất kỳ đối tượng nào có thuộc tính__doc__của riêng nó.bpo-40287: Đã sửa lỗi
SpooledTemporaryFile.seek()để trả lại vị trí.bpo-40290: Đã thêm zscore() vào stats.NormalDist().
bpo-40282: Cho phép
random.getrandbits(0)thành công và trả về 0.bpo-40286: Thêm hàm
random.randbytes()và phương thứcrandom.Random.randbytes()để tạo byte ngẫu nhiên.bpo-40277:
collections.namedtuple()hiện cung cấp một bản repr mà con người có thể đọc được cho các bộ truy cập trường của nó.bpo-40270: Bản sao sqlite3 đi kèm trên Windows hiện được biên dịch với phần mở rộng json. Điều này cho phép sử dụng các chức năng như
json_object.bpo-29255: Đợi trong
KqueueSelector.selectkhi không có fds nào được đăng kýbpo-40260: Đảm bảo
modulefindersử dụngio.open_code()và tôn trọng các nhận xét mã hóa.bpo-40234: Cho phép tạo lại các luồng daemon trong trình thông dịch phụ (hoàn nguyên các thay đổi đã từ chối chúng).
bpo-39207: Công nhân trong
ProcessPoolExecutorhiện được sinh ra theo yêu cầu, chỉ khi không còn công nhân nhàn rỗi nào để sử dụng lại. Điều này tối ưu hóa chi phí khởi động và giảm lượng thời gian CPU bị mất đối với những người lao động nhàn rỗi. Bản vá của Kyle Stanley.bpo-40091: Khắc phục lỗi treo ở ngã ba trong mô-đun ghi nhật ký: phương thức _at_fork_reinit() riêng tư mới hiện được sử dụng để khởi tạo lại các khóa tại ngã ba trong quy trình con.
bpo-40149: Thực hiện di chuyển ngang và xóa các vị trí trong loại _abc._abc_data.
bpo-40208: Xóa
symtable.SymbolTable.has_exec()không được dùng nữa.bpo-40196: Sửa lỗi trong mô-đun
symtablekhiến báo cáo biến toàn cục không chính xác là biến cục bộ. Bản vá của Pablo Galindo.bpo-40190: Thêm hỗ trợ
_SC_AIX_REALMEMvàoposix.sysconf().bpo-40182: Đã xóa thuộc tính
_field_typescủa lớptyping.NamedTuple.bpo-36517: Đa kế thừa với
typing.NamedTuplehiện phát sinh lỗi thay vì âm thầm bỏ qua các loại khác.bpo-40126: Đã sửa lỗi hoàn nguyên nhiều bản vá trong unittest.mock.
__exit__()của Patcher hiện không bao giờ được gọi nếu__enter__()của nó bị lỗi. Việc trả về true từ__exit__()im lặng giờ là ngoại lệ.bpo-40094: CGIHTTPRequestHandler của http.server hiện ghi lại mã thoát tập lệnh CGI, thay vì trạng thái thoát tập lệnh CGI của os.waitpid(). Ví dụ: nếu tập lệnh bị tắt bởi tín hiệu 11, thì tập lệnh hiện sẽ ghi: "mã thoát tập lệnh CGI -11."
bpo-40108: Cải thiện thông báo lỗi khi cố gắng nhập mô-đun bằng
runpyvà sử dụng không chính xác phần mở rộng ".py" ở cuối tên mô-đun. Bản vá của Pablo Galindo.bpo-40094: Thêm chức năng
os.waitstatus_to_exitcode(): chuyển trạng thái chờ thành mã thoát.bpo-40089: Sửa threading._after_fork(): nếu fork không được gọi bởi một luồng do threading.Thread sinh ra, threading._after_fork() hiện tạo một phiên bản _MainThread cho _main_thread, thay vì một phiên bản _DummyThread.
bpo-40089: Thêm phương thức
_at_fork_reinit()riêng cho các lớp_thread.Lock,_thread.RLock,threading.RLockvàthreading.Condition: khởi tạo lại khóa tại ngã ba trong tiến trình con, đặt lại khóa về trạng thái mở khóa. Đổi tên phương thức_reset_internal_locks()riêng củathreading.Eventthành_at_fork_reinit().bpo-25780: Hiển thị
CAN_RAW_JOIN_FILTERStrong mô-đunsocket.bpo-39503:
AbstractBasicAuthHandlercủaurllib.requesthiện phân tích tất cả các tiêu đề WWW-Xác thực HTTP và chấp nhận nhiều thử thách trên mỗi tiêu đề: sử dụng phạm vi của thử thách Cơ bản đầu tiên.bpo-39812: Đã xóa các chuỗi daemon khỏi
concurrent.futuresbằng cách thêmthreading._register_atexit()nội bộ, gọi các hàm đã đăng ký trước khi nối tất cả các chuỗi không phải daemon. Điều này cho phép khả năng tương thích với các trình thông dịch phụ không hỗ trợ các luồng daemon.bpo-40050: Khắc phục
importlib._bootstrap_external: tránh tạo mô-đun dựng sẵnwinregmới nếu nó đã có sẵn trongsys.modulesvà xóa các mục nhập không cần thiết.bpo-40014: Fix
os.getgrouplist(): nếu chức nănggetgrouplist()bị lỗi do danh sách nhóm quá nhỏ, hãy thử lại với danh sách nhóm lớn hơn. Nếu thất bại, việc triển khai glibc củagetgrouplist()sẽ đặtngroupsthành tổng số nhóm. Đối với các cách triển khai khác, hãy tăng gấp đôi kích thước danh sách nhóm.bpo-40017: Thêm hằng số
time.CLOCK_TAInếu hệ điều hành hỗ trợ.bpo-40016: Trong re docstring, làm rõ mối quan hệ giữa cờ biên dịch nội tuyến và đối số.
bpo-39953: Cập nhật bảng mã lỗi OpenSSL nội bộ trong mô-đun
ssl.bpo-36144: Đã thêm toán tử PEP 584 vào
weakref.WeakValueDictionary.bpo-36144: Đã thêm toán tử PEP 584 vào
weakref.WeakKeyDictionary.bpo-38891: Khắc phục hành vi thời gian chạy tuyến tính của các phương thức
__getitem__và__setitem__trongmultiprocessing.shared_memory.ShareableList. Điều này tránh hiệu suất bậc hai khi lặp lạiShareableList. Bản vá của Thomas Krennwallner.bpo-39682: Xóa hỗ trợ không có giấy tờ cho closing đối tượng
pathlib.Paththông qua trình quản lý ngữ cảnh của nó. Các phương thức ma thuật của trình quản lý bối cảnh vẫn còn, nhưng giờ đây chúng không còn hoạt động, khiến các đối tượngPathtrở nên bất biến.bpo-36144: Đã thêm toán tử PEP 584 (
|và|=) vàocollections.ChainMap.bpo-39011: Việc chuẩn hóa các kết thúc dòng trong thuộc tính ElementTree đã bị xóa, vì các kết thúc dòng được thay thế bằng số thực thể phải được giữ nguyên ở dạng ban đầu.
bpo-38410: Xử lý đúng cách các lỗi
sys.audit()trongsys.set_asyncgen_hooks().bpo-36541: lib2to3 hiện nhận dạng các biểu thức gán được đặt tên (toán tử hải mã,
:=)bpo-35967: Trong nền tảng, trì hoãn việc gọi 'uname -p' cho đến khi thuộc tính bộ xử lý được yêu cầu.
bpo-35113:
inspect.getsource()hiện trả về mã nguồn chính xác cho lớp bên trong có cùng tên với lớp cấp mô-đun. Trình trang trí cũng được trả về như một phần nguồn của lớp. Bản vá của Karthikeyan Singaravelan.bpo-33262: Không dùng nữa việc chuyển None làm đối số cho tham số
scủashlex.split(). Bản vá của Zackery Spytz.bpo-31758: Ngăn chặn sự cố khi sử dụng đối tượng
_elementtree.XMLParserchưa được khởi tạo. Bản vá của Oren Milman.
Tài liệu¶
bpo-27635: Tài liệu về dưa chua đã tuyên bố không chính xác rằng
__new__không được gọi theo mặc định khi giải nén.bpo-39879: Đã cập nhật tài liệu Mô hình dữ liệu để bao gồm việc duy trì thứ tự chèn
dict(). Bản vá của Furkan Onder và Samy Lahfa.bpo-38387: Tài liệu macro
PyDoc_STRVARtrong tài liệu tham khảo C-API.bpo-13743: Một số phương thức trong lớp xml.dom.minidom.Element hiện được ghi lại tốt hơn.
Kiểm tra¶
bpo-31904: Đặt mã hóa mặc định dự kiến trong test_c_locale_coercion.py cho VxWorks RTOS.
bpo-40162: Cập nhật cấu hình Travis CI lên OpenSSL 1.1.1f.
bpo-40146: Cập nhật OpenSSL lên 1.1.1f trong Azure Pipelines.
bpo-40094: Thêm chức năng
test.support.wait_process().bpo-40003:
test.bisect_cmdhiện sao chép các tùy chọn dòng lệnh Python như-Ohoặc-W. Hơn nữa, đưa ra cảnh báo nếutest.bisect_cmdđược sử dụng với tùy chọn-w/--verbose2.bpo-39380: Thêm mã hóa trong
ftplib.FTPvàftplib.FTP_TLSvào hàm tạo dưới dạng chỉ từ khóa và thay đổi mặc định từlatin-1thànhutf-8để tuân theo RFC 2640.bpo-39793: Sử dụng cùng một tên miền khi kiểm tra
make_msgid. Bản vá của Batuhan Taskaya.bpo-1812: Khắc phục sự cố xử lý dòng mới trong doctest.testfile khi tải từ gói có trình tải có phương thức get_data. Bản vá của Peter Donis.
xây dựng¶
cửa sổ¶
macOS¶
bpo-38329: Trình cài đặt macOS python.org hiện cập nhật liên kết tượng trưng Phiên bản hiện tại của /Library/Frameworks/Python.framework/Versions cho bản cài đặt 3.9. Trước đây, Current chỉ được cập nhật cho các bản cài đặt Python 2.x. Điều này sẽ giúp việc nhúng Python 3 vào các ứng dụng macOS khác dễ dàng hơn.
bpo-40164: Cập nhật bản dựng trình cài đặt macOS để sử dụng OpenSSL 1.1.1g.
IDLE¶
Công cụ/Bản trình diễn¶
bpo-40385: Đã xóa công cụ checkpyc.py. Vui lòng xem chế độ biên dịch không có lực lượng như một giải pháp thay thế tiềm năng.
bpo-40179: Đã sửa lỗi dịch
#eliftrong Argument Clinic.bpo-40094: Sửa mã thoát tập lệnh
which.py: hiện tại nó sử dụngos.waitstatus_to_exitcode()để chuyển trạng thái thoátos.system()thành mã thoát.
C API¶
bpo-40241: Di chuyển cấu trúc
PyGC_Headsang C API bên trong.bpo-40170: Chuyển đổi macro
PyObject_IS_GC()thành một hàm để ẩn chi tiết triển khai.bpo-40241: Thêm các hàm
PyObject_GC_IsTracked()vàPyObject_GC_IsFinalized()vào API công khai để cho phép truy vấn xem các đối tượng Python hiện đang được theo dõi hay đã được trình thu gom rác hoàn thiện tương ứng. Bản vá của Pablo Galindo.bpo-40170: Macro
PyObject_NEW()trở thành bí danh của macroPyObject_New()và macroPyObject_NEW_VAR()trở thành bí danh của macroPyObject_NewVar(), để ẩn chi tiết triển khai. Họ không còn truy cập trực tiếp vào thành viênPyTypeObject.tp_basicsizenữa.bpo-40170:
PyType_HasFeature()hiện luôn gọiPyType_GetFlags()để ẩn chi tiết triển khai. Trước đây, nó truy cập trực tiếp vào thành viênPyTypeObject.tp_flagskhi C API giới hạn không được sử dụng.bpo-40170: Chuyển đổi macro
PyObject_GET_WEAKREFS_LISTPTR()thành một hàm để ẩn chi tiết triển khai: macro được truy cập trực tiếp vào thành viênPyTypeObject.tp_weaklistoffset.bpo-40170: Chuyển đổi macro
PyObject_CheckBuffer()thành một hàm để ẩn chi tiết triển khai: macro truy cập trực tiếp vào thành viênPyTypeObject.tp_as_buffer.bpo-40170: Luôn khai báo
PyIndex_Check()là một hàm mờ để ẩn chi tiết triển khai: xóa macroPyIndex_Check(). Macro truy cập trực tiếp vào thành viênPyTypeObject.tp_as_number.bpo-39947: Thêm chức năng
PyThreadState_GetID(): lấy mã định danh duy nhất của trạng thái luồng Python.
Python 3.9.0 alpha 5¶
Release date: 2020-03-23
Bảo mật¶
bpo-38576: Không cho phép các ký tự điều khiển trong tên máy chủ trong http.client, đánh địa chỉ CVE 2019-18348. Các URL chèn tiêu đề độc hại tiềm ẩn như vậy hiện khiến URL không hợp lệ được nâng lên.
Cốt lõi và nội dung¶
bpo-40010: Tối ưu hóa các cuộc gọi đang chờ xử lý trong các ứng dụng đa luồng. Nếu một luồng khác với luồng chính lên lịch một cuộc gọi đang chờ xử lý (
Py_AddPendingCall()), vòng lặp đánh giá mã byte không còn bị gián đoạn ở mỗi lệnh mã byte để kiểm tra các cuộc gọi đang chờ xử lý không thể thực hiện được. Chỉ luồng chính mới có thể thực hiện các cuộc gọi đang chờ xử lý.Trước đây, vòng đánh giá mã byte bị gián đoạn ở mỗi lệnh cho đến khi luồng chính thực hiện các lệnh gọi đang chờ xử lý.
bpo-1635741: Mô-đun mở rộng cổng _weakref để khởi tạo nhiều pha (PEP 489).
bpo-1635741: Mô-đun cổng _collections để khởi tạo nhiều pha (PEP 489).
bpo-40010: Tối ưu hóa việc xử lý tín hiệu trong các ứng dụng đa luồng. Nếu một luồng khác với luồng chính nhận được tín hiệu, vòng đánh giá mã byte sẽ không còn bị gián đoạn ở mỗi lệnh mã byte để kiểm tra các tín hiệu đang chờ xử lý không thể xử lý được. Chỉ luồng chính của trình thông dịch chính mới có thể xử lý tín hiệu.
Trước đây, vòng đánh giá mã byte bị gián đoạn ở mỗi lệnh cho đến khi luồng chính xử lý tín hiệu.
bpo-39984: Nếu
Py_AddPendingCall()được gọi trong trình thông dịch phụ, thì hàm này hiện được lên lịch để gọi từ trình thông dịch phụ, thay vì được gọi từ trình thông dịch chính. Mỗi thông dịch viên phụ hiện có danh sách các cuộc gọi được lên lịch riêng.bpo-1635741: Mô-đun cổng _heapq để khởi tạo nhiều pha.
bpo-1635741: Chuyển mô-đun itertools sang khởi tạo nhiều pha (PEP 489).
bpo-37207: Tăng tốc độ cuộc gọi tới
frozenset()bằng cách sử dụng quy ước gọi PEP 590vectorcall. Bản vá của Donghee Na.bpo-39984: trình thông dịch phụ: Di chuyển
_PyRuntimeState.ceval.tracing_possiblesangPyInterpreterState.ceval.tracing_possible: mỗi trình thông dịch hiện có biến riêng.bpo-37207: Tăng tốc độ cuộc gọi tới
set()bằng cách sử dụng quy ước gọi PEP 590vectorcall. Bản vá của Donghee Na.bpo-1635741: Mô-đun cổng _statistics để khởi tạo nhiều pha (PEP 489).
bpo-39968: Sử dụng chức năng nội tuyến để thay thế macro get_module_state của mô-đun mở rộng.
bpo-39965: Tăng
SyntaxErrormột cách chính xác nếu await được sử dụng bên trong các hàm không đồng bộ vàPyCF_ALLOW_TOP_LEVEL_AWAITđược đặt (như trong asyncio REPL). Bản vá của Pablo Galindo.bpo-39562: Cho phép thực hiện việc hiểu không đồng bộ ở cấp cao nhất khi cờ
PyCF_ALLOW_TOP_LEVEL_AWAITđược đưa ra. Bản vá của Batuhan Taskaya.bpo-37207: Tăng tốc độ cuộc gọi tới
tuple()bằng cách sử dụng quy ước gọi PEP 590vectorcall. Bản vá của Donghee Na.bpo-38373: Đã thay đổi chiến lược phân bổ tổng thể danh sách. Nó không còn phân bổ tổng thể nếu kích thước mới gần với kích thước được phân bổ tổng thể hơn so với kích thước cũ và thêm phần đệm.
bpo-39926: Cập nhật cơ sở dữ liệu Unicode lên phiên bản Unicode 13.0.0.
bpo-19466: Xóa các khung của chuỗi daemon trước đó trong quá trình tắt Python để gọi hàm hủy đối tượng. Vì vậy, cảnh báo tài nguyên "tệp không được tiết lộ" hiện được phát ra cho các luồng daemon theo cách đáng tin cậy hơn.
bpo-38894: Sửa lỗi gây ra kết quả không đầy đủ khi gọi
pathlib.Path.globkhi có các liên kết tượng trưng trỏ đến các tệp mà người dùng không có quyền truy cập đọc. Bản vá của Pablo Galindo và Matt Wozniski.bpo-39877: Khắc phục sự cố ngẫu nhiên
PyEval_RestoreThread()khi thoát bằng các chuỗi daemon. Bây giờ nó truy cập trực tiếp vào biến_PyRuntimethay vì sử dụngtstate->interp->runtime, vìtstatecó thể là một con trỏ lơ lửng sau khiPy_Finalize()được gọi. Hơn nữa, chuỗi daemon hiện đã thoát trước khi thử lấy GIL.bpo-39871: Sửa lỗi
SystemErrorcó thể có trongmath.{atan2,copysign,remainder}()khi đối số đầu tiên không thể chuyển đổi thànhfloat. Bản vá của Zackery Spytz.bpo-39776: Khắc phục tình trạng chủng tộc trong đó các chủ đề được tạo bởi PyGILState_Ensure() có thể nhận được id trùng lặp.
Điều này ảnh hưởng đến người tiêu dùng tstate->id giống như bộ nhớ đệm bối cảnh, có thể trả về các đối tượng được lưu trong bộ nhớ đệm không hợp lệ khi tải luồng nặng (được quan sát thấy trong các tình huống được nhúng).
bpo-39778: Đã khắc phục sự cố do xử lý không chính xác các tham chiếu yếu trong các lớp
collections.OrderedDict. Bản vá của Pablo Galindo.bpo-1635741: Mô-đun mở rộng cổng audioop để khởi tạo nhiều pha (PEP 489).
bpo-39702: Giảm bớt các hạn chế về ngữ pháp của decorator để cho phép mọi biểu thức hợp lệ (PEP 614).
bpo-38091: Tinh chỉnh mã phát hiện bế tắc nhập để không tự bế tắc.
bpo-1635741: Mô-đun mở rộng cổng _locale để khởi tạo nhiều pha (PEP 489).
bpo-39087: Tối ưu hóa
PyUnicode_AsUTF8()vàPyUnicode_AsUTF8AndSize()một chút khi chúng cần tạo bộ nhớ đệm UTF-8 bên trong.bpo-39520: Sửa lỗi không phân tích cú pháp các lát cắt mở rộng không có mục nào (
foo[:,]). Bản vá của Batuhan Taskaya.bpo-39220: Không tối ưu hóa chú thích nếu sử dụng 'từ __future__ chú thích nhập'. Bản vá của Pablo Galindo.
bpo-35712: Việc sử dụng
NotImplementedtrong ngữ cảnh boolean không được dùng nữa. Bản vá được đóng góp bởi Josh Rosenberg.bpo-22490: Không rò rỉ biến môi trường
__PYVENV_LAUNCHER__vào phiên thông dịch trên macOS.
Thư viện¶
bpo-39830: Thêm
zipfile.Pathvào__all__trong mô-đunzipfile.bpo-40000: Cải thiện thông báo lỗi để xác thực các nút
ast.Constant. Bản vá của Batuhan Taskaya.bpo-39999:
__module__của các lớp nút AST hiện được đặt thành "ast" thay vì "_ast". Đã thêm chuỗi tài liệu cho các lớp nút AST giả và các thuộc tính không được dùng nữa.bpo-39991:
uuid.getnode()hiện bỏ qua các địa chỉ IPv6 có cùng độ dài chuỗi so với địa chỉ MAC (17 ký tự): chỉ sử dụng địa chỉ MAC.bpo-39988: Các lớp nút
ast.AugLoadvàast.AugStorekhông được dùng nữa vì chúng không còn được sử dụng.bpo-39656: Đảm bảo
bin/python3.#luôn hiện diện trong môi trường ảo trên nền tảng POSIX - bởi Anthony Sottile.bpo-39969: Lớp nút
ast.Paramkhông được dùng nữa vì nó không còn được sử dụng. Bản vá của Batuhan Taskaya.bpo-39360: Đảm bảo tất cả công nhân thoát ra khi hoàn tất
multiprocessing.Poolmột cách ngầm định thông qua trình xử lý hoàn thiện mô-đun của đa xử lý. Điều này khắc phục tình trạng bế tắc có thể gặp phải khi Nhóm không được hoàn thiện đúng cách thông qua trình quản lý bối cảnh hoặc lệnh gọi tớimultiprocessing.Pool.terminate. Bản vá của Batuhan Taskaya và Pablo Galindo.bpo-35370: sys.settrace(), sys.setprofile() và _lsprof.Profiler.enable() hiện đã báo cáo chính xác lỗi
PySys_Audit()nếu sự kiện kiểm tra "sys.setprofile" hoặc "sys.settrace" bị từ chối.bpo-39936: AIX: Sửa mô-đun _aix_support khi không có quy trình con, khi xây dựng Python từ đầu. Bây giờ nó sử dụng mô-đun _bootsubprocess riêng tư mới, thay vì có hai triển khai tùy thuộc vào việc quy trình con có sẵn hay không. Vì vậy, kết quả _aix_support.aix_platform() bây giờ giống nhau nếu quy trình con có sẵn hay không.
bpo-36144:
collections.OrderedDicthiện triển khai|và|=(PEP 584).bpo-39652: Tên cột được tìm thấy trong
sqlite3.Cursor.descriptionhiện bị cắt bớt ở '[' đầu tiên chỉ khi tùy chọn PARSE_COLNAMES được đặt.bpo-39915: Đảm bảo
unittest.mock.AsyncMock.await_args_listcó các đối tượng cuộc gọi theo thứ tự các đối số được chờ thay vì sử dụngunittest.mock.Mock.call_argscó giá trị cuối cùng của cuộc gọi. Bản vá của Karthikeyan Singaravelan.bpo-36144: Đã cập nhật
os.environvàos.environbđể hỗ trợ các toán tử hợp nhất (|) và cập nhật (|=) của PEP 584.bpo-38662: Mô-đun
ensurepiphiện gọipipthông qua mô-đunrunpy. Do đó, nó không còn được kết hợp chặt chẽ với API nội bộ của phiên bảnpipđi kèm, cho phép cập nhật dễ dàng hơn lên phiên bảnpipmới hơn cả nội bộ và nhà phân phối.bpo-38075: Sửa phương thức
random.Random.seed()khiboolđược chuyển làm hạt giống.bpo-39916: Sử dụng
os.scandir()đáng tin cậy hơn trongPath.glob(). Nó không còn phát ra ResourceWarning khi bị gián đoạn.bpo-39850:
multiprocessinghiện hỗ trợ các địa chỉ ổ cắm trừu tượng (nếu ổ cắm trừu tượng được hỗ trợ trong nền tảng đang chạy). Khi tạo các địa chỉ tùy ý (như khi các đối tượngmultiprocessing.connection.Listenerxây dựng mặc định), các ổ cắm trừu tượng được ưu tiên để tránh trường hợp địa chỉ được tạo tệp tạm thời quá lớn đối với địa chỉ ổ cắm AF_UNIX. Bản vá của Pablo Galindo.bpo-36287:
ast.dump()không còn xuất ra các trường và thuộc tính tùy chọn có giá trị mặc định. Các giá trị mặc định cho các trường và thuộc tính tùy chọn của nút AST hiện được đặt làm thuộc tính lớp (ví dụ:Constant.kindđược đặt thànhNone).bpo-39889: Đã sửa lỗi
ast.unparse()cho các lát mở rộng chứa một phần tử duy nhất (ví dụ:a[i:j,]). Loại bỏ các bộ dữ liệu dư thừa khi lập chỉ mục bằng một bộ dữ liệu (ví dụ:a[i, j]).bpo-39828: Sửa
json.toolđể bắtBrokenPipeError. Bản vá của Donghee Na.bpo-13487: Tránh "RuntimeError: dictionary changed size during iteration" có thể xảy ra từ
inspect.getmodule()khi nó cố gắng lặp quasys.modules.bpo-39674: Hoàn nguyên "bpo-37330: open() không còn chấp nhận 'U' ở chế độ tệp". Chế độ "U" của open() được giữ trong Python 3.9 để dễ dàng chuyển đổi từ Python 2.7, nhưng sẽ bị xóa trong Python 3.10.
bpo-28577: Phương thức máy chủ trên IPv4Networks có độ dài tiền tố 32 bit và IPv6Networks tiền tố 128 bit hiện trả về một danh sách chứa một Địa chỉ duy nhất thay vì một danh sách trống.
bpo-39826: Thêm phương thức getConnection để ghi nhật ký HTTPHandler để kích hoạt các kết nối tùy chỉnh.
bpo-39763: Thực hiện lại chức năng
distutils.spawn.spawnvới mô-đunsubprocess.bpo-39794: Thêm tùy chọn xây dựng --without-decimal-contextvar. Điều này cho phép bối cảnh cục bộ theo luồng thay vì bối cảnh cục bộ của coroutine.
bpo-36144:
collections.defaultdicthiện triển khai|(PEP 584).bpo-39517: Sửa lỗi runpy.run_path() khi sử dụng các đối tượng giống đường dẫn
bpo-39775: Đổi
inspect.Signature.parametersvềcollections.OrderedDict. Điều này đã được đổi thànhdicttrong Python 3.9.0a4.bpo-39678: Cấu trúc lại queue_manager trong
concurrent.futures.ProcessPoolExecutorđể dễ bảo trì hơn.bpo-39764: Khắc phục AttributionError khi gọi get_stack trên Tác vụ PyAsyncGenObject
bpo-39769: Tham số ddir của hàm
compileall.compile_dir()và cờ dòng lệnh biên dịch-dkhông còn ghi sai tên đường dẫn vào tệp pyc được tạo cho các mô-đun con bên dưới thư mục gốc của cây thư mục đang được biên dịch. Điều này khắc phục lỗi hồi quy được giới thiệu với Python 3.5.bpo-36144: các đối tượng
types.MappingProxyTypehiện hỗ trợ toán tử hợp nhất (|) từ PEP 584.bpo-38691: Mô-đun
importlibhiện bỏ qua biến môi trườngPYTHONCASEOKkhi các tùy chọn dòng lệnh-Ehoặc-Iđang được sử dụng.bpo-39719: Xóa
tempfile.SpooledTemporaryFile.softspace()vì các tệp không còn có thuộc tínhsoftspacetrong Python 3. Bản vá của Shantanu.bpo-39667: Cải thiện khả năng tương thích pathlib.Path trên zipfile.Path và khắc phục tình trạng suy giảm hiệu suất như trong zipp 3.0.
bpo-39638: Giữ chữ ký ASDL trong chuỗi tài liệu cho các nút
AST. Bản vá của Batuhan Taskayabpo-39639: Lớp nút
ast.Suitekhông được dùng nữa vì nó không còn được sử dụng. Bản vá của Batuhan Taskaya.bpo-39609: Thêm thread_name_prefix vào trình thực thi asyncio mặc định
bpo-39548: Khắc phục việc xử lý tiêu đề trong
urllib.request.AbstractDigestAuthHandlerkhi không có tham sốqoptùy chọn.bpo-39509: Mã trạng thái HTTP
103 EARLY_HINTSvà425 TOO_EARLYđược thêm vàohttp.HTTPStatus. Bản vá của Donghee Na.bpo-39507: Thêm trạng thái HTTP 418 "Tôi là Ấm trà" vào HTTPStatus trong thư viện http. Bản vá của Ross Rhodes.
bpo-39495: Xóa giá trị mặc định khỏi tham số attrs của
xml.etree.ElementTree.TreeBuilder.start()để đảm bảo tính nhất quán giữa quá trình triển khai Python và C.bpo-38971: Sự cố mở trong BPO cho thấy mong muốn triển khai codec.open() ngang bằng với io.open(), thực hiện thử/ngoại trừ để đảm bảo luồng tệp được đóng trước khi ngoại lệ được đưa ra.
bpo-38641: Đã thêm hỗ trợ biểu thức được gắn dấu sao cho câu lệnh
returnvàyieldcholib2to3. Bản vá của Vlad Emelianov.bpo-37534: Khi sử dụng mô-đun minidom để tạo tài liệu XML, khả năng thêm Khai báo tài liệu độc lập sẽ được thêm vào. Tất cả các thay đổi được thực hiện để tạo tài liệu tuân thủ Ngôn ngữ đánh dấu mở rộng (XML) 1.0 (Phiên bản thứ năm) Khuyến nghị W3C (có sẵn tại đây: https://www.w3.org/TR/xml/#sec-prolog-dtd).
bpo-34788: Thêm hỗ trợ cho các địa chỉ IPv6 trong phạm vi
ipaddress. Bản vá của Oleksandr Pavliuk.bpo-34822: AST được đơn giản hóa để đăng ký. Các chỉ số đơn giản hiện được biểu thị bằng giá trị của chúng, các lát cắt mở rộng được biểu diễn dưới dạng bộ dữ liệu. Các lớp
astIndexvàExtSliceđược coi là không được dùng nữa và sẽ bị xóa trong các phiên bản Python trong tương lai. Trong khi chờ đợi,Index(value)hiện trả về chínhvalue,ExtSlice(slices)trả vềTuple(slices, Load()).
Tài liệu¶
bpo-39868: Đã cập nhật Tài liệu tham khảo ngôn ngữ cho PEP 572.
bpo-13790: Thay đổi 'chuỗi' thành 'thông số kỹ thuật' trong tài liệu định dạng.
bpo-17422: Tham chiếu ngôn ngữ không còn giới hạn các không gian tên lớp mặc định chỉ ở các ký tự.
bpo-39530: Sửa tài liệu sai lệch về so sánh số kiểu hỗn hợp.
bpo-39718: Cập nhật tài liệu
tokenđể phản ánh các bổ sung trong Python 3.8bpo-39677: Đã thay đổi tên toán hạng của MAKE_FUNCTION từ argc thành flags cho mô-đun
dis
Kiểm tra¶
bpo-40019: test_gdb hiện bỏ qua các bài kiểm tra nếu phát hiện thấy gdb không đọc được thông tin gỡ lỗi vì tệp nhị phân Python được tối ưu hóa.
bpo-27807:
test_site.test_startup_imports()hiện bị bỏ qua nếu đường dẫn củasys.pathchứa tệp.pth.bpo-26067: Đừng thất bại trong bài kiểm tra test_shutil test_chown khi uid hoặc gid của người dùng không thể được phân giải thành tên.
bpo-39855: test_subprocess.test_user() hiện bỏ qua việc kiểm tra tên người dùng nếu tên người dùng đó không tồn tại. Ví dụ: bỏ qua bài kiểm tra nếu người dùng "không ai" không tồn tại trên Linux.
xây dựng¶
bpo-39761: Sửa bản dựng bằng DTrace nhưng không có DFLAGS bổ sung.
bpo-39763: setup.py hiện sử dụng cách triển khai cơ bản của mô-đun
subprocessnếu mô-đunsubprocesskhông có sẵn: trước khi xây dựng các mô-đun mở rộng C bắt buộc.bpo-1294959: Thêm tùy chọn
--with-platlibdirvào tập lệnh cấu hình: tên của thư mục thư viện dành riêng cho nền tảng, được lưu trữ trong thuộc tínhsys.platlibdirmới. Nó được sử dụng để xây dựng đường dẫn của các mô-đun mở rộng dành riêng cho nền tảng và đường dẫn của thư viện chuẩn. Nó tương đương với"lib"trên hầu hết các nền tảng. Trên Fedora và SuSE, nó bằng"lib64"trên nền tảng 64-bit. Bản vá của Jan Matějek, Matěj Cepl, Charalampos Stratakis và Victor Stinner.
cửa sổ¶
bpo-39930: Đảm bảo
vcruntime140.dllcần thiết được bao gồm trong các gói cài đặt.bpo-39847: Tránh bị treo khi máy tính ở chế độ ngủ đông trong khi chờ mutex (đối với các đối tượng liên quan đến khóa từ
threading) trong khoảng thời gian hoạt động 49 ngày.bpo-38597:
distutilssẽ không còn liên kết tĩnhvcruntime140.dllkhi không có phiên bản có thể phân phối lại. Tất cả các bản phát hành CPython trong tương lai sẽ bao gồm một bản sao của DLL này để đảm bảo các tiện ích mở rộng được phân phối có thể tiếp tục tải.bpo-38380: Cập nhật các bản dựng Windows để sử dụng SQLite 3.31.1
bpo-39789: Cập nhật máy xây dựng bản phát hành Windows lên Visual Studio 2019 (MSVC 14.2).
bpo-34803: Gói dành cho nuget.org hiện bao gồm tham chiếu kho lưu trữ và hình ảnh biểu tượng đi kèm.
macOS¶
bpo-38380: Cập nhật bản dựng macOS để sử dụng SQLite 3.31.1
IDLE¶
bpo-27115: Đối với 'Đi tới dòng', hãy sử dụng lớp con Hộp truy vấn với hành vi tiêu chuẩn IDLE và khả năng kiểm tra lỗi được cải thiện.
bpo-39885: Vì việc nhấp để nhận menu ngữ cảnh IDLE sẽ di chuyển con trỏ nên mọi lựa chọn văn bản sẽ bị xóa.
bpo-39852: Chỉnh sửa "Chuyển đến dòng" hiện sẽ xóa bất kỳ lựa chọn nào, ngăn chặn việc vô tình xóa. Nó cũng cập nhật Ln và Col trên thanh trạng thái.
bpo-39781: Việc chọn các dòng ngữ cảnh mã không còn gây ra bước nhảy.
Công cụ/Bản trình diễn¶
bpo-36184: Chuyển python-gdb.py sang FreeBSD. python-gdb.py hiện kiểm tra tên hàm "take_gil" để kiểm tra xem khung có cố lấy GIL hay không, thay vì kiểm tra "pthread_cond_timedwait" dành riêng cho Linux và có thể là một điều kiện khác với GIL.
bpo-38080: Đã thêm hỗ trợ để sửa lỗi
getproxiestrong mô-đunlib2to3.fixes.fix_urllib. Bản vá của José Roberto Meza Cabrera.
C API¶
bpo-40024: Thêm chức năng trợ giúp
PyModule_AddType(): thêm một loại vào mô-đun. Bản vá của Donghee Na.bpo-39946: Xóa hook
_PyRuntime.getframevà xóa macro_PyThreadState_GetFramelà bí danh của_PyRuntime.getframe. Họ chỉ bị lộ bởi C API nội bộ. Loại bỏ loạiPyThreadFrameGetter.bpo-39947: Thêm chức năng
PyThreadState_GetFrame(): lấy khung hình hiện tại của trạng thái luồng Python.bpo-37207: Thêm chức năng trợ giúp _PyArg_NoKwnames. Bản vá của Donghee Na.
bpo-39947: Thêm
PyThreadState_GetInterpreter(): lấy trình thông dịch của trạng thái luồng Python.bpo-39947: Thêm chức năng
PyInterpreterState_Get()vào C API bị giới hạn.bpo-35370: Nếu
PySys_Audit()bị lỗi trongPyEval_SetProfile()hoặcPyEval_SetTrace(), hãy ghi lại lỗi dưới dạng ngoại lệ không thể xử lý được.bpo-39947: Di chuyển hương vị hàm nội tuyến tĩnh của Py_EnterRecursiveCall() và Py_LeaveRecursiveCall() sang C API nội bộ: chúng truy cập các thuộc tính PyThreadState. C API giới hạn cung cấp các chức năng thông thường giúp ẩn chi tiết triển khai.
bpo-39947: Macro Py_TRASHCAN_BEGIN_CONDITION và Py_TRASHCAN_END không còn truy cập các thuộc tính PyThreadState nữa mà gọi các hàm _PyTrash_begin() và _PyTrash_end() riêng tư mới để ẩn chi tiết triển khai.
bpo-39884:
PyDescr_NewMethod()vàPyCFunction_NewEx()hiện bao gồm tên phương thức trong thông báo lỗi "cờ cuộc gọi xấu" SystemError để dễ dàng gỡ lỗi.bpo-39877:
PyEval_InitThreads()vàPyEval_ThreadsInitialized()không được dùng nữa. GọiPyEval_InitThreads()bây giờ không có tác dụng gì.bpo-38249:
Py_UNREACHABLEhiện được triển khai với__builtin_unreachable()và các chất tương tự ở chế độ phát hành.bpo-38643:
PyNumber_ToBase()hiện tăngSystemErrorthay vì gặp sự cố khi được gọi với cơ sở không hợp lệ.bpo-39882: Hàm
Py_FatalError()được thay thế bằng macro tự động ghi tên của hàm hiện tại, trừ khi macroPy_LIMITED_APIđược xác định.bpo-39824: Các mô-đun mở rộng: các chức năng
m_traverse,m_clearvàm_freecủaPyModuleDefkhông còn được gọi nếu trạng thái mô-đun được yêu cầu nhưng chưa được phân bổ. Đây là trường hợp ngay sau khi mô-đun được tạo và trước khi mô-đun được thực thi (chức năngPy_mod_exec). Chính xác hơn, các hàm này không được gọi nếum_sizelớn hơn 0 và trạng thái mô-đun (được trả về bởiPyModule_GetState()) làNULL.Các mô-đun mở rộng không có trạng thái mô-đun (
m_size <= 0) sẽ không bị ảnh hưởng.bpo-38913: Đã sửa lỗi phân đoạn trong
Py_BuildValue()được gọi với định dạng chứa "#" và PY_SSIZE_T_CLEAN không xác định khi có ngoại lệ được đặt.bpo-38500: Thêm một API riêng để nhận và thiết lập chức năng đánh giá khung: thêm các chức năng
_PyInterpreterState_GetEvalFrameFunc()và_PyInterpreterState_SetEvalFrameFunc()C. Loại hàm_PyFrameEvalFunctionhiện có tham số tstate.
Python 3.9.0 alpha 4¶
Release date: 2020-02-25
Bảo mật¶
Cốt lõi và nội dung¶
bpo-39382: Khắc phục lỗi use-after-free trong đường dẫn kế thừa duy nhất của
issubclass(), khi__bases__của một đối tượng có một tham chiếu duy nhất và mục đầu tiên của nó cũng vậy. Bản vá của Yonatan Goldschmidt.bpo-39573: Cập nhật công cụ phòng khám để sử dụng
Py_IS_TYPE(). Bản vá của Donghee Na.bpo-39619: Cho phép sử dụng
os.chroot()trên hệ thống HP-UX.bpo-39573: Thêm chức năng nội tuyến tĩnh
Py_IS_TYPE()để kiểm tra xem loại đối tượng o có phải là type hay không.bpo-39606: Khắc phục hồi quy do sửa lỗi cho bpo-39386, khiến việc gọi
aclosetrên trình tạo không đồng bộ đã bị đóng hoặc cạn kiệt gây ra.bpo-39579: Thay đổi độ lệch cột kết thúc của các nút
Attributeđược xây dựng trongast_for_dotted_nameđể trỏ vào cuối nút hiện tại chứ không phải ở cuối nútNAMEcuối cùng.bpo-1635741: Mô-đun mở rộng cổng _crypt để khởi tạo nhiều pha (PEP 489).
bpo-1635741: Mô-đun mở rộng cổng _contextvars để khởi tạo nhiều pha (PEP 489).
bpo-39510: Sửa lỗi segfault trong phương thức
readinto()trên BufferedReader đã đóng.bpo-39502: Sửa
time.localtime()trên AIX 64-bit để hỗ trợ các năm trước năm 1902 và sau năm 2038. Bản vá của M Felt.bpo-39492: Khắc phục chu trình tham chiếu trong C Pickler đang ngăn việc thu thập rác của các đối tượng đã bị xóa, được chọn.
bpo-39453: Đã khắc phục sự cố có thể xảy ra trong
list.__contains__()khi danh sách bị thay đổi trong quá trình so sánh các mục. Bản vá của Donghee Na.bpo-39434: floor division của hoạt động float hiện có hiệu suất tốt hơn. Ngoài ra, thông báo của
ZeroDivisionErrorcho thao tác này cũng được cập nhật. Bản vá của Donghee Na.bpo-1635741: Mô-đun mở rộng cổng _codecs để khởi tạo nhiều pha (PEP 489).
bpo-1635741: Mô-đun mở rộng cổng _bz2 để khởi tạo nhiều pha (PEP 489).
bpo-1635741: Mô-đun mở rộng cổng _abc để khởi tạo nhiều pha (PEP 489).
bpo-39320: Thay thế hai mã byte phức tạp để xây dựng các ký tự bằng hai mã đơn giản hơn. Các mã byte mới
DICT_MERGEvàDICT_UPDATEđã được thêm vào Các mã byte cũBUILD_MAP_UNPACKvàBUILD_MAP_UNPACK_WITH_CALLđã bị xóa.bpo-39219: Các lỗi cú pháp xuất hiện trong mã thông báo giờ đây luôn đặt các thuộc tính "văn bản" và "offset" chính xác.
bpo-36051: Thả GIL trong các hoạt động
bytes.joinlớn. Bản vá của Bruce Merry.bpo-38960: Khắc phục sự cố xây dựng DTrace trên FreeBSD. Bản vá của David Carlier.
bpo-37207: Tăng tốc độ cuộc gọi tới
range()khoảng 30% bằng cách sử dụng quy ước gọi PEP 590vectorcall. Bản vá của Mark Shannon.bpo-36144: Các đối tượng
dict(vàcollections.UserDict) hiện hỗ trợ các toán tử hợp nhất (|) và cập nhật (|=) của PEP 584. Bản vá của Brandt Bucher.bpo-32856: Đã tối ưu hóa thành ngữ để gán một biến tạm thời trong khả năng hiểu. Giờ đây, việc hiểu
for y in [expr]nhanh như một bài tập đơn giảny = expr.
Thư viện¶
bpo-30566: Sửa lỗi
IndexErrorkhi cố giải mã chuỗi không hợp lệ bằng codec punycode.bpo-39649: Xóa kiểm tra lỗi thời cho
__args__trongbdb.Bdb.format_stack_entry.bpo-39648: Mở rộng
math.gcd()vàmath.lcm()để xử lý nhiều đối số.bpo-39681: Khắc phục lỗi hồi quy trong đó mô-đun dưa chua C không cho phép giải nén khỏi một đối tượng giống như tệp không hiển thị phương thức readinto().
bpo-35950: Tăng
io.UnsupportedOperationtrongio.BufferedReader.truncate()khi nó được gọi trên phiên bảnio.BufferedReaderchỉ đọc.bpo-39479: Thêm hàm
math.lcm(): bội số chung nhỏ nhất.bpo-39674: Hoàn nguyên thay đổi "Không hiển thị các lớp bộ sưu tập trừu tượng trong mô-đun bộ sưu tập" (bpo-25988). Các bí danh cho ABC như các bộ sưu tập. Bản đồ được giữ trong Python 3.9 để dễ dàng chuyển đổi từ Python 2.7, nhưng sẽ bị xóa trong Python 3.10.
bpo-39104: Khắc phục sự cố treo ProcessPoolExcutor trên
shutdown(wait=False)khi tác vụ tẩy không thành công.bpo-39627: Đã sửa lỗi kiểm tra tổng thể TypedDict cho các khóa kế thừa.
bpo-39474: Đã sửa vị trí bắt đầu của AST cho các biểu thức như
(a)(b),(a)[b]và(a).b.bpo-21016: Các mô-đun
pydocvàtracehiện sử dụng mô-đunsysconfigđể lấy đường dẫn đến thư viện chuẩn Python, để hỗ trợ đường dẫn cài đặt không phổ biến như/usr/lib64/python3.9/trên Fedora. Bản vá của Jan Matějek.bpo-39590: Collections.deque hiện chứa các tham chiếu mạnh mẽ trong deque.__contains__ và deque.count, khắc phục sự cố.
bpo-39586: Lệnh distutils
bdist_msikhông được dùng nữa trong Python 3.9, thay vào đó hãy sử dụngbdist_wheel(gói bánh xe).bpo-39595: Cải thiện hiệu suất của zipfile.Path cho các tệp có số lượng mục nhập lớn. Đồng thời cải thiện hiệu suất và khắc phục sự cố nhỏ như đã xuất bản với importlib_metadata 1.5.
bpo-39350: Khắc phục hồi quy trong
fractions.Fractionnếu tử số và/hoặc mẫu số là lớp conint. Hàmmath.gcd()hiện được sử dụng để chuẩn hóa numerator và denominator.math.gcd()luôn trả về loạiint. Trước đây, loại GCD phụ thuộc vào numerator và denominator.bpo-39567: Đã thêm kiểm tra cho
os.walk(),os.fwalk(),pathlib.Path.glob()vàpathlib.Path.rglob().bpo-39559: Xóa đối số
getterskhông được sử dụng, không có giấy tờ khỏiuuid.getnode()bpo-38149:
sys.audit()hiện chỉ được gọi một lần cho mỗi lệnh gọiglob.glob()vàglob.iglob().bpo-39546: Khắc phục hồi quy trong
ArgumentParsertrong đóallow_abbrev=Falsebị bỏ qua đối với các tùy chọn dài sử dụng ký tự tiền tố khác "-".bpo-39450: Khoảng trắng có sọc từ chuỗi tài liệu trước khi trả về từ
unittest.case.shortDescription().bpo-12915: Một chức năng mới
resolve_nameđã được thêm vào mô-đunpkgutil. Điều này giải quyết một chuỗi có dạng'a.b.c.d'hoặc'a.b:c.d'thành một đối tượng. Trong ví dụ,a.blà một gói/mô-đun vàc.dlà một đối tượng trong gói/mô-đun đó được tiếp cận thông qua truy cập thuộc tính đệ quy.bpo-39353: Chức năng
binascii.crc_hqx()không còn được dùng nữa.bpo-39493: Đánh dấu
typing.IO.closedlà thuộc tínhbpo-39491: Thêm tham số
typing.Annotatedvàinclude_extrasvàotyping.get_type_hints()như một phần của PEP 593. Bản vá của Till Varoquaux, tài liệu của Till Varoquaux và Konstantin Kashin.bpo-39485: Sửa lỗi trong
unittest.mock.create_autospec()có thể phàn nàn về số lượng đối số sai cho các bộ mô tả tùy chỉnh được xác định trong các hàm trả về của mô-đun mở rộng.bpo-38932: Mô phỏng đặt lại hoàn toàn các đối tượng con trên reset_mock(). Bản vá của Vegard Stikbakke
bpo-39082: Cho phép AsyncMock vá chính xác các phương thức tĩnh/lớp
bpo-39432: Triển khai thuật toán PEP-489 cho các tên biểu tượng không phải ascii "PyInit_..." trong các bản phân phối để làm cho nó xuất biểu tượng init chính xác trên Windows.
bpo-18819: Bỏ qua các trường
devmajorvàdevminorcho các tệp không phải thiết bị trong kho lưu trữtarfile, cho phép khả năng tương thích từng bit với GNUtar(1).bpo-39349: Đã thêm tham số cancel_futures mới vào
concurrent.futures.Executor.shutdown()để hủy tất cả các hợp đồng tương lai đang chờ xử lý chưa bắt đầu chạy, thay vì đợi chúng hoàn thành trước khi tắt trình thực thi.bpo-39274:
bool(fraction.Fraction)hiện trả về giá trị boolean ngay cả khi (tử số != 0) không trả về giá trị boolean (ví dụ: số có nhiều nếp nhăn).bpo-34793: Xóa hỗ trợ cho
with (await asyncio.lock):vàwith (yield from asyncio.lock):. Điều tương tự cũng đúng vớiasyncio.Conditionvàasyncio.Semaphore.bpo-25597: Đảm bảo rằng, nếu
wrapsđược cung cấp chounittest.mock.MagicMock, nó sẽ được sử dụng để tính giá trị trả về cho các phương thức ma thuật thay vì sử dụng giá trị trả về mặc định. Bản vá của Karthikeyan Singaravelan.bpo-36350:
inspect.Signature.parametersvàinspect.BoundArguments.argumentshiện là dicts thay vì OrderedDicts. Bản vá được đóng góp bởi Rémi Lapeyre.bpo-35727: Khắc phục sự lan truyền mã thoát sys.exit() và sys.exit(None) khi được sử dụng trong multiprocessing.Process.
bpo-32173: * Thêm chức năng
lazycachevào__all__. * Sử dụngdict.clearđể xóa bộ nhớ đệm. * Tái cấu trúc hàmgetlinevà hàmcheckcache.
Tài liệu¶
bpo-17422: Tham chiếu ngôn ngữ hiện chỉ định các hạn chế đối với không gian tên lớp. Được chuyển thể từ bản vá của Ethan Furman.
bpo-39572: Tài liệu cập nhật về cờ
totalcủaTypedDict.bpo-39654: Trong tài liệu pyclbr, cập nhật 'lớp' thành 'mô-đun' khi thích hợp và thêm nhận xét mô-đun đọc. Bản vá của Hakan Çelik.
bpo-39153: Làm rõ ngữ nghĩa đếm lại cho các hàm sau: - PyObject_SetItem - PyMapping_SetItemString - PyDict_SetItem - PyDict_SetItemString
bpo-39392: Giải thích rằng khi lấp đầy rùa, các vùng chồng chéo có thể không được lấp đầy.
bpo-39369: Cập nhật mô tả phương pháp đọc dòng mmap. Không nên bỏ qua thực tế là phương thức readline cập nhật vị trí tệp vì điều này có thể gây ấn tượng cho người lập trình rằng nó không cập nhật nó.
bpo-9056: Bao gồm tiểu mục trong TOC cho phiên bản tài liệu PDF.
Kiểm tra¶
bpo-38325: Bỏ qua kiểm tra các ký tự không phải BMP của test_winconsoleio.
bpo-39502: Bỏ qua test_zipfile.test_add_file_after_2107() nếu
time.localtime()không thành công vớiOverflowError. Đó là trường hợp của AIX 6.1 chẳng hạn.
xây dựng¶
bpo-39489: Xóa bản dựng đặc biệt
COUNT_ALLOCS.
cửa sổ¶
bpo-39553: Xóa mã không sử dụng liên quan đến bảng kê khai SxS.
bpo-39439: Tôn trọng đường dẫn Python khi virtualenv hoạt động trên Windows.
bpo-39393: Cải thiện thông báo lỗi khi cố tải DLL với các phần phụ thuộc chưa được giải quyết.
bpo-38883:
home()vàexpanduser()trên Windows hiện thíchUSERPROFILEhơn và không còn sử dụngHOMEnữa, thông thường không được đặt cho tài khoản người dùng thông thường. Điều này khiến chúng lại hoạt động giống nhưos.path.expanduser(), được thay đổi thành bỏ quaHOMEtrong 3.8, xem bpo-36264.bpo-39185: Tập lệnh build.bat có các tùy chọn bổ sung cho đầu ra rất yên tĩnh (-q) và đầu ra rất dài dòng (-vv)
IDLE¶
bpo-39663: Thêm bài kiểm tra cho pyparse find_good_parse_start().
bpo-39600: Trong cửa sổ cấu hình phông chữ, loại bỏ tên phông chữ trùng lặp.
bpo-30780: Thêm các bài kiểm tra hộp thoại cấu hình còn lại cho các nút, phần đánh dấu và tab phím.
bpo-39388: IDLE Nút Hủy cài đặt hiện hủy các thay đổi đang chờ xử lý
bpo-38792: Đóng mẹo gọi shell IDLE nếu xảy ra khởi động lại
KeyboardInterrupthoặc shell. Bản vá của Zackery Spytz.
C API¶
bpo-35081: Di chuyển tệp tiêu đề
bytes_methods.hsang C API nội bộ dưới dạngpycore_bytes_methods.h: nó chỉ chứa các ký hiệu riêng tư (có tiền tố là_Py), ngoại trừ macroPyDoc_STRVAR_shared().bpo-35081: Di chuyển tệp tiêu đề
dtoa.hsang C API nội bộ dưới dạngpycore_dtoa.h: nó chỉ chứa các chức năng riêng tư (có tiền tố là_Py). Các mô-đunmathvàcmathbây giờ phải được biên dịch với macroPy_BUILD_COREđược xác định.bpo-39573: Thêm chức năng
Py_SET_SIZE()để thiết lập kích thước của đối tượng.bpo-39500:
PyUnicode_IsIdentifier()không gọiPy_FatalError()nữa nếu chuỗi chưa sẵn sàng.bpo-39573: Thêm chức năng
Py_SET_TYPE()để thiết lập loại đối tượng.bpo-39573: Thêm chức năng
Py_SET_REFCNT()để đặt bộ đếm tham chiếu của đối tượng.bpo-39542: Chuyển đổi macro
PyType_HasFeature(),PyType_Check()vàPyType_CheckExact()thành các hàm nội tuyến tĩnh.bpo-39542: Trong C API giới hạn,
PyObject_INIT()vàPyObject_INIT_VAR()hiện được xác định là bí danh củaPyObject_Init()vàPyObject_InitVar()để làm cho việc triển khai của chúng không rõ ràng. Nó tránh rò rỉ chi tiết triển khai trong C API giới hạn. Loại trừ các chức năng sau khỏi C API giới hạn:_Py_NewReference(),_Py_ForgetReference(),_PyTraceMalloc_NewReference()và_Py_GetRefTotal().bpo-39542: Loại trừ cơ chế thùng rác khỏi C API bị giới hạn: nó yêu cầu quyền truy cập vào các trường cấu trúc PyTypeObject và PyThreadState, trong khi các cấu trúc này mờ đục trong C API bị giới hạn.
bpo-39511: Hàm
PyThreadState_Clear()hiện gọi lệnh gọi lạiPyThreadState.on_delete. Trước đây, điều đó đã xảy ra trongPyThreadState_Delete().bpo-38076: Sửa lỗi chỉ xóa trạng thái trình thông dịch sau khi xóa toàn bộ mô-đun để đảm bảo quyền truy cập trạng thái mô-đun từ Tiện ích mở rộng C trong quá trình hủy thời gian chạy
bpo-39245: Vectorcall API (PEP 590) đã được công khai, bổ sung các chức năng
PyObject_Vectorcall,PyObject_VectorcallMethod,PyVectorcall_Function,PyObject_CallOneArg,PyObject_CallMethodNoArgs,PyObject_CallMethodOneArg,PyObject_FastCallDictvà cờPy_TPFLAGS_HAVE_VECTORCALL.
Python 3.9.0 alpha 3¶
Release date: 2020-01-24
Cốt lõi và nội dung¶
bpo-39427: Ghi lại tất cả các khả năng cho các tùy chọn
-Xtrong phần trợ giúp dòng lệnh. Bản vá của Pablo Galindo.bpo-39421: Khắc phục các sự cố có thể xảy ra khi vận hành với các chức năng trong mô-đun
heapqvà các toán tử so sánh tùy chỉnh.bpo-39386: Ngăn chặn việc chờ đợi gấp đôi của trình vòng lặp không đồng bộ.
bpo-17005: Thêm
functools.TopologicalSortervào mô-đunfunctoolsđể cung cấp chức năng thực hiện sắp xếp đồ thị theo cấu trúc liên kết. Bản vá của Pablo Galindo, Tim Peters và Larry Hastings.bpo-39320: Thay thế bốn mã byte phức tạp để xây dựng chuỗi bằng ba mã đơn giản hơn.
Bốn mã byte sau đây đã bị xóa:
BUILD_LIST_UNPACK
BUILD_TUPLE_UNPACK
BUILD_SET_UNPACK
BUILD_TUPLE_UNPACK_WITH_CALL
Ba mã byte sau đây đã được thêm vào:
LIST_TO_TUPLE
LIST_EXTEND
SET_UPDATE
bpo-39336: Trình tải nhập xuất bản các đối tượng mô-đun bất biến giờ đây có thể xuất bản các gói bất biến ngoài các mô-đun riêng lẻ.
bpo-39322: Đã thêm chức năng mới
gc.is_finalized()để kiểm tra xem một đối tượng đã được trình thu gom rác hoàn thiện chưa. Bản vá của Pablo Galindo.bpo-39048: Cải thiện thông báo lỗi được hiển thị khi các loại không chính xác được chuyển đến câu lệnh
async withbằng cách tra cứu phương thức đặc biệt__aenter__()trước phương thức đặc biệt__aexit__()khi nhập trình quản lý bối cảnh không đồng bộ. Bản vá của Géry Ogam.bpo-39235: Sửa vị trí cuối AST cho biểu thức trình tạo đơn độc trong lệnh gọi hàm, ví dụ: f(i cho tôi trong a).
bpo-39209: Xử lý chính xác mã thông báo nhiều dòng ở chế độ tương tác. Bản vá của Pablo Galindo.
bpo-1635741: Mô-đun mở rộng cổng _json để khởi tạo nhiều pha (PEP 489).
bpo-39216: Khắc phục sự cố tối ưu hóa gấp liên tục cho các đối số chỉ có vị trí - của Anthony Sottile.
bpo-39215: Sửa lỗi
SystemErrorkhi hàm lồng nhau có chú thích trên đối số chỉ có vị trí - của Anthony Sottile.bpo-39200: Sửa thông báo lỗi khi gọi
min()hoặcmax()không có đối số. Bản vá của Donghee Na.bpo-39200: Sửa thông báo lỗi khi cố gắng xây dựng các đối tượng
rangekhông có đối số. Bản vá của Pablo Galindo.bpo-39166: Sửa lỗi báo cáo thực thi dòng không chính xác trong các hàm theo dõi khi theo dõi lần lặp cuối cùng của vòng lặp for không đồng bộ. Bản vá của Pablo Galindo.
bpo-39114: Sửa lỗi báo cáo thực thi dòng không chính xác trong các hàm theo dõi khi theo dõi các trình xử lý ngoại lệ có ràng buộc tên. Bản vá của Pablo Galindo.
bpo-39156: Chia hướng dẫn mã byte COMPARE_OP thành bốn hướng dẫn riêng biệt.
COMPARE_OP để so sánh phong phú
IS_OP cho các bài kiểm tra 'là' và 'không'
CONTAINS_OP cho các bài kiểm tra 'trong' và 'không'
JUMP_IF_NOT_EXC_MATCH để kiểm tra các ngoại lệ trong câu lệnh 'thử ngoại trừ'.
Điều này cải thiện độ rõ ràng của trình thông dịch và sẽ tăng tốc độ một cách khiêm tốn.
bpo-38588: Khắc phục sự cố có thể xảy ra trong dict và list khi gọi
PyObject_RichCompareBool().bpo-13601: Theo mặc định,
sys.stderrhiện được lưu vào bộ đệm dòng, ngay cả khistderrđược chuyển hướng đến một tệp. Bạn vẫn có thể làm chosys.stderrkhông bị đệm bằng cách chuyển tùy chọn dòng lệnh-uhoặc đặt biến môi trườngPYTHONUNBUFFERED.(Được đóng góp bởi Jendrik Seipp trong bpo-13601.)
bpo-38610: Khắc phục sự cố có thể xảy ra trong một số phương thức danh sách bằng cách giữ các tham chiếu mạnh đến các thành phần danh sách khi gọi
PyObject_RichCompareBool().bpo-32021: Bao gồm mã hóa brotli .br trong mã hóa mimetypes_map
Thư viện¶
bpo-39430: Đã sửa lỗi tình trạng cuộc đua khi nhập lười biếng trong
tarfile.bpo-39413: Chức năng
os.unsetenv()hiện cũng có sẵn trên Windows.bpo-39390: Đã sửa lỗi hồi quy với lệnh gọi lại
ignorecủashutil.copytree(). Các loại đối số bây giờ lại làstrvàList[str].bpo-39395: Các chức năng
os.putenv()vàos.unsetenv()hiện luôn khả dụng.bpo-39406: Nếu chức năng
setenv()C có sẵn thìos.putenv()hiện được triển khai vớisetenv()thay vìputenv(), vì vậy Python không phải xử lý bộ nhớ biến môi trường.bpo-39396: Sửa lỗi
math.nextafter(-0.0, +0.0)trên AIX 7.1.bpo-29435: Cho phép sử dụng
tarfile.is_tarfile()với tệp và các đối tượng giống như tệp, nhưzipfile.is_zipfile(). Bản vá của William Woodruff.bpo-39377: Đã xóa tùy chọn
encodingkhỏijson.loads(). Nó đã không được dùng nữa kể từ Python 3.1.bpo-39389: Ghi siêu dữ liệu mức nén chính xác vào kho lưu trữ
gzip, thay vì luôn báo hiệu mức nén tối đa.bpo-39366: Các phương thức
xpath()vàxgtitle()không được dùng nữa trước đây củanntplib.NNTPđã bị xóa.bpo-39357: Loại bỏ tham số buffering của
bz2.BZ2File. Kể từ Python 3.0, nó đã bị bỏ qua và việc sử dụng nó đã phát raDeprecationWarning. Truyền một đối tượng tệp đang mở để kiểm soát cách mở tệp. Tham số compresslevel trở thành chỉ có từ khóa.bpo-39353: Không dùng chuẩn binhex4 và hexbin4 nữa. Không dùng mô-đun
binhexvà các hàmbinasciisau:b2a_hqx(),a2b_hqx(),rlecode_hqx(),rledecode_hqx(),crc_hqx().bpo-39351: Xóa
base64.encodestring()vàbase64.decodestring(), bí danh không được dùng nữa kể từ Python 3.1: thay vào đó hãy sử dụngbase64.encodebytes()vàbase64.decodebytes().bpo-39350: Xóa hàm
fractions.gcd(), không dùng nữa kể từ Python 3.5 (bpo-22486): thay vào đó hãy sử dụngmath.gcd().bpo-39329: hàm tạo
LMTPhiện có tham số timeout tùy chọn. Bản vá của Donghee Na.bpo-39313: Thêm tùy chọn
exec_functionmới (--exec-function trong CLI) vàoRefactoringToolđể biếnexecthành một chức năng. Bản vá của Batuhan Taskaya.bpo-39259:
FTP_TLSvàFTP_TLShiện tăngValueErrornếu thời gian chờ nhất định cho hàm tạo của chúng bằng 0 để ngăn việc tạo ổ cắm không chặn. Bản vá của Donghee Na.bpo-39259:
SMTPvàSMTP_SSLhiện tăngValueErrornếu thời gian chờ nhất định cho hàm tạo của chúng bằng 0 để ngăn việc tạo ổ cắm không chặn. Bản vá của Donghee Na.bpo-39310: Thêm
math.ulp(): trả về giá trị của bit ít quan trọng nhất của float.bpo-39297: Cải thiện hiệu suất phát hiện phân phối importlib.metadata và phục hồi các mục nhập sys.path không thể truy cập (importlib_metadata v1.4.0).
bpo-39259:
NNTPvàNNTP_SSLhiện tăngValueErrornếu thời gian chờ nhất định cho hàm tạo của chúng bằng 0 để ngăn việc tạo ổ cắm không chặn. Bản vá của Donghee Na.bpo-38901: Khi bạn chỉ định nhắc='.' hoặc tương đương python -m venv --prompt . ... tên cơ sở của thư mục hiện tại được sử dụng để đặt lời nhắc của venv đã tạo khi nó được kích hoạt.
bpo-39288: Thêm
math.nextafter(): trả về giá trị dấu phẩy động tiếp theo sau x về phía y.bpo-39259:
POP3vàPOP3_SSLhiện tăngValueErrornếu thời gian chờ nhất định cho hàm tạo của chúng bằng 0 để ngăn việc tạo ổ cắm không chặn. Bản vá của Donghee Na.bpo-39242: Đã cập nhật miền Gmane từ news.gmane.org thành news.gmane.io. Miền này được sử dụng làm ví dụ về máy chủ đọc tin tức
NNTPvà các bài kiểm tra nntplib.bpo-35292: Proxy
SimpleHTTPRequestHandler.guess_typethànhmimetypes.guess_typeđểmimetypes.initđược gọi một cách lười biếng nhằm tránh những chi phí không cần thiết khi nhập mô-đunhttp.server.bpo-39239: Phương thức
select.epoll.unregister()không còn bỏ qua lỗiEBADFnữa.bpo-38907: Trong tập lệnh http.server, khôi phục liên kết với IPv4 trên Windows.
bpo-39152: Sửa ttk.Scale.configure([name]) để trả về bộ cấu hình cho tên hoặc tất cả các tùy chọn. Giovanni Lombardo đã đóng góp một phần của bản vá.
bpo-39198: Nếu một ngoại lệ được đưa vào
Logger.isEnabledFor(giả sử bằng asyncio timeouts hoặc stopit), khóa chungloggingcó thể không được giải phóng một cách thích hợp, dẫn đến bế tắc. Thay đổi này bao bọc khối mã đó bằngtry...finallyđể đảm bảo khóa được giải phóng.bpo-39191: Thực hiện kiểm tra vòng lặp đang chạy trước khi bắt đầu một tác vụ mới trong
loop.run_until_complete()để không nhanh chóng; nó ngăn chặn tác dụng phụ của việc sinh ra nhiệm vụ mới trước khi đưa ra ngoại lệ.bpo-38871: Đặt dấu ngoặc đơn chính xác cho các câu lệnh dựa trên bộ lọc có chứa biểu thức lambda trong
lib2to3. Bản vá của Donghee Na.bpo-39142: Một thay đổi đã được thực hiện đối với log.config.dictConfig để tránh chuyển đổi các phiên bản của bộ dữ liệu có tên thành ConvertingTuple. Người ta cho rằng các bộ dữ liệu được đặt tên quá chuyên biệt để có thể được xử lý như các bộ dữ liệu thông thường; nếu người dùng của các bộ dữ liệu được đặt tên yêu cầu chức năng ConvertingTuple thì họ sẽ phải tự triển khai chức năng đó trong lớp bộ dữ liệu được đặt tên của mình.
bpo-39158: ast.literal_eval() hiện hỗ trợ các tập hợp trống.
bpo-39129: Sửa đường dẫn nhập cho
asyncio.TimeoutErrorbpo-39057:
urllib.request.proxy_bypass_environment()hiện bỏ qua các dấu chấm ở đầu và không còn bỏ qua dòng mới ở cuối.bpo-39056: Đã sửa lỗi xử lý danh mục cảnh báo không hợp lệ trong tùy chọn -W. Không còn nhập mô-đun re nếu không cần thiết.
bpo-39055:
base64.b64decode()vớivalidate=Truehiện tăng binascii.Error nếu đầu vào kết thúc bằng một\n.bpo-21600: Sửa
mock.patch.stopall()để dừng các bản vá đang hoạt động được tạo bằngmock.patch.dict().bpo-39019: Triển khai
__class_getitem__giả chotempfile.SpooledTemporaryFile.bpo-39019: Triển khai
__class_getitem__giả chosubprocess.Popen,subprocess.CompletedProcessbpo-38914: Đã điều chỉnh cách diễn đạt cảnh báo do lệnh
checkcủa distutils đưa ra khi các trườngauthorvàmaintainerđược cung cấp nhưng không tìm thấy trường e-mail tương ứng (author_emailhoặcmaintainer_email). Từ ngữ bây giờ phản ánh thực tế là các trường này được đề xuất nhưng không bắt buộc. Bản vá của Juergen Gmach.bpo-38878: Đã sửa lỗi __subclasshook__ của
os.PathLikeđể trả về kết quả chính xác khi kế thừa. Bản vá của Bar Harel.bpo-38615:
IMAP4vàIMAP4_SSLhiện có tham số timeout tùy chọn cho hàm tạo của chúng. Ngoài ra, phương thứcopen()hiện có tham số timeout tùy chọn với thay đổi này. Các phương thức ghi đè củaIMAP4_SSLvàIMAP4_streamđã được áp dụng cho thay đổi này. Bản vá của Donghee Na.bpo-35182: Đã khắc phục sự cố cuộc gọi tiếp theo của
Popen.communicate()khi tiến trình con đã đóng bất kỳ luồng tiêu chuẩn đường ống nào nhưng vẫn tiếp tục chạy. Bản vá của Andriy Maletsky.bpo-38630: Trên Unix,
subprocess.Popen.send_signal()hiện thăm dò trạng thái quá trình. Thăm dò giúp giảm nguy cơ gửi tín hiệu đến quy trình sai nếu quy trình hoàn thành, thuộc tínhsubprocess.Popen.returncodevẫn làNonevà pid đã được gán lại (tái chế) cho một quy trình mới khác.bpo-38536: Loại bỏ khoảng trắng ở cuối đơn vị tiền tệ được định dạng bằng
international=Truevà một ngôn ngữ có giá trị ký hiệu theo sau. Ví dụ.locale.currency(12.34, international=True)trả về'12,34 EUR 'thay vì'12,34 EUR'.bpo-38473: Sử dụng chữ ký từ mô hình bên trong cho các phương thức được xác định tự động được đính kèm với
unittest.mock.attach_mock(). Bản vá của Karthikeyan Singaravelan.bpo-38361: Đã khắc phục sự cố trong đó
identcó thể bao gồm dấu phân cách đường dẫn đầu khisyslog.openlog()được gọi mà không có đối số.bpo-38293: Thêm hỗ trợ
copy.copy()vàcopy.deepcopy()cho các đối tượngproperty().bpo-37958: Đã thêm phương thức pstats.Stats.get_profile_dict() để trả về dữ liệu hồ sơ dưới dạng phiên bản StatsProfile.
bpo-28367: Hằng số ma thuật Termios cho các tốc độ truyền sau: - B500000 - B576000 - B921600 - B1000000 - B1152000 - B1500000 - B2000000 - B2500000 - B3000000 - B3500000 - B4000000 Bản vá của Andrey Smirnov
Tài liệu¶
bpo-39381: Đề cập trong tài liệu rằng
asyncio.get_event_loop()chỉ ngầm tạo vòng lặp sự kiện mới nếu được gọi từ chuỗi chính.bpo-38918: Thêm mục nhập cho
__module__trong phần "hàm" & "phương thức" của bảng Các loại và thành viên của tài liệuinspect.bpo-3530: Trong tài liệu mô-đun
ast, hãy sửa ví dụNodeTransformergây hiểu lầm và thêm lời khuyên về thời điểm nên sử dụng chức năngfix_missing_locations.
xây dựng¶
bpo-39395: Trên nền tảng không phải Windows, các hàm
setenv()vàunsetenv()hiện được yêu cầu để xây dựng Python.bpo-39160: Đã cập nhật tài liệu trong
./configure --helpđể hiển thị các giá trị mặc định, tài liệu tham khảo nếu cần và thêm giải thích bổ sung nếu cần.bpo-39144: Cả mục tiêu xây dựng ctags và etags đều bao gồm các tệp nguồn thư viện chuẩn Modules/_ctypes và Python.
IDLE¶
bpo-39050: Làm cho hộp thoại Cài đặt IDLE Nút Trợ giúp hoạt động trở lại.
bpo-34118: Gắn thẻ bộ nhớ, phạm vi và bộ dữ liệu dưới dạng các lớp, giống như danh sách, vân vân, trong danh sách các hàm tích hợp trong hướng dẫn sử dụng thư viện.
bpo-32989: Thêm thử nghiệm cho phương thức newline_and_indent_event của trình soạn thảo. Xóa mã chết khỏi phương thức pyparse find_good_parse_start.
C API¶
bpo-39372: Làm sạch các tệp tiêu đề của giao diện được xác định nhưng không triển khai. Các biểu tượng API công khai bị xóa là:
_PyBytes_InsertThousandsGroupingLocale,_PyBytes_InsertThousandsGrouping,_Py_InitializeFromArgs,_Py_InitializeFromWideArgs,_PyFloat_Repr,_PyFloat_Digits,_PyFloat_DigitsInit,PyFrame_ExtendStack,_PyAIterWrapper_Type,PyNullImporter_Type,PyCmpWrapper_Type,PySortWrapper_Type,PyNoArgsFunction.bpo-39164: Thêm chức năng
_PyErr_GetExcInfo()riêng tư để truy xuất thông tin ngoại lệ của trạng thái luồng Python được chỉ định.
Python 3.9.0 alpha 2¶
Release date: 2019-12-18
Bảo mật¶
bpo-38945: Các ký tự dòng mới đã được thoát khi thực hiện mã hóa uu để ngăn chúng tràn vào phần nội dung của tệp được mã hóa. Điều này ngăn chặn việc sửa đổi dữ liệu một cách cố ý hoặc vô tình trong quá trình giải mã.
bpo-37228: Do lo ngại về bảo mật, tham số reuse_address của
asyncio.loop.create_datagram_endpoint()không còn được hỗ trợ. Điều này là do hoạt động củaSO_REUSEADDRtrong UDP. Để biết thêm chi tiết, hãy xem tài liệu vềloop.create_datagram_endpoint(). (Được đóng góp bởi Kyle Stanley, Antoine Pitrou và Yury Selivanov trong bpo-37228.)bpo-38804: Khắc phục lỗ hổng ReDoS trong
http.cookiejar. Bản vá của Ben Caller.
Cốt lõi và nội dung¶
bpo-39028: Cải thiện một chút tốc độ phân tích đối số từ khóa với nhiều kwargs bằng cách củng cố giả định rằng kwargs là các chuỗi được thực hiện.
bpo-39080: Sửa giá trị của end_col_offset cho các nút AST Biểu thức được gắn dấu sao khi chúng nằm trong số các thành phần trong thuộc tính args của nút Gọi AST.
bpo-39031: Khi phân tích cú pháp nút "elif", lineno và col_offset của nút hiện trỏ đến từ khóa "elif" chứ không trỏ đến điều kiện của nó, làm cho nó nhất quán với nút "if". Bản vá của Lysandros Nikolaou.
bpo-20443: Trong Python 3.9.0a1, sys.argv[0] được tạo thành đường dẫn tuyệt đối nếu tên tệp được chỉ định trên dòng lệnh. Hoàn nguyên thay đổi này vì hầu hết người dùng đều mong đợi sys.argv không bị sửa đổi.
bpo-39008:
PySys_Audit()hiện yêu cầu sử dụngPy_ssize_tcho các đối số kích thước trong chuỗi định dạng, bất kểPY_SSIZE_T_CLEANcó được xác định tại thời điểm đưa vào hay không.bpo-38673: Ở chế độ REPL, không chuyển sang PS2 nếu dòng bắt đầu bằng nhận xét hoặc khoảng trắng. Dựa trên tác phẩm của Batuhan Taşkaya.
bpo-38922: Việc gọi
replacetrên một đối tượng mã hiện sẽ phát sinh sự kiện kiểm tracode.__new__.bpo-38920: Thêm móc kiểm tra khi
sys.excepthook()vàsys.unraisablehook()được gọi.bpo-38892: Cải thiện tài liệu cho bảng sự kiện và chức năng kiểm tra.
bpo-38852: Đặt kích thước ngăn xếp luồng thành 8 Mb cho các bản dựng gỡ lỗi trên nền tảng Android.
bpo-38858: Mỗi trình thông dịch con Python hiện có "các số nguyên nhỏ" riêng: các số trong [-5; 257] phạm vi. Không thể thay đổi số lượng số nguyên nhỏ tại thời điểm xây dựng bằng cách ghi đè macro
NSMALLNEGINTSvàNSMALLPOSINTS: macro hiện phải được sửa đổi thủ công trong tệp tiêu đềpycore_pystate.h.bpo-36854: Trạng thái thu gom rác trở thành trạng thái cho mỗi trình thông dịch (
PyInterpreterState.gc), thay vì toàn cục (_PyRuntimeState.gc).bpo-38835: Các macro
PyFPE_START_PROTECT()vàPyFPE_END_PROTECT()trống: chúng không hoạt động gì trong năm qua, vì vậy hãy ngừng sử dụng chúng.bpo-38328: Tăng tốc thời gian tạo các màn hình
listvàsetliên tục. Bản vá của Brandt Bucher.bpo-38707:
MainThread.native_idhiện được đặt lại chính xác trong các tiến trình con được sinh ra bằngmultiprocessing.Process, thay vì giữ lại giá trị của tiến trình gốc.bpo-38629: Đã thêm phương thức
__floor__và__ceil__để làm nổi đối tượng. Bản vá của Batuhan Taşkaya.bpo-27145: int + int và int - các toán tử int hiện có thể trả về các số nguyên nhỏ. Bản vá của hongweipeng.
bpo-38021: Cung cấp thẻ nền tảng cho AIX đủ để nhận dạng phân phối nhị phân PEP425. Bản vá của Michael Felt.
bpo-35409: Bỏ qua các ngoại lệ của GeneratorExit khi đưa một ngoại lệ vào coroutine gần của trình tạo không đồng bộ.
bpo-33387: Đã xóa mã byte WITH_CLEANUP_START, WITH_CLEANUP_FINISH, BEGIN_FINALLY, END_FINALLY, CALL_FINALLY và POP_FINALLY. Được thay thế bằng mã byte RERAISE và WITH_EXCEPT_START. Trình biên dịch hiện tạo mã khác nhau cho các nhánh ngoại lệ và không ngoại lệ cho các câu lệnh 'với' và 'thử ngoại trừ'. Đối với các câu lệnh 'thử cuối cùng', khối 'cuối cùng' được sao chép cho mỗi lần thoát khỏi phần nội dung 'thử'.
Thư viện¶
bpo-39033: Sửa
NameErrortrongzipimport. Bản vá của Karthikeyan Singaravelan.bpo-39022: Cập nhật importlib.metadata để bao gồm các cải tiến từ importlib_metadata 1.3, bao gồm việc tuần tự hóa EntryPoints tốt hơn và tài liệu cải tiến cho công cụ tìm tùy chỉnh.
bpo-39006: Khắc phục asyncio khi thiếu mô-đun ssl: chỉ kiểm tra phiên bản ssl.SSLSocket nếu mô-đun ssl có sẵn.
bpo-38708: Khắc phục lỗi IndexError tiềm ẩn trong trình phân tích cú pháp email khi phân tích cú pháp id tin nhắn trống.
bpo-38698: Thêm mã thông báo
InvalidMessageIDmới vào trình phân tích cú pháp email để thể hiện tiêu đề Message-ID không hợp lệ. Ngoài ra, hãy thêm lỗi khi còn lại giá trị sau khi phân tích cú pháp tiêu đề.bpo-38994: Triển khai
__class_getitem__choos.PathLike,pathlib.Path.bpo-38979: Trả về lớp từ
ContextVar.__class_getitem__để đơn giản hóa việc phân lớp con.bpo-38978: Triển khai
__class_getitem__trên các đối tượng asyncio (Tương lai, Nhiệm vụ, Hàng đợi). Bản vá của Batuhan Taskaya.bpo-38916:
array.array: Loại bỏ phương thứctostring()vàfromstring(). Chúng là bí danh củatobytes()vàfrombytes(), không được dùng nữa kể từ Python 3.2.bpo-38986: Tạo bản sao của TaskWakeupMethWrapper được tăng tốc C giống như phiên bản Python thuần túy.
bpo-38982: Sửa lỗi asyncio
PidfdChildWatcher: xử lý lỗiwaitpid(). Nếuwaitpid()được gọi ở nơi khác, cuộc gọiwaitpid()không thành công vớiChildProcessError: sử dụng mã trả về 255 trong trường hợp này và ghi lại cảnh báo. Nó đảm bảo rằng bộ mô tả tệp pidfd sẽ bị đóng nếu lỗi này xảy ra.bpo-38529: Đưa ra cảnh báo asyncio quá ồn ào về việc xóa luồng mà không có lệnh gọi
.close()rõ ràng.bpo-27413: Đã thêm khả năng chuyển qua các tùy chọn
ensure_asciitới json.dumps trong giao diện dòng lệnhjson.tool.bpo-38634: Mô-đun
readlinehiện phát hiện xem Python có được liên kết với libedit khi chạy trên tất cả các nền tảng hay không. Trước đây việc kiểm tra chỉ được thực hiện trên macOS.bpo-33684: Sửa lỗi
json.toolkhông đọc được tệp JSON có các ký tự không phải ASCII khi mã hóa ngôn ngữ không phải là UTF-8.bpo-38698: Ngăn chặn UnboundLocalError bật lên trong pars_message_id.
Parse_message_id() đã sử dụng không đúng cách mã thông báo được xác định bên trong trình xử lý ngoại lệ, điều này đang gây ra
UnboundLocalErrorkhi phân tích cú pháp một giá trị không hợp lệ. Bản vá của Claudiu Popa.bpo-38927: Sử dụng
python -m pipthay vìpipđể nâng cấp các phụ thuộc trong venv.bpo-26730: Sửa lỗi
SpooledTemporaryFile.rollover()có thể làm hỏng tập tin khi nó ở chế độ văn bản. Bản vá của Serhiy Storchaka.bpo-38881: Random.choices() hiện tăng ValueError khi tất cả trọng số bằng 0.
bpo-38876: Tăng dưa chua.UnpicklingError khi tải một mục từ bản ghi nhớ do dữ liệu nhập không hợp lệ.
Mã trước đó đang tăng
KeyErrorcho cả quá trình triển khai Python và C. Điều này xảy ra do chỉ mục được chỉ định của đầu vào không hợp lệ không tồn tại trong cấu trúc ghi nhớ, nơi mà dưa chua lưu trữ những đối tượng mà nó đã nhìn thấy. Đầu vào không đúng định dạng có thể đã gây ra tảiBINGEThoặcLONG_BINGETtừ bản ghi nhớ, dẫn đếnKeyErrorvì chỉ mục được xác định là không có thật. Bản vá của Claudiu Popa.bpo-38688: Gọi func:
shutil.copytreeđể sao chép cây thư mục từ thư mục này sang thư mục con khác dẫn đến vòng lặp vô tận và RecursionError. Một bản sửa lỗi đã được thêm vào để sử dụng một trình lặp và tạo danh sách các mục cần sao chép, tránh đệ quy cho các thư mục mới được tạo. Bản vá của Bruno P. Kinoshita.bpo-38863: Cải thiện chức năng
is_cgi()tronghttp.server, cho phép xử lý trường hợp thư mục cgi là con của một thư mục khác không phải là thư mục gốc.bpo-37838:
typing.get_type_hints()xử lý đúng các chức năng được trang trí bằngfunctools.wraps().bpo-38870: Hiển thị
ast.unparse()như một hàm của mô-đunastcó thể được sử dụng để phân tích cú pháp đối tượngast.ASTvà tạo ra một chuỗi có mã sẽ tạo ra đối tượngast.ASTtương đương khi được phân tích cú pháp. Bản vá của Pablo Galindo và Batuhan Taskaya.bpo-38859: AsyncMock hiện trả về StopAsyncIteration khi một side_effect lặp lại đã hết. Vì PEP-479 nên không thể đưa ra ngoại lệ StopIteration từ một coroutine.
bpo-38857: Sửa AsyncMock cho các giá trị trả về thuộc loại có thể chờ. Điều này cũng bao gồm các giá trị lặp lại side_effect tình cờ có thể chờ đợi và bao bọc các lệnh gọi có thể trả về một loại có thể chờ đợi. Trước đây những thứ có thể chờ đợi này được chờ đợi thay vì được trả lại như cũ.
bpo-38834: Các lớp con
typing.TypedDicthiện theo dõi những khóa nào là tùy chọn bằng cách sử dụng các thuộc tính__required_keys__và__optional_keys__để cho phép xác thực thời gian chạy của các dự án hạ nguồn. Bản vá của Zac Hatfield-Dodds.bpo-38821: Khắc phục các ngoại lệ chưa được xử lý trong
argparsekhi quốc tế hóa các thông báo lỗi cho các đối số cónargsđược đặt thành các giá trị đặc biệt (không phải số nguyên). Bản vá của Federico Bond.bpo-38820: Làm cho Python tương thích với OpenSSL 3.0.0.
ssl.SSLSocket.getpeercert()không còn trả về địa chỉ IPv6 có dòng mới ở cuối.bpo-38811: Khắc phục ngoại lệ chưa được xử lý trong
pathlibkhi thiếuos.link(). Bản vá của Toke Høiland-Jørgensen.bpo-38686: Đã thêm hỗ trợ cho nhiều giá trị
qoptrongurllib.request.AbstractDigestAuthHandler.bpo-38712: Thêm chức năng
signal.pidfd_send_signal()dành riêng cho Linux, cho phép gửi tín hiệu đến một quy trình được xác định bởi bộ mô tả tệp thay vì pid.bpo-38348: Thêm các tùy chọn dòng lệnh
-ivà--indent(mức thụt lề) và--no-type-comments(gõ nhận xét) vào công cụ phân tích cú pháp ast.bpo-37523: Thay đổi
zipfile.ZipExtFileđể tăngValueErrorkhi cố gắng truy cập đối tượng tệp cơ bản sau khi nó đã bị đóng. Hành vi mới này phù hợp với cách xử lý việc truy cập các tệp đã đóng trong các phần khác của Python.bpo-38045: Cải thiện hiệu suất của
enum._decompose()trongenum. Bản vá của hongweipeng.bpo-36820: Chu kỳ ngắt được tạo khi lưu một ngoại lệ trong socket.py, codeop.py và dyld.py khi chúng duy trì không chỉ ngoại lệ mà cả các đối tượng người dùng thông qua thuộc tính
__traceback__. Bản vá của Mario Corchero.bpo-36406: Xử lý các gói không gian tên trong
doctest. Bản vá của Karthikeyan Singaravelan.bpo-34776: Sửa các lớp dữ liệu để hỗ trợ chuyển tiếp tham chiếu trong chú thích kiểu
bpo-20928: ElementTree hỗ trợ xử lý XInclude đệ quy. Bản vá của Stefan Behnel.
bpo-29636: Thêm tùy chọn khoảng trắng để định dạng JSON với
json.toolCLI. Các tùy chọn loại trừ lẫn nhau sau đây hiện được hỗ trợ:--indentđể đặt mức thụt lề trong khoảng trắng;--tabđể thụt lề bằng tab;--no-indentđể chặn dòng mới; và--compactđể loại bỏ tất cả khoảng trắng. Hành vi mặc định vẫn giống như--indent=4.
Tài liệu¶
bpo-38928: Đúng khi
upgrade_dependencies()và--upgrade-depscủa venv được thêm vào.bpo-38899: Cập nhật tài liệu để nêu rõ rằng để kích hoạt môi trường ảo dưới cá, người ta nên sử dụng
source, không phải.như tài liệu tại https://fishshell.com/docs/current/cmds/source.html.bpo-22377: Cải thiện tài liệu về các giá trị mà
datetime.datetime.strptime()chấp nhận cho%Z. Bản vá của Karl Dubost.
Kiểm tra¶
bpo-38546: Khắc phục test_ressources_gced_in_workers() của test_concurrent_futures: dừng rõ ràng trình quản lý để tránh rò rỉ tiến trình con đang chạy trong nền sau khi quá trình kiểm tra hoàn tất.
bpo-38546: Các bài kiểm tra đa xử lý và concurrent.futures hiện dừng quá trình theo dõi tài nguyên khi các bài kiểm tra hoàn tất.
bpo-38614: Thay thế hằng số thời gian chờ được mã hóa cứng trong các thử nghiệm bằng hằng số
test.supportmới:LOOPBACK_TIMEOUT,INTERNET_TIMEOUT,SHORT_TIMEOUTvàLONG_TIMEOUT. Việc điều chỉnh bốn hằng số thời gian chờ này cho tất cả các lần kiểm tra cùng một lúc sẽ trở nên dễ dàng hơn thay vì phải điều chỉnh từng tệp kiểm tra riêng lẻ.bpo-38547: Khắc phục test_pty: nếu quy trình là người dẫn đầu phiên, việc đóng bộ mô tả tệp chính sẽ phát ra tín hiệu SIGHUP: chỉ cần bỏ qua SIGHUP khi chạy thử nghiệm.
bpo-38992: Khắc phục lỗi kiểm tra
math.fsum()bị lỗi do bị gập liên tục.Các chức năng bpo-38991:
test.support:run_python_until_end(),assert_python_ok()vàassert_python_failure()không còn loại bỏ khoảng trắng khỏi stderr nữa. Loại bỏ chức năngtest.support.strip_python_stderr().bpo-38965: Fix test_faulthandler trên GCC 10. Sử dụng từ khóa "dễ bay hơi" trong
faulthandler._stack_overflow()để ngăn tối ưu hóa lệnh gọi đuôi trên bất kỳ trình biên dịch nào, thay vì dựa vào pragma cụ thể của trình biên dịch.bpo-38875: test_capi: các bài kiểm tra thùng rác hiện yêu cầu tài nguyên "cpu" kiểm tra.
bpo-38841: Bỏ qua asyncio test_create_datagram_endpoint_ex hiện_sock_unix trên các nền tảng thiếu liên kết chức năng() cho ổ cắm miền unix được đặt tên.
bpo-38692: Bỏ qua bài kiểm tra test_posix.test_pidfd_open() nếu
os.pidfd_open()không thành công vớiPermissionError. Tình huống này có thể xảy ra trong hộp cát Linux sử dụng danh sách trắng hệ thống chưa cho phép hệ thốngpidfd_open().bpo-38839: Fix một số chức năng không dùng đến trong test. Bản vá của Adam Johnson.
bpo-38669: Tăng
TypeErrorkhi truyền mục tiêu dưới dạng chuỗi vớiunittest.mock.patch.object().bpo-37957: test.regrtest hiện có thể nhận danh sách các mẫu thử nghiệm cần bỏ qua (sử dụng đối số -i/--ignore) hoặc một tệp có danh sách các mẫu cần bỏ qua (sử dụng đối số --ignore-file). Bản vá của Pablo Galindo.
xây dựng¶
bpo-37404:
asynciohiện tăngTypeErrorkhi gọi các phương thức không tương thích bằng ổ cắmssl.SSLSocket. Bản vá của Ido Michael.bpo-36500: Đã thêm dự án "regen" tùy chọn vào giải pháp Visual Studio. Dự án này sẽ tạo lại tất cả ngữ pháp, mã thông báo và mã opcode.
cửa sổ¶
macOS¶
bpo-37931: Đã khắc phục sự cố trên các bản dựng động OSX xảy ra khi khởi tạo lại mô-đun posix sau Py_Finalize nếu môi trường đã thay đổi kể từ
import posixtrước đó. Bản vá của Benoît Hudson.
IDLE¶
bpo-38944: Phím Escape hiện đóng cửa sổ hoàn thành IDLE. Bản vá của Johnny Najera.
bpo-38943: Sửa lỗi cửa sổ tự động hoàn thành IDLE không luôn xuất hiện trên một số hệ thống. Bản vá của Johnny Najera.
bpo-38862: 'Dải khoảng trắng ở cuối' trên menu Định dạng sẽ xóa các dòng mới bổ sung ở cuối các tệp không có shell.
bpo-38636: Sửa lỗi chuyển đổi tab menu Định dạng IDLE và chiều rộng thụt lề tệp. Các chức năng này (phím tắt mặc định Alt-T và Alt-U) đã bị tắt nhầm trong 3.7.5 và 3.8.0.
C API¶
bpo-38896: Xóa chức năng
PyUnicode_ClearFreeList(): danh sách miễn phí Unicode đã bị xóa trong Python 3.3.bpo-37340: Xóa các hàm
PyMethod_ClearFreeList()vàPyCFunction_ClearFreeList(): danh sách miễn phí của các đối tượng phương thức bị ràng buộc đã bị xóa.bpo-38835: Loại trừ macro
PyFPE_START_PROTECT()vàPyFPE_END_PROTECT()củapyfpe.hkhỏiPy_LIMITED_API(API ổn định).
Python 3.9.0 alpha 1¶
Release date: 2019-11-19
Bảo mật¶
bpo-38722:
runpyhiện sử dụngio.open_code()để mở tệp mã. Bản vá của Jason Killen.bpo-38622: Thêm các sự kiện kiểm tra bổ sung cho mô-đun
ctypes.bpo-38418: Sửa sự kiện kiểm tra để
os.system()được đặt tên làos.system.bpo-38243: Thoát tiêu đề máy chủ của
xmlrpc.server.DocXMLRPCServerkhi hiển thị trang tài liệu dưới dạng HTML. (Được đóng góp bởi Donghee Na trong bpo-38243.)bpo-38174: Cập nhật phiên bản thư viện người nước ngoài được nhà cung cấp lên 2.2.8, giải quyết CVE 2019-15903.
bpo-37764: Sửa lỗi email._header_value_parser.get_unstructured rơi vào vòng lặp vô hạn đối với một trường hợp cụ thể trong đó tiêu đề email không có khoảng trắng ở cuối và trường hợp nó chứa từ được mã hóa không hợp lệ. Bản vá của Ashwin Ramaswami.
bpo-37461: Khắc phục vòng lặp vô hạn khi phân tích các tiêu đề email được tạo đặc biệt. Bản vá của Abhilash Raj.
bpo-37363: Thêm các sự kiện kiểm tra cho nhiều lệnh chạy được hỗ trợ (xem Dòng lệnh và môi trường).
bpo-37463: ssl.match_hostname() không còn chấp nhận địa chỉ IPv4 có văn bản bổ sung sau địa chỉ và chỉ có ký hiệu bốn chấm không có khoảng trắng ở cuối. Một số triển khai inet_aton() bỏ qua khoảng trắng và tất cả dữ liệu sau khoảng trắng, ví dụ: '127.0.0.1 sao cũng được'.
bpo-37363: Thêm các sự kiện kiểm tra cho
ensurepip,ftplib,glob,imaplib,nntplib,pdb,poplib,shutil,smtplib,sqlite3,subprocess,telnetlib,tempfilevàwebbrowser, cũng nhưos.listdir(),os.scandir()vàbreakpoint().bpo-37364:
io.open_code()hiện được sử dụng khi đọc tệp.pth.bpo-34631: Đã cập nhật OpenSSL lên 1.1.1c trong trình cài đặt Windows
bpo-34155: Sửa lỗi phân tích cú pháp các địa chỉ email không hợp lệ có nhiều hơn một
@(ví dụ: a@b@c.com.) để không trả lại phần trước@thứ 2 làm địa chỉ email hợp lệ. Bản vá bằng maxking & jpic.
Cốt lõi và nội dung¶
bpo-38631: Thay thế lệnh gọi
Py_FatalError()bằng ngoại lệRuntimeErrorthông thường trongfloat.__getformat__().bpo-38639: Tối ưu hóa
math.floor(),math.ceil()vàmath.trunc()cho float.bpo-38640: Đã sửa lỗi trong trình biên dịch gây ra lỗi khi có câu lệnh break và câu lệnh continue bên trong các vòng lặp while luôn sai. Bản vá của Pablo Galindo.
bpo-38613: Tối ưu hóa một số thao tác cài đặt (ví dụ:
|,^và-) củadict_keys.d.keys() | otherchậm hơnset(d) | othernhưng hiện tại chúng có hiệu suất gần như giống nhau.bpo-28029:
"".replace("", s, n)hiện trả vềsthay vì một chuỗi trống cho tất cảnkhác 0. Có những thay đổi tương tự đối với các đối tượngbytesvàbytearray.bpo-38535: Đã sửa lỗi số dòng và độ lệch cột cho các nút AST cho các lệnh gọi không có đối số trong trình trang trí.
bpo-38525: Khắc phục lỗi phân đoạn khi sử dụng trình vòng lặp ngược của các đối tượng
dicttrống. Bản vá của Donghee Na và Inada Naoki.bpo-38465: Các đối tượng
bytearray,arrayvàmmaphiện cho phép xuất nhiều hơn bộ đệm2**31cùng một lúc.bpo-38469: Đã sửa lỗi trong đó phạm vi của các biểu thức được đặt tên không được giải quyết chính xác khi có từ khóa global. Bản vá của Pablo Galindo.
bpo-38437: Kích hoạt macro
GC_DEBUGđể gỡ lỗi các bản dựng của trình thông dịch (khiPy_DEBUGđược đặt). Bản vá của Pablo Galindo.bpo-38379: Khi trình thu gom rác tạo một bộ sưu tập trong đó một số đối tượng được phục hồi (chúng có thể truy cập được từ bên ngoài các chu trình bị cô lập sau khi trình hoàn thiện được thực thi), không chặn việc thu thập tất cả các đối tượng vẫn không thể truy cập được. Bản vá của Pablo Galindo và Tim Peters.
bpo-38379: Khi bộ thu gom rác theo chu kỳ (gc) chạy các trình hoàn thiện để phục hồi các đối tượng không thể truy cập được, quá trình chạy gc hiện tại sẽ kết thúc mà không thu thập bất kỳ thùng rác theo chu kỳ nào. Tuy nhiên, số liệu thống kê được báo cáo bởi
collect()vàget_stats()khẳng định rằng tất cả rác tuần hoàn được tìm thấy đã được thu thập và các vật thể hồi sinh đã được thu thập. Đã thay đổi số liệu thống kê để báo cáo rằng không có số liệu nào được thu thập.bpo-38392: Ở chế độ gỡ lỗi,
PyObject_GC_Track()hiện gọitp_traverse()của loại đối tượng để đảm bảo rằng đối tượng đó hợp lệ: kiểm tra xem các đối tượng đượctp_traverse()truy cập có hợp lệ không.bpo-38210: Xóa giao lộ không cần thiết và cập nhật thao tác thiết lập trong dictview với tập hợp trống. (Được đóng góp bởi Donghee Na trong bpo-38210.)
bpo-38402: Kiểm tra lỗi từ
crypthoặccrypt_rcơ bản của hệ thống.bpo-37474: Trên FreeBSD, Python không còn gọi
fedisableexcept()khi khởi động để điều khiển chế độ điều khiển dấu phẩy động. Cuộc gọi trở nên vô dụng kể từ FreeBSD 6: nó trở thành chế độ mặc định.bpo-38006: Sửa lỗi do tương tác giữa các điểm yếu và trình thu gom rác tuần hoàn. Chúng ta phải xóa mọi điểm yếu trong thùng rác để ngăn lệnh gọi lại của chúng thực thi và gây ra sự cố.
bpo-38317: Khắc phục mức độ ưu tiên của tùy chọn cảnh báo:
PyConfig.warnoptionscó mức ưu tiên cao nhất, như đã nêu trong PEP 587.bpo-38310: Dự đoán các cặp opcode
BUILD_MAP_UNPACK_WITH_CALL->CALL_FUNCTION_EXtrong vòng lặp trình thông dịch chính. Bản vá của Brandt Bucher.bpo-36871: Cải thiện việc xử lý lỗi cho các phương thức mô phỏng khẳng định_has_calls và khẳng định_has_awaits. Đã khắc phục lỗi trong đó bất kỳ lỗi nào gặp phải khi liên kết các lệnh gọi dự kiến với thông số kỹ thuật của mô phỏng đều bị nuốt chửng một cách âm thầm, dẫn đến lỗi đầu ra gây hiểu lầm.
bpo-11410: Kiểm soát tốt hơn khả năng hiển thị biểu tượng được cung cấp thông qua việc sử dụng các thuộc tính hiển thị có sẵn trong gcc >= 4.0, được cung cấp một cách thống nhất trên POSIX và Windows. Các tệp bản dựng POSIX đã được cập nhật để biên dịch với -fvisibility=hidden, giảm thiểu các ký hiệu được xuất.
bpo-38219: Đã tối ưu hóa hàm tạo
dictvà phương thứcupdate()cho trường hợp đối số là một lệnh.bpo-38236: Python hiện bỏ cấu hình đường dẫn nếu không nhập được codec Python của hệ thống tệp và mã hóa stdio.
bpo-38013: Cho phép gọi
async_generator_athrow().throw(...)ngay cả đối với trình trợ giúp trình tạo không đồng bộ chưa khởi động. Nó sửa cảnh báo khó chịu khi kết thúc cuộc gọiasyncio.run().bpo-38124: Sửa từng lỗi một trong PyState_AddModule có thể gây ra truy cập bộ nhớ ngoài giới hạn.
bpo-38116: Mô-đun chọn hiện tuân thủ PEP-384 và không còn ở trạng thái tĩnh nữa
bpo-38113: mô-đun ast được cập nhật lên PEP-384 và xóa tất cả các số liệu thống kê
bpo-38076: Mô-đun cấu trúc hiện tương thích với PEP-384
bpo-38075: Mô-đun ngẫu nhiên hiện tương thích với PEP-384
bpo-38074: mô-đun zlib tương thích với PEP-384
bpo-38073: Làm cho mô-đun mở rộng pwd tương thích với PEP-384
bpo-38072: mô-đun grp tương thích với PEP-384
bpo-38069: Làm cho _posixsubprocess PEP-384 tương thích
bpo-38071: Làm cho mô-đun mở rộng termios tương thích với PEP-384
bpo-38005: Đã sửa lỗi so sánh và tạo InterpreterID và ChannelID.
bpo-36946: Khắc phục lỗi tràn số nguyên có dấu khi xử lý các lát. Bản vá của hongweipeng.
bpo-37994: Đã sửa lỗi tắt tiếng tùy ý nếu tra cứu thuộc tính không thành công ở một số trang web. Chỉ nên tắt tiếng AttributionError.
bpo-8425: Tối ưu hóa set Difference_update cho trường hợp set kia lớn hơn nhiều so với set cơ sở. (Được đề xuất bởi Evgeny Kapun với mã do Michele Orrù đóng góp).
bpo-37966: Việc triển khai
is_normalized()đã được tăng tốc đáng kể trên các chuỗi không được chuẩn hóa, bằng cách triển khai thuật toán kiểm tra nhanh chuẩn hóa đầy đủ từ tiêu chuẩn Unicode.bpo-37947: Điều chỉnh chính xác mức đệ quy trong quá trình tạo biểu tượng cho các biểu thức được đặt tên. Bản vá của Pablo Galindo.
bpo-37812: Macro
CHECK_SMALL_INTđược sử dụng bên trongObject/longobject.cđã được thay thế bằngreturnrõ ràng tại mỗi địa điểm cuộc gọi.bpo-37751: Sửa
codecs.lookup()để bình thường hóa tên mã hóa theo cách tương tự nhưencodings.normalize_encoding(), ngoại trừ việccodecs.lookup()cũng chuyển tên thành chữ thường.bpo-37830: Đã sửa lỗi biên dịch
breakvàcontinuetrong khốifinallykhi khốitrytương ứng chứareturnvới giá trị không đổi.bpo-20490: Cải thiện thông báo lỗi nhập cho mô-đun được khởi tạo một phần khi nhập
fromtròn - bởi Anthony Sottile.bpo-37840: Khắc phục việc xử lý các chỉ số âm trong
sq_itemcủabytearray. Bản vá của Serge Fedoseev.bpo-37802: Cải thiện một chút hiệu suất của
PyLong_FromUnsignedLong(),PyLong_FromUnsignedLongLong()vàPyLong_FromSize_t(). Bản vá của Serge Fedoseev.bpo-37409: Đảm bảo hoạt động nhập tương đối rõ ràng từ các phiên và tập lệnh tương tác (không có gói gốc) luôn gây ra lỗi ImportError, thay vì coi mô-đun hiện tại là gói. Bản vá của Ben Lewis.
bpo-32912: bpo-32912 đã được hoàn nguyên: phát ra
SyntaxWarningthay vìDeprecationWarningcho các chuỗi thoát không hợp lệ trong chuỗi và byte bằng chữ.bpo-37757: PEP 572: Như được mô tả trong PEP, các biểu thức gán hiện tăng
SyntaxErrorkhi sự tương tác của chúng với phạm vi hiểu dẫn đến phạm vi mục tiêu không rõ ràng.Lớp con
TargetScopeErrordo PEP đề xuất ban đầu đã bị xóa để chỉ đưa ra các lỗi cú pháp thông thường cho các trường hợp không được phép.bpo-36279: Khắc phục khả năng sử dụng bộ nhớ chưa được khởi tạo trong
os.wait3().bpo-36311: Giải mã các đối tượng byte lớn hơn 2GiB nhanh hơn và không còn bị lỗi khi các ký tự nhiều byte vượt quá ranh giới đoạn.
bpo-34880: Câu lệnh
asserthiện hoạt động bình thường nếu ngoại lệAssertionErrorbị ẩn. Bản vá của Zackery Spytz.bpo-37340: Đã xóa bộ đệm đối tượng (
free_list) cho các đối tượng phương thức bị ràng buộc. Các đối tượng phương thức liên kết tạm thời ít được sử dụng hơn trước nhờ opcodeLOAD_METHODvà_PyObject_VectorcallMethodC API.bpo-37648: Đã sửa lỗi không nhất quán nhỏ trong
list.__contains__(),tuple.__contains__()và một số vị trí khác. Mục của bộ sưu tập bây giờ luôn ở bên trái và kim ở bên phải của==.bpo-37444: Cập nhật ngoại lệ khác nhau giữa
builtins.__import__()vàimportlib.__import__().bpo-37619: Khi thêm bộ mô tả trình bao bọc từ lớp này sang lớp khác (ví dụ: đặt
__add__ = str.__add__trên lớp conint), một ngoại lệ sẽ được đưa ra một cách chính xác khi toán tử được gọi.bpo-37593: Hoán đổi vị trí của các tham số posonlyargs và args trong hàm tạo của các nút
ast.parameters.bpo-37543: Pymalloc được tối ưu hóa cho bản dựng không phải PGO.
bpo-37537: Tính toán các khối pymalloc được phân bổ bên trong _Py_GetAllocatedBlocks(). Điều này làm chậm _Py_GetAllocatedBlocks() nhưng tăng tốc một chút cho _PyObject_Malloc() và _PyObject_Free().
bpo-37467: Sửa
sys.excepthook()vàPyErr_Display()nếu tên tệp là chuỗi byte. Ví dụ: đối với ngoại lệ SyntaxError trong đó thuộc tính tên tệp là một chuỗi byte.bpo-37433: Sửa chỉ báo
SyntaxErrorin quá nhiều khoảng trắng cho chuỗi nhiều dòng - của Anthony Sottile.bpo-37417:
bytearray.extend()hiện xử lý chính xác các lỗi phát sinh trong quá trình lặp. Bản vá của Brandt Bucher.bpo-37414: Chức năng
sys.callstats()không có giấy tờ đã bị xóa. Kể từ Python 3.7, nó không được dùng nữa và luôn trả vềNone. Nó yêu cầu một tùy chọn xây dựng đặc biệtCALL_PROFILEđã bị xóa trong Python 3.7.bpo-37392: Loại bỏ chức năng
sys.getcheckinterval()vàsys.setcheckinterval(). Chúng không được dùng nữa kể từ Python 3.2. Thay vào đó hãy sử dụngsys.getswitchinterval()vàsys.setswitchinterval(). Xóa trườngcheck_intervalcủa cấu trúcPyInterpreterState.bpo-37388: Trong chế độ phát triển và trong bản dựng gỡ lỗi, các đối số encoding và errors hiện được kiểm tra trên các hoạt động mã hóa và giải mã chuỗi. Ví dụ:
open(),str.encode()vàbytes.decode().Theo mặc định, để có hiệu suất tốt nhất, đối số errors chỉ được kiểm tra ở lỗi mã hóa/giải mã đầu tiên và đối số encoding đôi khi bị bỏ qua đối với các chuỗi trống.
bpo-37348: Tối ưu hóa giải mã chuỗi ASCII ngắn với codec UTF-8 và ascii.
b"foo".decode()nhanh hơn khoảng 15%. Bản vá của Inada Naoki.bpo-24214: Cải thiện khả năng hỗ trợ của trình xử lý lỗi thay thế trong bộ giải mã gia tăng UTF-8 và UTF-16.
bpo-37330:
open(),io.open(),codecs.open()vàfileinput.FileInputkhông còn chấp nhận'U'("dòng mới phổ quát") ở chế độ tệp. Cờ này không được dùng nữa kể từ Python 3.3.bpo-35224: Thứ tự đánh giá ngược của khóa: giá trị trong khả năng hiểu chính tả như được đề xuất trong PEP 572. I.e. trong
{k: v for ...},ksẽ được đánh giá trướcv.bpo-37316: Sửa lệnh gọi
PySys_Audit()trongmmap.mmap.bpo-37300: Xóa Py_XINCREF không cần thiết trong classobject.c.
bpo-37269: Sửa lỗi trong trình tối ưu hóa lỗ nhìn trộm không xử lý chính xác các điều kiện không đổi bằng toán tử nhị phân. Bản vá của Pablo Galindo.
bpo-20443: Python hiện có đường dẫn tuyệt đối của tên tệp tập lệnh được chỉ định trên dòng lệnh (ví dụ: "python3 script.py"): thuộc tính __file__ của mô-đun __main__ và sys.path[0] trở thành đường dẫn tuyệt đối, thay vì đường dẫn tương đối.
bpo-37257: Bộ cấp phát đối tượng nhỏ của Python (
obmalloc.c) hiện cho phép (không quá) một trường trống vẫn có sẵn để tái sử dụng ngay lập tức mà không cần trả lại nó cho HĐH. Điều này ngăn chặn việc đập vào các vòng lặp đơn giản trong đó một đấu trường có thể được tạo và phá hủy một lần nữa trên mỗi lần lặp.bpo-37231: Việc gửi các loại slot tới các phương thức đặc biệt (ví dụ: gọi
__mul__khi thực hiệnx * y) đã được thực hiện nhanh hơn.bpo-36974: Đã triển khai các hàm vectorcall riêng biệt cho mọi quy ước gọi của các hàm và phương thức dựng sẵn. Điều này cải thiện hiệu suất cho các cuộc gọi.
bpo-37213: Xử lý chính xác độ lệch dòng âm trong trình tối ưu hóa lỗ nhìn trộm. Bản vá của Pablo Galindo.
bpo-37219: Loại bỏ tối ưu hóa sai lầm đối với các khác biệt của tập hợp trống.
bpo-15913: Triển khai chức năng
PyBuffer_SizeFromFormat()(đã được ghi lại trước đó nhưng chưa được triển khai): gọistruct.calcsize(). Bản vá của Joannah Nanjekye.bpo-36922: Các hàm slot tối ưu hóa bất kỳ lệnh gọi nào bằng
Py_TPFLAGS_METHOD_DESCRIPTORthay vì chỉ các phiên bản củafunction.bpo-36974: Khe
tp_vectorcall_offsetđược kế thừa vô điều kiện để hỗ trợsuper().__call__()khi lớp cơ sở sử dụng vectorcall.bpo-37160:
threading.get_native_id()hiện cũng hỗ trợ NetBSD.bpo-37077: Thêm hỗ trợ
threading.get_native_id()cho AIX. Bản vá của M. Feltbpo-36781:
sum()đã được tối ưu hóa cho các giá trị boolean.bpo-34556: Thêm
--upgrade-depsvào mô-đun venv. Bản vá của Cooper Ry Leesbpo-20523:
pdb.Pdbhỗ trợ ~/.pdbrc trong Windows 7. Bản vá của Tim Hopper và Dan Lidral-Porter.bpo-35551: Mã hóa được cập nhật: - Đã xóa mã hóa "tis260", bí danh của codec "tactis" không tồn tại. - Đã thêm "mac_centeuro" làm bí danh cho mã hóa mac_latin2.
bpo-19072: Trình trang trí
classmethodhiện có thể bao bọc các bộ mô tả khác, chẳng hạn như các đối tượng thuộc tính. Chuyển thể từ bản vá do Graham Dumpleton viết.bpo-27575: Cải thiện tốc độ của giao lộ dictview bằng cách trực tiếp sử dụng logic giao lộ đã đặt. Bản vá của David Su.
bpo-30773: Cấm chạy song song aclose()/asend()/athrow(). Sửa ag_running để phản ánh trạng thái hoạt động thực tế của AG.
Thư viện¶
bpo-36589: Hàm
curses.update_lines_cols()hiện trả vềNonethay vì1khi thành công.bpo-38807: Cập nhật thông báo
TypeErrorchoos.path.join()để bao gồm các đối tượngos.PathLikelàm loại đầu vào được chấp nhận.bpo-38724: Thêm đại diện cho đối tượng
subprocess.Popen. Bản vá của Andrey Doroschenko.bpo-38786: pydoc hiện nhận dạng và phân tích các URL HTTPS. Bản vá của python273.
bpo-38785: Ngăn asyncio gặp sự cố nếu
__init__gốc không được gọi từ hàm tạo của đối tượng bắt nguồn từasyncio.Future.bpo-38723:
pdbhiện sử dụngio.open_code()để kích hoạt các sự kiện kiểm tra.bpo-27805: Cho phép mở các đường dẫn và các tệp không thể tìm kiếm khác ở chế độ nối thêm với
open().bpo-38438: Đơn giản hóa thông báo sử dụng
argparsechonargs="*".bpo-38761: WeakSet hiện được đăng ký dưới dạng bộ sưu tập.abc.MutableSet.
bpo-38716: ghi nhật ký: thay đổi tên và công cụ quay vòng RotatingHandler thành các thuộc tính cấp lớp. Điều này ngăn __init__ đặt chúng thành Không có trong trường hợp một lớp con định nghĩa chúng bằng các phương thức cùng tên.
bpo-38713: Thêm hằng số
os.P_PIDFD, có thể được chuyển tớios.waitid()để chờ bộ mô tả tệp quy trình Linux.bpo-38692: Thêm
asyncio.PidfdChildWatcher, một triển khai trình theo dõi trẻ em dành riêng cho Linux để thăm dò các bộ mô tả tệp xử lý.bpo-38692: Hiển thị tòa nhà cao tầng Linux
pidfd_opendưới dạngos.pidfd_open().bpo-38602: Đã thêm các hằng số
F_OFD_GETLK,F_OFD_SETLKvàF_OFD_SETLKWvào mô-đunfcntl. Bản vá của Donghee Na.bpo-38334: Đã sửa lỗi tìm kiếm ngược trên
zipfile.ZipExtFileđược mã hóa.bpo-38312: Thêm các hàm
curses.get_escdelay(),curses.set_escdelay(),curses.get_tabsize()vàcurses.set_tabsize()- của Anthony Sottile.bpo-38586: Bây giờ
fileConfig()đặt chính xác .name của trình xử lý được tải.bpo-38565: Thêm phương thức cache_parameters() mới cho functools.lru_cache() để hỗ trợ việc tẩy chua tốt hơn.
bpo-34679: asynci.ProactorEventLoop.close() hiện chỉ gọi signal.set_wakeup_fd() trong chuỗi chính.
bpo-31202: Trường hợp kết quả của
pathlib.WindowsPath.glob()bây giờ khớp với trường hợp của mẫu cho các phần chữ.bpo-36321: Loại bỏ thuộc tính sai chính tả. Nhật ký thay đổi của phiên bản 3.8 lưu ý rằng điều này sẽ bị xóa trong phiên bản 3.9.
bpo-38521: Đã sửa lỗi so sánh đẳng thức sai trong stats.NormalDist().
bpo-38493: Đã thêm
CLD_KILLEDvàCLD_STOPPEDchosi_code. Bản vá của Donghee Na.bpo-38478: Đã sửa lỗi trong
inspect.signature.bind()khiến nó không thành công khi xử lý đối số từ khóa có cùng tên với tham số chỉ có vị trí. Bản vá của Pablo Galindo.bpo-33604: Đã sửa lỗi
hmac.newvàhmac.HMACđể tăng TypeError thay vì ValueError khi tham số digmod, hiện được yêu cầu trong 3.8, bị bỏ qua. Đồng thời làm rõ tài liệu và chuỗi tài liệu mô-đun hmac.bpo-38378: Thông số out và in của
os.sendfile()được đổi tên thành out_fd và in_fd.bpo-38417: Đã thêm hỗ trợ để thiết lập umask trong quy trình con cho mô-đun quy trình con trên hệ thống POSIX.
bpo-38449: Hoàn nguyên PR 15522, đưa ra sự hồi quy trong
mimetypes.guess_type()do xử lý tên tệp dưới dạng url không đúng cách.bpo-38431: Fix phương thức
__repr__chodataclasses.InitVarhỗ trợ gõ đối tượng, patch của Samuel Colvin.bpo-38109: Thêm các giá trị
stat.S_IFDOOR,stat.S_IFPORT,stat.S_IFWHT,stat.S_ISDOOR(),stat.S_ISPORT()vàstat.S_ISWHT()bị thiếu vào quá trình triển khaistatcủa Python.bpo-38422: Làm rõ các chuỗi tài liệu của (các) hậu tố pathlib
bpo-38405: Các lớp con lồng nhau của
typing.NamedTuplehiện có thể chọn được.bpo-38332: Ngăn chặn
KeyErrorđược_encoded_words.decode()ném khi được cung cấp một từ được mã hóa có mã hóa loại nội dung không hợp lệ truyền đếnemail.message.get().bpo-38371: Không dùng phương thức
split()trong_tkinter.TkappTypemà thay vào đó là phương thứcsplitlist()có hành vi nhất quán và có thể dự đoán được hơn.bpo-38341: Thêm
smtplib.SMTPNotSupportedErrorvào tên đã xuấtsmtplib.bpo-38319: sendfile() được sử dụng trong các mô-đun ổ cắm và cửa sổ đang gây ra lỗi OverflowError cho các tệp >= 2GiB trên kiến trúc 32-bit. (bản vá của Giampaolo Rodola)
bpo-38242: Hoàn nguyên các luồng asyncio mới API
bpo-13153: Mã hóa gốc của hệ điều hành hiện được sử dụng để chuyển đổi giữa chuỗi Python và đối tượng Tcl. Điều này cho phép hiển thị, sao chép và dán vào biểu tượng cảm xúc clipboard và các ký tự không phải BMP khác. Chuyển đổi chuỗi từ Tcl sang Python và ngược lại không bao giờ bị lỗi (ngoại trừ MemoryError).
bpo-38019: Xử lý chính xác việc tạm dừng/tiếp tục đọc ống unix asyncio đã đóng.
bpo-38163: Các mô hình con bây giờ sẽ phát hiện loại của chúng là đồng bộ hoặc không đồng bộ, các mô hình con không đồng bộ sẽ là AsyncMocks và các mô hình con đồng bộ sẽ là MagicMock hoặc Mock (tùy thuộc vào loại cha mẹ của chúng).
bpo-38161: Xóa _AwaitEvent khỏi AsyncMock.
bpo-38216: Cho phép mã hiếm muốn gửi yêu cầu http không hợp lệ từ thư viện
http.clientmột cách để làm như vậy. Các bản sửa lỗi cho bpo-30458 đã dẫn đến sự cố đối với một số dự án dựa vào khả năng này để kiểm tra hành vi của chính chúng khi đối mặt với các yêu cầu xấu.bpo-28286: Không dùng việc mở
GzipFileđể viết ngầm. Luôn chỉ định đối số mode để ghi.bpo-38108: Mọi phương thức ma thuật đồng bộ trên AsyncMock hiện đều trả về MagicMock. Mọi phương thức ma thuật không đồng bộ trên MagicMock hiện đều trả về AsyncMock.
bpo-38265: Cập nhật tham số length của
os.pread()để chấp nhậnPy_ssize_tthay vì int.bpo-38112:
compileallcó giới hạn đệ quy mặc định cao hơn và các đối số dòng lệnh mới để thao tác đường dẫn, xử lý liên kết tượng trưng và nhiều mức tối ưu hóa.bpo-38248: asyncio: Khắc phục việc hủy tác vụ ngay lập tức không nhất quán
bpo-38237: Các đối số cho hàm pow dựng sẵn mang tính mô tả nhiều hơn. Bây giờ chúng cũng có thể được chuyển vào dưới dạng từ khóa.
bpo-34002: Cải thiện hiệu quả trong các phần của gói email bằng cách thay đổi while-pop thành vòng lặp for, sử dụng isdisjoint thay vì đặt giao điểm.
bpo-38191: Trình xây dựng loại
NamedTuplevàTypedDicthiện chấp nhận tên đối số từ khóa tùy ý, bao gồm "cls", "self", "typename", "_typename", "fields" và "_fields".bpo-38155: Thêm
__all__vàodatetime. Bản vá của Tahia Khan.bpo-38185: Đã sửa lỗi so sánh chuỗi không phân biệt chữ hoa chữ thường trong lập chỉ mục
sqlite3.Row.bpo-38136: Thay đổi số lượng cuộc gọi AsyncMock và số lượng chờ đợi thành hai bộ đếm khác nhau. Bây giờ, số lượng chờ đợi chỉ được tính khi một coroutine được chờ đợi chứ không phải khi nó được gọi và ngược lại. Cập nhật tài liệu xung quanh vấn đề này.
bpo-37828: Sửa tên mô phỏng mặc định trong các trường hợp ngoại lệ
unittest.mock.Mock.assert_called(). Bản vá của Abraham Toriz Cruz.bpo-38175: Khắc phục rò rỉ bộ nhớ so với các đối tượng
sqlite3.Row.bpo-33936: _hashlib không còn gọi hàm khởi tạo OpenSSL lỗi thời với OpenSSL 1.1.0+ nữa.
bpo-34706: Giữ nguyên phân lớp trong Inspection.Signature.from_callable.
bpo-38153: Tên của thuật toán băm từ OpenSSL hiện đã được chuẩn hóa để tuân theo quy ước đặt tên của Python. Ví dụ: OpenSSL sử dụng sha3-512 thay vì sha3_512 hoặc blake2b512 thay vì blake2b.
bpo-38115: Sửa lỗi trong dis.findlinestarts() trong đó nó sẽ trả về các giá trị bù trừ mã byte không hợp lệ. Tài liệu cho thấy co_lnotab của đối tượng mã có thể chứa các giá trị bù trừ mã byte không hợp lệ.
bpo-38148: Thêm vị trí vào các lớp vận chuyển
asyncio, có thể giảm mức sử dụng bộ nhớ.bpo-38142: Mô-đun mở rộng trình bao bọc _hashlib OpenSSL hiện tương thích với PEP-384.
bpo-9216: hàm tạo hashlib hiện hỗ trợ cờ usedforsecurity để báo hiệu rằng thuật toán băm không được sử dụng trong bối cảnh bảo mật.
bpo-36991: Sửa lỗi ngoại lệ AttributionError có thể không chính xác khi thoát ZipFile.extract() trong một số trường hợp lỗi đầu vào không được hỗ trợ.
bpo-38134: Xóa bản sao lỗi thời của PBKDF2_HMAC_fast. Tất cả các phiên bản OpenSSL được hỗ trợ đều có triển khai nhanh.
bpo-38132: Trình bao bọc hashlib OpenSSL sử dụng cách triển khai đơn giản hơn. Một số Macro và bộ nhớ đệm vô nghĩa đã biến mất. Tên băm bây giờ xuất phát từ EVP của OpenSSL. Tên thuật toán vẫn giữ nguyên, ngoại trừ bây giờ nó luôn là chữ thường.
bpo-38008: Sửa các giao thức kiểm tra lớp cha để xác định chính xác mô-đun cung cấp giao thức dựng sẵn, thay vì cho rằng tất cả chúng đều đến từ mô-đun
collections.abcbpo-34037: Đối với
asyncio, thêm coroutineloop.shutdown_default_executor()mới. Coroutine mới cung cấp một API để lên lịch tắt trình thực thi và chờ luồng xử lý kết thúc việc đóng. Ngoài ra,asyncio.run()đã được cập nhật để sử dụng coroutine mới. Bản vá của Kyle Stanley.bpo-37405: Đã sửa lỗi hồi quy cho socket.getsockname() đối với các ổ cắm họ địa chỉ không phải CAN_ISOTP AF_CAN bằng cách trả về 1 bộ thay vì chuỗi.
bpo-38121: Cập nhật tên tham số trên các hàm trong importlib.metadata khớp với những thay đổi trong bản phát hành 0.22 của importlib_metadata.
bpo-38110: Việc triển khai os.closewalk() hiện sử dụng libc fdwalk() API trên các nền tảng có sẵn.
bpo-38093: Sửa AsyncMock để nó không gặp sự cố khi sử dụng với AsyncContextManagers hoặc AsyncIterators.
bpo-37488: Thêm cảnh báo cho
datetime.utctimetuple(),datetime.utcnow()vàdatetime.utcfromtimestamp().bpo-35640: Cho phép chuyển đối số path-like object dưới dạng
directorycho lớphttp.server.SimpleHTTPRequestHandler. Bản vá của Géry Ogam.bpo-38086: Cập nhật importlib.metadata với những thay đổi từ importlib_metadata 0.21.
bpo-37251: Xóa kiểm tra
__code__trong AsyncMock đã đánh giá không chính xác các thông số chức năng dưới dạng đối tượng không đồng bộ nhưng không thể đánh giá các lớp có__await__nhưng không có thuộc tính__code__nào được xác định là đối tượng không đồng bộ.bpo-38066: Ẩn các phương thức asyncio.Stream nội bộ: Feed_eof(), Feed_data(), set_Exception() và set_transport().
bpo-38059: Inspection.py hiện sử dụng sys.exit() thay vì exit()
bpo-37953: Trong
typing, đã cải tiến các phương thức__hash__và__eq__choForwardReferences.bpo-38026: Đã sửa lỗi
inspect.getattr_static()sử dụngisinstanceđể tránh tra cứu động.bpo-35923: Cập nhật
importlib.machinery.BuiltinImporterđể sử dụngloader._ORIGINthay vì giá trị được mã hóa cứng. Bản vá của Donghee Na.bpo-38010: Trong
importlib.metadatađồng bộ hóa vớiimportlib_metadata0.20, làm rõ hành vi củafiles()và khắc phục sự cố trong đó chỉ có một yêu cầu được trả về chorequires()trên các góidist-info.bpo-38006: Weakref.WeakValueDictionary xác định hàm Remove() cục bộ được sử dụng làm lệnh gọi lại cho các tham chiếu yếu. Hàm này được tạo bằng cách đóng. Sửa đổi việc thực hiện để tránh việc đóng cửa.
bpo-37995: Đã thêm tùy chọn indent vào
ast.dump(), cho phép nó tạo ra đầu ra thụt lề nhiều dòng.bpo-34410: Đã khắc phục sự cố trong trình vòng lặp
tee()khi nhập lại. RuntimeError hiện đã được nâng lên trong trường hợp này.bpo-37140: Khắc phục hồi quy ctypes của Python 3.8. Khi một ctypes.Structure được truyền bằng cách sao chép vào một hàm, các phần bên trong của ctypes đã tạo một đối tượng tạm thời có tác dụng phụ là gọi trình hoàn thiện cấu trúc (__del__) hai lần. Ngữ nghĩa Python yêu cầu trình hoàn thiện phải được gọi chính xác một lần. Sửa nội bộ ctypes để không còn gọi bộ hoàn thiện hai lần nữa.
bpo-37587:
_json.scanstringhiện nhanh hơn gấp 3 lần khi có nhiều ký tự thoát dấu gạch chéo ngược trong chuỗi JSON.bpo-37834: Ngăn chặn ngoại lệ Shutil.rmtree khi được xây dựng trên hệ thống không phải Windows mà không hỗ trợ cuộc gọi hệ thống fd, như các phiên bản macOS cũ hơn.
bpo-10978: Semaphores và BoundedSemaphores hiện có thể phát hành nhiều chuỗi chờ cùng một lúc.
bpo-37972: Các mục đăng ký cho đối tượng
unittest.mock.callhiện nhận được cơ chế chuỗi giống như bất kỳ thuộc tính tùy chỉnh nào khác, do đó việc sử dụng sau đây không còn tạo raTypeErrornữa:call().foo().__getitem__('bar')Patch bằng blhsing
bpo-37965: Khắc phục cảnh báo trình biên dịch C do distutils.ccompiler.CCompiler.has_function gây ra.
bpo-37960:
repr()của các luồng văn bản và vùng đệm hiện chỉ tắt các ngoại lệ dự kiến khi nhận được giá trị của thuộc tính "tên" và "chế độ".bpo-37961: Thêm trường
total_nframevào dấu vết được mô-đun tracemalloc thu thập. Trường này cho biết số lượng khung hình ban đầu trước khi bị cắt bớt.bpo-37951: Hầu hết các tính năng của mô-đun quy trình con hiện hoạt động trở lại trong trình thông dịch phụ. Chỉ preexec_fn bị hạn chế trong trình thông dịch phụ.
bpo-36205: Khắc phục việc triển khai sai lầm của time.process_time() để báo cáo chính xác tổng thời gian của hệ thống và người dùng CPU.
bpo-37950: Sửa lỗi
ast.dump()khi gọi với nút khởi tạo chưa đầy đủ.bpo-34679: Khôi phục khởi tạo các vòng lặp sự kiện IOCP của Windows từ luồng không chính.
bpo-36917: Thêm cách triển khai mặc định của phương thức
ast.NodeVisitor.visit_Constant()để đưa ra cảnh báo không dùng nữa và gọi các phương thức tương ứngvisit_Num(),visit_Str(), v.v.bpo-37798: Cập nhật test_statistics.py để xác minh rằng mô-đun thống kê hoạt động tốt cho cả triển khai C và Python. Bản vá của Donghee Na
bpo-26589: Đã thêm mã trạng thái mới vào mô-đun http: 451 UNAVAILABLE_FOR_LEGAL_REASONS
bpo-37915: Sửa lỗi phân đoạn xuất hiện khi so sánh các phiên bản của đối tượng
datetime.timezonevàdatetime.tzinfo. Bản vá của Pablo Galindo.bpo-32554: Không dùng hàm băm cuộc gọi Random.seed() trên các loại tùy ý.
bpo-9938: Thêm đối số từ khóa tùy chọn
exit_on_errorchoArgumentParser.bpo-37851: Mô-đun
faulthandlerkhông còn phân bổ ngăn xếp thay thế khi khởi động Python nữa. Bây giờ ngăn xếp chỉ được phân bổ ở lần sử dụng trình xử lý lỗi đầu tiên.bpo-32793: Sửa thông báo gỡ lỗi trùng lặp khi
smtplib.SMTP.connect()được gọi.bpo-37885: venv: Không tạo cảnh báo biến chưa đặt khi tắt.
bpo-37868: Sửa dataclasses.is_dataclass khi được cung cấp một phiên bản không bao giờ tăng AttributionError trong __getattr__. Nghĩa là, một đối tượng trả về một cái gì đó cho __dataclass_fields__ ngay cả khi nó không phải là một lớp dữ liệu.
bpo-37811: Khắc phục chức năng
socket.connect(address)của mô-đunsocketkhông thể thiết lập kết nối trong trường hợp cuộc gọi hệ thống bị gián đoạn. Sự cố đã được quan sát thấy trên tất cả các hệ điều hành mà lệnh gọi hệ thốngpoll(2)chỉ có thể lấy số nguyên không âm và -1 làm giá trị thời gian chờ.bpo-37863: Tối ưu hóa cho Phân số.__hash__ do Tim Peters đề xuất.
bpo-21131: Sửa ngăn xếp
faulthandler.register(chain=True). trình xử lý lỗi hiện phân bổ một ngăn xếp byteSIGSTKSZ*2chuyên dụng, thay vì chỉ các byteSIGSTKSZ. Việc gọi trình xử lý tín hiệu trước đó trong trình xử lý tín hiệu của trình xử lý lỗi sử dụng nhiều hơnSIGSTKSZbyte bộ nhớ ngăn xếp trên một số nền tảng.bpo-37798: Thêm đường dẫn nhanh C cho số liệu thống kê.NormalDist.inv_cdf() Bản vá của Donghee Na
bpo-37804: Xóa phương thức
threading.Thread.isAlive()không được dùng nữa. Bản vá của Donghee Na.bpo-37819: Thêm Fraction.as_integer_ratio() để khớp với các phương thức tương ứng trong bool, int, float và thập phân.
bpo-14465: Thêm hàm xml.etree.ElementTree.indent() để có cây XML in đẹp. Đóng góp bởi Stefan Behnel.
bpo-37810: Sửa gợi ý
difflib?ở đầu ra khác biệt khi xử lý các tab. Bản vá của Anthony Sottile.bpo-37772: Trong
zipfile.Path, khi thêm các thư mục ẩn, hãy đảm bảo rằng các thư mục gốc được thêm vào và loại trừ các thư mục trùng lặp.bpo-18578: Đã đổi tên và ghi lại
test.bytecode_helperthànhtest.support.bytecode_helper. Bản vá của Joannah Nanjekye.bpo-34488: Phương thức
writelines()củaio.BytesIOhiện nhanh hơn một chút khi nhiều dòng nhỏ được truyền qua. Bản vá của Serge Fedoseev.bpo-37449:
ensurepiphiện sử dụngimportlib.resources.read_binary()để đọc dữ liệu thay vìpkgutil.get_data(). Bản vá của Joannah Nanjekye.bpo-28292: Đánh dấu các chức năng trợ giúp của lịch.py là riêng tư. Hướng dẫn PEP 8 sau đây nhằm duy trì các quy ước về kiểu dáng trong mô-đun và giải quyết một trường hợp người dùng nhầm lẫn đã biết.
bpo-18049: Thêm định nghĩa về THREAD_STACK_SIZE cho AIX trong Python/thread_pthread.h Kích thước ngăn xếp của luồng mặc định gây ra sự cố với giới hạn đệ quy mặc định Patch by M Felt
bpo-37742:logging.getLogger() API hiện trả về trình ghi nhật ký gốc khi được truyền tên 'root', trong khi trước đó nó trả về một trình ghi nhật ký không phải gốc có tên là 'root'. Điều này có thể ảnh hưởng đến các trường hợp trong đó mã người dùng rõ ràng muốn một trình ghi nhật ký không phải gốc có tên là 'root' hoặc khởi tạo một trình ghi nhật ký bằng cách sử dụng log.getLogger(__name__) trong một số mô-đun cấp cao nhất có tên là 'root.py'.
bpo-37738: Sửa lỗi triển khai lời nguyền
addch(str, color_pair): chuyển cặp màu chosetcchar(), thay vì luôn chuyển 0 làm cặp màu.bpo-37723: Khắc phục sự hồi quy hiệu suất khi phân tích cú pháp biểu thức chính quy với các bộ ký tự lớn. Bản vá của Yann Vaginay.
bpo-35943: Hàm
PyImport_GetModule()hiện đảm bảo mọi mô-đun mà nó trả về đều được khởi tạo hoàn toàn. Bản vá của Joannah Nanjekye.bpo-32178: Sửa lỗi IndexError trong gói
emailkhi cố phân tích các trường địa chỉ không hợp lệ bắt đầu bằng:.bpo-37268: Mô-đun
parserkhông được dùng nữa và sẽ bị xóa trong các phiên bản Python sau này.bpo-37685: Đã sửa lỗi so sánh
datetime.timedeltavàdatetime.timezone.bpo-37697: Đồng bộ hóa
importlib.metadatavới importlib_metadata 0.19, cải thiện khả năng xử lý các tệp EGG-INFO và khắc phục sự cố khi tên điểm vào chứa dấu hai chấm.bpo-37695: Sửa thông báo lỗi
curses.unget_wch(). Bản vá của Anthony Sottile.bpo-37689: Thêm
is_relative_to()vàoPurePathđể xác định xem một đường dẫn có liên quan đến đường dẫn khác hay không.bpo-29553: Đã sửa lỗi
argparse.ArgumentParser.format_usage()cho các nhóm loại trừ lẫn nhau. Bản vá của Andrew Nester.bpo-37691: Hãy để math.dist() chấp nhận tọa độ dưới dạng chuỗi (hoặc vòng lặp) thay vì chỉ theo bộ dữ liệu.
bpo-37685: Đã sửa lỗi triển khai
__eq__,__lt__, v.v. trong một số lớp. Bây giờ họ trả vềNotImplementedcho loại toán hạng khác không được hỗ trợ. Điều này cho phép toán hạng khác đóng vai trò (ví dụ: so sánh đẳng thức vớiANYsẽ trả vềTrue).bpo-37354: Đặt tập lệnh Activate.ps1 Powershell ở trạng thái tĩnh để cho phép ký nó.
bpo-37664: Cập nhật các bánh xe đi kèm với Ensurepip (pip 19.2.3 và setuptools 41.2.0)
bpo-37663: Mang lại sự nhất quán cho các tập lệnh kích hoạt venv shell bằng cách luôn sử dụng __VENV_PROMPT__.
bpo-37642: Cho phép triển khai
datetime.timezonebằng Python thuần túy để biểu thị độ lệch từng phút phụ gần với ranh giới tối thiểu và tối đa, cụ thể là trong các phạm vi (23:59, 24:00) và (-23:59, 24:00). Bản vá của Ngalim Siregarbpo-36161: Trong
posix, sử dụngttyname_rthay vìttynameđể đảm bảo an toàn cho luồng.bpo-36324: Đặt các thuộc tính nội bộ cho stats.NormalDist() ở chế độ riêng tư.
bpo-37555: Sửa lỗi trả về bộ dữ liệu
NonCallableMock._call_matcherthay vì đối tượng_Callkhiself._spec_signaturetồn tại. Bản vá của Elizabeth Usetonbpo-29446: Làm cho
from tkinter import *chỉ nhập các đối tượng mong muốn.bpo-16970: Thêm lỗi giá trị khi một giá trị không hợp lệ được chuyển tới nargs Patch của Robert Leenders
bpo-34443: Các ngoại lệ từ
enumhiện sử dụng__qualnamecủa lớp enum trong thông báo ngoại lệ thay vì__name__.bpo-37491: Khắc phục
IndexErrorkhi phân tích cú pháp tiêu đề email có giá trị chuỗi trích dẫn trần bất ngờ kết thúc. Bản vá của Abhilash Raj.bpo-37587: Làm cho json.loads nhanh hơn đối với các chuỗi dài. (Bản vá của Marco Paolini)
bpo-18378: Nhận dạng "UTF-8" là giá trị hợp lệ cho LC_CTYPE trong locale._parse_localename.
bpo-37579: Trả về
NotImplementedtrong quá trình triển khai__eq__của Python chotimedeltavàtimekhi đối tượng khác được so sánh không cùng loại để khớp với việc triển khai C. Bản vá của Karthikeyan Singaravelan.bpo-21478: Ghi lại cuộc gọi tới cấp trên khi đối tượng được xác định tự động được gắn vào mô hình bằng
unittest.mock.attach_mock(). Bản vá của Karthikeyan Singaravelan.bpo-37531: "python3 -m test -jN --timeout=TIMEOUT" hiện sẽ tắt tiến trình công nhân nếu nó chạy lâu hơn TIMEOUT giây.
bpo-37482: Sửa lỗi tuần tự hóa tên hiển thị trong trường địa chỉ nguồn hoặc đích bằng cả từ được mã hóa và ký tự đặc biệt.
bpo-36993: Cải thiện báo cáo lỗi cho các tệp zip bị hỏng với dữ liệu bổ sung zip64 không hợp lệ. Bản vá của Daniel Hillier.
bpo-37502: Pickle.loads() không còn tăng TypeError khi đối số bộ đệm được đặt thành Không
bpo-37520: Hành vi đúng cho zipfile.Path.parent khi đối tượng đường dẫn xác định thư mục con.
bpo-18374: Sửa thuộc tính
.col_offsetcủa các phiên bảnast.BinOplồng nhau có giá trị quá lớn trong một số trường hợp.bpo-37424: Khắc phục tình trạng treo có thể xảy ra khi sử dụng thời gian chờ trên
subprocess.run()trong khi chụp đầu ra. Nếu tiến trình con sinh ra các tiến trình con của chính nó hoặc kết nối các thẻ điều khiển stdout hoặc stderr của nó với một tiến trình khác, thì chúng ta có thể bị treo sau khi hết thời gian chờ và con của chúng ta đã bị giết khi cố gắng đọc đầu ra cuối cùng từ các đường ống.bpo-37421: Sửa lỗi
multiprocessing.util.get_temp_dir(): cũng xóa cấu hình 'tempdir' của quy trình hiện tại, vì vậy lệnh gọi tiếp theo tớiget_temp_dir()sẽ tạo một thư mục tạm thời mới, thay vì sử dụng lại thư mục tạm thời đã bị xóa.bpo-37481: Lệnh distutils
bdist_wininstkhông được dùng nữa trong Python 3.8, thay vào đó hãy sử dụngbdist_wheel(gói bánh xe).bpo-37479: Khi
Enum.__str__bị ghi đè trong lớp dẫn xuất, ghi đè sẽ đượcEnum.__format__sử dụng bất kể có lớp mixin hay không.bpo-37440: http.client hiện kích hoạt xác thực sau bắt tay TLS 1.3 cho ngữ cảnh mặc định hoặc nếu cert_file được chuyển tới HTTPSConnection.
bpo-37437: Cập nhật phiên bản dành cho người nước ngoài được cung cấp lên 2.2.7.
bpo-37428: SSLContext.post_handshake_auth = True không còn đặt cờ xác minh SSL_VERIFY_POST_HANDSHAKE cho các kết nối máy khách nữa. Mặc dù tùy chọn này được ghi lại là bị bỏ qua đối với khách hàng, OpenSSL ngầm cho phép xác thực chuỗi chứng chỉ khi cờ được đặt.
bpo-37420:
os.sched_setaffinity()hiện đã xử lý chính xác các lỗi phát sinh trong quá trình lặp đối sốmaskcủa nó. Bản vá của Brandt Bucher.bpo-37412: Hàm
os.getcwdb()hiện sử dụng mã hóa UTF-8 trên Windows, thay vì trang mã ANSI: xem PEP 529 để biết lý do. Chức năng này không còn được dùng nữa trên Windows.bpo-37406: Mô-đun sqlite3 hiện tăng TypeError, thay vì ValueError, nếu loại đối số hoạt động không phải là str: exec(), execmany() và gọi kết nối.
bpo-29412: Sửa lỗi IndexError khi phân tích giá trị tiêu đề kết thúc bất ngờ. Bản vá của Abhilash Raj.
bpo-36546: Đối số dist cho stats.quantiles() hiện chỉ mang tính vị trí. Tên hiện tại không phản ánh rằng đối số có thể là tập dữ liệu hoặc phân phối. Đánh dấu tham số theo vị trí sẽ tránh nhầm lẫn và có thể thay đổi tên sau này.
bpo-37394: Sửa lỗi khiến mô-đun
queuebị lỗi nếu không có mô-đun tăng tốc. Bản vá của Pablo Galindo.bpo-37376:
pprinthiện đã hỗ trợtypes.SimpleNamespace. Bản vá của Carl Bordum Hansen.bpo-26967: Một
ArgumentParservớiallow_abbrev=Falsekhông còn vô hiệu hóa việc nhóm các cờ ngắn, chẳng hạn như-vvmà chỉ vô hiệu hóa việc viết tắt của các cờ dài như được ghi trong tài liệu. Bản vá của Zac Hatfield-Dodds.bpo-37212:
unittest.mock.call()hiện giữ nguyên thứ tự các đối số từ khóa trong đầu ra repr. Bản vá của Karthikeyan Singaravelan.bpo-37372: Sửa lỗi bỏ chọn đối tượng datetime.time từ Python 2 với giây>=24. Bản vá của Justin Blanchard.
bpo-37345: Thêm hỗ trợ chính thức cho ổ cắm UDPLITE. Hỗ trợ đã có trước đây nhưng giờ đây việc phát hiện hỗ trợ với
hasattr(socket, 'IPPROTO_UDPLITE')đã dễ dàng hơn và có các hằng số được xác định cho từng giá trị cần thiết:socket.IPPROTO_UDPLITE,UDPLITE_SEND_CSCOVvàUDPLITE_RECV_CSCOV. Bản vá của Gabe Appleton.bpo-37358: Tối ưu hóa
functools.partialbằng cách sử dụng vectorcall.bpo-37347: Các phương thức
sqlite3.Connection.create_aggregate(),sqlite3.Connection.create_function(),sqlite3.Connection.set_authorizer(),sqlite3.Connection.set_progress_handler()sqlite3.Connection.set_trace_callback()dẫn đến lỗi phân tách nếu một số phương thức này được gọi hai lần với cùng một đối tượng nhưng không giống nhau. Bây giờ các cuộc gọi lại được lưu trữ cẩn thận hơn. Bản vá của Aleksandr Balezin.bpo-37163: Đối số obj của
dataclasses.replace()hiện chỉ có vị trí.bpo-37085: Thêm các hằng số Trình quản lý phát sóng SocketCAN Linux tùy chọn, được sử dụng làm cờ để định cấu hình hành vi BCM, trong mô-đun ổ cắm. Bản vá của Karl Ding.
bpo-37328:
HTMLParser.unescapebị xóa. Nó không có giấy tờ và không được dùng nữa kể từ Python 3.4.bpo-37305: Thêm .webmanifest -> application/manifest+json vào danh sách các loại tệp và tiêu đề loại nội dung được nhận dạng
bpo-37320: bí danh
aifc.openfp()thànhaifc.open(), bí danhsunau.openfp()thànhsunau.open()và bí danhwave.openfp()thànhwave.open()đã bị xóa. Chúng không được dùng nữa kể từ Python 3.7.bpo-37315: Không còn được chấp nhận các số float có giá trị tích phân (như
5.0) trongmath.factorial().bpo-37312: các mô-đun
_dummy_threadvàdummy_threadingđã bị xóa. Các mô-đun này không còn được dùng nữa kể từ Python 3.7 yêu cầu hỗ trợ phân luồng.bpo-33972: Email có một phần nhưng loại nội dung được đặt thành
multipart/*sẽ không tăng AttributionError nữa.bpo-37280: Sử dụng threadpool để đọc từ tệp cho chế độ dự phòng sendfile.
bpo-37279: Khắc phục sự cố hỗ trợ tệp gửi không đồng bộ khi tệp gửi gửi dữ liệu bổ sung ở chế độ dự phòng.
bpo-19865:
ctypes.create_unicode_buffer()hiện cũng hỗ trợ các ký tự không phải BMP trên nền tảng cówchar_t16-bit (ví dụ: Windows và AIX).bpo-37266: Trong trình thông dịch phụ, việc tạo ra một chuỗi daemon giờ đây sẽ tạo ra một ngoại lệ. Các luồng Daemon chưa bao giờ được hỗ trợ trong các trình thông dịch phụ. Trước đây, quá trình hoàn thiện trình thông dịch phụ đã gặp sự cố do lỗi nghiêm trọng của Python nếu luồng daemon vẫn đang chạy.
bpo-37210: Cho phép triển khai
picklebằng Python thuần túy hoạt động ngay cả khi mô-đun C_picklekhông khả dụng.bpo-21872: Sửa lỗi
lzma: module giải nén dữ liệu không đầy đủ. Khi giải nén tệp định dạng FORMAT_ALONE và nó không có điểm đánh dấu kết thúc, đôi khi không thể xuất ra tệp cuối cùng đến hàng chục byte. Bản vá của Ma Lin.bpo-35922: Sửa
RobotFileParser.crawl_delay()vàRobotFileParser.request_rate()để trả vềNonethay vì tăngAttributeErrorkhi không có quy tắc liên quan nào được xác định trong tệp robots.txt. Bản vá của Rémi Lapeyre.bpo-35766: Thay đổi định dạng của feature_version thành một bộ dữ liệu (chính, phụ).
bpo-36607: Loại bỏ
RuntimeErrorđượcasyncio.all_tasks()đưa ra nếu tập hợp tác vụ yếu bên trong bị thay đổi bởi một luồng khác trong quá trình lặp.bpo-18748: hàm hủy
_pyio.IOBasehiện không làm gì nếu thuộc tínhclosedkhông bắt chước được bộ hoàn thiện_io.IOBasetốt hơn.bpo-36402: Khắc phục tình trạng chạy đua khi tắt Python khi chờ chuỗi. Đợi cho đến khi trạng thái luồng Python của tất cả các luồng không phải daemon bị xóa (nối tất cả các luồng không phải daemon), thay vì chỉ đợi cho đến khi các luồng Python không phải daemon hoàn tất.
bpo-37206: Các giá trị mặc định không thể được biểu diễn dưới dạng đối tượng Python không còn được biểu diễn không chính xác dưới dạng
Nonetrong chữ ký hàm.bpo-37111: Đã thêm thông số từ khóa
encodingvàerrorsvàologging.basicConfig.bpo-12144: Đảm bảo cookie có thuộc tính
expiresđược xử lý trongCookieJar.make_cookies().bpo-34886: Khắc phục lỗi ValueError ngoài ý muốn từ
subprocess.run()khi kiểm tra xung đột giữa input và stdin hoặc capture_output và stdout hoặc stderr khi chúng được cung cấp rõ ràng nhưng có giá trịNonetrong một lệnh được truyền trong lệnh**kwargsthay vì được truyền trực tiếp theo tên. Bản vá được đóng góp bởi Rémi Lapeyre.bpo-37173: Thông báo ngoại lệ cho
inspect.getfile()hiện báo cáo chính xác lớp đã vượt qua thay vì mô-đun nội trang.bpo-37178: Cung cấp cho math.perm() một dạng đối số có nghĩa giống như math.factorial().
bpo-37178: Đối với math.perm(n, k), đặt k mặc định là n, cho kết quả tương tự như giai thừa.
bpo-37165: Đã chuyển đổi _collections._count_elements để sử dụng Phòng khám đối số.
bpo-34767: Không phải lúc nào cũng tạo
collections.dequetrongasyncio.Lock.bpo-37158: Tăng tốc stats.fmean() bằng cách chuyển từ hàm sang trình tạo.
bpo-34282: Xóa phương thức
Enum._convert, không được dùng nữa trong 3.8.bpo-37150:
argparse._ActionsContainer.add_argumenthiện đưa ra lỗi nếu ai đó vô tình chuyển đối tượng lớp FileType thay vì phiên bản của FileType làm đối sốtype.bpo-28724: Mô-đun ổ cắm hiện có các phương thức
socket.send_fds()vàsocket.recv.fds(). Đóng góp bởi Joannah Nanjekye, Shinya Okano và Victor Stinner.bpo-35621: Hỗ trợ chạy các quy trình con asyncio khi thực hiện vòng lặp sự kiện trong một luồng trên UNIX.
bpo-36520: Tiêu đề email dài có ký tự UTF-8 hiện được mã hóa chính xác khi chúng được gấp lại. Bản vá của Jeffrey Kintscher.
bpo-30835: Đã sửa lỗi phân tích cú pháp email trong đó thư có byte không hợp lệ trong mã hóa truyền nội dung của thư nhiều phần có thể gây ra AttributionError. Bản vá của Andrew Donnellan.
bpo-31163: các phương thức đổi tên và thay thế của phiên bản pathlib.Path hiện trả về phiên bản Đường dẫn mới.
bpo-25068:
urllib.request.ProxyHandlerhiện viết thường các khóa của từ điển đã chuyển.bpo-26185: Sửa
repr()trên đối tượngZipInfotrống. Bản vá của Mickaël Schoentgen.bpo-21315: Tiêu đề email chứa các từ được mã hóa RFC2047 được phân tích cú pháp mặc dù thiếu khoảng trắng và đã đăng ký lỗi. Ngoài ra, việc thiếu khoảng trắng ở cuối sau các từ được mã hóa hiện được coi là lỗi.
bpo-31904: Chuyển test_datetime sang VxWorks: bỏ qua các bài kiểm tra thông tin vùng trên VxWorks
bpo-35805: Thêm trình phân tích cú pháp cho tiêu đề Message-ID và thêm nó vào HeaderRegistry mặc định. Điều này sẽ ngăn chặn việc gấp Message-ID bằng cách sử dụng các từ được mã hóa RFC 2048.
bpo-36871: Đảm bảo chữ ký phương thức được sử dụng thay cho chữ ký hàm tạo của một lớp trong khi xác nhận đối tượng mô phỏng đối với các lệnh gọi phương thức. Bản vá của Karthikeyan Singaravelan.
bpo-35070: posix.getgrouplist() hiện hoạt động chính xác khi người dùng thuộc các nhóm bổ sung NGROUPS_MAX. Bản vá của Jeffrey Kintscher.
bpo-31783: Khắc phục tình trạng dồn đuổi trong ThreadPoolExecutor khi các luồng công việc được tạo trong khi tắt trình thông dịch.
bpo-36582: Sửa
UserString.encode()để trả về chính xácbytesthay vì phiên bảnUserString.bpo-32424: Không dùng xml.etree.ElementTree.Element.copy() mà thay vào đó là copy.copy().
Bản vá của Gordon P. Hemsley
bpo-36564: Khắc phục vòng lặp vô hạn trong logic gấp tiêu đề email sẽ được kích hoạt khi max_line_length của chính sách email không đủ dài để bao gồm đánh dấu bắt buộc và bất kỳ giá trị nào trong thư. Bản vá của Paul Ganssle
bpo-36543: Đã xóa các phương thức Element.getchildren(), Element.getiterator() và ElementTree.getiterator() cũng như mô-đun xml.etree.cElementTree.
bpo-36409: Xóa plistlib API cũ không được dùng nữa trong Python 3.4
bpo-36302: distutils sắp xếp danh sách tệp nguồn để các tệp Tiện ích mở rộng .so được xây dựng có khả năng tái tạo cao hơn theo mặc định
bpo-36250: Bỏ qua
ValueErrortừsignalvớiinteractiontrong chuỗi không chính.bpo-36046: Đã thêm các tham số
user,groupvàextra_groupsvào hàm tạo subprocess.Popen. Bản vá của Patrick McLean.bpo-32627: Sửa lỗi biên dịch khi bao gồm các tiêu đề
_uuidxung đột.bpo-35800: Không dùng nữa
smtpd.MailmanProxyđể sẵn sàng xóa trong tương lai.bpo-35168:
shlex.shlex.punctuation_charshiện là thuộc tính chỉ đọc.bpo-8538: Thêm hỗ trợ cho các hành động boolean như
--foovà--no-foovào argparse. Bản vá được đóng góp bởi Rémi Lapeyre.bpo-20504: Sửa lỗi trong mô-đun
cgikhi yêu cầu nhiều phần/biểu mẫu dữ liệu không có tiêu đềContent-Length.bpo-25988: Các lớp cơ sở trừu tượng trong
collections.abckhông còn được hiển thị trong mô-đuncollectionsthông thường.bpo-11122: Distutils sẽ không chỉ kiểm tra vòng/phút trong các đường dẫn được chỉ định.
bpo-34775: Việc xử lý phân chia của PurePath hiện trả về NotImplemented thay vì đưa ra TypeError khi truyền một thứ gì đó không phải là phiên bản của str hoặc PurePath. Bản vá của Roger Aiudi.
bpo-34749:
binascii.a2b_base64()hiện nhanh hơn gấp 2 lần. Bản vá của Serge Fedoseev.bpo-34519: Thêm bí danh bổ sung cho HP Roman 8. Bản vá của Michael Osipov.
bpo-28009: Sửa uuid.getnode() trên nền tảng có '.' như dấu phân cách MAC Addr cũng sửa lỗi cho định dạng MAC Addr bỏ qua số 0 đứng đầu trong các giá trị MAC Addr. Hiện tại, AIX là nền tảng duy nhất được biết có các cài đặt này. Bản vá của Michael Felt.
bpo-30618: Thêm
readlink(). Bản vá của Girts Folkmanis.bpo-32498: Làm cho
urllib.parse.unquote()chấp nhận byte ngoài chuỗi. Bản vá của Stein Karlsen.bpo-33348: lib2to3 hiện nhận dạng các biểu thức sau
*và**giống như trongf(*[] or []).bpo-32689: Cập nhật hàm
shutil.move()để cho phép sử dụng các đối tượng Đường dẫn làm đối số nguồn. Bản vá của Emily Morehouse và Maxwell "5.13b" McKinnon.bpo-32820: Đã thêm
__format__vào các lớp IPv4 và IPv6. Luôn xuất ra một chuỗi không có phần đệm hoàn toàn. Hỗ trợ các công cụ sửa đổi b/x/n (bin/hex/định dạng gốc). Định dạng gốc cho IPv4 là bin, định dạng gốc cho IPv6 là hex. Cũng hỗ trợ các công cụ sửa đổi '#' và '_'.bpo-27657: Sửa urllib.parse.urlparse() bằng đường dẫn số. Một chuỗi như "path:80" không còn được phân tích cú pháp dưới dạng đường dẫn mà dưới dạng lược đồ ("đường dẫn") và đường dẫn ("80").
bpo-4963: Đã sửa lỗi hành vi không xác định liên quan đến ánh xạ phần mở rộng mimetypes và khởi tạo lại mô-đun.
Tài liệu¶
bpo-21767: Đề cập rõ ràng đến việc hỗ trợ abc trong functools.singledispatch
bpo-38816: Cung cấp thêm chi tiết về sự tương tác giữa thời gian chạy của
fork()và CPython, chỉ tập trung vào C-API. Điều này bao gồm các cảnh báo về nơi nên và không nên gọifork().bpo-38351: Hiện đại hóa các ví dụ
emailtừ định dạng% thành chuỗi f.bpo-38778: Ghi lại sự thật rằng
RuntimeErrorđược nâng lên nếuos.fork()được gọi trong trình thông dịch phụ.bpo-38592: Thêm tiếng Bồ Đào Nha Brazil vào trình chuyển đổi ngôn ngữ tại trang web Tài liệu Python.
bpo-38294: Thêm danh sách các ký tự không còn thoát vào tài liệu re.escape
bpo-38053: Hiện đại hóa tài liệu plistlib
bpo-26868: Sửa lỗi sử dụng ví dụ
PyModule_AddObject()để xử lý lỗi đúng cách.bpo-36797: Sửa lỗi liên kết chết trong tài liệu tham khảo API của distutils.
bpo-37977: Cảnh báo mạnh mẽ và rõ ràng hơn về tình trạng mất an toàn dưa chua
bpo-37979: Đã thêm liên kết đến dateutil.parser.isoparse trong tài liệu datetime.fromisoformat. Bản vá của Paul Ganssle
bpo-12707: Loại bỏ các phương thức info(), geturl(), getcode() mà thay vào đó là các thuộc tính tiêu đề, url và trạng thái tương ứng cho HTTPResponse và addinfourl. Đồng thời, không dùng thuộc tính mã của addinfourl mà thay vào đó là thuộc tính trạng thái. Bản vá của Ashwin Ramaswami
bpo-37937: Đề cập đến
frame.f_tracetrong tài liệusys.settrace().bpo-37878: Tạo
PyThreadState_DeleteCurrent()nội bộ.bpo-37759: Bắt đầu chỉnh sửa Whatsnew 3.8
bpo-37726: Dừng đề xuất getopt trong hướng dẫn phân tích cú pháp đối số dòng lệnh và quảng bá argparse.
bpo-32910: Xóa hành vi triển khai cụ thể về cách hoạt động của tính năng Vô hiệu hóa của venv.
bpo-37256: Sửa cách diễn đạt đối số cho
Requesttrongurllib.requestbpo-37284: Thêm ghi chú ngắn gọn để cho biết rằng mọi thuộc tính bắt buộc mới của
sys.implementationđều phải trải qua quy trình PEP.bpo-30088: Đã ghi lại rằng hàm tạo
mailbox.Maildirkhông cố gắng xác minh tính chính xác của bố cục thư mục maildir. Bản vá của Sviatoslav Sydorenko.bpo-37521: Sửa các ví dụ
importlibđể chèn bất kỳ mô-đun mới được tạo nào thông qua importlib.util.module_from_spec() ngay vào sys.modules thay vì sau khi gọi Loader.exec_module().Cảm ơn Benjamin Mintz vì đã tìm ra lỗi.
bpo-37456: Dấu gạch chéo ('/') hiện là một phần của cú pháp.
bpo-37487: Sửa mô tả chỉ mục PyList_GetItem để bao gồm 0.
bpo-37149: Thay thế liên kết chết tới tài liệu tham khảo Tkinter 8.5 của John Shipman, New Mexico Tech, bằng liên kết đến bản sao archive.org.
bpo-37478: Đã thêm các ngoại lệ có thể có vào mô tả của os.chdir().
bpo-34903: Ghi lại rằng trong
datetime.datetime.strptime(), số 0 đứng đầu ở một số định dạng có hai chữ số là tùy chọn. Bản vá của Mike Glen.bpo-36260: Thêm các cạm bẫy giải nén vào tài liệu mô-đun zipfile.
bpo-37004: Trong tài liệu về difflib, một ghi chú đã được thêm vào cảnh báo rõ ràng rằng kết quả của phương pháp tỷ lệ của SequenceMatcher có thể phụ thuộc vào thứ tự của chuỗi đầu vào.
bpo-36960: Tái cấu trúc các tài liệu
datetimenhằm làm cho chúng thân thiện hơn với người dùng và cải thiện khả năng đọc. Bản vá của Brad Solomon.bpo-36487: Làm cho tài liệu C-API rõ ràng về trình thông dịch "chính" là gì.
bpo-23460: Tài liệu về định dạng chuỗi thập phân bằng công cụ xác định
:gđã được cập nhật để phản ánh điểm giới hạn ký hiệu số mũ chính xác. Bản vá gốc được đóng góp bởi Tuomas Suutari.bpo-35803: Lập tài liệu và kiểm tra xem các hàm
tempfilecó thể chấp nhận path-like object cho đối sốdirhay không. Bản vá của Anthony Sottile.bpo-33944: Đã thêm ghi chú về mục đích sử dụng mã trong tệp .pth.
bpo-34293: Sửa Doc/Makefile liên quan đến biến môi trường PAPER và các bản dựng PDF
bpo-25237: Thêm tài liệu cho các mô-đun tkinter
Kiểm tra¶
bpo-38614: Sửa test_communicate() của test_asyncio.test_subprocess: sử dụng
support.LONG_TIMEOUT(5 phút), thay vì chỉ 1 phút.bpo-38614: Thêm hằng số thời gian chờ vào
test.support:LOOPBACK_TIMEOUT,INTERNET_TIMEOUT,SHORT_TIMEOUTvàLONG_TIMEOUT.bpo-38502: test.regrtest hiện sử dụng các nhóm quy trình ở chế độ đa xử lý (tùy chọn dòng lệnh -jN) nếu có sẵn các nhóm quy trình: nếu có sẵn các chức năng
os.setsid()vàos.killpg().bpo-35998: Khắc phục tình trạng chạy đua trong test_asyncio.test_start_tls_server_1(). Trước đây, có một điều kiện chạy đua giữa hàm main() thử nghiệm thay thế giao thức và giao thức ServerProto thử nghiệm sẽ gửi ANSWER sau khi nó nhận được HELLO. Bây giờ chỉ còn hàm test main() chịu trách nhiệm gửi dữ liệu, ServerProto không còn gửi dữ liệu nữa.
bpo-38470: Sửa lỗi
test_compileall.test_compile_dir_maxlevels()trên Windows không hỗ trợ đường dẫn dài: chỉ tạo 3 thư mục con thay vì từ 20 đến 100 thư mục con.bpo-37531: Khi hết thời gian chờ, regrtest không còn cố gắng gọi lại
popen.communicate()nữa: nó có thể bị treo cho đến khi tất cả các tiến trình con sử dụng ống stdout và stderr hoàn tất. Giết tiến trình công nhân và bỏ qua đầu ra của nó. Đồng thời thay đổi thời gian chờ của trình xử lý lỗi của quy trình chính từ 1 phút thành 5 phút đối với các bot xây dựng chậm nhất của Python.bpo-38239: Sửa test_gdb cho các bản dựng Tối ưu hóa thời gian liên kết (LTO).
bpo-38275: test_ssl hiện xử lý các phiên bản TLS/SSL bị vô hiệu hóa tốt hơn. Chính sách mật mã và cài đặt thời gian chạy của OpenSSL được nhận dạng và các thử nghiệm đối với các phiên bản bị vô hiệu hóa sẽ bị bỏ qua. Các thử nghiệm cũng chấp nhận nhiều phiên bản tối thiểu TLS hơn cho các nền tảng ghi đè mặc định của OpenSSL bằng các cài đặt nghiêm ngặt.
bpo-38271: Khóa riêng cho test_ssl được mã hóa bằng 3DES ở định dạng PKCS#5 truyền thống. 3DES và thuật toán phân loại của PKCS#5 bị chặn bởi một số chính sách mật mã nghiêm ngặt. Thay vào đó, hãy sử dụng định dạng PKCS#8 với mã hóa AES256.
bpo-38270: test.support hiện có chức năng trợ giúp để kiểm tra tính khả dụng của chức năng phân loại băm. Một số thử nghiệm được tái cấu trúc, tránh MD5 và sử dụng SHA256 thay thế. Các thử nghiệm khác được đánh dấu để sử dụng MD5 và bị bỏ qua khi MD5 bị tắt.
bpo-37123: Kiểm tra đa xử lý test_mymanager() hiện cũng mong đợi -SIGTERM, không chỉ exitcode 0. BaseManager._finalize_manager() gửi SIGTERM đến quy trình quản lý nếu mất hơn 1 giây để dừng, điều này xảy ra trên các buildbot chậm.
bpo-38212: Kiểm tra đa xử lý: tăng thời gian chờ test_queue_feeder_donot_stop_onexc() từ 1 lên 60 giây.
bpo-38117: Kiểm tra với OpenSSL 1.1.1d
bpo-38018: Tăng mức độ bao phủ mã cho multiprocessing.shared_memory.
bpo-37805: Thêm bài kiểm tra cho json.dump(..., Skipkeys=True). Bản vá của Donghee Na.
bpo-37531: Tăng cường thời gian chờ đa quy trình regrtest: viết thông báo khi hủy quy trình công nhân, bắt các ngoại lệ popen.kill() và popen.wait(), đặt thời gian chờ cho lệnh gọi thứ hai tới popen.communicate().
bpo-37876: Thêm thử nghiệm cho codec ROT-13.
bpo-36833: Đã thêm các thử nghiệm cho macro
PyDateTime_xxx_GET_xxx()của C API của mô-đundatetime. Bản vá của Joannah Nanjekye.bpo-37558: Sửa lỗi xử lý tên test_shared_memory_cleaned_after_process_termination
bpo-37526: Thêm
test.support.catch_threading_exception(): trình quản lý bối cảnh bắt ngoại lệthreading.Threadbằngthreading.excepthook().bpo-37421: test_concurrent_futures hiện dừng rõ ràng phiên bản ForkServer nếu nó đang chạy.
bpo-37421: kiểm tra đa xử lý hiện dừng phiên bản ForkServer nếu nó đang chạy: đóng bộ mô tả tệp "còn sống" để yêu cầu máy chủ dừng rồi xóa địa chỉ UNIX của nó.
bpo-37421: test_distutils.test_build_ext() hiện có thể xóa thư mục tạm thời trên Windows: không nhập tiện ích mở rộng C mới được tạo ("xx") trong quy trình hiện tại mà hãy kiểm tra nó trong một quy trình riêng biệt.
bpo-37421: test_concurrent_futures hiện đã dọn dẹp đa xử lý để xóa ngay các thư mục tạm thời được tạo bởi multiprocessing.util.get_temp_dir().
bpo-37421: test_winconsoleio không còn rò rỉ tệp tạm thời nữa: sử dụng tempfile.TemporaryFile() để xóa tệp đó khi quá trình kiểm tra hoàn tất.
bpo-37421: các bài kiểm tra đa xử lý hiện gọi rõ ràng
_run_finalizers()để xóa ngay các thư mục tạm thời được tạo bởi các bài kiểm tra.bpo-37421: các bài kiểm tra urllib.request hiện gọi
urlcleanup()để xóa các tệp tạm thời được tạo bởi các bài kiểm traurlretrieve()và để xóa biến toàn cục_openerdourlopen()đặt và các hàm gọi gián tiếpurlopen().bpo-37472: Xóa
Lib/test/outstanding_bugs.py.bpo-37199: Khắc phục lỗi kiểm tra khi IPv6 không khả dụng hoặc bị tắt.
bpo-19696: Thay thế phương thức không được dùng nữa "random.choose" bằng "random.choice" trong "test_pkg_import.py".
bpo-37335: Xóa mã không còn cần thiết khỏi các bài kiểm tra cưỡng chế ngôn ngữ c
bpo-37421: Sửa test_shutil để không còn rò rỉ các tập tin tạm thời.
bpo-37411: Sửa test_wsgiref.testEnviron() để không còn phụ thuộc vào các biến môi trường (không bị lỗi nếu biến "X" được đặt).
bpo-37400: Sửa test_os.test_chown(): sử dụng os.getgroups() thay vì grp.getgall() để lấy nhóm. Đổi tên bài kiểm tra thành test_chown_gid().
bpo-37359: Thêm tùy chọn --cleanup vào python3 -m test để xóa thư mục
test_python_*của các công việc thất bại trước đó. Thêm "make cleantest" để chạypython3 -m test --cleanup.bpo-37362: test_gdb không còn bị lỗi nếu nhận được thông báo "không mong muốn" trên stderr: nó hiện bỏ qua stderr. Mục đích của test_gdb là kiểm tra xem các lệnh python-gdb.py có hoạt động như mong đợi chứ không phải để kiểm tra gdb.
bpo-35998: Tránh TimeoutError trong test_asyncio: test_start_tls_server_1()
bpo-37278: Fix test_asyncio ProactorLoopCtrlC: nối thread để tránh rò rỉ thread đang chạy và rò rỉ tham chiếu.
bpo-37261: Khắc phục
test.support.catch_unraisable_exception(): phương thức __exit__() của nó hiện bỏ qua ngoại lệ không thể xử lý được khi xóa thuộc tínhunraisablecủa nó.bpo-37069: regrtest hiện sử dụng
sys.unraisablehook()để đánh dấu thử nghiệm là "môi trường bị thay đổi" (ENV_CHANGED) nếu nó phát ra "ngoại lệ không thể xử lý được". Hơn nữa, regretst ghi lại cảnh báo trong trường hợp này.Sử dụng
python3 -m test --fail-env-changedđể phát hiện các ngoại lệ không thể xử lý được trong các thử nghiệm.bpo-37252: Sửa các xác nhận trong các thử nghiệm thăm dò ý kiến nhà phát triển
test_closevàtest_events_mask_overflow.bpo-37169: Viết lại bài kiểm tra đơn vị
_PyObject_IsFreed().bpo-37153:
test_venv.test_multiprocessing()bây giờ gọipool.terminate()một cách rõ ràng để đợi cho đến khi nhóm hoàn thành.bpo-34001: Thực hiện vượt qua test_ssl bằng LibreSSL. LibreSSL xử lý phiên bản TLS tối thiểu và tối đa khác với OpenSSL.
bpo-36919: Làm cho việc triển khai
test_source_encoding.test_issue2301trở nên độc lập. Thử nghiệm hiện sẽ hoạt động cho cả CPython và IronPython.bpo-30202: Cập nhật
test.test_importlib.test_abcđể kiểm trafind_spec().bpo-28009: Sửa đổi logic test_uuid để kiểm tra khi có chương trình. AND có thể được sử dụng để lấy MACADDR làm cơ sở cho UUID. Bản vá của M. Felt
bpo-34596: Dự phòng lý do mặc định khi
unittest.skip()không được gọi. Bản vá của Naitree Zhu.
xây dựng¶
bpo-38809: Trên Windows, tập lệnh xây dựng giờ đây sẽ nhận dạng và sử dụng python.exe từ một env ảo đang hoạt động.
bpo-38684: Sửa bản dựng _hashlib khi Blake2 bị tắt, nhưng OpenSSL hỗ trợ nó.
bpo-38468: Misc/python-config.in hiện sử dụng
getvar()cho tất cả các lệnh gọisysconfig.get_config_var()vẫn tồn tại. Bản vá của Joannah Nanjekye.bpo-37415: Sửa lỗi kiểm tra tiêu đề stdatomic.h cho trình biên dịch ICC: việc triển khai ICC thiếu loại Atomic_uintptr_t mà Python cần.
bpo-38301: Trong dòng Solaris, chúng ta phải chắc chắn sử dụng
-D_REENTRANT. Bản vá của Jesús Cea Avión.bpo-36002: Xác định vị trí các tệp nhị phân
llvm-profdatavàllvm-arbằng cách sử dụngAC_PATH_TOOLthay vìAC_PATH_TARGET_TOOL.bpo-37936: Tệp
.gitignoređược "root" một cách có hệ thống, với dấu gạch chéo không ở cuối, tất cả các quy tắc nhằm áp dụng cho các tệp ở một vị trí cụ thể trong kho lưu trữ. Trước đây, khi tệp dự định bỏ qua lại nằm ở thư mục gốc của kho lưu trữ, chúng ta thường vô tình bỏ qua các tệp và thư mục có cùng tên ở bất kỳ đâu trong cây.bpo-37760: Tập lệnh
Tools/unicode/makeunicodedata.py, được sử dụng để chuyển đổi thông tin từ Cơ sở dữ liệu ký tự Unicode thành mã và dữ liệu được tạo ra được sử dụng bởi các phương thức củastrvà mô-đununicodedata, hiện xử lý dữ liệu của từng ký tự dưới dạngdataclassvới các thuộc tính được đặt tên, thay vì danh sách dài 18 trường khác nhau.bpo-37936: Tệp
.gitignorekhông còn áp dụng cho bất kỳ tệp nào được theo dõi trên thực tế trong kho Git. Bản vá của Greg Price.bpo-37725: Thay đổi mục tiêu makefile "sạch" để cũng làm sạch dữ liệu tối ưu hóa được hướng dẫn bởi chương trình (PGO). Trước đây bạn sẽ phải sử dụng "làm sạch" và "xóa hồ sơ" hoặc "làm sạch".
bpo-37707: Đánh dấu một số bài kiểm tra riêng lẻ để bỏ qua khi sử dụng --pgo. Các thử nghiệm được đánh dấu làm tăng đáng kể thời gian thực hiện tác vụ PGO và có thể không giúp cải thiện việc tối ưu hóa tệp thực thi cuối cùng.
bpo-36044: Giảm số lần chạy thử nghiệm đơn vị cho tác vụ tạo PGO. Điều này tăng tốc nhiệm vụ lên khoảng 15 lần. Chạy bộ thử nghiệm đơn vị đầy đủ rất chậm. Thay đổi này có thể dẫn đến bản dựng được tối ưu hóa kém hơn một chút do không có nhiều nhánh mã được thực thi. Nếu bạn sẵn sàng chờ bản dựng chậm hơn nhiều, bạn có thể khôi phục hành vi cũ bằng cách sử dụng './configure [..] PROFILE_TASK="-m test --pgo-extends"'. Chúng tôi không đảm bảo rằng nhóm tác vụ PGO nào sẽ tạo ra bản dựng nhanh hơn. Những người dùng quan tâm nên chạy các điểm chuẩn phù hợp của riêng mình vì kết quả có thể phụ thuộc vào môi trường, khối lượng công việc và chuỗi công cụ biên dịch.
bpo-37468:
make installkhông còn cài đặt các tệpwininst-*.exeđược sử dụng bởi distutils bdist_wininst: bdist_wininst chỉ hoạt động trên Windows.bpo-37189: Nhiều hàm
PyRun_XXX()nhưPyRun_String()không còn được xuất tronglibpython38.dlldo nhầm lẫn nữa. Xuất lại chúng để khắc phục khả năng tương thích ABI.bpo-25361: Cho phép sử dụng hướng dẫn SSE2 trong bản dựng Windows 32-bit.
bpo-36210: Cập nhật tính năng phát hiện mô-đun mở rộng tùy chọn cho AIX. ossaudiodev và spwd không áp dụng được cho AIX và không còn bị báo cáo là thiếu. Gói ncurses của bên thứ 3 (có hỗ trợ ASIS) xung đột với thư viện lời nguyền AIX được hỗ trợ chính thức, vì vậy hãy định cấu hình AIX để sử dụng libcurses.a. Tuy nhiên, hãy bỏ qua việc cố gắng xây dựng _curses_panel.
bản vá của M Felt
cửa sổ¶
bpo-38589: Sửa phím tắt Trợ giúp HTML khi Windows chưa được cài đặt vào ổ C
bpo-38453: Đảm bảo ntpath.realpath() giải quyết chính xác các đường dẫn tương đối.
bpo-38519: Khôi phục các tiêu đề C nội bộ bị thiếu trong gói nuget.org và Microsoft Store.
bpo-38492: Loại bỏ sự phụ thuộc
pythonw.exevào thời gian chạy Microsoft C++.bpo-38344: Sửa thông báo lỗi trong activate.bat
bpo-38359: Đảm bảo trình khởi chạy
pyw.exeđọc khóa đăng ký chính xác.bpo-38355: Sửa lỗi
ntpath.realpathtrênsys.executable.bpo-38117: Cập nhật gói OpenSSL lên 1.1.1d
bpo-38092: Giảm chi phí khi sử dụng đa xử lý trong môi trường ảo Windows.
bpo-38133: Cho phép trình khởi chạy py.exe định vị các bản cài đặt từ Microsoft Store và cải thiện khả năng hiển thị của môi trường ảo đang hoạt động.
bpo-38114:
pip.inikhông còn được bao gồm trong gói Nuget nữa.bpo-32592: Đặt Windows 8 làm phiên bản bắt buộc tối thiểu để được hỗ trợ API
bpo-36634:
os.cpu_count()hiện trả về bộ xử lý hoạt động thay vì bộ xử lý tối đa.bpo-36634: venv activate.bat hiện hoạt động khi các biến hiện có chứa ký tự trích dẫn kép.
bpo-38081: Ngăn chặn lỗi gọi
os.path.realpath()trên'NUL'.bpo-38087: Sửa lỗi phân biệt chữ hoa chữ thường trong test_pathlib và test_ntpath.
bpo-38088: Sửa lỗi distutils không tìm thấy vcruntime140.dll chỉ khi cài đặt bộ công cụ v142.
bpo-37283: Đảm bảo cài đặt dòng lệnh và unattend.xml ghi đè các trạng thái được phát hiện trước đó trong trình cài đặt Windows.
bpo-38020: Khắc phục sự cố có thể xảy ra khi gọi
os.readlink()(hoặc gián tiếp thông quarealpath()) trên một tệp không phải là liên kết được hỗ trợ.bpo-37705: Cải thiện việc triển khai
winerror_to_errno().bpo-37549:
os.dup()không còn bị lỗi đối với các luồng tiêu chuẩn trên Windows 7.bpo-1311: Tệp
nultrên Windows hiện trả về True từexists()và kết quả hợp lệ từos.stat()vớiS_IFCHRđược đặt.bpo-9949: Cho phép hỗ trợ theo dõi các liên kết tượng trưng trong
os.realpath().bpo-37834: Coi tất cả các điểm phân tích lại thay thế tên trên Windows trong
os.lstat()và các điểm phân tích lại khác như các tệp thông thường trongos.stat().bpo-36266: Thêm tên mô-đun trong thông báo lỗi được định dạng khi lỗi tải DLL xảy ra trong quá trình nhập mô-đun trong
_PyImport_FindSharedFuncptrWindows(). Bản vá của Srinivas Nyayapati.bpo-25172: Cố gắng nhập mô-đun
crypttrên Windows sẽ dẫn đếnImportErrorkèm theo thông báo giải thích rằng mô-đun này không được hỗ trợ trên Windows. Trên các nền tảng khác, nếu mô-đun_cryptcơ bản không có sẵn, ImportError sẽ bao gồm một thông báo giải thích sự cố.bpo-37778: Sửa các biểu tượng được sử dụng để liên kết tệp với gói Microsoft Store.
bpo-37734: Khắc phục việc sử dụng các giá trị đăng ký để khởi chạy Python từ ứng dụng Microsoft Store.
bpo-37702: Khắc phục rò rỉ bộ nhớ trên Windows khi tạo đối tượng SSLContext hoặc chạy
urllib.request.urlopen('https://...').bpo-37672: Chuyển pip của gói Windows Store để sử dụng biến
pip.iniđi kèm thay vì biếnPIP_USER.bpo-10945: Chính thức ngừng hỗ trợ tạo trình cài đặt bdist_wininst trên các hệ thống không phải Windows.
bpo-37445: Bao gồm cờ
FORMAT_MESSAGE_IGNORE_INSERTStrong lệnh gọiFormatMessageW().bpo-37369: Sửa đường dẫn cho
sys.executablekhi chạy từ Microsoft Store.bpo-37380: Không thu thập các tiến trình chưa hoàn thành với
subprocess._activetrên Windows để dọn dẹp sau này. Bản vá của Ruslan Kuprieiev.bpo-37351: Loại bỏ libpython38.a khỏi bản phân phối Windows tiêu chuẩn.
bpo-35360: Cập nhật các bản dựng Windows để sử dụng SQLite 3.28.0.
bpo-37267: Trên Windows,
os.dup()không còn tạo fd kế thừa khi xử lý tệp ký tự.bpo-36779: Đảm bảo
time.tznamechính xác trên Windows khi trang mã hoạt động được đặt thành CP_UTF7 hoặc CP_UTF8.bpo-32587: Làm cho
winreg.REG_MULTI_SZhỗ trợ các chuỗi có độ dài bằng 0.bpo-28269: Thay thế việc sử dụng
strcasecmp()cho chức năng hệ thống_stricmp(). Bản vá của Minmin Gong.bpo-36590: Thêm hỗ trợ Bluetooth RFCOMM gốc vào mô-đun ổ cắm.
macOS¶
bpo-38117: Đã cập nhật OpenSSL lên 1.1.1d trong trình cài đặt macOS.
bpo-38089: Di chuyển Azure Pipelines sang các phiên bản VM mới nhất và thực hiện các thử nghiệm macOS tùy chọn
bpo-18049: Tăng kích thước ngăn xếp mặc định của luồng từ 5MB lên 16MB trên macOS, để phù hợp với kích thước ngăn xếp của luồng chính. Điều này tránh sự cố khi đệ quy sâu trong các luồng.
bpo-34602: Tránh lỗi bộ thử nghiệm trên macOS bằng cách không còn gọi Resource.setrlimit để tăng giới hạn kích thước ngăn xếp quy trình khi chạy. Thay đổi thời gian chạy không còn cần thiết nữa vì trình thông dịch đang được xây dựng với kích thước ngăn xếp mặc định lớn hơn.
bpo-35360: Cập nhật trình cài đặt macOS để sử dụng SQLite 3.28.0.
bpo-34631: Đã cập nhật OpenSSL lên 1.1.1c trong trình cài đặt macOS.
IDLE¶
bpo-26353: Dừng thêm dòng mới khi lưu cửa sổ shell IDLE.
bpo-4630: Thêm tùy chọn chuyển đổi nhấp nháy con trỏ của IDLE cho các cửa sổ shell, editor và đầu ra. Xem Cài đặt, Chung, Tùy chọn cửa sổ, Nhấp nháy con trỏ. Bản vá của Zackery Spytz.
bpo-38598: Đừng cố biên dịch shell IDLE hoặc cửa sổ đầu ra
bpo-36698: IDLE không còn bị lỗi khi ghi các ký tự không thể mã hóa vào stderr. Bây giờ nó thoát chúng bằng dấu gạch chéo ngược, giống như trình thông dịch Python thông thường. Đã thêm trường
errorsvào luồng tiêu chuẩn.bpo-35379: Khi thoát IDLE, hãy bắt bất kỳ AttributionError nào. Một trường hợp xảy ra khi EditorWindow.close được gọi hai lần. Việc in dấu vết khi IDLE được chạy từ thiết bị đầu cuối là vô ích và khó chịu.
bpo-38183: Để tránh sự cố, test_idle bỏ qua thư mục cấu hình người dùng. Nó không còn cố gắng tạo hoặc truy cập .idlerc hoặc bất kỳ tệp nào bên trong nữa. Người dùng phải chạy IDLE để phát hiện vấn đề khi lưu cài đặt.
bpo-38077: IDLE không còn thêm 'argv' vào không gian tên người dùng khi khởi tạo nó. Lỗi này chỉ ảnh hưởng đến 3.7.4 và 3.8.0b2 đến 3.8.0b4.
bpo-38041: Các dòng khởi động lại Shell hiện lấp đầy chiều rộng cửa sổ, luôn bắt đầu bằng '=' và tránh ngắt dòng không cần thiết. Dòng sẽ vẫn ngắt dòng nếu tên tệp đi kèm dài so với chiều rộng.
bpo-35771: Để tránh thỉnh thoảng xảy ra lỗi test_idle giả trên các máy chậm hơn, hãy tăng
hover_delaytrong test_tooltip.bpo-37824: Xử lý đúng cách các cảnh báo đầu vào của người dùng trong shell IDLE. Ngừng biến SyntaxWarnings thành SyntaxErrors.
bpo-37929: Hộp thoại Cài đặt IDLE hiện đóng đúng cách khi không có cửa sổ shell.
bpo-37902: Thêm tính năng cuộn con lăn chuột cho mô-đun IDLE, đường dẫn và trình duyệt ngăn xếp. Bản vá của George Zhang.
bpo-37849: Đã sửa lỗi danh sách hoàn thành xuất hiện quá cao hoặc quá thấp khi hiển thị phía trên dòng hiện tại.
bpo-36419: Refactor IDLE tự động hoàn thiện và cải thiện việc kiểm tra.
bpo-37748: Sắp xếp lại menu Run. Đặt lựa chọn phổ biến nhất, Run Module, ở trên cùng.
bpo-37692: Cải thiện mẫu cấu hình nổi bật bằng tương tác shell mẫu và nhãn tốt hơn cho các thành phần shell.
bpo-37628: Hộp thoại cài đặt không còn mở rộng theo kích thước phông chữ nữa.
bpo-37627: Khởi tạo hộp thoại Tùy chỉnh Chạy với các đối số dòng lệnh được nhập gần đây nhất trước đó. Người dùng có thể tùy ý chỉnh sửa trước khi gửi chúng.
bpo-33610: Sửa lỗi ngữ cảnh mã không hiển thị đúng ngữ cảnh khi bật lần đầu.
bpo-37530: Tối ưu hóa ngữ cảnh mã để giảm hoạt động nền không cần thiết. Các thay đổi về phông chữ và đánh dấu hiện diễn ra cùng với các thay đổi của văn bản thay vì sau một khoảng thời gian trễ ngẫu nhiên.
bpo-27452: Dọn dẹp
config.pybằng cách nội tuyếnRemoveFilevà đơn giản hóa việc xử lýfiletrongCreateConfigHandlers.bpo-37325: Sửa thứ tự duyệt tiêu điểm tab cho nguồn trợ giúp và hộp thoại chạy tùy chỉnh.
bpo-37321: Cả hai thông báo lỗi kết nối quy trình con hiện đều đề cập đến phần 'Lỗi khởi động' của tài liệu IDLE.
bpo-17535: Thêm số dòng tùy chọn cho cửa sổ soạn thảo IDLE. Windows mở mà không có số dòng trừ khi được đặt khác trong tab Chung của hộp thoại cấu hình.
bpo-26806: Để bù cho các khung ngăn xếp được thêm bởi IDLE và tránh các sự cố có thể xảy ra với giới hạn đệ quy thấp, hãy thêm 30 vào giới hạn trong quá trình thực thi mã người dùng. Trừ 30 khi báo cáo giới hạn đệ quy để làm cho phần bổ sung này gần như minh bạch.
bpo-37177: 'Đính kèm' các hộp thoại tìm kiếm đúng cách vào cửa sổ chính để chúng hoạt động giống như các hộp thoại khác và không bị ẩn sau cửa sổ chính.
bpo-37039: Điều chỉnh "Chiều cao thu phóng" cho từng màn hình bằng cách tối đa hóa tạm thời cửa sổ trong lần sử dụng đầu tiên với một màn hình cụ thể. Việc thay đổi cài đặt màn hình có thể làm mất hiệu lực chiều cao đã lưu. Khi cửa sổ được phóng to tối đa, "Chiều cao thu phóng" không có hiệu lực.
bpo-35763: Tạo lời nhắc mẹo cuộc gọi về '/' nghĩa là chỉ có vị trí ít gây khó chịu hơn bằng cách chỉ thêm nó khi còn chỗ trên dòng đầu tiên.
bpo-5680: Thêm 'Chạy... Tùy chỉnh' vào menu Chạy để chạy mô-đun có cài đặt tùy chỉnh. Mọi 'đối số dòng lệnh' đã nhập đều được thêm vào sys.argv. Người ta có thể ngăn chặn việc khởi động lại mô-đun chính Shell thông thường.
bpo-36390: Tập hợp các chức năng của menu Định dạng vào format.py. Kết hợp các phương thức đoạn văn, rstrip.py và định dạng từ editor.py.
Công cụ/Bản trình diễn¶
bpo-38118: Cập nhật tệp ngăn chặn Valgrind để bỏ qua cảnh báo sai trong
PyUnicode_Decode()khi sử dụng GCC tích hợp strcmp().bpo-38347: pathfix.py: Giả sử tất cả các tệp kết thúc bằng '.py' là tập lệnh Python khi làm việc đệ quy.
bpo-37803: Các tùy chọn dài
--helpvà--versioncủa pdb hiện hoạt động.bpo-37942: Cải thiện bộ chuyển đổi ArgumentClinic cho float.
bpo-37704: Xóa
Tools/scripts/h2py.py: sử dụng cffi để truy cập C API trong Python.bpo-37675: 2to3 hiện hoạt động khi chạy từ thư viện chuẩn được nén.
bpo-37034: Phòng khám đối số hiện sử dụng tên đối số đối với các lỗi chỉ có đối số từ khóa thay vì vị trí của chúng. Bản vá được đóng góp bởi Rémi Lapeyre.
bpo-37064: Thêm tùy chọn -k vào tập lệnh pathscript.py: giữ nguyên cờ Shebang. Thêm tùy chọn -a vào tập lệnh pathscript.py: thêm cờ.
C API¶
bpo-37633: Xuất lại một số trình bao bọc tương thích chức năng cho macro trong
pythonrun.h.bpo-38644: Cung cấp
Py_EnterRecursiveCall()vàPy_LeaveRecursiveCall()như các chức năng thông thường cho API giới hạn. Trước đây, có những macro được xác định, nhưng những macro này không hoạt động với API bị giới hạn không thể truy cập trườngPyThreadState.recursion_depth. Xóa_Py_CheckRecursionLimitkhỏi ABI ổn định.bpo-38650: Biến toàn cục
PyStructSequence_UnnamedFieldhiện là hằng số và đề cập đến một chuỗi không đổi.bpo-38540: Đã sửa lỗi rò rỉ có thể xảy ra trong
PyArg_Parse()và các chức năng tương tự cho các đơn vị định dạng"es#"và"et#"khi macroPY_SSIZE_T_CLEANkhông được xác định.bpo-38395: Khắc phục sự cố trong các đối tượng
weakref.proxydo quản lý vòng đời không chính xác khi gọi một số phương thức liên quan có thể xóa tham chiếu cuối cùng đến đối tượng được proxy tham chiếu. Bản vá của Pablo Galindo.bpo-36389: Chức năng
_PyObject_CheckConsistency()hiện cũng có sẵn ở chế độ phát hành. Ví dụ: nó có thể được sử dụng để gỡ lỗi sự cố trong hàmvisit_decref()của GC.bpo-38266: Hoàn nguyên việc xóa PyThreadState_DeleteCurrent() bằng tài liệu.
bpo-38303: Cập nhật mô-đun mở rộng audioop để sử dụng ABI ổn định (PEP-384). Bản vá của Tyler Kieft.
bpo-38234:
Py_SetPath()hiện đặtsys.executablethành đường dẫn đầy đủ của chương trình (Py_GetProgramFullPath()) thay vì tên chương trình (Py_GetProgramName()).bpo-38234: Python bỏ qua các đối số được truyền cho
Py_SetPath(),Py_SetPythonHome()vàPy_SetProgramName(): sửa lỗi khởi tạo Python để sử dụng các đối số được chỉ định.bpo-38205: Macro
Py_UNREACHABLE()hiện gọiPy_FatalError().bpo-38140: Làm cho phần bù dict và phần bù yếu trở nên mờ đục đối với các loại vùng nhớ C bằng cách chuyển phần bù qua PyMemberDef
bpo-15088: Hàm C
PyGen_NeedsFinalizingđã bị xóa. Nó không được ghi lại, kiểm tra hoặc sử dụng ở bất kỳ đâu trong CPython sau khi triển khai PEP 442. Bản vá của Joannah Nanjekye. (Bản vá của Joannah Nanjekye)bpo-36763: Các tùy chọn được thêm bởi
PySys_AddXOption()hiện được xử lý theo cách tương tự như các tùy chọnPyConfig.xoptionsvà dòng lệnh-X.bpo-37926: Khắc phục sự cố trong
PySys_SetArgvEx(0, NULL, 0).bpo-37879: Sửa subtype_dealloc để ngăn chặn loại decref khi loại cơ sở là loại heap C
bpo-37645: Thêm
_PyObject_FunctionStr()để có được biểu diễn chuỗi thân thiện với người dùng của một đối tượng giống hàm. Bản vá của Jeroen Demeyer.bpo-29548: Các hàm
PyEval_CallObject,PyEval_CallFunction,PyEval_CallMethodvàPyEval_CallObjectWithKeywordskhông được dùng nữa. Thay vào đó hãy sử dụngPyObject_Call()và các biến thể của nó.bpo-37151:
PyCFunction_Callhiện không còn là bí danh củaPyObject_Call()nữa.bpo-37540: Giao thức vectorcall hiện yêu cầu người gọi chỉ chuyển các chuỗi dưới dạng tên từ khóa.
bpo-37207: Giao thức vectorcall hiện đã được bật cho các đối tượng
type: đặttp_vectorcallthành hàm vectorcall để sử dụng thay vìtp_newvàtp_initkhi gọi chính lớp đó.bpo-21120: Loại trừ Python-ast.h, ast.h và asdl.h khỏi API giới hạn.
bpo-37483: Thêm chức năng mới
_PyObject_CallOneArgđể gọi một đối tượng với một đối số vị trí.bpo-36763: Thêm chức năng
PyConfig_SetWideStringList().bpo-37337: Thêm chức năng gọi nhanh cho các phương thức gọi:
_PyObject_VectorcallMethod(),_PyObject_CallMethodNoArgs()và_PyObject_CallMethodOneArg().bpo-28805: Quy ước gọi
METH_FASTCALLđã được ghi lại.bpo-37221: Hàm mới
PyCode_NewWithPosOnlyArgs()cho phép tạo các đối tượng mã nhưPyCode_New(), nhưng có thêm tham số posonlyargcount để chỉ ra số lượng đối số chỉ có vị trí.bpo-37215: Khắc phục sự cố dtrace được giới thiệu bởi bpo-36842
bpo-37194: Thêm hàm
PyObject_CallNoArgs()công khai mới vào C API: gọi một đối tượng Python có thể gọi mà không có bất kỳ đối số nào. Đó là cách hiệu quả nhất để gọi lại mà không có bất kỳ đối số nào. Ví dụ: trên x86-64,PyObject_CallFunctionObjArgs(func, NULL)phân bổ 960 byte trên ngăn xếp cho mỗi cuộc gọi, trong khiPyObject_CallNoArgs(func)chỉ phân bổ 624 byte cho mỗi cuộc gọi.bpo-37170: Sửa lỗi truyền trong
PyLong_AsUnsignedLongLongMask().bpo-35381: Chuyển đổi các loại được phân bổ tĩnh posixmodule.c
DirEntryTypevàScandirIteratorTypethành các loại được phân bổ heap.bpo-34331: Sử dụng danh từ số ít/số nhiều trong thông báo lỗi khi khởi tạo một lớp trừu tượng bằng (các) phương thức trừu tượng không bị ghi đè.
Python 3.8.0 beta 1¶
Release date: 2019-06-04
Bảo mật¶
bpo-35907: CVE 2019-9948: Tránh đọc tệp bằng cách không cho phép các lược đồ
local-file://vàlocal_file://URL trongURLopener().open()vàURLopener().retrieve()củaurllib.request.bpo-33529: Ngăn chức năng gấp được sử dụng trong mã hóa tiêu đề email đi vào vòng lặp vô hạn khi có quá nhiều ký tự không phải ASCII trong tiêu đề.
bpo-33164: Đã cập nhật triển khai blake2 sử dụng triển khai bộ nhớ an toàn do nền tảng cung cấp.
Cốt lõi và nội dung¶
bpo-35814: Cho phép giải nén ở phía bên phải các bài tập có chú thích. Đặc biệt,
t: Tuple[int, ...] = x, y, *zhiện đã được cho phép.bpo-37126: Tất cả các đối tượng structseq hiện được bộ thu gom rác theo dõi. Bản vá của Pablo Galindo.
bpo-37122: Làm cho thuộc tính co_argcount của các đối tượng mã biểu thị tổng số đối số vị trí (bao gồm cả các đối số chỉ có vị trí). Giá trị của co_posonlyargcount có thể được sử dụng để phân biệt đối số nào chỉ mang tính vị trí và sự khác biệt (co_argcount - co_posonlyargcount) là số lượng đối số vị trí hoặc từ khóa. Bản vá của Pablo Galindo.
bpo-20092: Các nhà xây dựng của
int,floatvàcomplexbây giờ sẽ sử dụng phương thức đặc biệt__index__(), nếu có và phương thức tương ứng__int__(),__float__()hoặc__complex__()không có sẵn.bpo-37087: Thêm hỗ trợ ID luồng gốc (TID) vào OpenBSD.
bpo-26219: Được triển khai theo cơ chế bộ đệm opcode và lệnh
LOAD_GLOBALsử dụng nó.LOAD_GLOBALhiện nhanh hơn khoảng 40%. Đóng góp bởi Yury Selivanov và Inada Naoki.bpo-37072: Khắc phục sự cố trong PyAST_FromNodeObject() khi cờ là NULL.
bpo-37029: Việc giải phóng rất nhiều đối tượng nhỏ có thể mất thời gian bậc hai về số lượng đấu trường, do sử dụng tìm kiếm tuyến tính để sắp xếp danh sách các đấu trường có thể sử dụng của
obmalloc.ctheo thứ tự số lượng nhóm bộ nhớ trống. Điều này được thực hiện mà không cần tìm kiếm ngay bây giờ, để lại tuyến tính thời gian trong trường hợp xấu nhất về số lượng đấu trường. Đối với các chương trình có vấn đề khá rõ ràng (thường có hơn 100 nghìn đối tượng nhỏ hoạt động đồng thời), điều này có thể giảm đáng kể thời gian cần thiết để giải phóng bộ nhớ của chúng.bpo-26423: Khắc phục lỗi tràn có thể xảy ra trong
wrap_lenfunc()khisizeof(long) < sizeof(Py_ssize_t)(ví dụ: Windows 64-bit).bpo-37050: Cải thiện AST cho chuỗi f "gỡ lỗi", sử dụng '=' để in ra nguồn của biểu thức đang được đánh giá. Xóa expr_text khỏi nút FormattedValue và thay vào đó sử dụng nút chuỗi Hằng (có thể được hợp nhất với các biểu thức hằng liền kề bên trong chuỗi f).
bpo-22385: Các phương thức
bytes.hex,bytearray.hexvàmemoryview.hexcũng như các hàmbinascii.hexlifyvàb2a_hexhiện có khả năng bao gồm dấu phân cách tùy chọn giữa các byte hex. Chức năng này được lấy cảm hứng từ việc triển khai hexlify của MicroPython.bpo-26836: Thêm
os.memfd_create().bpo-37032: Đã thêm phương thức
replace()mới vào loại mã (types.CodeType).bpo-37007: Triển khai
socket.if_nameindex(),socket.if_nametoindex()vàsocket.if_indextoname()trên Windows.bpo-36829:
PyErr_WriteUnraisable()hiện tạo đối tượng truy nguyên nếu không có truy nguyên hiện tại. Hơn nữa, hãy gọiPyErr_NormalizeException()vàPyException_SetTraceback()để bình thường hóa giá trị ngoại lệ. Bỏ qua bất kỳ lỗi nào.bpo-36878: Chỉ chấp nhận văn bản sau
# type: ignorenếu ký tự đầu tiên là ASCII. Điều này là để không cho phép những thứ như# type: ignoreé.bpo-36878: Lưu trữ văn bản xuất hiện sau nhận xét
# type: ignoretrong AST. Ví dụ: loại bỏ qua như# type: ignore[E1000]sẽ có chuỗi"[E1000]"được lưu trong nút AST của nó.bpo-2180: Coi việc tiếp tục dòng tại EOF là
SyntaxErrorcủa Anthony Sottile.bpo-36907: Khắc phục sự cố khi gọi hàm C bằng từ khóa dict (
f(**kwargs)) và thay đổi dictkwargstrong khi hàm đó đang chạy.bpo-36946: Khắc phục lỗi tràn số nguyên có dấu khi xử lý các lát.
bpo-36826: Thêm hỗ trợ loại NamedExpression cho ast_unparse.c
bpo-1875:
SyntaxErrorhiện được nâng lên nếu khối mã sẽ được tối ưu hóa (ví dụ: nếu các điều kiện luôn sai) có chứa lỗi cú pháp. Bản vá của Pablo Galindo.bpo-36027: Cho phép tính toán nghịch đảo mô-đun thông qua
powba đối số: đối số thứ hai hiện được phép âm trong trường hợp đối số thứ nhất và thứ ba là nguyên tố cùng nhau.bpo-36861: Cập nhật cơ sở dữ liệu Unicode lên phiên bản 12.1.0.
bpo-28866: Tránh các thuộc tính bộ nhớ đệm của các lớp xác định mro() để tránh sự cố vô hiệu hóa bộ nhớ đệm cứng.
bpo-36851: Ngăn xếp
FrameTypehiện đã được dọn sạch chính xác nếu quá trình thực thi kết thúc bằng kết quả trả về và ngăn xếp không trống.bpo-34616: Các hàm dựng sẵn
compile()hiện hỗ trợ cờast.PyCF_ALLOW_TOP_LEVEL_AWAIT, cho phép biên dịch các nguồn có chứaawait,async withhoặcasync forcấp cao nhất. Điều này rất hữu ích để đánh giá mã không đồng bộ từ các hàm đã không đồng bộ; ví dụ: trong REPL tùy chỉnh.bpo-36842: Triển khai PEP 578, thêm sys.audit, io.open_code và các API liên quan.
bpo-27639: Kiểu trả về chính xác cho các thao tác cắt Danh sách người dùng. Bản vá của Michael Blahay, Erick Cervantes và vaultah
bpo-36737: Di chuyển PyRuntimeState.warnings sang trạng thái trên mỗi phiên dịch viên (thông qua "trạng thái mô-đun").
bpo-36793: Đã xóa triển khai
__str__khỏi các kiểu dựng sẵnbool,int,float,complexvà một số lớp khỏi thư viện chuẩn. Bây giờ họ kế thừa__str__()từobject.bpo-36817: Thêm chuỗi f tính năng
=để gỡ lỗi. Điều này có thể đứng trước!s,!rhoặc!a. Nó tạo ra văn bản của biểu thức, theo sau là dấu bằng, theo sau là giá trị của biểu thức. Vậyf'{3*9+15=}'sẽ bằng chuỗi'3*9+15=42'. Nếu=được chỉ định, chuyển đổi mặc định được đặt thành!r, trừ khi thông số định dạng được cung cấp, trong trường hợp đó hành vi định dạng không thay đổi và __format__ sẽ được sử dụng.bpo-24048: Lưu ngoại lệ trực tiếp trong
remove_module()của import.c.bpo-27987: pymalloc trả về các khối bộ nhớ được căn chỉnh theo 16 byte, thay vì 8 byte, trên nền tảng 64 bit để phù hợp với x86-64 ABI. Các trình biên dịch gần đây đảm nhận sự liên kết này thường xuyên hơn. Bản vá của Inada Naoki.
bpo-36601: Kiểm tra
getpid() == main_pidvô nghĩa từ lâu đã bị xóa khỏi trình xử lý tín hiệu C nội bộ của Python.bpo-36594: Sửa lỗi sử dụng sai
%ptrong chuỗi định dạng. Bản vá của Zackery Spytz.bpo-36045:
builtins.help()hiện có tiền tốasynccho các hàm không đồng bộ.bpo-36084: Thêm ID luồng gốc (TID) vào các đối tượng threading.Thread (nền tảng được hỗ trợ: Windows, FreeBSD, Linux, macOS)
bpo-36035: Đã thêm bản sửa lỗi cho các liên kết tượng trưng bị hỏng kết hợp với pathlib
bpo-35983: Đã thêm macro thùng rác mới để giải quyết vấn đề phân bổ kép có thể xảy ra khi
tp_dealloccủa một lớp con gọitp_dealloccủa một lớp cơ sở và lớp cơ sở đó sử dụng cơ chế thùng rác. Bản vá của Jeroen Demeyer.bpo-20602: Không xóa
sys.flagsvàsys.float_infokhi tắt máy. Bản vá của Zackery Spytz.bpo-26826: Hiển thị
copy_file_range()dưới dạng API cấp thấp trong mô-đunos.bpo-32388: Loại bỏ yêu cầu tương thích nhị phân giữa các phiên bản trong tp_flags.
bpo-31862: Khởi tạo cổng binascii sang PEP 489 nhiều pha. Bản vá của Marcel Plch.
Thư viện¶
bpo-37128: Đã thêm
math.perm().bpo-37120: Thêm SSLContext.num_tickets để kiểm soát số lượng vé phiên TLSv1.3.
bpo-12202: Sửa lỗi xử lý trong
msilib.SummaryInformation.GetProperty(). Bản vá của Zackery Spytz.bpo-26835: Mô-đun fcntl hiện chứa các hằng số niêm phong tệp để niêm phong các memfds.
bpo-29262: Thêm trình trợ giúp xem xét nội tâm
get_origin()vàget_args()vào mô-đuntyping.bpo-12639:
msilib.Directory.start_component()không còn bị lỗi nếu keyfile không phải làNone.bpo-36999: Thêm phương thức
asyncio.Task.get_coro()để hiển thị công khai đối tượng coroutine của nhiệm vụ.bpo-35246: Làm cho
asyncio.create_subprocess_exec()chấp nhận các đối số giống như đường dẫn.bpo-35279: Thay đổi max_workers mặc định của
ThreadPoolExecutortừcpu_count() * 5thànhmin(32, cpu_count() + 4). Giá trị trước đây lớn một cách vô lý trên nhiều máy lõi.bpo-37076:
_thread.start_new_thread()hiện ghi lại ngoại lệ chưa được phát hiện bởi hàm bằng cách sử dụngsys.unraisablehook(), thay vìsys.excepthook(), do đó hook có quyền truy cập vào hàm đã đưa ra ngoại lệ đó.bpo-33725: Trên macOS, mô-đun
multiprocessinghiện sử dụng phương thức khởi động spawn theo mặc định.bpo-37054: Sửa hàm hủy
_pyio.BytesIOvà_pyio.TextIOWrapper: khởi tạo thuộc tính_buffercủa chúng càng sớm càng tốt (trong nội dung lớp), vì nó được__del__()sử dụng để gọiclose().bpo-37058: PEP 544: Thêm
Protocolvà@runtime_checkablevào mô-đuntyping.bpo-36933: Các chức năng
sys.set_coroutine_wrappervàsys.get_coroutine_wrapperkhông được dùng nữa và được đánh dấu để xóa trong 3.8 đã bị xóa.bpo-37047: Xử lý quyền truy cập thuộc tính và liên kết muộn trong thiết lập
unittest.mock.AsyncMockđể tự động xác định. Ghi lại các phương thức không đồng bộ mới được triển khai trongunittest.mock.MagicMock.bpo-37049: PEP 589: Thêm
TypedDictvào mô-đuntyping.bpo-37046: PEP 586: Thêm
Literalvào mô-đuntyping.bpo-37045: PEP 591: Thêm vòng loại
Finalvà trang trí@finalvào mô-đuntyping.bpo-37035: Không ghi lại các ngoại lệ dựa trên OSError nếu xảy ra lỗi nghiêm trọng trong quá trình vận chuyển asyncio. Peer có thể tạo ra hầu hết mọi OSError, người dùng không thể tránh những ngoại lệ này bằng cách sửa mã riêng. Các lỗi vẫn được truyền đến mã người dùng, việc ghi lại chúng là vô nghĩa và gây ô nhiễm nhật ký asyncio.
bpo-37001:
symtable.symtable()hiện chấp nhận các loại đầu vào tương tự cho mã nguồn như hàmcompile()tích hợp. Bản vá của Dino Viehland.bpo-37028: Triển khai asyncio REPL
bpo-37027: Trở lại an toàn để sử dụng đối tượng ổ cắm proxy từ Transport.get_extra_info('socket')
bpo-32528: Biến asyncio.CancelledError thành BaseException.
Điều này sẽ giải quyết lỗi phổ biến mà nhiều người dùng asyncio mắc phải: mệnh đề "ngoại trừ Ngoại lệ" phá vỡ việc hủy Nhiệm vụ.
Ngoài thay đổi này, chúng tôi còn ngừng kế thừa asyncio.TimeoutError và asyncio.InvalidStateError từ các đối tác concurrent.futures.* của chúng. Không có lý do gì để những ngoại lệ này chia sẻ chuỗi thừa kế.
bpo-1230540: Thêm chức năng
threading.excepthook()mới để xử lý ngoại lệthreading.Thread.run()chưa được phát hiện. Nó có thể được ghi đè để kiểm soát cách xử lý các ngoại lệthreading.Thread.run()chưa được xử lý.bpo-36996: Xử lý
unittest.mock.patch()được sử dụng làm trang trí trên các hàm không đồng bộ.bpo-37008: Thêm hỗ trợ gọi
next()với bản mô phỏng từunittest.mock.mock_open()bpo-27737: Chỉ cho phép mã hóa tiêu đề khoảng trắng trong
email.header- bởi Batuhan Taskayabpo-36969: Lệnh PDB
argshiện chỉ hiển thị các đối số vị trí. Bản vá được đóng góp bởi Rémi Lapeyre.bpo-36969: Lệnh PDB
argshiện chỉ hiển thị các đối số từ khóa. Bản vá được đóng góp bởi Rémi Lapeyre.bpo-36983: Thêm tên còn thiếu vào
typing.__all__:ChainMap,ForwardRef,OrderedDict- bởi Anthony Sottile.bpo-36972: Thêm giao thức SupportIndex vào mô-đun gõ để cho phép kiểm tra kiểu nhằm phát hiện các lớp có thể được chuyển tới
hex(),oct()vàbin().bpo-32972: Triển khai
unittest.IsolatedAsyncioTestCaseđể giúp kiểm tra mã dựa trên asyncio.bpo-36952:
fileinput.input()vàfileinput.FileInputĐối số bufsize đã bị xóa (không được dùng nữa và bị bỏ qua kể từ Python 3.6) và do đó, đối số mode và openhook chỉ được tạo từ khóa.bpo-36952: Bắt đầu với Python 3.3, việc nhập ABC từ
collectionskhông được dùng nữa và việc nhập phải được thực hiện từcollections.abc. Khả năng nhập từcollectionsvẫn được đánh dấu là sẽ bị loại bỏ trong phiên bản 3.8, nhưng đã bị trì hoãn ở phiên bản 3.9; tài liệu vàDeprecationWarningđã được làm rõ.bpo-36949: Triển khai __repr__ cho các đối tượng WeakSet.
bpo-36948: Sửa
NameErrortrongurllib.request.URLopener.retrieve(). Bản vá của Karthikeyan Singaravelan.bpo-33524: Sửa lỗi gấp tiêu đề email khi max_line_length bằng 0 hoặc Không có và tiêu đề chứa các ký tự không phải mã ascii. Đóng góp bởi Licht Takeuchi (@Licht-T).
bpo-24564:
shutil.copystat()hiện bỏ quaerrno.EINVALtrênos.setxattr(), điều này có thể xảy ra khi sao chép tệp trên hệ thống tệp mà không hỗ trợ thuộc tính mở rộng.Bản vá gốc của Giampaolo Rodola, được cập nhật bởi Ying Wang.
bpo-36888: Giờ đây, các tiến trình con của Python có thể truy cập trạng thái của tiến trình gốc bằng cách sử dụng multiprocessing.process.parent_process
bpo-36921: Không dùng
@coroutinevìasync def.bpo-25652: Sửa lỗi
__rmod__củaUserString- bởi Batuhan Taskaya.bpo-36916: Xóa thông báo về một ngoại lệ chưa được xử lý trong một tác vụ khi writer.write() được sử dụng mà không chờ đợi và writer.drain() không thành công với một ngoại lệ.
bpo-36889: Giới thiệu lớp
asyncio.Streamkết hợp chức năngasyncio.StreamReadervàasyncio.StreamWriter.asyncio.Streamcó thể hoạt động ở chế độ chỉ đọc, chỉ ghi và đọc ghi. Cung cấp các nhà máyasyncio.connect(),asyncio.connect_unix(),asyncio.connect_read_pipe()vàasyncio.connect_write_pipe()để mở kết nốiasyncio.Stream. Cung cấpasyncio.StreamServervàUnixStreamServerđể phục vụ các máy chủ có asyncio.Stream API. Sửa đổiasyncio.create_subprocess_shell()vàasyncio.create_subprocess_exec()để sử dụngasyncio.Streamthay vìStreamReadervàStreamWriterkhông được dùng nữa. Không dùng nữaasyncio.StreamReadervàasyncio.StreamWriter. Không chấp nhận việc sử dụng các lớp riêng tư, ví dụ:asyncio.FlowControlMixingvàasyncio.StreamReaderProtocolbên ngoài gói asyncio.bpo-36845: Đã thêm xác thực tiền tố số nguyên để xây dựng mạng IP và giao diện trong mô-đun ipaddress.
bpo-23378: Thêm hành động mở rộng vào argparser.
bpo-36867: Sửa lỗi tạo phiên bản SharedMemoryManager và quy trình gốc của nó sử dụng hai quy trình Resource_tracker riêng biệt.
bpo-23896: Thêm ngữ pháp vào lib2to3.pygram có chứa exec dưới dạng hàm chứ không phải dưới dạng câu lệnh.
bpo-36895: Chức năng
time.clock()không được dùng nữa trong phiên bản 3.3 mà thay vào đó làtime.perf_counter()và được đánh dấu để xóa trong phiên bản 3.8, chức năng này đã bị xóa.bpo-35545: Khắc phục asyncio loại bỏ phạm vi IPv6 khi đảm bảo độ phân giải tên máy chủ nội bộ
bpo-36887: Thêm hàm mới
math.isqrt()để tính căn bậc hai số nguyên.bpo-34632: Giới thiệu mô-đun
importlib.metadatacó hỗ trợ (tạm thời) để đọc siêu dữ liệu từ các gói của bên thứ ba.bpo-36878: Khi sử dụng
type_comments=Truetrongast.parse, hãy xử lý# type: ignoretheo sau là ký tự không phải chữ và số rồi văn bản tùy ý dưới dạng loại bỏ qua, thay vì không yêu cầu gì ngoài khoảng trắng hoặc nhận xét khác. Điều này cho phép các đội hình như# type: ignore[E1000].bpo-36778: mã hóa
cp65001(trang mã Windows 65001) trở thành bí danh cho mã hóautf_8.bpo-36867: Multiprocessing.resource_tracker thay thế mô-đun multiprocessing.semaphore_tracker. Ngoài các ngữ nghĩa, Resource_tracker còn theo dõi các phân đoạn Shared_memory.
bpo-30262: Các đối tượng
CachevàStatementcủa mô-đunsqlite3không được hiển thị cho người dùng. Bản vá của Aviv Palivoda.bpo-24538: Trong
shutil.copystat(), trước tiên hãy sao chép các thuộc tính tệp mở rộng và sau đó là quyền đối với tệp, vì các thuộc tính mở rộng chỉ có thể được đặt ở đích trong khi nó vẫn có thể ghi được.bpo-36829: Thêm chức năng
sys.unraisablehook()mới có thể được ghi đè để kiểm soát cách xử lý "các ngoại lệ không thể xử lý được". Nó được gọi khi có ngoại lệ xảy ra nhưng Python không có cách nào để xử lý nó. Ví dụ: khi hàm hủy tạo ra một ngoại lệ hoặc trong quá trình thu gom rác (gc.collect()).bpo-36832: Giới thiệu
zipfile.Path, một trình bao bọc tương thích với pathlib để duyệt qua các tệp zip.bpo-36814: Khắc phục sự cố trong đó os.posix_spawnp() đưa ra TypeError không chính xác khi file_actions là Không có.
bpo-33110: Xử lý chính xác các ngoại lệ được đưa ra bởi các hàm được thêm bởi concurrent.futures add_done_callback khi Tương lai đã hoàn thành.
bpo-26903: Giới hạn
max_workerstrongProcessPoolExecutorở mức 61 để khắc phục giới hạn WaitForMultipleObjects.bpo-36813: Sửa
QueueListenerđể gọiqueue.task_done()khi dừng. Bản vá của Bar Harel.bpo-36806: Cấm tạo các đối tượng luồng asyncio như StreamReader, StreamWriter, Process và các giao thức của chúng bên ngoài gói asyncio.
bpo-36802: Cung cấp cả lệnh gọi đồng bộ hóa và không đồng bộ cho StreamWriter.write() và StreamWriter.close()
bpo-36801: Xử lý đúng cách việc đóng kết nối SSL trong lệnh gọi asyncio StreamWriter.drain().
bpo-36785: Triển khai PEP 574 (giao thức Pickle 5 với bộ đệm ngoài băng tần).
bpo-36772: functools.lru_cache() hiện có thể được sử dụng làm công cụ trang trí thẳng ngoài cách sử dụng hiện tại của nó như một hàm trả về một công cụ trang trí.
bpo-6584: Thêm ngoại lệ
BadGzipFilevào mô-đungzip.bpo-36748: Bộ đệm ghi được tối ưu hóa khi triển khai C của
TextIOWrapper. Viết chuỗi ASCII thànhTextIOWrapperbằng mã hóa ascii, latin1 hoặc utf-8 nhanh hơn khoảng 20%. Bản vá của Inada Naoki.bpo-8138: Không đánh dấu
wsgiref.simple_server.SimpleServerlà đa luồng vìwsgiref.simple_server.WSGIServerlà đơn luồng.bpo-22640:
py_compile.compile()hiện hỗ trợ chế độ im lặng. Bản vá của Joannah Nanjekyebpo-29183: Khắc phục các ngoại lệ kép trong
wsgiref.handlers.BaseHandlerbằng cách chỉ gọi phương thứcclose()của nó khi không có ngoại lệ nào được đưa ra.bpo-36548: Cải thiện sự lặp lại của cờ biểu thức chính quy.
bpo-36542: Chữ ký của các hàm Python hiện có thể được ghi đè bằng cách chỉ định thuộc tính
__text_signature__.bpo-36533: Khởi tạo lại ghi nhật ký.Handler khóa các tiến trình con được phân nhánh thay vì cố gắng lấy tất cả chúng trong tiến trình gốc trước khi phân nhánh chỉ để được giải phóng trong tiến trình con. Mẫu thu thập/giải phóng đã dẫn đến sự bế tắc trong mã đã triển khai bất kỳ dạng trình xử lý ghi nhật ký chuỗi nào phụ thuộc lẫn nhau vì không thể đảm bảo thứ tự thu thập khóa.
bpo-35252: Ném ra TypeError thay vì AssertionError khi sử dụng chú thích loại không hợp lệ với singledispatch.
bpo-35900: Cho phép các phương thức rút gọn trả về bộ dữ liệu gồm 6 mục trong đó mục thứ 6 chỉ định phương thức cài đặt trạng thái tùy chỉnh được gọi thay vì phương thức
__setstate__thông thường.bpo-35900: bật đăng ký gọi lại giảm tùy chỉnh cho các hàm và lớp trong _pickle.c, sử dụng thuộc tính
reducer_overridecủa Pickler mớibpo-36368: Sửa lỗi làm treo các phiên bản SharedMemoryManager trong các phiên tương tác sau khi ctrl-c (KeyboardInterrupt) được gửi
bpo-31904: Sửa lỗi mmap cho VxWorks
bpo-27497:
csv.DictWriter.writeheader()hiện trả về giá trị trả về của phương thứccsv.Writer.writerow()cơ bản. Bản vá được đóng góp bởi Ashish Nitin Patil.bpo-36239: Việc phân tích tệp .mo hiện bỏ qua các nhận xét bắt đầu và kết thúc bằng #-#-#-#-#.
bpo-26707: Cho phép plistlib đọc và ghi các tệp plist nhị phân được tạo dưới dạng tệp KeyedArchive. Cụ thể, điều này cho phép plistlib xử lý mã thông báo 0x80 dưới dạng đối tượng UID.
bpo-31904: Thêm hỗ trợ mô-đun posix cho VxWorks.
bpo-35125: Asyncio: Xóa lệnh gọi lại bên trong khi hủy bên ngoài trong lá chắn
bpo-35721: Sửa lỗi mô tả tệp rò rỉ
asyncio.SelectorEventLoop.subprocess_exec()nếuPopenbị lỗi và được gọi bằngstdin=subprocess.PIPE. Bản vá của Niklas Fiekas.bpo-31855: kết quả
unittest.mock.mock_open()hiện tôn trọng đối số của read([size]). Bản vá được đóng góp bởi Rémi Lapeyre.bpo-35431: Triển khai
math.comb()trả về hệ số nhị thức, tính toán số cách chọn k mục từ n mục mà không lặp lại và không có thứ tự. Bản vá của Yash Aggarwal và Keller Fuchs.bpo-26660: Đã sửa lỗi cấp quyền trong quá trình dọn dẹp
TemporaryDirectory. Trước đâyTemporaryDirectory.cleanup()không thành công khi các tệp hoặc thư mục không thể ghi hoặc không thể tìm kiếm được tạo bên trong một thư mục tạm thời.bpo-34271: Thêm trình trợ giúp gỡ lỗi vào mô-đun ssl. Giờ đây, bạn có thể kết xuất tài liệu chính và theo dõi giao thức TLS. Bối cảnh mặc định và stdlib cũng hỗ trợ SSLKEYLOGFILE env var.
bpo-26467: Đã thêm AsyncMock để hỗ trợ sử dụng unittest để mô phỏng các coroutine asyncio. Bản vá của Lisa Roach.
bpo-33569: dataclasses.InitVar: Hiển thị loại được sử dụng để tạo var init.
bpo-34424: Khắc phục sự cố tuần tự hóa các tin nhắn chứa chuỗi được mã hóa khi chính sách.linesep được đặt thành chuỗi nhiều ký tự. Bản vá của Jens Troeger.
bpo-34303: Hiệu suất của
functools.reduce()được cải thiện đôi chút. Bản vá của Serge Fedoseev.bpo-33361: Sửa lỗi trong
codecs.StreamRecodertrong đó việc tìm kiếm có thể để lại dữ liệu cũ trong bộ đệm và làm gián đoạn các lệnh đọc tiếp theo. Bản vá của Ammar Askar.bpo-22454: Mô-đun
shlexhiện hiển thịshlex.join(), nghịch đảo củashlex.split(). Bản vá của Bo Bayles.bpo-31922:
asyncio.AbstractEventLoop.create_datagram_endpoint(): Không kết nối ổ cắm UDP khi được phép phát sóng. Điều này cho phép nhận được phản hồi sau khi phát sóng UDP.bpo-24882: Thay đổi ThreadPoolExecutor để sử dụng các luồng nhàn rỗi hiện có trước khi tạo các luồng mới.
bpo-31961: Đã thêm hỗ trợ cho byte và các đối tượng giống đường dẫn trong
subprocess.Popen()trên Windows. Tham số args hiện chấp nhận path-like object nếu shell làFalsevà một chuỗi chứa byte và các đối tượng giống đường dẫn. Tham số executable hiện chấp nhận byte và path-like object. Tham số cwd hiện chấp nhận đối tượng byte. Dựa trên bản vá của Anders Lorentsen.bpo-33123:
pathlib.Path.unlinkhiện chấp nhận tham số missing_ok để tránhFileNotFoundErrorđược nâng lên. Bản vá của Robert Buchholz.bpo-32941: Cho phép các đối tượng
mmap.mmaptruy cập lệnh gọi hệ thống madvise() (thông quammap.mmap.madvise()).bpo-22102: Đã thêm hỗ trợ cho các tệp ZIP có đĩa được đặt thành 0. Các tệp như vậy thường được tạo bằng các công cụ tích hợp trên Windows khi sử dụng tiện ích mở rộng ZIP64. Bản vá của Francisco Facioni.
bpo-32515: trace.py hiện có thể chạy các mô-đun thông qua python3 -m trace -t --module module_name
bpo-32299: Đã thay đổi
unittest.mock.patch.dict()để trả về từ điển đã vá khi được sử dụng làm trình quản lý ngữ cảnh. Bản vá của Vadim Tsander.bpo-27141: Đã thêm
__copy__()vàocollections.UserListvàcollections.UserDictđể triển khai chính xác việc sao chép nông đối tượng. Bản vá của Bar Harel.bpo-31829:
\r,\0và\x1a(phần cuối của tệp trên Windows) hiện được thoát trong giao thức 0 các chuỗi Unicode. Điều này cho phép tải chúng mà không bị mất từ các tệp đang mở ở chế độ văn bản trong Python 2.bpo-23395:
_thread.interrupt_main()hiện tránh đặt trạng thái lỗi Python nếu tín hiệuSIGINTbị Python bỏ qua hoặc không xử lý.
Tài liệu¶
bpo-36896: Làm rõ rằng một số loại có chữ ký hàm tạo không ổn định giữa các phiên bản Python.
bpo-36686: Cải thiện tài liệu về các đối số stdin, stdout và stderr của hàm
asyncio.subprocess_execđể chỉ định giá trị nào được hỗ trợ. Cũng đề cập rằng việc giải mã dưới dạng văn bản không được hỗ trợ.Thêm một vài thử nghiệm để xác minh rằng các giá trị khác nhau được truyền cho các đối số std* có thực sự hoạt động hay không.
bpo-36984: Cải thiện phiên bản đã thêm tài liệu tham khảo trong mô-đun
typing- của Anthony Sottile.bpo-36868: Tính năng mới hiện đề cập đến SSLContext.hostname_checks_common_name thay vì SSLContext.host_flags.
bpo-35924: Thêm ghi chú vào tài liệu
curses.addstr()để cảnh báo rằng các chuỗi nhiều dòng có thể gây ra lỗi phân tách do lỗi ncurses.bpo-36783: Đã thêm Tài liệu C API cho Time_FromTimeAndFold và PyDateTime_FromDateAndTimeAndFold theo PEP 495. Bản vá của Edison Abahurire.
bpo-36797: Nhiều tài liệu về distutils kế thừa đã bị cắt bớt hoặc được đánh dấu rõ ràng hơn là chỉ được giữ lại cho đến khi tài liệu setuptools bao gồm nó một cách độc lập.
bpo-22865: Thêm chi tiết vào tài liệu về hàm
pty.spawn.bpo-35397: Loại bỏ việc không dùng nữa và ghi lại urllib.parse.unwrap(). Bản vá được đóng góp bởi Rémi Lapeyre.
bpo-32995: Đã thêm biến ngữ cảnh trong bảng thuật ngữ.
bpo-33519: Làm rõ rằng
copy()không phải là một phần củaMutableSequenceABC.bpo-33482: Tạo
codecs.StreamRecoder.writelineslấy danh sách byte.bpo-25735: Đã thêm tài liệu cho giai thừa func để chỉ ra rằng trả về các giá trị nguyên
bpo-20285: Mở rộng object.__doc__ (docstring) để làm cho nó rõ ràng hơn. Sửa đổi pydoc.py để help(object) liệt kê các phương thức đối tượng (đối với các lớp khác, giúp bỏ qua các phương thức của lớp cơ sở đối tượng.)
Kiểm tra¶
bpo-37069: Sửa đổi test_coroutines, test_cprofile, test_generators, test_raise, test_ssl và test_yield_from để sử dụng
test.support.catch_unraisable_exception()thay vìtest.support.captured_stderr().bpo-37098: Sửa test_memfd_create trên hạt nhân Linux cũ hơn.
bpo-37081: Thử nghiệm với OpenSSL 1.1.1c
bpo-36829: Thêm
test.support.catch_unraisable_exception(): trình quản lý bối cảnh bắt ngoại lệ không thể xử lý được bằngsys.unraisablehook().bpo-36915: Quy trình kiểm tra lại chính hiện luôn xóa tất cả các thư mục tạm thời của quy trình công nhân ngay cả khi chúng gặp sự cố hoặc nếu chúng bị tắt trên KeyboardInterrupt (CTRL+c).
bpo-36719: "python3 -m test -jN ..." hiện tiếp tục thực hiện các thử nghiệm tiếp theo khi quy trình công nhân gặp sự cố (trạng thái CHILD_ERROR). Trước đó, bộ thử nghiệm đã dừng ngay lập tức. Sử dụng --failfast để dừng ở lỗi đầu tiên.
bpo-36816: Cập nhật Lib/test/selfsigned_pythontestdotnet.pem để khớp với chứng chỉ TLS mới của self-signed.pythontest.net.
bpo-35925: Bỏ qua các bài kiểm tra mạng httplib và nntplib khi chúng không thành công do hệ điều hành hoặc bản phân phối hiện đại có chính sách OpenSSL mặc định là từ chối kết nối đến máy chủ có chứng chỉ yếu.
bpo-36782: Thêm thử nghiệm cho một số chức năng C API trong mô-đun
datetime. Bản vá của Edison Abahurire.bpo-36342: Sửa lỗi test_multiprocessing trong test_venv nếu nền tảng thiếu chức năng sem_open.
xây dựng¶
bpo-36721: Để nhúng Python vào một ứng dụng, tùy chọn
--embedmới phải được chuyển tớipython3-config --libs --embedđể nhận-lpython3.8(liên kết ứng dụng với libpython). Để hỗ trợ cả 3.8 trở lên, hãy thửpython3-config --libs --embedtrước và dự phòng vềpython3-config --libs(không có--embed) nếu lệnh trước đó không thành công.Thêm mô-đun pkg-config
python-3.8-embedđể nhúng Python vào một ứng dụng:pkg-config python-3.8-embed --libsbao gồm-lpython3.8. Để hỗ trợ cả phiên bản 3.8 trở lên, hãy thửpkg-config python-X.Y-embed --libstrước và dự phòng thànhpkg-config python-X.Y --libs(không có--embed) nếu lệnh trước đó không thành công (thay thếX.Ybằng phiên bản Python).Mặt khác,
pkg-config python3.8 --libskhông còn chứa-lpython3.8nữa. Không được liên kết tiện ích mở rộng C với libpython (ngoại trừ trên Android, trường hợp được xử lý bằng tập lệnh); sự thay đổi này có mục đích không tương thích ngược.bpo-36786: "make install" hiện chạy song song.
cửa sổ¶
bpo-36965: bao gồm STATUS_CONTROL_C_EXIT mà không phụ thuộc vào trình biên dịch MSC
bpo-35926: Cập nhật lên OpenSSL 1.1.1b cho Windows.
bpo-29883: Thêm hỗ trợ Windows cho việc truyền tải UDP cho Vòng lặp sự kiện Proactor. Bản vá của Adam Meily.
bpo-33407: Macro
Py_DEPRECATED()đã được triển khai cho MSVC.
macOS¶
bpo-36231: Hỗ trợ xây dựng Python trên macOS mà không cần cài đặt /usr/include. Kể từ macOS 10.14, các tệp tiêu đề hệ thống chỉ khả dụng trong SDK được cung cấp bởi Công cụ dòng lệnh hoặc ứng dụng Xcode.
IDLE¶
bpo-35610: Thay thế .context_use_ps1 dư thừa bằng .prompt_last_line. Sự thay đổi kết thúc này bắt đầu từ bpo-31858.
bpo-37038: Làm cho idlib.run có thể chạy được; thêm điều khoản kiểm tra.
bpo-36958: In bất kỳ đối số nào ngoài None hoặc int được truyền tới SystemExit hoặc sys.exit().
bpo-36807: Khi lưu tệp, hãy gọi os.fsync() để các bit được chuyển thành ví dụ: ổ USB.
bpo-32411: Trong browser.py, loại bỏ việc sắp xếp không liên quan theo số dòng vì từ điển được tạo theo thứ tự số dòng.
Công cụ/Bản trình diễn¶
bpo-37053: Xử lý chính xác các chuỗi như u"bar" trong Tools/parser/unparse.py. Bản vá của Chih-Hsuan Yen.
C API¶
bpo-36379: Khắc phục sự cố khi cố gắng sử dụng tham số modulo khi
__ipow__được triển khai trong C.bpo-37107: Cập nhật
PyObject_CallMethodObjArgs()và_PyObject_CallMethodIdObjArgsđể sử dụng_PyObject_GetMethodnhằm tránh tạo đối tượng phương thức bị ràng buộc trong nhiều trường hợp. Bản vá của Michael J. Sullivan.bpo-36974: Triển khai PEP 590: Vectorcall: giao thức gọi nhanh cho CPython. Đây là giao thức mới để tối ưu hóa lệnh gọi của các đối tượng có thể gọi tùy chỉnh.
bpo-36763:
Py_Main()hiện trả về mã thoát thay vì gọiPy_Exit(exitcode)khi gọiPyErr_Print()nếu loại ngoại lệ hiện tại làSystemExit.bpo-36922: Thêm cờ loại mới
Py_TPFLAGS_METHOD_DESCRIPTORcho các đối tượng hoạt động giống như các phương thức không liên kết. Đây là những đối tượng hỗ trợ tối ưu hóa được cung cấp bởi các opcodeLOAD_METHOD/CALL_METHOD. Xem PEP 590.bpo-36728: Chức năng
PyEval_ReInitThreads()đã bị xóa khỏi C API. Không nên gọi nó một cách rõ ràng: thay vào đó hãy sử dụngPyOS_AfterFork_Child().
Python 3.8.0 alpha 4¶
Release date: 2019-05-06
Bảo mật¶
bpo-36742: Khắc phục việc xử lý sai các ký tự chuẩn hóa trước trong urlsplit().
bpo-30458: Đánh địa chỉ CVE 2019-9740 bằng cách không cho phép các đường dẫn URL có khoảng trắng được nhúng hoặc các ký tự điều khiển đi vào yêu cầu máy khách http cơ bản. Các URL chèn tiêu đề độc hại tiềm ẩn như vậy hiện gây ra ngoại lệ http.client.InvalidURL.
bpo-35755:
shutil.which()hiện sử dụngos.confstr("CS_PATH")nếu có và nếu biến môi trườngPATHkhông được đặt. Xóa thư mục hiện tại khỏiposixpath.defpath. Trên Unix,shutil.which()và mô-đunsubprocesskhông còn tìm kiếm tệp thực thi trong thư mục hiện tại nếu biến môi trườngPATHkhông được đặt.
Cốt lõi và nội dung¶
bpo-36722: Trong bản dựng gỡ lỗi, tính năng nhập hiện cũng tìm kiếm các tiện ích mở rộng C được biên dịch ở chế độ phát hành và các tiện ích mở rộng C được biên dịch trong ABI ổn định.
bpo-32849: Sửa mã khởi tạo Python trên FreeBSD để phát hiện chính xác khi bộ mô tả tệp stdin (fd 0) không hợp lệ.
bpo-36623: Xóa các tiêu đề của trình phân tích cú pháp và các khai báo hàm liên quan thiếu phần triển khai sau khi xóa pgen.
bpo-20180:
dict.pop()hiện nhanh hơn tới 33% nhờ Argument Clinic. Bản vá của Inada Naoki.bpo-36611: Gỡ lỗi bộ cấp phát bộ nhớ: tắt trường serialno theo mặc định khỏi móc gỡ lỗi trên bộ cấp phát bộ nhớ Python để giảm 5% dung lượng bộ nhớ. Kích hoạt
tracemallocđể truy nguyên nơi khối bộ nhớ đã được phân bổ khi ghi lại một lỗi bộ nhớ nghiêm trọng để quyết định vị trí đặt điểm dừng. Biên dịch Python vớiPYMEM_DEBUG_SERIALNOđược xác định để lấy lại trường.bpo-36588: Trên AIX,
sys.platformkhông còn chứa phiên bản chính nữa. Luôn trả về'aix', thay vì'aix3'..'aix7'. Vì các phiên bản Python cũ hơn bao gồm số phiên bản nên bạn nên luôn sử dụngsys.platform.startswith('aix'). Đóng góp bởi M. Felt.bpo-36549: Thay đổi str.capitalize để sử dụng chữ hoa cho ký tự đầu tiên thay vì chữ hoa.
bpo-36540: Triển khai PEP 570 (tham số chỉ vị trí của Python). Bản vá của Pablo Galindo.
bpo-36475:
PyEval_AcquireLock()vàPyEval_AcquireThread()hiện chấm dứt chuỗi hiện tại nếu được gọi trong khi trình thông dịch đang hoàn tất, làm cho chúng nhất quán vớiPyEval_RestoreThread(),Py_END_ALLOW_THREADS()vàPyGILState_Ensure().bpo-36504: Sửa lỗi tràn số nguyên có dấu trong
PyCArrayType_new()của _ctypes.c.bpo-20844: Sửa lỗi chạy script với cookie mã hóa và kết thúc dòng LF có thể bị lỗi trên Windows.
bpo-24214: Đã sửa lỗi hỗ trợ trình xử lý lỗi thay thế trong bộ giải mã gia tăng UTF-8.
bpo-36452: Việc thay đổi các phím
dicttrong quá trình lặp lại chính lệnh,keys(),values()hoặcitems()giờ đây sẽ được phát hiện trong một số trường hợp góc nhất định trong đó các phím bị xóa/thêm để số lượng phím không thay đổi. MộtRuntimeErrorsẽ được nâng lên sau các lần lặplen(dict). Đóng góp bởi Thomas Perl.bpo-36459: Sửa lỗi
PyMem_FREE()có thể xảy ra gấp đôi dotok_nextc()của tokenizer.c.bpo-36433: Đã sửa lỗi thông báo TypeError trong classmethoddescr_call.
bpo-36430: Khắc phục rò rỉ tham chiếu có thể xảy ra trong
itertools.count().bpo-36440: Bao gồm tên nút trong tin nhắn
ParserError, thay vì ID số. Bản vá của A. Skrobov.bpo-36143: Tạo lại
keywordtừ tệp Ngữ pháp và Mã thông báo bằng pgen. Bản vá của Pablo Galindo.bpo-18372: Thêm các lệnh gọi
PyObject_GC_Track()bị thiếu trong mô-đunpickle. Bản vá của Zackery Spytz.
Thư viện¶
bpo-35952: Sửa pythoninfo khi thiếu trình biên dịch.
bpo-28238: Các phương thức
.find*()của xml.etree.ElementTree hiện có thể tìm kiếm các ký tự đại diện như{*}tagvà{ns}*khớp với một thẻ trong bất kỳ không gian tên nào hoặc tất cả các thẻ trong một không gian tên. Bản vá của Stefan Behnel.bpo-26978:
pathlib.path.link_to()hiện đã được triển khai. Nó tạo ra một liên kết cứng trỏ đến một đường dẫn.bpo-1613500:
fileinput.FileInputhiện sử dụng chế độ tệp đầu vào để đặt chính xác chế độ tệp đầu ra (trước đây nó được mã hóa cứng thành'w') khiinplace=Trueđược truyền cho hàm tạo của nó.bpo-36734: Sửa lỗi biên dịch
faulthandler.ctrên HP-UX. Khởi tạostack_t current_stackvề 0 bằngmemset().bpo-13611: Các gói xml.etree.ElementTree đã được hỗ trợ cho việc tuần tự hóa C14N 2.0. Bản vá của Stefan Behnel.
bpo-36669: Thêm hỗ trợ toán tử nhân ma trận bị thiếu vào Weefref.proxy.
bpo-36676: XMLParser() trong xml.etree.ElementTree cung cấp bối cảnh tiền tố không gian tên cho mục tiêu của trình phân tích cú pháp nếu nó xác định các phương thức gọi lại "start_ns()" và/hoặc "end_ns()". Bản vá của Stefan Behnel.
bpo-36673: TreeBuilder và XMLPullParser trong xml.etree.ElementTree đã được hỗ trợ phân tích cú pháp nhận xét và hướng dẫn xử lý. Bản vá của Stefan Behnel.
bpo-36650: Phiên bản C của functools.lru_cache() đang coi các cuộc gọi có từ điển
**kwargstrống là khác biệt với các cuộc gọi không có từ khóa nào cả. Điều này không dẫn đến câu trả lời sai nhưng nó gây ra lỗi bộ đệm không mong muốn.bpo-28552: Sửa
distutils.sysconfignếusys.executablelàNonehoặc một chuỗi trống: sử dụngos.getcwd()để khởi tạoproject_base. Cũng sửa lệnh xây dựng distutils: không sử dụngsys.executablenếu đó làNonehoặc một chuỗi trống.bpo-35755:
shutil.which()vàdistutils.spawn.find_executablehiện sử dụngos.confstr("CS_PATH")nếu có thay vìos.defpath, nếu biến môi trườngPATHkhông được đặt. Hơn nữa, không sử dụngos.confstr("CS_PATH")hayos.defpathnếu biến môi trườngPATHđược đặt thành một chuỗi trống.bpo-25430: cải thiện hiệu suất của
IPNetwork.__contains__()bpo-30485: Biểu thức đường dẫn trong xml.etree.ElementTree giờ đây có thể tránh các tiền tố không gian tên rõ ràng cho thẻ (hoặc ký hiệu "{namespace}tag") bằng cách chuyển một không gian tên mặc định có tiền tố chuỗi trống.
bpo-36613: Sửa lỗi
asynciowait() không xóa lệnh gọi lại nếu có ngoại lệbpo-36598: Sửa lỗi kiểm tra
isinstanceđối với các đối tượng Mock có thông số kỹ thuật khi mã được thực thi trong quá trình theo dõi. Bản vá của Karthikeyan Singaravelan.bpo-18748: Trong chế độ phát triển (
-Xdev) và trong bản dựng gỡ lỗi, hàm hủyio.IOBasehiện ghi lại các ngoại lệclose(). Các ngoại lệ này mặc định ở chế độ im lặng trong chế độ phát hành.bpo-36575: Mô-đun
_lsprofhiện sử dụng bộ hẹn giờ bên trong tương tự nhưtime.perf_counter()theo mặc định.gettimeofday(2)đã được sử dụng trên Unix. Bộ hẹn giờ mới có độ phân giải tốt hơn trên hầu hết các nền tảng Unix và thời gian không còn bị ảnh hưởng bởi các bản cập nhật đồng hồ hệ thống vìperf_counter()là đơn điệu. Bản vá của Inada Naoki.bpo-33461:
json.loadshiện phát raDeprecationWarningkhi tùy chọnencodingđược chỉ định. Bản vá của Matthias Bussonnier.bpo-36559: Mô-đun ngẫu nhiên hiện ưu tiên mô-đun _sha512 nội bộ tinh gọn hơn hashlib cho Seed(version=2) để tối ưu hóa thời gian nhập.
bpo-17561: Đặt backlog=None làm mặc định cho socket.create_server.
bpo-34373: Sửa lỗi xử lý lỗi
time.mktime()trên AIX vào năm trước 1970.bpo-36232: Cải thiện thông báo lỗi khi cố mở cơ sở dữ liệu DBM hiện có nhưng thực tế không tồn tại. Bản vá của Marco Rougeth.
bpo-36546: Thêm số liệu thống kê.quantiles()
bpo-36050:
http.client.HTTPResponse.read()được tối ưu hóa để có phản hồi lớn. Bản vá của Inada Naoki.bpo-36522: Nếu debuglevel được đặt thành >0 trong
http.client, hãy in tất cả giá trị cho các tiêu đề có nhiều giá trị cho cùng một tên tiêu đề. Bản vá của Matt Houglum.bpo-36492: Không dùng nữa việc chuyển các đối số bắt buộc như func làm đối số từ khóa trong các hàm sẽ chấp nhận các đối số từ khóa tùy ý và chuyển chúng sang hàm khác. Giờ đây, các đối số từ khóa tùy ý (ngay cả với tên "self" và "func") có thể được chuyển đến các hàm này nếu các đối số bắt buộc được chuyển dưới dạng đối số vị trí.
bpo-27181: Thêm số liệu thống kê.geometric_mean().
bpo-30427:
os.path.normcase()dựa vàoos.fspath()để kiểm tra loại đối số của nó. Các bước kiểm tra dư thừa đã bị xóa khỏi quá trình triển khaiposixpath.normcase()vàntpath.normcase(). Bản vá của Wolfgang Maier.bpo-36385: Dừng từ chối các octet IPv4 vì có số bát phân không rõ ràng. Các số 0 đứng đầu bị bỏ qua và không còn được coi là chỉ định các octet bát phân nữa. Octet luôn là số thập phân. Octet vẫn không được quá ba chữ số, bao gồm cả số 0 đứng đầu.
bpo-36434: Lỗi trong khi ghi vào tệp ZIP không còn cản trở việc đóng tệp đúng cách.
bpo-36407: Đã sửa lỗi viết thụt lề sai cho phần CDATA trong xml.dom.minidom. Bản vá của Vladimir Surjaninov.
bpo-36326: kiểm tra.getdoc() bây giờ có thể tìm thấy chuỗi tài liệu cho các đối tượng thành viên khi __slots__ là một từ điển.
bpo-36366: Việc gọi
stop()trên một đối tượngunittest.mock.patch()chưa bắt đầu hoặc đã dừng giờ đây sẽ trả vềNonethay vì tăngRuntimeError, làm cho phương thức này trở nên bình thường. Bản vá của Karthikeyan Singaravelan.bpo-36348: Phương thức
imap.IMAP4.logout()không còn bỏ qua các ngoại lệ tùy ý một cách âm thầm nữa.bpo-31904: Thêm hỗ trợ mô-đun thời gian và sửa lỗi test_time cho VxWorks.
bpo-36227: Đã thêm hỗ trợ cho các đối số từ khóa
default_namespacevàxml_declarationtrong các hàmElementTree.tostring()vàElementTree.tostringlist().bpo-36004: Đã thêm các hàm tạo thay thế mới
datetime.date.fromisocalendar()vàdatetime.datetime.fromisocalendar(), xây dựng các đối tượng ngày từ ISO năm, số tuần và ngày trong tuần; đây là nghịch đảo của phương thứcisocalendarcủa mỗi lớp. Bản vá của Paul Ganssle.bpo-35936:
modulefinderkhông còn phụ thuộc vào mô-đunimpkhông còn được dùng nữa và trình khởi tạo chomodulefinder.ModuleFinderhiện có các đối số mặc định không thể thay đổi. Bản vá của Brandt Bucher.bpo-35376:
modulefinderxử lý chính xác các mô-đun có cùng tên với gói xấu. Bản vá của Brandt Bucher.bpo-17396:
modulefinderkhông còn gặp sự cố khi gặp lỗi cú pháp trong lần nhập tiếp theo. Bản vá của Brandt Bucher.bpo-35934: Đã thêm các chức năng tiện lợi
create_server()vàhas_dualstack_ipv6()để tự động hóa các tác vụ cần thiết thường liên quan khi tạo ổ cắm máy chủ, bao gồm cả việc chấp nhận cả kết nối IPv4 và IPv6 trên cùng một ổ cắm. (Được đóng góp bởi Giampaolo Rodola trong bpo-17561.)bpo-23078: Thêm hỗ trợ cho
classmethod()vàstaticmethod()vàounittest.mock.create_autospec(). Bản vá đầu tiên của Felipe Ochoa.bpo-35416: Khắc phục các cảnh báo tài nguyên tiềm ẩn trong tệp distutils. Bản vá của Mickaël Schoentgen.
bpo-25451: Thêm phương thức trong suốt cho
tkinter.PhotoImage. Bản vá của Zackery Spytz.bpo-35082: Không trả lại các thuộc tính đã xóa khi gọi dir trên
unittest.mock.Mock.bpo-34547:
wsgiref.handlers.BaseHandlerhiện xử lý việc chấm dứt kết nối máy khách đột ngột một cách khéo léo. Bản vá của Petter Strandmark.bpo-31658:
xml.sax.parse()hiện hỗ trợ path-like. Bản vá của Mickaël Schoentgen.bpo-34139: Xóa ổ cắm gói dữ liệu unix cũ trước khi liên kết
bpo-33530: Triển khai Happy Eyeballs trong
asyncio.create_connection(). Đã thêm hai đối số mới, happy_eyeballs_delay và interleave, để chỉ định hành vi của Happy Eyeballs.bpo-33291: Không tăng AttributionError khi gọi các hàm kiểm tra isgeneratorfunction, iscoroutinefunction, isasyncgenfunction trên một phương thức được tạo từ một lệnh gọi tùy ý. Thay vào đó, hãy trả về Sai.
bpo-31310: Sửa multiprocessing.semaphore_tracker để nó được các tiến trình con sử dụng lại
bpo-31292: Sửa
setup.py check --restructuredtextcho các tệp chứa lệnhinclude.
Tài liệu¶
bpo-36625: Xóa các nhận xét lỗi thời khỏi chuỗi tài liệu ở dạng phân số.Fraction
bpo-30840: Nhập tài liệu tương đối
bpo-36523: Thêm chuỗi tài liệu cho io.IOBase.writelines().
bpo-36425: Bản dịch tài liệu mới: Simplified Chinese.
bpo-36345: Tránh trùng lặp mã từ
Tools/scripts/serve.pykhi sử dụng lệnhliteralincludecho máy chủ web dựa trên wsgiref cơ bản trong tài liệu củawsgiref. Đóng góp bởi Stéphane Wirtel.bpo-36345: Sử dụng mã của tập lệnh
Tools/scripts/serve.pylàm ví dụ trong tài liệuwsgiref. Đóng góp bởi Stéphane Wirtel.bpo-36157: Đã thêm tài liệu cho PyInterpreterState_Main().
bpo-33043: Cập nhật trang docs.python.org với việc bổ sung liên kết 'Đóng góp cho Tài liệu' ở cuối trang (giữa 'Báo cáo lỗi' và 'Giới thiệu về Tài liệu'). Cập nhật trang 'Tìm thấy lỗi' với các liên kết và thông tin bổ sung trong phần Lỗi tài liệu.
bpo-35581: @typing.type_check_only hiện cho phép sơ khai loại đánh dấu các hàm và lớp không có sẵn trong thời gian chạy.
bpo-33832: Thêm mục chú giải thuật ngữ cho 'phương pháp ma thuật'.
bpo-32913: Đã thêm ví dụ re.Match.groupdict vào biểu thức chính quy HOWTO.
Kiểm tra¶
bpo-36719: regrtest hiện luôn phát hiện các vật thể không thể thu thập được. Trước đây, việc kiểm tra chỉ được kích hoạt bởi
--findleaks. Việc kiểm tra hiện cũng hoạt động với-jN/--multiprocess N.--findleakstrở thành bí danh không được dùng nữa của--fail-env-changed.bpo-36725: Khi sử dụng chế độ đa xử lý (-jN), giờ đây, regrtest sẽ báo cáo lỗi tốt hơn nếu quy trình công nhân không thành công và nó sẽ thoát ngay lập tức khi luồng công việc bị lỗi hoặc khi bị gián đoạn.
bpo-36454: Thay đổi test_time.test_monotonic() để chỉ kiểm tra giới hạn dưới của thời gian đã trôi qua sau lệnh ngủ thay vì giới hạn trên. Điều này ngăn ngừa các lỗi kiểm thử không cần thiết trên các buildbot chậm. Bản vá của Victor Stinner.
bpo-32424: Cải thiện phạm vi kiểm tra cho xml.etree.ElementTree. Bản vá của Gordon P. Hemsley.
bpo-32424: Sửa lỗi đánh máy trong bài kiểm tra test_cycle_gc() cho xml.etree.ElementTree. Bản vá của Gordon P. Hemsley.
bpo-36635: Thêm mô-đun
_testinternalcapimới để kiểm tra C API bên trong.bpo-36629: Sửa lỗi
test_imap4_host_default_value()củatest_imaplib: bắt cả lỗierrno.ENETUNREACH.bpo-36611: Sửa lỗi
test_sys.test_getallocatedblocks()khi bậttracemalloc.bpo-36560: Khắc phục tính năng tìm kiếm rò rỉ tham chiếu trong regrtest: tính toán cả delta (của số tham chiếu, khối bộ nhớ được phân bổ, số lượng bộ mô tả tệp) trong quá trình khởi động, để đảm bảo rằng mọi thứ đều được khởi tạo trước khi bắt đầu tìm kiếm rò rỉ tham chiếu.
bpo-36565: Sửa lỗi tìm kiếm tham chiếu (
python3 -m test -R 3:3) khi Python không có mô-đun abc tích hợp.bpo-31904: Cổng test_resource sang VxWorks: bỏ qua các trường hợp kiểm tra cài đặt RLIMIT_FSIZE và RLIMIT_CPU.
bpo-31904: Fix test_tabnanny trên VxWorks: điều chỉnh thông báo lỗi ENOENT.
bpo-36436: Fix
_testcapi.pymem_buffer_overflow(): xử lý lỗi cấp phát bộ nhớ.bpo-31904: Fix test_utf8_mode trên VxWorks: Python luôn sử dụng UTF-8 trên VxWorks.
bpo-36341: Khắc phục các thử nghiệm có thể thất bại với PermissionError khi gọi bind() trên ổ cắm AF_UNIX.
xây dựng¶
bpo-36747: Loại bỏ mục tiêu Makefile scriptsinstall cũ.
bpo-21536: Trên Unix, tiện ích mở rộng C không còn được liên kết với libpython ngoại trừ trên Android và Cygwin.
Giờ đây, Python được liên kết tĩnh có thể tải tiện ích mở rộng C được xây dựng bằng thư viện dùng chung Python.
Khi Python được nhúng,
libpythonkhông được tải bằngRTLD_LOCALmà thay vào đó làRTLD_GLOBAL. Trước đây, khi sử dụngRTLD_LOCAL, không thể tải các tiện ích mở rộng C không được liên kết vớilibpython, chẳng hạn như các tiện ích mở rộng C của thư viện chuẩn được xây dựng bởi phần*shared*củaModules/Setup.distutils, python-config và python-config.py đã được sửa đổi.
bpo-36707:
./configure --with-pymallockhông còn thêm cờmvào SOABI (sys.implementation.cache_tag). Việc bật hoặc tắt pymalloc không ảnh hưởng đến ABI.bpo-36635: Thay đổi macro
PyAPI_FUNC(type),PyAPI_DATA(type)vàPyMODINIT_FUNCcủapyport.hkhiPy_BUILD_CORE_MODULEđược xác định. Bây giờ, định nghĩaPy_BUILD_CORE_MODULEphải được sử dụng để xây dựng tiện ích mở rộng C dưới dạng thư viện động truy cập vào phần bên trong Python: xuất hàmPyInit_xxx()trong xuất DLL trên Windows.bpo-31904: Không xây dựng tiện ích mở rộng
_crypttrên VxWorks.bpo-36618: Thêm
-fmax-type-align=8vào CFLAGS khi phát hiện trình biên dịch clang. Bộ cấp phát bộ nhớ pymalloc căn chỉnh bộ nhớ trên 8 byte. Trên x86-64, clang yêu cầu căn chỉnh trên 16 byte theo mặc định và do đó sử dụng lệnh MOVAPS có thể dẫn đến lỗi phân đoạn. Hướng dẫn clang rằng Python bị giới hạn căn chỉnh trên 8 byte để sử dụng lệnh MOVUPS thay thế: chậm hơn nhưng không kích hoạt SIGSEGV nếu bộ nhớ không được căn chỉnh trên 16 byte. Đáng buồn thay, cờ phải được thêm vàoCFLAGSchứ không chỉCFLAGS_NODIST, vì tiện ích mở rộng C của bên thứ ba có thể gặp vấn đề tương tự.bpo-36605:
make tagsvàmake TAGShiện cũng phân tích cú phápModules/_io/*.cvàModules/_io/*.h.bpo-36465: Bản phát hành và bản dựng gỡ lỗi hiện tương thích với ABI: việc xác định macro
Py_DEBUGkhông còn ngụ ý macroPy_TRACE_REFS, điều này chỉ đưa ra tính không tương thích ABI. MacroPy_TRACE_REFS, bổ sung chức năngsys.getobjects()và biến môi trườngPYTHONDUMPREFS, có thể được đặt bằng tùy chọn xây dựng./configure --with-trace-refsmới.bpo-36577: setup.py hiện báo cáo lại chính xác các tiêu đề và thư viện OpenSSL bị thiếu.
bpo-36544: Sửa lỗi hồi quy được giới thiệu trong setup.py tái cấu trúc bpo-36146
bpo-36508:
python-config --ldflagskhông còn bao gồm các cờ của biếnLINKFORSHARED. BiếnLINKFORSHAREDchỉ được sử dụng để xây dựng các tệp thực thi.bpo-36503: Xóa tham chiếu đến "aix3" và "aix4". Bản vá của M. Felt.
cửa sổ¶
bpo-35920: Đã thêm platform.win32_edition() và platform.win32_is_iot(). Đã thêm hỗ trợ cho các gói biên dịch chéo cho Windows ARM32. Bỏ qua các bài kiểm tra dự kiến sẽ không hoạt động trên Windows IoT Core ARM32.
bpo-36649: Xóa dấu cách ở cuối khóa đăng ký khi được cài đặt qua Store.
bpo-34144: Đã sửa lỗi activate.bat để cập nhật chính xác bảng mã khi chcp.com trả về dấu chấm ở đầu ra. Bản vá của Lorenz Mende.
bpo-36509: Đã thêm bố cục iot cài sẵn cho các bộ chứa Windows IoT ARM. Bố cục này không chứa các thành phần giao diện người dùng như tkinter hoặc IDLE. Nó cũng không chứa các tệp để hỗ trợ các bản dựng đúng mục tiêu vì các bản dựng Windows ARM32 phải được biên dịch chéo khi sử dụng MSVC.
bpo-35941: Hàm enum_certificates của mô-đun ssl hiện trả về chứng chỉ từ tất cả các kho chứng chỉ có sẵn bên trong cửa sổ trong một truy vấn thay vì chỉ trả về chứng chỉ từ kho chứng chỉ trên toàn hệ thống. Điều này bao gồm các chứng chỉ từ các kho chứng chỉ sau: máy cục bộ, doanh nghiệp máy cục bộ, chính sách nhóm máy cục bộ, người dùng hiện tại, chính sách nhóm người dùng hiện tại, dịch vụ, người dùng. Hàm ssl.enum_crls() được thay đổi theo cách tương tự để trả về tất cả danh sách thu hồi chứng chỉ bên trong kho danh sách thu hồi chứng chỉ windows.
bpo-36441: Sửa lỗi tạo venv khi cài đặt các tệp nhị phân gỡ lỗi.
bpo-36085: Kích hoạt độ phân giải DLL tốt hơn trên Windows bằng cách sử dụng đường dẫn tìm kiếm DLL an toàn và thêm
os.add_dll_directory().bpo-36010: Thêm mô-đun thư viện chuẩn venv vào bản phân phối nuget cho Windows.
bpo-29515: Thêm các hằng số mô-đun ổ cắm sau trên Windows: IPPROTO_AH IPPROTO_CBT IPPROTO_DSTOPTS IPPROTO_EGP IPPROTO_ESP IPPROTO_FRAGMENT IPPROTO_GGP IPPROTO_HOPOPTS IPPROTO_ICLFXBM IPPROTO_ICMPV6 IPPROTO_IDP IPPROTO_IGMP IPPROTO_IGP IPPROTO_IPV4 IPPROTO_IPV6 IPPROTO_L2TP IPPROTO_MAX IPPROTO_ND IPPROTO_NONE IPPROTO_PGM IPPROTO_PIM IPPROTO_PUP IPPROTO_RDP IPPROTO_ROUTING IPPROTO_SCTP IPPROTO_ST
bpo-35947: Đã thêm phiên bản hiện tại của libffi vào cpython-source-deps. Thay đổi _ctypes để sử dụng phiên bản libffi hiện tại trên Windows.
bpo-34060: Báo cáo tải hệ thống khi chạy bộ thử nghiệm trên Windows. Bản vá của Ammar Askar. Dựa trên tác phẩm trước đây của Jeremy Kloth.
bpo-31512: Với Bản cập nhật dành cho người sáng tạo Windows 10, giờ đây người dùng không có trình độ cao có thể tạo liên kết tượng trưng miễn là máy tính đã bật Chế độ nhà phát triển.
macOS¶
IDLE¶
bpo-36429: Sửa lỗi khởi động IDLE bằng pyshell. Thêm bí danh Idlelib.pyshell ở trên cùng; xóa bí danh pyshell ở phía dưới. Xóa lệnh __name__=='__main__' lỗi thời.
Công cụ/Bản trình diễn¶
bpo-14546: Sửa lỗi xử lý đối số trong Tools/scripts/lll.py.
C API¶
bpo-36763: Khắc phục rò rỉ bộ nhớ trong
Py_SetStandardStreamEncoding(): giải phóng bộ nhớ nếu hàm được gọi hai lần.bpo-36641: PyDoc_VAR(name) và PyDoc_STRVAR(name, str) hiện tạo
static const char name[]thay vìstatic char name[]. Bản vá của Inada Naoki.bpo-36389: Thay đổi giá trị của các hằng số bên trong
CLEANBYTE,DEADDYTEvàFORBIDDENBYTEđược sử dụng bởi các hook gỡ lỗi trên bộ cấp phát bộ nhớ Python (hàmPyMem_SetupDebugHooks()). Các mẫu byte0xCB,0xDBvà0xFBđã được thay thế bằng0xCD,0xDDvà0xFDđể sử dụng cùng các giá trị so với CRT debugmalloc()vàfree()của Windows.bpo-36443: Kể từ Python 3.7.0, việc gọi
Py_DecodeLocale()trướcPy_Initialize()sẽ tạo ra mojibake nếu ngôn ngữLC_CTYPEbị ép buộc và/hoặc nếu Chế độ UTF-8 được cấu hình người dùng bật. Chế độ ép buộc LC_CTYPE và UTF-8 hiện bị tắt theo mặc định để khắc phục sự cố mojibake. Bây giờ, chúng phải được bật một cách rõ ràng (chọn tham gia) bằng cách sử dụng_Py_PreInitialize()API mới với_PyPreConfig.bpo-36025: Đã khắc phục sự thay đổi vô tình đối với datetime C API trong đó các đối số cho hàm
PyDate_FromTimestamp()được hiểu không chính xác dưới dạng một dấu thời gian duy nhất thay vì một bộ đối số, khiến mã hiện tại bắt đầu tăngTypeError. Thay đổi không tương thích ngược chỉ xuất hiện trong bản phát hành alpha của Python 3.8. Bản vá của Paul Ganssle.bpo-35810: Sửa đổi
PyObject_Initđể tăng chính xác số lần đếm của các đối tượng Loại được phân bổ heap. Đồng thời khắc phục số lần truy cập của các loại được phân bổ heap đang thực hiện việc này theo cách thủ công hoặc không làm giảm số lần truy cập của loại trong tp_dealloc
Python 3.8.0 alpha 3¶
Release date: 2019-03-25
Bảo mật¶
bpo-36216: Thay đổi urlsplit() để tăng ValueError khi URL chứa các ký tự phân hủy theo mã hóa IDNA (chuẩn hóa NFKC) thành các ký tự ảnh hưởng đến cách phân tích cú pháp URL.
bpo-35121: Không gửi cookie của miền A không có thuộc tính Miền tới miền B khi miền A trùng khớp với hậu tố của miền B trong khi sử dụng cookiejar với chính sách
http.cookiejar.DefaultCookiePolicy. Bản vá của Karthikeyan Singaravelan.
Cốt lõi và nội dung¶
bpo-36421: Sửa lỗi giảm gấp đôi có thể xảy ra trong
PyCArrayType_new()của _ctypes.c.bpo-36412: Khắc phục sự cố có thể xảy ra khi tạo từ điển mới.
bpo-36398: Khắc phục sự cố có thể xảy ra trong
structseq_repr().bpo-36256: Sửa lỗi trong mô-đun phân tích cú pháp khi phân tích trạng thái trong DFA có hai hoặc nhiều cung có nhãn cùng loại. Bản vá của Pablo Galindo.
bpo-36365: repr(structseq) không còn bị giới hạn ở 512 byte nữa.
bpo-36374: Sửa lỗi vô hiệu hóa con trỏ null có thể có trong
merge_consts_recursive(). Bản vá của Zackery Spytz.bpo-36236: Khi khởi tạo Python, thư mục hiện tại không còn được thêm vào trước
sys.pathnếu nó đã bị xóa.bpo-36352: Quá trình khởi tạo Python hiện không thành công do có lỗi, thay vì âm thầm cắt bớt đường dẫn nếu đường dẫn quá dài.
bpo-36301: Việc khởi tạo Python hiện không thành công nếu việc giải mã tệp cấu hình
pybuilddir.txtkhông thành công khi khởi động.bpo-36333: Khắc phục rò rỉ trong _PyRuntimeState_Fini. Đóng góp bởi Stéphane Wirtel.
bpo-36332:
compile()dựng sẵn hiện có thể xử lý các đối tượng AST có chứa biểu thức gán. Bản vá của Pablo Galindo.bpo-36282: Thông báo lỗi được cải thiện do có quá nhiều đối số vị trí trong một số hàm dựng sẵn.
bpo-30040: Lệnh trống mới hiện sử dụng ít bộ nhớ hơn. Nó sử dụng nhiều bộ nhớ hơn lệnh trống được tạo bởi
dict.clear(). Và việc tạo và xóa lệnh trống nhanh hơn khoảng 2 lần. Bản vá của Inada Naoki.bpo-36262: Khắc phục sự cố rò rỉ bộ nhớ không thể xảy ra khi chuyển đổi từ chuỗi sang float trong hàm
_Py_dg_strtod()được sử dụng bởifloat(str),complex(str),pickle.load(),marshal.load(), v.v.bpo-36252: Cập nhật cơ sở dữ liệu Unicode lên phiên bản 12.0.0.
bpo-36218: Khắc phục lỗi phân tách xảy ra khi sắp xếp danh sách các giá trị không đồng nhất. Bản vá do Rémi Lapeyre và Elliot Gorokhovsky đóng góp.
bpo-36188: Dọn dẹp các dấu tích còn sót lại của việc xử lý phương thức không liên kết của Python 2 trong tài liệu và đối tượng phương thức. Bản vá của Martijn Pieters
bpo-36124: Thêm một lệnh mới dành riêng cho trình thông dịch và hiển thị nó trong C-API thông qua PyInterpreterState_GetDict(). Điều này tương đương với PyThreadState_GetDict(). Tuy nhiên, các mô-đun mở rộng nên tiếp tục sử dụng PyModule_GetState() cho trạng thái nội bộ của mỗi phiên dịch viên.
bpo-35975: Thêm cờ
feature_versionvàoast.parse()(được ghi lại) vàcompile()(ẩn) cho phép điều chỉnh trình phân tích cú pháp để hỗ trợ các phiên bản ngữ pháp cũ hơn. Đặc biệt, nếufeature_versionlà 5 hoặc 6, các bản hack cho từ khóaasyncvàawaittừ PEP 492 sẽ được khôi phục. (Đối với 7 hoặc cao hơn, những thứ này được coi là từ khóa vô điều kiện, nhưng chúng vẫn là các mã thông báo đặc biệt chứ không phải mã thông báoNAMEmà trình điều khiển trình phân tích cú pháp nhận ra.)bpo-31904: Sử dụng UTF-8 làm mã hóa hệ thống trên VxWorks.
bpo-36048: Phương thức đặc biệt
__index__()sẽ được sử dụng thay vì__int__()để chuyển đổi ngầm định số Python thành số nguyên C. Việc sử dụng phương pháp__int__()trong chuyển đổi ngầm không được dùng nữa.bpo-35808: Gỡ bỏ pgen và sử dụng phiên bản sửa đổi của pgen2 để tạo trình phân tích cú pháp. Bản vá của Pablo Galindo.
Thư viện¶
bpo-36401: Tài liệu lớp do pydoc tạo hiện có một phần riêng dành cho thuộc tính chỉ đọc.
bpo-36320: Lớp Typing.NamedTuple() đã không dùng thuộc tính _field_types nữa mà thay vào đó là thuộc tính __annotations__ mang cùng thông tin. Ngoài ra, cả hai thuộc tính đều được chuyển đổi từ OrderedDict thành một lệnh thông thường.
bpo-34745: Khắc phục sự cố bộ nhớ ssl
asynciodo tham chiếu vòng tròn gây rabpo-36324: Thêm phương thức vào stats.NormalDist để tính toán phân phối chuẩn tích lũy nghịch đảo.
bpo-36321: Collection.namedtuple() viết sai chính tả tên của một thuộc tính. Để nhất quán với việc gõ.NamedTuple, tên thuộc tính phải là "_field_defaults" thay vì "_fields_defaults". Để tương thích ngược, cả hai cách viết hiện đã được tạo. Phiên bản sai chính tả có thể bị xóa trong tương lai.
bpo-36297: codec "unicode_internal" bị xóa. Nó không được dùng nữa kể từ Python 3.3. Bản vá của Inada Naoki.
bpo-36298: Tăng ModuleNotFoundError trong pyclbr khi không tìm thấy mô-đun. Cảm ơn 'tinh thần' đã báo lỗi.
bpo-36268: Chuyển định dạng mặc định được sử dụng để ghi tars bằng
tarfilesang tiêu chuẩn pax POSIX.1-2001 hiện đại, từ GNU dành riêng cho nhà cung cấp. Đóng góp bởi C.A.M. Gerlach.bpo-36285: Sửa lỗi tràn số nguyên trong mô-đun mảng. Bản vá của Stephan Hohe.
bpo-31904: Thêm hỗ trợ mô-đun _signal cho VxWorks.
bpo-36272:
loggingkhông âm thầm bỏ qua RecursionError nữa. Bản vá được đóng góp bởi Rémi Lapeyre.bpo-36280: Thêm trường loại vào ast.Constant. Đó là 'u' nếu chữ có tiền tố 'u' (tức là chữ unicode kiểu Python 2), nếu không thì không có.
bpo-35931: Lệnh
pdbdebughiện xử lý tất cả các ngoại lệ một cách khéo léo.bpo-36251: Sửa các chuỗi định dạng được sử dụng cho các đại diện stderrprinter và re.Match. Bản vá của Stephan Hohe.
bpo-36235: Sửa
CFLAGStrongcustomize_compiler()củadistutils.sysconfig: khi biến môi trườngCFLAGSđược xác định, không ghi đè biếnCFLAGSbằng biếnOPTnữa. Bản vá đầu tiên được viết bởi David Malcolm.bpo-35807: Cập nhật Ensurepip để cài đặt pip 19.0.3 và setuptools 40.8.0.
bpo-36179: Khắc phục hai lỗi rò rỉ tham chiếu khó xảy ra trong _hashopenssl. Việc rò rỉ chỉ xảy ra trong trường hợp hết bộ nhớ.
bpo-36169: Thêm phương thức chồng chéo() vào stats.NormalDist. Tính hệ số chồng lấp cho hai phân bố chuẩn.
bpo-36103: Kích thước bộ đệm mặc định được
shutil.copyfileobj()sử dụng được thay đổi từ 16 KiB thành 64 KiB trên nền tảng không phải Windows để giảm chi phí cuộc gọi hệ thống. Đóng góp bởi Inada Naoki.bpo-36130: Sửa lỗi
pdbvớiskip=...khi bước vào khung không có__name__toàn cục. Bản vá của Anthony Sottile.bpo-35652: Shutil.copytree(copy_function=...) truyền nhầm DirEntry thay vì một chuỗi đường dẫn.
bpo-35178: Đảm bảo hàm
warnings.formatwarning()tùy chỉnh có thể nhậnlinelàm đối số vị trí. Dựa trên bản vá của Tashrif Billah.bpo-36106: Giải quyết xung đột tên tiềm năng với sinpi() của libm. Bản vá của Dmitrii Pasechnik.
bpo-36091: Xóa tham chiếu đến trình tạo không đồng bộ trong Lib/types. Bản vá của Henry Chen.
bpo-36043:
FileCookieJarhỗ trợ path-like object. Đóng góp của Stéphane Wirtelbpo-35899: Enum đã được sửa để xử lý chính xác các chuỗi trống và chuỗi có ký tự không phải tiếng Latinh (ví dụ: 'α', 'א') mà không bị lỗi. Bản vá gốc do Maxwell đóng góp. Được hỗ trợ bởi Stéphane Wirtel.
bpo-21269: Thêm thuộc tính
argsvàkwargsđể mô phỏng đối tượng cuộc gọi. Đóng góp bởi Kumar Akshay.bpo-30670:
pprint.ppđã được thêm vào các đối tượng in đẹp với các khóa từ điển được sắp xếp theo thứ tự chèn của chúng theo mặc định. Tham số sort_dicts đã được thêm vàopprint.pprint,pprint.pformatvàpprint.PrettyPrinter. Đóng góp bởi Rémi Lapeyre.bpo-35843: Triển khai
__getitem__cho_NamespacePath. Bản vá của Anthony Sottile.bpo-35802: Dọn sạch mã đã kiểm tra sự hiện diện của
os.stat/os.lstat/os.chmodluôn hiện diện. Bản vá của Anthony Sottile.bpo-35715: Cân bằng giá trị trả về của ProcessPoolExecutor _process_worker sau khi không còn cần thiết để giải phóng bộ nhớ
bpo-35493: Sử dụng
multiprocessing.connection.wait()thay vì bỏ phiếu mỗi 0,2 giây để cập nhật nhân viên trongmultiprocessing.Pool. Bản vá của Pablo Galindo.bpo-35661: Lưu trữ lời nhắc venv trong pyvenv.cfg.
bpo-35121: Không đặt cookie cho yêu cầu khi đường dẫn yêu cầu khớp tiền tố với thuộc tính đường dẫn của cookie nhưng không kết thúc bằng "/". Bản vá của Karthikeyan Singaravelan.
bpo-21478: Lệnh gọi hàm con được tạo bằng
unittest.mock.create_autospec()sẽ được truyền tới hàm cha. Bản vá của Karthikeyan Singaravelan.bpo-35198: Sửa lỗi biên dịch tiện ích mở rộng C++ trên AIX
Tài liệu¶
bpo-36329: Khai báo đường dẫn của tệp nhị phân Python để sử dụng
Tools/scripts/serve.pykhi thực thimake -C Doc/ serve. Đóng góp của Stéphane Wirtelbpo-36138: Cải thiện tài liệu về chuyển đổi datetime.timedelta thành vô hướng.
bpo-21314: Một mục mới đã được thêm vào Phần Ngôn ngữ cốt lõi của Lập trình FAQ, giải thích cách sử dụng dấu gạch chéo (/) trong chữ ký của hàm. Bản vá của Lysandros Nikolaou
Kiểm tra¶
bpo-36234: test_posix.PosixUidGidTests: thêm các bài kiểm tra cho loại uid/gid không hợp lệ (str). Bản vá đầu tiên được viết bởi David Malcolm.
bpo-29571: Sửa lỗi
test_re.test_locale_flag(): sử dụnglocale.getpreferredencoding()thay vìlocale.getlocale()để nhận mã hóa miền địa phương. Với một số ngôn ngữ,locale.getlocale()trả về mã hóa sai.bpo-36123: Khắc phục tình trạng cuộc đua trong test_socket.
xây dựng¶
bpo-36356: Khắc phục các rò rỉ dẫn đến lỗi bản dựng khi được định cấu hình bằng trình khử trùng địa chỉ.
bpo-36146: Thêm hằng số
TEST_EXTENSIONSvàosetup.pyđể cho phép không xây dựng các tiện ích mở rộng thử nghiệm như_testcapi.bpo-36146: Fix setup.py trên macOS: chỉ thêm
/usr/include/ffiđể bao gồm các thư mục của _ctypes, không thêm cho tất cả các tiện ích mở rộng.bpo-31904: Cho phép hệ thống xây dựng xây dựng chéo cho VxWorks RTOS.
cửa sổ¶
bpo-36312: Đã sửa lỗi bộ giải mã cho các trang mã sau: 50220, 50221, 50222, 50225, 50227, 50229, 57002 đến 57011, 65000 và 42.
bpo-36264: Không tôn vinh POSIX
HOMEtrongos.path.expandusertrên windows. Bản vá của Anthony Sottile.bpo-24643: Khắc phục xung đột tên do
#define timezone _timezonetrong PC/pyconfig.h.
IDLE¶
bpo-36405: Sử dụng giải nén dict trong Idlelib.
bpo-36396: Xóa thông số fgBg của idlib.config.GetHighlight(). Thông số này chỉ được sử dụng hai lần và đã thay đổi kiểu trả về.
bpo-36176: Sửa màu bật lên tự động hoàn thành và chú giải lệnh gọi của IDLE. Ngăn chặn xung đột với các chủ đề tối của Linux (và làm tối nền chú thích một chút).
bpo-23205: Đối với mô-đun grep, hãy thêm các bài kiểm tra cho tệp tìm kiếm, tái cấu trúc tệp tìm kiếm thành hàm cấp mô-đun và tái cấu trúc tệp tìm kiếm để sử dụng os.walk.
bpo-23216: Thêm chuỗi tài liệu vào mô-đun tìm kiếm IDLE.
bpo-36152: Xóa colorizer.ColorDelegator.close_when_done và đối số tương ứng của .close(). Trong IDLE, cả hai đều luôn là Không hoặc Sai kể từ năm 2007.
bpo-32129: Tránh hiện tượng icon ứng dụng IDLE bị mờ trên macOS với Tk 8.6. Bản vá của Kevin Walzer.
bpo-36096: Tái cấu trúc các biến lớp thành các biến thể hiện trong bộ tô màu.
bpo-30348: Tăng phạm vi kiểm tra của idlib.autocomplete lên 30%. Bản vá của Louie Lu
Công cụ/Bản trình diễn¶
C API¶
Python 3.8.0 alpha 2¶
Release date: 2019-02-25
Cốt lõi và nội dung¶
bpo-36052: Tăng
SyntaxErrorkhi gán giá trị cho__debug__bằng Toán tử gán. Đóng góp bởi Stéphane Wirtel và Pablo Galindo.bpo-36012: Tăng gấp đôi tốc độ ghi biến lớp. Khi một thuộc tính không phải là dunder được cập nhật, sẽ có lệnh gọi cập nhật vị trí không cần thiết.
bpo-35942: Thông báo lỗi phát ra khi trả về các loại không hợp lệ từ
__fspath__trong các giao diện cho phép truyền đối tượngPathLikeđã được cải thiện và giờ đây nó giải thích được nguồn gốc của lỗi.bpo-36016:
gc.get_objectshiện có thể nhận tham số tùy chọn cho biết thế hệ cần lấy đối tượng. Bản vá của Pablo Galindo.bpo-1054041: Khi trình thông dịch chính thoát do ngắt bàn phím chưa được nắm bắt, quy trình hiện sẽ thoát theo cách thích hợp để quy trình mẹ của nó phát hiện ra rằng SIGINT hoặc ^C đã chấm dứt quy trình. Điều này cho phép shell và batch script hiểu rằng người dùng đã yêu cầu chúng dừng lại.
bpo-35992: Sửa lỗi
__class_getitem__()không được gọi trên một lớp bằng siêu dữ liệu tùy chỉnh không thể đăng ký.bpo-35993: Khắc phục sự cố khi sử dụng trình thông dịch phụ. Đóng góp của Stéphane Wirtel
bpo-35991: Sửa lỗi gấp đôi tiềm năng trong Modules/_randommodule.c.
bpo-35961: Khắc phục sự cố trong slice_richcompare(): sử dụng tham chiếu mạnh thay vì tham chiếu bị đánh cắp cho hai bộ dữ liệu nội bộ tạm thời.
bpo-35911: Cho phép tạo đối tượng ô bằng cách thêm phương thức
cell.__new__và hiển thị loạicelltrongLib/types.pydưới tên CellType. Bản vá của Pierre Glaser.bpo-12822: Sử dụng đồng hồ đơn điệu cho
pthread_cond_timedwaitkhi cópthread_condattr_setclockvàCLOCK_MONOTONIC.bpo-15248: Trình biên dịch hiện đưa ra cảnh báo cú pháp trong trường hợp dấu phẩy có thể bị bỏ sót trước bộ dữ liệu hoặc danh sách.
bpo-35886: Việc triển khai PyInterpreterState đã được chuyển vào các tệp tiêu đề nội bộ (được bảo vệ bởi Py_BUILD_CORE).
bpo-31506: Làm rõ các lỗi được báo cáo khi
object.__new__vàobject.__init__nhận được nhiều hơn một đối số. Đóng góp bởi Sanyam Khurana.bpo-35724: Việc xử lý tín hiệu hiện được đảm bảo diễn ra liên quan đến trình thông dịch chính.
bpo-33608: Chúng tôi đã thêm _Py_AddPendingCall() nội bộ mới hoạt động tương ứng với trình thông dịch được cung cấp. Điều này cho phép chúng tôi sử dụng cách triển khai hiện có để yêu cầu một trình thông dịch khác thực hiện công việc mà trình thông dịch hiện tại không thể thực hiện được, chẳng hạn như giải mã một đối tượng mà trình thông dịch kia sở hữu. Py_AddPendingCall() hiện tại chỉ hoạt động liên quan đến trình thông dịch chính.
bpo-33989: Khắc phục sự cố có thể xảy ra trong
list.sort()khi sắp xếp các đối tượng bằngob_type->tp_richcompare == NULL. Bản vá của Zackery Spytz.
Thư viện¶
bpo-35512:
unittest.mock.patch.dict()được sử dụng làm trang trí với mục tiêu chuỗi sẽ giải quyết mục tiêu trong khi gọi hàm thay vì trong quá trình xây dựng trang trí. Bản vá của Karthikeyan Singaravelan.bpo-36018: Thêm số liệu thống kê.NormalDist, một công cụ để tạo và thao tác phân phối chuẩn của biến ngẫu nhiên. Có một lớp tổng hợp xử lý giá trị trung bình và độ lệch chuẩn của dữ liệu đo lường dưới dạng một thực thể duy nhất.
bpo-35904: Đã thêm stats.fmean() dưới dạng biến thể dấu phẩy động, nhanh hơn của hàm Mean() hiện có.
bpo-35918: Đã xóa phương thức
has_keybị hỏng khỏi multiprocessing.managers.SyncManager.dict. Đóng góp bởi Rémi Lapeyre.bpo-18283: Thêm hỗ trợ byte cho
shutil.which().bpo-35960: Khắc phục
dataclasses.field()loại bỏ các đối tượng ánh xạ trống được chuyển dưới dạng siêu dữ liệu.bpo-35500: Viết các tham số cuộc gọi dự kiến và thực tế trên các dòng riêng biệt trong các lỗi xác nhận
unittest.mock.Mock.assert_called_with(). Đóng góp của Susan Su.bpo-35931: Lệnh
pdbdebughiện xử lý các lỗi cú pháp một cách khéo léo.bpo-24209: Trong tập lệnh http.server, dựa vào getaddrinfo để liên kết với địa chỉ ưa thích dựa trên tham số liên kết. Hiện tại, liên kết mặc định hoặc liên kết với tên có thể liên kết với IPv6 hoặc ngăn xếp kép, tùy thuộc vào môi trường.
bpo-35321: Đặt
__spec__.origincủa_frozen_importlibở chế độ đóng băng để phù hợp với hành vi của_frozen_importlib_external. Bản vá của Nina Zakharenko.bpo-35378: Khắc phục sự cố tham chiếu bên trong
multiprocessing.Poolkhiến nhóm vẫn tồn tại nếu bị xóa mà không bị đóng hoặc chấm dứt một cách rõ ràng. Một tham chiếu mạnh mới được thêm vào các vòng lặp nhóm để liên kết vòng đời của nhóm với vòng đời của các vòng lặp của nó để nhóm không bị phá hủy nếu một vòng lặp nhóm vẫn còn tồn tại.bpo-34294: re module, sửa các nhóm chụp sai trong một số trường hợp hiếm gặp.
re.search(),re.findall(),re.sub()và các hàm khác quét qua chuỗi để tìm kết quả khớp, nên đặt lại các nhóm chụp giữa hai lần thử khớp. Bản vá của Ma Lin.bpo-35615:
weakref: Khắc phục lỗi RuntimeError khi sao chép WeakKeyDictionary hoặc WeakValueDictionary, do một số khóa hoặc giá trị biến mất trong khi lặp.bpo-35606: Triển khai
math.prod()dưới dạng hàm tương tự vớisum()trả về tích của giá trị 'bắt đầu' (mặc định: 1) nhân với một số có thể lặp lại. Bản vá của Pablo Galindo.bpo-32417: Thực hiện số học giữa các lớp con
datetime.datetimevàdatetime.timedeltahiện trả về một đối tượng cùng loại với lớp condatetime.datetime. Kết quả là,datetime.datetime.astimezone()và các hàm tạo thay thế nhưdatetime.datetime.now()vàdatetime.fromtimestamp()được gọi với đối sốtzgiờ đây also vẫn giữ lại lớp con của chúng.bpo-35153: Thêm tham số chỉ từ khóa tùy chọn headers vào
xmlrpc.client.ServerProxy,xmlrpc.client.Transportvàxmlrpc.client.SafeTransport. Bản vá của Cédric Krier.bpo-34572: Sửa lỗi triển khai C của Pickle.loads để sử dụng cơ chế khóa của importlib và do đó tránh sử dụng các mô-đun được tải một phần. Bản vá của Tim Burgess.
Tài liệu¶
Kiểm tra¶
bpo-27313: Tránh lỗi ComboboxTest test_ttk_guionly với macOS Cocoa Tk.
bpo-36019: Thêm test.support.TEST_HTTP_URL và thay thế các tham chiếu của http://www.example.com bằng hằng số mới này. Đóng góp bởi Stéphane Wirtel.
bpo-36037: Sửa test_ssl cho cấu hình OpenSSL nghiêm ngặt như chính sách mật mã nghiêm ngặt của RHEL8. Sử dụng phiên bản TLS cũ hơn cho phiên bản TLS tối thiểu của ngữ cảnh SSL máy chủ nếu cần, để kiểm tra phiên bản TLS cũ hơn phiên bản TLS tối thiểu mặc định.
bpo-35798: Đã thêm
test.support.check_syntax_warning().bpo-35505: Làm cho test_imap4_host_default_value trở nên độc lập với việc máy chủ IMAP cục bộ có đang chạy hay không.
bpo-35917: multiprocessing: cung cấp các bài kiểm tra đơn vị cho các lớp SyncManager và SharedMemoryManager + tất cả các loại có thể chia sẻ được cho là được chúng hỗ trợ. (bản vá của Giampaolo Rodola)
bpo-35704: Bỏ qua
test_shutil.test_unpack_archive_xztarđể tránh MemoryError trên AIX 32-bit khi cài đặt MAXDATA nhỏ hơn 0x20000000.Bản vá của Michael Felt (aixtools)
bpo-34720: Khẳng định m_state != NULL để bắt chước các hàm truyền tải GC không xử lý chính xác việc tạo mô-đun khi trạng thái mô-đun chưa được tạo.
cửa sổ¶
bpo-35976: Đã thêm hỗ trợ bản dựng ARM cho các tệp bản dựng Windows trong PCBuild.
bpo-35692:
pathlibkhông còn tăng khi kiểm tra sự tồn tại của tệp và thư mục trên các ổ đĩa chưa sẵn sàngbpo-35872: Sử dụng tệp thực thi Python cơ bản khi gọi venv trong môi trường ảo
bpo-35873: Ngăn chặn các đường dẫn venv được kế thừa bởi các tiến trình con
bpo-35299: Khắc phục sự cố phát hiện sysconfig của thư mục nguồn và xử lý distutils của pyconfig.h trong quá trình lập hồ sơ PGO
IDLE¶
Python 3.8.0 alpha 1¶
Release date: 2019-02-03
Bảo mật¶
bpo-35746: CVE 2019-5010: Sửa lỗi deref con trỏ NULL trong mô-đun ssl. Trình phân tích cú pháp chứng chỉ không xử lý chính xác các điểm phân phối CRL với DP trống hoặc URI. Chứng chỉ độc hại hoặc có lỗi có thể dẫn đến lỗi phân tách. Lỗ hổng (TALOS-2018-0758) được báo cáo bởi Colin Read và Nicolas Edet của Cisco.
bpo-34812: Tùy chọn dòng lệnh
-I(chạy Python ở chế độ biệt lập) hiện cũng được sao chép bởi các mô-đunmultiprocessingvàdistutilskhi sinh ra các tiến trình con. Trước đây, chỉ các tùy chọn-Evà-s(được bật bởi-I) mới được sao chép.bpo-34791: xml.sax và xml.dom.domreg không còn sử dụng các biến môi trường để ghi đè quá trình triển khai trình phân tích cú pháp khi sys.flags.ignore_environment được đặt bởi các đối số -E hoặc -I.
bpo-17239: Trình phân tích cú pháp xml.sax và xml.dom.minidom không còn xử lý các thực thể bên ngoài theo mặc định nữa. Các khai báo DTD và ENTITY bên ngoài không còn tải tệp hoặc tạo kết nối mạng nữa.
bpo-34623: CVE 2018-14647: Mô-đun _elementtree được tăng tốc C hiện khởi tạo muối ngẫu nhiên băm từ _Py_HashSecret thay vì CSPRNG mặc định của libexpat.
bpo-34405: Đã cập nhật lên OpenSSL 1.1.0i cho các bản dựng Windows.
bpo-33871: Đã sửa lỗi gửi một phần tệp trong
os.sendfile()trên macOS. Việc sử dụng đối số trailers có thể khiến việc gửi nhiều byte từ tệp đầu vào hơn mức được chỉ định.bpo-32533: Đã sửa lỗi xử lý lỗi an toàn luồng trong _ssl.
bpo-33136: Tăng cường mô-đun ssl chống lại LibreSSL CVE 2018-8970. X509_VERIFY_PARAM_set1_host() được gọi với tên rõ ràng. Một thử nghiệm mới đảm bảo rằng byte NULL không được phép.
bpo-33001: Khắc phục tối thiểu tình trạng tràn bộ đệm trong os.symlink trên Windows
bpo-32981: Regexes trong difflib và poplib dễ bị quay lui thảm hại. Những biểu thức chính quy này hình thành các vectơ DOS tiềm năng (REDOS). Chúng đã được tái cấu trúc. Điều này giải quyết CVE 2018-1060 và CVE 2018-1061. Bản vá của Jamie Davis.
bpo-28414: Mô-đun ssl hiện cho phép người dùng thực hiện en/giải mã IDN của riêng họ khi sử dụng SNI.
Cốt lõi và nội dung¶
bpo-35877: Đặt dấu ngoặc đơn tùy chọn cho các biểu thức được đặt tên trong câu lệnh while. Bản vá của Karthikeyan Singaravelan.
bpo-35814: Cho phép các biểu thức bên phải giống nhau trong các bài tập có chú thích như trong các bài tập bình thường. Đặc biệt,
x: Tuple[int, int] = 1, 2(không có dấu ngoặc đơn ở bên phải) hiện đã được cho phép.bpo-35766: Thêm tùy chọn phân tích các nhận xét loại PEP 484 trong mô-đun ast. (Tắt theo mặc định.) Đây là sự hợp nhất chức năng chính của nhánh phân nhánh của bên thứ ba, [typed_ast](https://github.com/python/typed_ast).
bpo-35713: Sắp xếp lại quá trình khởi tạo Python để có các ngoại lệ hoạt động và sys.stderr sớm hơn.
bpo-33416: Thêm thông tin vị trí dòng cuối và cột cuối vào các nút AST của Python. Đây là một thay đổi không tương thích ngược ở cấp độ C.
bpo-35720: Đã sửa lỗi rò rỉ bộ nhớ nhỏ trong hàm pymain_parse_cmdline_impl trong Modules/main.c
bpo-35634:
func(**kwargs)bây giờ sẽ phát sinh lỗi khikwargslà ánh xạ chứa nhiều mục có cùng một khóa. Đã xảy ra lỗi khi các đối số từ khóa khác được chuyển trước**kwargskể từ Python 3.6.bpo-35623: Khắc phục sự cố khi sắp xếp danh sách rất dài. Bản vá của Stephan Hohe.
bpo-35214: công cụ xây dựng Bộ lọc bộ nhớ clang đã được thêm vào để xử lý các kết quả dương tính giả từ posix, socket, time, test_io và test_faulthandler.
bpo-35560: Sửa lỗi xác nhận trong
format()trong bản dựng gỡ lỗi cho định dạng dấu phẩy động với định dạng "n", khoảng đệm bằng 0 và chiều rộng nhỏ. Bản phát hành không bị ảnh hưởng. Bản vá của Karthikeyan Singaravelan.bpo-35552: Định dạng các ký tự
%svà%VtrongPyUnicode_FromFormat()và%strongPyBytes_FromFormat()không còn đọc bộ nhớ vượt quá giới hạn nếu precision được chỉ định.bpo-35504: Sửa lỗi segfault và
SystemErrors khi xóa một số thuộc tính nhất định. Bản vá của Zackery Spytz.bpo-35504: Đã sửa lỗi SystemError khi xóa thuộc tính character_writing của OSError.
bpo-35494: Cải thiện thông báo lỗi cú pháp cho dấu ngoặc đơn không cân bằng trong chuỗi f.
bpo-35444: Đã sửa lỗi xử lý lỗi trong các phương pháp tẩy khi không tra cứu được "getattr" dựng sẵn. Tăng tốc độ lặp đi lặp lại.
bpo-35436: Khắc phục nhiều sự cố khác nhau khi xử lý lỗi cấp phát bộ nhớ. Bản vá của Zackery Spytz.
bpo-35423: Tách bộ kích hoạt xử lý tín hiệu trong vòng eval khỏi máy "cuộc gọi đang chờ xử lý". Không có thay đổi về ngữ nghĩa và sự khác biệt về hiệu suất là không đáng kể.
bpo-35357: Tên thuộc tính nội bộ của unittest.mock._Call và unittest.mock.MagicProxy (tên, cha mẹ & from_kall) hiện có tiền tố _mock_ để tránh xung đột với các thuộc tính đối tượng được sử dụng rộng rãi. Đã sửa lỗi đánh máy nhỏ trong tên hàm kiểm tra.
bpo-35372: Đã sửa lỗi bộ giải mã trang mã cho đầu vào dài hơn 2 GiB chứa byte không thể giải mã được.
bpo-35336: Sửa biến môi trường PYTHONCOERCECLOCALE=1: chỉ ép buộc ngôn ngữ C nếu ngôn ngữ LC_CTYPE là "C".
bpo-31241: Các thuộc tính lineno và col_offset của các nút AST để hiểu danh sách, biểu thức trình tạo và bộ dữ liệu hiện được trỏ đến dấu ngoặc đơn mở hoặc dấu ngoặc vuông. Đối với các bộ không có dấu ngoặc đơn, chúng trỏ đến vị trí của mục đầu tiên.
bpo-33954: Dành cho các phương thức
str.format(),float.__format__()vàcomplex.__format__()cho dấu thập phân không phải ASCII khi sử dụng bộ định dạng "n".bpo-35269: Khắc phục lỗi phân đoạn có thể xảy ra liên quan đến coroutine mới được tạo. Bản vá của Zackery Spytz.
bpo-35224: Triển khai PEP 572 (biểu thức gán). Bản vá của Emily Morehouse.
bpo-32492: Tăng tốc độ truy cập thuộc tính
namedtuple()lên 1,6 lần bằng cách sử dụng đường dẫn nhanh C cho bộ mô tả tên. Bản vá của Pablo Galindo.bpo-35214: Đã sửa lỗi truy cập bộ nhớ ngoài giới hạn khi phân tích cú pháp chuỗi thoát unicode bị cắt ngắn ở cuối chuỗi, chẳng hạn như
'\N'. Nó sẽ đọc một byte sau khi kết thúc cấp phát bộ nhớ.bpo-35214: Trình thông dịch và mô-đun mở rộng đã được thêm chú thích để chúng hoạt động bình thường trong Bộ lọc bộ nhớ của clang. Cờ cấu hình mới --with-memory-sanitizer đã được thêm vào để giúp việc xây dựng thử nghiệm thuộc loại này dễ thực hiện hơn.
bpo-35193: Khắc phục một lỗi trong trình tối ưu hóa lỗ nhìn trộm mã byte, nơi nó có thể đọc các byte vượt quá giới hạn cuối của một mảng khi xóa mã không thể truy cập được. Lỗi này đã xuất hiện trong mọi bản phát hành Python 3.6 và 3.7 cho đến nay.
bpo-35169: Cải thiện thông báo lỗi cho các bài tập bị cấm.
bpo-34022: Khắc phục việc xử lý các tệp mã byte dựa trên hàm băm trong
zipimport. Bản vá của Elvis Pranskevichus.bpo-28401: Các bản dựng gỡ lỗi sẽ không còn cố gắng nhập các mô-đun mở rộng được xây dựng cho ABI vì ngay từ đầu chúng chưa bao giờ tương thích. Bản vá của Stefano Rivera.
bpo-29341: Làm rõ trong chuỗi tài liệu của phương thức
osrằng các đối tượng giống đường dẫn cũng được chấp nhận làm tham số đầu vào.bpo-35050:
socket: Sửa từng lỗi một trong việc kiểm tra độ dài tên và loạiAF_ALG.bpo-29743: Tăng
ValueErrorthay vìOverflowErrortrong trường hợp_length_âm trong lớp conctypes.Array. Đồng thời tăngTypeErrorthay vìAttributeErrorđối với_length_không nguyên. Bản vá gốc của Oren Milman.bpo-16806: Sửa
linenovàcol_offsetcho mã thông báo chuỗi nhiều dòng.bpo-35029:
SyntaxWarningđược nêu ra như một ngoại lệ tại thời điểm tạo mã giờ đây sẽ được thay thế bằngSyntaxErrorđể báo cáo lỗi tốt hơn.bpo-34983: Hiển thị
symtable.Symbol.is_nonlocal()trong mô-đun symtable. Bản vá của Pablo Galindo.bpo-34974: hàm tạo
bytesvàbytearraykhông còn chuyển đổi các ngoại lệ không mong muốn (ví dụ:MemoryErrorvàKeyboardInterrupt) thànhTypeError.bpo-34939: Cho phép tên chú thích trong không gian tên mô-đun được khai báo chung trước khi chú thích diễn ra. Bản vá của Pablo Galindo.
bpo-34973: Đã khắc phục sự cố trong
bytes()khi đối sốlistbị thay đổi trong khi lặp lại.bpo-34876: Các thuộc tính lineno và col_offset của AST dành cho chức năng và lớp được trang trí hiện tham chiếu đến vị trí của
def,async defvàclasstương ứng thay vì vị trí của trang trí đầu tiên. Điều này dẫn đến báo cáo đường chính xác hơn trong quá trình theo dõi. Đây là trường hợp duy nhất khi vị trí của nút AST con có thể đứng trước vị trí của nút AST cha.bpo-34879: Sửa lỗi vô hiệu hóa con trỏ null có thể có trong bytesobject.c. Bản vá của Zackery Spytz.
bpo-34784: Khắc phục việc triển khai PyStructSequence_NewType để tạo các StructSequences được phân bổ vùng heap.
bpo-32912: Một
SyntaxWarninghiện được phát ra thay vìDeprecationWarningcho các chuỗi thoát không hợp lệ trong chuỗi và byte bằng chữ.bpo-34854: Đã khắc phục sự cố khi biên dịch chú thích chuỗi chứa lambda với đối số chỉ từ khóa không có giá trị mặc định.
bpo-34850: Trình biên dịch hiện tạo ra
SyntaxWarningkhi kiểm tra danh tính (isvàis not) được sử dụng với một số loại chữ nhất định (ví dụ: chuỗi, int). Những thứ này thường có thể hoạt động một cách tình cờ trong CPython, nhưng không được đảm bảo bởi thông số ngôn ngữ. Cảnh báo khuyên người dùng nên sử dụng các bài kiểm tra đẳng thức (==và!=) để thay thế.bpo-34824: Sửa lỗi vô hiệu hóa con trỏ null trong Mô-đun/_ssl.c. Bản vá của Zackery Spytz.
bpo-30156: Hàm C
property_descr_get()sử dụng bộ dữ liệu "được lưu trong bộ nhớ đệm" để tối ưu hóa các lệnh gọi hàm. Nhưng bộ dữ liệu này có thể được phát hiện trong chế độ gỡ lỗi vớisys.getobjects(). Loại bỏ tính năng tối ưu hóa, nó không thực sự có giá trị và nó gây ra 3 sự cố khác nhau vào năm ngoái.bpo-34762: Sửa ngữ cảnh C API để sử dụng các loại con trỏ PyObject*.
bpo-34751: Hàm băm cho các bộ dữ liệu hiện dựa trên xxHash, mang lại kết quả xung đột tốt hơn trên các trường hợp bệnh lý (trước đây). Ngoài ra, trên hệ thống 64-bit, nó cải thiện việc băm tuple nói chung. Bản vá của Jeroen Demeyer với sự đóng góp đáng kể của Tim Peters.
bpo-34735: Sửa lỗi rò rỉ bộ nhớ trong Modules/timemodule.c. Bản vá của Zackery Spytz.
bpo-34683: Đã khắc phục lỗi trong đó một số lỗi SyntaxError trỏ đến các vị trí khác nhau.
bpo-34651: Chỉ cho phép trình thông dịch chính phân nhánh. Việc này giúp tránh khả năng ảnh hưởng đến trình thông dịch chính, điều này rất quan trọng đối với hoạt động của thời gian chạy.
bpo-34653: Xóa chức năng không sử dụng PyParser_SimpleParseStringFilename.
bpo-32236: Cảnh báo rằng bộ đệm dòng không được hỗ trợ nếu
open()được gọi với chế độ nhị phân vàbuffering=1.bpo-34641: Hạn chế hơn nữa cú pháp phía bên trái của đối số từ khóa trong lệnh gọi hàm. Đặc biệt,
f((keyword)=arg)hiện không được phép.bpo-34637: Hiển thị đối số start thành sum() dưới dạng đối số từ khóa.
bpo-1621: Không giả định hành vi tràn số nguyên có dấu (hành vi C không xác định) khi thực hiện thay đổi kích thước bảng băm đã đặt.
bpo-34588: Khắc phục từng lỗi một trong tính năng cắt bớt cuộc gọi đệ quy của định dạng truy nguyên.
bpo-34485: Trên Windows, LC_CTYPE hiện được đặt thành ngôn ngữ ưa thích của người dùng khi khởi động. Trước đây, ngôn ngữ LC_CTYPE là "C" khi khởi động, nhưng đã thay đổi khi gọi setlocale(LC_CTYPE, "") hoặc setlocale(LC_ALL, "").
bpo-34485: Các luồng tiêu chuẩn như sys.stdout hiện sử dụng trình xử lý lỗi "surrogateescape", thay vì "strict", trên ngôn ngữ POSIX (khi ngôn ngữ C không bị ép buộc và Chế độ UTF-8 bị tắt).
bpo-34485: Sửa trình xử lý lỗi của các luồng tiêu chuẩn như sys.stdout: PYTHONIOENCODING="" hiện bị bỏ qua thay vì đặt trình xử lý lỗi thành "nghiêm ngặt".
bpo-34485: Python hiện lấy mã hóa ngôn ngữ bằng mã C để khởi tạo mã hóa các luồng tiêu chuẩn như sys.stdout. Hơn nữa, mã hóa hiện được khởi tạo thành tên codec Python để có được tên mã hóa chuẩn hóa và để đảm bảo rằng codec được tải. Theo mặc định, thay đổi này sẽ tránh nhập các mô-đun _bootlocale và _locale khi khởi động.
bpo-34527: Trên FreeBSD, Py_DecodeLocale() và Py_EncodeLocale() hiện cũng buộc mã hóa ASCII nếu ngôn ngữ LC_CTYPE là "POSIX", không chỉ nếu ngôn ngữ LC_CTYPE là "C".
bpo-34527: Chế độ UTF-8 hiện cũng được bật bởi ngôn ngữ "POSIX", không chỉ bởi ngôn ngữ "C".
bpo-34403: Trên HP-UX với ngôn ngữ C hoặc POSIX, sys.getfilesystemencoding() hiện trả về "ascii" thay vì "roman8" (khi Chế độ UTF-8 bị tắt và ngôn ngữ C không bị ép buộc).
bpo-34523: Mã hóa hệ thống tệp Python hiện được đọc sớm hơn trong quá trình khởi tạo Python.
bpo-12458: Traceback hiện hiển thị số dòng chính xác cho các biểu thức con trong biểu thức nhiều dòng. Dấu vết hiện hiển thị số dòng của dòng đầu tiên cho biểu thức nhiều dòng thay vì số dòng của biểu thức con cuối cùng.
bpo-34408: Ngăn chặn việc vô hiệu hóa con trỏ null và rò rỉ tài nguyên trong
PyInterpreterState_New().bpo-34400: Khắc phục hành vi không xác định trong phân tích cú pháp.c. Bản vá của Zackery Spytz.
bpo-33073: Đã thêm as_integer_ratio vào int để làm cho chúng tương tác tốt hơn với số float.
bpo-34377: Cập nhật danh sách chặn valgrind để sử dụng
_PyObject_Free/_PyObject_Reallocthay vìPyObject_Free/PyObject_Realloc.bpo-34353: Đã thêm tùy chọn "socket" trong quá trình triển khai Python
stat.filemode()để phù hợp với quá trình triển khai C.bpo-34320: Sửa lỗi
dict(od)không sao chép thứ tự lặp của OrderedDict.bpo-34113: Đã khắc phục sự cố trên các bản dựng gỡ lỗi khi ngăn xếp opcode được điều chỉnh bằng số âm. Bản vá của Constantin Petrisor.
bpo-34100: Trình biên dịch hiện hợp nhất các hằng số trong bộ dữ liệu và bộ cố định theo cách đệ quy. Các thuộc tính mã như
co_namescũng được hợp nhất.bpo-34151: Hiệu suất của các thao tác nối, lặp lại và cắt danh sách được cải thiện một chút. Bản vá của Serge Fedoseev.
bpo-34170: -X dev: hiện có thể ghi đè bộ cấp phát bộ nhớ bằng PYTHONMALLOC ngay cả khi chế độ nhà phát triển được bật.
bpo-33237: Thông báo
AttributeErrorđược cải thiện cho mô-đun được khởi tạo một phần.bpo-34149: Sửa các hàm tối thiểu và tối đa để có hành vi mặc định khi khóa là Không.
bpo-34125: Cấu hình các phương thức tích hợp không liên kết hiện hoạt động khi
**kwargsđược cung cấp.bpo-34141: Các loại nguyên tử tẩy được tối ưu hóa (None, bool, int, float, byte, str).
bpo-34126: Khắc phục sự cố khi lập hồ sơ một số lệnh gọi không hợp lệ của các phương thức không liên kết. Bản vá của Jeroen Demeyer.
bpo-24618: Đã sửa lỗi đọc bộ nhớ không hợp lệ khi tạo đối tượng mã có bộ tên biến quá nhỏ hoặc số lượng đối số quá lớn.
bpo-34068: Trong
io.IOBase.close(), đảm bảo rằng thuộc tínhclosedkhông được đặt ngoại lệ trực tiếp. Bản vá của Zackery Spytz và Serhiy Storchaka.bpo-34087: Sửa lỗi tràn bộ đệm trong khi chuyển đổi unicode sang giá trị số.
bpo-34080: Đã sửa lỗi rò rỉ bộ nhớ trong trình biên dịch khi nó phát sinh một số lỗi không phổ biến trong quá trình mã hóa.
bpo-34066: Vô hiệu hóa sự gián đoạn bằng Ctrl-C giữa việc gọi
open()và nhập khối with trongwith open().bpo-34042: Sửa dict.copy() để duy trì tổng số lần hoàn tiền chính xác (như được báo cáo bởi sys.gettotalrefcount()).
bpo-33418: Khắc phục khả năng rò rỉ bộ nhớ trong đối tượng hàm khi tạo chu trình tham chiếu.
bpo-33985: Triển khai thuộc tính contextvars.ContextVar.name.
bpo-33956: Cập nhật bản sao thư viện Expat được cung cấp lên phiên bản 2.2.5.
bpo-24596: Giải mã đối tượng mô-đun trong
PyRun_SimpleFileExFlags()trước khi gọiPyErr_Print(). Bản vá của Zackery Spytz.bpo-33451: Đóng các tệp pyc được thực thi trực tiếp trước khi gọi
PyEval_EvalCode().bpo-1617161: Hàm băm của các phiên bản
BuiltinMethodType(phương thức của các lớp tích hợp) hiện phụ thuộc vào hàm băm của danh tính __self__ thay vì giá trị của nó. Hàm băm và đẳng thức của các phiên bảnModuleTypevàMethodWrapperType(phương thức của các lớp do người dùng định nghĩa và một số phương thức của các lớp tích hợp nhưstr.__add__) hiện phụ thuộc vào hàm băm và đẳng thức nhận dạng của __self__ thay vì giá trị của nó. Các phiên bảnMethodWrapperTypekhông còn hỗ trợ đặt hàng nữa.bpo-33824: Khắc phục "LC_ALL=C python3.7 -V": đặt lại đúng trình phân tích cú pháp dòng lệnh khi mã hóa thay đổi sau khi đọc cấu hình Python.
bpo-33803: Khắc phục sự cố trong hamt.c do bật tính năng theo dõi GC cho một đối tượng chưa đặt tất cả các trường của nó thành NULL.
bpo-33738: Bảy điểm không tương thích về macro với API giới hạn đã được sửa và các macro
PyIter_Check(),PyIndex_Check()vàPyExceptionClass_Name()đã được thêm làm chức năng. Một tập lệnh để kiểm tra macro tự động đã được thêm vào.bpo-33786: Sửa các trình tạo không đồng bộ để xử lý GeneratorExit trong athrow() một cách chính xác
bpo-30167:
PyRun_SimpleFileExFlagsloại bỏ__cached__khỏi mô-đun ngoài__file__.bpo-33706: Khắc phục sự cố khi khởi tạo Python khi phân tích cú pháp các tùy chọn dòng lệnh. Cảm ơn Christoph Gohlke về báo cáo lỗi và cách khắc phục!
bpo-33597: Giảm kích thước
PyGC_Headtừ 3 từ xuống còn 2 từ.bpo-30654: Đã sửa lỗi đặt lại trình xử lý SIGINT thành SIG_DFL khi tắt trình thông dịch ngay cả khi đã có trình xử lý tùy chỉnh được đặt trước đó. Bản vá của Philipp Kerling.
bpo-33622: Đã sửa lỗi rò rỉ khi trình thu gom rác không thêm được đối tượng bằng phương thức
__del__hoặc được nó tham chiếu vào danh sáchgc.garbage.PyGC_Collect()bây giờ có thể được gọi khi một ngoại lệ được đặt và duy trì nó.bpo-33462: Làm cho chế độ xem chính tả và chính tả có thể đảo ngược. Bản vá của Rémi Lapeyre.
bpo-23722:
RuntimeErrorhiện được nâng lên khi siêu dữ liệu tùy chỉnh không cung cấp mục nhập__classcell__trong không gian tên được chuyển tớitype.__new__. MộtDeprecationWarningđược phát ra trong Python 3.6--3.7.bpo-33499: Thêm biến môi trường
PYTHONPYCACHEPREFIXvà tùy chọn dòng lệnh-Xpycache_prefixđể đặt thư mục gốc thay thế để ghi các tệp bộ nhớ đệm mã byte của mô-đun.bpo-25711: Mô-đun
zipimportđã được viết lại bằng Python thuần túy.bpo-33509: Sửa tham số module_globals của cảnh báo.warn_explicit(): không gặp sự cố nếu module_globals không phải là lệnh.
bpo-31849: Sửa cảnh báo so sánh có chữ ký/không dấu trong pyhash.c.
bpo-33475: Đã sửa các lỗi khác trong việc chuyển đổi chú thích thành chuỗi và dấu ngoặc đơn được tối ưu hóa trong biểu diễn chuỗi.
bpo-20104: Đã thêm hỗ trợ cho các tham số
setpgroup,resetids,setsigmask,setsigdefvàschedulercủaposix_spawn. Bản vá của Pablo Galindo.bpo-33391: Sửa lỗi rò rỉ trong set_symetic_difference().
bpo-33363: Đưa ra Lỗi Cú pháp cho các câu lệnh
async withvàasync forbên ngoài các hàm không đồng bộ.bpo-28055: Sửa các truy cập chưa được căn chỉnh trong siphash24(). Bản vá của Rolf Eike Beer.
bpo-33128: Sửa lỗi khiến PathFinder xuất hiện hai lần trên sys.meta_path. Bản vá của Pablo Galindo Salgado.
bpo-33331: Các mô-đun được nhập sau cùng hiện bị xóa trước khi tắt trình thông dịch.
bpo-33312: Đã sửa lỗi cảnh báo clang ubsan (khử trùng hành vi không xác định) trong dictobject.c bằng cách điều chỉnh cách khai báo cấu trúc khóa chia sẻ struct _dictkeysobject bên trong.
bpo-33305: Cải thiện thông báo lỗi cú pháp cho các chữ số không hợp lệ.
bpo-33306: Cải thiện thông báo lỗi cú pháp cho dấu ngoặc đơn không cân bằng.
bpo-33234: Trình tạo danh sách sẽ định cỡ trước và không phân bổ quá mức khi biết độ dài đầu vào.
bpo-33270: Đặt tên cho tất cả các đối tượng mã ẩn danh. Bản vá của Zackery Spytz.
bpo-30455: Mã C và Python cũng như tài liệu liên quan đến mã thông báo hiện được tạo từ một tệp nguồn duy nhất
Grammar/Tokens.bpo-33176: Thêm phương thức
toreadonly()vào chế độ xem bộ nhớ.bpo-33231: Khắc phục khả năng rò rỉ bộ nhớ trong
normalizestring().bpo-33205: Thay đổi chức năng tăng trưởng dict từ
round_up_to_power_2(used*2+hashtable_size/2)thànhround_up_to_power_2(used*3). Trước đây, dict chỉ được thu nhỏ khiused == 0. Bây giờ dict có nhiều cơ hội được thu nhỏ hơn.bpo-29922: Cải thiện thông báo lỗi trong 'không đồng bộ với' khi
__aenter__()hoặc__aexit__()trả về đối tượng không thể chờ đợi.bpo-33199: Sửa lỗi
ma_version_tagtrong quá trình triển khai dict chưa được khởi tạo khi sao chép từ dict chia sẻ khóa.bpo-33053: Khi sử dụng khóa chuyển -m, sys.path[0] hiện được mở rộng rõ ràng dưới dạng thư mục làm việc starting, thay vì để lại dưới dạng đường dẫn trống (cho phép nhập từ thư mục làm việc hiện tại tại thời điểm nhập)
bpo-33138: Đã thay đổi thông báo lỗi tiêu chuẩn cho các loại không thể chọn và không thể sao chép. Bây giờ nó báo "không thể muối" thay vì "không thể muối" hoặc "không thể tuần tự hóa".
bpo-33018: Cải thiện tính nhất quán của các lỗi do
issubclass()đưa ra khi được gọi với lớp cơ sở không phải lớp và lớp cơ sở trừu tượng tương ứng làm đối số thứ nhất và thứ hai. Bản vá của Josh Bronson.bpo-33083:
math.factorialkhông còn chấp nhận các đối số không giống int. Bản vá của Pablo Galindo.bpo-33041: Đã thêm opcode
END_ASYNC_FORmới và khắc phục các sự cố sau:Việc đặt
StopAsyncIterationchung không còn phá vỡ các vòng lặpasync fornữa.Việc nhảy vào vòng lặp
async forhiện đã bị tắt.Việc nhảy ra khỏi vòng lặp
async forkhông còn làm hỏng ngăn xếp nữa.
bpo-25750: Khắc phục sự cố Python hiếm gặp do tính toán lại sai trong
type_getattro()nếu bộ mô tả tự xóa khỏi lớp. Bản vá của Jeroen Demeyer.bpo-33041: Đã sửa lỗi tạo mã byte cho "async for" với mục tiêu phức tạp. Giờ đây, StopAsyncIteration được nêu ra khi gán hoặc giải nén sẽ được truyền đi thay vì dừng quá trình lặp lại.
bpo-33026: Đã sửa lỗi nhảy ra khỏi khối "with" bằng cách đặt f_lineno.
bpo-33005: Khắc phục sự cố trên fork khi sử dụng bộ cấp phát bộ nhớ tùy chỉnh (ví dụ: sử dụng PYTHONMALLOC env var). _PyGILState_Reinit() và _PyInterpreterState_Enable() hiện sử dụng bộ cấp phát bộ nhớ RAW mặc định để phân bổ một mutex thông dịch mới trên fork.
bpo-32911: Do các vấn đề tương thích không mong muốn được phát hiện trong quá trình thử nghiệm beta tiếp theo, bpo-29463 đã được hoàn nguyên. Trường
docstringbị xóa khỏi các nút ast Mô-đun, ClassDef, FunctionDef và AsyncFunctionDef đã được thêm vào trong 3.7a1. Biểu thức chuỗi tài liệu được khôi phục dưới dạng câu lệnh đầu tiên trong nội dung của chúng. Dựa trên bản vá của Inada Naoki.bpo-17288: Ngăn chặn các bước nhảy từ các sự kiện theo dõi 'trở lại' và 'ngoại lệ'.
bpo-32946: Nhập tên từ mô-đun đã nhập bằng "from ... import ..." hiện nhanh hơn 30% nếu mô-đun không phải là một gói.
bpo-32932: Làm cho thông báo lỗi rõ ràng hơn khi có các đối tượng không phải str trong
__all__.bpo-32925: Tối ưu hóa việc lặp lại và kiểm tra chứa các danh sách hằng bao gồm các hằng số:
x in [a, b]vàfor x in [a, b]. Trường hợp của tất cả các phần tử không đổi đã được tối ưu hóa.bpo-32889: Cập nhật danh sách ngăn chặn Valgrind để giải quyết việc đổi tên
Py_ADDRESS_IN_RANGthànhaddress_in_range.bpo-32836: Không sử dụng các biến tạm thời trong trường hợp hiểu danh sách/dict/set
bpo-31356: Xóa API mới được thêm vào bpo-31356 (trình quản lý bối cảnh gc.ensure_disabled()).
bpo-32305: Đối với các gói không gian tên, đảm bảo rằng cả
__file__và__spec__.originđều được đặt thành Không.bpo-32303: Đảm bảo
__spec__.loaderkhớp với__loader__cho các gói không gian tên.bpo-32711: Sửa các thông báo cảnh báo cho Python/ast_unparse.c. Bản vá của Stéphane Wirtel
bpo-32583: Khắc phục sự cố có thể xảy ra trong bộ giải mã Unicode tích hợp do lỗi ghi ngoài giới hạn khi sử dụng trình xử lý lỗi giải mã tùy chỉnh.
bpo-32489: Câu lệnh
continuehiện được cho phép trong mệnh đềfinally.bpo-17611: Đơn giản hóa vòng lặp trình thông dịch bằng cách di chuyển logic hủy xếp chồng các khối vào trình biên dịch. Trình biên dịch hiện đưa ra các hướng dẫn rõ ràng để điều chỉnh ngăn xếp các giá trị và gọi mã dọn dẹp cho
break,continuevàreturn.Đã xóa các mã opcode
BREAK_LOOP,CONTINUE_LOOP,SETUP_LOOPvàSETUP_EXCEPT. Đã thêm các mã hoạt động mớiROT_FOUR,BEGIN_FINALLYvàCALL_FINALLYvàPOP_FINALLY. Đã thay đổi hành vi củaEND_FINALLYvàWITH_CLEANUP_START.bpo-32285: Hàm mới unicodedata.is_normalized, có thể kiểm tra xem một chuỗi có ở dạng chuẩn cụ thể hay không.
bpo-10544: Các biểu thức lợi nhuận hiện không được phép trong các biểu thức hiểu và trình tạo ngoại trừ biểu thức cho lần lặp ngoài cùng.
bpo-32117: Hiện tại, việc giải nén có thể lặp lại được cho phép mà không có dấu ngoặc đơn trong câu lệnh lợi nhuận và trả về, ví dụ:
yield 1, 2, 3, *rest. Cảm ơn David Cuthbert vì sự thay đổi và Jordan Chapman vì những bài kiểm tra bổ sung.bpo-31902: Sửa thuộc tính
col_offsetcho các nút astast.AsyncFor,ast.AsyncFunctionDefvàast.AsyncWith. Trước đâycol_offsetđã trỏ đến từ khóa sauasync.bpo-25862: Khắc phục lỗi xác nhận trong phương thức
tell()củaio.TextIOWrapper. Bản vá của Zackery Spytz.bpo-21983: Khắc phục sự cố trong
ctypes.cast()trong trường hợp đối số kiểu là kiểu dữ liệu có cấu trúc ctypes. Bản vá của Eryk Sun và Oren Milman.bpo-31577: Khắc phục sự cố trong
os.utime()trong trường hợp đối số ns không hợp lệ. Bản vá của Oren Milman.bpo-29832: Xóa các tham chiếu đến 'getsockaddrarg' khỏi các thông báo lỗi ổ cắm khác nhau. Bản vá của Oren Milman.
Thư viện¶
bpo-35845: Thêm tham số 'order' vào Memoryview.tobytes().
bpo-35864: Phương thức _asdict() cho bộ sưu tập.namedtuple hiện trả về một lệnh thông thường thay vì OrderedDict.
bpo-35537: ExitStack hiện được sử dụng nội bộ trong subprocess.Popen để dọn dẹp các phần xử lý tệp ống. Không có hành vi thay đổi trong hoạt động bình thường. Nhưng nếu việc đóng một tay cầm từng gây ra ngoại lệ thì những tay cầm khác giờ đây sẽ bị đóng thay vì bị rò rỉ. (bản vá của Giampaolo Rodola)
bpo-35847: RISC-V cần CTYPES_PASS_BY_REF_HACK. Sửa cấu trúc ctypes test_pass_by_value.
bpo-35813: Mô-đun con bộ nhớ dùng chung được thêm vào đa xử lý để tránh nhu cầu tuần tự hóa giữa các quy trình
bpo-35780: Sửa lỗi lru_cache() phát sinh trong mã đệ quy, mã đăng ký lại hoặc mã đa luồng. Những lỗi này có thể dẫn đến các liên kết mồ côi và bộ nhớ đệm bị mắc kẹt ở trạng thái có ít hơn số lượng liên kết tối đa được chỉ định. Khắc phục việc xử lý kích thước tối đa âm đáng lẽ phải được coi là bằng 0. Sửa lỗi chuyển đổi cờ trạng thái "đầy đủ". Sửa lỗi sắp xếp sai thứ tự các link khi gặp lỗi. Đồng bộ hóa mã C và mã Python thuần túy cho đường dẫn tiết kiệm không gian trong các hàm với một đối số vị trí duy nhất. Trong trường hợp phổ biến này, dung lượng trống của mục nhập bộ đệm lru giảm gần một nửa. Sửa lỗi đếm số lần nhớ cache. Trong trường hợp lỗi, số lần bỏ lỡ không đồng bộ với số lần thực tế mà hàm người dùng cơ bản được gọi.
bpo-35537:
os.posix_spawn()vàos.posix_spawnp()hiện có tham số setsid.bpo-23846:
asyncio.ProactorEventLoophiện bắt và gửi nhật ký lỗi khi ống tự đầy.bpo-34323:
asyncio: Nâng cao nhật kýIocpProactor.close(): đợi 1 giây trước nhật ký đầu tiên, sau đó đăng nhập mỗi giây. Ghi lại số giây kể từ khiclose()được gọi.bpo-35674: Thêm chức năng
os.posix_spawnp()mới. Bản vá của Joannah Nanjekye.bpo-35733:
ast.Constant(boolean)không còn là phiên bản củaast.Numnữa. Bản vá của Anthony Sottile.bpo-35726: QueueHandler.prepare() hiện tạo một bản sao của bản ghi trước khi sửa đổi và xếp nó vào hàng đợi để tránh ảnh hưởng đến các trình xử lý khác trong chuỗi.
bpo-35719: Tăng tốc các hàm
mathđa đối số atan2(), copysign(), phần dư() và hypot() lên 1,3--2,5 lần.bpo-35717: Sửa lỗi ngoại lệ KeyError xảy ra khi sử dụng enum và biên dịch. Bản vá được đóng góp bởi Rémi Lapeyre.
bpo-35699: Đã sửa lỗi phát hiện Visual Studio Build Tools 2017 trong các bản phân phối
bpo-32710: Khắc phục rò rỉ bộ nhớ trong asyncio ProactorEventLoop do lỗi hoạt động chồng chéo.
bpo-35702: Hằng số
time.CLOCK_UPTIME_RAWhiện có sẵn cho macOS 10.12.bpo-32710: Khắc phục rò rỉ bộ nhớ trong asyncio trong ProactorEventLoop khi thao tác chồng chéo
ReadFile()hoặcWSASend()không thành công ngay lập tức: giải phóng bộ đệm bên trong.bpo-35682: Fix
asyncio.ProactorEventLoop.sendfile(): không cố gắng thiết lập kết quả của tương lai nội bộ nếu nó đã được thực hiện.bpo-35283: Thêm cảnh báo không dùng nữa cho phương thức
threading.Thread.isAlive(). Bản vá của Donghee Na.bpo-35664: Cải thiện hiệu suất của operator.itemgetter() thêm 33% với khả năng xử lý đối số được tối ưu hóa và thêm đường dẫn nhanh cho trường hợp chung của một chỉ mục số nguyên không âm duy nhất vào một bộ dữ liệu (là trường hợp sử dụng điển hình trong thư viện tiêu chuẩn).
bpo-35643: Đã sửa lỗi Cảnh báo Cú pháp: chuỗi thoát không hợp lệ trong Mô-đun/_sha3/cleanup.py. Bản vá của Mickaël Schoentgen.
bpo-35619: Cải thiện hỗ trợ bộ mô tả dữ liệu tùy chỉnh trong
help()vàpydoc.bpo-28503: Mô-đun
crypthiện sử dụng nội bộ chức năng thư việncrypt_r()thay vìcrypt()khi khả dụng.bpo-35614: Đã sửa lỗi trợ giúp() trên siêu dữ liệu. Bản vá của Sanyam Khurana.
bpo-35568: Hiển thị
raise(signum)làraise_signalbpo-35588: Các thao tác phân chia sàn và modulo cũng như chức năng
divmod()trên các loạifractions.Fractionnhanh hơn 2--4 lần. Bản vá của Stefan Behnel.bpo-35585: Tăng tốc độ xây dựng enum theo giá trị, ví dụ: http.HTTStatus(200).
bpo-30561: Random.gammavariate(1.0, beta) hiện tính toán kết quả tương tự như Random.expovariate(1.0 / beta). Điều này đồng bộ hóa hai thuật toán và loại bỏ một số đặc điểm riêng trong cách triển khai cũ. Tuy nhiên, nó tạo ra một dòng biến ngẫu nhiên khác biệt so với trước đây.
bpo-35537: Mô-đun
subprocesshiện có thể sử dụng chức năngos.posix_spawn()trong một số trường hợp để có hiệu suất tốt hơn.bpo-35526: Trì hoãn 'trò đùa' của barry_as_FLUFL.mandatory sang Python phiên bản 4.0
bpo-35523: Xóa cách giải quyết gọi lại
ctypes: không còn tạo lệnh gọi lại khi khởi động. Tránh cảnh báo SELinux trênimport ctypesvàimport uuid.bpo-31784:
uuid.uuid1()hiện gọitime.time_ns()thay vìint(time.time() * 1e9).bpo-35513:
TextTestRunnercủaunittest.runnerhiện sử dụngtime.perf_counter()thay vìtime.time()để đo thời gian thực hiện kiểm tra:time.time()có thể quay ngược, trong khitime.perf_counter()là đơn điệu.bpo-35502: Đã sửa lỗi rò rỉ tham chiếu trong
xml.etree.ElementTree.TreeBuildertrong trường hợp việc xây dựng cây chưa hoàn thành (đặc biệt khi xảy ra lỗi trong quá trình phân tích cú pháp XML).bpo-35348: Làm cho việc phân tích cú pháp
platform.architecture()của đầu ra lệnhfiletrở nên đáng tin cậy hơn: thêm tùy chọn-bvào lệnhfileđể bỏ qua tên tệp, buộc sử dụng ngôn ngữ C và tìm kiếm cả mẫu "đối tượng được chia sẻ".bpo-35491:
multiprocessing: ThêmPool.__repr__()và nâng caoBaseProcess.__repr__()(thêm pid và pid gốc) để dễ dàng gỡ lỗi. Các giá trị hằng số trạng thái nhóm hiện là chuỗi thay vì số nguyên, ví dụ: giá trịRUNtrở thành'RUN'thay vì0.bpo-35477:
multiprocessing.Pool.__enter__()hiện không thành công nếu nhóm không chạy:with pool:không thành công nếu được sử dụng nhiều lần.bpo-31446: Sao chép dòng lệnh đã được chuyển tới CreateProcessW vì chức năng này có thể thay đổi nội dung của bộ đệm đầu vào.
bpo-35471: Python 2.4 đã bỏ hỗ trợ MacOS 9. Mô-đun macpath không được dùng nữa trong Python 3.7. Mô-đun hiện đã được gỡ bỏ.
bpo-23057: Bỏ chặn vòng lặp sự kiện Proactor khi nhận được ngắt bàn phím trên Windows
bpo-35052: Sửa xml.dom.minidom cloneNode() trên tài liệu có một thực thể: chuyển các đối số chính xác cho trình xử lý dữ liệu người dùng của một thực thể.
bpo-20239: Cho phép xóa gán lặp lại các thuộc tính
unittest.mock.Mock. Bản vá của Pablo Galindo.bpo-17185: Đặt
__signature__trên mô hình choinspectđể lấy chữ ký. Bản vá của Karthikeyan Singaravelan.bpo-35445: Lỗi bộ nhớ trong quá trình tạo posix.environ không còn bị bỏ qua.
bpo-35415: Xác thực đối số fileno= cho socket.socket().
bpo-35424: hàm hủy
multiprocessing.Poolhiện phát raResourceWarningnếu nhóm vẫn đang chạy.bpo-35330: Khi một phiên bản
Mockđược sử dụng để bọc một đối tượng, nếuside_effectđược sử dụng trong một trong các phương thức mô phỏng của nó, thì đừng gọi cách triển khai ban đầu và trả về kết quả của việc sử dụng hiệu ứng phụ giống như cách thực hiện với return_value.bpo-35346: Bỏ hỗ trợ Mac OS 9 và Rhapsody khỏi mô-đun
platform. Bản phát hành cuối cùng của Rhapsody là vào năm 2000. Bản phát hành cuối cùng của Mac OS 9 là vào năm 2001.bpo-10496:
check_environ()củadistutils.utilshiện bắt đượcKeyErrorkhi gọipwd.getpwuid(): không tạo biến môi trườngHOMEtrong trường hợp này.bpo-10496:
posixpath.expanduser()hiện trả về đầu vào path không thay đổi nếu biến môi trườngHOMEkhông được đặt và người dùng hiện tại không có thư mục chính (nếu mã định danh người dùng hiện tại không tồn tại trong cơ sở dữ liệu mật khẩu). Thay đổi này sẽ sửa mô-đunsitenếu người dùng hiện tại không tồn tại trong cơ sở dữ liệu mật khẩu (nếu người dùng không có thư mục chính).bpo-35389:
platform.libc_ver()hiện sử dụngos.confstr('CS_GNU_LIBC_VERSION')nếu có và tham số executable không được đặt.bpo-35394: Thêm các vị trí trống vào các giao thức trừu tượng asyncio.
bpo-35310: Sửa lỗi trong
select.select(), trong một số trường hợp, các chuỗi mô tả tệp được trả về nguyên trạng sau khi tín hiệu bị gián đoạn, mặc dù các trình mô tả tệp có thể chưa sẵn sàng.select.select()bây giờ sẽ luôn trả về danh sách trống nếu xảy ra thời gian chờ. Bản vá của Oran Avraham.bpo-35380: Kích hoạt TCP_NODELAY trên Windows cho vòng lặp sự kiện asyncio của proactor.
bpo-35341: Thêm phiên bản chung của
collections.OrderedDictvào mô-đuntyping. Bản vá của Ismo Toijala.bpo-35371: Đã khắc phục sự cố có thể xảy ra trong
os.utime()trên Windows khi truyền đối số không chính xác.bpo-35346:
platform.uname()hiện chuyển hướngstderrsangos.devnullkhi chạy các chương trình bên ngoài nhưcmd /c ver.bpo-35066: Trước đây, việc gọi phương thức strftime() trên đối tượng datetime có dấu '%' ở cuối chuỗi định dạng sẽ dẫn đến một ngoại lệ. Tuy nhiên, điều này chỉ xảy ra khi mô-đun datetime C đang được sử dụng; việc triển khai python không khớp với hành vi này. Ngày giờ hiện tuân thủ PEP-399 và sẽ không đưa ra ngoại lệ ở dấu '%' ở cuối.
bpo-35345: Hàm
platform.popenđã bị xóa, nó không được dùng nữa kể từ Python 3.3: thay vào đó hãy sử dụngos.popen().bpo-35344: Trên macOS,
platform.platform()hiện sử dụngplatform.mac_ver(), nếu nó trả về một chuỗi phát hành không trống, để lấy phiên bản macOS thay vì phiên bản Darwin.bpo-35312: Làm cho
lib2to3.pgen2.parse.ParseErrorcó thể muối chua khứ hồi. Bản vá của Anthony Sottile.bpo-35308: Khắc phục sự hồi quy trong
webbrowsertrong đó các trình duyệt mặc định có thể được ưu tiên hơn các trình duyệt trong biến môi trườngBROWSER.bpo-24746: Tránh loại bỏ khoảng trắng ở cuối trong sự khác biệt ưa thích doctest. Bản vá gốc của R. David Murray & Jairo Trad. Tăng cường bởi Sanyam Khurana.
bpo-28604:
locale.localeconv()hiện đặt tạm thời ngôn ngữLC_CTYPEthành ngôn ngữLC_MONETARYnếu hai ngôn ngữ khác nhau và chuỗi tiền tệ không phải là ASCII. Thay đổi tạm thời này ảnh hưởng đến các chủ đề khác.bpo-35277: Cập nhật Ensurepip để cài đặt pip 18.1 và setuptools 40.6.2.
bpo-24209: Thêm hỗ trợ IPv6 khi gọi trực tiếp http.server.
bpo-35226: Kiểm tra đệ quy các đối số khi kiểm tra tính bằng nhau của các đối tượng
unittest.mock.callvà thêm lưu ý rằng không thể theo dõi các tham số được sử dụng để tạo tổ tiên của mô hình trongmock_calls.bpo-29564: Mô-đun cảnh báo hiện đề xuất bật tracemalloc nếu nguồn được chỉ định, mô-đun tracemalloc khả dụng nhưng tracemalloc không theo dõi phân bổ bộ nhớ.
bpo-35189: Sửa đổi hàm fnctl sau để thử lại nếu bị gián đoạn bởi tín hiệu (EINTR): bầy, lockf, fnctl
bpo-30064: Sử dụng add_done_callback() trong sock_* asyncio API để sớm hủy đăng ký trình đọc/ghi khi tính toán.
bpo-35186: Đã xóa nhận xét "được tạo bằng" được thêm khi
setup.py uploadđược sử dụng vớibdist_rpmhoặcbdist_dumb.bpo-35152: Cho phép gửi hơn 2 GB cùng lúc trên kết nối đa xử lý trên các hệ thống không phải Windows.
bpo-35062: Sửa lỗi phân tích cú pháp đối số translate của
io.IncrementalNewlineDecoder.bpo-35065: Xóa
StreamReaderProtocol._untrack_reader. Cuộc gọi tới_untrack_readerhiện được thực hiện quá sớm, khiến giao thức quên đầu đọc trước khiconnection_lostcó thể chạy và cung cấp EOF cho đầu đọc.bpo-34160: ElementTree và minidom hiện giữ nguyên thứ tự thuộc tính do người dùng chỉ định.
bpo-35079: Cải thiện tài liệu difflib.SequenceManager.get_matching_blocks bằng cách thêm 'không chồng chéo' và thay đổi '!=' thành '<'.
bpo-33710: Các hàm và phương thức
l*gettext()không được dùng nữa trong mô-đungettext. Chúng trả về các byte được mã hóa thay vì chuỗi Unicode và là các tạo phẩm từ Python 2 lần. Ngoài ra, các hàm và phương thức liên quan đến việc thiết lập bộ ký tự cho các hàm và phương thứcl*gettext()cũng không được dùng nữa.bpo-35017:
socketserver.BaseServer.serve_forever()hiện thoát ngay lập tức nếu phương thứcshutdown()của nó được gọi trong khi nó đang thăm dò các sự kiện mới.bpo-35024:
importlibkhông còn ghi nhật kýwrote <bytecode path>một cách dư thừa sau khi(created|could not create) <bytecode path>đã được ghi lại. Bản vá của Quentin Agren.bpo-35047:
unittest.mockhiện bao gồm các lệnh gọi mô phỏng trong các tin nhắn ngoại lệ nếuassert_not_called,assert_called_oncehoặcassert_called_once_withkhông thành công. Bản vá của Petter Strandmark.bpo-31047: Khắc phục hồi quy
ntpath.abspathkhi nó không xóa dấu phân cách ở cuối trên Windows. Bản vá của Tim Graham.bpo-35053: tracemalloc hiện cố gắng cập nhật truy nguyên khi một đối tượng được sử dụng lại từ "danh sách miễn phí" (ví dụ: tối ưu hóa để tạo đối tượng nhanh hơn, được sử dụng bởi loại danh sách dựng sẵn).
bpo-31553: Thêm tùy chọn --json-lines vào json.tool. Bản vá của hongweipeng.
bpo-34794: Đã sửa lỗi rò rỉ trong Tkinter khi chuyển trình bao bọc Python xung quanh Tcl_Obj trở lại Tcl/Tk.
bpo-34909: Enum: sửa lỗi phân lớp cháu khi cha mẹ trộn lẫn với các kiểu dữ liệu cụ thể.
bpo-35022:
unittest.mock.MagicMockhiện hỗ trợ phương thức__fspath__(từos.PathLike).bpo-35008: Đã sửa lỗi rò rỉ tham chiếu khi gọi phương thức
__setstate__()củaxml.etree.ElementTree.Elementtrong quá trình triển khai C cho phần tử đã được khởi tạo.bpo-23420: Xác minh giá trị cho tham số '-s' của cProfile CLI. Bản vá của Robert Kuska
bpo-33947: các lớp dữ liệu hiện xử lý các lần lặp lại đệ quy mà không tăng RecursionError.
bpo-34890: Làm cho
inspect.iscoroutinefunction(),inspect.isgeneratorfunction()vàinspect.isasyncgenfunction()hoạt động vớifunctools.partial(). Bản vá của Pablo Galindo.bpo-34521: Sử dụng
socket.CMSG_SPACE()để tính toán kích thước dữ liệu phụ trợ thay vìsocket.CMSG_LEN()trongmultiprocessing.reduction.recvfds()vì RFC 3542 yêu cầu sử dụng kích thước dữ liệu phụ trợ cho các ứng dụng di động.bpo-31522: Tham số from_ của hàm
mailbox.mbox.get_stringhiện có thể được đặt thành công thành giá trị không mặc định.bpo-34970: Bảo vệ tác vụ thao tác thiết lập yếu trong
asyncio.all_tasks()bpo-34969: gzip: Thêm --fast, --best trên gzip CLI, các tham số này sẽ được sử dụng cho phương pháp nén nhanh (quick) hoặc phương pháp nén tốt nhất (chậm hơn nhưng tệp nhỏ hơn). Ngoài ra, thay đổi mức nén mặc định thành 6 (đánh đổi).
bpo-16965: Trình sửa lỗi 2to3
execfilehiện mở tệp ở chế độ'rb'. Bản vá của Zackery Spytz.bpo-34966:
pydochiện hỗ trợ bí danh không chỉ cho các phương thức được xác định trong lớp cuối mà còn cho các phương thức kế thừa. Chuỗi tài liệu không bị trùng lặp đối với bí danh.bpo-34926:
mimetypes.MimeTypes.guess_type()hiện chấp nhận path-like object ngoài chuỗi url. Bản vá của Mayank Asthana.bpo-23831: Thêm phương thức
moveto()vào tiện íchtkinter.Canvas. Bản vá của Juliette Monsel.bpo-34941: Các phương thức
find(),findtext()vàfindall()của lớpElementtrong mô-đunxml.etree.ElementTreehiện có thể tìm thấy các phương thức con là phiên bản của lớp conElement.bpo-32680: các đối tượng
smtplib.SMTPhiện luôn có thuộc tínhsockbpo-34769: Khắc phục sự cố trình tạo không đồng bộ không hoàn tất khi vòng lặp sự kiện ở chế độ gỡ lỗi và trình thu gom rác chạy trong một luồng khác.
bpo-34936: Sửa
TclErrortrongtkinter.Spinbox.selection_element(). Bản vá của Juliette Monsel.bpo-34829: Thêm các phương thức
selection_from,selection_range,selection_presentvàselection_tovàotkinter.Spinboxđể thống nhất với tiện íchtkinter.Entry. Bản vá của Juliette Monsel.bpo-34911: Đã thêm đối số secure_protocols vào http.cookiejar.DefaultCookiePolicy để cho phép điều chỉnh các giao thức và cũng để thêm hỗ trợ theo mặc định cho wss, giao thức websocket an toàn.
bpo-34922: Đã sửa lỗi tràn số nguyên trong phương thức
digest()vàhexdigest()cho thuật toán SHAKE trong mô-đunhashlib.bpo-34925: tăng tốc 25% trong phân tích cú pháp đối số cho các hàm trong mô-đun chia đôi.
bpo-34900: Đã sửa lỗi
unittest.TestCase.debug()khi được sử dụng để gọi các phương thức kiểm tra với các bài kiểm tra phụ. Bản vá của Bruno Oliveira.bpo-34844: cải tiến ghi nhật ký.Formatter - Đảm bảo kiểu và fmt khớp trong ghi nhật ký.Formatter - Đã thêm phương thức xác thực trong từng lớp kiểu định dạng: StrFormatStyle, PercentStyle, StringTemplateStyle. - Phương thức này được gọi trong hàm tạo của lớp log.Formatter - Đồng thời nâng lại KeyError trong phương thức định dạng của từng lớp kiểu, nên sẽ rõ ràng một chút rằng đó là lỗi với các trường định dạng không hợp lệ.
bpo-34897: Điều chỉnh kiểm tra test.support.missing_compiler_executable để tên lệnh danh nghĩa của "" bị bỏ qua. Bản vá của Michael Felt.
bpo-34871: Sửa lỗi kiểm tra mô-đun
sys.modulesbị ô nhiễm khi phân tích cú pháp__text_signature__của có thể gọi được.bpo-34898: Thêm đối số
mtimevàogzip.compressđể có đầu ra có thể lặp lại. Bản vá của Guo Ci Teo.bpo-28441: Trên Cygwin và MinGW, đảm bảo rằng
sys.executableluôn bao gồm tên tệp đầy đủ trong đường dẫn, bao gồm cả hậu tố.exe(trừ khi đó là một liên kết tượng trưng).bpo-34866: Thêm
max_num_fieldsvàocgi.FieldStorageđể khiến DOS tấn công khó hơn bằng cách giới hạn số lượng đối tượngMiniFieldStorageđược tạo bởiFieldStorage.bpo-34711: http.server đảm bảo nó báo cáo HTTPStatus.NOT_FOUND khi đường dẫn cục bộ kết thúc bằng "/" và không phải là một thư mục, ngay cả khi hệ điều hành cơ bản (ví dụ: AIX) chấp nhận các đường dẫn đó làm tham chiếu tệp hợp lệ. Bản vá của Michael Felt.
bpo-34872: Khắc phục lỗi tự hủy khi triển khai asyncio.Task trong C
bpo-34849: Không đăng nhập chờ
selector.selecttrong vòng lặp asyncio. Việc chờ đợi là điều khá bình thường đối với bất kỳ chương trình asyncio nào, việc ghi lại thời gian của nó chỉ gây thêm tiếng ồn cho nhật ký mà không cung cấp bất kỳ thông tin hữu ích nào.bpo-34022: Biến môi trường
SOURCE_DATE_EPOCHkhông còn ghi đè giá trị của đối số invalidation_mode thànhpy_compile.compile()và thay vào đó xác định giá trị mặc định của nó.bpo-34819: Sử dụng đồng hồ đơn điệu để tính thời gian chờ trong
Executor.map()vàas_completed(), nhằm tránh sai lệch thời gian chờ khi đồng hồ hệ thống được điều chỉnh.bpo-34758: Thêm .wasm -> application/wasm vào danh sách các loại tệp được nhận dạng và tiêu đề loại nội dung
bpo-34789:
xml.sax.make_parser()hiện chấp nhận bất kỳ lần lặp nào làm đối số parser_list của nó. Bản vá của Andrés Delfino.bpo-34334: Trong
QueueHandler, xóaexc_textkhỏiLogRecordđể ngăn việc ghi lại dấu vết hai lần.bpo-34687: Trên Windows, asyncio hiện sử dụng ProactorEventLoop, thay vì SelectorEventLoop theo mặc định.
bpo-5950: Hỗ trợ đọc file zip kèm theo nhận xét lưu trữ trong
zipimport.bpo-32892: Trình phân tích cú pháp hiện đại diện cho tất cả các hằng số dưới dạng
ast.Constantthay vì sử dụng các loại hằng số AST cụ thể (Num,Str,Bytes,NameConstantvàEllipsis). Các lớp này được coi là không dùng nữa và sẽ bị xóa trong các phiên bản Python trong tương lai.bpo-34728: Thêm cảnh báo không dùng nữa khi
loopđược sử dụng trong các phương thức:asyncio.sleep,asyncio.waitvàasyncio.wait_for.bpo-34738: Các tệp ZIP được tạo bởi
distutilsgiờ đây sẽ bao gồm các mục nhập cho thư mục.bpo-34659: Thêm đối số initial tùy chọn vào itertools.accumulate().
bpo-29577: Hỗ trợ nhiều lớp mixin khi tạo Enums.
bpo-34670: Thêm SSLContext.post_handshake_auth và SSLSocket.verify_client_post_handshake cho tính năng xác thực bắt tay bài đăng của TLS 1.3.
bpo-32718: Tập lệnh Activate.ps1 từ venv hoạt động với PowerShell Core 6.1 và hiện có sẵn trên tất cả các hệ điều hành.
bpo-31177: Sửa lỗi ngăn sử dụng
reset_mocktrên các phiên bản mô phỏng có thuộc tính đã bị xóabpo-34672: Thêm một giải pháp thay thế, để công cụ xác định
'Z'time.strftime()trên thư viện musl C có thể hoạt động trong một số trường hợp.bpo-34666: Triển khai coroutine
asyncio.StreamWriter.awritevàasyncio.StreamWriter.aclose(). Cần có các phương pháp để cung cấp luồng API nhất quán với luồng điều khiển được bật theo mặc định.bpo-6721: Lấy các khóa bên trong thường được sử dụng của mô-đun ghi nhật ký trong khi fork()ing để tránh bế tắc trong quy trình con.
bpo-34658: Khắc phục trạng thái ngoại lệ chưa được xử lý của trình thông dịch hiếm gặp SystemError chỉ thấy khi sử dụng quy trình con với preexec_fn trong khi trình xử lý after_parent đã được đăng ký với os.register_at_fork và lệnh gọi hệ thống fork không thành công.
bpo-34652: Đảm bảo
os.lchmod()không bao giờ được xác định trên Linux.bpo-34638: Lưu trữ tham chiếu yếu tới trình đọc luồng để phá vỡ vòng lặp tham chiếu mạnh giữa trình đọc và giao thức. Nó cho phép phát hiện và đóng ổ cắm nếu luồng bị xóa (thu gom rác) mà không có lệnh gọi
close().bpo-34536:
Enum._missing_: tăngValueErrornếu trả về Không có vàTypeErrornếu trả về không phải thành viên.bpo-34636: Tăng tốc độ quét lại nhiều ký tự không khớp cho s w và d trong các đối tượng byte. (tối ưu hóa vi mô)
bpo-24412: Thêm
addModuleCleanup()vàaddClassCleanup()vào unittest để hỗ trợ dọn dẹpsetUpModule()vàsetUpClass(). Bản vá của Lisa Roach.bpo-34630: Không ghi lại lỗi chứng chỉ SSL trong mã asyncio (việc ghi lỗi kết nối đã bị bỏ qua).
bpo-32490: Ngăn chặn trùng lặp tên tệp trong các thông báo ngoại lệ
subprocess. Bản vá của Zackery Spytz.bpo-34363: dataclasses.asdict() và .astuple() hiện xử lý các bộ dữ liệu được đặt tên một cách chính xác.
bpo-34625: Cập nhật phiên bản thư viện người nước ngoài được cung cấp lên 2.2.6.
bpo-32270: Mô-đun quy trình con không còn đóng nhầm các fds được chuyển hướng ngay cả khi chúng ở trong pass_fds khi nằm ngoài bộ {0, 1, 2} mặc định.
bpo-34622: Tạo các lớp ngoại lệ
asyncio.CancelledError,asyncio.InvalidStateErrorvàasyncio.TimeoutErrorchuyên dụng. Kế thừa chúng từ các ngoại lệ tương ứng từ góiconcurrent.futures. Trích xuất các ngoại lệasynciovào một tệp riêng biệt.bpo-34610: Đã sửa lỗi trình vòng lặp của
multiprocessing.managers.DictProxy.bpo-34421: Sửa lỗi ghi nhật ký distutils cho các chuỗi không phải ASCII. Điều này gây ra sự cố cài đặt trên Windows.
bpo-34604: Sửa lỗi mojibake có thể xảy ra trong thông báo lỗi của
pwd.getpwnamvàgrp.getgrnambằng cách sử dụng biểu diễn chuỗi do các ký tự ẩn hoặc khoảng trắng ở cuối. Bản vá của William Grzybowski.bpo-30977: Yêu cầu uuid.UUID sử dụng
__slots__để giảm dung lượng bộ nhớ của nó. Dựa trên bản vá gốc của Wouter Bolsterlee.bpo-34574: Trình lặp OrderedDict không còn bị cạn kiệt trong quá trình tẩy nữa. Bản vá của Serge Fedoseev.
bpo-8110: Tái cấu trúc
subprocessđể kiểm tra các mô-đun dành riêng cho Windows thay vìsys.platform == 'win32'.bpo-34530:
distutils.spawn.find_executable()hiện quay trở lạios.defpathnếu biến môi trườngPATHkhông được đặt.bpo-34563: Trên Windows, sửa lỗi multiprocessing.Connection để đọc rất lớn: sửa _winapi.PeekNamedPipe() và _winapi.ReadFile() để đọc lớn hơn INT_MAX (thường là
2**31-1).bpo-34558: Sửa lỗi đánh máy trong Lib/ctypes/_aix.py
bpo-34282: Di chuyển
Enum._convertsangEnumMeta._convert_và sửa lỗi các thành viên enum bị che khuất bởi các thuộc tính gốc.bpo-22872: Khi hàng đợi đóng,
ValueErrorhiện được tăng thêmmultiprocessing.Queue.put()vàmultiprocessing.Queue.get()thay vìAssertionErrorvàOSErrortương ứng. Bản vá của Zackery Spytz.bpo-34515: Sửa lỗi phân tích cú pháp các mã định danh không phải ASCII trong
lib2to3.pgen2.tokenize(PEP 3131).bpo-13312: Tránh tình trạng tràn số nguyên có thể xảy ra (hành vi không xác định) trong mã xử lý năm của mô-đun thời gian khi chuyển giá trị năm âm rất thấp.
bpo-34472: Cải thiện khả năng tương thích cho các tệp được phát trực tuyến trong
zipfile. Trước đây, chữ ký tùy chọn không được viết và một số ứng dụng ZIP nhất định không được hỗ trợ. Bản vá của Silas Sewell.bpo-34454: Khắc phục sự cố phương thức .fromisoformat() của các loại ngày giờ khi được cung cấp unicode với các điểm mã không thể mã hóa UTF-8. Cụ thể, datetime.fromisoformat() hiện chấp nhận các điểm mã unicode thay thế được sử dụng làm dấu phân cách. Báo cáo và thử nghiệm của Alexey Izbyshev, bản vá của Paul Ganssle.
bpo-6700: Khắc phục các dòng kiểm tra.getsource cho các khung/truy vết ở cấp mô-đun. Bản vá của Vladimir Matveev.
bpo-34171: Chạy mô-đun
tracekhông còn tạo tệptrace.covernữa.bpo-34441: Khắc phục sự cố khi lớp bắt nguồn từ
ABCcó__subclasses__không hợp lệ được chuyển làm đối số thứ hai choissubclass(). Bản vá của Alexey Izbyshev.bpo-34427: Sửa vòng lặp vô hạn trong
a.extend(a)cho các lớp conMutableSequence.bpo-34412: Làm cho
signal.strsignal()hoạt động trên HP-UX. Bản vá của Michael Osipov.bpo-20849: Shutil.copytree hiện chấp nhận đối số từ khóa
dirs_exist_okmới. Bản vá của Josh Bronson.bpo-31715: Liên kết phần mở rộng tệp
.mjsvới Loạiapplication/javascriptMIME.bpo-34384:
os.readlink()hiện chấp nhận các đối tượng path-like vàbytestrên Windows.bpo-22602: Bộ giải mã UTF-7 hiện tăng
UnicodeDecodeErrorcho các chuỗi không đúng định dạng bắt đầu bằng "+" (như được chỉ định trong RFC 2152). Bản vá của Zackery Spytz.bpo-2122: Phương thức
mmap.flush()hiện trả vềNonekhi thành công, đưa ra một ngoại lệ về lỗi trên tất cả các nền tảng.bpo-34341: Việc thêm vào kho lưu trữ ZIP với phần mở rộng ZIP64 không còn tăng kích thước của các trường bổ sung của các mục nhập hiện có.
bpo-34333: Sửa lỗi định dạng % trong
pathlib.PurePath.with_suffix()khi định dạng thông báo lỗi.bpo-18540: Các lớp
imaplib.IMAP4vàimaplib.IMAP4_SSLhiện phân giải chính xác thành IP máy chủ cục bộ khi sử dụng giá trị mặc định của tham số host ('').bpo-26502: Triển khai phương pháp
traceback.FrameSummary.__len__()để duy trì khả năng tương thích với bộ dữ liệu API cũ.bpo-34318:
assertRaises(),assertRaisesRegex(),assertWarns()vàassertWarnsRegex()không còn thành công nếu lệnh gọi được thông qua là Không có. Họ không còn bỏ qua các đối số từ khóa không xác định trong chế độ quản lý ngữ cảnh. Cảnh báo không dùng nữa đã được đưa ra trong những trường hợp này kể từ Python 3.5.bpo-9372: Không dùng nữa các phương thức
__getitem__()củaxml.dom.pulldom.DOMEventStream,wsgiref.util.FileWrappervàfileinput.FileInput.bpo-33613: Khắc phục tình trạng đua trong
multiprocessing.semaphore_trackerkhi trình theo dõi nhận được SIGINT trước khi có thể đăng ký trình xử lý tín hiệu để bỏ qua nó.bpo-34248: Báo cáo tên tệp trong trường hợp ngoại lệ được đưa ra khi
dbm.gnu.open()vàdbm.ndbm.open()không thể mở tệp cơ sở dữ liệu do lỗi liên quan đến hệ điều hành. Bản vá của Zsolt Cserna.bpo-33089: Thêm math.dist() để tính khoảng cách Euclide giữa hai điểm.
bpo-34246:
smtplib.SMTP.send_message()không còn sửa đổi nội dung của đối số mail_options nữa. Bản vá của Pablo S. Blum de Aguiar.bpo-31047: Sửa
ntpath.abspathđường dẫn không hợp lệ trên windows. Bản vá của Franz Woellert.bpo-32321: Thêm dự phòng Python thuần túy cho functools.reduce. Bản vá của Robert Wright.
bpo-34270: Lớp tác vụ asyncio mặc định hiện luôn có tên có thể được lấy hoặc đặt bằng hai phương thức mới (
get_name()vàset_name()) và hiển thị trong đầu rarepr(). Tên ban đầu cũng có thể được đặt bằng cách sử dụng đối số từ khóanamemới thànhasyncio.create_task()hoặc phương thứccreate_task()của vòng lặp sự kiện. Nếu không đặt tên ban đầu, việc triển khai Tác vụ mặc định sẽ tạo một tên nhưTask-1bằng cách sử dụng bộ đếm đơn điệu.bpo-34263: vòng lặp sự kiện của asyncio sẽ không vượt qua thời gian chờ lâu hơn một ngày để epoll/select, v.v.
bpo-34035: Sửa một số lỗi thuộc tính trong các phương thức zipfile seek(). Bản vá của Mickaël Schoentgen.
bpo-32215: Khắc phục sự hồi quy hiệu suất trong
sqlite3khi câu lệnh DML xuất hiện ở một dòng khác với phần còn lại của truy vấn SQL.bpo-34075: Không dùng nữa việc chuyển các phiên bản không phải ThreadPoolExecutor sang
AbstractEventLoop.set_default_executor().bpo-34251: Khôi phục
msilib.Win64để duy trì khả năng tương thích ngược vì nó đã được sử dụng bởi lệnhdistutils'bdist_msi.bpo-19891: Bỏ qua các lỗi do homedir bị thiếu/không thể ghi trong khi ghi lịch sử khi thoát phiên tương tác. Bản vá của Anthony Sottile.
bpo-33089: math.hypot() nâng cao để hỗ trợ nhiều hơn hai chiều.
bpo-34228: tracemalloc: PYTHONTRACEMALLOC=0 biến môi trường và tùy chọn dòng lệnh -X tracemalloc=0 hiện được phép tắt rõ ràng tracemalloc khi khởi động.
bpo-13041: Sử dụng
shutil.get_terminal_size()để tính toán chính xác độ rộng thiết bị đầu cuối trong lớpargparse.HelpFormatter. Bản vá đầu tiên của Zbyszek Jędrzejewski-Szmek.bpo-34213: Cho phép các lớp dữ liệu cố định có trường có tên là "đối tượng". Trước đây điều này mâu thuẫn với việc sử dụng "đối tượng" nội bộ.
bpo-34052: Các phương thức
sqlite3.Connection.create_aggregate(),sqlite3.Connection.create_function(),sqlite3.Connection.set_authorizer(),sqlite3.Connection.set_progress_handler()sẽ tăng TypeError khi các đối tượng không thể băm được chuyển thành có thể gọi được. Các phương thức này hiện không chuyển các đối tượng đó tới SQLite API. Hành vi trước đây có thể dẫn đến lỗi phân đoạn. Bản vá của Serge Fedoseev.bpo-34197: Các thuộc tính skipinitialspace, doublequote và strict của thuộc tính dialect của trình đọc
csvhiện là các phiên bảnboolthay vì số nguyên 0 hoặc 1.bpo-32788: Các lỗi khác ngoài
TypeErrornêu ra trong các phương thức__adapt__()và__conform__()trong mô-đunsqlite3hiện đã được truyền tới người dùng.bpo-21446: Trình sửa lỗi
reloadhiện sử dụngimportlib.reload()thay vìimp.reload()không còn được dùng nữa.bpo-940286: phương pháp
Helper.showtopic()của pydoc hiện in chính xác các tham chiếu chéo của một chủ đề.bpo-34164:
base64.b32decode()có thể đưa ra UnboundLocalError hoặc OverflowError do phần đệm không chính xác. Bây giờ nó luôn tăngbase64.Errortrong những trường hợp này.bpo-33729: Đã khắc phục sự cố khi phân tích đối số trong
hashlib.bpo-34097: ZipFile có thể nén các tệp cũ hơn 1980-01-01 và mới hơn 2107-12-31 bằng cách sử dụng tham số
strict_timestampsmới với chi phí phải đặt dấu thời gian ở mức giới hạn.bpo-34108: Loại bỏ CR không liên quan trong bộ tái cấu trúc 2to3.
bpo-34070: Đảm bảo chỉ kiểm tra xem tay cầm có phải là tty hay không khi mở tệp bằng
buffering=-1.bpo-27494: Đã hoàn nguyên bpo-27494. 2to3 hiện từ chối dấu phẩy ở cuối trong biểu thức trình tạo.
bpo-33967: functools.singledispatch hiện tăng TypeError thay vì IndexError khi không có đối số vị trí nào được truyền.
bpo-34041: Thêm tham số deterministic vào phương thức
sqlite3.Connection.create_function(). Bản vá của Serge Fedoseev.bpo-34056: Đảm bảo miếng chêm bộ tải được tạo bởi
imp.load_moduleluôn trả về byte từ hàmget_data()của nó. Điều này khắc phục bằng cách sử dụngimp.load_modulevới pycs dựa trên hàm băm PEP 552.bpo-34054: Mô-đun đa xử lý hiện sử dụng đồng hồ đơn điệu
time.monotonic()thay vì đồng hồ hệ thốngtime.time()để triển khai thời gian chờ.bpo-34043: Tối ưu hóa hiệu suất giải nén tarfile khoảng 15% khi sử dụng gzip.
bpo-34044:
subprocess.Popenhiện sao chép đối số startupinfo để không thay đổi: nó sẽ sửa đổi bản sao để có thể sử dụng cùng một đối tượngSTARTUPINFOnhiều lần.bpo-34010: Đã sửa lỗi hồi quy hiệu suất để đọc luồng bằng tarfile. Việc đọc vào bộ đệm nên sử dụng danh sách, thay vì thêm vào đối tượng byte.
bpo-34019: webbrowser: Sửa các đối số được truyền tới Trình duyệt Opera khi mở URL mới bằng mô-đun
webbrowser. Bản vá của Bumsik Kim.bpo-34003: csv.DictReader hiện tạo các ký tự thay vì OrderedDicts. Bản vá của Michael Selik.
bpo-33978: Đã đóng trình xử lý ghi nhật ký hiện có trước khi định cấu hình lại thông qua fileConfig và dictConfig. Bản vá của Karthikeyan Singaravelan.
bpo-14117: Thực hiện một số điều chỉnh nhỏ đối với Turtledemo. Ví dụ 'wikipedia' bây giờ là 'hoa hồng', mô tả những gì nó vẽ ra. Sản lượng in 'penrose' bị giảm. Đầu ra '1024' của 'cây' bị loại bỏ.
bpo-33974: Đã sửa lỗi chuyển danh sách và bộ chuỗi chứa các ký tự đặc biệt
",\,{,}và\nlàm tùy chọn cho các tiện íchttk.bpo-27500: Sửa getaddrinfo để phân giải chính xác địa chỉ IPv6.
bpo-24567: Cải thiện Random.choices() để xử lý các trọng số đầu vào dưới mức bình thường mà đôi khi có thể gây ra lỗi IndexError.
bpo-33871: Đã sửa lỗi tràn số nguyên trong
os.readv(),os.writev(),os.preadv()vàos.pwritev()và trongos.sendfile()với các đối số headers hoặc trailers (trên hệ điều hành và macOS dựa trên BSD).bpo-25007: Thêm hỗ trợ
copy.copy()vàcopy.deepcopy()cho bộ nén và giải nén zlib. Bản vá của Zackery Spytz.bpo-33929: multiprocessing: Khắc phục tình trạng chủng tộc trong Popen của multiprocessing.popen_spawn_win32. Quá trình con bây giờ sao chép đầu đọc của ống thay vì "đánh cắp" nó. Trước đây, đầu đọc của ống đã bị tiến trình con "đánh cắp", nhưng nó đã rò rỉ một tay cầm nếu tiến trình con đã bị chấm dứt trước khi nó có thể lấy cắp tay cầm từ tiến trình cha.
bpo-33899: Mô-đun tokenize hiện ngầm phát ra NEWLINE khi được cung cấp đầu vào không có dòng mới ở cuối. Hành vi này hiện khớp với những gì mã thông báo C thực hiện trong nội bộ. Đóng góp bởi Ammar Askar.
bpo-33897: Đã thêm đối số từ khóa 'bắt buộc' vào log.basicConfig().
bpo-33695:
shutil.copytree()sử dụng chức năngos.scandir()và tất cả các chức năng sao chép tùy thuộc vào nó sử dụng các giá trịos.stat()được lưu trong bộ nhớ cache. Tốc độ tăng tốc sao chép thư mục chứa 8000 tệp là khoảng +9% trên Linux, +20% trên Windows và + 30% trên chia sẻ Windows SMB. Ngoài ra, số lượng tòa nhàos.stat()cũng giảm 38%, khiếnshutil.copytree()đặc biệt nhanh hơn trên các hệ thống tệp mạng. (Được đóng góp bởi Giampaolo Rodola' trong bpo-33695.)bpo-33916: bz2 và lzma: Khi Decompressor.__init__() được gọi hai lần, giải phóng khóa cũ để không rò rỉ bộ nhớ.
bpo-32568: Đảm bảo select.epoll() và tài liệu của nó nhất quán về sizehint và flags.
bpo-33833: Đã sửa lỗi trong asyncio trong đó ProactorSocketTransport ghi nhật ký AssertionError nếu buộc đóng trong khi ghi.
bpo-33663: Chuyển đổi độ dài nội dung thành chuỗi trước khi đưa vào tiêu đề.
bpo-33721: Các hàm
os.pathtrả về kết quả boolean nhưexists(),lexists(),isdir(),isfile(),islink(), vàismount(), và các phương thứcpathlib.Pathtrả về kết quả boolean nhưexists(),is_dir(),is_file(),is_mount(),is_symlink(),is_block_device(),is_char_device(),is_fifo(),is_socket()hiện trả vềFalsethay vì tăngValueErrorhoặc các lớp conUnicodeEncodeErrorvàUnicodeDecodeErrorcủa nó đối với các đường dẫn chứa các ký tự hoặc byte không thể biểu thị được ở cấp hệ điều hành.bpo-26544: Đã sửa lỗi triển khai
platform.libc_ver(). Nó hầu như luôn trả về phiên bản '2.9' cho glibc.bpo-33843: Xóa
cgi.escape,cgi.parse_qsvàcgi.parse_qslkhông được dùng nữa.bpo-33842: Xóa
tarfile.filemodekhông được dùng nữa kể từ Python 3.3.bpo-30167: Ngăn chặn ngoại lệ site.main() nếu PYTHONSTARTUP được đặt. Bản vá của Steve Weber.
bpo-33805: Cải thiện thông báo lỗi của dataclasses.replace() khi InitVar không được chỉ định
bpo-33687: Sửa cuộc gọi tới
os.chmod()chouu.decode()nếu một chế độ được cung cấp hoặc giải mã. Bản vá của Timo Furrer.bpo-33812: Datetime instance d không có tzinfo, nhưng có d.tzinfo.utcoffset(d) trả về None hiện được coi là ngây thơ theo phương thức astimezone().
bpo-32108: Trong configparser, không xóa phần khi nó được gán cho chính nó.
bpo-27397: Làm cho mô-đun email xử lý đúng cách các chuỗi base64 có độ dài không hợp lệ.
bpo-33578: Triển khai các phương thức trạng thái bộ mã hóa/giải mã nhiều byte
bpo-30805: Tránh tình trạng chạy đua bằng tính năng ghi nhật ký gỡ lỗi
bpo-33476: Sửa _header_value_parser.py khi thiếu nhóm địa chỉ cuối cùng ';'. Đóng góp của Enrique Perez-Terron
bpo-33694: asyncio: Khắc phục tình trạng dồn đuổi gây mất dữ liệu trên Pause_reading()/resume_reading() khi sử dụng ProactorEventLoop.
bpo-32493: Kiểm tra chính xác về tính khả dụng của
uuid_enc_betrongconfigure.ac. Bản vá của Michael Felt.bpo-33792: Thêm asyncio.WindowsSelectorEventLoopPolicy và asyncio.WindowsProactorEventLoopPolicy.
bpo-33274: W3C DOM Cấp 1 chỉ định giá trị trả về của Element.removeAttributionNode() là "Nút Attr đã bị xóa". xml.dom.minidom hiện tuân thủ yêu cầu này.
bpo-33778: Cập nhật cơ sở dữ liệu của
unicodedatalên phiên bản Unicode 11.0.0.bpo-33165: Đã thêm tham số stacklevel vào lệnh gọi ghi nhật ký để cho phép sử dụng các hàm bao bọc/trợ giúp để ghi nhật ký API.
bpo-33770: cải thiện thông báo ngoại lệ base64 cho các đầu vào được mã hóa có độ dài không hợp lệ
bpo-33769: asyncio/start_tls: Sửa thông báo lỗi; hủy cuộc gọi lại trong trường hợp có lỗi chưa được xử lý; đánh dấu SSLTransport là đã đóng nếu nó bị hủy bỏ.
bpo-33767: Các thao tác chuỗi nối (
+) và lặp lại (*) hiện tăngTypeErrorthay vìSystemErrorkhi được thực hiện trên các đối tượngmmap.mmap. Bản vá của Zackery Spytz.bpo-33734: asyncio/ssl: Fix AttributionError, tăng thời gian chờ bắt tay mặc định
bpo-31014: Đã sửa lỗi tạo bộ điều khiển cho
webbrowserkhi người dùng chỉ định đường dẫn đến mục nhập trong biến môi trường BROWSER. Dựa trên bản vá của John Still.bpo-2504: Thêm gettext.pgettext() và các biến thể.
bpo-33197: Thêm thuộc tính mô tả cho _ParameterKind
bpo-32751: Khi hủy tác vụ do hết thời gian chờ,
asyncio.wait_for()sẽ đợi cho đến khi quá trình hủy hoàn tất.bpo-32684: Sửa lỗi thu thập để tuyên truyền việc hủy bỏ chính nó ngay cả với return_Exceptions.
bpo-33654: Hỗ trợ chuyển đổi loại giao thức trong SSLTransport.set_protocol().
bpo-33674: Tạm dừng quá trình truyền tải càng sớm càng tốt để giảm hơn nữa nguy cơ data_received() được gọi trước Connection_made().
bpo-33671:
shutil.copyfile(),shutil.copy(),shutil.copy2(),shutil.copytree()vàshutil.move()sử dụng các tòa nhà sao chép nhanh dành riêng cho nền tảng trên Linux và macOS để sao chép tệp hiệu quả hơn. Trên Windowsshutil.copyfile()sử dụng kích thước bộ đệm mặc định lớn hơn (1 MiB thay vì 16 KiB) và biến thểshutil.copyfileobj()dựa trênmemoryview()được sử dụng. Tốc độ sao chép tệp 512MiB tăng tốc là khoảng +26% trên Linux, +50% trên macOS và +40% trên Windows. Ngoài ra, chu kỳ CPU được tiêu thụ ít hơn nhiều. (Được đóng góp bởi Giampaolo Rodola' trong bpo-25427.)bpo-33674: Khắc phục tình trạng dồn đuổi trong SSLProtocol.connection_made() của asyncio.sslproto: bắt đầu bắt tay ngay lập tức thay vì sử dụng call_soon(). Trước đây, data_received() có thể được gọi trước khi quá trình bắt tay bắt đầu, khiến quá trình bắt tay bị treo hoặc không thành công.
bpo-31647: Đã sửa lỗi khi gọi write_eof() trên _SelectorSocketTransport sau khi nó đã đóng sẽ làm tăng AttributionError.
bpo-32610: Đặt asyncio.all_tasks() chỉ trả về các tác vụ đang chờ xử lý.
bpo-32410: Tránh chặn tệp IO trong mã dự phòng sendfile
bpo-33469: Sửa lỗi RuntimeError sau khi đóng vòng lặp sử dụng run_in_executor
bpo-33672: Khắc phục sự cố của Task.__repr__ với các coroutine giả mạo của Cython
bpo-33654: Sửa lỗi Transport.set_protocol() để hỗ trợ chuyển đổi giữa asyncio.Protocol và asyncio.BufferedProtocol. Sửa loop.start_tls() để hoạt động với asyncio.BufferedProtocols.
bpo-33652: Pickles gồm các biến loại và các generic được đăng ký hiện đã sẵn sàng cho tương lai và tương thích với các phiên bản Python cũ hơn.
bpo-32493: Đã sửa lỗi
uuid.uuid1()trên FreeBSD.bpo-33238: Thêm
InvalidStateErrorvàoconcurrent.futures.Future.set_resultvàFuture.set_exceptionhiện tăngInvalidStateErrornếu hợp đồng tương lai không ở trạng thái chờ xử lý hoặc đang chạy. Bản vá của Jason Haydaman.bpo-33618: Hoàn thiện và ghi lại hỗ trợ TLS 1.3 sơ bộ và thử nghiệm với OpenSSL 1.1.1
bpo-33625: Phát hành GIL trên
grp.getgrnam,grp.getgrgid,pwd.getpwnamvàpwd.getpwuidnếu có sẵn các biến thể đăng ký lại của các chức năng này. Bản vá của William Grzybowski.bpo-33623: Có thể sửa lỗi SIGSGV khi asyncio.Future được tạo trong __del__
bpo-11874: Sử dụng biểu thức chính quy tốt hơn khi chia mức sử dụng thành các phần có thể gói được. Tránh các lỗi xác nhận không có thật từ các chuỗi metavar tùy chỉnh.
bpo-30877: Đã sửa lỗi trong quá trình triển khai bộ giải mã JSON bằng Python khiến bộ đệm của các chuỗi được phân tích cú pháp không bị xóa sau khi kết thúc quá trình giải mã. Dựa trên bản vá của c-fos.
bpo-33604: Xóa mặc định HMAC thành md5 được đánh dấu để xóa trong 3.8 (việc loại bỏ ban đầu được lên kế hoạch trong 3.6, tăng lên 3.8 trong PR 7062).
bpo-33582: Đưa ra cảnh báo không dùng nữa cho Inspection.formatargspec
bpo-21145: Thêm trình trang trí
functools.cached_property, dành cho các thuộc tính tính toán được lưu vào bộ nhớ đệm trong suốt vòng đời của phiên bản.bpo-33570: Thay đổi cài đặt bộ mật mã TLS 1.3 để tương thích với OpenSSL 1.1.1-pre6 trở lên. OpenSSL 1.1.1 sẽ bật mật mã TLS 1.3 theo mặc định.
bpo-28556: Không đơn giản hóa các đối số thành
typing.Union. Bây giờUnion[Manager, Employee]không được đơn giản hóa thànhEmployeekhi chạy. Việc đơn giản hóa như vậy trước đây đã gây ra một số lỗi và hạn chế khả năng xem xét nội tâm.bpo-12486:
tokenize.generate_tokens()hiện được ghi lại dưới dạng API công khai để mã hóa các chuỗi unicode. Trước đây nó đã có mặt nhưng không có giấy tờ.bpo-33540: Thêm thuộc tính lớp
block_on_closemới vào các lớpForkingMixInvàThreadingMixIncủasocketserver.bpo-33548: tempfile._candidate_tempdir_list nên xem xét các vị trí TEMP phổ biến
bpo-33109: các trình phân tích cú pháp con argparse một lần nữa không được yêu cầu theo mặc định, hoàn nguyên thay đổi về hành vi do bpo-26510 đưa ra trong 3.7.0a2.
bpo-33541: Xóa phương thức riêng tư
_strptime.LocaleTime.__padkhông được sử dụng (còn gọi là_LocaleTime__pad).bpo-33536: dataclasses.make_dataclass hiện kiểm tra tên trường không hợp lệ và trường trùng lặp. Ngoài ra, đã thêm kiểm tra các thông số trường không hợp lệ.
bpo-33542: Ngăn
uuid.get_nodesử dụng DUID thay vì MAC trên Windows. Bản vá của Zvi Effronbpo-26819: Khắc phục tình trạng đua với
ReadTransport.resume_readingtrong vòng lặp sự kiện thước đo Windows.Khắc phục lỗi trong
typing.get_type_hints()khi ClassVar được cung cấp dưới dạng tham chiếu chuyển tiếp chuỗi.bpo-33516:
unittest.mock.MagicMockhiện hỗ trợ phương thức ma thuật__round__.bpo-28612: Đã thêm hỗ trợ cho Sơ đồ trang web cho
RobotFileParsercủa urllib dưới dạngRobotFileParser.site_maps(). Bản vá của Lady Red, dựa trên bản vá của Peter Wirtz.bpo-28167: Xóa platform.linux_distribution, không được dùng nữa kể từ phiên bản 3.5.
bpo-33504: Chuyển cách triển khai từ điển mặc định cho
configparsertừcollections.OrderedDictsang loạidicttiêu chuẩn.bpo-33505: Tối ưu hóa asyncio.ensure_future() bằng cách sắp xếp lại nếu kiểm tra: nhanh hơn 1,17 lần.
bpo-33497: Thêm thông số lỗi vào cgi.parse_multipart và tạo mã hóa trong FieldStorage bằng cách sử dụng các lỗi đã cho (cần thiết cho Twisted). Bản vá của Amber Brown.
bpo-29235: Lớp
cProfile.Profilehiện có thể được sử dụng làm trình quản lý bối cảnh. Bản vá của Scott Sanderson.bpo-33495: Thay đổi dataclasses.Fields repr để sử dụng repr của từng thành viên trong nó, thay vì str. Điều này làm cho nó rõ ràng hơn mỗi trường thực sự đại diện cho điều gì. Điều này đặc biệt đúng với thành viên “loại”.
bpo-26103: Đúng
inspect.isdatadescriptorđể tìm__set__hoặc__delete__. Bản vá của Aaron Hall.bpo-29209: Đã xóa phương thức
doctype()và tham số html của hàm tạo củaXMLParser. Phương thứcdoctype()được định nghĩa trong một lớp con sẽ không còn được gọi nữa. Các phương thức không dùng nữagetchildren()vàgetiterator()trong mô-đunElementTreehiện phát raDeprecationWarningthay vìPendingDeprecationWarning.bpo-33453: Sửa các lớp dữ liệu để hoạt động nếu sử dụng chú thích loại chuỗi ký tự hoặc nếu sử dụng PEP 563 "Đánh giá chú thích bị trì hoãn". Chỉ các tiền tố chuỗi cụ thể mới được phát hiện cho cả ClassVar ("ClassVar" và "typing.ClassVar") và InitVar ("InitVar" và "dataclasses.InitVar").
bpo-28556: Sửa lỗi nhỏ trong mô-đun gõ: thêm chú thích vào
NamedTuple.__new__, chuyển*argsvà**kwdstrongGeneric.__new__. PR gốc của Paulius Šarka và Chad Dombrova.bpo-33365: In các giá trị tiêu đề bên cạnh các khóa tiêu đề thay vì chỉ các khóa tiêu đề nếu debuglevel được đặt thành >0 trong
http.client. Bản vá của Marco Strigl.bpo-20087: Đã cập nhật ánh xạ bí danh với các ngôn ngữ được hỗ trợ glibc 2.27.
bpo-33422: Sửa lỗi dấu ngoặc kép ở cuối bị xóa khi tra cứu các ký tự byte/chuỗi trên pydoc. Bản vá của Andrés Delfino.
bpo-28167: Hàm
platform.linux_distributionvàplatform.disthiện kích hoạtDeprecationWarningvà đã được đánh dấu để xóa trong Python 3.8bpo-33281: Khắc phục hồi quy ctypes.util.find_library trên macOS.
bpo-33311: Đầu ra văn bản và html do cgitb tạo không hiển thị dấu ngoặc đơn nếu cuộc gọi hiện tại được thực hiện trực tiếp trong mô-đun. Bản vá của Stéphane Blondon.
bpo-27300: Các lớp tệp trong tempfile hiện chấp nhận tham số errors bổ sung cho encoding hiện có. Bản vá của Stephan Hohe.
bpo-32933:
unittest.mock.mock_open()hiện hỗ trợ lặp lại nội dung tệp. Bản vá của Tony Flury.bpo-33217: Tăng
TypeErrorkhi tra cứu các đối tượng không phải Enum trong các lớp Enum và các thành viên Enum.bpo-33197: Cập nhật thông báo lỗi khi xây dựng bản vá kiểm tra không hợp lệ.Bản vá thông số của Donghee Na.
bpo-33383: Đã khắc phục sự cố trong phương thức get() của đối tượng cơ sở dữ liệu
dbm.ndbmkhi nó được gọi với một đối số duy nhất.bpo-33375: Mô-đun cảnh báo hiện tìm thấy tệp Python được liên kết với cảnh báo từ đối tượng mã, thay vì không gian tên chung của khung. Điều này nhất quán với cách tracebacks và pdb tìm tên tệp và sẽ hoạt động tốt hơn đối với mã được thực thi động.
bpo-33336:
imaplibhiện cho phép lệnhMOVEtrongIMAP4.uid()(RFC 6851: IMAP MOVE Extension) và có thể là tên của phương thức được hỗ trợ của đối tượngIMAP4.bpo-32455: Đã thêm tham số jump vào
dis.stack_effect().bpo-27485: Đổi tên và loại bỏ các hàm không có giấy tờ trong
urllib.parse().bpo-33332: Thêm
signal.valid_signals()để hiển thị chức năng POSIX sigfillset().bpo-33251:
ConfigParser.items()đã được sửa để các cặp khóa-giá trị được truyền quavars()không được đưa vào kết quả đầu ra.bpo-33329: Khắc phục hồi quy đa xử lý trên glibcs mới hơn
bpo-33334:
dis.stack_effect()hiện hỗ trợ tất cả các opcode được xác định bao gồm NOP và EXTENDED_ARG.bpo-991266: Sửa lỗi trích dẫn thuộc tính
Commentcủahttp.cookies.SimpleCookie.bpo-33131: Nâng cấp phiên bản đi kèm của pip lên 10.0.1.
bpo-33308: Đã khắc phục sự cố trong mô-đun
parserkhi chuyển đổi đối tượng ST thành cây gồm các bộ dữ liệu hoặc danh sách cóline_info=Falsevàcol_info=True.bpo-23403: lib2to3 hiện sử dụng giao thức dưa chua 4 cho các ngữ pháp được tính toán trước.
bpo-33266: lib2to3 hiện nhận dạng chuỗi
rf'...'.bpo-11594: Đảm bảo các đầu dòng được tôn trọng khi sử dụng lib2to3.
bpo-33254: Yêu cầu
importlib.resources.contents()vàimportlib.abc.ResourceReader.contents()trả về iterable thay vì iterator.bpo-33265:
contextlib.ExitStackvàcontextlib.AsyncExitStackhiện sử dụng một phương thức thay vì hàm bao bọc để thoát lệnh gọi lại.bpo-33263: Sửa lỗi rò rỉ FD trong Bản vá
_SelectorSocketTransportcủa Vlad Starostin.bpo-33256: Sửa lỗi hiển thị lệnh gọi
<module>trong html docgitb.html()tạo ra. Bản vá của Stéphane Blondon.bpo-33144:
random.Random()và cơ chế phân lớp con của nó đã được tối ưu hóa để chỉ kiểm tra một lần tại thời điểm khởi tạo lớp/lớp con xem liệu phương thứcgetrandbits()của nó có thể dựa vào các phương thức khác hay không, bao gồm cảrandrange(), để tạo ra các số nguyên ngẫu nhiên lớn tùy ý. Bản vá của Wolfgang Maier.bpo-33185: Đã sửa lỗi hồi quy khi chạy pydoc bằng khóa chuyển
-m. (Hồi quy được giới thiệu trong 3.7.0b3 với độ phân giải bpo-33053)Bản sửa lỗi này cũng thay đổi pydoc để thêm
os.getcwd()vàosys.pathkhi cần thiết, thay vì thêm".".bpo-29613: Đã thêm hỗ trợ cho cờ cookie
SameSitevào mô-đunhttp.cookies.bpo-33169: Xóa các mục của
Nonetrongsys.path_importer_cachekhiimportlib.machinery.invalidate_caches()được gọi.bpo-33203:
random.Random.choice()hiện tăngIndexErrorcho các chuỗi trống một cách nhất quán ngay cả khi được gọi từ các lớp con mà không triển khaigetrandbits().bpo-33224: Cập nhật difflib.mdiff() cho PEP 479. Chuyển đổi một StopIteration chưa được lưu trữ trong trình tạo thành câu lệnh trả về.
bpo-33209: Kết thúc việc đóng khung khi kết thúc quá trình triển khai C của
pickle.Pickler.dump().bpo-32861: Trình bày
__str__của urllib.robotparser hiện bao gồm các mục nhập ký tự đại diện và các trường "Độ trễ thu thập thông tin" và "Tốc độ yêu cầu". Đồng thời loại bỏ các dòng mới bổ sung đang được thêm vào cuối chuỗi. Bản vá của Michael Lazar.bpo-23403:
DEFAULT_PROTOCOLtrongpickleđược nâng lên 4. Giao thức 4 được mô tả trong PEP 3154 và có sẵn kể từ Python 3.4. Nó cung cấp hiệu suất tốt hơn và kích thước nhỏ hơn so với giao thức 3 được giới thiệu trong Python 3.0.bpo-20104: Cải thiện khả năng xử lý lỗi và sửa lỗi rò rỉ tham chiếu trong
os.posix_spawn().bpo-33106: Việc xóa khóa khỏi cơ sở dữ liệu dbm chỉ đọc sẽ gây ra lỗi cụ thể của mô-đun thay vì KeyError.
bpo-33175: Trong các lớp dữ liệu, Field.__set_name__ bây giờ tra cứu phương thức đặc biệt __set_name__ trên lớp, chứ không phải phiên bản, của giá trị mặc định.
bpo-32380: Tạo phương thức functools.singledispatch để hỗ trợ việc gửi đơn chung trên các bộ mô tả và phương thức.
bpo-33141: Yêu cầu các đối tượng Trường chuyển qua __set_name__ tới các giá trị mặc định của chúng, nếu chúng có __set_name__ riêng.
bpo-33096: Cho phép ttk.Treeview.insert chèn iid có giá trị boolean sai. Lưu ý iid=0 và iid=False sẽ giống nhau. Bản vá của Garvit Khatri.
bpo-32873: Coi các biến loại và các dạng gõ đặc biệt là bất biến bằng cách sao chép và chọn. Điều này khắc phục một số vấn đề nhỏ và sự không nhất quán, đồng thời cải thiện khả năng tương thích ngược với Python 3.6.
bpo-33134: Khi tính toán __hash__ của lớp dữ liệu, hãy sử dụng bảng tra cứu để chứa hàm trả về giá trị __hash__. Đây là một cải tiến so với việc tra cứu một chuỗi rồi kiểm tra chuỗi đó để xem phải làm gì.
bpo-33127: Mô-đun ssl hiện biên dịch với LibreSSL 2.7.1.
bpo-32505: Tăng TypeError nếu biến thành viên của lớp dữ liệu thuộc loại Trường nhưng không có chú thích loại.
bpo-33078: Sửa lỗi trên OSX do kiểm tra dựa vào sem_getvalue
bpo-33116: Thêm 'Trường' vào các lớp dữ liệu.__all__.
bpo-32896: Khắc phục lỗi trong đó việc phân lớp một lớp dữ liệu với trường sử dụng default_factory sẽ tạo ra một lớp không chính xác.
bpo-33100: Dataclasses: Nếu một trường có giá trị mặc định là MemberDescriptorType thì trường đó nằm trong __slots__ chứ không phải giá trị mặc định thực tế.
bpo-32953: Nếu một lớp không phải lớp dữ liệu kế thừa từ một lớp dữ liệu cố định, hãy cho phép thêm các thuộc tính vào lớp dẫn xuất. Chỉ các thuộc tính từ lớp dữ liệu đã đóng băng mới không thể được gán cho. Yêu cầu tất cả các lớp dữ liệu trong hệ thống phân cấp phải được cố định hoàn toàn hoặc không bị cố định.
bpo-33097: Tăng RuntimeError khi
executor.submitđược gọi trong khi tắt trình thông dịch.bpo-32968: Modulo và phép chia sàn liên quan đến Phân số và số float sẽ trả về số float.
bpo-33061: Thêm
NoReturnbị thiếu vào__all__trong Typing.pybpo-33078: Sửa lỗi xử lý kích thước trong multiprocessing.Queue khi xảy ra lỗi tẩy.
bpo-33064: lib2to3 hiện hỗ trợ chính xác dấu phẩy ở cuối
*argsvà**kwargstrong chữ ký hàm.bpo-33056: FIX đóng các fds bị rò rỉ đúng cách trong concurrent.futures.ProcessPoolExecutor.
bpo-33021: Giải phóng GIL trong các cuộc gọi fstat(), tránh tình trạng treo tất cả các chuỗi khi gọi mmap.mmap(), os.urandom() và Random.seed(). Bản vá của Nir Soffer.
bpo-31804: Tránh thất bại trong quá trình đa xử lý. Xử lý nếu luồng tiêu chuẩn bị đóng hoặc Không có khi thoát.
bpo-33034: Cung cấp thông báo lỗi rõ ràng khi truyền thuộc tính cổng tới bất kỳ thứ gì không phải là giá trị nguyên bằng cách sử dụng
urlparse()vàurlsplit(). Bản vá của Matt Eaton.bpo-30249: Cải thiện các thông báo ngoại lệ struct.unpack_from() đối với các vấn đề về kích thước bộ đệm và độ lệch.
bpo-33037: Bỏ qua việc gửi/nhận dữ liệu sau khi đóng truyền tải SSL.
bpo-27683: Khắc phục hồi quy trong
ipaddresskhiến kết quả củahosts()trống khi mạng được xây dựng bởi một bộ dữ liệu chứa mặt nạ số nguyên và chỉ còn lại 1 bit cho địa chỉ.bpo-22674: Thêm hàm strsignal() trong mô-đun tín hiệu để trả về mô tả hệ thống của tín hiệu đã cho, do strsignal(3) trả về.
bpo-32999: Khắc phục sự cố triển khai C của
ABC.__subclasscheck__(cls, subclass)khisubclasskhông phải là một đối tượng loại.bpo-33009: Sửa lỗi kiểm tra.signature() cho các phương thức một phần tham số.
bpo-32969: Hiển thị một số hằng số bị thiếu trong zlib và sửa tài liệu tương ứng.
bpo-32056: Cải thiện các ngoại lệ được đưa ra đối với số lượng kênh và độ rộng mẫu không hợp lệ khi đọc tệp âm thanh trong các mô-đun
aifc,wavevàsunau.bpo-32970: Cải thiện việc tháo gỡ lệnh MAKE_FUNCTION.
bpo-32844: Sửa lỗi chuyển hướng sai của bộ mô tả thấp (0 hoặc 1) sang stderr trong quy trình con nếu một bộ mô tả thấp khác bị đóng.
bpo-32960: Đối với các lớp dữ liệu, không cho phép kế thừa các lớp được đóng băng từ các lớp không được cố định và cũng không cho phép kế thừa các lớp không được cố định từ các lớp được cố định. Hạn chế này sẽ được nới lỏng vào một ngày trong tương lai.
bpo-32713: Đã sửa lỗi xử lý tarfile.itn các giá trị float ngoài giới hạn. Bản vá của Joffrey Fuhrer.
bpo-32257: Mô-đun ssl hiện chứa hằng số OP_NO_RENEGOTIATION, khả dụng với OpenSSL 1.1.0h hoặc 1.1.1.
bpo-32951: Việc tạo trực tiếp các đối tượng SSLSocket và SSLObject hiện bị cấm. Các nhà xây dựng chưa bao giờ được ghi lại, thử nghiệm hoặc thiết kế như các nhà xây dựng công cộng. Người dùng được cho là sử dụng ssl.wrap_socket() hoặc SSLContext.
bpo-32929: Xóa tham số ba trạng thái "hash" và thêm boolean "unsafe_hash". Nếu không an toàn_hash là Đúng, hãy thêm hàm __hash__, nhưng nếu __hash__ tồn tại, hãy tăng TypeError. Nếu không an toàn_hash là Sai, hãy thêm __hash__ dựa trên các giá trị của eq= và Frozen=. Hành vi không an toàn_hash=False giống như hành vi hash=None cũ. không an toàn_hash=False là mặc định, giống như hash=None trước đây.
bpo-32947: Thêm OP_ENABLE_MIDDLEBOX_COMPAT và kiểm tra cách giải quyết cho TLSv1.3 để có khả năng tương thích với OpenSSL 1.1.1 trong tương lai.
bpo-32146: Ghi lại sự tương tác giữa các tệp thực thi bị đóng băng và các phương thức khởi động máy chủ phân nhánh và sinh sản trong đa xử lý.
bpo-30622: Mô-đun ssl hiện phát hiện hỗ trợ NPN bị thiếu trong LibreSSL.
bpo-32922: dbm.open() hiện mã hóa tên tệp bằng mã hóa hệ thống tệp thay vì mã hóa mặc định.
bpo-32759: Các đấu trường miễn phí chưa được sử dụng trong multiprocessing.heap.
bpo-32859: Trong
os.dup2, không kiểm tra mọi cuộc gọi xem tòa nhàdup3có tồn tại hay không.bpo-32556: nt._getfinalpathname, nt._getvolumepathname và nt._getdiskusage hiện chuyển đổi chính xác từ byte.
bpo-21060: Viết lại thông báo khó hiểu từ setup.py upload từ "Không có tệp dist nào được tạo trong lệnh trước đó" thành "Phải tạo và tải tệp lên trong một lệnh" hữu ích hơn.
bpo-32857: Trong
tkinter,after_cancel(None)hiện tăngValueErrorthay vì hủy chức năng được lên lịch đầu tiên. Bản vá của Cheryl Sabella.bpo-32852: Đảm bảo sys.argv vẫn ở dạng danh sách khi chạy dấu vết.
bpo-31333: mô-đun
_abcđược thêm vào. Nó là một mô-đun tăng tốc với triển khai C cho các chức năng và phương thức khác nhau trongabc. Việc tạo lớp con ABC và gọiisinstancehoặcissubclassbằng lớp con ABC nhanh hơn tới 1,5 lần. Ngoài ra, điều này còn giúp khởi động Python nhanh hơn tới 10%.Lưu ý rằng cách triển khai mới ẩn sổ đăng ký nội bộ và bộ đệm, trước đây có thể truy cập được thông qua các thuộc tính riêng tư
_abc_registry,_abc_cachevà_abc_negative_cache. Có ba phương pháp trợ giúp gỡ lỗi có thể được sử dụng thay thế_dump_registry,_abc_registry_clearvà_abc_caches_clear.bpo-32841: Đã khắc phục sự cố
asyncio.Conditionâm thầm bỏ qua việc hủy sau khi thông báo và hủy khóa có điều kiện. Bản vá của Bar Harel.bpo-32819: ssl.match_hostname() đã được đơn giản hóa và không còn phụ thuộc vào mô-đun re và ipaddress cho ký tự đại diện và địa chỉ IP nữa. Báo cáo lỗi cho các ký tự đại diện không hợp lệ đã được cải thiện.
bpo-19675:
multiprocessing.Poolkhông còn rò rỉ các quy trình nếu quá trình khởi tạo không thành công.bpo-32394: socket: Xóa các cờ TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL trên phiên bản Windows cũ hơn trong thời gian chạy.
bpo-31787: Đã sửa lỗi hiển thị các phương thức
__init__()trong các mô-đun khác nhau. (Được đóng góp bởi Oren Milman)bpo-30157: Đã sửa lỗi đoán trích dẫn và dấu phân cách trong csv.Sniffer.sniff() khi chỉ có trường cuối cùng được trích dẫn. Bản vá của Jake Davis.
bpo-30688: Đã thêm hỗ trợ thoát
\N{name}trong biểu thức thông thường. Dựa trên bản vá của Jonathan Eunice.bpo-32792: Collection.ChainMap() giữ nguyên thứ tự của các ánh xạ cơ bản.
bpo-32775:
fnmatch.translate()không còn tạo ra các mẫu chứa các thao tác đã thiết lập. Các bộ bắt đầu bằng '[' hoặc chứa '--', '&&', '~~' hoặc '||' sẽ được diễn giải khác nhau trong các biểu thức chính quy trong các phiên bản sau. Hiện nay họ phát ra cảnh báo. fnmatch.translate() giờ đây tránh vô tình tạo ra các mẫu chứa các tập hợp như vậy.bpo-32622: Triển khai tệp gửi nhanh gốc cho vòng lặp sự kiện thước đo Windows.
bpo-32777: Khắc phục sự cố bế tắc hiếm gặp nhưng tiềm ẩn của quy trình con trước khi thực thi trong quy trình con trên hệ thống POSIX khi đánh dấu các bộ mô tả tệp có thể kế thừa trên exec trong quy trình con. Lỗi này dường như đã được giới thiệu trong 3.4.
bpo-32647: Mô-đun ctypes được sử dụng để phụ thuộc vào liên kết gián tiếp cho dlopen. Tiện ích mở rộng được chia sẻ hiện được liên kết rõ ràng với libdl trên các nền tảng có dl.
bpo-32749: Cơ sở dữ liệu
dbm.dumbđược mở bằng cờ 'r' hiện ở chế độ chỉ đọc.dbm.dumb.open()có cờ 'r' và 'w' không còn tạo cơ sở dữ liệu nếu nó không tồn tại.bpo-32741: Thực hiện phương pháp
asyncio.TimerHandle.when().bpo-32691: Sử dụng mod_spec.parent khi chạy mô-đun với pdb
bpo-32734: Đã khắc phục sự cố an toàn
asyncio.Lock()cho phép lấy và khóa cùng một khóa nhiều lần mà không bị khóa. Bản vá của Bar Harel.bpo-32727: Không bao gồm trường tên trong phong bì SMTP từ địa chỉ. Bản vá của Stéphane Wirtel
bpo-31453: Thêm hằng số TLSVersion và thuộc tính SSLContext.maximum_version/minimum_version. Zz002zz mới bao gồm tính năng OpenSSL 1.1 https://web.archive.org/web/20180309043602/https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html.
bpo-24334: Chi tiết triển khai nội bộ của mô-đun ssl đã được dọn sạch. SSLSocket có ít lớp gián tiếp hơn. Thông tin về chủ sở hữu và phiên hiện được xử lý bởi hàm tạo SSLSocket và SSLObject. Việc thực hiện ràng buộc kênh đã được đơn giản hóa.
bpo-31848: Sửa lỗi xử lý trong Aifc_read.initfp() khi không tìm thấy đoạn SSND. Bản vá của Zackery Spytz.
bpo-32585: Thêm tiện ích spinbox Ttk vào
tkinter.ttk. Bản vá của Alan D Moore.bpo-32512:
profileCLI chấp nhận-m module_namethay thế cho đường dẫn tập lệnh.bpo-8525: help() trên một loại hiện hiển thị các lớp con dựng sẵn. Điều này chủ yếu nhằm mục đích trợ giúp thông báo về các lớp con ngoại lệ cụ thể hơn.
Bản vá của Sanyam Khurana.
bpo-31639: http.server hiện hiển thị lớp ThreadingHTTPServer và sử dụng nó khi mô-đun chạy với
-mđể đối phó với các ổ cắm mở trước trình duyệt web.bpo-29877: biên dịch: chỉ nhập ProcessPoolExecutor khi cần, tránh bị treo trên nền tảng tài nguyên thấp
bpo-32221: Nhiều hàm trả về bộ dữ liệu chứa địa chỉ IPv6 hiện đã bỏ qua phần
%scopevì thông tin tương tự đã được mã hóa trong mục bộ dữ liệu scopeid. Đặc biệt, điều này giúp tăng tốcsocket.recvfrom()khi nó nhận được gói multicast do việc phân giải tên giao diện mạng vô ích bị bỏ qua.bpo-32147:
binascii.unhexlify()hiện nhanh hơn gấp 2 lần. Bản vá của Serge Fedoseev.bpo-30693: Lớp TarFile hiện truy xuất lại các thư mục theo cách có thể tái tạo.
bpo-30693: Lớp ZipFile hiện truy xuất lại các thư mục theo cách có thể tái tạo.
bpo-31680: Đã thêm
curses.ncurses_version.bpo-31908: Sửa đầu ra của tệp bìa cho công cụ dòng lệnh mô-đun
trace. Các tệp bìa được phát ra trước đó chỉ khi sử dụng tùy chọn--missing. Bản vá của Michael Selik.bpo-31608: Tăng
TypeErrorthay vì gặp sự cố nếu lớp concollections.dequetrả về non-deque từ__new__. Bản vá của Oren Milman.bpo-31425: Thêm hỗ trợ cho các ổ cắm thuộc họ địa chỉ AF_QIPCRTR, được nhân Linux hỗ trợ. Điều này được sử dụng để liên lạc với các dịch vụ, chẳng hạn như GPS hoặc radio, chạy trên các thiết bị Qualcomm. Bản vá của Bjorn Andersson.
bpo-22005: Đã triển khai các phiên bản giải nén của
datetime,datevàtimeđược chọn bởi Python 2. Nên sử dụngencoding='latin1'để giải mã thành công.bpo-27645:
sqlite3.Connectionhiện hiển thị phương thứcbackup, nếu thư viện SQLite cơ bản ở phiên bản 3.6.11 trở lên. Bản vá của Lele Gaifax.bpo-16865: Hỗ trợ mảng >=2GiB trong
ctypes. Bản vá của Segev Finer.bpo-31508: Đã xóa hỗ trợ đối số trong
tkinter.ttk.Treeview.selection. Nó không được dùng nữa trong phiên bản 3.6. Sử dụng các phương pháp chuyên dụng nhưselection_setđể thay đổi vùng chọn.bpo-29456: Sửa lỗi chuẩn hóa hangul: u1176, u11a7 và u11c3
Tài liệu¶
bpo-21257: Tài liệu
http.client.parse_headers().bpo-34764: Cải thiện ví dụ về iter() với đối số trọng điểm thứ 2.
bpo-35564: Đặt rõ ràng biến master_doc trong conf.py để tuân thủ Sphinx 2.0
bpo-35511: Đã chỉ định rằng lớp profile.Profile không hỗ trợ các phương thức bật hoặc tắt. Ngoài ra, đối tượng Profile với tư cách là trình quản lý bối cảnh chỉ được hỗ trợ trong mô-đun cProfile.
bpo-10536: Nâng cao tài liệu gettext. Bản vá của Éric Araujo
bpo-35089: Xóa đề cập đến
typing.iovàtyping.re. Loại của chúng phải được nhập trực tiếp từtyping.bpo-35038: Sửa tài liệu về thuộc tính
f_restrictedkhông tồn tại trong đối tượng khung. Bản vá của Stéphane Wirtelbpo-35042: Thay thế PEP XYZ bằng vai trò pep và cho phép sử dụng các liên kết trực tiếp đến PEP.
bpo-35044: Sửa tài liệu có vai trò
exccho ngoại lệ thích hợp. Bản vá của Stéphane Wirtelbpo-35035: Đổi tên tài liệu cho
email.utilsthànhemail.utils.rst.bpo-34967: Sử dụng app.add_object_type() thay vì hàm Sphinx không được dùng nữa app.description_unit()
bpo-34913: Thêm tài liệu về giao diện dòng lệnh mới của mô-đun gzip.
bpo-32174: tài liệu chm hiển thị chính xác các ký tự không phải ASCII trên một số hệ thống Windows MBCS.
bpo-11233: Tạo chỉ thị sẵn có cho tài liệu. Bản vá gốc của Georg Brandl.
bpo-34790: Ghi lại cách truyền coroutine tới asyncio.wait() có thể gây nhầm lẫn.
bpo-34552: Hãy làm rõ rằng toán tử
==đôi khi tương đương vớiis. Các toán tử<,<=,>và>=chỉ được xác định khi chúng có ý nghĩa.bpo-28617: Đã sửa thông tin trong tài liệu stdtypes liên quan đến các loại hỗ trợ kiểm tra tư cách thành viên.
bpo-20177: Di chuyển datetime.date.fromtimestamp sang Phòng khám tranh luận. Bản vá của Tim Hoffmann.
bpo-34065: Sửa lỗi cú pháp đánh dấu tài liệu basicConfig bị viết sai
bpo-33460: thay thế dấu chấm lửng bằng mã lỗi chính xác trong hướng dẫn chương 3.
bpo-33847: Thêm mục nhập toán tử '@' vào chỉ mục.
bpo-33409: Làm rõ mối quan hệ giữa chế độ PYTHONCOERCECLOCALE của PEP 538 và chế độ PYTHONUTF8 của PEP 540.
bpo-33197: Thêm thẻ phiên bản được thêm vào tài liệu của ParameterKind.description
bpo-17045: Cải thiện tài liệu C-API cho PyTypeObject. Điều này bao gồm việc thêm một số bảng tham chiếu nhanh và nhiều mục nhập slot/typedef bị thiếu. Các mục hiện có cũng đã được dọn dẹp với định dạng phù hợp hơn một chút.
bpo-33736: Cải thiện tài liệu về
asyncio.open_connection(),asyncio.start_server()và các đối tác ổ cắm UNIX của chúng.bpo-23859: Chứng minh rằng
asyncio.wait()không hủy hợp đồng tương lai khi hết thời gian chờ.bpo-33604: Cập nhật mặc định HMAC md5 thành DeprecationWarning, loại bỏ vết sưng lên 3.8.
bpo-33594: Tài liệu
getargspec,from_functionvàfrom_builtinkhông được dùng nữa trong chuỗi tài liệu tương ứng và bao gồm phiên bản kể từ khi không được dùng nữa trong thông báo Cảnh báo không dùng nữa.bpo-33503: Sửa liên kết pypi bị hỏng
bpo-33421: Thêm tài liệu còn thiếu cho
typing.AsyncContextManager.bpo-33487: BZ2file hiện phát ra Cảnh báo không dùng nữa khi bộ đệm=None được thông qua, thông báo và tài liệu về việc không dùng nữa hiện cũng nêu rõ rằng nó không được dùng nữa kể từ phiên bản 3.0.
bpo-33378: Thêm bộ chuyển đổi ngôn ngữ tiếng Hàn cho https://python.go-mizu.dev/
bpo-33276: Làm rõ rằng thuộc tính
__path__trên mô-đun không thể có bất kỳ giá trị nào.bpo-33201: Hiện đại hóa tài liệu để viết các loại phần mở rộng C.
bpo-33195: Không dùng nữa việc sử dụng
Py_UNICODEtrong tài liệuc-api/arg. Các API liên quan đếnPy_UNICODEkhông được dùng nữa kể từ Python 3.3, nhưng nó bị thiếu trong tài liệu.bpo-33126: Tài liệu PyBuffer_ToContiguous().
bpo-27212: Sửa đổi tài liệu cho công thức
islice()để sử dụng các giá trị ban đầu cho đến chỉ mục bắt đầu.bpo-28247: Cập nhật tài liệu
zipappđể mô tả cách tạo các ứng dụng độc lập.bpo-18802: Thay đổi tài liệu cho ipaddress. Bản vá của Jon Foster và Berker Peksag.
bpo-27428: Cập nhật tài liệu để làm rõ rằng
WindowsRegistryFindertriển khaiMetaPathFinder. (Bản vá của Himanshu Lakhara)bpo-28124: Hàm mô-đun ssl ssl.wrap_socket() đã không được nhấn mạnh và không được dùng nữa để thay thế bằng phương thức SSLContext.wrap_socket() an toàn và hiệu quả hơn.
bpo-17232: Làm rõ tài liệu cho -O và -OO. Bản vá của Terry Reedy.
bpo-32436: Thêm tài liệu cho mô-đun bối cảnh (PEP 567).
bpo-32800: Cập nhật liên kết tới tài liệu w3c cho các không gian tên mặc định xml.
bpo-11015: Cập nhật tài liệu
test.support.bpo-32613: Cập nhật faq/windows.html để sử dụng lệnh py từ PEP 397 thay vì python.
bpo-8722: Ghi lại hành vi của
__getattr__()khi thuộc tínhget()tăngAttributeError.bpo-32614: Sửa đổi các ví dụ RE trong tài liệu để sử dụng chuỗi thô nhằm ngăn chặn
DeprecationWarningvà thêm văn bản vào REGEX HOWTO để làm nổi bật việc không dùng nữa.bpo-20709: Xóa đoạn chúng tôi giải thích rằng os.utime() không hỗ trợ thư mục dưới dạng đường dẫn trong Windows. Bản vá của Jan-Philip Gehrcke
bpo-32722: Loại bỏ ví dụ xấu trong phần hướng dẫn về Generator Expression. Bản vá của Stéphane Wirtel
bpo-31972: Cải thiện chuỗi tài liệu cho các lớp con
pathlib.PurePath.bpo-30607: Sử dụng gói
python-docs-themebên ngoài khi xây dựng tài liệu.bpo-8243: Thêm ghi chú về hành vi ngoại lệ của lời nguyền.addch và lời nguyền.addstr khi viết bên ngoài cửa sổ hoặc bảng tính.
bpo-32337: Cập nhật tài liệu liên quan đến đơn hàng
dict.bpo-31432: Làm rõ ý nghĩa của các cờ CERT_NONE, CERT_OPTIONAL và CERT_REQUIRED cho ssl.SSLContext.verify_mode.
Kiểm tra¶
bpo-35772: Khắc phục các bài kiểm tra tệp thưa thớt của test_tarfile trên ppc64 bằng hệ thống tệp tmpfs. Sửa lỗi kiểm tra chức năng nếu hệ thống tập tin hỗ trợ các tập tin thưa thớt: tạo một tập tin chứa dữ liệu và "lỗ hổng", thay vì tạo một tập tin không chứa dữ liệu. kích thước khối hiệu quả của tmpfs là kích thước trang (tmpfs nằm trong bộ đệm trang). RHEL sử dụng 64 trang KiB trên aarch64, ppc64, ppc64le, chỉ có s390x và x86_64 sử dụng 4 trang KiB, trong khi các lỗ đục thử nghiệm là 4 KiB.
bpo-35045: Thực hiện các bài kiểm tra ssl ít nghiêm ngặt hơn và cũng chấp nhận TLSv1 làm mặc định của hệ thống. Các thay đổi không phá vỡ test_min_max_version trên Fedora 29.
bpo-32710:
test_asyncio/test_sendfile.pyhiện đặt lại chính sách vòng lặp sự kiện bằngtearDownModule()như được thực hiện trong các thử nghiệm khác, để ngăn cảnh báo khi chạy thử nghiệm trên Windows.bpo-33717: test.pythoninfo hiện ghi lại thông tin của tất cả các đồng hồ, không chỉ time.time() và time.perf_counter().
bpo-35488: Thêm một bài kiểm tra vào Path.match() của pathlib để xác minh rằng nó không hỗ trợ khớp mẫu đệ quy ** kiểu toàn cầu.
bpo-31731: Khắc phục tình trạng chạy đua trong
check_interrupted_write()của test_io: tạo trực tiếp luồng có tín hiệu SIGALRM bị chặn, thay vì chặn tín hiệu sau này từ luồng. Trước đây, có thể luồng nhận được tín hiệu trước khi tín hiệu bị chặn.bpo-35424: Khắc phục test_multiprocessing_main_handling: sử dụng
multiprocessing.Poolvới trình quản lý bối cảnh và sau đó tham gia nhóm một cách rõ ràng.bpo-35519: Đổi tên mô-đun
test.bisectthànhtest.bisect_cmdđể tránh xung đột với mô-đunbisectkhi chạy trực tiếp một bài kiểm tra như./python Lib/test/test_xmlrpc.py.bpo-35513: Thay thế
time.time()bằngtime.monotonic()trong các thử nghiệm để đo delta thời gian.bpo-34279:
test.support.run_unittest()không còn tăngTestDidNotRunnếu kết quả kiểm tra có chứa các bài kiểm tra bị bỏ qua. Ngoại lệ hiện chỉ được đưa ra nếu không có thử nghiệm nào được chạy và không có thử nghiệm nào bị bỏ qua.bpo-35412: Thêm testcase vào
test_future4: kiểm tra chữ unicode.bpo-26704: Đã thêm thử nghiệm thể hiện việc vá hai lần một phương thức phiên bản. Bản vá của Anthony Sottile.
bpo-33725: test_multiprocessing_fork có thể gặp sự cố trên các phiên bản macOS gần đây. Cho đến khi vấn đề được giải quyết, hãy bỏ qua quá trình kiểm tra trên macOS.
bpo-35352: Sửa đổi test_asyncio để sử dụng bộ chứng chỉ từ thư mục kiểm tra.
bpo-35317: Sửa lỗi tràn
mktime()trongtest_email: chạytest_localtime_daylight_true_dst_true()vàtest_localtime_daylight_false_dst_true()với múi giờ cụ thể.bpo-21263: Sau một số báo cáo rằng test_gdb không hoạt động bình thường trên macOS và do gdb không được vận chuyển theo mặc định nữa nên test_gdb hiện bị bỏ qua trên macOS khi LLVM Clang được sử dụng để biên dịch Python. Bản vá của Lysandros Nikolaou
bpo-34279: regrtest đưa ra cảnh báo khi không có thử nghiệm nào được thực hiện trong một tệp thử nghiệm cụ thể. Ngoài ra, trạng thái kết quả cuối cùng mới sẽ được đưa ra nếu không có thử nghiệm nào được thực hiện trên tất cả các tệp thử nghiệm. Bản vá của Pablo Galindo.
bpo-34962: tạo tài liệu trong Doc hiện đã vượt qua. và được thực thi trong CI
bpo-23596: Sử dụng argparse cho dòng lệnh của mô-đun gzip. Bản vá của Antony Lee
bpo-34537: Sửa lỗi
test_gdb.test_strings()khiLC_ALL=Cvà GDB được biên dịch bằng Python 3.6 trở về trước.bpo-34587: test_socket: Xóa RDSTest.testCongestion(). Quá trình kiểm tra sẽ cố gắng lấp đầy bộ đệm ổ cắm của máy thu và dự đoán sẽ xảy ra lỗi. Nhưng giao thức RDS không yêu cầu điều đó. Hơn nữa, việc triển khai RDS trên Linux hy vọng rằng người tạo tin nhắn sẽ giảm tốc độ của nó, vai trò của người nhận không phải là gây ra lỗi. Thử nghiệm thất bại trên Fedora 28 theo thiết kế, vì vậy chỉ cần loại bỏ nó.
bpo-34661: Sửa test_shutil nếu giải nén không hỗ trợ -t.
bpo-34200: Đã sửa lỗi không xác định của test_pkg bằng cách không sử dụng logic test.support.module_cleanup() đáng sợ để lưu và khôi phục nội dung sys.modules giữa các trường hợp thử nghiệm.
bpo-34569: Các kênh dữ liệu PEP 554 thử nghiệm hiện truyền chính xác các đối tượng PyLong âm giữa các trình thông dịch phụ trên hệ thống 32 bit. Bản vá của Michael Felt.
bpo-34594: Khắc phục việc sử dụng các giá trị
errnođược mã hóa cứng trong các thử nghiệm.bpo-34579: Fix test_embed cho bản vá AIX của Michael Felt
bpo-34542: Sử dụng 3072 phím RSA và chữ ký SHA-256 cho chứng chỉ và khóa kiểm tra.
bpo-11193: Xóa điều kiện đặc biệt cho AIX trong
test_subprocess.test_undecodable_envbpo-34347: Sửa
test_utf8_mode.test_cmd_linecho AIXbpo-34490: Trên AIX có ổ cắm gia đình AF_UNIX getsockname() không cung cấp 'sockname', vì vậy hãy bỏ qua cuộc gọi đến Transport.get_extra_info('sockname')
bpo-34391: Sửa lỗi kiểm tra ftplib cho TLS 1.3 bằng cách đọc từ ổ cắm dữ liệu.
bpo-11192: Sửa lỗi
test_sockettrên AIX 6.1 trở lên hỗ trợ id vùng IPv6 chỉ đượcinet_pton6_zone()hỗ trợ. Chuyển sangplatform.system()dựa trên thời gian chạy để thiết lập nền tảng hiện tại thay vìsys.platform()dựa trên thời gian xây dựngbpo-34399: Cập nhật tất cả các khóa RSA và thông số DH để sử dụng ít nhất 2048 bit.
bpo-34373: Sửa các bài kiểm tra
test_mktimevàtest_pthread_getcpuclickidcho AIX Thêm kiểm tra phạm vi cho_PyTime_localtimecho AIX Bản vá của Michael Feltbpo-11191: Bỏ qua bài kiểm tra distutils 'test_search_cpp' khi sử dụng XLC làm bản vá trình biên dịch của aixtools (Michael Felt)
Cải thiện thông báo lỗi khi mô phỏng khẳng định_has_calls không thành công.
bpo-33746: Sửa test_unittest khi chạy ở chế độ dài dòng.
bpo-33901: Fix test_dbm_gnu trên macOS với gdbm 1.15: thêm giá trị lớn hơn để đảm bảo kích thước tệp thay đổi.
bpo-33873: Sửa lỗi trong
regrtestkhiến chạy thử nghiệm bổ sung nếu --huntrleaks/-R được sử dụng. Thoát có lỗi trong trường hợp các tham số không hợp lệ được chỉ định cho --huntrleaks/-R (phải sử dụng ít nhất một lần chạy khởi động và một lần lặp lại).bpo-33562: Kiểm tra xem chính sách vòng lặp sự kiện asyncio toàn cầu không bị bỏ sót bởi bất kỳ thử nghiệm nào.
bpo-33655: Bỏ qua lỗi test_posix_fallocate trên nền tảng BSD có thể do chạy trên ZFS.
bpo-32962: Đã sửa lỗi test_gdb khi Python được biên dịch bằng cờ -mcet -fcf-protection -O0.
bpo-33358: Sửa lỗi
test_embed.test_pre_initialization_sys_options()khi trình thông dịch được xây dựng bằng--enable-shared.bpo-32872: Tránh vấn đề tương thích đáng tiếc nhất với các gói không gian tên.
bpo-32517: Khắc phục lỗi
test_asynciotrên macOS 10.12.2+ do quá trình vận chuyển vòng lặpKqueueSelectorkhông bị đóng.bpo-32663: Đảm bảo lớp kiểm tra
SMTPUTF8SimTestsđược chạy trongtest_smtplib.py.bpo-27643: Trường hợp kiểm tra Test_C cần các trường bit "được ký ngắn", nhưng trình biên dịch IBM XLC (trên AIX) không hỗ trợ điều này Bỏ qua mã và kiểm tra khi sử dụng AIX và XLC
Áp dụng cho Python2-2.7 trở lên
bpo-19417: Thêm test_bdb.py.
bpo-31809: Thêm các bài kiểm tra để xác minh kết nối với các đường cong ECDH của secp.
xây dựng¶
bpo-34691: Mô-đun _contextvars hiện được tích hợp vào thư viện Python cốt lõi trên Windows.
bpo-35683: Các bước xây dựng Đường ống Azure được cải tiến và hiện đang xác minh bố cục chính xác
bpo-35642: Xóa asynciomodule.c khỏi pythoncore.vcxproj
bpo-35550: Sửa lỗi kiểm tra Solaris #ifdef không chính xác để tìm kiếm __sun && __SVR4 thay vì sun khi biên dịch.
bpo-35499:
make profile-optkhông còn thay thếCFLAGS_NODISTbằngCFLAGSnữa. Giờ đây, nó bổ sung thêm các cờ tối ưu hóa theo hướng dẫn hồ sơ (PGO) vàoCFLAGS_NODIST: các cờCFLAGS_NODISThiện có được giữ lại.bpo-35257: Tránh rò rỉ các cờ liên kết từ Tối ưu hóa thời gian liên kết (LTO) vào các distutils khi biên dịch tiện ích mở rộng C.
bpo-35351: Khi xây dựng Python bằng clang và LTO, cờ LTO không còn được chuyển vào CFLAGS để xây dựng tiện ích mở rộng C của bên thứ ba thông qua distutils.
bpo-35139: Sửa lỗi biên dịch khi liên kết tĩnh
pyexpattrongModules/Setup.bpo-35059: PCbuild: Đặt InlineFunctionExpansion thành OnlyExplicitInline ("/Ob1") trong pyproject.props ở chế độ Gỡ lỗi để mở rộng các chức năng được đánh dấu là nội tuyến. Thay đổi này sẽ giúp Python được biên dịch ở chế độ Gỡ lỗi nhanh hơn một chút trên Windows.
bpo-35011: Khôi phục việc sử dụng pyexpatns.h để cô lập bản sao nhúng của thư viện C của người nước ngoài để các ký hiệu của nó không xung đột tại liên kết hoặc thời gian tải động với ứng dụng nhúng hoặc các mô-đun mở rộng khác có phiên bản libexpat của riêng chúng.
bpo-28015: Có --with-lto hoạt động chính xác với clang.
bpo-34765: Cập nhật tệp install-sh lỗi thời lên bản sửa đổi mới nhất từ automake v1.16.1
bpo-34585: Kiểm tra thứ tự byte dấu phẩy động trong configure.ac bằng cách sử dụng kiểm tra biên dịch thay vì thực thi mã để các kiểm tra này hoạt động trong các bản dựng được biên dịch chéo.
bpo-34710: Đã sửa lỗi xây dựng mô-đun SSL với OpenSSL & CFLAGS mô phạm.
bpo-34582: Thêm đầu ra JUnit XML để kiểm tra hồi quy và cập nhật các bản dựng Azure DevOps.
bpo-34081: Biến cảnh báo Sphinx thành lỗi trong Docs Makefile.
bpo-34555: Khắc phục trường hợp không thể xác định cả
HAVE_LINUX_VM_SOCKETS_HvàHAVE_SOCKADDR_ALG.bpo-33015: Khắc phục hành vi không xác định trong quá trình triển khai pthread của
PyThread_start_new_thread(): thêm trình bao bọc hàm để luôn trả vềNULL.bpo-34245: Thư viện chia sẻ Python hiện đã được cài đặt với quyền ghi (chế độ 0755), đây là cách tiêu chuẩn để cài đặt các thư viện đó.
bpo-34121: Khắc phục sự cố phát hiện hỗ trợ nguyên tử C11 trên clang.
bpo-32430: Đổi tên Mô-đun/Setup.dist thành Mô-đun/Thiết lập và loại bỏ nhu cầu sao chép thủ công mô-đun trước sang mô-đun sau khi cập nhật cây nguồn cục bộ.
bpo-30345: Thêm -g vào LDFLAGS khi biên dịch bằng LTO để lấy biểu tượng gỡ lỗi.
bpo-5755: Di chuyển tùy chọn
-Wstrict-prototypessangCFLAGS_NODISTtừOPT. Tùy chọn này đưa ra những cảnh báo khó chịu khi xây dựng các mô-đun mở rộng được viết bằng C++.bpo-33614: Đảm bảo các tệp định nghĩa mô-đun cho ABI ổn định trên Windows được tái tạo chính xác.
bpo-33648: Cờ cấu hình --with-c-locale-warning đã bị xóa. Nó không có tác dụng trong khoảng một năm.
bpo-33522: Kích hoạt tính năng xây dựng CI trên Visual Studio Team Services tại https://python.visualstudio.com/cpython
bpo-33512: việc kiểm tra cấu hình cho "long double" đã được đơn giản hóa
bpo-33483: Trình biên dịch C hiện được phát hiện chính xác từ các biến môi trường tiêu chuẩn. Các tùy chọn --without-gcc và --with-icc đã bị xóa.
bpo-33394: Kích hoạt tính năng xây dựng chi tiết cho các mô-đun mở rộng, khi GNU make được truyền macro trên dòng lệnh.
bpo-33393: Cập nhật file config.guess và config.sub.
bpo-33377: Thêm bộ ba mới cho các biến thể mips r6 và riscv (được sử dụng trong hậu tố mở rộng).
bpo-32232: Theo mặc định, các mô-đun được định cấu hình trong
Modules/Setupkhông còn được tạo bằng-DPy_BUILD_COREnữa. Thay vào đó, các mô-đun đặc biệt cần định nghĩa tiền xử lý đó sẽ đưa nó vào các mục riêng lẻ của chúng.bpo-33182: Các thử nghiệm nhúng một lần nữa có thể được xây dựng bằng clang 6.0
bpo-33163: Nâng cấp pip lên 9.0.3 và setuptools lên v39.0.1.
bpo-33012: gcc 8 đã thêm một heuristic cảnh báo mới để phát hiện các phôi chức năng không hợp lệ và bản dựng python stock dường như gặp phải cảnh báo đó khá thường xuyên. Phổ biến nhất là truyền hàm METH_NOARGS (chỉ sử dụng một đối số) cho PyCFunction. Hãy khắc phục điều này bằng cách thêm đối số giả vào tất cả các hàm triển khai METH_NOARGS.
bpo-32898: Sửa bản dựng gỡ lỗi python khi sử dụng COUNT_ALLOCS.
bpo-29442: Thay thế optparse bằng argparse trong setup.py
cửa sổ¶
bpo-35890: Khắc phục tính nhất quán khi gọi API của GetVersionEx và wcstok.
bpo-32560: Trình khởi chạy
pyhiện chuyển tiếp cấu trúcSTARTUPINFOcủa nó tới các tiến trình con.bpo-35854: Sửa lỗi EnvBuilder và --symlinks trong venv trên Windows
bpo-35811: Tránh truyền bá cài đặt venv khi khởi chạy qua py.exe
bpo-35797: Sửa lỗi thực thi mặc định được sử dụng bởi mô-đun đa xử lý
bpo-35758: Cho phép xây dựng trên ARM với MSVC.
bpo-29734: Sửa lỗi rò rỉ xử lý trong os.stat trên Windows.
bpo-35596: Sử dụng PYC không được chọn cho bản phân phối có thể nhúng để tránh các hạn chế về nhập zip.
bpo-35596: Sửa lỗi vcruntime140.dll được thêm vào bản phân phối có thể nhúng nhiều lần.
bpo-35402: Cập nhật bản build Windows để sử dụng Tcl và Tk 8.6.9
bpo-35401: Cập nhật bản dựng Windows lên OpenSSL 1.1.0j
bpo-34977: venv trên Windows giờ đây sẽ sử dụng trình chuyển hướng python.exe thay vì sao chép các tệp nhị phân thực tế từ môi trường cơ sở.
bpo-34977: Thêm hỗ trợ xây dựng gói Windows App Store
bpo-35067: Xóa mô-đun _distutils_findvs và thay vào đó sử dụng vswhere.exe.
bpo-32557: Cho phép Shutil.disk_usage lấy đường dẫn file trên Windows
bpo-34770: Sửa lỗi vô hiệu hóa con trỏ null có thể có trong pyshellext.cpp.
bpo-34603: Sửa các cấu trúc trả về từ các hàm do MSVC tạo ra
bpo-34581: Bảo vệ mã dành riêng cho MSVC trong socketmodule.c bằng
#ifdef _MSC_VER.bpo-34532: Sửa mã thoát của đối số phiên bản danh sách cho py.exe.
bpo-34062: Đã sửa lỗi đối số '--list' và '--list-paths' cho trình khởi chạy py.exe
bpo-34225: Đảm bảo thư mục INCLUDE và LIB không kết thúc bằng dấu gạch chéo ngược.
bpo-34011: Một bộ mã đã được thay đổi, sao chép trên các tệp DLL và init.tcl từ vị trí Python đang chạy sang một venv đang được tạo. Những bản sao này chỉ cần thiết khi chạy từ bản dựng nguồn Python và mã sao chép hiện chỉ chạy khi trường hợp đó xảy ra, thay vì bất cứ khi nào venv được tạo.
bpo-34006: Hoàn nguyên giới hạn độ dài dòng cho tài liệu trợ giúp của Windows. Không cần giới hạn độ dài dòng vì các trang xuất hiện trong một ứng dụng riêng biệt chứ không phải trên tab trình duyệt. Nó cũng có thể tương tác không tốt với cài đặt DPI.
bpo-31546: Khôi phục PyOS_InputHook đang chạy trong khi chờ người dùng nhập vào dấu nhắc. Việc khôi phục tích hợp các cửa sổ GUI tương tác (chẳng hạn như số liệu Matplotlib) với lời nhắc trên Windows.
bpo-30237: Lỗi đầu ra khi ReadConsole bị CancelSynchronousIo hủy thay vì gặp sự cố.
bpo-33895: GIL được giải phóng trong khi gọi các hàm yêu cầu khóa trình tải Windows.
bpo-33720: Giảm độ sâu đệ quy so sánh tối đa trên các bản phát hành.
bpo-29097: Sửa lỗi trong đó
datetime.fromtimestamp()ném nhầmOSErrortrên Windows với các giá trị từ 0 đến 86400. Bản vá của Ammar Askar.bpo-33316: PyThread_release_lock luôn thất bại
bpo-33184: Cập nhật trình cài đặt Windows để sử dụng OpenSSL 1.1.0h.
bpo-32890: Khắc phục việc sử dụng GetLastError() thay vì errno trong os.execve() và os.truncate().
bpo-33016: Khắc phục khả năng sử dụng bộ nhớ chưa được khởi tạo trong nt._getfinalpathname
bpo-32903: Khắc phục rò rỉ bộ nhớ trong os.chdir() trên Windows nếu thư mục hiện tại được đặt thành đường dẫn UNC.
bpo-32901: Cập nhật phiên bản Tcl và Tk lên 8.6.8
bpo-31966: Đã sửa lỗi WindowsConsoleIO.write() để ghi dữ liệu trống.
bpo-32409: Đảm bảo activate.bat có thể xử lý nội dung Unicode.
bpo-32457: Cải thiện việc xử lý đường dẫn thực thi không chuẩn hóa khi khởi chạy Python.
bpo-32370: Sử dụng mã hóa chính xác cho đầu ra ipconfig trong mô-đun uuid. Bản vá của Segev Finer.
bpo-29248: Khắc phục
os.readlink()trên Windows, lỗi này xử lý nhầm trườngPrintNameOffsetcủa bộ đệm dữ liệu phân tích cú pháp dưới dạng một số ký tự thay vì byte. Bản vá của Craig Holmquist và SSE4.bpo-1104: Xử lý chính xác độ dài chuỗi trong
msilib.SummaryInfo.GetProperty()để ngăn nó cắt bớt ký tự cuối cùng.
macOS¶
bpo-35401: Cập nhật trình cài đặt macOS để sử dụng OpenSSL 1.1.0j.
bpo-35025: Bảo vệ đúng cách việc sử dụng
CLOCK_GETTIMEet al. macro trongtimemoduletrên macOS.bpo-24658: Trên macOS, sửa lỗi đọc và ghi vào file có kích thước lớn hơn 2 GiB.
bpo-34405: Cập nhật lên OpenSSL 1.1.0i cho các bản dựng trình cài đặt macOS.
bpo-33635: Trong chỉ số macOS trên một số bộ mô tả tệp (/dev/fd/3 f.e) sẽ dẫn đến bộ mô tả tệp sai OSError. Tính năng bảo vệ chống lại ngoại lệ này đã được thêm vào trong is_dir, is_file và các phương thức tương tự. DirEntry.is_dir cũng có thể đưa ra ngoại lệ này nên _RecursiveWildcardSelector._iterate_directories cũng được mở rộng với mẫu bỏ qua lỗi tương tự.
bpo-13631: Tệp .editrc trong thư mục chính của người dùng hiện được xử lý chính xác trong quá trình khởi tạo dòng đọc thông qua mô phỏng dòng chỉnh sửa trên macOS.
bpo-33184: Cập nhật bản dựng trình cài đặt macOS để sử dụng OpenSSL 1.1.0h.
bpo-32726: Xây dựng và liên kết với bản sao riêng của Tcl/Tk 8.6 cho trình cài đặt macOS 10.6+. Biến thể trình cài đặt 10.9+ đã thực hiện điều này. Điều này có nghĩa là Python 3.7 do trình cài đặt macOS python.org cung cấp không còn cần hoặc sử dụng bất kỳ phiên bản bên ngoài nào của Tcl/Tk, do hệ thống cung cấp hoặc do người dùng cài đặt, chẳng hạn như ActiveTcl.
bpo-32901: Cập nhật trình cài đặt macOS 10.9+ lên Tcl/Tk 8.6.8.
bpo-31903: Trong
_scproxybỏ GIL khi gọi vàoSystemConfigurationđể tránh bế tắc.
IDLE¶
bpo-35770: IDLE macosx xóa Tùy chọn => Cấu hình IDLE. Trước đó nó đã xóa nhầm Window => Zoom Height. (Chiều cao thu phóng hiện có trên menu Tùy chọn). Trên máy Mac, hộp thoại cài đặt được truy cập thông qua Tùy chọn trên menu IDLE.
bpo-35769: Thay đổi tên tệp mới của IDLE từ 'Chưa có tiêu đề' thành 'không có tiêu đề'
bpo-35660: Sửa lỗi nhập trong idlib.window.
bpo-35641: Định dạng
calltipphù hợp khi hàm không có chuỗi tài liệu.bpo-33987: Sử dụng ttk Frame cho các widget ttk.
bpo-34055: Sửa lỗi thụt lề và dòng mới 'thông minh' trong IDLE Shell.
bpo-35591: Tìm lựa chọn hiện hoạt động khi không tìm thấy lựa chọn.
bpo-35196: Tăng tốc độ đếm dòng máy ép.
bpo-35598: Cập nhật config_key: sử dụng PEP 8 tên và tiện ích ttk, đặt một số đối tượng thành toàn cục và thêm các thử nghiệm.
bpo-28097: Thêm các mục Lịch sử Trước/Tiếp theo vào menu Shell.
bpo-35208: Squeezer hiện đếm chính xác các dòng được gói trước dòng mới.
bpo-35555: Xóa mục nhập menu Ngữ cảnh mã bằng màu xám khi nó không áp dụng được.
bpo-35521: Ghi lại tính năng ngữ cảnh mã soạn thảo IDLE. Thêm một số tài liệu tham khảo nội bộ trong tài liệu IDLE.
bpo-22703: Nhãn menu Ngữ cảnh mã hiện chuyển đổi giữa Hiển thị/Ẩn ngữ cảnh mã. Menu Thu phóng Chiều cao hiện chuyển đổi giữa Thu phóng/Khôi phục Chiều cao. Chiều cao thu phóng đã chuyển từ menu Cửa sổ sang menu Tùy chọn.
bpo-35213: Khi thích hợp, hãy sử dụng 'macOS' trong Idlelib.
bpo-34864: Trên macOS, hãy cảnh báo nếu tùy chọn hệ thống "Thích tab khi mở tài liệu" được đặt thành "Luôn luôn".
bpo-34864: Ghi lại hai IDLE về các vấn đề của MacOS. Cài đặt "luôn thích tab" của Dock tùy chọn hệ thống sẽ vô hiệu hóa một số tính năng IDLE. Các menu hơi khác một chút so với mô tả của Windows và Linux.
bpo-35202: Xóa các mục nhập không sử dụng khỏi lib/idlelib
bpo-33000: Tài liệu cho thấy shell của IDLE không có giới hạn dòng. Một chương trình chạy vô thời hạn có thể làm tràn bộ nhớ.
bpo-23220: Giải thích cách Shell của IDLE hiển thị đầu ra.
bpo-35099: Cải thiện tài liệu về mã người dùng đang chạy IDLE. Phần được đổi tên từ "IDLE -- sự khác biệt của bảng điều khiển" được đổi tên thành "Đang chạy mã người dùng". Nó chủ yếu đề cập đến ý nghĩa của việc sử dụng các đối tượng
sys.stdxxxtùy chỉnh.bpo-35097: Thêm tiểu mục tài liệu IDLE giải thích các cửa sổ soạn thảo. Các chủ đề bao gồm phần mở đầu, thanh tiêu đề và trạng thái, phần mở rộng .py* và đang chạy.
bpo-35093: Ghi lại trình xem tài liệu IDLE trong tài liệu IDLE. Thêm một đoạn trong tiểu mục "Trợ giúp và tùy chọn", "Nguồn trợ giúp".
bpo-35088: Cập nhật chuỗi tài liệu idlib.help.copy_string. Bây giờ chúng tôi sử dụng git và backporting thay vì hg và hợp nhất về phía trước.
bpo-35087: Cập nhật tệp trợ giúp Idlelib cho bản dựng tài liệu hiện tại. Sự thay đổi chính là việc loại bỏ số phần chương.
bpo-34548: Sử dụng chủ đề màu đã định cấu hình cho chế độ xem văn bản chỉ đọc.
bpo-1529353: Cho phép "ép" các đầu ra dài trong shell, để tránh suy giảm hiệu suất và xóa lịch sử mà không làm mất nó. Các đầu ra đã nén có thể được sao chép, xem trong một cửa sổ riêng và "không bị ép".
bpo-34047: Sửa hướng cuộn con lăn chuột trên macOS.
bpo-34275: Làm cho mẹo gọi IDLE luôn hiển thị trên máy Mac. Một số kết hợp MacOS-tk cần .update_idletasks(). Bản vá của Kevin Walzer.
bpo-34120: Khắc phục tình trạng không phản hồi sau khi đóng một số cửa sổ và hộp thoại nhất định.
bpo-33975: Tránh gõ nhỏ khi chạy htests. Vì một phần mục đích của các thử nghiệm do con người xem là để xác định xem các vật dụng có trông ổn hay không, điều quan trọng là chúng trông giống nhau khi thử nghiệm cũng như khi chạy IDLE.
bpo-33905: Thêm thử nghiệm cho idlib.stackview.StackBrowser.
bpo-33924: Thay đổi phím mainmenu.menudefs 'windows' thành 'window'. Mọi phím menudef khác đều là phiên bản chữ thường của mục menu chính.
bpo-33906: Đổi tên idlib.windows thành cửa sổ Match Window trên menu chính và xóa tên mô-đun số nhiều cuối cùng.
bpo-33917: Sửa và ghi lại idlelib/idle_test/template.py. Tệp đã sửa đổi sẽ biên dịch, chạy và kiểm tra OK. Idle_test/README.txt giải thích cách sử dụng nó để tạo các tệp kiểm tra IDLE mới.
bpo-33904: IDLE: Trong rstrip, đổi tên lớp RstripExtension thành Rstrip
bpo-33907: Để nhất quán và rõ ràng, hãy đổi tên mô-đun và các lớp IDLE. Mẹo gọi mô-đun và CallTips lớp của nó hiện là calltip và Calltip. Trong mô-đun calltip_w, lớp CallTip hiện là CalltipWindow.
bpo-33856: Thêm "trợ giúp" vào tin nhắn chào mừng của IDLE
bpo-33839: IDLE: refactor ToolTip và CallTip, đồng thời thêm tài liệu và kiểm tra
bpo-33855: Kiểm tra tối thiểu tất cả các mô-đun IDLE. Thêm các tệp bị thiếu, nhập mô-đun, khởi tạo các lớp và kiểm tra mức độ phù hợp. Kiểm tra các tập tin hiện có.
bpo-33656: Trên Windows, thêm lệnh gọi API nói rằng tk chia tỷ lệ cho DPI. Trên Windows 8.1+ hoặc 10, với các thuộc tính tương thích DPI của tệp nhị phân Python không thay đổi và độ phân giải màn hình lớn hơn 96 DPI, điều này sẽ làm cho văn bản và đường nét sắc nét hơn. Nếu không thì nó sẽ không có tác dụng.
bpo-33768: Nhấp vào dòng ngữ cảnh sẽ di chuyển dòng đó lên đầu cửa sổ soạn thảo.
bpo-33763: IDLE: Sử dụng tiện ích văn bản chỉ đọc cho ngữ cảnh mã thay vì tiện ích nhãn.
bpo-33664: Cuộn văn bản soạn thảo IDLE theo dòng. Trước đây, con lăn chuột và thanh trượt thanh cuộn đã di chuyển văn bản theo một số pixel cố định, dẫn đến một phần dòng ở đầu hộp soạn thảo. Thay đổi này cũng áp dụng cho các cửa sổ đầu ra shell và grep, nhưng không áp dụng cho các chế độ xem văn bản chỉ đọc.
bpo-33679: Bật cấu hình màu theo chủ đề cụ thể cho Ngữ cảnh mã. Sử dụng tab Nổi bật để xem cài đặt cho chủ đề tích hợp hoặc thêm cài đặt cho chủ đề tùy chỉnh.
bpo-33642: Hiển thị tối đa dòng không trống cho Ngữ cảnh mã. Nếu không có ngữ cảnh hiện tại, hãy hiển thị một dòng trống.
bpo-33628: IDLE: Dọn dẹp codecontext.py và thử nghiệm của nó.
bpo-33564: Ngữ cảnh mã của IDLE hiện nhận dạng async là công cụ mở khối.
bpo-21474: Cập nhật định nghĩa từ/mã định danh từ ascii sang unicode. Trong các hộp văn bản và mục nhập, điều này ảnh hưởng đến việc lựa chọn bằng cách bấm đúp, di chuyển sang trái/phải bằng control-left/right và xóa sang trái/phải bằng control-BACKSPACE/DEL.
bpo-33204: IDLE: tiền tố chuỗi không hợp lệ có màu nhất quán. Tiền tố chuỗi 'u' không thể ghép nối với 'r' hoặc 'f'. Tô màu nhất quán càng nhiều tiền tố, bắt đầu từ bên phải, càng hợp lệ. Sửa đổi và mở rộng thử nghiệm chất tạo màu.
bpo-32984: Đặt
__file__trong khi chạy tệp khởi động. Giống như Python, IDLE tùy chọn chạy một tệp khởi động trong cửa sổ Shell trước khi hiển thị lời nhắc nhập tương tác đầu tiên. Đối với IDLE,-schạy một tệp có tên trong biến môi trườngIDLESTARTUPhoặcPYTHONSTARTUP;-r filechạyfile. Python đặt__file__thành tên tệp khởi động trước khi chạy tệp và hủy đặt nó trước dấu nhắc đầu tiên. IDLE bây giờ cũng thực hiện tương tự khi chạy bình thường, không có tùy chọn-n.bpo-32940: Đơn giản hóa và đổi tên StringTranslatePseudoMapping trong pyparse.
bpo-32916: Thay đổi
strthànhcodetrong pyparse.bpo-32905: Xóa mã không sử dụng trong mô-đun pyparse.
bpo-32874: Thêm bài kiểm tra cho pyparse.
bpo-32837: Sử dụng mã hóa mặc định phụ thuộc vào hệ thống và vị trí cho open() là một ý tưởng tồi đối với các tệp không phụ thuộc vào vị trí và hệ thống của IDLE.
bpo-32826: Thêm "encoding=utf-8" vào open() trong test_help_about của IDLE. GUI test test_file_buttons() chỉ xem xét các dòng ban đầu chỉ có mã ascii nhưng không thành công trên các hệ thống trong đó open() mặc định là 'ascii' vì readline() nội bộ đọc và giải mã đủ xa về phía trước để gặp ký tự không phải mã ascii trong CREDITS.txt.
bpo-32831: Thêm chuỗi tài liệu và kiểm tra ngữ cảnh mã.
bpo-32765: Cập nhật chuỗi tài liệu tab Chung của configdialog để thêm các tiện ích mới vào danh sách tiện ích.
Công cụ/Bản trình diễn¶
bpo-35884: Thêm tập lệnh chuẩn để tính thời gian theo nhiều cách khác nhau để truy cập các biến:
Tools/scripts/var_access_benchmark.py.bpo-34989: python-gdb.py hiện xử lý các lỗi khi tính toán số dòng của khung Python.
bpo-20260: Argument Clinic hiện có bộ chuyển đổi int không dấu bit.
bpo-32962: python-gdb hiện bắt được ngoại lệ
UnicodeDecodeErrorkhi gọistring().bpo-32962: python-gdb hiện bắt được ValueError trên read_var(): khi Python không có biểu tượng gỡ lỗi chẳng hạn.
bpo-33189: pygettext.py hiện chỉ nhận dạng các chuỗi ký tự là chuỗi tài liệu và chuỗi có thể dịch được, đồng thời từ chối các ký tự byte và biểu thức chuỗi f.
bpo-31920: Đã sửa lỗi xử lý các thư mục làm đối số trong tập lệnh
pygettext. Dựa trên bản vá của Oleg Krasnikov.bpo-29673: Sửa macro pystackv và pystack gdbinit.
bpo-25427: Xóa tập lệnh pyvenv thay vào đó là
python3 -m venvđể giảm sự nhầm lẫn về việc trình thông dịch Python mà môi trường ảo sẽ được tạo để làm gì.bpo-32885: Thêm cờ
-nchoTools/scripts/pathfix.pyđể tắt tính năng tạo bản sao lưu tự động (các tệp có hậu tố~).bpo-32222: Sửa lỗi pygettext không trích xuất chuỗi tài liệu cho các hàm có đối số được chú thích kiểu. Bản vá của Toby Harradine.
bpo-31583: Sửa lỗi 2to3 để sử dụng với tùy chọn --add-suffix nhưng không có tùy chọn --output-dir cho đường dẫn tương đối đến các tệp trong thư mục hiện tại.
C API¶
bpo-35713: Chức năng
PyByteArray_Init()vàPyByteArray_Fini()đã bị xóa. Họ không làm gì vì Python 2.7.4 và Python 3.2.0, đã bị loại khỏi API giới hạn (ABI ổn định) và không được ghi lại.bpo-33817: Đã sửa lỗi
_PyBytes_Resize()cho các đối tượng byte trống.bpo-35322: Sửa lỗi rò rỉ bộ nhớ trong
PyUnicode_EncodeLocale()vàPyUnicode_EncodeFSDefault()khi xử lý lỗi.bpo-35059: Các macro C sau đây đã được chuyển đổi thành các hàm nội tuyến tĩnh:
Py_INCREF(),Py_DECREF(),Py_XINCREF(),Py_XDECREF(),PyObject_INIT(),PyObject_INIT_VAR().bpo-35296:
make installhiện cũng cài đặt các tệp tiêu đề API:Include/internal/*.hnội bộ.bpo-35081: Các API nội bộ được bao quanh bởi
#ifdef Py_BUILD_COREđã được chuyển từ tiêu đềInclude/*.hsang tệp tiêu đề mớiInclude/internal/pycore_*.h.bpo-35259: Khai báo có điều kiện
Py_FinalizeEx()(mới trong 3.6) dựa trên Py_LIMITED_API. Bản vá của Arthur Neufeld.bpo-35081: Các macro
_PyObject_GC_TRACK()và_PyObject_GC_UNTRACK()đã bị xóa khỏi C API công khai.bpo-35134: Tạo thư mục con
Include/cpython/mới.bpo-34725: Thêm _Py_SetProgramFullPath để trình nhúng có thể ghi đè sys.executable
bpo-34910: Đảm bảo rằng
PyObject_Print()luôn trả về-1khi có lỗi. Bản vá của Zackery Spytz.bpo-34523: Py_DecodeLocale() và Py_EncodeLocale() hiện sử dụng mã hóa UTF-8 trên Windows nếu Py_LegacyWindowsFSEncodingFlag bằng 0.
bpo-34193: Sửa lỗi số nhiều trong thông báo TypeError trong getargs.c và typeobject.c: '1 đối số' thay vì '1 đối số' và '1 phần tử' thay vì '1 phần tử'.
bpo-34127: Trả về thông báo lỗi đúng ngữ pháp dựa trên số lượng đối số. Bản vá của Karthikeyan Singaravelan.
bpo-23927: Đã sửa lỗi
SystemErrortrongPyArg_ParseTupleAndKeywords()khi đơn vị định dạngw*được sử dụng cho tham số tùy chọn.bpo-34008: Py_Main() lại có thể được gọi sau Py_Initialize(), như trong Python 3.6.
bpo-32500: Đã sửa các thông báo lỗi cho
PySequence_Size(),PySequence_GetItem(),PySequence_SetItem()vàPySequence_DelItem()được gọi bằng ánh xạ vàPyMapping_Size()được gọi bằng một chuỗi.bpo-33818:
PyExceptionClass_Name()bây giờ sẽ trả vềconst char *thay vìchar *.bpo-33042: Các ứng dụng nhúng có thể một lần nữa gọi PySys_ResetWarnOptions, PySys_AddWarnOption và PySys_AddXOption trước khi gọi Py_Initialize.
bpo-32374: Tài liệu rằng m_traverse cho các mô-đun khởi tạo nhiều pha có thể được gọi bằng m_state=NULL và thêm kiểm tra độ chính xác
bpo-30863:
PyUnicode_AsWideChar()vàPyUnicode_AsWideCharString()không còn lưu trữ biểu diễnwchar_t*của các đối tượng chuỗi nữa.
Bản cuối cùng của Python 3.7.0¶
Release date: 2018-06-27
Thư viện¶
bpo-33851: Sửa
ast.get_docstring()cho nút thiếu chuỗi tài liệu.
C API¶
bpo-33932: Gọi Py_Initialize() hai lần không có tác dụng gì, thay vào đó lại thất bại với một lỗi nghiêm trọng: khôi phục hành vi Python 3.6.
Ứng viên phát hành Python 3.7.0 1¶
Release date: 2018-06-12
Cốt lõi và nội dung¶
bpo-33803: Khắc phục sự cố trong hamt.c do bật tính năng theo dõi GC cho một đối tượng chưa đặt tất cả các trường của nó thành NULL.
bpo-33706: Khắc phục sự cố khi khởi tạo Python khi phân tích cú pháp các tùy chọn dòng lệnh. Cảm ơn Christoph Gohlke về báo cáo lỗi và cách khắc phục!
bpo-30654: Đã sửa lỗi đặt lại trình xử lý SIGINT thành SIG_DFL khi tắt trình thông dịch ngay cả khi đã có trình xử lý tùy chỉnh được đặt trước đó. Bản vá của Philipp Kerling.
bpo-31849: Sửa cảnh báo so sánh có chữ ký/không dấu trong pyhash.c.
Thư viện¶
bpo-30167: Ngăn chặn ngoại lệ site.main() nếu PYTHONSTARTUP được đặt. Bản vá của Steve Weber.
bpo-33812: Datetime instance d không có tzinfo, nhưng có d.tzinfo.utcoffset(d) trả về None hiện được coi là ngây thơ theo phương thức astimezone().
bpo-30805: Tránh tình trạng chạy đua bằng tính năng ghi nhật ký gỡ lỗi
bpo-33694: asyncio: Khắc phục tình trạng dồn đuổi gây mất dữ liệu trên Pause_reading()/resume_reading() khi sử dụng ProactorEventLoop.
bpo-32493: Kiểm tra chính xác về tính khả dụng của
uuid_enc_betrongconfigure.ac. Bản vá của Michael Felt.bpo-33792: Thêm asyncio.WindowsSelectorEventLoopPolicy và asyncio.WindowsProactorEventLoopPolicy.
bpo-33778: Cập nhật cơ sở dữ liệu của
unicodedatalên phiên bản Unicode 11.0.0.bpo-33770: cải thiện thông báo ngoại lệ base64 cho các đầu vào được mã hóa có độ dài không hợp lệ
bpo-33769: asyncio/start_tls: Sửa thông báo lỗi; hủy cuộc gọi lại trong trường hợp có lỗi chưa được xử lý; đánh dấu SSLTransport là đã đóng nếu nó bị hủy bỏ.
bpo-33767: Các thao tác chuỗi nối (
+) và lặp lại (*) hiện tăngTypeErrorthay vìSystemErrorkhi được thực hiện trên các đối tượngmmap.mmap. Bản vá của Zackery Spytz.bpo-33734: asyncio/ssl: Fix AttributionError, tăng thời gian chờ bắt tay mặc định
bpo-11874: Sử dụng biểu thức chính quy tốt hơn khi chia mức sử dụng thành các phần có thể gói được. Tránh các lỗi xác nhận không có thật từ các chuỗi metavar tùy chỉnh.
bpo-33582: Đưa ra cảnh báo không dùng nữa cho Inspection.formatargspec
Tài liệu¶
bpo-33409: Làm rõ mối quan hệ giữa chế độ PYTHONCOERCECLOCALE của PEP 538 và chế độ PYTHONUTF8 của PEP 540.
bpo-33736: Cải thiện tài liệu về
asyncio.open_connection(),asyncio.start_server()và các đối tác ổ cắm UNIX của chúng.bpo-31432: Làm rõ ý nghĩa của các cờ CERT_NONE, CERT_OPTIONAL và CERT_REQUIRED cho ssl.SSLContext.verify_mode.
xây dựng¶
bpo-5755: Di chuyển tùy chọn
-Wstrict-prototypessangCFLAGS_NODISTtừOPT. Tùy chọn này đưa ra những cảnh báo khó chịu khi xây dựng các mô-đun mở rộng được viết bằng C++.
cửa sổ¶
bpo-33720: Giảm độ sâu đệ quy so sánh tối đa trên các bản phát hành.
IDLE¶
bpo-33656: Trên Windows, thêm lệnh gọi API nói rằng tk chia tỷ lệ cho DPI. Trên Windows 8.1+ hoặc 10, với các thuộc tính tương thích DPI của tệp nhị phân Python không thay đổi và độ phân giải màn hình lớn hơn 96 DPI, điều này sẽ làm cho văn bản và đường nét sắc nét hơn. Nếu không thì nó sẽ không có tác dụng.
bpo-33768: Nhấp vào dòng ngữ cảnh sẽ di chuyển dòng đó lên đầu cửa sổ soạn thảo.
bpo-33763: IDLE: Sử dụng tiện ích văn bản chỉ đọc cho ngữ cảnh mã thay vì tiện ích nhãn.
bpo-33664: Cuộn văn bản soạn thảo IDLE theo dòng. Trước đây, con lăn chuột và thanh trượt thanh cuộn đã di chuyển văn bản theo một số pixel cố định, dẫn đến một phần dòng ở đầu hộp soạn thảo. Thay đổi này cũng áp dụng cho các cửa sổ đầu ra shell và grep, nhưng không áp dụng cho các chế độ xem văn bản chỉ đọc.
bpo-33679: Bật cấu hình màu theo chủ đề cụ thể cho Ngữ cảnh mã. Sử dụng tab Nổi bật để xem cài đặt cho chủ đề tích hợp hoặc thêm cài đặt cho chủ đề tùy chỉnh.
bpo-33642: Hiển thị tối đa dòng không trống cho Ngữ cảnh mã. Nếu không có ngữ cảnh hiện tại, hãy hiển thị một dòng trống.
Python 3.7.0 beta 5¶
Release date: 2018-05-30
Cốt lõi và nội dung¶
bpo-33622: Đã sửa lỗi rò rỉ khi trình thu gom rác không thêm được đối tượng bằng phương thức
__del__hoặc được nó tham chiếu vào danh sáchgc.garbage.PyGC_Collect()bây giờ có thể được gọi khi một ngoại lệ được đặt và duy trì nó.bpo-33509: Sửa tham số module_globals của cảnh báo.warn_explicit(): không gặp sự cố nếu module_globals không phải là lệnh.
bpo-20104:
os.posix_spawnmới được thêm vào trong 3.7.0b1 đã bị xóa vì chúng tôi vẫn đang nghiên cứu xem API sẽ trông như thế nào. Thay vào đó hãy mong đợi điều này ở phiên bản 3.8.bpo-33475: Đã sửa các lỗi khác trong việc chuyển đổi chú thích thành chuỗi và dấu ngoặc đơn được tối ưu hóa trong biểu diễn chuỗi.
bpo-33391: Sửa lỗi rò rỉ trong set_symetic_difference().
bpo-28055: Sửa các truy cập chưa được căn chỉnh trong siphash24(). Bản vá của Rolf Eike Beer.
bpo-32911: Do các vấn đề tương thích không mong muốn được phát hiện trong quá trình thử nghiệm beta tiếp theo, bpo-29463 đã được hoàn nguyên. Trường
docstringbị xóa khỏi các nút ast Mô-đun, ClassDef, FunctionDef và AsyncFunctionDef đã được thêm vào trong 3.7a1. Biểu thức chuỗi tài liệu được khôi phục dưới dạng câu lệnh đầu tiên trong nội dung của chúng. Dựa trên bản vá của Inada Naoki.bpo-21983: Khắc phục sự cố trong
ctypes.cast()trong trường hợp đối số kiểu là kiểu dữ liệu có cấu trúc ctypes. Bản vá của Eryk Sun và Oren Milman.
Thư viện¶
bpo-32751: Khi hủy tác vụ do hết thời gian chờ,
asyncio.wait_for()sẽ đợi cho đến khi quá trình hủy hoàn tất.bpo-32684: Sửa lỗi thu thập để tuyên truyền việc hủy bỏ chính nó ngay cả với return_Exceptions.
bpo-33654: Hỗ trợ chuyển đổi loại giao thức trong SSLTransport.set_protocol().
bpo-33674: Tạm dừng quá trình truyền tải càng sớm càng tốt để giảm hơn nữa nguy cơ data_received() được gọi trước Connection_made().
bpo-33674: Khắc phục tình trạng dồn đuổi trong SSLProtocol.connection_made() của asyncio.sslproto: bắt đầu bắt tay ngay lập tức thay vì sử dụng call_soon(). Trước đây, data_received() có thể được gọi trước khi quá trình bắt tay bắt đầu, khiến quá trình bắt tay bị treo hoặc không thành công.
bpo-31647: Đã sửa lỗi khi gọi write_eof() trên _SelectorSocketTransport sau khi nó đã đóng sẽ làm tăng AttributionError.
bpo-32610: Đặt asyncio.all_tasks() chỉ trả về các tác vụ đang chờ xử lý.
bpo-32410: Tránh chặn tệp IO trong mã dự phòng sendfile
bpo-33469: Sửa lỗi RuntimeError sau khi đóng vòng lặp sử dụng run_in_executor
bpo-33672: Khắc phục sự cố của Task.__repr__ với các coroutine giả mạo của Cython
bpo-33654: Sửa lỗi Transport.set_protocol() để hỗ trợ chuyển đổi giữa asyncio.Protocol và asyncio.BufferedProtocol. Sửa loop.start_tls() để hoạt động với asyncio.BufferedProtocols.
bpo-33652: Pickles gồm các biến loại và các generic được đăng ký hiện đã sẵn sàng cho tương lai và tương thích với các phiên bản Python cũ hơn.
bpo-32493: Đã sửa lỗi
uuid.uuid1()trên FreeBSD.bpo-33618: Hoàn thiện và ghi lại hỗ trợ TLS 1.3 sơ bộ và thử nghiệm với OpenSSL 1.1.1
bpo-33623: Có thể sửa lỗi SIGSGV khi asyncio.Future được tạo trong __del__
bpo-30877: Đã sửa lỗi trong quá trình triển khai bộ giải mã JSON bằng Python khiến bộ đệm của các chuỗi được phân tích cú pháp không bị xóa sau khi kết thúc quá trình giải mã. Dựa trên bản vá của c-fos.
bpo-33570: Thay đổi cài đặt bộ mật mã TLS 1.3 để tương thích với OpenSSL 1.1.1-pre6 trở lên. OpenSSL 1.1.1 sẽ bật mật mã TLS 1.3 theo mặc định.
bpo-28556: Không đơn giản hóa các đối số thành
typing.Union. Bây giờUnion[Manager, Employee]không được đơn giản hóa thànhEmployeekhi chạy. Việc đơn giản hóa như vậy trước đây đã gây ra một số lỗi và hạn chế khả năng xem xét nội tâm.bpo-33540: Thêm thuộc tính lớp
block_on_closemới vào các lớpForkingMixInvàThreadingMixIncủasocketserver.bpo-33548: tempfile._candidate_tempdir_list nên xem xét các vị trí TEMP phổ biến
bpo-33109: các trình phân tích cú pháp con argparse một lần nữa không được yêu cầu theo mặc định, hoàn nguyên thay đổi về hành vi do bpo-26510 đưa ra trong 3.7.0a2.
bpo-33536: dataclasses.make_dataclass hiện kiểm tra tên trường không hợp lệ và trường trùng lặp. Ngoài ra, đã thêm kiểm tra các thông số trường không hợp lệ.
bpo-33542: Ngăn
uuid.get_nodesử dụng DUID thay vì MAC trên Windows. Bản vá của Zvi Effronbpo-26819: Khắc phục tình trạng đua với
ReadTransport.resume_readingtrong vòng lặp sự kiện thước đo Windows.Khắc phục lỗi trong
typing.get_type_hints()khi ClassVar được cung cấp dưới dạng tham chiếu chuyển tiếp chuỗi.bpo-33505: Tối ưu hóa asyncio.ensure_future() bằng cách sắp xếp lại nếu kiểm tra: nhanh hơn 1,17 lần.
bpo-33497: Thêm thông số lỗi vào cgi.parse_multipart và tạo mã hóa trong FieldStorage bằng cách sử dụng các lỗi đã cho (cần thiết cho Twisted). Bản vá của Amber Brown.
bpo-33495: Thay đổi dataclasses.Fields repr để sử dụng repr của từng thành viên trong nó, thay vì str. Điều này làm cho nó rõ ràng hơn mỗi trường thực sự đại diện cho điều gì. Điều này đặc biệt đúng với thành viên “loại”.
bpo-33453: Sửa các lớp dữ liệu để hoạt động nếu sử dụng chú thích loại chuỗi ký tự hoặc nếu sử dụng PEP 563 "Đánh giá chú thích bị trì hoãn". Chỉ các tiền tố chuỗi cụ thể mới được phát hiện cho cả ClassVar ("ClassVar" và "typing.ClassVar") và InitVar ("InitVar" và "dataclasses.InitVar").
bpo-28556: Sửa lỗi nhỏ trong mô-đun gõ: thêm chú thích vào
NamedTuple.__new__, chuyển*argsvà**kwdstrongGeneric.__new__. PR gốc của Paulius Šarka và Chad Dombrova.bpo-20087: Đã cập nhật ánh xạ bí danh với các ngôn ngữ được hỗ trợ glibc 2.27.
bpo-33422: Sửa lỗi dấu ngoặc kép ở cuối bị xóa khi tra cứu các ký tự byte/chuỗi trên pydoc. Bản vá của Andrés Delfino.
bpo-28167: Hàm
platform.linux_distributionvàplatform.disthiện kích hoạtDeprecationWarningvà đã được đánh dấu để xóa trong Python 3.8bpo-33197: Cập nhật thông báo lỗi khi xây dựng bản vá kiểm tra không hợp lệ.Bản vá thông số của Donghee Na.
bpo-33263: Sửa lỗi rò rỉ FD trong Bản vá
_SelectorSocketTransportcủa Vlad Starostin.bpo-32861: Trình bày
__str__của urllib.robotparser hiện bao gồm các mục nhập ký tự đại diện và các trường "Độ trễ thu thập thông tin" và "Tốc độ yêu cầu". Bản vá của Michael Lazar.bpo-32257: Mô-đun ssl hiện chứa hằng số OP_NO_RENEGOTIATION, khả dụng với OpenSSL 1.1.0h hoặc 1.1.1.
bpo-16865: Hỗ trợ mảng >=2GiB trong
ctypes. Bản vá của Segev Finer.
Tài liệu¶
Kiểm tra¶
xây dựng¶
bpo-33614: Đảm bảo các tệp định nghĩa mô-đun cho ABI ổn định trên Windows được tái tạo chính xác.
bpo-33522: Kích hoạt tính năng xây dựng CI trên Visual Studio Team Services tại https://python.visualstudio.com/cpython
bpo-33012: Thêm
-Wno-cast-function-typecho gcc 8 để tắt cảnh báo về các hàm chuyển đổi như truyền tới PyCFunction trong danh sách định nghĩa phương thức.
macOS¶
bpo-13631: Tệp .editrc trong thư mục chính của người dùng hiện được xử lý chính xác trong quá trình khởi tạo dòng đọc thông qua mô phỏng dòng chỉnh sửa trên macOS.
IDLE¶
Python 3.7.0 beta 4¶
Release date: 2018-05-02
Cốt lõi và nội dung¶
bpo-33363: Đưa ra Lỗi Cú pháp cho các câu lệnh
async withvàasync forbên ngoài các hàm không đồng bộ.bpo-33128: Sửa lỗi khiến PathFinder xuất hiện hai lần trên sys.meta_path. Bản vá của Pablo Galindo Salgado.
bpo-33312: Đã sửa lỗi cảnh báo clang ubsan (khử trùng hành vi không xác định) trong dictobject.c bằng cách điều chỉnh cách khai báo cấu trúc khóa chia sẻ struct _dictkeysobject bên trong.
bpo-33231: Khắc phục khả năng rò rỉ bộ nhớ trong
normalizestring().bpo-33205: Thay đổi chức năng tăng trưởng dict từ
round_up_to_power_2(used*2+hashtable_size/2)thànhround_up_to_power_2(used*3). Trước đây, dict chỉ được thu nhỏ khiused == 0. Bây giờ dict có nhiều cơ hội được thu nhỏ hơn.bpo-29922: Cải thiện thông báo lỗi trong 'không đồng bộ với' khi
__aenter__()hoặc__aexit__()trả về đối tượng không thể chờ đợi.bpo-33199: Sửa lỗi
ma_version_tagtrong quá trình triển khai dict chưa được khởi tạo khi sao chép từ dict chia sẻ khóa.
Thư viện¶
bpo-33281: Khắc phục hồi quy ctypes.util.find_library trên macOS.
bpo-33383: Đã khắc phục sự cố trong phương thức get() của đối tượng cơ sở dữ liệu
dbm.ndbmkhi nó được gọi với một đối số duy nhất.bpo-33329: Khắc phục hồi quy đa xử lý trên glibcs mới hơn
bpo-991266: Sửa lỗi trích dẫn thuộc tính
Commentcủahttp.cookies.SimpleCookie.bpo-33131: Nâng cấp phiên bản đi kèm của pip lên 10.0.1.
bpo-33308: Đã khắc phục sự cố trong mô-đun
parserkhi chuyển đổi đối tượng ST thành cây gồm các bộ dữ liệu hoặc danh sách cóline_info=Falsevàcol_info=True.bpo-33266: lib2to3 hiện nhận dạng chuỗi
rf'...'.bpo-11594: Đảm bảo các đầu dòng được tôn trọng khi sử dụng lib2to3.
bpo-33254: Yêu cầu
importlib.resources.contents()vàimportlib.abc.ResourceReader.contents()trả về iterable thay vì iterator.bpo-33256: Sửa lỗi hiển thị lệnh gọi
<module>trong html docgitb.html()tạo ra. Bản vá của Stéphane Blondon.bpo-33185: Đã sửa lỗi hồi quy khi chạy pydoc bằng khóa chuyển
-m. (Tính năng hồi quy được giới thiệu trong 3.7.0b3 bằng độ phân giải của bpo-33053) Bản sửa lỗi này cũng thay đổi pydoc để thêmos.getcwd()vàosys.pathkhi cần thiết, thay vì thêm".".bpo-33169: Xóa các mục của
Nonetrongsys.path_importer_cachekhiimportlib.machinery.invalidate_caches()được gọi.bpo-33217: Không dùng nữa việc tìm kiếm các đối tượng không phải Enum trong các lớp Enum và các thành viên Enum (sẽ tăng
TypeErrortrong phiên bản 3.8+).bpo-33203:
random.Random.choice()hiện tăngIndexErrorcho các chuỗi trống một cách nhất quán ngay cả khi được gọi từ các lớp con mà không triển khaigetrandbits().bpo-33224: Cập nhật difflib.mdiff() cho PEP 479. Chuyển đổi một StopIteration chưa được lưu trữ trong trình tạo thành câu lệnh trả về.
bpo-33209: Kết thúc việc đóng khung khi kết thúc quá trình triển khai C của
pickle.Pickler.dump().bpo-20104: Cải thiện khả năng xử lý lỗi và sửa lỗi rò rỉ tham chiếu trong
os.posix_spawn().bpo-33175: Trong các lớp dữ liệu, Field.__set_name__ bây giờ tra cứu phương thức đặc biệt __set_name__ trên lớp, chứ không phải phiên bản, của giá trị mặc định.
bpo-33097: Tăng RuntimeError khi
executor.submitđược gọi trong khi tắt trình thông dịch.bpo-31908: Sửa đầu ra của tệp bìa cho công cụ dòng lệnh mô-đun
trace. Các tệp bìa được phát ra trước đó chỉ khi sử dụng tùy chọn--missing. Bản vá của Michael Selik.
Tài liệu¶
bpo-33378: Thêm bộ chuyển đổi ngôn ngữ tiếng Hàn cho https://python.go-mizu.dev/
bpo-33276: Làm rõ rằng thuộc tính
__path__trên mô-đun không thể có bất kỳ giá trị nào.bpo-33201: Hiện đại hóa tài liệu để viết các loại phần mở rộng C.
bpo-33195: Không dùng nữa việc sử dụng
Py_UNICODEtrong tài liệuc-api/arg. Các API liên quan đếnPy_UNICODEkhông được dùng nữa kể từ Python 3.3, nhưng nó bị thiếu trong tài liệu.bpo-8243: Thêm ghi chú về hành vi ngoại lệ của lời nguyền.addch và lời nguyền.addstr khi viết bên ngoài cửa sổ hoặc bảng tính.
bpo-32337: Cập nhật tài liệu liên quan đến đơn hàng
dict.
Kiểm tra¶
bpo-33358: Sửa lỗi
test_embed.test_pre_initialization_sys_options()khi trình thông dịch được xây dựng bằng--enable-shared.
xây dựng¶
bpo-33394: Kích hoạt tính năng xây dựng chi tiết cho các mô-đun mở rộng, khi GNU make được truyền macro trên dòng lệnh.
bpo-33393: Cập nhật file config.guess và config.sub.
bpo-33377: Thêm bộ ba mới cho các biến thể mips r6 và riscv (được sử dụng trong hậu tố mở rộng).
bpo-32232: Theo mặc định, các mô-đun được định cấu hình trong
Modules/Setupkhông còn được tạo bằng-DPy_BUILD_COREnữa. Thay vào đó, các mô-đun đặc biệt cần định nghĩa tiền xử lý đó sẽ đưa nó vào các mục riêng lẻ của chúng.bpo-33182: Các thử nghiệm nhúng một lần nữa có thể được xây dựng bằng clang 6.0
cửa sổ¶
bpo-33184: Cập nhật trình cài đặt Windows để sử dụng OpenSSL 1.1.0h.
macOS¶
bpo-33184: Cập nhật bản dựng trình cài đặt macOS để sử dụng OpenSSL 1.1.0h.
IDLE¶
bpo-21474: Cập nhật định nghĩa từ/mã định danh từ ascii sang unicode. Trong các hộp văn bản và mục nhập, điều này ảnh hưởng đến việc lựa chọn bằng cách bấm đúp, di chuyển sang trái/phải bằng control-left/right và xóa sang trái/phải bằng control-BACKSPACE/DEL.
bpo-33204: IDLE: tiền tố chuỗi không hợp lệ có màu nhất quán. Tiền tố chuỗi 'u' không thể ghép nối với 'r' hoặc 'f'. Tô màu nhất quán càng nhiều tiền tố, bắt đầu từ bên phải, càng hợp lệ. Sửa đổi và mở rộng thử nghiệm chất tạo màu.
Công cụ/Bản trình diễn¶
bpo-33189: pygettext.py hiện chỉ nhận dạng các chuỗi ký tự là chuỗi tài liệu và chuỗi có thể dịch được, đồng thời từ chối các ký tự byte và biểu thức chuỗi f.
bpo-31920: Đã sửa lỗi xử lý các thư mục làm đối số trong tập lệnh
pygettext. Dựa trên bản vá của Oleg Krasnikov.bpo-29673: Sửa macro pystackv và pystack gdbinit.
bpo-31583: Sửa lỗi 2to3 để sử dụng với tùy chọn --add-suffix nhưng không có tùy chọn --output-dir cho đường dẫn tương đối đến các tệp trong thư mục hiện tại.
Python 3.7.0 beta 3¶
Release date: 2018-03-29
Bảo mật¶
bpo-33136: Tăng cường mô-đun ssl chống lại LibreSSL CVE 2018-8970. X509_VERIFY_PARAM_set1_host() được gọi với tên rõ ràng. Một thử nghiệm mới đảm bảo rằng byte NULL không được phép.
bpo-33001: Khắc phục tối thiểu tình trạng tràn bộ đệm trong os.symlink trên Windows
bpo-32981: Regexes trong difflib và poplib dễ bị quay lui thảm hại. Những biểu thức chính quy này hình thành các vectơ DOS tiềm năng (REDOS). Chúng đã được tái cấu trúc. Điều này giải quyết CVE 2018-1060 và CVE 2018-1061. Bản vá của Jamie Davis.
Cốt lõi và nội dung¶
bpo-33053: Khi sử dụng khóa chuyển -m, sys.path[0] hiện được mở rộng rõ ràng dưới dạng thư mục làm việc starting, thay vì để lại dưới dạng đường dẫn trống (cho phép nhập từ thư mục làm việc hiện tại tại thời điểm nhập)
bpo-33018: Cải thiện tính nhất quán của các lỗi do
issubclass()đưa ra khi được gọi với lớp cơ sở không phải lớp và lớp cơ sở trừu tượng tương ứng làm đối số thứ nhất và thứ hai. Bản vá của Josh Bronson.bpo-33041: Đã sửa lỗi nhảy khi hàm chứa vòng lặp
async for.bpo-33026: Đã sửa lỗi nhảy ra khỏi khối "with" bằng cách đặt f_lineno.
bpo-33005: Khắc phục sự cố trên fork khi sử dụng bộ cấp phát bộ nhớ tùy chỉnh (ví dụ: sử dụng PYTHONMALLOC env var). _PyGILState_Reinit() và _PyInterpreterState_Enable() hiện sử dụng bộ cấp phát bộ nhớ RAW mặc định để phân bổ một mutex thông dịch mới trên fork.
bpo-17288: Ngăn chặn các bước nhảy từ các sự kiện theo dõi 'trở lại' và 'ngoại lệ'.
bpo-32836: Không sử dụng các biến tạm thời trong trường hợp hiểu danh sách/dict/set
Thư viện¶
bpo-33141: Yêu cầu các đối tượng Trường chuyển qua __set_name__ tới các giá trị mặc định của chúng, nếu chúng có __set_name__ riêng.
bpo-33096: Cho phép ttk.Treeview.insert chèn iid có giá trị boolean sai. Lưu ý iid=0 và iid=False sẽ giống nhau. Bản vá của Garvit Khatri.
bpo-32873: Coi các biến loại và các dạng gõ đặc biệt là bất biến bằng cách sao chép và chọn. Điều này khắc phục một số vấn đề nhỏ và sự không nhất quán, đồng thời cải thiện khả năng tương thích ngược với Python 3.6.
bpo-33134: Khi tính toán __hash__ của lớp dữ liệu, hãy sử dụng bảng tra cứu để chứa hàm trả về giá trị __hash__. Đây là một cải tiến so với việc tra cứu một chuỗi rồi kiểm tra chuỗi đó để xem phải làm gì.
bpo-33127: Mô-đun ssl hiện biên dịch với LibreSSL 2.7.1.
bpo-32505: Tăng TypeError nếu biến thành viên của lớp dữ liệu thuộc loại Trường nhưng không có chú thích loại.
bpo-33078: Sửa lỗi trên OSX do kiểm tra dựa vào sem_getvalue
bpo-33116: Thêm 'Trường' vào các lớp dữ liệu.__all__.
bpo-32896: Khắc phục lỗi trong đó việc phân lớp một lớp dữ liệu với trường sử dụng default_factory sẽ tạo ra một lớp không chính xác.
bpo-33100: Dataclasses: Nếu một trường có giá trị mặc định là MemberDescriptorType thì trường đó nằm trong __slots__ chứ không phải giá trị mặc định thực tế.
bpo-32953: Nếu một lớp không phải lớp dữ liệu kế thừa từ một lớp dữ liệu cố định, hãy cho phép thêm các thuộc tính vào lớp dẫn xuất. Chỉ các thuộc tính từ lớp dữ liệu đã đóng băng mới không thể được gán cho. Yêu cầu tất cả các lớp dữ liệu trong hệ thống phân cấp phải được cố định hoàn toàn hoặc không bị cố định.
bpo-33061: Thêm
NoReturnbị thiếu vào__all__trong Typing.pybpo-33078: Sửa lỗi xử lý kích thước trong multiprocessing.Queue khi xảy ra lỗi tẩy.
bpo-33064: lib2to3 hiện hỗ trợ chính xác dấu phẩy ở cuối
*argsvà**kwargstrong chữ ký hàm.bpo-33056: FIX đóng các fds bị rò rỉ đúng cách trong concurrent.futures.ProcessPoolExecutor.
bpo-33021: Giải phóng GIL trong các cuộc gọi fstat(), tránh tình trạng treo tất cả các chuỗi khi gọi mmap.mmap(), os.urandom() và Random.seed(). Bản vá của Nir Soffer.
bpo-31804: Tránh thất bại trong quá trình đa xử lý. Xử lý nếu luồng tiêu chuẩn bị đóng hoặc Không có khi thoát.
bpo-33037: Bỏ qua việc gửi/nhận dữ liệu sau khi đóng truyền tải SSL.
bpo-27683: Khắc phục hồi quy trong
ipaddresskhiến kết quả củahosts()trống khi mạng được xây dựng bởi một bộ dữ liệu chứa mặt nạ số nguyên và chỉ còn lại 1 bit cho địa chỉ.bpo-32999: Khắc phục sự cố triển khai C của
ABC.__subclasscheck__(cls, subclass)khisubclasskhông phải là một đối tượng loại.bpo-33009: Sửa lỗi kiểm tra.signature() cho các phương thức một phần tham số.
bpo-32969: Hiển thị một số hằng số bị thiếu trong zlib và sửa tài liệu tương ứng.
bpo-32056: Cải thiện các ngoại lệ được đưa ra đối với số lượng kênh và độ rộng mẫu không hợp lệ khi đọc tệp âm thanh trong các mô-đun
aifc,wavevàsunau.bpo-32844: Sửa lỗi chuyển hướng sai của bộ mô tả thấp (0 hoặc 1) sang stderr trong quy trình con nếu một bộ mô tả thấp khác bị đóng.
bpo-32857: Trong
tkinter,after_cancel(None)hiện tăngValueErrorthay vì hủy chức năng được lên lịch đầu tiên. Bản vá của Cheryl Sabella.bpo-31639: http.server hiện hiển thị lớp ThreadedHTTPServer và sử dụng nó khi mô-đun chạy với
-mđể đối phó với các ổ cắm mở trước trình duyệt web.bpo-27645:
sqlite3.Connectionhiện hiển thị phương thứcbackup, nếu thư viện SQLite cơ bản ở phiên bản 3.6.11 trở lên. Bản vá của Lele Gaifax.
Tài liệu¶
bpo-33126: Tài liệu PyBuffer_ToContiguous().
bpo-27212: Sửa đổi tài liệu cho công thức
islice()để sử dụng các giá trị ban đầu cho đến chỉ mục bắt đầu.bpo-28247: Cập nhật tài liệu
zipappđể mô tả cách tạo các ứng dụng độc lập.bpo-18802: Thay đổi tài liệu cho ipaddress. Bản vá của Jon Foster và Berker Peksag.
bpo-27428: Cập nhật tài liệu để làm rõ rằng
WindowsRegistryFindertriển khaiMetaPathFinder. (Bản vá của Himanshu Lakhara)
Kiểm tra¶
xây dựng¶
bpo-33163: Nâng cấp pip lên 9.0.3 và setuptools lên v39.0.1.
cửa sổ¶
macOS¶
bpo-32726: Xây dựng và liên kết với bản sao riêng của Tcl/Tk 8.6 cho trình cài đặt macOS 10.6+. Biến thể trình cài đặt 10.9+ đã thực hiện điều này. Điều này có nghĩa là Python 3.7 do trình cài đặt macOS python.org cung cấp không còn cần hoặc sử dụng bất kỳ phiên bản bên ngoài nào của Tcl/Tk, do hệ thống cung cấp hoặc do người dùng cài đặt, chẳng hạn như ActiveTcl.
IDLE¶
bpo-32984: Đặt
__file__trong khi chạy tệp khởi động. Giống như Python, IDLE tùy chọn chạy một tệp khởi động trong cửa sổ Shell trước khi hiển thị lời nhắc nhập tương tác đầu tiên. Đối với IDLE,-schạy một tệp có tên trong biến môi trườngIDLESTARTUPhoặcPYTHONSTARTUP;-r filechạyfile. Python đặt__file__thành tên tệp khởi động trước khi chạy tệp và hủy đặt nó trước dấu nhắc đầu tiên. IDLE bây giờ cũng thực hiện tương tự khi chạy bình thường, không có tùy chọn-n.bpo-32940: Đơn giản hóa và đổi tên StringTranslatePseudoMapping trong pyparse.
Công cụ/Bản trình diễn¶
bpo-32885: Thêm cờ
-nchoTools/scripts/pathfix.pyđể tắt tính năng tạo bản sao lưu tự động (các tệp có hậu tố~).
C API¶
Python 3.7.0 beta 2¶
Release date: 2018-02-27
Bảo mật¶
bpo-28414: Mô-đun ssl hiện cho phép người dùng thực hiện en/giải mã IDN của riêng họ khi sử dụng SNI.
Cốt lõi và nội dung¶
bpo-32889: Cập nhật danh sách ngăn chặn Valgrind để giải quyết việc đổi tên
Py_ADDRESS_IN_RANGthànhaddress_in_range.bpo-31356: Xóa API mới được thêm vào bpo-31356 (trình quản lý bối cảnh gc.ensure_disabled()).
bpo-32305: Đối với các gói không gian tên, đảm bảo rằng cả
__file__và__spec__.originđều được đặt thành Không.bpo-32303: Đảm bảo
__spec__.loaderkhớp với__loader__cho các gói không gian tên.bpo-32711: Sửa các thông báo cảnh báo cho Python/ast_unparse.c. Bản vá của Stéphane Wirtel
bpo-32583: Khắc phục sự cố có thể xảy ra trong bộ giải mã Unicode tích hợp do lỗi ghi ngoài giới hạn khi sử dụng trình xử lý lỗi giải mã tùy chỉnh.
Thư viện¶
bpo-32960: Đối với các lớp dữ liệu, không cho phép kế thừa các lớp được đóng băng từ các lớp không được cố định và cũng không cho phép kế thừa các lớp không được cố định từ các lớp được cố định. Hạn chế này sẽ được nới lỏng vào một ngày trong tương lai.
bpo-32713: Đã sửa lỗi xử lý tarfile.itn các giá trị float ngoài giới hạn. Bản vá của Joffrey Fuhrer.
bpo-32951: Việc tạo trực tiếp các đối tượng SSLSocket và SSLObject hiện bị cấm. Các nhà xây dựng chưa bao giờ được ghi lại, thử nghiệm hoặc thiết kế như các nhà xây dựng công cộng. Người dùng được cho là sử dụng ssl.wrap_socket() hoặc SSLContext.
bpo-32929: Xóa tham số ba trạng thái "hash" và thêm boolean "unsafe_hash". Nếu không an toàn_hash là Đúng, hãy thêm hàm __hash__, nhưng nếu __hash__ tồn tại, hãy tăng TypeError. Nếu không an toàn_hash là Sai, hãy thêm __hash__ dựa trên các giá trị của eq= và Frozen=. Hành vi không an toàn_hash=False giống như hành vi hash=None cũ. không an toàn_hash=False là mặc định, giống như hash=None trước đây.
bpo-32947: Thêm OP_ENABLE_MIDDLEBOX_COMPAT và kiểm tra cách giải quyết cho TLSv1.3 để có khả năng tương thích với OpenSSL 1.1.1 trong tương lai.
bpo-30622: Mô-đun ssl hiện phát hiện hỗ trợ NPN bị thiếu trong LibreSSL.
bpo-32922: dbm.open() hiện mã hóa tên tệp bằng mã hóa hệ thống tệp thay vì mã hóa mặc định.
bpo-32859: Trong
os.dup2, không kiểm tra mọi cuộc gọi xem tòa nhàdup3có tồn tại hay không.bpo-32556: nt._getfinalpathname, nt._getvolumepathname và nt._getdiskusage hiện chuyển đổi chính xác từ byte.
bpo-25988: Phát ra
DeprecationWarningkhi sử dụng hoặc nhập ABC trực tiếp từcollectionsthay vì từcollections.abc.bpo-21060: Viết lại thông báo khó hiểu từ setup.py upload từ "Không có tệp dist nào được tạo trong lệnh trước đó" thành "Phải tạo và tải tệp lên trong một lệnh" hữu ích hơn.
bpo-32852: Đảm bảo sys.argv vẫn ở dạng danh sách khi chạy dấu vết.
bpo-31333: mô-đun
_abcđược thêm vào. Nó là một mô-đun tăng tốc với triển khai C cho các chức năng và phương thức khác nhau trongabc. Việc tạo lớp con ABC và gọiisinstancehoặcissubclassbằng lớp con ABC nhanh hơn tới 1,5 lần. Ngoài ra, điều này còn giúp khởi động Python nhanh hơn tới 10%. Lưu ý rằng cách triển khai mới ẩn sổ đăng ký nội bộ và bộ đệm, trước đây có thể truy cập được thông qua các thuộc tính riêng tư_abc_registry,_abc_cachevà_abc_negative_cache. Có ba phương pháp trợ giúp gỡ lỗi có thể được sử dụng thay thế_dump_registry,_abc_registry_clearvà_abc_caches_clear.bpo-32841: Đã khắc phục sự cố
asyncio.Conditionâm thầm bỏ qua việc hủy sau khi thông báo và hủy khóa có điều kiện. Bản vá của Bar Harel.bpo-32819: ssl.match_hostname() đã được đơn giản hóa và không còn phụ thuộc vào mô-đun re và ipaddress cho ký tự đại diện và địa chỉ IP nữa. Báo cáo lỗi cho các ký tự đại diện không hợp lệ đã được cải thiện.
bpo-32394: socket: Xóa các cờ TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL trên phiên bản Windows cũ hơn trong thời gian chạy.
bpo-31787: Đã sửa lỗi hiển thị các phương thức
__init__()trong các mô-đun khác nhau. (Được đóng góp bởi Oren Milman)bpo-30157: Đã sửa lỗi đoán trích dẫn và dấu phân cách trong csv.Sniffer.sniff() khi chỉ có trường cuối cùng được trích dẫn. Bản vá của Jake Davis.
bpo-32792: Collection.ChainMap() giữ nguyên thứ tự của các ánh xạ cơ bản.
bpo-32775:
fnmatch.translate()không còn tạo ra các mẫu chứa các thao tác đã thiết lập. Các bộ bắt đầu bằng '[' hoặc chứa '--', '&&', '~~' hoặc '||' sẽ được diễn giải khác nhau trong các biểu thức chính quy trong các phiên bản sau. Hiện nay họ phát ra cảnh báo. fnmatch.translate() giờ đây tránh vô tình tạo ra các mẫu chứa các tập hợp như vậy.bpo-32622: Triển khai tệp gửi nhanh gốc cho vòng lặp sự kiện thước đo Windows.
bpo-32777: Khắc phục sự cố bế tắc hiếm gặp nhưng tiềm ẩn của quy trình con trước khi thực thi trong quy trình con trên hệ thống POSIX khi đánh dấu các bộ mô tả tệp có thể kế thừa trên exec trong quy trình con. Lỗi này dường như đã được giới thiệu trong 3.4.
bpo-32647: Mô-đun ctypes được sử dụng để phụ thuộc vào liên kết gián tiếp cho dlopen. Tiện ích mở rộng được chia sẻ hiện được liên kết rõ ràng với libdl trên các nền tảng có dl.
bpo-32741: Thực hiện phương pháp
asyncio.TimerHandle.when().bpo-32691: Sử dụng mod_spec.parent khi chạy mô-đun với pdb
bpo-32734: Đã khắc phục sự cố an toàn
asyncio.Lock()cho phép lấy và khóa cùng một khóa nhiều lần mà không bị khóa. Bản vá của Bar Harel.bpo-32727: Không bao gồm trường tên trong phong bì SMTP từ địa chỉ. Bản vá của Stéphane Wirtel
bpo-31453: Thêm hằng số TLSVersion và thuộc tính SSLContext.maximum_version/minimum_version. Zz002zz mới bao gồm tính năng OpenSSL 1.1 https://web.archive.org/web/20180309043602/https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html.
bpo-24334: Chi tiết triển khai nội bộ của mô-đun ssl đã được dọn sạch. SSLSocket có ít lớp gián tiếp hơn. Thông tin về chủ sở hữu và phiên hiện được xử lý bởi hàm tạo SSLSocket và SSLObject. Việc thực hiện ràng buộc kênh đã được đơn giản hóa.
bpo-31848: Sửa lỗi xử lý trong Aifc_read.initfp() khi không tìm thấy đoạn SSND. Bản vá của Zackery Spytz.
bpo-32585: Thêm tiện ích spinbox Ttk vào
tkinter.ttk. Bản vá của Alan D Moore.bpo-32221: Nhiều hàm trả về bộ dữ liệu chứa địa chỉ IPv6 hiện đã bỏ qua phần
%scopevì thông tin tương tự đã được mã hóa trong mục bộ dữ liệu scopeid. Đặc biệt, điều này giúp tăng tốcsocket.recvfrom()khi nó nhận được gói multicast do việc phân giải tên giao diện mạng vô ích bị bỏ qua.bpo-30693: Lớp TarFile hiện truy xuất lại các thư mục theo cách có thể tái tạo.
bpo-30693: Lớp ZipFile hiện truy xuất lại các thư mục theo cách có thể tái tạo.
Tài liệu¶
bpo-28124: Hàm mô-đun ssl ssl.wrap_socket() đã không được nhấn mạnh và không được dùng nữa để thay thế bằng phương thức SSLContext.wrap_socket() an toàn và hiệu quả hơn.
bpo-17232: Làm rõ tài liệu cho -O và -OO. Bản vá của Terry Reedy.
bpo-32436: Thêm tài liệu cho mô-đun bối cảnh (PEP 567).
bpo-32800: Cập nhật liên kết tới tài liệu w3c cho các không gian tên mặc định xml.
bpo-11015: Cập nhật tài liệu
test.support.bpo-8722: Ghi lại hành vi của
__getattr__()khi thuộc tínhget()tăngAttributeError.bpo-32614: Sửa đổi các ví dụ RE trong tài liệu để sử dụng chuỗi thô nhằm ngăn chặn
DeprecationWarningvà thêm văn bản vào REGEX HOWTO để làm nổi bật việc không dùng nữa.bpo-31972: Cải thiện chuỗi tài liệu cho các lớp con
pathlib.PurePath.
Kiểm tra¶
bpo-31809: Thêm các bài kiểm tra để xác minh kết nối với các đường cong ECDH của secp.
xây dựng¶
bpo-32898: Sửa bản dựng gỡ lỗi python khi sử dụng COUNT_ALLOCS.
cửa sổ¶
bpo-32901: Cập nhật phiên bản Tcl và Tk lên 8.6.8
bpo-31966: Đã sửa lỗi WindowsConsoleIO.write() để ghi dữ liệu trống.
bpo-32409: Đảm bảo activate.bat có thể xử lý nội dung Unicode.
bpo-32457: Cải thiện việc xử lý đường dẫn thực thi không chuẩn hóa khi khởi chạy Python.
bpo-32370: Sử dụng mã hóa chính xác cho đầu ra ipconfig trong mô-đun uuid. Bản vá của Segev Finer.
bpo-29248: Khắc phục
os.readlink()trên Windows, lỗi này xử lý nhầm trườngPrintNameOffsetcủa bộ đệm dữ liệu phân tích cú pháp dưới dạng một số ký tự thay vì byte. Bản vá của Craig Holmquist và SSE4.
macOS¶
bpo-32901: Cập nhật trình cài đặt macOS 10.9+ lên Tcl/Tk 8.6.8.
IDLE¶
bpo-32916: Thay đổi
strthànhcodetrong pyparse.bpo-32905: Xóa mã không sử dụng trong mô-đun pyparse.
bpo-32874: Thêm bài kiểm tra cho pyparse.
bpo-32837: Sử dụng mã hóa mặc định phụ thuộc vào hệ thống và vị trí cho open() là một ý tưởng tồi đối với các tệp không phụ thuộc vào vị trí và hệ thống của IDLE.
bpo-32826: Thêm "encoding=utf-8" vào open() trong test_help_about của IDLE. GUI test test_file_buttons() chỉ xem xét các dòng ban đầu chỉ có mã ascii nhưng không thành công trên các hệ thống trong đó open() mặc định là 'ascii' vì readline() nội bộ đọc và giải mã đủ xa về phía trước để gặp ký tự không phải mã ascii trong CREDITS.txt.
bpo-32765: Cập nhật chuỗi tài liệu tab Chung của configdialog để thêm các tiện ích mới vào danh sách tiện ích.
Công cụ/Bản trình diễn¶
bpo-32222: Sửa lỗi pygettext không trích xuất chuỗi tài liệu cho các hàm có đối số được chú thích kiểu. Bản vá của Toby Harradine.
Python 3.7.0 beta 1¶
Release date: 2018-01-30
Cốt lõi và nội dung¶
bpo-32703: Sửa lỗi ResourceWarning của coroutine khi có một lỗi hoạt động xảy ra khi nó đang được hoàn thiện.
bpo-32650: Pdb và các trình gỡ lỗi khác phụ thuộc vào bdb.py sẽ bước qua (lệnh tiếp theo) các coroutine gốc một cách chính xác. Bản vá của Pablo Galindo.
bpo-28685: Tối ưu hóa list.sort() vàsort() bằng cách sử dụng các so sánh chuyên biệt về loại khi có thể.
bpo-32685: Cải thiện đề xuất khi dạng câu lệnh in Python 2 xuất hiện trên cùng dòng với tiêu đề của câu lệnh ghép hoặc được kết thúc bằng dấu chấm phẩy thay vì dòng mới. Bản vá của Nitish Chandra.
bpo-32697: Python hiện bảo toàn rõ ràng thứ tự định nghĩa của các tham số chỉ từ khóa. Nó luôn giữ trật tự, nhưng hành vi này chưa bao giờ được đảm bảo trước đây; hành vi này hiện đã được đảm bảo và thử nghiệm.
bpo-32690: Từ điển local() hiện hiển thị theo thứ tự từ vựng mà các biến đã được xác định. Trước đó, trật tự đã bị đảo ngược.
bpo-32677: Thêm phương thức
.isascii()vàostr,bytesvàbytearray. Nó có thể được sử dụng để kiểm tra chuỗi đó chỉ chứa các ký tự ASCII.bpo-32670: Thực thi PEP 479 cho tất cả mã. Điều này có nghĩa là việc nâng cao ngoại lệ StopIteration theo cách thủ công từ trình tạo bị cấm đối với tất cả các mã, bất kể 'from __future__ import Generator_stop' có được sử dụng hay không.
bpo-32591: Đã thêm hỗ trợ tích hợp để theo dõi nguồn gốc của các đối tượng coroutine; xem sys.set_coroutine_origin_tracking_deep và CoroutineType.cr_origin. Điều này thay thế việc sử dụng gói coroutine của chế độ gỡ lỗi asyncio cho các đối tượng coroutine gốc.
bpo-31368: Hiển thị các lệnh gọi hệ thống preadv và pwritev trong mô-đun os. Bản vá của Pablo Galindo
bpo-32544:
hasattr(obj, name)vàgetattr(obj, name, default)nhanh hơn khoảng 4 lần so với trước đây khi không tìm thấynamevàobjkhông ghi đè__getattr__hoặc__getattribute__.bpo-26163: Hàm băm Frozenset() được cải tiến để tạo ra các giá trị băm khác biệt hơn khi đối mặt với các tập dữ liệu chứa nhiều giá trị tương tự.
bpo-32550: Xóa mã byte STORE_ANNOTATION.
bpo-20104: Hiển thị posix_spawn dưới dạng API cấp thấp trong mô-đun os. (đã xóa trước 3.7.0rc1)
bpo-24340: Đã sửa lỗi ước tính kích thước ngăn xếp mã.
bpo-18533:
repr()trên một lệnh chứavalues()hoặcitems()của chính nó không còn tăngRecursionErrornữa; OrderedDict tương tự. Thay vào đó, hãy sử dụng..., như đối với các cấu trúc đệ quy khác. Bản vá của Ben North.bpo-20891: Py_Initialize() hiện tạo GIL. Zz002zz không còn được tạo "theo yêu cầu" để khắc phục tình trạng tương tranh khi PyGILState_Ensure() được gọi trong một chuỗi không phải Python.
bpo-32028: Khoảng trắng ở đầu hiện bị bỏ qua một cách chính xác khi tạo đề xuất chuyển đổi câu lệnh in Py2 thành lệnh gọi hàm in dựng sẵn Py3. Bản vá của Sanyam Khurana.
bpo-31179: Tạo dict.copy() nhanh hơn tới 5,5 lần.
bpo-31113: Loại bỏ đệ quy trong trình biên dịch đối với luồng điều khiển thông thường.
Thư viện¶
bpo-25988: Không dùng nữa việc hiển thị nội dung của bộ sưu tập.abc trong mô-đun bộ sưu tập thông thường.
bpo-31429: Lựa chọn bộ mật mã mặc định của mô-đun ssl hiện sử dụng cách tiếp cận danh sách đen thay vì danh sách trắng được mã hóa cứng. Python không còn kích hoạt lại các mật mã đã bị chặn bởi bản cập nhật bảo mật OpenSSL nữa. Lựa chọn bộ mật mã mặc định có thể được cấu hình trong thời gian biên dịch.
bpo-30306: contextlib.contextmanager hiện giải phóng các đối số được truyền đến trình tạo cơ bản ngay khi trình quản lý bối cảnh được nhập. Trước đây, nó sẽ giữ chúng tồn tại miễn là trình quản lý bối cảnh còn tồn tại, ngay cả khi không được sử dụng làm công cụ trang trí hàm. Bản vá của Martin Teichmann.
bpo-21417: Đã thêm hỗ trợ cài đặt mức nén cho zipfile.ZipFile.
bpo-32251: Triển khai asyncio.BufferedProtocol (API tạm thời).
bpo-32513: Trong các lớp dữ liệu, cho phép ghi đè các phương thức dunder dễ dàng hơn mà không cần chỉ định các tham số trang trí.
bpo-32660:
termioscung cấpFIONREAD,FIONCLEX,FIOCLEX,FIOASYNCvàFIONBIOcũng dưới dạng Solaris/các dẫn xuất.bpo-27931: Sửa lỗi phân tích tiêu đề địa chỉ email khi tên người dùng là một chuỗi trích dẫn trống. Bản vá của Xiang Zhang.
bpo-32659: Theo Solaris và các dẫn xuất,
os.stat_resultcung cấp thuộc tính st_fstype.bpo-32662: Triển khai các phương thức Server.start_served(), Server.serve_forever() và Server.is_served(). Thêm tham số từ khóa 'start_served' vào loop.create_server() và loop.create_unix_server().
bpo-32391: Triển khai các phương thức
asyncio.StreamWriter.wait_closed()vàasyncio.StreamWriter.is_closing()bpo-32643: Đặt các phương thức Task._step, Task._wakeup và Future._schedule_callbacks ở chế độ riêng tư.
bpo-32630: Tái cấu trúc mô-đun thập phân để sử dụng biến ngữ cảnh nhằm lưu trữ ngữ cảnh thập phân.
bpo-32622: Thêm phương thức
asyncio.AbstractEventLoop.sendfile().bpo-32304: lệnh tải lên của distutils không còn làm hỏng các tệp tar kết thúc bằng byte CR và không còn cố gắng chuyển đổi CR thành CRLF trong bất kỳ trường văn bản tải lên nào nữa.
bpo-32502: uuid.uuid1 không còn đưa ra ngoại lệ nếu gặp địa chỉ phần cứng 64 bit.
bpo-32596:
concurrent.futuresnhậpThreadPoolExecutorvàProcessPoolExecutormột cách lười biếng (sử dụng PEP 562). Nó làm choimport asyncionhanh hơn khoảng 15% vì asyncio chỉ sử dụngThreadPoolExecutortheo mặc định.bpo-31801: Thêm
_ignore_vàoEnumđể các biến tạm thời có thể được sử dụng trong quá trình xây dựng lớp mà không bị chuyển thành thành viên.bpo-32576: Sử dụng queue.SimpleQueue() ở những nơi có thể gọi nó từ một lệnh gọi lại yếu.
bpo-32574: Sửa lỗi rò rỉ bộ nhớ trong asyncio.Queue, khi hàng đợi có kích thước giới hạn và đầy, việc hủy queue.put() có thể gây rò rỉ bộ nhớ. Bản vá của: José Melero.
bpo-32521: Mô-đun nis hiện tương thích với vị trí tiêu đề và libnsl mới.
bpo-32467: bộ sưu tập.abc.ValuesView hiện kế thừa từ bộ sưu tập.abc.Collection.
bpo-32473: Cải thiện khả năng đọc đầu ra ABCMeta._dump_registry()
bpo-32102: Đối số mới
capture_outputcho subprocess.runbpo-32521: glibc đã loại bỏ Sun RPC. Sử dụng các tiêu đề và thư viện libtirpc thay thế trong mô-đun nis.
bpo-32493: bản sửa lỗi mô-đun UUID cho FreeBSD/OpenBSD
bpo-32503: Pickling với giao thức 4 không còn tạo ra các khung hình quá nhỏ nữa.
bpo-29237: Tạo enum cho các tùy chọn sắp xếp pstats
bpo-32454: Thêm chức năng đóng (fd) vào mô-đun ổ cắm.
bpo-25942: Mô-đun quy trình con giờ đây duyên dáng hơn khi xử lý ngắt bàn phím Ctrl-C trong subprocess.call, subprocess.run hoặc trình quản lý bối cảnh Popen. Bây giờ nó đợi một khoảng thời gian ngắn để đứa trẻ (được cho là cũng đã nhận được SIGINT) thoát ra, trước khi tiếp tục xử lý ngoại lệ KeyboardInterrupt. Điều này vẫn bao gồm SIGKILL trong API call() và run(), nhưng ít nhất đứa trẻ đã có cơ hội trước.
bpo-32433: Mô-đun hmac hiện có hmac.digest(), cung cấp thông báo HMAC được tối ưu hóa.
bpo-28134: Theo mặc định, các ổ cắm hiện tự động phát hiện họ, loại và giao thức từ bộ mô tả tệp.
bpo-32404: Sửa lỗi
datetime.datetime.fromtimestamp()không gọi __new__ trong các lớp condatetime.datetime.bpo-32403: Cải thiện tốc độ của các hàm tạo thay thế
datetime.datevàdatetime.datetime.bpo-32228: Đảm bảo rằng
truncate()duy trì vị trí tệp (như được báo cáo bởitell()) sau khi ghi lâu hơn kích thước bộ đệm.bpo-32410: Triển khai
loop.sock_sendfilecho vòng lặp sự kiện asyncio.bpo-22908: Đã thêm tính năng tìm kiếm và thông báo cho lớp ZipExtFile. Điều này chỉ hoạt động nếu đối tượng tệp được sử dụng để mở tệp zip có thể tìm kiếm được.
bpo-32373: Thêm phương thức socket.getblocking().
bpo-32248: Thêm
importlib.resourcesvàimportlib.abc.ResourceReaderlàm API thống nhất để đọc tài nguyên có trong các gói. Các trình tải muốn hỗ trợ việc đọc tài nguyên phải triển khai phương thứcget_resource_reader(). Cả hai trình tải dựa trên tệp và zipimport đều triển khai các API này.importlib.abc.ResourceLoaderkhông được dùng nữa vì các API mới này.bpo-32320: bộ sưu tập.namedtuple() hiện hỗ trợ các giá trị mặc định.
bpo-29302: Thêm contextlib.AsyncExitStack. Bản vá của Alexander Mohr và Ilya Kulakov.
bpo-31961: Removed in Python 3.7.0b2. Đối số args của subprocess.Popen bây giờ có thể là path-like object. Nếu args được đưa ra dưới dạng một chuỗi thì phần tử đầu tiên của nó giờ đây cũng có thể là path-like object.
bpo-31900: Hàm
locale.localeconv()hiện đặt tạm thời ngôn ngữLC_CTYPEthành ngôn ngữLC_NUMERICđể giải mã các chuỗi bytedecimal_pointvàthousands_sepnếu chúng không phải là ASCII hoặc dài hơn 1 byte và ngôn ngữLC_NUMERICkhác với ngôn ngữLC_CTYPE. Thay đổi tạm thời này ảnh hưởng đến các chủ đề khác. Thay đổi tương tự đối với phương thứcstr.format()khi định dạng một số (int,float,floatvà các lớp con) với loạin(ví dụ:'{:n}'.format(1234)).bpo-31853: Sử dụng super().method thay vì socket.method trong SSLSocket. Họ ở đó rất có thể vì lý do di sản.
bpo-31399: Mô-đun ssl hiện sử dụng X509_VERIFY_PARAM_set1_host() và X509_VERIFY_PARAM_set1_ip() API của OpenSSL để xác minh tên máy chủ và địa chỉ IP. Dự phòng tên chung của chủ đề có thể bị vô hiệu hóa bằng SSLContext.hostname_checks_common_name.
bpo-14976: Thêm một lớp queue.SimpleQueue, một hàng đợi FIFO không giới hạn với triển khai put() của C được gửi lại.
Tài liệu¶
bpo-32724: Thêm tham chiếu vào một số lệnh trong tài liệu của Pdb. Bản vá của Stéphane Wirtel
bpo-32649: Hoàn thành tài liệu C API, phần lập hồ sơ và theo dõi với các sự kiện trên mỗi opcode mới được thêm vào.
bpo-17799: Giải thích hành vi thực tế của sys.settrace và sys.setprofile cũng như các đối tác C-API của chúng về loại sự kiện nào được nhận trong mỗi chức năng. Bản vá của Pablo Galindo Salgado.
Kiểm tra¶
bpo-32721: Sửa test_hashlib để không bị lỗi nếu mô-đun _md5 không được xây dựng.
bpo-28414: Thêm trường hợp thử nghiệm cho tên máy chủ IDNA 2003 và 2008. IDNA 2003 tên máy chủ quốc tế hóa đang hoạt động kể từ khi bpo-31399 cập bến. IDNA 2008 vẫn bị hỏng.
bpo-32604: Thêm mô-đun mở rộng "_xxsubinterpreters" mới để hiển thị trình thông dịch con hiện có C-API và cơ chế chia sẻ dữ liệu giữa các trình thông dịch chéo mới. Mô-đun này chủ yếu nhằm mục đích thử nghiệm kỹ lưỡng hơn khả năng hỗ trợ phiên dịch viên phụ hiện có. Lưu ý rằng mô-đun _xxsubinterpreters đã bị xóa trong 3.7.0rc1.
bpo-32602: Thêm chứng chỉ kiểm tra và kiểm tra chứng chỉ ECDSA và chế độ kép EC/RSA.
bpo-32549: Trên Travis CI, Python hiện Biên dịch và sử dụng bản sao cục bộ của OpenSSL 1.1.0g để thử nghiệm.
xây dựng¶
bpo-32635: Sửa lỗi segfault của mô-đun mật mã khi libxcrypt được cung cấp thay vì libcrypt trên hệ thống.
bpo-32598: Sử dụng autoconf để phát hiện các lib, tiêu đề và tính năng được hỗ trợ của OpenSSL. Macro ax_check_openssl M4 sử dụng pkg-config để định vị OpenSSL và quay lại tìm kiếm thủ công.
bpo-32593: Bỏ hỗ trợ FreeBSD 9 trở lên.
bpo-29708: Nếu biến môi trường
SOURCE_DATE_EPOCHđược đặt,py_compilesẽ luôn tạo các tệp.pycdựa trên hàm băm.
cửa sổ¶
macOS¶
bpo-32726: Cung cấp biến thể trình cài đặt macOS bổ sung, hiện đại hơn, chỉ hỗ trợ hệ thống macOS 10.9+ ở chế độ 64-bit. Nâng cấp thư viện của bên thứ ba được cung cấp lên OpenSSL 1.1.0g và SQLite 3.22.0. Trình cài đặt 10.9+ hiện liên kết và cung cấp bản sao Tcl/Tk 8.6 của riêng nó.
bpo-28440: Không còn thêm /Library/Python/3.x/site-packages vào sys.path cho các bản dựng khung macOS để tránh xung đột trong tương lai.
C API¶
Python 3.7.0 alpha 4¶
Release date: 2018-01-08
Cốt lõi và nội dung¶
bpo-31975: Danh sách bộ lọc cảnh báo mặc định hiện bắt đầu bằng mục nhập "default::DeprecationWarning:__main__", do đó, cảnh báo không dùng nữa một lần nữa được hiển thị theo mặc định trong các tập lệnh một tệp và tại dấu nhắc tương tác.
bpo-32226:
__class_getitem__hiện là phương thức lớp tự động.bpo-32399: Thêm hỗ trợ thư viện AIX uuid cho RFC4122 bằng uuid_create() trong libc.a
bpo-32390: Sửa lỗi biên dịch trên AIX sau khi trường f_fsid được thêm vào đối tượng được trả về bởi os.statvfs() (bpo-32143). Bản vá gốc của Michael Felt.
bpo-32379: Thực hiện tính toán MRO nhanh hơn khi một lớp kế thừa từ một cơ sở duy nhất.
bpo-32259: Thông báo lỗi TypeError xuất hiện khi giải nén không thể lặp lại hiện cụ thể hơn.
bpo-27169: Hằng số
__debug__hiện được tối ưu hóa tại thời điểm biên dịch. Điều này cũng sửa lỗi bpo-22091.bpo-32329: Tùy chọn
-Rhiện bật ngẫu nhiên hàm băm khi biến môi trườngPYTHONHASHSEEDđược đặt thành0. Trước đây, tùy chọn này đã bị bỏ qua. Hơn nữa,sys.flags.hash_randomizationhiện được đặt chính xác thành 0 khiPYTHONHASHSEED=0tắt tính năng ngẫu nhiên băm.bpo-30416: Trình tối ưu hóa hiện được bảo vệ khỏi việc tốn nhiều thời gian thực hiện các phép tính phức tạp và tiêu tốn nhiều bộ nhớ để tạo các hằng số lớn khi gấp liên tục. Tăng giới hạn cho các hằng số có thể được tạo ra khi gấp liên tục.
bpo-32282: Sửa lỗi ifdef không cần thiết trong phần bao gồm VersionHelpers.h trong socketmodule trên Windows.
bpo-30579: Triển khai TracebackType.__new__ để cho phép tạo các đối tượng traceback ở cấp độ Python và làm cho TracebackType.tb_next có thể thay đổi được.
bpo-32260: Không trao đổi byte các khóa đầu vào sang thuật toán SipHash trên nền tảng big-endian. Điều này sẽ đảm bảo siphash mang lại kết quả nhất quán trên các nền tảng.
bpo-31506: Cải thiện logic thông báo lỗi cho object.__new__ và object.__init__. Bản vá của Sanyam Khurana.
bpo-20361:
-bvà-bbhiện đưa các mục'default::BytesWarning'vàerror::BytesWarningvàosys.warnoptions, đảm bảo rằng chúng được ưu tiên hơn bất kỳ bộ lọc cảnh báo nào khác được định cấu hình thông qua tùy chọn-Whoặc biến môi trườngPYTHONWARNINGS.bpo-32230:
-X devhiện chèn một mục'default'vào sys.warnoptions, đảm bảo rằng nó hoạt động giống hệt với việc thực sự truyền-Wdefaultvào dòng lệnh.bpo-32226: PEP 560: Thêm hỗ trợ cho
__mro_entries__và__class_getitem__. Được thực hiện bởi Ivan Levkivskyi.bpo-32225: PEP 562: Thêm hỗ trợ cho mô-đun
__getattr__và__dir__. Được thực hiện bởi Ivan Levkivskyi.bpo-31901: Mô-đun
atexithiện có lệnh gọi lại được lưu trữ trên mỗi trình thông dịch.bpo-31650: Triển khai PEP 552 (pycs xác định). Python hiện hỗ trợ vô hiệu hóa các tệp bộ nhớ đệm mã byte dựa trên hàm băm nội dung nguồn thay vì thời gian sửa đổi lần cuối của nguồn.
bpo-29469: Di chuyển liên tục gấp từ lớp mã byte sang lớp AST. Bản vá gốc của Eugene Toder.
Thư viện¶
bpo-32506: Bây giờ lệnh đó được định nghĩa là giữ nguyên thứ tự chèn, hãy bỏ OrderedDict và chỉ sử dụng lệnh đơn giản.
bpo-32279: Thêm thông số vào dataclasses.make_dataclasses(): init, repr, eq, order, hash và Frozen. Chuyển chúng tới dataclass().
bpo-32278: Đặt thông tin loại tùy chọn trên dataclasses.make_dataclass(). Nếu bị bỏ qua, chuỗi 'typing.Any' sẽ được sử dụng.
bpo-32499: Thêm dataclasses.is_dataclass(obj), trả về True nếu obj là một lớp dữ liệu hoặc một phiên bản của một lớp dữ liệu.
bpo-32468: Cải thiện frame repr() để đề cập đến tên tệp, tên mã và số dòng hiện tại.
bpo-23749: asyncio: Triển khai loop.start_tls()
bpo-32441: Trả về bộ mô tả tệp mới (tức là đối số thứ hai) từ
os.dup2. Trước đây,Noneluôn được trả về.bpo-32422:
functools.lru_cachesử dụng ít bộ nhớ hơn (3 từ cho mỗi khóa được lưu trong bộ nhớ đệm) và mất khoảng 1/3 thời gian cho GC tuần hoàn.bpo-31721: Ngăn sự cố Python xảy ra khi Future._log_traceback được đặt thành True theo cách thủ công. Bây giờ nó chỉ có thể được đặt thành Sai hoặc ValueError được nâng lên.
bpo-32415: asyncio: Thêm Task.get_loop() và Future.get_loop()
bpo-26133: Không hủy đăng ký tín hiệu trong vòng lặp sự kiện asyncio UNIX khi tắt trình thông dịch.
bpo-32363: Tạo asyncio.Task.set_Exception() và set_result() tăng NotImplementedError. Task._step() và Future.__await__() đưa ra các ngoại lệ thích hợp khi chúng ở trạng thái không hợp lệ, thay vì đưa ra AssertionError.
bpo-32357: Tối ưu hóa asyncio.iscoroutine() và loop.create_task() cho các coroutine không phải gốc (ví dụ: async/await được biên dịch bằng Cython). 'loop.create_task(python_coroutine)' từng nhanh hơn 20% so với 'loop.create_task(cython_coroutine)'. Bây giờ, cái sau cũng nhanh như vậy.
bpo-32356: asyncio.transport.resume_reading() vàpause_reading() hiện không có hiệu lực. Phương thức Transport.is_reading() mới được thêm vào.
bpo-32355: Tối ưu hóa asyncio.gather(); bây giờ nhanh hơn tới 15%.
bpo-32351: Sử dụng fastpath trong asyncio.sleep nếu độ trễ <0 (tăng gấp 2 lần)
bpo-32348: Tối ưu hóa lịch trình asyncio.Future/thêm/xóa cuộc gọi lại. Việc tối ưu hóa cho thấy cải thiện hiệu suất 3-6% của mã async/await.
bpo-32331: Sửa socket.settimeout() và socket.setblocking() để giữ nguyên socket.type. Sửa hàm tạo socket.socket() để đặt lại bất kỳ cờ bit nào được áp dụng cho loại ổ cắm. Thay đổi này chỉ ảnh hưởng đến các hệ điều hành có SOCK_NONBLOCK và/hoặc SOCK_CLOEXEC.
bpo-32248: Thêm
importlib.abc.ResourceReaderlàm ABC cho trình tải để cung cấp API thống nhất để đọc tài nguyên có trong các gói. Đồng thời thêmimportlib.resourceslàm cổng củaimportlib_resources.bpo-32311: Triển khai phím tắt asyncio.create_task(coro)
bpo-32327: Chuyển đổi các hàm asyncio đã được ghi lại dưới dạng coroutine thành coroutine. Các chức năng bị ảnh hưởng: loop.sock_sendall, loop.sock_recv, loop.sock_accept, loop.getaddrinfo, loop.getnameinfo.
bpo-32323:
urllib.parse.urlsplit()hiện không chuyển đổi id vùng (phạm vi) thành chữ thường cho các địa chỉ IPv6 có phạm vi trong tên máy chủ.bpo-32302: Sửa bdist_wininst của distutils cho CRT v142: nó tương thích nhị phân với CRT v140.
bpo-29711: Sửa
stop_servingtrong vòng lặp asyncio proactor giết tất cả các máy chủ đang nghebpo-32308:
re.sub()hiện thay thế các kết quả trống liền kề với một kết quả không trống trước đó.bpo-29970: Hủy kết nối Giao thức SSL không đồng bộ nếu quá trình bắt tay không hoàn tất trong vòng 10 giây.
bpo-32314: Triển khai asyncio.run().
bpo-17852: Hoàn nguyên bản sửa lỗi không chính xác dựa trên sự hiểu lầm về ngữ nghĩa _Py_PyAtExit().
bpo-32296: Triển khai asyncio._get_running_loop() và get_event_loop() trong C. Điều này khiến chúng nhanh hơn gấp 4 lần.
bpo-32250: Triển khai
asyncio.current_task()vàasyncio.all_tasks(). Thêm các trình trợ giúp dự định sẽ được sử dụng khi triển khai tác vụ thay thế:asyncio._register_task,asyncio._enter_task,asyncio._leave_taskvàasyncio._unregister_task. Không dùng nữaasyncio.Task.current_task()vàasyncio.Task.all_tasks().bpo-32255: Giờ đây, một trường trống luôn được trích dẫn khi ghi vào tệp CSV. Điều này cho phép phân biệt một hàng trống với một hàng bao gồm một trường trống. Bản vá của Licht Takeuchi.
bpo-32277: Tăng
NotImplementedErrorthay vìSystemErrortrên các nền tảng không hỗ trợchmod(..., follow_symlinks=False). Bản vá của Anthony Sottile.bpo-30050: Đối số mới Warn_on_full_buffer cho signal.set_wakeup_fd cho phép bạn kiểm soát xem Python có in cảnh báo trên stderr khi bộ đệm fd đánh thức tràn hay không.
bpo-29137: Thư viện
fpectlđã bị xóa. Nó không bao giờ được bật theo mặc định, không bao giờ hoạt động chính xác trên x86-64 và nó đã thay đổi ABI của Python theo những cách gây ra sự cố bất ngờ cho các phần mở rộng C.bpo-32273: Di chuyển asyncio.test_utils sang test.test_asyncio.
bpo-32272: Xóa hàm asyncio.async().
bpo-32269: Thêm hàm asyncio.get_running_loop().
bpo-32265: Tất cả các phương thức lớp và tĩnh của các kiểu dựng sẵn hiện được phân loại chính xác theo phương thức kiểm tra.classify_class_attrs() và được nhóm trong đầu ra pydoc. Đã thêm type.ClassMethodDescriptorType cho các phương thức lớp không liên kết của các kiểu dựng sẵn.
bpo-32253: Không dùng nữa
yield from lock,await lock,with (yield from lock)vàwith await lockđối với các nguyên tắc đồng bộ hóa asyncio.bpo-22589: Đã thay đổi loại .bmp MIME từ 'image/x-ms-bmp' thành 'image/bmp'
bpo-32193: Chuyển đổi asyncio để sử dụng cú pháp async/await.
yield fromkiểu cũ vẫn được hỗ trợ.bpo-32206: Thêm hỗ trợ chạy module với pdb
bpo-32227:
functools.singledispatchhiện hỗ trợ đăng ký triển khai bằng cách sử dụng chú thích loại.bpo-15873: Đã thêm các hàm tạo thay thế mới
datetime.datetime.fromisoformat(),datetime.time.fromisoformat()vàdatetime.date.fromisoformat()làm hoạt động nghịch đảo của các phương thứcisoformattương ứng của mỗi lớp.bpo-32199: Trình getter ip getnode() hiện sử dụng 'liên kết ip' thay vì 'danh sách liên kết ip'.
bpo-32143: os.statvfs() bao gồm trường f_fsid từ statvfs(2)
bpo-26439: Sửa ctypes.util.find_library() cho AIX bằng cách triển khai ctypes._aix.find_library() Bản vá của: Michael Felt
bpo-31993: Bộ chọn hiện sử dụng ít bộ nhớ hơn khi tuần tự hóa các byte lớn và đối tượng str vào một tệp. Pickle được tạo bằng giao thức 4 sẽ cần ít bộ nhớ hơn để giải nén các đối tượng byte và str lớn.
bpo-27456: Đảm bảo TCP_NODELAY được đặt trên Linux. Các thử nghiệm của Victor Stinner.
bpo-31778: ast.literal_eval() hiện nghiêm ngặt hơn. Việc cộng và trừ các số tùy ý không còn được phép nữa.
bpo-31802: Nhập mô-đun đường dẫn gốc (
posixpath,ntpath) hiện hoạt động ngay cả khi mô-đunosvẫn không được nhập.bpo-30241: Thêm contextlib.AbstractAsyncContextManager. Bản vá của Jelle Zijlstra.
bpo-31699: Khắc phục tình trạng bế tắc trong
concurrent.futures.ProcessPoolExecutorkhi các đối số hoặc kết quả của tác vụ gây ra lỗi tẩy hoặc giải nén. Điều này sẽ đảm bảo rằng các cuộc gọi tớiProcessPoolExecutorAPI cuối cùng luôn quay trở lại.bpo-15216:
TextIOWrapper.reconfigure()hỗ trợ thay đổi encoding, errors và newline.
Tài liệu¶
bpo-32418: Thêm phương thức get_loop() vào các lớp Máy chủ và Tóm tắt.
Kiểm tra¶
bpo-32252: Fix errorhandler_suppress_crash_report() được sử dụng để ngăn các tệp kết xuất lõi khi kiểm tra sự cố. getrlimit() trả về 0 nếu thành công.
bpo-32002: Điều chỉnh thử nghiệm cưỡng chế ngôn ngữ C cho các trường hợp ngôn ngữ trống và ngôn ngữ POSIX để dễ dàng điều chỉnh hơn cho phù hợp với hành vi phụ thuộc vào nền tảng.
cửa sổ¶
bpo-19764: Triển khai hỗ trợ cho
subprocess.Popen(close_fds=True)trên Windows. Bản vá của Segev Finer.
Công cụ/Bản trình diễn¶
bpo-24960: 2to3 và lib2to3 hiện có thể đọc các tệp ngữ pháp được chọn lọc bằng pkgutil.get_data() thay vì thăm dò hệ thống tệp. Điều này cho phép 2to3 và lib2to3 hoạt động khi chạy từ tệp zip.
C API¶
bpo-32030: Py_Initialize() không đặt lại bộ cấp phát bộ nhớ về mặc định nếu biến môi trường
PYTHONMALLOCkhông được đặt.bpo-29084: C API không có giấy tờ cho OrderedDict đã bị loại khỏi C API giới hạn. Nó đã được thêm vào do nhầm lẫn và thực sự chưa bao giờ hoạt động trong phiên bản C API giới hạn.
bpo-32264: Đã chuyển tiêu đề pygetopt.h vào nội bộ/, vì nó không có API công khai.
bpo-32241:
Py_SetProgramName()vàPy_SetPythonHome()hiện lấy đối sốconst wchar *thay vìwchar *.
Python 3.7.0 alpha 3¶
Release date: 2017-12-05
Cốt lõi và nội dung¶
bpo-32176: co_flags.CO_NOFREE hiện luôn được hàm tạo đối tượng mã đặt chính xác dựa trên các freevar và cellvar, thay vì cần được người gọi đặt chính xác. Điều này đảm bảo nó sẽ tự động bị xóa khi các tham chiếu ô bổ sung được đưa vào một đối tượng và hàm mã đã sửa đổi.
bpo-10544: Biểu thức lợi nhuận hiện không còn được dùng trong biểu thức hiểu và biểu thức trình tạo. Chúng vẫn được phép trong định nghĩa của vòng lặp ngoài cùng, vì nó được đánh giá trực tiếp trong phạm vi kèm theo.
bpo-32137: Repr của lệnh được lồng sâu hiện gây ra RecursionError thay vì gặp sự cố do tràn ngăn xếp.
bpo-32096: Hoàn nguyên các thay đổi về bộ cấp phát bộ nhớ trong C API: di chuyển các cấu trúc trở lại từ _PyRuntime sang Objects/obmalloc.c. Bộ cấp phát bộ nhớ một lần nữa được khởi tạo tĩnh và do đó PyMem_RawMalloc() và Py_DecodeLocale() có thể được gọi trước _PyRuntime_Initialize().
bpo-32043: Thêm "chế độ nhà phát triển" mới: tùy chọn dòng lệnh "-X dev" mới để bật kiểm tra gỡ lỗi trong thời gian chạy.
bpo-32023: SyntaxError hiện được nâng lên chính xác khi sử dụng biểu thức trình tạo không có dấu ngoặc đơn thay vì danh sách kế thừa trong định nghĩa lớp. Sự trùng lặp của dấu ngoặc đơn chỉ có thể được bỏ qua trong các cuộc gọi.
bpo-32012: SyntaxError hiện đã được nâng lên chính xác khi một biểu thức trình tạo không có dấu ngoặc đơn được truyền dưới dạng đối số nhưng theo sau là dấu phẩy ở cuối. Biểu thức trình tạo luôn cần phải nằm ngay bên trong một tập hợp dấu ngoặc đơn và không thể có dấu phẩy ở hai bên.
bpo-28180: Một chức năng trợ giúp
_Py_SetLocaleFromEnv(category)nội bộ mới đã được thêm vào để cải thiện tính nhất quán về hành vi trên các triển khailibckhác nhau (ví dụ: Android không hỗ trợ cài đặt ngôn ngữ từ môi trường theo mặc định).bpo-31949: Đã khắc phục một số sự cố khi in dấu vết (PyTraceBack_Print()). Việc đặt sys.tracebacklimit thành 0 hoặc thấp hơn hiện sẽ ngăn chặn việc in dấu vết. Việc đặt sys.tracebacklimit thành Không hiện tại sẽ gây ra việc sử dụng giới hạn mặc định. Việc đặt sys.tracebacklimit thành số nguyên lớn hơn LONG_MAX hiện có nghĩa là sử dụng giới hạn LONG_MAX thay vì giới hạn mặc định. Đã sửa lỗi tràn số nguyên trong trường hợp có nhiều hơn các mục truy nguyên
2**31trên Windows. Đã sửa lỗi xử lý lỗi đầu ra.bpo-30696: Sửa lỗi trình thông dịch tương tác lặp liên tục khi không có bộ nhớ.
bpo-20047: Các phương thức bytearray() và rpartition() hiện chỉ chấp nhận các đối tượng giống byte làm dấu phân cách, như được ghi lại. Đặc biệt, giờ đây họ đưa ra TypeError thay vì trả về kết quả không có thật khi một số nguyên được truyền dưới dạng dấu phân cách.
bpo-21720: BytesWarning không còn được phát ra khi đối số fromlist của
__import__()hoặc thuộc tính__all__của mô-đun chứa các phiên bản byte.bpo-31845: Các biến môi trường một lần nữa được đọc chính xác khi khởi động trình thông dịch.
bpo-28936: Đảm bảo rằng lỗi cú pháp đầu tiên về mặt từ vựng liên quan đến tham số và
globalhoặcnonlocalđược phát hiện đầu tiên ở một phạm vi nhất định. Bản vá của Ivan Levkivskyi.bpo-31825: Đã sửa lỗi OverflowError trong codec 'unicode-escape' và trong codecs.escape_decode() khi giải mã một byte không phải mã ascii đã thoát.
bpo-31618: Logic theo dõi trên mỗi khung hình được thêm vào trong 3.7a1 đã được thay đổi để
frame->f_linenođược cập nhật trước khi các sự kiện"line"hoặc"opcode"được phát ra. Trước đây, các sự kiện opcode được phát ra đầu tiên và do đó đôi khi sẽ thấy số dòng cũ trên khung. Do đó, hoạt động của tính năng này đã thay đổi một chút: khi cảf_trace_linesvàf_trace_opcodesđều được bật, các sự kiện dòng sẽ xảy ra trước tiên.bpo-28603: In toàn bộ bối cảnh/chuỗi ngoại lệ khi thoát khỏi trình thông dịch, ngay cả khi một ngoại lệ trong chuỗi không thể băm được hoặc so sánh bằng với các ngoại lệ sau này. Bản vá của Zane Bitter.
bpo-31786: Sửa lỗi làm tròn thời gian chờ trong mô-đun chọn để làm tròn thời gian chờ âm chính xác trong khoảng từ -1,0 đến 0,0. Các chức năng hiện chặn chờ sự kiện như mong đợi. Trước đây, cuộc gọi không bị chặn do nhầm lẫn. Bản vá của Pablo Galindo.
bpo-31781: Ngăn chặn sự cố khi gọi các phương thức của đối tượng
zipimport.zipimporterchưa được khởi tạo. Bản vá của Oren Milman.bpo-30399: Repr() tiêu chuẩn của BaseException với một đối số duy nhất không còn chứa dấu phẩy thừa ở cuối.
bpo-31626: Đã sửa lỗi trong bộ cấp phát bộ nhớ gỡ lỗi. Đã có lệnh ghi vào bộ nhớ được giải phóng sau khi thu nhỏ khối bộ nhớ.
bpo-30817:
PyErr_PrintEx()hiện xóa ngoại lệ bị bỏ qua có thể được_PySys_SetObjectId()đưa ra, chẳng hạn như khi không có bộ nhớ.
Thư viện¶
bpo-28556: Hai bản sửa lỗi nhỏ cho mô-đun
typing: cho phép sao chép nông các phiên bản của các lớp chung, cải thiện sự tương tác của__init_subclass__với các lớp chung. PR gốc của Ivan Levkivskyi.bpo-32214: PEP 557, Lớp dữ liệu. Cung cấp một trình trang trí bổ sung các phương thức soạn sẵn cho các lớp sử dụng chú thích kiểu để chỉ định các trường.
bpo-27240: Thuật toán gấp tiêu đề cho các chính sách email mới đã được viết lại, thuật toán này cũng sửa lỗi bpo-30788, bpo-31831 và bpo-32182. Đặc biệt, việc gấp RFC2231 hiện đã được thực hiện chính xác.
bpo-32186: io.FileIO.readall() và io.FileIO.read() hiện giải phóng GIL khi nhận được kích thước tệp. Đã sửa lỗi treo tất cả các luồng với máy chủ NFS không thể truy cập được. Bản vá của Nir Soffer.
bpo-32101: Thêm cờ
sys.flags.dev_modebpo-32154: Chức năng
asyncio.windows_utils.socketpair()đã bị xóa: sử dụng trực tiếpsocket.socketpair()có sẵn trên tất cả các nền tảng kể từ Python 3.5 (trước đây, nó không có sẵn trên Windows).asyncio.windows_utils.socketpair()chỉ là bí danh củasocket.socketpairtrên Python 3.5 trở lên.bpo-32089: cảnh báo: Trong chế độ phát triển (-X dev) và gỡ lỗi (bản dựng pydebug), hãy sử dụng hành động "mặc định" cho ResourceWarning, thay vì hành động "luôn luôn", trong các bộ lọc cảnh báo mặc định.
bpo-32107:
uuid.getnode()hiện ưu tiên trả về các địa chỉ MAC được quản lý phổ biến nếu có, thay vì các địa chỉ MAC được quản lý cục bộ. Điều này đảm bảo tốt hơn cho tính duy nhất toàn cầu của UUID được trả về từuuid.uuid1(). Nếu chỉ có địa chỉ MAC được quản lý cục bộ thì địa chỉ đầu tiên được tìm thấy sẽ được trả về.bpo-23033: Ký tự đại diện hiện được hỗ trợ trong tên máy chủ khi nó là ký tự duy nhất ở phần bên trái nhất của tên máy chủ trong đối số thứ hai của
ssl.match_hostname(). Bản vá của Mandeep Singh.bpo-12239: Làm cho
msilib.SummaryInformation.GetProperty()trả vềNonekhi giá trị của thuộc tính làVT_EMPTY. Bản vá đầu tiên của Mark Mc Mahon.bpo-28334: Sử dụng
os.path.expanduser()để tìm file~/.netrctrongnetrc.netrc. Nếu nó không tồn tại,FileNotFoundErrorsẽ được nâng lên. Bản vá của Dimitri Merejkowsky.bpo-32121: Làm cho
tracemalloc.Tracebackhoạt động giống mô-đun truy nguyên hơn, sắp xếp các khung hình từ cũ nhất đến gần đây nhất.Traceback.format()hiện chấp nhận limit âm, cắt bớt kết quả đối với các khung hình cũ nhất củaabs(limit). Để có hành vi cũ, người ta có thể sử dụng đối số most_recent_first mới choTraceback.format(). (Bản vá của Jesse Bakker.)bpo-31325: Sửa lỗi sử dụng sai
collections.namedtuple()trong phương thứcRobotFileParser.parse(). Bản vá đầu tiên của Robin Wellner.bpo-12382:
msilib.OpenDatabase()hiện đưa ra thông báo ngoại lệ tốt hơn khi không thể mở hoặc tạo tệp MSI. Bản vá đầu tiên của William Tisäter.bpo-19610:
setup()hiện cảnh báo về các loại không hợp lệ đối với một số trường. Lớpdistutils.dist.Distributionhiện cảnh báo khi các trườngclassifiers,keywordsvàplatformskhông được chỉ định dưới dạng danh sách hoặc chuỗi.bpo-32071: Đã thêm tùy chọn dòng lệnh
-kvàopython -m unittestđể chỉ chạy các thử nghiệm khớp với (các) mẫu đã cho.bpo-10049: Đã thêm trình quản lý bối cảnh no-op nullcontext vào contextlib. Điều này cung cấp một giải pháp thay thế đơn giản và nhanh hơn cho ExitStack() khi xử lý các trình quản lý bối cảnh tùy chọn.
bpo-28684: Trình trang trí test.support.skip_unless_bind_unix_socket() mới được sử dụng ở đây để bỏ qua các thử nghiệm asyncio không thành công do nền tảng thiếu chức năng bind() cho các ổ cắm miền unix (vì đây là trường hợp đối với người dùng không phải root trên các phiên bản Android gần đây hiện đang chạy SELinux ở chế độ thực thi).
bpo-32110:
codecs.StreamReader.read(n)hiện trả về không quá n ký tự/byte cho n không âm. Điều này làm cho nó tương thích với các phương thứcread()của các đối tượng giống như tệp khác.bpo-27535: Mô-đun cảnh báo không còn rò rỉ bộ nhớ trong sổ đăng ký cảnh báo ẩn đối với hành động "bỏ qua" của các bộ lọc cảnh báo. Hàm Warn_explicit() không thêm khóa cảnh báo vào sổ đăng ký nữa cho hành động "bỏ qua".
bpo-32088: cảnh báo: Khi Python được xây dựng ở chế độ gỡ lỗi (
Py_DEBUG), các cảnh báoDeprecationWarning,PendingDeprecationWarningvàImportWarninghiện được hiển thị theo mặc định.bpo-1647489: Đã sửa lỗi tìm kiếm các mẫu biểu thức chính quy có thể khớp với một chuỗi trống. Giờ đây, chuỗi không trống có thể được tìm thấy chính xác sau khi khớp với chuỗi trống.
bpo-25054: Đã thêm hỗ trợ phân tách theo mẫu có thể khớp với chuỗi trống.
bpo-32072: Đã khắc phục sự cố với số nguyên nhị phân: Đã sửa lỗi lưu bytearrays. Các đối tượng giống hệt nhau sẽ chỉ được lưu một lần. Các tham chiếu bằng nhau sẽ được tải dưới dạng các đối tượng giống hệt nhau. Đã thêm hỗ trợ để lưu và tải cấu trúc dữ liệu đệ quy.
bpo-32069: Bỏ vận chuyển SSL kế thừa khỏi asyncio, ssl.MemoryBIO luôn được sử dụng.
bpo-32066: asyncio: Hỗ trợ pathlib.Path trong create_unix_connection; sock arg nên là tùy chọn
bpo-32046: Cập nhật 2to3 để chuyển đổi từ operator.isCallable(obj) sang callable(obj). Bản vá của Donghee Na.
bpo-32018: kiểm tra.signature phải tuân theo PEP 8, nếu tham số có chú thích và giá trị mặc định. Bản vá của Donghee Na.
bpo-32025: Thêm time.thread_time() và time.thread_time_ns()
bpo-32037: Các số nguyên phù hợp với số nguyên 32 bit đã ký hiện sẽ được chọn bằng giao thức 0 bằng cách sử dụng mã opcode INT. Điều này sẽ làm giảm kích thước của dưa chua, tăng tốc độ tẩy và giải nén, đồng thời làm cho các số nguyên này được giải nén dưới dạng phiên bản int trong Python 2.
bpo-32034: Tạo asyncio.IncompleteReadError và LimitOverrunError có thể chọn được.
bpo-32015: Đã sửa lỗi lặp asyncio trong trường hợp kết nối lại ổ cắm trong khi chờ đọc/ghi không đồng bộ từ/vào ổ cắm.
bpo-32011: Đã khôi phục hỗ trợ tải các tệp so sánh bằng mã TYPE_INT64. Những tệp này có thể được tạo bằng Python 2.7.
bpo-28369: Tăng cường kiểm tra add_reader/writer để đảm bảo một số phương tiện truyền tải không sử dụng ổ cắm. Trước đây, chỉ hỗ trợ các trường hợp add_reader/writer được gọi bằng int FD. Bây giờ việc kiểm tra đã được triển khai chính xác cho tất cả các đối tượng giống như tệp.
bpo-31976: Khắc phục tình trạng chạy đua khi xóa tệp chậm, điều này có thể gây ra lỗi phân đoạn nếu đóng tệp từ một luồng khác.
bpo-31985: Chính thức không dùng aifc.openfp, sunau.openfp và wave.openfp. Kể từ khi thay đổi 7bc817d5ba917528e8bd07ec461c635291e7b06a vào năm 1993, openfp trong mỗi mô-đun trong số ba mô-đun đã trỏ đến chức năng mở của mô-đun đó như một vấn đề về khả năng tương thích ngược, mặc dù nó chưa được kiểm tra và không có giấy tờ.
bpo-21862: Dòng lệnh cProfile hiện chấp nhận
-m module_namethay thế cho đường dẫn tập lệnh. Bản vá của Sanyam Khurana.bpo-31970: Giảm chi phí hoạt động của chế độ gỡ lỗi asyncio.
bpo-31843: đối số database của sqlite3.connect() hiện chấp nhận path-like object, thay vì chỉ một chuỗi.
bpo-31945: Thêm blocksize có thể định cấu hình vào
HTTPConnectionvàHTTPSConnectionđể cải thiện thông lượng tải lên. Bản vá của Nir Soffer.bpo-31943: Thêm phương thức
cancelled()vàoasyncio.Handle. Bản vá của Marat Sharafutdinov.bpo-9678: Đã sửa lỗi xác định địa chỉ MAC trong mô-đun uuid: Sử dụng ifconfig trên NetBSD và OpenBSD. Sử dụng arp trên Linux, FreeBSD, NetBSD và OpenBSD. Dựa trên bản vá của Takayuki Shimizukawa.
bpo-30057: Sửa tín hiệu có thể bị bỏ lỡ trong signal.signal().
bpo-31933: Sửa các thông số Blake2 leaf_size và node_offset trên nền tảng endian lớn. Bản vá của Jack O'Connor.
bpo-21423: Thêm đối số khởi tạo vào {Process,Thread}PoolExecutor
bpo-31927: Đã sửa lỗi biên dịch mô-đun ổ cắm trên NetBSD 8. Đã sửa lỗi xác nhận hoặc đọc dữ liệu tùy ý khi phân tích địa chỉ AF_BLUETOOTH trên NetBSD và DragonFly BSD.
bpo-27666: Đã sửa lỗi hỏng ngăn xếp trong Curs.box() và Curs.ungetmouse() khi kích thước của loại chtype hoặc mmask_t nhỏ hơn kích thước của C dài. lời nguyền.box() bây giờ chấp nhận các ký tự làm đối số. Dựa trên bản vá của Steve Fink.
bpo-31917: Thêm 3 mã định danh đồng hồ mới:
time.CLOCK_BOOTTIME,time.CLOCK_PROFvàtime.CLOCK_UPTIME.bpo-31897: plistlib hiện phát hiện nhiều lỗi hơn khi đọc các số nguyên nhị phân và tăng InvalidFileException thay vì các ngoại lệ không mong muốn.
bpo-25720: Fix phương pháp kiểm tra trạng thái pad của lời nguyền WINDOW. Bản vá của Masayuki Yamamoto.
bpo-31893: Đã sửa lỗi bố cục cấu trúc kqueue_event trên OpenBSD và NetBSD. Đã sửa lỗi so sánh các đối tượng kqueue_event.
bpo-31891: Đã sửa lỗi xây dựng mô-đun lời nguyền trên NetBSD.
bpo-31884: đã thêm các hằng số cần thiết vào mô-đun quy trình con để cài đặt mức độ ưu tiên trên windows
bpo-28281: Xóa giới hạn năm (1-9999) trên hàm Calendar.weekday(). Bản vá của Mark Gollahon.
bpo-31702: crypt.mksalt() hiện cho phép chỉ định số vòng để băm SHA-256 và SHA-512.
bpo-30639:
inspect.getfile()không còn tính toán số lần lặp lại của các đối tượng không xác định để hiển thị trong thông báo lỗi, nhằm bảo vệ khỏi các số lần lặp lại tùy chỉnh có hành vi xấu.bpo-30768: Khắc phục việc triển khai pthread+semaphore của PyThread_acquire_lock_timed() khi được gọi với thời gian chờ > 0 và intr_flag=0: tính toán lại thời gian chờ nếu sem_timedwait() bị gián đoạn bởi tín hiệu (EINTR). Xem thêm PEP 475.
bpo-31854: Cộng hằng số
mmap.ACCESS_DEFAULT.bpo-31834: Chỉ sử dụng mã được tối ưu hóa cho BLAKE2 với SSSE3+. Việc triển khai SSE2 thuần túy chậm hơn so với triển khai tham chiếu C thuần túy.
bpo-28292: Calendar.itermonthdates() giờ đây sẽ liên tục đưa ra một ngoại lệ khi một ngày nằm ngoài phạm vi 0001-01-01 đến 9999-12-31. Để hỗ trợ các ứng dụng không thể chấp nhận những ngoại lệ như vậy, các phương thức mới itermonthdays3() và itermonthdays4() đã được thêm vào. Các phương thức mới trả về các bộ dữ liệu và không bị hạn chế bởi phạm vi được datetime.date hỗ trợ.
bpo-28564: Hàm Shutil.rmtree() đã được tăng tốc lên tới 20--40%. Việc này được thực hiện bằng hàm os.scandir().
bpo-28416: Các phiên bản của lớp con Pickler.Pickler với phương thức Persist_id() và lớp con Picker.Unpickler với phương thức Persist_load() không còn tạo chu trình tham chiếu nữa.
bpo-31653: Không phát hành GIL nếu chúng ta có thể thu được một semaphore đa xử lý ngay lập tức.
bpo-28326: Khắc phục multiprocessing.Process khi thiết bị xuất chuẩn và/hoặc thiết bị xuất chuẩn bị đóng hoặc Không có.
bpo-20825: Thêm các thử nghiệm ngăn chặn
subnet_ofvàsuperset_ofvàoipaddress.IPv6Networkvàipaddress.IPv4Network. Bản vá của Michel Albert và Cheryl Sabella.bpo-31827: Xóa hàm os.stat_float_times(). Nó được giới thiệu trong Python 2.3 để tương thích ngược với Python 2.2 và không được dùng nữa kể từ Python 3.1.
bpo-31756: Thêm đối số từ khóa
subprocess.Popen(text=False)vào các hàmsubprocessđể rõ ràng hơn về thời điểm thư viện nên cố gắng giải mã kết quả đầu ra thành văn bản. Bản vá của Andrew Clegg.bpo-31819: Thêm Tóm tắtEventLoop.sock_recv_into().
bpo-31457: Nếu sử dụng bộ điều hợp nhật ký lồng nhau, các phương thức
process()bên trong sẽ không còn bị bỏ qua.bpo-31457: Thuộc tính
managertrên các đối tượng LoggerAdapter hiện có thể thiết lập chính xác.bpo-31806: Sửa lỗi làm tròn thời gian chờ trong time.sleep(), threading.Lock.acquire() và socket.socket.settimeout() để làm tròn thời gian chờ âm chính xác trong khoảng từ -1,0 đến 0,0. Các chức năng hiện chặn chờ sự kiện như mong đợi. Trước đây, cuộc gọi không bị chặn do nhầm lẫn. Bản vá của Pablo Galindo.
bpo-31803: time.clock() và time.get_clock_info('clock') hiện phát ra cảnh báo DeprecationWarning.
bpo-31800: Hỗ trợ mở rộng để phân tích cú pháp bù UTC. strptime '%z' hiện có thể phân tích cú pháp đầu ra do datetime.isoformat tạo ra, bao gồm giây và micro giây.
bpo-28603: traceback: Khắc phục lỗi TypeError xảy ra trong quá trình in các dấu vết ngoại lệ khi ngoại lệ hiện tại hoặc ngoại lệ trong chuỗi ngữ cảnh/nguyên nhân của nó không thể băm được. Bản vá của Zane Bitter.
bpo-30541: Thêm chức năng mới để đóng dấu một mô hình và ngăn việc tự động tạo các mô hình con. Bản vá của Mario Corchero.
bpo-31784: Triển khai PEP 564, thêm 6 chức năng mới với độ phân giải nano giây vào mô-đun
time:clock_gettime_ns(),clock_settime_ns(),monotonic_ns(),perf_counter_ns(),process_time_ns(),time_ns().bpo-30143: 2to3 hiện tạo mã sử dụng các lớp bộ sưu tập trừu tượng từ các bộ sưu tập.abc thay vì các bộ sưu tập.
bpo-31770: Ngăn chặn sự cố khi gọi phương thức
__init__()của đối tượngsqlite3.Cursornhiều lần. Bản vá của Oren Milman.bpo-31764: Ngăn chặn sự cố trong
sqlite3.Cursor.close()trong trường hợp đối tượngCursorchưa được khởi tạo. Bản vá của Oren Milman.bpo-31752: Khắc phục sự cố có thể xảy ra trong hàm tạo timedelta được gọi bằng số nguyên tùy chỉnh.
bpo-31620: asyncio.Queue trống hiện không bị rò rỉ bộ nhớ khi hết thời gian chờ queue.get pollers
bpo-31690: Cho phép sử dụng các cờ re.ASCII, re.LOCALE và re.UNICODE làm cờ nhóm cho các biểu thức thông thường.
bpo-30349: FutureWarning hiện được phát ra nếu một biểu thức chính quy chứa các cấu trúc bộ ký tự sẽ thay đổi về mặt ngữ nghĩa trong tương lai (các tập hợp lồng nhau và các thao tác tập hợp).
bpo-31664: Đã thêm hỗ trợ cho hàm băm Blowfish trong mô-đun mật mã.
bpo-31632: Sửa phương thức set_protocol() của lớp _SSLProtocolTransport trong mô-đun asyncio. Phương pháp này trước đây đã sửa đổi một tham chiếu sai đến giao thức.
bpo-15037: Đã thêm giải pháp thay thế cho getkey() trong lời nguyền dành cho ncurses 5.7 trở về trước.
bpo-31307: Cho phép sử dụng các đối tượng byte làm đối số cho
configparser.ConfigParser.read(). Bản vá của Vincent Michel.bpo-31334: Sửa
poll.poll([timeout])trong mô-đunselectđối với thời gian chờ âm tùy ý trên tất cả các hệ điều hành trong đó nó chỉ có thể là số nguyên không âm hoặc -1. Bản vá của Riccardo Coccioli.bpo-31310: trình theo dõi semaphore của đa xử lý sẽ được khởi chạy lại nếu bị lỗi.
bpo-31308: Làm cho quy trình máy chủ phân nhánh của đa xử lý không bị ảnh hưởng bởi Ctrl-C và các gián đoạn khác của người dùng. Nếu nó gặp sự cố, hãy khởi động lại nó khi cần thiết.
bpo-31245: Đã thêm hỗ trợ cho ổ cắm AF_UNIX trong asyncio
create_datagram_endpoint.bpo-30553: Thêm mã trạng thái HTTP/2 421 (Yêu cầu sai hướng) vào
http.HTTPStatus. Bản vá của Vitor Pereira.
Tài liệu¶
bpo-32105: Đã thêm điểm đánh dấu phiên bản asyncio.BaseEventLoop.connect_accepted_socket.
Kiểm tra¶
bpo-31380: Bỏ qua test_httpservers test_undecodable_file trên macOS: không thành công trên APFS.
bpo-31705: Bỏ qua test_socket.test_sha256() trên nhân Linux cũ hơn 4.5. Thử nghiệm thất bại với ENOKEY trên kernel 3.10 (trên ppc64le). Một bản sửa lỗi đã được hợp nhất vào kernel 4.5.
bpo-32138: Bỏ qua các bài kiểm tra test_faulthandler của Android để nâng cao SIGSEGV và xóa trình trang trí test.support.requires_android_level.
bpo-32136: Các bài kiểm tra nhúng thời gian chạy đã được tách từ
Lib/test/test_capi.pythành một tệpLib/test/test_embed.pymới.bpo-28668: test.support.requires_multiprocessing_queue đã bị xóa. Thay vào đó, hãy bỏ qua các thử nghiệm bằng test.support.import_module('multiprocessing.synchronize') khi quá trình triển khai semaphore bị hỏng hoặc bị thiếu.
bpo-32126: Bỏ qua test_get_event_loop_new_process trong test.test_asyncio.test_events khi sem_open() không hoạt động.
bpo-31174: Sửa test_tools.test_unparse: DirectoryTestCase hiện lưu trữ mẫu tên để luôn kiểm tra các tệp giống nhau. Nó ngăn ngừa cảnh báo sai khi tìm kiếm rò rỉ tài liệu tham khảo.
xây dựng¶
bpo-28538: Hoàn nguyên các thay đổi trước đó, cấu trúc if_nameindex được xác định bởi Tiêu đề hợp nhất.
bpo-28762: Hoàn nguyên cam kết cuối cùng, macro F_LOCK được xác định bởi Tiêu đề hợp nhất Android.
bpo-29040: Hỗ trợ xây dựng Android với Tiêu đề hợp nhất. Bản phát hành NDK đầu tiên hỗ trợ Tiêu đề hợp nhất là android-ndk-r14.
bpo-32059:
detect_modules()trongsetup.pyhiện cũng tìm kiếm đường dẫn gốc hệ thống khi biên dịch chéo.bpo-31957: Sửa lỗi phát hiện phiên bản Windows SDK khi xây dựng cho Windows.
bpo-31609: Sửa dấu ngoặc kép trong PCbuild/clean.bat
bpo-31934: Hủy bỏ quá trình xây dựng khi xây dựng từ cây nguồn không sạch.
bpo-31926: Đã sửa lỗi Phòng khám đối số đôi khi gây ra lỗi biên dịch khi có nhiều hơn một hàm và/hoặc phương thức trong tệp .c có cùng tên.
bpo-28791: Cập nhật các bản dựng Windows để sử dụng SQLite 3.21.0.
bpo-28791: Cập nhật trình cài đặt OS X để sử dụng SQLite 3.21.0.
bpo-28643: Ghi lại tiến trình xây dựng hồ sơ-opt bằng các tệp tem.
bpo-31866: Hoàn tất việc gỡ bỏ hỗ trợ cho AtheOS.
cửa sổ¶
bpo-1102: Trả về
NonekhiView.Fetch()trả vềERROR_NO_MORE_ITEMSthay vì tăngMSIError. Bản vá đầu tiên của Anthony Tuinga.bpo-31944: Sửa nút Sửa đổi trong hộp thoại Ứng dụng và Tính năng.
bpo-20486: Triển khai phương thức
Database.Close()để giúp đóng các đối tượng cơ sở dữ liệu MSI.bpo-31857: Thực hiện hành vi của USE_STACKCHECK mang tính quyết định trong môi trường đa luồng.
macOS¶
bpo-31392: Cập nhật trình cài đặt macOS để sử dụng OpenSSL 1.0.2m
IDLE¶
bpo-32207: Cải thiện khả năng theo dõi ngoại lệ sự kiện tk trong IDLE. Khi việc xử lý sự kiện tk được điều khiển bởi vòng lặp chạy của IDLE, bối cảnh truy nguyên queue.EMPTY khó hiểu và mất tập trung không còn được thêm vào các truy nguyên ngoại lệ sự kiện tk nữa. Truy nguyên bây giờ giống như khi xử lý sự kiện được điều khiển bởi mã người dùng. Bản vá dựa trên đề xuất của Serhiy Storchaka.
bpo-32164: Xóa tệp không sử dụng Idlelib/tabbedpages.py. Việc sử dụng TabbedPageSet trong hộp thoại cấu hình đã được thay thế bằng ttk.Notebook.
bpo-32100: IDLE: Sửa lỗi cũ và mới trong trình duyệt đường dẫn; cải thiện các bài kiểm tra. Bản vá chủ yếu của Cheryl Sabella.
bpo-31858: IDLE -- Hạn chế thao tác nhắc nhở shell đối với shell. Cửa sổ soạn thảo và đầu ra chỉ nhìn thấy dòng nhắc cuối cùng trống. Điều này giúp đơn giản hóa mã và sửa một lỗi nhỏ khi chèn dòng mới. Sys.ps1, nếu có, sẽ được đọc khi khởi động Shell nhưng không được đặt hoặc thay đổi.
bpo-31860: Mẫu phông chữ trong hộp thoại cấu hình IDLE hiện có thể chỉnh sửa được. Các thay đổi vẫn tồn tại trong khi IDLE vẫn mở
bpo-31836: Test_code_module hiện vượt qua nếu chạy sau test_idle, thiết lập ps1. Mô-đun mã sử dụng sys.ps1 nếu có hoặc đặt nó thành '>>> ' nếu không. Test_code_module hiện kiểm tra chính xác cả hai hành vi. Tương tự cho ps2.
bpo-28603: Khắc phục TypeError khiến shell khởi động lại khi in dấu vết bao gồm một ngoại lệ không thể băm được. Bản vá của Zane Bitter.
bpo-13802: Sử dụng các ký tự không phải Latinh trong mẫu cài đặt Phông chữ của IDLE. Ngay cả khi người ta chọn một phông chữ xác định một tập hợp con giới hạn của Mặt phẳng đa ngôn ngữ cơ bản unicode, tcl/tk sẽ sử dụng các phông chữ khác xác định một ký tự. Ví dụ mở rộng giúp người dùng các ký tự không phải tiếng Latinh hiểu rõ hơn về những gì họ có thể thấy trong trình soạn thảo và trình bao của IDLE. Để nhường chỗ cho mẫu mở rộng, các khung trên tab Phông chữ được sắp xếp lại. Trợ giúp Phông chữ/Tab giải thích một chút về các bổ sung.
Công cụ/Bản trình diễn¶
bpo-32159: Xóa công cụ CVS và Subversion: xóa tập lệnh svneol.py và treesync.py. CPython đã di chuyển từ CVS sang Subversion, sang Mercurial và sau đó sang Git. CVS và Subversion không còn được sử dụng để phát triển CPython nữa.
bpo-30722: Làm cho bản demo hoạt động với Python 3.6 và các phiên bản mới hơn. Ngoài ra, hãy xóa tùy chọn
LOCALEvì nó không hoạt động với các mẫu chuỗi trong Python 3. Bản vá của Christoph Sarnowski.
C API¶
bpo-20891: Sửa lỗi PyGILState_Ensure(). Khi PyGILState_Ensure() được gọi trong một chuỗi không phải Python trước PyEval_InitThreads(), chỉ gọi PyEval_InitThreads() sau khi gọi PyThreadState_New() để khắc phục sự cố.
bpo-32125: Cờ
Py_UseClassExceptionsFlagđã bị xóa. Nó không được dùng nữa và không được sử dụng nữa kể từ Python 2.0.bpo-25612: Di chuyển trạng thái ngoại lệ hiện tại từ đối tượng khung sang đồng quy trình. Điều này giúp đơn giản hóa trình thông dịch và sửa một số lỗi khó hiểu do có trạng thái ngoại lệ hoán đổi khi vào hoặc thoát khỏi trình tạo.
bpo-23699: Thêm macro Py_RETURN_RICHCOMPARE để giảm mã soạn sẵn trong các hàm so sánh phong phú.
bpo-30697: Singleton
PyExc_RecursionErrorInstbị xóa vàPyErr_NormalizeException()không sử dụng nó nữa. Singleton này tồn tại lâu dài và các thành viên của nó không bao giờ bị xóa có thể gây ra lỗi phân tách trong quá trình hoàn thiện trình thông dịch. Xem thêm bpo-22898.
Python 3.7.0 alpha 2¶
Release date: 2017-10-16
Cốt lõi và nội dung¶
bpo-31558:
gc.freeze()là một API mới cho phép di chuyển tất cả các đối tượng hiện đang được trình thu gom rác theo dõi sang một thế hệ vĩnh viễn, loại bỏ chúng một cách hiệu quả khỏi các sự kiện thu thập trong tương lai. Điều này có thể được sử dụng để bảo vệ những đối tượng đó khỏi bị đột biến PyGC_Head. Trên thực tế, điều này mang lại sự ổn định tuyệt vời khi sao chép khi ghi tại fork().bpo-31642: Đã khôi phục chặn "từ mô-đun nhập gói" bằng cách đặt sys.modules["package.module"] thành Không.
bpo-31708: Cho phép sử dụng biểu thức trình tạo không đồng bộ trong các hàm đồng bộ.
bpo-31709: Bỏ hỗ trợ __aiter__ không đồng bộ.
bpo-30404: Tùy chọn -u hiện làm cho các luồng stdout và stderr không được lưu vào bộ đệm thay vì được lưu vào bộ đệm dòng.
bpo-31619: Đã sửa lỗi ValueError khi chuyển đổi một chuỗi có số lượng dấu gạch dưới lớn thành số nguyên có cơ sở nhị phân.
bpo-31602: Khắc phục lỗi xác nhận trong
zipimporter.get_source()trong trường hợpzlib.decompress()bị lỗi. Bản vá của Oren Milman.bpo-31592: Đã khắc phục lỗi xác nhận trong trình phân tích cú pháp Python trong trường hợp
unicodedata.normalize()bị lỗi. Bản vá của Oren Milman.bpo-31588: Đưa ra
TypeErrorvới thông báo lỗi hữu ích khi việc tạo lớp không thành công do siêu dữ liệu có phương thức__prepare__()không hợp lệ. Bản vá của Oren Milman.bpo-31574: Importlib được trang bị hai đầu dò dtrace để lập hồ sơ thời gian nhập.
bpo-31566: Khắc phục lỗi xác nhận trong
_warnings.warn()trong trường hợp toàn cầu__name__bị lỗi. Bản vá của Oren Milman.bpo-31506: Cải thiện logic thông báo lỗi cho
object.__new__vàobject.__init__.bpo-31505: Khắc phục lỗi xác nhận trong
json, trong trường hợp_json.make_encoder()nhận được đối sốencoder()không hợp lệ. Bản vá của Oren Milman.bpo-31492: Khắc phục lỗi xác nhận trong trường hợp không nhập được từ mô-đun có thuộc tính
__name__không hợp lệ và trong trường hợp không truy cập được thuộc tính của mô-đun đó. Bản vá của Oren Milman.bpo-31478: Khắc phục lỗi xác nhận trong
_random.Random.seed()trong trường hợp đối số có phương thức__abs__()không hợp lệ. Bản vá của Oren Milman.bpo-31336: Tăng tốc độ tạo lớp lên 10-20% bằng cách giảm chi phí sử dụng khi tra cứu phương thức đặc biệt cần thiết. Bản vá của Stefan Behnel.
bpo-31415: Thêm tùy chọn
-X importtimeđể hiển thị thời gian mỗi lần nhập. Nó có thể được sử dụng để tối ưu hóa thời gian khởi động của ứng dụng. Hỗ trợPYTHONPROFILEIMPORTTIMEnhư một cách tương đương để kích hoạt tính năng này.bpo-31410: Trình mô tả phương thức gọi và phương thức lớp được tối ưu hóa.
bpo-31353: PEP 553 - Thêm một phần mềm tích hợp mới có tên
breakpoint()gọisys.breakpointhook(). Theo mặc định, điều này nhậppdbvà gọipdb.set_trace(), nhưng người dùng có thể ghi đèsys.breakpointhook()để gọi bất kỳ trình gỡ lỗi nào họ muốn. Giá trị ban đầu của hook được lưu trongsys.__breakpointhook__.bpo-17852: Duy trì danh sách các tệp đệm đang mở, xóa chúng trước khi thoát khỏi trình thông dịch. Dựa trên một bản vá từ Armin Rigo.
bpo-31315: Khắc phục lỗi xác nhận trong imp.create_dynamic(), khi spec.name không phải là một chuỗi. Bản vá của Oren Milman.
bpo-31311: Khắc phục sự cố trong phương thức
__setstate__()củactypes._CData, trong trường hợp__dict__bị lỗi. Bản vá của Oren Milman.bpo-31293: Khắc phục sự cố khi chia và nhân thực sự một đối tượng timedelta với một float bằng phương thức as_integer_ratio() không hợp lệ. Bản vá của Oren Milman.
bpo-31285: Khắc phục lỗi xác nhận trong
warnings.warn_explicit, khi giá trị trả về củaget_source()của trình tải nhận được có phương thứcsplitlines()không hợp lệ. Bản vá của Oren Milman.bpo-30406: Tạo từ khóa thích hợp cho
asyncvàawait, như được chỉ định trong PEP 492.
Thư viện¶
bpo-30058: Đã sửa lỗi tràn bộ đệm trong select.kqueue.control().
bpo-31672:
idpatterntrongstring.Templatekhớp với một số ký tự không phải ASCII. Bây giờ nó sử dụng cờ cục bộ biểu thức chính quy-iđể tránh các ký tự không phải ASCII.bpo-31701: Trên Windows, errorhandler.enable() hiện bỏ qua các ngoại lệ MSC và COM.
bpo-31728: Ngăn chặn sự cố trong
_elementtreedo dọn dẹpElement.textvàElement.tailkhông an toàn. Bản vá của Oren Milman.bpo-31671: Bây giờ
re.compile()chuyển đổi RegexFlag đã chuyển thành đối tượng int bình thường trước khi biên dịch. điểm chuẩn bm_regex_compile cho thấy hiệu suất cải thiện 14%.bpo-30397: Các loại đối tượng thông thường được biên dịch và đối tượng khớp hiện được hiển thị dưới dạng
re.Patternvàre.Match. Điều này bổ sung thông tin trong đầu ra pydoc cho mô-đunre.bpo-31675: Đã sửa lỗi rò rỉ bộ nhớ trong các phương thức của Tkinter Splitlist() và Split() khi truyền một chuỗi lớn hơn 2 GiB.
bpo-31673: Đã sửa lỗi đánh máy trong tên phương thức adderrorinfo() của Tkinter.
bpo-31648: Cải tiến đối với các vị từ đường dẫn trong ElementTree: Cho phép khoảng trắng xung quanh các phần vị từ, tức là "[a = 'text']" thay vì yêu cầu "[a='text']" ít đọc hơn. Thêm hỗ trợ so sánh văn bản của nút hiện tại, như "[.='text']". Bản vá của Stefan Behnel.
bpo-30806: Sửa biểu diễn chuỗi của đối tượng netrc.
bpo-31638: Thêm đối số tùy chọn
compressedvàozipapp.create_archivevà thêm tùy chọn--compressvào giao diện dòng lệnh củazipapp.bpo-25351: Tránh lỗi kích hoạt venv với các biến không xác định
bpo-20519: Tránh sử dụng ctypes (nếu có thể) và cải thiện thời gian nhập cho uuid.
bpo-28293: Bộ đệm biểu thức chính quy không còn bị xóa hoàn toàn khi đầy.
bpo-31596: Đã thêm pthread_getcpuclockid() vào mô-đun thời gian
bpo-27494: Làm cho 2to3 chấp nhận dấu phẩy ở cuối trong biểu thức trình tạo. Ví dụ:
set(x for x in [],)hiện được cho phép.bpo-30347: Dừng sự cố khi lặp đồng thời trên các trình vòng lặp itertools.groupby().
bpo-30346: Một trình lặp được tạo bởi itertools.groupby() iterator hiện đã cạn kiệt sau khi nâng cấp trình lặp nhóm theo.
bpo-31556: Hủy asyncio.wait_for trong tương lai nhanh hơn nếu hết thời gian chờ <= 0
bpo-31540: Cho phép truyền một đối tượng ngữ cảnh trong hàm tạo
concurrent.futures.ProcessPoolExecutor. Ngoài ra, giải phóng tài nguyên công việc trongconcurrent.futures.ProcessPoolExecutorsớm hơn để cải thiện việc sử dụng bộ nhớ khi nhân viên chờ công việc mới.bpo-31516:
threading.current_thread()không được trả lại chuỗi giả khi tắt máy.bpo-31525: Trong mô-đun sqlite, yêu cầu sqlite3_prepare_v2 API. Do đó, mô-đun sqlite hiện yêu cầu phiên bản sqlite ít nhất là 3.3.9.
bpo-26510: trình phân tích cú pháp con argparse hiện được yêu cầu theo mặc định. Điều này phù hợp với hành vi trong Python 2. Đối với các trình phân tích cú pháp con tùy chọn, hãy sử dụng tham số mới
add_subparsers(required=False). Bản vá của Anthony Sottile. (Kể từ 3.7.0rc1, mặc định đã được thay đổi thành không bắt buộc như trường hợp của Python 3.3.)bpo-27541: Đại diện của các lớp con của một số lớp bộ sưu tập và trình vòng lặp (
bytearray,array.array,collections.deque,collections.defaultdict,itertools.count,itertools.repeat) hiện chứa tên loại thực tế thay vì tên được mã hóa cứng của lớp cơ sở.bpo-31351: python -m Ensurepip hiện thoát với mã thoát khác 0 nếu quá trình khởi động pip không thành công.
bpo-31389:
pdb.set_trace()hiện có đối số chỉ từ khóa tùy chọnheader. Nếu được, điều này sẽ được in ra bảng điều khiển ngay trước khi quá trình gỡ lỗi bắt đầu.
Tài liệu¶
xây dựng¶
bpo-31696: Cải thiện thông tin phiên bản trình biên dịch trong
sys.versionkhi Python được xây dựng bằng Clang.bpo-31625: Ngừng sử dụng ranlib trên thư viện tĩnh. Thay vào đó, chúng tôi giả sử ar hỗ trợ cờ 's'.
bpo-31624: Xóa hỗ trợ cho BSD/OS.
bpo-22140: Ngăn chặn việc thay thế tiền tố kép trong python-config.sh.
bpo-31569: Chỉnh sửa PCBuild/ case thành PCbuild/ trong tập lệnh và tài liệu xây dựng.
bpo-31536: Tránh xây dựng lại toàn bộ sau
make regen-allnếu không có gì thay đổi.
IDLE¶
bpo-31460: Đơn giản hóa API của Trình duyệt mô-đun của IDLE. Việc chuyển một tiện ích thay vì một danh sách bằng tiện ích gốc sẽ mở ra tùy chọn tạo khung trình duyệt chỉ là một phần của cửa sổ. Việc chuyển tên tệp đầy đủ thay vì các phần được cho là đến từ tệp .py sẽ mở ra khả năng duyệt các tệp python không kết thúc bằng .py.
bpo-31649: IDLE - Chỉ tạo từ khóa tham số _htest, _utest.
bpo-31559: Loại bỏ sự phụ thuộc vào thứ tự kiểm tra trong Idle_test.test_browser.
bpo-31459: Đổi tên trình duyệt mô-đun của IDLE từ Trình duyệt lớp thành Trình duyệt mô-đun. Trình duyệt phương thức và lớp cấp mô-đun ban đầu đã trở thành trình duyệt mô-đun, với việc bổ sung các hàm cấp mô-đun từ nhiều năm trước. Các lớp và hàm lồng nhau đã được thêm vào ngày hôm qua. Để tương thích ngược, sự kiện ảo <<open-class-browser>>, xuất hiện trên tab Phím của hộp thoại Cài đặt, không bị thay đổi. Bản vá của Cheryl Sabella.
bpo-31500: Phông chữ mặc định hiện được chia tỷ lệ trên màn hình HiDPI.
bpo-1612262: Trình duyệt mô-đun IDLE hiện hiển thị các lớp và hàm lồng nhau. Các bản vá gốc cho mã và thử nghiệm lần lượt của Guilherme Polo và Cheryl Sabella.
C API¶
bpo-28280: Làm cho
PyMapping_Keys(),PyMapping_Values()vàPyMapping_Items()luôn trả vềlist(chứ không phảilisthoặctuple). Bản vá của Oren Milman.bpo-31532: Khắc phục lỗi hỏng bộ nhớ do trộn bộ cấp phát trong getpath.c giữa Py_GetPath() và Py_SetPath()
bpo-25658: Triển khai PEP 539 cho Bộ lưu trữ cụ thể theo luồng (TSS) API: đó là Bộ lưu trữ cục bộ theo luồng (TLS) API cho CPython sẽ thay thế việc sử dụng TLS API hiện có trong trình thông dịch CPython, đồng thời không dùng API hiện có. PEP được viết bởi Erik M. Bray, bản vá của Masayuki Yamamoto.
Python 3.7.0 alpha 1¶
Release date: 2017-09-19
Bảo mật¶
bpo-29781: SSLObject.version() hiện trả về chính xác Không có khi việc bắt tay qua BIO chưa được thực hiện.
bpo-29505: Thêm kiểm tra fuzz cho float(str), int(str), unicode(str); cho oss-lông tơ.
bpo-30947: Nâng cấp bản sao nhúng libexpat từ phiên bản 2.2.1 lên 2.2.3 để nhận các bản sửa lỗi bảo mật.
bpo-30730: Ngăn chặn việc đưa biến môi trường vào quy trình con trên Windows. Ngăn chặn việc chuyển các biến môi trường và đối số lệnh khác.
bpo-30694: Nâng cấp bản sao người nước ngoài từ 2.2.0 lên 2.2.1 để sửa nhiều lỗ hổng bảo mật bao gồm: CVE 2017-9233 (DoS vòng lặp vô hạn thực thể bên ngoài), CVE 2016-9063 (Tràn số nguyên, sửa lại), CVE 2016-0718 (Khắc phục lỗi hồi quy từ bản sửa lỗi của 2.2.0 thành CVE 2016-0718) và CVE 2012-0876 (Bộ đếm băm tràn ngập với SipHash). Lưu ý: CVE 2016-5300 (Sử dụng các nguồn entropy dành riêng cho hệ điều hành như getrandom) không ảnh hưởng đến Python, vì Python đã lấy entropy từ HĐH để đặt bí mật người nước ngoài bằng
XML_SetHashSalt().bpo-30500: Sửa urllib.parse.splithost() để phân tích chính xác các đoạn. Ví dụ:
splithost('//127.0.0.1#@evil.com/')hiện trả về chính xác máy chủ127.0.0.1, thay vì coi@evil.comlà máy chủ trong xác thực (login@host).bpo-29591: Cập nhật bản sao nước ngoài từ 2.1.1 lên 2.2.0 để nhận các bản sửa lỗi của CVE 2016-0718 và CVE 2016-4472. Xem https://sourceforge.net/p/expat/bugs/537/ để biết thêm thông tin.
Cốt lõi và nội dung¶
bpo-31490: Khắc phục lỗi xác nhận trong định nghĩa lớp
ctypes, trong trường hợp lớp đó có thuộc tính có tên được chỉ định trong_anonymous_nhưng không có trong_fields_. Bản vá của Oren Milman.bpo-31471: Khắc phục lỗi xác nhận trong
subprocess.Popen()trên Windows, trong trường hợp đối số env có phương thứckeys()không hợp lệ. Bản vá của Oren Milman.bpo-31418: Khắc phục lỗi xác nhận trong
PyErr_WriteUnraisable()trong trường hợp ngoại lệ có thuộc tính__module__không hợp lệ. Bản vá của Oren Milman.bpo-31416: Khắc phục lỗi xác nhận trong trường hợp có cảnh báo.filters hoặc Warning.defaultaction không hợp lệ. Bản vá của Oren Milman.
bpo-28411: Thay đổi cách sử dụng trực tiếp PyInterpreterState.modules thành PyImport_GetModuleDict(). Đồng thời giới thiệu tính đồng nhất hơn trong mã khác liên quan đến sys.modules. Điều này giúp giảm bớt sự phức tạp khi làm việc trên sys.modules.
bpo-28411: Chuyển sang API trừu tượng khi xử lý
PyInterpreterState.modules. Điều này cho phép hỗ trợ sau này cho tất cả các lớp con dict và các triển khai Ánh xạ khác. Đồng thời thêm chức năngPyImport_GetModule()để giảm bớt nhiều mã trùng lặp.bpo-31411: Đưa ra TypeError thay vì SystemError trong trường hợp Warning.onceregistry không phải là từ điển. Bản vá của Oren Milman.
bpo-31344: Để kiểm soát hành vi theo dõi tốt hơn khi kiểm tra trình thông dịch, hai thuộc tính khung mới đã được thêm vào để kiểm soát việc phát ra các sự kiện theo dõi cụ thể:
f_trace_lines(Truetheo mặc định) để tắt các sự kiện theo dõi trên mỗi dòng; vàf_trace_opcodes(Falsetheo mặc định) để bật các sự kiện theo dõi trên mỗi opcode.bpo-31373: Khắc phục một số trường hợp có thể xảy ra hành vi không xác định do giảm hạng dấu phẩy động.
bpo-30465: Thông tin vị trí (
linenovàcol_offset) trong chuỗi f hiện (hầu hết) chính xác. Điều này giúp các công cụ như flap8 hiển thị cảnh báo sai dòng (thường là dòng đầu tiên của tệp).bpo-30860: Hợp nhất trạng thái thời gian chạy toàn cầu của CPython dưới một cấu trúc duy nhất. Điều này cải thiện khả năng khám phá trạng thái thời gian chạy.
bpo-31347: Khắc phục hành vi không xác định có thể xảy ra trong _PyObject_FastCall_Prepend.
bpo-31343: Bao gồm sys/sysmacros.h cho Major(), Minor() và makedev(). Thư viện GNU C có kế hoạch loại bỏ các chức năng khỏi sys/types.h.
bpo-31291: Khắc phục lỗi xác nhận trong
zipimport.zipimporter.get_datatrên Windows, khi giá trị trả về củapathname.replace('/','\\')không phải là một chuỗi. Bản vá của Oren Milman.bpo-31271: Khắc phục lỗi xác nhận trong phương thức
write()củaio.TextIOWrapper, khi bộ mã hóa không trả về đối tượng byte. Bản vá của Oren Milman.bpo-31243: Khắc phục sự cố trong một số phương thức của
io.TextIOWrapper, khi trạng thái của bộ giải mã không hợp lệ. Bản vá của Oren Milman.bpo-30721:
printhiện hiển thị gợi ý sử dụng chính xác khi sử dụng cú pháp chuyển hướng Python 2. Bản vá của Sanyam Khurana.bpo-31070: Khắc phục tình trạng chạy đua trong importlib _get_module_lock().
bpo-30747: Thêm triển khai không giả của _Py_atomic_store và _Py_atomic_load trên MSVC.
bpo-31095: Khắc phục sự cố tiềm ẩn trong GC do
tp_deallocgây ra, không gọiPyObject_GC_UnTrack().bpo-31071: Tránh che giấu TypeError ban đầu trong cuộc gọi bằng * giải nén khi các đối số khác được chuyển.
bpo-30978: str.format_map() hiện đã chuyển các ngoại lệ tra cứu chính. Trước đây mọi ngoại lệ đều được thay thế bằng ngoại lệ KeyError.
bpo-30808: Sử dụng _Py_atomic API cho trạng thái tín hiệu nhạy cảm đồng thời.
bpo-30876: Quá trình nhập tương đối từ gói chưa tải hiện sẽ nhập lại gói thay vì không thành công với SystemError. Quá trình nhập tương đối từ gói không phải hiện không thành công với ImportError thay vì SystemError.
bpo-30703: Cải thiện việc truyền tín hiệu. Tránh sử dụng Py_AddPendingCall từ bộ xử lý tín hiệu để tránh gọi các hàm không an toàn tín hiệu. Các thử nghiệm tôi thêm vào đây đều thất bại nếu không có phần còn lại của bản vá, trên Linux và OS X. Điều này có nghĩa là logic phân phối tín hiệu của chúng tôi có lỗi (một số tín hiệu có thể bị mất).
bpo-30765: Tránh chặn trong pthread_mutex_lock() khi PyThread_acquire_lock() được yêu cầu không chặn.
bpo-31161: Đảm bảo thông báo lỗi cú pháp 'Thiếu dấu ngoặc đơn' chỉ được áp dụng cho SyntaxError, không áp dụng cho các lớp con. Bản vá của Martijn Pieters.
bpo-30814: Đã khắc phục tình trạng chạy đua khi nhập mô-đun con từ một gói.
bpo-30736: Cơ sở dữ liệu unicodedata nội bộ đã được nâng cấp lên Unicode 10.0.
bpo-30604: Di chuyển co_extra_freefuncs từ mỗi luồng sang mỗi phiên dịch để tránh sự cố.
bpo-30597:
printhiện hiển thị thông tin đầu vào dự kiến trong thông báo lỗi tùy chỉnh khi được sử dụng làm câu lệnh Python 2. Bản vá của Sanyam Khurana.bpo-30682: Đã xóa xác nhận quá nghiêm ngặt không thành công đối với một số chuỗi f nhất định, chẳng hạn như eval("f'\n'") và eval("f'\r'").
bpo-30501: Trình biên dịch hiện tạo ra mã tối ưu hơn cho các biểu thức điều kiện phức tạp trong câu lệnh "if", "while" và "assert", biểu thức "if" cũng như các biểu thức và cách hiểu của trình tạo.
bpo-28180: Triển khai PEP 538 (ép buộc ngôn ngữ C kế thừa). Điều này có nghĩa là khi có ngôn ngữ mục tiêu ép buộc phù hợp, cả trình thông dịch cốt lõi và tiện ích mở rộng C nhận biết ngôn ngữ sẽ giả sử sử dụng UTF-8 làm mã hóa văn bản mặc định, thay vì ASCII.
bpo-30486: Cho phép thiết lập giá trị ô cho __closure__. Bản vá của Lisa Roach.
bpo-30537: itertools.islice hiện chấp nhận các đối tượng giống số nguyên (có phương thức __index__) làm đối số bắt đầu, dừng và cắt lát
bpo-25324: Các mã thông báo cần thiết để phân tích cú pháp trong Python đã được chuyển sang C.
COMMENT,NLvàENCODING. Bằng cách này, mã thông báo và tok_names trong mô-đun mã thông báo sẽ không bị thay đổi khi bạn nhập mô-đun mã thông báo.bpo-29104: Đã sửa lỗi phân tích cú pháp dấu gạch chéo ngược trong chuỗi f.
bpo-27945: Đã sửa các lỗi phân tách khác nhau bằng dict khi bộ sưu tập đầu vào bị thay đổi trong quá trình tìm kiếm, chèn hoặc so sánh. Dựa trên các bản vá của Duane Griffin và Tim Mitchell.
bpo-25794: Đã sửa lỗi type.__setattr__() và type.__delattr__() cho các tên thuộc tính không được thực hiện. Dựa trên bản vá của Eryk Sun.
bpo-30039: Nếu một sự gián đoạn bàn phím xảy ra khi trình thông dịch đang trong quá trình tiếp tục một chuỗi lệnh gọi 'kết quả từ' hoặc 'chờ' lồng nhau, thì giờ đây nó đã được phân phối chính xác đến khung trong cùng.
bpo-28974:
object.__format__(x, '')hiện tương đương vớistr(x)thay vìformat(str(self), '').bpo-30024: Hiện đã hỗ trợ nhập vòng tròn bao gồm nhập tuyệt đối bằng cách liên kết mô-đun con với tên.
bpo-12414: sys.getsizeof() trên một đối tượng mã hiện trả về các kích thước bao gồm cấu trúc mã và kích thước của các đối tượng mà nó tham chiếu. Bản vá của Donghee Na.
bpo-29839: len() hiện tăng ValueError thay vì OverflowError nếu __len__() trả về số nguyên âm lớn.
bpo-11913: README.rst hiện được đưa vào danh sách các README tiêu chuẩn của distutils và do đó được đưa vào các bản phân phối nguồn.
bpo-29914: Đã sửa lỗi triển khai mặc định của __reduce__ và __reduce_ex__(). object.__reduce__() không còn nhận đối số nữa, object.__reduce_ex__() hiện yêu cầu một đối số.
bpo-29949: Khắc phục sự hồi quy mức sử dụng bộ nhớ của đối tượng set và Frozenset.
bpo-29935: Đã sửa các thông báo lỗi trong phương thức index() của bộ, danh sách và deque khi truyền các chỉ mục sai loại.
bpo-29816: Thao tác thay đổi hiện có ít cơ hội gây ra lỗi tràn hơn. ValueError luôn được nâng lên thay vì OverflowError cho số lượng âm. Dịch chuyển số 0 với số đếm không âm luôn trả về số 0.
bpo-24821: Đã sửa lỗi chậm tới 25 lần khi tìm kiếm một số ký tự Unicode không may mắn.
bpo-29102: Thêm ID duy nhất vào PyInterpreterState. Điều này giúp việc xác định từng thông dịch viên phụ trở nên dễ dàng hơn.
bpo-29894: Cảnh báo không dùng nữa được đưa ra nếu __complex__ trả về một phiên bản của một lớp con nghiêm ngặt của phức tạp. Trong các phiên bản tương lai của Python, đây có thể là lỗi.
bpo-29859: Hiển thị thông báo lỗi chính xác khi bất kỳ lệnh gọi pthread_* nào trong thread_pthread.h không thành công.
bpo-29849: Khắc phục rò rỉ bộ nhớ khi lỗi ImportError xuất hiện trong quá trình nhập.
bpo-28856: Khắc phục lỗi giám sát rằng định dạng %b cho byte phải hỗ trợ các đối tượng tuân theo giao thức bộ đệm.
bpo-29723: Thay đổi khởi tạo
sys.path[0]cho bpo-29139 đã gây ra sự hồi quy do bộc lộ sự không nhất quán trong cách khởi tạo sys.path khi thực thi__main__từ tệp zip, thư mục hoặc vị trí nhập khác. Giờ đây, trình thông dịch luôn tránh việc thêm thư mục mẹ của vị trí nhập vàosys.pathvà đảm bảo không có mục nhậpsys.pathnào khác vô tình bị sửa đổi khi chèn vị trí nhập có tên trên dòng lệnh.bpo-29568: Phần trăm thoát "%%" trong chuỗi định dạng đối với định dạng chuỗi cổ điển không còn cho phép bất kỳ ký tự nào giữa hai phần trăm.
bpo-29714: Khắc phục hồi quy khiến định dạng byte có thể bị lỗi khi chứa 0 byte bên trong.
bpo-29695: bool(), float(), list() và tuple() không còn lấy đối số từ khóa nữa. Đối số đầu tiên của int() bây giờ chỉ có thể được chuyển dưới dạng đối số vị trí.
bpo-28893: Đặt __nguyên nhân__ chính xác cho các lỗi về các sản phẩm chờ không hợp lệ được trả về từ __aiter__ và __anext__.
bpo-28876:
bool(range)hoạt động ngay cả khilen(range)tăngOverflowError.bpo-29683: Sửa lỗi phân bổ bộ nhớ trong _PyCode_SetExtra. Bản vá của Brian Coleman.
bpo-29684: Khắc phục hồi quy nhỏ của PyEval_CallObjectWithKeywords. Nó sẽ tăng TypeError khi kwargs không phải là một lệnh. Nhưng nó có thể gây ra segv khi args=NULL và kwargs không phải là một lệnh.
bpo-28598: Hỗ trợ __rmod__ cho các lớp con của str được gọi trước str.__mod__. Bản vá của Martijn Pieters.
bpo-29607: Sửa tính toán stack_effect cho CALL_FUNCTION_EX. Bản vá của Matthieu Dartiailh.
bpo-29602: Khắc phục việc xử lý không chính xác các số 0 đã ký trong hàm tạo phức tạp cho các lớp con phức tạp và cho các đầu vào có phương thức __complex__. Bản vá của Serhiy Storchaka.
bpo-29347: Đã sửa lỗi các con trỏ không xác định có thể hội thảo khi tạo các đối tượng yếu.
bpo-29463: Thêm trường
docstringvào các nút ast Mô-đun, ClassDef, FunctionDef và AsyncFunctionDef. docstring không còn là stmt đầu tiên trong cơ thể họ nữa. Nó ảnh hưởng đếnco_firstlinenovàco_lnotabcủa đối tượng mã cho mô-đun và lớp. (Đã hoàn nguyên trong bpo-32911.)bpo-29438: Đã sửa lỗi không sử dụng được trong lệnh chia sẻ khóa.
bpo-29546: Đặt thuộc tính 'path' và 'name' trên ImportError cho
from ... import ....bpo-29546: Cải thiện thông báo lỗi từ nhập bằng vị trí
bpo-29478: Nếu max_line_length=None được chỉ định trong khi sử dụng chính sách Compat32 thì nó sẽ không còn bị bỏ qua nữa. Bản vá của Mircea Cosbuc.
bpo-29319: Ngăn chặn ghi đè RunMainFromImporter sys.path[0].
bpo-29337: Đã sửa lỗi BytesWarning khi so sánh các đối tượng mã. Cảnh báo có thể được phát ra tại thời điểm biên dịch.
bpo-29327: Đã khắc phục sự cố khi chuyển đối số từ khóa có thể lặp lại sang được sắp xếp ().
bpo-29034: Sửa lỗi rò rỉ bộ nhớ và không sử dụng sau này trong mô-đun os (path_converter).
bpo-29159: Khắc phục hồi quy theo byte(x) khi x.__index__() tăng Ngoại lệ.
bpo-29049: Gọi _PyObject_GC_TRACK() một cách lười biếng khi gọi hàm Python. Chức năng gọi điện nhanh hơn tới 5%.
bpo-28927: bytes.fromhex() và bytearray.fromhex() hiện bỏ qua tất cả khoảng trắng ASCII, không chỉ khoảng trắng. Bản vá của Robert Xiao.
bpo-28932: Không bao gồm <sys/random.h> nếu nó không tồn tại.
bpo-25677: Sửa vị trí của dấu mũ lỗi cú pháp cho các khối thụt lề. Dựa trên bản vá của Michael Layzell.
bpo-29000: Đã sửa lỗi định dạng byte của số bát phân với phần đệm bằng 0 ở dạng thay thế.
bpo-18896: Hàm Python hiện có thể có hơn 255 tham số. bộ sưu tập.namedtuple() hiện hỗ trợ các bộ dữ liệu có hơn 255 phần tử.
bpo-28596: Mã hóa ưu tiên là UTF-8 trên Android. Bản vá được viết bởi Chí Hsuan Yen.
bpo-22257: Dọn dẹp phần khởi động trình thông dịch (xem PEP 432).
bpo-26919: Trên Android, dữ liệu hệ điều hành hiện luôn được mã hóa/giải mã đến/từ UTF-8, thay vì mã hóa ngôn ngữ để tránh sự không nhất quán với os.fsencode() và os.fsdecode() vốn đang sử dụng UTF-8.
bpo-28991: functools.lru_cache() dễ mắc phải lỗi quay lại khó hiểu có thể được kích hoạt bởi hàm len() được vá bằng khỉ.
bpo-28147: Khắc phục rò rỉ bộ nhớ trong từ điển bảng chia: setattr() không được chuyển bảng kết hợp thành bảng chia. Bản vá được viết bởi INADA Naoki.
bpo-28739: biểu thức chuỗi f không còn được chấp nhận dưới dạng chuỗi tài liệu và bởi ast.literal_eval() ngay cả khi chúng không bao gồm biểu thức.
bpo-28512: Đã sửa lỗi cài đặt thuộc tính offset của SyntaxError bằng PyErr_SyntaxLocationEx() và PyErr_SyntaxLocationObject().
bpo-28918: Sửa lỗi biên dịch chéo của xxlimited khi Python được xây dựng với Py_DEBUG được xác định.
bpo-23722: Thay vì âm thầm tạo ra một lớp không hỗ trợ
super()đối số bằng 0 trong các phương thức, việc không vượt qua mục nhập vùng tên__classcell__mới lên đếntype.__new__giờ đây dẫn đếnDeprecationWarningvà một lớp hỗ trợsuper()không có đối số.bpo-28797: Việc sửa đổi lớp __dict__ bên trong phương thức __set_name__ của bộ mô tả được sử dụng bên trong lớp đó không còn ngăn việc gọi phương thức __set_name__ của các bộ mô tả khác nữa.
bpo-28799: Xóa hàm
PyEval_GetCallStats()và ngừng sử dụng hàmsys.callstats()chưa được kiểm tra và không có giấy tờ. Xóa bản dựng đặc biệtCALL_PROFILE: sử dụng hàmsys.setprofile(),cProfilehoặcprofileđể cấu hình các lệnh gọi hàm.bpo-12844: Hiện có thể truyền hơn 255 đối số cho một hàm.
bpo-28782: Sửa lỗi trong quá trình triển khai
yield fromkhi kiểm tra xem lệnh tiếp theo có phải là YIELD_FROM hay không. Hồi quy được giới thiệu bởi WORDCODE (bpo-26647).bpo-28774: Sửa vị trí lỗi của lỗi unicode trong bộ mã hóa ASCII và Latin1 khi một chuỗi được trình xử lý lỗi trả về chứa nhiều ký tự không thể mã hóa (không phải là ASCII đối với codec ASCII, các ký tự nằm ngoài phạm vi U+0000-U+00FF đối với Latin1).
bpo-28731: Tối ưu hóa _PyDict_NewPresized() để tạo chính xác kích thước chính xác. Cải thiện tốc độ của chữ chính tả với các phím không đổi lên tới 30%.
bpo-28532: Hiển thị sys.version khi tùy chọn -V được cung cấp hai lần.
bpo-27100: Câu lệnh with bây giờ sẽ kiểm tra __enter__ trước khi kiểm tra __exit__. Điều này đưa ra các thông báo lỗi ít gây nhầm lẫn hơn khi thiếu cả hai phương pháp. Bản vá của Jonathan Ellington.
bpo-28746: Sửa phương thức mô tả tệp set_inheritable() trên các nền tảng không có lệnh ioctl FIOCLEX và FIONCLEX.
bpo-26920: Khắc phục lỗi không nhận được bộ ký tự của ngôn ngữ khi khởi chạy trình thông dịch, trên các nền tảng không có langinfo.
bpo-28648: Đã khắc phục sự cố trong Py_DecodeLocale() trong bản dựng gỡ lỗi trên Mac OS X khi giải mã các ký tự thiên văn. Bản vá của Xiang Zhang.
bpo-28665: Cải thiện tốc độ của opcode STORE_DEREF thêm 40%.
bpo-19398: Dấu gạch chéo bổ sung không còn được thêm vào các thành phần sys.path trong trường hợp các thành phần PYTHONPATH tại thời gian biên dịch trống.
bpo-28621: Tăng tốc độ chuyển đổi int thành float bằng cách sử dụng lại quá trình thực hiện đếm bit nhanh hơn. Bản vá của Adrian Wielgosik.
bpo-28580: Tối ưu hóa việc lặp lại các giá trị bảng phân tách. Bản vá của Xiang Zhang.
bpo-28583: PyDict_SetDefault không kết hợp bảng chia khi cần. Bản vá của Xiang Zhang.
bpo-28128: Cảnh báo không dùng nữa đối với chuỗi thoát str và byte không hợp lệ hiện in thông tin tốt hơn về nơi xảy ra lỗi. Bản vá của Serhiy Storchaka và Eric Smith.
bpo-28509: dict.update() không còn phân bổ bộ nhớ lớn không cần thiết nữa.
bpo-28426: Đã khắc phục sự cố tiềm ẩn trong PyUnicode_AsDecodedObject() trong bản dựng gỡ lỗi.
bpo-28517: Đã sửa từng lỗi một trong trình tối ưu hóa lỗ nhìn trộm khiến mã không thể truy cập được.
bpo-28214: Cải thiện báo cáo ngoại lệ cho các thuộc tính __set_name__ có vấn đề.
bpo-23782: Đã sửa lỗi rò rỉ bộ nhớ có thể xảy ra trong _PyTraceback_Add() và mất ngoại lệ trong PyTraceBack_Here().
bpo-28183: Tối ưu hóa và dọn dẹp việc lặp lại chính tả.
bpo-26081: Đã thêm triển khai C của asyncio.Future. Bản vá gốc của Yury Selivanov.
bpo-28379: Đã thêm các kiểm tra và kiểm tra độ tỉnh táo cho PyUnicode_CopyCharacters(). Bản vá của Xiang Zhang.
bpo-28376: Loại vòng lặp tầm xa hiện được đăng ký là Iterator. Bản vá của Oren Milman.
bpo-28376: Việc tạo các phiên bản của range_iterator bằng cách gọi loại range_iterator hiện không được phép. Gọi iter() trên phạm vi thể hiện là cách duy nhất. Bản vá của Oren Milman.
bpo-26906: Việc giải quyết các phương thức đặc biệt của loại chưa được khởi tạo hiện gây ra việc khởi tạo ngầm loại thay vì lỗi.
bpo-18287: PyType_Ready() hiện kiểm tra xem tp_name có phải là NULL hay không. Bản vá gốc của Niklas Koep.
bpo-24098: Đã khắc phục sự cố có thể xảy ra khi AST bị thay đổi trong quá trình biên dịch.
bpo-28201: Dict giảm khả năng xảy ra xung đột thứ 2 trong bảng băm khi các bảng băm có cùng số bit thấp hơn.
bpo-28350: Các hằng chuỗi có ký tự null không còn được thực hiện nữa.
bpo-26617: Khắc phục sự cố khi GC chạy trong các lệnh gọi lại yếu.
bpo-27942: Các hằng chuỗi hiện được thực hiện đệ quy trong các bộ dữ liệu và tập hợp cố định.
bpo-28289: ImportError.__init__ hiện đặt lại các thuộc tính không được chỉ định.
bpo-21578: Đã sửa thông báo lỗi gây hiểu nhầm khi ImportError được gọi với đối số từ khóa không hợp lệ.
bpo-28203: Sửa lỗi loại không chính xác trong thông báo lỗi phức tạp (1.0, {2:3}). Bản vá của Soumya Sharma.
bpo-28086: Đối số vị trí var đơn của kiểu con bộ dữ liệu đã được chuyển đến hàm do C xác định mà không bị tổn hại. Bây giờ nó được chuyển đổi thành tuple chính xác.
bpo-28214: Bây giờ __set_name__ được tra cứu trên lớp thay vì phiên bản.
bpo-27955: Dự phòng khi đọc thiết bị /dev/urandom khi tòa nhà getrandom() không thành công với EPERM, ví dụ như khi bị chặn bởi SECCOMP.
bpo-28192: Không nhập dòng đọc ở chế độ biệt lập.
bpo-27441: Loại bỏ một số phép gán thừa cho ob_size trong longobject.c. Cảm ơn Oren Milman.
bpo-27222: Dọn sạch mã thừa trong hàm long_rshift. Cảm ơn Oren Milman.
Nâng cấp cơ sở dữ liệu unicode nội bộ lên phiên bản Unicode 9.0.0.
bpo-28131: Khắc phục hồi quy trong hàm biên dịch_source() của zipimport. zipimport nên sử dụng mức tối ưu hóa tương tự như trình thông dịch.
bpo-28126: Thay thế Py_MEMCPY bằng memcpy(). Visual Studio có thể tối ưu hóa memcpy() đúng cách.
bpo-28120: Sửa lỗi dict.pop() cho từ điển phân tách khi cố xóa "khóa đang chờ xử lý" (Chưa được chèn vào bảng phân tách). Bản vá của Xiang Zhang.
bpo-26182: Tăng mức khấu haoCảnh báo khi sử dụng từ khóa không đồng bộ và chờ đợi làm tên biến/thuộc tính/lớp/hàm.
bpo-26182: Sửa lỗi phản ánh trong mã làm tăng Cảnh báo khấu hao.
bpo-28721: Sửa các trình tạo không đồng bộ aclose() và athrow() để xử lý việc truyền bá StopAsyncIteration đúng cách.
bpo-26110: Cuộc gọi phương thức tăng tốc: thêm opcode LOAD_METHOD và CALL_METHOD.
Thư viện¶
bpo-31499: xml.etree: Khắc phục sự cố khi trình phân tích cú pháp là một phần của chu trình tham chiếu.
bpo-31482:
random.seed()hiện hoạt động với byte trong phiên bản=1bpo-28556: đánh máy.get_type_hints hiện tìm thấy các toàn cục phù hợp cho các lớp và mô-đun theo mặc định (khi người gọi không chỉ định
globalns).bpo-28556: Cải thiện tốc độ cho mô-đun
typing. PR gốc của Ivan Levkivskyi và Mitar.bpo-31544: Mô-đun tăng tốc C của ElementTree đã bỏ qua các ngoại lệ được nêu ra khi tra cứu các phương thức đích TreeBuilder trong XMLParser().
bpo-31234: socket.create_connection() hiện sửa chu trình tham chiếu theo cách thủ công: xóa biến lưu trữ ngoại lệ cuối cùng khi thành công.
bpo-31457: Các đối tượng LoggerAdapter hiện có thể được lồng vào nhau.
bpo-31431: SSLContext.check_hostname hiện tự động đặt SSLContext.verify_mode thành ssl.CERT_REQUIRED thay vì thất bại với ValueError.
bpo-31233: socketserver.ThreadingMixIn hiện giữ một danh sách các luồng không phải daemon để đợi cho đến khi tất cả các luồng này hoàn thành trong server_close().
bpo-28638: Đã thay đổi chiến lược triển khai cho bộ sưu tập.namedtuple() để giảm đáng kể việc sử dụng exec() thay vì các phương thức được tính toán trước. Do đó, tham số verbose và thuộc tính _source không còn được hỗ trợ. Các lợi ích bao gồm 1) có dung lượng bộ nhớ nhỏ hơn cho các ứng dụng sử dụng nhiều bộ dữ liệu được đặt tên, 2) tạo lớp bộ dữ liệu được đặt tên nhanh hơn (khoảng 4x đến 6 lần tùy thuộc vào cách đo) và 3) tăng tốc một chút cho việc tạo phiên bản bằng cách sử dụng __new__, _make và _replace. (Người đóng góp bản vá chính là Jelle Zijlstra với những cải tiến tiếp theo của INADA Naoki, Serhiy Storchaka và Raymond Hettinger.)
bpo-31400: Cải thiện khả năng xử lý lỗi SSL để tránh mất số lỗi.
bpo-27629: Tùy chỉnh kiểu trả về của SSLContext.wrap_bio() và SSLContext.wrap_socket().
bpo-28958: ssl.SSLContext() hiện sử dụng thông tin lỗi OpenSSL khi ngữ cảnh không thể khởi tạo được.
bpo-28182: Mô-đun SSL hiện tăng SSLCertVerificationError khi OpenSSL không xác minh được chứng chỉ của ngang hàng. Ngoại lệ chứa nhiều thông tin hơn về lỗi.
bpo-27340: SSLSocket.sendall() hiện sử dụng chế độ xem bộ nhớ để tạo các lát dữ liệu. Điều này sửa lỗi hỗ trợ cho tất cả các đối tượng giống byte. Nó cũng hiệu quả hơn và tránh được việc sao chép tốn kém.
bpo-14191: Một chức năng mới
argparse.ArgumentParser.parse_intermixed_argscung cấp khả năng phân tích các dòng lệnh trong đó người dùng trộn lẫn các tùy chọn và đối số vị trí.bpo-31178: Sửa lỗi nối chuỗi trong đường dẫn lỗi hiếm gặp trong mô-đun quy trình con
bpo-31350: Tối ưu hóa vi mô
asyncio._get_running_loop()để nhanh hơn tới 10%.bpo-31170: expat: Cập nhật libexpat từ 2.2.3 lên 2.2.4. Sửa lỗi sao chép một phần ký tự cho đầu vào UTF-8 (lỗi libexpat 115): https://github.com/libexpat/libexpat/issues/115
bpo-29136: Thêm bộ mật mã TLS 1.3 và OP_NO_TLSv1_3.
bpo-1198569: Các lớp con
string.Templatecó thể tùy ý định nghĩabraceidpatternnếu chúng muốn chỉ định các mẫu giữ chỗ khác nhau bên trong và bên ngoài dấu ngoặc nhọn. Nếu Không có (mặc định), nó sẽ quay trở lạiidpattern.bpo-31326: concurrent.futures.ProcessPoolExecutor.shutdown() hiện đóng hàng đợi cuộc gọi một cách rõ ràng. Ngoài ra, hiện tại, tắt máy (wait=True) cũng tham gia chuỗi hàng đợi cuộc gọi để tránh rò rỉ chuỗi đang treo lơ lửng.
bpo-27144: Các trình lặp
map()vàas_completed()trongconcurrent.futureshiện tránh giữ tham chiếu đến các đối tượng được tạo ra.bpo-31281: Sửa
fileinput.FileInput(files, inplace=True)khifileschứa đối tượngpathlib.Path.bpo-10746: Sửa ctypes tạo mã loại PEP 3118 sai cho các loại số nguyên.
bpo-27584:
AF_VSOCKđã được thêm vào giao diện socket cho phép giao tiếp giữa các máy ảo và máy chủ của chúng.bpo-22536: Mô-đun quy trình con hiện đặt tên tệp khi FileNotFoundError được nâng lên trên hệ thống POSIX do không tìm thấy tệp thực thi hoặc cwd.
bpo-29741: Cập nhật một số phương thức trong mô-đun _pyio để chấp nhận các kiểu số nguyên. Bản vá của Oren Milman.
bpo-31249: concurrent.futures: WorkItem.run() được ThreadPoolExecutor sử dụng hiện phá vỡ chu trình tham chiếu giữa một đối tượng ngoại lệ và đối tượng WorkItem.
bpo-31247: xmlrpc.server giờ đây đã phá vỡ rõ ràng các chu kỳ tham chiếu khi sử dụng sys.exc_info() trong các ngoại lệ xử lý mã.
bpo-23835: configparser: đọc các giá trị mặc định trong hàm tạo
ConfigParser()hiện đang sử dụngread_dict(), làm cho hành vi của nó nhất quán với phần còn lại của trình phân tích cú pháp. Các khóa và giá trị không phải chuỗi trong từ điển mặc định hiện đang được chuyển đổi hoàn toàn thành chuỗi. Bản vá của James Tocknell.bpo-31238: pydoc: phương thức stop() của lớp ServerThread riêng hiện đợi cho đến khi DocServer.serve_until_quit() hoàn thành và sau đó đặt rõ ràng thuộc tính docserver của nó thành Không để phá vỡ chu trình tham chiếu.
bpo-5001: Nhiều xác nhận trong
multiprocessinghiện có nhiều thông tin hơn và một số loại lỗi đã được thay đổi thành các loại lỗi cụ thể hơn.bpo-31109: Chuyển đổi zipimport để sử dụng Argument Clinic.
bpo-30102: Các mô-đun ssl và hashlib hiện gọi OPENSSL_add_all_algorithms_noconf() trên OpenSSL < 1.1.0. Chức năng này phát hiện các tính năng của CPU và cho phép tối ưu hóa trên một số kiến trúc CPU như POWER8. Bản vá dựa trên nghiên cứu của Gustavo Serra Scalet.
bpo-18966: Các luồng không phải daemon được tạo bởi đa xử lý. Quá trình hiện được nối khi thoát con.
bpo-31183:
dishiện hoạt động với các đối tượng trình tạo và coroutine không đồng bộ. Bản vá của George Collins dựa trên chẩn đoán của Luciano Ramalho.bpo-5001: Có một số xác nhận không đầy đủ thông tin trong mô-đun
multiprocessing, như đã lưu ý trong vấn đề 5001. Thay đổi này khắc phục hai trong số những xác nhận có khả năng gây ra sự cố nhất, vì chúng nằm trong mã báo cáo lỗi, trong hàmmultiprocessing.managers.convert_to_error. (Nó cũng làm cho thông báo ValueError có nhiều thông tin hơn.) Thay đổi duy nhất có khả năng gây ra vấn đề là AssertionError hiện là TypeError; tuy nhiên, điều này cũng sẽ giúp phân biệt nó với AssertionError bị reported bởi hàm/người gọi nó (chẳng hạn như trong vấn đề 31169). - Bản vá của Allen W. Smith (drallensmith trên github).bpo-31185: Đã sửa các lỗi khác trong mô-đun tăng tốc asyncio.
bpo-31151: socketserver.ForkingMixIn.server_close() hiện đợi cho đến khi tất cả các tiến trình con hoàn tất để ngăn chặn các tiến trình zombie bị rò rỉ.
bpo-31072: Thêm tham số
include_filevàozipapp.create_archive()bpo-24700: Tối ưu hóa việc so sánh array.array. Hiện tại, nó nhanh hơn từ 10 lần đến 70 lần khi so sánh các mảng chứa các giá trị có cùng loại số nguyên.
bpo-31135: ttk: sửa phương thức destroy() của các lớp LabeledScale và OptionMenu. Gọi phương thức destroy() gốc ngay cả khi thuộc tính used không tồn tại. Phương thức LabeledScale.destroy() giờ đây cũng xóa rõ ràng các thuộc tính nhãn và tỷ lệ để giúp trình thu gom rác hủy tất cả các vật dụng.
bpo-31107: Sửa tính toán thuộc tính sai lệch
copyreg._slotnames()cho các lớp có tên bắt đầu bằng dấu gạch dưới. Bản vá của Shane Harvey.bpo-31080: Cho phép
logging.config.fileConfigchấp nhận kwargs và/hoặc args.bpo-30897: Các đối tượng
pathlib.Pathhiện bao gồm phương thứcis_mount()(chỉ được triển khai trên POSIX). Điều này tương tự vớios.path.ismount(p). Bản vá của Cooper Ry Lees.bpo-31061: Đã khắc phục sự cố khi sử dụng asyncio và chủ đề.
bpo-30987: Đã thêm hỗ trợ cho giao thức CAN ISO-TP trong mô-đun ổ cắm.
bpo-30522: Đã thêm phương thức
setStreamvàologging.StreamHandlerđể cho phép đặt luồng sau khi tạo.bpo-30502: Khắc phục việc xử lý các oid dài trong ssl. Dựa trên bản vá của Christian Heimes.
bpo-5288: Hỗ trợ các đối tượng tzinfo với độ lệch dưới phút.
bpo-30919: Khắc phục sự hồi quy hiệu suất bộ nhớ dùng chung trong đa xử lý trong 3.x. Bộ nhớ dùng chung sử dụng ánh xạ bộ nhớ ẩn danh trong 2.x, trong khi 3.x mmap các tệp thực tế. Hãy cố gắng thực hiện càng ít thao tác I/O trên đĩa càng tốt.
bpo-26732: Khắc phục quá nhiều fds trong các quy trình bắt đầu bằng phương pháp "máy chủ phân nhánh". Một tiến trình con sẽ kế thừa số lượng fds bằng số lượng tiến trình con vẫn đang chạy.
bpo-29403: Sửa lỗi autospec của
unittest.mockđể không bị lỗi trên các hàm dựng sẵn gắn với phương thức. Bản vá của Aaron Gallagher.bpo-30961: Sửa lỗi giảm tham chiếu mượn trong tracemalloc.
bpo-19896: Sửa multiprocessing.sharedctypes để nhận dạng mã kiểu
'q'và'Q'.bpo-30946: Xóa mã lỗi thời trong mô-đun readline cho các nền tảng có dòng đọc GNU cũ hơn 2.1 hoặc không có sẵn select().
bpo-25684: Thay đổi radiobutton
ttk.OptionMenuthành duy nhất trên các phiên bản củaOptionMenu.bpo-30886: Khắc phục multiprocessing.Queue.join_thread(): nó hiện đợi cho đến khi luồng hoàn thành, ngay cả khi luồng được bắt đầu bởi cùng một tiến trình đã tạo hàng đợi.
bpo-29854: Sửa lỗi segfault trong readline khi sử dụng tùy chọn kích thước lịch sử của readline. Bản vá của Nir Soffer.
bpo-30794: Đã thêm phương thức multiprocessing.Process.kill để chấm dứt bằng tín hiệu SIGKILL trên Unix.
bpo-30319: socket.close() hiện bỏ qua lỗi ECONNRESET.
bpo-30828: Sửa lỗi viết ngoài giới hạn bằng
asyncio.CFuture.remove_done_callback().bpo-30302: Sử dụng từ khóa trong
reprcủadatetime.timedelta.bpo-30807: signal.setitimer() có thể tắt bộ hẹn giờ khi truyền một giá trị nhỏ. Các giá trị nhỏ (chẳng hạn như 1e-6) là các giá trị khác 0 hợp lệ cho setitimer(), được chỉ định là lấy khoảng thời gian có độ phân giải micro giây. Tuy nhiên, trên một số nền tảng, quy trình chuyển đổi của chúng tôi có thể chuyển đổi 1e-6 thành khoảng 0, do đó vô hiệu hóa bộ hẹn giờ thay vì lập lịch (lập lại) nó.
bpo-30441: Sửa lỗi khi sửa đổi os.environ trong khi lặp lại nó
bpo-29585: Tránh nhập
sysconfigtừsiteđể cải thiện tốc độ khởi động. Khởi động Python nhanh hơn khoảng 5% trên Linux và nhanh hơn 30% trên macOS.bpo-29293: Thêm tham số bị thiếu "n" trên multiprocessing.Condition.notify(). Tài liệu tuyên bố multiprocessing.Condition hoạt động giống như threading.Condition, nhưng phương thức notification() của nó thiếu đối số "n" tùy chọn (để chỉ định số lượng tà vẹt sẽ thức dậy) mà threading.Condition.notify() chấp nhận.
bpo-30532: Sửa lỗi trình phân tích cú pháp giá trị tiêu đề email bỏ khoảng trắng gấp trong một số trường hợp nhất định.
bpo-30596: Thêm phương thức
close()vàomultiprocessing.Process.bpo-9146: Sửa lỗi phân đoạn trong _hashopenssl khi các hàm băm tiêu chuẩn như md5 không có sẵn trong thư viện OpenSSL được liên kết. Như trong một số môi trường xây dựng FIPS-140 đặc biệt.
bpo-29169: Cập nhật zlib lên 1.2.11.
bpo-30119: ftplib.FTP.putline() hiện gửi ValueError trên các lệnh chứa CR hoặc LF. Bản vá của Donghee Na.
bpo-30879: os.listdir() và os.scandir() hiện phát ra tên byte khi được gọi với đối số giống byte.
bpo-30746: Bị cấm ký tự '=' trong tên biến môi trường trong
os.putenv()vàos.spawn*().bpo-30664: Mô tả của một bài kiểm tra nhỏ nhất hiện giữ nguyên thứ tự các đối số từ khóa của TestCase.subTest().
bpo-21071: loại struct.Struct.format hiện là
strthay vìbytes.bpo-29212: Sửa các luồng concurrent.futures.thread.ThreadPoolExecutor để có tên luồng không dựa trên repr() theo mặc định khi không cung cấp thread_name_prefix. Bây giờ họ sẽ tự nhận mình là "ThreadPoolExecutor-y_n".
bpo-29755: Đã sửa lỗi nhóm hàm lgettext() trong mô-đun gettext. Bây giờ họ luôn trả về byte.
bpo-30616: Chức năng API của enum cho phép tạo các enum trống. Được vá bởi Donghee Na
bpo-30038: Khắc phục tình trạng tương tranh giữa việc phân phối tín hiệu và bộ mô tả tệp đánh thức. Bản vá của Nathaniel Smith.
bpo-23894: lib2to3 hiện nhận dạng chuỗi
rb'...'vàf'...'.bpo-24744: hàm pkgutil.walk_packages hiện tăng ValueError nếu path là một chuỗi. Bản vá của Sanyam Khurana.
bpo-24484: Tránh tình trạng chạy đua trong quá trình dọn dẹp đa xử lý.
bpo-30589: Sửa multiprocessing.Process.exitcode để trả về số ngược lại với số tín hiệu khi quá trình bị hủy bởi tín hiệu (thay vì 255) khi sử dụng phương thức "máy chủ phân nhánh".
bpo-28994: Truy nguyên không còn được hiển thị cho SystemExit được đưa ra trong lệnh gọi lại được đăng ký bởi atexit.
bpo-30508: Không ghi lại các ngoại lệ nếu phương thức "cancel()" của Nhiệm vụ/Tương lai được gọi.
bpo-30645: Sửa lỗi tính toán đường dẫn trong
imp.load_package(), sửa lỗi trong trường hợp gói hàng chỉ được vận chuyển với mã byte. Bản vá của Alexandru Ardelean.bpo-11822: Hàm dis.dis() hiện có thể phân tách các đối tượng mã lồng nhau.
bpo-30624: bộ chọn không tính đến KeyboardInterrupt và SystemExit, khiến fd ở trạng thái xấu trong trường hợp có lỗi. Bản vá của Giampaolo Rodola'.
bpo-30595: multiprocessing.Queue.get() có thời gian chờ hiện sẽ thăm dò ý kiến của người đọc ở chế độ không chặn nếu lấy được khóa thành công nhưng quá trình lấy mất nhiều thời gian hơn thời gian chờ.
bpo-28556: Cập nhật mô-đun gõ: Thêm AsyncContextManager chung, thêm hỗ trợ cho ContextManager trên tất cả các phiên bản. PR gốc của Jelle Zijlstra và Ivan Levkivskyi
bpo-30605: re.compile() không còn tăng BytesWarning khi biên dịch một phiên bản byte với công cụ sửa đổi nội tuyến bị đặt sai vị trí. Bản vá của Roy Williams.
bpo-29870: Khắc phục rò rỉ ổ cắm ssl khi kết nối bị hủy khi triển khai asyncio/ssl. Bản vá của Michaël Sghaïer.
bpo-29743: Đóng vận chuyển trong quá trình bắt tay làm rò rỉ ổ cắm. Bản vá của Nikolay Kim
bpo-27585: Sửa lỗi hủy người phục vụ trong asyncio.Lock. Bản vá của Mathieu Sornay.
bpo-30014: phương thức Modify() của các lớp mô-đun bộ chọn dựa trên poll(), epoll() và devpoll() nhanh hơn khoảng 10%. Bản vá của Giampaolo Rodola'.
bpo-30418: Trên Windows, subprocess.Popen.communicate() giờ đây cũng bỏ qua EINVAL trên stdin.write() nếu tiến trình con vẫn đang chạy nhưng đã đóng đường ống.
bpo-30463: Đã thêm __slots__ trống vào abc.ABC. Điều này cho phép các lớp con từ chối việc tạo __dict__ và __weakref__. Bản vá của Aaron Hall.
bpo-30520: Máy ghi nhật ký hiện có thể ngâm được.
bpo-30557: trình xử lý lỗi hiện lọc và hiển thị chính xác mã ngoại lệ trên Windows
bpo-30526: Thêm thuộc tính TextIOWrapper.reconfigure() và TextIOWrapper.write_through.
bpo-30245: Khắc phục tình trạng tràn có thể xảy ra khi sắp xếp thông báo lỗi struct.pack_into. Bản vá của Yuan Liu.
bpo-30378: Khắc phục sự cố log.handlers.SysLogHandler không thể xử lý địa chỉ IPv6.
bpo-16500: Cho phép đăng ký trình xử lý at-fork.
bpo-30470: Không dùng tính năng bảo vệ cuộc gọi ctypes không hợp lệ trên Windows. Bản vá của Mariatta Wijaya.
bpo-30414: luồng chạy nền multiprocessing.Queue._feed không thoát khỏi vòng lặp chính ngoại lệ.
bpo-30003: Sửa lỗi xử lý các ký tự thoát trong codec HZ. Dựa trên bản vá của Ma Lin.
bpo-30149: kiểm tra.signature() hiện hỗ trợ các lệnh gọi có tham số đối số biến được gói bằng phương thức một phần. Bản vá của Donghee Na.
bpo-30436: importlib.find_spec() tăng ModuleNotFoundError thay vì AttributionError nếu mô-đun mẹ được chỉ định không phải là một gói (tức là thiếu thuộc tính __path__).
bpo-30301: Sửa lỗi AttributionError khi sử dụng SimpleQueue.empty() trong phương thức khởi động spawn và forkserver.
bpo-30375: Cảnh báo phát ra khi biên dịch biểu thức chính quy giờ đây luôn trỏ đến dòng trong mã người dùng. Trước đây, chúng có thể trỏ vào phần bên trong của mô-đun re nếu được phát ra từ bên trong các nhóm hoặc điều kiện.
bpo-30329: imaplib và poplib hiện đã gặp lỗi WSAEINVAL ổ cắm Windows (mã 10022) khi tắt máy (SHUT_RDWR): Đã thử một thao tác không hợp lệ. Lỗi này đôi khi xảy ra trên các kết nối SSL.
bpo-29196: Đã xóa trước đây không được dùng nữa trong các lớp Python 2.4 Plist, Dict và _InternalDict trong mô-đun plistlib. Các giá trị dict trong kết quả của hàm readPlist() và readPlistFromBytes() hiện là các dict thông thường. Bạn không còn có thể sử dụng quyền truy cập thuộc tính để truy cập các mục của những từ điển này.
bpo-9850:
macpathhiện không được dùng nữa và sẽ bị xóa trong Python 3.8.bpo-30299: Biên dịch biểu thức chính quy ở chế độ gỡ lỗi trên CPython hiện hiển thị mã byte đã biên dịch ở dạng người có thể đọc được.
bpo-30048: Đã sửa lỗi
Task.cancel()có thể bị bỏ qua khi tác vụ đang chạy coroutine và coroutine được trả về mà không có thêmawaitnào nữa.bpo-30266: contextlib.AbstractContextManager hiện hỗ trợ chống đăng ký bằng cách đặt __enter__ = Không hoặc __exit__ = Không, theo mẫu được giới thiệu trong bpo-25958. Bản vá của Jelle Zijlstra.
bpo-30340: Tối ưu hóa biểu thức chính quy nâng cao. Điều này đã tăng hiệu suất khớp một số mẫu lên tới 25 lần.
bpo-30298: Làm suy yếu tình trạng cảnh báo không dùng nữa đối với công cụ sửa đổi nội tuyến. Hiện đã cho phép một số công cụ sửa đổi nội tuyến tiếp theo ở đầu mẫu (ví dụ:
'(?i)(?s)...'). Ở chế độ dài dòng, khoảng trắng và nhận xét hiện được cho phép trước và giữa các công cụ sửa đổi nội tuyến (ví dụ:'(?x) (?i) (?s)...').bpo-30285: Tối ưu hóa việc so khớp không phân biệt chữ hoa chữ thường và tìm kiếm các biểu thức chính quy.
bpo-29990: Sửa lỗi kiểm tra phạm vi trong bộ giải mã GB18030. Bản vá gốc của Ma Lin.
bpo-29979: viết lại cgi.parse_multipart, sử dụng lại lớp FieldStorage và làm cho kết quả của nó nhất quán với kết quả của FieldStorage cho các yêu cầu nhiều phần/dữ liệu biểu mẫu. Bản vá của Pierre Quentel.
bpo-30243: Đã xóa các phương thức __init__ của trình quét và bộ mã hóa của _json. Việc lạm dụng chúng có thể gây rò rỉ bộ nhớ hoặc treo máy. Bây giờ các đối tượng máy quét và bộ mã hóa đã được khởi tạo hoàn toàn trong các phương thức __new__.
bpo-30215: Các đối tượng biểu thức chính quy được biên dịch bằng cờ re.LOCALE không còn phụ thuộc vào ngôn ngữ tại thời điểm biên dịch. Chỉ ngôn ngữ tại thời điểm khớp mới ảnh hưởng đến kết quả khớp.
bpo-30185: Tránh truy ngược bàn phímInterrupt trong quy trình trợ giúp máy chủ ngã ba khi nhận được Ctrl-C.
bpo-30103: binascii.b2a_uu() và uu.encode() hiện hỗ trợ sử dụng
'`'bằng 0 thay vì dấu cách.bpo-28556: Nhiều bản cập nhật khác nhau cho mô-đun gõ: thêm kiểu gõ.NoReturn, sử dụng WrapperDescriptorType, sửa một số lỗi nhỏ. PR gốc của Jim Fasarakis-Hilliard và Ivan Levkivskyi.
bpo-30205: Sửa lỗi getsockname() cho ổ cắm AF_UNIX không liên kết trên Linux.
bpo-30228: Các phương thức seek() và Tell() của io.FileIO hiện đặt thuộc tính có thể tìm kiếm bên trong để tránh một tòa nhà cao tầng trên open() (ở chế độ đệm hoặc văn bản).
bpo-30190: khẳng địnhAlmostEqual và khẳng địnhNotAlmostEqual của unittest cung cấp thông báo tốt hơn trong trường hợp thất bại bao gồm sự khác biệt giữa các đối số bên trái và bên phải. (bản vá của Giampaolo Rodola')
bpo-30101: Thêm hỗ trợ cho lời nguyền.A_ITALIC.
bpo-29822: kiểm tra.isabstract() hiện hoạt động trong __init_subclass__. Bản vá của Nate Soares.
bpo-29960: Giữ nguyên trạng thái của trình tạo khi _random.Random.setstate() đưa ra một ngoại lệ. Bản vá của Bryan Olson.
bpo-30070: Đã sửa lỗi rò rỉ và sự cố khi xử lý lỗi trong mô-đun trình phân tích cú pháp.
bpo-22352: Độ rộng cột trong đầu ra của dis.dis() hiện được điều chỉnh cho số dòng lớn và độ lệch lệnh.
bpo-30061: Đã khắc phục sự cố trong các phương thức IOBase __next__() và readlines() khi readline() hoặc __next__() lần lượt trả về đối tượng không có kích thước lớn. Đã khắc phục các lỗi khác có thể xảy ra do không kiểm tra kết quả của PyObject_Size(), PySequence_Size() hoặc PyMapping_Size().
bpo-30218: Sửa lỗi hỗ trợ PathLike cho Shutil.unpack_archive. Bản vá của Jelle Zijlstra.
bpo-10076: Biểu thức chính quy được biên dịch và các đối tượng khớp trong mô-đun re hiện hỗ trợ copy.copy() và copy.deepcopy() (chúng được coi là nguyên tử).
bpo-30068: _io._IOBase.readlines sẽ kiểm tra xem nó có đóng trước khi có gợi ý hay không.
bpo-29694: Đã sửa lỗi điều kiện cuộc đua trong pathlib mkdir với cờ parent=True. Bản vá của Armin Rigo.
bpo-29692: Đã sửa lỗi tùy ý hủy chuỗi ngoại lệ RuntimeError trong contextlib.contextmanager. Bản vá của Siddharth Velankar.
bpo-26187: Kiểm tra xem lệnh gọi lại theo dõi sqlite3 không được gọi nhiều lần khi lược đồ thay đổi. Đã sửa lỗi gián tiếp bằng cách chuyển sang sử dụng sqlite3_prepare_v2() trong bpo-9303. Bản vá của Aviv Palivoda.
bpo-30017: Được phép gọi phương thức close() của đối tượng người viết mục zip nhiều lần. Việc viết thư cho một trình soạn thảo đã đóng giờ đây luôn tạo ra ValueError.
bpo-29998: Pickling và sao chép ImportError hiện giữ nguyên các thuộc tính tên và đường dẫn.
bpo-29995: re.escape() giờ đây chỉ thoát khỏi các ký tự đặc biệt của biểu thức chính quy.
bpo-29962: Thêm phép toán math.remainder, thực hiện phần dư như được chỉ định trong IEEE 754.
bpo-29649: Cải thiện các thông báo ngoại lệ struct.pack_into() cho các vấn đề về kích thước bộ đệm và độ lệch. Bản vá của Andrew Nester.
bpo-29654: Hỗ trợ tiêu đề If-Modified-Since HTTP (bộ đệm của trình duyệt). Bản vá của Pierre Quentel.
bpo-29931: Đã sửa lỗi kiểm tra so sánh cho các đối tượng ipaddress.ip_interface. Bản vá của Sanjay Sundaresan.
bpo-29953: Đã sửa lỗi rò rỉ bộ nhớ trong phương thức thay thế() của các đối tượng ngày giờ và thời gian khi vượt quá đối số giới hạn.
bpo-29942: Khắc phục sự cố trong itertools.chain.from_iterable khi gặp phải các lần lặp trống dài.
bpo-10030: Tăng tốc độ đọc các tệp ZIP được mã hóa lên 2 lần.
bpo-29204: Element.getiterator() và tham số html của XMLParser() chỉ không được dùng nữa trong tài liệu (vì Python 3.2 và 3.4 tương ứng). Bây giờ việc sử dụng chúng sẽ phát ra cảnh báo không dùng nữa.
bpo-27863: Đã khắc phục nhiều sự cố trong ElementTree do điều kiện chủng tộc và loại sai.
bpo-25996: Đã thêm hỗ trợ mô tả tệp trong os.scandir() trên Unix. os.fwalk() được tăng tốc gấp 2 lần bằng cách sử dụng os.scandir().
bpo-28699: Đã sửa lỗi trong các nhóm trong multiprocessing.pool khiến việc đưa ra một ngoại lệ ở lần đầu tiên của một lần lặp có thể nuốt chửng ngoại lệ đó hoặc khiến chương trình bị treo. Bản vá của Davin Potts và Xiang Zhang.
bpo-23890: unittest.TestCase.assertRaises() hiện phá vỡ chu trình tham chiếu theo cách thủ công để không giữ cho các đối tượng tồn tại lâu hơn dự kiến.
bpo-29901: Mô-đun zipapp hiện hỗ trợ các đối tượng giống đường dẫn chung, không chỉ pathlib.Path.
bpo-25803: Tránh các lỗi không chính xác do Path.mkdir(exist_ok=True) đưa ra khi HĐH ưu tiên các lỗi như EACCES hơn EEXIST.
bpo-29861: Đưa ra các tham chiếu đến các tác vụ, đối số và kết quả của chúng ngay khi chúng được hoàn thành trong multiprocessing.Pool.
bpo-19930: Đối số chế độ của os.makedirs() không còn ảnh hưởng đến các bit cấp phép tệp của các thư mục cấp trung gian mới được tạo.
bpo-29884: errorhandler: Khôi phục sigaltstack cũ trong quá trình gỡ bỏ. Bản vá của Christophe Zeitouny.
bpo-25455: Đã khắc phục sự cố khi lặp lại các đối tượng giống như tệp được đệm đệ quy.
bpo-29800: Khắc phục sự cố trong một phần.__repr__ nếu khóa của một phần.keywords không phải là chuỗi. Bản vá của Michael Seifert.
bpo-8256: Đã sửa lỗi có thể xảy ra hoặc lỗi đầu vào() nếu thuộc tính "mã hóa" hoặc "lỗi" của sys.stdin hoặc sys.stdout không được đặt hoặc không phải là chuỗi.
bpo-28692: Việc sử dụng giá trị không nguyên để chọn dạng số nhiều trong gettext hiện không còn được dùng nữa.
bpo-26121: Sử dụng triển khai thư viện C cho các hàm toán học erf() và erfc().
bpo-29619: os.stat() và os.DirEntry.inode() hiện chuyển đổi inode (st_ino) bằng cách sử dụng số nguyên không dấu.
bpo-28298: Sửa lỗi ngăn mảng 'Q', 'L' và 'I' chấp nhận các phần tử có thể intable lớn (các đối tượng có __int__) làm phần tử.
bpo-29645: Tăng tốc độ nhập mô-đun trình duyệt web. webbrowser.register() hiện an toàn theo luồng.
bpo-28231: Mô-đun zipfile hiện chấp nhận các đối tượng giống đường dẫn cho các đường dẫn bên ngoài.
bpo-26915: các phương thức index() và count() của bộ sưu tập.abc.Sequence hiện kiểm tra danh tính trước khi kiểm tra sự bằng nhau khi thực hiện so sánh.
bpo-28682: Đã thêm hỗ trợ cho đường dẫn byte trong os.fwalk().
bpo-29728: Thêm hằng số
socket.TCP_NOTSENT_LOWAT(Linux 3.12) mới. Bản vá của Nathaniel J. Smith.bpo-29623: Cho phép sử dụng đối tượng giống đường dẫn làm đối số duy nhất trong ConfigParser.read(). Bản vá của David Ellis.
bpo-9303: Di chuyển mô-đun sqlite3 sang _v2 API. Bản vá của Aviv Palivoda.
bpo-28963: Khắc phục sự lặp lại bị ràng buộc trong asyncio.Future.remove_done_callback được triển khai trong C.
bpo-29704: asyncio.subprocess.SubprocessStreamProtocol không còn đóng trước khi tất cả các đường ống được đóng lại.
bpo-29271: Sửa lỗi Task.current_task và Task.all_tasks được triển khai trong C để chấp nhận đối số None như cách triển khai Python thuần túy của chúng.
bpo-29703: Sửa lỗi asyncio để hỗ trợ khởi tạo các vòng lặp sự kiện mới trong các tiến trình con.
bpo-29615: SimpleXMLRPCDispatcher không còn xâu chuỗi KeyError (hoặc bất kỳ ngoại lệ nào khác) thành (các) ngoại lệ được nêu ra trong các phương thức được gửi đi. Bản vá của Petr Motejlek.
bpo-7769: Phương thức register_function() của xmlrpc.server.SimpleXMLRPCDispatcher và các lớp con của nó hiện có thể được sử dụng làm công cụ trang trí.
bpo-29376: Sửa lỗi xác nhận trong threading._DummyThread.is_alive().
bpo-28624: Thêm một bài kiểm tra để kiểm tra tham số cwd của Popen() chấp nhận các đối tượng PathLike. Bản vá của Sayan Chowdhury.
bpo-28518: Bắt đầu một giao dịch ngầm trước câu lệnh DML. Bản vá của Aviv Palivoda.
bpo-29742: get_extra_info() tăng ngoại lệ nếu được gọi khi vận chuyển ssl đã đóng. Bản vá của Nikolay Kim.
bpo-16285: urllib.parse.quote hiện dựa trên RFC 3986 và do đó bao gồm '~' trong bộ ký tự không được trích dẫn theo mặc định. Bản vá của Christian Theune và Ratnadeep Debnath.
bpo-29532: Việc thay đổi từ điển kwarg được chuyển tới functools.partial() không còn ảnh hưởng đến một phần đối tượng sau khi tạo.
bpo-29110: Sửa lỗi rò rỉ đối tượng tệp trong aifc.open() khi tệp được cung cấp dưới dạng đường dẫn hệ thống tệp và không ở định dạng AIFF hợp lệ. Bản vá của Anthony Zhang.
bpo-22807: Thêm uuid.SafeUUID và uuid.UUID.is_safe để chuyển tiếp thông tin từ nền tảng về việc liệu UUID được tạo có được tạo bằng phương pháp an toàn đa xử lý hay không.
bpo-29576: Cải thiện một số lỗi không dùng nữa trong importlib. Một số phương pháp không còn được dùng nữa hiện phát ra Cảnh báo không dùng nữa và có thông báo mô tả tốt hơn.
bpo-29534: Đã sửa lỗi hành vi khác nhau của Decimal.from_float() cho _decimal và _pydecimal. Cảm ơn Andrew Nester.
bpo-10379: locale.format_string hiện hỗ trợ đối số từ khóa 'tiền tệ' và locale.format không được dùng nữa.
bpo-29851: importlib.reload() hiện tăng ModuleNotFoundError nếu mô-đun thiếu thông số kỹ thuật.
bpo-28556: Nhiều bản cập nhật khác nhau cho mô-đun gõ: gõ.Counter, gõ.ChainMap, bộ nhớ đệm ABC được cải thiện, v.v. PR gốc của Jelle Zijlstra, Ivan Levkivskyi, Manuel Krebber và Łukasz Langa.
bpo-29100: Khắc phục hồi quy datetime.fromtimestamp() được giới thiệu trong Python 3.6.0: kiểm tra năm tối thiểu và tối đa.
bpo-29416: Ngăn chặn vòng lặp vô hạn trong pathlib.Path.mkdir
bpo-29444: Đã sửa lỗi truy cập bộ đệm ngoài giới hạn trong phương thức group() của đối tượng khớp. Dựa trên bản vá của WGH.
bpo-29377: Thêm các loại tích hợp WrapperDescriptorType, MethodWrapperType và MethodDescriptorType vào mô-đun loại. Bản vá gốc của Manuel Krebber.
bpo-29218: Lệnh install_misc không được sử dụng hiện đã bị xóa. Nó đã được ghi nhận là không được sử dụng kể từ năm 2000. Bản vá của Eric N. Vander Weele.
bpo-29368: Phương thức mở rộng() hiện được gọi thay vì phương thức chắp thêm() khi giải nén các bộ sưu tập.deque và các đối tượng giống như danh sách khác. Điều này có thể tăng tốc độ giải nén lên 2 lần.
bpo-29338: Sự trợ giúp của lớp dựng sẵn hoặc lớp mở rộng hiện bao gồm chữ ký hàm tạo nếu __text_signature__ được cung cấp cho lớp.
bpo-29335: Sửa subprocess.Popen.wait() khi tiến trình con đã thoát sang trạng thái dừng thay vì kết thúc (ví dụ: khi ở trạng thái ptrace).
bpo-29290: Khắc phục sự hồi quy trong argparse khiến các thông báo trợ giúp sẽ nằm ở các khoảng trắng không bị ngắt.
bpo-28735: Đã sửa lỗi so sánh mock.MagickMock với mock.ANY.
bpo-29197: Đã xóa hàm ntpath.splitunc() không được dùng nữa.
bpo-29210: Đã xóa hỗ trợ đối số "loại trừ" không được dùng nữa trong tarfile.TarFile.add().
bpo-29219: Đã sửa lỗi đệ quy vô hạn trong bản sao của các phiên bản ctypes.CDLL chưa được khởi tạo.
bpo-29192: Đã xóa các tính năng không được dùng nữa trong mô-đun http.cookies.
bpo-29193: Đối số chuỗi định dạng cho string.Formatter.format() hiện chỉ có vị trí.
bpo-29195: Đã loại bỏ hỗ trợ đối số từ khóa không được chấp nhận trong các phương thức của đối tượng biểu thức chính quy.
bpo-28969: Đã sửa lỗi tình trạng chạy đua trong triển khai C của functools.lru_cache. KeyError có thể tăng lên khi chức năng được lưu trong bộ nhớ đệm có bộ nhớ đệm đầy được gọi đồng thời từ các luồng khác nhau có cùng đối số không được lưu trong bộ nhớ đệm.
bpo-20804: Các thuộc tính unittest.mock.sentinel hiện giữ nguyên danh tính của chúng khi chúng được sao chép hoặc chọn lọc.
bpo-29142: Trong urllib.request, hậu tố trong biến môi trường no_proxy có dấu chấm ở đầu có thể khớp lại với tên máy chủ có liên quan (ví dụ: .b.c khớp với a.b.c). Bản vá của Milan Oberkirch.
bpo-28961: Fix unittest.mock._Call helper: đừng bỏ qua tham số tên nữa. Bản vá được viết bởi Jiajun Huang.
bpo-15812: kiểm tra.getframeinfo() hiện hiển thị chính xác dòng đầu tiên của ngữ cảnh. Bản vá của Sam Breese.
bpo-28985: Cập nhật hằng số ủy quyền trong mô-đun sqlite3. Bản vá của Dingyuan Wang.
bpo-29079: Ngăn chặn vòng lặp vô hạn trong pathlib.resolve() trên Windows
bpo-13051: Đã sửa lỗi đệ quy trong các lời nguyền.textpad.Textbox lớn hoặc đã thay đổi kích thước. Dựa trên bản vá của Tycho Andersen.
bpo-9770: các biến vị ngữcurs.ascii hiện hoạt động chính xác với số nguyên âm.
bpo-28427: khóa cũ không được xóa giá trị mới khỏi WeakValueDictionary khi thu thập từ một chuỗi khác.
bpo-28923: Xóa các tạo phẩm của trình soạn thảo khỏi Tix.py.
bpo-28871: Đã khắc phục sự cố khi phân bổ ElementTree sâu.
bpo-19542: Sửa lỗi trong WeakValueDictionary.setdefault() và WeakValueDictionary.pop() khi bộ sưu tập GC diễn ra trong một luồng khác.
bpo-20191: Đã khắc phục sự cố trong Resource.prlimit() khi chuyển một chuỗi không sở hữu các phần tử của nó làm giới hạn.
bpo-16255: subprocess.Popen sử dụng /system/bin/sh trên Android làm shell, thay vì /bin/sh.
bpo-28779: multiprocessing.set_forkserver_preload() sẽ làm hỏng quá trình forkserver nếu một mô-đun được tải trước khởi tạo một số đối tượng đa xử lý như khóa.
bpo-26937: Phương thức chown() của lớp tarfile.TarFile hiện không bị lỗi khi không thể nhập mô-đun grp, chẳng hạn như trên nền tảng Android.
bpo-28847: dbm.dumb hiện hỗ trợ đọc các tệp chỉ đọc và không còn ghi tệp chỉ mục khi nó không bị thay đổi. Cảnh báo không dùng nữa hiện được phát ra nếu tệp chỉ mục bị bỏ sót và được tạo lại ở chế độ 'r' và 'w' (sẽ là lỗi trong các bản phát hành Python trong tương lai).
bpo-27030: Các lối thoát không xác định bao gồm
'\'và một chữ cái ASCII trong các mẫu thay thế re.sub(), các biểu thức thông thường hiện là lỗi.bpo-28835: Khắc phục hồi quy được giới thiệu trong Warning.catch_warnings(): gọi Warning.showwarning() nếu nó bị ghi đè bên trong trình quản lý bối cảnh.
bpo-27172: Để hỗ trợ nâng cấp từ 2.7, việc ngừng sử dụng
inspect.getfullargspec()được ghi nhận trước đó đã bị hủy bỏ. Quyết định này có thể được xem xét lại sau khi nhánh Python 2.7 không còn được hỗ trợ chính thức.bpo-28740: Thêm sys.getandroidapilevel(): trả về thời gian xây dựng phiên bản API của Android dưới dạng số nguyên. Chức năng chỉ có trên Android.
bpo-26273: Thêm các hằng số
socket.TCP_CONGESTION(Linux 2.6.13) vàsocket.TCP_USER_TIMEOUT(Linux 2.6.37) mới. Bản vá được viết bởi Omar Sandoval.bpo-28752: Đã khôi phục phương thức __reduce__() của đối tượng datetime.
bpo-28727: Các mẫu biểu thức chính quy, các đối tượng _sre.SRE_Pattern được tạo bởi re.compile(), có thể so sánh được (chỉ các toán tử x==y và x!=y). Thay đổi này sẽ khắc phục lỗi bpo-18383: không lặp lại các bộ lọc cảnh báo khi mô-đun cảnh báo được tải lại (điều thường chỉ được thực hiện trong các bài kiểm tra đơn vị).
bpo-20572: Xóa tham số thời gian kết thúc subprocess.Popen.wait. Nó không được dùng nữa trong phiên bản 3.4 và không có giấy tờ trước đó.
bpo-25659: Trong ctypes, ngăn chặn sự cố khi gọi các phương thức from_buffer() và from_buffer_copy() trên các lớp trừu tượng như Array.
bpo-28548: Trong mô-đun "http.server", hãy phân tích phiên bản giao thức nếu có thể để tránh sử dụng HTTP 0.9 trong một số phản hồi lỗi.
bpo-19717: Làm cho Path.resolve() thành công trên những đường dẫn không tồn tại. Bản vá của Vajrasky Kok
bpo-28563: Đã sửa lỗi DoS và thực thi mã tùy ý khi xử lý các lựa chọn dạng số nhiều trong mô-đun gettext. Trình phân tích cú pháp biểu thức hiện hỗ trợ cú pháp chính xác được hỗ trợ bởi GNU gettext.
bpo-28387: Đã khắc phục sự cố có thể xảy ra trong bộ giải phóng _io.TextIOWrapper khi trình thu gom rác được gọi trong luồng khác. Dựa trên bản vá của Sebastian Cufre.
bpo-27517: Bộ nén và giải nén LZMA không còn đưa ra ngoại lệ nếu được cung cấp dữ liệu trống hai lần. Bản vá của Benjamin Fogle.
bpo-28549: Đã sửa lỗi segfault trong addch() của lời nguyền bằng ncurses6.
bpo-28449: tarfile.open() với chế độ "r" hoặc "r:" hiện cố gắng mở tệp tar bằng tính năng nén trước khi thử mở tệp đó mà không nén. Nếu không thì có 50% cơ hội thất bại với ign_zeros=True.
bpo-23262: Mô-đun trình duyệt web hiện hỗ trợ Firefox 36+ và các trình duyệt phái sinh. Dựa trên bản vá của Oleg Broytman.
bpo-24241: Trình duyệt web trong môi trường X hiện ưu tiên sử dụng trực tiếp trình duyệt mặc định hơn. Ngoài ra, hàm webbrowser register() hiện có một đối số 'ưa thích' được ghi lại, để chỉ định các trình duyệt được trả về bởi get() mà không có đối số. Bản vá của David Steele
bpo-27939: Đã sửa lỗi trong tkinter.ttk.LabeledScale và tkinter.Scale do biểu diễn thang đo dưới dạng giá trị float bên trong Tk. tkinter.IntVar hiện hoạt động nếu giá trị float được đặt thành biến Tk cơ bản.
bpo-28255: Calendar.TextCalendar.prweek() không còn in khoảng trắng sau lịch một tuần nữa. lịch.TextCalendar.pryear() không còn in dòng mới dư thừa sau lịch một năm nữa. Dựa trên bản vá của Xiang Zhang.
bpo-28255: Calendar.TextCalendar.prmonth() không còn in khoảng trắng ở đầu dòng mới sau khi in lịch của một tháng. Bản vá của Xiang Zhang.
bpo-20491: Lớp textwrap.TextWrapper hiện tôn trọng các khoảng trắng không bị phá vỡ. Dựa trên bản vá của Kaarle Ritvanen.
bpo-28353: os.fwalk() không còn bị lỗi với các liên kết bị hỏng.
bpo-28430: Sửa lỗi iterator của C được triển khai asyncio.Future không chấp nhận giá trị non-None được chuyển cho it.send(val).
bpo-27025: Tên đã tạo cho các tiện ích Tkinter hiện bắt đầu bằng "!" tiền tố để dễ đọc.
bpo-25464: Đã sửa lỗi HList.header_exists() trong mô-đun tkinter.tix bằng cách thêm một giải pháp thay thế cho lỗi thư viện Tix.
bpo-28488: Shutil.make_archive() không còn thêm mục "./" vào kho lưu trữ ZIP nữa.
bpo-25953: re.sub() hiện phát sinh lỗi tham chiếu nhóm số không hợp lệ trong mẫu thay thế ngay cả khi không tìm thấy mẫu trong chuỗi. Thông báo lỗi cho tham chiếu nhóm không hợp lệ hiện bao gồm chỉ mục nhóm và vị trí của tham chiếu. Dựa trên bản vá của SilentGhost.
bpo-28469: timeit hiện sử dụng chuỗi 1, 2, 5, 10, 20, 50,... thay vì 1, 10, 100,... để tự động sắp xếp.
bpo-28115: Giao diện dòng lệnh của mô-đun zipfile hiện sử dụng argparse. Đã thêm hỗ trợ cho các tùy chọn dài.
bpo-18219: Tối ưu hóa csv.DictWriter cho số lượng cột lớn. Bản vá của Mariatta Wijaya.
bpo-28448: Fix C được triển khai asyncio.Future không hoạt động trên Windows.
bpo-23214: Trong mô-đun "io", đối số cho các phương thức read1() của BufferedReader và BytesIO hiện là tùy chọn và có thể là -1, khớp với đặc tả BufferedIOBase.
bpo-28480: Sửa lỗi xây dựng mô-đun ổ cắm khi tắt đa luồng.
bpo-28240: timeit: xóa các tùy chọn dòng lệnh
-c/--clockvà-t/--timekhông được dùng nữa kể từ Python 3.3.bpo-28240: timeit hiện lặp lại điểm chuẩn 5 lần thay vì chỉ 3 lần để làm cho điểm chuẩn đáng tin cậy hơn.
bpo-28240: timeit autorange hiện sử dụng vòng lặp đơn nếu điểm chuẩn mất ít hơn 10 giây, thay vì 10 lần lặp. "python3 -m timeit -s 'import time' 'time.sleep(1)'" hiện mất 4 giây thay vì 40 giây.
Distutils.sdist hiện tìm kiếm các tệp README và setup.py có phân biệt chữ hoa chữ thường. Hành vi này khớp với hành vi được tìm thấy trong Setuptools 6.0 trở lên. Xem setuptools 100 để biết lý do.
bpo-24452: Tạo trình duyệt web hỗ trợ Chrome trên Mac OS X. Bản vá của Ned Batchelder.
bpo-20766: Sửa các tài liệu tham khảo bị rò rỉ bởi pdb trong quá trình xử lý trình xử lý SIGINT.
bpo-27998: Đã sửa lỗi hỗ trợ đường dẫn byte trong os.scandir() trên Windows. Bản vá của Eryk Sun.
bpo-28317: Trình dịch ngược hiện giải mã đối số FORMAT_VALUE.
bpo-28380: unittest.mock Các hàm autospec mô phỏng giờ đây đã hỗ trợ đúng cách cho khẳng định_gọi, khẳng định_not_gọi và khẳng định_gọi_once.
bpo-28229: mô-đun lzma hiện hỗ trợ pathlib.
bpo-28321: Đã sửa lỗi viết các ký tự không phải BMP với định dạng nhị phân trong plistlib.
bpo-28225: mô-đun bz2 hiện hỗ trợ pathlib. Bản vá đầu tiên của Ethan Furman.
bpo-28227: gzip hiện hỗ trợ pathlib. Bản vá của Ethan Furman.
bpo-28332: Việc cắt ngắn im lặng không được dùng nữa trong socket.htons và socket.ntohs. Bản vá gốc của Oren Milman.
bpo-27358: Tối ưu hóa việc hợp nhất các đối số từ khóa var và thông báo lỗi được cải thiện khi chuyển đối số không ánh xạ dưới dạng đối số từ khóa var.
bpo-28257: Thông báo lỗi được cải thiện khi truyền một đối số không thể lặp lại dưới dạng đối số vị trí var. Đã thêm mã op BUILD_TUPLE_UNPACK_WITH_CALL.
bpo-28322: Đã khắc phục sự cố có thể xảy ra khi giải nén các đối tượng itertools khỏi dữ liệu dưa không chính xác. Dựa trên bản vá của John Leitch.
bpo-28228: imghdr hiện hỗ trợ pathlib.
bpo-28226: biên dịch hiện hỗ trợ pathlib.
bpo-28314: Sửa lỗi khai báo hàm (cờ C) cho phương thức getiterator() của xml.etree.ElementTree.Element.
bpo-28148: Ngừng sử dụng localtime() và gmtime() trong mô-đun thời gian. Đã giới thiệu nền tảng độc lập _PyTime_localtime API tương tự như POSIX localtime_r nhưng có sẵn trên tất cả các nền tảng. Bản vá của Ed Schouten.
bpo-28253: Đã sửa lỗi chức năng lịch cho các tháng cực đoan: 0001-01 và 9999-12. Các phương thức itermonthdays() và itermonthdays2() được triển khai lại để không gọi itermonthdates(), điều này có thể khiến datetime.date thiếu/tràn.
bpo-28275: Đã sửa lỗi khả năng sử dụng sau khi rảnh trong các phương thức decompress() của các lớp LZMADecompressor và BZ2Decompressor. Bản vá gốc của John Leitch.
bpo-27897: Đã khắc phục sự cố có thể xảy ra trong sqlite3.Connection.create_collation() nếu chuyển đối tượng giống chuỗi không hợp lệ làm tên. Bản vá của Xiang Zhang.
bpo-18844: Random.choices() hiện có k làm đối số chỉ từ khóa để cải thiện khả năng đọc của các trường hợp phổ biến và phù hợp với chữ ký được sử dụng trong các ngôn ngữ khác.
bpo-18893: Sửa lỗi xử lý ngoại lệ không hợp lệ trong Lib/ctypes/macholib/dyld.py. Bản vá của Madison May.
bpo-27611: Đã sửa lỗi hỗ trợ cửa sổ gốc mặc định trong mô-đun tkinter.tix. Đã thêm tham số chính trong hàm tạo DisplayStyle.
bpo-27348: Trong mô-đun truy nguyên, khôi phục định dạng của các thông báo ngoại lệ như "Ngoại lệ: Không có". Điều này khắc phục hồi quy được giới thiệu trong 3.5a2.
bpo-25651: Cho phép sử dụng giá trị sai cho tham số msg của subTest().
bpo-27778: Khắc phục rò rỉ bộ nhớ trong os.getrandom() khi getrandom() bị gián đoạn bởi tín hiệu và trình xử lý tín hiệu đưa ra ngoại lệ Python.
bpo-28200: Sửa lỗi rò rỉ bộ nhớ trên Windows trong module os (sửa hàm path_converter()).
bpo-25400: RobotFileParser hiện trả về chính xác các giá trị mặc định cho crawl_delay và request_rate. Bản vá đầu tiên của Peter Wirtz.
bpo-27932: Ngăn rò rỉ bộ nhớ trong win32_ver().
Sửa lỗi UnboundLocalError trong socket._sendfile_use_sendfile.
bpo-28075: Kiểm tra ERROR_ACCESS_DENIED trong quá trình triển khai os.stat() của Windows. Bản vá của Eryk Sun.
bpo-22493: Thông báo cảnh báo được phát ra bằng cách sử dụng cờ nội tuyến ở giữa biểu thức chính quy hiện chứa mẫu biểu thức chính quy (cắt ngắn). Bản vá của Tim Graham.
bpo-25270: Ngăn codecs.escape_encode() tăng SystemError khi một chuỗi byte trống được truyền.
bpo-28181: Nhận phản trọng lực trên HTTPS. Bản vá của Kaartic Sivaraam.
bpo-25895: Kích hoạt lược đồ WebSocket URL trong urllib.parse.urljoin. Bản vá của Gergely Imreh và Markus Holtermann.
bpo-28114: Khắc phục sự cố trong phân tích cú pháp_envlist() khi env chứa chuỗi byte. Bản vá của Eryk Sun.
bpo-27599: Đã sửa lỗi tràn bộ đệm trong binascii.b2a_qp() và binascii.a2b_qp().
bpo-27906: Khắc phục tình trạng cạn kiệt ổ cắm khi lưu lượng truy cập TCP cao. Bản vá của Kevin Conway.
bpo-28174: Xử lý khi SO_REUSEPORT không được hỗ trợ đúng cách. Bản vá của Seth Michael Larson.
bpo-26654: Kiểm tra functools.partial trong asyncio.Handle.__repr__. Bản vá của Iceboy.
bpo-26909: Sửa lỗi IO chậm trong asyncio. Bản vá của INADA Naoki.
bpo-28176: Khắc phục cuộc đua gọi lại trong asyncio.SelectorLoop.sock_connect.
bpo-27759: Sửa lỗi bộ chọn giữ lại các bộ mô tả tệp không hợp lệ. Bản vá của Mark Williams.
bpo-28325: Xóa mô-đun MacOS 9 macurl2path cũ kỹ và các thử nghiệm của nó.
bpo-28368: Từ chối quá trình giám sát nếu trình giám sát trẻ em không có vòng lặp kèm theo. Bản vá của Vincent Michel.
bpo-28369: Tăng RuntimeError khi FD của phương tiện được sử dụng với add_reader, add_writer, v.v.
bpo-28370: Tăng tốc asyncio.StreamReader.readchính xác. Bản vá của Коренберг Марк.
bpo-28371: Ngừng chuyển asyncio.Handles tới run_in_executor.
bpo-28372: Sửa asyncio để hỗ trợ định dạng các coroutine không phải python.
bpo-28399: Xóa ổ cắm UNIX khỏi FS trước khi liên kết. Bản vá của Коренберг Марк.
bpo-27972: Cấm các Nhiệm vụ tự chờ đợi.
bpo-24142: Đọc tệp cấu hình bị hỏng khiến configparser ở trạng thái không hợp lệ. Bản vá gốc của Florian Höch.
bpo-29581: ABCMeta.__new__ hiện chấp nhận
**kwargs, cho phép các lớp cơ sở trừu tượng sử dụng tham số từ khóa trong __init_subclass__. Bản vá của Nate Soares.bpo-25532: kiểm tra.unwrap() bây giờ sẽ chỉ cố gắng mở khóa một đối tượng sys.getrecursionlimit() lần, để bảo vệ khỏi các đối tượng tạo đối tượng mới trên mỗi lần truy cập thuộc tính.
bpo-30177: path.resolve(strict=False) không còn cắt đường dẫn sau phần tử đầu tiên không có trong hệ thống tập tin. Bản vá của Antoine Pietri.
Tài liệu¶
bpo-31294: Sửa đoạn mã không đầy đủ trong các ví dụ ZeroMQSocketListener và ZeroMQSocketHandler và điều chỉnh chúng cho phù hợp với Python 3.
bpo-21649: Thêm liên kết RFC 7525 và TLS phía máy chủ Mozilla vào tài liệu SSL.
bpo-31128: Cho phép máy chủ pydoc liên kết với tên máy chủ tùy ý.
bpo-30803: Làm rõ tài liệu về kiểm tra giá trị sự thật. Bản vá gốc của Peter Thomassen.
bpo-30176: Thêm các hằng số liên quan đến thuộc tính bị thiếu trong tài liệu về lời nguyền.
bpo-30052: mục tiêu liên kết cho
bytes()vàbytearray()hiện là định nghĩa loại tương ứng của chúng, thay vì các mục nhập hàm dựng sẵn tương ứng. Sử dụng bytes và bytearray để tham khảo cái sau. Để đảm bảo điều này và các bản cập nhật tham chiếu chéo trong tương lai được áp dụng tự động, các bản dựng tài liệu hàng ngày hiện vô hiệu hóa các tính năng bộ nhớ đệm đầu ra mặc định trong Sphinx.bpo-26985: Thêm thông tin còn thiếu của đối tượng mã trong tài liệu kiểm tra.
bpo-19824: Cải thiện tài liệu và liên kết đến các chuỗi mẫu bằng cách nhấn mạnh tiện ích của chúng đối với việc quốc tế hóa và bằng cách làm rõ một số hạn chế sử dụng. (Xem thêm: bpo-20314, bpo-12518)
bpo-28929: Liên kết tài liệu với tệp nguồn trên GitHub.
bpo-25008: Tài liệu smtpd.py không còn được dùng nữa và thêm con trỏ tới aiosmtpd, một giải pháp thay thế dựa trên asyncio của bên thứ ba.
bpo-26355: Thêm liên kết tiêu đề chuẩn trên mỗi trang vào phiên bản chính tương ứng của tài liệu. Bản vá của Matthias Bussonnier.
bpo-29349: Sửa cú pháp Python 2 trong mã để xây dựng tài liệu.
bpo-23722: Tham chiếu mô hình dữ liệu và phần chuyển trong hướng dẫn Có gì mới 3.6 hiện bao gồm cách xử lý
__classcell__bổ sung cần thiết cho siêu dữ liệu tùy chỉnh để hỗ trợ đầy đủ PEP 487 vàsuper()không đối số.bpo-28513: Giao diện dòng lệnh được ghi lại của zipfile.
Kiểm tra¶
bpo-29639: test.support.HOST hiện là "localhost", hằng số HOSTv4 mới đã được thêm cho nhu cầu
127.0.0.1của bạn, tương tự như hằng số HOSTv6 hiện có.bpo-31320: Tắt dấu vết trong test_ssl
bpo-31346: Ưu tiên giao thức PROTOCOL_TLS_CLIENT và PROTOCOL_TLS_SERVER cho SSLContext.
bpo-25674: Xóa bài kiểm tra ssl sha256.tbs-internet.com
bpo-30715: Địa chỉ thay đổi lệnh gọi lại ALPN cho OpenSSL 1.1.0f. Phiên bản mới nhất hoạt động giống như OpenSSL 1.0.2 và không còn hủy bỏ quá trình bắt tay nữa.
bpo-30822: regrtest: Loại trừ tzdata khỏi regrtest --all. Khi chạy bộ thử nghiệm bằng cách sử dụng --use=all / -u all, hãy loại trừ tzdata vì nó làm cho test_datetime quá chậm (15-20 phút trên một số buildbot) và sau đó sẽ hết thời gian trên một số buildbot. Sửa lỗi trình phân tích cú pháp dòng lệnh regrtest để cho phép truyền -u extralargefile để chạy test_zipfile64.
bpo-30695: Thêm các hàm
set_nomemory(start, stop)vàremove_mem_hooks()vào mô-đun_testcapi.bpo-30357: test_thread: setUp() hiện sử dụng support.threading_setup() và support.threading_cleanup() để đợi cho đến khi các luồng hoàn thành nhằm tránh tác dụng phụ ngẫu nhiên trong các lần kiểm tra sau. Bản vá đầu tiên được viết bởi Grzegorz Grzywacz.
bpo-30197: Các hàm nâng cao swap_attr() và swap_item() trong mô-đun test.support. Bây giờ chúng hoạt động khi xóa thuộc tính hoặc mục được thay thế bên trong câu lệnh with. Giá trị cũ của thuộc tính hoặc mục (hoặc Không có nếu nó không tồn tại) bây giờ sẽ được gán cho mục tiêu của mệnh đề "as", nếu có.
bpo-24932: Sử dụng phân tích cú pháp dòng lệnh thích hợp trong _testembed
bpo-28950: Không cho phép kết hợp -j0 với -T/-l trong các đối số dòng lệnh đáng tiếc nhất.
bpo-28683: Khắc phục các kiểm tra liên kết() ổ cắm unix và tăng PermissionError trên Android cho người dùng không phải root.
bpo-26936: Khắc phục lỗi test_socket trên Android - getservbyname(), getservbyport() và getaddrinfo() bị hỏng ở một số cấp độ API của Android.
bpo-28666: Bây giờ test.support.rmtree có thể xóa các thư mục không thể ghi hoặc không thể đọc được.
bpo-23839: Nhiều bộ nhớ đệm hiện đã bị xóa trước khi chạy mọi tệp kiểm tra.
bpo-26944: Sửa test_posix cho Android trong đó 'id -G' hoàn toàn sai hoặc thiếu gid hiệu quả.
bpo-28409: regrtest: sửa trình phân tích cú pháp các đối số dòng lệnh.
bpo-28217: Thêm mô-đun _testconsole để kiểm tra đầu vào của bảng điều khiển.
bpo-26939: Thêm hàm support.setswitchinterval() để sửa lỗi test_functools bị treo trên trình giả lập qemu Android armv7.
xây dựng¶
bpo-31354: Cho phép sử dụng
--with-ltotrên tất cả các bản dựng, không chỉmake profile-opt.bpo-31370: Xóa hỗ trợ xây dựng --không có chủ đề. Tùy chọn này không thực sự hữu ích nữa trong thế kỷ 21. Việc loại bỏ nhiều đường dẫn có điều kiện cho phép chúng tôi đơn giản hóa cơ sở mã, bao gồm cả mã nội bộ cấp thấp khó duy trì.
bpo-31341: Theo PEP 11, hỗ trợ cho hệ điều hành IRIX đã bị xóa.
bpo-30854: Sửa lỗi biên dịch khi biên dịch --không có chủ đề. Bản vá của Masayuki Yamamoto.
bpo-30687: Định vị msbuild.exe trên Windows khi xây dựng thay vì vcvarsall.bat
bpo-20210: Hỗ trợ điểm đánh dấu disabled trong tệp Cài đặt. Các mô-đun mở rộng được liệt kê sau điểm đánh dấu này hoàn toàn không được xây dựng bởi Makefile cũng như setup.py.
bpo-29941: Thêm cờ cấu hình
--with-assertionsđể bật kiểm tra Cassert()một cách rõ ràng. Mặc định là tắt.--with-pydebugngụ ý--with-assertions.bpo-28787: Sửa các bản dựng Python ngoài cây khi được định cấu hình bằng
--with--dtrace.bpo-29243: Ngăn chặn việc xây dựng lại Python không cần thiết trong
make test,make installvà một số mục tiêu khác khi được định cấu hình với--enable-optimizations.bpo-23404: Không tạo lại các tệp đã tạo dựa trên thời gian sửa đổi tệp nữa: hành động hiện rõ ràng. Thay thế
make touchbằngmake regen-all.bpo-29643: Sửa lỗi
--enable-optimizationkhông hoạt động.bpo-27593: sys.version và các hàm mô-đun nền tảng python_build(), python_branch() và python_revision() hiện sử dụng thông tin git thay vì hg khi xây dựng từ kho lưu trữ.
bpo-29572: Cập nhật trình cài đặt Windows build và OS X để sử dụng OpenSSL 1.0.2k.
bpo-27659: Cấm khai báo hàm C ngầm định: sử dụng
-Werror=implicit-function-declarationkhi có thể (GCC và Clang, nhưng nó phụ thuộc vào phiên bản trình biên dịch). Bản vá được viết bởi Chí Hsuan Yen.bpo-29384: Xóa tập lệnh trợ giúp Be OS cũ.
bpo-26851: Đặt cờ liên kết và biên dịch Android.
bpo-28768: Sửa lỗi khai báo ngầm của hàm _setmode. Bản vá của Masayuki Yamamoto
bpo-29080: Loại bỏ sự phụ thuộc cứng vào hg.exe khỏi PCBuild/build.bat
bpo-23903: Đã thêm tên bị thiếu vào PC/python3.def.
bpo-28762: lockf() khả dụng trên Android API cấp 24, nhưng macro F_LOCK không được xác định trong android-ndk-r13.
bpo-28538: Sửa lỗi biên dịch xảy ra do if_nameindex() có sẵn trên Android API cấp 24, nhưng cấu trúc if_nameindex không được xác định.
bpo-20211: Không thêm thư mục cài đặt tệp tiêu đề C và thư mục cài đặt thư viện mã đối tượng vào đường dẫn tìm kiếm biên dịch chéo. Bản vá gốc của Thomas Petazzoni.
bpo-28849: Không xác định sys.implementation._multiarch trên Android.
bpo-10656: Sửa lỗi tòa nhà không có cây trên AIX. Bản vá của Tristan Carel và Michael Haubenwallner.
bpo-26359: Đổi tên --with-optimiations thành --enable-optimizations.
bpo-28444: Sửa các mô-đun tiện ích mở rộng bị thiếu khi biên dịch chéo.
bpo-28208: Cập nhật trình cài đặt Windows build và OS X để sử dụng SQLite 3.14.2.
bpo-28248: Cập nhật trình cài đặt Windows build và OS X để sử dụng OpenSSL 1.0.2j.
bpo-21124: Sửa lỗi xây dựng mô-đun _struct trên Cygwin bằng cách chuyển
NULLthay vì&PyType_Typetới PyVarObject_HEAD_INIT. Bản vá của Masayuki Yamamoto.bpo-13756: Sửa các mô-đun mở rộng tòa nhà trên Cygwin. Bản vá của Roumen Petrov, dựa trên bản vá gốc của Jason Tishler.
bpo-21085: Thêm kiểm tra cấu hình cho siginfo_t.si_band mà Cygwin không cung cấp. Bản vá của Masayuki Yamamoto với sự đánh giá và phản hồi của Erik Bray.
bpo-28258: Đã sửa lỗi bản dựng với ngôn ngữ tiếng Estonia (mục tiêu python-config và distclean trong Makefile). Bản vá của Arfrever Frehtes Taifersar Arahesis.
bpo-26661: setup.py hiện phát hiện libffi của hệ thống bằng trình bao bọc multiarch.
bpo-27979: Bản sao đầy đủ của libffi không còn được đóng gói để sử dụng khi xây dựng _ctypes trên nền tảng không phải OSX UNIX. Hiện cần có bản sao libffi đã cài đặt khi xây dựng _ctypes trên các nền tảng như vậy.
bpo-15819: Loại bỏ tùy chọn thư mục tìm kiếm bao gồm dư thừa để xây dựng bên ngoài cây nguồn.
bpo-28676: Ngăn chặn cảnh báo khai báo 'getentropy' bị thiếu trên macOS. Bản vá của Gareth Rees.
cửa sổ¶
bpo-31392: Cập nhật bản dựng Windows để sử dụng OpenSSL 1.1.0f
bpo-30389: Thêm tính năng phát hiện Visual Studio 2017 vào các bản phân phối trên Windows.
bpo-31358: zlib không còn được gói trong nguồn CPython nữa, thay vào đó nó được tải xuống theo yêu cầu giống như bz2, lzma, OpenSSL, Tcl/Tk và SQLite.
bpo-31340: Thay đổi tòa nhà với MSVC v141 (đi kèm với Visual Studio 2017)
bpo-30581: os.cpu_count() hiện trả về số lượng bộ xử lý chính xác trên Windows khi số lượng bộ xử lý logic lớn hơn 64.
bpo-30916: Xây dựng sẵn OpenSSL, Tcl và Tk và bao gồm các tệp nhị phân trong bản dựng.
bpo-30731: Thêm xmlns bị thiếu vào python.manifest để nó khớp với lược đồ.
bpo-30291: Cho phép yêu cầu trình thông dịch 64-bit từ py.exe sử dụng hậu tố -64. Đóng góp bởi Steve (Tiện ích) Barnes.
bpo-30362: Thêm tùy chọn danh sách (-0, -0p) vào trình khởi chạy py.exe. Đóng góp bởi Steve Barnes.
bpo-23451: Khắc phục cảnh báo ngừng sử dụng ổ cắm trong socketmodule.c. Bản vá của Segev Finer.
bpo-30450: Quá trình xây dựng trên Windows không còn phụ thuộc vào Subversion nữa, thay vào đó lấy mã bên ngoài từ GitHub thông qua tập lệnh Python. Nếu không tìm thấy Python 3.6 trên hệ thống (thông qua
py -3.6), NuGet được sử dụng để tải xuống bản sao Python 32-bit.bpo-29579: Xóa readme.txt khỏi trình cài đặt.
bpo-25778: winreg không cắt ngắn chuỗi chính xác (Bản vá của Eryk Sun)
bpo-28896: Ngừng sử dụng WindowsRegistryFinder và tắt nó theo mặc định
bpo-28522: Sửa lỗi phân bổ lại bộ đệm bị xử lý sai trong getpathp.c
bpo-28402: Thêm tệp danh mục đã ký cho stdlib trên Windows.
bpo-28333: Bật Unicode cho lời nhắc ps1/ps2 và input(). (Bản vá của Eryk Sun)
bpo-28251: Cải tiến hướng dẫn trợ giúp trên Windows.
bpo-28110: launcher.msi có các mã sản phẩm khác nhau giữa 32-bit và 64-bit
bpo-28161: Mở CON để truy cập ghi không thành công
bpo-28162: WindowsConsoleIO readall() không thành công nếu dòng đầu tiên bắt đầu bằng Ctrl+Z
bpo-28163: WindowsConsoleIO fileno() chuyển cờ sai tới _open_osfhandle
bpo-28164: _PyIO_get_console_type không thành công đối với nhiều đường dẫn khác nhau
bpo-28137: Đổi tên tệp đường dẫn Windows thành ._pth
bpo-28138: Tệp ._pth của Windows sẽ cho phép nhập trang web
IDLE¶
bpo-31493: bối cảnh mã IDLE - sửa lỗi cập nhật mã và bộ hẹn giờ cập nhật phông chữ. Việc hủy bộ hẹn giờ sẽ ngăn thông báo cảnh báo khi test_idle hoàn tất.
bpo-31488: IDLE - Cập nhật các tùy chọn không khóa trong các lớp mở rộng trước đây. Khi áp dụng các thay đổi trong hộp thoại cấu hình, hãy gọi .reload cho từng lớp tính năng. Thay đổi ParenMatch để các tùy chọn cập nhật ảnh hưởng đến các phiên bản hiện có được đính kèm với cửa sổ soạn thảo hiện có.
bpo-31477: IDLE - Cải thiện mục nhập rstrip trong tài liệu. Loại bỏ các khoảng trắng ở cuối nhiều hơn các khoảng trống. Các chuỗi ký tự nhiều dòng không bị bỏ qua.
bpo-31480: IDLE - thực hiện các bài kiểm tra vượt qua với tiện ích mở rộng zzdummy bị tắt theo mặc định.
bpo-31421: Ghi lại cách IDLE chạy các chương trình tkinter. IDLE gọi cập nhật tcl/tk ở chế độ nền để giúp việc tương tác và thử nghiệm trực tiếp với các ứng dụng tkinter dễ dàng hơn nhiều.
bpo-31414: IDLE -- sửa lỗi kiểm tra hộp nhập tk bằng cách xóa trước. Việc thêm vào một mục int không giống như xóa và chèn vì int('') sẽ thất bại.
bpo-31051: Sắp xếp lại hộp thoại cấu hình IDLE GenPage vào các phần Cửa sổ, Trình chỉnh sửa và Trợ giúp.
bpo-30617: IDLE - Thêm tài liệu và bài kiểm tra để vượt qua lớp con của trình soạn thảo. Di chuyển một số dữ liệu và chức năng từ lớp sang cấp mô-đun. Bản vá của Cheryl Sabella.
bpo-31287: IDLE - Không sửa đổi tkinter.message trong test_configdialog.
bpo-27099: Chuyển đổi các 'tiện ích mở rộng' tích hợp của IDLE thành các tính năng thông thường. Khoảng 10 tính năng IDLE đã được triển khai dưới dạng tiện ích mở rộng được cho là tùy chọn. Hành vi khác nhau của chúng có thể gây nhầm lẫn hoặc tệ hơn cho người dùng và không tốt cho việc bảo trì. Do đó việc chuyển đổi. Sự khác biệt chính đối với người dùng là các liên kết khóa có thể định cấu hình của người dùng cho các tính năng dựng sẵn hiện được xử lý thống nhất. Bây giờ, việc chỉnh sửa liên kết trong bộ khóa chỉ ảnh hưởng đến giá trị của nó trong bộ khóa. Tất cả các liên kết được xác định cùng nhau trong các bộ khóa mặc định dành riêng cho hệ thống trong config-extensions.def. Tất cả các bộ khóa tùy chỉnh được lưu toàn bộ trong config-extension.cfg. Tất cả đều có hiệu lực ngay sau khi nhấp vào Áp dụng hoặc Ok. Các sự kiện bị ảnh hưởng là '<<force-open-completions>>', '<<expand-word>>', '<<force-open-calltip>>', '<<flash-paren>>', '<<format-paragraph>>', '<<run-module>>', '<<check-module>>' và '<<zoom-height>>'. Mọi tùy chỉnh (toàn cầu) được thực hiện trước phiên bản 3.6.3 sẽ không ảnh hưởng đến tùy chỉnh dành riêng cho bộ khóa của chúng sau phiên bản 3.6.3. và ngược lại. Bản vá đầu tiên của Charles Wohlganger.
bpo-31206: IDLE: Lớp Factor HighPage(Frame) từ ConfigDialog. Bản vá của Cheryl Sabella.
bpo-31001: Thêm bài kiểm tra cho tab đánh dấu configdialog. Bản vá của Cheryl Sabella.
bpo-31205: IDLE: Lớp Factor KeysPage(Frame) từ ConfigDialog. Các bài kiểm tra sửa đổi một chút tiếp tục vượt qua. Bản vá của Cheryl Sabella.
bpo-31130: IDLE -- chặn rò rỉ trong test_configdialog. Bản vá đầu tiên của Victor Stinner.
bpo-31002: Thêm bài kiểm tra cho tab phím configdialog. Bản vá của Cheryl Sabella.
bpo-19903: IDLE: Mẹo gọi sử dụng
inspect.signaturethay vìinspect.getfullargspec. Điều này cải thiện mẹo gọi cho nội dung được chuyển đổi để sử dụng Phòng khám đối số. Bản vá của Louie Lu.bpo-31083: IDLE - Thêm đường viền của lớp TabPage trong configdialog. Cập nhật các lớp hiện có để phù hợp với đề cương. Bản vá đầu tiên của Cheryl Sabella.
bpo-31050: Lớp Factor GenPage(Frame) từ ConfigDialog. Các bài kiểm tra sửa đổi một chút tiếp tục vượt qua. Bản vá của Cheryl Sabella.
bpo-31004: IDLE - Lớp Factor FontPage(Frame) từ ConfigDialog. Các bài kiểm tra sửa đổi một chút tiếp tục vượt qua. Sửa chữa các bài kiểm tra chung. Bản vá chủ yếu của Cheryl Sabella.
bpo-30781: IDLE - Sử dụng tiện ích ttk trong ConfigDialog. Các bản vá của Terry Jan Reedy và Cheryl Sabella.
bpo-31060: IDLE - Hoàn tất việc sắp xếp lại các phương pháp của các phương pháp Nhóm ConfigDialog liên quan đến từng tab và các nút sẽ hỗ trợ viết bài kiểm tra và cải thiện các tab, đồng thời sẽ cho phép chia nhóm thành các lớp.
bpo-30853: IDLE -- Đưa lớp VarTrace ra khỏi ConfigDialog. Trình theo dõi phiên bản quản lý các cặp bao gồm biến tk và hàm gọi lại. Khi tính năng theo dõi được bật, việc đặt biến sẽ gọi hàm. Phạm vi kiểm tra của lớp mới là 100%.
bpo-31003: IDLE: Thêm nhiều bài kiểm tra cho tab General.
bpo-30993: IDLE - Cải thiện trang phông chữ configdialog và kiểm tra. Trong hộp thoại cấu hình: Ghi lại các đường dẫn nhân quả trong chuỗi tài liệu create_font_tab. Đơn giản hóa một số tên thuộc tính. Di chuyển các lệnh gọi set_samples sang var_changed_font (ý tưởng từ Cheryl Sabella). Di chuyển các chức năng liên quan đến các vị trí sau chức năng tạo widget. Trong test_configdialog: Sửa test_font_set để không phụ thuộc vào thứ tự. Sửa lỗi đổi tên test_indent_scale để nó kiểm tra tiện ích. Điều chỉnh các bài kiểm tra về chuyển động của lệnh gọi set_samples. Thêm các bài kiểm tra cho các chức năng tải. Đặt tất cả các bài kiểm tra phông chữ vào một lớp và các bài kiểm tra thụt lề tab vào một lớp khác. Ngoại trừ hai dòng, các bài kiểm tra này bao gồm hoàn toàn các chức năng liên quan.
bpo-30981: IDLE -- Thêm nhiều thử nghiệm trang phông chữ configdialog hơn.
bpo-28523: IDLE: thay thế 'màu' bằng 'màu' trong configdialog.
bpo-30917: Thêm bài kiểm tra cho idlib.config.IdleConf. Tăng phạm vi bảo hiểm từ 46% lên 96%. Bản vá của Louie Lu.
bpo-30934: Chi tiết về phạm vi tài liệu cho các bài kiểm tra Idlelib. Thêm phần vào Idlelib/idle-test/README.txt. Bao gồm kiểm tra xem các nhánh có được lấy theo cả hai cách không. Loại trừ mã dành riêng cho IDLE không chạy trong quá trình kiểm tra đơn vị.
bpo-30913: IDLE: Document ConfigDialog tk Các biến, phương thức và tiện ích trong chuỗi tài liệu Điều này sẽ tạo điều kiện thuận lợi cho việc cải thiện hộp thoại và chia tách lớp. Bản vá gốc của Cheryl Sabella.
bpo-30899: IDLE: Thêm bài kiểm tra cho các lớp con ConfigParser trong config. Bản vá của Louie Lu.
bpo-30881: IDLE: Thêm tài liệu vào browser.py. Bản vá của Cheryl Sabella.
bpo-30851: IDLE: Loại bỏ các biến không sử dụng trong configdialog. Một là bản sao, một là được đặt nhưng người dùng không thể thay đổi. Bản vá của Cheryl Sabella.
bpo-30870: IDLE: Trong hộp thoại Cài đặt, chọn phông chữ bằng phím Lên, Xuống cũng như chuột. Bản vá đầu tiên của Louie Lu.
bpo-8231: IDLE: chỉ gọi config.IdleConf.GetUserCfgDir một lần.
bpo-30779: IDLE: Factor ConfigThay đổi lớp từ configdialog, đưa vào config; Bài kiểm tra. * Trong cấu hình, đặt mã kiểm tra kết xuất vào một hàm; chạy nó và chạy thử trong 'if __name__ == '__main__'. * Thêm lớp config.ConfigChanges dựa trên Changes_class_v4.py về vấn đề bpo. * Thêm lớp test_config.ChangesTest, một phần sử dụng configdialog_tests_v1.py. * Sửa lại hộp thoại cấu hình để sử dụng Thay đổi cấu hình; xem tin nhắn theo dõi297804. * Sửa đổi hộp thoại test_config để phù hợp với những thay đổi trong hộp thoại cấu hình. * Loại bỏ các chức năng hộp thoại cấu hình không được sử dụng hoặc đã chuyển sang ConfigChanges. Cheryl Sabella đã đóng góp các phần của bản vá.
bpo-30777: IDLE: configdialog - Thêm tài liệu và sửa nhận xét. Bản vá của Cheryl Sabella.
bpo-30495: IDLE: Cải thiện chế độ xem văn bản bằng chuỗi tài liệu, tên PEP8 và nhiều bài kiểm tra khác. Bản vá của Cheryl Sabella.
bpo-30723: IDLE: Thực hiện một số cải tiến đối với parenmatch. Thêm kiểu 'parens' để làm nổi bật cả phần mở và phần gần hơn. Đặt kiểu 'mặc định', không phải mặc định, thành từ đồng nghĩa với 'dụng cụ mở'. Làm cho thời gian trễ hoạt động giống nhau với tất cả các kiểu. Thêm trợ giúp cho tab tiện ích mở rộng hộp thoại cấu hình, bao gồm trợ giúp về parenmatch. Thêm các bài kiểm tra mới. Bản vá gốc của Charles Wohlganger.
bpo-30674: IDLE: thêm tài liệu vào mô-đun grep. Bản vá của Cheryl Sabella
bpo-21519: Hộp thoại nhập khóa tùy chỉnh cơ bản của IDLE hiện phát hiện các bản sao chính xác. Bản vá gốc của Saimadhav Heblikar.
bpo-29910: IDLE không còn xóa một ký tự sau khi nhận xét một khu vực bằng phím tắt. Thêm
return 'break'cho vấn đề này và các xung đột tiềm ẩn khác giữa IDLE và các liên kết khóa mặc định.bpo-30728: Xem lại và thay đổi tên hộp thoại idlib.config. Phương thức viết thường và tên thuộc tính. Thay thế 'màu' bằng 'màu', mở rộng những tên quá khó hiểu, xóa dấu gạch dưới không cần thiết. Thay thế
import *bằng các mục nhập cụ thể. Các bản vá của Cheryl Sabella.bpo-6739: IDLE: Xác minh chuỗi khóa do người dùng nhập bằng cách cố gắng liên kết chúng với tk. Thêm bài kiểm tra cho cả 3 chức năng xác nhận. Bản vá gốc của G Polo. Các thử nghiệm được thêm vào bởi Cheryl Sabella.
bpo-15786: Khắc phục một số sự cố với hộp tự động hoàn thành của IDLE. Bây giờ, thao tác sau sẽ hoạt động: nhấp vào các mục trong hộp lựa chọn; sử dụng thanh cuộn; chọn một mục bằng cách nhấn Return. Hiện tượng treo trên MacOSX sẽ không còn xảy ra nữa. Bản vá của Louie Lu.
bpo-25514: Thêm tiểu mục tài liệu về lỗi IDLE không khởi động được. Thông báo không có kết nối bật lên sẽ hướng người dùng đến phần này.
bpo-30642: Sửa lỗi rò rỉ tham chiếu trong các bài kiểm tra IDLE. Các bản vá của Louie Lu và Terry Jan Reedy.
bpo-30495: Thêm tài liệu cho textview.py và sử dụng tên PEP8. Các bản vá của Cheryl Sabella và Terry Jan Reedy.
bpo-30290: Trợ giúp về: sử dụng tên pep8 và thêm bài kiểm tra. Tăng độ bao phủ lên 100%. Các bản vá của Louie Lu, Cheryl Sabella và Terry Jan Reedy.
bpo-30303: Thêm tùy chọn _utest vào chế độ xem văn bản; thêm các bài kiểm tra mới. Tăng độ bao phủ lên 100%. Các bản vá của Louie Lu và Terry Jan Reedy.
bpo-29071: IDLE màu tiền tố chuỗi f (nhưng không phải tiền tố của bạn không hợp lệ).
bpo-28572: Thêm 10% vào phạm vi bao phủ của hộp thoại test_config của IDLE. Cập nhật và bổ sung mô tả của hệ thống cấu hình.
Công cụ/Bản trình diễn¶
bpo-30983: các lệnh tích hợp gdb (py-bt, v.v.) hiện cũng hoạt động trên các bản dựng được chia sẻ được tối ưu hóa. PEP 523 đã giới thiệu _PyEval_EvalFrameDefault nội tuyến PyEval_EvalFrameEx trên các bản dựng chia sẻ không gỡ lỗi. Điều này đã phá vỡ khả năng sử dụng py-bt, py-up và một số tích hợp gdb dành riêng cho Python khác. Sự cố được khắc phục bằng cách chỉ tìm kiếm các khung _PyEval_EvalFrameDefault trong python-gdb.py. Bản vá gốc của Bruno "Polaco" Penteado.
bpo-29748: Đã thêm trình chuyển đổi chỉ mục lát cắt trong Argument Clinic.
bpo-24037: Argument Clinic hiện sử dụng bộ chuyển đổi
bool(accept={int})thay vìintcho các boolean ngữ nghĩa. Điều này tránh lặp lại giá trị mặc định cho Python và C và sẽ giúp chuyển đổi sangbooltrong tương lai.bpo-29367: python-gdb.py hiện cũng hỗ trợ các đối tượng
method-wrapper(wrapperobject).bpo-28023: Sửa lỗi python-gdb.py không hỗ trợ triển khai lệnh mới.
bpo-15369: Điểm chuẩn vi mô pybench và pystone đã bị xóa khỏi Công cụ. Vui lòng sử dụng bộ điểm chuẩn Python mới https://github.com/python/pyperformance đáng tin cậy hơn và bao gồm phiên bản di động của pybench hoạt động trên Python 2 và Python 3.
bpo-28102: Mô-đun zipfile CLI hiện in mức sử dụng sang stderr. Bản vá của Stephen J. Turnbull.
C API¶
bpo-31338: Đã thêm macro
Py_UNREACHABLE()cho các đường dẫn mã dự kiến sẽ không bao giờ đạt được. Lệnh này và một số macro hữu ích khác hiện đã được ghi lại trong hướng dẫn sử dụng C API.bpo-30832: Xóa việc triển khai riêng cho bộ nhớ cục bộ theo luồng. CPython đã cung cấp cách triển khai riêng cho bộ lưu trữ cục bộ theo luồng (TLS) trên Python/thread.c, nó được sử dụng trong trường hợp nền tảng không cung cấp TLS gốc. Tuy nhiên, hiện tại tất cả các nền tảng được hỗ trợ (Windows và pthread) đã cung cấp TLS gốc và xác định macro Py_HAVE_NATIVE_TLS vô điều kiện trong mọi trường hợp.
bpo-30708: PyUnicode_AsWideCharString() hiện tăng ValueError nếu đối số thứ hai là NULL và chuỗi wchar_t* chứa các ký tự null.
bpo-16500: Ngừng sử dụng PyOS_AfterFork() và thêm PyOS_BeforeFork(), PyOS_AfterFork_Parent() và PyOS_AfterFork_Child().
bpo-6532: Loại kết quả của PyThread_start_new_thread() và PyThread_get_thread_ident() và tham số id của PyThreadState_SetAsyncExc() đã thay đổi từ "dài" thành "dài không dấu".
bpo-27867: Hàm PySlice_GetIndicesEx() không được dùng nữa và được thay thế bằng macro nếu Py_LIMITED_API không được đặt hoặc đặt thành giá trị trong khoảng 0x03050400 đến 0x03060000 (không bao gồm) hoặc 0x03060100 trở lên. Đã thêm các hàm PySlice_Unpack() và PySlice_AdjustIndices().
bpo-29083: Đã sửa lỗi khai báo một số hàm API công khai. PyArg_VaParse() và PyArg_VaParseTupleAndKeywords() không khả dụng ở số lượng giới hạn API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() và Py_BuildValue() không có sẵn trong phiên bản giới hạn API < 3.3 khi PY_SSIZE_T_CLEAN được xác định.
bpo-28769: Kết quả của PyUnicode_AsUTF8AndSize() và PyUnicode_AsUTF8() hiện thuộc loại
const char *thay vìchar *.bpo-29058: Tất cả các tiện ích mở rộng API ổn định được thêm sau Python 3.2 hiện chỉ khả dụng khi Py_LIMITED_API được đặt thành giá trị PY_VERSION_HEX của phiên bản Python tối thiểu hỗ trợ API này.
bpo-28822: Các tham số chỉ mục start và end của PyUnicode_FindChar() hiện được điều chỉnh để hoạt động giống như
str[start:end].bpo-28808: PyUnicode_CompareWithASCIIString() hiện không bao giờ đưa ra ngoại lệ.
bpo-28761: Tên trường và tài liệu của các cấu trúc PyMemberDef, PyGetSetDef, PyStructSequence_Field, PyStructSequence_Desc và trình bao bọc hiện thuộc loại
const char *thay vìchar *.bpo-28748: Biến riêng _Py_PackageContext hiện thuộc loại
const char *thay vìchar *.bpo-19569: Cảnh báo trình biên dịch hiện được phát ra nếu sử dụng hầu hết các hàm không được dùng nữa.
bpo-28426: Các hàm không được ghi lại không được dùng nữa PyUnicode_AsEncodedObject(), PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() và PyUnicode_AsEncodedUnicode().
Bản cuối cùng của Python 3.6.6¶
Release date: 2018-06-27
Không có thay đổi mới nào trong phiên bản 3.6.6.
Ứng viên phát hành Python 3.6.6 1¶
Release date: 2018-06-11
Cốt lõi và nội dung¶
bpo-33786: Sửa các trình tạo không đồng bộ để xử lý GeneratorExit trong athrow() một cách chính xác
bpo-30654: Đã sửa lỗi đặt lại trình xử lý SIGINT thành SIG_DFL khi tắt trình thông dịch ngay cả khi đã có trình xử lý tùy chỉnh được đặt trước đó. Bản vá của Philipp Kerling.
bpo-33622: Đã sửa lỗi rò rỉ khi trình thu gom rác không thêm được đối tượng bằng phương thức
__del__hoặc được nó tham chiếu vào danh sáchgc.garbage.PyGC_Collect()bây giờ có thể được gọi khi một ngoại lệ được đặt và duy trì nó.bpo-31849: Sửa cảnh báo so sánh có chữ ký/không dấu trong pyhash.c.
bpo-33391: Sửa lỗi rò rỉ trong set_symetic_difference().
bpo-28055: Sửa các truy cập chưa được căn chỉnh trong siphash24(). Bản vá của Rolf Eike Beer.
bpo-33231: Khắc phục khả năng rò rỉ bộ nhớ trong
normalizestring().bpo-29922: Cải thiện thông báo lỗi trong 'không đồng bộ với' khi
__aenter__()hoặc__aexit__()trả về đối tượng không thể chờ đợi.bpo-33199: Sửa lỗi
ma_version_tagtrong quá trình triển khai dict chưa được khởi tạo khi sao chép từ dict chia sẻ khóa.bpo-33041: Đã sửa lỗi nhảy khi hàm chứa vòng lặp
async for.bpo-32282: Sửa lỗi ifdef không cần thiết trong phần bao gồm VersionHelpers.h trong socketmodule trên Windows.
bpo-21983: Khắc phục sự cố trong
ctypes.cast()trong trường hợp đối số kiểu là kiểu dữ liệu có cấu trúc ctypes. Bản vá của Eryk Sun và Oren Milman.
Thư viện¶
bpo-30167: Ngăn chặn ngoại lệ site.main() nếu PYTHONSTARTUP được đặt. Bản vá của Steve Weber.
bpo-33812: Datetime instance d không có tzinfo, nhưng có d.tzinfo.utcoffset(d) trả về None hiện được coi là ngây thơ theo phương thức astimezone().
bpo-30805: Tránh tình trạng chạy đua bằng tính năng ghi nhật ký gỡ lỗi
bpo-33767: Các thao tác chuỗi nối (
+) và lặp lại (*) hiện tăngTypeErrorthay vìSystemErrorkhi được thực hiện trên các đối tượngmmap.mmap. Bản vá của Zackery Spytz.bpo-32684: Sửa lỗi thu thập để tuyên truyền việc hủy bỏ chính nó ngay cả với return_Exceptions.
bpo-33674: Khắc phục tình trạng dồn đuổi trong SSLProtocol.connection_made() của asyncio.sslproto: bắt đầu bắt tay ngay lập tức thay vì sử dụng call_soon(). Trước đây, data_received() có thể được gọi trước khi quá trình bắt tay bắt đầu, khiến quá trình bắt tay bị treo hoặc không thành công.
bpo-31647: Đã sửa lỗi khi gọi write_eof() trên _SelectorSocketTransport sau khi nó đã đóng sẽ làm tăng AttributionError.
bpo-33672: Khắc phục sự cố của Task.__repr__ với các coroutine giả mạo của Cython
bpo-33469: Sửa lỗi RuntimeError sau khi đóng vòng lặp sử dụng run_in_executor
bpo-11874: Sử dụng biểu thức chính quy tốt hơn khi chia mức sử dụng thành các phần có thể gói được. Tránh các lỗi xác nhận không có thật từ các chuỗi metavar tùy chỉnh.
bpo-30877: Đã sửa lỗi trong quá trình triển khai bộ giải mã JSON bằng Python khiến bộ đệm của các chuỗi được phân tích cú pháp không bị xóa sau khi kết thúc quá trình giải mã. Dựa trên bản vá của c-fos.
bpo-33548: tempfile._candidate_tempdir_list nên xem xét các vị trí TEMP phổ biến
bpo-33542: Ngăn
uuid.get_nodesử dụng DUID thay vì MAC trên Windows. Bản vá của Zvi Effronbpo-26819: Khắc phục tình trạng đua với
ReadTransport.resume_readingtrong vòng lặp sự kiện thước đo Windows.bpo-28556: Sửa lỗi nhỏ trong mô-đun gõ: thêm chú thích vào
NamedTuple.__new__, chuyển*argsvà**kwdstrongGeneric.__new__. PR gốc của Paulius Šarka và Chad Dombrova.bpo-20087: Đã cập nhật ánh xạ bí danh với các ngôn ngữ được hỗ trợ glibc 2.27.
bpo-33422: Sửa lỗi dấu ngoặc kép ở cuối bị xóa khi tra cứu các ký tự byte/chuỗi trên pydoc. Bản vá của Andrés Delfino.
bpo-33197: Cập nhật thông báo lỗi khi xây dựng bản vá kiểm tra không hợp lệ.Bản vá thông số của Donghee Na.
bpo-33383: Đã khắc phục sự cố trong phương thức get() của đối tượng cơ sở dữ liệu
dbm.ndbmkhi nó được gọi với một đối số duy nhất.bpo-33329: Khắc phục hồi quy đa xử lý trên glibcs mới hơn
bpo-991266: Sửa lỗi trích dẫn thuộc tính
Commentcủahttp.cookies.SimpleCookie.bpo-33131: Nâng cấp phiên bản đi kèm của pip lên 10.0.1.
bpo-33308: Đã khắc phục sự cố trong mô-đun
parserkhi chuyển đổi đối tượng ST thành cây gồm các bộ dữ liệu hoặc danh sách cóline_info=Falsevàcol_info=True.bpo-33263: Sửa lỗi rò rỉ FD trong Bản vá
_SelectorSocketTransportcủa Vlad Starostin.bpo-33256: Sửa lỗi hiển thị lệnh gọi
<module>trong html docgitb.html()tạo ra. Bản vá của Stéphane Blondon.bpo-33203:
random.Random.choice()hiện tăngIndexErrorcho các chuỗi trống một cách nhất quán ngay cả khi được gọi từ các lớp con mà không triển khaigetrandbits().bpo-33224: Cập nhật difflib.mdiff() cho PEP 479. Chuyển đổi một StopIteration chưa được lưu trữ trong trình tạo thành câu lệnh trả về.
bpo-33209: Kết thúc việc đóng khung khi kết thúc quá trình triển khai C của
pickle.Pickler.dump().bpo-32861: Trình bày
__str__của urllib.robotparser hiện bao gồm các mục nhập ký tự đại diện và các trường "Độ trễ thu thập thông tin" và "Tốc độ yêu cầu". Bản vá của Michael Lazar.bpo-33096: Cho phép ttk.Treeview.insert chèn iid có giá trị boolean sai. Lưu ý iid=0 và iid=False sẽ giống nhau. Bản vá của Garvit Khatri.
bpo-33127: Mô-đun ssl hiện biên dịch với LibreSSL 2.7.1.
bpo-33021: Giải phóng GIL trong các cuộc gọi fstat(), tránh tình trạng treo tất cả các chuỗi khi gọi mmap.mmap(), os.urandom() và Random.seed(). Bản vá của Nir Soffer.
bpo-27683: Khắc phục hồi quy trong
ipaddresskhiến kết quả củahosts()trống khi mạng được xây dựng bởi một bộ dữ liệu chứa mặt nạ số nguyên và chỉ còn lại 1 bit cho địa chỉ.bpo-32844: Sửa lỗi chuyển hướng sai của bộ mô tả thấp (0 hoặc 1) sang stderr trong quy trình con nếu một bộ mô tả thấp khác bị đóng.
bpo-31908: Sửa đầu ra của tệp bìa cho công cụ dòng lệnh mô-đun
trace. Các tệp bìa được phát ra trước đó chỉ khi sử dụng tùy chọn--missing. Bản vá của Michael Selik.bpo-31457: Nếu sử dụng bộ điều hợp nhật ký lồng nhau, các phương thức
process()bên trong sẽ không còn bị bỏ qua.bpo-16865: Hỗ trợ mảng >=2GiB trong
ctypes. Bản vá của Segev Finer.bpo-31238: pydoc: phương thức stop() của lớp ServerThread riêng hiện đợi cho đến khi DocServer.serve_until_quit() hoàn thành và sau đó đặt rõ ràng thuộc tính docserver của nó thành Không để phá vỡ chu trình tham chiếu.
Tài liệu¶
bpo-33503: Sửa liên kết pypi bị hỏng
bpo-33421: Thêm tài liệu còn thiếu cho
typing.AsyncContextManager.bpo-33378: Thêm bộ chuyển đổi ngôn ngữ tiếng Hàn cho https://python.go-mizu.dev/
bpo-33276: Làm rõ rằng thuộc tính
__path__trên mô-đun không thể có bất kỳ giá trị nào.bpo-33201: Hiện đại hóa tài liệu để viết các loại phần mở rộng C.
bpo-33195: Không dùng nữa việc sử dụng
Py_UNICODEtrong tài liệuc-api/arg. Các API liên quan đếnPy_UNICODEkhông được dùng nữa kể từ Python 3.3, nhưng nó bị thiếu trong tài liệu.bpo-33126: Tài liệu PyBuffer_ToContiguous().
bpo-27212: Sửa đổi tài liệu cho công thức
islice()để sử dụng các giá trị ban đầu cho đến chỉ mục bắt đầu.bpo-28247: Cập nhật tài liệu
zipappđể mô tả cách tạo các ứng dụng độc lập.bpo-18802: Thay đổi tài liệu cho ipaddress. Bản vá của Jon Foster và Berker Peksag.
bpo-27428: Cập nhật tài liệu để làm rõ rằng
WindowsRegistryFindertriển khaiMetaPathFinder. (Bản vá của Himanshu Lakhara)bpo-8243: Thêm ghi chú về hành vi ngoại lệ của lời nguyền.addch và lời nguyền.addstr khi viết bên ngoài cửa sổ hoặc bảng tính.
bpo-31432: Làm rõ ý nghĩa của các cờ CERT_NONE, CERT_OPTIONAL và CERT_REQUIRED cho ssl.SSLContext.verify_mode.
Kiểm tra¶
xây dựng¶
bpo-5755: Di chuyển tùy chọn
-Wstrict-prototypessangCFLAGS_NODISTtừOPT. Tùy chọn này đưa ra những cảnh báo khó chịu khi xây dựng các mô-đun mở rộng được viết bằng C++.bpo-33614: Đảm bảo các tệp định nghĩa mô-đun cho ABI ổn định trên Windows được tái tạo chính xác.
bpo-33522: Kích hoạt tính năng xây dựng CI trên Visual Studio Team Services tại https://python.visualstudio.com/cpython
bpo-33012: Thêm
-Wno-cast-function-typecho gcc 8 để tắt cảnh báo về các hàm chuyển đổi như truyền tới PyCFunction trong danh sách định nghĩa phương thức.bpo-33394: Kích hoạt tính năng xây dựng chi tiết cho các mô-đun mở rộng, khi GNU make được truyền macro trên dòng lệnh.
cửa sổ¶
bpo-33184: Cập nhật trình cài đặt Windows lên OpenSSL 1.0.2o.
macOS¶
bpo-33184: Cập nhật bản dựng trình cài đặt macOS để sử dụng OpenSSL 1.0.2o.
IDLE¶
bpo-33656: Trên Windows, thêm lệnh gọi API nói rằng tk chia tỷ lệ cho DPI. Trên Windows 8.1+ hoặc 10, với các thuộc tính tương thích DPI của tệp nhị phân Python không thay đổi và độ phân giải màn hình lớn hơn 96 DPI, điều này sẽ làm cho văn bản và đường nét sắc nét hơn. Nếu không thì nó sẽ không có tác dụng.
bpo-33768: Nhấp vào dòng ngữ cảnh sẽ di chuyển dòng đó lên đầu cửa sổ soạn thảo.
bpo-33763: IDLE: Sử dụng tiện ích văn bản chỉ đọc cho ngữ cảnh mã thay vì tiện ích nhãn.
bpo-33664: Cuộn văn bản soạn thảo IDLE theo dòng. Trước đây, con lăn chuột và thanh trượt thanh cuộn đã di chuyển văn bản theo một số pixel cố định, dẫn đến một phần dòng ở đầu hộp soạn thảo. Thay đổi này cũng áp dụng cho các cửa sổ đầu ra shell và grep, nhưng không áp dụng cho các chế độ xem văn bản chỉ đọc.
bpo-33679: Bật cấu hình màu theo chủ đề cụ thể cho Ngữ cảnh mã. Sử dụng tab Nổi bật để xem cài đặt cho chủ đề tích hợp hoặc thêm cài đặt cho chủ đề tùy chỉnh.
bpo-33642: Hiển thị tối đa dòng không trống cho Ngữ cảnh mã. Nếu không có ngữ cảnh hiện tại, hãy hiển thị một dòng trống.
bpo-33628: IDLE: Dọn dẹp codecontext.py và thử nghiệm của nó.
bpo-33564: Ngữ cảnh mã của IDLE hiện nhận dạng async là công cụ mở khối.
bpo-29706: IDLE giờ đây có màu sắc không đồng bộ và đang chờ làm từ khóa trong phiên bản 3.6. Chúng trở thành từ khóa đầy đủ trong phiên bản 3.7.
bpo-21474: Cập nhật định nghĩa từ/mã định danh từ ascii sang unicode. Trong các hộp văn bản và mục nhập, điều này ảnh hưởng đến việc lựa chọn bằng cách bấm đúp, di chuyển sang trái/phải bằng control-left/right và xóa sang trái/phải bằng control-BACKSPACE/DEL.
bpo-33204: IDLE: tiền tố chuỗi không hợp lệ có màu nhất quán. Tiền tố chuỗi 'u' không thể ghép nối với 'r' hoặc 'f'. Tô màu nhất quán càng nhiều tiền tố, bắt đầu từ bên phải, càng hợp lệ. Sửa đổi và mở rộng thử nghiệm chất tạo màu.
bpo-32831: Thêm chuỗi tài liệu và kiểm tra ngữ cảnh mã.
Công cụ/Bản trình diễn¶
bpo-33189: pygettext.py hiện chỉ nhận dạng các chuỗi ký tự là chuỗi tài liệu và chuỗi có thể dịch được, đồng thời từ chối các ký tự byte và biểu thức chuỗi f.
bpo-31920: Đã sửa lỗi xử lý các thư mục làm đối số trong tập lệnh
pygettext. Dựa trên bản vá của Oleg Krasnikov.bpo-29673: Sửa macro pystackv và pystack gdbinit.
bpo-32885: Thêm cờ
-nchoTools/scripts/pathfix.pyđể tắt tính năng tạo bản sao lưu tự động (các tệp có hậu tố~).bpo-31583: Sửa lỗi 2to3 để sử dụng với tùy chọn --add-suffix nhưng không có tùy chọn --output-dir cho đường dẫn tương đối đến các tệp trong thư mục hiện tại.
C API¶
bpo-32374: Tài liệu rằng m_traverse cho các mô-đun khởi tạo nhiều pha có thể được gọi bằng m_state=NULL và thêm kiểm tra độ chính xác
Bản cuối cùng của Python 3.6.5¶
Release date: 2018-03-28
Kiểm tra¶
bpo-32872: Tránh vấn đề tương thích đáng tiếc nhất với các gói không gian tên.
xây dựng¶
bpo-33163: Nâng cấp pip lên 9.0.3 và setuptools lên v39.0.1.
Ứng viên phát hành Python 3.6.5 1¶
Release date: 2018-03-13
Bảo mật¶
bpo-33001: Khắc phục tối thiểu tình trạng tràn bộ đệm trong os.symlink trên Windows
bpo-32981: Regexes trong difflib và poplib dễ bị quay lui thảm hại. Những biểu thức chính quy này hình thành các vectơ DOS tiềm năng (REDOS). Chúng đã được tái cấu trúc. Điều này giải quyết CVE 2018-1060 và CVE 2018-1061. Bản vá của Jamie Davis.
Cốt lõi và nội dung¶
bpo-33026: Đã sửa lỗi nhảy ra khỏi khối "with" bằng cách đặt f_lineno.
bpo-17288: Ngăn chặn các bước nhảy từ các sự kiện theo dõi 'trở lại' và 'ngoại lệ'.
bpo-32889: Cập nhật danh sách ngăn chặn Valgrind để giải quyết việc đổi tên
Py_ADDRESS_IN_RANGthànhaddress_in_range.bpo-32650: Pdb và các trình gỡ lỗi khác phụ thuộc vào bdb.py sẽ bước qua (lệnh tiếp theo) các coroutine gốc một cách chính xác. Bản vá của Pablo Galindo.
bpo-32685: Cải thiện đề xuất khi dạng câu lệnh in Python 2 xuất hiện trên cùng dòng với tiêu đề của câu lệnh ghép hoặc được kết thúc bằng dấu chấm phẩy thay vì dòng mới. Bản vá của Nitish Chandra.
bpo-32583: Khắc phục sự cố có thể xảy ra trong bộ giải mã Unicode tích hợp do lỗi ghi ngoài giới hạn khi sử dụng trình xử lý lỗi giải mã tùy chỉnh.
bpo-26163: Hàm băm Frozenset() được cải tiến để tạo ra các giá trị băm khác biệt hơn khi đối mặt với các tập dữ liệu chứa nhiều giá trị tương tự.
bpo-27169: Hằng số
__debug__hiện được tối ưu hóa tại thời điểm biên dịch. Điều này cũng sửa lỗi bpo-22091.bpo-32329:
sys.flags.hash_randomizationhiện được đặt chính xác thành 0 khiPYTHONHASHSEED=0tắt tính năng ngẫu nhiên băm.bpo-30416: Trình tối ưu hóa hiện được bảo vệ khỏi việc tốn nhiều thời gian thực hiện các phép tính phức tạp và tiêu tốn nhiều bộ nhớ để tạo các hằng số lớn khi gấp liên tục.
bpo-18533:
repr()trên một lệnh chứavalues()hoặcitems()của chính nó không còn tăngRecursionErrornữa; OrderedDict tương tự. Thay vào đó, hãy sử dụng..., như đối với các cấu trúc đệ quy khác. Bản vá của Ben North.bpo-32028: Khoảng trắng ở đầu hiện bị bỏ qua một cách chính xác khi tạo đề xuất chuyển đổi câu lệnh in Py2 thành lệnh gọi hàm in dựng sẵn Py3. Bản vá của Sanyam Khurana.
bpo-32137: Repr của lệnh được lồng sâu hiện gây ra RecursionError thay vì gặp sự cố do tràn ngăn xếp.
Thư viện¶
bpo-33064: lib2to3 hiện hỗ trợ chính xác dấu phẩy ở cuối
*argsvà**kwargstrong chữ ký hàm.bpo-31804: Tránh thất bại trong quá trình đa xử lý. Xử lý nếu luồng tiêu chuẩn bị đóng hoặc Không có khi thoát.
bpo-33037: Bỏ qua việc gửi/nhận dữ liệu sau khi đóng truyền tải SSL.
bpo-30353: Sửa lỗi truyền theo giá trị ctypes cho cấu trúc trên Cygwin/MinGW 64 bit.
bpo-33009: Sửa lỗi kiểm tra.signature() cho các phương thức một phần tham số.
bpo-32969: Hiển thị một số hằng số bị thiếu trong zlib và sửa tài liệu tương ứng.
bpo-32713: Đã sửa lỗi xử lý tarfile.itn các giá trị float ngoài giới hạn. Bản vá của Joffrey Fuhrer.
bpo-30622: Mô-đun ssl hiện phát hiện hỗ trợ NPN bị thiếu trong LibreSSL.
bpo-32922: dbm.open() hiện mã hóa tên tệp bằng mã hóa hệ thống tệp thay vì mã hóa mặc định.
bpo-32859: Trong
os.dup2, không kiểm tra mọi cuộc gọi xem tòa nhàdup3có tồn tại hay không.bpo-21060: Viết lại thông báo khó hiểu từ setup.py upload từ "Không có tệp dist nào được tạo trong lệnh trước đó" thành "Phải tạo và tải tệp lên trong một lệnh" hữu ích hơn.
bpo-32857: Trong
tkinter,after_cancel(None)hiện tăngValueErrorthay vì hủy chức năng được lên lịch đầu tiên. Bản vá của Cheryl Sabella.bpo-32852: Đảm bảo sys.argv vẫn ở dạng danh sách khi chạy dấu vết.
bpo-32841: Đã khắc phục sự cố
asyncio.Conditionâm thầm bỏ qua việc hủy sau khi thông báo và hủy khóa có điều kiện. Bản vá của Bar Harel.bpo-31787: Đã sửa lỗi hiển thị các phương thức
__init__()trong các mô-đun khác nhau. (Được đóng góp bởi Oren Milman)bpo-30157: Đã sửa lỗi đoán trích dẫn và dấu phân cách trong csv.Sniffer.sniff() khi chỉ có trường cuối cùng được trích dẫn. Bản vá của Jake Davis.
bpo-32394: socket: Xóa cờ TCP_FASTOPEN, TCP_KEEPCNT trên Windows phiên bản cũ hơn trong thời gian chạy.
bpo-32777: Khắc phục sự cố bế tắc hiếm gặp nhưng tiềm ẩn của quy trình con trước khi thực thi trong quy trình con trên hệ thống POSIX khi đánh dấu các bộ mô tả tệp có thể kế thừa trên exec trong quy trình con. Lỗi này dường như đã được giới thiệu trong 3.4.
bpo-32647: Mô-đun ctypes được sử dụng để phụ thuộc vào liên kết gián tiếp cho dlopen. Tiện ích mở rộng được chia sẻ hiện được liên kết rõ ràng với libdl trên các nền tảng có dl.
bpo-32734: Đã khắc phục sự cố an toàn
asyncio.Lock()cho phép lấy và khóa cùng một khóa nhiều lần mà không bị khóa. Bản vá của Bar Harel.bpo-32727: Không bao gồm trường tên trong phong bì SMTP từ địa chỉ. Bản vá của Stéphane Wirtel
bpo-27931: Sửa lỗi phân tích tiêu đề địa chỉ email khi tên người dùng là một chuỗi trích dẫn trống. Bản vá của Xiang Zhang.
bpo-32304: lệnh tải lên của distutils không còn làm hỏng các tệp tar kết thúc bằng byte CR và không còn cố gắng chuyển đổi CR thành CRLF trong bất kỳ trường văn bản tải lên nào nữa.
bpo-32502: uuid.uuid1 không còn đưa ra ngoại lệ nếu gặp địa chỉ phần cứng 64 bit.
bpo-31848: Sửa lỗi xử lý trong Aifc_read.initfp() khi không tìm thấy đoạn SSND. Bản vá của Zackery Spytz.
bpo-32555: Trên FreeBSD và Solaris, os.strerror() hiện luôn giải mã chuỗi byte từ mã hóa ngôn ngữ hiện tại, thay vì sử dụng ASCII/surrogateescape trong một số trường hợp.
bpo-32521: Mô-đun nis hiện tương thích với vị trí tiêu đề và libnsl mới.
bpo-32473: Cải thiện khả năng đọc đầu ra ABCMeta._dump_registry()
bpo-32521: glibc đã loại bỏ Sun RPC. Sử dụng các tiêu đề và thư viện libtirpc thay thế trong mô-đun nis.
bpo-32228: Đảm bảo rằng
truncate()duy trì vị trí tệp (như được báo cáo bởitell()) sau khi ghi lâu hơn kích thước bộ đệm.bpo-26133: Không hủy đăng ký tín hiệu trong vòng lặp sự kiện asyncio UNIX khi tắt trình thông dịch.
bpo-32185: Mô-đun SSL không còn gửi địa chỉ IP trong tiện ích mở rộng SNI TLS trên nền tảng có OpenSSL 1.0.2+ hoặc inet_pton.
bpo-32323:
urllib.parse.urlsplit()hiện không chuyển đổi id vùng (phạm vi) thành chữ thường cho các địa chỉ IPv6 có phạm vi trong tên máy chủ.bpo-32302: Sửa bdist_wininst của distutils cho CRT v142: nó tương thích nhị phân với CRT v140.
bpo-32255: Giờ đây, một trường trống luôn được trích dẫn khi ghi vào tệp CSV. Điều này cho phép phân biệt một hàng trống với một hàng bao gồm một trường trống. Bản vá của Licht Takeuchi.
bpo-32277: Tăng
NotImplementedErrorthay vìSystemErrortrên các nền tảng không hỗ trợchmod(..., follow_symlinks=False). Bản vá của Anthony Sottile.bpo-32199: Trình getter ip getnode() hiện sử dụng 'liên kết ip' thay vì 'danh sách liên kết ip'.
bpo-27456: Đảm bảo TCP_NODELAY được đặt trên Linux. Các thử nghiệm của Victor Stinner.
bpo-31900: Hàm
locale.localeconv()hiện đặt tạm thời ngôn ngữLC_CTYPEthành ngôn ngữLC_NUMERICđể giải mã các chuỗi bytedecimal_pointvàthousands_sepnếu chúng không phải là ASCII hoặc dài hơn 1 byte và ngôn ngữLC_NUMERICkhác với ngôn ngữLC_CTYPE. Thay đổi tạm thời này ảnh hưởng đến các chủ đề khác. Thay đổi tương tự đối với phương thứcstr.format()khi định dạng một số (int,float,floatvà các lớp con) với loạin(ví dụ:'{:n}'.format(1234)).bpo-31802: Nhập mô-đun đường dẫn gốc (
posixpath,ntpath) hiện hoạt động ngay cả khi mô-đunosvẫn không được nhập.
Tài liệu¶
bpo-17232: Làm rõ tài liệu cho -O và -OO. Bản vá của Terry Reedy.
bpo-32800: Cập nhật liên kết tới tài liệu w3c cho các không gian tên mặc định xml.
bpo-8722: Ghi lại hành vi của
__getattr__()khi thuộc tínhget()tăngAttributeError.bpo-32614: Sửa đổi các ví dụ RE trong tài liệu để sử dụng chuỗi thô nhằm ngăn chặn
DeprecationWarningvà thêm văn bản vào REGEX HOWTO để làm nổi bật việc không dùng nữa.bpo-31972: Cải thiện chuỗi tài liệu cho các lớp con
pathlib.PurePath.bpo-17799: Giải thích hành vi thực tế của sys.settrace và sys.setprofile cũng như các đối tác C-API của chúng về loại sự kiện nào được nhận trong mỗi chức năng. Bản vá của Pablo Galindo Salgado.
Kiểm tra¶
bpo-32517: Khắc phục lỗi
test_asynciotrên macOS 10.12.2+ do quá trình vận chuyển vòng lặpKqueueSelectorkhông bị đóng.bpo-32721: Sửa test_hashlib để không bị lỗi nếu mô-đun _md5 không được xây dựng.
bpo-32252: Fix errorhandler_suppress_crash_report() được sử dụng để ngăn các tệp kết xuất lõi khi kiểm tra sự cố. getrlimit() trả về 0 nếu thành công.
bpo-31518: Debian Unstable đã tắt TLS 1.0 và 1.1 cho SSLv23_METHOD(). Thay đổi giao thức TLS/SSL của một số thử nghiệm thành PROTOCOL_TLS hoặc PROTOCOL_TLSv1_2 để chuyển chúng sang Debian.
xây dựng¶
bpo-32635: Sửa lỗi segfault của mô-đun mật mã khi libxcrypt được cung cấp thay vì libcrypt trên hệ thống.
cửa sổ¶
bpo-33016: Khắc phục khả năng sử dụng bộ nhớ chưa được khởi tạo trong nt._getfinalpathname
bpo-32903: Khắc phục rò rỉ bộ nhớ trong os.chdir() trên Windows nếu thư mục hiện tại được đặt thành đường dẫn UNC.
bpo-31966: Đã sửa lỗi WindowsConsoleIO.write() để ghi dữ liệu trống.
bpo-32409: Đảm bảo activate.bat có thể xử lý nội dung Unicode.
bpo-32457: Cải thiện việc xử lý đường dẫn thực thi không chuẩn hóa khi khởi chạy Python.
bpo-32370: Sử dụng mã hóa chính xác cho đầu ra ipconfig trong mô-đun uuid. Bản vá của Segev Finer.
bpo-29248: Khắc phục
os.readlink()trên Windows, lỗi này xử lý nhầm trườngPrintNameOffsetcủa bộ đệm dữ liệu phân tích cú pháp dưới dạng một số ký tự thay vì byte. Bản vá của Craig Holmquist và SSE4.bpo-32588: Tạo mô-đun _distutils_findvs độc lập.
macOS¶
bpo-32726: Cung cấp biến thể trình cài đặt macOS bổ sung, hiện đại hơn, chỉ hỗ trợ hệ thống macOS 10.9+ ở chế độ 64-bit. Nâng cấp thư viện bên thứ ba được cung cấp lên OpenSSL 1.0.2n, Xperia 5.2.3 và SQLite 3.22.0. Trình cài đặt 10.9+ hiện liên kết và cung cấp bản sao Tcl/Tk 8.6.8 của riêng nó.
IDLE¶
bpo-32984: Đặt
__file__trong khi chạy tệp khởi động. Giống như Python, IDLE tùy chọn chạy một tệp khởi động trong cửa sổ Shell trước khi hiển thị lời nhắc nhập tương tác đầu tiên. Đối với IDLE,-schạy một tệp có tên trong biến môi trườngIDLESTARTUPhoặcPYTHONSTARTUP;-r filechạyfile. Python đặt__file__thành tên tệp khởi động trước khi chạy tệp và hủy đặt nó trước dấu nhắc đầu tiên. IDLE bây giờ cũng thực hiện tương tự khi chạy bình thường, không có tùy chọn-n.bpo-32940: Đơn giản hóa và đổi tên StringTranslatePseudoMapping trong pyparse.
bpo-32916: Thay đổi
strthànhcodetrong pyparse.bpo-32905: Xóa mã không sử dụng trong mô-đun pyparse.
bpo-32874: Thêm bài kiểm tra cho pyparse.
bpo-32837: Sử dụng mã hóa mặc định phụ thuộc vào hệ thống và vị trí cho open() là một ý tưởng tồi đối với các tệp không phụ thuộc vào vị trí và hệ thống của IDLE.
bpo-32826: Thêm "encoding=utf-8" vào open() trong test_help_about của IDLE. GUI test test_file_buttons() chỉ xem xét các dòng ban đầu chỉ có mã ascii nhưng không thành công trên các hệ thống trong đó open() mặc định là 'ascii' vì readline() nội bộ đọc và giải mã đủ xa về phía trước để gặp ký tự không phải mã ascii trong CREDITS.txt.
bpo-32765: Cập nhật chuỗi tài liệu tab Chung của configdialog để thêm các tiện ích mới vào danh sách tiện ích.
Công cụ/Bản trình diễn¶
bpo-24960: 2to3 và lib2to3 hiện có thể đọc các tệp ngữ pháp được chọn lọc bằng pkgutil.get_data() thay vì thăm dò hệ thống tệp. Điều này cho phép 2to3 và lib2to3 hoạt động khi chạy từ tệp zip.
bpo-32222: Sửa lỗi pygettext không trích xuất chuỗi tài liệu cho các hàm có đối số được chú thích kiểu. Bản vá của Toby Harradine.
C API¶
bpo-29084: C API không có giấy tờ cho OrderedDict đã bị loại khỏi C API giới hạn. Nó đã được thêm vào do nhầm lẫn và thực sự chưa bao giờ hoạt động trong phiên bản C API giới hạn.
Bản cuối cùng của Python 3.6.4¶
Release date: 2017-12-18
Không có thay đổi mã mới nào trong phiên bản 3.6.4 kể từ v3.6.4rc1.
Ứng viên phát hành Python 3.6.4 1¶
Release date: 2017-12-05
Cốt lõi và nội dung¶
bpo-32176: co_flags.CO_NOFREE hiện luôn được hàm tạo đối tượng mã đặt chính xác dựa trên các freevar và cellvar, thay vì cần được người gọi đặt chính xác. Điều này đảm bảo nó sẽ tự động bị xóa khi các tham chiếu ô bổ sung được đưa vào một đối tượng và hàm mã đã sửa đổi.
bpo-31949: Đã khắc phục một số sự cố khi in dấu vết (PyTraceBack_Print()). Việc đặt sys.tracebacklimit thành 0 hoặc thấp hơn hiện sẽ ngăn chặn việc in dấu vết. Việc đặt sys.tracebacklimit thành Không hiện tại sẽ gây ra việc sử dụng giới hạn mặc định. Việc đặt sys.tracebacklimit thành số nguyên lớn hơn LONG_MAX hiện có nghĩa là sử dụng giới hạn LONG_MAX thay vì giới hạn mặc định. Đã sửa lỗi tràn số nguyên trong trường hợp có nhiều hơn các mục truy nguyên
2**31trên Windows. Đã sửa lỗi xử lý lỗi đầu ra.bpo-30696: Sửa lỗi trình thông dịch tương tác lặp liên tục khi không có bộ nhớ.
bpo-20047: Các phương thức bytearray() và rpartition() hiện chỉ chấp nhận các đối tượng giống byte làm dấu phân cách, như được ghi lại. Đặc biệt, giờ đây họ đưa ra TypeError thay vì trả về kết quả không có thật khi một số nguyên được truyền dưới dạng dấu phân cách.
bpo-31852: Khắc phục lỗi phân đoạn do sự kết hợp giữa từ khóa mềm không đồng bộ và các dòng tiếp tục.
bpo-21720: BytesWarning không còn được phát ra khi đối số fromlist của
__import__()hoặc thuộc tính__all__của mô-đun chứa các phiên bản byte.bpo-31825: Đã sửa lỗi OverflowError trong codec 'unicode-escape' và trong codecs.escape_decode() khi giải mã một byte không phải mã ascii đã thoát.
bpo-28603: In toàn bộ bối cảnh/chuỗi ngoại lệ khi thoát khỏi trình thông dịch, ngay cả khi một ngoại lệ trong chuỗi không thể băm được hoặc so sánh bằng với các ngoại lệ sau này. Bản vá của Zane Bitter.
bpo-31786: Sửa lỗi làm tròn thời gian chờ trong mô-đun chọn để làm tròn thời gian chờ âm chính xác trong khoảng từ -1,0 đến 0,0. Các chức năng hiện chặn chờ sự kiện như mong đợi. Trước đây, cuộc gọi không bị chặn do nhầm lẫn. Bản vá của Pablo Galindo.
bpo-31642: Đã khôi phục chặn "từ mô-đun nhập gói" bằng cách đặt sys.modules["package.module"] thành Không.
bpo-31626: Đã sửa lỗi trong bộ cấp phát bộ nhớ gỡ lỗi. Đã có lệnh ghi vào bộ nhớ được giải phóng sau khi thu nhỏ khối bộ nhớ.
bpo-31619: Đã sửa lỗi ValueError khi chuyển đổi một chuỗi có số lượng dấu gạch dưới lớn thành số nguyên có cơ sở nhị phân.
bpo-31592: Đã khắc phục lỗi xác nhận trong trình phân tích cú pháp Python trong trường hợp
unicodedata.normalize()bị lỗi. Bản vá của Oren Milman.bpo-31588: Đưa ra
TypeErrorvới thông báo lỗi hữu ích khi việc tạo lớp không thành công do siêu dữ liệu có phương thức__prepare__()không hợp lệ. Bản vá của Oren Milman.bpo-31566: Khắc phục lỗi xác nhận trong
_warnings.warn()trong trường hợp toàn cầu__name__bị lỗi. Bản vá của Oren Milman.bpo-31505: Khắc phục lỗi xác nhận trong
json, trong trường hợp_json.make_encoder()nhận được đối sốencoder()không hợp lệ. Bản vá của Oren Milman.bpo-31492: Khắc phục lỗi xác nhận trong trường hợp không nhập được từ mô-đun có thuộc tính
__name__không hợp lệ và trong trường hợp không truy cập được thuộc tính của mô-đun đó. Bản vá của Oren Milman.bpo-31490: Khắc phục lỗi xác nhận trong định nghĩa lớp
ctypes, trong trường hợp lớp đó có thuộc tính có tên được chỉ định trong_anonymous_nhưng không có trong_fields_. Bản vá của Oren Milman.bpo-31478: Khắc phục lỗi xác nhận trong
_random.Random.seed()trong trường hợp đối số có phương thức__abs__()không hợp lệ. Bản vá của Oren Milman.bpo-31315: Khắc phục lỗi xác nhận trong imp.create_dynamic(), khi spec.name không phải là một chuỗi. Bản vá của Oren Milman.
bpo-31311: Khắc phục sự cố trong phương thức
__setstate__()củactypes._CData, trong trường hợp__dict__bị lỗi. Bản vá của Oren Milman.bpo-31293: Khắc phục sự cố khi chia và nhân thực sự một đối tượng timedelta với một float bằng phương thức as_integer_ratio() không hợp lệ. Bản vá của Oren Milman.
bpo-31285: Khắc phục lỗi xác nhận trong
warnings.warn_explicit, khi giá trị trả về củaget_source()của trình tải nhận được có phương thứcsplitlines()không hợp lệ. Bản vá của Oren Milman.bpo-30817:
PyErr_PrintEx()hiện xóa ngoại lệ bị bỏ qua có thể được_PySys_SetObjectId()đưa ra, chẳng hạn như khi không có bộ nhớ.
Thư viện¶
bpo-28556: Hai bản sửa lỗi nhỏ cho mô-đun
typing: cho phép sao chép nông các phiên bản của các lớp chung, cải thiện sự tương tác của__init_subclass__với các lớp chung. PR gốc của Ivan Levkivskyi.bpo-27240: Thuật toán gấp tiêu đề cho các chính sách email mới đã được viết lại, thuật toán này cũng sửa lỗi bpo-30788, bpo-31831 và bpo-32182. Đặc biệt, việc gấp RFC2231 hiện đã được thực hiện chính xác.
bpo-32186: io.FileIO.readall() và io.FileIO.read() hiện giải phóng GIL khi nhận được kích thước tệp. Đã sửa lỗi treo tất cả các luồng với máy chủ NFS không thể truy cập được. Bản vá của Nir Soffer.
bpo-12239: Làm cho
msilib.SummaryInformation.GetProperty()trả vềNonekhi giá trị của thuộc tính làVT_EMPTY. Bản vá đầu tiên của Mark Mc Mahon.bpo-31325: Sửa lỗi sử dụng sai
collections.namedtuple()trong phương thứcRobotFileParser.parse(). Bản vá đầu tiên của Robin Wellner.bpo-12382:
msilib.OpenDatabase()hiện đưa ra thông báo ngoại lệ tốt hơn khi không thể mở hoặc tạo tệp MSI. Bản vá đầu tiên của William Tisäter.bpo-32110:
codecs.StreamReader.read(n)hiện trả về không quá n ký tự/byte cho n không âm. Điều này làm cho nó tương thích với các phương thứcread()của các đối tượng giống như tệp khác.bpo-32072: Đã khắc phục sự cố với số nguyên nhị phân: Đã sửa lỗi lưu bytearrays. Các đối tượng giống hệt nhau sẽ chỉ được lưu một lần. Các tham chiếu bằng nhau sẽ được tải dưới dạng các đối tượng giống hệt nhau. Đã thêm hỗ trợ để lưu và tải cấu trúc dữ liệu đệ quy.
bpo-32034: Tạo asyncio.IncompleteReadError và LimitOverrunError có thể chọn được.
bpo-32015: Đã sửa lỗi lặp asyncio trong trường hợp kết nối lại ổ cắm trong khi chờ đọc/ghi không đồng bộ từ/vào ổ cắm.
bpo-32011: Đã khôi phục hỗ trợ tải các tệp so sánh bằng mã TYPE_INT64. Những tệp này có thể được tạo bằng Python 2.7.
bpo-31970: Giảm chi phí hoạt động của chế độ gỡ lỗi asyncio.
bpo-9678: Đã sửa lỗi xác định địa chỉ MAC trong mô-đun uuid: Sử dụng ifconfig trên NetBSD và OpenBSD. Sử dụng arp trên Linux, FreeBSD, NetBSD và OpenBSD. Dựa trên bản vá của Takayuki Shimizukawa.
bpo-30057: Sửa tín hiệu có thể bị bỏ lỡ trong signal.signal().
bpo-31933: Sửa các thông số Blake2 leaf_size và node_offset trên nền tảng endian lớn. Bản vá của Jack O'Connor.
bpo-31927: Đã sửa lỗi biên dịch mô-đun ổ cắm trên NetBSD 8. Đã sửa lỗi xác nhận hoặc đọc dữ liệu tùy ý khi phân tích địa chỉ AF_BLUETOOTH trên NetBSD và DragonFly BSD.
bpo-27666: Đã sửa lỗi hỏng ngăn xếp trong Curs.box() và Curs.ungetmouse() khi kích thước của loại chtype hoặc mmask_t nhỏ hơn kích thước của C dài. lời nguyền.box() bây giờ chấp nhận các ký tự làm đối số. Dựa trên bản vá của Steve Fink.
bpo-31897: plistlib hiện phát hiện nhiều lỗi hơn khi đọc các số nguyên nhị phân và tăng InvalidFileException thay vì các ngoại lệ không mong muốn.
bpo-25720: Fix phương pháp kiểm tra trạng thái pad của lời nguyền WINDOW. Bản vá của Masayuki Yamamoto.
bpo-31893: Đã sửa lỗi bố cục cấu trúc kqueue_event trên OpenBSD và NetBSD. Đã sửa lỗi so sánh các đối tượng kqueue_event.
bpo-31891: Đã sửa lỗi xây dựng mô-đun lời nguyền trên NetBSD.
bpo-28416: Các phiên bản của lớp con Pickler.Pickler với phương thức Persist_id() và lớp con Picker.Unpickler với phương thức Persist_load() không còn tạo chu trình tham chiếu nữa.
bpo-28326: Khắc phục multiprocessing.Process khi thiết bị xuất chuẩn và/hoặc thiết bị xuất chuẩn bị đóng hoặc Không có.
bpo-31457: Nếu sử dụng bộ điều hợp nhật ký lồng nhau, các phương thức
process()bên trong sẽ không còn bị bỏ qua.bpo-31457: Thuộc tính
managertrên các đối tượng LoggerAdapter hiện có thể thiết lập chính xác.bpo-31806: Sửa lỗi làm tròn thời gian chờ trong time.sleep(), threading.Lock.acquire() và socket.socket.settimeout() để làm tròn thời gian chờ âm chính xác trong khoảng từ -1,0 đến 0,0. Các chức năng hiện chặn chờ sự kiện như mong đợi. Trước đây, cuộc gọi không bị chặn do nhầm lẫn. Bản vá của Pablo Galindo.
bpo-28603: traceback: Khắc phục lỗi TypeError xảy ra trong quá trình in các dấu vết ngoại lệ khi ngoại lệ hiện tại hoặc ngoại lệ trong chuỗi ngữ cảnh/nguyên nhân của nó không thể băm được. Bản vá của Zane Bitter.
bpo-30058: Đã sửa lỗi tràn bộ đệm trong select.kqueue.control().
bpo-31770: Ngăn chặn sự cố khi gọi phương thức
__init__()của đối tượngsqlite3.Cursornhiều lần. Bản vá của Oren Milman.bpo-31672:
idpatterntrongstring.Templatekhớp với một số ký tự không phải ASCII. Bây giờ nó sử dụng cờ cục bộ biểu thức chính quy-iđể tránh các ký tự không phải ASCII.bpo-31764: Ngăn chặn sự cố trong
sqlite3.Cursor.close()trong trường hợp đối tượngCursorchưa được khởi tạo. Bản vá của Oren Milman.bpo-31752: Khắc phục sự cố có thể xảy ra trong hàm tạo timedelta được gọi bằng số nguyên tùy chỉnh.
bpo-31701: Trên Windows, errorhandler.enable() hiện bỏ qua các ngoại lệ MSC và COM.
bpo-31728: Ngăn chặn sự cố trong
_elementtreedo dọn dẹpElement.textvàElement.tailkhông an toàn. Bản vá của Oren Milman.bpo-31620: asyncio.Queue trống hiện không bị rò rỉ bộ nhớ khi hết thời gian chờ queue.get pollers
bpo-31632: Sửa phương thức set_protocol() của lớp _SSLProtocolTransport trong mô-đun asyncio. Phương pháp này trước đây đã sửa đổi một tham chiếu sai đến giao thức.
bpo-31675: Đã sửa lỗi rò rỉ bộ nhớ trong các phương thức của Tkinter Splitlist() và Split() khi truyền một chuỗi lớn hơn 2 GiB.
bpo-31673: Đã sửa lỗi đánh máy trong tên phương thức adderrorinfo() của Tkinter.
bpo-30806: Sửa biểu diễn chuỗi của đối tượng netrc.
bpo-15037: Đã thêm giải pháp thay thế cho getkey() trong lời nguyền dành cho ncurses 5.7 trở về trước.
bpo-25351: Tránh lỗi kích hoạt venv với các biến không xác định
bpo-25532: kiểm tra.unwrap() bây giờ sẽ chỉ cố gắng mở khóa một đối tượng sys.getrecursionlimit() lần, để bảo vệ khỏi các đối tượng tạo đối tượng mới trên mỗi lần truy cập thuộc tính.
bpo-30347: Dừng sự cố khi lặp đồng thời trên các trình vòng lặp itertools.groupby().
bpo-31516:
threading.current_thread()không được trả lại chuỗi giả khi tắt máy.bpo-31351: python -m Ensurepip hiện thoát với mã thoát khác 0 nếu quá trình khởi động pip không thành công.
bpo-31482:
random.seed()hiện hoạt động với byte trong phiên bản=1bpo-31334: Sửa
poll.poll([timeout])trong mô-đunselectđối với thời gian chờ âm tùy ý trên tất cả các hệ điều hành trong đó nó chỉ có thể là số nguyên không âm hoặc -1. Bản vá của Riccardo Coccioli.bpo-31310: trình theo dõi semaphore của đa xử lý sẽ được khởi chạy lại nếu bị lỗi.
bpo-31308: Làm cho quy trình máy chủ phân nhánh của đa xử lý không bị ảnh hưởng bởi Ctrl-C và các gián đoạn khác của người dùng. Nếu nó gặp sự cố, hãy khởi động lại nó khi cần thiết.
Tài liệu¶
bpo-32105: Đã thêm điểm đánh dấu phiên bản asyncio.BaseEventLoop.connect_accepted_socket.
bpo-31537: Sửa lỗi sử dụng
get_history_lengthkhông chính xác trong mã ví dụ về tài liệu readline. Bản vá của Brad Smith.bpo-30085: Các hàm toán tử không có dấu gạch dưới kép được ưu tiên cho rõ ràng. Cái có dấu gạch dưới chỉ được giữ lại để tương thích ngược.
Kiểm tra¶
bpo-31380: Bỏ qua test_httpservers test_undecodable_file trên macOS: không thành công trên APFS.
bpo-31705: Bỏ qua test_socket.test_sha256() trên nhân Linux cũ hơn 4.5. Thử nghiệm thất bại với ENOKEY trên kernel 3.10 (trên ppc64le). Một bản sửa lỗi đã được hợp nhất vào kernel 4.5.
bpo-31174: Sửa test_tools.test_unparse: DirectoryTestCase hiện lưu trữ mẫu tên để luôn kiểm tra các tệp giống nhau. Nó ngăn ngừa cảnh báo sai khi tìm kiếm rò rỉ tài liệu tham khảo.
bpo-30695: Thêm các hàm
set_nomemory(start, stop)vàremove_mem_hooks()vào mô-đun_testcapi.
xây dựng¶
bpo-32059:
detect_modules()trongsetup.pyhiện cũng tìm kiếm đường dẫn gốc hệ thống khi biên dịch chéo.bpo-31957: Sửa lỗi phát hiện phiên bản Windows SDK khi xây dựng cho Windows.
bpo-31609: Sửa dấu ngoặc kép trong PCbuild/clean.bat
bpo-31934: Hủy bỏ quá trình xây dựng khi xây dựng từ cây nguồn không sạch.
bpo-31926: Đã sửa lỗi Phòng khám đối số đôi khi gây ra lỗi biên dịch khi có nhiều hơn một hàm và/hoặc phương thức trong tệp .c có cùng tên.
bpo-28791: Cập nhật các bản dựng Windows để sử dụng SQLite 3.21.0.
bpo-28791: Cập nhật trình cài đặt OS X để sử dụng SQLite 3.21.0.
bpo-22140: Ngăn chặn việc thay thế tiền tố kép trong python-config.sh.
bpo-31536: Tránh xây dựng lại toàn bộ sau
make regen-allnếu không có gì thay đổi.
cửa sổ¶
macOS¶
bpo-31392: Cập nhật trình cài đặt macOS để sử dụng OpenSSL 1.0.2m
IDLE¶
bpo-32207: Cải thiện khả năng theo dõi ngoại lệ sự kiện tk trong IDLE. Khi việc xử lý sự kiện tk được điều khiển bởi vòng lặp chạy của IDLE, bối cảnh truy nguyên queue.EMPTY khó hiểu và mất tập trung không còn được thêm vào các truy nguyên ngoại lệ sự kiện tk nữa. Truy nguyên bây giờ giống như khi xử lý sự kiện được điều khiển bởi mã người dùng. Bản vá dựa trên đề xuất của Serhiy Storchaka.
bpo-32164: Xóa tệp không sử dụng Idlelib/tabbedpages.py. Việc sử dụng TabbedPageSet trong hộp thoại cấu hình đã được thay thế bằng ttk.Notebook.
bpo-32100: IDLE: Sửa lỗi cũ và mới trong trình duyệt đường dẫn; cải thiện các bài kiểm tra. Bản vá chủ yếu của Cheryl Sabella.
bpo-31858: IDLE -- Hạn chế thao tác nhắc nhở shell đối với shell. Cửa sổ soạn thảo và đầu ra chỉ nhìn thấy dòng nhắc cuối cùng trống. Điều này giúp đơn giản hóa mã và sửa một lỗi nhỏ khi chèn dòng mới. Sys.ps1, nếu có, sẽ được đọc khi khởi động Shell nhưng không được đặt hoặc thay đổi.
bpo-31860: Mẫu phông chữ trong hộp thoại cấu hình IDLE hiện có thể chỉnh sửa được. Các thay đổi vẫn tồn tại trong khi IDLE vẫn mở
bpo-31836: Test_code_module hiện vượt qua nếu chạy sau test_idle, thiết lập ps1. Mô-đun mã sử dụng sys.ps1 nếu có hoặc đặt nó thành '>>> ' nếu không. Test_code_module hiện kiểm tra chính xác cả hai hành vi. Tương tự cho ps2.
bpo-28603: Khắc phục TypeError khiến shell khởi động lại khi in dấu vết bao gồm một ngoại lệ không thể băm được. Bản vá của Zane Bitter.
bpo-13802: Sử dụng các ký tự không phải Latinh trong mẫu cài đặt Phông chữ của IDLE. Ngay cả khi người ta chọn một phông chữ xác định một tập hợp con giới hạn của Mặt phẳng đa ngôn ngữ cơ bản unicode, tcl/tk sẽ sử dụng các phông chữ khác xác định một ký tự. Ví dụ mở rộng giúp người dùng các ký tự không phải tiếng Latinh hiểu rõ hơn về những gì họ có thể thấy trong trình soạn thảo và trình bao của IDLE. Để nhường chỗ cho mẫu mở rộng, các khung trên tab Phông chữ được sắp xếp lại. Trợ giúp Phông chữ/Tab giải thích một chút về các bổ sung.
bpo-31460: Đơn giản hóa API của Trình duyệt mô-đun của IDLE. Việc chuyển một tiện ích thay vì một danh sách bằng tiện ích gốc sẽ mở ra tùy chọn tạo khung trình duyệt chỉ là một phần của cửa sổ. Việc chuyển tên tệp đầy đủ thay vì các phần được cho là đến từ tệp .py sẽ mở ra khả năng duyệt các tệp python không kết thúc bằng .py.
bpo-31649: IDLE - Chỉ tạo từ khóa tham số _htest, _utest.
bpo-31559: Loại bỏ sự phụ thuộc vào thứ tự kiểm tra trong Idle_test.test_browser.
bpo-31459: Đổi tên trình duyệt mô-đun của IDLE từ Trình duyệt lớp thành Trình duyệt mô-đun. Trình duyệt phương thức và lớp cấp mô-đun ban đầu đã trở thành trình duyệt mô-đun, với việc bổ sung các hàm cấp mô-đun từ nhiều năm trước. Các lớp và hàm lồng nhau đã được thêm vào ngày hôm qua. Để tương thích ngược, sự kiện ảo <<open-class-browser>>, xuất hiện trên tab Phím của hộp thoại Cài đặt, không bị thay đổi. Bản vá của Cheryl Sabella.
bpo-31500: Phông chữ mặc định hiện được chia tỷ lệ trên màn hình HiDPI.
bpo-1612262: Trình duyệt mô-đun IDLE hiện hiển thị các lớp và hàm lồng nhau. Các bản vá gốc cho mã và thử nghiệm lần lượt của Guilherme Polo và Cheryl Sabella.
Công cụ/Bản trình diễn¶
bpo-30722: Làm cho bản demo hoạt động với Python 3.6 và các phiên bản mới hơn. Ngoài ra, hãy xóa tùy chọn
LOCALEvì nó không hoạt động với các mẫu chuỗi trong Python 3. Bản vá của Christoph Sarnowski.
C API¶
bpo-20891: Sửa lỗi PyGILState_Ensure(). Khi PyGILState_Ensure() được gọi trong một chuỗi không phải Python trước PyEval_InitThreads(), chỉ gọi PyEval_InitThreads() sau khi gọi PyThreadState_New() để khắc phục sự cố.
bpo-31532: Khắc phục lỗi hỏng bộ nhớ do trộn bộ cấp phát trong getpath.c giữa Py_GetPath() và Py_SetPath()
bpo-30697: Singleton
PyExc_RecursionErrorInstbị xóa vàPyErr_NormalizeException()không sử dụng nó nữa. Singleton này tồn tại lâu dài và các thành viên của nó không bao giờ bị xóa có thể gây ra lỗi phân tách trong quá trình hoàn thiện trình thông dịch. Xem thêm bpo-22898.
Bản cuối cùng của Python 3.6.3¶
Release date: 2017-10-03
Thư viện¶
bpo-31641: Cho phép lặp lại tùy ý trong
concurrent.futures.as_completed(). Sửa lỗi hồi quy trong 3.6.3rc1.
xây dựng¶
Ứng viên phát hành Python 3.6.3 1¶
Release date: 2017-09-18
Bảo mật¶
Cốt lõi và nội dung¶
bpo-31471: Khắc phục lỗi xác nhận trong
subprocess.Popen()trên Windows, trong trường hợp đối số env có phương thứckeys()không hợp lệ. Bản vá của Oren Milman.bpo-31418: Khắc phục lỗi xác nhận trong
PyErr_WriteUnraisable()trong trường hợp ngoại lệ có thuộc tính__module__không hợp lệ. Bản vá của Oren Milman.bpo-31416: Khắc phục lỗi xác nhận trong trường hợp có cảnh báo.filters hoặc Warning.defaultaction không hợp lệ. Bản vá của Oren Milman.
bpo-31411: Đưa ra TypeError thay vì SystemError trong trường hợp Warning.onceregistry không phải là từ điển. Bản vá của Oren Milman.
bpo-31373: Khắc phục một số trường hợp có thể xảy ra hành vi không xác định do giảm hạng dấu phẩy động.
bpo-30465: Thông tin vị trí (
linenovàcol_offset) trong chuỗi f hiện (hầu hết) chính xác. Điều này giúp các công cụ như flap8 hiển thị cảnh báo sai dòng (thường là dòng đầu tiên của tệp).bpo-31343: Bao gồm sys/sysmacros.h cho Major(), Minor() và makedev(). Thư viện GNU C có kế hoạch loại bỏ các chức năng khỏi sys/types.h.
bpo-31291: Khắc phục lỗi xác nhận trong
zipimport.zipimporter.get_datatrên Windows, khi giá trị trả về củapathname.replace('/','\\')không phải là một chuỗi. Bản vá của Oren Milman.bpo-31271: Khắc phục lỗi xác nhận trong phương thức
write()củaio.TextIOWrapper, khi bộ mã hóa không trả về đối tượng byte. Bản vá của Oren Milman.bpo-31243: Khắc phục sự cố trong một số phương thức của
io.TextIOWrapper, khi trạng thái của bộ giải mã không hợp lệ. Bản vá của Oren Milman.bpo-30721:
printhiện hiển thị gợi ý sử dụng chính xác khi sử dụng cú pháp chuyển hướng Python 2. Bản vá của Sanyam Khurana.bpo-31070: Khắc phục tình trạng chạy đua trong importlib _get_module_lock().
bpo-31095: Khắc phục sự cố tiềm ẩn trong GC do
tp_deallocgây ra, không gọiPyObject_GC_UnTrack().bpo-31071: Tránh che giấu TypeError ban đầu trong cuộc gọi bằng * giải nén khi các đối số khác được chuyển.
bpo-30978: str.format_map() hiện đã chuyển các ngoại lệ tra cứu chính. Trước đây mọi ngoại lệ đều được thay thế bằng ngoại lệ KeyError.
bpo-30808: Sử dụng _Py_atomic API cho trạng thái tín hiệu nhạy cảm đồng thời.
bpo-30876: Quá trình nhập tương đối từ gói chưa tải hiện sẽ nhập lại gói thay vì không thành công với SystemError. Quá trình nhập tương đối từ gói không phải hiện không thành công với ImportError thay vì SystemError.
bpo-30703: Cải thiện việc truyền tín hiệu. Tránh sử dụng Py_AddPendingCall từ bộ xử lý tín hiệu để tránh gọi các hàm không an toàn tín hiệu. Các thử nghiệm tôi thêm vào đây đều thất bại nếu không có phần còn lại của bản vá, trên Linux và OS X. Điều này có nghĩa là logic phân phối tín hiệu của chúng tôi có lỗi (một số tín hiệu có thể bị mất).
bpo-30765: Tránh chặn trong pthread_mutex_lock() khi PyThread_acquire_lock() được yêu cầu không chặn.
bpo-31161: Đảm bảo thông báo lỗi cú pháp 'Thiếu dấu ngoặc đơn' chỉ được áp dụng cho SyntaxError, không áp dụng cho các lớp con. Bản vá của Martijn Pieters.
bpo-30814: Đã khắc phục tình trạng chạy đua khi nhập mô-đun con từ một gói.
bpo-30597:
printhiện hiển thị thông tin đầu vào dự kiến trong thông báo lỗi tùy chỉnh khi được sử dụng làm câu lệnh Python 2. Bản vá của Sanyam Khurana.
Thư viện¶
bpo-31499: xml.etree: Khắc phục sự cố khi trình phân tích cú pháp là một phần của chu trình tham chiếu.
bpo-28556: đánh máy.get_type_hints hiện tìm thấy các toàn cục phù hợp cho các lớp và mô-đun theo mặc định (khi người gọi không chỉ định
globalns).bpo-28556: Cải thiện tốc độ cho mô-đun
typing. PR gốc của Ivan Levkivskyi và Mitar.bpo-31544: Mô-đun tăng tốc C của ElementTree đã bỏ qua các ngoại lệ được nêu ra khi tra cứu các phương thức đích TreeBuilder trong XMLParser().
bpo-31234: socket.create_connection() hiện sửa chu trình tham chiếu theo cách thủ công: xóa biến lưu trữ ngoại lệ cuối cùng khi thành công.
bpo-31457: Các đối tượng LoggerAdapter hiện có thể được lồng vào nhau.
bpo-31400: Cải thiện khả năng xử lý lỗi SSL để tránh mất số lỗi.
bpo-28958: ssl.SSLContext() hiện sử dụng thông tin lỗi OpenSSL khi ngữ cảnh không thể khởi tạo được.
bpo-27340: SSLSocket.sendall() hiện sử dụng chế độ xem bộ nhớ để tạo các lát dữ liệu. Điều này sửa lỗi hỗ trợ cho tất cả các đối tượng giống byte. Nó cũng hiệu quả hơn và tránh được việc sao chép tốn kém.
bpo-31178: Sửa lỗi nối chuỗi trong đường dẫn lỗi hiếm gặp trong mô-đun quy trình con
bpo-31350: Tối ưu hóa vi mô
asyncio._get_running_loop()để nhanh hơn tới 10%.bpo-31170: expat: Cập nhật libexpat từ 2.2.3 lên 2.2.4. Sửa lỗi sao chép một phần ký tự cho đầu vào UTF-8 (lỗi libexpat 115): https://github.com/libexpat/libexpat/issues/115
bpo-29136: Thêm bộ mật mã TLS 1.3 và OP_NO_TLSv1_3.
bpo-29212: Sửa các luồng concurrent.futures.thread.ThreadPoolExecutor để có tên luồng không dựa trên repr() theo mặc định khi không cung cấp thread_name_prefix. Bây giờ họ sẽ tự nhận mình là "ThreadPoolExecutor-y_n".
bpo-9146: Sửa lỗi phân đoạn trong _hashopenssl khi các hàm băm tiêu chuẩn như md5 không có sẵn trong thư viện OpenSSL được liên kết. Như trong một số môi trường xây dựng FIPS-140 đặc biệt.
bpo-27144: Các trình lặp
map()vàas_completed()trongconcurrent.futureshiện tránh giữ tham chiếu đến các đối tượng được tạo ra.bpo-10746: Sửa ctypes tạo mã loại PEP 3118 sai cho các loại số nguyên.
bpo-22536: Mô-đun quy trình con hiện đặt tên tệp khi FileNotFoundError được nâng lên trên hệ thống POSIX do không tìm thấy tệp thực thi hoặc cwd.
bpo-31249: concurrent.futures: WorkItem.run() được ThreadPoolExecutor sử dụng hiện phá vỡ chu trình tham chiếu giữa một đối tượng ngoại lệ và đối tượng WorkItem.
bpo-31247: xmlrpc.server giờ đây đã phá vỡ rõ ràng các chu kỳ tham chiếu khi sử dụng sys.exc_info() trong các ngoại lệ xử lý mã.
bpo-30102: Các mô-đun ssl và hashlib hiện gọi OPENSSL_add_all_algorithms_noconf() trên OpenSSL < 1.1.0. Chức năng này phát hiện các tính năng của CPU và cho phép tối ưu hóa trên một số kiến trúc CPU như POWER8. Bản vá dựa trên nghiên cứu của Gustavo Serra Scalet.
bpo-31185: Đã sửa các lỗi khác trong mô-đun tăng tốc asyncio.
bpo-31135: ttk: sửa phương thức destroy() của các lớp LabeledScale và OptionMenu. Gọi phương thức destroy() gốc ngay cả khi thuộc tính used không tồn tại. Phương thức LabeledScale.destroy() giờ đây cũng xóa rõ ràng các thuộc tính nhãn và tỷ lệ để giúp trình thu gom rác hủy tất cả các vật dụng.
bpo-31107: Sửa tính toán thuộc tính sai lệch
copyreg._slotnames()cho các lớp có tên bắt đầu bằng dấu gạch dưới. Bản vá của Shane Harvey.bpo-31061: Đã khắc phục sự cố khi sử dụng asyncio và chủ đề.
bpo-30502: Khắc phục việc xử lý các oid dài trong ssl. Dựa trên bản vá của Christian Heimes.
bpo-30119: ftplib.FTP.putline() hiện gửi ValueError trên các lệnh chứa CR hoặc LF. Bản vá của Donghee Na.
bpo-30595: multiprocessing.Queue.get() có thời gian chờ hiện sẽ thăm dò ý kiến của người đọc ở chế độ không chặn nếu lấy được khóa thành công nhưng quá trình lấy mất nhiều thời gian hơn thời gian chờ.
bpo-29403: Sửa lỗi autospec của
unittest.mockđể không bị lỗi trên các hàm dựng sẵn gắn với phương thức. Bản vá của Aaron Gallagher.bpo-30961: Sửa lỗi giảm tham chiếu mượn trong tracemalloc.
bpo-25684: Thay đổi radiobutton
ttk.OptionMenuthành duy nhất trên các phiên bản củaOptionMenu.bpo-30886: Khắc phục multiprocessing.Queue.join_thread(): nó hiện đợi cho đến khi luồng hoàn thành, ngay cả khi luồng được bắt đầu bởi cùng một tiến trình đã tạo hàng đợi.
bpo-29854: Sửa lỗi segfault trong readline khi sử dụng tùy chọn kích thước lịch sử của readline. Bản vá của Nir Soffer.
bpo-30319: socket.close() hiện bỏ qua lỗi ECONNRESET.
bpo-30828: Sửa lỗi viết ngoài giới hạn bằng
asyncio.CFuture.remove_done_callback().bpo-30807: signal.setitimer() có thể tắt bộ hẹn giờ khi truyền một giá trị nhỏ. Các giá trị nhỏ (chẳng hạn như 1e-6) là các giá trị khác 0 hợp lệ cho setitimer(), được chỉ định là lấy khoảng thời gian có độ phân giải micro giây. Tuy nhiên, trên một số nền tảng, quy trình chuyển đổi của chúng tôi có thể chuyển đổi 1e-6 thành khoảng 0, do đó vô hiệu hóa bộ hẹn giờ thay vì lập lịch (lập lại) nó.
bpo-30441: Sửa lỗi khi sửa đổi os.environ trong khi lặp lại nó
bpo-30532: Sửa lỗi trình phân tích cú pháp giá trị tiêu đề email bỏ khoảng trắng gấp trong một số trường hợp nhất định.
bpo-30879: os.listdir() và os.scandir() hiện phát ra tên byte khi được gọi với đối số giống byte.
bpo-30746: Bị cấm ký tự '=' trong tên biến môi trường trong
os.putenv()vàos.spawn*().bpo-29755: Đã sửa lỗi nhóm hàm lgettext() trong mô-đun gettext. Bây giờ họ luôn trả về byte.
Tài liệu¶
bpo-31294: Sửa đoạn mã không đầy đủ trong các ví dụ ZeroMQSocketListener và ZeroMQSocketHandler và điều chỉnh chúng cho phù hợp với Python 3.
bpo-21649: Thêm liên kết RFC 7525 và TLS phía máy chủ Mozilla vào tài liệu SSL.
bpo-30803: Làm rõ tài liệu về kiểm tra giá trị sự thật. Bản vá gốc của Peter Thomassen.
Kiểm tra¶
bpo-31320: Tắt dấu vết trong test_ssl
bpo-25674: Xóa bài kiểm tra ssl sha256.tbs-internet.com
bpo-30715: Địa chỉ thay đổi lệnh gọi lại ALPN cho OpenSSL 1.1.0f. Phiên bản mới nhất hoạt động giống như OpenSSL 1.0.2 và không còn hủy bỏ quá trình bắt tay nữa.
bpo-30822: regrtest: Loại trừ tzdata khỏi regrtest --all. Khi chạy bộ thử nghiệm bằng cách sử dụng --use=all / -u all, hãy loại trừ tzdata vì nó làm cho test_datetime quá chậm (15-20 phút trên một số buildbot) và sau đó sẽ hết thời gian trên một số buildbot. Sửa lỗi trình phân tích cú pháp dòng lệnh regrtest để cho phép truyền -u extralargefile để chạy test_zipfile64.
xây dựng¶
bpo-30854: Sửa lỗi biên dịch khi biên dịch --không có chủ đề. Bản vá của Masayuki Yamamoto.
cửa sổ¶
bpo-30389: Thêm tính năng phát hiện Visual Studio 2017 vào các bản phân phối trên Windows.
bpo-31340: Thay đổi tòa nhà với MSVC v141 (đi kèm với Visual Studio 2017)
bpo-30581: os.cpu_count() hiện trả về số lượng bộ xử lý chính xác trên Windows khi số lượng bộ xử lý logic lớn hơn 64.
bpo-30731: Thêm xmlns bị thiếu vào python.manifest để nó khớp với lược đồ.
IDLE¶
bpo-31493: bối cảnh mã IDLE - sửa lỗi cập nhật mã và bộ hẹn giờ cập nhật phông chữ. Việc hủy bộ hẹn giờ sẽ ngăn thông báo cảnh báo khi test_idle hoàn tất.
bpo-31488: IDLE - Cập nhật các tùy chọn không khóa trong các lớp mở rộng trước đây. Khi áp dụng các thay đổi trong hộp thoại cấu hình, hãy gọi .reload cho từng lớp tính năng. Thay đổi ParenMatch để các tùy chọn cập nhật ảnh hưởng đến các phiên bản hiện có được đính kèm với cửa sổ soạn thảo hiện có.
bpo-31477: IDLE - Cải thiện mục nhập rstrip trong tài liệu. Loại bỏ các khoảng trắng ở cuối nhiều hơn các khoảng trống. Các chuỗi ký tự nhiều dòng không bị bỏ qua.
bpo-31480: IDLE - thực hiện các bài kiểm tra vượt qua với tiện ích mở rộng zzdummy bị tắt theo mặc định.
bpo-31421: Ghi lại cách IDLE chạy các chương trình tkinter. IDLE gọi cập nhật tcl/tk ở chế độ nền để giúp việc tương tác và thử nghiệm trực tiếp với các ứng dụng tkinter dễ dàng hơn nhiều.
bpo-31414: IDLE -- sửa lỗi kiểm tra hộp nhập tk bằng cách xóa trước. Việc thêm vào một mục int không giống như xóa và chèn vì int('') sẽ thất bại.
bpo-31051: Sắp xếp lại hộp thoại cấu hình IDLE GenPage vào các phần Cửa sổ, Trình chỉnh sửa và Trợ giúp.
bpo-30617: IDLE - Thêm tài liệu và bài kiểm tra để vượt qua lớp con của trình soạn thảo. Di chuyển một số dữ liệu và chức năng từ lớp sang cấp mô-đun. Bản vá của Cheryl Sabella.
bpo-31287: IDLE - Không sửa đổi tkinter.message trong test_configdialog.
bpo-27099: Chuyển đổi các 'tiện ích mở rộng' tích hợp của IDLE thành các tính năng thông thường. Khoảng 10 tính năng IDLE đã được triển khai dưới dạng tiện ích mở rộng được cho là tùy chọn. Hành vi khác nhau của chúng có thể gây nhầm lẫn hoặc tệ hơn cho người dùng và không tốt cho việc bảo trì. Do đó việc chuyển đổi. Sự khác biệt chính đối với người dùng là các liên kết khóa có thể định cấu hình của người dùng cho các tính năng dựng sẵn hiện được xử lý thống nhất. Bây giờ, việc chỉnh sửa liên kết trong bộ khóa chỉ ảnh hưởng đến giá trị của nó trong bộ khóa. Tất cả các liên kết được xác định cùng nhau trong các bộ khóa mặc định dành riêng cho hệ thống trong config-extensions.def. Tất cả các bộ khóa tùy chỉnh được lưu toàn bộ trong config-extension.cfg. Tất cả đều có hiệu lực ngay sau khi nhấp vào Áp dụng hoặc Ok. Các sự kiện bị ảnh hưởng là '<<force-open-completions>>', '<<expand-word>>', '<<force-open-calltip>>', '<<flash-paren>>', '<<format-paragraph>>', '<<run-module>>', '<<check-module>>' và '<<zoom-height>>'. Mọi tùy chỉnh (toàn cầu) được thực hiện trước phiên bản 3.6.3 sẽ không ảnh hưởng đến tùy chỉnh dành riêng cho bộ khóa của chúng sau phiên bản 3.6.3. và ngược lại. Bản vá đầu tiên của Charles Wohlganger.
bpo-31206: IDLE: Lớp Factor HighPage(Frame) từ ConfigDialog. Bản vá của Cheryl Sabella.
bpo-31001: Thêm bài kiểm tra cho tab đánh dấu configdialog. Bản vá của Cheryl Sabella.
bpo-31205: IDLE: Lớp Factor KeysPage(Frame) từ ConfigDialog. Các bài kiểm tra sửa đổi một chút tiếp tục vượt qua. Bản vá của Cheryl Sabella.
bpo-31130: IDLE -- chặn rò rỉ trong test_configdialog. Bản vá đầu tiên của Victor Stinner.
bpo-31002: Thêm bài kiểm tra cho tab phím configdialog. Bản vá của Cheryl Sabella.
bpo-19903: IDLE: Mẹo gọi sử dụng
inspect.signaturethay vìinspect.getfullargspec. Điều này cải thiện mẹo gọi cho nội dung được chuyển đổi để sử dụng Phòng khám đối số. Bản vá của Louie Lu.bpo-31083: IDLE - Thêm đường viền của lớp TabPage trong configdialog. Cập nhật các lớp hiện có để phù hợp với đề cương. Bản vá đầu tiên của Cheryl Sabella.
bpo-31050: Lớp Factor GenPage(Frame) từ ConfigDialog. Các bài kiểm tra sửa đổi một chút tiếp tục vượt qua. Bản vá của Cheryl Sabella.
bpo-31004: IDLE - Lớp Factor FontPage(Frame) từ ConfigDialog. Các bài kiểm tra sửa đổi một chút tiếp tục vượt qua. Sửa chữa các bài kiểm tra chung. Bản vá chủ yếu của Cheryl Sabella.
bpo-30781: IDLE - Sử dụng tiện ích ttk trong ConfigDialog. Các bản vá của Terry Jan Reedy và Cheryl Sabella.
bpo-31060: IDLE - Hoàn tất việc sắp xếp lại các phương pháp của các phương pháp Nhóm ConfigDialog liên quan đến từng tab và các nút sẽ hỗ trợ viết bài kiểm tra và cải thiện các tab, đồng thời sẽ cho phép chia nhóm thành các lớp.
bpo-30853: IDLE -- Đưa lớp VarTrace ra khỏi ConfigDialog. Trình theo dõi phiên bản quản lý các cặp bao gồm biến tk và hàm gọi lại. Khi tính năng theo dõi được bật, việc đặt biến sẽ gọi hàm. Phạm vi kiểm tra của lớp mới là 100%.
bpo-31003: IDLE: Thêm nhiều bài kiểm tra cho tab General.
bpo-30993: IDLE - Cải thiện trang phông chữ configdialog và kiểm tra. Trong hộp thoại cấu hình: Ghi lại các đường dẫn nhân quả trong chuỗi tài liệu create_font_tab. Đơn giản hóa một số tên thuộc tính. Di chuyển các lệnh gọi set_samples sang var_changed_font (ý tưởng từ Cheryl Sabella). Di chuyển các chức năng liên quan đến các vị trí sau chức năng tạo widget. Trong test_configdialog: Sửa test_font_set để không phụ thuộc vào thứ tự. Sửa lỗi đổi tên test_indent_scale để nó kiểm tra tiện ích. Điều chỉnh các bài kiểm tra về chuyển động của lệnh gọi set_samples. Thêm các bài kiểm tra cho các chức năng tải. Đặt tất cả các bài kiểm tra phông chữ vào một lớp và các bài kiểm tra thụt lề tab vào một lớp khác. Ngoại trừ hai dòng, các bài kiểm tra này bao gồm hoàn toàn các chức năng liên quan.
bpo-30981: IDLE -- Thêm nhiều thử nghiệm trang phông chữ configdialog hơn.
bpo-28523: IDLE: thay thế 'màu' bằng 'màu' trong configdialog.
bpo-30917: Thêm bài kiểm tra cho idlib.config.IdleConf. Tăng phạm vi bảo hiểm từ 46% lên 96%. Bản vá của Louie Lu.
bpo-30934: Chi tiết về phạm vi tài liệu cho các bài kiểm tra Idlelib. Thêm phần vào Idlelib/idle-test/README.txt. Bao gồm kiểm tra xem các nhánh có được lấy theo cả hai cách không. Loại trừ mã dành riêng cho IDLE không chạy trong quá trình kiểm tra đơn vị.
bpo-30913: IDLE: Document ConfigDialog tk Các biến, phương thức và tiện ích trong chuỗi tài liệu Điều này sẽ tạo điều kiện thuận lợi cho việc cải thiện hộp thoại và chia tách lớp. Bản vá gốc của Cheryl Sabella.
bpo-30899: IDLE: Thêm bài kiểm tra cho các lớp con ConfigParser trong config. Bản vá của Louie Lu.
bpo-30881: IDLE: Thêm tài liệu vào browser.py. Bản vá của Cheryl Sabella.
bpo-30851: IDLE: Loại bỏ các biến không sử dụng trong configdialog. Một là bản sao, một là được đặt nhưng người dùng không thể thay đổi. Bản vá của Cheryl Sabella.
bpo-30870: IDLE: Trong hộp thoại Cài đặt, chọn phông chữ bằng phím Lên, Xuống cũng như chuột. Bản vá đầu tiên của Louie Lu.
bpo-8231: IDLE: chỉ gọi config.IdleConf.GetUserCfgDir một lần.
bpo-30779: IDLE: Factor ConfigThay đổi lớp từ configdialog, đưa vào config; Bài kiểm tra. * Trong cấu hình, đặt mã kiểm tra kết xuất vào một hàm; chạy nó và chạy thử trong 'if __name__ == '__main__'. * Thêm lớp config.ConfigChanges dựa trên Changes_class_v4.py về vấn đề bpo. * Thêm lớp test_config.ChangesTest, một phần sử dụng configdialog_tests_v1.py. * Sửa lại hộp thoại cấu hình để sử dụng Thay đổi cấu hình; xem tin nhắn theo dõi297804. * Sửa đổi hộp thoại test_config để phù hợp với những thay đổi trong hộp thoại cấu hình. * Loại bỏ các chức năng hộp thoại cấu hình không được sử dụng hoặc đã chuyển sang ConfigChanges. Cheryl Sabella đã đóng góp các phần của bản vá.
bpo-30777: IDLE: configdialog - Thêm tài liệu và sửa nhận xét. Bản vá của Cheryl Sabella.
bpo-30495: IDLE: Cải thiện chế độ xem văn bản bằng chuỗi tài liệu, tên PEP8 và nhiều bài kiểm tra khác. Bản vá của Cheryl Sabella.
bpo-30723: IDLE: Thực hiện một số cải tiến đối với parenmatch. Thêm kiểu 'parens' để làm nổi bật cả phần mở và phần gần hơn. Đặt kiểu 'mặc định', không phải mặc định, thành từ đồng nghĩa với 'dụng cụ mở'. Làm cho thời gian trễ hoạt động giống nhau với tất cả các kiểu. Thêm trợ giúp cho tab tiện ích mở rộng hộp thoại cấu hình, bao gồm trợ giúp về parenmatch. Thêm các bài kiểm tra mới. Bản vá gốc của Charles Wohlganger.
bpo-30674: IDLE: thêm tài liệu vào mô-đun grep. Bản vá của Cheryl Sabella
bpo-21519: Hộp thoại nhập khóa tùy chỉnh cơ bản của IDLE hiện phát hiện các bản sao chính xác. Bản vá gốc của Saimadhav Heblikar.
bpo-29910: IDLE không còn xóa một ký tự sau khi nhận xét một khu vực bằng phím tắt. Thêm
return 'break'cho vấn đề này và các xung đột tiềm ẩn khác giữa IDLE và các liên kết khóa mặc định.bpo-30728: Xem lại và thay đổi tên hộp thoại idlib.config. Phương thức viết thường và tên thuộc tính. Thay thế 'màu' bằng 'màu', mở rộng những tên quá khó hiểu, xóa dấu gạch dưới không cần thiết. Thay thế
import *bằng các mục nhập cụ thể. Các bản vá của Cheryl Sabella.bpo-6739: IDLE: Xác minh chuỗi khóa do người dùng nhập bằng cách cố gắng liên kết chúng với tk. Thêm bài kiểm tra cho cả 3 chức năng xác nhận. Bản vá gốc của G Polo. Các thử nghiệm được thêm vào bởi Cheryl Sabella.
Công cụ/Bản trình diễn¶
bpo-30983: các lệnh tích hợp gdb (py-bt, v.v.) hiện cũng hoạt động trên các bản dựng được chia sẻ được tối ưu hóa. PEP 523 đã giới thiệu _PyEval_EvalFrameDefault nội tuyến PyEval_EvalFrameEx trên các bản dựng chia sẻ không gỡ lỗi. Điều này đã phá vỡ khả năng sử dụng py-bt, py-up và một số tích hợp gdb dành riêng cho Python khác. Sự cố được khắc phục bằng cách chỉ tìm kiếm các khung _PyEval_EvalFrameDefault trong python-gdb.py. Bản vá gốc của Bruno "Polaco" Penteado.
Python 3.6.2 cuối cùng¶
Release date: 2017-07-17
Không có thay đổi nào kể từ khi phát hành ứng cử viên 2
Ứng viên phát hành Python 3.6.2 2¶
Release date: 2017-07-07
Bảo mật¶
bpo-30730: Ngăn chặn việc đưa biến môi trường vào quy trình con trên Windows. Ngăn chặn việc chuyển các biến môi trường và đối số lệnh khác.
bpo-30694: Nâng cấp bản sao người nước ngoài từ 2.2.0 lên 2.2.1 để sửa nhiều lỗ hổng bảo mật bao gồm: CVE 2017-9233 (DoS vòng lặp vô hạn thực thể bên ngoài), CVE 2016-9063 (Tràn số nguyên, sửa lại), CVE 2016-0718 (Khắc phục lỗi hồi quy từ bản sửa lỗi của 2.2.0 thành CVE 2016-0718) và CVE 2012-0876 (Bộ đếm băm tràn ngập với SipHash). Lưu ý: CVE 2016-5300 (Sử dụng các nguồn entropy dành riêng cho hệ điều hành như getrandom) không ảnh hưởng đến Python, vì Python đã lấy entropy từ HĐH để đặt bí mật người nước ngoài bằng
XML_SetHashSalt().bpo-30500: Sửa urllib.parse.splithost() để phân tích chính xác các đoạn. Ví dụ:
splithost('//127.0.0.1#@evil.com/')hiện trả về chính xác máy chủ127.0.0.1, thay vì coi@evil.comlà máy chủ trong xác thực (login@host).
Ứng viên phát hành Python 3.6.2 1¶
Release date: 2017-06-17
Bảo mật¶
bpo-29591: Cập nhật bản sao nước ngoài từ 2.1.1 lên 2.2.0 để nhận các bản sửa lỗi của CVE 2016-0718 và CVE 2016-4472. Xem https://sourceforge.net/p/expat/bugs/537/ để biết thêm thông tin.
Cốt lõi và nội dung¶
bpo-30682: Đã xóa xác nhận quá nghiêm ngặt không thành công đối với một số chuỗi f nhất định, chẳng hạn như eval("f'\n'") và eval("f'\r'").
bpo-30604: Di chuyển co_extra_freefuncs sang không theo từng luồng để tránh sự cố
bpo-29104: Đã sửa lỗi phân tích cú pháp dấu gạch chéo ngược trong chuỗi f.
bpo-27945: Đã sửa các lỗi phân tách khác nhau bằng dict khi bộ sưu tập đầu vào bị thay đổi trong quá trình tìm kiếm, chèn hoặc so sánh. Dựa trên các bản vá của Duane Griffin và Tim Mitchell.
bpo-25794: Đã sửa lỗi type.__setattr__() và type.__delattr__() cho các tên thuộc tính không được thực hiện. Dựa trên bản vá của Eryk Sun.
bpo-30039: Nếu một sự gián đoạn bàn phím xảy ra khi trình thông dịch đang trong quá trình tiếp tục một chuỗi lệnh gọi 'kết quả từ' hoặc 'chờ' lồng nhau, thì giờ đây nó đã được phân phối chính xác đến khung trong cùng.
bpo-12414: sys.getsizeof() trên một đối tượng mã hiện trả về các kích thước bao gồm cấu trúc mã và kích thước của các đối tượng mà nó tham chiếu. Bản vá của Donghee Na.
bpo-29949: Khắc phục sự hồi quy mức sử dụng bộ nhớ của đối tượng set và Frozenset.
bpo-29935: Đã sửa các thông báo lỗi trong phương thức index() của bộ, danh sách và deque khi truyền các chỉ mục sai loại.
bpo-29859: Hiển thị thông báo lỗi chính xác khi bất kỳ lệnh gọi pthread_* nào trong thread_pthread.h không thành công.
bpo-28876:
bool(range)hoạt động ngay cả khilen(range)tăngOverflowError.bpo-29600: Sửa các giá trị trả về của coroutine trong StopIteration.
bpo-28856: Khắc phục lỗi giám sát rằng định dạng %b cho byte phải hỗ trợ các đối tượng tuân theo giao thức bộ đệm.
bpo-29714: Khắc phục hồi quy khiến định dạng byte có thể bị lỗi khi chứa 0 byte bên trong.
bpo-29478: Nếu max_line_length=None được chỉ định trong khi sử dụng chính sách Compat32 thì nó sẽ không còn bị bỏ qua nữa. Bản vá của Mircea Cosbuc.
Thư viện¶
bpo-30616: Chức năng API của enum cho phép tạo các enum trống. Được vá bởi Donghee Na
bpo-30038: Khắc phục tình trạng tương tranh giữa việc phân phối tín hiệu và bộ mô tả tệp đánh thức. Bản vá của Nathaniel Smith.
bpo-23894: lib2to3 hiện nhận dạng chuỗi
rb'...'vàf'...'.bpo-23890: unittest.TestCase.assertRaises() hiện phá vỡ chu trình tham chiếu theo cách thủ công để không giữ cho các đối tượng tồn tại lâu hơn dự kiến.
bpo-30149: kiểm tra.signature() hiện hỗ trợ các lệnh gọi có tham số đối số biến được gói bằng phương thức một phần. Bản vá của Donghee Na.
bpo-30645: Sửa lỗi tính toán đường dẫn trong imp.load_package(), sửa lỗi này trong các trường hợp gói hàng chỉ được vận chuyển bằng mã byte. Bản vá của Alexandru Ardelean.
bpo-29931: Đã sửa lỗi kiểm tra so sánh cho các đối tượng ipaddress.ip_interface. Bản vá của Sanjay Sundaresan.
bpo-30605: re.compile() không còn tăng BytesWarning khi biên dịch một phiên bản byte với công cụ sửa đổi nội tuyến bị đặt sai vị trí. Bản vá của Roy Williams.
bpo-24484: Tránh tình trạng chạy đua trong quá trình dọn dẹp đa xử lý (#2159)
bpo-28994: Truy nguyên không còn được hiển thị cho SystemExit được đưa ra trong lệnh gọi lại được đăng ký bởi atexit.
bpo-30508: Không ghi lại các ngoại lệ nếu phương thức "cancel()" của Nhiệm vụ/Tương lai được gọi.
bpo-28556: Cập nhật mô-đun gõ: Thêm AsyncContextManager chung, thêm hỗ trợ cho ContextManager trên tất cả các phiên bản. PR gốc của Jelle Zijlstra và Ivan Levkivskyi
bpo-29870: Khắc phục rò rỉ ổ cắm ssl khi kết nối bị hủy khi triển khai asyncio/ssl. Bản vá của Michaël Sghaïer.
bpo-29743: Đóng vận chuyển trong quá trình bắt tay làm rò rỉ ổ cắm. Bản vá của Nikolay Kim
bpo-27585: Sửa lỗi hủy người phục vụ trong asyncio.Lock. Bản vá của Mathieu Sornay.
bpo-30418: Trên Windows, subprocess.Popen.communicate() giờ đây cũng bỏ qua EINVAL trên stdin.write() nếu tiến trình con vẫn đang chạy nhưng đã đóng đường ống.
bpo-29822: kiểm tra.isabstract() hiện hoạt động trong __init_subclass__. Bản vá của Nate Soares.
bpo-29581: ABCMeta.__new__ hiện chấp nhận
**kwargs, cho phép các lớp cơ sở trừu tượng sử dụng tham số từ khóa trong __init_subclass__. Bản vá của Nate Soares.bpo-30557: trình xử lý lỗi hiện lọc và hiển thị chính xác mã ngoại lệ trên Windows
bpo-30378: Khắc phục sự cố log.handlers.SysLogHandler không thể xử lý địa chỉ IPv6.
bpo-29960: Giữ nguyên trạng thái của trình tạo khi _random.Random.setstate() đưa ra một ngoại lệ. Bản vá của Bryan Olson.
bpo-30414: luồng chạy nền multiprocessing.Queue._feed không thoát khỏi vòng lặp chính ngoại lệ.
bpo-30003: Sửa lỗi xử lý các ký tự thoát trong codec HZ. Dựa trên bản vá của Ma Lin.
bpo-30301: Sửa lỗi AttributionError khi sử dụng SimpleQueue.empty() trong phương thức khởi động spawn và forkserver.
bpo-30329: imaplib và poplib hiện đã gặp lỗi WSAEINVAL ổ cắm Windows (mã 10022) khi tắt máy (SHUT_RDWR): Đã thử một thao tác không hợp lệ. Lỗi này đôi khi xảy ra trên các kết nối SSL.
bpo-30375: Cảnh báo phát ra khi biên dịch biểu thức chính quy giờ đây luôn trỏ đến dòng trong mã người dùng. Trước đây, chúng có thể trỏ vào phần bên trong của mô-đun re nếu được phát ra từ bên trong các nhóm hoặc điều kiện.
bpo-30048: Đã sửa lỗi
Task.cancel()có thể bị bỏ qua khi tác vụ đang chạy coroutine và coroutine được trả về mà không có thêmawaitnào nữa.bpo-30266: contextlib.AbstractContextManager hiện hỗ trợ chống đăng ký bằng cách đặt __enter__ = Không hoặc __exit__ = Không, theo mẫu được giới thiệu trong bpo-25958. Bản vá của Jelle Zijlstra.
bpo-30298: Làm suy yếu tình trạng cảnh báo không dùng nữa đối với công cụ sửa đổi nội tuyến. Hiện đã cho phép một số công cụ sửa đổi nội tuyến tiếp theo ở đầu mẫu (ví dụ:
'(?i)(?s)...'). Ở chế độ dài dòng, khoảng trắng và nhận xét hiện được cho phép trước và giữa các công cụ sửa đổi nội tuyến (ví dụ:'(?x) (?i) (?s)...').bpo-29990: Sửa lỗi kiểm tra phạm vi trong bộ giải mã GB18030. Bản vá gốc của Ma Lin.
bpo-26293: Kết quả thay đổi do tệp zip bị hỏng. (Xem thêm: bpo-29094)
bpo-30243: Đã xóa các phương thức __init__ của trình quét và bộ mã hóa của _json. Việc lạm dụng chúng có thể gây rò rỉ bộ nhớ hoặc treo máy. Bây giờ các đối tượng máy quét và bộ mã hóa đã được khởi tạo hoàn toàn trong các phương thức __new__.
bpo-30185: Tránh truy ngược bàn phímInterrupt trong quy trình trợ giúp máy chủ ngã ba khi nhận được Ctrl-C.
bpo-28556: Nhiều bản cập nhật khác nhau cho mô-đun gõ: thêm kiểu gõ.NoReturn, sử dụng WrapperDescriptorType, sửa một số lỗi nhỏ. PR gốc của Jim Fasarakis-Hilliard và Ivan Levkivskyi.
bpo-30205: Sửa lỗi getsockname() cho ổ cắm AF_UNIX không liên kết trên Linux.
bpo-30070: Đã sửa lỗi rò rỉ và sự cố khi xử lý lỗi trong mô-đun trình phân tích cú pháp.
bpo-30061: Đã khắc phục sự cố trong các phương thức IOBase __next__() và readlines() khi readline() hoặc __next__() lần lượt trả về đối tượng không có kích thước lớn. Đã khắc phục các lỗi khác có thể xảy ra do không kiểm tra kết quả của PyObject_Size(), PySequence_Size() hoặc PyMapping_Size().
bpo-30017: Được phép gọi phương thức close() của đối tượng người viết mục zip nhiều lần. Việc viết thư cho một trình soạn thảo đã đóng giờ đây luôn tạo ra ValueError.
bpo-30068: _io._IOBase.readlines sẽ kiểm tra xem nó có đóng trước khi có gợi ý hay không.
bpo-29694: Đã sửa lỗi điều kiện cuộc đua trong pathlib mkdir với cờ parent=True. Bản vá của Armin Rigo.
bpo-29692: Đã sửa lỗi tùy ý hủy chuỗi ngoại lệ RuntimeError trong contextlib.contextmanager. Bản vá của Siddharth Velankar.
bpo-29998: Pickling và sao chép ImportError hiện giữ nguyên các thuộc tính tên và đường dẫn.
bpo-29953: Đã sửa lỗi rò rỉ bộ nhớ trong phương thức thay thế() của các đối tượng ngày giờ và thời gian khi vượt quá đối số giới hạn.
bpo-29942: Khắc phục sự cố trong itertools.chain.from_iterable khi gặp phải các lần lặp trống dài.
bpo-27863: Đã khắc phục nhiều sự cố trong ElementTree do điều kiện chủng tộc và loại sai.
bpo-28699: Đã sửa lỗi trong các nhóm trong multiprocessing.pool khiến việc đưa ra một ngoại lệ ở lần đầu tiên của một lần lặp có thể nuốt chửng ngoại lệ đó hoặc khiến chương trình bị treo. Bản vá của Davin Potts và Xiang Zhang.
bpo-25803: Tránh các lỗi không chính xác do Path.mkdir(exist_ok=True) đưa ra khi HĐH ưu tiên các lỗi như EACCES hơn EEXIST.
bpo-29861: Đưa ra các tham chiếu đến các tác vụ, đối số và kết quả của chúng ngay khi chúng được hoàn thành trong multiprocessing.Pool.
bpo-29884: errorhandler: Khôi phục sigaltstack cũ trong quá trình gỡ bỏ. Bản vá của Christophe Zeitouny.
bpo-25455: Đã khắc phục sự cố khi lặp lại các đối tượng giống như tệp được đệm đệ quy.
bpo-29800: Khắc phục sự cố trong một phần.__repr__ nếu khóa của một phần.keywords không phải là chuỗi. Bản vá của Michael Seifert.
bpo-29742: get_extra_info() tăng ngoại lệ nếu được gọi khi vận chuyển ssl đã đóng. Bản vá của Nikolay Kim.
bpo-8256: Đã sửa lỗi có thể xảy ra hoặc lỗi đầu vào() nếu thuộc tính "mã hóa" hoặc "lỗi" của sys.stdin hoặc sys.stdout không được đặt hoặc không phải là chuỗi.
bpo-28298: Sửa lỗi ngăn mảng 'Q', 'L' và 'I' chấp nhận các phần tử có thể intable lớn (các đối tượng có __int__) làm phần tử. Bản vá của Oren Milman.
bpo-28231: Mô-đun zipfile hiện chấp nhận các đối tượng giống đường dẫn cho các đường dẫn bên ngoài.
bpo-26915: các phương thức index() và count() của bộ sưu tập.abc.Sequence hiện kiểm tra danh tính trước khi kiểm tra sự bằng nhau khi thực hiện so sánh.
bpo-29615: SimpleXMLRPCDispatcher không còn xâu chuỗi KeyError (hoặc bất kỳ ngoại lệ nào khác) thành (các) ngoại lệ được nêu ra trong các phương thức được gửi đi. Bản vá của Petr Motejlek.
bpo-30177: path.resolve(strict=False) không còn cắt đường dẫn sau phần tử đầu tiên không có trong hệ thống tập tin. Bản vá của Antoine Pietri.
IDLE¶
bpo-15786: Khắc phục một số sự cố với hộp tự động hoàn thành của IDLE. Bây giờ, thao tác sau sẽ hoạt động: nhấp vào các mục trong hộp lựa chọn; sử dụng thanh cuộn; chọn một mục bằng cách nhấn Return. Hiện tượng treo trên MacOSX sẽ không còn xảy ra nữa. Bản vá của Louie Lu.
bpo-25514: Thêm tiểu mục tài liệu về lỗi IDLE không khởi động được. Thông báo không có kết nối bật lên sẽ hướng người dùng đến phần này.
bpo-30642: Sửa lỗi rò rỉ tham chiếu trong các bài kiểm tra IDLE. Các bản vá của Louie Lu và Terry Jan Reedy.
bpo-30495: Thêm tài liệu cho textview.py và sử dụng tên PEP8. Các bản vá của Cheryl Sabella và Terry Jan Reedy.
bpo-30290: Trợ giúp về: sử dụng tên pep8 và thêm bài kiểm tra. Tăng độ bao phủ lên 100%. Các bản vá của Louie Lu, Cheryl Sabella và Terry Jan Reedy.
bpo-30303: Thêm tùy chọn _utest vào chế độ xem văn bản; thêm các bài kiểm tra mới. Tăng độ bao phủ lên 100%. Các bản vá của Louie Lu và Terry Jan Reedy.
C API¶
bpo-27867: Hàm PySlice_GetIndicesEx() không còn được thay thế bằng macro nếu Py_LIMITED_API không được đặt.
xây dựng¶
bpo-29941: Thêm cờ cấu hình
--with-assertionsđể bật kiểm tra Cassert()một cách rõ ràng. Mặc định là tắt.--with-pydebugngụ ý--with-assertions.bpo-28787: Sửa các bản dựng Python ngoài cây khi được định cấu hình bằng
--with--dtrace.bpo-29243: Ngăn chặn việc xây dựng lại Python không cần thiết trong
make test,make installvà một số mục tiêu khác khi được định cấu hình với--enable-optimizations.bpo-23404: Không tạo lại các tệp đã tạo dựa trên thời gian sửa đổi tệp nữa: hành động hiện rõ ràng. Thay thế
make touchbằngmake regen-all.bpo-29643: Sửa lỗi
--enable-optimizationkhông hoạt động.
Tài liệu¶
bpo-30176: Thêm các hằng số liên quan đến thuộc tính bị thiếu trong tài liệu về lời nguyền.
bpo-30052: mục tiêu liên kết cho
bytes()vàbytearray()hiện là định nghĩa loại tương ứng của chúng, thay vì các mục nhập hàm dựng sẵn tương ứng. Sử dụng bytes và bytearray để tham khảo cái sau. Để đảm bảo điều này và các bản cập nhật tham chiếu chéo trong tương lai được áp dụng tự động, các bản dựng tài liệu hàng ngày hiện vô hiệu hóa các tính năng bộ nhớ đệm đầu ra mặc định trong Sphinx.bpo-26985: Thêm thông tin còn thiếu của đối tượng mã trong tài liệu kiểm tra.
Công cụ/Bản trình diễn¶
bpo-29367: python-gdb.py hiện cũng hỗ trợ các đối tượng
method-wrapper(wrapperobject).
Kiểm tra¶
bpo-30357: test_thread: setUp() hiện sử dụng support.threading_setup() và support.threading_cleanup() để đợi cho đến khi các luồng hoàn thành nhằm tránh tác dụng phụ ngẫu nhiên trong các lần kiểm tra sau. Bản vá đầu tiên được viết bởi Grzegorz Grzywacz.
bpo-30197: Các hàm nâng cao swap_attr() và swap_item() trong mô-đun test.support. Bây giờ chúng hoạt động khi xóa thuộc tính hoặc mục được thay thế bên trong câu lệnh with. Giá trị cũ của thuộc tính hoặc mục (hoặc Không có nếu nó không tồn tại) bây giờ sẽ được gán cho mục tiêu của mệnh đề "as", nếu có.
cửa sổ¶
bpo-30687: Định vị msbuild.exe trên Windows khi xây dựng thay vì vcvarsall.bat
bpo-30450: Quá trình xây dựng trên Windows không còn phụ thuộc vào Subversion nữa, thay vào đó lấy mã bên ngoài từ GitHub thông qua tập lệnh Python. Nếu không tìm thấy Python 3.6 trên hệ thống (thông qua
py -3.6), NuGet được sử dụng để tải xuống bản sao Python 32-bit.
Bản cuối cùng của Python 3.6.1¶
Release date: 2017-03-21
Cốt lõi và nội dung¶
bpo-29723: Thay đổi khởi tạo
sys.path[0]cho bpo-29139 đã gây ra sự hồi quy do bộc lộ sự không nhất quán trong cách khởi tạo sys.path khi thực thi__main__từ tệp zip, thư mục hoặc vị trí nhập khác. Giờ đây, trình thông dịch luôn tránh việc thêm thư mục mẹ của vị trí nhập vàosys.pathvà đảm bảo không có mục nhậpsys.pathnào khác vô tình bị sửa đổi khi chèn vị trí nhập có tên trên dòng lệnh.
xây dựng¶
bpo-27593: sửa định dạng thông tin git được sử dụng trong sys.version
Sửa nhận xét không tương thích trong python.h
Ứng viên phát hành Python 3.6.1 1¶
Release date: 2017-03-04
Cốt lõi và nội dung¶
bpo-28893: Đặt __nguyên nhân__ chính xác cho các lỗi về các sản phẩm chờ không hợp lệ được trả về từ __aiter__ và __anext__.
bpo-29683: Sửa lỗi phân bổ bộ nhớ trong _PyCode_SetExtra. Bản vá của Brian Coleman.
bpo-29684: Khắc phục hồi quy nhỏ của PyEval_CallObjectWithKeywords. Nó sẽ tăng TypeError khi kwargs không phải là một lệnh. Nhưng nó có thể gây ra segv khi args=NULL và kwargs không phải là một lệnh.
bpo-28598: Hỗ trợ __rmod__ cho các lớp con của str được gọi trước str.__mod__. Bản vá của Martijn Pieters.
bpo-29607: Sửa tính toán stack_effect cho CALL_FUNCTION_EX. Bản vá của Matthieu Dartiailh.
bpo-29602: Khắc phục việc xử lý không chính xác các số 0 đã ký trong hàm tạo phức tạp cho các lớp con phức tạp và cho các đầu vào có phương thức __complex__. Bản vá của Serhiy Storchaka.
bpo-29347: Đã sửa lỗi các con trỏ không xác định có thể hội thảo khi tạo các đối tượng yếu.
bpo-29438: Đã sửa lỗi không sử dụng được trong lệnh chia sẻ khóa.
bpo-29319: Ngăn chặn ghi đè RunMainFromImporter sys.path[0].
bpo-29337: Đã sửa lỗi BytesWarning khi so sánh các đối tượng mã. Cảnh báo có thể được phát ra tại thời điểm biên dịch.
bpo-29327: Đã khắc phục sự cố khi chuyển đối số từ khóa có thể lặp lại sang được sắp xếp ().
bpo-29034: Sửa lỗi rò rỉ bộ nhớ và không sử dụng sau này trong mô-đun os (path_converter).
bpo-29159: Khắc phục hồi quy theo byte(x) khi x.__index__() tăng Ngoại lệ.
bpo-28932: Không bao gồm <sys/random.h> nếu nó không tồn tại.
bpo-25677: Sửa vị trí của dấu mũ lỗi cú pháp cho các khối thụt lề. Dựa trên bản vá của Michael Layzell.
bpo-29000: Đã sửa lỗi định dạng byte của số bát phân với phần đệm bằng 0 ở dạng thay thế.
bpo-26919: Trên Android, dữ liệu hệ điều hành hiện luôn được mã hóa/giải mã đến/từ UTF-8, thay vì mã hóa ngôn ngữ để tránh sự không nhất quán với os.fsencode() và os.fsdecode() vốn đang sử dụng UTF-8.
bpo-28991: functools.lru_cache() dễ mắc phải lỗi quay lại khó hiểu có thể được kích hoạt bởi hàm len() được vá bằng khỉ.
bpo-28739: biểu thức chuỗi f không còn được chấp nhận dưới dạng chuỗi tài liệu và bởi ast.literal_eval() ngay cả khi chúng không bao gồm biểu thức.
bpo-28512: Đã sửa lỗi cài đặt thuộc tính offset của SyntaxError bằng PyErr_SyntaxLocationEx() và PyErr_SyntaxLocationObject().
bpo-28918: Sửa lỗi biên dịch chéo của xxlimited khi Python được xây dựng với Py_DEBUG được xác định.
bpo-28731: Tối ưu hóa _PyDict_NewPresized() để tạo chính xác kích thước chính xác. Cải thiện tốc độ của chữ chính tả với các phím không đổi lên tới 30%.
Thư viện¶
bpo-29169: Cập nhật zlib lên 1.2.11.
bpo-29623: Cho phép sử dụng đối tượng giống đường dẫn làm đối số duy nhất trong ConfigParser.read(). Bản vá của David Ellis.
bpo-28963: Khắc phục sự lặp lại bị ràng buộc trong asyncio.Future.remove_done_callback được triển khai trong C.
bpo-29704: asyncio.subprocess.SubprocessStreamProtocol không còn đóng trước khi tất cả các đường ống được đóng lại.
bpo-29271: Sửa lỗi Task.current_task và Task.all_tasks được triển khai trong C để chấp nhận đối số None như cách triển khai Python thuần túy của chúng.
bpo-29703: Sửa lỗi asyncio để hỗ trợ khởi tạo các vòng lặp sự kiện mới trong các tiến trình con.
bpo-29376: Sửa lỗi xác nhận trong threading._DummyThread.is_alive().
bpo-28624: Thêm một bài kiểm tra để kiểm tra tham số cwd của Popen() chấp nhận các đối tượng PathLike. Bản vá của Sayan Chowdhury.
bpo-28518: Bắt đầu một giao dịch ngầm trước câu lệnh DML. Bản vá của Aviv Palivoda.
bpo-29532: Việc thay đổi từ điển kwarg được chuyển tới functools.partial() không còn ảnh hưởng đến một phần đối tượng sau khi tạo.
bpo-29110: Sửa lỗi rò rỉ đối tượng tệp trong aifc.open() khi tệp được cung cấp dưới dạng đường dẫn hệ thống tệp và không ở định dạng AIFF hợp lệ. Bản vá của Anthony Zhang.
bpo-28556: Nhiều bản cập nhật khác nhau cho mô-đun gõ: gõ.Counter, gõ.ChainMap, bộ nhớ đệm ABC được cải thiện, v.v. PR gốc của Jelle Zijlstra, Ivan Levkivskyi, Manuel Krebber và Łukasz Langa.
bpo-29100: Khắc phục hồi quy datetime.fromtimestamp() được giới thiệu trong Python 3.6.0: kiểm tra năm tối thiểu và tối đa.
bpo-29519: Khắc phục các ngoại lệ phát sinh yếu trong khi tắt trình thông dịch khi được sử dụng với sự kết hợp hiếm hoi giữa đa xử lý và codec tùy chỉnh.
bpo-29416: Ngăn chặn vòng lặp vô hạn trong pathlib.Path.mkdir
bpo-29444: Đã sửa lỗi truy cập bộ đệm ngoài giới hạn trong phương thức group() của đối tượng khớp. Dựa trên bản vá của WGH.
bpo-29335: Sửa subprocess.Popen.wait() khi tiến trình con đã thoát sang trạng thái dừng thay vì kết thúc (ví dụ: khi ở trạng thái ptrace).
bpo-29290: Khắc phục sự hồi quy trong argparse khiến các thông báo trợ giúp sẽ nằm ở các khoảng trắng không bị ngắt.
bpo-28735: Đã sửa lỗi so sánh mock.MagickMock với mock.ANY.
bpo-29316: Khôi phục trạng thái tạm thời của mô-đun gõ, thêm ghi chú tương ứng vào tài liệu. Bản vá của Ivan L.
bpo-29219: Đã sửa lỗi đệ quy vô hạn trong bản sao của các phiên bản ctypes.CDLL chưa được khởi tạo.
bpo-29011: Sửa một thiếu sót quan trọng bằng cách thêm Deque vào mô-đun gõ.
bpo-28969: Đã sửa lỗi tình trạng chạy đua trong triển khai C của functools.lru_cache. KeyError có thể tăng lên khi chức năng được lưu trong bộ nhớ đệm có bộ nhớ đệm đầy được gọi đồng thời từ các luồng khác nhau có cùng đối số không được lưu trong bộ nhớ đệm.
bpo-29142: Trong urllib.request, hậu tố trong biến môi trường no_proxy có dấu chấm ở đầu có thể khớp lại với tên máy chủ có liên quan (ví dụ: .b.c khớp với a.b.c). Bản vá của Milan Oberkirch.
bpo-28961: Fix unittest.mock._Call helper: đừng bỏ qua tham số tên nữa. Bản vá được viết bởi Jiajun Huang.
bpo-29203: functools.lru_cache() hiện tôn trọng PEP 468 và giữ nguyên thứ tự các đối số từ khóa. f(a=1, b=2) hiện được lưu vào bộ nhớ đệm riêng biệt với f(b=2, a=1) vì cả hai lệnh gọi đều có thể cho kết quả khác nhau.
bpo-15812: kiểm tra.getframeinfo() hiện hiển thị chính xác dòng đầu tiên của ngữ cảnh. Bản vá của Sam Breese.
bpo-29094: Các giá trị chênh lệch trong tệp ZIP được tạo bằng đối tượng tệp bên ngoài và các chế độ "w" và "x" hiện có liên quan đến phần đầu của tệp.
bpo-29085: Cho phép Random.Random.seed() sử dụng tính ngẫu nhiên của hệ điều hành chất lượng cao thay vì pid và thời gian.
bpo-29061: Đã sửa lỗi trong secret.randbelow() lỗi này sẽ bị treo khi được cung cấp đầu vào âm. Bản vá của Brendan Donegan.
bpo-29079: Ngăn chặn vòng lặp vô hạn trong pathlib.resolve() trên Windows
bpo-13051: Đã sửa lỗi đệ quy trong các lời nguyền.textpad.Textbox lớn hoặc đã thay đổi kích thước. Dựa trên bản vá của Tycho Andersen.
bpo-29119: Khắc phục các điểm yếu trong phiên bản python thuần túy của phương thức Collection.OrderedDict move_to_end(). Đóng góp bởi Andra Bogildea.
bpo-9770: các biến vị ngữcurs.ascii hiện hoạt động chính xác với số nguyên âm.
bpo-28427: khóa cũ không được xóa giá trị mới khỏi WeakValueDictionary khi thu thập từ một chuỗi khác.
bpo-28923: Xóa các tạo phẩm của trình soạn thảo khỏi Tix.py.
bpo-29055: Lỗi tổng hợp trống gọn gàng trên Random.choice() bằng cách loại bỏ ngoại lệ ngược dòng.
bpo-28871: Đã khắc phục sự cố khi phân bổ ElementTree sâu.
bpo-19542: Sửa lỗi trong WeakValueDictionary.setdefault() và WeakValueDictionary.pop() khi bộ sưu tập GC diễn ra trong một luồng khác.
bpo-20191: Đã khắc phục sự cố trong Resource.prlimit() khi chuyển một chuỗi không sở hữu các phần tử của nó làm giới hạn.
bpo-28779: multiprocessing.set_forkserver_preload() sẽ làm hỏng quá trình forkserver nếu một mô-đun được tải trước khởi tạo một số đối tượng đa xử lý như khóa.
bpo-28847: dbm.dumb hiện hỗ trợ đọc các tệp chỉ đọc và không còn ghi tệp chỉ mục khi nó không bị thay đổi.
bpo-26937: Phương thức chown() của lớp tarfile.TarFile hiện không bị lỗi khi không thể nhập mô-đun grp, chẳng hạn như trên nền tảng Android.
IDLE¶
cửa sổ¶
bpo-29579: Xóa readme.txt khỏi trình cài đặt
bpo-29326: Bỏ qua các dòng trống trong tệp ._pth (Bản vá của Alexey Izbyshev)
bpo-28164: Xử lý chính xác tên tệp bảng điều khiển đặc biệt (bản vá của Eryk Sun)
bpo-29409: Triển khai PEP 529 cho io.FileIO (Bản vá của Eryk Sun)
bpo-29392: Ngăn chặn sự cố khi chuyển các đối số không hợp lệ vào mô-đun msvcrt.
bpo-25778: winreg không cắt ngắn chuỗi chính xác (Bản vá của Eryk Sun)
bpo-28896: Ngừng sử dụng WindowsRegistryFinder và tắt nó theo mặc định.
C API¶
bpo-27867: Hàm PySlice_GetIndicesEx() được thay thế bằng macro nếu Py_LIMITED_API không được đặt hoặc đặt thành giá trị trong khoảng 0x03050400 đến 0x03060000 (không bao gồm) hoặc 0x03060100 trở lên.
bpo-29083: Đã sửa lỗi khai báo một số hàm API công khai. PyArg_VaParse() và PyArg_VaParseTupleAndKeywords() không khả dụng ở số lượng giới hạn API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() và Py_BuildValue() không có sẵn trong phiên bản giới hạn API < 3.3 khi PY_SSIZE_T_CLEAN được xác định.
bpo-29058: Tất cả các tiện ích mở rộng API ổn định được thêm sau Python 3.2 hiện chỉ khả dụng khi Py_LIMITED_API được đặt thành giá trị PY_VERSION_HEX của phiên bản Python tối thiểu hỗ trợ API này.
Tài liệu¶
bpo-28929: Liên kết tài liệu với tệp nguồn trên GitHub.
bpo-25008: Tài liệu smtpd.py không còn được dùng nữa và thêm con trỏ tới aiosmtpd, một giải pháp thay thế dựa trên asyncio của bên thứ ba.
bpo-26355: Thêm liên kết tiêu đề chuẩn trên mỗi trang vào phiên bản chính tương ứng của tài liệu. Bản vá của Matthias Bussonnier.
bpo-29349: Sửa cú pháp Python 2 trong mã để xây dựng tài liệu.
Kiểm tra¶
bpo-28087: Bỏ qua lỗi thăm dò test_asyncore và test_eintr trên macOS. Bỏ qua một số thử nghiệm của select.poll khi chạy trên macOS do các sự cố chưa được giải quyết với chức năng thăm dò hệ thống cơ bản trên một số phiên bản macOS.
bpo-29571: để khớp với hành vi của cờ
re.LOCALE, test_re.test_locale_flag hiện sử dụnglocale.getpreferredencoding(False)để xác định mã hóa ứng cử viên cho biểu thức chính quy thử nghiệm (cho phép nó bỏ qua thử nghiệm một cách chính xác khi mã hóa miền địa phương mặc định là mã hóa nhiều byte)bpo-28950: Không cho phép kết hợp -j0 với -T/-l trong các đối số dòng lệnh đáng tiếc nhất.
bpo-28683: Khắc phục các kiểm tra liên kết() ổ cắm unix và tăng PermissionError trên Android cho người dùng không phải root.
bpo-26939: Thêm hàm support.setswitchinterval() để sửa lỗi test_functools bị treo trên trình giả lập qemu Android armv7.
xây dựng¶
bpo-27593: sys.version và các hàm mô-đun nền tảng python_build(), python_branch() và python_revision() hiện sử dụng thông tin git thay vì hg khi xây dựng từ kho lưu trữ.
bpo-29572: Cập nhật trình cài đặt Windows build và OS X để sử dụng OpenSSL 1.0.2k.
bpo-26851: Đặt cờ liên kết và biên dịch Android.
bpo-28768: Sửa lỗi khai báo ngầm của hàm _setmode. Bản vá của Masayuki Yamamoto
bpo-29080: Loại bỏ sự phụ thuộc cứng vào hg.exe khỏi PCBuild/build.bat
bpo-23903: Đã thêm tên bị thiếu vào PC/python3.def.
bpo-28762: lockf() khả dụng trên Android API cấp 24, nhưng macro F_LOCK không được xác định trong android-ndk-r13.
bpo-28538: Sửa lỗi biên dịch xảy ra do if_nameindex() có sẵn trên Android API cấp 24, nhưng cấu trúc if_nameindex không được xác định.
bpo-20211: Không thêm thư mục cài đặt tệp tiêu đề C và thư mục cài đặt thư viện mã đối tượng vào đường dẫn tìm kiếm biên dịch chéo. Bản vá gốc của Thomas Petazzoni.
bpo-28849: Không xác định sys.implementation._multiarch trên Android.
Bản cuối cùng của Python 3.6.0¶
Release date: 2016-12-23
Không có thay đổi nào kể từ khi phát hành ứng cử viên 2
Ứng viên phát hành Python 3.6.0 2¶
Release date: 2016-12-16
Cốt lõi và nội dung¶
Công cụ/Bản trình diễn¶
bpo-28770: Sửa python-gdb.py cho các cuộc gọi nhanh.
cửa sổ¶
bpo-28896: Không dùng WindowsRegistryFinder.
xây dựng¶
bpo-28898: Ngăn chặn lỗi xây dựng gdb do xác định lại HAVE_LONG_LONG.
Ứng viên phát hành Python 3.6.0 1¶
Release date: 2016-12-06
Cốt lõi và nội dung¶
bpo-23722: Thay vì âm thầm tạo ra một lớp không hỗ trợ
super()đối số bằng 0 trong các phương thức, việc không vượt qua mục nhập vùng tên__classcell__mới lên đếntype.__new__giờ đây dẫn đếnDeprecationWarningvà một lớp hỗ trợsuper()không có đối số.bpo-28797: Việc sửa đổi lớp __dict__ bên trong phương thức __set_name__ của bộ mô tả được sử dụng bên trong lớp đó không còn ngăn việc gọi phương thức __set_name__ của các bộ mô tả khác nữa.
bpo-28782: Sửa lỗi trong quá trình triển khai
yield fromkhi kiểm tra xem lệnh tiếp theo có phải là YIELD_FROM hay không. Hồi quy được giới thiệu bởi WORDCODE (bpo-26647).
Thư viện¶
bpo-27030: Cho phép lại các lối thoát không xác định trong mẫu thay thế re.sub(). Nhưng chúng vẫn không được dùng nữa và sẽ bị tắt trong phiên bản 3.7.
bpo-28835: Khắc phục hồi quy được giới thiệu trong Warning.catch_warnings(): gọi Warning.showwarning() nếu nó bị ghi đè bên trong trình quản lý bối cảnh.
bpo-27172: Để hỗ trợ nâng cấp từ 2.7, việc ngừng sử dụng
inspect.getfullargspec()được ghi nhận trước đó đã bị hủy bỏ. Quyết định này có thể được xem xét lại sau khi nhánh Python 2.7 không còn được hỗ trợ chính thức.bpo-26273: Thêm các hằng số
socket.TCP_CONGESTION(Linux 2.6.13) vàsocket.TCP_USER_TIMEOUT(Linux 2.6.37) mới. Bản vá được viết bởi Omar Sandoval.bpo-24142: Đọc tệp cấu hình bị hỏng khiến configparser ở trạng thái không hợp lệ. Bản vá gốc của Florian Höch.
bpo-28843: Sửa tác vụ asyncio C để xử lý các ngoại lệ __traceback__.
C API¶
bpo-28808: PyUnicode_CompareWithASCIIString() hiện không bao giờ đưa ra ngoại lệ.
Tài liệu¶
Công cụ/Bản trình diễn¶
bpo-28023: Sửa lỗi python-gdb.py không hỗ trợ triển khai lệnh mới.
Python 3.6.0 beta 4¶
Release date: 2016-11-21
Cốt lõi và nội dung¶
bpo-28532: Hiển thị sys.version khi tùy chọn -V được cung cấp hai lần.
bpo-27100: Câu lệnh with bây giờ sẽ kiểm tra __enter__ trước khi kiểm tra __exit__. Điều này đưa ra các thông báo lỗi ít gây nhầm lẫn hơn khi thiếu cả hai phương pháp. Bản vá của Jonathan Ellington.
bpo-28746: Sửa phương thức mô tả tệp set_inheritable() trên các nền tảng không có lệnh ioctl FIOCLEX và FIONCLEX.
bpo-26920: Khắc phục lỗi không nhận được bộ ký tự của ngôn ngữ khi khởi chạy trình thông dịch, trên các nền tảng không có langinfo.
bpo-28648: Đã khắc phục sự cố trong Py_DecodeLocale() trong bản dựng gỡ lỗi trên Mac OS X khi giải mã các ký tự thiên văn. Bản vá của Xiang Zhang.
bpo-19398: Dấu gạch chéo bổ sung không còn được thêm vào các thành phần sys.path trong trường hợp các thành phần PYTHONPATH tại thời gian biên dịch trống.
bpo-28665: Cải thiện tốc độ của opcode STORE_DEREF thêm 40%.
bpo-28583: PyDict_SetDefault không kết hợp bảng chia khi cần. Bản vá của Xiang Zhang.
bpo-27243: Thay đổi đang chờ xử lýDeprecationWarning -> DeprecationWarning. Như đã được thống nhất trong vấn đề, __aiter__ trả về một thứ có thể chờ đợi sẽ dẫn đến PendingDeprecationWarning trong 3.5 và DeprecationWarning trong 3.6.
bpo-26182: Sửa lỗi phản ánh trong mã làm tăng Cảnh báo khấu hao.
bpo-28721: Sửa các trình tạo không đồng bộ aclose() và athrow() để xử lý việc truyền bá StopAsyncIteration đúng cách.
Thư viện¶
bpo-28752: Đã khôi phục phương thức __reduce__() của đối tượng datetime.
bpo-28727: Các mẫu biểu thức chính quy, các đối tượng _sre.SRE_Pattern được tạo bởi re.compile(), có thể so sánh được (chỉ các toán tử x==y và x!=y). Thay đổi này sẽ khắc phục lỗi bpo-18383: không lặp lại các bộ lọc cảnh báo khi mô-đun cảnh báo được tải lại (điều thường chỉ được thực hiện trong các bài kiểm tra đơn vị).
bpo-20572: Tham số thời gian kết thúc không có giấy tờ của phương thức subprocess.Popen.wait hiện đưa ra Cảnh báo khấu hao.
bpo-25659: Trong ctypes, ngăn chặn sự cố khi gọi các phương thức from_buffer() và from_buffer_copy() trên các lớp trừu tượng như Array.
bpo-19717: Làm cho Path.resolve() thành công trên những đường dẫn không tồn tại. Bản vá của Vajrasky Kok
bpo-28563: Đã sửa lỗi DoS và thực thi mã tùy ý khi xử lý các lựa chọn dạng số nhiều trong mô-đun gettext. Trình phân tích cú pháp biểu thức hiện hỗ trợ cú pháp chính xác được hỗ trợ bởi GNU gettext.
bpo-28387: Đã khắc phục sự cố có thể xảy ra trong bộ giải phóng _io.TextIOWrapper khi trình thu gom rác được gọi trong luồng khác. Dựa trên bản vá của Sebastian Cufre.
bpo-28600: Tối ưu hóa loop.call_soon.
bpo-28613: Sửa lỗi get_event_loop() trả về vòng lặp hiện tại nếu được gọi từ coroutines/callbacks.
bpo-28634: Sửa asyncio.isfuture() để hỗ trợ unittest.Mock.
bpo-26081: Sửa lỗi phản ánh trong _asyncio.Future.__iter__().throw.
bpo-28639: Sửa lỗi kiểm tra.isawaitable để luôn trả về bool Patch của Justin Mayfield.
bpo-28652: Tạo các phương thức vòng lặp từ chối các loại ổ cắm mà chúng không hỗ trợ.
bpo-28653: Sửa lỗi phản ánh trong functools.lru_cache.
bpo-28703: Sửa lỗi asyncio.iscoroutinefunction để xử lý các đối tượng Mock.
bpo-28704: Sửa create_unix_server để hỗ trợ các đối tượng giống Path (PEP 519).
bpo-28720: Thêm bộ sưu tập.abc.AsyncGenerator.
Tài liệu¶
bpo-28513: Giao diện dòng lệnh được ghi lại của zipfile.
Kiểm tra¶
xây dựng¶
Python 3.6.0 beta 3¶
Release date: 2016-10-31
Cốt lõi và nội dung¶
bpo-28128: Cảnh báo không dùng nữa đối với chuỗi thoát str và byte không hợp lệ hiện in thông tin tốt hơn về nơi xảy ra lỗi. Bản vá của Serhiy Storchaka và Eric Smith.
bpo-28509: dict.update() không còn phân bổ bộ nhớ lớn không cần thiết nữa.
bpo-28426: Đã khắc phục sự cố tiềm ẩn trong PyUnicode_AsDecodedObject() trong bản dựng gỡ lỗi.
bpo-28517: Đã sửa từng lỗi một trong trình tối ưu hóa lỗ nhìn trộm khiến mã không thể truy cập được.
bpo-28214: Cải thiện báo cáo ngoại lệ cho các thuộc tính __set_name__ có vấn đề.
bpo-23782: Đã sửa lỗi rò rỉ bộ nhớ có thể xảy ra trong _PyTraceback_Add() và mất ngoại lệ trong PyTraceBack_Here().
bpo-28471: Khắc phục sự cố "Bộ cấp phát bộ nhớ Python được gọi mà không giữ GIL" trong socket.setblocking.
Thư viện¶
bpo-27517: Bộ nén và giải nén LZMA không còn đưa ra ngoại lệ nếu được cung cấp dữ liệu trống hai lần. Bản vá của Benjamin Fogle.
bpo-28549: Đã sửa lỗi segfault trong addch() của lời nguyền bằng ncurses6.
bpo-28449: tarfile.open() với chế độ "r" hoặc "r:" hiện cố gắng mở tệp tar bằng tính năng nén trước khi thử mở tệp đó mà không nén. Nếu không thì có 50% cơ hội thất bại với ign_zeros=True.
bpo-23262: Mô-đun trình duyệt web hiện hỗ trợ Firefox 36+ và các trình duyệt phái sinh. Dựa trên bản vá của Oleg Broytman.
bpo-27939: Đã sửa lỗi trong tkinter.ttk.LabeledScale và tkinter.Scale do biểu diễn thang đo dưới dạng giá trị float bên trong Tk. tkinter.IntVar hiện hoạt động nếu giá trị float được đặt thành biến Tk cơ bản.
bpo-18844: Các cách khác nhau để chỉ định trọng số cho Random.choices() hiện tạo ra các chuỗi kết quả giống nhau.
bpo-28255: Calendar.TextCalendar().prmonth() không còn in khoảng trắng ở đầu dòng mới sau khi in lịch của một tháng. Bản vá của Xiang Zhang.
bpo-20491: Lớp textwrap.TextWrapper hiện tôn trọng các khoảng trắng không bị phá vỡ. Dựa trên bản vá của Kaarle Ritvanen.
bpo-28353: os.fwalk() không còn bị lỗi với các liên kết bị hỏng.
bpo-28430: Sửa lỗi iterator của C được triển khai asyncio.Future không chấp nhận giá trị non-None được chuyển cho it.send(val).
bpo-27025: Tên đã tạo cho các tiện ích Tkinter hiện bắt đầu bằng "!" tiền tố để dễ đọc.
bpo-25464: Đã sửa lỗi HList.header_exists() trong mô-đun tkinter.tix bằng cách thêm một giải pháp thay thế cho lỗi thư viện Tix.
bpo-28488: Shutil.make_archive() không còn thêm mục "./" vào kho lưu trữ ZIP nữa.
bpo-25953: re.sub() hiện phát sinh lỗi tham chiếu nhóm số không hợp lệ trong mẫu thay thế ngay cả khi không tìm thấy mẫu trong chuỗi. Thông báo lỗi cho tham chiếu nhóm không hợp lệ hiện bao gồm chỉ mục nhóm và vị trí của tham chiếu. Dựa trên bản vá của SilentGhost.
bpo-18219: Tối ưu hóa csv.DictWriter cho số lượng cột lớn. Bản vá của Mariatta Wijaya.
bpo-28448: Fix C được triển khai asyncio.Future không hoạt động trên Windows.
bpo-28480: Sửa lỗi xây dựng mô-đun ổ cắm khi tắt đa luồng.
bpo-24452: Tạo trình duyệt web hỗ trợ Chrome trên Mac OS X.
bpo-20766: Sửa các tài liệu tham khảo bị rò rỉ bởi pdb trong quá trình xử lý trình xử lý SIGINT.
bpo-28492: Khắc phục cách ngoại lệ StopIteration được nâng lên trong _asyncio.Future.
bpo-28500: Sửa asyncio để xử lý GC gen không đồng bộ từ một luồng khác.
bpo-26923: Sửa lỗi asyncio.Gather để từ chối việc hủy sau khi tất cả các phần tử con đã hoàn tất. Bản vá của Johannes Ebke.
bpo-26796: Không định cấu hình số lượng công nhân cho trình thực thi threadpool mặc định. Bản vá đầu tiên của Hans Lawrenz.
bpo-28544: Triển khai asyncio.Task trong C.
cửa sổ¶
bpo-28522: Sửa lỗi phân bổ lại bộ đệm bị xử lý sai trong getpathp.c
xây dựng¶
Kiểm tra¶
Python 3.6.0 beta 2¶
Release date: 2016-10-10
Cốt lõi và nội dung¶
bpo-28183: Tối ưu hóa và dọn dẹp việc lặp lại chính tả.
bpo-26081: Đã thêm triển khai C của asyncio.Future. Bản vá gốc của Yury Selivanov.
bpo-28379: Đã thêm các kiểm tra và kiểm tra độ tỉnh táo cho PyUnicode_CopyCharacters(). Bản vá của Xiang Zhang.
bpo-28376: Loại vòng lặp tầm xa hiện được đăng ký là Iterator. Bản vá của Oren Milman.
bpo-28376: Việc tạo các phiên bản của range_iterator bằng cách gọi loại range_iterator hiện không được dùng nữa. Bản vá của Oren Milman.
bpo-28376: Hàm tạo của range_iterator hiện kiểm tra bước đó không phải là 0. Bản vá của Oren Milman.
bpo-26906: Việc giải quyết các phương thức đặc biệt của loại chưa được khởi tạo hiện gây ra việc khởi tạo ngầm loại thay vì lỗi.
bpo-18287: PyType_Ready() hiện kiểm tra xem tp_name có phải là NULL hay không. Bản vá gốc của Niklas Koep.
bpo-24098: Đã khắc phục sự cố có thể xảy ra khi AST bị thay đổi trong quá trình biên dịch.
bpo-28201: Dict giảm khả năng xảy ra xung đột thứ 2 trong bảng băm khi các bảng băm có cùng số bit thấp hơn.
bpo-28350: Các hằng chuỗi có ký tự null không còn được thực hiện nữa.
bpo-26617: Khắc phục sự cố khi GC chạy trong các lệnh gọi lại yếu.
bpo-27942: Các hằng chuỗi hiện được thực hiện đệ quy trong các bộ dữ liệu và tập hợp cố định.
bpo-21578: Đã sửa thông báo lỗi gây hiểu nhầm khi ImportError được gọi với đối số từ khóa không hợp lệ.
bpo-28203: Sửa lỗi loại không chính xác trong thông báo lỗi phức tạp (1.0, {2:3}). Bản vá của Soumya Sharma.
bpo-28086: Đối số vị trí var đơn của kiểu con bộ dữ liệu đã được chuyển đến hàm do C xác định mà không bị tổn hại. Bây giờ nó được chuyển đổi thành tuple chính xác.
bpo-28214: Bây giờ __set_name__ được tra cứu trên lớp thay vì phiên bản.
bpo-27955: Dự phòng khi đọc thiết bị /dev/urandom khi tòa nhà getrandom() không thành công với EPERM, ví dụ như khi bị chặn bởi SECCOMP.
bpo-28192: Không nhập dòng đọc ở chế độ biệt lập.
Nâng cấp cơ sở dữ liệu unicode nội bộ lên phiên bản Unicode 9.0.0.
bpo-28131: Khắc phục hồi quy trong hàm biên dịch_source() của zipimport. zipimport nên sử dụng mức tối ưu hóa tương tự như trình thông dịch.
bpo-28126: Thay thế Py_MEMCPY bằng memcpy(). Visual Studio có thể tối ưu hóa memcpy() đúng cách.
bpo-28120: Sửa lỗi dict.pop() cho từ điển phân tách khi cố xóa "khóa đang chờ xử lý" (Chưa được chèn vào bảng phân tách). Bản vá của Xiang Zhang.
bpo-26182: Tăng mức khấu haoCảnh báo khi sử dụng từ khóa không đồng bộ và chờ đợi làm tên biến/thuộc tính/lớp/hàm.
Thư viện¶
bpo-27998: Đã sửa lỗi hỗ trợ đường dẫn byte trong os.scandir() trên Windows. Bản vá của Eryk Sun.
bpo-28317: Trình dịch ngược hiện giải mã đối số FORMAT_VALUE.
bpo-26293: Đã sửa lỗi ghi tệp ZIP không bắt đầu từ đầu tệp. Giá trị chênh lệch trong tệp ZIP hiện có liên quan đến thời điểm bắt đầu lưu trữ theo thông số kỹ thuật.
bpo-28380: unittest.mock Các hàm autospec mô phỏng giờ đây đã hỗ trợ đúng cách cho khẳng định_gọi, khẳng định_not_gọi và khẳng định_gọi_once.
bpo-27181: xóa stats.geometric_mean và trì hoãn cho đến 3.7.
bpo-28229: mô-đun lzma hiện hỗ trợ pathlib.
bpo-28321: Đã sửa lỗi viết các ký tự không phải BMP với định dạng nhị phân trong plistlib.
bpo-28225: mô-đun bz2 hiện hỗ trợ pathlib. Bản vá đầu tiên của Ethan Furman.
bpo-28227: gzip hiện hỗ trợ pathlib. Bản vá của Ethan Furman.
bpo-27358: Tối ưu hóa việc hợp nhất các đối số từ khóa var và thông báo lỗi được cải thiện khi chuyển đối số không ánh xạ dưới dạng đối số từ khóa var.
bpo-28257: Thông báo lỗi được cải thiện khi truyền một đối số không thể lặp lại dưới dạng đối số vị trí var. Đã thêm mã op BUILD_TUPLE_UNPACK_WITH_CALL.
bpo-28322: Đã khắc phục sự cố có thể xảy ra khi giải nén các đối tượng itertools khỏi dữ liệu dưa không chính xác. Dựa trên bản vá của John Leitch.
bpo-28228: imghdr hiện hỗ trợ pathlib.
bpo-28226: biên dịch hiện hỗ trợ pathlib.
bpo-28314: Sửa lỗi khai báo hàm (cờ C) cho phương thức getiterator() của xml.etree.ElementTree.Element.
bpo-28148: Ngừng sử dụng localtime() và gmtime() trong mô-đun thời gian. Đã giới thiệu nền tảng độc lập _PyTime_localtime API tương tự như POSIX localtime_r nhưng có sẵn trên tất cả các nền tảng. Bản vá của Ed Schouten.
bpo-28253: Đã sửa lỗi chức năng lịch cho các tháng cực đoan: 0001-01 và 9999-12. Các phương thức itermonthdays() và itermonthdays2() được triển khai lại để không gọi itermonthdates(), điều này có thể khiến datetime.date thiếu/tràn.
bpo-28275: Đã sửa lỗi khả năng sử dụng sau khi rảnh trong các phương thức decompress() của các lớp LZMADecompressor và BZ2Decompressor. Bản vá gốc của John Leitch.
bpo-27897: Đã khắc phục sự cố có thể xảy ra trong sqlite3.Connection.create_collation() nếu chuyển đối tượng giống chuỗi không hợp lệ làm tên. Bản vá của Xiang Zhang.
bpo-18844: Random.choices() hiện có k làm đối số chỉ từ khóa để cải thiện khả năng đọc của các trường hợp phổ biến và phù hợp với chữ ký được sử dụng trong các ngôn ngữ khác.
bpo-18893: Sửa lỗi xử lý ngoại lệ không hợp lệ trong Lib/ctypes/macholib/dyld.py. Bản vá của Madison May.
bpo-27611: Đã sửa lỗi hỗ trợ cửa sổ gốc mặc định trong mô-đun tkinter.tix. Đã thêm tham số chính trong hàm tạo DisplayStyle.
bpo-27348: Trong mô-đun truy nguyên, khôi phục định dạng của các thông báo ngoại lệ như "Ngoại lệ: Không có". Điều này khắc phục hồi quy được giới thiệu trong 3.5a2.
bpo-25651: Cho phép sử dụng giá trị sai cho tham số msg của subTest().
bpo-27778: Khắc phục rò rỉ bộ nhớ trong os.getrandom() khi getrandom() bị gián đoạn bởi tín hiệu và trình xử lý tín hiệu đưa ra ngoại lệ Python.
bpo-28200: Sửa lỗi rò rỉ bộ nhớ trên Windows trong module os (sửa hàm path_converter()).
bpo-25400: RobotFileParser hiện trả về chính xác các giá trị mặc định cho crawl_delay và request_rate. Bản vá đầu tiên của Peter Wirtz.
bpo-27932: Ngăn rò rỉ bộ nhớ trong win32_ver().
Sửa lỗi UnboundLocalError trong socket._sendfile_use_sendfile.
bpo-28075: Kiểm tra ERROR_ACCESS_DENIED trong quá trình triển khai os.stat() của Windows. Bản vá của Eryk Sun.
bpo-22493: Thông báo cảnh báo được phát ra bằng cách sử dụng cờ nội tuyến ở giữa biểu thức chính quy hiện chứa mẫu biểu thức chính quy (cắt ngắn). Bản vá của Tim Graham.
bpo-25270: Ngăn codecs.escape_encode() tăng SystemError khi một chuỗi byte trống được truyền.
bpo-28181: Nhận phản trọng lực trên HTTPS. Bản vá của Kaartic Sivaraam.
bpo-25895: Kích hoạt lược đồ WebSocket URL trong urllib.parse.urljoin. Bản vá của Gergely Imreh và Markus Holtermann.
bpo-28114: Khắc phục sự cố trong phân tích cú pháp_envlist() khi env chứa chuỗi byte. Bản vá của Eryk Sun.
bpo-27599: Đã sửa lỗi tràn bộ đệm trong binascii.b2a_qp() và binascii.a2b_qp().
bpo-27906: Khắc phục tình trạng cạn kiệt ổ cắm khi lưu lượng truy cập TCP cao. Bản vá của Kevin Conway.
bpo-28174: Xử lý khi SO_REUSEPORT không được hỗ trợ đúng cách. Bản vá của Seth Michael Larson.
bpo-26654: Kiểm tra functools.partial trong asyncio.Handle.__repr__. Bản vá của Iceboy.
bpo-26909: Sửa lỗi IO chậm trong asyncio. Bản vá của INADA Naoki.
bpo-28176: Khắc phục cuộc đua gọi lại trong asyncio.SelectorLoop.sock_connect.
bpo-27759: Sửa lỗi bộ chọn giữ lại các bộ mô tả tệp không hợp lệ. Bản vá của Mark Williams.
bpo-28368: Từ chối quá trình giám sát nếu trình giám sát trẻ em không có vòng lặp kèm theo. Bản vá của Vincent Michel.
bpo-28369: Tăng RuntimeError khi FD của phương tiện được sử dụng với add_reader, add_writer, v.v.
bpo-28370: Tăng tốc asyncio.StreamReader.readchính xác. Bản vá của Коренберг Марк.
bpo-28371: Ngừng chuyển asyncio.Handles tới run_in_executor.
bpo-28372: Sửa asyncio để hỗ trợ định dạng các coroutine không phải python.
bpo-28399: Xóa ổ cắm UNIX khỏi FS trước khi liên kết. Bản vá của Коренберг Марк.
bpo-27972: Cấm các Nhiệm vụ tự chờ đợi.
cửa sổ¶
bpo-28402: Thêm tệp danh mục đã ký cho stdlib trên Windows.
bpo-28333: Bật Unicode cho lời nhắc ps1/ps2 và input(). (Bản vá của Eryk Sun)
bpo-28251: Cải tiến hướng dẫn trợ giúp trên Windows.
bpo-28110: launcher.msi có các mã sản phẩm khác nhau giữa 32-bit và 64-bit
bpo-28161: Mở CON để truy cập ghi không thành công
bpo-28162: WindowsConsoleIO readall() không thành công nếu dòng đầu tiên bắt đầu bằng Ctrl+Z
bpo-28163: WindowsConsoleIO fileno() chuyển cờ sai tới _open_osfhandle
bpo-28164: _PyIO_get_console_type không thành công đối với nhiều đường dẫn khác nhau
bpo-28137: Đổi tên tệp đường dẫn Windows thành ._pth
bpo-28138: Tệp ._pth của Windows sẽ cho phép nhập trang web
C API¶
bpo-28426: Các hàm không được ghi lại không được dùng nữa PyUnicode_AsEncodedObject(), PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() và PyUnicode_AsEncodedUnicode().
xây dựng¶
bpo-28258: Đã sửa lỗi bản dựng với ngôn ngữ tiếng Estonia (mục tiêu python-config và distclean trong Makefile). Bản vá của Arfrever Frehtes Taifersar Arahesis.
bpo-26661: setup.py hiện phát hiện libffi của hệ thống bằng trình bao bọc multiarch.
bpo-15819: Loại bỏ tùy chọn thư mục tìm kiếm bao gồm dư thừa để xây dựng bên ngoài cây nguồn.
Kiểm tra¶
bpo-28217: Thêm mô-đun _testconsole để kiểm tra đầu vào của bảng điều khiển.
Python 3.6.0 beta 1¶
Release date: 2016-09-12
Cốt lõi và nội dung¶
bpo-23722: Ô __class__ được sử dụng bởi super() không đối số hiện được khởi tạo từ loại.__new__ thay vì __build_class__, vì vậy các phương thức lớp dựa vào ô đó giờ đây sẽ hoạt động chính xác khi được gọi từ các phương thức siêu dữ liệu trong quá trình tạo lớp. Bản vá của Martin Teichmann.
bpo-25221: Sửa kết quả bị hỏng từ PyLong_FromLong(0) khi Python được biên dịch với NSMALLPOSINTS = 0.
bpo-27080: Triển khai hỗ trợ định dạng cho PEP 515. Bản vá đầu tiên của Chris Angelico.
bpo-27199: Trong tarfile, hiển thị bufsize copyfileobj để cải thiện thông lượng. Bản vá của Jason Fried.
bpo-27948: Trong chuỗi f, chỉ cho phép dấu gạch chéo ngược bên trong dấu ngoặc nhọn (nơi chứa các biểu thức). Đây là một thay đổi đột phá so với bản phát hành 3.6 alpha, trong đó dấu gạch chéo ngược được cho phép ở bất kỳ đâu trong chuỗi f. Ngoài ra, yêu cầu các biểu thức bên trong chuỗi f phải được đặt trong dấu ngoặc nhọn và không thoát ra như
f'\x7b"hi"\x7d'.bpo-28046: Xóa các thư mục dành riêng cho nền tảng khỏi sys.path.
bpo-28071: Thêm sớm để phân biệt với tập trống.
bpo-25758: Ngăn zipimport mã hóa tên tệp một cách không cần thiết (bản vá của Eryk Sun)
bpo-25856: Thuộc tính __module__ của các lớp và hàm mở rộng hiện đã được thực hiện. Điều này dẫn đến dữ liệu dưa chua nhỏ gọn hơn với giao thức 4.
bpo-27213: Làm lại các mã opcode CALL_FUNCTION* để tạo ra mã byte ngắn hơn và hiệu quả hơn. Bản vá của Demur Rumed, thiết kế của Serhiy Storchaka, được Serhiy Storchaka và Victor Stinner đánh giá.
bpo-26331: Triển khai hỗ trợ mã thông báo cho PEP 515. Bản vá của Georg Brandl.
bpo-27999: Biến "toàn cầu sau khi sử dụng" thành SyntaxError và tương tự đối với nonlocal. Bản vá của Ivan Levkivskyi.
bpo-27985: Triển khai PEP 526 -- Cú pháp cho chú thích biến. Bản vá của Ivan Levkivskyi.
bpo-26058: Thêm phiên bản riêng mới vào loại dict dựng sẵn, tăng dần sau mỗi lần tạo từ điển và mỗi lần thay đổi từ điển. Triển khai PEP 509.
bpo-27364: Cặp ký tự dấu gạch chéo ngược không phải là chuỗi thoát hợp lệ hiện tạo ra Cảnh báo không dùng nữa. Bản vá của Emanuel Barry.
bpo-27350: Việc triển khai
dictđược thay đổi giống như PyPy. Nó nhỏ gọn hơn và giữ nguyên thứ tự chèn. (Khái niệm được phát triển bởi Raymond Hettinger và bản vá của Inada Naoki.)bpo-27911: Loại bỏ việc kiểm tra lỗi không cần thiết trong
exec_builtin_or_dynamic().bpo-27078: Đã thêm mã hoạt động BUILD_STRING. Đánh giá chuỗi f được tối ưu hóa.
bpo-17884: Python hiện yêu cầu các hệ thống có inttypes.h và stdint.h
bpo-27961: Yêu cầu nền tảng hỗ trợ
long long. Python đã không được biên dịch mà không cólong longtrong nhiều năm, vì vậy về cơ bản đây chỉ là hình thức.bpo-27355: Đã xóa hỗ trợ cho Windows CE. Nó chưa bao giờ kết thúc và Windows CE không còn là nền tảng phù hợp cho Python nữa.
Triển khai PEP 523.
bpo-27870: Việc dịch chuyển sang trái số 0 theo số nguyên lớn không còn cố gắng phân bổ lượng bộ nhớ lớn nữa.
bpo-25402: Trong chuyển đổi chuỗi int thành chuỗi thập phân, hãy cải thiện ước tính bộ nhớ trung gian cần thiết và loại bỏ kiểm tra tràn nghiêm ngặt không cần thiết. Bản vá của Serhiy Storchaka.
bpo-27214: Trong long_invert, hãy cẩn thận hơn khi sửa đổi đối tượng được trả về bởi long_add và xóa kiểm tra không cần thiết đối với các khoảng thời gian dài nhỏ. Cảm ơn Oren Milman đã phân tích và vá lỗi.
bpo-27506: Hỗ trợ truyền đối số "xóa" bytes/bytearray.translate() theo từ khóa.
bpo-27812: Xóa chính xác phản hồi của khung của trình tạo đối với trình tạo để tránh sự cố trong frame.clear().
bpo-27811: Khắc phục sự cố khi một coroutine chưa được chờ đợi được hoàn tất và bật cảnh báo khi có lỗi.
bpo-27587: Khắc phục một sự cố khác do PVS-Studio tìm thấy: Kiểm tra con trỏ rỗng sau khi sử dụng 'def' trong _PyState_AddModule(). Bản vá đầu tiên của Christian Heimes.
bpo-27792: Hoạt động modulo được áp dụng cho
boolvà các lớp conintkhác giờ đây luôn trả vềint. Trước đây kiểu trả về phụ thuộc vào giá trị đầu vào. Bản vá của Xiang Zhang.bpo-26984: int() bây giờ luôn trả về một phiên bản int chính xác.
bpo-25604: Sửa một lỗi nhỏ trong phép chia số nguyên đúng; lỗi này có khả năng gây ra các kết quả khác nhau trên các nền tảng có triển khai ldexp không đáng tin cậy.
bpo-24254: Đặt không gian tên định nghĩa lớp theo thứ tự mặc định.
bpo-27662: Khắc phục lỗi kiểm tra tràn trong
List_New: mã ban đầu đang kiểm traPy_SIZE_MAXthay vì giới hạn trên chính xác củaPy_SSIZE_T_MAX. Bản vá của Xiang Zhang.bpo-27782: Giờ đây, việc nhập mô-đun mở rộng nhiều pha đã cho phép sử dụng trường
m_methodsmột cách chính xác để thêm các hàm cấp mô-đun vào các phiên bản của loại không phải mô-đun được trả về từPy_create_mod. Bản vá của Xiang Zhang.bpo-27936: Hàm round() chấp nhận đối số None thứ hai cho một số loại nhưng không chấp nhận đối số khác. Đã sửa lỗi không nhất quán bằng cách chấp nhận Không có cho tất cả các loại số.
bpo-27487: Cảnh báo nếu tìm thấy đối số mô hình con thành "python -m" hoặc runpy.run_module() trong sys.modules sau khi các gói cha được nhập nhưng trước khi mô hình con được thực thi.
bpo-27157: Chỉ tạo chính loại() chấp nhận dạng một đối số. Bản vá của Eryk Sun và Emanuel Barry.
bpo-27558: Sửa lỗi SystemError khi triển khai câu lệnh "raise". Trong một chủ đề hoàn toàn mới, hãy đưa ra RuntimeError vì không có ngoại lệ hoạt động nào để phát lại. Bản vá được viết bởi Xiang Zhang.
bpo-28008: Triển khai PEP 530 -- khả năng hiểu không đồng bộ.
bpo-27942: Sửa lỗi rò rỉ bộ nhớ trong codeobject.c
Thư viện¶
bpo-28732: Khắc phục sự cố trong os.spawnv() không có phần tử nào trong args
bpo-28485: Luôn tăng ValueError cho tham số compillall.compile_dir(workers=...) âm, ngay cả khi không có đa luồng.
bpo-28037: Sử dụng sqlite3_get_autocommit() thay vì cài đặt Connection->inTransaction theo cách thủ công.
bpo-25283: Các thuộc tính tm_gmtoff và tm_zone hiện có sẵn trên tất cả các nền tảng với giá trị trả về là time.localtime() và time.gmtime().
bpo-24454: Hiện có thể truy cập các nhóm đối tượng đối sánh biểu thức chính quy bằng __getitem__. "mo[x]" tương đương với "mo.group(x)".
bpo-10740: sqlite3 không còn ngầm cam kết một giao dịch mở trước các câu lệnh DDL nữa.
bpo-17941: Thêm tham số module vào bộ sưu tập.namedtuple().
bpo-22493: Cờ nội tuyến hiện chỉ nên được sử dụng ở đầu biểu thức chính quy. Cảnh báo không dùng nữa được đưa ra nếu sử dụng chúng ở giữa biểu thức chính quy.
bpo-26885: xmlrpc hiện hỗ trợ sắp xếp lại các loại dữ liệu bổ sung được sử dụng bởi quá trình triển khai XML-RPC của Apache cho số và Không có.
bpo-28070: Đã sửa lỗi phân tích cú pháp cờ dài dòng nội tuyến trong các biểu thức thông thường.
bpo-19500: Thêm nối lại phiên SSL phía máy khách vào mô-đun ssl.
bpo-28022: Loại bỏ các đối số liên quan đến ssl và ủng hộ SSLContext. Việc ngừng sử dụng bao gồm việc tạo thủ công SSLSocket và certfile/keyfile (hoặc tương tự) trong ftplib, httplib, imaplib, smtplib, poplib và urllib.
bpo-28043: SSLContext đã cải thiện cài đặt mặc định: mật mã OP_NO_SSLv2, OP_NO_SSLv3, OP_NO_COMPRESSION, OP_CIPHER_SERVER_PREFERENCE, OP_SINGLE_DH_USE, OP_SINGLE_ECDH_USE và HIGH không có MD5.
bpo-24693: Đã thay đổi một số RuntimeError trong mô-đun zipfile thành các loại phù hợp hơn. Cải thiện một số thông báo lỗi và đầu ra gỡ lỗi.
bpo-17909:
json.loadvàjson.loadshiện hỗ trợ đầu vào nhị phân được mã hóa dưới dạng UTF-8, UTF-16 hoặc UTF-32. Bản vá của Serhiy Storchaka.bpo-27137: việc triển khai dự phòng Python thuần túy của
functools.partialhiện phù hợp với hoạt động của phiên bản C được tăng tốc của nó cho mục đích phân lớp, tẩy và biểu diễn văn bản. Bản vá của Emanuel Barry và Serhiy Storchaka.Khắc phục sự cố và tràn số nguyên có thể xảy ra trong mô-đun mmap với các kiểu sử dụng bất thường.
bpo-1703178: Khắc phục khả năng chuyển tùy chọn --link-objects sang lệnh distutils build_ext.
bpo-28019: itertools.count() không còn làm tròn bước không nguyên trong phạm vi từ 1,0 đến 2,0 đến 1.
bpo-18401: Pdb hiện hỗ trợ đối số từ khóa 'readrc' để kiểm soát xem có nên đọc tệp .pdbrc hay không. Bản vá của Martin Matusiak và Sam Kimbrel.
bpo-25969: Cập nhật ngữ pháp lib2to3 để xử lý các khái quát hóa giải nén được thêm vào trong 3.5.
bpo-14977: mailcap hiện tôn trọng thứ tự các dòng trong tệp mailcap ("khớp đầu tiên"), theo yêu cầu của RFC 1542. Bản vá của Michael Lazar.
bpo-28082: Chuyển đổi hằng số cờ re thành IntFlag.
bpo-28025: Chuyển đổi tất cả các hằng số mô-đun ssl thành IntEnum và IntFlags. Thuộc tính SSLContext hiện trả về cờ và enum.
bpo-23591: Thêm Flag, IntFlag và auto() vào mô-đun enum.
bpo-433028: Đã thêm hỗ trợ cho các phạm vi sửa đổi trong biểu thức thông thường.
bpo-24594: Xác thực tham số liên tục khi mở cơ sở dữ liệu MSI
bpo-17582: xml.etree.ElementTree hiện giữ nguyên khoảng trắng trong các thuộc tính (Bản vá của Duane Griffin. Đã được Stefan Behnel xem xét và phê duyệt.)
bpo-28047: Đã sửa lỗi tính toán độ dài dòng được sử dụng cho base64 CTE trong chính sách email mới.
bpo-27576: Sửa thứ tự cuộc gọi trong OrderedDict.__init__().
email.generator.DecodedGenerator hiện hỗ trợ từ khóa chính sách.
bpo-28027: Xóa các mô-đun không có giấy tờ khỏi
Lib/plat-*: IN, CDROM, DLFCN, TYPES, CDIO và STROPTS.bpo-27445: Không chuyển str(_charset) tới MIMEText.set_payload(). Bản vá của Claude Paroz.
bpo-24277: Email mới API không còn là tạm thời nữa và các tài liệu đã được sắp xếp lại và viết lại để nhấn mạnh API mới.
bpo-22450: urllib hiện bao gồm tiêu đề
Accept: */*trong số các tiêu đề mặc định. Điều này làm cho kết quả của các yêu cầu REST API trở nên nhất quán và dễ dự đoán hơn, đặc biệt là khi có liên quan đến máy chủ proxy.lib2to3.pgen3.driver.load_grammar() hiện tạo tệp bộ nhớ đệm ổn định giữa các lần chạy với cùng một dữ liệu đầu vào Grammar.txt bất kể cài đặt ngẫu nhiên băm.
bpo-28005: Cho phép lan truyền các lỗi ImportError trong quá trình triển khai mã hóa.
bpo-26667: Hỗ trợ các đối tượng giống đường dẫn trong importlib.util.
bpo-27570: Tránh các lệnh gọi memcpy() v.v. có độ dài bằng 0 với các con trỏ nguồn null trong mô-đun "ctypes" và "array".
bpo-22233: Ngắt dòng tiêu đề email only trên các ký tự CR và LF được chỉ định RFC, không phải ngắt dòng unicode tùy ý. Điều này cũng sửa lỗi trong phân tích cú pháp tiêu đề HTTP.
bpo-27331: Các lớp email.mime hiện đều chấp nhận từ khóa chính sách tùy chọn.
bpo-27988: Sửa email iter_attachments bị đột biến không chính xác trong danh sách tải trọng.
bpo-16113: Thêm hỗ trợ SHA-3 và SHAKE vào mô-đun hashlib.
Loại bỏ cảnh báo so sánh con trỏ tautological-con trỏ trong _scproxy.c.
bpo-27776: Chức năng
os.urandom()hiện chặn trên Linux 3.17 trở lên cho đến khi nhóm entropy urandom hệ thống được khởi tạo để tăng tính bảo mật. Thay đổi này là một phần của PEP 524.bpo-27778: Hiển thị tòa nhà cao tầng
getrandom()của Linux dưới dạng hàmos.getrandom()mới. Thay đổi này là một phần của PEP 524.bpo-27691: Sửa lỗi phân tích cú pháp của mô-đun ssl đối với các trường tên thay thế chủ đề GEN_RID trong chứng chỉ X.509.
bpo-18844: Thêm ngẫu nhiên.choices().
bpo-25761: Cải thiện báo cáo lỗi về dữ liệu dưa chua bị cắt bớt trong quá trình triển khai trình giải nén C. UnpicklingError hiện được nâng lên thay vì AttributionError và ValueError trong một số trường hợp.
bpo-26798: Thêm BLAKE2 (blake2b và blake2s) vào hashlib.
bpo-26032: Tối ưu hóa toàn cầu hóa trong pathlib bằng cách sử dụng os.scandir(); bây giờ nó nhanh hơn khoảng 1,5--4 lần.
bpo-25596: Các hàm glob() và iglob() được tối ưu hóa trong mô-đun glob; bây giờ chúng nhanh hơn khoảng 3--6 lần.
bpo-27928: Thêm scrypt (chức năng phái sinh khóa dựa trên mật khẩu) vào mô-đun hashlib (yêu cầu OpenSSL 1.1.0).
bpo-27850: Xóa 3DES khỏi danh sách mật mã mặc định của mô-đun ssl để chống lại cuộc tấn công Sweet32 (CVE 2016-2183).
bpo-27766: Thêm ChaCha20 Poly1305 vào danh sách mật mã mặc định của mô-đun ssl. (Bắt buộc phải có OpenSSL 1.1.0 hoặc LibreSSL).
bpo-25387: Kiểm tra giá trị trả về của winound.MessageBeep.
bpo-27866: Thêm phương thức SSLContext.get_ciphers() để nhận danh sách tất cả các mật mã được kích hoạt.
bpo-27744: Thêm AF_ALG (mật mã hạt nhân Linux) vào mô-đun ổ cắm.
bpo-26470: Chuyển mô-đun ssl và hashlib sang OpenSSL 1.1.0.
bpo-11620: Khắc phục sự hỗ trợ cho SND_MEMORY trong winound.PlaySound. Dựa trên bản vá của Tim Lesher.
bpo-11734: Thêm hỗ trợ cho các float nửa chính xác IEEE 754 vào mô-đun cấu trúc. Dựa trên bản vá của Eli Stevens.
bpo-27919: Tùy chọn phân phối
extra_pathkhông được dùng nữa trong bao bì distutils.bpo-23229: Thêm các hằng số
cmathmới:cmath.infvàcmath.nanđể khớp vớimath.infvàmath.nan, đồng thời thêmcmath.infjvàcmath.nanjđể khớp với định dạng được sử dụng bởi đại diện phức tạp.bpo-27842: csv.DictReader hiện trả về các hàng thuộc loại OrderedDict. (Được đóng góp bởi Steve Holden.)
Xóa hỗ trợ chuyển bộ mô tả tệp tới os.access. Nó không bao giờ hoạt động nhưng trước đó không tăng.
bpo-12885: Sửa lỗi khi distutils gặp symlink.
bpo-27881: Đã sửa các lỗi có thể xảy ra khi cài đặt sqlite3.Connection.isolation_level. Dựa trên bản vá của Xiang Zhang.
bpo-27861: Đã khắc phục sự cố trong sqlite3.Connection.cursor() khi nhà máy không tạo con trỏ. Bản vá của Xiang Zhang.
bpo-19884: Tránh xuất dữ liệu giả trên OS X bằng Gnu Readline.
bpo-27706: Khôi phục hành vi xác định của Random.Random().seed() cho chuỗi hạt bằng cách sử dụng gieo hạt phiên bản 1. Cho phép chuỗi lệnh gọi ngẫu nhiên() khớp chính xác với chuỗi lệnh gọi thu được trong Python 2. Bản vá của Nofar Schnider.
bpo-10513: Khắc phục hồi quy trong Connection.commit(). Các câu lệnh không nên được đặt lại sau khi thực hiện một cam kết.
bpo-12319: Hỗ trợ mã hóa chuyển khối được thêm vào các yêu cầu http.client.HTTPConnection. Lớp urllib.request.AbstractHTTPHandler không thực thi tiêu đề Độ dài nội dung nữa. Nếu yêu cầu HTTP có một tệp hoặc nội dung có thể lặp lại nhưng không có tiêu đề Độ dài nội dung thì thư viện sẽ quay trở lại sử dụng mã hóa truyền theo khối.
Một phiên bản mới của type.py từ https://github.com/python/typing: - Bộ sưu tập (chỉ dành cho 3.6) (bpo-27598) - Thêm FrozenSet vào __all__ (ngược dòng #261) - khắc phục sự cố trong _get_type_vars() (ngược dòng #259) - Xóa ràng buộc chính tả trong ForwardRef._eval_type (ngược dòng #252)
bpo-27832: Đặt tham số
_normalizethành từ khóa của hàm tạoFraction, đểFraction(2, 3, 4)hiện tăngTypeError.bpo-27539: Sửa kết quả
Fraction.__pow__không chuẩn hóa trong trường hợp số mũ âm và cơ số âm.bpo-21718: con trỏ.description hiện có sẵn cho các truy vấn sử dụng CTE.
bpo-27819: Trong các sdist của distutils, chỉ cần tạo các bản phân phối "gztar" (định dạng tar được nén) trên tất cả các nền tảng trừ khi "định dạng" được cung cấp.
bpo-2466: posixpath.ismount hiện nhận dạng chính xác các điểm gắn kết mà người dùng không có quyền truy cập.
bpo-9998: Trên Linux, ctypes.util.find_library hiện tìm kiếm trong LD_LIBRARY_PATH các thư viện dùng chung.
bpo-27573: thông báo thoát cho code.interact hiện có thể định cấu hình được.
bpo-27930: Cải thiện hành vi của log.handlers.QueueListener. Cảm ơn Paulo Andrade và Petr Viktorin vì đã phân tích và vá lỗi.
bpo-6766: Tính năng tham chiếu phân tán được thêm vào đa xử lý để hỗ trợ lồng các giá trị chia sẻ/đối tượng proxy.
bpo-21201: Cải thiện khả năng đọc thông báo lỗi đa xử lý. Cảm ơn Wojciech Walczak về bản vá.
asyncio: Thêm set_protocol/get_protocol vào Transports.
bpo-27456: asyncio: Đặt TCP_NODELAY theo mặc định.
IDLE¶
bpo-15308: Thêm 'thực thi ngắt' (^C) vào menu Shell. Bản vá của Roger Serwy, được cập nhật bởi Bayard Randel.
bpo-27922: Dừng các bài kiểm tra IDLE từ các tiện ích gui 'nhấp nháy' trên màn hình.
bpo-27891: Nhóm và sắp xếp các mục nhập một cách nhất quán trong các mô-đun Idlelib.
bpo-17642: thêm kích thước phông chữ lớn hơn để chiếu trong lớp học.
Thêm phiên bản vào tiêu đề của cửa sổ trợ giúp IDLE.
bpo-25564: Trong phần về IDLE -- sự khác biệt của bảng điều khiển, hãy đề cập rằng việc sử dụng exec có nghĩa là __buildins__ được xác định cho mỗi câu lệnh.
bpo-27821: Khắc phục hồi quy 3.6.0a3 ngăn không cho chọn bộ khóa tùy chỉnh khi không xác định chủ đề tùy chỉnh.
C API¶
Kiểm tra¶
bpo-27427: Các bài kiểm tra bổ sung cho học phần toán. Bản vá của Francisco Couzo.
bpo-27953: Bỏ qua các bài kiểm tra toán và cmath không thành công trên OS X 10.4 do triển khai libm kém.
bpo-26040: Cải thiện mức độ bao phủ và mức độ nghiêm ngặt của test_math và test_cmath. Bản vá của Jeff Allen.
bpo-27787: Gọi gc.collect() trước khi kiểm tra từng bài kiểm tra để tìm "luồng treo lơ lửng", vì các luồng treo lủng lẳng là tham chiếu yếu.
xây dựng¶
bpo-27566: Sửa mục tiêu sạch trong tệp đóng băng (bản vá của Lisa Roach)
bpo-27705: Thông báo cập nhật trong valid_ucrtbase.py
bpo-27976: Không dùng nữa việc xây dựng _ctypes với bản sao libffi đi kèm trên các nền tảng không phải OSX UNIX.
bpo-27983: Nguyên nhân thiếu công cụ llvm-profdata khi sử dụng clang theo yêu cầu khiến liên kết PGO là lỗi thời gian định cấu hình thay vì tạo thời gian khi bật
--with-optimizations. Đồng thời cải thiện khả năng tìm thấy công cụ llvm-profdata trên MacOS và một số Linux.bpo-21590: Hỗ trợ đầu dò DTrace và SystemTap.
bpo-26307: Bản dựng profile-opt hiện áp dụng PGO cho các mô-đun tích hợp sẵn.
bpo-26359: Thêm cờ --with-optimizations để bật hỗ trợ bản dựng LTO và PGO khi khả dụng.
bpo-27917: Đặt bộ ba nền tảng cho các bản dựng Android.
bpo-25825: Cập nhật tham chiếu đến đường dẫn cài đặt $(LIBPL) trên AIX. Đường dẫn này đã được thay đổi trong 3.2a4.
Cập nhật trình cài đặt OS X để sử dụng SQLite 3.14.1 và Xperia 5.2.2.
bpo-21122: Sửa các bản dựng LTO trên OS X.
bpo-17128: Xây dựng trình cài đặt OS X bằng bản sao OpenSSL riêng. Đồng thời cung cấp tập lệnh lệnh Cài đặt chứng chỉ mẫu để cài đặt một bộ chứng chỉ gốc từ mô-đun chứng chỉ của bên thứ ba.
Công cụ/Bản trình diễn¶
bpo-27952: Giúp Tools/scripts/fixcid.py hoạt động với Python 3 và mô-đun "re" hiện tại, tránh thoát dấu gạch chéo ngược Python không hợp lệ và sửa lỗi phân tích cú pháp các dấu trích dẫn C thoát.
cửa sổ¶
bpo-28065: Cập nhật phần phụ thuộc xz lên 5.2.2 và xây dựng nó từ nguồn.
bpo-25144: Đảm bảo TargetDir được đặt trước khi tiếp tục cài đặt tùy chỉnh.
bpo-1602: Bảng điều khiển Windows không nhập hoặc in Unicode (PEP 528)
bpo-27781: Thay đổi mã hóa hệ thống tệp trên Windows thành UTF-8 (PEP 529)
bpo-27731: Chọn không tham gia MAX_PATH trên Windows 10
bpo-6135: Thêm các tham số mã hóa và lỗi vào subprocess.
bpo-27959: Thêm mã hóa oem, bí danh ansi vào mbcs, di chuyển bí danh sang tra cứu codec.
bpo-27982: Các chức năng của mô-đun winound hiện chấp nhận đối số từ khóa.
bpo-20366: Xây dựng hỗ trợ tìm kiếm toàn văn bản vào SQLite trên Windows.
bpo-27756: Thêm biểu tượng mới cho các tệp và quy trình Python trên Windows. Thiết kế của Cherry Wang.
bpo-27883: Cập nhật sqlite lên 3.14.1.0 trên Windows.
Python 3.6.0 alpha 4¶
Release date: 2016-08-15
Cốt lõi và nội dung¶
bpo-27704: Tối ưu hóa việc tạo byte và bytearray từ các đối tượng và các đối tượng giống byte. Tốc độ lên tới 3 lần đối với các vật thể ngắn. Bản vá gốc của Naoki Inada.
bpo-26823: Các phần lớn các dòng lặp lại trong truy nguyên hiện được viết tắt là "[Dòng trước đó lặp lại {count} lần nữa]" bằng kết xuất truy ngược tích hợp. Bản vá của Emanuel Barry.
bpo-27574: Giảm chi phí phân tích đối số từ khóa trong các hàm được triển khai bằng cách sử dụng Argument Clinic.
bpo-22557: Hiện việc nhập các mô-đun đã nhập nhanh hơn tới 2,5 lần.
bpo-17596: Bao gồm <wincrypt.h> để trợ giúp xây dựng Min GW.
bpo-17599: Trên Windows, đổi tên cấu trúc REPARSE_DATA_BUFFER được xác định riêng để tránh xung đột với định nghĩa từ Min GW.
bpo-27507: Thêm tính năng kiểm tra tràn số nguyên trong bytearray.extend(). Bản vá của Xiang Zhang.
bpo-27581: Đừng dựa vào gói để kiểm tra tràn trong PySequence_Tuple(). Bản vá của Xiang Zhang.
bpo-1621: Tránh tràn số nguyên có dấu trong các thao tác danh sách và bộ dữ liệu. Bản vá của Xiang Zhang.
bpo-27419: __import__() tiêu chuẩn không còn tra cứu "__import__" trong toàn cục hoặc nội trang để nhập mô-đun con hoặc "từ nhập". Đã khắc phục sự cố nếu đưa ra cảnh báo về việc không thể giải quyết gói từ __spec__ hoặc __package__.
bpo-27083: Tôn trọng biến môi trường PYTHONCASEOK trong Windows.
bpo-27514: Biến việc có quá nhiều khối tĩnh được lồng thành SyntaxError thay vì SystemError.
bpo-27366: Đã triển khai PEP 487 (Tùy chỉnh tạo lớp đơn giản hơn). Khi phân lớp con, phương thức lớp __init_subclass__ được gọi trên lớp cơ sở. Bộ mô tả được khởi tạo bằng __set_name__ sau khi tạo lớp.
Thư viện¶
bpo-26027: Thêm hỗ trợ PEP 519/__fspath__() vào mô-đun os và os.path. Bao gồm mã từ Jelle Zijlstra. (Xem thêm: bpo-27524)
bpo-27598: Thêm Bộ sưu tập vào bộ sưu tập.abc. Bản vá của Ivan Levkivskyi, tài liệu của Neil Girdhar.
bpo-25958: Hỗ trợ "chống đăng ký" các phương pháp đặc biệt từ nhiều ABC khác nhau, như __hash__, __iter__ hoặc __len__. Tất cả những thứ này (và một số thứ khác) có thể được đặt thành Không có trong một lớp triển khai và hành vi sẽ như thể phương thức đó hoàn toàn không được xác định. (Trước đây, cơ chế này chỉ tồn tại với __hash__, để làm cho các lớp có thể thay đổi không thể băm được.) Mã do Andrew Barnert và Ivan Levkivskyi đóng góp.
bpo-16764: Hỗ trợ đối số từ khóa cho zlib.decompress(). Bản vá của Xiang Zhang.
bpo-27736: Ngăn chặn segfault sau khi khởi tạo lại trình thông dịch do vấn đề về số lượng tham chiếu được giới thiệu trong mã cho bpo-27038 ở 3.6.0a3. Bản vá của Xiang Zhang.
bpo-25628: Các tham số verbose và rename cho bộ sưu tập.namedtuple hiện chỉ có từ khóa.
bpo-12345: Thêm hằng số toán học tau vào math và cmath. Xem thêm PEP 628.
bpo-26823: traceback.StackSummary.format hiện viết tắt các phần lớn của các dòng lặp lại là "[Dòng trước đó lặp lại {count} lần nữa]" (thay đổi này sau đó sẽ ảnh hưởng thêm đến các hoạt động hiển thị truy nguyên khác trong mô-đun). Bản vá của Emanuel Barry.
bpo-27664: Thêm vào concurrent.futures.thread.ThreadPoolExecutor() khả năng chỉ định tiền tố tên luồng.
bpo-27181: Thêm hình học_mean và harmonic_mean vào mô-đun thống kê.
bpo-27573: code.interact hiện in thông báo khi thoát.
bpo-6422: Thêm phương thức autorange vào đối tượng timeit.Timer.
bpo-27773: Sửa một số lỗi quản lý bộ nhớ server_hostname trong _ssl.wrap_socket().
bpo-26750: unittest.mock.create_autospec() hiện hoạt động chính xác cho các lớp con của thuộc tính() và các bộ mô tả dữ liệu khác. Loại bỏ bộ tuple unittest.mock.DescriptorTypes chưa bao giờ được sử dụng công khai, chưa bao giờ được ghi lại.
bpo-26754: Hiện tại, việc hỗ trợ không có giấy tờ đối với các đối tượng giống byte chung dưới dạng đường dẫn trong hàm biên dịch() và các hàm tương tự hiện không được dùng nữa.
bpo-26800: Hiện tại, việc hỗ trợ không có giấy tờ đối với các đối tượng giống byte chung dưới dạng đường dẫn trong hàm os hiện không được dùng nữa.
bpo-26981: Thêm tính tương thích _order_ vào enum.Enum cho cơ sở mã Python 2/3.
bpo-27661: Đã thêm đối số từ khóa tzinfo vào datetime.combine.
Trong mô-đun lời nguyền, hãy đưa ra lỗi nếu window.getstr() hoặc window.instr() được truyền giá trị âm.
bpo-27783: Khắc phục khả năng sử dụng bộ nhớ chưa được khởi tạo trong operator.methodcaller.
bpo-27774: Có thể sửa lỗi Py_DECREF trên đối tượng không có chủ sở hữu trong _sre.
bpo-27760: Khắc phục lỗi tràn số nguyên có thể xảy ra trong binascii.b2a_qp.
bpo-27758: Khắc phục tình trạng tràn số nguyên có thể xảy ra trong mô-đun _csv đối với độ dài bản ghi lớn.
bpo-27568: Ngăn chặn cuộc tấn công HTTPoxy (CVE 2016-1000110). Bỏ qua biến HTTP_PROXY khi môi trường REQUEST_METHOD được đặt, điều này cho biết tập lệnh ở chế độ CGI.
bpo-7063: Loại bỏ mã chết khỏi quá trình xử lý lát cắt của mô-đun "mảng". Bản vá của Chuck.
bpo-27656: Đừng cho rằng sched.h xác định bất kỳ hằng số SCHED_* nào.
bpo-27130: Trong mô-đun "zlib", khắc phục việc xử lý bộ đệm lớn (thường là 4 GiB) khi nén và giải nén. Trước đây, đầu vào được giới hạn ở 4 GiB, đồng thời các thao tác nén và giải nén không xử lý đúng kết quả 4 GiB.
bpo-24773: Đã triển khai PEP 495 (Định hướng giờ địa phương).
Hiển thị hằng số EPOLLEXCLUSIVE (khi được xác định) trong mô-đun chọn.
bpo-27567: Hiển thị các hằng số EPOLLRDHUP và POLLRDHUP trong mô-đun chọn.
bpo-1621: Tránh tràn phủ định int đã ký trong mô-đun "audioop".
bpo-27533: Phát hành GIL trong nt._isdir
bpo-17711: Đã sửa lỗi giải nén bằng ID liên tục với giao thức 0. Bản vá gốc của Alexandre Vassalotti.
bpo-27522: Tránh chu kỳ tham chiếu không chủ ý trong email.feedparser.
bpo-27512: Sửa lỗi segfault khi os.fspath() gọi phương thức __fspath__() gây ra ngoại lệ. Bản vá của Xiang Zhang.
IDLE¶
bpo-27714: text_textview và test_autocomplete hiện đã vượt qua khi chạy lại trong cùng một quy trình. Điều này xảy ra khi test_idle không thành công khi chạy với tùy chọn -w nhưng không có -jn. Khắc phục cảnh báo từ test_config.
bpo-27621: Đặt các thông báo lỗi xác thực phản hồi truy vấn vào chính hộp truy vấn thay vì trong một hộp thông báo riêng. Làm lại các bài kiểm tra cho phù hợp. Thêm các cải tiến cho Mac OSX. Bản vá gốc của Mark Roseman.
bpo-27620: Phím Escape hiện đóng Hộp truy vấn dưới dạng đã hủy.
bpo-27609: IDLE: tab sau khoảng trắng ban đầu phải tab, không tự động hoàn thành. Điều này khắc phục sự cố khi viết chuỗi tài liệu thụt lề ít nhất hai lần.
bpo-27609: Trả về rõ ràng Không khi cũng có kết quả trả về không phải Không. Trong một số trường hợp, đảo ngược một điều kiện và loại bỏ kết quả trả về.
bpo-25507: IDLE không còn chạy mã lỗi do nhập tkinter. Người dùng phải bao gồm các thao tác nhập tương tự cần thiết để chạy trực tiếp trong Python.
bpo-27173: Thêm 'IDLE Modern Unix' vào bộ khóa tích hợp. Đặt bộ khóa mặc định tùy thuộc vào nền tảng. Thêm thử nghiệm cho những thay đổi đối với mô-đun cấu hình.
bpo-27452: thêm bộ đếm dòng và crc vào kết xuất thử nghiệm configHandler của IDLE.
Kiểm tra¶
bpo-25805: Bỏ qua bài kiểm tra trong test_pkgutil nếu cần nhưng bài kiểm tra này không hoạt động khi
__name__ == __main__. Bản vá của SilentGhost.bpo-27472: Thêm test.support.unix_shell làm đường dẫn đến shell mặc định.
bpo-27369: Trong test_pyexpat, tránh kiểm tra chi tiết thông báo lỗi đã thay đổi trong Expat 2.2.0.
bpo-27594: Ngăn chặn lỗi xác nhận khi chạy test_ast với mức độ phù hợp được bật: đảm bảo đối tượng mã có số dòng đầu tiên hợp lệ. Bản vá được đề xuất bởi Ivan Levkivskyi.
cửa sổ¶
xây dựng¶
bpo-27713: Ngăn chặn các cảnh báo xây dựng giả khi cập nhật các tệp khởi động của importlib. Bản vá của Xiang Zhang
bpo-25825: Sửa các tham chiếu đến Mô-đun/python.exp, được yêu cầu trên AIX. Các tham chiếu vô tình bị thay đổi trong 3.5.0a1.
bpo-27453: lệnh gọi CPP trong cấu hình phải sử dụng CPPFLAGS. Bản vá của Chí Hsuan Yen.
bpo-27641: Tập lệnh cấu hình hiện chèn nhận xét vào tệp tạo tệp để ngăn các tệp thực thi pgen và _freeze_importlib khỏi bị biên dịch chéo.
bpo-26662: Đặt PYTHON_FOR_GEN trong cấu hình làm chương trình Python được sử dụng để tạo tệp trong quá trình xây dựng.
bpo-10910: Tránh lỗi biên dịch C++ trên FreeBSD và OS X. Đồng thời cập nhật phiên bản FreedBSD để kiểm tra cách giải quyết ctype UTF-8 ban đầu.
Python 3.6.0 alpha 3¶
Release date: 2016-07-11
Bảo mật¶
Cốt lõi và nội dung¶
bpo-27473: Đã sửa lỗi tràn số nguyên có thể xảy ra theo byte và nối bytearray. Bản vá của Xiang Zhang.
bpo-23034: Đầu ra của bản dựng Python đặc biệt với các macro COUNT_ALLOCS, SHOW_ALLOC_COUNT hoặc SHOW_TRACK_COUNT được xác định hiện bị tắt theo mặc định. Nó có thể được kích hoạt lại bằng tùy chọn "-X showalloccount". Bây giờ nó xuất ra stderr thay vì stdout.
bpo-27443: __length_hint__() của các trình vòng lặp bytearray không còn trả về số nguyên âm cho một bytearray đã thay đổi kích thước.
bpo-27007: Các phương thức lớp fromhex() của các lớp con byte và bytearray hiện trả về một thể hiện của lớp con tương ứng.
Thư viện¶
bpo-26844: Sửa thông báo lỗi cho imp.find_module() để tham chiếu đến 'đường dẫn' thay vì 'tên'. Bản vá của Lev Maximov.
bpo-23804: Sửa các cuộc gọi recv() có độ dài bằng 0 SSL để không chặn và không gây ra lỗi về EOF không sạch.
bpo-27466: Thay đổi định dạng thời gian được trả về bởi http.cookie.time2netscape, xác nhận định dạng cookie netscape và làm cho nó nhất quán với tài liệu.
bpo-21708: Hành vi dbm.dumb không được dùng nữa, khác với hành vi dbm thông thường: tạo cơ sở dữ liệu ở chế độ 'r' và 'w' và sửa đổi cơ sở dữ liệu ở chế độ 'r'.
bpo-26721: Thay đổi thuộc tính socketserver.StreamRequestHandler.wfile để triển khai BufferedIOBase. Đặc biệt, phương thức write() không còn ghi một phần nữa.
bpo-22115: Đã thêm các phương thức trace_add, trace_remove và trace_info trong lớp tkinter.Variable. Chúng thay thế các phương thức cũ trace_variable, trace, trace_vdelete và trace_vinfo sử dụng các lệnh Tcl lỗi thời và có thể không hoạt động trong các phiên bản Tcl trong tương lai. Đã sửa các phương thức theo dõi cũ: trace_vdelete() với chế độ sai không còn ngắt quá trình theo dõi, trace_vinfo() giờ đây luôn trả về danh sách các cặp chuỗi, việc theo dõi ở chế độ "u" hiện hoạt động.
bpo-26243: Hiện chỉ có đối số cấp độ cho zlib.compress() là đối số từ khóa. Đối số đầu tiên chỉ có tính chất vị trí.
bpo-27038: Hiển thị loại DirEntry dưới dạng os.DirEntry. Bản vá mã của Jelle Zijlstra.
bpo-27186: Cập nhật os.fspath()/PyOS_FSPath() để kiểm tra giá trị trả về của __fspath__() là str hay byte.
bpo-18726: Tất cả các tham số tùy chọn của các hàm dump(), dumps(), Load() và loading() cũng như các hàm tạo của lớp JSONEncoding và JSONDecoding trong mô-đun json hiện chỉ có từ khóa.
bpo-27319: Các phương thức Selection_set(), Selection_add(), Selection_remove() và Selection_toggle() của ttk.TreeView giờ đây cho phép chuyển nhiều mục dưới dạng nhiều đối số thay vì chuyển chúng dưới dạng một bộ dữ liệu. Khả năng gọi phương thức select() bằng các đối số không được chấp nhận.
bpo-27079: Đã sửa lỗi các hàmcurs.ascii isblank(), iscntrl() và ispunct().
bpo-27294: Trạng thái số trong đại diện cho các đối tượng sự kiện Tkinter hiện được biểu diễn dưới dạng kết hợp các cờ đã biết.
bpo-27177: So khớp các đối tượng trong mô-đun re hiện hỗ trợ các đối tượng giống chỉ mục dưới dạng chỉ mục nhóm. Dựa trên các bản vá của Jeroen Demeyer và Xiang Zhang.
bpo-26754: Một số hàm (biên dịch(), v.v.) chấp nhận đối số tên tệp được mã hóa dưới dạng số nguyên có thể lặp lại. Bây giờ chỉ chấp nhận các chuỗi và đối tượng giống byte.
bpo-26536: socket.ioctl hiện hỗ trợ SIO_LOOPBACK_FAST_PATH. Bản vá của Daniel Stokes.
bpo-27048: Ngăn chặn lỗi distutils trên Windows khi các biến môi trường chứa các ký tự không phải ASCII
bpo-27330: Đã sửa lỗi rò rỉ có thể xảy ra trong mô-đun ctypes.
bpo-27238: Loại bỏ các ngoại lệ trần trong mô-đun rùa. Bản vá gốc của Jelle Zijlstra.
bpo-27122: Khi một ngoại lệ được đưa ra trong ngữ cảnh đang được quản lý bởi contextlib.ExitStack() và một trong các trình tạo ngăn xếp thoát sẽ bắt và đưa nó vào một chuỗi, đừng nâng lại ngoại lệ ban đầu khi thoát, hãy để ngoại lệ mới được nối tiếp. Điều này tránh được lỗi PEP 479 được mô tả trong issue25782.
bpo-16864: sqlite3.Cursor.lastrowid hiện hỗ trợ câu lệnh REPLACE. Bản vá đầu tiên của Alex LordThorsen.
bpo-26386: Đã sửa lỗi các thao tác lựa chọn ttk.TreeView với id mục chứa khoảng trắng.
bpo-8637: Tôn trọng máy nhắn tin được đặt bởi env var MANPAGER (ưu tiên máy nhắn tin được đặt bởi env var PAGER).
bpo-16182: Sửa các chức năng khác nhau trong mô-đun "readline" để sử dụng mã hóa ngôn ngữ và sửa get_begidx() và get_endidx() để trả về chỉ mục điểm mã.
bpo-27392: Thêm loop.connect_accepted_socket(). Bản vá của Jim Fulton.
IDLE¶
bpo-27477: Hộp thoại tìm kiếm IDLE hiện sử dụng tiện ích ttk.
bpo-27173: Thêm 'IDLE Modern Unix' vào bộ khóa tích hợp. Đặt bộ khóa mặc định tùy thuộc vào nền tảng. Thêm thử nghiệm cho những thay đổi đối với mô-đun cấu hình.
bpo-27452: làm cho dòng lệnh "idle-test> python test_help.py" hoạt động. __file__ là tương đối khi python được khởi động trong thư mục của tệp.
bpo-27452: thêm bộ đếm dòng và crc vào kết xuất thử nghiệm configHandler của IDLE.
bpo-27380: IDLE: thêm query.py với hộp thoại Truy vấn cơ bản và các tiện ích ttk. Mô-đun có các lớp con MụcName, ModuleName và HelpSource, được sử dụng để lấy thông tin từ người dùng bằng configdialog và tệp =>Load Module. Mỗi lớp con có kiểm tra tính hợp lệ riêng. Việc sử dụng ModuleName cho phép người dùng chỉnh sửa tên mô-đun bị lỗi thay vì bắt đầu lại. Thêm bài kiểm tra và xóa hai tệp được kết hợp thành tệp mới.
bpo-27372: Test_idle không còn thay đổi ngôn ngữ nữa.
bpo-27365: Cho phép các ký tự không phải mã ascii trong IDLE NEWS.txt cho tên cộng tác viên.
bpo-27245: IDLE: Xóa sạch các chủ đề tùy chỉnh và tổ hợp phím. Trước đây, khi IDLE được khởi động từ bảng điều khiển hoặc bằng cách nhập, một loạt cảnh báo đã được đưa ra. Bản vá của Serhiy Storchaka.
bpo-24137: Chạy IDLE, test_idle và htest với root mặc định tkinter bị tắt. Sửa mã và kiểm tra không thành công với hạn chế này. Sửa lỗi htests để không tạo root và vòng lặp chính thứ hai và dư thừa.
bpo-27310: Khắc phục lỗi IDLE.app không khởi chạy được trên OS X do quá trình nhập vết tích.
C API¶
bpo-26754: PyUnicode_FSDecoding() đã chấp nhận đối số tên tệp được mã hóa dưới dạng số nguyên có thể lặp lại. Bây giờ chỉ chấp nhận các chuỗi và đối tượng giống byte.
xây dựng¶
bpo-28066: Khắc phục logic tìm kiếm thư mục bản dựng cho các tệp bao gồm được tạo khi xây dựng bên ngoài cây nguồn.
bpo-27442: Hiển thị cấp độ Android API mà python được xây dựng dựa trên, trong sysconfig.get_config_vars() dưới dạng 'ANDROID_API_LEVEL'.
bpo-27434: Trình thông dịch chạy bản dựng chéo, được tìm thấy trong PATH, giờ đây phải có cùng phiên bản tính năng (ví dụ: 3.6) với nguồn đang được tạo.
bpo-26930: Cập nhật các bản dựng Windows để sử dụng OpenSSL 1.0.2h.
bpo-23968: Đổi tên thư mục nền tảng từ plat-$(MACHDEP) thành plat-$(PLATFORM_TRIPLET). Đổi tên thư mục cấu hình (LIBPL) từ config-$(LDVERSION) thành config-$(LDVERSION)-$(PLATFORM_TRIPLET). Cài đặt mô-đun _sysconfigdata dành riêng cho nền tảng vào thư mục nền tảng và đổi tên nó thành ABIFLAGS.
Không sử dụng hỗ trợ tệp lớn cho GNU/Hurd.
Công cụ/Bản trình diễn¶
Tài liệu¶
Kiểm tra¶
bpo-27027: Đã thêm test.support.is_android, giá trị này đúng khi đây là bản dựng Android.
Python 3.6.0 alpha 2¶
Release date: 2016-06-13
Bảo mật¶
bpo-26556: Cập nhật expat lên 2.1.1, sửa lỗi CVE 2015-1283.
Khắc phục lỗ hổng tước TLS trong smtplib, CVE 2016-0772. Báo cáo của Nhóm Oststrom.
bpo-26839: Trên Linux,
os.urandom()hiện gọigetrandom()bằngGRND_NONBLOCKđể quay lại đọc/dev/urandomnếu nhóm entropy urandom chưa được khởi tạo. Bản vá được viết bởi Colm Buckley.
Cốt lõi và nội dung¶
bpo-27095: Đơn giản hóa MAKE_FUNCTION và loại bỏ các mã MAKE_CLOSURE. Bản vá của Demur Rumed.
bpo-27190: Tăng NotSupportedError nếu sqlite3 cũ hơn 3.3.1. Bản vá của Dave Sawyer.
bpo-27286: Đã sửa lỗi biên dịch opcode BUILD_MAP_UNPACK_WITH_CALL. Chức năng gọi với giải nén tổng quát (PEP 448) và tên từ khóa xung đột có thể gây ra hành vi không xác định.
bpo-27140: Đã thêm mã hoạt động BUILD_CONST_KEY_MAP.
bpo-27186: Thêm hỗ trợ cho các đối tượng os.PathLike vào open() (một phần của PEP 519).
bpo-27066: Đã sửa lỗi SystemError nếu công cụ mở tùy chỉnh (dành cho open()) trả về số âm mà không đặt ngoại lệ.
bpo-26983: float() giờ đây luôn trả về một phiên bản float chính xác. Cảnh báo không dùng nữa được đưa ra nếu __float__ trả về một thể hiện của một lớp con nghiêm ngặt của float. Trong các phiên bản tương lai của Python, đây có thể là lỗi.
bpo-27097: Trình thông dịch Python hiện nhanh hơn khoảng 7% nhờ giải mã lệnh được tối ưu hóa. Dựa trên bản vá của Demur Rumed.
bpo-26647: Trình thông dịch Python hiện sử dụng mã từ 16 bit thay vì mã byte. Bản vá của Demur Rumed.
bpo-23275: Cho phép gán vào danh sách mục tiêu trống trong dấu ngoặc tròn: () = iterable.
bpo-27243: Cập nhật giao thức __aiter__: thay vì trả về một đối tượng có thể chờ được phân giải thành trình vòng lặp không đồng bộ, thì trình vòng lặp không đồng bộ phải được trả về trực tiếp. Việc thực hiện trước đây sẽ kích hoạt Cảnh báo không dùng nữa đang chờ xử lý.
Thư viện¶
Nhận xét các hằng số socket (SO_REUSEPORT) và posix (O_SHLOCK, O_EXLOCK) hiển thị trên API không được triển khai trên GNU/Hurd. Dù sao thì chúng cũng sẽ không hoạt động trong thời gian chạy.
bpo-27025: Tên được tạo cho các tiện ích Tkinter giờ đây có ý nghĩa và dễ nhận biết hơn.
bpo-25455: Đã khắc phục sự cố khi lặp lại các đối tượng ElementTree.Element và functools.partial đệ quy.
bpo-27294: Repr được cải thiện cho các đối tượng sự kiện Tkinter.
bpo-20508: Cải thiện thông báo ngoại lệ của IPv{4,6}Network.__getitem__. Bản vá của Gareth Rees.
bpo-21386: Triển khai thuộc tính IPv4Address.is_global bị thiếu. Nó đã được ghi lại từ 07a5610bae9d. Bản vá đầu tiên của Roger Luethi.
bpo-27029: Đã xóa hỗ trợ không được dùng nữa của chế độ dòng mới phổ biến khỏi ZipFile.open().
bpo-27030: Các lối thoát không xác định bao gồm
'\'và một chữ cái ASCII trong biểu thức thông thường hiện là lỗi. Cờ re.LOCALE hiện chỉ có thể được sử dụng với các mẫu byte.bpo-27186: Thêm hỗ trợ os.PathLike vào DirEntry (một phần của PEP 519). Bản vá đầu tiên của Jelle Zijlstra.
bpo-20900: lệnh đăng ký distutils hiện giải mã chính xác các phản hồi HTTP. Bản vá đầu tiên của ingrid.
bpo-27186: Thêm hỗ trợ os.PathLike vào pathlib, xóa trạng thái tạm thời của nó (một phần của PEP 519). Bản vá đầu tiên của Dusty Phillips.
bpo-27186: Thêm hỗ trợ cho các đối tượng os.PathLike vào os.fsencode() và os.fsdecode() (một phần của PEP 519).
bpo-27186: Giới thiệu os.PathLike và os.fspath() (một phần của PEP 519).
Phiên bản mới của Typing.py cung cấp một số lớp và tính năng mới: @overload bên ngoài sơ khai, Reversible, DefaultDict, Text, ContextManager, Type[], NewType(), TYPE_CHECKING và nhiều bản sửa lỗi (lưu ý rằng một số tính năng mới chưa được triển khai trong mypy hoặc các máy phân tích tĩnh khác). Ngoài ra, các lớp dành cho PEP 492 (Awaitable, AsyncIterable, AsyncIterator) cũng đã được thêm vào (trên thực tế, chúng đã được đưa vào phiên bản 3.5.1 nhưng chưa bao giờ được đề cập).
bpo-25738: Ngăn chặn http.server.BaseHTTPRequestHandler.send_error() gửi nội dung thư cho Nội dung đặt lại 205. Ngoài ra, không gửi các trường tiêu đề Nội dung trong các phản hồi không có nội dung. Bản vá của Susumu Koshiba.
bpo-21313: Sửa mô-đun "nền tảng" để chấp nhận khi sys.version chứa thông tin bản dựng bị cắt bớt.
bpo-23883: Đã thêm các API bị thiếu vào __all__ để khớp với các API được ghi lại cho các mô-đun sau: cgi, hộp thư, mimetypes, plistlib và smtpd. Các bản vá của Jacek Kołodziej.
bpo-27164: Trong mô-đun zlib, cho phép giải nén các luồng Deflate thô bằng zdict được xác định trước. Dựa trên bản vá của Xiang Zhang.
bpo-24291: Sửa wsgiref.simple_server.WSGIRequestHandler để ghi hoàn toàn dữ liệu cho máy khách. Trước đây nó có thể ghi một phần và cắt bớt dữ liệu. Ngoài ra, wsgiref.handler.ServerHandler hiện có thể xử lý thiết bị xuất chuẩn bằng cách ghi một phần, nhưng tính năng này không được dùng nữa.
bpo-21272: Sử dụng _sysconfigdata.py để khởi tạo distutils.sysconfig.
bpo-19611:
inspecthiện báo cáo các tham số.0ẩn được tạo bởi trình biên dịch để hiểu và phạm vi biểu thức trình tạo như thể chúng là các tham số chỉ có vị trí được gọi làimplicit0. Bản vá của Jelle Zijlstra.bpo-26809: Thêm
__all__vàostring. Bản vá của Emanuel Barry.bpo-26373: subprocess.Popen.communicate hiện bỏ qua BrokenPipeError một cách chính xác khi tiến trình con chết trước khi .communicate() được gọi trong nhiều/mọi trường hợp.
Việc tra cứu tên hằng số IntEnum của mô-đun tín hiệu, ổ cắm và ssl hiện trả về một tên nhất quán cho các giá trị có nhiều tên. Ví dụ: signal.Signals(6) hiện tự gọi chính nó là signal.SIGALRM thay vì chuyển đổi giữa tín hiệu đó và signal.SIGIOT dựa trên hạt giống ngẫu nhiên băm của trình thông dịch.
bpo-27167: Làm rõ văn bản thông báo lỗi subprocess.CalledProcessError khi quá trình con chết do tín hiệu.
bpo-25931: Không xác định tên socketserver.Forking* trên các nền tảng như Windows không hỗ trợ os.fork().
bpo-21776: distutils.upload hiện đã xử lý HTTPError một cách chính xác. Bản vá đầu tiên của Claudiu Popa.
bpo-26526: Thay thế xác thực cây phân tích cú pháp tùy chỉnh trong mô-đun trình phân tích cú pháp bằng trình xác thực DFA đơn giản.
bpo-27114: Sửa SSLContext._load_windows_store_certs không thành công với PermissionError
bpo-18383: Tránh tạo các bộ lọc trùng lặp khi sử dụng filterwarnings và simplefilter. Dựa trên bản vá của Alex Shkop.
bpo-23026: winreg.QueryValueEx() hiện trả về một số nguyên cho loại REG_QWORD.
bpo-26741: subprocess.Popen structor hiện phát ra cảnh báo ResourceWarning nếu tiến trình con vẫn đang chạy.
bpo-27056: Tối ưu hóa Pickle.load() và Pickle.loads(), nhanh hơn tới 10% để giải tuần tự hóa nhiều đối tượng nhỏ.
bpo-21271: Tham số chỉ từ khóa mới trong lệnh gọi reset_mock.
IDLE¶
bpo-5124: Dán văn bản đã chọn bây giờ sẽ thay thế vùng chọn trên X11. Điều này phù hợp với cách hoạt động của tính năng dán trên Windows, Mac, hầu hết các ứng dụng Linux hiện đại và các tiện ích ttk. Bản vá gốc của Serhiy Storchaka.
bpo-24750: Chuyển tất cả các thanh cuộn trong phiên bản IDLE sang ttk. Khi cần thiết, các thử nghiệm tối thiểu sẽ được thêm vào để đáp ứng các thay đổi.
bpo-24759: IDLE yêu cầu tk 8.5 và các tiện ích ttk có sẵn. Xóa các bài kiểm tra phiên bản tk không cần thiết và mã cho các phiên bản cũ hơn. Thêm thử nghiệm cho bộ tô màu cú pháp IDLE.
bpo-27239: các hàm idlib.macosx.isXyzTk khởi tạo khi cần.
bpo-27262: di chuyển mã hủy liên kết Aqua, mã này cho phép các menu ngữ cảnh, sang macosx.
bpo-24759: Làm rõ trong Idlelib.idle_test.__init__ rằng thư mục này là một triển khai riêng của test.test_idle và là công cụ dành cho người bảo trì.
bpo-27196: Dừng cảnh báo 'ThemeChanged' khi chạy thử nghiệm IDLE. Những điều này vẫn tồn tại sau khi các cảnh báo khác bị chặn trong #20567. Áp dụng giải pháp update_idletasks của Serhiy Storchaka cho bốn tệp thử nghiệm. Ghi lại lời khuyên bổ sung này vào id_test/README.txt
bpo-20567: Sửa đổi Idle_test/README.txt với lời khuyên về cách tránh các thông báo cảnh báo tk từ các bài kiểm tra. Áp dụng lời khuyên cho một số bài kiểm tra IDLE.
bpo-24225: Cập nhật idlib/README.txt với tên tệp và trình xử lý sự kiện mới.
bpo-27156: Xóa mã lỗi thời không được IDLE sử dụng.
bpo-27117: Làm cho colorizer htest và Turtledemo hoạt động với các chủ đề tối. Di chuyển mã để định cấu hình màu của tiện ích văn bản sang một chức năng mới.
bpo-24225: Đổi tên nhiều file
idlelib/*.pyvàidle_test/test_*.py. Chỉnh sửa tệp để thay thế tên cũ bằng tên mới khi tên cũ đề cập đến mô-đun chứ không phải lớp chứa trong đó. Xem vấn đề và phần IDLE trong Có gì mới trong 3.6 để biết thêm.bpo-26673: Khi tk báo cáo kích thước phông chữ là 0, hãy thay đổi thành kích thước 10. Những phông chữ như vậy trên Linux đã ngăn hộp thoại cấu hình mở.
bpo-21939: Thêm thử nghiệm cho bộ lọc màu của IDLE. Bản vá gốc của Saimadhav Heblikar.
bpo-21676: Thêm kiểm tra cho hộp thoại thay thế của IDLE. Bản vá gốc của Saimadhav Heblikar.
bpo-18410: Thêm thử nghiệm cho hộp thoại tìm kiếm của IDLE. Bản vá gốc của Westley Martínez.
bpo-21703: Thêm thử nghiệm cho trình ủy quyền hoàn tác. Bản vá chủ yếu của Saimadhav Heblikar.
bpo-27044: Thêm ConfigDialog.remove_var_callbacks để ngăn rò rỉ bộ nhớ.
bpo-23977: Thêm nhiều xác nhận hơn vào test_delegator.
Tài liệu¶
Kiểm tra¶
bpo-25285: regrtest hiện sử dụng các quy trình con khi tùy chọn dòng lệnh -j1 được sử dụng: mỗi tệp kiểm tra chạy trong một quy trình con mới. Trước đây, tùy chọn -j1 đã bị bỏ qua.
bpo-25285: Tập lệnh Tools/buildbot/test.bat hiện sử dụng -j1 theo mặc định để chạy từng tệp kiểm tra trong quy trình con mới.
cửa sổ¶
bpo-27064: Trình khởi chạy py.exe hiện được mặc định là Python 3. Trình khởi chạy Windows
py.exekhông còn thích phiên bản Python 2 đã cài đặt hơn Python 3 theo mặc định khi được sử dụng tương tác.bpo-17500: Loại bỏ các biểu tượng không dùng đến và lỗi thời. (Xem thêm: https://github.com/python/pythondotorg/issues/945)
xây dựng¶
C API¶
Công cụ/Bản trình diễn¶
bpo-26282: Phòng khám đối số hiện chỉ hỗ trợ các tham số từ khóa và vị trí trong cùng một chức năng.
Python 3.6.0 alpha 1¶
Release date: 2016-05-16
Bảo mật¶
bpo-26657: Khắc phục lỗ hổng truyền tải thư mục bằng http.server trên Windows. Điều này khắc phục lỗi hồi quy được giới thiệu trong 3.3.4rc1 và 3.4.0rc1. Dựa trên bản vá của Philipp Hagemeister.
bpo-26313: ssl.py _load_windows_store_certs không thành công nếu cửa hàng chứng chỉ Windows trống. Bản vá của Baji.
bpo-25939: Trên Windows, mở cửa hàng chứng chỉ chỉ đọc trong ssl.enum_certificates.
Cốt lõi và nội dung¶
bpo-20041: Đã sửa lỗi TypeError khi frame.f_trace được đặt thành Không. Bản vá của Xavier de Gaye.
bpo-26168: Đã khắc phục các lỗi có thể xảy ra khi Py_BuildValue() bị lỗi với đơn vị định dạng "N".
bpo-26991: Khắc phục hiện tượng phản chiếu có thể xảy ra khi tạo hàm có chú thích.
bpo-27039: Đã sửa bytearray.remove() cho các giá trị lớn hơn 127. Dựa trên bản vá của Joe Jevnik.
bpo-23640: int.from_bytes() không còn bỏ qua hàm tạo cho các lớp con nữa.
bpo-27005: Đã tối ưu hóa phương thức lớp float.fromhex() để có float chính xác. Bây giờ nó nhanh hơn gấp 2 lần.
bpo-18531: Đối số từ khóa var đơn của kiểu con dict đã được chuyển sang hàm do C xác định mà không bị tổn hại. Bây giờ nó được chuyển đổi thành chính xác.
bpo-26811: gc.get_objects() không còn chứa bộ dữ liệu bị hỏng với con trỏ NULL nữa.
bpo-20120: Sử dụng RawConfigParser để phân tích cú pháp .pypirc, loại bỏ hỗ trợ nội suy vô tình được thêm vào khi chuyển sang Python 3. Hành vi không còn thực hiện bất kỳ nội suy nào trong các tệp .pypirc, khớp với hành vi trong Python 2.7 và Setuptools 19.0.
bpo-26249: Các chức năng bộ nhớ của miền
PyMem_Malloc()(PYMEM_DOMAIN_MEM) hiện sử dụng pymalloc allocator thay vì hệ thốngmalloc(). Các ứng dụng gọiPyMem_Malloc()mà không giữ GIL hiện có thể gặp sự cố: sử dụng biến môi trườngPYTHONMALLOC=debugđể xác thực việc sử dụng bộ cấp phát bộ nhớ trong ứng dụng của bạn.bpo-26802: Tối ưu hóa các lệnh gọi hàm chỉ bằng cách giải nén như
func(*tuple)(không có đối số vị trí khác, không có từ khóa): tránh sao chép bộ dữ liệu. Bản vá được viết bởi Joe Jevnik.bpo-26659: Tạo bộ sưu tập chu trình hỗ trợ loại lát cắt dựng sẵn.
bpo-26718: super.__init__ không còn rò rỉ bộ nhớ nếu được gọi nhiều lần. NOTE: Lệnh gọi trực tiếp super.__init__ không được xác nhận!
bpo-27138: Sửa nhận xét tài liệu cho FileFinder.find_spec().
bpo-25339: PYTHONIOENCODING hiện được ưu tiên hơn ngôn ngữ trong việc thiết lập trình xử lý lỗi cho stdin và stdout.
bpo-26494: Đã khắc phục sự cố khi lặp lại các trình vòng lặp đang cạn kiệt. Các lớp bị ảnh hưởng là các trình lặp trình tự chung, các trình vòng lặp của str, byte, bytearray, list, tuple, set, Frozenset, dict, OrderedDict, các khung nhìn tương ứng và trình vòng lặp os.scandir().
bpo-26574: Tối ưu hóa
bytes.replace(b'', b'.')vàbytearray.replace(b'', b'.'). Bản vá được viết bởi Josh Snider.bpo-26581: Nếu cookie mã hóa được chỉ định nhiều lần trên một dòng trong tệp mã nguồn Python thì chỉ có cookie đầu tiên được tính đến.
bpo-19711: Thêm các bài kiểm tra để tải lại các gói không gian tên.
bpo-21099: Chuyển các bài kiểm tra importlib hiện hành sang sử dụng PEP 451 API.
bpo-26563: Móc gỡ lỗi trên bộ cấp phát bộ nhớ Python hiện gây ra lỗi nghiêm trọng nếu các hàm thuộc họ
PyMem_Malloc()được gọi mà không giữ GIL.bpo-26564: Do lỗi, móc gỡ lỗi trên bộ cấp phát bộ nhớ Python hiện sử dụng mô-đun
tracemallocđể lấy lại dấu vết nơi khối bộ nhớ được phân bổ.bpo-26558: Các móc gỡ lỗi trên bộ cấp phát bộ nhớ Python
PyObject_Malloc()hiện phát hiện khi các hàm được gọi mà không cần giữ GIL.bpo-26516: Thêm biến môi trường
PYTHONMALLOCđể đặt bộ cấp phát bộ nhớ Python và/hoặc cài đặt các móc gỡ lỗi.bpo-26516: Chức năng
PyMem_SetupDebugHooks()hiện cũng có thể được sử dụng trên Python được biên dịch ở chế độ phát hành.bpo-26516: Biến môi trường
PYTHONMALLOCSTATShiện cũng có thể được sử dụng trên Python được biên dịch ở chế độ phát hành. Bây giờ nó không có hiệu lực nếu được đặt thành một chuỗi trống.bpo-26516: Trong chế độ gỡ lỗi, móc gỡ lỗi hiện cũng được cài đặt trên bộ cấp phát bộ nhớ Python khi Python được định cấu hình mà không có pymalloc.
bpo-26464: Sửa str.translate() khi chuỗi là ASCII và lần thay thế đầu tiên sẽ loại bỏ ký tự, nhưng lần thay thế tiếp theo sử dụng ký tự không phải ASCII hoặc một chuỗi dài hơn 1 ký tự. Hồi quy được giới thiệu trong Python 3.5.0.
bpo-22836: Đảm bảo các báo cáo ngoại lệ từ PyErr_Display() và PyErr_WriteUnraisable() là hợp lý ngay cả khi việc định dạng chúng tạo ra lỗi thứ cấp. Điều này ảnh hưởng đến các báo cáo do sys.__Exceptionhook__() tạo ra và khi __del__() đưa ra một ngoại lệ.
bpo-26302: Hành vi đúng để từ chối dấu phẩy làm ký tự hợp pháp cho tên cookie.
bpo-26136: Nâng cấp cảnh báo khi trình tạo tăng StopIteration từ PendingDeprecationWarning lên DeprecationWarning. Bản vá của Anish Shah.
bpo-26204: Trình biên dịch hiện bỏ qua tất cả các câu lệnh không đổi: byte, str, int, float, complex, các hằng tên (Không, Sai, Đúng), Ellipsis và ast.Constant; không chỉ str và int. Ví dụ:
1.0hiện bị bỏ qua trongdef f(): 1.0.bpo-4806: Tránh che giấu ngoại lệ TypeError ban đầu khi sử dụng giải nén star (
*) trong lệnh gọi hàm. Dựa trên bản vá của Hagen Fürstenau và Daniel Urban.bpo-26146: Thêm một loại nút AST mới:
ast.Constant. Nó có thể được sử dụng bởi các trình tối ưu hóa AST bên ngoài, nhưng trình biên dịch không phát ra trực tiếp nút đó.bpo-23601: Tăng tốc độ phân bổ các đối tượng chính dict bằng cách sử dụng bộ cấp phát đối tượng nhỏ của Python. (Đóng góp bởi Julian Taylor.)
bpo-18018: Quá trình nhập sẽ tăng ImportError thay vì SystemError nếu cố gắng nhập tương đối mà không có gói gốc đã biết.
bpo-25843: Khi biên dịch mã, không hợp nhất các hằng số nếu chúng bằng nhau nhưng có kiểu khác nhau. Ví dụ:
f1, f2 = lambda: 1, lambda: 1.0hiện được biên dịch chính xác thành hai hàm khác nhau:f1()trả về1(int) vàf2()trả về1.0(float), ngay cả khi1và1.0bằng nhau.bpo-26107: Định dạng của thuộc tính
co_lnotabcủa các đối tượng mã thay đổi để hỗ trợ delta số dòng âm.bpo-26154: Thêm hàm _PyThreadState_UncheckedGet() riêng tư mới để lấy trạng thái luồng Python hiện tại, nhưng không gây ra lỗi nghiêm trọng nếu đó là NULL. Hàm mới này phải được sử dụng thay vì truy cập trực tiếp vào biến _PyThreadState_Current. Biến này không còn được hiển thị kể từ Python 3.5.1 để ẩn việc triển khai chính xác các loại C nguyên tử, nhằm tránh các vấn đề về trình biên dịch.
bpo-25791: Nếu __package__ != __spec__.parent hoặc nếu cả __package__ hoặc __spec__ đều không được xác định thì ImportWarning sẽ được nâng lên.
bpo-22995: [UPDATE] Nhận xét một trong những bài kiểm tra khả năng chọn lọc trong _PyObject_GetState() do hồi quy được quan sát thấy trong các dự án dựa trên Cython.
bpo-25961: Không cho phép ký tự null trong tên loại.
bpo-25973: Sửa lỗi segfault khi câu lệnh không cục bộ không hợp lệ liên kết một tên bắt đầu bằng hai dấu gạch dưới.
bpo-22995: Các phiên bản của loại tiện ích mở rộng có trạng thái không phải là lớp con của danh sách hoặc dict và chưa triển khai bất kỳ phương pháp nào liên quan đến dưa chua (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__ hoặc __getstate__), không thể được dưa chua nữa. Bao gồm cả chế độ xem bộ nhớ.
bpo-20440: Thay thế hàng loạt mã cài đặt thuộc tính không an toàn bằng macro đặc biệt Py_SETREF.
bpo-25766: Phương thức đặc biệt __bytes__() hiện hoạt động trong các lớp con str.
bpo-25421: __sizeof__ các phương thức của các kiểu dựng sẵn hiện sử dụng kích thước cơ bản động. Điều này cho phép sys.getsize() hoạt động chính xác với các lớp con có __slots__ được xác định.
bpo-25709: Đã khắc phục sự cố nối chuỗi tại chỗ và bộ đệm utf-8.
bpo-5319: Py_FinalizeEx() API mới cho phép Python đặt trạng thái thoát là 120 khi không xóa được các luồng được đệm.
bpo-25485: telnetlib.Telnet hiện là trình quản lý bối cảnh.
bpo-24097: Đã khắc phục sự cố trong object.__reduce__() nếu tên vùng được giải phóng bên trong __getattr__.
bpo-24731: Đã khắc phục sự cố khi chuyển đổi đối tượng bằng các phương thức đặc biệt __bytes__, __trunc__ và __float__ trả về các phiên bản của lớp con byte, int và float tương ứng thành lớp con byte, int và float.
bpo-25630: Khắc phục lỗi phân tách có thể xảy ra trong quá trình phân tích cú pháp đối số trong các hàm chấp nhận đường dẫn hệ thống tệp.
bpo-23564: Đã sửa lỗi kiểm tra độ tỉnh táo bị hỏng một phần trong phần bên trong _posixsubprocess liên quan đến cách truyền fds_to_pass cho trẻ. Lỗi này không có tác động thực sự vì subprocess.py đã tránh được nó.
bpo-25388: Đã khắc phục sự cố mã thông báo khi xử lý mã nguồn không thể giải mã được bằng byte rỗng.
bpo-25462: Hàm băm của khóa hiện chỉ được tính một lần trong hầu hết các thao tác khi triển khai C của OrderedDict.
bpo-22995: Việc triển khai mặc định __reduce__ và __reduce_ex__ hiện từ chối các loại dựng sẵn không được xác định __new__.
bpo-24802: Tránh đọc quá mức bộ đệm khi int(), float(), biên dịch(), exec() và eval() được truyền các đối tượng giống byte. Các đối tượng này không nhất thiết phải được kết thúc bằng một byte rỗng, nhưng các hàm giả định chúng như vậy.
bpo-25555: Sửa trình phân tích cú pháp và AST: điền lineno và col_offset của nút "arg" khi biên dịch AST từ các đối tượng Python.
bpo-24726: Đã khắc phục sự cố và rò rỉ NULL trong Repr() của OrderedDict bị thay đổi bởi lệnh gọi trực tiếp của phương thức dict.
bpo-25449: Việc lặp lại OrderedDict với các khóa có hàm băm không ổn định hiện làm tăng KeyError trong quá trình triển khai C cũng như trong triển khai Python.
bpo-25395: Đã khắc phục sự cố khi các cấu trúc OrderedDict lồng nhau cao bị thu gom rác.
bpo-25401: Tối ưu hóa bytes.fromhex() và bytearray.fromhex(): chúng hiện nhanh hơn từ 2 đến 3,5 lần.
bpo-25399: Tối ưu hóa bytearray% đối số bằng cách sử dụng _PyBytesWriter API riêng tư mới. Việc định dạng bây giờ nhanh hơn từ 2,5 đến 5 lần.
bpo-25274: sys.setrecursionlimit() hiện tăng RecursionError nếu giới hạn đệ quy mới quá thấp tùy thuộc vào độ sâu đệ quy hiện tại. Cũng sửa đổi công thức "vết nước thấp hơn" để làm cho nó đơn điệu. Dấu này được sử dụng để quyết định khi nào cờ tràn của trạng thái luồng được đặt lại.
bpo-24402: Sửa lỗi input() để nhắc tới thiết bị xuất chuẩn được chuyển hướng khi sys.stdout.fileno() không thành công.
bpo-25349: Tối ưu hóa byte% đối số bằng cách sử dụng _PyBytesWriter API riêng tư mới. Việc định dạng bây giờ nhanh hơn tới 2 lần.
bpo-24806: Ngăn chặn các loại dựng sẵn không được phép phân lớp khỏi bị phân lớp thông qua đa kế thừa.
bpo-25301: Bộ giải mã UTF-8 hiện nhanh hơn tới 15 lần đối với các trình xử lý lỗi:
ignore,replacevàsurrogateescape.bpo-24848: Đã sửa một số lỗi trong quá trình giải mã UTF-7 dữ liệu bị định dạng sai.
bpo-25267: Bộ mã hóa UTF-8 hiện nhanh hơn tới 75 lần đối với trình xử lý lỗi:
ignore,replace,surrogateescape,surrogatepass. Bản vá được đồng sáng tác với Serhiy Storchaka.bpo-25280: Thông báo theo dõi nhập được phát ra ở chế độ dài dòng (-v) không còn được định dạng hai lần nữa.
bpo-25227: Tối ưu hóa bộ mã hóa ASCII và latin1 với trình xử lý lỗi
surrogateescape: bộ mã hóa hiện nhanh hơn tới 3 lần. Bản vá đầu tiên được viết bởi Serhiy Storchaka.bpo-25003: Trên Solaris 11.3 trở lên, os.urandom() hiện sử dụng hàm getrandom() thay vì hàm getentropy(). Hàm getentropy() đang chặn để tạo ra entropy chất lượng rất tốt, os.urandom() không cần entropy chất lượng cao như vậy.
bpo-9232: Sửa đổi ngữ pháp của Python để cho phép dấu phẩy ở cuối danh sách đối số của khai báo hàm. Ví dụ: "def f(*, a = 3,): pass" hiện là hợp pháp. Bản vá từ Mark Dickinson.
bpo-24965: Triển khai PEP 498 "Nội suy chuỗi ký tự". Điều này cho phép bạn nhúng các biểu thức bên trong chuỗi f, chuỗi này được chuyển đổi thành chuỗi thông thường trong thời gian chạy. Cho x=3, thì f'value={x}' == 'value=3'. Bản vá của Eric V. Smith.
bpo-26478: Sửa lỗi ngữ nghĩa khi sử dụng toán tử nhị phân với chế độ xem từ điển và bộ dữ liệu.
bpo-26171: Khắc phục lỗi tràn số nguyên có thể xảy ra và hỏng đống dữ liệu trong zipimporter.get_data().
bpo-25660: Khắc phục hành vi của phím TAB trong REPL bằng dòng đọc.
bpo-26288: Tối ưu hóa PyLong_AsDouble.
bpo-26289: Tối ưu hóa phép chia sàn và modulo cho độ dài một chữ số. Điểm chuẩn vi mô cho thấy sự cải thiện 2-2,5 lần. Chức năng 'divmod' tích hợp hiện cũng nhanh hơn ~ 10%. (Xem thêm: bpo-26315)
bpo-25887: Đưa ra RuntimeError khi một đối tượng coroutine được chờ đợi nhiều lần.
Thư viện¶
bpo-27057: Sửa lỗi os.set_inheritable() trên Android, ioctl() bị SELinux chặn và không thành công với EACCESS. Hàm bây giờ quay trở lại fcntl(). Bản vá được viết bởi Michał Bednarski.
bpo-27014: Khắc phục đệ quy vô hạn bằng cách sử dụng gõ.py. Cảm ơn Kalle Tuure!
bpo-27031: Đã xóa các phương thức giả trong các lớp tiện ích Tkinter: tk_menuBar() và tk_bindForTraversal().
bpo-14132: Khắc phục việc xử lý chuyển hướng urllib.request khi mục tiêu chỉ có một chuỗi truy vấn. Bản sửa lỗi gốc của Ján Janech.
bpo-17214: Mô-đun "urllib.request" hiện mã hóa phần trăm các byte không phải ASCII được tìm thấy trong các URL mục tiêu chuyển hướng. Một số máy chủ gửi các trường tiêu đề Vị trí có byte không phải là ASCII, nhưng "http.client" yêu cầu mục tiêu yêu cầu phải có thể mã hóa ASCII, nếu không thì UnicodeEncodeError sẽ xuất hiện. Dựa trên bản vá của Christian Heimes.
bpo-27033: Giá trị mặc định của tham số giải mã_data cho các hàm tạo smtpd.SMTPChannel và smtpd.SMTPServer được thay đổi thành Sai.
bpo-27034: Đã xóa lớp asynchat.fifo không được dùng nữa.
bpo-26870: Đã thêm readline.set_auto_history(), có thể dừng các mục được tự động thêm vào danh sách lịch sử. Dựa trên bản vá của Tyler Crompton.
bpo-26039: zipfile.ZipFile.open() hiện có thể được sử dụng để ghi dữ liệu vào tệp ZIP cũng như để trích xuất dữ liệu. Bản vá của Thomas Kluyver.
bpo-26892: Tôn trọng cờ debuglevel trong urllib.request.HTTPHandler. Patch đóng góp của Chí Hsuan Yen.
bpo-22274: Trong mô-đun quy trình con, cho phép chuyển hướng stderr đến thiết bị xuất chuẩn ngay cả khi thiết bị xuất chuẩn không được chuyển hướng. Bản vá của Akira Li.
bpo-26807: mock_open 'files' không còn lỗi ở dòng đọc ở cuối tệp. Bản vá từ Yolanda Robla.
bpo-25745: Đã sửa lỗi rò rỉ userptr trong hàm hủy bảng điều khiển lời nguyền.
bpo-26977: Đã loại bỏ lệnh gọi không cần thiết và bị bỏ qua để tính tổng các bình phương trong stats.pvariance.
bpo-26002: Sử dụng chia đôi trong stats.median thay vì tìm kiếm tuyến tính. Bản vá của Upendra Kuma.
bpo-25974: Sử dụng phương thức Decimal.as_integer_ratio() mới trong mô-đun thống kê. Bản vá của Stefan Krah.
bpo-26881: Mô-đun modulefinder hiện hỗ trợ các đối số opcode mở rộng.
bpo-23815: Đã khắc phục sự cố liên quan đến các phiên bản loại được tạo trực tiếp trong mô-đun _tkinter và Curs.panel.
bpo-17765: yếuref.ref() không còn âm thầm bỏ qua các đối số từ khóa nữa. Bản vá của Georg Brandl.
bpo-26873: xmlrpc hiện tăng ResponseError trên các thẻ loại không được hỗ trợ thay vì âm thầm trả về kết quả không chính xác.
bpo-26915: Các phương thức __contains__ trong bộ sưu tập ABC hiện kiểm tra danh tính trước khi kiểm tra sự bằng nhau. Điều này phù hợp hơn với hành vi của các lớp cụ thể, cho phép xử lý NaN một cách hợp lý và giúp dễ dàng suy luận về các bất biến của vùng chứa.
bpo-26711: Đã sửa lỗi so sánh plistlib.Data với các loại khác.
bpo-24114: Sửa biến chưa được khởi tạo trong
ctypes.util. Lỗi chỉ xảy ra trên SunOS khi triển khai ctypes tìm kiếm chương trìnhcrle. Bản vá của Xiang Zhang. Đã được thử nghiệm trên SunOS bởi Kees Bos.bpo-26864: Trong urllib.request, thay đổi việc kiểm tra máy chủ bỏ qua proxy đối với no_proxy thành không phân biệt chữ hoa chữ thường và không khớp với các tên máy chủ không liên quan có tên máy chủ bị bỏ qua làm hậu tố. Bản vá của Xiang Zhang.
bpo-24902: Máy chủ in URL khi khởi động http.server. Bản vá đầu tiên của Felix Kaiser.
bpo-25788: fileinput.hook_encoded() hiện hỗ trợ đối số "lỗi" khi chuyển sang mở. Bản vá gốc của Joseph Hackman.
bpo-26634: recursive_repr() hiện đặt __qualname__ của trình bao bọc. Bản vá của Xiang Zhang.
bpo-26804: urllib.request sẽ thích các biến môi trường proxy low_case hơn các biến môi trường proxy UPPER_CASE hoặc Mixed_Case. Bản vá được đóng góp bởi Hans-Peter Jansen.
bpo-26837: khẳng địnhSequenceEqual() hiện xuất chính xác các mục khác nhau không được xâu chuỗi (như byte ở chế độ -b). Điều này ảnh hưởng đến khẳng địnhListEqual() và khẳng địnhTupleEqual().
bpo-26041: Xóa "sẽ bị xóa trong Python 3.7" khỏi các thông báo không dùng nữa của platform.dist() và platform.linux_distribution(). Bản vá của Kumaripaba Miyurusara Athukorala.
bpo-26822: các đối tượng itemgetter, attrgetter và Methodcaller không còn âm thầm bỏ qua các đối số từ khóa nữa.
bpo-26733: Việc tháo rời một lớp bây giờ sẽ tháo rời lớp và các phương thức tĩnh. Bản vá của Xiang Zhang.
bpo-26801: Sửa lỗi xử lý trong
shutil.get_terminal_size(), bắtAttributeErrorthay vìNameError. Bản vá được viết bởi Emanuel Barry.bpo-24838: các định dạng ustar và gnu của tarfile hiện tính toán chính xác giới hạn trường tên và liên kết cho mã hóa ký tự nhiều byte như utf-8.
bpo-26717: Dừng mã hóa các đường dẫn WSGI theo kiểu Latin-1 bằng UTF-8. Bản vá của Anthony Sottile.
bpo-26782: Thêm STARTUPINFO vào subprocess.__all__ trên Windows.
bpo-26404: Thêm trình quản lý bối cảnh vào socketserver. Bản vá của Aviv Palivoda.
bpo-26735: Sửa
os.urandom()trên Solaris 11.3 trở lên khi đọc hơn 1.024 byte: gọigetrandom()nhiều lần với giới hạn 1024 byte mỗi cuộc gọi.bpo-26585: Loại bỏ http.server._quote_html() và sử dụng html.escape(quote=False). Bản vá của Xiang Zhang.
bpo-26685: Tăng OSError nếu đóng ổ cắm không thành công.
bpo-16329: Thêm .webm vào mimetypes.types_map. Bản vá của Giampaolo Rodola'.
bpo-13952: Thêm .csv vào mimetypes.types_map. Bản vá của Geoff Wilson.
bpo-26587: mô-đun trang web hiện cho phép các tệp .pth chỉ định các tệp sẽ được thêm vào sys.path (ví dụ: tệp zip).
bpo-25609: Giới thiệu contextlib.AbstractContextManager và Typing.ContextManager.
bpo-26709: Đã khắc phục sự cố Y2038 khi tải PLists nhị phân.
bpo-23735: Xử lý việc thay đổi kích thước thiết bị đầu cuối bằng Readline 6.3+ bằng cách cài đặt trình xử lý SIGWINCH của riêng chúng tôi. Bản vá của Eric Price.
bpo-25951: Thay đổi SSLSocket.sendall() để trả về Không, như được ghi rõ ràng cho các đối tượng ổ cắm đơn giản. Bản vá của Aviv Palivoda.
bpo-26586: Trong http.server, hãy phản hồi bằng "Trường tiêu đề yêu cầu 413 quá lớn" nếu có quá nhiều trường tiêu đề cần phân tích cú pháp, thay vì hủy kết nối và đưa ra ngoại lệ chưa được xử lý. Bản vá của Xiang Zhang.
bpo-26676: Đã thêm XMLPullParser bị thiếu vào ElementTree.__all__.
bpo-22854: Thay đổi BufferedReader.writable() và BufferedWriter.readable() để luôn trả về Sai.
bpo-26492: Trình vòng lặp đã hết của array.array hiện phù hợp với hành vi của các trình vòng lặp của các chuỗi có thể thay đổi khác: nó sẽ cạn kiệt ngay cả khi mảng lặp được mở rộng.
bpo-26641: doctest.DocFileTest và doctest.testfile() hiện hỗ trợ các gói (mô-đun được chia thành nhiều thư mục) cho tham số gói.
bpo-25195: Khắc phục hồi quy trong mock.MagicMock. _Call là một lớp con của tuple (bộ thay đổi 3603bae63c13 chỉ hoạt động cho các lớp) nên chúng ta cần tự mình triển khai __ne__. Bản vá của Andrew Plummer.
bpo-26644: Tăng ValueError thay vì SystemError khi độ dài âm được chuyển tới SSLSocket.recv() hoặc read().
bpo-23804: Sửa các phương thức SSL recv(0) và read(0) để trả về 0 byte thay vì tối đa 1024.
bpo-26616: Đã sửa lỗi trong phương thức datetime.astimezone().
bpo-26637: Mô-đun
importlibhiện phát raImportErrorthay vìTypeErrornếu__import__()được thử trong quá trình tắt Python nhưngsys.pathđã bị xóa (được đặt thànhNone).bpo-21925:
warnings.formatwarning()hiện đã bắt được các ngoại lệ khi gọilinecache.getline()vàtracemalloc.get_object_traceback()để có thể ghi lạiResourceWarningphát ra muộn trong quá trình tắt Python.bpo-23848: Trên Windows, errorhandler.enable() hiện cũng cài đặt một trình xử lý ngoại lệ để kết xuất truy nguyên của tất cả các luồng Python trên bất kỳ ngoại lệ Windows nào, không chỉ trên các tín hiệu UNIX (SIGSEGV, SIGFPE, SIGABRT).
bpo-26530: Thêm chức năng C
_PyTraceMalloc_Track()và_PyTraceMalloc_Untrack()để theo dõi các khối bộ nhớ bằng mô-đuntracemalloc. Thêm_PyTraceMalloc_GetTraceback()để lấy dấu vết của một đối tượng.bpo-26588: _tracemalloc hiện hỗ trợ theo dõi việc phân bổ bộ nhớ của nhiều không gian địa chỉ (tên miền).
bpo-24266: Ctrl+C trong quá trình tìm kiếm lịch sử Readline hiện sẽ hủy chế độ tìm kiếm khi được biên dịch bằng Readline 7.
bpo-26590: Triển khai trình hoàn thiện an toàn cho loại _socket.socket. Bây giờ nó sẽ nhả GIL để đóng ổ cắm.
bpo-18787: spwd.getspnam() hiện tăng PermissionError nếu người dùng không có đặc quyền.
bpo-26560: Tránh ValueError tiềm ẩn trong BaseHandler.start_response. Bản vá đầu tiên của Peter Inglesby.
bpo-26567: Thêm chức năng mới
PyErr_ResourceWarning()chức năng truyền đối tượng bị phá hủy. Thêm thuộc tính source vàowarnings.WarningMessage. Thêm các cảnh báo._showwarnmsg() sử dụng tracemalloc để lấy lại dấu vết nơi đối tượng nguồn được phân bổ.bpo-26569: Sửa
pyclbr.readmodule()vàpyclbr.readmodule_ex()để hỗ trợ nhập gói.bpo-26499: Tài khoản cho Độ dài nội dung còn lại trong HTTPResponse.readline() và read1(). Dựa trên bản vá của Silent Ghost. Đồng thời ghi lại rằng HTTPResponse hiện hỗ trợ các phương pháp này.
bpo-25320: Xử lý các socket trong thư mục không được phát hiện nhiều nhất đang quét. Bản vá từ Victor van den Elzen.
bpo-16181: cookiejar.http2time() hiện trả về Không nếu năm cao hơn datetime.MAXYEAR.
bpo-26513: Sửa lỗi phát hiện mô-đun nền tảng của Windows Server
bpo-23718: Đã sửa lỗi thời gian phân tích cú pháp trong tuần 0 trước ngày 1 tháng 1. Bản vá gốc của Tamás Bence Gedai.
bpo-26323: Thêm các phương thức Mock.assert_called() và Mock.assert_called_once() vào unittest.mock. Bản vá được viết bởi Amit Saha.
bpo-20589: Gọi Path.owner() và Path.group() trên Windows hiện đưa ra NotImplementedError thay vì ImportError.
bpo-26177: Đã sửa phương thức phím() cho các tiện ích Canvas và Thanh cuộn.
bpo-15068: Loại bỏ tình trạng đệm quá mức trong đầu vào tệp. Tham số bufsize hiện không được dùng nữa và bị bỏ qua.
bpo-19475: Đã thêm đối số tùy chọn timespec vào phương thức datetime isoformat() để chọn độ chính xác của thành phần thời gian.
bpo-2202: Khắc phục lỗi UnboundLocalError trong Tóm tắtDigestAuthHandler.get_algorithm_impls. Bản vá đầu tiên của Mathieu Dupuy.
bpo-26167: Giảm thiểu chi phí trong copy.copy() và copy.deepcopy(). Tối ưu hóa việc sao chép và sao chép sâu các mảng byte, NotImplemented, slice, short list, tuples, dicts, set.
bpo-25718: Đã sửa lỗi tẩy và sao chép trình vòng lặp tích lũy() với tổng số là Không có.
bpo-26475: Đã sửa lỗi đầu ra gỡ lỗi cho các biểu thức thông thường bằng cờ (?x).
bpo-26482: Cho phép loại bỏ các dequeue đệ quy.
bpo-26335: Tạo mmap.write() trả về số byte được ghi giống như các phương thức ghi khác. Bản vá của Jakub Stasiak.
bpo-26457: Đã sửa các phương thức subnets() trong các lớp mạng IP trong trường hợp khi độ dài tiền tố thu được bằng độ dài tiền tố tối đa. Dựa trên bản vá của Xiang Zhang.
bpo-26385: Xóa tệp nếu lệnh gọi open() nội bộ trong NamedTemporaryFile() không thành công. Bản vá của Silent Ghost.
bpo-26402: Sửa lỗi máy khách XML-RPC thử lại khi máy chủ tắt kết nối liên tục. Đây là một sự hồi quy liên quan đến ngoại lệ http.client.RemoteDisconnected mới trong 3.5.0a4.
bpo-25913:
<~hàng đầu hiện là tùy chọn trong base64.a85decode() với adobe=True. Bản vá của Swati Jaiswal.bpo-26186: Xóa kiểm tra loại không hợp lệ trong importlib.util.LazyLoader.
bpo-26367: importlib.__import__() tăng ImportError giống như nội trang.__import__() khi
levelđược chỉ định nhưng không chỉ định gói đi kèm.bpo-26309: Trong mô-đun "socketserver", hãy tắt yêu cầu (đóng ổ cắm được kết nối) khi verify_request() trả về sai. Bản vá của Aviv Palivoda.
bpo-23430: Thay đổi mô-đun socketserver để chỉ bắt các ngoại lệ được đưa ra từ trình xử lý yêu cầu bắt nguồn từ Ngoại lệ (thay vì BaseException). Do đó SystemExit và KeyboardInterrupt không còn kích hoạt phương thức hand_error() nữa và bây giờ sẽ dừng máy chủ đơn luồng.
bpo-25995: os.walk() không còn sử dụng FD tỷ lệ thuận với độ sâu của cây nữa.
bpo-25994: Đã thêm phương thức close() và hỗ trợ giao thức quản lý bối cảnh cho trình vòng lặp os.scandir().
bpo-23992: đa xử lý: làm cho MapResult không bị lỗi nhanh khi có ngoại lệ.
bpo-26243: Hỗ trợ đối số từ khóa cho zlib.compress(). Bản vá của Aviv Palivoda.
bpo-26117: Trình lặp os.scandir() hiện đóng bộ mô tả tệp không chỉ khi quá trình lặp kết thúc mà còn khi nó bị lỗi do lỗi.
bpo-25949: __dict__ cho phiên bản OrderedDict hiện chỉ được tạo khi cần.
bpo-25911: Đã khôi phục hỗ trợ đường dẫn byte trong os.walk() trên Windows.
bpo-26045: Thêm đề xuất UTF-8 vào thông báo lỗi khi đăng chuỗi không phải Latin-1 bằng http.client.
bpo-26039: Đã thêm zipfile.ZipInfo.from_file() và zipinfo.ZipInfo.is_dir(). Bản vá của Thomas Kluyver.
bpo-12923: Đặt lại bộ đếm chuyển hướng của FancyURLopener ngay cả khi có ngoại lệ. Dựa trên các bản vá của Brian Brazil và Daniel Rocco.
bpo-25945: Đã khắc phục sự cố khi giải nén đối tượng functools.partial có trạng thái sai. Đã sửa lỗi rò rỉ trong hàm tạo functools.partial không thành công. Các thuộc tính "args" và "keywords" của functools.partial giờ đây luôn có kiểu tuple và dict tương ứng.
bpo-26202: copy.deepcopy() hiện sao chép chính xác các đối tượng range() có thuộc tính phi nguyên tử.
bpo-23076: Path.glob() hiện tăng ValueError nếu nó được gọi với mẫu không hợp lệ. Bản vá của Thomas Nyberg.
bpo-19883: Đã sửa lỗi tràn số nguyên có thể xảy ra trong zipimport.
bpo-26227: Trên Windows, các hàm getnameinfo(), gethostbyaddr() và gethostbyname_ex() của mô-đun ổ cắm hiện giải mã tên máy chủ từ trang mã ANSI thay vì UTF-8.
bpo-26099: Mô-đun trang web hiện ghi lỗi vào stderr nếu mô-đun tùy chỉnh trang web có thể được nhập nhưng việc thực thi mô-đun này lại gây ra lỗi ImportError. Thay đổi tương tự cho usercustomize.
bpo-26147: xmlrpc hiện hoạt động với các chuỗi không thể mã hóa được bằng mã hóa không phải UTF-8 đã sử dụng.
bpo-25935: Trình thu gom rác hiện phá vỡ các vòng lặp tham chiếu bằng OrderedDict.
bpo-16620: Đã sửa lỗi AttributionError trong msilib.Directory.glob().
bpo-26013: Đã thêm khả năng tương thích với giao thức bị hỏng 2 dưa chua được tạo trong phiên bản Python 3 cũ (3.4.3 trở xuống).
bpo-26129: Không còn chấp nhận các số không nguyên trong grp.getgrgid().
bpo-25850: Sử dụng tính năng biên dịch chéo theo mặc định cho Windows 64-bit.
bpo-25822: Thêm chuỗi tài liệu vào các trường kết quả urllib.parse. Bản vá được đóng góp bởi Swati Jaiswal.
bpo-22642: Chuyển đổi cơ chế phân tích tùy chọn mô-đun theo dõi thành argparse. Bản vá được đóng góp bởi SilentGhost.
bpo-24705: Sửa lỗi sysconfig._parse_makefile không mở rộng các vars ${} xuất hiện trước các vars $().
bpo-26069: Xóa các api không được dùng nữa trong mô-đun theo dõi.
bpo-22138: Khắc phục hành vi mock.patch khi vá các bộ mô tả. Khôi phục giá trị ban đầu sau khi vá. Bản vá được đóng góp bởi Sean McCully.
bpo-25672: Trong mô-đun ssl, hãy bật tùy chọn chế độ SSL_MODE_RELEASE_BUFFERS nếu thấy an toàn.
bpo-26012: Không duyệt qua các liên kết tượng trưng cho mẫu
**trong pathlib.Path.[r]glob().bpo-24120: Bỏ qua PermissionError khi duyệt cây bằng pathlib.Path.[r]glob(). Bản vá của Ulrich Petri.
bpo-21815: Chấp nhận các ký tự ] trong phần dữ liệu của phản hồi imap, để xử lý các cờ có dấu ngoặc vuông được các máy chủ như gmail chấp nhận và tạo ra.
bpo-25447: fileinput hiện sử dụng sys.stdin nguyên trạng nếu nó không có thuộc tính bộ đệm (khôi phục khả năng tương thích ngược).
bpo-25971: Tối ưu hóa việc tạo Phân số từ số float 2 lần và từ Số thập phân 3 lần.
bpo-25802: Tài liệu không còn được dùng nữa trong các triển khai còn lại của importlib.abc.Loader.load_module().
bpo-25928: Thêm Decimal.as_integer_ratio().
bpo-25447: Sao chép đối tượng trình bao bọc lru_cache() giờ đây luôn hoạt động, độc lập với loại đối tượng được bao bọc (bằng cách trả về đối tượng ban đầu không thay đổi).
bpo-25768: Có các hàm trong hàm biên dịch trả về boolean thay vì int và thêm tài liệu cũng như kiểm tra thích hợp cho các giá trị trả về.
bpo-24103: Đã sửa lỗi có thể sử dụng sau khi miễn phí trong ElementTree.XMLPullParser.
bpo-25860: os.fwalk() không còn bỏ qua các thư mục còn lại khi xảy ra lỗi. Bản vá gốc của Samson Lee.
bpo-25914: Đã sửa lỗi và đơn giản hóa OrderedDict.__sizeof__.
bpo-25869: ElementTree sao chép sâu được tối ưu hóa; bây giờ nó nhanh hơn 20 lần.
bpo-25873: ElementTree lặp được tối ưu hóa. Việc lặp lại các phần tử Element.iter() hiện nhanh hơn 40%, việc lặp lại văn bản Element.itertext() hiện nhanh hơn tới 2,5 lần.
bpo-25902: Đã khắc phục các sự cố hoàn tiền khác nhau trong lần lặp ElementTree.
bpo-22227: Trình lặp TarFile được triển khai lại bằng trình tạo. Việc triển khai này đơn giản hơn việc sử dụng lớp.
bpo-25638: Tối ưu hóa ElementTree.iterparse(); bây giờ nó nhanh hơn gấp 2 lần. Phân tích cú pháp ElementTree được tối ưu hóa; bây giờ nó nhanh hơn 10%.
bpo-25761: Cải thiện việc phát hiện lỗi trong dữ liệu dưa chua bị hỏng.
bpo-25717: Khôi phục hành vi chấp nhận hầu hết các lỗi fstat() trước đó khi mở tệp. Đây là một sự hồi quy trong 3.5a1 và đã ngăn các tệp tạm thời ẩn danh hoạt động trong các trường hợp đặc biệt.
bpo-24903: Sửa lỗi hồi quy về số lượng đối số được biên dịch chấp nhận khi '-d' được chỉ định. Việc kiểm tra số lượng đối số đã bị loại bỏ hoàn toàn vì dù sao nó cũng chưa bao giờ hoạt động chính xác.
bpo-25764: Trong mô-đun quy trình con, giữ nguyên mọi ngoại lệ do lỗi fork() gây ra khi sử dụng preexec_fn.
bpo-25771: Tinh chỉnh thông báo ngoại lệ cho importlib.util.resolve_name() khi 'gói' không được chỉ định nhưng cần thiết.
bpo-6478: Bộ đệm regrec của _strptime hiện được đặt lại sau khi thay đổi múi giờ bằng time.tzset().
bpo-14285: Khi thực thi gói có tùy chọn "gói python -m" và việc khởi tạo gói không thành công, hiện tại, một truy nguyên thích hợp sẽ được báo cáo. Mô-đun "runpy" hiện cho phép các ngoại lệ từ quá trình khởi tạo gói được chuyển lại cho người gọi thay vì đưa ra ImportError.
bpo-19771: Ngoài ra, trong tùy chọn runpy và "-m", hãy bỏ qua thông báo không liên quan ". . . là một gói và không thể được thực thi trực tiếp" nếu gói thậm chí không thể được khởi tạo (ví dụ: do tệp
*.pycbị lỗi).bpo-25177: Đã khắc phục sự cố với giá trị trung bình của số rất nhỏ và rất lớn. Là một tác dụng phụ, stats.mean và stats.variance sẽ nhanh hơn đáng kể.
bpo-25718: Đã sửa lỗi sao chép đối tượng có trạng thái có giá trị boolean là sai.
bpo-10131: Đã sửa lỗi sao chép sâu các tài liệu tối thiểu. Dựa trên bản vá của Marian Ganisin.
bpo-7990: dir() trên ElementTree.Element hiện liệt kê các thuộc tính: "tag", "text", "tail" và "attrib". Bản vá gốc của Santoso Wijaya.
bpo-25725: Đã sửa lỗi rò rỉ tham chiếu trong dưa.loads() khi giải nén dữ liệu không hợp lệ bao gồm các hướng dẫn bộ dữ liệu.
bpo-25663: Trong trình hoàn thiện Readline, tránh liệt kê các tên chung trùng lặp và tìm kiếm không gian tên chung trước khi tìm kiếm nội dung.
bpo-25688: Đã sửa lỗi rò rỉ tệp trong ElementTree.iterparse() gây ra lỗi.
bpo-23914: Đã sửa lỗi SystemError do trình giải nén gây ra đối với dữ liệu dưa chua bị hỏng.
bpo-25691: Đã khắc phục sự cố khi xóa thuộc tính ElementTree.Element.
bpo-25624: ZipFile hiện luôn ghi tiêu đề ZIP_STORED cho các mục trong thư mục. Bản vá của Dingyuan Wang.
bpo-25626: Thay đổi ba hàm zlib để chấp nhận các kích thước phù hợp với Py_ssize_t, nhưng giới hạn nội bộ các kích thước đó thành UINT_MAX. Điều này giải quyết hồi quy trong 3.5 trong đó GzipFile.read() không đọc được các đoạn lớn hơn 2 hoặc 4 GiB. Thay đổi này ảnh hưởng đến tham số zlib.Decompress.decompress() max_length, tham số bufsize zlib.decompress() và tham số độ dài zlib.Decompress.flush().
bpo-25583: Tránh các lỗi không chính xác do os.makedirs(exist_ok=True) đưa ra khi HĐH ưu tiên các lỗi như EACCES hơn EEXIST.
bpo-25593: Thay đổi ngữ nghĩa của EventLoop.stop() trong asyncio.
bpo-6973: Khi chúng tôi biết một quy trình con. Quy trình Popen đã chết, không cho phép các phương thức send_signal(), terminating() hoặc kill() thực hiện bất kỳ điều gì vì chúng có thể báo hiệu một quy trình khác.
bpo-23883: Đã thêm các API bị thiếu vào __all__ để khớp với các API được ghi lại cho các mô-đun sau: lịch, csv, enum, fileinput, ftplib, ghi nhật ký, optparse, tarfile, threading và wave. Đồng thời đã thêm trình trợ giúp test.support.check__all__(). Các bản vá của Jacek Kołodziej, Mauro S. M. Rodrigues và Joel Taddei.
bpo-25590: Trong trình hoàn thiện Readline, chỉ gọi getattr() một lần cho mỗi thuộc tính. Đồng thời điền đầy đủ tên của các thuộc tính như thuộc tính và vị trí được liệt kê bởi dir() nhưng chưa được tạo trên một phiên bản.
bpo-25498: Khắc phục sự cố khi các đối tượng ctypes thu thập rác được tạo bằng cách gói một khung nhìn bộ nhớ. Đây là hồi quy được thực hiện trong 3.5a1. Dựa trên bản vá của Eryksun.
bpo-25584: Đã thêm "escape" vào danh sách __all__ trong mô-đun toàn cầu.
bpo-25584: Đã sửa lỗi glob đệ quy() với các mẫu bắt đầu bằng
**.bpo-25446: Khắc phục sự hồi quy trong hỗ trợ AUTH LOGIN của smtplib.
bpo-18010: Sửa chức năng tìm kiếm mô-đun của máy chủ web pydoc để xử lý các trường hợp ngoại lệ khi nhập gói.
bpo-25554: Loại bỏ các tham chiếu vòng tròn trong phân tích cú pháp biểu thức chính quy.
bpo-18973: Giao diện dòng lệnh của mô-đun lịch hiện sử dụng argparse thay vì optparse.
bpo-25510: fileinput.FileInput.readline() hiện trả về b'' thay vì '' ở cuối nếu FileInput được mở bằng chế độ nhị phân. Bản vá của Ryosuke Ito.
bpo-25503: Đã sửa lỗi kiểm tra.getdoc() cho các chuỗi tài liệu kế thừa của thuộc tính. Bản vá gốc của John Mark Vandenberg.
bpo-25515: Luôn sử dụng os.urandom làm nguồn ngẫu nhiên trong uuid.uuid4.
bpo-21827: Đã sửa lỗi textwrap.dedent() trong trường hợp khoảng trắng chung lớn nhất là chuỗi con của khoảng trắng ở đầu nhỏ nhất. Dựa trên bản vá của Robert Li.
bpo-25447: Bây giờ, các đối tượng trình bao bọc lru_cache() có thể được sao chép và chọn lọc (bằng cách trả về đối tượng ban đầu không thay đổi).
bpo-25390: đang gõ: Không gặp sự cố trên Union[str, Pattern].
bpo-25441: asyncio: Tăng lỗi từ Drain() khi đóng ổ cắm.
bpo-25410: Dọn dẹp và sửa các lỗi nhỏ trong quá trình triển khai OrderedDict bằng C.
bpo-25411: Cải thiện hỗ trợ Unicode trong SMTPHandler thông qua việc sử dụng gói email tốt hơn. Cảm ơn người dùng simon04 về bản vá.
Di chuyển mô-đun imp từ PendingDeprecationWarning sang DeprecationWarning.
bpo-25407: Xóa đề cập đến mô-đun định dạng bị xóa trong Python 3.6.
bpo-25406: Đã khắc phục lỗi trong quá trình triển khai OrderedDict.move_to_end() trong C gây ra lỗi phân đoạn hoặc bị treo khi lặp lại sau khi di chuyển một số mục đến đầu lệnh chính tả.
bpo-25382: Pickletools.dis() hiện xuất ra chỉ mục ghi nhớ ngầm cho mã hoạt động MEMOIZE.
bpo-25357: Thêm tham số dòng mới tùy chọn vào binascii.b2a_base64(). base64.b64encode() sử dụng nó để tránh sao chép bộ nhớ.
bpo-24164: Các đối tượng cần gọi
__new__bằng đối số từ khóa, giờ đây có thể được chọn bằng cách sử dụng các giao thức dưa cũ hơn giao thức phiên bản 4.bpo-25364: zipfile hiện hoạt động trong các bản dựng bị vô hiệu hóa theo chủ đề.
bpo-25328: SMTPChannel của smtpd hiện tăng giá trị ValueError một cách chính xác nếu cả giải mã_data và kích hoạt_SMTPUTF8 đều được đặt thành đúng.
bpo-16099: RobotFileParser hiện hỗ trợ các tiện ích mở rộng Độ trễ thu thập thông tin và Tỷ lệ yêu cầu. Bản vá của Nikolay Bogoychev.
bpo-25316: distutils tăng OSError thay vì DistutilsPlatformError khi MSVC chưa được cài đặt.
bpo-25380: Đã sửa lỗi giao thức cho opcode STACK_GLOBAL trong Picktools.opcodes.
bpo-23972: Cập nhật phương thức tạo datagram asyncio cho phép đặt các tùy chọn ổ cắm tái sử dụng và tái sử dụng trước khi liên kết ổ cắm. Phản chiếu phương thức asyncio create_server hiện có, tùy chọn tái sử dụng cho ổ cắm gói dữ liệu mặc định là True nếu O/S là 'posix' (trừ khi nền tảng là Cygwin). Bản vá của Chris Laws.
bpo-25304: Thêm asyncio.run_coroutine_threadsafe(). Điều này cho phép bạn gửi một coroutine đến một vòng lặp từ một luồng khác, trả về một concurrent.futures.Future. của Vincent Michel.
bpo-25232: Sửa lỗi CGIRequestHandler để tách truy vấn khỏi URL ở dấu chấm hỏi đầu tiên (?) thay vì dấu chấm hỏi cuối cùng. Bản vá từ Xiang Zhang.
bpo-24657: Ngăn CGIRequestHandler thu gọn các dấu gạch chéo trong phần truy vấn của URL như thể đó là một đường dẫn. Bản vá từ Xiang Zhang.
bpo-25287: Không thêm crypt.METHOD_CRYPT vào crypt.methods nếu nó không được hỗ trợ. Kiểm tra xem nó có được hỗ trợ không, có thể nó không được hỗ trợ trên OpenBSD chẳng hạn.
bpo-23600: Việc triển khai tzinfo.fromutc() mặc định đã trả về kết quả sai trong một số trường hợp.
bpo-25203: Readline.set_completer_delims() không thành công không còn khiến mô-đun ở trạng thái không nhất quán nữa.
bpo-25011: rlcompleter hiện bỏ qua tên thuộc tính riêng tư và đặc biệt trừ khi tiền tố bắt đầu bằng dấu gạch dưới.
bpo-25209: rlcompleter hiện có thể thêm dấu cách hoặc dấu hai chấm sau từ khóa đã hoàn thành.
bpo-22241: tên timezone.utc bây giờ đơn giản là 'UTC', không phải 'UTC-00:00'.
bpo-23517: các phương thức fromtimestamp() và utcfromtimestamp() của datetime.datetime hiện làm tròn micro giây đến gần nhất với các mối liên hệ sẽ tiến đến số nguyên chẵn gần nhất (ROUND_HALF_EVEN), dưới dạng vòng (float), thay vì làm tròn về phía -Infinity (ROUND_FLOOR).
bpo-23552: Timeit hiện cảnh báo khi có sự chênh lệch đáng kể (4x) giữa thời điểm tốt nhất và tồi tệ nhất. Bản vá từ Serhiy Storchaka.
bpo-24633: gói trang web/README -> README.txt.
bpo-24879: help() và pydoc hiện có thể liệt kê các trường bộ dữ liệu được đặt tên theo thứ tự chúng được xác định thay vì theo thứ tự bảng chữ cái. Thứ tự được xác định bởi thuộc tính _fields nếu có.
bpo-24874: Cải thiện tốc độ của itertools.cycle() và làm cho phần dưa chuột của nó nhỏ gọn hơn.
Khắc phục sự cố trong itertools.cycle.__setstate__() khi đối số đầu tiên không phải là danh sách.
bpo-20059: urllib.parse tăng ValueError trên tất cả các cổng không hợp lệ. Bản vá của Martin Panter.
bpo-24360: Cải thiện __repr__ của argparse.Namespace() cho các số nhận dạng không hợp lệ. Bản vá của Matthias Bussonnier.
bpo-23426: run_setup đã bị hỏng trong distutils. Bản vá từ Alexander Belopolsky.
bpo-13938: 2to3 chuyển đổi StringTypes thành một bộ dữ liệu. Bản vá từ Mark Hammond.
bpo-2091: open() chấp nhận chuỗi chế độ 'U' chứa '+', nhưng 'U' chỉ có thể được sử dụng với 'r'. Bản vá từ Jeff Balogh và John O'Connor.
bpo-8585: các bài kiểm tra được cải thiện cho zipimporter2. Bản vá từ Mark Lawrence.
bpo-18622: unittest.mock.mock_open().reset_mock sẽ lặp lại vô tận. Bản vá từ Nicola Palumbo và Laurent De Buyst.
bpo-24426: Tối ưu hóa tìm kiếm nhanh trong biểu thức thông thường hiện hoạt động đối với các mẫu bắt đầu bằng việc thu thập các nhóm. Tối ưu hóa tìm kiếm nhanh bây giờ không thể bị vô hiệu hóa tại thời điểm biên dịch.
bpo-23661: unittest.mock side_effect bây giờ có thể lại là ngoại lệ. Đây là một hồi quy so với Python 3.4. Bản vá từ Ignacio Rossi
bpo-13248: Xóa chức năng kiểm tra.getmoduleinfo không được dùng nữa.
bpo-25578: Khắc phục rò rỉ bộ nhớ (khác) trong SSLSocket.getpeercer().
bpo-25530: Tắt giao thức SSLv3 dễ bị tấn công theo mặc định khi tạo ssl.SSLContext.
bpo-25569: Khắc phục rò rỉ bộ nhớ trong SSLSocket.getpeercert().
bpo-25471: Các ổ cắm được trả về từ Accept() dường như không bị chặn.
bpo-25319: Khi khởi tạo lại threading.Event, điều kiện cơ bản phải sử dụng khóa thông thường thay vì khóa đệ quy.
Bỏ qua getaddrinfo nếu máy chủ đã được giải quyết. Bản vá của A. Jesse Jiryu Davis.
bpo-26050: Thêm phương thức asyncio.StreamReader.readuntil(). Bản vá của Марк Коренберг.
bpo-25924: Tránh việc tuần tự hóa các lệnh gọi getaddrinfo(3) không cần thiết trên OS X phiên bản 10.5 trở lên. Bản vá gốc của A. Jesse Jiryu Davis.
bpo-26406: Tránh việc tuần tự hóa các lệnh gọi getaddrinfo(3) không cần thiết trên các phiên bản hiện tại của OpenBSD và NetBSD. Bản vá của A. Jesse Jiryu Davis.
bpo-26848: Sửa asyncio/subprocess.communicate() để xử lý dữ liệu đầu vào trống. Bản vá của Jack O'Connor.
bpo-27040: Thêm phương thức loop.get_Exception_handler
bpo-27041: asyncio: Thêm phương thức loop.create_future
IDLE¶
bpo-20640: Thêm bài kiểm tra cho idlib.configHelpSourceEdit. Bản vá của Saimadhav Heblikar.
Trong phần 'sự khác biệt giữa bảng điều khiển IDLE' của tài liệu IDLE, hãy làm rõ việc chạy với IDLE ảnh hưởng như thế nào đến sys.modules và các luồng tiêu chuẩn.
bpo-25507: sửa lỗi thay đổi không chính xác trong IOBinding khiến việc in bị ngăn cản. Tăng cường IOBinding htest để bao gồm tất cả các chức năng IOBinding chính.
bpo-25905: Hoàn nguyên chuyển đổi không mong muốn của ' thành ' RIGHT SINGLE QUOTATION MARK trong README.txt và mở cái này và NEWS.txt bằng 'ascii'. Mã hóa lại CREDITS.txt thành utf-8 và mở nó bằng 'utf-8'.
bpo-15348: Dừng công cụ gỡ lỗi (thông thường trong quy trình người dùng) trước khi đóng cửa sổ trình gỡ lỗi (chạy trong quy trình IDLE). Điều này ngăn chặn các lỗi RuntimeErrors bị phát hiện và bỏ qua.
bpo-24455: Ngăn IDLE treo khi a) đóng shell trong khi trình gỡ lỗi đang hoạt động (15347); b) đóng trình gỡ lỗi bằng nút [X] (15348); và c) kích hoạt trình gỡ lỗi khi đã hoạt động (24455). Bản vá của Mark Roseman thực hiện điều này bằng cách thực hiện hai thay đổi. 1. Tạm dừng và tiếp tục phương thức gui.interaction với cơ chế tcl vwait dành cho mục đích này (thay vì root.mainloop & .quit). 2. Trong gui.run, trước tiên hãy cho phép mọi tương tác hiện có chấm dứt.
Thay đổi 'Chương trình' thành 'Chương trình của bạn' trong 'chương trình tiêu diệt' IDLE? thông báo để làm rõ hơn rằng chương trình được đề cập là chương trình người dùng hiện đang chạy chứ không phải chính IDLE.
bpo-24750: Cải thiện giao diện của thanh trạng thái cửa sổ soạn thảo IDLE. Bản vá của Mark Roseman.
bpo-25313: Thay đổi cách xử lý các chủ đề màu văn bản tích hợp mới để giải quyết tốt hơn vấn đề tương thích do việc bổ sung IDLE Dark gây ra. Luôn sử dụng IdleConf. CurrentTheme đã sửa đổi ở mọi nơi trong Idlelib.
bpo-24782: Cấu hình tiện ích mở rộng hiện là một tab trong hộp thoại Tùy chọn IDLE chứ không phải là một hộp thoại riêng biệt. Các tab trước đây bây giờ là một danh sách được sắp xếp. Bản vá của Mark Roseman.
bpo-22726: Kích hoạt lại nút trợ giúp hộp thoại cấu hình với một số nội dung về các nút khác và chủ đề Tối IDLE mới.
bpo-24820: IDLE hiện có chủ đề màu văn bản tích hợp 'IDLE Dark'. Nó ít nhiều mang phong cách IDLE Classic đảo ngược, với nền màu xanh coban. Các chuỗi, chú thích, từ khóa,... vẫn có màu xanh, đỏ, cam,.... Để sử dụng nó với IDLE được phát hành trước tháng 11 năm 2015, hãy nhấn nút 'Lưu làm chủ đề tùy chỉnh mới' và nhập tên mới, chẳng hạn như 'Custom Dark'. Chủ đề tùy chỉnh sẽ hoạt động với mọi bản phát hành IDLE và có thể được sửa đổi.
bpo-25224: README.txt hiện là chỉ mục nhàn rỗi dành cho các nhà phát triển IDLE và những người dùng tò mò. Nội dung người dùng trước đây hiện có trong chương tài liệu IDLE. 'IDLE' bây giờ có nghĩa là 'Môi trường học tập và phát triển tích hợp'.
bpo-24820: Người dùng hiện có thể đặt màu điểm dừng trong Cài đặt -> Đánh dấu tùy chỉnh. Bản vá gốc của Mark Roseman.
bpo-24972: Nền lựa chọn không hoạt động hiện khớp với nền lựa chọn đang hoạt động, do người dùng định cấu hình, trên tất cả các hệ thống. Các mục được tìm thấy giờ đây luôn được đánh dấu trên Windows. Bản vá đầu tiên của Mark Roseman.
bpo-24570: Nhàn rỗi: làm cho hộp chú thích cuộc gọi và hộp hoàn thành xuất hiện trên máy Mac bị ảnh hưởng bởi hồi quy tk. Bản vá đầu tiên của Mark Roseman.
bpo-24988: Menu ngữ cảnh Idle ScrolledList (được sử dụng trong trình gỡ lỗi) hiện hoạt động trên Mac Aqua. Bản vá của Mark Roseman.
bpo-24801: Nhấp chuột phải để menu ngữ cảnh hoạt động trên Mac Aqua. Bản vá của Mark Roseman.
bpo-25173: Liên kết hộp thông báo tkinter với một tiện ích cụ thể. Đối với Mac OSX, hãy biến chúng thành một 'tờ'. Bản vá của Mark Roseman.
bpo-25198: Nâng cao trình xem html ban đầu hiện được sử dụng cho Trợ giúp nhàn rỗi. Thụt lề chính xác văn bản có khoảng cách cố định (bản vá của Mark Roseman). Cung cấp cho đoạn mã một nền màu xám xanh nhạt rất giống Nhân sư. Sử dụng lại chiều rộng và chiều cao ban đầu do người dùng đặt cho shell và trình soạn thảo. Khi sử dụng menu Mục lục (TOC), hãy đặt tiêu đề của phần ở đầu màn hình.
bpo-25225: Thu gọn và viết lại phần tài liệu nhàn rỗi về màu văn bản.
bpo-21995: Giải thích một số khác biệt giữa IDLE và console Python.
bpo-22820: Giải thích sự cần thiết của print khi chạy tệp từ trình chỉnh sửa Không hoạt động.
bpo-25224: Doc: mở rộng danh sách tính năng Nhàn rỗi và phần không có quy trình phụ.
bpo-25219: Cập nhật tài liệu cho các tùy chọn dòng lệnh không hoạt động. Một số bị thiếu và ghi chú không chính xác.
bpo-24861: Hầu hết Idlelib đều ở chế độ riêng tư và có thể thay đổi. Sử dụng Idleib.idle.* để khởi động chế độ Chờ. Xem Idlelib.__init__.__doc__.
bpo-25199: Nhàn rỗi: thêm nhận xét đồng bộ hóa cho những người bảo trì trong tương lai.
bpo-16893: Thay thế help.txt bằng help.html để hiển thị tài liệu ở trạng thái rảnh. Idlelib/help.html mới được loại bỏ Doc/build/html/library/idle.html. Nó trông đẹp hơn help.txt và sẽ ghi lại tài liệu Idle tốt hơn khi được phát hành. Trình xem html tkinter hoạt động cho tệp này được viết bởi Rose Roseman. Lớp EditorWindow.HelpDialog và tệp helt.txt hiện chưa được sử dụng sẽ không được dùng nữa.
bpo-24199: Ngừng sử dụng Idlelib.idlever không được sử dụng và có thể xóa trong phiên bản 3.6.
bpo-24790: Xóa mã không liên quan (cũng tạo ra xung đột 2 & 3).
Tài liệu¶
bpo-26736: Sử dụng HTTPS cho các liên kết bên ngoài trong tài liệu nếu có thể.
bpo-6953: Làm lại tài liệu mô-đun Readline để nhóm các hàm liên quan lại với nhau và thêm các chi tiết khác như các biến và hàm Readline cơ bản nào được truy cập.
bpo-23606: Thêm ghi chú vào tài liệu ctypes liên quan đến cdll.msvcrt.
bpo-24952: Làm rõ đối số kích thước mặc định của stack_size() trong mô-đun "luồng" và "_thread". Bản vá từ Mattip.
bpo-26014: Cập nhật tài liệu đóng gói 3.x: * Liên kết "Xem thêm" tới các tài liệu mới hiện được cung cấp trong các trang cũ * liên kết đến tài liệu setuptools đã được cập nhật
Kiểm tra¶
bpo-21916: Đã thêm các bài kiểm tra cho mô-đun rùa. Bản vá của ingrid, Gregory Loyse và Jelle Zijlstra.
bpo-26295: Khi sử dụng "python3 -m test --testdir=TESTDIR", regrtest không thêm "test". tiền tố để kiểm tra tên mô-đun.
bpo-26523: Nhóm luồng đa xử lý (multiprocessing.dummy.Pool) chưa được kiểm tra.
bpo-26015: Đã thêm các thử nghiệm mới để xử lý các trình lặp lặp của các chuỗi có thể thay đổi.
bpo-26325: Đã thêm test.support.check_no_resource_warning() để kiểm tra xem không có ResourceWarning nào được phát ra hay không.
bpo-25940: Đã thay đổi test_ssl để sử dụng máy chủ cục bộ nội bộ của nó nhiều hơn. Điều này tránh việc dựa vào svn.python.org, gần đây đã thay đổi chứng chỉ gốc.
bpo-25616: Các bài kiểm tra cho OrderedDict được trích xuất từ test_collections thành tệp riêng test_ordered_dict.
bpo-25449: Đã thêm các bài kiểm tra cho các lớp con OrderedDict.
bpo-25188: Thêm -P/--pgo vào test.regrtest để chặn lỗi xuất ra khi chạy bộ thử nghiệm nhằm mục đích xây dựng PGO. Bản vá đầu tiên của Alecsandru Patrascu.
bpo-22806: Thêm lệnh
python -m test --list-testsvào danh sách các bài kiểm tra.bpo-18174:
python -m test --huntrleaks ...hiện cũng kiểm tra sự rò rỉ của bộ mô tả tệp. Bản vá được viết bởi Richard Oudkerk.bpo-25260: Sửa lỗi
python -m test --coveragetrên Windows. Xóa danh sách các thư mục bị bỏ qua.PCbuild\rt.bathiện chấp nhận số lượng đối số không giới hạn để chuyển tới regrtest.py. Trước đây có giới hạn là 9.bpo-26583: Bỏ qua test_timestamp_overflow trong test_import nếu không thể ghi tệp bytecode.
xây dựng¶
bpo-21277: Đừng cố liên kết _ctypes với thư viện ffi_convenience.
bpo-26884: Sửa lỗi liên kết các mô-đun mở rộng cho các bản dựng chéo. Bản vá của Xavier de Gaye.
bpo-26932: Đã sửa lỗi hỗ trợ các hằng số RTLD_* được xác định là giá trị enum, không thông qua macro (đặc biệt là trên Android). Bản vá của Chí Hsuan Yen.
bpo-22359: Tắt quy tắc chạy _freeze_importlib và pgen khi biên dịch chéo. Đầu ra của các chương trình này thường được lưu cùng với mã nguồn và vẫn được tạo lại khi thực hiện bản dựng gốc. Bản vá của Xavier de Gaye.
bpo-21668: Liên kết các mô-đun audioop, _datetime, _ctypes_test với libm, ngoại trừ trên Mac OS X. Bản vá do Chí Hsuan Yen viết.
bpo-25702: Tùy chọn cấu hình --with-lto đã được thêm vào để cho phép tối ưu hóa thời gian liên kết tại thời điểm xây dựng trong quá trình tạo hồ sơ-opt. Một số trình biên dịch và chuỗi công cụ được biết là không tạo ra mã ổn định khi sử dụng LTO, hãy nhớ kiểm tra mọi thứ kỹ lưỡng trước khi dựa vào nó. Nó có thể tăng tốc một vài% so với tùy chọn hồ sơ.
bpo-26624: Thêm xác thực phiên bản ucrtbase[d].dll với cảnh báo cho các phiên bản cũ.
bpo-17603: Tránh lỗi về tệp fileblocks.o không tồn tại bằng cách sử dụng kiểm tra cấp độ thấp hơn cho st_blocks trong struct stat.
bpo-26079: Sửa thư mục đầu ra bản dựng cho tix-8.4.3.6. Bản vá của Bjoern Thiel.
bpo-26465: Cập nhật các bản dựng Windows để sử dụng OpenSSL 1.0.2g.
bpo-25348: Đã thêm đối số
--pgovà--pgo-jobvàoPCbuild\build.batđể xây dựng bằng Tối ưu hóa theo hướng dẫn hồ sơ. Tập lệnhPCbuild\build_pgo.batcũ đã bị xóa.bpo-25827: Thêm hỗ trợ xây dựng bằng ICC cho
configure, bao gồm cờ--with-iccmới.bpo-25696: Sửa lỗi cài đặt Python trên UNIX bằng make -j9.
bpo-24986: Hiện tại có thể xây dựng Python trên Windows mà không gặp lỗi khi không có thư viện bên ngoài.
bpo-24421: Biên dịch Mô-đun/_math.c một lần, trước khi xây dựng tiện ích mở rộng. Trước đây, nó có thể không biên dịch đúng cách nếu các bản dựng toán học và cmath đồng thời.
bpo-26465: Cập nhật trình cài đặt chỉ 32-bit OS X 10.5+ để xây dựng và liên kết với OpenSSL 1.0.2g.
bpo-26268: Cập nhật các bản dựng Windows để sử dụng OpenSSL 1.0.2f.
bpo-25136: Hỗ trợ thư viện sơ khai SDK văn bản mới của Apple Xcode 7.
bpo-24324: Không bật cảnh báo mã không thể truy cập khi sử dụng gcc vì tùy chọn này không hoạt động chính xác trong các phiên bản gcc cũ hơn và đã bị xóa âm thầm kể từ gcc-4.5.
cửa sổ¶
bpo-27053: Cập nhật make_zip.py để tạo chính xác tệp ZIP thư viện.
bpo-26268: Cập nhật tập lệnh prepare_ssl.py để xử lý các bản phát hành OpenSSL không bao gồm nội dung của thư mục include (nghĩa là 1.0.2e trở lên).
bpo-26071: bdist_wininst các tệp nhị phân được tạo không khởi động được và tìm thấy Python 32 bit
bpo-26073: Cập nhật danh sách số ma thuật trong launcher
bpo-26065: Loại trừ venv khỏi thư viện khi tạo bản phân phối có thể nhúng.
bpo-25022: Đã xóa thư mục PC/example_nt/ đã lỗi thời.
Công cụ/Bản trình diễn¶
bpo-26799: Khắc phục python-gdb.py: không nhận loại C một lần khi mã Python được tải mà nhận loại C theo yêu cầu. Các loại C có thể thay đổi nếu python-gdb.py được tải trước khi thực thi Python. Bản vá được viết bởi Thomas Ilsche.
bpo-26271: Sửa công cụ Freeze để sử dụng đúng các cờ được chuyển qua cấu hình. Bản vá của Daniel Shaulov.
bpo-26489: Thêm hỗ trợ giải nén từ điển vào Tools/parser/unparse.py. Bản vá của Guo Ci Teo.
bpo-26316: Sửa lỗi đánh máy tên biến trong Argument Clinic.
bpo-25440: Sửa đầu ra của python-config --extension-suffix.
bpo-25154: Tập lệnh pyvenv không còn được dùng nữa để thay thế cho
python3 -m venv.
C API¶
bpo-26312: SystemError hiện đã được nêu ra trong tất cả các lỗi lập trình khi sử dụng PyArg_ParseTupleAndKeywords(). RuntimeError đã nêu ra trước đó trong một số lỗi lập trình.
bpo-26198: ValueError hiện được nâng lên thay vì TypeError khi tràn bộ đệm trong các đơn vị định dạng phân tích cú pháp "es#" và "et#". SystemError hiện được đưa ra thay vì TypeError do lỗi lập trình trong chuỗi định dạng phân tích cú pháp.
Bản cuối cùng của Python 3.5.5¶
Release date: 2018-02-04
Không có thay đổi mới nào trong phiên bản 3.5.5.
Ứng viên phát hành Python 3.5.5 1¶
Release date: 2018-01-23
Bảo mật¶
bpo-32551: Thay đổi khởi tạo
sys.path[0]cho bpo-29139 đã gây ra sự hồi quy do bộc lộ sự không nhất quán trong cách khởi tạo sys.path khi thực thi__main__từ tệp zip, thư mục hoặc vị trí nhập khác. Đây được coi là một sự cố bảo mật tiềm ẩn vì nó có thể dẫn đến các quy trình đặc quyền bất ngờ tải mã từ các thư mục do người dùng kiểm soát trong các tình huống trước đây không xảy ra. Giờ đây, trình thông dịch luôn tránh việc thêm thư mục mẹ của vị trí nhập vàosys.pathvà đảm bảo không có mục nhậpsys.pathnào khác vô tình bị sửa đổi khi chèn vị trí nhập có tên trên dòng lệnh. (Ban đầu được báo cáo là bpo-29723 so với Python 3.6rc1, nhưng vào thời điểm đó, người ta đã bỏ sót rằng bản phát hành Python 3.5.4 sắp tới cũng sẽ bị ảnh hưởng)bpo-30657: Đã sửa lỗi tràn số nguyên có thể xảy ra trong PyBytes_DecodeEscape, CVE 2017-1000158. Bản vá gốc của Jay Bosamiya; được chuyển đổi sang Python 3 bởi Miro Hrončok.
bpo-30947: Nâng cấp bản sao nhúng libexpat từ phiên bản 2.2.1 lên 2.2.3 để nhận các bản sửa lỗi bảo mật.
Cốt lõi và nội dung¶
bpo-31095: Khắc phục sự cố tiềm ẩn trong GC do
tp_deallocgây ra, không gọiPyObject_GC_UnTrack().
Thư viện¶
bpo-32072: Đã khắc phục sự cố với số nguyên nhị phân: Đã sửa lỗi lưu bytearrays. Các đối tượng giống hệt nhau sẽ chỉ được lưu một lần. Các tham chiếu bằng nhau sẽ được tải dưới dạng các đối tượng giống hệt nhau. Đã thêm hỗ trợ để lưu và tải cấu trúc dữ liệu đệ quy.
bpo-31170: expat: Cập nhật libexpat từ 2.2.3 lên 2.2.4. Sửa lỗi sao chép một phần ký tự cho đầu vào UTF-8 (lỗi libexpat 115): https://github.com/libexpat/libexpat/issues/115
Python 3.5.4 cuối cùng¶
Release date: 2017-08-07
Thư viện¶
bpo-30119: ftplib.FTP.putline() hiện gửi ValueError trên các lệnh chứa CR hoặc LF. Bản vá của Donghee Na.
Ứng viên phát hành Python 3.5.4 1¶
Release date: 2017-07-23
Bảo mật¶
bpo-30730: Ngăn chặn việc đưa biến môi trường vào quy trình con trên Windows. Ngăn chặn việc chuyển các biến môi trường và đối số lệnh khác.
bpo-30694: Nâng cấp bản sao người nước ngoài từ 2.2.0 lên 2.2.1 để sửa nhiều lỗ hổng bảo mật bao gồm: CVE 2017-9233 (DoS vòng lặp vô hạn thực thể bên ngoài), CVE 2016-9063 (Tràn số nguyên, sửa lại), CVE 2016-0718 (Khắc phục lỗi hồi quy từ bản sửa lỗi của 2.2.0 thành CVE 2016-0718) và CVE 2012-0876 (Bộ đếm băm tràn ngập với SipHash). Lưu ý: CVE 2016-5300 (Sử dụng các nguồn entropy dành riêng cho hệ điều hành như getrandom) không ảnh hưởng đến Python, vì Python đã lấy entropy từ HĐH để đặt bí mật người nước ngoài bằng
XML_SetHashSalt().bpo-30500: Sửa urllib.parse.splithost() để phân tích chính xác các đoạn. Ví dụ:
splithost('//127.0.0.1#@evil.com/')hiện trả về chính xác máy chủ127.0.0.1, thay vì coi@evil.comlà máy chủ trong xác thực (login@host).bpo-29591: Cập nhật bản sao nước ngoài từ 2.1.1 lên 2.2.0 để nhận các bản sửa lỗi của CVE 2016-0718 và CVE 2016-4472. Xem https://sourceforge.net/p/expat/bugs/537/ để biết thêm thông tin.
Cốt lõi và nội dung¶
bpo-30876: Quá trình nhập tương đối từ gói chưa tải hiện sẽ nhập lại gói thay vì không thành công với SystemError. Quá trình nhập tương đối từ gói không phải hiện không thành công với ImportError thay vì SystemError.
bpo-30765: Tránh chặn trong pthread_mutex_lock() khi PyThread_acquire_lock() được yêu cầu không chặn.
bpo-27945: Đã sửa các lỗi phân tách khác nhau bằng dict khi bộ sưu tập đầu vào bị thay đổi trong quá trình tìm kiếm, chèn hoặc so sánh. Dựa trên các bản vá của Duane Griffin và Tim Mitchell.
bpo-25794: Đã sửa lỗi type.__setattr__() và type.__delattr__() cho các tên thuộc tính không được thực hiện. Dựa trên bản vá của Eryk Sun.
bpo-29935: Đã sửa các thông báo lỗi trong phương thức index() của bộ, danh sách và deque khi truyền các chỉ mục sai loại.
bpo-28876:
bool(range)hoạt động ngay cả khilen(range)tăngOverflowError.bpo-29600: Sửa các giá trị trả về của coroutine trong StopIteration.
bpo-29537: Khôi phục khả năng tương thích thời gian chạy với các tệp mã byte do CPython 3.5.0 đến 3.5.2 tạo ra và điều chỉnh vòng lặp eval để tránh các sự cố có thể do biến thể không đúng định dạng của opcode BUILD_MAP_UNPACK_WITH_CALL mà chúng có thể chứa. Bản vá của Petr Viktorin, Serhiy Storchaka và Nick Coghlan.
bpo-28598: Hỗ trợ __rmod__ cho các lớp con của str được gọi trước str.__mod__. Bản vá của Martijn Pieters.
bpo-29602: Khắc phục việc xử lý không chính xác các số 0 đã ký trong hàm tạo phức tạp cho các lớp con phức tạp và cho các đầu vào có phương thức __complex__. Bản vá của Serhiy Storchaka.
bpo-29347: Đã sửa lỗi các con trỏ không xác định có thể hội thảo khi tạo các đối tượng yếu.
bpo-29438: Đã sửa lỗi không sử dụng được trong lệnh chia sẻ khóa.
bpo-29319: Ngăn chặn ghi đè RunMainFromImporter sys.path[0].
bpo-29337: Đã sửa lỗi BytesWarning khi so sánh các đối tượng mã. Cảnh báo có thể được phát ra tại thời điểm biên dịch.
bpo-29478: Nếu max_line_length=None được chỉ định trong khi sử dụng chính sách Compat32 thì nó sẽ không còn bị bỏ qua nữa. Bản vá của Mircea Cosbuc.
Thư viện¶
bpo-29403: Sửa lỗi autospec của
unittest.mockđể không bị lỗi trên các hàm dựng sẵn gắn với phương thức. Bản vá của Aaron Gallagher.bpo-30961: Sửa lỗi giảm tham chiếu mượn trong tracemalloc.
bpo-30886: Khắc phục multiprocessing.Queue.join_thread(): nó hiện đợi cho đến khi luồng hoàn thành, ngay cả khi luồng được bắt đầu bởi cùng một tiến trình đã tạo hàng đợi.
bpo-29854: Sửa lỗi segfault trong readline khi sử dụng tùy chọn kích thước lịch sử của readline. Bản vá của Nir Soffer.
bpo-30807: signal.setitimer() có thể tắt bộ hẹn giờ khi truyền một giá trị nhỏ. Các giá trị nhỏ (chẳng hạn như 1e-6) là các giá trị khác 0 hợp lệ cho setitimer(), được chỉ định là lấy khoảng thời gian có độ phân giải micro giây. Tuy nhiên, trên một số nền tảng, quy trình chuyển đổi của chúng tôi có thể chuyển đổi 1e-6 thành khoảng 0, do đó vô hiệu hóa bộ hẹn giờ thay vì lập lịch (lập lại) nó.
bpo-30441: Sửa lỗi khi sửa đổi os.environ trong khi lặp lại nó
bpo-30532: Sửa lỗi trình phân tích cú pháp giá trị tiêu đề email bỏ khoảng trắng gấp trong một số trường hợp nhất định.
bpo-29169: Cập nhật zlib lên 1.2.11.
bpo-30879: os.listdir() và os.scandir() hiện phát ra tên byte khi được gọi với đối số giống byte.
bpo-30746: Bị cấm ký tự '=' trong tên biến môi trường trong
os.putenv()vàos.spawn*().bpo-29755: Đã sửa lỗi nhóm hàm lgettext() trong mô-đun gettext. Bây giờ họ luôn trả về byte.
bpo-30645: Sửa lỗi tính toán đường dẫn trong imp.load_package(), sửa lỗi này trong các trường hợp gói hàng chỉ được vận chuyển bằng mã byte. Bản vá của Alexandru Ardelean.
bpo-23890: unittest.TestCase.assertRaises() hiện phá vỡ chu trình tham chiếu theo cách thủ công để không giữ cho các đối tượng tồn tại lâu hơn dự kiến.
bpo-30149: kiểm tra.signature() hiện hỗ trợ các lệnh gọi có tham số đối số biến được gói bằng phương thức một phần. Bản vá của Donghee Na.
bpo-29931: Đã sửa lỗi kiểm tra so sánh cho các đối tượng ipaddress.ip_interface. Bản vá của Sanjay Sundaresan.
bpo-24484: Tránh tình trạng chạy đua trong quá trình dọn dẹp đa xử lý.
bpo-28994: Truy nguyên không còn được hiển thị cho SystemExit được đưa ra trong lệnh gọi lại được đăng ký bởi atexit.
bpo-30508: Không ghi lại các ngoại lệ nếu phương thức "cancel()" của Nhiệm vụ/Tương lai được gọi.
bpo-28556: Cập nhật mô-đun gõ: Thêm AsyncContextManager chung, thêm hỗ trợ cho ContextManager trên tất cả các phiên bản. PR gốc của Jelle Zijlstra và Ivan Levkivskyi
bpo-29870: Khắc phục rò rỉ ổ cắm ssl khi kết nối bị hủy khi triển khai asyncio/ssl. Bản vá của Michaël Sghaïer.
bpo-29743: Đóng vận chuyển trong quá trình bắt tay làm rò rỉ ổ cắm. Bản vá của Nikolay Kim
bpo-27585: Sửa lỗi hủy người phục vụ trong asyncio.Lock. Bản vá của Mathieu Sornay.
bpo-30418: Trên Windows, subprocess.Popen.communicate() giờ đây cũng bỏ qua EINVAL trên stdin.write() nếu tiến trình con vẫn đang chạy nhưng đã đóng đường ống.
bpo-30378: Khắc phục sự cố log.handlers.SysLogHandler không thể xử lý địa chỉ IPv6.
bpo-29960: Giữ nguyên trạng thái của trình tạo khi _random.Random.setstate() đưa ra một ngoại lệ. Bản vá của Bryan Olson.
bpo-30414: luồng chạy nền multiprocessing.Queue._feed không thoát khỏi vòng lặp chính ngoại lệ.
bpo-30003: Sửa lỗi xử lý các ký tự thoát trong codec HZ. Dựa trên bản vá của Ma Lin.
bpo-30301: Sửa lỗi AttributionError khi sử dụng SimpleQueue.empty() trong phương thức khởi động spawn và forkserver.
bpo-30329: imaplib và poplib hiện đã gặp lỗi WSAEINVAL ổ cắm Windows (mã 10022) khi tắt máy (SHUT_RDWR): Đã thử một thao tác không hợp lệ. Lỗi này đôi khi xảy ra trên các kết nối SSL.
bpo-30375: Cảnh báo phát ra khi biên dịch biểu thức chính quy giờ đây luôn trỏ đến dòng trong mã người dùng. Trước đây, chúng có thể trỏ vào phần bên trong của mô-đun re nếu được phát ra từ bên trong các nhóm hoặc điều kiện.
bpo-30048: Đã sửa lỗi
Task.cancel()có thể bị bỏ qua khi tác vụ đang chạy coroutine và coroutine được trả về mà không có thêmawaitnào nữa.bpo-29990: Sửa lỗi kiểm tra phạm vi trong bộ giải mã GB18030. Bản vá gốc của Ma Lin.
bpo-26293: Kết quả thay đổi do tệp zip bị hỏng. (Xem thêm: bpo-29094)
bpo-30243: Đã xóa các phương thức __init__ của trình quét và bộ mã hóa của _json. Việc lạm dụng chúng có thể gây rò rỉ bộ nhớ hoặc treo máy. Bây giờ các đối tượng máy quét và bộ mã hóa đã được khởi tạo hoàn toàn trong các phương thức __new__.
bpo-30185: Tránh truy ngược bàn phímInterrupt trong quy trình trợ giúp máy chủ ngã ba khi nhận được Ctrl-C.
bpo-28556: Nhiều bản cập nhật khác nhau cho mô-đun gõ: thêm kiểu gõ.NoReturn, sử dụng WrapperDescriptorType, sửa một số lỗi nhỏ. PR gốc của Jim Fasarakis-Hilliard và Ivan Levkivskyi.
bpo-30205: Sửa lỗi getsockname() cho ổ cắm AF_UNIX không liên kết trên Linux.
bpo-30070: Đã sửa lỗi rò rỉ và sự cố khi xử lý lỗi trong mô-đun trình phân tích cú pháp.
bpo-30061: Đã khắc phục sự cố trong các phương thức IOBase __next__() và readlines() khi readline() hoặc __next__() lần lượt trả về đối tượng không có kích thước lớn. Đã khắc phục các lỗi khác có thể xảy ra do không kiểm tra kết quả của PyObject_Size(), PySequence_Size() hoặc PyMapping_Size().
bpo-30068: _io._IOBase.readlines sẽ kiểm tra xem nó có đóng trước khi có gợi ý hay không.
bpo-29694: Đã sửa lỗi điều kiện cuộc đua trong pathlib mkdir với cờ parent=True. Bản vá của Armin Rigo.
bpo-29692: Đã sửa lỗi tùy ý hủy chuỗi ngoại lệ RuntimeError trong contextlib.contextmanager. Bản vá của Siddharth Velankar.
bpo-29998: Pickling và sao chép ImportError hiện giữ nguyên các thuộc tính tên và đường dẫn.
bpo-29942: Khắc phục sự cố trong itertools.chain.from_iterable khi gặp phải các lần lặp trống dài.
bpo-27863: Đã khắc phục nhiều sự cố trong ElementTree do điều kiện chủng tộc và loại sai.
bpo-28699: Đã sửa lỗi trong các nhóm trong multiprocessing.pool khiến việc đưa ra một ngoại lệ ở lần đầu tiên của một lần lặp có thể nuốt chửng ngoại lệ đó hoặc khiến chương trình bị treo. Bản vá của Davin Potts và Xiang Zhang.
bpo-25803: Tránh các lỗi không chính xác do Path.mkdir(exist_ok=True) đưa ra khi HĐH ưu tiên các lỗi như EACCES hơn EEXIST.
bpo-29861: Đưa ra các tham chiếu đến các tác vụ, đối số và kết quả của chúng ngay khi chúng được hoàn thành trong multiprocessing.Pool.
bpo-29884: errorhandler: Khôi phục sigaltstack cũ trong quá trình gỡ bỏ. Bản vá của Christophe Zeitouny.
bpo-25455: Đã khắc phục sự cố khi lặp lại các đối tượng giống như tệp được đệm đệ quy.
bpo-29800: Khắc phục sự cố trong một phần.__repr__ nếu khóa của một phần.keywords không phải là chuỗi. Bản vá của Michael Seifert.
bpo-29742: get_extra_info() tăng ngoại lệ nếu được gọi khi vận chuyển ssl đã đóng. Bản vá của Nikolay Kim.
bpo-8256: Đã sửa lỗi có thể xảy ra hoặc lỗi đầu vào() nếu thuộc tính "mã hóa" hoặc "lỗi" của sys.stdin hoặc sys.stdout không được đặt hoặc không phải là chuỗi.
bpo-28298: Sửa lỗi ngăn mảng 'Q', 'L' và 'I' chấp nhận các phần tử có thể intable lớn (các đối tượng có __int__) làm phần tử. Bản vá của Oren Milman.
bpo-29615: SimpleXMLRPCDispatcher không còn xâu chuỗi KeyError (hoặc bất kỳ ngoại lệ nào khác) thành (các) ngoại lệ được nêu ra trong các phương thức được gửi đi. Bản vá của Petr Motejlek.
bpo-29704: asyncio.subprocess.SubprocessStreamProtocol không còn đóng trước khi tất cả các đường ống được đóng lại.
bpo-29703: Sửa lỗi asyncio để hỗ trợ khởi tạo các vòng lặp sự kiện mới trong các tiến trình con.
bpo-29376: Sửa lỗi xác nhận trong threading._DummyThread.is_alive().
bpo-29110: Sửa lỗi rò rỉ đối tượng tệp trong aifc.open() khi tệp được cung cấp dưới dạng đường dẫn hệ thống tệp và không ở định dạng AIFF hợp lệ. Bản vá của Anthony Zhang.
bpo-28961: Fix unittest.mock._Call helper: đừng bỏ qua tham số tên nữa. Bản vá được viết bởi Jiajun Huang.
bpo-29532: Việc thay đổi từ điển kwarg được chuyển tới functools.partial() không còn ảnh hưởng đến một phần đối tượng sau khi tạo.
bpo-28556: Nhiều bản cập nhật khác nhau cho mô-đun gõ: gõ.Counter, gõ.ChainMap, bộ nhớ đệm ABC được cải thiện, v.v. PR gốc của Jelle Zijlstra, Ivan Levkivskyi, Manuel Krebber và Łukasz Langa.
bpo-29100: Khắc phục hồi quy datetime.fromtimestamp() được giới thiệu trong Python 3.6.0: kiểm tra năm tối thiểu và tối đa.
bpo-29519: Khắc phục các ngoại lệ phát sinh yếu trong khi tắt trình thông dịch khi được sử dụng với sự kết hợp hiếm hoi giữa đa xử lý và codec tùy chỉnh.
bpo-29416: Ngăn chặn vòng lặp vô hạn trong pathlib.Path.mkdir
bpo-29444: Đã sửa lỗi truy cập bộ đệm ngoài giới hạn trong phương thức group() của đối tượng khớp. Dựa trên bản vá của WGH.
bpo-29335: Sửa subprocess.Popen.wait() khi tiến trình con đã thoát sang trạng thái dừng thay vì kết thúc (ví dụ: khi ở trạng thái ptrace).
bpo-29290: Khắc phục sự hồi quy trong argparse khiến các thông báo trợ giúp sẽ nằm ở các khoảng trắng không bị ngắt.
bpo-28735: Đã sửa lỗi so sánh mock.MagickMock với mock.ANY.
bpo-29011: Sửa một thiếu sót quan trọng bằng cách thêm Deque vào mô-đun gõ.
bpo-29219: Đã sửa lỗi đệ quy vô hạn trong bản sao của các phiên bản ctypes.CDLL chưa được khởi tạo.
bpo-28969: Đã sửa lỗi tình trạng chạy đua trong triển khai C của functools.lru_cache. KeyError có thể tăng lên khi chức năng được lưu trong bộ nhớ đệm có bộ nhớ đệm đầy được gọi đồng thời từ các luồng khác nhau có cùng đối số không được lưu trong bộ nhớ đệm.
bpo-29142: Trong urllib.request, hậu tố trong biến môi trường no_proxy có dấu chấm ở đầu có thể khớp lại với tên máy chủ có liên quan (ví dụ: .b.c khớp với a.b.c). Bản vá của Milan Oberkirch.
Tài liệu¶
bpo-30176: Thêm các hằng số liên quan đến thuộc tính bị thiếu trong tài liệu về lời nguyền.
bpo-26985: Thêm thông tin còn thiếu của đối tượng mã trong tài liệu kiểm tra.
bpo-28929: Liên kết tài liệu với tệp nguồn trên GitHub.
bpo-25008: Tài liệu smtpd.py không còn được dùng nữa và thêm con trỏ tới aiosmtpd, một giải pháp thay thế dựa trên asyncio của bên thứ ba.
bpo-26355: Thêm liên kết tiêu đề chuẩn trên mỗi trang vào phiên bản chính tương ứng của tài liệu. Bản vá của Matthias Bussonnier.
bpo-29349: Sửa cú pháp Python 2 trong mã để xây dựng tài liệu.
Kiểm tra¶
bpo-30822: Sửa trình phân tích cú pháp dòng lệnh regrtest để cho phép truyền -u extralargefile để chạy test_zipfile64.
bpo-30383: regrtest: Tăng cường tính năng regrtest và backport từ nhánh chính. Thêm tùy chọn: --coverage, --testdir, --list-tests (liệt kê các tệp kiểm tra, không chạy chúng), --list-case (liệt kê các mã định danh kiểm tra, không chạy chúng, bpo-30523), --matchfile (tải danh sách các bộ lọc kiểm tra từ một tệp văn bản, bpo-30540), --slowest (bí danh thành --slow). Cải thiện kết quả đầu ra: thêm dấu thời gian, kết quả kiểm tra, các thử nghiệm hiện đang chạy, tóm tắt "Kết quả thử nghiệm: xxx" với tổng thời lượng, v.v. Sửa lỗi tìm kiếm rò rỉ tham chiếu trong regrtest, --huntrleaks: regrtest hiện khởi động bộ đệm, tạo rõ ràng tất cả các singleton nội bộ được tạo theo yêu cầu để ngăn chặn kết quả dương tính giả khi kiểm tra rò rỉ tham chiếu. (bpo-30675).
bpo-30357: test_thread: setUp() hiện sử dụng support.threading_setup() và support.threading_cleanup() để đợi cho đến khi các luồng hoàn thành nhằm tránh tác dụng phụ ngẫu nhiên trong các lần kiểm tra sau. Bản vá đầu tiên được viết bởi Grzegorz Grzywacz.
bpo-28087: Bỏ qua lỗi thăm dò test_asyncore và test_eintr trên macOS. Bỏ qua một số thử nghiệm của select.poll khi chạy trên macOS do các sự cố chưa được giải quyết với chức năng thăm dò hệ thống cơ bản trên một số phiên bản macOS.
bpo-30197: Các hàm nâng cao swap_attr() và swap_item() trong mô-đun test.support. Bây giờ chúng hoạt động khi xóa thuộc tính hoặc mục được thay thế bên trong câu lệnh with. Giá trị cũ của thuộc tính hoặc mục (hoặc Không có nếu nó không tồn tại) bây giờ sẽ được gán cho mục tiêu của mệnh đề "as", nếu có.
bpo-29571: để khớp với hành vi của cờ
re.LOCALE, test_re.test_locale_flag hiện sử dụnglocale.getpreferredencoding(False)để xác định mã hóa ứng cử viên cho biểu thức chính quy thử nghiệm (cho phép nó bỏ qua thử nghiệm một cách chính xác khi mã hóa miền địa phương mặc định là mã hóa nhiều byte)
xây dựng¶
bpo-29243: Ngăn chặn việc xây dựng lại Python không cần thiết trong
make test,make installvà một số mục tiêu khác khi được định cấu hình với--enable-optimizations.bpo-23404: Không tạo lại các tệp đã tạo dựa trên thời gian sửa đổi tệp nữa: hành động hiện rõ ràng. Thay thế
make touchbằngmake regen-all.bpo-29643: Sửa lỗi
--enable-optimizationkhông hoạt động.
cửa sổ¶
C API¶
bpo-27867: Hàm PySlice_GetIndicesEx() được thay thế bằng macro nếu Py_LIMITED_API được đặt thành giá trị trong khoảng từ 0x03050400 đến 0x03060000 (không bao gồm) hoặc 0x03060100 trở lên.
bpo-29083: Đã sửa lỗi khai báo một số hàm API công khai. PyArg_VaParse() và PyArg_VaParseTupleAndKeywords() không khả dụng ở số lượng giới hạn API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() và Py_BuildValue() không có sẵn trong phiên bản giới hạn API < 3.3 khi PY_SSIZE_T_CLEAN được xác định.
Cuối cùng của Python 3.5.3¶
Release date: 2017-01-17
Không có thay đổi mã nào giữa bản cuối cùng 3.5.3rc1 và 3.5.3.
Ứng viên phát hành Python 3.5.3 1¶
Release date: 2017-01-02
Bảo mật¶
Cốt lõi và nội dung¶
bpo-29073: định dạng bytearray không còn bị cắt bớt ở byte null đầu tiên.
bpo-28932: Không bao gồm <sys/random.h> nếu nó không tồn tại.
bpo-28147: Khắc phục rò rỉ bộ nhớ trong từ điển bảng chia: setattr() không được chuyển bảng kết hợp thành bảng chia.
bpo-25677: Sửa vị trí của dấu mũ lỗi cú pháp cho các khối thụt lề. Dựa trên bản vá của Michael Layzell.
bpo-29000: Đã sửa lỗi định dạng byte của số bát phân với phần đệm bằng 0 ở dạng thay thế.
bpo-28512: Đã sửa lỗi cài đặt thuộc tính offset của SyntaxError bằng PyErr_SyntaxLocationEx() và PyErr_SyntaxLocationObject().
bpo-28991: functools.lru_cache() dễ mắc phải lỗi quay lại ít người biết đến do hàm len() được vá bằng khỉ.
bpo-28648: Đã khắc phục sự cố trong Py_DecodeLocale() trong bản dựng gỡ lỗi trên Mac OS X khi giải mã các ký tự thiên văn. Bản vá của Xiang Zhang.
bpo-19398: Dấu gạch chéo bổ sung không còn được thêm vào các thành phần sys.path trong trường hợp các thành phần PYTHONPATH tại thời gian biên dịch trống.
bpo-28426: Đã khắc phục sự cố tiềm ẩn trong PyUnicode_AsDecodedObject() trong bản dựng gỡ lỗi.
bpo-23782: Đã sửa lỗi rò rỉ bộ nhớ có thể xảy ra trong _PyTraceback_Add() và mất ngoại lệ trong PyTraceBack_Here().
bpo-28379: Đã thêm các kiểm tra và kiểm tra độ tỉnh táo cho PyUnicode_CopyCharacters(). Bản vá của Xiang Zhang.
bpo-28376: Loại vòng lặp tầm xa hiện được đăng ký là Iterator. Bản vá của Oren Milman.
bpo-28376: Hàm tạo của range_iterator hiện kiểm tra bước đó không phải là 0. Bản vá của Oren Milman.
bpo-26906: Việc giải quyết các phương thức đặc biệt của loại chưa được khởi tạo hiện gây ra việc khởi tạo ngầm loại thay vì lỗi.
bpo-18287: PyType_Ready() hiện kiểm tra xem tp_name có phải là NULL hay không. Bản vá gốc của Niklas Koep.
bpo-24098: Đã khắc phục sự cố có thể xảy ra khi AST bị thay đổi trong quá trình biên dịch.
bpo-28350: Các hằng chuỗi có ký tự null không còn được thực hiện nữa.
bpo-26617: Khắc phục sự cố khi GC chạy trong các lệnh gọi lại yếu.
bpo-27942: Các hằng chuỗi hiện được thực hiện đệ quy trong các bộ dữ liệu và tập hợp cố định.
bpo-21578: Đã sửa thông báo lỗi gây hiểu nhầm khi ImportError được gọi với đối số từ khóa không hợp lệ.
bpo-28203: Sửa lỗi loại thông báo không chính xác từ
complex(1.0, {2:3}). Bản vá của Soumya Sharma.bpo-27955: Dự phòng khi đọc thiết bị /dev/urandom khi tòa nhà getrandom() không thành công với EPERM, ví dụ như khi bị chặn bởi SECCOMP.
bpo-28131: Khắc phục hồi quy trong hàm biên dịch_source() của zipimport. zipimport nên sử dụng mức tối ưu hóa tương tự như trình thông dịch.
bpo-25221: Sửa kết quả bị hỏng từ PyLong_FromLong(0) khi Python được biên dịch với NSMALLPOSINTS = 0.
bpo-25758: Ngăn zipimport mã hóa tên tệp một cách không cần thiết (bản vá của Eryk Sun)
bpo-28189: dictitems_contains không còn nuốt lỗi so sánh nữa. (Bản vá của Xiang Zhang)
bpo-27812: Xóa chính xác phản hồi của khung của trình tạo đối với trình tạo để tránh sự cố trong frame.clear().
bpo-27811: Khắc phục sự cố khi một coroutine chưa được chờ đợi được hoàn tất và bật cảnh báo khi có lỗi.
bpo-27587: Khắc phục một sự cố khác do PVS-Studio tìm thấy: Kiểm tra con trỏ rỗng sau khi sử dụng 'def' trong _PyState_AddModule(). Bản vá đầu tiên của Christian Heimes.
bpo-26020: thứ tự đánh giá theo nghĩa đen được đặt không khớp với hành vi được ghi lại.
bpo-27782: Giờ đây, việc nhập mô-đun mở rộng nhiều pha đã cho phép sử dụng trường
m_methodsmột cách chính xác để thêm các hàm cấp mô-đun vào các phiên bản của loại không phải mô-đun được trả về từPy_create_mod. Bản vá của Xiang Zhang.bpo-27936: Hàm round() chấp nhận đối số None thứ hai cho một số loại nhưng không chấp nhận đối số khác. Đã sửa lỗi không nhất quán bằng cách chấp nhận Không có cho tất cả các loại số.
bpo-27487: Cảnh báo nếu tìm thấy đối số mô hình con thành "python -m" hoặc runpy.run_module() trong sys.modules sau khi các gói cha được nhập nhưng trước khi mô hình con được thực thi.
bpo-27558: Sửa lỗi SystemError khi triển khai câu lệnh "raise". Trong một chủ đề hoàn toàn mới, hãy đưa ra RuntimeError vì không có ngoại lệ hoạt động nào để phát lại. Bản vá được viết bởi Xiang Zhang.
bpo-27419: __import__() tiêu chuẩn không còn tra cứu "__import__" trong toàn cục hoặc nội trang để nhập mô-đun con hoặc "từ nhập". Đã sửa lỗi xử lý lỗi tên gói không phải chuỗi.
bpo-27083: Tôn trọng biến môi trường PYTHONCASEOK trong Windows.
bpo-27514: Biến việc có quá nhiều khối tĩnh được lồng thành SyntaxError thay vì SystemError.
bpo-27473: Đã sửa lỗi tràn số nguyên có thể xảy ra theo byte và nối bytearray. Bản vá của Xiang Zhang.
bpo-27507: Thêm tính năng kiểm tra tràn số nguyên trong bytearray.extend(). Bản vá của Xiang Zhang.
bpo-27581: Đừng dựa vào gói để kiểm tra tràn trong PySequence_Tuple(). Bản vá của Xiang Zhang.
bpo-27443: __length_hint__() của các trình vòng lặp bytearray không còn trả về số nguyên âm cho một bytearray đã thay đổi kích thước.
bpo-27942: Sửa lỗi rò rỉ bộ nhớ trong codeobject.c
Thư viện¶
bpo-15812: kiểm tra.getframeinfo() hiện hiển thị chính xác dòng đầu tiên của ngữ cảnh. Bản vá của Sam Breese.
bpo-29094: Các giá trị chênh lệch trong tệp ZIP được tạo bằng đối tượng tệp bên ngoài và các chế độ "w" và "x" hiện có liên quan đến phần đầu của tệp.
bpo-13051: Đã sửa lỗi đệ quy trong các lời nguyền.textpad.Textbox lớn hoặc đã thay đổi kích thước. Dựa trên bản vá của Tycho Andersen.
bpo-29119: Khắc phục các điểm yếu trong phiên bản python thuần túy của phương thức Collection.OrderedDict move_to_end(). Đóng góp bởi Andra Bogildea.
bpo-9770: các biến vị ngữcurs.ascii hiện hoạt động chính xác với số nguyên âm.
bpo-28427: khóa cũ không được xóa giá trị mới khỏi WeakValueDictionary khi thu thập từ một chuỗi khác.
bpo-28923: Xóa các tạo phẩm của trình soạn thảo khỏi Tix.py.
bpo-28871: Đã khắc phục sự cố khi phân bổ ElementTree sâu.
bpo-19542: Sửa lỗi trong WeakValueDictionary.setdefault() và WeakValueDictionary.pop() khi bộ sưu tập GC diễn ra trong một luồng khác.
bpo-20191: Đã khắc phục sự cố trong Resource.prlimit() khi chuyển một chuỗi không sở hữu các phần tử của nó làm giới hạn.
bpo-28779: multiprocessing.set_forkserver_preload() sẽ làm hỏng quá trình forkserver nếu một mô-đun được tải trước khởi tạo một số đối tượng đa xử lý như khóa.
bpo-28847: dbm.dumb hiện hỗ trợ đọc các tệp chỉ đọc và không còn ghi tệp chỉ mục khi nó không bị thay đổi.
bpo-25659: Trong ctypes, ngăn chặn sự cố khi gọi các phương thức from_buffer() và from_buffer_copy() trên các lớp trừu tượng như Array.
bpo-28732: Khắc phục sự cố trong os.spawnv() không có phần tử nào trong args
bpo-28485: Luôn tăng ValueError cho tham số compillall.compile_dir(workers=...) âm, ngay cả khi không có đa luồng.
bpo-28387: Đã khắc phục sự cố có thể xảy ra trong bộ giải phóng _io.TextIOWrapper khi trình thu gom rác được gọi trong luồng khác. Dựa trên bản vá của Sebastian Cufre.
bpo-27517: Bộ nén và giải nén LZMA không còn đưa ra ngoại lệ nếu được cung cấp dữ liệu trống hai lần. Bản vá của Benjamin Fogle.
bpo-28549: Đã sửa lỗi segfault trong addch() của lời nguyền bằng ncurses6.
bpo-28449: tarfile.open() với chế độ "r" hoặc "r:" hiện cố gắng mở tệp tar bằng tính năng nén trước khi thử mở tệp đó mà không nén. Nếu không thì có 50% cơ hội thất bại với ign_zeros=True.
bpo-23262: Mô-đun trình duyệt web hiện hỗ trợ Firefox 36+ và các trình duyệt phái sinh. Dựa trên bản vá của Oleg Broytman.
bpo-27939: Đã sửa lỗi trong tkinter.ttk.LabeledScale và tkinter.Scale do biểu diễn thang đo dưới dạng giá trị float bên trong Tk. tkinter.IntVar hiện hoạt động nếu giá trị float được đặt thành biến Tk cơ bản.
bpo-28255: Calendar.TextCalendar().prmonth() không còn in khoảng trắng ở đầu dòng mới sau khi in lịch của một tháng. Bản vá của Xiang Zhang.
bpo-20491: Lớp textwrap.TextWrapper hiện tôn trọng các khoảng trắng không bị phá vỡ. Dựa trên bản vá của Kaarle Ritvanen.
bpo-28353: os.fwalk() không còn bị lỗi với các liên kết bị hỏng.
bpo-25464: Đã sửa lỗi HList.header_exists() trong mô-đun tkinter.tix bằng cách thêm một giải pháp thay thế cho lỗi thư viện Tix.
bpo-28488: Shutil.make_archive() không còn thêm mục "./" vào kho lưu trữ ZIP nữa.
bpo-24452: Tạo trình duyệt web hỗ trợ Chrome trên Mac OS X.
bpo-20766: Sửa các tài liệu tham khảo bị rò rỉ bởi pdb trong quá trình xử lý trình xử lý SIGINT.
bpo-26293: Đã sửa lỗi ghi tệp ZIP không bắt đầu từ đầu tệp. Giá trị chênh lệch trong tệp ZIP hiện có liên quan đến thời điểm bắt đầu lưu trữ theo thông số kỹ thuật.
bpo-28321: Đã sửa lỗi viết các ký tự không phải BMP với định dạng nhị phân trong plistlib.
bpo-28322: Đã khắc phục sự cố có thể xảy ra khi giải nén các đối tượng itertools khỏi dữ liệu dưa không chính xác. Dựa trên bản vá của John Leitch.
Khắc phục sự cố và tràn số nguyên có thể xảy ra trong mô-đun mmap với các kiểu sử dụng bất thường.
bpo-1703178: Khắc phục khả năng chuyển tùy chọn --link-objects sang lệnh distutils build_ext.
bpo-28253: Đã sửa lỗi chức năng lịch cho các tháng cực đoan: 0001-01 và 9999-12. Các phương thức itermonthdays() và itermonthdays2() được triển khai lại để không gọi itermonthdates(), điều này có thể khiến datetime.date thiếu/tràn.
bpo-28275: Đã sửa lỗi khả năng sử dụng sau khi rảnh trong các phương thức decompress() của các lớp LZMADecompressor và BZ2Decompressor. Bản vá gốc của John Leitch.
bpo-27897: Đã khắc phục sự cố có thể xảy ra trong sqlite3.Connection.create_collation() nếu chuyển đối tượng giống chuỗi không hợp lệ làm tên. Bản vá của Xiang Zhang.
bpo-18893: Sửa lỗi xử lý ngoại lệ không hợp lệ trong Lib/ctypes/macholib/dyld.py. Bản vá của Madison May.
bpo-27611: Đã sửa lỗi hỗ trợ cửa sổ gốc mặc định trong mô-đun tkinter.tix.
bpo-27348: Trong mô-đun truy nguyên, khôi phục định dạng của các thông báo ngoại lệ như "Ngoại lệ: Không có". Điều này khắc phục hồi quy được giới thiệu trong 3.5a2.
bpo-25651: Cho phép sử dụng giá trị sai cho tham số msg của subTest().
bpo-27932: Ngăn rò rỉ bộ nhớ trong win32_ver().
Sửa lỗi UnboundLocalError trong socket._sendfile_use_sendfile.
bpo-28075: Kiểm tra ERROR_ACCESS_DENIED trong quá trình triển khai os.stat() của Windows. Bản vá của Eryk Sun.
bpo-25270: Ngăn codecs.escape_encode() tăng SystemError khi một chuỗi byte trống được truyền.
bpo-28181: Nhận phản trọng lực trên HTTPS. Bản vá của Kaartic Sivaraam.
bpo-25895: Kích hoạt lược đồ WebSocket URL trong urllib.parse.urljoin. Bản vá của Gergely Imreh và Markus Holtermann.
bpo-27599: Đã sửa lỗi tràn bộ đệm trong binascii.b2a_qp() và binascii.a2b_qp().
bpo-19003: m email.generator hiện chỉ thay thế các phần cuối dòng
\rvà/hoặc\n, theo RFC, thay vì tất cả các phần cuối dòng unicode.bpo-28019: itertools.count() không còn làm tròn bước không nguyên trong phạm vi từ 1,0 đến 2,0 đến 1.
bpo-25969: Cập nhật ngữ pháp lib2to3 để xử lý các khái quát hóa giải nén được thêm vào trong 3.5.
bpo-14977: mailcap hiện tôn trọng thứ tự các dòng trong tệp mailcap ("khớp đầu tiên"), theo yêu cầu của RFC 1542. Bản vá của Michael Lazar.
bpo-24594: Xác thực tham số liên tục khi mở cơ sở dữ liệu MSI
bpo-17582: xml.etree.ElementTree hiện giữ nguyên khoảng trắng trong các thuộc tính (Bản vá của Duane Griffin. Đã được Stefan Behnel xem xét và phê duyệt.)
bpo-28047: Đã sửa lỗi tính toán độ dài dòng được sử dụng cho base64 CTE trong chính sách email mới.
bpo-27445: Không chuyển str(_charset) tới MIMEText.set_payload(). Bản vá của Claude Paroz.
bpo-22450: urllib hiện bao gồm tiêu đề
Accept: */*trong số các tiêu đề mặc định. Điều này làm cho kết quả của các yêu cầu REST API trở nên nhất quán và dễ dự đoán hơn, đặc biệt là khi có liên quan đến máy chủ proxy.lib2to3.pgen3.driver.load_grammar() hiện tạo tệp bộ nhớ đệm ổn định giữa các lần chạy với cùng một dữ liệu đầu vào Grammar.txt bất kể cài đặt ngẫu nhiên băm.
bpo-27570: Tránh các lệnh gọi memcpy() v.v. có độ dài bằng 0 với các con trỏ nguồn null trong mô-đun "ctypes" và "array".
bpo-22233: Ngắt dòng tiêu đề email only trên các ký tự CR và LF được chỉ định RFC, không phải ngắt dòng unicode tùy ý. Điều này cũng sửa lỗi trong phân tích cú pháp tiêu đề HTTP.
bpo-27988: Sửa email iter_attachments bị đột biến không chính xác trong danh sách tải trọng.
bpo-27691: Sửa lỗi phân tích cú pháp của mô-đun ssl đối với các trường tên thay thế chủ đề GEN_RID trong chứng chỉ X.509.
bpo-27850: Xóa 3DES khỏi danh sách mật mã mặc định của mô-đun ssl để chống lại cuộc tấn công Sweet32 (CVE 2016-2183).
bpo-27766: Thêm ChaCha20 Poly1305 vào danh sách mật mã mặc định của mô-đun ssl. (Bắt buộc phải có OpenSSL 1.1.0 hoặc LibreSSL).
bpo-26470: Chuyển mô-đun ssl và hashlib sang OpenSSL 1.1.0.
Xóa hỗ trợ chuyển bộ mô tả tệp tới os.access. Nó không bao giờ hoạt động nhưng trước đó không tăng.
bpo-12885: Sửa lỗi khi distutils gặp symlink.
bpo-27881: Đã sửa các lỗi có thể xảy ra khi cài đặt sqlite3.Connection.isolation_level. Dựa trên bản vá của Xiang Zhang.
bpo-27861: Đã khắc phục sự cố trong sqlite3.Connection.cursor() khi nhà máy không tạo con trỏ. Bản vá của Xiang Zhang.
bpo-19884: Tránh xuất dữ liệu giả trên OS X bằng Gnu Readline.
bpo-27706: Khôi phục hành vi xác định của Random.Random().seed() cho chuỗi hạt bằng cách sử dụng gieo hạt phiên bản 1. Cho phép chuỗi lệnh gọi ngẫu nhiên() khớp chính xác với chuỗi lệnh gọi thu được trong Python 2. Bản vá của Nofar Schnider.
bpo-10513: Khắc phục hồi quy trong Connection.commit(). Các câu lệnh không nên được đặt lại sau khi thực hiện một cam kết.
Phiên bản mới của typeing.py từ Bộ sưu tập https://github.com/python/typing: (chỉ dành cho 3.6) (bpo-27598). Thêm FrozenSet vào __all__ (ngược dòng #261). Khắc phục sự cố trong _get_type_vars() (#259 ngược dòng). Loại bỏ ràng buộc chính tả trong ForwardRef._eval_type (#252 ngược dòng).
bpo-27539: Sửa kết quả
Fraction.__pow__không chuẩn hóa trong trường hợp số mũ âm và cơ số âm.bpo-21718: con trỏ.description hiện có sẵn cho các truy vấn sử dụng CTE.
bpo-2466: posixpath.ismount hiện nhận dạng chính xác các điểm gắn kết mà người dùng không có quyền truy cập.
bpo-27773: Sửa một số lỗi quản lý bộ nhớ server_hostname trong _ssl.wrap_socket().
bpo-26750: unittest.mock.create_autospec() hiện hoạt động chính xác cho các lớp con của thuộc tính() và các bộ mô tả dữ liệu khác.
Trong mô-đun lời nguyền, hãy đưa ra lỗi nếu window.getstr() hoặc window.instr() được truyền giá trị âm.
bpo-27783: Khắc phục khả năng sử dụng bộ nhớ chưa được khởi tạo trong operator.methodcaller.
bpo-27774: Có thể sửa lỗi Py_DECREF trên đối tượng không có chủ sở hữu trong _sre.
bpo-27760: Khắc phục lỗi tràn số nguyên có thể xảy ra trong binascii.b2a_qp.
bpo-27758: Khắc phục tình trạng tràn số nguyên có thể xảy ra trong mô-đun _csv đối với độ dài bản ghi lớn.
bpo-27568: Ngăn chặn cuộc tấn công HTTPoxy (CVE 2016-1000110). Bỏ qua biến HTTP_PROXY khi môi trường REQUEST_METHOD được đặt, điều này cho biết tập lệnh ở chế độ CGI.
bpo-27656: Đừng cho rằng sched.h xác định bất kỳ hằng số SCHED_* nào.
bpo-27130: Trong mô-đun "zlib", khắc phục việc xử lý bộ đệm lớn (thường là 4 GiB) khi nén và giải nén. Trước đây, đầu vào được giới hạn ở 4 GiB, đồng thời các thao tác nén và giải nén không xử lý đúng kết quả 4 GiB.
bpo-27533: Phát hành GIL trong nt._isdir
bpo-17711: Đã sửa lỗi giải nén bằng ID liên tục với giao thức 0. Bản vá gốc của Alexandre Vassalotti.
bpo-27522: Tránh chu kỳ tham chiếu không chủ ý trong email.feedparser.
bpo-26844: Sửa thông báo lỗi cho imp.find_module() để tham chiếu đến 'đường dẫn' thay vì 'tên'. Bản vá của Lev Maximov.
bpo-23804: Sửa các cuộc gọi recv() có độ dài bằng 0 SSL để không chặn và không gây ra lỗi về EOF không sạch.
bpo-27466: Thay đổi định dạng thời gian được trả về bởi http.cookie.time2netscape, xác nhận định dạng cookie netscape và làm cho nó nhất quán với tài liệu.
bpo-26664: Khắc phục activate.fish bằng cách loại bỏ việc sử dụng sai
$.bpo-22115: Đã sửa lỗi theo dõi các biến Tkinter: trace_vdelete() với chế độ sai không còn ngắt theo dõi nữa, trace_vinfo() giờ đây luôn trả về danh sách các cặp chuỗi, việc theo dõi ở chế độ "u" hiện hoạt động.
Khắc phục sự cố phạm vi trong importlib.util.LazyLoader đã kích hoạt UnboundLocalError khi tải từng phần một mô-đun đã được đưa vào sys.modules.
bpo-27079: Đã sửa lỗi các hàmcurs.ascii isblank(), iscntrl() và ispunct().
bpo-26754: Một số hàm (biên dịch(), v.v.) chấp nhận đối số tên tệp được mã hóa dưới dạng số nguyên có thể lặp lại. Bây giờ chỉ chấp nhận các chuỗi và đối tượng giống byte.
bpo-27048: Ngăn chặn lỗi distutils trên Windows khi các biến môi trường chứa các ký tự không phải ASCII
bpo-27330: Đã sửa lỗi rò rỉ có thể xảy ra trong mô-đun ctypes.
bpo-27238: Loại bỏ các ngoại lệ trần trong mô-đun rùa. Bản vá gốc của Jelle Zijlstra.
bpo-27122: Khi một ngoại lệ được đưa ra trong ngữ cảnh đang được quản lý bởi contextlib.ExitStack() và một trong các trình tạo ngăn xếp thoát sẽ bắt và đưa nó vào một chuỗi, đừng nâng lại ngoại lệ ban đầu khi thoát, hãy để ngoại lệ mới được nối tiếp. Điều này tránh được lỗi PEP 479 được mô tả trong issue25782.
bpo-26386: Đã sửa lỗi các thao tác lựa chọn ttk.TreeView với id mục chứa khoảng trắng.
bpo-16182: Sửa các chức năng khác nhau trong mô-đun "readline" để sử dụng mã hóa ngôn ngữ và sửa get_begidx() và get_endidx() để trả về chỉ mục điểm mã.
bpo-27392: Thêm loop.connect_accepted_socket(). Bản vá của Jim Fulton.
bpo-27930: Cải thiện hành vi của log.handlers.QueueListener. Cảm ơn Paulo Andrade và Petr Viktorin vì đã phân tích và vá lỗi.
bpo-21201: Cải thiện khả năng đọc thông báo lỗi đa xử lý. Cảm ơn Wojciech Walczak về bản vá.
bpo-27456: asyncio: Đặt TCP_NODELAY theo mặc định.
bpo-27906: Khắc phục tình trạng cạn kiệt ổ cắm khi lưu lượng truy cập TCP cao. Bản vá của Kevin Conway.
bpo-28174: Xử lý khi SO_REUSEPORT không được hỗ trợ đúng cách. Bản vá của Seth Michael Larson.
bpo-26654: Kiểm tra functools.partial trong asyncio.Handle.__repr__. Bản vá của Iceboy.
bpo-26909: Sửa lỗi IO chậm trong asyncio. Bản vá của INADA Naoki.
bpo-28176: Khắc phục cuộc đua gọi lại trong asyncio.SelectorLoop.sock_connect.
bpo-27759: Sửa lỗi bộ chọn giữ lại các bộ mô tả tệp không hợp lệ. Bản vá của Mark Williams.
bpo-28368: Từ chối quá trình giám sát nếu trình giám sát trẻ em không có vòng lặp kèm theo. Bản vá của Vincent Michel.
bpo-28369: Tăng RuntimeError khi FD của phương tiện được sử dụng với add_reader, add_writer, v.v.
bpo-28370: Tăng tốc asyncio.StreamReader.readchính xác. Bản vá của Коренберг Марк.
bpo-28371: Ngừng chuyển asyncio.Handles tới run_in_executor.
bpo-28372: Sửa asyncio để hỗ trợ định dạng các coroutine không phải python.
bpo-28399: Xóa ổ cắm UNIX khỏi FS trước khi liên kết. Bản vá của Коренберг Марк.
bpo-27972: Cấm các Nhiệm vụ tự chờ đợi.
bpo-26923: Sửa lỗi asyncio.Gather để từ chối việc hủy sau khi tất cả các phần tử con đã hoàn tất. Bản vá của Johannes Ebke.
bpo-26796: Không định cấu hình số lượng công nhân cho trình thực thi threadpool mặc định. Bản vá đầu tiên của Hans Lawrenz.
bpo-28600: Tối ưu hóa loop.call_soon().
bpo-28613: Sửa lỗi get_event_loop() trả về vòng lặp hiện tại nếu được gọi từ coroutines/callbacks.
bpo-28639: Sửa lỗi kiểm tra.isawaitable để luôn trả về bool Patch của Justin Mayfield.
bpo-28652: Tạo các phương thức vòng lặp từ chối các loại ổ cắm mà chúng không hỗ trợ.
bpo-28653: Sửa lỗi phản ánh trong functools.lru_cache.
bpo-28703: Sửa lỗi asyncio.iscoroutinefunction để xử lý các đối tượng Mock.
bpo-24142: Việc đọc tệp cấu hình bị hỏng khiến trình phân tích cú pháp ở trạng thái không hợp lệ. Bản vá gốc của Florian Höch.
bpo-28990: Sửa lỗi treo SSL nếu kết nối bị đóng trước khi bắt tay hoàn tất. (Bản vá của HoHo-Ho)
IDLE¶
bpo-15308: Thêm 'thực thi ngắt' (^C) vào menu Shell. Bản vá của Roger Serwy, được cập nhật bởi Bayard Randel.
bpo-27922: Dừng các bài kiểm tra IDLE từ các tiện ích gui 'nhấp nháy' trên màn hình.
Thêm phiên bản vào tiêu đề của cửa sổ trợ giúp IDLE.
bpo-25564: Trong phần về IDLE -- sự khác biệt của bảng điều khiển, hãy đề cập rằng việc sử dụng exec có nghĩa là __buildins__ được xác định cho mỗi câu lệnh.
bpo-27714: text_textview và test_autocomplete hiện đã vượt qua khi chạy lại trong cùng một quy trình. Điều này xảy ra khi test_idle không thành công khi chạy với tùy chọn -w nhưng không có -jn. Khắc phục cảnh báo từ test_config.
bpo-25507: IDLE không còn chạy mã lỗi do nhập tkinter. Người dùng phải bao gồm các thao tác nhập tương tự cần thiết để chạy trực tiếp trong Python.
bpo-27452: thêm bộ đếm dòng và crc vào kết xuất thử nghiệm configHandler của IDLE.
bpo-27365: Cho phép các ký tự không phải mã ascii trong IDLE NEWS.txt cho tên cộng tác viên.
bpo-27245: IDLE: Xóa sạch các chủ đề tùy chỉnh và tổ hợp phím. Trước đây, khi IDLE được khởi động từ bảng điều khiển hoặc bằng cách nhập, một loạt cảnh báo đã được đưa ra. Bản vá của Serhiy Storchaka.
C API¶
Tài liệu¶
bpo-28513: Giao diện dòng lệnh được ghi lại của zipfile.
Kiểm tra¶
bpo-28950: Không cho phép kết hợp -j0 với -T/-l/-M trong các đối số dòng lệnh regrtest.
bpo-28666: Bây giờ test.support.rmtree có thể xóa các thư mục không thể ghi hoặc không thể đọc được.
bpo-23839: Nhiều bộ nhớ đệm hiện đã bị xóa trước khi chạy mọi tệp kiểm tra.
bpo-28409: regrtest: sửa trình phân tích cú pháp các đối số dòng lệnh.
bpo-27787: Gọi gc.collect() trước khi kiểm tra từng bài kiểm tra để tìm "luồng treo lơ lửng", vì các luồng treo lủng lẳng là tham chiếu yếu.
bpo-27369: Trong test_pyexpat, tránh kiểm tra chi tiết thông báo lỗi đã thay đổi trong Expat 2.2.0.
Công cụ/Bản trình diễn¶
bpo-27952: Giúp Tools/scripts/fixcid.py hoạt động với Python 3 và mô-đun "re" hiện tại, tránh thoát dấu gạch chéo ngược Python không hợp lệ và sửa lỗi phân tích cú pháp các dấu trích dẫn C thoát.
bpo-27332: Đã sửa loại đối số đầu tiên của các hàm cấp mô-đun do Argument Clinic tạo ra. Bản vá của Petr Viktorin.
bpo-27418: Công cụ cố định/importbench/importbench.py.
cửa sổ¶
bpo-28251: Cải tiến hướng dẫn trợ giúp trên Windows.
bpo-28110: launcher.msi có các mã sản phẩm khác nhau giữa 32-bit và 64-bit
bpo-25144: Đảm bảo TargetDir được đặt trước khi tiếp tục cài đặt tùy chỉnh.
bpo-27469: Thêm tiện ích mở rộng shell vào trình khởi chạy để tính năng kéo và thả hoạt động chính xác.
bpo-27309: Đã bật kiểu Windows thích hợp trong tệp kê khai python[w].exe.
xây dựng¶
bpo-29080: Loại bỏ sự phụ thuộc cứng vào hg.exe khỏi PCBuild/build.bat
bpo-23903: Đã thêm tên bị thiếu vào PC/python3.def.
bpo-10656: Sửa lỗi tòa nhà không có cây trên AIX. Bản vá của Tristan Carel và Michael Haubenwallner.
bpo-26359: Đổi tên --with-optimiations thành --enable-optimizations.
bpo-28444: Sửa các mô-đun tiện ích mở rộng bị thiếu khi biên dịch chéo.
bpo-28248: Cập nhật trình cài đặt Windows build và OS X để sử dụng OpenSSL 1.0.2j.
bpo-28258: Đã sửa lỗi bản dựng với ngôn ngữ tiếng Estonia (mục tiêu python-config và distclean trong Makefile). Bản vá của Arfrever Frehtes Taifersar Arahesis.
bpo-26661: setup.py hiện phát hiện libffi của hệ thống bằng trình bao bọc multiarch.
bpo-28066: Khắc phục logic tìm kiếm thư mục bản dựng cho các tệp bao gồm được tạo khi xây dựng bên ngoài cây nguồn.
bpo-15819: Loại bỏ tùy chọn thư mục tìm kiếm bao gồm dư thừa để xây dựng bên ngoài cây nguồn.
bpo-27566: Sửa mục tiêu sạch trong tệp đóng băng (bản vá của Lisa Roach)
bpo-27705: Thông báo cập nhật trong valid_ucrtbase.py
bpo-27983: Nguyên nhân thiếu công cụ llvm-profdata khi sử dụng clang theo yêu cầu khiến liên kết PGO trở thành lỗi thời gian định cấu hình thay vì tạo thời gian khi bật --with-optimizations. Đồng thời cải thiện khả năng tìm thấy công cụ llvm-profdata trên MacOS và một số Linux.
bpo-26307: Bản dựng profile-opt hiện áp dụng PGO cho các mô-đun tích hợp sẵn.
bpo-26359: Thêm cờ cấu hình --with-optimizations.
bpo-27713: Ngăn chặn các cảnh báo xây dựng giả khi cập nhật các tệp khởi động của importlib. Bản vá của Xiang Zhang
bpo-25825: Sửa các tham chiếu đến Mô-đun/python.exp và ld_so_aix, được yêu cầu trên AIX. Bản cập nhật này tham chiếu đến đường dẫn cài đặt đã được thay đổi trong 3.2a4 và hoàn tác các tham chiếu đã thay đổi đối với cây xây dựng được tạo trong 3.5.0a1.
bpo-27453: lệnh gọi CPP trong cấu hình phải sử dụng CPPFLAGS. Bản vá của Chí Hsuan Yen.
bpo-27641: Tập lệnh cấu hình hiện chèn nhận xét vào tệp tạo tệp để ngăn các tệp thực thi pgen và _freeze_importlib khỏi bị biên dịch chéo.
bpo-26662: Đặt PYTHON_FOR_GEN trong cấu hình làm chương trình Python được sử dụng để tạo tệp trong quá trình xây dựng.
bpo-10910: Tránh lỗi biên dịch C++ trên FreeBSD và OS X. Đồng thời cập nhật phiên bản FreedBSD để kiểm tra cách giải quyết ctype UTF-8 ban đầu.
bpo-28676: Ngăn chặn cảnh báo khai báo 'getentropy' bị thiếu trên macOS. Bản vá của Gareth Rees.
Bản cuối cùng của Python 3.5.2¶
Release date: 2016-06-26
Cốt lõi và nội dung¶
bpo-26930: Cập nhật các bản dựng Windows để sử dụng OpenSSL 1.0.2h.
Kiểm tra¶
bpo-26867: openssl OP_NO_SSLv3 của Ubuntu bị buộc phải bật theo mặc định; sửa bài kiểm tra.
IDLE¶
bpo-27365: Cho phép không phải mã ascii trong idlib/NEWS.txt - phần tối thiểu cho 3.5.2.
Ứng viên phát hành Python 3.5.2 1¶
Release date: 2016-06-12
Bảo mật¶
bpo-26556: Cập nhật expat lên 2.1.1, sửa lỗi CVE 2015-1283.
Khắc phục lỗ hổng tước TLS trong smtplib, CVE 2016-0772. Báo cáo của Nhóm Oststrom.
bpo-26839: Trên Linux,
os.urandom()hiện gọigetrandom()bằngGRND_NONBLOCKđể quay lại đọc/dev/urandomnếu nhóm entropy urandom chưa được khởi tạo. Bản vá được viết bởi Colm Buckley.bpo-26657: Khắc phục lỗ hổng truyền tải thư mục bằng http.server trên Windows. Điều này khắc phục lỗi hồi quy được giới thiệu trong 3.3.4rc1 và 3.4.0rc1. Dựa trên bản vá của Philipp Hagemeister.
bpo-26313: ssl.py _load_windows_store_certs không thành công nếu cửa hàng chứng chỉ Windows trống. Bản vá của Baji.
bpo-25939: Trên Windows, mở cửa hàng chứng chỉ chỉ đọc trong ssl.enum_certificates.
Cốt lõi và nội dung¶
bpo-27066: Đã sửa lỗi SystemError nếu công cụ mở tùy chỉnh (dành cho open()) trả về số âm mà không đặt ngoại lệ.
bpo-20041: Đã sửa lỗi TypeError khi frame.f_trace được đặt thành Không. Bản vá của Xavier de Gaye.
bpo-26168: Đã khắc phục các lỗi có thể xảy ra khi Py_BuildValue() bị lỗi với đơn vị định dạng "N".
bpo-26991: Khắc phục hiện tượng phản chiếu có thể xảy ra khi tạo hàm có chú thích.
bpo-27039: Đã sửa lỗi bytearray.remove() cho các giá trị lớn hơn 127. Bản vá của Joe Jevnik.
bpo-23640: int.from_bytes() không còn bỏ qua hàm tạo cho các lớp con nữa.
bpo-26811: gc.get_objects() không còn chứa bộ dữ liệu bị hỏng với con trỏ NULL nữa.
bpo-20120: Sử dụng RawConfigParser để phân tích cú pháp .pypirc, loại bỏ hỗ trợ nội suy vô tình được thêm vào khi chuyển sang Python 3. Hành vi không còn thực hiện bất kỳ nội suy nào trong các tệp .pypirc, khớp với hành vi trong Python 2.7 và Setuptools 19.0.
bpo-26659: Tạo bộ sưu tập chu trình hỗ trợ loại lát cắt dựng sẵn.
bpo-26718: super.__init__ không còn rò rỉ bộ nhớ nếu được gọi nhiều lần. NOTE: Lệnh gọi trực tiếp super.__init__ không được xác nhận!
bpo-25339: PYTHONIOENCODING hiện được ưu tiên hơn ngôn ngữ trong việc thiết lập trình xử lý lỗi cho stdin và stdout.
bpo-26494: Đã khắc phục sự cố khi lặp lại các trình vòng lặp đang cạn kiệt. Các lớp bị ảnh hưởng là các trình lặp trình tự chung, các trình vòng lặp của str, byte, bytearray, list, tuple, set, Frozenset, dict, OrderedDict, các khung nhìn tương ứng và trình vòng lặp os.scandir().
bpo-26581: Nếu cookie mã hóa được chỉ định nhiều lần trên một dòng trong tệp mã nguồn Python thì chỉ có cookie đầu tiên được tính đến.
bpo-26464: Sửa str.translate() khi chuỗi là ASCII và lần thay thế đầu tiên sẽ loại bỏ ký tự, nhưng lần thay thế tiếp theo sử dụng ký tự không phải ASCII hoặc một chuỗi dài hơn 1 ký tự. Hồi quy được giới thiệu trong Python 3.5.0.
bpo-22836: Đảm bảo các báo cáo ngoại lệ từ PyErr_Display() và PyErr_WriteUnraisable() là hợp lý ngay cả khi việc định dạng chúng tạo ra lỗi thứ cấp. Điều này ảnh hưởng đến các báo cáo do sys.__Exceptionhook__() tạo ra và khi __del__() đưa ra một ngoại lệ.
bpo-26302: Hành vi đúng để từ chối dấu phẩy làm ký tự hợp pháp cho tên cookie.
bpo-4806: Tránh che giấu ngoại lệ TypeError ban đầu khi sử dụng giải nén star (
*) trong lệnh gọi hàm. Dựa trên bản vá của Hagen Fürstenau và Daniel Urban.bpo-27138: Sửa nhận xét tài liệu cho FileFinder.find_spec().
bpo-26154: Thêm hàm _PyThreadState_UncheckedGet() riêng tư mới để lấy trạng thái luồng Python hiện tại, nhưng không gây ra lỗi nghiêm trọng nếu đó là NULL. Hàm mới này phải được sử dụng thay vì truy cập trực tiếp vào biến _PyThreadState_Current. Biến này không còn được hiển thị kể từ Python 3.5.1 để ẩn việc triển khai chính xác các loại C nguyên tử, nhằm tránh các vấn đề về trình biên dịch.
bpo-26194: Deque.insert() đưa ra kết quả kỳ lạ đối với các deque giới hạn đã đạt đến kích thước tối đa. Bây giờ, IndexError sẽ xuất hiện khi cố gắng chèn vào một deque đầy đủ.
bpo-25843: Khi biên dịch mã, không hợp nhất các hằng số nếu chúng bằng nhau nhưng có kiểu khác nhau. Ví dụ:
f1, f2 = lambda: 1, lambda: 1.0hiện được biên dịch chính xác thành hai hàm khác nhau:f1()trả về1(int) vàf2()trả về1.0(int), ngay cả khi1và1.0bằng nhau.bpo-22995: [UPDATE] Nhận xét một trong những bài kiểm tra khả năng chọn lọc trong _PyObject_GetState() do hồi quy được quan sát thấy trong các dự án dựa trên Cython.
bpo-25961: Không cho phép ký tự null trong tên loại.
bpo-25973: Sửa lỗi segfault khi câu lệnh không cục bộ không hợp lệ liên kết một tên bắt đầu bằng hai dấu gạch dưới.
bpo-22995: Các phiên bản của loại tiện ích mở rộng có trạng thái không phải là lớp con của danh sách hoặc dict và chưa triển khai bất kỳ phương pháp nào liên quan đến dưa chua (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__ hoặc __getstate__), không thể được dưa chua nữa. Bao gồm cả chế độ xem bộ nhớ.
bpo-20440: Thay thế hàng loạt mã cài đặt thuộc tính không an toàn bằng macro đặc biệt Py_SETREF.
bpo-25766: Phương thức đặc biệt __bytes__() hiện hoạt động trong các lớp con str.
bpo-25421: __sizeof__ các phương thức của các kiểu dựng sẵn hiện sử dụng kích thước cơ bản động. Điều này cho phép sys.getsize() hoạt động chính xác với các lớp con có __slots__ được xác định.
bpo-25709: Đã khắc phục sự cố nối chuỗi tại chỗ và bộ đệm utf-8.
bpo-24097: Đã khắc phục sự cố trong object.__reduce__() nếu tên vùng được giải phóng bên trong __getattr__.
bpo-24731: Đã khắc phục sự cố khi chuyển đổi đối tượng bằng các phương thức đặc biệt __bytes__, __trunc__ và __float__ trả về các phiên bản của lớp con byte, int và float tương ứng thành lớp con byte, int và float.
bpo-26478: Sửa lỗi ngữ nghĩa khi sử dụng toán tử nhị phân với chế độ xem từ điển và bộ dữ liệu.
bpo-26171: Khắc phục lỗi tràn số nguyên có thể xảy ra và hỏng đống dữ liệu trong zipimporter.get_data().
bpo-25660: Khắc phục hành vi của phím TAB trong REPL bằng dòng đọc.
bpo-25887: Đưa ra RuntimeError khi một đối tượng coroutine được chờ đợi nhiều lần.
bpo-27243: Cập nhật giao thức __aiter__: thay vì trả về một đối tượng có thể chờ được phân giải thành trình vòng lặp không đồng bộ, thì trình vòng lặp không đồng bộ phải được trả về trực tiếp. Việc thực hiện trước đây sẽ kích hoạt Cảnh báo không dùng nữa đang chờ xử lý.
Thư viện¶
bpo-21386: Triển khai thuộc tính IPv4Address.is_global bị thiếu. Nó đã được ghi lại từ 07a5610bae9d. Bản vá đầu tiên của Roger Luethi.
bpo-20900: lệnh đăng ký distutils hiện giải mã chính xác các phản hồi HTTP. Bản vá đầu tiên của ingrid.
Phiên bản mới của Typing.py cung cấp một số lớp và tính năng mới: @overload bên ngoài sơ khai, Reversible, DefaultDict, Text, ContextManager, Type[], NewType(), TYPE_CHECKING và nhiều bản sửa lỗi (lưu ý rằng một số tính năng mới chưa được triển khai trong mypy hoặc các máy phân tích tĩnh khác). Ngoài ra, các lớp dành cho PEP 492 (Awaitable, AsyncIterable, AsyncIterator) cũng đã được thêm vào (trên thực tế, chúng đã được đưa vào phiên bản 3.5.1 nhưng chưa bao giờ được đề cập).
bpo-25738: Ngăn chặn http.server.BaseHTTPRequestHandler.send_error() gửi nội dung thư cho Nội dung đặt lại 205. Ngoài ra, không gửi các trường tiêu đề Nội dung trong các phản hồi không có nội dung. Bản vá của Susumu Koshiba.
bpo-21313: Sửa mô-đun "nền tảng" để chấp nhận khi sys.version chứa thông tin bản dựng bị cắt bớt.
bpo-27164: Trong mô-đun zlib, cho phép giải nén các luồng Deflate thô bằng zdict được xác định trước. Dựa trên bản vá của Xiang Zhang.
bpo-24291: Sửa wsgiref.simple_server.WSGIRequestHandler để ghi hoàn toàn dữ liệu cho máy khách. Trước đây nó có thể ghi một phần và cắt bớt dữ liệu. Ngoài ra, wsgiref.handler.ServerHandler hiện có thể xử lý thiết bị xuất chuẩn bằng cách ghi một phần, nhưng tính năng này không được dùng nữa.
bpo-26809: Thêm
__all__vàostring. Bản vá của Emanuel Barry.bpo-26373: subprocess.Popen.communicate hiện bỏ qua BrokenPipeError một cách chính xác khi tiến trình con chết trước khi .communicate() được gọi trong nhiều/mọi trường hợp.
bpo-21776: distutils.upload hiện đã xử lý HTTPError một cách chính xác. Bản vá đầu tiên của Claudiu Popa.
bpo-27114: Sửa SSLContext._load_windows_store_certs không thành công với PermissionError
bpo-18383: Tránh tạo các bộ lọc trùng lặp khi sử dụng filterwarnings và simplefilter. Dựa trên bản vá của Alex Shkop.
bpo-27057: Sửa lỗi os.set_inheritable() trên Android, ioctl() bị SELinux chặn và không thành công với EACCESS. Hàm bây giờ quay trở lại fcntl(). Bản vá được viết bởi Michał Bednarski.
bpo-27014: Khắc phục đệ quy vô hạn bằng cách sử dụng gõ.py. Cảm ơn Kalle Tuure!
bpo-14132: Khắc phục việc xử lý chuyển hướng urllib.request khi mục tiêu chỉ có một chuỗi truy vấn. Bản sửa lỗi gốc của Ján Janech.
bpo-17214: Mô-đun "urllib.request" hiện mã hóa phần trăm các byte không phải ASCII được tìm thấy trong các URL mục tiêu chuyển hướng. Một số máy chủ gửi các trường tiêu đề Vị trí có byte không phải là ASCII, nhưng "http.client" yêu cầu mục tiêu yêu cầu phải có thể mã hóa ASCII, nếu không thì UnicodeEncodeError sẽ xuất hiện. Dựa trên bản vá của Christian Heimes.
bpo-26892: Tôn trọng cờ debuglevel trong urllib.request.HTTPHandler. Patch đóng góp của Chí Hsuan Yen.
bpo-22274: Trong mô-đun quy trình con, cho phép chuyển hướng stderr đến thiết bị xuất chuẩn ngay cả khi thiết bị xuất chuẩn không được chuyển hướng. Bản vá của Akira Li.
bpo-26807: mock_open 'files' không còn lỗi ở dòng đọc ở cuối tệp. Bản vá từ Yolanda Robla.
bpo-25745: Đã sửa lỗi rò rỉ userptr trong hàm hủy bảng điều khiển lời nguyền.
bpo-26977: Đã loại bỏ lệnh gọi không cần thiết và bị bỏ qua để tính tổng các bình phương trong stats.pvariance.
bpo-26881: Mô-đun modulefinder hiện hỗ trợ các đối số opcode mở rộng.
bpo-23815: Đã khắc phục sự cố liên quan đến các phiên bản loại được tạo trực tiếp trong mô-đun _tkinter và Curs.panel.
bpo-17765: yếuref.ref() không còn âm thầm bỏ qua các đối số từ khóa nữa. Bản vá của Georg Brandl.
bpo-26873: xmlrpc hiện tăng ResponseError trên các thẻ loại không được hỗ trợ thay vì âm thầm trả về kết quả không chính xác.
bpo-26711: Đã sửa lỗi so sánh plistlib.Data với các loại khác.
bpo-24114: Sửa biến chưa được khởi tạo trong
ctypes.util. Lỗi chỉ xảy ra trên SunOS khi triển khai ctypes tìm kiếm chương trìnhcrle. Bản vá của Xiang Zhang. Đã được thử nghiệm trên SunOS bởi Kees Bos.bpo-26864: Trong urllib.request, thay đổi việc kiểm tra máy chủ bỏ qua proxy đối với no_proxy thành không phân biệt chữ hoa chữ thường và không khớp với các tên máy chủ không liên quan có tên máy chủ bị bỏ qua làm hậu tố. Bản vá của Xiang Zhang.
bpo-26634: recursive_repr() hiện đặt __qualname__ của trình bao bọc. Bản vá của Xiang Zhang.
bpo-26804: urllib.request sẽ thích các biến môi trường proxy low_case hơn các biến môi trường proxy UPPER_CASE hoặc Mixed_Case. Bản vá được đóng góp bởi Hans-Peter Jansen.
bpo-26837: khẳng địnhSequenceEqual() hiện xuất chính xác các mục khác nhau không được xâu chuỗi (như byte ở chế độ -b). Điều này ảnh hưởng đến khẳng địnhListEqual() và khẳng địnhTupleEqual().
bpo-26041: Xóa "sẽ bị xóa trong Python 3.7" khỏi các thông báo không dùng nữa của platform.dist() và platform.linux_distribution(). Bản vá của Kumaripaba Miyurusara Athukorala.
bpo-26822: các đối tượng itemgetter, attrgetter và Methodcaller không còn âm thầm bỏ qua các đối số từ khóa nữa.
bpo-26733: Việc tháo rời một lớp bây giờ sẽ tháo rời lớp và các phương thức tĩnh. Bản vá của Xiang Zhang.
bpo-26801: Sửa lỗi xử lý trong
shutil.get_terminal_size(), bắtAttributeErrorthay vìNameError. Bản vá được viết bởi Emanuel Barry.bpo-24838: các định dạng ustar và gnu của tarfile hiện tính toán chính xác giới hạn trường tên và liên kết cho mã hóa ký tự nhiều byte như utf-8.
bpo-26717: Dừng mã hóa các đường dẫn WSGI theo kiểu Latin-1 bằng UTF-8. Bản vá của Anthony Sottile.
bpo-26735: Sửa
os.urandom()trên Solaris 11.3 trở lên khi đọc hơn 1.024 byte: gọigetrandom()nhiều lần với giới hạn 1024 byte mỗi cuộc gọi.bpo-16329: Thêm .webm vào mimetypes.types_map. Bản vá của Giampaolo Rodola'.
bpo-13952: Thêm .csv vào mimetypes.types_map. Bản vá của Geoff Wilson.
bpo-26709: Đã khắc phục sự cố Y2038 khi tải PLists nhị phân.
bpo-23735: Xử lý việc thay đổi kích thước thiết bị đầu cuối bằng Readline 6.3+ bằng cách cài đặt trình xử lý SIGWINCH của riêng chúng tôi. Bản vá của Eric Price.
bpo-26586: Trong http.server, hãy phản hồi bằng "Trường tiêu đề yêu cầu 413 quá lớn" nếu có quá nhiều trường tiêu đề cần phân tích cú pháp, thay vì hủy kết nối và đưa ra ngoại lệ chưa được xử lý. Bản vá của Xiang Zhang.
bpo-22854: Thay đổi BufferedReader.writable() và BufferedWriter.readable() để luôn trả về Sai.
bpo-25195: Khắc phục hồi quy trong mock.MagicMock. _Call là một lớp con của tuple (bộ thay đổi 3603bae63c13 chỉ hoạt động cho các lớp) nên chúng ta cần tự mình triển khai __ne__. Bản vá của Andrew Plummer.
bpo-26644: Tăng ValueError thay vì SystemError khi độ dài âm được chuyển tới SSLSocket.recv() hoặc read().
bpo-23804: Sửa các phương thức SSL recv(0) và read(0) để trả về 0 byte thay vì tối đa 1024.
bpo-26616: Đã sửa lỗi trong phương thức datetime.astimezone().
bpo-21925:
warnings.formatwarning()hiện đã phát hiện các ngoại lệ trênlinecache.getline(...)để có thể ghi lạiResourceWarningphát ra muộn trong quá trình tắt Python.bpo-24266: Ctrl+C trong quá trình tìm kiếm lịch sử Readline hiện sẽ hủy chế độ tìm kiếm khi được biên dịch bằng Readline 7.
bpo-26560: Tránh ValueError tiềm ẩn trong BaseHandler.start_response. Bản vá đầu tiên của Peter Inglesby.
bpo-26569: Sửa
pyclbr.readmodule()vàpyclbr.readmodule_ex()để hỗ trợ nhập gói.bpo-26499: Tài khoản cho Độ dài nội dung còn lại trong HTTPResponse.readline() và read1(). Dựa trên bản vá của Silent Ghost. Đồng thời ghi lại rằng HTTPResponse hiện hỗ trợ các phương pháp này.
bpo-25320: Xử lý các socket trong thư mục không được phát hiện nhiều nhất đang quét. Bản vá từ Victor van den Elzen.
bpo-16181: cookiejar.http2time() hiện trả về Không nếu năm cao hơn datetime.MAXYEAR.
bpo-26513: Sửa lỗi phát hiện mô-đun nền tảng của Windows Server
bpo-23718: Đã sửa lỗi thời gian phân tích cú pháp trong tuần 0 trước ngày 1 tháng 1. Bản vá gốc của Tamás Bence Gedai.
bpo-20589: Gọi Path.owner() và Path.group() trên Windows hiện đưa ra NotImplementedError thay vì ImportError.
bpo-26177: Đã sửa phương thức phím() cho các tiện ích Canvas và Thanh cuộn.
bpo-15068: Loại bỏ tình trạng đệm quá mức trong mô-đun nhập tệp. Tham số bufsize không còn được sử dụng.
bpo-2202: Khắc phục lỗi UnboundLocalError trong Tóm tắtDigestAuthHandler.get_algorithm_impls. Bản vá đầu tiên của Mathieu Dupuy.
bpo-25718: Đã sửa lỗi tẩy và sao chép trình vòng lặp tích lũy() với tổng số là Không có.
bpo-26475: Đã sửa lỗi đầu ra gỡ lỗi cho các biểu thức thông thường bằng cờ (?x).
bpo-26457: Đã sửa các phương thức subnets() trong các lớp mạng IP trong trường hợp khi độ dài tiền tố thu được bằng độ dài tiền tố tối đa. Dựa trên bản vá của Xiang Zhang.
bpo-26385: Xóa tệp nếu lệnh gọi open() nội bộ trong NamedTemporaryFile() không thành công. Bản vá của Silent Ghost.
bpo-26402: Sửa lỗi máy khách XML-RPC thử lại khi máy chủ tắt kết nối liên tục. Đây là một sự hồi quy liên quan đến ngoại lệ http.client.RemoteDisconnected mới trong 3.5.0a4.
bpo-25913:
<~hàng đầu hiện là tùy chọn trong base64.a85decode() với adobe=True. Bản vá của Swati Jaiswal.bpo-26186: Xóa kiểm tra loại không hợp lệ trong importlib.util.LazyLoader.
bpo-26367: importlib.__import__() tăng SystemError giống như nội trang.__import__() khi
levelđược chỉ định nhưng không có gói đi kèm được chỉ định.bpo-26309: Trong mô-đun "socketserver", hãy tắt yêu cầu (đóng ổ cắm được kết nối) khi verify_request() trả về sai. Bản vá của Aviv Palivoda.
bpo-25995: os.walk() không còn sử dụng FD tỷ lệ thuận với độ sâu của cây nữa.
bpo-26117: Trình lặp os.scandir() hiện đóng bộ mô tả tệp không chỉ khi quá trình lặp kết thúc mà còn khi nó bị lỗi do lỗi.
bpo-25911: Đã khôi phục hỗ trợ đường dẫn byte trong os.walk() trên Windows.
bpo-26045: Thêm đề xuất UTF-8 vào thông báo lỗi khi đăng chuỗi không phải Latin-1 bằng http.client.
bpo-12923: Đặt lại bộ đếm chuyển hướng của FancyURLopener ngay cả khi có ngoại lệ. Dựa trên các bản vá của Brian Brazil và Daniel Rocco.
bpo-25945: Đã khắc phục sự cố khi giải nén đối tượng functools.partial có trạng thái sai. Đã sửa lỗi rò rỉ trong hàm tạo functools.partial không thành công. Các thuộc tính "args" và "keywords" của functools.partial giờ đây luôn có kiểu tuple và dict tương ứng.
bpo-26202: copy.deepcopy() hiện sao chép chính xác các đối tượng range() có thuộc tính phi nguyên tử.
bpo-23076: Path.glob() hiện tăng ValueError nếu nó được gọi với mẫu không hợp lệ. Bản vá của Thomas Nyberg.
bpo-19883: Đã sửa lỗi tràn số nguyên có thể xảy ra trong zipimport.
bpo-26227: Trên Windows, các hàm getnameinfo(), gethostbyaddr() và gethostbyname_ex() của mô-đun ổ cắm hiện giải mã tên máy chủ từ trang mã ANSI thay vì UTF-8.
bpo-26147: xmlrpc hiện hoạt động với các chuỗi không thể mã hóa được bằng mã hóa không phải UTF-8 đã sử dụng.
bpo-25935: Trình thu gom rác hiện phá vỡ các vòng lặp tham chiếu bằng OrderedDict.
bpo-16620: Đã sửa lỗi AttributionError trong msilib.Directory.glob().
bpo-26013: Đã thêm khả năng tương thích với giao thức bị hỏng 2 dưa chua được tạo trong phiên bản Python 3 cũ (3.4.3 trở xuống).
bpo-25850: Sử dụng tính năng biên dịch chéo theo mặc định cho Windows 64-bit.
bpo-17633: Cải thiện khả năng hỗ trợ của zipimport cho các gói không gian tên.
bpo-24705: Sửa lỗi sysconfig._parse_makefile không mở rộng các vars ${} xuất hiện trước các vars $().
bpo-22138: Khắc phục hành vi mock.patch khi vá các bộ mô tả. Khôi phục giá trị ban đầu sau khi vá. Bản vá được đóng góp bởi Sean McCully.
bpo-25672: Trong mô-đun ssl, hãy bật tùy chọn chế độ SSL_MODE_RELEASE_BUFFERS nếu thấy an toàn.
bpo-26012: Không duyệt qua các liên kết tượng trưng cho mẫu
**trong pathlib.Path.[r]glob().bpo-24120: Bỏ qua PermissionError khi duyệt cây bằng pathlib.Path.[r]glob(). Bản vá của Ulrich Petri.
bpo-25447: fileinput hiện sử dụng sys.stdin nguyên trạng nếu nó không có thuộc tính bộ đệm (khôi phục khả năng tương thích ngược).
bpo-25447: Sao chép đối tượng trình bao bọc lru_cache() giờ đây luôn hoạt động, độc lập với loại đối tượng được bao bọc (bằng cách trả về đối tượng ban đầu không thay đổi).
bpo-24103: Đã sửa lỗi có thể sử dụng sau khi miễn phí trong ElementTree.XMLPullParser.
bpo-25860: os.fwalk() không còn bỏ qua các thư mục còn lại khi xảy ra lỗi. Bản vá gốc của Samson Lee.
bpo-25914: Đã sửa lỗi và đơn giản hóa OrderedDict.__sizeof__.
bpo-25902: Đã khắc phục các sự cố hoàn tiền khác nhau trong lần lặp ElementTree.
bpo-25717: Khôi phục hành vi chấp nhận hầu hết các lỗi fstat() trước đó khi mở tệp. Đây là một sự hồi quy trong 3.5a1 và đã ngăn các tệp tạm thời ẩn danh hoạt động trong các trường hợp đặc biệt.
bpo-24903: Sửa lỗi hồi quy về số lượng đối số được biên dịch chấp nhận khi '-d' được chỉ định. Việc kiểm tra số lượng đối số đã bị loại bỏ hoàn toàn vì dù sao nó cũng chưa bao giờ hoạt động chính xác.
bpo-25764: Trong mô-đun quy trình con, giữ nguyên mọi ngoại lệ do lỗi fork() gây ra khi sử dụng preexec_fn.
bpo-6478: Bộ đệm regrec của _strptime hiện được đặt lại sau khi thay đổi múi giờ bằng time.tzset().
bpo-14285: Khi thực thi gói có tùy chọn "gói python -m" và việc khởi tạo gói không thành công, hiện tại, một truy nguyên thích hợp sẽ được báo cáo. Mô-đun "runpy" hiện cho phép các ngoại lệ từ quá trình khởi tạo gói được chuyển lại cho người gọi thay vì đưa ra ImportError.
bpo-19771: Ngoài ra, trong tùy chọn runpy và "-m", hãy bỏ qua thông báo không liên quan ". . . là một gói và không thể được thực thi trực tiếp" nếu gói thậm chí không thể được khởi tạo (ví dụ: do tệp
*.pycbị lỗi).bpo-25177: Đã khắc phục sự cố với giá trị trung bình của số rất nhỏ và rất lớn. Là một tác dụng phụ, stats.mean và stats.variance sẽ nhanh hơn đáng kể.
bpo-25718: Đã sửa lỗi sao chép đối tượng có trạng thái có giá trị boolean là sai.
bpo-10131: Đã sửa lỗi sao chép sâu các tài liệu tối thiểu. Dựa trên bản vá của Marian Ganisin.
bpo-25725: Đã sửa lỗi rò rỉ tham chiếu trong dưa.loads() khi giải nén dữ liệu không hợp lệ bao gồm các hướng dẫn bộ dữ liệu.
bpo-25663: Trong trình hoàn thiện Readline, tránh liệt kê các tên chung trùng lặp và tìm kiếm không gian tên chung trước khi tìm kiếm nội dung.
bpo-25688: Đã sửa lỗi rò rỉ tệp trong ElementTree.iterparse() gây ra lỗi.
bpo-23914: Đã sửa lỗi SystemError do trình giải nén gây ra đối với dữ liệu dưa chua bị hỏng.
bpo-25691: Đã khắc phục sự cố khi xóa thuộc tính ElementTree.Element.
bpo-25624: ZipFile hiện luôn ghi tiêu đề ZIP_STORED cho các mục trong thư mục. Bản vá của Dingyuan Wang.
Bỏ qua getaddrinfo nếu máy chủ đã được giải quyết. Bản vá của A. Jesse Jiryu Davis.
bpo-26050: Thêm phương thức asyncio.StreamReader.readuntil(). Bản vá của Марк Коренберг.
bpo-25924: Tránh việc tuần tự hóa các lệnh gọi getaddrinfo(3) không cần thiết trên OS X phiên bản 10.5 trở lên. Bản vá gốc của A. Jesse Jiryu Davis.
bpo-26406: Tránh việc tuần tự hóa các lệnh gọi getaddrinfo(3) không cần thiết trên các phiên bản hiện tại của OpenBSD và NetBSD. Bản vá của A. Jesse Jiryu Davis.
bpo-26848: Sửa asyncio/subprocess.communicate() để xử lý dữ liệu đầu vào trống. Bản vá của Jack O'Connor.
bpo-27040: Thêm phương thức loop.get_Exception_handler
bpo-27041: asyncio: Thêm phương thức loop.create_future
bpo-27223: asyncio: Sửa _read_ready và _write_ready để tôn trọng _conn_lost. Bản vá của Łukasz Langa.
bpo-22970: asyncio: Khắc phục tình trạng hủy không nhất quán Condition.wait. Bản vá của David Coles.
IDLE¶
bpo-5124: Dán văn bản đã chọn bây giờ sẽ thay thế vùng chọn trên X11. Điều này phù hợp với cách hoạt động của tính năng dán trên Windows, Mac, hầu hết các ứng dụng Linux hiện đại và các tiện ích ttk. Bản vá gốc của Serhiy Storchaka.
bpo-24759: Làm rõ trong Idlelib.idle_test.__init__ rằng thư mục này là một triển khai riêng của test.test_idle và là công cụ dành cho người bảo trì.
bpo-27196: Dừng cảnh báo 'ThemeChanged' khi chạy thử nghiệm IDLE. Những điều này vẫn tồn tại sau khi các cảnh báo khác bị chặn trong #20567. Áp dụng giải pháp update_idletasks của Serhiy Storchaka cho bốn tệp thử nghiệm. Ghi lại lời khuyên bổ sung này vào id_test/README.txt
bpo-20567: Sửa đổi Idle_test/README.txt với lời khuyên về cách tránh các thông báo cảnh báo tk từ các bài kiểm tra. Áp dụng lời khuyên cho một số bài kiểm tra IDLE.
bpo-27117: Làm cho colorizer htest và Turtledemo hoạt động với các chủ đề tối. Di chuyển mã để định cấu hình màu của tiện ích văn bản sang một chức năng mới.
bpo-26673: Khi tk báo cáo kích thước phông chữ là 0, hãy thay đổi thành kích thước 10. Những phông chữ như vậy trên Linux đã ngăn hộp thoại cấu hình mở.
bpo-21939: Thêm thử nghiệm cho bộ lọc màu của IDLE. Bản vá gốc của Saimadhav Heblikar.
bpo-21676: Thêm kiểm tra cho hộp thoại thay thế của IDLE. Bản vá gốc của Saimadhav Heblikar.
bpo-18410: Thêm thử nghiệm cho hộp thoại tìm kiếm của IDLE. Bản vá gốc của Westley Martínez.
bpo-21703: Thêm thử nghiệm cho trình ủy quyền hoàn tác của IDLE. Bản vá gốc của Saimadhav Heblikar.
bpo-27044: Thêm ConfigDialog.remove_var_callbacks để ngăn rò rỉ bộ nhớ.
bpo-23977: Thêm nhiều xác nhận hơn vào test_delegator.
bpo-20640: Thêm bài kiểm tra cho idlib.configHelpSourceEdit. Bản vá của Saimadhav Heblikar.
Trong phần 'sự khác biệt giữa bảng điều khiển IDLE' của tài liệu IDLE, hãy làm rõ việc chạy với IDLE ảnh hưởng như thế nào đến sys.modules và các luồng tiêu chuẩn.
bpo-25507: sửa lỗi thay đổi không chính xác trong IOBinding khiến việc in bị ngăn cản. Tăng cường IOBinding htest để bao gồm tất cả các chức năng IOBinding chính.
bpo-25905: Hoàn nguyên chuyển đổi không mong muốn của ' thành ' RIGHT SINGLE QUOTATION MARK trong README.txt và mở cái này và NEWS.txt bằng 'ascii'. Mã hóa lại CREDITS.txt thành utf-8 và mở nó bằng 'utf-8'.
Tài liệu¶
bpo-19489: Đã di chuyển hộp tìm kiếm từ thanh bên sang đầu trang và chân trang của mỗi trang. Bản vá của Ammar Askar.
bpo-26736: Sử dụng HTTPS cho các liên kết bên ngoài trong tài liệu nếu có thể.
bpo-6953: Làm lại tài liệu mô-đun Readline để nhóm các hàm liên quan lại với nhau và thêm các chi tiết khác như các biến và hàm Readline cơ bản nào được truy cập.
bpo-23606: Thêm ghi chú vào tài liệu ctypes liên quan đến cdll.msvcrt.
bpo-25500: Sửa tài liệu để không cho rằng __import__ được tìm kiếm trong phạm vi toàn cầu.
bpo-26014: Cập nhật tài liệu đóng gói 3.x: * Liên kết "Xem thêm" tới các tài liệu mới hiện được cung cấp trong các trang cũ * liên kết đến tài liệu setuptools đã được cập nhật
Kiểm tra¶
bpo-21916: Đã thêm các bài kiểm tra cho mô-đun rùa. Bản vá của ingrid, Gregory Loyse và Jelle Zijlstra.
bpo-26523: Nhóm luồng đa xử lý (multiprocessing.dummy.Pool) chưa được kiểm tra.
bpo-26015: Đã thêm các thử nghiệm mới để xử lý các trình lặp lặp của các chuỗi có thể thay đổi.
bpo-26325: Đã thêm test.support.check_no_resource_warning() để kiểm tra xem không có ResourceWarning nào được phát ra hay không.
bpo-25940: Đã thay đổi test_ssl để sử dụng self-signed.pythontest.net. Điều này tránh việc dựa vào svn.python.org, gần đây đã thay đổi chứng chỉ gốc.
bpo-25616: Các bài kiểm tra cho OrderedDict được trích xuất từ test_collections thành tệp riêng test_ordered_dict.
bpo-26583: Bỏ qua test_timestamp_overflow trong test_import nếu không thể ghi tệp bytecode.
xây dựng¶
bpo-26884: Sửa lỗi liên kết các mô-đun mở rộng cho các bản dựng chéo. Bản vá của Xavier de Gaye.
bpo-22359: Tắt quy tắc chạy _freeze_importlib và pgen khi biên dịch chéo. Đầu ra của các chương trình này thường được lưu cùng với mã nguồn và vẫn được tạo lại khi thực hiện bản dựng gốc. Bản vá của Xavier de Gaye.
bpo-27229: Sửa quy tắc pgen biên dịch chéo cho các bản dựng trong cây. Bản vá của Xavier de Gaye.
bpo-21668: Liên kết các mô-đun audioop, _datetime, _ctypes_test với libm, ngoại trừ trên Mac OS X. Bản vá được viết bởi Xavier de Gaye.
bpo-25702: Tùy chọn cấu hình --with-lto đã được thêm vào để cho phép tối ưu hóa thời gian liên kết tại thời điểm xây dựng trong quá trình tạo hồ sơ-opt. Một số trình biên dịch và chuỗi công cụ được biết là không tạo ra mã ổn định khi sử dụng LTO, hãy nhớ kiểm tra mọi thứ kỹ lưỡng trước khi dựa vào nó. Nó có thể tăng tốc một vài% so với tùy chọn hồ sơ.
bpo-26624: Thêm xác thực phiên bản ucrtbase[d].dll với cảnh báo cho các phiên bản cũ.
bpo-17603: Tránh lỗi về tệp fileblocks.o không tồn tại bằng cách sử dụng kiểm tra cấp độ thấp hơn cho st_blocks trong struct stat.
bpo-26079: Sửa thư mục đầu ra bản dựng cho tix-8.4.3.6. Bản vá của Bjoern Thiel.
bpo-26465: Cập nhật các bản dựng Windows để sử dụng OpenSSL 1.0.2g.
bpo-24421: Biên dịch Mô-đun/_math.c một lần, trước khi xây dựng tiện ích mở rộng. Trước đây, nó có thể không biên dịch đúng cách nếu các bản dựng toán học và cmath đồng thời.
bpo-25348: Đã thêm đối số
--pgovà--pgo-jobvàoPCbuild\build.batđể xây dựng bằng Tối ưu hóa theo hướng dẫn hồ sơ. Tập lệnhPCbuild\build_pgo.batcũ hiện không được dùng nữa và chỉ gọiPCbuild\build.bat --pgo %*.bpo-25827: Thêm hỗ trợ xây dựng bằng ICC cho
configure, bao gồm cờ--with-iccmới.bpo-25696: Sửa lỗi cài đặt Python trên UNIX bằng make -j9.
bpo-26930: Cập nhật trình cài đặt chỉ 32-bit OS X 10.5+ để xây dựng và liên kết với OpenSSL 1.0.2h.
bpo-26268: Cập nhật các bản dựng Windows để sử dụng OpenSSL 1.0.2f.
bpo-25136: Hỗ trợ thư viện sơ khai SDK văn bản mới của Apple Xcode 7.
bpo-24324: Không bật cảnh báo mã không thể truy cập khi sử dụng gcc vì tùy chọn này không hoạt động chính xác trong các phiên bản gcc cũ hơn và đã bị xóa âm thầm kể từ gcc-4.5.
cửa sổ¶
bpo-27053: Cập nhật make_zip.py để tạo chính xác tệp ZIP thư viện.
bpo-26268: Cập nhật tập lệnh prepare_ssl.py để xử lý các bản phát hành OpenSSL không bao gồm nội dung của thư mục include (nghĩa là 1.0.2e trở lên).
bpo-26071: bdist_wininst các tệp nhị phân được tạo không khởi động được và tìm thấy Python 32 bit
bpo-26073: Cập nhật danh sách số ma thuật trong launcher
bpo-26065: Loại trừ venv khỏi thư viện khi tạo bản phân phối có thể nhúng.
bpo-17500: Loại bỏ các biểu tượng không dùng đến và lỗi thời. (Xem thêm: https://github.com/python/pythondotorg/issues/945)
Công cụ/Bản trình diễn¶
bpo-26799: Khắc phục python-gdb.py: không nhận loại C một lần khi mã Python được tải mà nhận loại C theo yêu cầu. Các loại C có thể thay đổi nếu python-gdb.py được tải trước khi thực thi Python. Bản vá được viết bởi Thomas Ilsche.
bpo-26271: Sửa công cụ Freeze để sử dụng đúng các cờ được chuyển qua cấu hình. Bản vá của Daniel Shaulov.
bpo-26489: Thêm hỗ trợ giải nén từ điển vào Tools/parser/unparse.py. Bản vá của Guo Ci Teo.
bpo-26316: Sửa lỗi đánh máy tên biến trong Argument Clinic.
Bản cuối cùng của Python 3.5.1¶
Release date: 2015-12-06
Cốt lõi và nội dung¶
bpo-25709: Đã khắc phục sự cố nối chuỗi tại chỗ và bộ đệm utf-8.
cửa sổ¶
bpo-25715: Trình cài đặt Python 3.5.1 hiển thị đường dẫn nâng cấp sai và logic không chính xác để phát hiện trình khởi chạy.
Ứng viên phát hành Python 3.5.1 1¶
Release date: 2015-11-22
Cốt lõi và nội dung¶
bpo-25630: Khắc phục lỗi phân tách có thể xảy ra trong quá trình phân tích cú pháp đối số trong các hàm chấp nhận đường dẫn hệ thống tệp.
bpo-23564: Đã sửa lỗi kiểm tra độ tỉnh táo bị hỏng một phần trong phần bên trong _posixsubprocess liên quan đến cách truyền fds_to_pass cho trẻ. Lỗi này không có tác động thực sự vì subprocess.py đã tránh được nó.
bpo-25388: Đã khắc phục sự cố mã thông báo khi xử lý mã nguồn không thể giải mã được bằng byte rỗng.
bpo-25462: Hàm băm của khóa hiện chỉ được tính một lần trong hầu hết các thao tác khi triển khai C của OrderedDict.
bpo-22995: Việc triển khai mặc định __reduce__ và __reduce_ex__ hiện từ chối các loại dựng sẵn không được xác định __new__.
bpo-25555: Sửa trình phân tích cú pháp và AST: điền lineno và col_offset của nút "arg" khi biên dịch AST từ các đối tượng Python.
bpo-24802: Tránh đọc quá mức bộ đệm khi int(), float(), biên dịch(), exec() và eval() được truyền các đối tượng giống byte. Các đối tượng này không nhất thiết phải được kết thúc bằng một byte rỗng, nhưng các hàm giả định chúng như vậy.
bpo-24726: Đã khắc phục sự cố và rò rỉ NULL trong Repr() của OrderedDict bị thay đổi bởi lệnh gọi trực tiếp của phương thức dict.
bpo-25449: Việc lặp lại OrderedDict với các khóa có hàm băm không ổn định hiện làm tăng KeyError trong quá trình triển khai C cũng như trong triển khai Python.
bpo-25395: Đã khắc phục sự cố khi các cấu trúc OrderedDict lồng nhau cao bị thu gom rác.
bpo-25274: sys.setrecursionlimit() hiện tăng RecursionError nếu giới hạn đệ quy mới quá thấp tùy thuộc vào độ sâu đệ quy hiện tại. Cũng sửa đổi công thức "vết nước thấp hơn" để làm cho nó đơn điệu. Dấu này được sử dụng để quyết định khi nào cờ tràn của trạng thái luồng được đặt lại.
bpo-24402: Sửa lỗi input() để nhắc tới thiết bị xuất chuẩn được chuyển hướng khi sys.stdout.fileno() không thành công.
bpo-24806: Ngăn chặn các loại dựng sẵn không được phép phân lớp khỏi bị phân lớp thông qua đa kế thừa.
bpo-24848: Đã sửa một số lỗi trong quá trình giải mã UTF-7 dữ liệu bị định dạng sai.
bpo-25280: Thông báo theo dõi nhập được phát ra ở chế độ dài dòng (-v) không còn được định dạng hai lần nữa.
bpo-25003: Trên Solaris 11.3 trở lên, os.urandom() hiện sử dụng hàm getrandom() thay vì hàm getentropy(). Hàm getentropy() đang chặn để tạo ra entropy chất lượng rất tốt, os.urandom() không cần entropy chất lượng cao như vậy.
bpo-25182: stdprinter (được sử dụng dưới dạng sys.stderr trước khi nhập mô-đun io khi khởi động) hiện sử dụng trình xử lý lỗi thay thế dấu gạch chéo ngược.
bpo-25131: Làm cho số dòng và độ lệch cột của các ký tự set/dict và mức độ hiểu tương ứng với dấu ngoặc nhọn mở.
bpo-25150: Ẩn các ký hiệu
_Py_atomic_xxxriêng tư khỏi tiêu đề Python.h công khai để sửa lỗi biên dịch với OpenMP. PyThreadState_GET() trở thành bí danh của PyThreadState_Get() để tránh sự không tương thích của ABI.
Thư viện¶
bpo-25626: Thay đổi ba hàm zlib để chấp nhận các kích thước phù hợp với Py_ssize_t, nhưng giới hạn nội bộ các kích thước đó thành UINT_MAX. Điều này giải quyết hồi quy trong 3.5 trong đó GzipFile.read() không đọc được các đoạn lớn hơn 2 hoặc 4 GiB. Thay đổi này ảnh hưởng đến tham số zlib.Decompress.decompress() max_length, tham số bufsize zlib.decompress() và tham số độ dài zlib.Decompress.flush().
bpo-25583: Tránh các lỗi không chính xác do os.makedirs(exist_ok=True) đưa ra khi HĐH ưu tiên các lỗi như EACCES hơn EEXIST.
bpo-25593: Thay đổi ngữ nghĩa của EventLoop.stop() trong asyncio.
bpo-6973: Khi chúng tôi biết một quy trình con. Quy trình Popen đã chết, không cho phép các phương thức send_signal(), terminating() hoặc kill() thực hiện bất kỳ điều gì vì chúng có thể báo hiệu một quy trình khác.
bpo-25590: Trong trình hoàn thiện Readline, chỉ gọi getattr() một lần cho mỗi thuộc tính.
bpo-25498: Khắc phục sự cố khi các đối tượng ctypes thu thập rác được tạo bằng cách gói một khung nhìn bộ nhớ. Đây là hồi quy được thực hiện trong 3.5a1. Dựa trên bản vá của Eryksun.
bpo-25584: Đã thêm "escape" vào danh sách __all__ trong mô-đun toàn cầu.
bpo-25584: Đã sửa lỗi glob đệ quy() với các mẫu bắt đầu bằng
**.bpo-25446: Khắc phục sự hồi quy trong hỗ trợ AUTH LOGIN của smtplib.
bpo-18010: Sửa chức năng tìm kiếm mô-đun của máy chủ web pydoc để xử lý các trường hợp ngoại lệ khi nhập gói.
bpo-25554: Loại bỏ các tham chiếu vòng tròn trong phân tích cú pháp biểu thức chính quy.
bpo-25510: fileinput.FileInput.readline() hiện trả về b'' thay vì '' ở cuối nếu FileInput được mở bằng chế độ nhị phân. Bản vá của Ryosuke Ito.
bpo-25503: Đã sửa lỗi kiểm tra.getdoc() cho các chuỗi tài liệu kế thừa của thuộc tính. Bản vá gốc của John Mark Vandenberg.
bpo-25515: Luôn sử dụng os.urandom làm nguồn ngẫu nhiên trong uuid.uuid4.
bpo-21827: Đã sửa lỗi textwrap.dedent() trong trường hợp khoảng trắng chung lớn nhất là chuỗi con của khoảng trắng ở đầu nhỏ nhất. Dựa trên bản vá của Robert Li.
bpo-25447: Bây giờ, các đối tượng trình bao bọc lru_cache() có thể được sao chép và chọn lọc (bằng cách trả về đối tượng ban đầu không thay đổi).
bpo-25390: đang gõ: Không gặp sự cố trên Union[str, Pattern].
bpo-25441: asyncio: Tăng lỗi từ Drain() khi đóng ổ cắm.
bpo-25410: Dọn dẹp và sửa các lỗi nhỏ trong quá trình triển khai OrderedDict bằng C.
bpo-25411: Cải thiện hỗ trợ Unicode trong SMTPHandler thông qua việc sử dụng gói email tốt hơn. Cảm ơn người dùng simon04 về bản vá.
bpo-25407: Xóa đề cập đến mô-đun định dạng bị xóa trong Python 3.6.
bpo-25406: Đã khắc phục lỗi trong quá trình triển khai OrderedDict.move_to_end() trong C gây ra lỗi phân đoạn hoặc bị treo khi lặp lại sau khi di chuyển một số mục đến đầu lệnh chính tả.
bpo-25364: zipfile hiện hoạt động trong các bản dựng bị vô hiệu hóa theo chủ đề.
bpo-25328: SMTPChannel của smtpd hiện tăng giá trị ValueError một cách chính xác nếu cả giải mã_data và kích hoạt_SMTPUTF8 đều được đặt thành đúng.
bpo-25316: distutils tăng OSError thay vì DistutilsPlatformError khi MSVC chưa được cài đặt.
bpo-25380: Đã sửa lỗi giao thức cho opcode STACK_GLOBAL trong Picktools.opcodes.
bpo-23972: Cập nhật phương thức tạo datagram asyncio cho phép đặt các tùy chọn ổ cắm tái sử dụng và tái sử dụng trước khi liên kết ổ cắm. Phản chiếu phương thức asyncio create_server hiện có, tùy chọn tái sử dụng cho ổ cắm gói dữ liệu mặc định là True nếu O/S là 'posix' (trừ khi nền tảng là Cygwin). Bản vá của Chris Laws.
bpo-25304: Thêm asyncio.run_coroutine_threadsafe(). Điều này cho phép bạn gửi một coroutine đến một vòng lặp từ một luồng khác, trả về một concurrent.futures.Future. của Vincent Michel.
bpo-25232: Sửa lỗi CGIRequestHandler để tách truy vấn khỏi URL ở dấu chấm hỏi đầu tiên (?) thay vì dấu chấm hỏi cuối cùng. Bản vá từ Xiang Zhang.
bpo-24657: Ngăn CGIRequestHandler thu gọn các dấu gạch chéo trong phần truy vấn của URL như thể đó là một đường dẫn. Bản vá từ Xiang Zhang.
bpo-24483: Việc triển khai C của functools.lru_cache() hiện chỉ tính toán hàm băm của khóa một lần.
bpo-22958: Phương thức xây dựng và cập nhật của Weakref.WeakValueDictionary hiện chấp nhận các đối số từ khóa self và dict.
bpo-22609: Trình xây dựng của bộ sưu tập.UserDict hiện chấp nhận đối số từ khóa self.
bpo-25111: Đã sửa lỗi so sánh traceback.FrameSummary.
bpo-25262: Đã thêm hỗ trợ cho opcode BINBYTES8 khi triển khai trình giải nén Python. 32 bit cao nhất có kích thước 64 bit cho các opcode BINUNICODE8 và BINBYTES8 không còn bị âm thầm bỏ qua trên nền tảng 32 bit khi triển khai C.
bpo-25034: Khắc phục sự cố string.Formatter với định dạng tự động đánh số và định dạng lồng nhau. Bản vá của Anthon van der Neut.
bpo-25233: Viết lại phần cốt lõi của asyncio.Queue và asyncio.Semaphore để dễ hiểu và chính xác hơn.
bpo-25203: Readline.set_completer_delims() không thành công không còn khiến mô-đun ở trạng thái không nhất quán nữa.
bpo-23600: Việc triển khai tzinfo.fromutc() mặc định đã trả về kết quả sai trong một số trường hợp.
bpo-23329: Cho phép xây dựng mô-đun ssl với các phiên bản LibreSSL cũ hơn.
Ngăn chặn tràn trong _Unpickler_Read.
bpo-25047: Khai báo mã hóa XML do Element Tree viết hiện tuân theo kiểu chữ cái do người dùng cung cấp. Điều này khôi phục khả năng viết tên mã hóa bằng chữ hoa như "UTF-8", hoạt động trong Python 2.
bpo-25135: Làm cho deque_clear() an toàn hơn bằng cách làm trống deque trước khi xóa. Điều này giúp tránh các vấn đề quay trở lại có thể xảy ra.
bpo-19143: mô-đun nền tảng hiện đọc phiên bản Windows từ kernel32.dll để tránh các vấn đề tương thích.
bpo-25092: Khắc phục lỗi datetime.strftime() khi errno đã được đặt thành EINVAL.
bpo-23517: Sửa lỗi làm tròn trong các phương thức fromtimestamp() và utcfromtimestamp() của datetime.datetime: micro giây hiện được làm tròn đến gần nhất với các mối liên hệ sẽ tiến đến số nguyên chẵn gần nhất (ROUND_HALF_EVEN), thay vì làm tròn về phía âm vô cực (ROUND_FLOOR). Điều quan trọng là các phương thức này sử dụng cùng chế độ làm tròn so với datetime.timedelta để giữ thuộc tính: (datetime(1970,1,1) + timedelta(seconds=t)) == datetime.utcfromtimestamp(t). Ví dụ, đây cũng là chế độ làm tròn được sử dụng bởi round(float).
bpo-25155: Sửa datetime.datetime.now() và datetime.datetime.utcnow() trên Windows để hỗ trợ ngày sau năm 2038. Đó là một hồi quy được giới thiệu trong Python 3.5.0.
bpo-25108: Các khung bên trong bị bỏ qua trong các hàm truy nguyên print_stack(), format_stack() và extract_stack() được gọi mà không có đối số.
bpo-25118: Khắc phục lỗi hồi quy Python 3.5.0 trong os.waitpid() trên Windows.
bpo-24684: socket.socket.getaddrinfo() hiện gọi PyUnicode_AsEncodedString() thay vì gọi phương thức mã hóa() của máy chủ, để xử lý chính xác chuỗi tùy chỉnh bằng phương thức mã hóa() không trả về chuỗi byte. Bộ mã hóa của codec IDNA hiện được gọi trực tiếp thay vì gọi phương thức Encode() của chuỗi.
bpo-25060: Tính toán chính xác mức sử dụng ngăn xếp của opcode BUILD_MAP.
bpo-24857: Việc so sánh call_args với một chuỗi dài hiện trả về chính xác kết quả boolean thay vì đưa ra một ngoại lệ. Bản vá của A Kaptur.
bpo-23144: Đảm bảo rằng HTMLParser.feed() trả về tất cả dữ liệu, ngay cả khi Convert_charrefs là True.
bpo-24982: Shutil.make_archive() với định dạng "zip" hiện thêm các mục nhập cho các thư mục (bao gồm cả các thư mục trống) trong tệp ZIP.
bpo-25019: Đã khắc phục sự cố do đặt khóa không phải chuỗi của trình phân tích cú pháp người nước ngoài. Dựa trên bản vá của John Leitch.
bpo-16180: Thoát pdb nếu tệp có lỗi cú pháp, thay vì nhốt người dùng vào một vòng lặp vô hạn. Bản vá của Xavier de Gaye.
bpo-24891: Khắc phục tình trạng tương tranh khi khởi động Python nếu bộ mô tả tệp của stdin (0), stdout (1) hoặc stderr (2) bị đóng trong khi Python đang tạo các đối tượng sys.stdin, sys.stdout và sys.stderr. Các thuộc tính này hiện được đặt thành Không nếu việc tạo đối tượng không thành công, thay vì đưa ra ngoại lệ OSError. Bản vá đầu tiên được viết bởi Marco Paolini.
bpo-24992: Khắc phục lỗi xử lý và tình trạng tương tranh (liên quan đến thu gom rác) trong hàm tạo Collection.OrderedDict.
bpo-24881: Đã sửa lỗi cài đặt chế độ nhị phân khi triển khai FileIO trên Windows và Cygwin bằng Python. Bản vá từ Akira Li.
bpo-25578: Khắc phục rò rỉ bộ nhớ (khác) trong SSLSocket.getpeercer().
bpo-25530: Tắt giao thức SSLv3 dễ bị tấn công theo mặc định khi tạo ssl.SSLContext.
bpo-25569: Khắc phục rò rỉ bộ nhớ trong SSLSocket.getpeercert().
bpo-25471: Các ổ cắm được trả về từ Accept() dường như không bị chặn.
bpo-25319: Khi khởi tạo lại threading.Event, điều kiện cơ bản phải sử dụng khóa thông thường thay vì khóa đệ quy.
bpo-21112: Khắc phục hồi quy trong unittest.expectedFailure trên các lớp con. Bản vá từ Berker Peksag.
bpo-24764: cgi.FieldStorage.read_multi() hiện bỏ qua tiêu đề Độ dài nội dung trong tiêu đề phần. Bản vá được viết bởi Peter Landry và được Pierre Quentel đánh giá.
bpo-24913: Sửa lỗi tràn trong deque.index(). Được tìm thấy bởi John Leitch và Bryce Darling.
bpo-24774: Sửa chuỗi tài liệu trong http.server.test. Bản vá từ Chiu-Hsiang Hsu.
bpo-21159: Cải thiện thông báo trong configparser.InterpolationMissingOptionError. Bản vá từ Łukasz Langa.
bpo-20362: Tôn vinh TestCase.longMessage chính xác trong khẳng địnhRegex. Bản vá từ Ilia Kurenkov.
bpo-23572: Đã sửa lỗi functools.singledispatch trên các lớp có siêu dữ liệu sai. Bản vá của Ethan Furman.
asyncio: Ensure_future() hiện chấp nhận các đối tượng có thể chờ đợi.
IDLE¶
bpo-15348: Dừng công cụ gỡ lỗi (thông thường trong quy trình người dùng) trước khi đóng cửa sổ trình gỡ lỗi (chạy trong quy trình IDLE). Điều này ngăn chặn các lỗi RuntimeErrors bị phát hiện và bỏ qua.
bpo-24455: Ngăn IDLE treo khi a) đóng shell trong khi trình gỡ lỗi đang hoạt động (15347); b) đóng trình gỡ lỗi bằng nút [X] (15348); và c) kích hoạt trình gỡ lỗi khi đã hoạt động (24455). Bản vá của Mark Roseman thực hiện điều này bằng cách thực hiện hai thay đổi. 1. Tạm dừng và tiếp tục phương thức gui.interaction với cơ chế tcl vwait dành cho mục đích này (thay vì root.mainloop & .quit). 2. Trong gui.run, trước tiên hãy cho phép mọi tương tác hiện có chấm dứt.
Thay đổi 'Chương trình' thành 'Chương trình của bạn' trong 'chương trình tiêu diệt' IDLE? thông báo để làm rõ hơn rằng chương trình được đề cập là chương trình người dùng hiện đang chạy chứ không phải chính IDLE.
bpo-24750: Cải thiện giao diện của thanh trạng thái cửa sổ soạn thảo IDLE. Bản vá của Mark Roseman.
bpo-25313: Thay đổi cách xử lý các chủ đề màu văn bản tích hợp mới để giải quyết tốt hơn vấn đề tương thích do việc bổ sung IDLE Dark gây ra. Luôn sử dụng IdleConf. CurrentTheme đã sửa đổi ở mọi nơi trong Idlelib.
bpo-24782: Cấu hình tiện ích mở rộng hiện là một tab trong hộp thoại Tùy chọn IDLE chứ không phải là một hộp thoại riêng biệt. Các tab trước đây bây giờ là một danh sách được sắp xếp. Bản vá của Mark Roseman.
bpo-22726: Kích hoạt lại nút trợ giúp hộp thoại cấu hình với một số nội dung về các nút khác và chủ đề Tối IDLE mới.
bpo-24820: IDLE hiện có chủ đề màu văn bản tích hợp 'IDLE Dark'. Nó ít nhiều mang phong cách IDLE Classic đảo ngược, với nền màu xanh coban. Các chuỗi, chú thích, từ khóa,... vẫn có màu xanh, đỏ, cam,.... Để sử dụng nó với IDLE được phát hành trước tháng 11 năm 2015, hãy nhấn nút 'Lưu làm chủ đề tùy chỉnh mới' và nhập tên mới, chẳng hạn như 'Custom Dark'. Chủ đề tùy chỉnh sẽ hoạt động với mọi bản phát hành IDLE và có thể được sửa đổi.
bpo-25224: README.txt hiện là chỉ mục nhàn rỗi dành cho các nhà phát triển IDLE và những người dùng tò mò. Nội dung người dùng trước đây hiện có trong chương tài liệu IDLE. 'IDLE' bây giờ có nghĩa là 'Môi trường học tập và phát triển tích hợp'.
bpo-24820: Người dùng hiện có thể đặt màu điểm dừng trong Cài đặt -> Đánh dấu tùy chỉnh. Bản vá gốc của Mark Roseman.
bpo-24972: Nền lựa chọn không hoạt động hiện khớp với nền lựa chọn đang hoạt động, do người dùng định cấu hình, trên tất cả các hệ thống. Các mục được tìm thấy giờ đây luôn được đánh dấu trên Windows. Bản vá đầu tiên của Mark Roseman.
bpo-24570: Nhàn rỗi: làm cho hộp chú thích cuộc gọi và hộp hoàn thành xuất hiện trên máy Mac bị ảnh hưởng bởi hồi quy tk. Bản vá đầu tiên của Mark Roseman.
bpo-24988: Menu ngữ cảnh Idle ScrolledList (được sử dụng trong trình gỡ lỗi) hiện hoạt động trên Mac Aqua. Bản vá của Mark Roseman.
bpo-24801: Nhấp chuột phải để menu ngữ cảnh hoạt động trên Mac Aqua. Bản vá của Mark Roseman.
bpo-25173: Liên kết hộp thông báo tkinter với một tiện ích cụ thể. Đối với Mac OSX, hãy biến chúng thành một 'tờ'. Bản vá của Mark Roseman.
bpo-25198: Nâng cao trình xem html ban đầu hiện được sử dụng cho Trợ giúp nhàn rỗi. Thụt lề chính xác văn bản có khoảng cách cố định (bản vá của Mark Roseman). Cung cấp cho đoạn mã một nền màu xám xanh nhạt rất giống Nhân sư. Sử dụng lại chiều rộng và chiều cao ban đầu do người dùng đặt cho shell và trình soạn thảo. Khi sử dụng menu Mục lục (TOC), hãy đặt tiêu đề của phần ở đầu màn hình.
bpo-25225: Thu gọn và viết lại phần tài liệu nhàn rỗi về màu văn bản.
bpo-21995: Giải thích một số khác biệt giữa IDLE và console Python.
bpo-22820: Giải thích sự cần thiết của print khi chạy tệp từ trình chỉnh sửa Không hoạt động.
bpo-25224: Doc: mở rộng danh sách tính năng Nhàn rỗi và phần không có quy trình phụ.
bpo-25219: Cập nhật tài liệu cho các tùy chọn dòng lệnh không hoạt động. Một số bị thiếu và ghi chú không chính xác.
bpo-24861: Hầu hết Idlelib đều ở chế độ riêng tư và có thể thay đổi. Sử dụng Idleib.idle.* để khởi động chế độ Chờ. Xem Idlelib.__init__.__doc__.
bpo-25199: Nhàn rỗi: thêm nhận xét đồng bộ hóa cho những người bảo trì trong tương lai.
bpo-16893: Thay thế help.txt bằng help.html để hiển thị tài liệu ở trạng thái rảnh. Idlelib/help.html mới được loại bỏ Doc/build/html/library/idle.html. Nó trông đẹp hơn help.txt và sẽ ghi lại tài liệu Idle tốt hơn khi được phát hành. Trình xem html tkinter hoạt động cho tệp này được viết bởi Mark Roseman. Lớp EditorWindow.HelpDialog và tệp helt.txt hiện chưa được sử dụng sẽ không được dùng nữa.
bpo-24199: Ngừng sử dụng Idlelib.idlever không được sử dụng và có thể xóa trong phiên bản 3.6.
bpo-24790: Xóa mã không liên quan (cũng tạo ra xung đột 2 & 3).
Tài liệu¶
bpo-22558: Thêm các liên kết tài liệu còn lại vào mã nguồn cho các mô-đun được mã hóa bằng Python. Bản vá của Yoni Lavi.
bpo-12067: Viết lại phần So sánh trong chương Biểu thức của tài liệu tham khảo ngôn ngữ. Một số chi tiết so sánh các loại hỗn hợp không chính xác hoặc mơ hồ. NotImplemented chỉ liên quan ở cấp độ thấp hơn chương Biểu thức. Đã thêm chi tiết về việc so sánh các đối tượng range() cũng như các đề xuất về tính nhất quán và hành vi mặc định cho các lớp do người dùng xác định. Bản vá từ Andy Maier.
bpo-24952: Làm rõ đối số kích thước mặc định của stack_size() trong mô-đun "luồng" và "_thread". Bản vá từ Mattip.
bpo-23725: Đại tu tài liệu tempfile. Lưu ý trạng thái không dùng nữa của mktemp. Bản vá từ Zbigniew Jędrzejewski-Szmek.
bpo-24808: Cập nhật loại của một số trường PyTypeObject. Bản vá của Joseph Weston.
bpo-22812: Sửa các ví dụ khám phá nhỏ nhất. Bản vá từ Pam McA'Nulty.
Kiểm tra¶
bpo-25449: Đã thêm các bài kiểm tra cho các lớp con OrderedDict.
bpo-25099: Làm cho test_compileall không bị lỗi khi không thể ghi một mục trên sys.path (thường thấy trong các bản cài đặt quản trị trên Windows).
bpo-23919: Ngăn hộp thoại xác nhận xuất hiện trong bộ thử nghiệm.
PCbuild\rt.bathiện chấp nhận số lượng đối số không giới hạn để chuyển tới regrtest.py. Trước đây có giới hạn là 9.
xây dựng¶
bpo-24915: Thêm hỗ trợ LLVM cho các bản dựng PGO và sử dụng bộ thử nghiệm để tạo dữ liệu hồ sơ. Bản vá đầu tiên của Alecsandru Patrascu của Intel.
bpo-24910: Windows MSI hiện có tên hiển thị duy nhất.
bpo-24986: Hiện tại có thể xây dựng Python trên Windows mà không gặp lỗi khi không có thư viện bên ngoài.
cửa sổ¶
bpo-25450: Cập nhật phím tắt để khởi động Python trong thư mục cài đặt.
bpo-25164: Thay đổi thư mục cài đặt mặc định của tất cả người dùng để phù hợp với thư mục của mỗi người dùng.
bpo-25143: Cải thiện thông báo lỗi trình cài đặt cho các nền tảng không được hỗ trợ.
bpo-25163: Hiển thị đúng thư mục trong trình cài đặt khi sử dụng cài đặt không mặc định.
bpo-25361: Vô hiệu hóa việc sử dụng hướng dẫn SSE2 trong bản dựng Windows 32-bit
bpo-25089: Thêm ghi nhật ký vào trình cài đặt trong trường hợp trình khởi chạy không được chọn khi nâng cấp.
bpo-25165: Gỡ cài đặt Windows sẽ không xóa launcher nếu vẫn còn các phiên bản khác
bpo-25112: trình khởi chạy py.exe thiếu biểu tượng
bpo-25102: Trình cài đặt Windows không biên dịch trước cho -O hoặc -OO.
bpo-25081: Làm cho nút Quay lại trong trình cài đặt quay lại trang nâng cấp khi nâng cấp.
bpo-25091: Tăng kích thước phông chữ của trình cài đặt.
bpo-25126: Làm rõ rằng trình cài đặt không phải trên web sẽ tải xuống một số thành phần.
bpo-25213: Khôi phục được yêu cầuExecutionLevel thành bảng kê khai để tắt ảo hóa UAC.
bpo-25022: Đã xóa thư mục PC/example_nt/ đã lỗi thời.
Công cụ/Bản trình diễn¶
bpo-25440: Sửa đầu ra của python-config --extension-suffix.
Bản cuối cùng của Python 3.5.0¶
Release date: 2015-09-13
xây dựng¶
bpo-25071: Trình cài đặt Windows không cần tham số TargetDir khi cài đặt lặng lẽ.
Ứng viên phát hành Python 3.5.0 4¶
Release date: 2015-09-09
Thư viện¶
bpo-25029: Sửa lỗi MemoryError trong test_strptime.
xây dựng¶
bpo-25027: Hoàn nguyên các tùy chọn xây dựng tĩnh một phần và thêm vcruntime140.dll vào cài đặt Windows.
Ứng viên phát hành Python 3.5.0 3¶
Release date: 2015-09-07
Cốt lõi và nội dung¶
Thư viện¶
bpo-24917: bộ đệm time_strftime() đọc quá mức.
bpo-24748: Để giải quyết vấn đề tương thích được tìm thấy với py2exe và pywin32, imp.load_dynamic() một lần nữa bỏ qua các mô-đun đã tải trước đó để hỗ trợ các mô-đun Python thay thế chúng bằng các mô-đun mở rộng. Bản vá của Petr Viktorin.
bpo-24635: Đã sửa lỗi trong typeing.py trong đó isinstance([], type.Iterable) sẽ trả về True một lần, sau đó trả về Sai trong các lệnh gọi tiếp theo.
bpo-24989: Đã sửa lỗi đọc quá mức bộ đệm trong BytesIO.readline() nếu một vị trí được đặt vượt quá kích thước. Dựa trên bản vá của John Leitch.
bpo-24913: Sửa lỗi tràn trong deque.index(). Được tìm thấy bởi John Leitch và Bryce Darling.
Ứng viên phát hành Python 3.5.0 2¶
Release date: 2015-08-25
Cốt lõi và nội dung¶
bpo-24769: Trình thông dịch hiện khởi động đúng cách khi tắt tính năng tải động. Bản vá của Petr Viktorin.
bpo-21167: Các thao tác NAN hiện được xử lý chính xác khi python được biên dịch bằng ICC ngay cả khi -fp-model strict không được chỉ định.
bpo-24492: Một "gói" thiếu thuộc tính __name__ khi cố gắng thực hiện câu lệnh
from .. import ...sẽ kích hoạt ImportError thay vì AttributionError.
Thư viện¶
Ứng viên phát hành Python 3.5.0 1¶
Release date: 2015-08-09
Cốt lõi và nội dung¶
bpo-24667: Thay đổi kích thước odict trong mọi trường hợp dict cơ bản thay đổi kích thước.
Thư viện¶
bpo-24824: Chữ ký của codecs.encode() và codecs.decode() hiện tương thích với pydoc.
bpo-24634: Nhập uuid không nên thử tải libc trên Windows
bpo-24798: _msvccompiler.py không hỗ trợ đúng cách các bảng kê khai
bpo-4395: Kiểm tra và tài liệu tốt hơn về các toán tử nhị phân. Bản vá của Martin Panter.
bpo-23973: Cập nhật gõ.py từ kho lưu trữ GitHub.
bpo-23004: mock_open() hiện đọc dữ liệu nhị phân một cách chính xác khi loại read_data là byte. Bản vá đầu tiên của Aaron Hill.
bpo-23888: Xử lý phân đoạn thời gian hết hạn của cookie. Bản vá của ssh.
bpo-23652: Cho phép biên dịch mô-đun chọn dựa trên các tiêu đề libc từ Cơ sở Tiêu chuẩn Linux, không bao gồm một số macro EPOLL. Bản vá của Matt Frank.
bpo-22932: Sửa múi giờ trong email.utils.formatdate. Bản vá từ Dmitry Shachnev.
bpo-23779: imaplib tăng TypeError nếu trình xác thực cố gắng hủy bỏ. Bản vá từ Craig Holmquist.
bpo-23319: Sửa ctypes.BigEndianStructure, hoán đổi byte chính xác. Bản vá được viết bởi Matthieu Gautier.
bpo-23254: Tài liệu cách đóng socket nghe TCPServer. Bản vá từ Martin Panter.
bpo-19450: Cập nhật bản dựng trình cài đặt Windows và OS X để sử dụng SQLite 3.8.11.
bpo-17527: Thêm PATCH vào wsgiref.validator. Bản vá từ Luca Sbardella.
bpo-24791: Sửa lỗi hồi quy ngữ pháp cho cú pháp cuộc gọi: 'g(*a or b)'.
IDLE¶
bpo-23672: Cho phép Nhàn rỗi chỉnh sửa và chạy các tệp có tên ký tự thiên văn. Bản vá của Mohd Sanad Zaki Rizvi.
bpo-24745: Phông chữ mặc định của trình soạn thảo nhàn rỗi. Chuyển từ Courier sang TkFixedFont phù hợp với nền tảng. Điều này sẽ không ảnh hưởng đến các lựa chọn phông chữ tùy chỉnh hiện tại. Nếu có vấn đề, hãy chỉnh sửa $HOME/.idlerc/config-main.cfg và xóa các mục '
fontxxx' khỏi [Cửa sổ soạn thảo]. Bản vá của Mark Roseman.bpo-21192: Trình chỉnh sửa nhàn rỗi. Khi một tập tin được chạy, hãy đặt tên của nó vào thanh khởi động lại. Không in lời nhắc sai. Bản vá gốc của Adnan Umer.
bpo-13884: Menu nhàn rỗi. Loại bỏ các đường xé. Bản vá của Roger Serwy.
Tài liệu¶
bpo-24129: Làm rõ tài liệu tham khảo về cách phân giải tên. Điều này bao gồm việc loại bỏ giả định rằng người đọc sẽ quen với sơ đồ phân giải tên mà Python sử dụng trước khi giới thiệu phạm vi từ vựng cho các không gian tên hàm. Bản vá của Ivan Levkivskyi.
bpo-20769: Cải thiện tài liệu tải lại(). Bản vá của Dorian Pula.
bpo-23589: Xóa câu trùng lặp khỏi FAQ. Bản vá của Yongzhi Pan.
bpo-24729: Hướng dẫn IO chính xác để phù hợp với việc triển khai liên quan đến tham số mã hóa cho chức năng mở.
Kiểm tra¶
bpo-24751: Khi chạy regrtest với tùy chọn dòng lệnh
-w, quá trình chạy thử nghiệm không còn bị đánh dấu là thất bại nếu tất cả các thử nghiệm đều thành công khi chạy lại.
Python 3.5.0 beta 4¶
Release date: 2015-07-26
Cốt lõi và nội dung¶
bpo-23573: Đã khôi phục tối ưu hóa bytes.rfind() và bytearray.rfind() cho đối số một byte trên Linux.
bpo-24569: Giúp việc đánh giá từ điển PEP 448 trở nên nhất quán hơn.
bpo-24583: Khắc phục sự cố khi cài đặt bị thay đổi trong khi cập nhật.
bpo-24407: Khắc phục sự cố khi dict bị thay đổi trong khi cập nhật.
bpo-24619: Cách tiếp cận mới để mã hóa async/await. Kết quả là, giờ đây có thể có các hàm 'async def foo(): wait ..' một dòng.
bpo-24687: Cắm phản ánh về SyntaxError vào chú thích tham số hàm.
bpo-15944: Memoryview: Cho phép các định dạng tùy ý khi truyền sang byte. Bản vá của Martin Panter.
Thư viện¶
bpo-23441: rcompleter hiện in ký tự tab thay vì hiển thị các phần hoàn thành có thể có cho một từ trống. Bản vá đầu tiên của Martin Sekera.
bpo-24683: Đã khắc phục sự cố trong các hàm _json được gọi với các đối số thuộc loại không phù hợp.
bpo-21697: Shutil.copytree() hiện xử lý chính xác các liên kết tượng trưng trỏ đến thư mục. Bản vá của Eduardo Seabra và Thomas Kluyver.
bpo-14373: Đã sửa lỗi phân đoạn khi gc.collect() được gọi trong khi xây dựng lru_cache (triển khai C).
bpo-24695: Khắc phục hồi quy trong traceback.print_Exception(). Nếu ex_traceback là Không thì chúng ta không nên in tiêu đề truy nguyên như được mô tả trong tài liệu.
bpo-24620: Random.setstate() hiện xác thực giá trị của phần tử cuối cùng ở trạng thái.
bpo-22485: Đã khắc phục sự cố khiến
inspect.getsourcetrả về kết quả không chính xác trên các hàm lồng nhau.bpo-22153: Cải thiện tài liệu nhỏ nhất. Bản vá từ Martin Panter và evilzero.
bpo-24580: Hiện tại, các tham chiếu nhóm tượng trưng đến nhóm mở trong các mẫu re đều bị cấm rõ ràng cũng như các tham chiếu nhóm số.
bpo-24206: Đã sửa lỗi phương thức __eq__ và __ne__ để kiểm tra các lớp.
bpo-24631: Đã sửa lỗi hồi quy trong mô-đun timeit với thiết lập nhiều dòng.
bpo-18622: unittest.mock.mock_open().reset_mock sẽ lặp lại vô tận. Bản vá từ Nicola Palumbo và Laurent De Buyst.
bpo-23661: unittest.mock side_effect bây giờ có thể lại là ngoại lệ. Đây là một hồi quy so với Python 3.4. Bản vá từ Ignacio Rossi
bpo-24608: chunk.Chunk.read() giờ đây luôn trả về byte chứ không phải str.
bpo-18684: Đã sửa lỗi đọc bộ đệm trong mô-đun re.
bpo-24259: tarfile hiện tăng ReadError nếu kho lưu trữ bị cắt bớt bên trong phân đoạn dữ liệu.
bpo-15014: SMTP.auth() và SMTP.login() hiện hỗ trợ đối số phản hồi ban đầu tùy chọn của RFC 4954 cho lệnh SMTP AUTH.
bpo-24669: Sửa lỗi Inspection.getsource() cho các hàm 'async def'. Bản vá của Kai Groner.
bpo-24688: ast.get_docstring() cho các hàm 'async def'.
xây dựng¶
bpo-24603: Cập nhật các bản dựng Windows và trình cài đặt OS X 10.5 để sử dụng OpenSSL 1.0.2d.
Python 3.5.0 beta 3¶
Release date: 2015-07-05
Cốt lõi và nội dung¶
bpo-24467: Đã sửa lỗi có thể đọc quá mức bộ đệm trong bytearray. Đối tượng bytearray bây giờ luôn phân bổ vị trí cho byte null ở cuối và bộ đệm của nó bây giờ luôn bị kết thúc bằng null.
Nâng cấp lên Unicode 8.0.0.
bpo-24345: Thêm khe Py_tp_finalize cho ABI ổn định.
bpo-24400: Giới thiệu một loại riêng biệt cho coroutine PEP 492; thêm các loại.CoroutineType, kiểm tra.getcoroutinestate, kiểm tra.getcoroutinelocals; coroutines không còn sử dụng cờ CO_GENERATOR nữa; sys.set_coroutine_wrapper chỉ hoạt động với coroutine 'async def'; kiểm tra.iscoroutine không còn sử dụng Collection.abc.Coroutine nữa, nó chỉ nhằm mục đích kiểm tra các coroutine 'async def' thuần túy; thêm mã hoạt động mới: GET_YIELD_FROM_ITER; sửa trình bao bọc trình tạo được sử dụng trong type.coroutine thành phiên bản của bộ sưu tập.abc.Generator; bộ sưu tập.abc.Awaitable và bộ sưu tập.abc.Coroutine không còn có thể được sử dụng để phát hiện các coroutine dựa trên trình tạo--thay vào đó hãy sử dụng kiểm tra.isawaitable.
bpo-24450: Thêm gi_yieldfrom vào máy phát điện và cr_await vào coroutine. Đóng góp bởi Benno Leslie và Yury Selivanov.
bpo-19235: Thêm ngoại lệ RecursionError mới. Bản vá của Georg Brandl.
Thư viện¶
bpo-21750: mock_open.read_data hiện có thể được đọc từ mỗi phiên bản, giống như trong Python 3.3.
bpo-24552: Sửa lỗi sử dụng sau khi rảnh trong trường hợp lỗi của mô-đun _pickle.
bpo-24514: tarfile hiện chấp nhận các trường số chỉ bao gồm khoảng trắng.
bpo-19176: Đã sửa các lỗi liên quan đến doctype() khi triển khai ElementTree bằng C. Cảnh báo không dùng nữa do lớp con XMLParser đưa ra với phương thức doctype() mặc định không còn nữa. Cuộc gọi trực tiếp của doctype() hiện đưa ra cảnh báo. Doctype() của trình phân tích cú pháp bây giờ không được gọi nếu doctype() của mục tiêu được gọi. Dựa trên bản vá của Martin Panter.
bpo-20387: Khôi phục tính chính xác về ngữ nghĩa của chuyến đi khứ hồi trong mã hóa/hủy mã hóa cho các khối được thụt lề bằng tab.
bpo-24456: Đã sửa lỗi có thể đọc quá mức bộ đệm trong các hàm adpcm2lin() và lin2adpcm() của mô-đun audioop.
bpo-24336: Trình trang trí trình quản lý bối cảnh hiện hoạt động với các hàm có đối số từ khóa được gọi là "func" và "self". Bản vá của Martin Panter.
bpo-24522: Khắc phục lỗi tràn số nguyên có thể xảy ra trong mô-đun tăng tốc json.
bpo-24489: đảm bảo lỗi C đã đặt trước đó không làm phiền cmath.polal().
bpo-24408: Đã sửa lỗi AttributionError trong các phương thức đo() và số liệu() của tkinter.Font.
bpo-14373: Hiện tại, việc triển khai C của functools.lru_cache() có thể được sử dụng với các phương thức.
bpo-24347: Đặt KeyError nếu PyDict_GetItemWithError trả về NULL.
bpo-24348: Bỏ phần tăng/giảm không cần thiết.
bpo-24359: Kiểm tra kích thước OrderedDict đã thay đổi trong quá trình lặp.
bpo-24368: Hỗ trợ đối số từ khóa trong phương thức OrderedDict.
bpo-24362: Đơn giản hóa logic thay đổi kích thước nút nhanh C OrderedDict.
bpo-24377: Sửa lỗi rò rỉ giới thiệu trong OrderedDict.__repr__.
bpo-24369: Bảo vệ khỏi những thay đổi về khóa trong quá trình lặp lại.
Kiểm tra¶
Tài liệu¶
xây dựng¶
bpo-24432: Cập nhật các bản dựng Windows và trình cài đặt OS X 10.5 để sử dụng OpenSSL 1.0.2c.
Python 3.5.0 beta 2¶
Release date: 2015-05-31
Cốt lõi và nội dung¶
bpo-24284: Các phương thức startedwith và endwith của lớp str không còn trả về True khi tìm chuỗi trống và các chỉ mục hoàn toàn nằm ngoài phạm vi.
bpo-24115: Cập nhật cách sử dụng PyObject_IsTrue(), PyObject_Not(), PyObject_IsInstance(), PyObject_RichCompareBool() và _PyDict_Contains() để kiểm tra và xử lý lỗi chính xác.
bpo-24328: Sửa lỗi nhập mô-đun mở rộng một ký tự.
bpo-11205: Trong màn hình từ điển, đánh giá khóa trước giá trị.
bpo-24285: Đã sửa lỗi hồi quy ngăn việc nhập mô-đun mở rộng từ các gói bên trong. Bản vá của Petr Viktorin.
Thư viện¶
bpo-23247: Khắc phục sự cố trong StreamWriter.reset() của codec CJK.
bpo-24270: Thêm các hàm math.isclose() và cmath.isclose() theo PEP 485. Đóng góp bởi Chris Barker và Tal Einat.
bpo-5633: Đã sửa lỗi timeit khi câu lệnh là một chuỗi và thiết lập thì không.
bpo-24326: Đã sửa lỗi audioop.ratecv() với đối số WeightB không mặc định. Bản vá gốc của David Moore.
bpo-16991: Thêm triển khai C của OrderedDict.
bpo-23934: Sửa lỗi kiểm tra.signature không chính xác đối với các loại dựng sẵn thiếu thông tin chữ ký. Bản vá đầu tiên của James Powell.
Python 3.5.0 beta 1¶
Release date: 2015-05-24
Cốt lõi và nội dung¶
bpo-24276: Đã sửa lỗi tối ưu hóa trình thu thập mô tả thuộc tính.
bpo-24268: PEP 489: Khởi tạo mô-đun mở rộng nhiều pha. Bản vá của Petr Viktorin.
bpo-23955: Thêm tùy chọn pyvenv.cfg để chặn việc tra cứu sổ đăng ký/môi trường nhằm tạo sys.path trên Windows.
bpo-24257: Đã sửa lỗi hệ thống khi so sánh các loại giả mạo.SimpleNamespace.
bpo-22939: Đã sửa lỗi tràn số nguyên trong đối tượng iterator. Bản vá của Clement Rouault.
bpo-23985: Khắc phục lỗi tràn bộ đệm có thể xảy ra khi xóa một lát cắt ở phía trước bytearray và sau đó nối thêm một số dữ liệu byte khác.
bpo-24102: Đã sửa lỗi kiểm tra loại ngoại lệ trong trình xử lý lỗi tiêu chuẩn.
bpo-15027: Bộ mã hóa UTF-32 hiện nhanh hơn gấp 3 đến 7 lần.
bpo-23290: Tối ưu hóa set_merge() cho trường hợp mục tiêu trống. (Được đóng góp bởi Serhiy Storchaka.)
bpo-2292: PEP 448: Tổng quát hóa giải nén bổ sung.
bpo-24096: Làm cho Warning.warn_explicit mạnh mẽ hơn trước sự đột biến của danh sách Warning.filters.
bpo-23996: Tránh sự cố khi trình tạo được ủy quyền đưa ra ngoại lệ StopIteration không chuẩn hóa. Bản vá của Stefan Behnel.
bpo-23910: Tối ưu hóa các lệnh gọi getter thuộc tính(). Bản vá của Joe Jevnik.
bpo-23911: Di chuyển mã khởi động importlib dựa trên đường dẫn sang một mô-đun cố định riêng biệt.
bpo-24192: Sửa lỗi nhập gói không gian tên.
bpo-24022: Khắc phục sự cố mã thông báo khi xử lý mã nguồn không thể giải mã được.
bpo-9951: Đã thêm phương thức hex() vào byte, bytearray và chế độ xem bộ nhớ.
bpo-22906: PEP 479: Thay đổi cách xử lý StopIteration bên trong máy phát điện.
bpo-24017: PEP 492: Coroutine với cú pháp không đồng bộ và chờ đợi.
Thư viện¶
bpo-14373: Đã thêm triển khai C của functools.lru_cache(). Dựa trên các bản vá của Matt Joiner và Alexey Kachayev.
bpo-24230: Mô-đun tempfile hiện chấp nhận byte cho các tham số tiền tố, hậu tố và thư mục và trả về byte trong các tình huống như vậy (khớp với API mô-đun os).
bpo-22189: bộ sưu tập.UserString hiện hỗ trợ __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() và maketrans(). Bản vá của Joe Jevnik.
bpo-24244: Ngăn chặn việc chấm dứt khi gặp chuỗi định dạng không hợp lệ trên Windows trong strftime.
bpo-23973: PEP 484: Thêm mô-đun gõ.
bpo-23086: Lớp cơ sở trừu tượng Collections.abc.Sequence() đã thêm các tham số start và stop vào mixin index(). Bản vá của Devin Jeanpierre.
bpo-20035: Đã thay thế mô-đun
tkinter._fixđược sử dụng để thiết lập môi trường Tcl/Tk trên Windows bằng chức năng riêng tư trong mô-đun_tkinterkhông tạo ra thay đổi vĩnh viễn nào đối với môi trường.bpo-24257: Đã sửa lỗi phân đoạn trong hàm tạo sqlite3.Row với loại con trỏ giả.
bpo-15836: các xác nhận khẳng định RaiseRaises(), khẳng địnhRaisesRegex(), khẳng địnhWarns() và khẳng địnhWarnsRegex() hiện kiểm tra loại đối số đầu tiên để ngăn ngừa lỗi người dùng có thể xảy ra. Dựa trên bản vá của Daniel Wagner-Hall.
bpo-9858: Thêm các phương thức còn thiếu vào _io.RawIOBase. Bản vá của Laura Rupprecht.
bpo-22955: các đối tượng attrgetter, itemgetter và Methodcaller trong mô-đun toán tử hiện hỗ trợ tính năng tẩy. Đã thêm đại diện có thể đọc và đánh giá được cho các đối tượng này. Dựa trên bản vá của Josh Rosenberg.
bpo-22107: tempfile.gettempdir() và tempfile.mkdtemp() bây giờ hãy thử lại khi thư mục có tên đã chọn đã tồn tại trên Windows cũng như trên Unix. tempfile.mkstemp() hiện không thành công sớm nếu thư mục mẹ không hợp lệ (không tồn tại hoặc là một tệp) trên Windows.
bpo-23780: Thông báo lỗi được cải thiện trong os.path.join() với một đối số.
bpo-6598: Tăng độ chính xác về thời gian và phạm vi số ngẫu nhiên trong email.utils.make_msgid() để tăng cường tính duy nhất của ID thư.
bpo-24091: Đã khắc phục nhiều sự cố khác nhau trong các trường hợp góc khi triển khai ElementTree bằng C.
bpo-21931: msilib.FCICreate() hiện tăng TypeError trong trường hợp đối số không hợp lệ thay vì ValueError với số lỗi FCI không có thật. Bản vá của Jeffrey Armstrong.
bpo-13866: đối số quote_via được thêm vào urllib.parse.urlencode.
bpo-20098: Tùy chọn chính sách mangle_from mới cho email, mặc định là Đúng cho compat32 nhưng Sai cho tất cả các chính sách khác.
bpo-24211: Thư viện email hiện hỗ trợ RFC 6532: nó có thể tạo tiêu đề bằng utf-8 thay vì các từ được mã hóa.
bpo-16314: Đã thêm hỗ trợ nén LZMA trong các tệp distutils.
bpo-21804: poplib hiện hỗ trợ RFC 6856 (UTF8).
bpo-18682: Các hàm pprint được tối ưu hóa cho các loại vô hướng tích hợp.
bpo-22027: smtplib hiện hỗ trợ RFC 6531 (SMTPUTF8).
bpo-23488: Các đối tượng tạo ngẫu nhiên hiện tiêu thụ ít bộ nhớ hơn gấp 2 lần trên 64-bit.
bpo-1322: các hàm platform.dist() và platform.linux_distribution() hiện không được dùng nữa. Bản vá đầu tiên của Vajrasky Kok.
bpo-22486: Đã thêm hàm math.gcd(). Hàm fractals.gcd() hiện không còn được dùng nữa. Dựa trên bản vá của Mark Dickinson.
bpo-24064: Chuỗi tài liệu Property() hiện có thể ghi được. (Bản vá của Berker Peksag.)
bpo-22681: Đã thêm hỗ trợ cho mã hóa koi8_t.
bpo-22682: Đã thêm hỗ trợ cho mã hóa kz1048.
bpo-23796: các phương thức xem nhanh và đọc1 của BufferedReader hiện tăng ValueError nếu chúng gọi một đối tượng đóng. Bản vá của John Hergenroeder.
bpo-21795: smtpd hiện hỗ trợ tiện ích mở rộng 8BITMIME bất cứ khi nào đối số hàm tạo decode_data mới được đặt thành Sai.
bpo-24155: tối ưu hóa heapq.heapify() để có hiệu suất bộ nhớ đệm tốt hơn khi tổng hợp các danh sách lớn.
bpo-21800: imaplib hiện hỗ trợ RFC 5161 (bật), RFC 6855 (utf8/email quốc tế hóa) và tự động mã hóa tên người dùng và mật khẩu không phải ASCII thành UTF8.
bpo-20274: Khi gọi _sqlite.Connection, giờ đây nó sẽ phàn nàn nếu truyền bất kỳ đối số từ khóa nào. Trước đây nó âm thầm phớt lờ họ.
bpo-20274: Xóa các tham số "kwargs" bị bỏ qua và sai sót khỏi ba phương thức METH_VARARGS trên _sqlite.Connection.
bpo-24134: các kiểm tra khẳng địnhRaises(), khẳng địnhRaisesRegex(), khẳng địnhWarns() và khẳng địnhWarnsRegex() hiện phát ra cảnh báo không dùng nữa khi có thể gọi là Không có hoặc đối số từ khóa ngoại trừ thông điệp được chuyển trong chế độ quản lý ngữ cảnh.
bpo-24018: Thêm lớp cơ sở trừu tượng Collections.abc.Generator. Đóng góp bởi Stefan Behnel.
bpo-23880: Getint() và getdouble() của Tkinter hiện hỗ trợ Tcl_Obj. Getdouble() của Tkinter hiện hỗ trợ mọi số (đặc biệt là int).
bpo-22619: Đã thêm hỗ trợ giới hạn âm trong mô-đun truy nguyên. Dựa trên bản vá của Dmitry Kazakov.
bpo-24094: Khắc phục sự cố có thể xảy ra trong json.encode với các lớp con dict hoạt động kém.
bpo-9246: Trên POSIX, os.getcwd() hiện hỗ trợ các đường dẫn dài hơn 1025 byte. Bản vá được viết bởi William Orr.
bpo-17445: thêm difflib.diff_bytes() để hỗ trợ so sánh các chuỗi byte (sửa lỗi hồi quy từ Python 2).
bpo-23917: Quay lại biên dịch tuần tự khi ProcessPoolExecutor không tồn tại. Bản vá của Claudiu Popa.
bpo-23008: Đã sửa lỗi phân giải các thuộc tính có giá trị boolean là Sai trong pydoc.
Khắc phục sự cố asyncio 235: Vị trí của LifoQueue và PriorityQueue không tăng các tác vụ chưa hoàn thành (lỗi này xuất hiện khi JoinableQueue được hợp nhất với Hàng đợi).
bpo-23908: các hàm os hiện từ chối các đường dẫn có ký tự null được nhúng trên Windows thay vì âm thầm cắt bớt chúng.
bpo-23728: binascii.crc_hqx() có thể trả về một số nguyên nằm ngoài phạm vi 0-0xffff đối với dữ liệu trống.
bpo-23887: urllib.error.HTTPError hiện có biểu diễn repr() thích hợp. Bản vá của Berker Peksag.
asyncio: API vòng lặp sự kiện mới: set_task_factory() và get_task_factory().
asyncio: hàm async() không còn được dùng nữa và thay vào đó là Ensure_future().
bpo-24178: asyncio.Lock, Condition, Semaphore và BoundedSemaphore hỗ trợ cú pháp 'async with' mới. Đóng góp bởi Yury Selivanov.
bpo-24179: Hỗ trợ 'async for' cho asyncio.StreamReader. Đóng góp bởi Yury Selivanov.
bpo-24184: Thêm ABC AsyncIterator và AsyncIterable vào bộ sưu tập.abc. Đóng góp bởi Yury Selivanov.
bpo-22547: Triển khai __repr__ đầy thông tin để kiểm tra.BoundArguments. Đóng góp bởi Yury Selivanov.
bpo-24190: Triển khai phương thức kiểm tra.BoundArgument.apply_defaults(). Đóng góp bởi Yury Selivanov.
bpo-20691: Thêm đối số 'follow_wrapped' vào Inspection.Signature.from_callable() và Inspection.signature(). Đóng góp bởi Yury Selivanov.
bpo-24248: Không dùng kiểm tra.Signature.from_function() và kiểm tra.Signature.from_buildin().
bpo-23898: Sửa lỗi kiểm tra.classify_class_attrs() để hỗ trợ các thuộc tính có __eq__ và __bool__ bị quá tải. Bản vá của Mike Bayer.
bpo-24298: Sửa phương thức kiểm tra.signature() để mở gói chính xác xung quanh các phương thức bị ràng buộc.
IDLE¶
bpo-23184: xóa tên không sử dụng và nhập vào idlib. Bản vá đầu tiên của Al Sweigart.
Kiểm tra¶
Tài liệu¶
Công cụ/Bản trình diễn¶
bpo-24000: Cải thiện khả năng ánh xạ các bộ chuyển đổi của Phòng khám Đối số sang các "đơn vị định dạng" cũ. Đã cập nhật tài liệu cho phù hợp.
bpo-24001: Bộ chuyển đổi Phòng khám đối số hiện sử dụng chấp nhận={type} thay vì loại={'type'} để chỉ định loại mà bộ chuyển đổi chấp nhận.
bpo-23330: h2py hiện hỗ trợ tên tệp tùy ý trong #include.
bpo-24031: make patchcheck hiện cũng hỗ trợ kiểm tra git.
Python 3.5.0 alpha 4¶
Release date: 2015-04-19
Cốt lõi và nội dung¶
bpo-22980: Trong Linux, GNU/KFreeBSD và các tiện ích mở rộng Hurd, C hiện bao gồm bộ ba kiến trúc trong tên tiện ích mở rộng, để giúp dễ dàng kiểm tra các bản dựng cho các ABI khác nhau trong cùng một cây làm việc. Trong OS X, tên tiện ích mở rộng hiện bao gồm thông tin kiểu PEP 3149.
bpo-22631: Đã thêm hằng số ổ cắm dành riêng cho Linux CAN_RAW_FD_FRAMES. Bản vá lịch sự của Joe Jevnik.
bpo-23726: Không bật GC cho các lớp con người dùng thuộc loại không phải GC không thêm bất kỳ trường mới nào. Bản vá của Eugene Toder.
bpo-23309: Tránh bế tắc khi tắt máy nếu một luồng daemon bị hủy bỏ trong khi nó đang giữ khóa đối tượng I/O được đệm và luồng chính cố gắng sử dụng cùng một đối tượng I/O (thường là thiết bị xuất chuẩn hoặc thiết bị xuất chuẩn). Thay vào đó, một lỗi nghiêm trọng được phát ra.
bpo-22977: Sửa lỗi định dạng thông báo lỗi Windows trên Wine. Bản vá của Martin Panter.
bpo-23466: %c, %o, %x và %X ở định dạng byte hiện tăng TypeError trên đầu vào không nguyên.
bpo-24044: Sửa lỗi vô hiệu hóa con trỏ null có thể xảy ra trong list.sort trong điều kiện hết bộ nhớ.
bpo-21354: Hàm PyCFunction_New lại được python DLL hiển thị.
Thư viện¶
bpo-23840: tokenize.open() hiện đóng tệp nhị phân tạm thời do lỗi để khắc phục cảnh báo tài nguyên.
bpo-16914: debuglevel 2 mới trong smtplib thêm dấu thời gian vào đầu ra gỡ lỗi.
bpo-7159: urllib.request hiện hỗ trợ gửi thông tin xác thực tự động sau 401 đầu tiên. Cải tiến này là một tập hợp siêu cải tiến từ bpo-19494 và thay thế thay đổi đó.
bpo-23703: Khắc phục hồi quy trong urljoin() được giới thiệu trong 901e4e52b20a. Bản vá của Demian Brecht.
bpo-4254: Thêm _curses.update_lines_cols(). Bản vá của Arnon Yaari
bpo-19933: Cung cấp đối số mặc định cho ndigits trong vòng. Bản vá của Vajrasky Kok.
bpo-23193: Thêm tham số số_owner vào tarfile.TarFile.extract và tarfile.TarFile.extractall. Bản vá của Michael Vogt và Eric Smith.
bpo-23342: Thêm hàm subprocess.run() thay vì trả về phiên bản CalledProcess để có API nhất quán hơn các hàm call* hiện có.
bpo-21217: kiểm tra.getsourcelines() hiện cố gắng tính toán dòng bắt đầu và kết thúc từ đối tượng mã, khắc phục sự cố khi sử dụng hàm lambda làm đối số trang trí. Bản vá của Thomas Ballinger và Allison Kaptur.
bpo-24521: Khắc phục tình trạng tràn số nguyên có thể xảy ra trong mô-đun dưa chua.
bpo-22931: Cho phép '[' và ']' trong giá trị cookie.
Thuộc tính từ khóa của functools.partial hiện luôn là một từ điển.
bpo-23811: Thêm dòng mới bị thiếu vào thông báo lỗi PyCompileError. Bản vá của Alex Shkop.
bpo-21116: Tránh gây lãng phí bộ nhớ khi phân bổ mảng chia sẻ đa xử lý lớn hơn 50% so với RAM có sẵn. Bản vá của Médéric Boquien.
bpo-22982: Cải thiện khả năng xử lý BOM khi tìm kiếm nhiều vị trí của tệp văn bản có thể ghi.
bpo-23464: Đã xóa asyncio JoinableQueue không được dùng nữa.
bpo-23529: Giới hạn kích thước dữ liệu giải nén khi đọc từ GzipFile, BZ2File hoặc LZMAFile. Điều này đánh bại các cuộc tấn công từ chối dịch vụ bằng cách sử dụng bom nén (tức là tải trọng được nén sẽ giải nén đến kích thước khổng lồ). Bản vá của Martin Panter và Nikolaus Rath.
bpo-21859: Đã thêm triển khai Python của io.FileIO.
bpo-23865: các phương thức close() trong nhiều mô-đun hiện trở nên bình thường và mạnh mẽ hơn khi tắt máy. Nếu họ cần giải phóng nhiều tài nguyên, tất cả đều được giải phóng ngay cả khi xảy ra lỗi.
bpo-23400: Đưa ra cùng một ngoại lệ trên cả Python 2 và 3 nếu sem_open không có sẵn. Bản vá của Davin Potts.
bpo-10838: Mô-đun quy trình con hiện bao gồm SubprocessError và TimeoutError trong danh sách tên được xuất cho người dùng đủ tự nhiên để sử dụng
from subprocess import *.bpo-23411: Đã thêm DefragResult, ParseResult, SplitResult, DefragResultBytes, ParseResultBytes và SplitResultBytes vào urllib.parse.__all__. Bản vá của Martin Panter.
bpo-23881: hàm tạo urllib.request.ftpwrapper hiện đóng ổ cắm nếu kết nối FTP không khắc phục được ResourceWarning.
bpo-23853:
socket.socket.sendall()không còn đặt lại thời gian chờ của ổ cắm mỗi khi dữ liệu được gửi thành công. Thời gian chờ của ổ cắm hiện là tổng thời lượng tối đa để gửi tất cả dữ liệu.bpo-22721: Thứ tự đầu ra pprint nhiều dòng của tập hợp hoặc lệnh chứa các phần tử có thể đặt hàng và không thể đặt hàng không còn phụ thuộc vào thứ tự lặp của tập hợp hoặc lệnh.
bpo-15133: _tkinter.tkapp.getboolean() hiện hỗ trợ Tcl_Obj và luôn trả về bool. tkinter.BooleanVar hiện xác thực các giá trị đầu vào (được chấp nhận bool, int, str và Tcl_Obj). tkinter.BooleanVar.get() bây giờ luôn trả về bool.
bpo-10590: xml.sax.parseString() hiện hỗ trợ đối số chuỗi.
bpo-23338: Đã sửa lỗi định dạng thông báo lỗi ctypes trên Cygwin. Bản vá của Makoto Kato.
bpo-15582: kiểm tra.getdoc() hiện tuân theo chuỗi kế thừa.
bpo-2175: Trình phân tích cú pháp SAX hiện hỗ trợ luồng ký tự của đối tượng Nguồn đầu vào.
bpo-16840: Tkinter hiện hỗ trợ số nguyên 64 bit được thêm vào trong Tcl 8.4 và số nguyên chính xác tùy ý được thêm vào trong Tcl 8.5.
bpo-23834: Sửa socket.sendto(), sử dụng kiểu C Py_ssize_t để lưu kết quả của sendto() thay vì kiểu C int.
bpo-23618:
socket.socket.connect()hiện đợi cho đến khi kết nối hoàn tất thay vì tăngInterruptedErrornếu kết nối bị gián đoạn bởi tín hiệu, bộ xử lý tín hiệu không đưa ra ngoại lệ và ổ cắm đang chặn hoặc hết thời gian chờ.socket.socket.connect()vẫn tăngInterruptedErrorcho các ổ cắm không chặn.bpo-21526: Tkinter hiện hỗ trợ loại boolean mới trong Tcl 8.5.
bpo-23836: Sửa mô-đun xử lý lỗi để xử lý các cuộc gọi gửi lại đến bộ xử lý tín hiệu của nó.
bpo-23838: linecache hiện xóa bộ đệm và trả về kết quả trống trên MemoryError.
bpo-10395: Đã thêm os.path.commonpath(). Được triển khai trong posixpath và ntpath. Dựa trên bản vá của Rafik Draoui.
bpo-23611: Việc tuần tự hóa nhiều đối tượng "có thể tra cứu" hơn (chẳng hạn như các phương thức không liên kết hoặc các lớp lồng nhau) hiện được hỗ trợ với các giao thức dưa chua < 4.
bpo-13583: sqlite3.Row hiện hỗ trợ lập chỉ mục lát cắt.
bpo-18473: Đã sửa lỗi ánh xạ dưa chua tương thích 2to3 và 3to2. Đã sửa lỗi ánh xạ ngược mơ hồ. Đã thêm nhiều ánh xạ mới. Ánh xạ nhập không còn được áp dụng cho các mô-đun đã được ánh xạ với ánh xạ tên đầy đủ.
bpo-23485: select.select() hiện được thử lại tự động với thời gian chờ được tính toán lại khi bị gián đoạn bởi tín hiệu, trừ khi trình xử lý tín hiệu đưa ra một ngoại lệ. Thay đổi này là một phần của PEP 475.
bpo-23752: Khi được xây dựng từ bộ mô tả tệp hiện có, io.FileIO() hiện chỉ gọi fstat() một lần. Trước khi fstat() được gọi hai lần, điều này là không cần thiết.
bpo-23704: các đối tượng Collection.deque() hiện hỗ trợ __add__, __mul__ và __imul__().
bpo-23171: csv.Writer.writerow() hiện hỗ trợ các lần lặp tùy ý.
bpo-23745: Trình phân tích cú pháp tiêu đề email mới hiện xử lý các tên thông số MIME trùng lặp mà không gặp lỗi, tương tự như cách hoạt động của get_param.
bpo-22117: Sửa os.utime(), giờ đây nó làm tròn dấu thời gian về phía âm vô cực (-inf) thay vì làm tròn về 0.
bpo-23310: Sửa trình khởi tạo của MagicMock để hoạt động với __methods__, giống như configure_mock(). Bản vá của Kasia Jachim.
xây dựng¶
Kiểm tra¶
Công cụ/Bản trình diễn¶
bpo-18128: pygettext hiện sử dụng định dạng +NNNN tiêu chuẩn trong tiêu đề POT-Creation-Date.
bpo-23935: Sự hiểu biết của Argument Clinic về các đơn vị định dạng chấp nhận byte, bytearray và bộ đệm hiện đã nhất quán với cả tài liệu và cách triển khai.
bpo-23944: Argument Clinic hiện bao gồm các nguyên mẫu impl dài ở cột 78.
bpo-20586: Phòng khám đối số hiện đảm bảo rằng các hàm không có chuỗi tài liệu đều có chữ ký.
bpo-23492: Phòng khám đối số hiện tạo mã phân tích đối số bằng PyArg_Parse thay vì PyArg_ParseTuple nếu có thể.
bpo-23500: Argument Clinic giờ đây thông minh hơn trong việc tạo định nghĩa "#ifndef" (trống) của macro Methoddef: nó chỉ được tạo một lần, ngay cả khi Argument Clinic xử lý cùng một ký hiệu nhiều lần và nó được phát ra ở cuối quá trình xử lý thay vì ngay sau lần sử dụng đầu tiên.
C API¶
bpo-23998: PyImport_ReInitLock() hiện kiểm tra lỗi phân bổ khóa
Python 3.5.0 alpha 3¶
Release date: 2015-03-28
Cốt lõi và nội dung¶
bpo-23573: Tăng hiệu suất của các hoạt động tìm kiếm chuỗi (str.find, str.index, str.count, toán tử in, str.split, str.partition) với các đối số thuộc nhiều loại khác nhau (UCS1, UCS2, UCS4).
bpo-23753: Python không hỗ trợ các nền tảng không có stat() hoặc fstat() nữa, các chức năng này luôn được yêu cầu.
bpo-23681: Tùy chọn -b hiện ảnh hưởng đến việc so sánh byte với int.
bpo-23632: Chế độ xem bộ nhớ hiện cho phép lập chỉ mục bộ dữ liệu (bao gồm cả chế độ xem bộ nhớ đa chiều).
bpo-23192: Sửa lỗi lambda của máy phát điện. Bản vá của Bruno Cauet.
bpo-23629: Sửa lỗi triển khai __sizeof__ mặc định cho các đối tượng có kích thước thay đổi.
Thư viện¶
bpo-14260: Thuộc tính groupindex của đối tượng mẫu biểu thức chính quy hiện là ánh xạ không thể sửa đổi.
bpo-23792: Bỏ qua Bàn phímInterrupt khi máy nhắn tin pydoc đang hoạt động. Điều này bắt chước hành vi của máy nhắn tin unix tiêu chuẩn và ngăn chặn pipepager tắt trong khi máy nhắn tin vẫn đang chạy.
bpo-23775: pprint() của OrderedDict hiện đưa ra biểu diễn tương tự như repr().
bpo-23765: Đã xóa lệnh gọi IsBadStringPtr trong ctypes
bpo-22364: Cải thiện một số thông báo lỗi bằng cách sử dụng biểu thức chính quy cho các gợi ý.
bpo-23742: ntpath.expandvars() không còn mất dấu ngoặc đơn không cân bằng nữa.
bpo-21717: Chức năng zipfile.ZipFile.open hiện hỗ trợ chế độ 'x' (tạo độc quyền).
bpo-21802: Trình đọc trong BufferedRWPair hiện đã bị đóng ngay cả khi việc đóng trình ghi không thành công trong BufferedRWPair.close().
bpo-23622: Các lối thoát không xác định trong các biểu thức thông thường bao gồm chữ cái
'\'và ASCII hiện đưa ra cảnh báo không dùng nữa và sẽ bị cấm trong Python 3.6.bpo-23671: string.Template hiện cho phép chỉ định tham số "self" làm đối số từ khóa. string.Formatter hiện cho phép chỉ định tham số "self" và "format_string" làm đối số từ khóa.
bpo-23502: Mô-đun pprint hiện hỗ trợ proxy ánh xạ.
bpo-17530: pprint hiện bao bọc các đối tượng byte dài và bytearrays.
bpo-22687: Đã sửa một số trường hợp góc trong việc ngắt từ trong tetxtwrap. Loại bỏ độ phức tạp bậc hai trong việc ngắt các từ dài.
bpo-4727: Mô-đun sao chép hiện sử dụng giao thức dưa chua 4 (PEP 3154) và hỗ trợ sao chép các phiên bản của các lớp có phương thức __new__ chỉ lấy các đối số từ khóa.
bpo-23491: Đã thêm mô-đun zipapp để hỗ trợ tạo kho lưu trữ tệp zip thực thi của mã Python. Đã đăng ký các tiện ích mở rộng ".pyz" và ".pyzw" trên Windows cho các kho lưu trữ này (PEP 441).
bpo-23657: Tránh kiểm tra rõ ràng str trong zipapp, thêm hỗ trợ cho các đối tượng pathlib.Path làm đối số.
bpo-23688: Đã thêm hỗ trợ cho các đối tượng giống byte tùy ý và tránh sao chép chế độ xem bộ nhớ không cần thiết trong gzip.GzipFile.write(). Bản vá gốc của Wolfgang Maier.
bpo-23252: Đã thêm hỗ trợ ghi tệp ZIP vào các luồng không thể tìm kiếm được.
bpo-23647: Tăng MAXLINE của imaplib để phù hợp với kích thước hộp thư hiện đại.
bpo-23539: Nếu nội dung là Không, http.client.HTTPConnection.request hiện đặt Độ dài nội dung thành 0 cho các tiêu đề PUT, POST và PATCH để tránh lỗi 411 từ một số máy chủ web.
bpo-22351: Hàm tạo nntplib.NNTP không còn để kết nối và ổ cắm mở cho đến khi trình thu gom rác dọn sạch chúng. Bản vá của Martin Panter.
bpo-23704: các đối tượng Collections.deque() hiện hỗ trợ các phương thức cho Index(), Insert() và Copy(). Điều này cho phép đăng ký deque dưới dạng MutableSequence và cải thiện khả năng thay thế của chúng cho danh sách.
bpo-23715:
signal.sigwaitinfo()vàsignal.sigtimedwait()hiện được thử lại khi bị gián đoạn bởi tín hiệu không có trong tham số sigset, nếu trình xử lý tín hiệu không đưa ra ngoại lệ. signal.sigtimedwait() tính toán lại thời gian chờ bằng đồng hồ đơn điệu khi thử lại.bpo-23001: Rất ít hàm trong mô-đun mmap, ossaudiodev, socket, ssl và codec vốn chỉ chấp nhận đối tượng giống byte chỉ đọc giờ đây cũng chấp nhận đối tượng giống byte có thể ghi.
bpo-23646: Nếu time.sleep() bị gián đoạn bởi tín hiệu, chế độ ngủ hiện được thử lại với độ trễ được tính toán lại, trừ khi trình xử lý tín hiệu đưa ra một ngoại lệ (PEP 475).
bpo-23136: _strptime hiện xử lý thống nhất tất cả các ngày trong tuần 0, kể cả ngày 30 tháng 12 năm trước. Dựa trên bản vá của Jim Carroll.
bpo-23700: Iterator của NamedTemporaryFile hiện giữ tham chiếu đến phiên bản NamedTemporaryFile. Bản vá của Bohuslav Kabrda.
bpo-22903: Trường hợp thử nghiệm giả được tạo bởi unittest.loader khi không nhập được mô-đun thử nghiệm hiện có thể được chọn.
bpo-22181: Trên Linux, os.urandom() hiện sử dụng lệnh gọi tòa nhà getrandom() mới nếu có, lệnh gọi tòa nhà được giới thiệu trong nhân Linux 3.17. Nó đáng tin cậy hơn và an toàn hơn vì nó tránh được sự cần thiết của bộ mô tả tệp và đợi cho đến khi kernel có đủ entropy.
bpo-2211: Đã cập nhật cách triển khai lớp http.cookies.Morsel. Việc đặt trực tiếp khóa, giá trị và coded_value thuộc tính hiện không được dùng nữa. update() và setdefault() bây giờ chuyển đổi và kiểm tra các khóa. Việc so sánh sự bằng nhau bây giờ tính đến khóa, giá trị và giá trị được mã hóa. copy() bây giờ trả về Morsel chứ không phải dict. Repr() hiện chứa tất cả các thuộc tính. Tối ưu hóa kiểm tra khóa và giá trị trích dẫn. Đã thêm các bài kiểm tra mới. Bản vá gốc của Demian Brecht.
bpo-18983: Cho phép lựa chọn đơn vị đầu ra theo thời gian. Bản vá của Julian Gindi.
bpo-23631: Sửa traceback.format_list khi traceback bị thay đổi.
bpo-23568: Thêm hỗ trợ rdivmod cho các đối tượng MagicMock(). Bản vá của Håkan Lövdahl.
bpo-2052: Thêm tham số bộ ký tự vào HtmlDiff.make_file().
bpo-23668: Hỗ trợ os.truncate và os.ftruncate trên Windows.
bpo-23138: Đã sửa lỗi phân tích cú pháp cookie không có khóa hoặc giá trị trong cookiejar. Bản vá của Demian Brecht.
bpo-23051: các phương thức multiprocessing.Pool imap() và imap_unordered() hiện xử lý các ngoại lệ do trình vòng lặp đưa ra. Bản vá của Alon Diamant và Davin Potts.
bpo-23581: Thêm hỗ trợ matmul cho MagicMock. Bản vá của Håkan Lövdahl.
bpo-23566: các hàm Enable(), register(), dump_traceback() và dump_traceback_later() của trình xử lý lỗi hiện chấp nhận các bộ mô tả tệp. Bản vá của Wei Wu.
bpo-22928: Đã tắt tính năng chèn tiêu đề HTTP trong http.client. Bản vá gốc của Demian Brecht.
bpo-23615: Các mô-đun bz2, tarfile và tokenize hiện có thể được tải lại bằng imp.reload(). Bản vá của Thomas Kluyver.
bpo-23605: os.walk() hiện gọi os.scandir() thay vì os.listdir(). Việc sử dụng os.scandir() làm giảm số lượng lệnh gọi tới os.stat(). Bản vá đầu tiên được viết bởi Ben Hoyt.
xây dựng¶
bpo-23585: thực hiện kiểm tra bản vá sẽ đảm bảo trình thông dịch được xây dựng.
Kiểm tra¶
Công cụ/Bản trình diễn¶
bpo-22826: Kết quả của open() trong Tools/freeze/bkfile.py hiện tương thích tốt hơn với các tệp thông thường (đặc biệt là giờ đây nó hỗ trợ giao thức quản lý ngữ cảnh).
Python 3.5.0 alpha 2¶
Release date: 2015-03-09
Cốt lõi và nội dung¶
bpo-23571: PyObject_Call() và PyCFunction_Call() hiện đưa ra SystemError nếu một hàm trả về kết quả và đưa ra một ngoại lệ. SystemError bị xích vào ngoại lệ trước đó.
Thư viện¶
bpo-22524: Hàm os.scandir() mới, một phần của PEP 471: "hàm os.scandir() -- một trình vòng lặp thư mục tốt hơn và nhanh hơn". Bản vá được viết bởi Ben Hoyt.
bpo-23103: Giảm mức tiêu thụ bộ nhớ của IPv4Address và IPv6Address.
bpo-21793: BaseHTTPRequestHandler lại ghi lại mã phản hồi dưới dạng số, không phải dưới dạng enum được xâu chuỗi. Bản vá của Demian Brecht.
bpo-23476: Trong mô-đun ssl, bật cờ X509_V_FLAG_TRUSTED_FIRST của OpenSSL trên các cửa hàng chứng chỉ khi có sẵn.
bpo-23576: Tránh tình trạng trì trệ trong quá trình đọc SSL khi đã đạt đến EOF trong lớp SSL nhưng kết nối cơ bản chưa bị đóng.
bpo-23504: Đã thêm __all__ vào mô-đun loại.
bpo-23563: Tối ưu hóa các chức năng tiện ích trong urllib.parse.
bpo-7830: Làm phẳng các functools.partial lồng nhau.
bpo-20204: Đã thêm thuộc tính __module__ vào các lớp _tkinter.
bpo-19980: Cải thiện trợ giúp() cho các chuỗi không được nhận dạng. help('') hiện hiển thị trợ giúp trên str. help('help') hiện hiển thị trợ giúp trên help(). Bản vá gốc của Mark Lawrence.
bpo-23521: Đã sửa lỗi triển khai phân chia timedelta bằng python thuần. Đã loại bỏ OverflowError khỏi
timedelta * floatđối với một số float; Đã sửa lỗi làm tròn trong phép chia đúng timedelta.bpo-21619: Các đối tượng Popen không còn rời khỏi zombie sau khi thoát ra trong câu lệnh with nếu đường ống bị hỏng. Bản vá của Martin Panter.
bpo-22936: Cho phép hiển thị các biến cục bộ trong traceback cho cả mô-đun traceback và unittest.
bpo-15955: Thêm tùy chọn giới hạn kích thước đầu ra trong bz2.decompress(). Bản vá của Nikolaus Rath.
bpo-6639: Các hàm rùa cấp mô-đun không còn tăng TclError sau khi đóng cửa sổ.
bpo-814253: Tham chiếu nhóm và tham chiếu nhóm có điều kiện hiện hoạt động trong các xác nhận nhìn phía sau trong biểu thức chính quy. (Xem thêm: bpo-9179)
bpo-23215: Codec nhiều byte với trình xử lý lỗi tùy chỉnh bỏ qua các lỗi tiêu tốn quá nhiều bộ nhớ và gây ra lỗi SystemError hoặc MemoryError. Bản vá gốc của Aleksi Torhamo.
bpo-5700: io.FileIO() được gọi là tuôn ra() sau khi đóng tệp. Flush() không được gọi trong close() nếu closefd=False.
bpo-23374: Đã sửa lỗi pydoc với các tệp không phải ASCII khi mã hóa thiết bị xuất chuẩn khác với mã hóa hệ thống tệp (ví dụ: trên Mac OS).
bpo-23481: Xóa RC4 khỏi danh sách mật mã mặc định của mô-đun SSL.
bpo-21548: Sửa lỗi pydoc.synopsis() và pydoc.apropos() trên các mô-đun có chuỗi tài liệu trống.
bpo-22885: Đã khắc phục lỗ hổng thực thi mã tùy ý trong mô-đun dbm.dumb. Bản vá gốc của Claudiu Popa.
bpo-23239: ssl.match_hostname() hiện hỗ trợ khớp địa chỉ IP.
bpo-23146: Khắc phục việc xử lý sai đường dẫn Windows tuyệt đối bằng dấu gạch chéo lên trong pathlib.
bpo-23096: Biểu diễn Pickle của các float với giao thức 0 hiện giống nhau cho cả quá trình triển khai Python và C.
bpo-19105: pprint hiện sử dụng không gian trống ở bên phải hiệu quả hơn.
bpo-14910: Thêm tham số allow_abbrev vào argparse.ArgumentParser. Bản vá của Jonathan Paugh, Steven Bethard, paul j3 và Daniel Eriksson.
bpo-21717: tarfile.open() hiện hỗ trợ chế độ 'x' (tạo độc quyền).
bpo-23344: marshal.dumps() hiện nhanh hơn trung bình 20-25%.
bpo-20416: marshal.dumps() với giao thức 3 và 4 hiện nhanh hơn trung bình 40-50%.
bpo-23421: Đã sửa lỗi nén trong tarfile CLI. Bản vá của wdv4758h.
bpo-23367: Khắc phục lỗi tràn có thể xảy ra trong mô-đun unicodedata.
bpo-23361: Khắc phục lỗi tràn có thể xảy ra trong mã tạo quy trình con của Windows.
logging.handlers.QueueListener hiện nhận một đối số từ khóa tôn trọng_handler_level, nếu được đặt thành True, sẽ chuyển thông báo đến các trình xử lý có tính đến các cấp độ xử lý.
bpo-19705: Turtledemo hiện có bản demo thuật toán sắp xếp trực quan. Bản vá gốc từ Jason Yeo.
bpo-23801: Khắc phục sự cố trong đó cgi.FieldStorage không phải lúc nào cũng bỏ qua toàn bộ phần mở đầu cho nội dung nhiều phần.
xây dựng¶
C API¶
bpo-20204: Cảnh báo không dùng nữa hiện đã được đưa ra đối với các loại dựng sẵn không có thuộc tính __module__.
cửa sổ¶
Python 3.5.0 alpha 1¶
Release date: 2015-02-08
Cốt lõi và nội dung¶
bpo-23285: xử lý PEP 475 - EINTR.
bpo-22735: Khắc phục nhiều trường hợp khó khăn (bao gồm cả sự cố) liên quan đến việc triển khai mro() tùy chỉnh.
bpo-22896: Tránh sử dụng PyObject_AsCharBuffer(), PyObject_AsReadBuffer() và PyObject_AsWriteBuffer().
bpo-21295: Hoàn nguyên một số thay đổi (bpo-16795) thành số dòng AST và độ lệch cột cấu thành hồi quy.
bpo-22986: Cho phép thay đổi __class__ của một đối tượng giữa kiểu động và kiểu tĩnh trong một số trường hợp.
bpo-15859: PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() và PyUnicode_EncodeCodePage() hiện đưa ra một ngoại lệ nếu đối tượng không phải là đối tượng Unicode. Đối với PyUnicode_EncodeFSDefault(), điều này đã xảy ra trên các nền tảng khác ngoài Windows. Bản vá được viết bởi Campbell Barton.
bpo-21408: __ne__() mặc định hiện trả về NotImplemented nếu __eq__() trả về NotImplemented. Bản vá gốc của Martin Panter.
bpo-23321: Đã khắc phục sự cố trong str.decode() khi trình xử lý lỗi trả về chuỗi thay thế dài hơn dữ liệu đầu vào không đúng định dạng.
bpo-22286: Trình xử lý lỗi "dấu gạch chéo ngược" hiện hoạt động với giải mã và dịch.
bpo-23253: Trì hoãn tải ShellExecute[AW] trong os.startfile để giảm chi phí khởi động trên Windows.
bpo-22038: pyatomic.h hiện sử dụng các hàm tích hợp stdatomic.h hoặc GCC để truy cập bộ nhớ nguyên tử nếu có. Bản vá được viết bởi Vitor de Lima và Đền Gustavo.
bpo-20284: Đã thêm định dạng %-interpolation (còn gọi là printf) cho byte và bytearray.
bpo-23048: Sửa lỗi nhảy ra khỏi vòng lặp while vô hạn trong pdb.
bpo-20335: hàm tạo byte hiện tăng TypeError khi mã hóa hoặc lỗi được chỉ định bằng đối số không phải chuỗi. Dựa trên bản vá của Renaud Blanch.
bpo-22834: Nếu thư mục làm việc hiện tại được đặt thành thư mục không tồn tại thì quá trình nhập sẽ không gây ra FileNotFoundError nữa.
bpo-22869: Di chuyển mã khởi động và tắt trình thông dịch sang mô-đun pylifecycle.c chuyên dụng mới
bpo-22847: Cải thiện hiệu quả bộ nhớ đệm của phương thức.
bpo-22335: Khắc phục sự cố khi cố gắng phóng to bytearray thành 0x7fffffff byte trên nền tảng 32 bit.
bpo-22653: Khắc phục lỗi xác nhận trong chế độ gỡ lỗi khi thực hiện chèn lệnh vào lại trong chế độ gỡ lỗi.
bpo-22643: Sửa lỗi tràn số nguyên trong các thao tác viết hoa Unicode (viết hoa, viết thường, tiêu đề, viết hoa hoán đổi, viết hoa chữ thường).
bpo-17636: Nhập khẩu tuần hoàn liên quan đến nhập khẩu tương đối hiện được hỗ trợ.
bpo-22604: Sửa lỗi xác nhận trong chế độ gỡ lỗi khi chia số phức cho (nan+0j).
bpo-21052: Không tăng ImportWarning khi sys.path_hooks hoặc sys.meta_path được đặt thành Không.
bpo-16518: Sử dụng 'đối tượng giống byte được yêu cầu' trong các thông báo lỗi trước đây sử dụng từ "'x' khó hiểu hơn nhiều không hỗ trợ giao thức bộ đệm.
bpo-22470: Đã khắc phục sự cố tràn số nguyên trong trình xử lý lỗi "backslashreplace", "xmlcharrefreplace" và "surrogatepass".
bpo-22540: tăng tốc
PyObject_IsInstancevàPyObject_IsSubclasstrong trường hợp phổ biến là đối số thứ hai có siêu dữ liệutype.bpo-18711: Thêm hàm
PyErr_FormatVmới, tương tự nhưPyErr_Formatnhưng chấp nhận đối sốva_list.bpo-22520: Khắc phục lỗi kiểm tra tràn khi tạo đại diện của đối tượng unicode.
bpo-22519: Sửa lỗi kiểm tra tràn trong PyBytes_Repr.
bpo-22518: Khắc phục sự cố tràn số nguyên trong mã hóa latin-1.
bpo-16324: tham số _charset của MIMEText hiện cũng chấp nhận các phiên bản email.charset.Charset. Bản vá đầu tiên của Claude Paroz.
bpo-1764286: Sửa Inspection.getsource() để hỗ trợ các chức năng được trang trí. Bản vá của Claudiu Popa.
bpo-18554: os.__all__ bao gồm các hàm posix.
bpo-21391: Sử dụng os.path.abspath trong mô-đun tắt.
bpo-11471: tránh tạo lệnh JUMP_FORWARD ở cuối khối if nếu không có mệnh đề khác. Bản vá gốc của Eugene Toder.
bpo-22215: Bây giờ ValueError được nâng lên thay vì TypeError khi đối số str hoặc byte chứa ký tự hoặc byte rỗng không được phép.
bpo-22258: Sửa hàm nội bộ set_inheritable() trên Illumos. Nền tảng này hiển thị chức năng
ioctl(FIOCLEX), nhưng gọi nó không thành công với errno là ENOTTY: "ioctl không phù hợp cho thiết bị". set_inheritable() bây giờ quay trở lạifcntl()chậm hơn (F_GETFDvà sau đó làF_SETFD).bpo-21389: Hiển thị __qualname__ của hàm cơ bản trong phần lặp của phương thức bị ràng buộc.
bpo-22206: Sử dụng pthread, PyThread_create_key() hiện đặt errno thành ENOMEM và trả về -1 (lỗi) khi tràn số nguyên.
bpo-20184: Tính năng xem xét nội tâm chữ ký dựa trên Argument Clinic được thêm vào cho 30 hàm dựng sẵn.
bpo-22116: Các hàm và phương thức C (thuộc loại 'buildin_function_or_method') hiện có thể được giới thiệu yếu. Bản vá của Wei Wu.
bpo-22077: Cải thiện thông báo lỗi chỉ mục cho bytearray, byte, danh sách và bộ dữ liệu bằng cách thêm 'hoặc lát'. Đã thêm ', không phải <typename>' cho mảng phụ. Bản vá gốc của Claudiu Popa.
bpo-20179: Áp dụng Argument Clinic cho byte và bytearray. Bản vá của Tal Einat.
bpo-22082: Xóa các chuỗi nội bộ trong slotdefs.
Nâng cấp cơ sở dữ liệu Unicode lên Unicode 7.0.0.
bpo-21897: Khắc phục sự cố với thuộc tính f_locals với các biến đóng khi frame.clear() được gọi.
bpo-21205: Thêm thuộc tính
__qualname__mới vào trình tạo, tên đủ điều kiện và sử dụng nó trong biểu diễn trình tạo (repr(gen)). Tên mặc định của trình tạo (thuộc tính__name__) hiện được lấy từ hàm thay vì mã. Sử dụnggen.gi_code.co_nameđể lấy tên mã.bpo-21669: Với sự hỗ trợ của chẩn đoán trong SyntaxError.__init__, trình phân tích cú pháp hiện cố gắng tạo ra các thông báo lỗi có ý nghĩa hơn (hoặc ít nhất là thân thiện hơn với công cụ tìm kiếm) khi sử dụng "exec" và "print" làm câu lệnh.
bpo-21642: Trong biểu thức if-else có điều kiện, cho phép một số nguyên được viết không có khoảng cách giữa chính nó và từ khóa
else(ví dụ:True if 42else False) là cú pháp hợp lệ.bpo-21523: Khắc phục tình trạng tính toán quá bi quan về hiệu ứng ngăn xếp của một số opcode trong trình biên dịch. Điều này cũng khắc phục vấn đề đáng chú ý về thời gian biên dịch bậc hai khi biên dịch mã với số lượng lớn toán tử "và" và "hoặc".
bpo-21418: Khắc phục sự cố trong hàm dựng sẵn super() khi được gọi mà không có đối số và không có khung hiện tại (ví dụ: Python nhúng).
bpo-21425: Sửa lỗi xóa các luồng tiêu chuẩn trong trình thông dịch tương tác.
bpo-21435: Trong một số trường hợp hiếm hoi, khi chạy công cụ hoàn thiện trên các đối tượng trong thùng rác tuần hoàn, việc vô hiệu hóa con trỏ xấu có thể xảy ra do một lỗ hổng nhỏ trong logic lặp bên trong.
bpo-21377: PyBytes_Concat() hiện cố gắng ghép nối tại chỗ khi đối số đầu tiên có số lượng tham chiếu là 1. Bản vá của Nikolaus Rath.
bpo-20355: -W tùy chọn dòng lệnh hiện có mức độ ưu tiên cao hơn biến môi trường PYTHONWARNINGS. Bản vá của Arfrever.
bpo-21274: Xác định PATH_MAX cho GNU/Hurd trong Python/pythonrun.c.
bpo-20904: Hỗ trợ cài đặt độ chính xác FPU trên m68k.
bpo-21209: Khắc phục việc gửi các bộ dữ liệu tới các đối tượng trình tạo tùy chỉnh bằng cú pháp sinh lợi.
bpo-21193: pow(a, b, c) hiện tăng ValueError thay vì TypeError khi b âm. Bản vá của Josh Rosenberg.
bpo-21176: PEP 465: Thêm toán tử '@' để nhân ma trận.
bpo-21134: Sửa lỗi segfault khi str được gọi trên đối tượng UnicodeEncodeError, UnicodeDecodeError hoặc UnicodeTranslateError chưa được khởi tạo.
bpo-19537: Sửa lỗi căn chỉnh PyUnicode_DATA() dưới m68k. Bản vá của Andreas Schwab.
bpo-20929: Thêm kiểu truyền để tránh dịch chuyển số âm.
bpo-20731: Định vị chính xác trong tệp mã nguồn ngay cả khi chúng được mở ở chế độ văn bản. Bản vá của Serhiy Storchaka.
bpo-20637: Tính năng chia sẻ khóa hiện cũng hoạt động đối với từ điển của các lớp con. Bản vá của Peter Ingebretson.
bpo-8297: Các thuộc tính bị thiếu trong mô-đun hiện bao gồm tên mô-đun trong văn bản lỗi. Bản vá gốc của ysj.ray.
bpo-19995: %c, %o, %x và %X hiện tăng TypeError trên đầu vào không nguyên.
bpo-19655: Trình phân tích cú pháp ASDL - được sử dụng trong quá trình xây dựng để tạo mã quản lý AST Python trong C - đã được viết lại. Trình phân tích cú pháp mới độc lập và không cần phải mang theo thư viện trình tạo trình phân tích cú pháp spark.py; spark.py đã bị xóa khỏi cơ sở nguồn.
bpo-12546: Cho phép sử dụng
\x00làm ký tự điền khi sử dụng các phương thức str, int, float và __format__ phức tạp.bpo-20480: Thêm ipaddress.reverse_pointer. Bản vá của Leon Weber.
bpo-13598: Sửa đổi string.Formatter để hỗ trợ tự động đánh số các trường thay thế. Bây giờ nó khớp với hành vi của str.format() về vấn đề này. Các bản vá của Phil Elson và Ramchandra Apte.
bpo-8931: Tạo một ngoại lệ cho định dạng thay thế ('#') cho loại 'c'. Trong các phiên bản trước 3.5, '#' với 'c' không có hiệu lực. Bây giờ xác định nó là một lỗi. Bản vá của Torsten Landschoff.
bpo-23165: Thực hiện kiểm tra tràn trước khi cấp phát bộ nhớ trong hàm _Py_char2wchar.
Thư viện¶
bpo-23399: pyvenv tạo liên kết tượng trưng tương đối nếu có thể.
bpo-20289: cgi.FieldStorage() hiện hỗ trợ giao thức quản lý ngữ cảnh.
bpo-13128: In tiêu đề phản hồi cho các yêu cầu CONNECT khi debuglevel > 0. Bản vá của Demian Brecht.
bpo-15381: Tối ưu hóa io.BytesIO để thực hiện ít phân bổ và sao chép hơn.
bpo-22818: Việc tách một mẫu có thể khớp với một chuỗi trống hiện sẽ đưa ra cảnh báo. Các mẫu chỉ có thể khớp với các chuỗi trống hiện bị từ chối.
bpo-23099: Việc đóng io.BytesIO với bộ đệm đã xuất hiện bị từ chối để tránh làm hỏng bộ đệm đã xuất.
bpo-23326: Đã xóa triển khai __ne__. Vì việc sửa lỗi triển khai __ne__ mặc định trong bpo-21408 nên chúng trở nên dư thừa.
bpo-23363: Khắc phục lỗi tràn có thể xảy ra trong itertools.permutations.
bpo-23364: Khắc phục lỗi tràn có thể xảy ra trong itertools.product.
bpo-23366: Đã sửa lỗi tràn số nguyên có thể xảy ra trong itertools.combinations.
bpo-23369: Đã sửa lỗi tràn số nguyên có thể xảy ra trong _json.encode_basestring_ascii.
bpo-23353: Khắc phục việc xử lý ngoại lệ của trình tạo trong PyEval_EvalFrameEx(). Khi nhập, hãy lưu hoặc hoán đổi trạng thái ngoại lệ ngay cả khi PyEval_EvalFrameEx() được gọi với Throwflag=0. Khi thoát, trạng thái ngoại lệ hiện luôn được khôi phục hoặc hoán đổi, không chỉ nếu tại sao là WHY_YIELD hoặc WHY_RETURN. Bản vá được đồng sáng tác với Antoine Pitrou.
bpo-14099: Đã khôi phục hỗ trợ ghi tệp ZIP vào các luồng có thể xác định được nhưng không thể tìm kiếm được.
bpo-14099: Việc ghi vào ZipFile và đọc nhiều ZipExtFiles hiện là luồng an toàn.
bpo-19361: bộ giải mã JSON hiện tăng JSONDecodeError thay vì ValueError.
bpo-18518: timeit hiện từ chối các câu lệnh không thể được biên dịch bên ngoài hàm hoặc vòng lặp (ví dụ: "return" hoặc "break").
bpo-23094: Đã sửa lỗi đường đọc có khung trong quá trình triển khai dưa chua bằng Python.
bpo-23268: Đã sửa lỗi khi so sánh các lớp ipaddress.
bpo-21408: Đã xóa các triển khai không chính xác của __ne__() không trả về NotImplemented nếu __eq__() trả về NotImplemented. __ne__() mặc định hiện hoạt động chính xác.
bpo-19996:
email.feedparser.FeedParserhiện xử lý các tiêu đề (không đúng định dạng) mà không cần khóa thay vì giả sử nội dung đã bắt đầu.bpo-20188: Hỗ trợ đàm phán giao thức lớp ứng dụng (ALPN) trong mô-đun ssl.
bpo-23133: Việc chọn các đối tượng ipaddress giờ đây tạo ra sự thể hiện nhỏ gọn và di động hơn.
bpo-23248: Cập nhật mã lỗi ssl từ git master OpenSSL mới nhất.
bpo-23266: Triển khai ipaddress.collapse_addresses() nhanh hơn nhiều khi có nhiều địa chỉ không liên tiếp.
bpo-23098: Dev_t 64-bit hiện được hỗ trợ trong mô-đun os.
bpo-21817: Khi một ngoại lệ được đưa ra trong một tác vụ được gửi tới ProcessPoolExecutor, truy nguyên từ xa hiện được hiển thị trong quy trình gốc. Bản vá của Claudiu Popa.
bpo-15955: Thêm tùy chọn giới hạn kích thước đầu ra khi giải nén dữ liệu LZMA. Bản vá của Nikolaus Rath và Martin Panter.
bpo-23250: Trong mô-đun http.cookies, hãy viết hoa "HttpOnly" và "Secure" vì chúng được viết theo tiêu chuẩn.
bpo-23063: Trong lệnh kiểm tra của distutils, sửa lỗi phân tích cú pháp reST bằng mã hoặc chỉ thị khối mã.
bpo-23209: selectors.BaseSelector.get_key() hiện tăng RuntimeError nếu bộ chọn bị đóng. Và selectors.BaseSelector.close() hiện xóa tham chiếu nội bộ của nó tới ánh xạ bộ chọn để phá vỡ chu trình tham chiếu. Bản vá đầu tiên được viết bởi Martin Richard. (Xem thêm: bpo-23225)
bpo-17911: Cung cấp cách tạo linecache cho mô-đun PEP-302 mà không thực sự tải mã.
bpo-17911: Cung cấp một đối tượng mới API cho truy nguyên, bao gồm khả năng không tra cứu các dòng cho đến khi truy nguyên thực sự được hiển thị mà không có bất kỳ dấu vết nào của các đối tượng ban đầu được giữ nguyên.
bpo-19777: Cung cấp phương thức lớp home() trên các đối tượng Path. Đóng góp của Victor Salgado và Mayank Tripathi.
bpo-23206: Tạo
json.dumps(..., ensure_ascii=False)nhanh như trường hợp mặc định củaensure_ascii=True. Bản vá của Naoki Inada.bpo-23185: Thêm hằng số math.inf và math.nan.
bpo-23186: Thêm ssl.SSLObject.shared_ciphers() và ssl.SSLSocket.shared_ciphers() để tìm nạp danh sách mật mã của khách hàng được gửi khi bắt tay.
bpo-23143: Loại bỏ khả năng tương thích với OpenSSL cũ hơn 0.9.8.
bpo-23132: Cải thiện hiệu suất và hỗ trợ xem xét nội tâm của các phương pháp so sánh được tạo bởi functool.total_ordering.
bpo-19776: Thêm phương thức Expanduser() trên đối tượng Path.
bpo-23112: Sửa SimpleHTTPServer để mang chuỗi truy vấn và đoạn chính xác khi nó chuyển hướng để thêm dấu gạch chéo ở cuối.
bpo-21793: Đã thêm enum http.HTTStatus (tức là HTTPStatus.OK, HTTPStatus.NOT_FOUND). Bản vá của Demian Brecht.
bpo-23093: Trong io, mô-đun cho phép thực hiện nhiều thao tác hơn trên các luồng riêng biệt.
bpo-23111: Trong ftplib, đặt ssl.PROTOCOL_SSLv23 làm phiên bản giao thức mặc định.
bpo-22585: Trên OpenBSD 5.6 trở lên, os.urandom() hiện gọi getentropy(), thay vì đọc/dev/urandom, để nhận byte giả ngẫu nhiên.
bpo-19104: pprint hiện tạo ra đầu ra có thể đánh giá được cho các chuỗi được gói.
bpo-23071: Đã thêm tên bị thiếu vào codec.__all__. Bản vá của Martin Panter.
bpo-22783: Pickling hiện sử dụng opcode NEWOBJ thay vì opcode NEWOBJ_EX nếu có thể.
bpo-15513: Đã thêm triển khai __sizeof__ cho các lớp dưa chua.
bpo-19858: Pickletools.optizes() hiện đã biết về mã hoạt động MEMOIZE, có thể tạo ra kết quả nhỏ gọn hơn và không còn tạo ra kết quả không hợp lệ nếu dữ liệu đầu vào chứa mã hoạt động MEMOIZE cùng với mã hoạt động PUT hoặc BINPUT.
bpo-22095: Đã sửa lỗi HTTPConnection.set_tunnel với cổng mặc định. Giá trị cổng trong tiêu đề máy chủ được đặt thành "Không". Bản vá của Demian Brecht.
bpo-23016: Cảnh báo không còn tạo ra AttributionError khi chương trình chạy với pythonw.exe.
bpo-21775: Shutil.copytree(): khắc phục sự cố khi sao chép vào VFAT. Trình xử lý ngoại lệ giả định rằng các đối tượng OSError luôn có thuộc tính 'winerror'. Trường hợp đó không phải như vậy, do đó, chính trình xử lý ngoại lệ đã gây ra AttributionError khi chạy trên Linux (và có lẽ là bất kỳ hệ điều hành không phải Windows nào khác). Bản vá của Greg Ward.
bpo-1218234: Sửa lỗi kiểm tra.getsource() để tải nguồn cập nhật của mô-đun được tải lại. Bản vá đầu tiên của Berker Peksag.
bpo-21740: Hỗ trợ các lệnh gọi được gói trong doctest. Bản vá của Claudiu Popa.
bpo-23009: Đảm bảo selectors.EpollSelector.select() hoạt động khi không có FD nào được đăng ký.
bpo-22959: Trong hàm tạo của http.client.HTTPSConnection, ưu tiên thuộc tính check_hostname của ngữ cảnh hơn tham số check_hostname.
bpo-22696: Thêm chức năng
sys.is_finalizing()để biết về việc tắt trình thông dịch.bpo-16043: Thêm giới hạn mặc định cho lượng dữ liệu xmlrpclib.gzip_decode sẽ trả về. Điều này giải quyết CVE 2013-1753.
bpo-14099: ZipFile.open() không còn mở lại tệp cơ bản nữa. Các đối tượng được trả về bởi ZipFile.open() giờ đây có thể hoạt động độc lập với ZipFile ngay cả khi ZipFile được tạo bằng cách chuyển vào một đối tượng giống như tệp làm đối số đầu tiên cho hàm tạo.
bpo-22966: Sửa lỗi ghi đè tên tệp __pycache__ pyc khi pyc_compile được yêu cầu biên dịch tệp nguồn chứa nhiều dấu chấm trong tên tệp nguồn.
bpo-21971: Cập nhật tài liệu Turtledemo và thêm mô-đun vào chỉ mục.
bpo-21032: Đã sửa lỗi rò rỉ ổ cắm nếu HTTPConnection.getresponse() không thành công. Bản vá gốc của Martin Panter.
bpo-22407: Không còn sử dụng cờ re.LOCALE với mẫu str hoặc re.ASCII. Nó đã được làm việc mới hơn.
bpo-22902: Lệnh "ip" hiện được sử dụng trên Linux để xác định địa chỉ MAC trong uuid.getnode(). Bản vá của Bruno Cauet.
bpo-22960: Thêm đối số ngữ cảnh vào hàm tạo xmlrpclib.ServerProxy.
bpo-22389: Thêm contextlib.redirect_stderr().
bpo-21356: Đặt ssl.RAND_egd() tùy chọn để hỗ trợ LibreSSL. Tính khả dụng của chức năng được kiểm tra trong quá trình biên dịch. Bản vá được viết bởi Bernard Spil.
bpo-22915: Trình phân tích cú pháp SAX hiện hỗ trợ các tệp được mở bằng bộ mô tả tệp hoặc đường dẫn byte.
bpo-22609: Các hàm tạo và phương thức cập nhật của các lớp ánh xạ trong mô-đun bộ sưu tập hiện chấp nhận đối số từ khóa self.
bpo-22940: Thêm readline.append_history_file.
bpo-19676: Đã thêm trình xử lý lỗi "namereplace".
bpo-22788: Thêm tham số context vào log.handlers.HTTPHandler.
bpo-22921: Cho phép SSLContext lấy tham số hostname ngay cả khi OpenSSL không hỗ trợ SNI.
bpo-22894: TestCase.subTest() sẽ khiến bộ thử nghiệm bị dừng khi ở chế độ không nhanh, ngay cả khi không có lỗi.
bpo-22796: Việc phân tích cú pháp cookie HTTP hiện nghiêm ngặt hơn để bảo vệ khỏi các cuộc tấn công tiêm nhiễm tiềm ẩn.
bpo-22370: Khả năng phát hiện Windows trong pathlib hiện mạnh mẽ hơn.
bpo-22841: Từ chối coroutine trong asyncio add_signal_handler(). Bản vá của Ludovic.Gasc.
bpo-19494: Đã thêm urllib.request.HTTPBasicPriorAuthHandler. Bản vá của Matej Cepl.
bpo-22578: Đã thêm thuộc tính vào lớp re.error.
bpo-22849: Có thể sửa lỗi double free trong hàm tạo io.TextIOWrapper.
bpo-12728: Các ký tự Unicode khác nhau có cùng chữ hoa nhưng chữ thường khác nhau hiện được khớp trong các biểu thức chính quy không phân biệt chữ hoa chữ thường.
bpo-22821: Đã sửa lỗi fcntl() với đối số số nguyên trên nền tảng big-endian 64-bit.
bpo-21650: Thêm tùy chọn
--sort-keysvàojson.toolCLI.bpo-22824: Đã cập nhật định dạng đầu ra reprlib cho các bộ sử dụng các ký tự cố định. Bản vá được đóng góp bởi Berker Peksag.
bpo-22824: Đã cập nhật định dạng đầu ra reprlib cho mảng để hiển thị mảng trống mà không có danh sách trống không cần thiết. Được đề xuất bởi Serhiy Storchaka.
bpo-22406: Đã sửa lỗi codec uu_codec được chuyển sang 3.x không chính xác. Dựa trên bản vá của Martin Panter.
bpo-17293: uuid.getnode() hiện xác định địa chỉ MAC trên AIX bằng netstat. Dựa trên bản vá của Aivars Kalvāns.
bpo-22769: Đã sửa lỗi ttk.Treeview.tag_has() khi được gọi mà không có đối số.
bpo-22417: Xác minh chứng chỉ theo mặc định trong httplib (PEP 476).
bpo-22775: Đã sửa lỗi bỏ chọn http.cookies.SimpleCookie với giao thức 2 trở lên. Bản vá của Tim Graham.
bpo-22776: Đưa mã bị loại trừ vào phạm vi của khối thử trong SysLogHandler.emit().
bpo-22665: Thêm get_terminal_size và SameFileError bị thiếu vào Shutil.__all__.
bpo-6623: Xóa lớp Netrc không được dùng nữa trong mô-đun ftplib. Bản vá của Matt Chaput.
bpo-17381: Đã sửa lỗi xử lý các phạm vi không phân biệt chữ hoa chữ thường trong biểu thức thông thường.
bpo-22410: Các hàm cấp mô-đun trong mô-đun re hiện lưu vào bộ đệm các biểu thức chính quy phụ thuộc vào miền địa phương được biên dịch có tính đến miền địa phương.
bpo-22759: Các phương thức truy vấn trên pathlib.Path() (exists(), is_dir(), v.v.) hiện trả về Sai khi lệnh gọi chỉ số cơ bản tăng NotADirectoryError.
bpo-8876: distutils hiện quay lại sao chép tệp khi liên kết cứng không hoạt động. Điều này cho phép sử dụng với các hệ thống tệp đặc biệt như thư mục chia sẻ VirtualBox.
bpo-22217: Đã triển khai các bản sao của lớp trong mô-đun zipfile.
bpo-22457: Tôn vinh các Load_tests trong start_dir của khám phá.
bpo-18216: gettext hiện phát sinh lỗi khi tệp .mo có số phiên bản chính không được hỗ trợ. Bản vá của Aaron Hill.
bpo-13918: Cung cấp hàm locale.delocalize() có thể xóa định dạng số dành riêng cho miền địa phương khỏi một chuỗi đại diện cho một số mà không cần chuyển đổi nó thành một loại cụ thể. Bản vá của Cédric Krier.
bpo-22676: Làm cho quá trình chọn lọc các đối tượng chung không có thuộc tính __module__ bớt chậm hơn.
bpo-18853: Đã sửa lỗi ResourceWarning trong shlex.__nain__.
bpo-9351: Các giá trị mặc định được đặt bằng set_defaults trên trình phân tích cú pháp con argparse không còn bị bỏ qua khi cũng được đặt trên trình phân tích cú pháp gốc.
bpo-7559: tải thử nghiệm không đáng tin cậy nhất Lỗi nhập khẩu được báo cáo là lỗi nhập với ngoại lệ nhập chứ không phải là lỗi thuộc tính sau khi quá trình nhập không thành công.
bpo-19746: Cho phép kiểm tra các lỗi từ phát hiện nhỏ nhất mà không cần thực thi bộ kiểm tra. Thuộc tính
errorsmới trênTestLoadercho thấy các lỗi không nghiêm trọng này gặp phải trong quá trình khám phá.bpo-21991: Đặt thuộc tính 'thông số' tiêu đề của email.headerregistry ở chế độ chỉ đọc (MappingProxyType). Trước đây, từ điển có thể sửa đổi được nhưng một từ điển mới đã được tạo trên mỗi lần truy cập thuộc tính.
bpo-22638: SSLv3 hiện đã bị tắt trên toàn bộ thư viện chuẩn. Nó vẫn có thể được kích hoạt bằng cách khởi tạo SSLContext theo cách thủ công.
bpo-22641: Trong asyncio, ngữ cảnh SSL mặc định cho các kết nối máy khách hiện được tạo bằng ssl.create_default_context() để bảo mật mạnh mẽ hơn.
bpo-17401: Bao gồm closefd trong đại diện io.FileIO.
bpo-21338: Thêm chế độ im lặng để biên dịch. Các tham số im lặng của hàm biên dịch_{dir, tệp, path} hiện có giá trị đa cấp. Ngoài ra, tùy chọn -q của CLI hiện có giá trị đa cấp. Bản vá của Thomas Kluyver.
bpo-20152: Chuyển đổi mô-đun mảng và cmath sang Phòng khám đối số.
bpo-18643: Thêm socket.socketpair() trên Windows.
bpo-22435: Khắc phục sự cố rò rỉ bộ mô tả tệp khi liên kết máy chủ ổ cắm không thành công.
bpo-13096: Đã sửa lỗi segfault trong CTypes POINTER xử lý các giá trị lớn.
bpo-11694: Tăng lỗi chuyển đổi trong xdrlib như được ghi lại. Bản vá của Filip Gruszczyński và Claudiu Popa.
bpo-19380: Tối ưu hóa phân tích cú pháp các biểu thức chính quy.
bpo-1519638: Giờ đây, các nhóm chưa khớp được thay thế bằng các chuỗi trống trong re.sub() và re.subn().
bpo-18615: sndhdr.what/whathdr hiện trả về một bộ có tên.
bpo-22462: Sửa lỗi tạo khung giả của pyexpat để làm cho nó xuất hiện trong các dấu vết ngoại lệ.
bpo-21965: Thêm hỗ trợ cho SSL trong bộ nhớ vào mô-đun ssl. Bản vá của Geert Jansen.
bpo-21173: Sửa lỗi len() trên WeakKeyDictionary khi .clear() được gọi với một trình lặp còn hoạt động.
bpo-11866: Loại bỏ tình trạng chủng tộc trong việc tính toán tên cho các chủ đề mới.
bpo-21905: Tránh RuntimeError trong dưa chua.whichmodule() khi sys.modules bị đột biến trong khi lặp lại. Bản vá của Olivier Grisel.
bpo-11271: concurrent.futures.Executor.map() hiện lấy đối số chunksize để cho phép phân nhóm các tác vụ trong các tiến trình con và cải thiện hiệu suất của ProcessPoolExecutor. Bản vá của Dan O'Reilly.
bpo-21883: os.path.join() và os.path.relpath() hiện đưa ra TypeError với thông báo lỗi hữu ích hơn cho các loại đối số không được hỗ trợ hoặc không khớp.
bpo-22219: Mô-đun zipfile CLI hiện thêm các mục nhập cho các thư mục (bao gồm cả các thư mục trống) trong tệp ZIP.
bpo-22449: Trong ssl.SSLContext.load_default_certs, hãy tham khảo các biến môi trường SSL_CERT_DIR và SSL_CERT_FILE trên Windows.
bpo-22508: Biến email.__version__ đã bị xóa; mã email không còn được gửi riêng khỏi stdlib nữa và __version__ chưa được cập nhật trong một số bản phát hành.
bpo-20076: Đã thêm bí danh UTF-8 không có nguồn gốc vào bảng bí danh miền địa phương.
bpo-20079: Đã thêm các ngôn ngữ được hỗ trợ trong glibc 2.18 vào bảng bí danh ngôn ngữ.
bpo-20218: Đã thêm các phương thức tiện lợi read_text/write_text và read_bytes/write_bytes vào các đối tượng pathlib.Path.
bpo-22396: Trên nền tảng AIX 32-bit, không hiển thị os.posix_fadvise() hay os.posix_fallocate() vì nguyên mẫu của chúng trong tiêu đề hệ thống sai.
bpo-22517: Khi một đối tượng io.BufferedRWPair bị hủy cấp phát, hãy xóa các điểm yếu của nó.
bpo-22437: Số lượng nhóm chụp trong biểu thức chính quy không còn bị giới hạn ở 100.
bpo-17442: InteractiveInterpreter hiện hiển thị chuỗi truy nguyên đầy đủ trong phương thức showtraceback của nó, để khớp với trình thông dịch tương tác tích hợp sẵn.
bpo-23392: Đã thêm các bài kiểm tra cho marshal C API hoạt động với FILE*.
bpo-10510: các phương thức đăng ký và tải lên của distutils hiện sử dụng các phần cuối dòng CRLF tuân thủ tiêu chuẩn HTML.
bpo-9850: Đã sửa lỗi macpath.join() cho thành phần đầu tiên trống. Bản vá của Oleg Oshmyan.
bpo-5309: các lệnh build và build_ext của distutils hiện chấp nhận tùy chọn
-jđể cho phép xây dựng song song các mô-đun mở rộng.bpo-22448: Cải thiện việc dọn dẹp các tay cầm hẹn giờ đã hủy để ngăn chặn việc sử dụng bộ nhớ không liên kết. Bản vá của Joshua Moore-Oliva.
bpo-22427: TemporaryDirectory không còn cố gắng dọn dẹp hai lần khi được sử dụng trong câu lệnh with trong trình tạo.
bpo-22362: Số bát phân không rõ ràng bị cấm thoát ra khỏi phạm vi 0-0o377 trong các biểu thức thông thường.
bpo-20912: Bây giờ các thư mục được thêm vào tệp ZIP có thuộc tính thư mục Unix và MS-DOS chính xác.
bpo-21866: ZipFile.close() không còn ghi các bản ghi thư mục trung tâm ZIP64 nếu allowZip64 sai.
bpo-22278: Khắc phục sự cố liên kết url với các url tương đối, hiện tượng hồi quy được quan sát thấy sau khi các thay đổi đối với vấn đề22118 được gửi.
bpo-22415: Đã sửa lỗi đầu ra gỡ lỗi của opcode GROUPREF_EXISTS trong mô-đun re. Đã xóa dấu cách ở cuối trong đầu ra gỡ lỗi.
bpo-22423: Ngoại lệ chưa được xử lý trong chuỗi không còn gây ra lỗi thuộc tính chưa được xử lý khi sys.stderr là Không có.
bpo-21332: Đảm bảo rằng
bufsize=1trong subprocess.Popen() chọn bộ đệm dòng, thay vì bộ đệm khối. Bản vá của Akira Li.bpo-21091: Sửa lỗi API: email.message.EmailMessage.is_attachment hiện là một phương thức.
bpo-21079: Sửa email.message.EmailMessage.is_attachment để trả về kết quả chính xác khi tiêu đề có tham số cũng như giá trị.
bpo-22247: Thêm NNTPError vào nntplib.__all__.
bpo-22366: urllib.request.urlopen sẽ chấp nhận một đối tượng ngữ cảnh (SSLContext) làm đối số, sau đó sẽ được sử dụng cho kết nối HTTPS. Bản vá của Alex Gaynor.
bpo-4180: Sổ đăng ký cảnh báo hiện được đặt lại khi bộ lọc được sửa đổi.
bpo-22419: Giới hạn độ dài của yêu cầu HTTP đến trong máy chủ wsgiref ở mức 65536 byte và gửi mã lỗi 414 để có độ dài cao hơn. Bản vá được đóng góp bởi Devin Cook.
Phân tích cookie lỏng lẻo trong http.cookies có thể là vấn đề bảo mật khi kết hợp với việc xử lý cookie không chuẩn trong một số trình duyệt web. Báo cáo của Serge Bobrov.
bpo-20537: các phương thức ghi nhật ký hiện chấp nhận một phiên bản ngoại lệ cũng như một giá trị Boolean hoặc bộ ngoại lệ. Cảm ơn Yury Selivanov về bản vá.
bpo-22384: Một ngoại lệ trong cuộc gọi lại Tkinter không còn làm chương trình gặp sự cố khi chạy với pythonw.exe.
bpo-22168: Ngăn chặn lỗi thuộc tính rùa bằng Canvas không mặc định trên OS X.
bpo-21147: sqlite3 hiện đưa ra một ngoại lệ nếu yêu cầu chứa ký tự null thay vì cắt bớt ký tự đó. Dựa trên bản vá của Victor Stinner.
bpo-13968: Mô-đun toàn cầu hiện hỗ trợ tìm kiếm đệ quy trong các thư mục con bằng cách sử dụng mẫu
**.bpo-21951: Đã khắc phục sự cố trong Tkinter trên AIX khi được gọi lệnh Tcl với đối số chuỗi hoặc bộ dữ liệu trống.
bpo-21951: Tkinter hiện rất có thể sẽ tăng MemoryError thay vì gặp sự cố nếu việc cấp phát bộ nhớ không thành công.
bpo-22338: Khắc phục sự cố trong mô-đun json do lỗi cấp phát bộ nhớ.
bpo-12410: imaplib.IMAP4 hiện hỗ trợ giao thức quản lý ngữ cảnh. Bản vá gốc của Tarek Ziadé.
bpo-21270: Bây giờ chúng tôi ghi đè các phương thức tuple trong đối tượng mock.call để có thể sử dụng chúng làm thuộc tính cuộc gọi thông thường.
bpo-16662:
load_tests()hiện được chạy vô điều kiện khi nó có trong__init__.pycủa gói.TestLoader.loadTestsFromModule()vẫn chấp nhận use_load_tests nhưng không được dùng nữa và bị bỏ qua. Thuộc tính chỉ từ khóa mớipatternđược thêm và ghi lại. Bản vá do Robert Collins đưa ra, được chỉnh sửa bởi Barry Warsaw.bpo-22226: Chữ cái đầu tiên không còn bị loại bỏ khỏi khóa "trạng thái" trong kết quả của Treeview.heading().
bpo-19524: Đã sửa lỗi rò rỉ tài nguyên trong kết nối HTTP khi nhận được phản hồi không hợp lệ. Bản vá của Martin Panter.
bpo-20421: Thêm phương thức .version() vào ổ cắm SSL hiển thị phiên bản giao thức thực tế đang được sử dụng.
bpo-19546: các ngoại lệ của configparser không còn hiển thị chi tiết triển khai nữa. Các lỗi khóa liên kết được loại bỏ, dẫn đến việc truy nguyên rõ ràng hơn. Bản vá của Claudiu Popa.
bpo-22051: Turtledemo không còn tải lại các ví dụ để chạy lại chúng nữa. Việc khởi tạo các biến và thiết lập gui phải được thực hiện trong main(), được gọi mỗi khi chạy bản demo chứ không phải khi nhập.
bpo-21933: Người dùng Turtledemo có thể thay đổi kích thước phông chữ mã bằng lựa chọn menu hoặc điều khiển (lệnh) '-' hoặc '+' hoặc con lăn chuột điều khiển. Bản vá gốc của Lita Cho.
bpo-21597: Giờ đây, bạn có thể lấy và kéo dấu phân cách giữa khung văn bản Turtledemo và khung vẽ bằng chuột. Ngăn văn bản mã có thể được mở rộng để dễ dàng xem hoặc sao chép toàn bộ chiều rộng của văn bản. Canvas có thể được mở rộng trên màn hình nhỏ. Các bản vá gốc của Jan Kanis và Lita Cho.
bpo-18132: Nút Turtledemo không còn biến mất khi cửa sổ bị thu nhỏ. Các bản vá gốc của Jan Kanis và Lita Cho.
bpo-22043: time.monotonic() hiện luôn có sẵn. Các hoạt động của
threading.Lock.acquire(),threading.RLock.acquire()và socket hiện sử dụng đồng hồ đơn điệu, thay vì đồng hồ hệ thống, khi sử dụng thời gian chờ.bpo-21527: Thêm số lượng công nhân mặc định vào ThreadPoolExecutor bằng 5 lần số lượng CPU. Bản vá của Claudiu Popa.
bpo-22216: smtplib hiện đặt lại trạng thái hoàn toàn hơn sau khi thoát. Hậu quả rõ ràng nhất của hành vi trước đó là lỗi STARTTLS trong chuỗi kết nối/starttls/quit/connect/starttls.
bpo-22098: BigEndianStructure và LittleEndianStructure của ctypes hiện xác định một __slots__ trống để các lớp con không phải lúc nào cũng nhận được lệnh phiên bản. Bản vá của Claudiu Popa.
bpo-22185: Sửa lỗi RuntimeError không thường xuyên trong threading.Condition.wait() do đột biến hàng đợi người phục vụ mà không giữ khóa. Bản vá của Doug Zongker.
bpo-22287: Trên UNIX, _PyTime_gettimeofday() hiện sử dụng clock_gettime(CLOCK_REALTIME) nếu có. Là một tác dụng phụ, Python hiện phụ thuộc vào thư viện librt trên Solaris và trên Linux (chỉ với glibc cũ hơn 2.17).
bpo-22182: Sử dụng e.args để giải nén chính xác các ngoại lệ trong distutils.file_util.move_file. Bản vá của Claudiu Popa.
Mô-đun trình duyệt web hiện sử dụng lệnh gọi start_new_session=True của quy trình con thay vì lệnh gọi preexec_fn=os.setsid tiềm ẩn rủi ro.
bpo-22042: signal.set_wakeup_fd(fd) hiện đưa ra một ngoại lệ nếu bộ mô tả tệp ở chế độ chặn.
bpo-16808: kiểm tra.stack() bây giờ trả về một bộ dữ liệu có tên thay vì một bộ dữ liệu. Bản vá của Daniel Shahaf.
bpo-22236: Đã sửa lỗi thao tác sao chép hình ảnh Tkinter ở chế độ NoDefaultRoot.
bpo-2527: Thêm đối số globals vào các hàm timeit, để ghi đè không gian tên toàn cầu trong đó mã thời gian được thực thi. Bản vá của Ben Roberts.
bpo-22118: Chuyển urllib.parse sang sử dụng ngữ nghĩa RFC 3986 để phân giải các URL tương đối, thay vì RFC 1808 và 2396. Bản vá của Demian Brecht.
bpo-21549: Đã thêm tham số "thành viên" vào TarFile.list().
bpo-19628: Cho phép chỉ định độ sâu đệ quy biên dịch bằng tùy chọn -r.
bpo-15696: Thêm triển khai __sizeof__ cho các đối tượng mmap trên Windows.
bpo-22068: Tránh các vòng lặp tham chiếu với Biến và Phông chữ trong Tkinter.
bpo-22165: SimpleHTTPRequestHandler hiện hỗ trợ tên tệp không thể giải mã được.
bpo-15381: Đọc dòng được tối ưu hóa trong io.BytesIO.
bpo-8797: Tăng HTTPError khi Xác thực cơ bản không thành công ngay lập tức. Bản vá đầu tiên của Sam Bull.
bpo-20729: Đã khôi phục việc sử dụng iterkeys()/itervalues()/iteritems() lười biếng trong mô-đun hộp thư.
bpo-21448: Đã thay đổi nguồn cấp dữ liệu FeedParser() để tránh hành vi O(n2) khi phân tích cú pháp dòng dài. Bản vá gốc của Raymond Hettinger.
bpo-22184: Nhà máy trang trí bộ đệm LRU functools hiện đưa ra thông báo lỗi sớm hơn và rõ ràng hơn khi người dùng quên các tham số bắt buộc.
bpo-17923: các mẫu glob() kết thúc bằng dấu gạch chéo không còn khớp với các ký tự không phải thư mục trên AIX. Dựa trên bản vá của Delhallt.
bpo-21725: Đã thêm hỗ trợ cho RFC 6531 (SMTPUTF8) trong smtpd.
bpo-22176: Cập nhật libffi của mô-đun ctypes lên v3.1. Bản phát hành này bổ sung hỗ trợ cho kiến trúc endian nhỏ Linux AArch64 và POWERPC ELF ABIv2.
bpo-5411: Đã thêm hỗ trợ cho định dạng "xztar" trong mô-đun màn trập.
bpo-21121: Không bắt buộc xây dựng tiện ích mở rộng C của bên thứ 3 bằng -Werror=declaration-after-statement.
bpo-21975: Đã khắc phục sự cố khi sử dụng sqlite3.Row chưa được khởi tạo (đặc biệt khi bỏ chọn sqlite3.Row đã được ngâm). sqlite3.Row hiện được khởi tạo trong phương thức __new__().
bpo-20170: Chuyển đổi posixmodule để sử dụng Argument Clinic.
bpo-21539: Thêm đối số exists_ok vào
Pathlib.mkdir()để bắt chước chức năngmkdir -pvàos.makedirs(). Khi đúng, bỏ quaFileExistsErrors. Bản vá của Berker Peksag.bpo-22127: Bỏ qua IDNA đối với tên máy chủ thuần-ASCII trong mô-đun ổ cắm (đặc biệt đối với IP số).
bpo-21047: đặt giá trị mặc định cho đối số convert_charrefs của HTMLParser thành True. Bản vá của Berker Peksag.
Thêm __all__ vào html.entities.
bpo-15114: chế độ nghiêm ngặt và đối số của HTMLParser, HTMLParser.error và ngoại lệ HTMLParserError đã bị xóa.
bpo-22085: Đã bỏ hỗ trợ Tk 8.3 trong Tkinter.
bpo-21580: Bây giờ Tkinter xử lý chính xác các đối số byte được truyền cho Tk. Đặc biệt điều này cho phép khởi tạo hình ảnh từ dữ liệu nhị phân.
bpo-22003: Khi được khởi tạo từ một đối tượng byte, io.BytesIO() hiện trì hoãn việc tạo một bản sao cho đến khi nó bị thay đổi, cải thiện hiệu suất và mức sử dụng bộ nhớ trong một số trường hợp sử dụng. Bản vá của David Wilson.
bpo-22018: Trên Windows, signal.set_wakeup_fd() hiện cũng hỗ trợ ổ cắm. Một tác dụng phụ là Python phụ thuộc vào thư viện WinSock.
bpo-22054: Thêm các hàm os.get_blocking() và os.set_blocking() để nhận và đặt chế độ chặn của bộ mô tả tệp (Sai nếu cờ O_NONBLOCK được đặt, nếu không thì đúng). Các chức năng này không có sẵn trên Windows.
bpo-17172: Làm cho Turtledemo bắt đầu hoạt động trên OS X ngay cả khi chạy với subprocess. Bản vá của Lita Cho.
bpo-21704: Sửa lỗi xây dựng cho _multiprocessing khi không có ngữ nghĩa. Bản vá của Arfrever Frehtes Taifersar Arahesis.
bpo-20173: Chuyển đổi sha1, sha256, sha512 và md5 sang ArgumentClinic. Bản vá của Vajrasky Kok.
Sửa lỗi Repr(_socket.socket) trên Windows 64-bit: không bị lỗi OverflowError trên ổ cắm đã đóng. Repr(socket.socket) đã hoạt động tốt.
bpo-22033: Các đại diện của hầu hết các lớp được triển khai Python hiện chứa tên lớp thực tế thay vì tên lớp được mã hóa cứng.
bpo-21947: Mô-đun dis hiện có thể phân tách các đối tượng trình tạo-lặp dựa trên thuộc tính gi_code của chúng. Bản vá của Clement Rouault.
bpo-16133: Phương thức asynchat.async_chat.handle_read() hiện bỏ qua các ngoại lệ BlockingIOError.
bpo-22044: Đã sửa lỗi DECREF sớm trong call_tzinfo_method. Bản vá của Tom Flanagan.
bpo-19884: readline: Tắt khóa sửa đổi meta nếu thiết bị xuất chuẩn không phải là thiết bị đầu cuối để không ghi chuỗi ANSI
"\033[1034h"vào thiết bị xuất chuẩn. Trình tự này được sử dụng trên một số thiết bị đầu cuối (ví dụ: TERM=xterm-256color") để cho phép hỗ trợ các ký tự 8 bit.bpo-4350: Loại bỏ một số phương pháp Tkinter lỗi thời và không hoạt động trong một thời gian dài.
bpo-6167: Scrollbar.activate() hiện trả về tên của phần tử đang hoạt động nếu đối số không được chỉ định. Scrollbar.set() giờ đây luôn chỉ chấp nhận 2 đối số.
bpo-15275: Dọn dẹp và tăng tốc mô-đun ntpath.
bpo-21888: tải () và tải () của plistlib hiện hoạt động nếu tham số fmt được chỉ định.
bpo-22032: __qualname__ thay vì __name__ hiện luôn được sử dụng để định dạng tên lớp đủ điều kiện của các lớp được triển khai Python.
bpo-22031: Các đại diện hiện luôn sử dụng định dạng thập lục phân với tiền tố "0x" khi chứa id ở dạng " tại 0x...".
bpo-22018: signal.set_wakeup_fd() hiện đưa ra OSError thay vì ValueError khi lỗi
fstat().bpo-21044: tarfile.open() hiện xử lý fileobj với thuộc tính 'name' số nguyên. Dựa trên bản vá của Antoine Pietri.
bpo-21966: Tôn trọng tùy chọn dòng lệnh -q khi mô-đun mã được chạy.
bpo-19076: Không chuyển đối số 'tệp' dư thừa cho self.error().
bpo-16382: Cải thiện thông báo ngoại lệ của Warning.warn() cho danh mục xấu. Bản vá đầu tiên của Phil Elson.
bpo-21932: os.read() hiện sử dụng loại
Py_ssize_t()thay vì int cho kích thước hỗ trợ đọc hơn 2 GB cùng một lúc. Trên Windows, kích thước được cắt ngắn thành INT_MAX. Như bất kỳ lệnh gọi os.read() nào, HĐH có thể đọc ít byte hơn số byte được yêu cầu.bpo-21942: Đã sửa lỗi xem tệp nguồn ở chế độ máy chủ của pydoc trên Windows.
bpo-11259: asynchat.async_chat().set_terminator() hiện tăng ValueError nếu số byte nhận được là âm.
bpo-12523: asynchat.async_chat.push() hiện đưa ra TypeError nếu nó không nhận được chuỗi byte
bpo-21707: Thêm đối số kwonlyargcount bị thiếu vào ModuleFinder.replace_paths_in_code().
bpo-20639: gọi Path.with_suffix('') cho phép xóa lại hậu tố. Bản vá của tháng 7 Tikhonov.
bpo-21714: Không cho phép xây dựng đường dẫn không hợp lệ bằng Path.with_name(). Bản vá gốc của Antony Lee.
bpo-15014: Đã thêm phương thức 'auth' vào smtplib để giúp việc triển khai cơ chế xác thực trở nên đơn giản hơn và sử dụng nó nội bộ trong phương thức đăng nhập.
bpo-21151: Đã sửa lỗi phân đoạn trong mô-đun winreg khi
Noneđược chuyển dưới dạng giá trịREG_BINARYcho SetValueEx. Bản vá của John Ehresman.bpo-21090: io.FileIO.readall() không bỏ qua lỗi I/O nữa. Trước đây, nó bỏ qua các lỗi I/O nếu ít nhất lệnh gọi C đầu tiên read() thành công.
bpo-5800: tham số tiêu đề của wsgiref.headers.Headers hiện là tùy chọn. Bản vá đầu tiên của Pablo Torres Navarrete và SilentGhost.
bpo-21781: ssl.RAND_add() hiện hỗ trợ các chuỗi dài hơn 2 GB.
bpo-21679: Ngăn chặn các lệnh gọi fstat() không liên quan trong khi open(). Bản vá của Bohuslav Kabrda.
bpo-21863: cProfile hiện hiển thị tên mô-đun của các hàm mở rộng C, ngoài tên riêng của chúng.
bpo-11453: asyncore: phát ra ResourceWarning khi một đối tượng file_wrapper không được tiết lộ bị phá hủy. Bây giờ hàm hủy sẽ đóng tệp nếu cần. Phương thức close() bây giờ có thể được gọi hai lần: lệnh gọi thứ hai không thực hiện gì.
bpo-21858: Xử lý tốt hơn các ngoại lệ Python trong mô-đun sqlite3.
bpo-21476: Đảm bảo email.parser.BytesParser TextIOWrapper bị loại bỏ sau khi phân tích cú pháp, để tệp đầu vào không bị đóng đột ngột.
bpo-20295: imghdr hiện nhận dạng hình ảnh định dạng OpenEXR.
bpo-21729: Đã sử dụng câu lệnh "with" trong mô-đun dbm.dumb để đảm bảo đóng tệp. Bản vá của Claudiu Popa.
bpo-21491: socketserver: Khắc phục tình trạng dồn đuổi trong quá trình thu thập tiến trình con.
bpo-21719: Đã thêm trường
st_file_attributesvào os.stat_result trên Windows.bpo-21832: Yêu cầu đầu vào bộ dữ liệu được đặt tên phải là chuỗi chính xác.
bpo-21722: Lệnh "tải lên" distutils hiện thoát với mã trả về khác 0 khi tải lên không thành công. Bản vá của Martin Dengler.
bpo-21723: asyncio.Queue: hỗ trợ mọi loại số (ví dụ: float) để có kích thước tối đa. Bản vá được viết bởi Vajrasky Kok.
bpo-21711: hỗ trợ cho các thư mục "site-python" hiện đã bị xóa khỏi mô-đun trang web (nó không được dùng nữa trong phiên bản 3.4).
bpo-17552: phương thức socket.sendfile() mới cho phép gửi tệp qua ổ cắm bằng cách sử dụng os.sendfile() hiệu suất cao trên UNIX. Bản vá của Giampaolo Rodola'.
bpo-18039: dbm.dump.open() giờ đây luôn tạo cơ sở dữ liệu mới khi cờ có giá trị 'n'. Bản vá của Claudiu Popa.
bpo-21326: Thêm phương thức is_closed() mới vào asyncio.BaseEventLoop. Các phương thức run_forever() và run_until_complete() của asyncio.BaseEventLoop hiện đưa ra một ngoại lệ nếu vòng lặp sự kiện bị đóng.
bpo-21766: Ngăn chặn lỗ hổng bảo mật trong CGIHTTPServer bằng cách URL bỏ trích dẫn các đường dẫn trước khi kiểm tra tập lệnh CGI tại đường dẫn đó.
bpo-21310: Đã sửa lỗi rò rỉ tài nguyên có thể xảy ra khi mở() không thành công.
bpo-21256: Bản in của các đối số từ khóa phải theo thứ tự xác định trong lệnh gọi hàm mô phỏng. Điều này sẽ giúp viết doctest tốt hơn.
bpo-21677: Đã sửa lỗi xâu chuỗi các ngoại lệ không chuẩn hóa trong các phương thức io close().
bpo-11709: Sửa chức năng pydoc.help không bị lỗi khi sys.stdin không phải là tệp hợp lệ.
bpo-21515: tempfile.TemporaryFile hiện sử dụng cờ os.O_TMPFILE có sẵn.
bpo-13223: Sửa pydoc.writedoc để tài liệu HTML cho các phương thức sử dụng 'self' trong mã ví dụ được tạo chính xác.
bpo-21463: Trong urllib.request, sửa lỗi cắt bớt bộ đệm FTP.
bpo-21618: Mô-đun quy trình con có thể không đóng được các fds đang mở được kế thừa bởi quy trình gọi và đã cao hơn giới hạn tài nguyên POSIX cho phép. Trên các hệ thống có giao diện /proc/self/fd hoặc /dev/fd đang hoạt động, giá trị tối đa hiện bị bỏ qua và tất cả các fds đều bị đóng.
bpo-20383: Giới thiệu importlib.util.module_from_spec() làm cách ưa thích để tạo mô-đun mới.
bpo-21552: Đã sửa lỗi tràn số nguyên có thể xảy ra với độ dài chuỗi quá dài trong mô-đun tkinter trên nền tảng 64 bit.
bpo-14315: Mô-đun zipfile hiện bỏ qua các trường bổ sung trong thư mục trung tâm quá ngắn để có thể phân tích cú pháp thay vì để lỗi struct.unpack nổi lên vì "dữ liệu xấu" này xuất hiện trong nhiều tệp zip trong thế giới thực và bị các công cụ zip khác bỏ qua.
bpo-13742: Đã thêm tham số "key" và "reverse" vào heapq.merge(). (Bản thảo đầu tiên của bản vá do Simon Sapin đóng góp.)
bpo-21402: tkinter.ttk hiện hoạt động khi cửa sổ gốc mặc định không được đặt.
bpo-3015:
_tkinter.create()hiện tạo đối tượngtkappvớiwantobjects=1theo mặc định.bpo-10203: sqlite3.Row hiện thực sự hỗ trợ giao thức trình tự. Đặc biệt nó hỗ trợ các chỉ số đảo ngược() và tiêu cực. Bản vá gốc của Claudiu Popa.
bpo-18807: Nếu sao chép (không có liên kết tượng trưng) được chỉ định cho venv thì bí danh trình thông dịch python (python, python3) hiện được tạo bằng cách sao chép thay vì liên kết tượng trưng.
bpo-20197: Đã thêm hỗ trợ cho loại hình ảnh WebP trong mô-đun imghdr. Bản vá của Fabrice Aneche và Claudiu Popa.
bpo-21513: Tăng tốc một số thuộc tính của địa chỉ IP (IPv4Address, IPv6Address) như .is_private hoặc .is_multicast.
bpo-21137: Cải thiện số lần lặp lại cho threading.Lock() và các biến thể của nó bằng cách hiển thị trạng thái "đã khóa" hoặc "đã mở khóa". Bản vá của Berker Peksag.
bpo-21538: Mô-đun plistlib hiện hỗ trợ tải tệp plist nhị phân khi kích thước tham chiếu hoặc offset không phải là lũy thừa của hai.
bpo-21455: Thêm tồn đọng mặc định vào socket.listen().
bpo-21525: Hầu hết các phương thức Tkinter chấp nhận bộ dữ liệu hiện cũng chấp nhận danh sách.
bpo-22166: Với sự hỗ trợ của chức năng trợ giúp _codecs._forget_codec nội bộ mới, test_codecs giờ đây sẽ xóa bộ đệm mã hóa để tránh xuất hiện rò rỉ tham chiếu
bpo-22236: Các bài kiểm tra Tkinter hiện không sử dụng lại cửa sổ gốc mặc định. Cửa sổ gốc mới được tạo cho mọi lớp kiểm tra.
bpo-10744: Sửa các chuỗi định dạng PEP 3118 trên các đối tượng ctypes có hình dạng không tầm thường.
bpo-20826: Tối ưu hóa ipaddress.collapse_addresses().
bpo-21487: Tối ưu hóa ipaddress.summarize_address_range() và ipaddress.{IPv4Network,IPv6Network}.subnets().
bpo-21486: Tối ưu hóa phân tích cú pháp mặt nạ mạng trong ipaddress.IPv4Network và ipaddress.IPv6Network.
bpo-13916: Không cho phép trình xử lý lỗi thay thế đối với các mã hóa không phải UTF-*.
bpo-20998: Đã sửa lỗi re.fullmatch() của mẫu ký tự đơn lặp lại với trường hợp bỏ qua. Bản vá gốc của Matthew Barnett.
bpo-21075: fileinput.FileInput hiện đọc byte từ luồng tiêu chuẩn nếu chế độ nhị phân được chỉ định. Bản vá của Sam Kimbrel.
bpo-19775: Thêm phương thức Samefile() vào các đối tượng Pathlib Path. Bản vá đầu tiên của Vajrasky Kok.
bpo-21226: Thiết lập mô-đun đúng cách trong PyImport_ExecCodeModuleObject (và bạn bè).
bpo-21398: Sửa lỗi unicode trong máy nhắn tin pydoc khi tài liệu chứa các ký tự không thể mã hóa thành mã hóa thiết bị xuất chuẩn.
bpo-16531: ipaddress.IPv4Network và ipaddress.IPv6Network hiện chấp nhận đối số bộ dữ liệu (địa chỉ, mặt nạ mạng), để dễ dàng xây dựng các đối tượng mạng từ các địa chỉ hiện có.
bpo-21156: importlib.abc.InspectLoader.source_to_code() hiện là một phương thức tĩnh.
bpo-21424: Heaqp.nmost() và nmsmallest() được đơn giản hóa và tối ưu hóa để thực hiện ít so sánh bộ dữ liệu hơn.
bpo-21396: Sửa TextIOWrapper(..., write_through=True) để không buộc tuôn ra() trên luồng nhị phân cơ bản. Bản vá của akira.
bpo-18314: Hủy liên kết hiện xóa các mối nối trên Windows. Bản vá của Kim Gräsman
bpo-21088: Sửa lỗi hồi quycurs.window.addch() trong 3.4.0. Khi chuyển sang Phòng khám tranh luận, hai đối số đầu tiên đã bị đảo ngược.
bpo-21407: _decimal: Mô-đun hiện hỗ trợ chữ ký hàm.
bpo-10650: Xóa tham số 'watchexp' không chuẩn khỏi phương thức Decimal.quantize() trong phiên bản Python. Nó chưa bao giờ có trong phiên bản C.
bpo-21469: Giảm nguy cơ dương tính giả trong trình phân tích cú pháp robot bằng cách kiểm tra để đảm bảo rằng robots.txt đã được đọc hoặc không tồn tại trước khi trả về True trong can_fetch().
bpo-19414: Yêu cầu OrderedDict đánh dấu các liên kết đã xóa là không sử dụng được. Điều này gây ra lỗi sớm nếu liên kết bị xóa trong quá trình lặp.
bpo-21421: Thêm __slots__ vào MappingViews ABC. Bản vá của Josh Rosenberg.
bpo-21101: Loại bỏ hàm băm kép trong mã tăng tốc C cho bộ sưu tập.Counter().
bpo-21321: itertools.islice() hiện giải phóng tham chiếu đến trình vòng lặp nguồn khi lát cắt đã hết. Bản vá của Anton Afanasyev.
bpo-21057: TextIOWrapper hiện cho phép phương thức read() hoặc read1() của luồng nhị phân cơ bản trả về một đối tượng giống như byte tùy ý (chẳng hạn như chế độ xem bộ nhớ). Bản vá của Nikolaus Rath.
bpo-20951: SSLSocket.send() hiện tăng SSLWantReadError hoặc SSLWantWriteError trên ổ cắm không chặn nếu thao tác sẽ chặn. Trước đây, nó sẽ trả về 0. Bản vá của Nikolaus Rath.
bpo-13248: đã xóa asyncore.dispatcher __getattr__ bản hack kế thừa giá rẻ không được dùng nữa trước đây.
bpo-9815: khẳng địnhRaises hiện cố gắng xóa các tham chiếu đến các biến cục bộ trong truy nguyên của ngoại lệ.
bpo-19940: ssl.cert_time_to_seconds() hiện diễn giải chuỗi thời gian đã cho theo múi giờ UTC (như được chỉ định trong RFC 5280), chứ không phải múi giờ địa phương.
bpo-13204: Việc gọi sys.flags.__new__ sẽ làm hỏng trình thông dịch, giờ đây nó sẽ gây ra Lỗi Loại.
bpo-19385: Thực hiện các thao tác trên cơ sở dữ liệu đóng dbm.dumb luôn đưa ra cùng một ngoại lệ.
bpo-21207: Phát hiện khi fd được lưu trong bộ nhớ đệm os.urandom đã bị đóng hoặc thay thế và mở lại.
bpo-21291: Popen.wait() của quy trình con hiện là luồng an toàn để nhiều luồng có thể gọi wait() hoặc poll() trên phiên bản Popen cùng lúc mà không làm mất giá trị Popen.returncode.
bpo-21127: Hiện tại, các đối tượng đường dẫn có thể được khởi tạo từ các phiên bản của lớp con str (chẳng hạn như
numpy.str_).bpo-15002: đối tượng urllib.response để sử dụng tiện ích _TemporaryFileWrapper (và _TemporaryFileCloser). Cung cấp một cách tốt hơn để xử lý đóng bộ mô tả tập tin. Bản vá được đóng góp bởi Christian Theune.
bpo-12220: mindom hiện đưa ra ValueError tùy chỉnh cho biết nó không hỗ trợ khoảng trắng trong URI thay vì để bong bóng ValueError 'tách'.
bpo-21068: Các hằng số ssl.PROTOCOL* hiện là thành viên của enum.
bpo-21276: posixmodule: Không xác định USE_XATTRS trên KFreeBSD và Hurd.
bpo-21262: Phương thức mới khẳng định_not_gọi cho Mock. Nó tăng AssertionError nếu mô hình đã được gọi.
bpo-21238: Đối số từ khóa mới
unsafecho Mock. Nó tăngAttributeErrortrong trường hợp thuộc tính bắt đầu bằng khẳng định hoặc khẳng định.bpo-20896: ssl.get_server_certificate() hiện sử dụng PROTOCOL_SSLv23, không phải PROTOCOL_SSLv3, để có khả năng tương thích tối đa.
bpo-21239: patch.stopall() không hoạt động chắc chắn khi cùng một tên được vá nhiều lần.
bpo-21203: Cập nhật fileConfig và dictConfig để loại bỏ sự không nhất quán. Cảm ơn Jure Koren về bản vá.
bpo-21222: Việc truyền đối số từ khóa tên cho mock.create_autospec hiện đã hoạt động.
bpo-21197: Thêm lib64 -> liên kết tượng trưng lib trong venvs trên POSIX không phải OS X 64-bit.
bpo-17498: Một số máy chủ SMTP ngắt kết nối sau một số lỗi nhất định, vi phạm sự tuân thủ nghiêm ngặt của RFC. Thay vì mất mã lỗi khi chúng tôi phát hành RSET tiếp theo, smtplib hiện trả về mã lỗi và trì hoãn việc đưa ra lỗi SMTPServerDisconnected cho đến khi lệnh tiếp theo được đưa ra.
bpo-17826: việc thiết lập một side_effect có thể lặp lại trên một hàm mô phỏng được tạo bởi create_autospec hiện đã hoạt động. Bản vá của Kushal Das.
bpo-7776: Sửa tiêu đề
Host:và kết nối lại khi sử dụng http.client.HTTPConnection.set_tunnel(). Bản vá của Nikolaus Rath.bpo-20968: unittest.mock.MagicMock hiện hỗ trợ phép chia. Bản vá của Johannes Baiter.
bpo-21529: Khắc phục quyền truy cập bộ nhớ tùy ý trong JSONDecoding.raw_decode bằng tham số thứ hai âm. Lỗi được báo cáo bởi Guido Vranken. (Xem thêm: CVE 2014-4616)
bpo-21169: getpass hiện xử lý các ký tự không phải mã ascii mà mã hóa luồng đầu vào không thể mã hóa bằng cách mã hóa lại bằng trình xử lý lỗi thay thế.
bpo-21171: Đã sửa lỗi bộ lọc không có giấy tờ API của codec rot13. Bản vá của Berker Peksag.
bpo-20539: Thông báo lỗi math.factorial được cải thiện cho đầu vào dương lớn và loại ngoại lệ đã thay đổi (OverflowError -> ValueError) cho đầu vào âm lớn.
bpo-21172: kiểm tra phiên bản isinstance thoải mái từ dict đến các bộ sưu tập.Mapping.
bpo-21155: asyncio.EventLoop.create_unix_server() hiện tăng ValueError nếu đường dẫn và sock được chỉ định cùng một lúc.
bpo-21136: Tránh việc chuẩn hóa Phân số không cần thiết do nguồn điện và các hoạt động khác. Bản vá của Raymond Hettinger.
bpo-17621: Giới thiệu importlib.util.LazyLoader.
bpo-21076: hằng số mô-đun tín hiệu đã được chuyển thành enum. Bản vá của Giampaolo Rodola'.
bpo-20636: Cải thiện khả năng hiển thị của các tiện ích Tkinter.
bpo-19505: Các chế độ xem mục, khóa và giá trị của OrderedDict hiện hỗ trợ lặp lại ngược bằng cách sử dụng đảo ngược().
bpo-21149: Cải thiện tính an toàn của luồng khi dọn dẹp nhật ký trong khi tắt trình thông dịch. Cảm ơn Devin Jeanpierre về bản vá.
bpo-21058: Sửa lỗi rò rỉ bộ mô tả file trong
tempfile.NamedTemporaryFile(), đóng bộ mô tả file nếuio.open()bị lỗibpo-21200: Trả về Không có từ pkgutil.get_loader() khi thiếu __spec__.
bpo-21013: Tăng cường ssl.create_default_context() khi được sử dụng cho các ổ cắm phía máy chủ để cung cấp khả năng bảo mật tốt hơn theo mặc định.
bpo-20145:
assertRaisesRegexvàassertWarnsRegexhiện đưa raTypeErrornếu đối số thứ hai không phải là một chuỗi hoặc biểu thức chính quy được biên dịch.bpo-20633: Thay thế nhập tương đối bằng nhập tuyệt đối.
bpo-20980: Dừng gói ngoại lệ khi sử dụng ThreadPool.
bpo-21082: Trong os.makedirs, không đặt ô trên toàn quy trình. Lưu ý điều này thay đổi hành vi của makedirs khi tồn tại_ok=True.
bpo-20990: Khắc phục sự cố do pyflakes tìm thấy đối với đa xử lý.
bpo-21015: Ngữ cảnh SSL giờ đây sẽ tự động chọn đường cong elip để trao đổi khóa ECDH trên OpenSSL 1.0.2 trở lên và nếu không thì mặc định là "prime256v1".
bpo-21000: Cải thiện giao diện dòng lệnh của json.tool.
bpo-20995: Tăng cường mật mã mặc định được mô-đun ssl sử dụng để cho phép bảo mật tốt hơn và ưu tiên bảo mật hoàn hảo về phía trước.
bpo-20884: Đừng cho rằng __file__ được xác định trên importlib.__init__.
bpo-21499: Bỏ qua __buildins__ trong một số thử nghiệm test_importlib.test_api.
bpo-20627: xmlrpc.client.ServerProxy hiện là trình quản lý bối cảnh.
bpo-19165: Mô-đun định dạng hiện tăng DeprecationWarning thay vì PendingDeprecationWarning.
bpo-13936: Loại bỏ khả năng các phiên bản datetime.time bị coi là sai trong ngữ cảnh boolean.
bpo-18931: mô-đun bộ chọn hiện hỗ trợ /dev/poll trên Solaris. Bản vá của Giampaolo Rodola'.
bpo-19977: Khi ngôn ngữ
LC_TYPElà ngôn ngữ POSIX (ngôn ngữC),sys.stdinvàsys.stdouthiện đang sử dụng trình xử lý lỗisurrogateescape, thay vì trình xử lý lỗistrict.bpo-20574: Triển khai bộ giải mã gia tăng cho mã cp65001 (trang mã Windows 65001, Microsoft UTF-8).
bpo-20879: Trì hoãn việc khởi tạo bảng mã hóa và giải mã cho codec base32, ascii85 và base85 trong mô-đun base64 và trì hoãn việc khởi tạo bảng unquote_to_bytes() của mô-đun urllib.parse, để không lãng phí bộ nhớ nếu các mô-đun này không được sử dụng.
bpo-19157: Bao gồm địa chỉ quảng bá trong các máy chủ có thể sử dụng cho IPv6 trong ipaddress.
bpo-11599: Khi một lệnh bên ngoài (ví dụ: trình biên dịch) không thành công, distutils hiện in ra toàn bộ dòng lệnh (thay vì chỉ tên lệnh) nếu biến môi trường DISTUTILS_DEBUG được đặt.
bpo-4931: distutils sẽ không tạo ra thông báo "lỗi: Không" vô ích nữa. distutils.util.grok_environment_error được giữ lại nhưng không được dùng nữa.
bpo-20875: Ngăn chặn gzip có thể xảy ra "'đọc' không được xác định" NameError. Bản vá của Claudiu Popa.
bpo-11558:
email.message.Message.attachhiện trả về một thông báo lỗi hữu ích hơn nếuattachđược gọi trên một tin nhắn màis_multipartlà Sai.bpo-20283: Các phương thức mẫu RE hiện chấp nhận các tham số từ khóa chuỗi như được ghi lại. Các tham số từ khóa mẫu và nguồn được giữ lại dưới dạng bí danh không được dùng nữa.
bpo-20778: Sửa modulefinder để hoạt động với các mô-đun chỉ có mã byte.
bpo-20791: copy.copy() hiện không tạo bản sao khi đầu vào là đối tượng byte. Bản vá đầu tiên của Peter Otten.
bpo-19748: Trên AIX, time.mktime() hiện tăng OverflowError cho phạm vi vượt quá năm [1902; 2037].
bpo-19573: kiểm tra.signature: Sử dụng enum cho các hằng số loại tham số.
bpo-20726: kiểm tra.signature: Tạo chữ ký và thông số có thể chọn được.
bpo-17373: Thêm phương thức kiểm tra.Signature.from_callable.
bpo-20378: Cải thiện sự lặp lại của kiểm tra.Chữ ký và kiểm tra.Thông số.
bpo-20816: Sửa lỗi kiểm tra.getcallargs() để đưa ra TypeError chính xác cho các đối số chỉ có từ khóa bị thiếu. Bản vá của Jeremiah Lowin.
bpo-20817: Sửa lỗi kiểm tra.getcallargs() không chính xác nếu thiếu nhiều hơn 3 đối số. Bản vá của Jeremiah Lowin.
bpo-6676: Đảm bảo đưa ra một ngoại lệ có ý nghĩa khi cố gắng phân tích nhiều tài liệu XML cho mỗi phiên bản pyexpat xmlparser. (Bản vá gốc của Hirokazu Yamamoto và Amaury Forgeot d'Arc, với cách diễn đạt gợi ý của David Gutteridge)
bpo-21117: Sửa Inspection.signature để hỗ trợ functools.partial tốt hơn. Do tính chất cụ thể của việc triển khai functools.partial, các đối số vị trí hoặc từ khóa được chuyển dưới dạng đối số từ khóa sẽ chỉ trở thành từ khóa.
bpo-20334: kiểm tra.Signature và kiểm tra.Parameter hiện có thể băm được. Cảm ơn Antony Lee vì đã báo cáo lỗi và đề xuất.
bpo-15916: doctest.DocTestSuite trả về một unittest.TestSuite trống thay vì tăng ValueError nếu không tìm thấy bài kiểm tra nào
bpo-21209: Sửa asyncio.tasks.CoroWrapper để khắc phục lỗi trong quá trình triển khai lợi nhuận trong CPythons trước 3.4.1.
asyncio: Thêm thuộc tính gi_{frame,running,code} vào CoroWrapper (bpo-163 ngược dòng).
bpo-21311: Tránh ngoại lệ trong _osx_support với cấu hình trình biên dịch không chuẩn. Bản vá của John Szakmeister.
bpo-11571: Đảm bảo rằng cửa sổ con rùa trở thành cửa sổ trên cùng khi khởi chạy trên OS X.
bpo-21801: Xác thực rằng __signature__ là Không có hoặc là một phiên bản của Chữ ký.
bpo-21923: Ngăn chặn AttributionError trong distutils.sysconfig.customize_compiler do _config_vars có thể chưa được khởi tạo.
bpo-21323: Sửa http.server để xử lý lại các tập lệnh trong thư mục con CGI, bị hỏng do sửa lỗi bảo mật bpo-19435. Bản vá của Zach Byrne.
bpo-22733: Sửa chính xác các giá trị đối số ffi_prep_args không mở rộng bằng 0 trên Windows 64-bit.
bpo-23302: Mặc định là TCP_NODELAY=1 khi thiết lập HTTPConnection. Đã xóa việc sử dụng MSS được mã hóa cứng vì đây là một sự tối ưu hóa không còn cần thiết khi Nagle bị vô hiệu hóa.
IDLE¶
bpo-20577: Cấu hình độ dài dòng tối đa cho tiện ích mở rộng FormatParagraph đã được chuyển từ tab Chung của hộp thoại Tùy chọn nhàn rỗi sang tab FormatParagraph của hộp thoại Cấu hình tiện ích mở rộng. Bản vá của Tal Einat.
bpo-16893: Cập nhật chương tài liệu Nhàn rỗi để phù hợp với Nhàn rỗi hiện tại và thêm thông tin mới.
bpo-3068: Thêm hộp thoại cấu hình tiện ích mở rộng Nhàn rỗi vào menu Tùy chọn. Các thay đổi được ghi vào HOME/.idlerc/config-extensions.cfg. Bản vá gốc của Tal Einat.
bpo-16233: Trình duyệt mô-đun (Tệp : Trình duyệt lớp, Alt+C) yêu cầu cửa sổ soạn thảo có tên tệp. Khi Trình duyệt Lớp được yêu cầu khác, từ một trình bao, cửa sổ đầu ra hoặc trình soạn thảo 'Chưa có tiêu đề', Chế độ chờ không còn hiển thị hộp lỗi nữa. Bây giờ nó bật lên hộp Mô-đun mở (Alt+M). Nếu nhập tên hợp lệ và mô-đun được mở, trình duyệt tương ứng cũng được mở.
bpo-4832: Lưu dưới dạng để nhập tệp Python tự động thêm .py vào tên bạn nhập (ngay cả khi hệ thống của bạn không hiển thị nó). Một số hệ thống tự động thêm .txt khi loại là tệp Văn bản.
bpo-21986: Các đối tượng mã thường không được mô-đun dưa chọn. Để phù hợp với điều này, chúng không còn bị lỗi khi chạy ở chế độ Chờ.
bpo-17390: Điều chỉnh tiêu đề cửa sổ Editor; xóa 'Python', chuyển phiên bản về cuối.
bpo-14105: Điểm dừng của trình gỡ lỗi không hoạt động không còn biến mất khi chèn hoặc xóa dòng.
bpo-17172: Turtledemo hiện có thể chạy từ chế độ Chờ. Hiện tại, mục này nằm trên menu Trợ giúp nhưng nó có thể chuyển sang Chạy. Bản vá của Ramchandra Apt và Lita Cho.
bpo-21765: Thêm hỗ trợ cho các mã định danh không phải mã ascii vào HyperParser.
bpo-21940: Thêm unittest cho WidgetRedirector. Bản vá đầu tiên của Saimadhav Heblikar.
bpo-18592: Thêm unittest cho SearchDialogBase. Bản vá của Phil Webster.
bpo-21694: Thêm unittest cho ParenMatch. Bản vá của Saimadhav Heblikar.
bpo-21686: thêm unittest cho HyperParser. Bản vá gốc của Saimadhav Heblikar.
bpo-12387: Thêm các phiên bản chữ hoa (thường) bị thiếu của các ràng buộc phím Windows mặc định cho chế độ Chờ để Caps Lock không tắt chúng. Bản vá của Roger Serwy.
bpo-21695: Đóng cửa sổ đầu ra Tìm trong tệp trong khi vẫn đang tiến hành tìm kiếm không còn đóng chế độ Không hoạt động nữa.
bpo-18910: Thêm unittest cho textView. Bản vá của Phil Webster.
bpo-18292: Thêm unittest cho AutoExpand. Bản vá của Saihadhav Heblikar.
bpo-18409: Thêm unittest cho AutoComplete. Bản vá của Phil Webster.
bpo-21477: htest.py - Cải thiện framework, hoàn thiện bộ bài kiểm tra. Các bản vá của Saimadhav Heblikar
bpo-18104: Thêm Idlelib/idle_test/htest.py cùng với một số thử nghiệm mẫu để bắt đầu củng cố và cải thiện các thử nghiệm Idle do con người xác thực. Thay đổi các tệp khác nếu cần để hoạt động với htest. Chạy mô-đun với tên __main__ sẽ chạy tất cả các thử nghiệm.
bpo-21139: Thay đổi độ rộng đoạn mặc định thành 72, khuyến nghị của PEP 8.
bpo-21284: Kiểm tra định dạng lại đoạn văn đạt sau khi người dùng thay đổi độ rộng định dạng lại.
bpo-17654: Đảm bảo các menu IDLE được tùy chỉnh đúng cách trên OS X cho các bản dựng không có khung và cho tất cả các biến thể của Tk.
bpo-23180: Đổi tên mục menu "Windows" của IDLE thành "Window". Bản vá của Al Sweigart.
xây dựng¶
bpo-15506: Sử dụng macro autoconf PKG_PROG_PKG_CONFIG tiêu chuẩn trong tập lệnh cấu hình.
bpo-22935: Cho phép biên dịch mô-đun ssl nếu openssl không hỗ trợ SSL 3.
bpo-22592: Bỏ hỗ trợ trình biên dịch Borland C để xây dựng Python. Mô-đun distutils vẫn hỗ trợ nó để xây dựng các phần mở rộng.
bpo-22591: Bỏ hỗ trợ MS-DOS, đặc biệt là trình biên dịch DJGPP (cổng MS-DOS của GCC).
bpo-16537: Kiểm tra xem self.extensions có trống trong setup.py hay không. Bản vá của Jonathan Hosmer.
bpo-22359: Loại bỏ việc sử dụng sai cách tạo đệ quy. Bản vá của Jonas Wagner.
bpo-21958: Xác định HAVE_ROUND khi build bằng Visual Studio 2013 trở lên. Bản vá của Zachary Turner.
bpo-18093: các chương trình nhúng thời gian chạy CPython hiện nằm trong thư mục "Chương trình" riêng biệt, thay vì được giữ trong thư mục Mô-đun.
bpo-15759: "make nghi ngờ", "make linkcheck" và "make doctest" trong Doc/ hiện hiển thị thông báo đặc biệt khi và chỉ khi có lỗi.
bpo-21141: Quá trình xây dựng Windows không còn cố gắng tìm Perl nữa, thay vào đó dựa vào nguồn OpenSSL đã được định cấu hình và sẵn sàng xây dựng. Tập lệnh
PCbuild\build_ssl.pyđã được viết lại và đổi tên thànhPCbuild\prepare_ssl.py, đồng thời đảm nhiệm việc định cấu hình nguồn OpenSSL cho cả nền tảng 32 và 64 bit. Các nguồn OpenSSL lấy từ svn.python.org sẽ luôn được định cấu hình sẵn và sẵn sàng để xây dựng.bpo-21037: Thêm tùy chọn xây dựng để bật hỗ trợ addressSanitizer.
bpo-19962: Quá trình xây dựng Windows hiện tạo "python.bat" trong thư mục gốc của cây nguồn, chuyển tất cả đối số tới trình thông dịch được tạo gần đây nhất.
bpo-21285: Tái cấu trúc và sửa lỗi kiểm tra cấu hình để luôn tìm kiếm trong thư mục ncursesw.
bpo-15234: Đối với BerkeleyDB và Sqlite, chỉ thêm thư viện tìm thấy và bao gồm các thư mục nếu chúng chưa được tìm kiếm. Điều này tránh được sự phụ thuộc vào thư viện thời gian chạy rõ ràng.
bpo-17861: Tools/scripts/generate_opcode_h.py tự động tạo lại Bao gồm/opcode.h từ Lib/opcode.py nếu cái sau có bất kỳ thay đổi nào.
bpo-20644: Hỗ trợ xây dựng trình cài đặt OS X cho các thay đổi về bản dựng tài liệu trong 3.4.1: giả sử sphinx-build được cung cấp bên ngoài có sẵn trong /usr/bin.
bpo-20022: Loại bỏ việc sử dụng trình tạo gói không được dùng nữa trong các bản dựng OS X.
bpo-15968: Tích hợp Tcl, Tk và Tix vào giải pháp xây dựng Windows.
bpo-17095: Hỗ trợ sửa chữa mô-đun/Cài đặt shared.
bpo-21811: Các bản sửa lỗi dự kiến sẽ hỗ trợ các phiên bản OS X > 10.9.
bpo-21166: Ngăn chặn các lỗi phân tách có thể xảy ra và các lỗi ngẫu nhiên khác của python --generate-posix-vars trong mục tiêu xây dựng pybuilddir.txt.
bpo-18096: Sửa thứ tự thư viện được trả về bởi python-config.
bpo-17219: Thêm thư mục xây dựng thư viện cho các bản dựng chéo tiện ích mở rộng Python.
bpo-22919: Bản dựng Windows được cập nhật để hỗ trợ VC 14.0 (Visual Studio 2015), sẽ được sử dụng cho bản phát hành chính thức.
bpo-21236: Xây dựng _msi.pyd bằng Cabinet.lib thay vì fci.lib
bpo-17128: Sử dụng phiên bản OpenSSL riêng cho trình cài đặt OS X 10.5+.
C API¶
bpo-14203: Xóa hỗ trợ lỗi thời cho view==NULL trong PyBuffer_FillInfo(), bytearray_getbuffer(), bytesiobuf_getbuffer() và array_buffer_getbuf(). Tất cả các hàm bây giờ đều tăng BufferError trong trường hợp đó.
bpo-22445: PyBuffer_IsContiguous() hiện triển khai các thử nghiệm liền kề chính xác, tương thích với cờ biên dịch NPY_RELAXED_STRIDES_CHECKING của NumPy. Trước đây, hàm này đã báo cáo kết quả âm tính giả đối với các trường hợp ở góc.
bpo-22079: PyType_Ready() hiện kiểm tra xem loại được phân bổ tĩnh không có cơ sở được phân bổ động.
bpo-22453: Đã xóa macro PyObject_REPR() không có tài liệu.
bpo-18395: Đổi tên
_Py_char2wchar()thànhPy_DecodeLocale(), đổi tên_Py_wchar2char()thànhPy_EncodeLocale()và ghi lại các chức năng này.bpo-21233: Thêm các hàm C mới: PyMem_RawCalloc(), PyMem_Calloc(), PyObject_Calloc(), _PyObject_GC_Calloc(). byte(int) hiện đang sử dụng
calloc()thay vìmalloc()cho các đối tượng lớn nhanh hơn và sử dụng ít bộ nhớ hơn.bpo-20942: PyImport_ImportFrozenModuleObject() không còn đặt __file__ để khớp với những gì importlib thực hiện; điều này ảnh hưởng đến _frozen_importlib cũng như bất kỳ mô-đun nào được tải bằng imp.init_frozen().
Tài liệu¶
bpo-19548: Cập nhật tài liệu mô-đun codec để trình bày rõ hơn sự khác biệt giữa mã hóa văn bản và các codec khác, cùng với các nội dung làm rõ khác. Bản vá của Martin Panter.
bpo-22394: Doc/Makefile hiện hỗ trợ
make venv PYTHON=../pythonđể tạo venv để tạo tài liệu, ví dụ:make html PYTHON=venv/bin/python3.bpo-21514: Tài liệu của mô-đun json hiện đề cập đến JSON RFC 7159 mới thay vì RFC 4627 đã lỗi thời.
bpo-21777: Các phương thức chuỗi nhị phân trên byte và bytearray hiện được ghi lại một cách rõ ràng, thay vì giả định rằng người dùng sẽ có thể rút ra hành vi mong đợi từ hành vi của các phương thức str tương ứng.
bpo-6916: lớp asynchat.fifo không được dùng nữa.
bpo-17386: Chức năng mở rộng của tập lệnh
Doc/make.batđể làm cho nó giống vớiDoc/Makefilehơn nhiều.bpo-21312: Cập nhật tệp mẫu thread_foobar.h để bao gồm các API luồng mới hơn. Bản vá của Jack McCracken.
bpo-21043: Xóa đề xuất dành cho các tổ chức CA cụ thể và đề cập đến khả năng tải chứng chỉ hệ điều hành.
bpo-20765: Thêm tài liệu còn thiếu cho PurePath.with_name() và PurePath.with_suffix().
bpo-19407: Hướng dẫn phân phối và cài đặt gói mới dựa trên các công cụ của Cơ quan đóng gói Python. Các hướng dẫn hiện tại đã được giữ lại dưới dạng các liên kết kế thừa từ các tài liệu distutils vì chúng vẫn chứa một số tài liệu tham khảo bắt buộc dành cho các nhà phát triển công cụ mà không được ghi lại ở bất kỳ nơi nào khác.
bpo-19697: Ghi lại các trường hợp __main__.__spec__ là Không có.
Kiểm tra¶
bpo-18982: Thêm bài kiểm tra cho CLI của mô-đun lịch.
bpo-19548: Đã thêm một số kiểm tra bổ sung vào test_codecs để đảm bảo rằng các câu lệnh trong tài liệu cập nhật vẫn chính xác. Bản vá của Martin Panter.
bpo-22838: Tất cả các thử nghiệm test_re hiện hoạt động với khám phá thử nghiệm nhỏ nhất.
bpo-22173: Cập nhật các bài kiểm tra lib2to3 để sử dụng tính năng khám phá bài kiểm tra nhỏ nhất.
bpo-16000: Chuyển đổi test_curses để sử dụng unittest.
bpo-21456: Bỏ qua hai bài kiểm tra trong test_urllib2net.py nếu không có mô-đun _ssl. Bản vá của Remi Pointel.
bpo-20746: Sửa test_pdb để chạy ở chế độ phản chiếu (-R). Bản vá của Xavier de Gaye.
bpo-22060: test_ctypes đã được dọn dẹp và đơn giản hóa phần nào; bây giờ nó sử dụng khám phá thử nghiệm nhỏ nhất để tìm ra các thử nghiệm của nó.
bpo-22104: regrtest.py không còn giữ tham chiếu đến bộ thử nghiệm được tải từ các mô-đun thử nghiệm không xác định test_main().
bpo-22111: Các loại dọn dẹp trong test_imaplib. Bản vá của Milan Oberkirch.
bpo-22002: Đã thêm hàm
load_package_testsvào test.support và sử dụng hàm này để triển khai/tăng cường khám phá thử nghiệm trong test_asyncio, test_email, test_importlib, test_json và test_tools.bpo-21976: Sửa test_ssl để chấp nhận chuỗi phiên bản LibreSSL. Cảm ơn William Orr.
bpo-21918: Đã chuyển đổi test_tools từ mô-đun sang gói chứa các tệp kiểm tra riêng cho từng tập lệnh được kiểm tra.
bpo-9554: Sử dụng các tính năng unittest hiện đại trong test_argparse. Bản vá đầu tiên của Denver Coneybeare và Radu Voicilas.
bpo-20155: Đã thay đổi tên phương thức HTTP trong các thử nghiệm không thành công trong test_httpservers để phần mềm lọc gói (cụ thể là Windows Base Filtering Engine) không can thiệp vào ngữ nghĩa giao dịch mà các thử nghiệm mong đợi.
bpo-19493: Tái cấu trúc gói kiểm tra ctypes để bỏ qua các kiểm tra một cách rõ ràng thay vì âm thầm.
bpo-18492: Tất cả tài nguyên hiện được cho phép khi regrtest.py không chạy thử nghiệm.
bpo-21634: Sửa điểm chuẩn vi mô pystone: sử dụng phép chia sàn thay vì phép chia thực để lấy số nguyên điểm chuẩn thay vì số dấu phẩy động. Đặt phiên bản pystone thành 1.2. Bản vá được viết bởi Lennart Regebro.
bpo-21605: Đã thêm thử nghiệm cho hình ảnh Tkinter.
bpo-21493: Đã thêm thử nghiệm cho ntpath.expanduser(). Bản vá gốc của Claudiu Popa.
bpo-19925: Đã thêm các bài kiểm tra cho mô-đun spwd. Bản vá gốc của Vajrasky Kok.
bpo-21522: Đã thêm các bài kiểm tra Tkinter cho Listbox.itemconfigure(), PanedWindow.paneconfigure() và Menu.entryconfigure().
bpo-17756: Sửa lỗi kiểm tra test_code khi chạy từ vị trí đã cài đặt.
bpo-17752: Khắc phục các bài kiểm tra distutils khi chạy từ vị trí đã cài đặt.
bpo-18604: Kiểm tra tổng hợp về tính khả dụng của GUI. Bây giờ tất cả các nền tảng ít nhất phải kiểm tra xem Tk có thể được khởi tạo hay không khi tài nguyên GUI được yêu cầu.
bpo-21275: Sửa lỗi kiểm tra ổ cắm trên KFreeBSD.
bpo-21223: Vượt qua test_site/test_startup_imports khi một số tiện ích mở rộng được xây dựng dưới dạng nội trang.
bpo-20635: Đã thêm các bài kiểm tra cho trình quản lý hình học Tk.
Thêm trường hợp thử nghiệm để đóng băng.
bpo-20743: Sửa lỗi rò rỉ tham chiếu trong test_tcl.
bpo-21097: Di chuyển test_namespace_pkgs vào test_importlib.
bpo-21503: Sử dụng test_both() một cách nhất quán trong test_importlib.
bpo-20939: Tránh các lỗi kiểm tra mạng khác nhau do chuyển hướng mới của http://www.python.org/ sang https://www.python.org:, thay vào đó hãy sử dụng http://www.example.com.
bpo-20668: kiểm tra asyncio không còn dựa vào tệp test.txt nữa. (Bản vá của Vajrasky Kok)
bpo-21093: Ngăn chặn lỗi của ctypes test_macholib trên OS X nếu bản sao của libz tồn tại trong $HOME/lib hoặc /usr/local/lib.
bpo-22770: Ngăn chặn một số lỗi phân tách Tk trên OS X khi chạy kiểm tra gui.
bpo-23211: Cách giải quyết lỗi test_logging trên một số hệ thống OS X 10.6.
bpo-23345: Ngăn chặn lỗi test_ssl với các giá trị cấp bản vá OpenSSL lớn (như 0.9.8zc).
Công cụ/Bản trình diễn¶
bpo-22314: pydoc hiện hoạt động khi biến môi trường LINES được đặt.
bpo-22615: Argument Clinic hiện hỗ trợ đối số "loại" cho trình chuyển đổi int. Điều này cho phép sử dụng bộ chuyển đổi int với enum và typedef.
bpo-20076: Tập lệnh makelocalealias.py không còn bỏ qua ánh xạ UTF-8 nữa.
bpo-20079: Tập lệnh makelocalealias.py hiện có thể phân tích cú pháp tệp SUPPORTED từ các nguồn glibc và hỗ trợ các tùy chọn dòng lệnh cho đường dẫn nguồn.
bpo-22201: Giao diện dòng lệnh của mô-đun zipfile hiện trích xuất chính xác các tệp ZIP với các mục nhập thư mục. Bản vá của Ryan Wilson.
bpo-22120: Đối với các hàm sử dụng bộ chuyển đổi trả về số nguyên không dấu, Argument Clinic hiện tạo một kiểu truyền theo loại đó để so sánh với -1 trong mã được tạo. (Điều này ngăn chặn cảnh báo biên dịch.)
bpo-18974: Tools/scripts/diff.py hiện sử dụng argparse thay vì optparse.
bpo-21906: Làm cho Tools/scripts/md5sum.py hoạt động được trong Python 3. Bản vá của Zachary Ware.
bpo-21629: Sửa tính năng "--converters" của Argument Clinic.
Thêm hỗ trợ cho
yield fromvào 2to3.Thêm hỗ trợ cho toán tử nhân ma trận PEP 465 vào 2to3.
bpo-16047: Sửa danh sách ngoại lệ mô-đun và xử lý __file__ trong trạng thái đóng băng. Bản vá của Meador Inge.
bpo-11824: Xem xét các thẻ ABI ở trạng thái đóng băng. Bản vá của Meador Inge.
bpo-20535: PYTHONWARNING không còn ảnh hưởng đến tập lệnh run_tests.py nữa. Bản vá của Arfrever Frehtes Taifersar Arahesis.
cửa sổ¶
bpo-23260: Cập nhật bộ cài Windows
Phiên bản đi kèm của Tcl/Tk đã được cập nhật lên 8.6.3. Kết quả dễ thấy nhất của sự thay đổi này là việc bổ sung các hộp thoại tệp gốc mới khi chạy trên Windows Vista hoặc mới hơn. Xem TIP 432 của Tcl/Tk để biết thêm thông tin. Ngoài ra, phiên bản Tcl/Tk này còn hỗ trợ cho Windows 10.
bpo-17896: Tập lệnh xây dựng Windows hiện yêu cầu các nguồn thư viện bên ngoài ở dạng
PCbuild\..\externalsthay vìPCbuild\..\...bpo-17717: Tập lệnh xây dựng Windows hiện sử dụng bản sao NASM được lấy từ svn.python.org để xây dựng OpenSSL.
bpo-21907: Cải thiện tập lệnh bó được cung cấp để xây dựng Python.
bpo-22644: Phiên bản đi kèm của OpenSSL đã được cập nhật lên 1.0.1j.
bpo-10747: Sử dụng nhãn được phiên bản trong menu bắt đầu của Windows. Bản vá của Olive Kilburn.
bpo-22980: Các tệp .pyd có thẻ phiên bản và nền tảng (ví dụ: ".cp35-win32.pyd") giờ đây sẽ được tải ưu tiên hơn những tệp không có thẻ.
(For information about older versions, consult the HISTORY file.)